mroonga 3.01リリース
mroonga 3.01 をリリースしました!
インストール/アップグレード方法
それぞれの環境毎のインストール方法: インストール
以前のバージョンからアップグレードする場合には、アップグレード手順に注意が必要です。現在お使いのバージョンごとのアップグレード手順を参照してください。
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 にあります。
今回のリリースの主なトピックは以下の通りです。
- utf8_unicode_ci, utf8m4_unicode_ciのサポート
- FOREIGN KEY制約のサポート(制限あり)
utf8_unicode_ci, utf8m4_unicode_ciのサポート
3.00リリースの目玉でもあった、MySQL互換の照合順序ですが、今回のリリースでは utf8_unicode_ciと utf8m4_unicode_ciも追加でサポートしました。
照合順序としてutf8_unicode_ciもしくはutf8mb4_unicode_ciを使いたい場合には、groonga-normalizer-mysqlをあらかじめインストールしておく必要があります。(1.0.1以降が必要です。パッケージの場合にはmroongaと一緒にインストールされます。)
この変更は非互換な変更です。
既存のデータベースへの影響について:
- 新しく作成するテーブル・カラム・インデックスから有効になります。(これは、3.00でサポートしたutf8_general_ciやutf8mb4_general_ciと同様です。)
- すでに存在しているカラム・インデックスはこれまで通り、groonga独自のnormalizer(NormalizerAuto)が使われます。(utf8_general_ciやutf8mb4_general_ci適用済みのものを除く)
そのため、mroongaを3.01へとアップデートして既存のデータベースを使い続けるとカラム毎に異なるnormalizerを使うことになる点に注意が必要です。
全体で同じnormalizerを使う方法について:
- 新しく作るテーブル・カラム・インデックスのCOLLATIONとしてutf8_general_ci,utf8_general_ci,utf8_unicode_ci,utf8mb4_unicode_ciではないCOLLATIONを指定する方法があります。この方法ではgroongaのnormalizerに統一(従来通りの挙動)できます。
> ALTER TABLE (テーブル名) ADD (カラム定義) COLLATE 'utf8_roman_ci';
カラムに指定したCOLLATIONについては以下のようにして確認することができます。
> SHOW FULL COLUMNS FROM (テーブル名);
注意:
- utf8_general_ci,utf8_general_ci,utf8_unicode_ci,utf8mb4_unicode_ciではないCOLLATIONはgroonga独自のnormalizerを使うようになっています。
- utf8_binはCOLLATIONを使わないという意味なので、正規化したい場合はこれも使ってはいけません。
mroongaをパッケージではなく、ソースからインストールする場合にもMySQL互換のnormalizerを使いたい場合には、あらかじめ groonga-normalizer-mysql をインストールしておいてください。
groonga-normalizer-mysqlもソースからインストールしたい場合、1.0.1のソースアーカイブは こちら からダウンロードすることができます。
FOREIGN KEY制約のサポート(制限あり)
今回のリリースではFOREIGN KEY制約を限定的にサポートしました。
限定的にというのは、mroongaとMySQLとではテーブル間の関係性の表現に違いがあるからです。
本質的にはmroongaは内部でgroongaを使っているので、groongaとMySQLの違いということになります。
groongaはカラムの型として別のテーブルを指定する参照型という機能があります。groongaではテーブル間の関係というとこの 参照型 を使います。
一方、MySQLではテーブル間の関係をカラムの型で明示することができないので、FOREIGN KEY制約を指定することでテーブル間の関係を明示するのが通例です。
今回のリリースでは、mroongaでFOREGIN KEY制約を使ってテーブルを構築すると、透過的にgroongaのスキーマへと参照型を使ってその情報を反映できるようにしました。
これができるようになると何が嬉しいかというと、mroongaで作ったgroongaのデータベースを(mroongaではなく)groongaから検索するときにテーブル間の関係を利用して検索ができるようになります。
ただし、今回のサポートにはいくつか制限があります。
まず、MySQL 5.6でのみ利用可能なことです。
MySQL 5.6向けのmroongaパッケージの提供は一部のディストリビューションにしか行なっていません。そのため、今回のFOREIGN KEY制約のサポートをすぐに試せるのはCentOS 5のみとなっています。
また、それ以外にも以下の制限があります。
- 必ず参照先テーブルはPKであり、マルチカラムでない必要がある。
- 制約名は、何を指定しても参照元カラム名に変更される。
- 「ON DELETE」「ON UPDATE」には、何を指定しても「RESTRICT」に変更される。
mroonga公式ではありませんが、WING☆さんがMySQL 5.6系のmroongaパッケージを独自に提供してくださっているので、CentOS 6をお使いの方は そちら を利用されるのも良いでしょう。
さいごに
3.00からの詳細な変更点は 3.01リリース 2013/02/28 を確認してください。
それでは、mroongaでガンガン検索してください!