データウェアハウスなどの分析用DBとして利用される、列指向データベース「Infobright」を使ってみたので、記録しておきます。
Infobright とは
MySQLインターフェースを使って利用できる列指向データベースです。
InnoDBやMyISAMは行指向データベースですが、Infobrightは MySQLのストレージエンジン(BRIGHTHOUSE)として組み込まれている列指向データベースエンジンです。
セットアップ環境
今回は、AWS EC2 で Infobright をセットアップしました。
Infobright は、無料で使える Infobright Community Edition (ICE) 4.0.7 となります。64bit rpm の infobright-4.0.7-0-x86_64-ice.rpm を使います。MySQLとしては 5.1.40 build を使っているようです。
インストール
まず、NSCDを先にインストールします。これが入っていないと、infobright インストール時に怒られます。
# yum install nscd
次に、Infobright をインストールします。
# rpm -ivh infobright-4.0.7-0-x86_64-ice.rpm
インストールは以上です。
利用前の設定
Infobright の起動・停止は、「/etc/init.d/mysqld-ib」スクリプトを利用します。このスクリプトでは、/etc/my-ib.cnf を利用します。(内容的には my.cnf の位置付けです。)
/etc/my-ib.cnf がないと、起動時にERRORとなります。
# /etc/init.d/mysqld-ib status Error - /etc/my-ib.cnf was not found! Please make sure Infobright installation completed and activated successfully. # # cp /etc/my-ib.cnf.inactive /etc/my-ib.cnf # /etc/init.d/mysqld-ib start Starting MySQL. SUCCESS! #
次に通常のMySQLと同じように、rootパスワードの設定やtest用DBを削除するスクリプトを実行します。
# /usr/local/infobright-4.0.7-x86_64/bin/mysql_secure_installation
ストレージエンジン確認
MySQL(Infobright)にログインしてストレージエンジンを確認してみます。
mysql> show engines; +-------------+---------+-----------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +-------------+---------+-----------------------------------------------------------+--------------+------+------------+ | BRIGHTHOUSE | DEFAULT | Brighthouse storage engine | YES | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MyISAM | YES | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | +-------------+---------+-----------------------------------------------------------+--------------+------+------------+ 5 rows in set (0.00 sec) mysql>
InnoDBはなく、BRIGHTHOUSE がデフォルトのストレージエンジンになっています。
あとがき
/etc/my-ib.cnf では、例えばデフォルト値で「character_set_server=latin1」となっていたりしますので、環境に合わせて幾つか修正が必要になると思います。
Infobright Community Edition では、INSERT、UPDATE、DELETE等のDMLが使えません。データは LOAD DATA で取り込む形となります。分析用の簡易DBという位置づけのようで、上位版に Infobright Enterprise Edition があります。
INSERT コマンドを発行してみると、以下のようなERRORになります。
mysql> insert into test values(1,'test'); ERROR 1031 (HY000): Table storage engine for 'test' doesn't have this option mysql>
データのロードは問題なく行えますので、大量の分析対象ログなどを取り込む事ができます。
mysql> LOAD DATA INFILE '/tmp/test.csv' INTO TABLE test FIELDS TERMINATED BY ',' ENCLOSED BY '"'; Query OK, 4 rows affected (0.08 sec) Records: 4 Deleted: 0 Skipped: 0 Warnings: 0 mysql>
今後、BIツールも含めて触ってみたいと思います。