最新情報
Droonga Engine用のRuby用クライアントライブラリとコマンドラインツールを提供するdroonga-client-rubyの、バージョン0.2.2をリリースしました!
このバージョンでは、Droongaクラスタをコマンドライン操作でGroonga感覚で利用できるツールのdroonga-groonga
コマンドにおいて、標準入力を使った複数コマンドの流し込みに対応しました。
これにより、以下の要領でGroonga用のスキーマ定義ファイルなどの内容を簡単にDroongaクラスタに反映することができます。
$ cat /path/to/schema.grn | droonga-groonga --host node0 --port 10031
元々、似たようなことはgrn2drnとdroonga-request
コマンドの組み合わせでできていましたが、2つのコマンドの使い方を覚えなくてはならないため若干面倒でした。
groonga
コマンドとほとんど同じ感覚で使える、という点が特徴のdroonga-groonga
コマンド単体で標準入力からの流し込みを行えるようになったことで、Groongaからの移行がより容易になったと言えるでしょう。
Groongaを使い慣れているという方は、ぜひ試してみて下さい。
また、droonga-add
, droonga-system-status
, droonga-groonga
の各コマンドについて、--dry-run
オプションを指定することで、実際に送信される予定のメッセージの確認のみを行えるようにしました。
コマンドの実行前に影響を予想したい場合にお使い下さい。
Droongaプロジェクトはユーザや開発者としての皆さんのご協力をお待ちしています!
詳しくはコミュニティのページをご覧下さい。
コマンドラインツール群のリファレンスマニュアルが利用可能になりました!
Droongaおよび関連プロジェクトが提供する代表的なコマンドラインツールについて解説していますので、チュートリアルを読み進めたり実際にDroongaを試してみたりする際に是非とも役立てて下さい。
大変長らくお待たせしました。ようやく、待望の機能と共にDroonga 1.1.0をリリースしました!
Droongaとは?
DroongaはGroongaと互換性を持つ分散型の全文検索エンジンです。
Droongaクラスタは、レプリケーション機能を持つGroonga互換のHTTPサーバとして動作します。
どのように動作しどのように利用するのかについては、チュートリアルをご覧下さい。
また、設計について興味がある場合は概要もご覧下さい。
replicaノードの真の意味でのHot-Addが可能になりました!
今回のDroonga 1.1.0のリリースにおける最大の改善点は、replicaノードの完全なHot-Addへの対応です。
この機能はDroongaに必要な基本機能の1つとして長らく認識されていましたが、ようやく実現の運びとなりました。
今や、Droongaクラスタはダウンタイム無しでreplicaノードを追加できるようになりました。
クローリングや新規データの追加を停止する必要はもうありません!
なお、replicaノードのHot-Addを行うためには、追加する新しいreplicaノードを除いて、クラスタ内に2つ以上のreplicaノードが存在している必要があります。
詳細はreplicaノードの追加のチュートリアルを参照して下さい。
改善点の詳細な一覧
- Droonga-engine 1.1.0
- 全般:
- 継続的に流入してくるメッセージがある状況でのgracefulな終了・再起動が正しく動作するようにしました。
- Single stepの定義において、新しいパラメータ
single_operation
を導入しました。
これをtrue
に設定した場合、そのハンドラ用のメッセージは全てのreplicaおよびsliceの中から1つのボリュームにだけ配送されます。
これは、system.status
のようにクラスタ内で1回だけ実行されればそれでよいコマンドを実装するのに役立ちます。
- Single stepの定義において、新しいパラメータ
use_all_replicas
を導入しました。
これをtrue
に設定した場合、そのハンドラ用のメッセージは全てのreplicaに必ず配送されます。
これは、system.statistics.object.count.per-volume
のように全てのreplicaで実行される必要があるコマンドを実装するのに役立ちます。
add
コマンドが、型の一致しないkeyの自動変換に対応しました。
例えば、keyの型がUInt32
と定義されたテーブルであっても、keyを文字列で"1"
と書いたリクエストのままでレコードを追加できます。
dump
コマンド:他のテーブルのレコードを参照しているカラムの値を、オブジェクトの形(add
コマンドのパラメータとしては使えない)ではなく、レコードのkey文字列として正しく出力するようにしました。
この結果、参照カラムを含むテーブルをクラスタ間で正しくコピーできるようになりました。
dump
コマンド:_key
カラムのみを含むテーブルのレコードも正しく出力するようにしました。
dump
コマンド:転送されるメッセージに、それ自身のdate
フィールドを付与するようにしました。
Collectors::RecursiveSum
を導入しました。キーの値が数値であるハッシュや数値の配列などについて、値を再帰的に足し算できます。
system.status
コマンド:レスポンスの一部として、情報を報告してきたノードの識別子を出力するようにしました。
system.statistics.object.count
コマンドを追加しました。これはコマンドラインユーティリティによって内部的に使用されます。
system.statistics.object.count.per-volume
コマンドを追加しました。これはreplicaの同値性を確認するのに利用できます。
system.absorb-data
コマンドを追加しました。これはコマンドラインユーティリティによって内部的に使用されます。
- メッセージ形式:
targetRole
フィールドを追加しました。
メッセージを処理することのできるEngineノードのロールを明示的にして揺ることができます。
もしメッセージを受信したノードのロールと一致しなかった場合には、可能であれば、適切なノードへ自動的にメッセージが転送されます。
timeout
フィールドを追加しました。
リクエストに対するレスポンスをいつまで待つかを秒数で指定できます。
- コマンドラインユーティリティ:
droonga-engine-join
およびdroonga-engine-absorb-data
コマンドがより確実に動作するようになりました。
- いくつかのコマンドについて、内部的に行っているSerfの通信内容を監視するための
--verbose
オプションを追加しました。
- 主にデバッグ用として、
droonga-engine-set-role
コマンドを追加しました。
- Groongaとの互換性:
- Groongaの
delete
コマンドとの互換性の向上:
- 数値型のキーを持つテーブルに対しても正しく動作するようにしました。
funa1gさんによる報告がきっかけでの改善です。ありがとうございます!
- 型の一致しないkeyの自動変換に対応しました。
例えば、keyの型が
UInt32
と定義されたテーブルであっても、keyを文字列で"1"
と書いたリクエストのままでレコードを削除できます。
- Droonga-http-server 1.1.2
express-droonga
の要求バージョンを繰り上げました。
- Express-droonga 1.0.9
- Droonga Engine 1.1.0の仕様変更に追従しました。
- uber-cache 2.0.0に対応しました。
- Droonga Engineノードとの接続状況を調査できるように、以下のエンドポイントを追加しました。
/engines
:現在接続されているDroonga Engineノードの一覧を返します。
/connections
:Droonga Engineノードとの接続の詳細な内部状態を返します。
- Droongaクラスタの構成に何か変更があった場合に、必ずDroonga Engineノードとの接続を更新するようにしました。
/droonga/*
以下のエンドポイントに対するリクエストのクエリパラメータを、Droonga Engineノードに送るメッセージのbodyとして使うようにしました。
- Drndump 1.0.1
- 実装がモジュール化されました。
他の製品から内部的なライブラリを利用できるようになりました。
- Drntest 1.2.0
- 改善点
- メッセージの補完や妥当性検証を制御するためのディレクティブを追加しました。
#@enable_completion
および#@disable_completion
で、リクエストメッセージの必須フィールドの補完を制御できます(既定の状態では、必須のフィールドは自動的に補完されます)。
#@enable_validation
および#@disable_validation
で、リクエストメッセージの妥当性検証を制御できます(既定の状態では妥当性が検証されます)。
dump
のようなサブスクリプション型のコマンド向けに、#@subscribe-until
ディレクティブを追加しました。
当該ディレクティブに続くリクエストによるサブスクリプションについて、指定したタイムアウトで自動的にサブスクリプションを解除できます。例:
#@subscribe-until 10s
- エンジンのプロセスが異常停止している場合に、結果のステータスとして
NO RESPONSE
がすぐに返されるようになりました。
- Groongaコマンドのレスポンスとして不正な内容が返されても、エラーにならないようにしました。
- Droonga-client-ruby 0.2.1
- 入力メッセージの必須フィールドについて、既定の状態で自動的に補完するようにしました。
- 入力メッセージについて、既定の状態で自動的に妥当性を検証するようにしました。
- サブスクリプション型のメッセージについて、タイムアウトを指定できるようにしました。
client.subscribe(request, :subscription_timeout => 10)
のように指定すると、指定された秒数が経過した後に自動的にサブスクリプションが解除されます。
- 便利のためにいくつかのユーティリティコマンドを追加しました。
droonga-system-status
:クラスタに対してsystem.status
のリクエストを簡単に送れます。
droonga-add
:クラスタに対してadd
リクエストでのデータ追加を簡単に行えます。
droonga-groonga
:groonga
コマンドと似た要領で動作します。
- droonga-send, droonga-request:
--[no-]completion
オプションを追加しました。
意図的に不完全なメッセージを送りたい場合は、--no-completion
を指定するようにして下さい。
--[no-]validation
オプションを追加しました。
意図的に不正なメッセージを送りたい場合は、--no-validation
を指定するようにして下さい。
--default-dataset
オプションを追加しました。
このオプションの値は、dataset
フィールドがないメッセージを送ろうとした場合に使われます。
--default-target-role
オプションを追加しました。
このオプションの値は、targetRole
フィールドがないメッセージを送ろうとした場合に使われます。
date
フィールドを、Droonga Engine内部での物と同じく、マイクロ秒まで含んだ形式(2015-04-08T06:16:20.571303Z
のような)で補完するようにしました。
まとめ
- Droonga 1.1.0をリリースしました!
- ダウンタイム無しでのreplicaノードの追加が、ついに可能になりました。
- Droongaプロジェクトは今後も新バージョンを継続的にリリースしていきます。乞う御期待!
Droongaプロジェクトはユーザや開発者としての皆さんのご協力をお待ちしています!
詳しくはコミュニティのページをご覧下さい。
2014年のいい肉の日に開催された「検索エンジンGroongaを囲む夕べ5」にご参加いただき、ありがとうございます!
Droonga 1.0.9は、定例でない臨時のリリースです。
イベントでのDroongaについての発表において遭遇してしまったいくつかの不具合は、このリリースで修正されました!
Droonga 1.0.9の改善点
まず、クラスタ管理コマンドの droonga-engine-join
, droonga-engine-unjoin
, droonga-engine-absorb-data
がどのノード上でも動作するようになりました。
これまでのバージョンでは、これらのコマンドには分かりにくい前提条件がいくつかあり、使いにくい物となってしまっていました。
次に、クラスタから切り離されたノードがdroonga-http-server
から正しく無視されるようになりました。
1つ前のバージョンでは、droonga-http-server
はノードから既に切り離されたdroonga-engine
のノードへの接続を保持したままになってしまっていました。
本バージョンから、droonga-engine
のノード群は、それぞれのDroongaクラスタに固有のIDによって、お互いの関係を管理するようになりました。
droonga-http-server
はこの情報に基づいて、どのEngineノードがクラスタから切り離されたのかを正しく検出できるようになりました。
これらの修正によって、Droongaをより試していただきやすくなっています!
改善点の詳細な一覧
- Droonga-engine 1.0.9
droonga-engine-join
, droonga-engine-unjoin
, droonga-engine-absorb-data
の各コマンドがあらゆるホスト上で動作するようになりました。
その代わりとしてこれらのコマンドは、コマンドを実行している作業マシン自身のホスト名またはIPアドレスを--receiver-host
オプションで必ず指定しなくてはなりません。
- クラスタはそれぞれに固有のIDで管理されます。
前のバージョンでは、Droongaクラスタから切り離されたノードは、依然としてSerfクラスタの一員であるにも関わらず、Droongaクラスタを識別するための情報がなかったために、Protocol AdapterのノードはどのEngineノードが実際のDroongaクラスタの一員かを識別することができませんでした。
- Droonga-http-server 1.1.0 および Express-droonga 1.0.8
- クラスタ構成が変更された時に、そのノードに関連付けられたEngineノードが属しているクラスタにだけ正しく接続するようになりました。
1つ前のバージョンでは、クラスタから切り離されたEngineノードへの接続が意図せず維持されてしまっていました。
まとめ
- Droonga 1.0.9をリリースしました!
- クラスタ管理コマンドのいくつかの不便な制限が解消されました。
droonga-http-server
がクラスタ管理操作の後も期待通りの動作を示すようになりました。
- Droongaプロジェクトは今後も新バージョンを毎月リリースしていきます。乞う御期待!
Droongaプロジェクトはユーザや開発者としての皆さんのご協力をお待ちしています!
詳しくはコミュニティのページをご覧下さい。
Droongaとは?
DroongaはGroongaと互換性を持つ分散型の全文検索エンジンです。
Droongaクラスタは、レプリケーション機能を持つGroonga互換のHTTPサーバとして動作します。
どのように動作しどのように利用するのかについては、チュートリアルをご覧下さい。
また、設計について興味がある場合は概要もご覧下さい。
Droonga 1.0.8 での改善点
今回のDroonga 1.0.8のリリースは、多くの改善を含んでいます。
その中でも特に大きな話題は以下の3つです。
フロントエンドのHTTPサーバがクラスタの一部として管理されるようになりました
droonga-http-server
によるフロントエンドのHTTPサーバのノードが、Droongaクラスタの本当の一員として動作するようになりました。
これまでのバージョンでは、1つのdroonga-http-server
ノードは対応する1つのdroonga-engine
ノードに強く結びつけられていました。
そのため、あるdroonga-engine
ノードが停止してしまうと、それに紐付いていたdroonga-http-server
ノードまでが停止してしまっていました。
しかし、その制限はこのバージョンで解消されました。
もしdroonga-engine
ノードの1つが停止してしまっても、droonga-http-server
ノードは自動的に、他の生存しているdroonga-engine
と共に動作し続けます。
また、クライアントからのリクエストを1つのdroonga-http-server
ノードが受け付けた場合でも、それらは複数のdroonga-engine
ノードに振り分けられるようになりました。
言い換えると、簡易的なロードバランサーのように振る舞うようになりました。
検索処理(特にgroupBy
、Groongaのselect
におけるドリルダウン指定を伴う場合)のパフォーマンスの改善
シャーディングが行われていないレプリカでの検索処理における、groupBy
使用時のパフォーマンスが改善されました。
また、offset
の指定を伴う検索処理についても改善があります。
以上を踏まえた、現在のDroongaとGroongaの比較のベンチマーク結果は以下の通りです:
ベンチマークの条件は以下の通りです:
- Wikipedia日本語版に由来する1500000件のレコード。
- すべてのリクエストは、実際のページタイトルを使用した全文検索のクエリで、且つドリルダウンを伴う。
例:
/d/select?command_version=2&table=Pages&limit=10&match_columns=title,text&output_columns=snippet_html(title),snippet_html(text),categories,_key&query_flags=NONE&sortby=title&drilldown=categories&drilldown_limit=10&drilldown_output_columns=_id,_key,_nsubrecs&drilldown_sortby=_nsubrecs&query=Wikipedia%3AText+of+GNU+Free+Documentation+License
- キャッシュヒット率は50%を想定。
- 開発用の物理的なPC上で計測を実施。
- node0: Ubuntu 14.04LTS, Intel Core i5 M460 2.53GHz, 8GB RAM
- node1: Ubuntu 14.04LTS, Intel Core i5 650 3.20GHz, 6GB RAM
- node2: Ubuntu 14.04LTS, Intel Core i5 650 3.20GHz, 8GB RAM
- クライアント: Ubuntu 14.04LTS, Intel Core i5-4300U vPro 1.90GHz, 4GB RAM
詳細な結果はプレゼン資料のリポジトリに含まれています。
上記のグラフを見て分かる通り、現在、単一のDroongaノードのスループット性能はGroongaのそれに匹敵しています。
それだけでなく、Droongaノードをクラスタに追加することでスループットの上限が拡大されていることも分かります。
他方、Droongaにおいては全般的にレイテンシがGroongaよりも大きいです。
しかしながら、大量のアクセスがある場合には、GroongaとDroongaの性能は逆転します。
大量のリクエストに対しては、DroongaはGroongaよりも迅速にレスポンスを返せています。
Groongaとの互換性の向上
いくつかの細かい非互換が解消され、Groongaとの互換性が向上しました。
select
コマンド:
output_columns
オプションが空白文字区切りのリストを受け付けるようになりました。
(これはGroongaのcommand_version=1
の時の形式と互換性があります。)
TABLE_NO_KEY
のテーブルに対して、output_columns=*
の指定が正しく動作するようになりました。
column_list
コマンド:
TABLE_HASH_KEY
, TABLE_PAT_KEY
, およびTABLE_DAT_KEY
のテーブルにおいて、主キーにあたる_key
という名前の仮想カラムが結果に正しく表れるようになりました。
- インデックスカラムの
source
の値がGroongaの結果と同じになりました。
table_create
コマンド:
TABLE_HASH_KEY
, TABLE_PAT_KEY
, およびTABLE_DAT_KEY
のテーブルにおいて、key_type
パラメータが必須になりました。
パラメータを指定しなかった場合はエラーが返ります。
(現在の所Groongaはkey_type
パラメータ無しのtable_create
コマンドへのリクエストを受け付けますが、これは既知の不具合です。)
改善点の詳細な一覧
- Droonga-engine 1.0.8
- Groongaの
select
, column_list
, および table_create
の各コマンドの互換性が向上しました。
(詳細は上記)
- 静的な設定ファイルに書かれた
daemon
オプションは無視されるようになりました。
このバージョンから、droonga-engine
をデーモンとして起動するためには、droonga-engine
コマンドへの--daemon
オプションの指定が必須となりました。
droonga-engine-configure
コマンドが、常にすべてのオプションについての入力を求めるようになりました。
droonga-engine-absorb-data
とdroonga-engine-join
の各コマンドについて、初期状態でデータのコピー速度が1秒あたり最大100件ずつまでに制限されるようになりました。
droonga-engine-absorb-data
とdroonga-engine-join
の各コマンドについて、可能な場合は進行状況が表示されるようになりました。
- Droonga-http-server 1.0.9
- 接続要求を受け付けるIPアドレスを制限するための新しいオプション
--host
が利用可能になりました。
既定値は0.0.0.0
(「すべてのIPアドレスで接続を受け付ける」の意味)です。
- キャッシュの有効期限を指定するための新しいオプション
--cache-ttl-in-seconds
が利用可能になりました。
単位は秒数で、既定値は60
(1分)です。
--enable-trust-proxy
の設定が静的な設定ファイルで有効化されている時に明示的に機能を無効化するためのオプションとして--disable-trust-proxy
が利用可能になりました。
- ドキュメントルートを指定するための新しいオプション
--document-root
が利用可能になりました。
初期値は組み込みのGroonga管理ページのパスです。
- 静的な設定ファイルに書かれた
daemon
オプションは無視されるようになりました。
このバージョンから、droonga-engine
をデーモンとして起動するためには、droonga-http-server
コマンドへの--daemon
オプションの指定が必須となりました。
droonga-http-server-configure
コマンドが、常にすべてのオプションについての入力を求めるようになりました。
- ほとんどのコマンドに対するリクエストが無駄にキャッシュされなくなりました。
現在のところは、
search
およびGroongaのselect
コマンド、および管理ページのレスポンスのみがキャッシュされます。
- すべてのレスポンスキャッシュを消去するためのエンドポイントとして、
/cache
が利用可能になりました。
キャッシュされたコンテンツを消去するには、このパスに対してHTTPのDELETE
メソッドのリクエストを送信してください。
express-droonga
の改善が反映されました。詳細は以下の項目を参照してください。
- Express-droonga 1.0.7
- バックエンドとして複数のDroonga Engineノードに接続できるようになりました。
これにより、
express-droonga
は簡易的なロードバランサーとして振る舞います。
- 接続するDroonga Engineノードのリストを、クラスタ内で実際に利用可能なノードのリストに基づいて更新できるようになりました。
この機能は
application.droonga()
メソッドに渡すsyncHostNames
オプションにより有効化できます。
- Drnbench 1.0.4
drnbench-request-response
- 最もレスポンスが遅かったリクエストだけでなく、最もレスポンスが速かったリクエストも出力するようになりました。
これは、おかしなクエリなどによって発生する「異常に良い」結果の検出に役立つでしょう。
報告されるリクエストの件数は、
--n-fast-requests
オプションで制御できます。
- 仮想クライアントがマルチプロセスで動作するようになりました。
ベンチマークを動作させるクライアントに複数のプロセッサが搭載されている場合、drnbenchはそれらをより効果的に使えるようになりました。
- Drntest 1.1.7 (2014-11-18にリリース)
- Groongaの
column_list
コマンドのレスポンスに現れる、_key
のような仮想的なカラムを正しく受け付けるようになりました。
まとめ
- Droonga 1.0.8をリリースしました!
- フロントエンドのHTTPサーバのノードが、クラスタの構成ノードとして管理されるようになりました。
これにより、Droongaクラスタはより堅牢に動作するようになりました。
- 検索処理のパフォーマンスが改善されました。
Droongaは現在、Groongaと同等かそれ以上のスループット性能を発揮できます。
- Groongaとの互換性が向上しました。
- Droongaプロジェクトは今後も新バージョンを毎月リリースしていきます。乞う御期待!
Droongaプロジェクトはユーザや開発者としての皆さんのご協力をお待ちしています!
詳しくはコミュニティのページをご覧下さい。
Droongaとは?
DroongaはGroongaと互換性を持つ分散型の全文検索エンジンです。
Droongaクラスタは、レプリケーション機能を持つGroonga互換のHTTPサーバとして動作します。
どのように動作しどのように利用するのかについては、チュートリアルをご覧下さい。
また、設計について興味がある場合は概要もご覧下さい。
サービス起動スクリプトの致命的な問題を修正しました!
Droonga 1.0.7は緊急のリリースです。
Droonga 1.0.6で導入されたサービス起動スクリプトには致命的な問題があり、一度インストールしたはずのdroonga-engine
とdroonga-http-server
の両サービスが、コンピュータの再起動後には起動できない状態となっていました。
この問題はDroonga 1.0.7で修正されています。
サービス起動スクリプトの更新を含むため、更新時には、インストールスクリプトを使って両サービスを再インストールする必要があります:
# curl https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | \
bash
# curl https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | \
bash
その他の大きな話題は以下の通りです:
- Groongaとの互換性が少し向上しました。
droonga-engine
1.0.7では、Groongaのselect
コマンドにおいてquery_flags
オプションの指定に対応しました(ただしALLOW_UPDATE
以外)。
あなたのアプリケーションがquery_flags
を初期値から変更している場合も、Droongaはあなたのアプリケーションからの検索リクエストを処理できるようになりました。
droonga-http-server
のシステムログのログレベルを指定できるようになりました。
ログレベルを指定するためには、droonga-http-server-configure
コマンドをroot権限で再実行してサービスを再設定して下さい。
- DroongaとGroongaのベンチマーク測定のチュートリアルを公開しました。
このチュートリアルでは、GroongaとDroongaの性能を測定して比較する手順を紹介しています。
改善点の詳細な一覧
- Droonga-engine 1.0.7
- Groongaとの互換性の向上:
select
コマンドがquery_flags
オプションに対応しました。
ただし、対応する機能がDroonga側に未実装のため、ALLOW_UPDATE
は指定しても無視されます。
saerch
コマンドが何点か改良されました。
- クエリ構文形式での検索条件において、
allowPragma
とallowColumn
をfalse
に設定すると指定が反映されるようになりました。
これ以前のバージョンでは、これらのオプションは常にtrue
と扱われる不具合がありました。
- クエリ構文形式での検索条件において、
allowLeadingNot
オプションに対応しました。
初期値はfalse
です。
- コンピュータの再起動後もサービスとして正しく動作するようになりました。
droonga-engine-configure
がログレベルの指定を尋ねるようになりました。
- Droonga-http-server 1.0.8
- コンピュータの再起動後もサービスとして正しく動作するようになりました。
- システムのログのログレベルが変更可能になりました。
droonga-http-server.yaml
にsystem_log_level: debug
のような形で指定を追加すると、ログレベルが反映されます。
また、droonga-http-server-configure
もログレベルの指定を尋ねるようになりました。
- Express-droonga 1.0.6
- デバッグログをロガー経由で出力するようになりました。
- Drnbench 1.0.3
drnbench-request-response
--default-hosts
オプションでカンマ区切りで複数のホストを指定できるようになりました。
複数接続先への負荷分散を簡単にシミュレートすることができます。
- URLのパス部分のリストのプレーンテキストファイルを、パターンファイルとして指定できるようになりました。
drnbench-extract-searchterms
--escape
オプションを指定することで、出力する単語をあらかじめURLエンコードしておけるようになりました。
まとめ
- Droonga 1.0.7をリリースしました!
- このバージョンではサービス起動スクリプトの致命的な欠陥を修正しました。
- ベンチマーク測定のチュートリアルを公開しました。
- Droongaプロジェクトは今後も新バージョンを毎月リリースしていきます。乞う御期待!
Droongaプロジェクトはユーザや開発者としての皆さんのご協力をお待ちしています!
詳しくはコミュニティのページをご覧下さい。
長らくお待たせして申し訳ありません。
先月のリリースは残念ながら見送られましたが、その甲斐あって、大きな改善を含むDroonga 1.0.6をリリースしました!
Droongaとは?
DroongaはGroongaと互換性を持つ分散型の全文検索エンジンです。
Droongaクラスタは、レプリケーション機能を持つGroonga互換のHTTPサーバとして動作します。
Droongaのインストールが簡単になりました!
今回のDroonga 1.0.6のリリースにおける最大の改善点は、インストールが非常に簡単になったことです。
Droongaの主要なコンポーネントであるdroonga-engine
とdroonga-http-server
が、インストールスクリプト経由で導入できるようになりました。
導入にあたっては、root権限で以下のようにしてスクリプトを実行するだけでOKです:
# curl https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | \
bash
# curl https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | \
bash
これだけで、droonga-engine
とdroonga-http-server
が、service
コマンドで管理されるシステムのサービスとして登録されます。
サービスの起動と終了も、以下のように単純なコマンドで行えます:
# service droonga-engine start
# service droonga-http-server start
また、クラスタのノード構成を管理するためのユーティリティコマンド(droonga-engine-join
やdroonga-engine-unjoin
など)も使いやすくなりました。
詳細は、新しくなった「使ってみる」のチュートリアルおよびそれに続く一連のチュートリアルを参照して下さい。
他方で、残念なお知らせもあります。
Droongaのインストールスクリプトは現在の所、Debian、Ubuntu、CentOS 7でのみ動作します。
他の環境(例えばCentOS 6.5、OS X、BSDなど)は、現時点では未対応です。
もし、導入に必要なコマンド群(gem
、npm
、そしてgit
) のインストール方法や独自のサービスをシステムに登録する方法について、それらの環境でのノウハウをお持ちであれば、インストールスクリプトの改善に是非ご協力下さい!
開発者向けの情報
インストールスクリプトは最新のリリース版に対してだけでなく、masterブランチの最新リビジョンに対しても利用できます。
以下のように、追加の環境変数 VERSION
を指定するだけでOKです:
# curl https://raw.githubusercontent.com/droonga/droonga-engine/master/install.sh | \
VERSION=master bash
# curl https://raw.githubusercontent.com/droonga/droonga-http-server/master/install.sh | \
VERSION=master bash
これにより、インストールスクリプトはmasterからサービスをインストールするようになります。
これは、次のリリースを待たずに最新の修正内容を試してみるのに便利でしょう。
また、手持ちのPC上に複数台の仮想マシンを用意するための手順の解説も新たに用意しました。
これにより、気軽にDroongaをお試しいただけます。
改善点の詳細な一覧
- droonga-engine 1.0.6
- インストールスクリプトが利用可能になりました。
これにより、必要なソフトウェアの導入と、
droonga-engine
をシステムのサービスとして設定する作業が自動化されました。
現在の所、このスクリプトはDebian、Ubuntu、CentOS 7でのみ利用できます。
- サービスとしての利用において、専用のユーザである
droonga-engine
の権限で動作することが前提となりました。
今後は、設定ディレクトリはこのユーザのホーム以下に置かれます。
host
などの既定の設定を定義する静的な設定ファイルが導入されました。
これはcatalog.json
と同じ位置に置かれる必要があります。
これにより、droonga-engine
コマンドを大量のオプションを伴って起動しなくても良くなりました。
droonga-engine-join
が、catalog.json
を複製元となるノードから自動的に取得するようになりました。
これにより、droonga-engine-join
コマンドの実行前に他のノードからcatalog.json
を手動でコピーしてこなくても良くなりました。
- 既存のクラスタから
catalog.json
を取得するために、既定のプラグインの1つとしてcatalog
が追加されました。
このプラグインはcatalog.json
のプラグインリストに必ず含まれていなくてはなりません。
- 新しいコマンドラインユーティリティ
droonga-engine-configure
が追加されました。
これは、静的な設定ファイルとcatalog.json
をサービス向けに生成する物です。
また、ノードを空にするために既存のデータを消去するのにも使えます。
- ユーティリティコマンドのいくつかの必須オプションが省略可能になりました。
それらの情報は自動的に認識されます。
- サーバがより安全に再起動するようになりました。
- droonga-http-server 1.0.7
- インストールスクリプトが利用可能になりました。
これにより、必要なソフトウェアの導入と、
droonga-http-server
をシステムのサービスとして設定する作業が自動化されました。
現在の所、このスクリプトはDebian、Ubuntu、CentOS 7でのみ利用できます。
- サービスとしての利用において、専用のユーザである
droonga-http-server
の権限で動作することが前提となりました。
今後は、設定ディレクトリはこのユーザのホーム以下に置かれます。
port
などの既定の設定を定義する静的な設定ファイルが導入されました。
これは環境変数DROONGA_BASE_DIR
で示される設定ディレクトリに置かれる必要があります。
これにより、droonga-http-server
コマンドを大量のオプションを伴って起動しなくても良くなりました。
- 新しいコマンドラインユーティリティ
droonga-http-server-configure
が追加されました。
これは、静的な設定ファイルをサービス向けに生成する物です。
- レスポンスキャッシュが正常に動作するようになりました。
- express-droonga 1.0.5
- レスポンスキャッシュが正常に動作するようになりました。
- drntest 1.1.6
- テスト結果の安定化のために、dumpの結果をソートするようにしました。
- droonga-engineが利用可能になるまで待つために、
--ready-notify-fd
オプションを使うようにしました。
- grn2drn 1.0.4
- 出力先のディレクトリを自動的に作成するようにしました。
まとめ
- Droonga 1.0.6をリリースしました!
- Droongaのインストール手順が簡単になり、より使い始めやすくなりました。
- Droongaプロジェクトは今後も新バージョンを毎月リリースしていきます。乞う御期待!
Droongaプロジェクトはユーザや開発者としての皆さんのご協力をお待ちしています!
詳しくはコミュニティのページをご覧下さい。
最新情報について、今後は日本語でも情報を提供していきます。
乞う御期待!