droonga-groongaは、Droongaクラスタに対してコマンドラインインターフェース経由でGroongaサーバのように通信する機能を提供します。
例えば、192.168.100.50というDroonga Engineノードがあり、同一ネットワークセグメント内のコンピュータ192.168.100.10にログインしている場合、全てのテーブルの一覧を出力するコマンド列は以下のようになります:
(on 192.168.100.10)
$ droonga-groonga --host 192.168.100.50 --receiver-host 192.168.100.10 --pretty \
    table_list
[
  [
    0,
    1431000097.1314175,
    0.00024175643920898438
  ],
  [
    [
      [
        "id",
        "UInt32"
      ],
      [
        "name",
        "ShortText"
  ...
  ]
]
このコマンドは、Groonga互換コマンドのメッセージをdroonga-requestを用いて送信する操作を簡単に行う物です。
上記コマンド列によってもたらされる結果は、以下のコマンド列の結果と実質的に同一です:
(on 192.168.100.10)
$ echo '{"type":"table_list"}' |
    droonga-request --report-request --host 192.168.100.50 --receiver-host 192.168.100.10
Request: {
  "type": "table_list",
  "id": "1431000097.1242323",
  "date": "2015-05-07T12:01:37.124254Z",
  "dataset": "Default"
}
Elapsed time: 0.011710191
{
  "inReplyTo": "1431000097.1242323",
  "statusCode": 200,
  "type": "table_list.result",
  "body": [
    [
      0,
      1431000097.1314175,
      0.00024175643920898438
    ],
    [
      [
        [
          "id",
          "UInt32"
        ],
        [
          "name",
          "ShortText"
    ...
    ]
  ]
}
Groonga互換コマンドのリファレンス、およびGroongaのリファレンスマニュアルも併せて参照して下さい。
groongaコマンドとの互換性このコマンドはgroongaコマンドのクライアントモードおよびスタンドアロンモードのように動作するよう設計されています。
このコマンドに与えられた、Droonga固有のオプションを除いた残りの全てのコマンドライン引数は、groongaコマンドのコマンドライン引数と同様に動作します。
例:
(on 192.168.100.10)
$ GROONGA="droonga-groonga --host 192.168.100.50 --receiver-host 192.168.100.10 --pretty "
$ $GROONGA table_list
$ $GROONGA column_list --table Store
$ $GROONGA select --table Store --match_columns name --query ave --limit 5 --output_columns _key,name
ただし、現在の所groongaコマンドの以下の機能にはまだ対応していません:
loadコマンドのための値Groonga風のコマンドライン引数と以下のDroonga固有のオプションが利用できます。
--pretty--host=NAME--port=PORT10031です。--tag=TAGdroongaです。--dataset=NAMEDefaultです。--receiver-host=NAME--target-role=ROLEservice-provider:
メッセージは、クラスタ内でサービスを提供中のノードで処理されます。
データ抽出操作に関わるノードには、後から遅れてメッセージが伝搬します。absorb-source:
メッセージは、クラスタへのノード追加操作におけるデータコピー元となっているノードで処理されます。
サービスを提供中のノード、並びにデータコピー先となっているノードへは、メッセージは伝搬しません。absorb-destination:
メッセージは、クラスタへのノード追加操作におけるデータコピー先となっているノードで処理されます。
サービスを提供中のノード、並びにデータコピー元となっているノードへは、メッセージは伝搬しません。any:
メッセージは、--hostで指定されたノードで処理されます。既定値はanyです。
--timeout=SECONDS3です。-h, --helpこのコマンドは、Rubygemsのパッケージdroonga-clientの一部としてインストールされます。
# gem install droonga-client