Background
Sto prototipando una conversione dal nostro database RDBMS a MongoDB. Durante la denormalizzazione, sembra che io abbia due scelte, una che porta a molti (milioni) di documenti più piccoli o una che porta a meno (centinaia di migliaia) documenti di grandi dimensioni.
Se potessi distillarlo in un semplice analogo, sarebbe la differenza tra una raccolta con meno documenti cliente come questo (in Java):
classe Cliente {
nome stringa privato;
indirizzo di indirizzo privato;
// ogni carta di credito ha centinaia di istanze di pagamento
private Set <CreditCard> creditCards;
}
o una raccolta con molti, molti documenti di pagamento come questo:
class Payment {
cliente cliente privato;
CreditCard privato creditCard;
data privata payDate;
private float payAmount;
}
Domanda
MongoDB è progettato per preferire molti, molti piccoli documenti o meno documenti grandi? La risposta dipende principalmente dalle query che intendo eseguire? (ad esempio, quante carte di credito ha il cliente X? vs Qual è stato l'importo medio pagato da tutti i clienti il mese scorso?)
Mi sono guardato intorno molto ma non sono incappato in nessuna best practice per lo schema MongoDB che mi aiutasse a rispondere alla mia domanda.