MongoDB ist für mich eine großartige Datenbank. Es gibt jedoch Fälle, in denen ich atomare Multi-Dokument-Transaktionen wirklich brauche. Zum Beispiel um Dinge (wie Geld oder Reputation) zwischen Konten zu transferieren und dies muss entweder erfolgreich sein oder komplett fehlschlagen.
Ich frage mich, ob es möglich wäre, mit MongoDB über eine Bibliothek zu interagieren, die das MultiVersion Concurrency Control-Muster implementiert.
Wie schlimm wäre es bei Auftritten? Wäre es möglich und profitabel, einen hybriden Ansatz zu verwenden, bei dem die 'mongo-mvcc'-Bibliothek nur bei Bedarf und die traditionelle db-Verbindung verwendet wird, wenn nur an einem einzigen Dokument gearbeitet wird, oder würde das den mvcc-Kram brechen?
Am einfachsten ist die Verwendung von Sperren (zweiphasiges Commit), obwohl dies in einigen Fällen nicht sehr effizient ist. Für höhere Parallelität kann eine Art von MVCC auf der Oberseite von Mongo implementiert werden. Dieser Artikel enthält eine gute Beschreibung:
Es gibt eine Implementierung von MVCC auf MongoDB, die jetzt auf GitHub verfügbar ist:
MongoDB ist nicht wirklich dafür ausgelegt, mit Transaktionen zu arbeiten. Es gibt eine wirklich gute Diskussion darüber, wie Sie das umsetzen können: Ссылка
Nun, wenn Sie echte TRANSACTIONS benötigen, verwenden Sie RDBMS, die entwickelt wurden, um sie zu unterstützen :) NoSQLs sind schneller und skalierbarer, hauptsächlich weil sie Transaktionen nicht unterstützen.
Wenn Sie beide benötigen, ist es vielleicht eine gute Idee, Transaktions-Layer zur Unterstützung von Transaktionen und NoSQL-Layer für andere Zwecke zu haben? In einigen Fällen sollte es nicht schwierig sein, ein hybrides System zu erstellen, das zum Beispiel MongoDB und PostgreSQL verwendet
Tags und Links mongodb transactions nosql mvcc