VoltDBを使ってみる


そもそもvoltDBってなんぞや

書籍での利用方法紹介や2010年頃に話題にもなったので、知ってる方も多いのではないかと思いますが、
新世代のdatabaseと言われる様な分類で、
PostgreSQLに携わった方の設計によるデータベースで
インメモリにデータを保存し、SQL文をそのまま使う事で、
NoSQLとRDBMSのいいとこ取りの様なデータベースです。

かといって全てのSQLがサポートされている訳ではありません
サポートされているSQLはこちら

また、javaで作られたストアドプロシージャを利用するのも特徴の一つになっています。
これらを利用してトランザクションをサポートしたり、SQL文を利用しながらも、
NoSQL並みのパフォーマンスとRDBMSの良さを実現しています。

ただ欠点が無い訳では無く、普通のRDBMSと同じ利用方法では利点があまりないので、
色々いじりながら使った方が良さそうです(まさに今そんな感じです)
DBエンジニアが担当するというよりは、
エンジニアがjavaを書きながら、ガツガツ使いながらいく方が良いのではないかと思います。
クライアントは各言語に提供されてマス

なぜ今voltDBなのかというと完全に趣味ですが、今後利用する場面は多くなるのではないでしょうか
導入がNoSQLと同様に簡単なので手軽に試してみる事が出来ます。
今回は至ってベーシックにMySQL等と同等程度にコンパイルしてSQLを発行するのをメモがてら紹介です。

入手する

とりあえずコミュニティエディションを入手します
VoltDB GitHub

git clone https://github.com/VoltDB/voltdb.git
cd voltdb
ant

完了したら、examplesの中にサンプルで動かせるものがあるので、
それをドキュメントサイトを見ながら動かしてみるといいかもしれません。
今回はライトにMySQL等と同じ様な動作をさせるので、触れません

サポートされているDDLはこちら

動かしてみる

普通のRDBMSと同様にCREATEします。

users.sql
CREATE TABLE users (
   user_id INTEGER UNIQUE NOT NULL,
   user_name VARCHAR(40) NOT NULL,
   created_at TIMESTAMP NOT NULL
);

オートインクリメントはサポートされていない為、ストアドプロシージャで実装する事になります。
こんな感じであまり変わらないと思いますがsqlを作ります。
sqlファイルをコンパイルします

compile
voltdb compile users.sql

このまま実行すると、データベースをcreateするときにデフォルトのcatalog.jarとなります。
任意の名前にしたい場合は下記の様にします

compile
voltdb compile -o users.jar users.sql

コンパイルすると色々ファイルが出来ていると思います
出来上がったjarを使ってvoltdbを起動させます。

create
/voltdb create users.jar

デフォルトで8080を使用して起動します。
localhost:8080で何か色々見えると思います。
sqlcmdで操作します。

select
sqlcmd
SQL Command :: localhost:21212
1>SELECT * FROM USERS;
USER_ID  USER_NAME  CREATED_AT 
-------- ---------- -----------
insert
insert into users values (1, 'voltdb', NOW);
update
UPDATE users SET user_name = 'VoltDB' WHERE user_id = 1;

ほぼそのまま使用する事が出来ます。
他にもjsonによるAPIを実装したりと色々な機能が提供されています。
エクリプス等で作り込んでいくと、なかなか面白い使い方ができるのではないと思います。
次回は何か色々いじってみる編です