sql >> Database >  >> NoSQL >> MongoDB

Waar moet ik de tijdlijn van activiteiten in mongodb plaatsen, ingesloten in de gebruiker of afzonderlijk?

Beide artikelen zijn juist en beide zijn onjuist.

Wel of niet insluiten? Dit is altijd de belangrijkste vraag en het komt neer op uw behoeften, query's en opslag en zelfs uw werkset.

Aan het eind van de dag kunnen we alleen maar tips geven die je eigenlijk niet kunt vertellen wat het beste is.

Gezien de grootte van een activiteitenfeed zou ik deze persoonlijk echter niet insluiten, omdat deze gemakkelijk groter kan worden dan 16meg (per gebruiker), maar voor de snelheid en kracht van het zoeken kunt u bijvoorbeeld de laatste 20 activiteiten van een gebruiker samenvoegen en vervolgens insluiten dat in de rij met gebruikers (aangezien de laatste 20 normaal gesproken het meest worden opgevraagd).

Maar dan hangt het insluiten van een aggregaat af, sharding kan zorgen voor het bevragen van enorme horizontaal geschaalde collecties en het gebruik van de juiste zoekopdrachten betekent dat u geen echt voordeel haalt uit insluiten en uw leven mogelijk moeilijker kan maken door de indexen, opslag en vragen die nodig zijn om dat subdocument te onderhouden.

Wat betreft inbedding tot het punt van de dood. Veel MongoDB's die op dit moment query's uitvoeren, zijn meestal gebaseerd op inbedding op één of twee niveaus, dus daarom kan het moeilijk worden om bijvoorbeeld 12 geneste tabellen te onderhouden, op welk moment u hier en de Google-groep vragen begint te zien over het onderhouden van dergelijke een enorm document (het antwoord is aan de kant van de klant als je dat echt wilt).

Gezien dit zou ik een aggregaat op de gebruiker plaatsen, wat betekent dat de gebruiker zijn eigen of andere gebruikersactiviteit afzonderlijk kan zien met één retourvlucht.

Maar aangezien een leraar hoogstwaarschijnlijk paginaresultaten van alle gebruikers zou moeten hebben, zou ik een afzonderlijke activiteitenverzameling en query daarop voor hen plaatsen. Het oproepen van een aggregaat van subdocumenten vereist een paar zoekopdrachten en in dit geval zou het beter zijn om het op deze manier te doen.

Hopelijk zou dat je op weg moeten helpen.



  1. Installeer MongoDB Community Edition 4.0 op Linux

  2. Hoe vermijdt MongoDB de puinhoop van SQL-injectie?

  3. Eenvoudige MongoDB-query erg traag, hoewel index is ingesteld

  4. MongoDb synchroniseren met ElasticSearch