Pregunta

Estoy tratando de descubrir cómo implementar esto mejor para mi sistema ... y sacar mi cabeza del espacio RDBMS por ahora ...

Una parte de mi DB actual tiene tres tablas: show, showEntry y entrada. Básicamente, ShowEntry es una tabla de unión de muchos a muchos entre el espectáculo y la entrada. En mi RDBMS, pensando que es bastante lógico, ya que cualquier cambio para mostrar detalles se puede hacer en un solo lugar, y lo mismo con la entrada.

¿Cuál es la mejor manera de reflejar esto en un almacenamiento basado en documentos? Estoy seguro de que no hay una sola forma de hacer esto, pero no puedo evitar pensar si el almacenamiento basado en documentos es apropiado para este caso.

Para su información, actualmente estoy considerando implementar RAVENDB. ¡Si bien las discusiones sobre el diseño general de NoSQL serán buenas, una más ravendb enfocada será fantástica!

Gracias: D.

¿Fue útil?

Solución

Al modelar una relación de muchos a muchos en una base de datos de documentos, generalmente almacena una colección de claves extranjeras en solo uno de los documentos. El documento que elija depende en gran medida de la dirección en la que pretende atravesar la relación. Atravesarlo una forma es trivial, atravesarlo a la otra forma requiere un índice.

Tome el ejemplo de la canasta de compras. Es más importante saber exactamente qué artículos hay en una canasta en particular de qué canastas contienen un elemento en particular. Dado que generalmente estamos siguiendo la relación en la dirección de canasta a ítem, tiene más sentido almacenar las identificaciones de artículos en una canasta que para almacenar las identificaciones de la canasta en un artículo.

Todavía puede atravesar la relación en la dirección opuesta (por ejemplo, encontrar canastas que contengan un elemento en particular) mediante el uso de un índice, pero el índice se actualizará en segundo plano, por lo que no siempre será 100% preciso. (Puede esperar a que el índice sea preciso con WaitForNonStaleResults, pero ese retraso se mostrará en su interfaz de usuario).

Si necesita una precisión inmediata del 100% en ambas direcciones, puede almacenar claves extranjeras en ambos documentos, pero su aplicación tendrá que actualizar dos documentos cada vez que se cree o destruya una relación.

Otros consejos

Este ¡Fue un largo camino para resolver mi pregunta!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top