sql >> Databáze >  >> NoSQL >> MongoDB

Doporučené postupy pro aktualizaci asynchronně duplikovaných dat v mongodb

V zásadě máte 3 možnosti:

  1. Stačí uložit userId a poté načíst uživatele samostatně. Tímto způsobem vždy získáte optimální výsledky z hlediska čerstvých dat. Ale je to samozřejmě pomalejší. To je v podstatě to, co relační databáze dělá. SQL DB se jen podívá na cizí klíč a načte data podle id.

  2. Žijte se zastaralými daty. Uložte duplikát uživatelského jména do komentářů. Někdy je to žádoucí chování, protože tímto způsobem můžete zobrazit data přesně tak, jak byla, když byla uložena. To znamená:Pokud John vytvoří komentář a později se jeho uživatelské jméno aktualizuje na Paul, stále můžete vidět, že byl vytvořen jako John. (To je užitečné zejména pro faktury, kdy tam odkazujete na osobu a adresa se změní, takže nechcete aktualizovat adresu staré faktury)

  3. Aktualizujte vše, co obsahuje uživatelské jméno, když se uživatelské jméno aktualizuje. To také není špatné, protože uživatelské jméno by se normálně nikdy nemělo měnit. Takže čtení bude vždy rychlé, protože jméno je uloženo uvnitř komentáře. A pokud se název změní, musíte aktualizovat vše, co se týká uživatele. To je samozřejmě pomalý úkol, ale protože by se to nemělo stávat každou minutu, dá se to tolerovat.

    3.1 Můžete věci optimalizovat:pokud se změní uživatelské jméno, někde se to uloží a použije se o půlnoci. Tímto způsobem můžete shromáždit více změn jmen a aktualizovat vše současně.

Jak vidíte:NoSQL je o výběru . Můžete dělat věci, které nejlépe vyhovují vašim datům. Samozřejmě je to vždy kompromis:pomalejší/rychlejší, více/méně kódu pro zápis, jednodušší/obtížnější údržba.

Shrnuto:

  1. Rychlý zápis, konzistentní data, pomalé čtení
  2. Rychlý zápis, nekonzistentní data, rychlé čtení
  3. Rychlé zápisy, rychlé čtení, data jsou konzistentní po procesu aktualizace, který může nějakou dobu trvat. A proces aktualizace je samozřejmě pomalý.



  1. MongoDB $replaceAll

  2. Mongoose save() neaktualizuje hodnotu v poli v databázovém dokumentu

  3. Schéma pro hodnocení uživatelů – DB klíč/hodnota

  4. Znovu prozkoumat agregovaný návrat 5 nejlepších z každé skupiny