Mroongaブログ

2013-02-09

今日は年に1度の肉の日記念日ですね。

昨年の2月に2.00をリリースして以来、毎月新機能や変更、ユーザさんからのフィードバックによる不具合対応を積み重ねてきました。 そこで、今回のリリースではgroongaのメジャーバージョンアップに合わせてバージョンも3.00にしました!

mroonga 3.00リリース

mroonga 3.00 をリリースしました!

インストール/アップグレード方法

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

以前のバージョンからアップグレードする場合には、アップグレード手順に注意が必要です。現在お使いのバージョンごとのアップグレード手順を参照してください。

1.20より前のバージョンからアップグレードする場合は 1.20リリース 2012/01/29 にある手順を使ってください。

1.20からアップグレードする場合は 2.00リリース 2012/02/29 にある手順を使ってください。

2.00か2.01からアップグレードする場合は、 2.02リリース 2012/04/29 にある手順でパッケージ署名用の新しい鍵をインポートしてください。

2.00以降でストレージモードにてマルチカラムインデックスを使っている場合は 2.02リリース 2012/04/29 にある手順でインデックスを作り直してください。

2.04以降でストレージモードにてSETカラムもしくは要素数が256より少ないENUMを使用している場合は、 2.05リリース 2012/07/29 にある手順でデータベースを再作成してください。

2.05以降でマルチカラムインデックスをVARCHARやCHAR型に対して使っている場合は、 2.08リリース 2012/10/29 にある手順でインデックスを再作成してください。

2.08以降でTIMESTAMP型のカラムを使っているテーブルがあれば、データベースを再作成してください。CHAR(N)を主キーとしているテーブルがあれば、インデックスを再作成してください。手順は 2.09リリース 2012/11/29 にあります。

今回のリリースの主なトピックは以下の通りです。

  • Fedora 18に対応
  • MySQL 5.6.10に対応
  • MySQLと同等のCOLLATION(照合順序)のサポート

Fedora 18対応

今回のリリースでは2013/01/15にリリースされたFedora 18のサポートを追加しました。 Fedora 18のサポートに伴ない、Fedora 17のパッケージの提供は終了しています。

インストール手順は Fedora 18 を参照してください。

MySQL 5.6.10に対応

今回のリリースではMySQL 5.6.10への対応を行いました。

これまでのリリースでも、5.6.xサポートのための対応は行っていましたが、それに合わせたパッケージ等の提供は行っていませんでした。

今回はMySQL 5.6がついに GA (正式版) として公開されたこともあり、これに合わせたパッケージの提供をCentOS 5向けにはじめました。(5.5 -> 5.6へのアップグレード時はデータベースのダンプ/リストアをおすすめします。)

mroonga公式ではありませんが、WING☆さんがMySQL 5.6系のmroongaパッケージのリポジトリを wing-repo として独自に提供してくださっているので、こちらを利用されるのも良いでしょう。

MySQLと同等のCOLLATION(照合順序)のサポート

今回のリリースでは、文字列を比較したり並べ替えるときに使われるCOLLATION(照合順序)のうち、 utf8_general_ciutf8mb4_general_ci をサポートしました。

照合順序として utf8_general_ci もしくは utf8mb4_general_ci を使いたい場合には、 groonga-normalizer-mysql パッケージをあらかじめインストールしておく必要があります。(mroongaインストール時に一緒にインストールします)

COLLATIONを使うと大文字小文字の区別なく比較(例えば、Aとaを同一視する)することができます。例の場合はgroongaのnormalizerが提供している機能と同じです。

ただし、mroongaではgroongaのnormalizerを使って同一視する文字を判定し、その結果のソートはMySQLにやってもらうという役割を分担した仕組みになっています。

そのため、groongaのnormalizerとMyISAMやInnoDBとで同一視する文字が異なっていると、仕組み上他のストレージエンジンを使った場合と結果が異なるという問題がありました。

今回の改良でMyISAMでもInnoDBでもmroongaでも同じ文字を同一視するようになりました。

例えば、「a」(U+0061 LATIN SMALL LETTER A)は「A」(U+0041 LATIN CAPITAL LETTER A)だけではなく、「à」(U+00E0 LATIN SMALL LETTER A WITH GRAVE)や「Á」(U+00C1 LATIN CAPITAL LETTER A WITH ACUTE)とも同一視されます。

この変更は非互換な変更です。

既存のデータベースへの影響について:

  • 新しく作成するテーブル・カラム・インデックスから有効になります。
  • すでに存在しているカラム・インデックスはこれまで通り、groonga独自のnormalizer(NormalizerAuto)が使われます。

そのため、mroongaを3.00へとアップデートして既存のデータベースを使い続けるとカラム毎に異なるnormalizerを使うことになる点に注意が必要です。

全体で同じnormalizerを使う方法について:

  • 新しく作るテーブル・カラム・インデックスのCOLLATIONとして utf8_roman_ci など utf8_general_ci ではないCOLLATIONを指定する

するとgroongaのnormalizerに統一(従来通りの挙動)できます。

さいごに

2.10からの詳細な変更点は 3.00リリース 2013/02/09 を確認してください。

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