Yasuhiro Horimoto 2019-04-26 15:40:26 +0900 (Fri, 26 Apr 2019) Revision: cde778a7a2bdb38b20aa80fa86f2447ef1780e81 https://github.com/groonga/groonga.org/commit/cde778a7a2bdb38b20aa80fa86f2447ef1780e81 Message: blog en: add release announce for 9.0.2 Added files: en/_posts/2019-04-29-groonga-9.0.2.md Added: en/_posts/2019-04-29-groonga-9.0.2.md (+340 -0) 100644 =================================================================== --- /dev/null +++ en/_posts/2019-04-29-groonga-9.0.2.md 2019-04-26 15:40:26 +0900 (bb912cc87) @@ -0,0 +1,340 @@ +--- +layout: post.en +title: Groonga 9.0.2 has been released +description: Groonga 9.0.2 has been released! +published:false +--- + +## Groonga 9.0.2 has been released + +[Groonga 9.0.2](/docs/news.html#release-9-0-2) has been released! + +We provide a package for Windows made from VC++ from this release. + +We also provide a package for Windows made form MinGW as in the past. + +However, we will provide it made from VC++ instead of making from MinGW sooner or later. + +How to install: [Install](/docs/install.html) + +### Changes + +Here are important changes in this release: + +* [column_create](/docs/reference/commands/column_create.html) Added a new flag `INDEX_LARGE` for index column. + +* [object_inspect](/docs/reference/commands/object_inspect.html) Added a new statistics `next_physical_segment_id` and `max_n_physical_segments` for physical segment information. + +* [logical_select](/docs/reference/commands/logical_select.html) Added support for window function over shard. + +* [logical_range_filter](/docs/reference/commands/logical_range_filter.html) Added support for window function over shard. + +* [logical_count](/docs/reference/commands/logical_count.html) Added support for window function over shard. + +* [io_flush](/docs/reference/commands/io_flush) Added a new option `--recursive dependent` + +* Fixed "unknown type name 'bool'" compilation error in some environments. + +* Fixed a bug that incorrect output number over Int32. + +### [column_create](/docs/reference/commands/column_create.html) Added a new flag `INDEX_LARGE` for index column. + +We can make an index column has space that two times of default by this flag. +However, note that it also uses two times of memory usage. + +This flag useful when index target data are large. +Large data must have many records (normally at least 10 millions records) and at least one of the following features. + + * Index targets are multiple columns + * Index table has tokenizer + +Here is an example to create a large index column: + +``` + 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](/docs/reference/commands/object_inspect.html) Added a new statistics `next_physical_segment_id` and `max_n_physical_segments` for physical segment information. + +`next_physical_segment_id` is the ID of the segment to the inspected index column use next. +That is this number shows currently the usage of the segment. + +`max_n_physical_segments` is the max number of segments. + +The max number of these statistics depend on index size: + + |Index column size|The max number of segments| + |:---------------:|:------------------------:| + |`INDEX_SMALL`|`2**9` (512)| + |`INDEX_MEDIUM`|`2**16` (65536)| + |`INDEX_LARGE`|`2**17 * 2` (262144)| + |Default|`2**17` (131072)| + +### [logical_select](/docs/reference/commands/logical_select.html) Added support for window function over shard. + +We can apply the window function to over multiple tables. +However, we need to align the same order for shard key and leading group key or sort key. + +For example, we can apply the window function to over multiple tables as below case. +Because the below example aligns the same order for shard key and leading group key. + +The leading group key is price and shard key is timestamp in the below example: + +``` + 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](/docs/reference/commands/logical_range_filter.html) Added support for window function over shard. + +We can apply the window function to over multiple tables. +However, we need to align the same order for shard key and leading group key or sort key as with [logical_select](/docs/reference/commands/logical_select.html). + +Here is an example to apply the window function to over multiple tables by [logical_range_filter](/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](/docs/reference/commands/logical_count.html) Added support for window function over shard. + +We can apply the window function to over multiple tables. +However, we need to align the same order for shard key and leading group key or sort key as with [logical_select](/docs/reference/commands/logical_select.html). + +Here is an example to apply the window function to over multiple tables by [logical_count](/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](/docs/reference/commands/io_flush) Added a new option `--recursive dependent` + +We can flush not only target object and child objects, but also related objects by this option. + +The related objects are: + + * A referenced table + * A related index column (There is source column in target TABLE_NAME) + * A table of related index column (There is source column in target TABLE_NAME) + +Here is an example to use this option: + +``` + io_flush --recursive "dependent" --target_name "Users" +``` + +### Conclusion + +See [Release 9.0.2 2019-04-29](/docs/news.html#release-9-0-2) about detailed changes since 9.0.1 + +Let's search by Groonga! -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20190426/2cb7cf92/attachment-0001.html>