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

Dvoufázové potvrzení v MongoDB

Když aplikace nebo databáze náhle selže mezi aplikací transakce na A a aplikací transakce na B, bude stále existovat transakce se stavem state:"pending" v globální kolekci transakcí. Váš skript obnovy, který spustíte po havárii, by si toho měl všimnout, zkontrolovat dva účty a zjistit, že na jednom účtu je čekající transakce, ale na druhém ne. Nyní ví vše, co potřebuje vědět, aby transakci vrátil zpět nebo se ji pokusil dokončit.

Ano, napsat skript pro obnovení, který je tak chytrý, není snadné. Ale transakce v databázovém systému, který pro ně není navržen, jsou vždy těžké. Někdy můžete obejít vyžadování transakcí v MongoDB tak, že své dokumenty navrhnete tak, aby pole, která je třeba aktualizovat společně, byla vždy ve stejném dokumentu, ale ne vždy existuje rozumný způsob, jak to udělat. Když váš případ použití absolutně potřebuje transakce, chraňte svůj zdravý rozum a použijte relační databázi.



  1. Proč se v MongoDB nedoporučuje používat funkce uložené na straně serveru?

  2. findOne Subdocument v Mongoose

  3. docker-compose wait-for.sh selže pro čekání mongodb

  4. Jak filtrovat pole dílčích dokumentů?