[groonga-dev,04021] [ANN] Groonga 6.0.2

Back to archive index

HAYASHI Kentaro hayas****@clear*****
2016年 4月 29日 (金) 11:26:38 JST


林です。

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

  http://groonga.org/ja/blog/2016/04/29/groonga-6-0-2.html

# 重要なお知らせ

前回のリリース(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)のサポート開始

また、クラッシュしてしまう不具合や、ある程度の規模のデータ量になるとイ
ンデックスが作成できなくなってしまう不具合が修正されているのでアップグ
レードをおすすめします。

細かな変更点についてはニュースをご確認下さい。

  http://groonga.org/ja/docs/news.html#release-6-0-2-2016-04-29

以下、主な変更点について紹介します。

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

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

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

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

  select Users --request_timeout 5

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

  http://groonga.org/ja/docs/reference/command/request_timeout.html

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

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

  高度なドリルダウン
  http://groonga.org/ja/docs/reference/commands/select.html#select-advanced-drilldown-related-parameters

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

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件あることがわかります。

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

* Groonga 6.0.2から多段ドリルダウンが利用可能に
  http://blog.createfield.com/entry/2016/04/27/200305

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

## 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)向けのパッケージを提供しているので、そち
らへの移行をおすすめします。

* Debian GNU/Linux 8.0でのインストール方法

  http://groonga.org/ja/docs/install/debian.html#jessie

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

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

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

* Ubuntu 16.04 (Xenial Xerus)でのインストール方法

  http://groonga.org/ja/docs/install/ubuntu.html

## イベントのおしらせ

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

* Groongaで学ぶ全文検索 2016-05-20 https://groonga.doorkeeper.jp/events/43780
  日時: 2016-05-20(金)20:00 - 22:30
  場所: 渋谷マークシティ ウエスト17階 MeetingRoom-J(株式会社サイバーエージェント)
  概要: 予習復習なしで全文検索とGroongaについて学ぶことができるイベント
        です。ほぼ隔週で開催されています。内容は参加者にあわせてその場で
        決めるので、前の回に参加していないとついていけない、ということは
        ありません。

* MySQLとPostgreSQLと日本語全文検索2 https://groonga.doorkeeper.jp/events/41770
  日時: 2016-06-09(木)20:00 - 22:00
  場所: DMM.comラボ
  概要:「MySQLとPostgreSQLと日本語全文検索」の第2弾です。前回はMySQL・
        PostgreSQLの日本語全文検索機能を使ったことがない人向けの内容でし
        たが、今回は使ったことがある(触ってみたくらいで十分)人向けの内
        容です。

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

