CouchDBデータベースのBツリーに実際に何が格納されているのでしょうか。CouchDB:The Definitive Guideには、データベースBツリーが追加専用操作に使用され、データベースが単一のBツリー(ビューごとのBツリー以外)に格納されることが記載されています。
したがって、データベースファイルに追加されるデータ項目は、ドキュメント全体ではなく、ドキュメントのリビジョンであると思います。
+---------|### ...
| |
+------|###|------+ ... ---+
| | | |
+------+ +------+ +------+ +------+
| doc1 | | doc2 | | doc1 | ... | doc1 |
| rev1 | | rev1 | | rev2 | | rev7 |
+------+ +------+ +------+ +------+
それは本当ですか?
それが本当なら、ドキュメントの現在のリビジョンは、そのようなBツリーに基づいてどのように決定されますか?
それは、CouchDBが、 O(log n)アクセスを維持するために、ドキュメントの現在のリビジョンにインデックスを付けるための別個の「ビュー」データベースを必要とするということではありませんか?そのような指標を構築している間、それは競合状態につながるのではないでしょうか?(私が知る限り、CouchDBは書き込みロックを使用しません)。