HibariはKVSであり、キー(Key)と値(Value)から成るデータをいかに効率的に操作し、使用するかを求められます。 ここでは、そのデータ操作についてユーザが指示できるオペレーションコマンド等について示してみます。
Hibariには、データ操作を行うための直接的なGUIインターフェイスが存在しません。
このため、Hibariに対して何らかの操作を行うためには、以下のいずれかのプロトコルを使用してCUIベースの命令語を発行する必要があります。
以下、使用可能なプロトコルについて示しました。
プロトコル名 | 概要 |
Erlang API | Hibariにアクセスする事が可能なErlangモジュールを使用して命令語を発行します。 主にデータ操作を可能とする「brick:simple」モジュールと、複雑な命令やテーブルの管理・追加などをサポートする「brick_server」モジュールに分かれ、Hibariの操作体系を意識しやすい構成となっています。 但し、当然ではありますが開発言語としてはErlangのみのサポートとなります。 |
UBF | Erlangの開発者でもある「Joe Armstrong」氏が提唱したバイナリスキーマであり、XMLやJSON等と同一の構成を持ってはいますがその構成はシンプルです。 また、バイナリベースのためネットワーク通信などにおいても帯域を圧迫しません。UBFのルールに従っていれば開発言語には特に依存せず、汎用的に使用する事ができます。 |
JSON-RPC | JavaScript?言語をベースに生まれた軽量のデータフォーマットです。UBFと同様に特定の開発言語には依存しない上、テキストベースで解りやすく、また多くの開発言語では専用のフォーマット整形ライブラリが用意されているため、非常に使いやすいプロトコルと言えます。 但しテキストベースであるため、バイナリベースのUBF等と比べると効率が悪いといった欠点も存在します。 |
JSON(overTCP) | Hibariが用意しているJSON用のネットワークポート(デフォルト値はポート7582)にアクセスし、JSONプロトコルで命令語を発行する事によってデータを操作する事も出来ます。 telnet等でアクセスし、直接テキストベースで操作可能のため、動作試験用として非常に手頃に扱う事ができます。 |
Hibariがサポートするデータ操作系のオペレーションについては、以下のようなものがあります。
使用するプロトコルによって命令語、またはデータ指定の方法に若干の違いがありますが、操作出来る内容等には違いはありません。以下の表にはその概要と、また一般的なRDBに置き換えて考えた場合の「対応する命令語」をまとめました。
データ 操作区分 | Hibari 命令語 | 命令内容 | 一般的なRDBに おける対応した PL/SQL命令語 |
参照系 | get | データの参照を行い、データが存在すれば取得を行います。 | SELECT |
get_many | 指定された条件に関してデータを絞り込み、条件に合うデータ全てを取得します。 | ||
更新系 | add | 新規に新しいキー値を持つデータをテーブルに格納します。 すでにデータが存在している場合はエラーとなります。 | INSERT |
set | 既にキー値が存在するデータに対して、データの変更を行います。 該当するデータが存在していない場合はエラーとなります。 | UPDATE | |
replace | 対象となるデータに対して、既にキー値がデータが存在していない場合にはadd命令を、データが存在している場合にはset命令をそれぞれ行います。 | MERGEまたは UPSERT | |
delete | 指定された条件に該当するデータを削除します。 | DELETE | |
トラン ザクション | txn | 一貫したデータ操作を行うためのトランザクション処理を行ないます。 指定された命令を全て行うまで、データに対しての反映を行いません。 | TRANSACTION~ ROLLBACK /COMMIT |
do |
各プロトコル毎のCUI操作例、および命令語の詳細については、以下の項目を参照してください。
brick_simple:get(テーブル名, キー値)
ubf_client:rpc(P1, {get, テーブル名, <<"キー値">>}).
UBFObject res4 = ubf.rpc( UBF.tuple(new UBFAtom("get"), atom_テーブル名, new UBFBinary("キー値")));
{"$T": [{"$A":"get"}, {"$A":"テーブル名"},"キー値"]}
執筆中
執筆中
執筆中
執筆中
執筆中
執筆中