Você pode compartilhar seus pensamentos como implementaria a versão de dados no MongoDB. (Eu fiz uma pergunta semelhante a respeito de Cassandra . Se você tem alguma idéia de qual db é melhor para isso, compartilhe)
Suponha que eu precise atualizar os registros em um catálogo de endereços simples. (Os registros do catálogo de endereços são armazenados como objetos json simples). Espero que a história:
- será usado com pouca frequência
- será usado de uma só vez para apresentá-lo de forma "máquina do tempo"
- não haverá mais versões do que algumas centenas para um único registro. a história não vai expirar.
Estou considerando as seguintes abordagens:
Crie uma nova coleção de objetos para armazenar o histórico de registros ou alterações nos registros. Ele armazenaria um objeto por versão com uma referência à entrada do catálogo de endereços. Esses registros teriam a seguinte aparência:
{ '_id': 'novo ID', 'usuário': user_id, 'timestamp': timestamp, 'address_book_id': 'identificação do registro do catálogo de endereços' 'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ...} }
Essa abordagem pode ser modificada para armazenar uma matriz de versões por documento. Mas essa parece ser uma abordagem mais lenta, sem vantagens.
Armazene versões como objeto serializado (JSON) anexado às entradas do catálogo de endereços. Não sei como anexar esses objetos aos documentos do MongoDB. Talvez como uma série de strings. ( Modelado após o Simple Document Versioning com CouchDB )