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

NoSQL bedste praksis

Jeg tror, ​​at i øjeblikket er hele ideen med NoSQL-datalagre og konceptet med dokumentdatabaser så ny og forskellig fra de etablerede ideer, der driver relationel lagring, at der i øjeblikket er meget få (hvis nogen) bedste praksis.

Vi ved på dette tidspunkt, at reglerne for lagring af dine data i f.eks. CouchDB (eller en hvilken som helst anden dokumentdatabase) er ret forskellige fra reglerne for en relationel. For eksempel er det stort set en kendsgerning, at normalisering og sigtning efter 3NF ikke er noget, man skal stræbe efter. Et af de almindelige eksempler ville være en simpel blog.

I en relationel butik vil du have en tabel hver for "Indlæg", "Kommentarer" og "Forfattere". Hver forfatter ville have mange indlæg, og hvert indlæg ville have mange kommentarer. Dette er en model, der fungerer godt nok, og som passer fint over enhver relationel DB. Men at gemme de samme data i en docDB ville højst sandsynligt være ret anderledes. Du ville sandsynligvis have noget i retning af en samling af Post-dokumenter, som hver især ville have sin egen forfatter og samling af kommentarer indlejret lige i. Det er selvfølgelig nok ikke den eneste måde, du kan gøre det på, og det er lidt et kompromis (nu at forespørge efter et enkelt indlæg er hurtigt - du udfører kun én handling og får alt tilbage), men du har ingen mulighed for at opretholde forholdet mellem forfattere og indlæg (da det hele bliver en del af postdokumentet).

Jeg har også set eksempler, der bruger en "type"-attribut (i et CouchDB-eksempel). Selvfølgelig lyder det som en holdbar tilgang. Er det den bedste? Jeg har ikke en anelse. I MongoDB ville du bestemt bruge separate samlinger i en database, hvilket gør typeattributten totalt nonsens. I CouchDB dog... måske det er bedst. De andre alternativer? Separate databaser for hver type dokument? Dette virker lidt sløjt, så jeg ville læne mig mod "type"-løsningen selv. Men det er bare mig. Måske er der noget bedre.

Jeg er klar over, at jeg har rodet en del her og sagt meget lidt, højst sandsynligt ikke noget, du ikke allerede vidste. Min pointe er dog dette - jeg tror, ​​det er op til os at eksperimentere med de værktøjer, vi har, og de data, vi arbejder med, og over tid vil de gode ideer blive spredt og blive bedste praksis. Jeg synes bare, du spørger lidt for tidligt i spillet.



  1. Importer csv-data som array i mongodb ved hjælp af mongoimport

  2. Sorter et array og tilføj et rangfelt i MongoDB

  3. Mongoose:Samling udfyldes ikke, når den bruges som ref i et andet dokument

  4. Mongodb vælg alle felter grupper efter et felt og sorter efter et andet felt