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

Back to archive index

Kouhei Sutou kou****@clear*****
2011年 5月 14日 (土) 11:35:42 JST


須藤です。

In <070b3911-d9a0-3c69-988b-efc3c8f178ac @ api106>
  "[groonga-dev,00522] Re: Re: キャッシュのクリア" on Sat, 14 May 2011 05:39:50 +0900,
  "Endo Akira" <endo4****@goo*****> wrote:

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

はい、そうです!

で、余談になるのですが、
  http://groonga.org/docs/characteristic.html#id6
に書かれている「自動クエリキャッシュ機構」というのはgroonga
コマンド(*)を使ったときには使われるのですが、rroongaで直接検索
したりデータを登録するときには使われません。
Database#touchが必要になるのは、
  * データ更新: rroonga
  * 検索: groongaサーバ
としているケースです。

(*) groongaコマンドは「groonga -s DBパス」や「groonga -d DBパ
    ス」などとしてサーバプロセスとして利用したり、「groonga
    DBパス < 入力ファイル」としてバッチ処理実行ツールとして利
    用します。

    このような使い方と、rroongaのようにgroongaをライブラリと
    して使う方法は区別して考える必要があります。以下のような
    違いがあります。
      * groongaコマンドの方がrroongaよりも高レベルなAPIを提
        供している。
      * rroongaの方がgroongaコマンドよりも自由度が高い。
    「自動キャッシュ機構」はgroongaコマンドが提供している
    「高レベルなAPI」の一部です。そのため、rroongaにはその機
    能はありません。

> groongaのDocumentationの中にはtouchに相当するものが
> 見当たらないようです。

す、すみません。。。
現在のgroongaのドキュメントはgroongaをコマンド(サーバやバッ
チ処理ツール)として使うケースのみカバーしていて、groongaを
ライブラリとして使うケース(rroongaのケース)はほとんどカバー
しきれていないのです。

groongaをコマンドとして使う場合は、内部でうまいことやっている
のでtouchを使う必要はありません。そのため、まだドキュメント
には反映されていません。

>                       また、groongaで存在するレコードの
> データを修正するにはどうするのでしょうか。削除してloadする?

rroongaではなくて、groongaコマンドでやりたいってことですよね?

修正する場合はloadで上書きしてください。

例えば、最初は"Yamada Taro"という名前だったとします。

load --table Users
[
{"_key": "taro", "name": "Yamada Taro"}
]

これにミドルネームをいれる場合は以下のように同じキーで既存の
カラムの値を変更してください。

load --table Users
[
{"_key": "taro", "name": "Yamada  Taro (John)"}
]

索引も一緒に更新されるので、データの更新はこれだけで大丈夫で
す。


そもそもレコードが必要なくなった場合はdeleteで削除してくださ
い。

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

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




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