sql >> Base de Datos >  >> NoSQL >> MongoDB

Formas de implementar el control de versiones de datos en MongoDB

La primera gran pregunta al sumergirse en esto es "¿cómo desea almacenar los conjuntos de cambios" ?

  1. ¿Diferencias?
  2. ¿Copias de registros completos?

Mi enfoque personal sería almacenar diferencias. Debido a que la visualización de estas diferencias es realmente una acción especial, colocaría las diferencias en una colección de "historial" diferente.

Usaría la colección diferente para ahorrar espacio en la memoria. Por lo general, no desea un historial completo para una consulta simple. Entonces, al mantener el historial fuera del objeto, también puede mantenerlo fuera de la memoria de acceso común cuando se consultan esos datos.

Para facilitarme la vida, haría que un documento de historial contuviera un diccionario de diferencias con marca de tiempo. Algo como esto:

{
    _id : "id of address book record",
    changes : { 
                1234567 : { "city" : "Omaha", "state" : "Nebraska" },
                1234568 : { "city" : "Kansas City", "state" : "Missouri" }
               }
}

Para facilitarme la vida, lo convertiría en parte de mis DataObjects (EntityWrapper, lo que sea) que uso para acceder a mis datos. En general, estos objetos tienen algún tipo de historial, por lo que puede anular fácilmente el save() método para hacer este cambio al mismo tiempo.

ACTUALIZACIÓN:2015-10

Parece que ahora hay una especificación para manejar las diferencias JSON. Esta parece una forma más robusta de almacenar las diferencias/cambios.