[groonga-dev,03991] [ANN] Groonga 6.0.1

Back to archive index

HAYASHI Kentaro hayas****@clear*****
2016年 3月 29日 (火) 12:03:25 JST


林です。

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

  http://groonga.org/ja/blog/2016/03/29/groonga-6-0-1.html

今回は、次のような新機能がはいりました。

  * これまであったキーの総サイズは4GiBという制限を緩和
  * 対象テーブルを参照しているテーブルとカラムをまとめて削除可能に
  * [実験的] 静的索引によるフレーズ検索の高速化

また、loadコマンドのチェックをより厳密にするようにしたり、クラッシュし
てしまう不具合を修正したりもしているのでアップグレードをおすすめします。

## これまであったキーの総サイズは4GiBという制限を緩和

今回のリリースでは、これまでのGroongaの制約である「最大総キーサイズは
4GiB」という制限が緩和されました。

ただし、この機能を有効にするためには、ハッシュテーブルに KEY_LARGE フ
ラグをつけて作成する必要があります。このフラグがついていないテーブルは
これまで通り最大総キーサイズは4GiBとして扱われます。
一方で、KEY_LARGEを有効にしたテーブルでは、最大総キーサイズは1TiBにな
ります。

KEY_LARGEフラグは次のようにして指定します。

  table_create Users TABLE_HASH_KEY|KEY_LARGE ShortText

これで、1つのハッシュテーブルでより多くのデータが扱えるようになります。

## 対象テーブルを参照しているテーブルとカラムを削除可能に

今回のリリースでは、対象テーブルを参照しているテーブルとカラムを削除可
能にする機能がtable_removeとlogical_table_removeに入りました。

従来、以下の条件に合致する場合には、テーブルの削除が失敗するようになっ
ていました。

* 1つ以上のテーブルがこの削除対象のテーブルをキーの型として使っている。
* 1つ以上のカラムがこの削除対象のテーブルを値の型として使っている。

これは、参照先がなくなることを防ぐためにデフォルトでそうなっています。
もし、参照されているまま削除してしまうと、そのテーブルを参照しているテー
ブルやカラムが壊れてしまうためです。

ただし、参照しているテーブルとカラムもまとめて削除したいこともあります。
そういった用途のために、--dependent yesをつけるとまとめて削除できるよ
うになりました。
例えば次のようなケースで有用です。

  table_create ReferencedTable TABLE_HASH_KEY ShortText
  table_create Table1 TABLE_HASH_KEY ReferencedTable
  table_create Table2 TABLE_NO_KEY
  column_create Table2 reference_column COLUMN_SCALAR ReferencedTable

上記のスキーマで、table_remove ReferencedTableを実行するとエラーになり
ます。ReferencedTableはTable1のキーでもあり、Table2のreference_column
からも参照されているからです。

これをtable_remove ReferencedTable --dependent yesとすると、
ReferencedTableとTable1、Table2.reference_columnをまとめて削除すること
ができます。これまでは参照している側をひとつひとつ削除してからでないと
削除できなかったので、参照しているテーブルやカラムが多岐にわたると、い
ざ削除しようとするときに面倒でした。その点が改善されています。

注意事項として、リソースを多く消費するというのがあります。これは
table_removeするときに、削除できないケースのチェックを
するためにデータベース内のすべてのテーブルとカラムを開くためです。
もし、そのせいで削除できないときには、回避策として一時的に最大スレッド
数の値を1に設定してください。

  thread_limit 1

こうすると、チェック用に一時的に開いたテーブルとカラムを閉じるので、
リソースの消費を抑えることができます。

## [実験的] 静的索引によるフレーズ検索の高速化

今回のリリースでは、実験的ではありますが、静的索引によるフレーズ検索の
高速化の機能が入りました。まだ実験的なのでデフォルトでは無効ですが、
フレーズ検索が遅いと感じている人は以下の記事を参考に、この機能を試して
みてください。

  静的索引によるフレーズ検索の高速化
  http://groonga.org/ja/blog/2016/03/28/chunk-split.html

