[groonga-dev,00518] Re: キャッシュのクリア

Back to archive index

Kouhei Sutou kou****@clear*****
2011年 5月 13日 (金) 17:21:41 JST


須藤です。

In <a6908f01-3b33-33d8-9193-881016b4afc6 @ api106>
  "[groonga-dev,00516] Re: Re: キャッシュのクリア" on Fri, 13 May 2011 12:18:53 +0900,
  "Endo Akira" <endo4****@goo*****> wrote:

> 状況をどのように伝えられるか、も技量のうちで、どこが肝か分からないのが
> 質問しますので、申し訳ありません。

いえいえ!

> さて、実際の構成は、
>> 検索:
>>   ブラウザ <- HTTP ->  Rails3 (DBはここ)
>>                        rroonga
>>                      context.sendで検索
>>                 (table.selectなどは使っていない)
>> 
>> 更新:
>>   データ → rroonga (DBはここ)
>>             データ更新
>> 
>> まずは、私が理解している構成があったいるかどうかを教えてもら
>> えると嬉しいです!
> で大体合っていて、Rails3からの検索は、Groonga["name"].select{|r| r=~"search_text"}と
> 書いています。
> 
> 更新は別の場所にDBを相対パスで作り、Rails3の中に移動させています。

なんとなくわかった気がします!

データベースを更新するときは、↑のRails3のところはこうなって
いるんですね?

  1. Rails3は更新前のデータベースを開いている。
  2. 別プロセスでrroongaが新規にデータベースを作る。
  3. 2.のプロセスが2.で作ったデータベースにデータを投入する。
  4. 1.が開いているデータベースを移動して、2-3.で作ったデー
     タベースを1.が開いていたパスへ移動する。

で、

  5. Rails3を再起動。
  6. Rails3は2.-3.で作った新しいデータベースの内容で検索開始。

ということですね?

そして、本当は5.で再起動せずに別の方法で6.を実現したいという
ことですね?


↑が当たっているとして話を進めると、5.で行っていることは
「キャッシュのクリア」ではなくて、「データベースの再オープン」
です。Rails3とは別プロセスでデータベースファイル群を移動して
も(4.の作業)、Rails3は移動前のデータベース(1.で開いている
データベース)を開いたままです。そのため、6.を実現するために
は、Rails3は2.-3.で作ったデータベースを再オープンする必要が
あります。

データベースの再オープンはRails3のところのアプリケーション固
有の問題になるので、再起動せずにデータベースの再オープンを実
現するのであれば、それ用の仕組みを組み込む必要があります。

個人的には再起動でいいような気がします。
(PassengerでRails3を動かしているのであれば、夜のDB更新後に
"touch #{Rails.root}/tmp/restart.txt"するのがよいと思います。)

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

プログラミングが好きなソフトウェア開発者を募集中:
  http://www.clear-code.com/recruitment/




groonga-dev メーリングリストの案内
Back to archive index