MariaDB が Cassandra Storage Engine のプレビュー版を発表した。MariaDB から SQL の文法を使って,Cassandra クラスタへのアクセスを可能にするプラグインだ。
Cassandra で SQL サポートを実現する製品は MariaDB が最初ではない。例えば Simba が Cassandra ODBC ドライバ を提供していて,大部分の ODBC 対応ツールで使用することができる。理屈の上では,SQL Server からのクエリを処理する Cassandra リンクサーバを構築することも可能だ。
MariaDB の Cassandra SE を使って Cassandra に対するクエリを実行するためには,マッピングテーブル を作る必要がある。この仮想テーブルには,実際の Cassandra のカラムファミリのスタティックなカラムと同じ名前と型のカラムを用意しなければならない。ダイナミックなカラムは,MariaDB 側では blob 型の単一カラムとして参照する。
SQL の INSERT コマンドは,Cassandra のカラムファミリに使用されるときには "INSERT OR UPDATE" のセマンティクスを持つようになる。SELECT,UPDATE,DELETE は期待どおりに動作するが,普段使い慣れているパフォーマンス特性とは多少違うかも知れない。(リレーショナルデータベースとのアクセスパターンの違いについて詳しく知るには,Cassandra の資料 を参照する必要がある。)
Cassandra は自らを "高度なスケーラビリティを備えた、イベンチュアルコンシステントな,分散システム構造の Key-Value ストアである" と称している。Key-Value ストアであるから,アドホックなクエリの使用は最小限に抑える必要がある。MariaDB のドキュメントによると,
Cassandra SE は,クラスタ内の膨大なデータを取捨選択するような,分析型クエリの実行には適していません。そのようなタスクは,Apache Pig あるいは Apache Hive のような,Hadoop ベースのツールの方が効率よく処理できます。Cassandra SE は SQL 環境から NoSQL への "窓" であると考えた方がよいでしょう。
MariaDB は MySQL データベースのフォークである。MySQL 5.1 の品質とプロジェクト自体の方向性を巡って,MySQL の創設者である Michael Widenius 氏と Sun Microsystems との間で起きた対立の結果から生まれたものだ。その経緯には議論もあるが,最終的に方向を決定したのが Oracle による Sun の買収であったことには間違いない。