sql >> Database >  >> NoSQL >> MongoDB

MongoDB Schema Design - Veel kleine documenten of minder grote documenten?

Je zult zeker moeten optimaliseren voor de zoekopdrachten die je doet.

Dit is mijn beste schatting op basis van je beschrijving.

U wilt waarschijnlijk alle creditcards voor elke klant weten, dus bewaar een reeks daarvan in het klantobject. U wilt waarschijnlijk ook een klantreferentie hebben voor elke betaling. Hierdoor blijft het betalingsdocument relatief klein.

Het Betaalobject krijgt automatisch een eigen ID en index. U wilt waarschijnlijk ook een index toevoegen aan de klantreferentie.

Hiermee kunt u snel naar Betalingen per klant zoeken zonder telkens het hele klantobject op te slaan.

Als je vragen wilt beantwoorden zoals 'Wat was het gemiddelde bedrag dat alle klanten vorige maand betaalden' je wilt in plaats daarvan een kaart / verkleining voor elke omvangrijke dataset. Je krijgt deze reactie niet "realtime". U zult merken dat het opslaan van een "verwijzing" naar de klant waarschijnlijk goed genoeg is voor deze kaartverkleiningen.

Dus om uw vraag direct te beantwoorden:Is MongoDB ontworpen om de voorkeur te geven aan veel, veel kleine documenten of minder grote documenten?

MongoDB is ontworpen om zeer snel geïndexeerde vermeldingen te vinden. MongoDB is erg goed in het vinden van een paar naalden in een grote hooiberg. MongoDB is niet erg goed in het vinden van de meeste van de spelden in de hooiberg. Dus bouw uw gegevens rond uw meest voorkomende gebruiksscenario's en schrijf kaart-/reduceertaken voor de zeldzamere gebruiksscenario's.



  1. Hoe casbah mongodb-lijst naar json te converteren in scala / play

  2. Voeg een Pandas-dataframe in mongodb in met behulp van PyMongo

  3. Efficiënte manier om gegevens uit Redis . in kaart te brengen

  4. Wat is Mongoose-fout Gegoten naar ObjectId mislukt voor waarde XXX op pad _id?