Groonga 4.1.1 has been released
Groonga 4.1.1 has been released!
How to install: Install
Changes
In this release, there are following topics:
- Improvements
- Supported drilldown with sum up feature
- Supported groonga-httpd with stream dump processing
- Experimental improvements
- Supported more compact default database size on Windows
- Supported Groonga with jemalloc to improve performance in multi-threaded usage
Improvement - Supported drilldown with sum up feature
In this release, drilldown is extended. This section describes about only drilldown with named label usage. It supports drilldown with SUM, MIN, MAX or AVG by each group. See calc_types about detail of each operator.
Try to pass following parameter to select command:
--drilldown[${LABEL}].calc_types=(SUM,MIN,MAX or AVG) \
--drilldown[${LABEL}].calc_target=(COLUMN)
Here is the simple example which use MAX.
table_create Tags TABLE_PAT_KEY ShortText
table_create Memos TABLE_HASH_KEY ShortText
column_create Memos tag COLUMN_SCALAR Tags
column_create Memos priority COLUMN_SCALAR Int64
load --table Memos
[
{"_key": "Groonga1", "tag": "Groonga", "priority": 10},
{"_key": "Groonga2", "tag": "Groonga", "priority": 20},
{"_key": "Groonga3", "tag": "Groonga", "priority": 40},
{"_key": "Mroonga1", "tag": "Mroonga", "priority": 50},
{"_key": "Mroonga2", "tag": "Mroonga", "priority": 25},
{"_key": "Mroonga3", "tag": "Mroonga", "priority": 10},
{"_key": "Rroonga1", "tag": "Rroonga", "priority": 25},
{"_key": "Rroonga2", "tag": "Rroonga", "priority": -25},
{"_key": "Rroonga3", "tag": "Rroonga", "priority": 0}
]
select Memos \
--limit 0 \
--drilldown[tag].keys tag \
--drilldown[tag].calc_types MAX \
--drilldown[tag].calc_target priority \
--drilldown[tag].output_columns _key,_max
Here is the drilldown results.
{
"tag": [
[
3
],
[
[
"_key",
"ShortText"
],
[
"_max",
"Int64"
]
],
[
"Groonga",
40
],
[
"Mroonga",
50
],
[
"Rroonga",
25
]
]
}
The data is grouped by tag, there are three groups - "Groonga", "Mroonga" and "Rroonga". Each result contains the max value in group. Note that calculated value is accessed by pseudo columns such as _max
and _min
in output_columns.
If you want to get not only max value, but also min value, specify multiple types for calc_types. Here is the example which gets max value and min value:
--drilldown[tag].calc_types MAX,MIN
Don't forget to specify pseudo column name "_min".
--drilldown[tag].output_columns _key,_max,_min
Then, you can get max value and min value in each group.
See document about calc_types
details.
Supported groonga-httpd with stream dump processing
In this release, groonga-httpd supported dump command with stream processing. By this change, it will not happen to exhaust memory by executing dump command.
Experimental improvement - Supported more compact default database size on Windows
In this release, more compact default database size on Windows is supported.
In the previous versions, Groonga uses more larger default database size (128MiB) on Windows. The size of database increases every you create new column.
It is not efficient, now Groonga supports to expand database size gradually as same as other GNU/Linux environment.
To enable this feature, set GRN_IO_VERSION=1
as environment variable. By default, it is not enable because it is in experimental stage.
Please give us feedback how it improves disk usage. It is important to enable by default.
Experimental improvement - Supported Groonga with jemalloc to improve performance in multi-threaded usage
In this release, you can build Groonga with jemalloc support. This change will improve multi-threaded performance. jemalloc support is suitable for groonga command or Mroonga because they are adobt multi-threaded model.
Note that it is no impact to groonga-httpd because it use multi-process model.
If you dislike to build Groonga on your own, try LD_PRELOAD environment variable.
Here is the example command:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1 groonga
Please give us feedback how it affects performance.
Conclusion
See Release 4.1.1 2015-01-29 about detailed changes since 4.1.0.
Let's search by Groonga!