Atualmente, estou trabalhando em um aplicativo wiki-esque usando o CouchDB e estou tentando implementar um esquema de versão de documentos. Na minha opinião, existem duas maneiras de fazer isso:
- Armazene cada versão como um documento separado
- Armazene versões mais antigas como anexos em um único documento.
No momento, tenho uma forma de # 1 funcionando. Quando um usuário edita um documento e o salva, o back-end primeiro copia a revisão anterior para um novo documento e, em seguida, salva a nova versão. Cada documento possui uma matriz de 'histórico' que contém dados em cada versão (o documento _id da versão antiga, um carimbo de data e hora, o editor etc.).
Como essa matriz de histórico pode ficar bastante longa para um documento atualizado com freqüência, eu tenho uma visão que busca um documento sem história durante uma leitura normal (e outra visão para buscar a história).
Minha pergunta é a seguinte: sinto-me desconfortável com a minha abordagem atual e tenho pensado em mudar para o método 'anexo'. Mas eu não tenho certeza. Espero que alguém que conheça o CouchDB melhor do que eu (eu estive nisso há algumas semanas - e este é o meu primeiro projeto usando o CouchDB ... e o NoSQL) possa me dizer quais são os prós e os contras de cada um. abordagem. Ou talvez haja algum outro esquema de versão que estou ignorando?