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

Verze Mongoose:kdy je bezpečné ji zakázat?

Účelem klíče verze je optimistické zamykání.

Je-li povoleno, hodnota verze se atomicky zvýší při každé aktualizaci dokumentu.

To umožňuje kódu vaší aplikace otestovat, zda byly provedeny změny mezi načtením (například uvedením klíče verze 42) a následnou aktualizací (zajištění, že hodnota verze je stále 42). Pokud má klíč verze jinou hodnotu (např. 43, protože byla provedena aktualizace dokumentu), kód vaší aplikace zvládne souběžnou úpravu.

Úplně stejný koncept se často používá v relačních databázích místo pesimistického zamykání, které může přinést hrozný výkon. Všechny slušné ORM takovou funkci poskytují. Například je to pěkně popsáno v dokumentaci ObjectDB . Je to objektová databáze implementovaná v Javě, ale platí stejný koncept.

příspěvek na blogu odkaz v Behlülově komentáři demonstruje optimistickou užitečnost zamykání na konkrétním příkladu, ale pouze pro změny polí, viz níže.

Naopak, zde je jednoduchý případ, kdy je k ničemu:uživatelský profil, který si jeho majitel může sám upravovat. Zde se můžete zbavit optimistického zamykání a předpokládat, že poslední úprava vždy vyhraje.

Takže jen vy víte, zda vaše aplikace potřebuje optimistické zamykání nebo ne. Případ od případu použití.

Situace Mongoose je poněkud zvláštní.

Optimistické zamykání je povoleno pouze pro pole, protože formát interního úložiště používá poziční index. Toto je problém popsaný v příspěvku na blogu odkaz v komentáři k otázce. Našel jsem vysvětlení uvedený v mongoose-orm mailing list celkem jasný:pokud potřebujete optimistické zamykání pro jiná pole, musíte to zvládnout sami.

Zde je shrnutí ukazuje, jak implementovat strategii opakování pro add úkon. Opět platí, že to, jak s tím chcete zacházet, závisí na vašich případech použití, ale pro začátek by to mělo stačit.

Doufám, že se tím věci vyjasní.

Na zdraví




  1. MongoDB – Pusťte sbírku

  2. Chyba připojení Mongodb prostřednictvím dockeru ve Springbootu

  3. Jak OBJEDNAT PODLE HODNOTY POLE v MongoDB

  4. MongoDB $ sekunda