2012年7月30日月曜日

Infobrightにworldデータベースを食わせてみる


前に書いたけれども、InfobrightはCommunity Edition(GPLで使える方)はINSERT,UPDATE,DELETEが利かない。
でもSELECT(というかGROUP BY)性能を試す為には当然データが必要。

なのでごり押しでworldデータベース(MySQL公式のサンプルDB)を食わせる方法のメモ。


1) まずは落としてくる

http://dev.mysql.com/doc/index-other.html
`world database (MyISAM version, used in MySQL certifications and training)'をチョイス。
InfobrightのMyISAMに食わせてからBRIGHTHOUSEに食わせ直すことにした。


2) MyISAMテーブルにロード


mysqladmin create world_myisam
mysql world_myisam < world.sql

さっくりと。


3) INDEXをひっぺがしたりデータ型を変えたり

world.sqlファイルを直接いじっても良いかも知れない。

mysql> ALTER TABLE `City` MODIFY `ID` INT NOT NULL,DROP PRIMARY KEY;
mysql> ALTER TABLE `Country` MODIFY `Continent` VARCHAR(13) NOT NULL DEFAULT 'Asia',DROP PRIMARY KEY;
mysql> ALTER TABLE `CountryLanguage` MODIFY `IsOfficial` VARCHAR(1) NOT NULL DEFAULT 'F',DROP PRIMARY KEY;


4) スキーマをBRIGHTHOUSEエンジンに食わせる

mysqladmin create world
mysqldump --no-data world_myisam | sed 's/ENGINE=MyISAM/ENGINE=BRIGHTHOUSE/i' | mysql world

ENGINEをInfobrightのエンジンに変更してそのまま食わせる。


5) データをCSVに吐き出してからBRIGHTHOUSEに食わせる

mysql --skip-column-name -e "SHOW TABLES FROM world_myisam" | while read tbl ; do
mysql -e "SELECT * FROM world_myisam.$tbl INTO OUTFILE '/tmp/$tbl.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\'"
mysql -e "LOAD DATA INFILE '/tmp/$tbl.csv' INTO TABLE world.$tbl FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\'"
rm /tmp/$tbl.csv
done

rmがアレなら最後にまとめて消す。


取り敢えずこれで使える形に落とし込めるけど、
worldデータベースだと件数が少なくてちょっとさみしいかも。

employeesだともうちょっと件数があるので、集約関数の速さは実感できた。

0 件のコメント :

コメントを投稿