CloudCore のサーバ(Ubuntu12.04)を借りたのでそこでカラム指向DBの比較をしてみたいと思う。対象DBは下記を予定。
- MonetDB
- InfiniDB
- InfoBright
- GreenPlum
今回は MonetDB の環境構築まで。
MonetDB は
1. apt によるバイナリインストール
apt 用のリストを追加
$ sudo vi /etc/apt/sources.list.d/monetdb.list deb http://dev.monetdb.org/downloads/deb/ precise monetdb deb-src http://dev.monetdb.org/downloads/deb/ precise monetdb
MonetDB 用の PublicKey を apt に追加
$ wget --output-document=- http://dev.monetdb.org/downloads/MonetDB-GPG-KEY | sudo apt-key add -
リストを更新してパッケージのインストール
$ sudo aptitude update $ sudo apt-get install monetdb5-sql monetdb-client※XQuery を使用する場合は monetdb-xquery libmonetdb4-xquery を追加
上記インストールの際に monetdb グループ(と monetdb ユーザ)が追加されているので MonetDB の起動ユーザを monetdb グループへ追加。
※公式サイトに書いてあったが、実際試したところグループ権限が無くても起動できるっぽい
$ sudo usermod -a -G monetdb USER
参考: http://dev.monetdb.org/downloads/deb/
2. おためし
monetdbd コマンドにより dbfarm(通常のDBインスタンスに相当?) を作成し、その情報の取得・更新が可能。
# hoge_dbfarm の作成 $ monetdbd create ~/hoge_dbfarm # hoge_dbfarm の情報一覧 $ monetdbd get all ~/hoge_dbfarm property value hostname shimajiro dbfarm /home/you1025/hoge_dbfarm/ status monetdbd[1390] 1.6 (Apr2012-SP2) is serving this dbfarm mserver /usr/bin/mserver5 logfile /home/you1025/hoge_dbfarm//merovingian.log pidfile /home/you1025/hoge_dbfarm//merovingian.pid sockdir /tmp port 50000 exittimeout 60 forward proxy discovery yes discoveryttl 600 control no passphrase mapisock /tmp/.s.monetdb.50000 controlsock /tmp/.s.merovingian.50000 # port 番号の取得 $ monetdbd get port ~/hoge_dbfarm property value port 50000 # port 番号の変更 $ monetdbd set port=54321 ~/hoge_dbfarm $ monetdbd get port hoge_dbfarm property value port 54321 # 元に戻す $ monetdbd set port=50000 ~/hoge_dbfarm #dbfarm の起動 $ monetdbd start ~/hoge_dbfarm
データベースの作成と起動
# firstdb データベースの作成
$ monetdb create firstdb
created database in maintenance mode: firstdb
# hoge_dbfarm のデータベース状態一覧
$ $ monetdb status
name state uptime health
firstdb locked
# monetdb start によりメンテナンスモード(管理者のみがアクセス可?)へ移行
$ monetdb start firstdb
starting database 'firstdb'... done
$ monetdb status
name state uptime health
firstdb locked 34s 100%, 0s
# リリース!!
$ monetdb release firstdb
taken database out of maintenance mode: firstdb
$ monetdb status
name state uptime health
firstdb running 3m 7s 100%, 0s
接続してクエリを投げてみる
$ mclient -d firstdb
user(you1025):monetdb # 初期ユーザID
password: # 初期ユーザパスワード: monetdb
Welcome to mclient, the MonetDB/SQL interactive terminal (Apr2012-SP2)
Database: MonetDB v11.9.7 (Apr2012-SP2), 'mapi:monetdb://shimajiro:50000/firstdb'
Type \q to quit, \? for a list of available commands
auto commit mode: on
sql>
# テーブル作成
sql>create table hoge(id int, value varchar(256), primary key(id));
operation successful (7.342ms)
sql>\d
TABLE sys.hoge
sql>\d sys.hoge
CREATE TABLE "sys"."hoge" (
"id" INTEGER NOT NULL,
"value" VARCHAR(256),
CONSTRAINT "hoge_id_pkey" PRIMARY KEY ("id")
);
# データ投入
sql>insert into sys.hoge values(1, 'hoge1');
1 affected row (4.401ms)
sql>insert into sys.hoge values(2, 'hoge2');
1 affected row (3.798ms)
sql>insert into sys.hoge values(3, 'hoge3');
1 affected row (4.896ms)
# データ検索
sql>select * from sys.hoge;
+------+-------+
| id | value |
+======+=======+
| 1 | hoge1 |
| 2 | hoge2 |
| 3 | hoge3 |
+------+-------+
3 tuples (2.883ms)
# データ更新
sql>update sys.hoge set value = 'hoge999' where id = 2;
1 affected row (4.356ms)
sql>select * from sys.hoge;
+------+---------+
| id | value |
+======+=========+
| 1 | hoge1 |
| 2 | hoge999 |
| 3 | hoge3 |
+------+---------+
3 tuples (2.797ms)
# データ削除
sql>delete from sys.hoge where id = 2;
1 affected row (4.234ms)
sql>select * from sys.hoge;
+------+-------+
| id | value |
+======+=======+
| 1 | hoge1 |
| 3 | hoge3 |
+------+-------+
2 tuples (3.194ms)
# テーブル削除
sql>drop table sys.hoge;
operation successful (3.215ms)
ユーザ追加
# ユーザ追加 # ※ダブルクォートとシングルクォートを間違えて下記と異なるとエラー sql>create user "hoge" with password 'hoge' name 'HOGE' schema "sys"; operation successful (5.471ms) # hoge_schema スキーマ作成 sql>create schema "hoge_schema" authorization "hoge"; operation successful (2.851ms) # hoge のスキーマ変更 sql>alter user "hoge" set schema "hoge_schema"; operation successful (2.135ms) # ログアウトしてユーザ hoge として再接続 sql>\q you1025@shimajiro:~$ mclient -u hoge -d firstdb password: Welcome to mclient, the MonetDB/SQL interactive terminal (Apr2012-SP2) Database: MonetDB v11.9.7 (Apr2012-SP2), 'mapi:monetdb://shimajiro:50000/firstdb' Type \q to quit, \? for a list of available commands auto commit mode: on sql> # スキーマの確認 sql>create table foo(id int, value int, primary key(id)); operation successful (8.470ms) sql>\d TABLE hoge_schema.foo # hoge_schema が適用
3. チュートリアル
チュートリアル用データの取得
データ投入
# n 件サンプリング
sql>select * from voc.voyages sample 5;
# 10%サンプリング
sql>select * from voc.voyages sample 0.1;
下記を参考にしたが View の作成やちょっとした Select 程度なのでここで終了とする。
参考: http://www.monetdb.org/Downloads/Tutorial
$ wget http://dev.monetdb.org/Assets/VOC/voc_dump.sql.gz $ $ gunzip voc_dump.sql.gz
# チュートリアル用のデータベース作成 $ monetdb create voc created database in maintenance mode: voc $ monetdb release voc taken database out of maintenance mode: voc # 接続 $ mclient -u monetdb -d voc password: Welcome to mclient, the MonetDB/SQL interactive terminal (Apr2012-SP2) Database: MonetDB v11.9.7 (Apr2012-SP2), 'mapi:monetdb://shimajiro:50000/voc' Type \q to quit, \? for a list of available commands auto commit mode: on sql> # ユーザ voc の作成 sql>create user "voc" with password 'voc' name 'VOC Explorer' schema "sys"; operation successful (5.268ms) sql>create schema "voc" authorization "voc"; operation successful (3.259ms) sql>alter user "voc" set schema "voc"; operation successful (2.348ms) sql>\q
データ投入
$ mclient -u voc -d voc < voc_dump.sql password:auto commit mode: off operation successful 1 affected row 1 affected row … … … operation successful operation successful operation successful auto commit mode: on # ※ログイン後に以下のコマンドでもデータ投入可能 sql>\< voc_dump.sql # テーブル一覧 sql>\d TABLE voc.craftsmen TABLE voc.impotenten TABLE voc.invoices TABLE voc.passengers TABLE voc.seafarers TABLE voc.soldiers TABLE voc.total TABLE voc.voyages
# n 件サンプリング
sql>select * from voc.voyages sample 5;
# 10%サンプリング
sql>select * from voc.voyages sample 0.1;
下記を参考にしたが View の作成やちょっとした Select 程度なのでここで終了とする。
参考: http://www.monetdb.org/Downloads/Tutorial
0 件のコメント:
コメントを投稿