Я немного читал о CouchDB, и я действительно заинтригован тем, что он "append-only". Возможно, я ошибаюсь, но, как я понимаю, он работает примерно так:
-
данные добавляются в момент времени t0 в БД, сообщая, что пользователь с именем ID 1 является "Cedrik Martin"
-
запрос с запросом "что такое имя пользователя с идентификатором 1?" возвращает "Cedrik Martin"
-
в момент t1 в БД происходит обновление: "Имя пользователя с идентификатором 1 - это Cedric Martin" (изменение "k" на "c" ).
-
запрос с запросом "имя пользователя с идентификатором 1" теперь возвращает "Cedric Martin"
Это глупый пример, но это потому, что я хотел бы понять что-то фундаментальное в CouchDB.
Видно, что обновление было выполнено с помощью добавления в конце БД, возможно ли запросить БД "как это было в момент времени t0", не делая ничего особенного?
Могу ли я спросить CouchDB "Каково было имя пользователя с идентификатором 1 в момент времени t0?"
РЕДАКТИРОВАТЬ первый ответ очень интересный, и поэтому у меня есть более точный вопрос: до тех пор, пока я не "уплотняю" CouchDB, я могу писать запросы, которые каким-то образом "ссылаются" прозрачный "(т.е. они будут всегда выдавать тот же результат)? Например, если я запрашиваю" document d при ревизии r", я гарантированно всегда получаю тот же ответ, если я не уплотняю БД?