Actualmente estoy trabajando en una aplicación wiki-esque usando CouchDB y estoy tratando de implementar un esquema de versiones de documentos. A mi modo de ver, hay dos formas de hacerlo:
- Almacene cada versión como un documento separado
- Almacene versiones anteriores como archivos adjuntos en un solo documento.
En este momento, tengo una forma de # 1 funcionando. Cuando un usuario edita un documento y lo guarda, el back-end primero copia la revisión anterior a un nuevo documento y luego guarda la nueva versión. Cada documento tiene una matriz de "historial" que contiene datos sobre cada versión (el documento _id de la versión anterior, una marca de tiempo, el editor, etc.).
Dado que esta matriz de historial podría ser bastante larga para un documento actualizado con frecuencia, tengo una vista que recupera un documento sin historial durante una lectura normal (y otra vista para recuperar el historial).
Mi pregunta es esta: me siento incómodo con mi enfoque actual y he estado pensando en cambiar al método de "apego". Pero no estoy seguro. Espero que alguien que conozca CouchDB mejor que yo (solo he estado en esto durante un par de semanas, y este es mi primer proyecto con CouchDB ... y NoSQL) pueda decirme cuáles son los pros y los contras de cada uno. Acercarse. ¿O tal vez hay algún otro esquema de versiones que estoy pasando por alto?