LoginSignup
4
3

More than 5 years have passed since last update.

VoltDB ストアドプロシージャと共に

Posted at

VoltDBの特徴としてあげられるのは、
高速な処理や非同期に特化した機能もそうですが、
javaで実装されている点も、特徴の一つです。
NuoDBも同じ分類のNewSQLと呼ばれるものですが、
javaを普段から触っている方には比較的簡単に利用できると思います。

VoltDBはjava, C++, php, node.jsなど各言語で利用できる様に
クライアントが用意されているほか、
jsonでやり取りが出来るAPIを持っています。
そのAPIや各クライアントから簡単に利用するには、
ストアドプロシージャを理解する必要があります。

とは言ってもそこまで難しいものではありませんので、簡単に使ってみましょう。
もちろんjavaで実装できますが、今回は定義だけでやってみましょう

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

テーブルをパーティション化

PARTITION TABLE users ON COLUMN user_id;

integer (TINYINT, SMALLINT, INTEGER, or BIGINT)
string (VARCHAR)
が利用可能です

CREATE PROCEDURE addUser AS 
    INSERT INTO users VALUES (?, ?, CURRENT_TIMESTAMP);
PARTITION PROCEDURE addUser ON TABLE users COLUMN user_id;

続いてinsertのストアドプロシージャです。
API、または各言語のクライアントから実行するときに、
PHPですあれば、PDOが対応していないため、
phpから実行する場合は、直接SQLを@AdHocで発行するか、
ストアドプロシージャを利用します。

APIで利用する場合は、下記の様になります。

http://localhost:8080/api/1.0/?Procedure=addUser&Parameters=["2", "hello"]

また全件SELECTも下記の様にすると、

CREATE PROCEDURE allUser AS SELECT * FROM users;
http://localhost:8080/api/1.0/?Procedure=allUser

となります。

デフォルトで用意されているAPIもいくつかあります。
例えばシステムの情報を取得する場合は下記の様にします。

http://localhost:8080/api/1.0/?Procedure=@SystemInformation

各クライアントから利用する場合もほぼ同様にして利用します。
クラスターなども簡単に出来ますので是非触ってみて下さい。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3