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

- English page

# 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 オプションとその引数により、サーバのポート番号を指定することができます。ポート番号を省略した場合は10043が使用されます。

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

実行例:

    % 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サーバへの接続

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

書式:

    groonga [-p PORT_NUMBER] -c [HOST_NAME_OR_IP_ADDRESS]

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

実行例:

    % groonga -c
    status
    # [
    #   [
    #     0,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "uptime": 0,
    #     "max_command_version": 2,
    #     "n_queries": 0,
    #     "cache_hit_rate": 0.0,
    #     "version": "4.0.1",
    #     "alloc_count": 140,
    #     "command_version": 1,
    #     "starttime": 1395806078,
    #     "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サーバの起動を指示しています。-p オプションを省略した場合は10041のポート番号が使用されます。

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

実行例:

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

注釈

80番ポートで待ち受けるにはroot権限が必須です。1024番以降のポート番号にはそのような制限はありません。

### 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,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   {
    #     "uptime": 1,
    #     "max_command_version": 2,
    #     "n_queries": 0,
    #     "cache_hit_rate": 0.0,
    #     "version": "4.0.1",
    #     "alloc_count": 141,
    #     "command_version": 1,
    #     "starttime": 1395806078,
    #     "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,
    #     1337566253.89858,
    #     0.000355720520019531
    #   ],
    #   [
    #     [
    #       [
    #         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アドレスを制限することを推奨します。