sql >> Databasteknik >  >> NoSQL >> MongoDB

Bästa metoder för att uppdatera asynkront duplicerade data i mongodb

Du har i princip 3 alternativ:

  1. Lagra bara userId och hämta sedan användaren separat. På så sätt får du alltid det optimala resultatet när det gäller färsk data. Men visst går det långsammare. Det är i princip vad en relationsdatabas gör. En SQL DB kommer bara att titta på den främmande nyckeln och hämta data med id.

  2. Live med inaktuell data. Lagra en dubblett av användarnamnet i kommentarerna. Ibland är detta ett önskat beteende, eftersom man på så sätt kan representera data exakt som den var när den lagrades. Detta betyder:Om John skapar en kommentar och senare hans användarnamn uppdateras till Paul, kan du fortfarande se, det vill säga har skapats som John. (Detta är särskilt användbart för t.ex. fakturor, när du hänvisar till en person dit och adressen ändras, än du inte vill uppdatera adressen till en gammal faktura)

  3. Uppdatera allt som innehåller ett användarnamn när användarnamnet uppdateras. Detta är inte dåligt heller, eftersom ett användarnamn normalt aldrig bör ändras. Så läsningen kommer alltid att gå snabbt, eftersom namnet lagras i kommentaren. Och om namnet ändras måste du uppdatera allt där användaren är inblandad. Detta är naturligtvis en långsam uppgift, men eftersom det inte borde hända varje minut är det acceptabelt.

    3.1 Du kan optimera saker:om användarnamn ändras, lagras detta någonstans och tillämpas vid midnatt. På så sätt kan du samla in flera namnbyten och uppdatera allt samtidigt.

Som du kan se:NoSQL handlar om val . Du kan göra de saker som passar din data bäst. Naturligtvis är det alltid en kompromiss:långsammare/snabbare, mer/mindre kod att skriva, lättare/svårare att underhålla.

Sammanfattningsvis är det:

  1. Snabb skrivning, konsekvent data, långsam läsning
  2. Snabb skrivning, inkonsekvent data, snabb läsning
  3. Snabb skrivning, snabb läsning, data blir konsekvent efter uppdateringsprocessen, vilket kan ta lite tid. Och uppdateringsprocessen är naturligtvis långsam.



  1. Finns det något sätt att arbeta med sessioner utan att låsa på ASP.Net MVC-webbplatsen?

  2. Hur exporterar man mongoDB-data till ett CSV-format?

  3. Timeout för anslutning för mongodb som använder mongoose

  4. mongodb hur man ändrar standardport