Pochybuji, že existuje něco, co může zaručit integrita dat kromě zmíněného 2fázového commitu. Alespoň do oznámení verze 4 .
Existuje jen málo věcí, které minimalizují šance na nesprávné počty. Spojte vkládání a aktualizaci do jediného hromadné . Sníží to pravděpodobnost, že jedna z operací selže na straně aplikace, protože se jedná o jediný požadavek.
Poté zkontrolujte, zda nInserted === 1
a nModified === 1
. V opačném případě zkuste znovu nebo zařaďte do fronty úlohu přepočtu pro dané ID příspěvku.
Pro opakované pokusy je nezbytné mít opakovatelné zápisy povoleno, protože budete používat $inc
na postech, což má k idempotentnímu provozu dost daleko.
Další možností je použít bez transakce přístup - jakási kombinace "Spouštět skript pokaždé, aby se aktualizoval počet komentářů" a "Vůbec neukládat číslo komentářů". Budete si muset ponechat časová razítka poslední úlohy přepočtu a počítat nové komentáře od data.