Eine vereinfachte klassische Datenbanktransaktion kann wie folgt angesehen werden:
- M Elemente lesen
- Durchführen einiger Berechnungen basierend auf diesen Lesevorgängen
- Schreiben einiger N-Ergebnisse basierend auf diesen Berechnungen, die die ursprünglich gelesenen Elemente enthalten können.
Bei der Ausführung dieser Transaktionen (gleichzeitig) müssen die ACID- Eigenschaften beibehalten werden.
Genau die gleichen Anforderungen (N Aktualisierungen basierend auf M Lesevorgängen auf Transaktionsebene) bestehen auch in anderen Nicht-DBMS-Systemen.
Ich bin daran interessiert herauszufinden, welche Algorithmen zum Ausführen / Auflösen dieser Transaktionen existieren und welche relativen Stärken und Schwächen diese Algorithmen haben. Könnten Sie etwas zum Lesen empfehlen? Dies können Bücher oder Online-Referenzen / Tutorials sein.
Klärung:
Ein naiver Algorithmus könnte beispielsweise sein, dass jede Transaktion eine einzelne globale Sperre durchführt, wodurch ein einzelnes Threading erzwungen und die Parallelität entfernt wird. Ein etwas komplizierterer Algorithmus wären Lese- / Schreibsperren für einzelne Elemente mit einer Reihenfolge, um einen Deadlock zu vermeiden. Usw. Gibt es eine gute Quelle, die verschiedene Algorithmen zur Lösung dieses Problems dokumentiert? Sogar eine Antwort, die nur auf einen einzigen Algorithmus mit seinen Stärken und Schwächen hinwies, wäre nützlich.