5

この投稿に従って、 Couchbaseビューをテストします。ビューを編集するときにCouchbase GUIを使用して保存すると、ビューがすぐに更新されませんでした。

たとえば、phpスクリプトを使用して、いくつかの配列をCouchbaseに格納し、「dev_sessions」ドキュメントで名前付きの「最後の」ビューを定義します。

function (doc) {
if(doc.namespace == 'sessions') {
emit(doc.lastSeen, 1);
}
}

次に、curlを使用してjsonの結果を取得します。初めて:

$ curl
http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[ ] }

2番:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352872218,"value":1},
{"key":1352879418,"value":3}
]
}

別のテストでは、phpスクリプトに新しい配列を追加します。

'eb255262434407766f212d1b6f23' => array(
'namespace' => 'sessions',
"type" => "user",
"userID" => "1107",
'lastSeen' => time(),
'firstSeen' => time(),
"remoteAddress" => "2.3.4.5",
"location" => "Vienna/Austria",
"name" => "Golden K"

初めてcurlを実行します。

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352872218,"value":1},
{"key":1352879418,"value":3}
]
}

2回目:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352875163,"value":1},
{"key":1352882363,"value":4}
]
}

データを変更したり、スクリプトを表示したりする場合はViews - 'Show Results'、CouchbaseGUIのボタンをクリックしてください。1回目と2回目は異なります。ビューがすぐに更新されないのはなぜですか?

4

1 に答える 1

12

これは予想される動作です。Couchbaseは、デフォルトでは、ビューの呼び出し後にインデックスを「更新」します。そして、これにより応答時間が短縮されます。

ビューを実行するときは、staleパラメーターを使用してビューのステータス(実際にはそのインデックス)を制御できます。

あなたの場合は、次のことを行ってください。

curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true&stale=false'

また、データをアプリケーションに返す前にインデックスを更新します。

ドキュメントには、このパラメータに関するすべての情報と、ビューがどのように機能しているかが記載されています。

http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-stale.html

于 2012-11-14T09:04:32.517 に答える