Happy Birthday to me!!
この記事はラクス Advent Calendar 2016の6日目です。
昨日は@morihirokさんの「rmの-fオプションで泣かないために」でした。
OSS RDBに実装されたNoSQL実装状況まとめ
いつの間にやら主要なOSSなRDBであるPostgreSQLとMySQL/MariaDBにNoSQL機能(というよりもドキュメントDB機能)が付いていたので仕事にも使えそうなのでまとめ。
各種都合によりPostgreSQL優遇気味で。しかし "PostgreSQL contains NoSQL." の「お前は何を言っているんだ」感がすごいですね……。
各DBMSごとのNoSQL機能実装バージョン
PostgreSQL
- PostgreSQL 9.4でjsonb型がサポート
- 9.2でサポートされたjson型(テキスト)から発展し、jsonb型はバイナリで扱われる
- jsonb型にもGINインデックスがはれる
- PostgreSQL 9.5でjsonb型結合演算子
||
や、jsonb関連の関数多数(jsonb_strip_nulls()
とか便利そう)が追加 - PostgreSQL 9.6で
jsonb_insert()
関数が追加
jsonb型を本格的に使うなら9.5以降という印象。なおCentOS7で9.5系を入れるためにはPostgreSQL公式yumレポジトリを追加する。
参考:PostgreSQL 9.4 の JSON サポートについて
公式ドキュメント
- 9.4
- 9.5
- 9.6
MySQL
-
MySQL 5.7.8にてJSON型をサポート
- JSON型
- JSON関数
- MySQL 5.7.9からJSON内の項目にインデックスがはれるようになった
- MySQL 8.0.1ではJSONのアグリゲーションにも対応するようです
MariaDB
-
MariaDB 5.3にてDynamic Columnsとして実装
- ちなみにMariaDBは5.1→5.2→5.3→5.5→10.0→10.1→10.2(current)と変則的にバージョンを重ねている
- 5.3ではリストとして扱われているようなのでネストとか出来ない様子
- MariaDB 10.0にて
COLUMN_JSON()
が実装されてJSONとして扱えるようになる(ネストも可能になる)
あとがき
ほんとはPostgreSQL9.5でCBCC で性能比較とかやろうかと思ったけれど、例年の誕生日近辺で不調に陥る病にかかったので断念。気が向いたら続編でも書きます。
明日は @kumakichi_kun さんの「PostgreSQLのreplication_slotについて」です。
クッキーバターチョコクッキー!!