Contexte
Je suis en train de prototyper une conversion de notre base de données SGBDR vers MongoDB. Lors de la dénormalisation, j'ai l'impression d'avoir deux choix : celui qui conduit à de nombreux (millions) petits documents ou celui qui conduit à moins (centaines de milliers) de gros documents.
Si je pouvais le réduire à une simple analogie, ce serait la différence entre une collection avec moins de documents clients comme ceci (en Java) :
class Customer {
private String name;
private Address address;
// each CreditCard has hundreds of Payment instances
private Set<CreditCard> creditCards;
}
ou une collection avec beaucoup, beaucoup de documents de paiement comme celui-ci :
class Payment {
private Customer customer;
private CreditCard creditCard;
private Date payDate;
private float payAmount;
}
Question
MongoDB est-il conçu pour préférer de très nombreux petits documents ou moins de gros documents ? La réponse dépend-elle principalement des requêtes que je prévois d'exécuter ? (par exemple, combien de cartes de crédit le client X possède-t-il ? vs quel était le montant moyen payé par tous les clients le mois dernier) ?
J'ai beaucoup cherché, mais je ne suis pas tombé sur les meilleures pratiques en matière de schéma MongoDB qui m'auraient aidé à répondre à ma question.