sql >> Databasteknik >  >> NoSQL >> MongoDB

Många till många uppdaterar i MongoDB utan transaktioner

@Gareth , du har flera legitima sätt att göra detta. Så det viktigaste är hur du planerar att söka efter data, (dvs.:vilka frågor måste vara snabba )

Här är ett par metoder.

Metod #1:samlingen "länkar"

Du kan bygga en samling som helt enkelt innehåller mappningar mellan samlingarna.

Proffs:

  • Stöder atomuppdateringar så att data inte går förlorade

Nackdelar:

  • Extra fråga när du försöker flytta mellan samlingar

Metod 2:lagra kopior av mindre mappningar i en större samling

Till exempel:du har miljontals Products , men bara hundra Categories . Sedan skulle du lagra Categories som en array inuti varje Product .

Proffs:

  • Minsta fotavtryck
  • Behöver bara en uppdatering

Nackdelar:

  • Extra fråga om du går åt "fel väg"

Metod 3:lagra kopior av alla mappningar i båda samlingarna

(vad du föreslår)

Proffs:

  • Enskild frågeåtkomst för att flytta mellan endera samlingen

Nackdelar:

  • Potentiellt stora index
  • Behöver transaktioner (?)

Låt oss prata om "behovstransaktioner". Det finns flera sätt att göra transaktioner och det beror verkligen på vilken typ av säkerhet du behöver.

Du kan definitivt göra detta. Du måste fråga dig själv, vad är det värsta som händer om bara en av räddningarna misslyckas?

Metod 4:ställ ändringen i kö

Jag vet inte om du någonsin har jobbat med köer, men om du har lite spelrum kan du bygga en enkel kö och ha olika jobb som uppdaterar sina respektive samlingar.

Detta är en mycket mer avancerad lösning. Jag brukar gå med #2 eller #3.



  1. Hitta värden genom att använda partiell nyckelnamn i en Redis Sorterad uppsättning

  2. Validera objekt mot Mongoose-schema utan att spara som ett nytt dokument

  3. MongoDB-grupp och summa med id som nyckel

  4. Hoppa över och begränsa för sidnumrering för ett Mongo-aggregat