Groonga 10.0.4リリース
Groonga 10.0.4をリリースしました!
それぞれの環境毎のインストール方法: インストール
変更内容
主な変更点は以下の通りです。
-
ハッシュテーブルで4億件のレコードの登録をサポートしました。
-
select
_score
が再帰的に値を取得しない時のパフォーマンスを改善しました。- Groongaは、検索結果が検索対象の時に、
_score
の値を再帰的に取得します。 - 例えば、
slices
は検索結果が検索対象です。したがって、slices
を使っているクエリーでは、今回前は効果がありません。
- Groongaは、検索結果が検索対象の時に、
-
log ドリルダウンのキーをクエリーログに出力するようにしました。
-
reference_acquire, reference_release 参照カウントモード用に新しいコマンドを追加しました。
- 短い間隔で複数の
load
を呼び出す必要がある場合、参照カウントモードによる自動クローズによってパフォーマンスが低下します。 -
複数の
load
の前にreference_acquire
を呼び、複数のload
の後にreference_release
を呼ぶことで、このパフォーマンスの低下を避けることができます。reference_acquire
とreference_release
の間は自動クローズは無効になります。reference_acquire
が、対象のオブジェクトの参照を取得するためです。
-
パフォーマンスに影響のある操作が完了したら、
reference_release
を呼ぶ必要があります。reference_release
を呼ばない場合、参照カウントモードは機能しません。
- 短い間隔で複数の
-
select 一度の
drilldown
で複数のグループ集計をサポートしました。 -
groonga実行ファイル スタンドアローンモードで、
--pid-path
をサポートしました。- 以前のバージョンのスタンドアローンモードでは、
--pid-path
は無視されていました。
- 以前のバージョンのスタンドアローンモードでは、
-
io_flush 参照カウントモードに対応しました。
-
logical_range_filter, logical_count 参照カウントモードに対応しました。
-
Groonga HTTPサーバー 最後のチャンクの後にヘッダーをつけないようにしました。
- 最後のチャンクの後のヘッダーを無視するHTTPクライアントが存在する可能性があるためです。
-
[vector_slice]
Float32
型のベクターをサポートしました。 -
トークンカラムを使った、並列静的インデックス構築をサポートしました。
- 予めトークナイズされたデータから複数スレッドで静的インデックスの構築ができるようになりました。
-
以下の環境変数で、並列静的インデックス構築を調整できます。
-
GRN_TOKEN_COLUMN_PARALLEL_CHUNK_SIZE
: スレッド毎にどのくらいのレコードを処理するか。- デフォルト値は
1024
レコードです。
- デフォルト値は
-
GRN_TOKEN_COLUMN_PARALLEL_TABLE_SIZE_THRESHOLD
: どのくらいのソースレコードで並列化するか。- デフォルト値は
102400
レコードです。
- デフォルト値は
-
-
select 参照カウントモード時の
load_table
のパフォーマンスを改善しました。 -
シャードをまたいでいて、かつ
--filter
を指定していない動的カラムを使って検索すると、Gronngaのデータベースが破損する問題を修正しました。 -
schema
コマンドの結果にFloat32
型が表示されなかった問題を修正しました。 -
参照
uvector
が要素を持っていないとき、_nsubrecs
を余分にカウントする問題を修正しました。
select 一度の drilldown
で複数のグループ集計をサポートしました。
-
以下のように、一回の drilldown で異なるグループ毎に和と算術平均を計算できるようになりました。
table_create Items TABLE_HASH_KEY ShortText column_create Items price COLUMN_SCALAR UInt32 column_create Items quantity COLUMN_SCALAR UInt32 column_create Items tag COLUMN_SCALAR ShortText load --table Items [ {"_key": "Book", "price": 1000, "quantity": 100, "tag": "A"}, {"_key": "Note", "price": 1000, "quantity": 10, "tag": "B"}, {"_key": "Box", "price": 500, "quantity": 15, "tag": "B"}, {"_key": "Pen", "price": 500, "quantity": 12, "tag": "A"}, {"_key": "Food", "price": 500, "quantity": 111, "tag": "C"}, {"_key": "Drink", "price": 300, "quantity": 22, "tag": "B"} ] select Items \ --drilldowns[tag].keys tag \ --drilldowns[tag].output_columns _key,_nsubrecs,price_sum,quantity_sum \ --drilldowns[tag].columns[price_sum].stage group \ --drilldowns[tag].columns[price_sum].type UInt32 \ --drilldowns[tag].columns[price_sum].flags COLUMN_SCALAR \ --drilldowns[tag].columns[price_sum].value 'aggregator_sum(price)' \ --drilldowns[tag].columns[quantity_sum].stage group \ --drilldowns[tag].columns[quantity_sum].type UInt32 \ --drilldowns[tag].columns[quantity_sum].flags COLUMN_SCALAR \ --drilldowns[tag].columns[quantity_sum].value 'aggregator_sum(quantity)' [ [ 0, 0.0, 0.0 ], [ [ [ 6 ], [ [ "_id", "UInt32" ], [ "_key", "ShortText" ], [ "price", "UInt32" ], [ "quantity", "UInt32" ], [ "tag", "ShortText" ] ], [ 1, "Book", 1000, 100, "A" ], [ 2, "Note", 1000, 10, "B" ], [ 3, "Box", 500, 15, "B" ], [ 4, "Pen", 500, 12, "A" ], [ 5, "Food", 500, 111, "C" ], [ 6, "Drink", 300, 22, "B" ] ], { "tag": [ [ 3 ], [ [ "_key", "ShortText" ], [ "_nsubrecs", "Int32" ], [ "price_sum", "UInt32" ], [ "quantity_sum", "UInt32" ] ], [ "A", 2, 1500, 112 ], [ "B", 3, 1800, 47 ], [ "C", 1, 500, 111 ] ] } ] ]
さいごに
それでは、Groongaでガンガン検索してください!