## 改良

  * 比較オペレータ(>, >=, <, <=)でbool値をサポートしました。TRUEは1、
    FALSEは0とみなします。これによりbool値を返す関数を比較の際に使える
    ようになりました。
  * [groonga-http][リクエストタイムアウト] request_timeout パラメータ
    をサポートしました。リクエストがキャンセルされたときには、ステータ
    スとして HTTP/1.1 408 Request Timeout を返します。
  * [table_tokenize] index_column オプションを追加しました。
    [GitHub#534] [村上さんがパッチ提供]
  * [table_tokenize] estimated_size を出力できるようにしました。
    [GitHub#518] [村上さんがパッチ提供]
  * [geo_in_rectangle] インデックスがなくても動作するようにしました。
    その場合、シーケンシャルサーチへとフォールバックして動作します。
  * 不必要なループ処理を除去しました。これによりフレーズ検索のパフォー
    マンスが向上します。[GitHub#519] [村上さんがパッチ提供]
  * [Groongaへのコントリビュート方法] コントリビューション方法のドキュ
    メントを更新しました。[GitHub#522] [Hiroshi Ohkuboさんがパッチ提供]
  * [リターンコード] リターンコードのドキュメントを更新しました。
  * [groonga 実行ファイル] --default-request-timeout オプションのドキュ
    メントを追加しました。
  * [windows] DLLのバージョン表示に対応しました。
  * 即値のみ指定されていても、インデックスを使って検索できるようにしま
    した。例えば、true || column > 0 というクエリでは column のインデッ
    クスがあっても使われませんでした。今回のリリースではインデックスが
    使われない問題が解決しています。
  * [select] 多段ドリルダウンをサポートしました。
    [GitHub#524,#526,#527,#528,#529] [村上さんがパッチ提供]
  * Int{8,16,64}/UInt{8,16,64} 型のグループ化をサポートしました。以前
    のバージョンでは32bitのみがサポートされていました。
  * ソートキーの指定がおかしいときにテーブル名もエラーメッセージに含め
    るようにしました。
  * [groonga-suggest-httpd] ドキュメントを更新しました。
  * [補完] 実行例の誤字を修正しました。[groonga-dev,04008] [立川さんが
    報告]
  * [grndb] 後方互換を保つようにしました。ただし、inspect のかわりに
    object_inspect を使うようにしてください。
  * [httpd] バンドルしているnginxのバージョンを1.9.15に更新しました。
  * [rpm][centos] systemdをサポートしました。
  * [doc] HTML形式のドキュメントのみをサポートするようにしました。
    [GitHub#532] [Hiroshi Ohkuboさんがパッチ提供]
  * [groonga-httpd][centos] 環境変数をカスタマイズできるようにしました。
  * [その他] --with-package-platorm オプションのドキュメントを更新しま
    した。
  * [ubuntu] Ubuntu 16.04 (Xenial Xerus)をサポートしました。

## 修正

  * 空文字列のトークナイズ処理が失敗する不具合を修正しました。例えば、
    description というカラムがあるとします。そのカラムがインデックスカ
    ラムのときに値が空の文字列を与えてトークナイズしようとすると、エラー
    になっていました。 [GitHub#508] [村上さんが報告]

    load --table docs
    [
    ["_key","description"],
    [2,""]
    ]

  * クリティカルセクションの処理が原因でクラッシュする不具合を修正しま
    した。 [GitHub#507]
  * [リリース手順] grntestの使いかたに関する誤字を修正しました。
    [GitHub#511] [Hiroshi Ohkuboさんがパッチ提供]
  * [doc] manのサポートをやめました。
  * ユーザーを混乱させかねない誤ったデバッグログを出力しないようにしま
    した。
  * 内部で使っているカウンタが誤って初期化されることでデータが正しくフ
    ラッシュされない不具合を修正しました。以前のバージョンでは、デー
    タ量が一定のサイズを越えると、インデックスを作成するのに失敗して
    いました。 [GitHub#517] [村上さんが報告]
  * 1つのプロセスが複数のキャッシュを並列で扱えない不具合を修正しまし
    た。 [GitHub#515]
  * メモリリークを検出するために内部で使われている alloc_info 構造体の
    排他処理ができていない問題を修正しました。この修正がないとクラッ
    シュする可能性があります。 [GitHub#523]
  * [tokenizer mecab] Groongaと辞書のエンコーディングが一致していない
    とき、エラーでメモリリークするのを修正しました。
    [groonga-dev,04012] [村上さんが報告]
  * [groonga-suggest-httpd] と [groonga-suggest-leaner] の組み合わせが
    動作しない不具合を修正しました。
  * [doc] *.poから必要のないUUIDを削除しました [GitHub#531] [Hiroshi
    Ohkuboさんがパッチ提供]
  * [highlight_html] 重複したテキストを返す不具合を修正しました。この
    不具合はハイライトされたキーワードが1024以上あるときに発生してい
    ました。
  * TABLE_HASH_KEY|KEY_LARGE を以前のバージョンで使っていると、データ
    ベースが壊れる可能性がある不具合を修正しました。テーブルを再作成
    してください。

## 感謝

  * 村上さん
  * Hiroshi Ohkuboさん
  * 立川さん

--
HAYASHI Kentaro <hayas****@clear*****>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 無し
型:         application/pgp-signature
サイズ:     819 バイト
説明:       無し
Download 



groonga-dev メーリングリストの案内
Back to archive index