Kouhei Sutou
kou****@clear*****
2010年 11月 29日 (月) 16:56:22 JST
須藤です。 In <AANLkTi=cUbGN5=kew_gpZ7XZv96oeunbBpaw=0=RDQr+****@mail*****> "[groonga-dev,00410] groonga のスタンドアロン起動 or HTTPサーバ起動" on Mon, 29 Nov 2010 14:58:40 +0900, tatsuya sasaki <tatsu****@gmail*****> wrote: > rroongaでの接続、HTTPからの接続等いろいろ試している > 段階の初心者です。 > 開発者様、すばらしいアプリケーションの開発ありがとうございます! ありがとうございます! > Web(Rails3)とgroongaが同一サーバに存在することになるので > 是非ともrroongaを使用したいところではあるのですが、その場合は > 検索リクエストの度にgroongaのdbファイルを開き検索を行うこと > になり(groonga側にキャッシュが存在せず?)パフォーマンスが気に > なっております。 > # るびまサーチがこの方式だったような・・・。 たしかにるりまサーチはgroongaサーバを起動しない構成です。 が、リクエスト毎にDBファイルを開くのではなく、Webフロントエ ンドのプロセス(RailsではなくRackベース)が起動する時に一度 だけ開いています。(config.ruで開いています。) Rails 3の場合はActiveGroongaを使うとそのあたりの面倒をみてく れます。 Gemfileに以下を追加して、 gem 'activegroonga' config/application.rbの require 'rails/all' の次の行に require 'active_groonga/railtie' を加えると、起動時に一度だけDBファイルを開いて、そのプロセス ではずっと使いつづけます。現在使っているrroongaのコードは変 更する必要はありません。 (データベースのパスはconfig/groonga/ymlで指定できます。) > groongaをHTTPサーバとして起動すれば毎回dbファイルを開くことも > なく、キャッシュ等も生存してくれるとは思うのですが、この辺りの > パフォーマンスの違いは大きいものでしょうか? groongaをサーバとして利用した場合、同じクエリがきた場合はキャッ シュした結果を返しています。例えば、 select --table users --match_columns name --query 山田 というクエリを2回実行すると、2回目はキャッシュされた結果が返っ てきます。rroongaで直接データベースを扱っている場合はこの機能 はありません。 代わりに、Webフロントエンドの結果(HTTPレスポンス)をキャッ シュするRackミドルウェアがあります。るりまサーチもこれを使っ て、HTTPレスポンスをキャッシュしています。Rails 3もRackベー スなのでこれを使用することができます。 このキャッシュをするRackミドルウェアはrackngaというパッケー ジにRacknga::Middleware::Cacheという名前で含まれています。 このミドルウェアはキャッシュ用のgroongaデータベースを作成し ます。groongaのデータベースは複数のプロセス(Webフロントエン ド)から同時に開くことができるので、Webフロントエンドを同時 に複数立ち上げているときでもキャッシュを共有することができま す。ただ、まだ導入ドキュメントがないので、使い方はるりまサー チを見てください、ということになってしまいます。。。 > ちなみにシステムの要件としては、 > 200万文書(1文書500文字程度)を全文検索できるようにする。 > 検索を同時に行うユーザ数は多くても10人くらいです。(通常は2,3人です。) > システム環境は、CPU 3GHz, Memory 4GB です。 > > 検索の都度 rroonga で dbファイルを開いて検索しても余裕でさばける > ものでしょうか? ざっくりですが。。。 データベースファイル全体の容量はどのぐらいになっていますか? (du -hs $(dirname ${DATABASE_PATH})) それが全部メモリに載るようなら大丈夫そうな気がしますが。。。 (今夜、詳しい人に聞いてみます!) -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) Mozilla Firefox/Thunderbirdサポート: http://www.clear-code.com/services/mozilla/menu.html 迷惑メール対策: http://www.clear-code.com/software/milter-manager.html テスティングフレームワーク: http://www.clear-code.com/software/cutter.html http://www.clear-code.com/software/uxu.html