MySQL 8.0はRDBとNoSQLのハイブリッドデータモデルへと
MySQL 8.0といえば、このツイートが象徴的だ。投稿者はベルギー在住のMySQLエバンジェリストでありMySQLコミュニティマネージャのフレデリック・デカン(Frederic Descamps)氏。米国カリフォルニア州レッドウッドショアー(オラクル本社)でのMySQL 8.0 GA記念イベント開催日に開発者たちの祝いの席でふるまわれたものらしい。
ケーキに描いてある通り「NoSQL + SQL = MySQL」。MySQL 8.0はNoSQLとSQL(RDB)のどちらでもあるということだ。すでにMySQLでは5.7からJSON型をサポートするなどドキュメントストア機能を実装しているが、8.0では演算子の追加など扱いやすさが向上している。検索関数や集約関数も追加された。
日本のイベントでも登壇したデカン氏は「大規模なコミュニティと多様なエコシステムがあり、認知度が高く、安定したプラットフォームでSQLとNoSQLが提供されていたらどうでしょう?もう『DBMSか?NoSQLか?』と迷う必要はありませんよね。Why not both?(両方にしましょうよ)」と、MySQLがRDBに加えてドキュメントストアとしても有効であることをアピールした。
ところで、なぜバージョン番号が5.7から8.0に飛んだの?
あらためてMySQL 8.0の特徴を見ていこう。「Oracle MySQL Innovation Day 2018 Tokyo」でキーノートを務めたMySQLグローバルビジネスユニット 稲垣大助氏はMySQL 8.0における特徴や新機能を紹介した。もともとMySQLは大規模Webサイトでの利用実績が多いため、MySQL 8.0ではWebアプリケーション開発効率を向上させる機能が多く盛り込まれている。
まずは大まかな特徴を列挙すると、「モバイルフレンドリー」としてGIS(空間図形情報)向け機能強化と絵文字を含むユニコード対応、「デベロッパーファースト」としてRDBとNoSQLのハイブリッド型となるデータモデルとアクセスAPIによる開発の柔軟性、「データドリブン」としてアプリケーションデータ分析に関する機能拡張、「24×7 大規模で」としてアクセス集中時の処理改良や耐障害性強化やセキュリティ機能強化がある。
なお5.7から8.0とバージョン番号が飛んだのは内部的な変化によるものらしい。MySQLはストレージエンジンを選べることが特徴となるものの、今ではInnoDBがデフォルトとなり、開発が最も進んでいる。筆者にはInnoDBに機能や役割が集約されてきているように見える。顕著な変化がデータディクショナリだ。これまでMySQLではテーブルごとに定義をFRMファイルなどに記録していたが、8.0からはInnoDBのシステムテーブルにデータが格納されるようになる。FRMファイルとテーブル間でデータを同期する必要がなくなるため、データが確実に記録され、アーキテクチャとしてもシンプルになる。