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/