MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Двуфазен ангажимент в MongoDB

Когато приложението или базата данни изведнъж се срине между прилагането на транзакцията към A и прилагането на транзакцията към B, все още ще има транзакция с state:"pending" в глобалната колекция от транзакции. Вашият скрипт за възстановяване, който изпълнявате след срив, трябва да забележи това, да провери двата акаунта и да види, че има чакаща транзакция в единия, но не и в другия акаунт. Сега той знае всичко, което трябва да знае, за да отмени транзакцията или да се опита да я завърши.

Да, писането на скрипт за възстановяване, който е толкова умен, не е лесно. Но транзакциите в система от бази данни, която не е проектирана за тях, винаги са трудни. Понякога можете да заобиколите изискването за транзакции в MongoDB, като проектирате вашите документи по начин, че полетата, които трябва да се актуализират заедно, винаги са в един и същи документ, но не винаги има разумен начин да направите това. Когато вашият случай на употреба абсолютно се нуждае от транзакции, защитете разума си и използвайте релационна база данни.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Правилен начин за шардиране на колекция и как да интерпретирате резултатите

  2. return Model.create(arr).exec() не работи в mongoose

  3. PHP Mongo Query NOT NULL

  4. Как се премахва модел от mongoose?

  5. Какви потребителски привилегии на MongoDB са ми необходими, за да добавя потребител към нова/друга база данни на Mongo?