sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB:Ska du fortfarande tillhandahålla ID:n som länkar till andra samlingar till eller bara inkludera samlingar?

Det beror på.

Det beror på hur många av var och en av dessa typer av objekt du förväntar dig att ha. Kan du passa in dem alla i ett enda MongoDB-dokument för ett visst ämne? Förmodligen inte.

Det beror på relationerna – har du en-till-många eller många-till-många-relationer? Om det är en-till-många och antalet relaterade enheter är litet kan du välja att bädda in dem i en IList på ett dokument. Om det är många-till-många kanske du väljer att använda en mer traditionell relation eller så kanske du väljer att bädda in båda sidor som ILister.

Du kan fortfarande modellera relationer i MongoDB med separata samlingar MEN det finns inga joins i databasen så du måste göra det i kod. Att ladda ett ämne och sedan läsa in kommentarerna för det kan vara bra ur ett prestandaperspektiv.

Andra tips:

Med MongoDB kan du indexera I arrayer på dokument. Så tänk inte på ett index som bara ett index på ett enkelt fält på ett dokument (som SQL). Du kan använda, säg, en taggsamling om ett ämne och indexera i taggarna. (Se http://www.mongodb.org/display/DOCS/Index #Index-Arrays )

När du hämtar eller skriver data kan du göra en delläsning och en delskrivning av vilket dokument som helst. (se http://www.mongodb.org/display /DOCS/Hämtar+en+deluppsättning+fält )

Och slutligen, när du inte kan se hur du får det du vill ha med hjälp av samlingar och index, kanske du kan uppnå det med hjälp av kartreducering. Till exempel, för att hitta alla taggar som används för närvarande sorterade efter deras användningsfrekvens skulle du mappa varje ämne som sänder ut taggarna som används i det, och sedan skulle du minska den uppsättningen för att få det resultat du vill ha. Du kan sedan lagra resultatet av kartan permanent och bara uppdatera den när du behöver.

Det är en ganska betydande mind-shift från relationstänkande, men det är värt det om du behöver skalbarheten och flexibiliteten som en NOSQL-metod ger.



  1. Async, Callbacks, Closure, Oh My

  2. MongoEngine ange läspreferens på fråga

  3. MongoDB index skärningspunkt

  4. MongoDB Aggregationssumma på objekt i Array