MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB Schema Design - Molti piccoli documenti o meno documenti di grandi dimensioni?

Avrai sicuramente bisogno di ottimizzare per le query che stai facendo.

Ecco la mia ipotesi migliore in base alla tua descrizione.

Probabilmente vorrai conoscere tutte le carte di credito per ogni cliente, quindi mantieni una serie di quelle all'interno dell'oggetto cliente. Probabilmente vorrai anche avere un riferimento cliente per ogni pagamento. Ciò manterrà il documento di pagamento relativamente piccolo.

L'oggetto Pagamento avrà automaticamente un proprio ID e indice. Probabilmente vorrai aggiungere anche un indice al riferimento del cliente.

Ciò ti consentirà di cercare rapidamente Pagamenti per cliente senza memorizzare ogni volta l'intero oggetto cliente.

Se vuoi rispondere a domande come "Qual è stato l'importo medio pagato da tutti i clienti il ​​mese scorso" vorrai invece una mappa / riduzione per qualsiasi set di dati di dimensioni considerevoli. Non stai ricevendo questa risposta "in tempo reale". Scoprirai che la memorizzazione di un "riferimento" al Cliente è probabilmente abbastanza buona per queste riduzioni della mappa.

Quindi, per rispondere direttamente alla tua domanda:MongoDB è progettato per preferire molti, molti documenti piccoli o meno documenti grandi?

MongoDB è progettato per trovare le voci indicizzate molto rapidamente. MongoDB è molto bravo a trovarne pochi aghi in un grande pagliaio. MongoDB non molto bravo a trovarne la maggior parte degli aghi nel pagliaio. Quindi costruisci i tuoi dati attorno ai casi d'uso più comuni e scrivi mappa/riduci lavori per i casi d'uso più rari.