Search:

Search all manuals
Search this manual
Manual
Couchbase Server マニュアル 2.0
Community Wiki and Resources
Couchbase Server 2.0をダウンロード
Couchbase 開発者ガイド 2.0
クライアントライブラリ
Couchbase Server フォーラム
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
9.2 ビューの動作
Chapter Sections
Chapters

9.2.4. インデックス更新とstaleパラメータ

インデックスはビューの定義に基づき、Couchbase Serverによって作成されますが、これらのインデックスの更新はデータが挿入される際にではなく、データをクエリする際に制御できます。問い合わせの時にインデックスが更新されるかどうかはstaleパラメータで制御することが可能です。

注記

staleパラメータにかかわりなく、一度ドキュメントがディスクに永続化されると、ドキュメントはシステムによってインデックスされます。ドキュメントがディスクに永続化されていない場合、staleの使用はこのプロセスを強制しません。observe操作を使用すると、いつドキュメントがディスクに永続化され、そして/もしくはインデックスが更新されたかを監視することができます。

注記

ビューはまた、ドキュメントの変更、あるいは間隔カウントに応じて自動的に更新することができます。「インデックスの自動更新」を参照してください。

staleは3つの値がサポートされています。

警告

インデックスエンジンは非同期処理です。これは、インデックスへの問い合わせは想定しない結果を提供することを意味します。たとえば、ドキュメントを更新して、すぐにそのドキュメントにクエリした場合、出力されるビューデータに新しい情報を取得できないかもしれません。これはその更新がインデックスされた時点でドキュメントの更新がまだディスクにコミットされていないからです。

これは、削除したあとさえも、その削除されたドキュメントがまだインデックスから削除されていないため、削除されたドキュメントがインデックスにまだ表示されるということも意味します。

両方のシナリオでは、ドキュメントの永続化状況の検証のためにクライアントからpersisttoの引数でobserveコマンドを使用し、stale=falseを使用してビューの更新を強制すべきです。これはドキュメントがビューインデックス内で正しく更新されることを保証します。詳細については、Couchbase 開発者ガイドの監視の使用を参照してください。

同一のインデックスにアクセスする複数のクライアントがあるとき、インデックス更新処理とクライアントへ返却する結果は各クライアントが渡したパラメータとクライアントとサーバの相互作用する順番に依存します。

注記

もし、複数のクライアントが情報が返される前にビューが更新されるようなリクエスト(stale=false)をした場合、インデックスの更新はスタックしてしまいます。これにより、複数のクライアントがインデックスを更新、およびクエリし、その度にドキュメントとビューのバージョンが更新されることが保証されます。stale=update_afterクエリにより、すべての更新がクエリにアクセスされたあとで行われるので、スタックが発生しません。

シーケンシャルなアクセス

  1. クライアント1がstale=okでビューをクエリ

  2. クライアント2がstale=falseでビューをクエリ

  3. ビューが更新されます

  4. クライアント1がstale=okで再びクエリ

  5. クライアント1は更新されたバージョンのビューを取得

上記のシナリオは、レコードの順序が各クエリで異なる可能性があり、複数のレコードに対してページング処理をしている場合に問題が起きる場合があります。