Мне интересно, что на самом деле хранится в B-дереве базы данных CouchDB? CouchDB: полное руководство сообщает, что B-дерево базы данных используется только для операций добавления и что база данных хранится в одном B-дереве (кроме B-деревьев для каждого просмотра).
Таким образом, я предполагаю, что элементы данных, которые добавляются в файл базы данных, являются ревизиями документов, а не целыми документами:
+---------|### ...
| |
+------|###|------+ ... ---+
| | | |
+------+ +------+ +------+ +------+
| doc1 | | doc2 | | doc1 | ... | doc1 |
| rev1 | | rev1 | | rev2 | | rev7 |
+------+ +------+ +------+ +------+
Это правда?
Если значение равно true, то как определяется текущая версия документа на основе такого B-дерева?
Не означает ли это, что CouchDB нуждается в отдельной базе данных "view" для индексации текущих версий документов для сохранения доступа O (log n)? Не приведет ли это к гоночным условиям при создании такого индекса? (насколько я знаю, CouchDB не использует блокировки записи).