sql >> Databasteknik >  >> NoSQL >> MongoDB

Var ska jag placera aktiviteters tidslinje i mongodb, inbäddad i användaren eller separat?

Båda dessa artiklar är rätt och båda är fel.

Att bädda in eller inte bädda in? Detta är den alltid nyckelfrågan och det handlar om dina behov, frågor och lagring och till och med din arbetsuppsättning.

I slutet av dagen kan vi bara ge tips som du faktiskt inte kan säga vilken som är bäst.

Men med tanke på storleken på ett aktivitetsflöde skulle jag personligen inte bädda in det eftersom det lätt skulle kunna växa över 16meg (per användare), men för hastigheten och kraften i sökningen kan du sammanställa t.ex. de senaste 20 aktiviteterna för en användare och sedan bädda in det i användarraden (eftersom de sista 20 normalt är det som efterfrågas mest).

Men sedan beror det på att bädda in ett aggregat, sharding kan ta hand om att söka i stora horisontellt skalade samlingar och att använda rätt frågor innebär att du inte får någon verklig fördel av inbäddning och kan potentiellt göra ditt liv svårare genom att behöva underhålla index, lagring och frågor som krävs för att underhålla det underdokumentet.

När det gäller inbäddning till dödspunkten. Många MongoDB:s som frågar för tillfället är mest beroende av inbäddning på en eller två nivåer, så det är därför det kan bli svårt att underhålla till exempel 12 kapslade tabeller, då du börjar se frågor här och Google-gruppen om hur man underhåller sådana ett enormt dokument (svaret är klientsidan om du verkligen vill).

Med tanke på detta skulle jag inkludera ett aggregat på användaren vilket innebär att användaren kan se sin egen eller andra användares aktivitet enstaka med en tur och retur.

Men med tanke på att en lärare med största sannolikhet måste ha sidresultat från alla användare skulle jag ha en separat aktivitetssamling och fråga om det åt dem. Sökning av ett aggregat av underdokument kräver några frågor och i det här fallet skulle det vara bättre att bara göra det på det här sättet.

Förhoppningsvis bör det få dig igång.



  1. Synkronisera mongodatabaser på olika servrar

  2. Hur konverterar man en hexadecimal sträng till ett tal i mongodb?

  3. Mongo DB-fråga i java

  4. Hur fungerar sorteringen i den nya mongodb PECL-förlängningen?