2017-01-12 5 views
0

最近私はCouchbaseを使い始めました。前述のように、here Couchbaseは追加専用DBです。私の知る限り、更新されたドキュメントはCouchbaseのB +ツリーに添付されています。それとも、実際に元の文書に置き換わるのでしょうか?Couchbase文書を更新すると元の文書が置き換えられますか?

更新されたドキュメントが追加された場合、元のドキュメントの状態はどうなりますか?それはちょうど持続しているのですか、それとも自動圧縮によってある時点で削除されるのでしょうか?

答えて

1

Couchbaseは、アトミックトランザクションとして更新を処理するかどうかを設定できます。 Couchbaseの土地では、Couchbaseがドキュメントを格納する2つのメソッド、メモリとディスクを考慮する必要があります。

あなたの質問は、更新後にCouchbaseがどのようにドキュメントをディスクに保存するかという文脈の中で行われると思われます。

文書が変更された後、Couchbaseは、新しく変更された文書を他の読者が見るためにメモリ上で利用可能にし、最終的にディスクに保存します。後者は、あまりにも原子になるように設定することができます。

各文書の突然変異によって、更新された文書に関連する新しいCAS値が生成されます。 2つのCAS値は、ドキュメントの2つのバージョン(前バージョンと現在バージョン)の一意の識別子と考えてください。両方ともメモリとディスクに2つの別々の文書として保存されます。

したがって、以前のバージョンのドキュメントを格納しているディスクブロックを書き換えるのではなく、新しいドキュメントをディスクに完全に別のドキュメントとして保存します。ちなみに、Couchbaseは、他の文書の最後のどこで書かれたかを判断し、その直後に新しい文書をディスクに書き込むことによって、ディスク上の場所を選択します。

Couchbaseが指すようにガベージコレクションまたは圧縮が行われると、最終的に期限切れになった古いドキュメントを探し、最新のバージョンのみを残して取り出します。さらに、圧縮プロセスは、ディスク上のギャップを埋めることで、連続したストレージフットプリントを維持しようとします。

これらはすべて、オプションでよりアトミック的に設定可能ですが、最終的に一貫性があるというユースケースがある場合は、アーキテクチャが本当に輝きます。

はここで、アプリケーション層での同時文書変異を処理する方法に言及だが、CASの値がどのように機能するかを説明し、かなり良い仕事をしていません:あなたの詳細な回答のためhttps://developer.couchbase.com/documentation/server/current/sdk/concurrent-mutations-cluster.html

+0

感謝。私はすでにCASについて知っていましたが、追加プロセスについてはわかりませんでした。あなたの説明をありがとう。 –

関連する問題