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

MongoDB Schema Design - Mange små dokumenter eller færre store dokumenter?

Du skal helt sikkert optimere til de forespørgsler, du laver.

Her er mit bedste gæt baseret på din beskrivelse.

Du vil sikkert gerne kende alle kreditkort for hver kunde, så hold en række af dem inden for kundeobjektet. Du vil sandsynligvis også have en kundereference for hver betaling. Dette vil holde betalingsdokumentet relativt lille.

Betalingsobjektet vil automatisk have sit eget ID og indeks. Du vil sikkert også gerne tilføje et indeks på kundereferencen.

Dette giver dig mulighed for hurtigt at søge efter betalinger fra kunden uden at gemme hele kundeobjektet hver gang.

Hvis du vil besvare spørgsmål som "Hvad var det gennemsnitlige beløb, alle kunder betalte i sidste måned" du vil i stedet have et kort / reducere for et hvilket som helst større datasæt. Du får ikke dette svar "realtid". Du vil opdage, at lagring af en "reference" til kunden sandsynligvis er god nok til disse kortreducerer.

Så for at besvare dit spørgsmål direkte:Er MongoDB designet til at foretrække mange, mange små dokumenter eller færre store dokumenter?

MongoDB er designet til at finde indekserede poster meget hurtigt. MongoDB er meget god til at finde et par nåle i en stor høstak. MongoDB er ikke meget god til at finde de fleste af nålene i høstakken. Så byg dine data omkring dine mest almindelige use cases og skriv kort/reducer job til de sjældnere use cases.



  1. Heroku Redis - GUI og hukommelsesoptimering

  2. Sammenligning af implementeringsmønstre for MongoDB

  3. Hvordan streamer man MongoDB-forespørgselsresultater med nodejs?

  4. Kan ikke finde modulet '../build/Release/bson'] kode:'MODULE_NOT_FOUND' } js-bson:Kunne ikke indlæse c++ bson-udvidelsen, ved brug af ren JS-version