Yasuhiro Horimoto 2019-04-26 16:08:42 +0900 (Fri, 26 Apr 2019) Revision: 5d407ac258fec6166932d45fcc799a65cd2aef89 https://github.com/groonga/groonga.org/commit/5d407ac258fec6166932d45fcc799a65cd2aef89 Message: blog ja: add release announce for 9.0.2 Added files: ja/_posts/2019-04-29-groonga-9.0.2.md Added: ja/_posts/2019-04-29-groonga-9.0.2.md (+336 -0) 100644 =================================================================== --- /dev/null +++ ja/_posts/2019-04-29-groonga-9.0.2.md 2019-04-26 16:08:42 +0900 (945cd0968) @@ -0,0 +1,336 @@ +--- +layout: post.ja +title: Groonga 9.0.2リリース +description: Groonga 9.0.2をリリースしました! +published: false +--- + +## Groonga 9.0.2リリース + +[Groonga 9.0.2](/ja/docs/news.html#release-9-0-2)をリリースしました! + +今回のリリースから、VC++で作成したWindows版パッケージを提供します。 + +今までどおり、MinGWで作成したWindows版パッケージも提供しますが、近いうちにMinGWで作ったパッケージの代わりにVC++で作ったパッケージを提供する予定です。 + +それぞれの環境毎のインストール方法: [インストール](/ja/docs/install.html) + +### 変更内容 + +主な変更点は以下の通りです。 + +* [column_create](/ja/docs/reference/commands/column_create.html) 新しいフラグ `INDEX_LARGE` を追加しました。 + +* [object_inspect](/ja/docs/reference/commands/object_inspect.html) セグメントの新しい統計値 `next_physical_segment_id` と `max_n_physical_segments` を追加しました。 + +* [logical_select](/ja/docs/reference/commands/logical_select.html) シャードをまたがったウインドウ関数をサポートしました。 + +* [logical_range_filter](/ja/docs/reference/commands/logical_range_filter.html) シャードをまたがったウインドウ関数をサポートしました。 + +* [logical_count](/ja/docs/reference/commands/logical_count.html) シャードをまたがったウインドウ関数をサポートしました。 + +* [io_flush](/ja/docs/reference/commands/io_flush) 新しいオプション `--recursive dependent` を追加しました。 + +* 一部の環境でコンパイルエラー "unknown type name 'bool'" が発生する問題を修正しました。 + +* Int32を超える数を正しく出力できない問題を修正しました。 + +### [column_create](/ja/docs/reference/commands/column_create.html) 新しいフラグ `INDEX_LARGE` を追加しました。 + +このフラグによって、デフォルトの2倍の領域を持つインデックスカラムを作成できますが、メモリ使用量も2倍となることに注意して下さい。 + +このフラグは、インデックス対象のデータが大きい時に有用です。 +大きいデータとは、大量のレコード(通常は少なくとも1000万レコード以上)があり、少なくとも次のうちの1つ以上の特徴があります。 + +* インデックス対象が複数のカラム +* インデックステーブルにトークナイザーが付いている + +以下は大きなインデックスカラムを作る例です。 + +``` + column_create \ + --table Terms \ + --name people_roles_large_index \ + --flags COLUMN_INDEX|WITH_POSITION|WITH_SECTION|INDEX_LARGE \ + --type People \ + --source roles + [[0, 1337566253.89858, 0.000355720520019531], true] +``` + +### [object_inspect](/ja/docs/reference/commands/object_inspect.html) セグメントの新しい統計値 `next_physical_segment_id` と `max_n_physical_segments` を追加しました。 + +`next_physical_segment_id` は調査対象のインデックスガラムが次に使うセグメントのIDです。 +つまり、この数字は、現在のセグメントの使用量を表しています。 + +`max_n_physical_segments` は調査対象のインデックスカラムのセグメントの最大値です。 + +これらの統計値の最大値は、インデックスカラムのサイズに依存します。: + + |インデックスカラムのサイズ|最大セグメント数| + |:---------------:|:------------------------:| + |`INDEX_SMALL`|`2**9` (512)| + |`INDEX_MEDIUM`|`2**16` (65536)| + |`INDEX_LARGE`|`2**17 * 2` (262144)| + |デフォルト|`2**17` (131072)| + +### [logical_select](/ja/docs/reference/commands/logical_select.html) シャードをまたがったウインドウ関数をサポートしました。 + +ウインドウ関数を複数のテーブルをまたがって適用できます。 +ただし、先頭のグループキーまたは、ソートキーがシャードキーと同じ順番で並んでいる必要があります。 + +例えば、以下のケースは、先頭のグループキーがシャードキーと同じ順番で並んでいるため、複数のテーブルをまたがってウインドウ関数を適用できます。 + +以下の例では、先頭のグループキーは `price` でシャードキーは `timestamp` です。: + +``` + plugin_register sharding + + table_create Logs_20170415 TABLE_NO_KEY + column_create Logs_20170415 timestamp COLUMN_SCALAR Time + column_create Logs_20170415 price COLUMN_SCALAR UInt32 + column_create Logs_20170415 n_likes COLUMN_SCALAR UInt32 + + table_create Logs_20170416 TABLE_NO_KEY + column_create Logs_20170416 timestamp COLUMN_SCALAR Time + column_create Logs_20170416 price COLUMN_SCALAR UInt32 + column_create Logs_20170416 n_likes COLUMN_SCALAR UInt32 + + load --table Logs_20170415 + [ + {"timestamp": "2017/04/15 00:00:00", "n_likes": 2, "price": 100}, + {"timestamp": "2017/04/15 01:00:00", "n_likes": 1, "price": 100}, + {"timestamp": "2017/04/15 01:00:00", "n_likes": 2, "price": 200} + ] + + load --table Logs_20170416 + [ + {"timestamp": "2017/04/16 10:00:00", "n_likes": 1, "price": 200}, + {"timestamp": "2017/04/16 11:00:00", "n_likes": 2, "price": 300}, + {"timestamp": "2017/04/16 11:00:00", "n_likes": 1, "price": 300} + ] + + logical_select Logs \ + --shard_key timestamp \ + --columns[count].stage initial \ + --columns[count].type UInt32 \ + --columns[count].flags COLUMN_SCALAR \ + --columns[count].value 'window_count()' \ + --columns[count].window.group_keys price \ + --output_columns price,count + [ + [ + 0, + 0.0, + 0.0 + ], + [ + [ + [ + 6 + ], + [ + [ + "price", + "UInt32" + ], + [ + "count", + "UInt32" + ] + ], + [ + 100, + 2 + ], + [ + 100, + 2 + ], + [ + 200, + 2 + ], + [ + 200, + 2 + ], + [ + 300, + 2 + ], + [ + 300, + 2 + ] + ] + ] + ] +``` + +### [logical_range_filter](/ja/docs/reference/commands/logical_range_filter.html) シャードをまたがったウインドウ関数をサポートしました。 + +ウインドウ関数を複数のテーブルをまたがって適用できます。 +ただし、[logical_select](/ja/docs/reference/commands/logical_select.html)と同様、先頭のグループキーまたは、ソートキーがシャードキーと同じ順番で並んでいる必要があります。 + +以下は、[logical_range_filter](/ja/docs/reference/commands/logical_range_filter.html)で、複数のテーブルをまたいでウインドウ関数を適用する例です。: + +``` + plugin_register sharding + + table_create Logs_20170415 TABLE_NO_KEY + column_create Logs_20170415 timestamp COLUMN_SCALAR Time + column_create Logs_20170415 price COLUMN_SCALAR UInt32 + column_create Logs_20170415 n_likes COLUMN_SCALAR UInt32 + + table_create Logs_20170416 TABLE_NO_KEY + column_create Logs_20170416 timestamp COLUMN_SCALAR Time + column_create Logs_20170416 price COLUMN_SCALAR UInt32 + column_create Logs_20170416 n_likes COLUMN_SCALAR UInt32 + + load --table Logs_20170415 + [ + {"timestamp": "2017/04/15 00:00:00", "n_likes": 2, "price": 100}, + {"timestamp": "2017/04/15 01:00:00", "n_likes": 1, "price": 100}, + {"timestamp": "2017/04/15 01:00:00", "n_likes": 2, "price": 200} + ] + + load --table Logs_20170416 + [ + {"timestamp": "2017/04/16 10:00:00", "n_likes": 1, "price": 200}, + {"timestamp": "2017/04/16 11:00:00", "n_likes": 2, "price": 300}, + {"timestamp": "2017/04/16 11:00:00", "n_likes": 1, "price": 300} + ] + + logical_range_filter Logs \ + --shard_key timestamp \ + --columns[count].stage initial \ + --columns[count].type UInt32 \ + --columns[count].flags COLUMN_SCALAR \ + --columns[count].value 'window_count()' \ + --columns[count].window.group_keys price \ + --output_columns price,count + [ + [ + 0, + 0.0, + 0.0 + ], + [ + [ + [ + 6 + ], + [ + [ + "price", + "UInt32" + ], + [ + "count", + "UInt32" + ] + ], + [ + 100, + 2 + ], + [ + 100, + 2 + ], + [ + 200, + 2 + ], + [ + 200, + 2 + ], + [ + 300, + 2 + ], + [ + 300, + 2 + ] + ] + ] + ] +``` + +### [logical_count](/ja/docs/reference/commands/logical_count.html) シャードをまたがったウインドウ関数をサポートしました。 + +ウインドウ関数を複数のテーブルをまたがって適用できます。 +ただし、[logical_select](/ja/docs/reference/commands/logical_select.html)と同様、先頭のグループキーまたは、ソートキーがシャードキーと同じ順番で並んでいる必要があります。 + +以下は、[logical_count](/ja/docs/reference/commands/logical_count.html)で、複数のテーブルをまたいでウインドウ関数を適用する例です。: + +``` + plugin_register sharding + + table_create Logs_20170415 TABLE_NO_KEY + column_create Logs_20170415 timestamp COLUMN_SCALAR Time + column_create Logs_20170415 price COLUMN_SCALAR UInt32 + column_create Logs_20170415 n_likes COLUMN_SCALAR UInt32 + + table_create Logs_20170416 TABLE_NO_KEY + column_create Logs_20170416 timestamp COLUMN_SCALAR Time + column_create Logs_20170416 price COLUMN_SCALAR UInt32 + column_create Logs_20170416 n_likes COLUMN_SCALAR UInt32 + + load --table Logs_20170415 + [ + {"timestamp": "2017/04/15 00:00:00", "n_likes": 2, "price": 100}, + {"timestamp": "2017/04/15 01:00:00", "n_likes": 1, "price": 100}, + {"timestamp": "2017/04/15 01:00:00", "n_likes": 2, "price": 200} + ] + + load --table Logs_20170416 + [ + {"timestamp": "2017/04/16 10:00:00", "n_likes": 1, "price": 200}, + {"timestamp": "2017/04/16 11:00:00", "n_likes": 2, "price": 300}, + {"timestamp": "2017/04/16 11:00:00", "n_likes": 1, "price": 300} + ] + + logical_count Logs \ + --shard_key timestamp \ + --columns[count].stage initial \ + --columns[count].type UInt32 \ + --columns[count].flags COLUMN_SCALAR \ + --columns[count].value 'window_count()' \ + --columns[count].window.group_keys price \ + --filter 'count >= 1' + [ + [ + 0, + 0.0, + 0.0 + ], + [ + 4 + ] + ] +``` + +### [io_flush](/ja/docs/reference/commands/io_flush) 新しいオプション `--recursive dependent` を追加しました。 + +このオプションによって、書き出し対象とその子オブジェクトだけでなく、関連したオブジェクトも書き出せます。 + +関連するオブジェクトは次の通りです。: + + * 参照されているテーブル + * 関連するインデックスカラム(対象の `TABLE_NAME` にソースカラムがある) + * 関連するインデックスカラムのテーブル(対象の `TABLE_NAME` にソースカラムがある) + +以下は、このオプションを使った例です。: + +``` + io_flush --recursive "dependent" --target_name "Users" +``` + +### さいごに + +9.0.1からの詳細な変更点は[9.0.2リリース 2019-04-29](/ja/docs/news.html#release-9-0-2)を確認してください。 + +それでは、Groongaでガンガン検索してください! -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20190426/70cb567e/attachment-0001.html>