BloGroonga

2016-04-29

Groonga 6.0.2リリース

Groonga 6.0.2をリリースしました!

それぞれの環境毎のインストール方法: インストール

重要なお知らせ

前回のリリース(6.0.1)では、1つのテーブルでこれまでよりも多くのデータを扱えるようにするため、KEY_LARGEフラグが追加されました。

しかし、このフラグを指定すると次の問題がありました。

  • データベースを開くときは必ず作った時と同じパスで開かないといけない(/tmp/db/dbで作ったのに/tmp/db2/dbで開くとエラーになります)

そのため、KEY_LARGEフラグを使いたい人は、前のリリースは使わずに今回のリリース以降のバージョンを必ず使ってください。

もし、前回のリリースをインストール済みで、すでにKEY_LARGEを使ったテーブルを作ったあとデータベースが開けなくなってしまった人は、次の手順で復旧してください。

  • 前のリリース(6.0.1)のGroongaでデータベースを開いて(作った時と同じパスを指定すること)、dumpします
  • 新しいリリース(6.0.2)のGroongaでdumpしたデータを読み込みます

変更内容

主な変更点は以下の通りです。

  • リクエストにタイムアウトを指定できるようになりました
  • ドリルダウンで多段の集計やグループをサポートしました
  • Debian GNU/Linux 7.0 (Wheezy)のサポート終了
  • Ubuntu 16.04 (Xenial Xerus)のサポート開始

リクエストにタイムアウトを指定できるようになりました

今回のリリースでは、各リクエストにタイムアウトを設定できるようになりました。

指定したタイムアウトまでにリクエストが完了しなかった場合、そのリクエストはキャンセルされます。タイムアウトを設定しない場合、そのリクエストが完了するまで処理をします。

リクエストにタイムアウトを設定するには、--request_timeoutパラメータを指定します。次の例では、タイムアウトを5秒に指定しています。

select Users --request_timeout 5

詳細については、リクエストタイムアウトのドキュメントを参照してください。

ドリルダウンで多段の集計やグループをサポートしました

今回のリリースでは、高度なドリルダウンがさらに進化し、多段でドリルダウンできるようになりました。

どんなふうに使えるのか、簡単な例を紹介します。 例えば、カテゴリ、タグの順に多段でドリルダウンしてみましょう。

Memoというテーブルにtagというカラムがあり、Tagsテーブルに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

次に、それぞれのテーブルにサンプルデータを登録します。

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"}
]

これで準備ができました。

実際に多段でドリルダウンしてみましょう。 次のようなクエリを実行します。ポイントはラベルでドリルダウンの関連づけをしているところです。

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

高度なドリルダウンでは、ラベルを使って複数のドリルダウンを実行することができました。 ただし、それぞれのドリルダウンは独立していて、多段にすることはできなかったのがこれまでとの違いです。

実行すると次のような結果が得られます。

{
  "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はカテゴリでドリルダウンしていました。そのため、C/C++が2件、Rubyが1件というようにグループ化されています。 label2はさらにタグでドリルダウンすることで、C/C++というカテゴリにGroongaは2件あることがわかります。

この機能について、パッチを送ってくれた村上さんが解説記事を書いてくれています。

全てのレコードでグループ化にする方法についても言及があるので、ドリルダウン機能の結果を活用したい人はぜひ参考にしてみてください。

Debian GNU/Linux 7.0 (Wheezy)のサポート終了

今回のリリースでは、Debian GNU/Linux 7.0 (Wheezy)のサポートを終了しました。

これは、4/26にWheezyがEOLとなったことによるためです。WheezyはLTSとして2018年5月までサポートされますが、Groongaのパッケージの提供は打ち切ることにしました。

Debian GNU/Linux 8.0 (Jessie)向けのパッケージを提供しているので、そちらへの移行をおすすめします。

Ubuntu 16.04 (Xenial Xerus)のサポート開始

今回のリリースから、Ubuntu 16.04 (Xenial Xerus)のパッケージの提供をPPAではじめました。

インストール方法については、次のドキュメントを参照してください。

お知らせ

来月以降、以下のイベントが予定されています。

  • Groongaで学ぶ全文検索 2016-05-20
    • 2016-05-20(金)20:00 - 22:30 渋谷マークシティ ウエスト17階 MeetingRoom-J(株式会社サイバーエージェント)
    • 予習復習なしで全文検索とGroongaについて学ぶことができるイベントです。ほぼ隔週で開催されています。内容は参加者にあわせてその場で決めるので、前の回に参加していないとついていけない、ということはありません。
  • MySQLとPostgreSQLと日本語全文検索2
    • 2016-06-09(木)20:00 - 22:00 DMM.comラボ
    • 「MySQLとPostgreSQLと日本語全文検索」の第2弾です。前回はMySQL・PostgreSQLの日本語全文検索機能を使ったことがない人向けの内容でしたが、今回は使ったことがある(触ってみたくらいで十分)人向けの内容です。

興味があるイベントがあればぜひご参加ください!

さいごに

6.0.1からの詳細な変更点は6.0.2リリース 2016-04-29を確認してください。

それでは、Groongaでガンガン検索してください!