sql >> Databasteknik >  >> NoSQL >> MongoDB

Bästa modellen för att representera många till många relationer med attribut i MongoDB

På många sätt uppmuntrar meteors API platta relationsdokument, men MongoDB är ett icke-relationellt datalager. Denna konflikt lämnas tyvärr som en övning för utvecklaren att lösa.

Begreppet schemastruktur och sammanfogningar är ett enormt ämne att ta upp i ett enda svar, så jag ska försöka vara så kortfattad som möjligt.

Skäl till varför du bör välja en relationsmodell

Anta att du har kommentarer och inläggsdata. Tänk på vad som skulle hända om du bäddade in kommentarer i dina inlägg.

  • DDP arbetar på dokument. Alla kommentarer kommer att skickas varje gång en ny kommentar i samma inlägg läggs till.

  • allow och deny regler fungerar på dokument. Det kan vara orimligt att förvänta sig att samma regler gäller samtidigt för både inlägg och kommentarer.

  • Publikationer tenderar att vara mer vettiga när det gäller samlingar. I scenariot ovan kunde vi inte enkelt publicera en lista med kommentarer oberoende av deras inlägg.

  • Relationsdatabaser finns av goda skäl. En av dem är att undvika problemet med flera modifieringar som är inneboende i din andra lösning.

Skäl till varför du bör välja en inbäddad modell

  • Joins stöds inte inbyggt av MongoDB, och det finns inte ett kärnpaket för att skapa en reaktiv join.

Rekommendationer

Använd din tredje lösning. Enligt min erfarenhet överväger skälen för att välja en relationsmodell vida de begränsningar som datalagret ålägger. Naturligtvis är det inte lätt att övervinna bristen på sammanfogningar, men smärtan kommer sannolikt att vara isolerad till endast en handfull publiceringsfunktioner. Här är några resurser som jag starkt rekommenderar:

  • Hur man publicerar en många-till-många-relation på EventedMind. Chris täcker ditt exakta användningsfall i detalj, men han gör manuellt den reaktiva kopplingen med observerade återuppringningar, vilket jag inte rekommenderar.

  • Reactive joins in meteor från Discover Meteor Encyclopedia. Detta täcker grunderna om hur och varför man bör göra en reaktiv koppling.

  • Denormaliseringskapitlet från Discover Meteor. Det här täcker många av punkterna jag gjorde ovan och talar också om när och hur man avnormaliserar en del av dina data.

  • Du kan använda Publicera med relationer för att sammanfoga din data. Alternativa paket inkluderar:smart publicering, publicera sammansatt och enkel publicering.

Om du behöver mer information utöver detta, vänligen kommentera nedan så uppdaterar jag mitt svar.



  1. Infoga ordbok i MongoDB med c#-drivrutinen

  2. MongoDB - Skapa ett dokument

  3. Hur man använder MongoDB Connection Pooling på AWS Lambda

  4. Hur man skapar ett index med ett specifikt namn i MongoDB