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

Relaciones MongoDB para objetos

Eso depende.

Depende de cuántos de cada uno de estos tipos de objetos esperas tener. ¿Puede incluirlos todos en un solo documento MongoDB para un usuario determinado? Probablemente no.

Depende de las relaciones:¿la cuenta de usuario es una relación de uno a muchos o de muchos a muchos? Si es de una a muchas y el número de cuentas es pequeño, puede optar por ponerlas en una IList en un documento de usuario.

Todavía puede modelar relaciones en MongoDB con colecciones separadas PERO no hay uniones en la base de datos, por lo que debe hacerlo en el código. Cargar un usuario y luego cargar sus cuentas podría estar bien desde una perspectiva de rendimiento.

Puede indexar matrices INTO en documentos. No piense en un índice como un índice en un campo simple en un documento (como SQL). Puede usar, por ejemplo, una colección de etiquetas en un documento e indexar las etiquetas. (Ver http://www.mongodb.org/display/DOCS/Indexes #Índices-Matrices )

Cuando recupera o escribe datos, puede hacer una lectura parcial y una escritura parcial de cualquier documento. (ver http://www.mongodb.org/display /DOCS/Recuperando+un+subconjunto+de+campos )

Y, finalmente, cuando no puede ver cómo obtener lo que desea usando colecciones e índices, es posible que pueda lograrlo usando map reduce. Por ejemplo, para encontrar todas las etiquetas actualmente en uso ordenadas por su frecuencia de uso, mapear cada documento emitiendo las etiquetas utilizadas en él, y luego reducir ese conjunto para obtener el resultado que desea. Luego, puede almacenar el resultado de esa reducción de mapa de forma permanente y actualizarlo solo cuando lo necesite.

Otra preocupación:menciona calcular los totales por etiqueta. Si desea consistencia transaccional de calidad contable, es posible que MongoDB no sea la opción adecuada para usted. "Coherencia eventual" es el nombre del juego para los almacenes de datos NoSQL y, por lo general, no son adecuados para las transacciones financieras. Por ejemplo, no importa si un usuario ve una publicación de blog con 3 comentarios mientras que otro ve 4 porque encontraron diferentes copias de réplica que aún no están sincronizadas, pero para un informe financiero, ese tipo de consistencia sí importa:su ¡es posible que el informe no encaje!