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

Back to archive index

Endo Akira endo4****@goo*****
2011年 5月 14日 (土) 05:39:50 JST


遠藤です。

下記は了解しました。

DBを作り直しているので、既存のDBを修正してDatabase#touch
するのとはケースが違ったのですね。

groongaのDocumentationの中にはtouchに相当するものが
見当たらないようです。また、groongaで存在するレコードの
データを修正するにはどうするのでしょうか。削除してloadする?

> > さて、実際の構成は、
> >> 検索:
> >>   ブラウザ <- 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"するのがよいと思います。)

元データが追加だけではなく、修正もはいるものなので、差分でDBを
更新というのも面倒で、いちいち作り直しているのですが、
月曜日に差分を修正する形に組み直して、Database#touchして成果を
ご報告します。




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