[前][次][番号順一覧][スレッド一覧]

mysql:15945

From: HAYASHI Kentaro <HAYASHI Kentaro <hayashi@xxxxxxxxxx>>
Date: Thu, 28 Feb 2013 10:57:27 +0900
Subject: [mysql 15945] [ANN] mroonga 3.01

林です。

2/9にメジャーバージョン3.00をリリースしたばかりのmroongaですが、
恒例の月末リリースです。
今月は29日がないので、28日リリースとなりました。

まずはじめに、お知らせがあります。

これまでも、mroonga.github.comにて事例 http://mroonga.github.com/ja/users/ を
紹介してきましたが、それとは別に http://gihyo.jp/ にgroonga関連(mroonga含む)
の記事を書くという企画が進行しています。

まだmroongaをよく知らない人にもWeb記事を通じて知ってもらいたいというのが動機です。
似たような動機で、毎週木曜にQiitaでgroonga関連(今週はmroongaのインストール時の
トラブル対処についての記事を書きました!)の情報提供もはじめました!

  http://qiita.com/users/groonga

詳細は「groonga普及のための協力のお願い」を参照していただきたいと思いますが、
実際に使っているユーザーのみなさんに利用事例を書いてもらえたらいいなぁと思っています!

  http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-February/001186.html

すでに何人かの方から応募いただいていますが、まだまだ募集しています。


mroonga 3.01をリリースしました。
  http://mroonga.github.com/ja/docs/news.html#release-3-01

mroongaはMySQL 5.1/5.5/5.6、MariaDB 5.3/5.5で利用できる全文検
索・位置情報検索可能なストレージエンジンです。mroongaは
Tritonnの後継プロジェクトです。

ドキュメント:
  http://mroonga.github.com/ja/
インストールガイド:
  http://mroonga.github.com/ja/docs/install.html

mroongaでよくあるMySQLとのバージョン不一致で
うまくインストールできなかったんだけど、、、というトラブルも
リリース直後は遭遇しにくいので、この機会にmroongaを試してみるのは
いかがでしょうか。

みなさんからのフィードバックをお待ちしています!

1.20より前のバージョンからアップグレードする場合は以下にある
手順を使ってください。
  http://mroonga.github.com/ja/docs/news.html#release-1-20

1.20からアップグレードする場合は以下にある手順を使ってくださ
い。
  http://mroonga.github.com/ja/docs/news.html#release-2-00

2.00か2.01からアップグレードする場合は、以下の手順でパッケージ
署名用の新しい鍵をインポートしてください。

  http://mroonga.github.com/ja/docs/news.html#release-2-02

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

  http://mroonga.github.com/ja/docs/news.html#release-2-03

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

  http://mroonga.github.com/ja/docs/news.html#release-2-05

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

  http://mroonga.github.com/ja/docs/news.html#release-2-08

2.08以降でTIMESTAMP型のカラムを使っているテーブルがあれば、
データベースを再作成してください。
CHAR(N)を主キーとしているテーブルがあれば、インデックスを再作成してく
ださい。

  http://mroonga.github.com/ja/docs/news.html#release-2-09

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

  * 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をインストールしておいてください。

  https://github.com/groonga/groonga-normalizer-mysql

1.0.1のソースアーカイブは以下からダウンロードすることができます。

  http://packages.groonga.org/source/groonga-normalizer-mysql/

○ FOREIGN KEY制約のサポート(制限あり)

今回のリリースではFOREIGN KEY制約を限定的にサポートしました。

限定的にというのは、mroongaとMySQLとではテーブル間の関係性の表現
に違いがあるからです。

mroongaは内部でgroongaを使っているので、groongaとMySQLの違いということになります。

groongaはカラムの型として別のテーブルを指定する参照型という機能があります。
groongaではテーブル間の関係というとこの参照型を使います。

  http://groonga.org/ja/docs/tutorial/data.html#reference-types

一方、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をお使いの方は
そちらを利用されるのも良いでしょう。

  http://sourceforge.jp/projects/wing-repo/

○ 変更点

3.00からの変更点は以下の通りです。
  http://mroonga.github.com/ja/docs/news.html#release-3-01

改良
^^^^

    * utf8_unicode_ci と utf8mb4_unicode_ci をサポート。groonga-normalizer-mysql >= 1.0.1が必須です。
    * [実験的] ストレージモードでFOREIGN KEY制約をサポート。 [#1612]

修正
^^^^

    * 特定の範囲のレコードで検索結果が0件になることがあるというgroongaに由来する不具合を修正した。
      [groonga-dev,01192] [b senbokuさんが報告]
    * Mac OS X向けにデフォルトではDTraceを無効にした。

感謝
^^^^

    * b senbokuさん


-- 
HAYASHI Kentaro <hayashi@xxxxxxxxxx>

[前][次][番号順一覧][スレッド一覧]