Haruka Yoshihara
yoshi****@clear*****
2012年 6月 26日 (火) 10:27:15 JST
吉原です。 > ちなみに、登録性能の計測結果で >> * 「mroongaデータ書き込みなし」と「mroonga」の処理の違い >> はgroongaに実際にデータを登録するかどうかである。 > とありますが、 > > 「mroongaデータ書き込みなし」 > ⇒MYSQLにデータを直接書き込み(groonga経由なし) > 「mroonga」 > ⇒groongaにデータ登録後、MYSQLにデータ書き込み > > といった理解でよろしいでしょうか? いいえ、違います。 もしかしたら、MySQLの「ストレージエンジン」というモジュール の動作イメージがピンときていないのかもしれません。少し、「ス トレージエンジン」というモジュールについて説明します。 今回の場合は「MySQLにデータを書き込む」という表現は少し大き すぎる処理を指してしまうので、もう少し具体的な表現にした方が よいかと思いました。「MySQLにデータを書き込む」という処理は MySQLサーバーの内部では「ストレージエンジン」というモジュー ルが処理します。ここでは、その「ストレージエンジン」というモ ジュールまで踏み込んだ話をしているため「MySQLにデータを書き 込む」という言い方は大雑把すぎるのです。「○○というストレー ジエンジンがデータを書き込む」というような言い方にしないと違 いが見えなくなってしまいます。 MySQL(サーバー)とストレージエンジンの関係は以下の図を参考 にしてください。MySQLサーバーの中の1モジュールとしてストレー ジエンジンがあり、ストレージエンジンの1つとして「MyISAM」や 「InnoDB」や「mroonga」があります。 (図中では「mroonga」が「groonga storage engine」と表記され ていますが、これは「mroonga」に直さないといけませんね。。。 修正しておきます。) http://mroonga.github.com/ja/docs/userguide.html#running-modes 以上だけを踏まえると、以下のように違いはなくなります。 「mroongaデータ書き込みなし」 ⇒ストレージエンジンとしてmroongaを使ってデータを書き込み 「mroonga」 ⇒ストレージエンジンとしてmroongaを使ってデータを書き込み 違いは、mroongaというストレージエンジン内部の処理の中にありま す。上記の説明では「mroongaを使ってデータを書き込み」の部分に 違いがあります。それでは、「mroongaを使ってデータを書き込み」 の部分の処理をみてみましょう。 データは以下のような流れで登録されます。 MySQLクライアント ↓ SQL(INSERT) MySQLサーバー (SQLハンドラー) ↓ ストレージエンジンとやりとりするためのC++のAPI mroonga ↓ groongaのCのAPI groongaのデータベース 「mroongaデータ書き込みなし」と「mroonga」で違いがあるのはこ のうち mroonga ↓ groongaのCのAPI groongaのデータベース の部分です。 「mroongaデータ書き込みなし」は「groongaのCのAPI」を呼び出し ません。 「mroonga」は「groongaのCのAPI」を呼び出します。 つまり、以下のような違いになります。 「mroongaデータ書き込みなし」 ⇒ストレージエンジンとしてmroongaを使ってデータを書き込も うとするが、groongaのデータベースにはデータを書き込まな い(groongaのAPIを呼ばない) 「mroonga」 ⇒ストレージエンジンとしてmroongaを使ってデータを書き込も うとし、実際にgroongaのデータベースにデータを書き込む これで違いが伝わるでしょうか。 From: 田中 理恵 <rie_t****@fizs*****> Subject: [groonga-dev,00954] Re: 性能について Date: Mon, 25 Jun 2012 12:05:14 +0900 > お世話になっております、田中と申します。 > ご回答ありがとうございました。 > 大変参考になりました。 > > ちなみに、登録性能の計測結果で >> * 「mroongaデータ書き込みなし」と「mroonga」の処理の違い >> はgroongaに実際にデータを登録するかどうかである。 > とありますが、 > > 「mroongaデータ書き込みなし」 > ⇒MYSQLにデータを直接書き込み(groonga経由なし) > 「mroonga」 > ⇒groongaにデータ登録後、MYSQLにデータ書き込み > > といった理解でよろしいでしょうか? > > 勘違いでしたらご指摘よろしくお願い致します > > -- > 田中 理恵 <rie_t****@fizs*****> > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/groonga-dev