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 件のコメント:
コメントを投稿