sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Schema Design - Många små dokument eller färre stora dokument?

Du måste definitivt optimera för de frågor du gör.

Här är min bästa gissning baserat på din beskrivning.

Du kommer förmodligen att vilja känna till alla kreditkort för varje kund, så håll en uppsättning av dem inom kundobjektet. Du kommer förmodligen också att vilja ha en kundreferens för varje betalning. Detta kommer att hålla betalningsdokumentet relativt litet.

Betalningsobjektet får automatiskt sitt eget ID och index. Du kommer förmodligen att vilja lägga till ett index på kundreferensen också.

Detta gör att du snabbt kan söka efter betalningar av kund utan att lagra hela kundobjektet varje gång.

Om du vill svara på frågor som "Vilket var det genomsnittliga beloppet som alla kunder betalade förra månaden" du kommer istället att vilja ha en karta/förminska för vilken datauppsättning som helst. Du får inte det här svaret "realtid". Du kommer att upptäcka att lagring av en "referens" till kunden förmodligen är tillräckligt bra för dessa kartreduceringar.

Så för att svara direkt på din fråga:Är MongoDB utformad för att föredra många, många små dokument eller färre stora dokument?

MongoDB är utformad för att hitta indexerade poster mycket snabbt. MongoDB är väldigt bra på att hitta några nålar i en stor höstack. MongoDB är inte mycket bra på att hitta de flesta av nålarna i höstacken. Så bygg din data kring dina vanligaste användningsfall och skriv kartor/minska jobb för de mer sällsynta användningsfallen.



  1. Hur man lagrar och hämtar en ordbok med redis

  2. Hur kapslar man en lista i en struktur i Redis för att minska toppnivån?

  3. Php7 Redis Client på Alpine OS

  4. MongoDB:ovillkorliga uppdateringar?