Masafumi Yokoyama
yokoy****@clear*****
2015年 7月 29日 (水) 15:20:47 JST
横山です。 今日は肉の日(7/29)ですね。Groonga 5.0.6をリリースしました! http://groonga.org/ja/docs/news.html#release-5-0-6 それぞれの環境毎のインストール方法はこちらを見てください。 http://groonga.org/ja/docs/install.html 今月はパッケージまわりやプラグインまわりの更新が多くあります。変更点の各 項目の先頭にタグがついているので、そこに自分の用途に該当する項目があった 場合はアップデートを検討してください。不明点はお気軽にご質問ください。 今回のリリースの主なトピックは次の通りです。 * Ubuntu 14.10 Utopicのサポート終了 * ベクターカラムまわりの改善 * shardingプラグインの更新(非互換含む) ### Ubuntu 14.10 Utopicのサポート終了 Ubuntu 14.10(Utopic Unicorn)のサポート期間が2015年7月23日で終了したの で、Groongaもサポートをやめました。具体的には、PPAで提供しているパッケー ジが前バージョンの5.0.5を最後に更新されなくなります。お早めに新しいバー ジョン(15.04など)へアップグレードされることをおすすめします。 ### ベクターカラムまわりの改善 ベクターカラムまわりがいろいろと改善されて使いやすくなりました。例えば、 参照ベクターカラムの静的なインデックス構築(データをロードしてからイン デックスを作成した場合に適用される構築方法)をサポートしたり、インデック スがなくても``select``コマンドの``--filter``引数の``@``演算子で検索でき るようになったりしています。 詳細はニュースや以下のリファレンスをご覧ください。 * 7.17. インデックス構築 ― Groonga v5.0.6ドキュメント * http://groonga.org/ja/docs/reference/indexing.html * 7.3.37. select ― Groonga v5.0.6ドキュメント * http://groonga.org/ja/docs/reference/commands/select.html ### shardingプラグインの更新(非互換含む) 実験的な位置づけですが、shardingというプラグインがあります。今月はこのプ ラグインまわりがいろいろと更新されました。 shardingプラグインを簡単に説明すると、複数のテーブルを1つのテーブルとし て扱うことができるプラグインです。複数のテーブルに分けることで、テーブル の最大レコード数などの制限を回避できるなどのメリットがあります。ただし、 テーブル名は命名規則に従って付ける必要があるなどの制約はあります。 詳細はニュースや以下のリファレンスをご覧ください。 * 7.3.22. logical_count ― Groonga v5.0.6ドキュメント * http://groonga.org/ja/docs/reference/commands/logical_count.html * 7.3.25. logical_select ― Groonga v5.0.6ドキュメント * http://groonga.org/ja/docs/reference/commands/logical_select.html * 9. 制限事項 ― Groonga v5.0.6ドキュメント * http://groonga.org/ja/docs/limitations.html なお、shardingプラグインはmrubyで書かれています。Groongaにはmrubyでプラ グインを書くためのAPIが含まれており、今月はそれらのAPIもかなり更新されて います。 ## 変更点 その他の変更点は以下の通りです。 ### 改良 * [Ubuntu] Ubuntu 14.10(Utopic Unicorn)のサポートをやめました。2015 年7月23日でサポートが切れた(EOLになった)ためです。 * 参照ベクターカラムの静的なインデックス構築をサポートしました。例え ば、 column_create でインデックスカラムを作成する前にデータを load する場合です: table_create Entries TABLE_NO_KEY column_create Entries numbers COLUMN_VECTOR Int32 load --table Entries [ ["numbers"], [[18, 19, 20]], [[100, 200]] ] table_create Numbers TABLE_PAT_KEY Int32 column_create Numbers entries_numbers COLUMN_INDEX Entries numbers select Numbers --output_columns _key * インデックスなしの 'vector_text_column @ "element"' をサポートしまし た。例えば、以下のコマンド内の select コマンドです: table_create Memos TABLE_NO_KEY column_create Memos tags COLUMN_VECTOR Text load --table Memos [ {"tags": ["Groonga", "Rroonga", "Mroonga"]} ] select Memos --filter 'tags @ "Rroonga"' * インデックスなしの 'fixed_size_type_vector_column @ n' をサポートし ました。例えば、以下のコマンド内の select コマンドです: table_create Memos TABLE_NO_KEY column_create Memos numbers COLUMN_VECTOR Int32 load --table Memos [ {"numbers": [1, 2, 3]} ] select Memos --filter 'numbers @ 2' * [CentOS][サーバーパッケージ][groonga-httpd] 終了ステータスを表示する ようにしました。[GitHub#357] [jacob16bitさんがパッチ提供] * [Windows][groonga executable file] --pid-path をサポートしました。 * [Windows] 他のプロセスが開いているファイルの削除を可能にしました。 * セレクターのみで使えるprocを作れるようになりました。ただし、そのよう なprocは関数として使えません(シーケンシャルサーチに使えないため)。 * 複雑な引数の関数呼び出しをサポートしました。複雑な引数とは、例えば Table["key"].column です。例: function(_key, Table["key"].column) * [doc][チュートリアル] データベース作成時に既にファイルが存在するパス を指定したときのエラーについて追記しました。 [GitHub#354] [Hirotaka Takayamaさんが提案] * [doc][チュートリアル] JSONを整形するためのツールについて追記しまし た。 [GitHub#355] [tiwawanさんが提案] * [実験的] スレッド数を取得・設定するAPIを追加しました。これは実験的な APIです。 * [実験的][thread_count] スレッド数を取得・設定するコマンドを追加しま した。これは実験的なコマンドです。 * [実験的][groonga executable file] thread_countコマンドによるスレッド の最大数の変更をサポートしました。これは実験的な機能です。 * [実験的][Windows] Windowsのイベントログのサポートを追加しました。こ れは実験的な機能です。 * [実験的][groonga executable file] Windowsのイベントログに関連するオ プション --use-windows-event-log を追加しました。このオプションを指 定すると、ログをWindowsのイベントとして報告します。これは実験的な機 能です。 * [Windows] ログメッセージにGroongaのデフォルトのエンコーディングを使 うようにしました。 * ログレベルが INFO のときに、使われているインデックスをログに出力する ようになりました。ただし、デフォルトのログレベルは NOTICE なので、デ フォルトでは出力されません。 * [API] grn_log_level_to_string() と grn_log_level_parse() を追加しま した。 * [groonga executable file] --log-level の値にログレベルの名称( info や debug など)を指定できるようになりました。 * [log_level][log_put] --level の引数にログレベルの名称を指定できるよ うになりました。 * [plugin] grn_command_input_get_arguments() を追加しました。 * shardingプラグインを更新しました。 * [logical_select] 出力フォーマットを select コマンドとの互換フォー マットになるように修正しました。 * [logical_select] 以下のパラメーターをサポートしました。 * --output_columns * --offset * --limit * --drilldown * --drilldown_sortby * --drilldown_offset * --drilldown_limit * [logical_select] 出力カラム(output_columns)に select のデフォル ト( "_id, _key, *" )と同じものを使うようにしました。 * [logical_select] ラベル付きドリルダウンで drilldown[${LABEL}].calc_types と drilldown[${LABEL}].calc_target をサポートしました。 * [logical_select] キャッシュをサポートしました。 * [logical_count] 範囲インデックス(range index)が使われたかどうか のロギングをサポートしました。 * [logical_count] 対象テーブル名をデバッグログに表示するようにしまし た。 * [logical_count] キャッシュをサポートしました。 * [logical_range_filter] 'fixed_size_type_vector_column @ element' をサポートしました。 * [logical_range_filter] use_range_index パラメーターを追加しまし た。これはテスト用のパラメーターなので、本番で使うべきではありませ ん。 * [logical_range_filter] どちらのモード(range-indexかselect mode) が使われているかログに出力するようにしました。 * [logical_range_filter] キャッシュをサポートしました。 * [logical_range_filter] ネストした参照ベクターカラムのアクセサーを サポートしました。 * [logical_range_filter] logical_parameters で設定されたrange_index の値を使うようになりました。 * [logical_parameters] 追加しました。 * mrubyのAPIを追加しました。 * [mrb] Accessor#name を追加。 * [mrb] Column#[] を追加。 * [mrb] Column#scalar? と Column#vector? 、 Column#index? を追加。 * [mrb] Context#command_version と Context#command_version= (アクセ サー) を追加。 * [mrb] Context#with_command_version を追加。 * [mrb] Database#each_name を追加。 * [mrb] Groonga::Cache.current を追加。 * [mrb] Record を追加。 * [mrb] Table#each を追加。 * [mrb] TableCursor#key を追加。 * [mrb] grn_command_input_get_arguments() を CommandInput#arguments にバインド。 * [mrb] grn_table_group() を Table#group にバインド。 * [mrb] grn_table_group_flags() を TableGroupFlags にバインド。 * [mrb] GRN_COMMAND_VERSION_DEFAULT をバインド。 * [mrb] grn_cache をバインド。 * [mrb][estimate_size] (... || ...) && (... || ...) のような expressionのケースをサポート。 * [mrb] クエリーログをサポートしました。 ### 修正 * grn_expr_exec() でエラーが発生したときのメモリーリークを修正しまし た。例えば、サポートしていないオペレーター(例: GRN_OP_TERM_EXTRACT)が使われた場合です( not implemented operator assigned が発生するケース)。 * [bindings/php] メモリーアロケーションに失敗したときのチェックが抜け ていたのを追加しました。[Bill Parkerさんが報告] * [CentOS][サーバーパッケージ][ログローテート] スクリプト内のシンタッ クスエラーを修正しました。 * [CentOS][サーバーパッケージ][ログローテート] デーモンの起動チェック を修正しました。 * [CentOS][サーバーパッケージ][ログローテート] ログファイルにオー ナー・グループを設定するのをやめました。理由は、一貫性がないためで す。groonga-httpdはログファイルをrootオーナー・rootグループで作成し ますが、ログローテート時はgroongaオーナー・groongaグループで作成され ていました。 [GitHub#358] [jacob16bitさんが報告] * [groonga executable file] 報告されるスレッドの最大数を修正しました。 * [groonga-httpd] ログメッセージ内の不要なスペースを削除しました: |n| grn_fin (0) -> |n| grn_fin (0) ^ * 正規表現クエリーでアンカー(例: --filter 'comment @~ "\\\\Abc"' 内 の \\\\A )が使われたときにサイズ推定がうまく動作しない不具合を修正 しました。これは logical_range_filter で使われている機能です。 * [リクエストID] request_id のバイトサイズが24以上だった場合にメモリー リークが発生していた問題を修正しました。 * [lock_clear] 構文セクションのコマンド名の誤字を修正しました。 [GitHub#363] [Christian Kakesaさんが報告] * [sharding] 月の範囲に最小値が含まれているかどうかの検出方法が誤って いたのを修正しました。 ### 感謝 * Bill Parkerさん * jacob16bitさん * Hirotaka Takayamaさん * tiwawanさん * Christian Kakesaさん -- 横山 昌史 <Masafumi Yokoyama> E-mail: yokoy****@clear***** 株式会社クリアコード 〒170-0005 東京都豊島区南大塚3-29-9 Tel: 03-5927-9440 Web: http://www.clear-code.com/ Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/