MariaDB, a drop-in replacement for MySQL with enhanced features and patches. |
MySQLのオリジナル開発者であり、現在はMySQLをベースとしたオープンソースソフトウェアのデータベースMariaDBを開発しているMichael Widenius氏が自身のブログにおいて、MariaDB 5.3に新しく「ダイナミックカラム」と呼ばれる機能を追加したことを発表した。この機能はNoSQLとSQL(MariaDB)との掛け渡しを実現する機能になるという。
ダイナミックカラムはblobにいくつかのカラムを保持することで動作するもので、操作のために専用のSQL命令が用意されている。ブログに掲載されている次のサンプルがダイナミックカラムを把握するうえでわかりやすい。COLUMN_GET()がダイナミックカラムにアクセスしている部分となる。
SELECT name, COLUMN_GET(blob, 1 as char(10)) FROM t1 WHERE COLUMN_EXISTS(blob, 1);
SELECT COLUMN_GET(blob, 1 as char(10)) as color, count(*) FROM t1 group by COLUMN_GET(blob, 1 as char(10));
ダイナミックカラムに関連するSQL命令は新しく6つ追加されている。追加された命令は次のとおり。
【ダイナミックカラムのデータ作成】
COLUMN_CREATE(column_nr, value [as type], [column_nr, value [as type]]...)
【ダイナミックアラムに新しいカラムの追加やアップデート】
COLUMN_ADD(dynamic_col, column_nr, value [as type], [column_nr, value [as type]]...)
【ダイナミックカラムの削除】
COLUMN_DELETE(dynamic_column, column_nr, column_nr...);
【ダイナミックカラムから値の取得(取得時にはキャストが必要)】
COLUMN_GET(dynamic_column, column_nr as type)
【カラムが存在するかどうかの確認】
COLUMN_EXISTS(dynamic_column, column_nr);
【存在するダイナミックカラムの一覧の取得】
OLUMN_LIST(dynamic_column);
Michael Widenius氏はすでに8年前からダイナミックカラムのアイディアを持っていたものの、MySQLを開発していた当時には作業する時間を作れなかったと説明。最近流行しているNoSQLとSQLとを関連付ける取り組みに後押しされる形で、今回のダイナミックカラムの実装にたどり着いたと説明している。