Groonga 12.0.2リリース
Groonga 12.0.2をリリースしました!
それぞれの環境毎のインストール方法: インストール
変更内容
主な変更点は以下の通りです。
改良
-
logical_range_filter シャードを処理した直後に参照を減らすようにしました。
今までGroongaは、
logical_range_filter終了時にすべてのシャードの参照を減らしていました。この機能によって、Groongaは、シャードを処理した後すぐに参照を減らします。この機能によって、logical_range_filter実行中のメモリー使用量を削減できることがあります。この機能は参照カウントモードのときのみ有効です。
GRN_ENABLE_REFERENCE_COUNT=yesと設定することで、参照カウントモードを有効にできます。通常、Groongaは一度でも開いたオブジェクト(テーブル、カラム、インデックスなど)をメモリ上に保持し続けますが、たくさんのオブジェクトを開いた場合、Groongaはたくさんのメモリーを使用します。参照カウントモードでは、どこからも参照されてないオブジェクトをメモリーから開放します。これにより、Groongaのメモリー使用量が減ることがあります。
-
クラッシュリカバリー機能の安定性が向上しました。
この機能は実験的で、デフォルトで無効です。したがって、以下の改良は。一般的なユーザーには影響ありません。
- Groongaがクラッシュしたときにインデックスが破損する問題を修正しました。
- ロックが残留する問題を修正しました。
- クラッシュリカバリー中にGroongaがクラッシュする問題を修正しました。
-
無名マッピングが利用可能な時のmmapのパフォーマンスを向上しました。
この改善によって、Groongaのパフォーマンスが少し向上します。
-
インデックス構築 以下のタイプのカラムで静的インデックス構築をサポートしました。サポートしました。
- 非参照重み付きベクターカラム
- 参照重み付きベクターカラム
- 参照スカラーカラム
これらのカラムは、いままで、静的インデックス構築をサポートしていませんでした。そのため、これらのカラムにデータをロードしたあとに、インデックスを構築しても、インデックスの構築時間が長くなっていました。この改良によって、このケースでインデックス構築時間が短くなります。
-
column_create 新しいフラグ
MISSING_*とINVALID_*を追加しました。column_createに以下の新しいフラグを追加しました。MISSING_ADDMISSING_IGNOREMISSING_NILINVALID_ERRORINVALID_WARNINVALID_IGNORE
通常、データカラムが参照データカラムで存在しないキーを指定された場合、自動的に存在しないキーを作成し、新しいレコードを作ります。 このGroongaが参照先のカラムにキーを自動的に追加する挙動は、タグ検索のような検索で便利です。Groongaがロード時に自動的にデータを追加してくれるためです。
しかしながら、この挙動は、キー以外の値が必要な場合に不便です。キーしか存在しないレコードがあるためです。 このリリースで追加したフラグを使ってこの挙動を変更できます。
-
MISSING_ADD: デフォルト値です。現在と同じ挙動になります。データカラムが参照データカラムで、存在しないキーを指定された場合、自動的にキーを作成し、新しいレコードを追加します。
-
MISSING_IGNORE:データカラムが参照データカラムで、存在しないキーを指定された場合、存在しないキーを無視します。参照データカラムがスカラーカラムの場合、値は
GRN_ID_NILになります。参照データカラムがベクターカラムの場合、以下のようにその要素のみを無視します。["existent1", "nonexistent", "existent2"] -> ["existent1" "existent2"] -
MISSING_NIL:データカラムが参照データカラムで、存在しないキーを指定された場合、スカラーカラムとベクターカラムは存在しないキーを
GRN_ID_NILとして扱います。["existent1", "nonexistent", "existent2"] -> ["existent1", "" (GRN_ID_NIL), "existent2"] -
INVALID_ERROR: デフォルト値です。 ベクターカラムのエラー応答を除いて、現在と同じ挙動になります。無効な値を設定した場合(e.g.:
XXXforUInt8scalar column)、設定操作をエラーとして扱います。データカラムがスカラーカラムの場合、loadは応答とログにエラーを報告します。データカラムがベクターカラムの場合、loadはログにエラーを報告しますが、応答にエラーを報告しません。これは非互換の変更です。 -
INVALID_WARN:無効な値を設定した場合(e.g.:
XXXforUInt8scalar column)、警告メッセージをログに記録し、設定操作を無視します。対象のデータカラムが参照ベクターカラムの場合、MISSING_IGNOREとMISSING_NILを使って挙動を決定します。 -
INVALID_IGNORE:無効な値を設定した場合(e.g.:
XXXforUInt8scalar column)、設定操作を無視します。対象のデータカラムが参照ベクターカラムの場合、MISSING_IGNOREとMISSING_NILを使って挙動を決定します。
-
dump column_list
MISSING_*とINVALID_*フラグをサポートしました。これらのコマンドは、後方互換性を維持するため、
MISSING_ADDとINVALID_ERRORフラグを表示しません。これらのフラグはデフォルトの挙動を表すためです。 -
schema MISSING_* と INVALID_* フラグをサポートしました。
後方互換性を維持するため、
MISSING_ANDとINVALID_ERRORフラグをflagに表示しませんがそれぞれのカラムに、新しくmissingとinvalidキーが追加されます。 -
Amazon Linux 2 向けのパッケージを提供するようにしました。
-
[Windows] Visual Studio 2017 でのビルドをやめました。
GitHub Actionsで windows-2016 のイメージが使えなくなったためです。
既知の問題
-
現在Groongaには、ベクターカラムに対してデータを大量に追加、削除、更新した際にデータが破損することがある問題があります。
-
*<と*>は、filter条件の右辺にquery()を使う時のみ有効です。もし、以下のように指定した場合、*<と*>は&&として機能します。'content @ "Groonga" *< content @ "Mroonga"' -
GRN_II_CURSOR_SET_MIN_ENABLEが原因でマッチするはずのレコードを返さないことがあります。
さいごに
詳細については、以下のお知らせも参照してください。
それでは、Groongaでガンガン検索してください!