Из того, что я понимаю, реализация Btree в CouchDB фактически использует технику Shadowing, и каждое обновление будет создавать новый root, следующие выдержки из этого PDF (похоже, что он реализует алгоритм лучше, чем традиционное теневое копирование).
Затенение означает, что для обновления
страница на диске, вся страница читается
в память, модифицированный и позже
записывается на диск по другому
место нахождения. Когда страница затенена, ее
место на диске меняется, это создает
необходимость обновления (и тени)
непосредственный предок страницы с
новый адрес. Затенение распространяется
до корня файловой системы.
Как couchdb осуществляет выборку всех листовых ревизий, насколько это возможно (поскольку некоторые ревизии удаляются в процессе сжатия)? Хранит ли couch указатель, который указывает на предыдущие ревизии?
Спасибо
Chang