4.2. リモートアクセス#

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

4.2.1. HTTP#

4.2.1.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.1.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
#   ],
#   {
#     "alloc_count": 29,
#     "starttime": 1696558618,
#     "start_time": 1696558618,
#     "uptime": 0,
#     "version": "2.9.1",
#     "n_queries": 0,
#     "cache_hit_rate": 0.0,
#     "command_version": 1,
#     "default_command_version": 1,
#     "max_command_version": 3,
#     "n_jobs": 0,
#     "features": {
#       "nfkc": true,
#       "mecab": true,
#       "message_pack": true,
#       "mruby": true,
#       "onigmo": true,
#       "zlib": true,
#       "lz4": true,
#       "zstandard": true,
#       "kqueue": false,
#       "epoll": true,
#       "poll": false,
#       "rapidjson": false,
#       "apache_arrow": true,
#       "xxhash": true,
#       "blosc": true,
#       "bfloat16": true,
#       "h3": true,
#       "simdjson": true,
#       "llama.cpp": true,
#       "back_trace": true,
#       "reference_count": false
#     },
#     "apache_arrow": {
#       "version_major": 2,
#       "version_minor": 9,
#       "version_patch": 1,
#       "version": "2.9.1"
#     },
#     "memory_map_size": 2929,
#     "n_workers": 0,
#     "default_n_workers": 0,
#     "os": "Linux",
#     "cpu": "x86_64"
#   }
# ]
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.2. ブラウザベースの管理ツール#

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

4.2.3. セキュリティ#

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