BloGroonga

2016-04-29

Groonga 6.0.2 has been released!

Groonga 6.0.2 has been released!

How to install in each environment: Install

Important notice

In previous release (6.0.1), KEY_LARGE flag was added to treat more larger data than ever before in a single table.

But, there was an issue when specifying this flag:

  • You have to use the same path as when you created to open the database correctly. Otherwise, you do not able to open it. (e.g. If you create a database with /tmp/db/db and then you use /tmp/db2/db for database path, you get an error.)

Therefore, if you want to use KEY_LARGE flag, you must use this release instead of previous release.

If you have already installed previous release and not been able to open your database which uses KEY_LARGE after creating, you can restore the database with the following steps:

  • Open the database with previous release (6.0.1) Groonga, and then dump it.
  • Load from database dump with new release (6.0.2) Groonga.

Changes

Here are important changes in this release:

  • Supported to specify timeout per request
  • Supported nested aggregate calculations and groups in drilldown
  • Drop support for Debian GNU/Linux 7.0 (Wheezy)
  • Supported Ubuntu 16.04 (Xenial Xerus)

Supported to specify timeout per request

In this release, Groonga supports timeout per request.

If it does not complete a request until specified timeout, this request will be cancelled. Without specfying timeout, Groonga continues to process until completing a request.

You can specify timeout per request with --request_timeout. The following example specifies timeout to 5 seconds:

select Users --request_timeout 5

For more information about request timeout, please refer to the request timeout document.

Supported nested aggregations and groups in drilldown

In this release, it has been improved advanced drilldown, that is, Groonga supports nested aggregate calculations and groups in drilldown.

Let's see how to use it with an brief example. For example, let's do nested drilldown by category and then by tag.

In this example, it uses a schema that contains a table named as Memo which has a column named as tag, A table named as Tags which has a columns named as category.

table_create Tags TABLE_PAT_KEY ShortText
column_create Tags category COLUMN_SCALAR ShortText

table_create Memos TABLE_HASH_KEY ShortText
column_create Memos tag COLUMN_SCALAR Tags

Next, register sample data into each tables.

load --table Memos
[
{"_key": "Groonga is fast!", "tag": "Groonga"},
{"_key": "Mroonga is fast!", "tag": "Mroonga"},
{"_key": "Groonga sticker!", "tag": "Groonga"},
{"_key": "Rroonga is fast!", "tag": "Rroonga"}
]

load --table Tags
[
{"_key": "Groonga", "category": "C/C++"},
{"_key": "Mroonga", "category": "C/C++"},
{"_key": "Rroonga", "category": "Ruby"}
]

Now, it is ready to use nested aggregations in drilldown.

Let's try to use nested drilldown. Execute the following query. Note that this query associates each of drilldowns with label:

select Memos \
  --drilldown[label1].table label2 \
  --drilldown[label1].keys category \
  --drilldown[label1].output_columns _key,_nsubrecs \
  --drilldown[label2].keys tag \
  --drilldown[label2].output_columns _key,_nsubrecs,category

With advanced drilldown, it had been able to execute multiple drilldowns by label. But, each of drilldowns had been independent and not to be able to construct nested drilldown query before this release.

After executing the above query, you get the following result.

{
  "label1": [
    [
      2
    ],
    [
      [
        "_key",
        "ShortText"
      ],
      [
        "_nsubrecs",
        "Int32"
      ]
    ],
    [
      "C/C++",
      2
    ],
    [
      "Ruby",
      1
    ]
  ],
  "label2": [
    [
      3
    ],
    [
      [
        "_key",
        "ShortText"
      ],
      [
        "_nsubrecs",
        "Int32"
      ],
      [
        "category",
        "ShortText"
      ]
    ],
    [
      "Groonga",
      2,
      "C/C++"
    ],
    [
      "Mroonga",
      1,
      "C/C++"
    ],
    [
      "Rroonga",
      1,
      "Ruby"
    ]
  ]
}

label1 is drilldowned by category, thus, the result of drilldowned by label1 contains two records of C/C++ and one record of Ruby. And then, after drilldowning by label2, it reveals that the drilldowned result by category of C/C++ contains two records of Groonga.

Drop to support Debian GNU/Linux 7.0 (Wheezy)

In this release, we drop support for Debian GNU/Linux 7.0 (Wheezy).

Because Wheezy has been reached EOL in April 26th, 2016. Although Wheezy is still supported as LTS until May 2018, we stop to provide Groonga package for Wheezy.

We provide Groonga package for Debian Jessie (8.0), so we recommend to migrate your Wheezy environment to Jessie.

Supported Ubuntu 16.04 (Xenial Xerus)

In this release, we start to provide package for Ubuntu 16.04 in PPA on Launchpad.

For more information about how to install, please refer to the following document:

Conclusions

Please refer to Release 6.0.2 - 2016-04-29 about detailed changes since 6.0.1.

Then, let's go all out to search by Groonga!