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

Diseño de esquema de MongoDB:¿muchos documentos pequeños o menos documentos grandes?

Definitivamente necesitarás optimizar para las consultas que estás haciendo.

Esta es mi mejor suposición basada en tu descripción.

Probablemente querrá conocer todas las Tarjetas de crédito de cada Cliente, así que mantenga una matriz de ellas dentro del Objeto Cliente. Probablemente también querrá tener una referencia de Cliente para cada Pago. Esto mantendrá el documento de pago relativamente pequeño.

El objeto Pago tendrá automáticamente su propio ID e índice. Probablemente también desee agregar un índice en la referencia del cliente.

Esto le permitirá buscar rápidamente Pagos por Cliente sin almacenar todo el objeto del cliente cada vez.

Si desea responder preguntas como "¿Cuál fue el monto promedio que pagaron todos los clientes el mes pasado?" en su lugar, querrá un mapa/reducción para cualquier conjunto de datos considerable. No está recibiendo esta respuesta "en tiempo real". Descubrirá que almacenar una "referencia" al Cliente es probablemente lo suficientemente bueno para estas reducciones de mapa.

Entonces, para responder a su pregunta directamente:¿MongoDB está diseñado para preferir muchos, muchos documentos pequeños o menos documentos grandes?

MongoDB está diseñado para encontrar entradas indexadas muy rápidamente. MongoDB es muy bueno para encontrar algunos agujas en un gran pajar. MongoDB no muy bueno para encontrar la mayoría de las agujas en el pajar. Por lo tanto, construya sus datos en torno a sus casos de uso más comunes y escriba asignaciones/reducción de trabajos para los casos de uso más raros.