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サーバへの接続¶
GQTPサーバに接続するクライアントは、以下のように起動します。
書式:
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,
# 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.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サーバをデーモンとして起動します。
実行例:
% 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アドレスを制限することを推奨します。