## イベントのおしらせ

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

* Groonga新リリース自慢会 6.0.1 https://groonga.doorkeeper.jp/events/41564
  日時: 2016-03-29(火)19:30 - 21:30
  会場: 永和システムマネジメント
  概要: Groongaは毎日肉の日(29日)に定期的にリリースしています。このイ
        ベントは新しくリリースされたGroonga(とGroonga関連プロダクト)の
        新機能を自慢しながらリリースを祝うイベントです。

* Groongaで学ぶ全文検索 2016-04-22 https://groonga.doorkeeper.jp/events/41978
  日時: 2016-04-22(金)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の日本語全文検索機能を使ったことがない人向けの内容でし
        たが、今回は使ったことがある(触ってみたくらいで十分)人向けの内
        容です。

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

## 改良

  * [mruby] GCとバックトレースに関連してクラッシュするバグを修正するた
    め、バンドルしているmrubyを更新しました。
  * Exported the following API
     * grn_expr_take_obj()
     * grn_request_canceler_cancel_all()
     * grn_obj_remove_dependent()
     * grn_obj_is_text_family_type()
  * [hash] KEY_LARGE フラグがテーブルに設定されていれば、キーの総サイ
    ズが4GiBの制限を超えられるようにしました。

    table_create Users TABLE_HASH_KEY|KEY_LARGE ShortText

  * [load] JSON形式の入力としてrequest IDを受けつけるようにしました。
    POST /d/load?table=XXX&request_id=x

    load --table XXX --request_id x
    [
     ...
  ]

  * [shutdown] 即座に shutdown するために mode 引数を追加しました。
    "shutdown --mode immediate" として使用します。
  * [Mac OS X] MeCab辞書をHomebrewでセットアップする手順を追加しました。
  * [load] キャンセル要求があったときにloadをとりやめられるようにしま
    した。
  * [table_remove] 依存関係のあるテーブルを削除できるようにしました。
    --dependent yes を使います。
  * [logical_table_remove] 依存関係のあるテーブルを削除できるようにし
    ました。
  * [windows] Windows上でメモリデバッグモードをサポートしました。
  * メモリデバッグモードのstatusでメモリの確保情報をダンプできるように
    しました。
  * [国際化] Sphinxのインストール手順を追加しました。[YUKI Hiroshiさん
    がパッチ提供]
  * [実験的] インデックスの静的構築において、チャンクを分割できるよう
    にしました。有効にするには GRN_INDEX_CHUNK_SPLIT_ENABLE=yes を設定
    します。[GitHub#479]

## 修正

  * [load] 存在しないカラムを指定したときに、クラッシュする不具合を修
    正しました。[GitHub#493]
  * [load] loadコマンドが適切なエラーコードを返さない不具合を修正しま
    した。[GitHub#495]
  * [load] loadコマンドのカラムパラメータをパースするときにメモリリー
    クしているのを修正しました。
  * [load] --columns が指定されていないとき、 --values に含まれる最初
    の配列がカラム名のリストとして扱われてしまう不具合を修正しました。
    [GitHub#497]
  * [load] --columns をより厳密にチェックするようにしました。
    [GitHub#496]
  * スレッドセーフにするのに不十分なクリティカルセクションの扱いを修正
    しました。
  * [column_create] カラムを作成するのに失敗したときにクラッシュする不
    具合を修正しました。
  * [table_remove] 存在しないテーブルを削除しようとするとクラッシュす
    る不具合を修正しました。
  * WITH_POSITION フラグつきの(保存しているのがテキストでない)ベクター
    カラムに対してオフラインインデックス構築をすると位置情報が無視され
    てしまう不具合を修正しました。
  * [grndb] 循環参照していると、スタックオーバーフローを引き起す不具合
    を修正しました。
  * [deb] Ubuntu 15.04 (Vivid Vervet)のサポートをやめました。

## 感謝

  * YUKI Hiroshi

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



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