В настоящее время я работаю над приложением wiki-esque, использующим CouchDB, и пытаюсь реализовать схему управления версиями документа. На мой взгляд, есть два способа сделать это:
- Храните каждую версию как отдельный документ
- Храните старые версии в виде вложений в одном документе.
Прямо сейчас у меня работает форма № 1. Когда пользователь редактирует документ и сохраняет его, серверная часть сначала копирует предыдущую редакцию в новый документ, а затем сохраняет новую версию. Каждый документ имеет массив 'history', который содержит данные о каждой версии (документ _id старой версии, метка времени, редактор и т. Д.).
Поскольку этот массив истории может быть довольно длинным для часто обновляемого документа, у меня есть представление, которое извлекает документ без истории во время обычного чтения (и другое представление для извлечения истории).
Мой вопрос таков: я чувствую себя неловко из-за своего нынешнего подхода и думаю о переходе на метод «привязанности». Но я не уверен. Я надеюсь, что кто-то, кто знает CouchDB лучше меня (я занимался этим всего пару недель - и это мой первый проект с использованием CouchDB ... и NoSQL), может рассказать мне о плюсах и минусах каждого из них. подходить. Или есть какая-то другая схема управления версиями, которую я пропускаю?