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

MongoDB:Skal du stadig angive id'er, der linker til andre samlinger til eller bare inkludere samlinger?

Det kommer an på.

Det afhænger af, hvor mange af hver af disse typer objekter, du forventer at have. Kan du passe dem alle ind i et enkelt MongoDB-dokument for et givet emne? Sandsynligvis ikke.

Det kommer an på relationerne – har du en-til-mange eller mange-til-mange relationer? Hvis det er en-til-mange, og antallet af relaterede enheder er lille, kan du vælge at indlejre dem i en IList på et dokument. Hvis det er mange-til-mange, kan du vælge at bruge et mere traditionelt forhold, eller du kan vælge at integrere begge sider som ILister.

Du kan stadig modellere relationer i MongoDB med separate samlinger MEN der er ingen joins i databasen, så du skal gøre det i kode. At indlæse et emne og derefter indlæse kommentarerne til det kan være helt fint ud fra et præstationsperspektiv.

Andre tips:

Med MongoDB kan du indeksere I arrays på dokumenter. Så tænk ikke på et indeks som blot at være et indeks på et simpelt felt på et dokument (som SQL). Du kan f.eks. bruge en tagsamling om et emne og indeksere i tags. (Se http://www.mongodb.org/display/DOCS/Index #Index-Arrays )

Når du henter eller skriver data, kan du foretage en delvis læsning og en delvis skrivning af ethvert dokument. (se http://www.mongodb.org/display /DOCS/Henter+en+Undersæt+af+felter )

Og endelig, når du ikke kan se, hvordan du får det, du ønsker ved hjælp af samlinger og indekser, kan du muligvis opnå det ved at bruge kortreducering. For at finde alle de tags, der aktuelt er i brug, sorteret efter deres brugsfrekvens, vil du kortlægge hvert emne, der udsender de tags, der bruges i det, og derefter reducere det sæt for at få det ønskede resultat. Du kan derefter gemme resultatet af det kort-reduktion permanent og kun opdatere det, når du har brug for det.

Det er et ret betydeligt mind-shift fra relationel tænkning, men det er det værd, hvis du har brug for den skalerbarhed og fleksibilitet en NOSQL-tilgang bringer.



  1. Brug af MongoDBs positionsoperator $ i en dybt indlejret dokumentforespørgsel

  2. Hvordan laver man alfanumerisk sortering i mongoDB?

  3. MongoDB $kond

  4. Hvorfor fylder databasen for en Meteor-app, der er blevet kørt én gang (og aldrig indlæst), næsten 3 GB?