Se quedan como están - propiedades no existentes más serán ignorados durante la carga (y perdieron en el cambio), y las propiedades que faltan van a volver como nulo,
usted recomienda use las operaciones basadas en conjuntos para mantener los datos bajo control con el modelo de objetos.
¡Oh, mírame, ahora estoy en una computadora!
Correcto Así que, básicamente, al trasladarse a un almacén de documentos, tiene razón al reconocer que pierde alguna funcionalidad y obtiene cierta libertad ya que en una base de datos tiene un esquema inicial definido e intenta cargar datos que no funcionan t coincidir con ese esquema dará como resultado un error.
Es importante reconocer, sin embargo, que existe una diferencia entre sin esquema y sin estructura, ya que todos sus documentos contienen su propia estructura (pares clave/valor que denotan el nombre de la propiedad y el valor de la propiedad).
Esto hace que sea útil para el factor de "escribir" y para que sus datos persistan, pero al ser tan fácil cambiar la estructura de su código, puede ser más difícil conciliar eso con su ya persistido datos.
algunas estrategias se presentan en este punto:
- Haga su estructura inmutable una vez que haya persistido datos, la versión de sus clases
- permitir la modificación de la estructura, pero el uso de las operaciones basadas en conjuntos para actualizar los datos a coincidir nueva estructura
- Permitir la modificación de la estructura, y escribir código para hacer frente a las inconsistencias al cargar datos
La tercera es clara Es una mala idea, ya que dará lugar a un código inmanejable, las versiones de tus clases pueden funcionar si solo estás almacenando eventos u otros datos similares, pero no es realmente apropiado para la mayoría de los escenarios, por lo que te queda la opción del medio.
Recomendaría hacer exactamente eso, y siguiendo unas simples reglas en la misma línea que seguiría al tratar con un esquema inicial en una base de datos relacional.
- utilizar el sistema VCS para determinar los cambios entre las versiones desplegadas scripts de migración
- escribir que actualizar de una versión a otra
- Tenga cuidado con los cambios de nombre/extracción de propiedades - como cargar un documento y guardar el documento resultará la pérdida de datos si esas propiedades no existen en el nuevo documento
Etc.
espero que esto es más útil :-)
Seguramente me falta algo, pero IIRC es una base de datos de documentos * schema-less *, por lo que la única respuesta correcta es "no pasa nada". ¿Todavía existen exactamente en el mismo formato en que los pones * en * en ...? –
Muy buen punto ... maldita sea, ¡es difícil sacar mi cabeza del espacio relacional tradicional! – codedog
@codedog Creo que la idea no es necesariamente salir del espacio relacional tradicional, sino darse cuenta de que cada uno es una herramienta con un conjunto diferente de objetivos. Usamos una base de datos relacional y una base de datos NoSQL en nuestra aplicación. No construirías una casa entera con solo un martillo. Del mismo modo, no construirías una casa con solo una sierra. – Brain2000