¿Puede compartir sus pensamientos sobre cómo implementaría el control de versiones de datos en MongoDB? (He hecho una pregunta similar con respecto a Cassandra . Si tiene alguna idea sobre qué base de datos es mejor para eso, por favor comparta)
Supongamos que necesito versionar registros en una libreta de direcciones simple. (Los registros de la libreta de direcciones se almacenan como objetos planos json). Espero que la historia:
- se usará con poca frecuencia
- se utilizará de una vez para presentarlo en forma de "máquina del tiempo"
- no habrá más versiones que unos pocos cientos para un solo registro. La historia no caducará.
Estoy considerando los siguientes enfoques:
Cree una nueva colección de objetos para almacenar el historial de registros o los cambios en los registros. Almacenaría un objeto por versión con una referencia a la entrada de la libreta de direcciones. Dichos registros se verían de la siguiente manera:
{ '_id': 'nueva identificación', 'user': user_id, 'marca de tiempo': marca de tiempo, 'address_book_id': 'id del registro de la libreta de direcciones' 'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ...} }
Este enfoque se puede modificar para almacenar una variedad de versiones por documento. Pero este parece ser un enfoque más lento sin ninguna ventaja.
Almacene versiones como objeto serializado (JSON) adjunto a las entradas de la libreta de direcciones. No estoy seguro de cómo adjuntar dichos objetos a los documentos de MongoDB. Quizás como un conjunto de cuerdas. ( Modelado a partir de versiones de documentos simples con CouchDB )