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等と同じ様な動作をさせるので、触れません
動かしてみる
普通のRDBMSと同様にCREATEします。
CREATE TABLE users (
user_id INTEGER UNIQUE NOT NULL,
user_name VARCHAR(40) NOT NULL,
created_at TIMESTAMP NOT NULL
);
オートインクリメントはサポートされていない為、ストアドプロシージャで実装する事になります。
こんな感じであまり変わらないと思いますがsqlを作ります。
sqlファイルをコンパイルします
voltdb compile users.sql
このまま実行すると、データベースをcreateするときにデフォルトのcatalog.jarとなります。
任意の名前にしたい場合は下記の様にします
voltdb compile -o users.jar users.sql
コンパイルすると色々ファイルが出来ていると思います
出来上がったjarを使ってvoltdbを起動させます。
/voltdb create users.jar
デフォルトで8080を使用して起動します。
localhost:8080で何か色々見えると思います。
sqlcmdで操作します。
sqlcmd
SQL Command :: localhost:21212
1>SELECT * FROM USERS;
USER_ID USER_NAME CREATED_AT
-------- ---------- -----------
insert into users values (1, 'voltdb', NOW);
UPDATE users SET user_name = 'VoltDB' WHERE user_id = 1;
ほぼそのまま使用する事が出来ます。
他にもjsonによるAPIを実装したりと色々な機能が提供されています。
エクリプス等で作り込んでいくと、なかなか面白い使い方ができるのではないと思います。
次回は何か色々いじってみる編です
Author And Source
この問題について(VoltDBを使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/ytake/items/4da625997079716404ad著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .