[groonga-dev,00955] Re: 性能について

Zurück zum Archiv-Index

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




groonga-dev メーリングリストの案内
Zurück zum Archiv-Index