У документов CouchDB есть DAG? - PullRequest
2 голосов
/ 05 октября 2011

Я смотрю на CouchDB. Документы имеют версии, и у вас могут быть конфликтующие версии. Сохраняет ли она последовательность версий в виде ориентированного ациклического графа (DAG), как это делает dvcs? Если нет, то как это реализовано?

Ответы [ 2 ]

3 голосов
/ 05 октября 2011

Да, последовательность ревизий равна аналогично ориентированному ациклическому графу.Я обсуждал это (на концептуальном уровне) в Репликация CouchDB похожа на Git .

Мне нравится говорить, что CouchDB похож на Git в педагогических целях.Однако есть существенные различия.Вот несколько примеров:

  • CouchDB не хранит старые данные , только старые идентификаторы ревизий
  • CouchDB в конечном итоге усекает очень длинные истории ревизий, чтобы сохранить производительность

Таким образом, я не уверен, что вы сможете добиться трехстороннего слияния на практике, потому что самое большее у вас будет только две ревизии данных для работы: источник и цель.Будет известно, что общий предок существует, но его значение не будет.

Хотя это может быть проблемой в целом , существует несколько «читов», которые делают его не таким уж плохим на практике.

  • Функция validate_doc_update() предотвращает произвольные изменения.Это может даже потребовать изменения метаданных, которые будут сохранены как часть документа.(Но это решение на уровне приложений.)
  • Большой класс данных для большого класса приложений может быть объединен в двух направлениях: например, выберите последнюю метку времени;объединить разные телефонные номера в массив телефонных номеров;и т. д.

Очевидно, что они сильно зависят от приложения и не являются общими решениями.

0 голосов
/ 05 октября 2011

Нельзя полагаться на версии документов в CouchDB, они хранятся только для разрешения конфликтов во время репликации.Предыдущие версии документов удаляются при сжатии .

Вики CouchDB содержит подробностей по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...