groonga - オープンソースのカラムストア機能付き全文検索エンジン

4.2. リモートアクセス

groongaをサーバとして起動することにより、ネットワークを介してデータベースにアクセスできるようになります。groongaがサポートしているプロトコルは、groongaの専用プロトコルであるgqtp、memcachedバイナリプロトコル、HTTPの三種類です。

4.2.1. groonga専用プロトコル(gqtp)

4.2.1.1. gqtpサーバの起動

groongaには、専用のプロトコルであるgqtpが存在します。gqtpを用いることにより、データベースへとリモートアクセスすることができます。以下の書式はgqtpサーバの起動方法を示しています。

書式:

groonga [-p PORT_NUMBER] -s DB_PATH

-s オプションはgroongaをサーバとして起動するためのオプションです。DB_PATHには既存のデータベースのパスを指定します。 -p オプションとその引数により、サーバのポート番号を指定することができます。ポート番号を省略した場合は10041が使用されます。

以下のコマンドにより、デフォルトのポート番号で待ち受けるサーバを起動することができます。サーバは指定されたデータベースへの操作を受け付けます。

実行例:

% groonga -s /tmp/groonga-databases/introduction.db
Ctrl-c
%

4.2.1.2. gqtpデーモンの起動

gqtpサーバはデーモンとして起動することができます。オプションとして、 -s の代わりに -d を与えてください。

書式:

groonga [-p PORT_NUMBER] -d DB_PATH

groongaをデーモンとして起動したときは、デーモンのプロセスIDが表示されます。以下の例では、12345というプロセスIDが表示されています。サーバとして起動した場合と同様に、指定されたデータベースへの操作を受け付けます。

実行例:

% groonga -d /tmp/groonga-databases/introduction.db
12345
%

4.2.1.3. gqtpサーバへの接続

gtqpサーバに接続するクライアントは、以下のように起動します。

書式:

groonga [-p PORT_NUMBER] -c [HOST_NAME_OR_IP_ADDRESS]

上記のコマンドによって起動されたクライアントは、サーバとの接続に成功すると対話モードに入ります。HOST_NAME_OR_IP_ADDRESSにはサーバのホスト名もしくはIPアドレスを指定します。HOST_NAME_OR_IP_ADDRESSが省略されたときは"localhost"をサーバのホスト名として採用します。また、 -p オプションとその引数により、サーバのポート番号を指定することができます。ポート番号を省略した場合は10041が使用されます。

実行例:

% groonga -c
> status
[
  [
    0,
    1335519662.04579,
    5.79357147216797e-05
  ],
  {
    "uptime": 0,
    "max_command_version": 2,
    "n_queries": 0,
    "cache_hit_rate": 0.0,
    "version": "2.0.1-283-g3f815e2",
    "alloc_count": 130,
    "command_version": 1,
    "starttime": 1335519662,
    "default_command_version": 1
  }
]
> ctrl-d
%

対話モードでは、標準入力からコマンドを読み込んで順次実行します。

4.2.1.4. gqtpサーバの終了

gqtpサーバを終了する安全は方法は、クライアントを起動して shutdown を発行することです。

実行例:

% groonga -c
> shutdown
%

4.2.2. memcachedバイナリプロトコル

groongaはmemcachedバイナリプロトコルをサポートしています。以下の書式はmemcachedバイナリプロトコルのサーバをデーモンとして起動する方法を示しています。

書式:

groonga [-p PORT_NUMBER] -d --protocol memcached DB_PATH

--protocol オプションとその引数により、サーバのプロトコルを指定することができます。"memcached"はmemcachedバイナリプロトコルを示しています。

4.2.3. HTTP

4.2.3.1. HTTPサーバの起動

groongaはHTTPをサポートしています。以下の書式はHTTPサーバをデーモンとして起動する方法を示しています。

書式:

groonga [-p PORT_NUMBER] -d --protocol http DB_PATH

--protocol オプションとその引数により、サーバのプロトコルを指定することができます。"http"はHTTPサーバの起動を指示しています。

以下のコマンドは、ポート番号80で待ち受けるHTTPサーバをデーモンとして起動します。

実行例:

% groonga -p 80 -d --protocol http /tmp/groonga-databases/introduction.db
%

4.2.3.2. HTTPサーバへのコマンド送信

groongaがHTTPサーバとして起動されているときは、/d/COMMAND_NAME というURLにアクセスすることにより、コマンドを実行することができます。コマンドの引数は、HTTPのGETパラメータとして渡します。引数の書式は "?NAME_1=VALUE_1&NAME_2=VALUE_2&..." となります。

以下の例は、HTTPサーバに対するコマンドの送り方を示しています。

実行例:

http://HOST_NAME_OR_IP_ADDRESS[:PORT_NUMBER]/d/status
Executed command:
> status
[
  [
    0,
    1335519662.24808,
    9.918212890625e-05
  ],
  {
    "uptime": 0,
    "max_command_version": 2,
    "n_queries": 0,
    "cache_hit_rate": 0.0,
    "version": "2.0.1-283-g3f815e2",
    "alloc_count": 131,
    "command_version": 1,
    "starttime": 1335519662,
    "default_command_version": 1
  }
]

http://HOST_NAME_OR_IP_ADDRESS[:PORT_NUMBER]/d/select?table=Site&query=title:@this
Executed command:
> select --table Site --query title:@this
[
  [
    0,
    1335519662.45038,
    0.00197672843933105
  ],
  [
    [
      [
        1
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "_key",
          "ShortText"
        ],
        [
          "country",
          "SiteCountry"
        ],
        [
          "domain",
          "SiteDomain"
        ],
        [
          "link",
          "Site"
        ],
        [
          "links",
          "Site"
        ],
        [
          "location",
          "WGS84GeoPoint"
        ],
        [
          "title",
          "ShortText"
        ]
      ],
      [
        1,
        "http://example.org/",
        "japan",
        ".org",
        "http://example.net/",
        [
          "http://example.net/",
          "http://example.org/",
          "http://example.com/"
        ],
        "128452975x503157902",
        "This is test record 1!"
      ]
    ]
  ]
]

4.2.4. ブラウザベースの管理ツール

groongaをHTTPサーバとして起動しているときは、ブラウザベースの管理ツールを使うことにより、データベースを簡単に管理することができます。管理ツールを使いたいときは、ブラウザを使って http://HOST_NAME_OR_IP_ADDRESS[:PORT_NUMBER]/ へとアクセスしてください。管理ツールの使用には、JavaScriptの実行が有効になっている必要があります。

4.2.5. セキュリティ

groongaのサーバには認証機能がありません。誰でもデータベースの内容を閲覧・修正することができます。iptablesなどを用いてアクセス元IPアドレスを制限することを推奨します。