6 Stimmen

Ist Software-Transaktionsspeicher dasselbe wie Datenbanktransaktionen?

Ich habe viel über Software Transactional Memory gelesen, vor allem in Bezug auf Haskell, aber ich versuche, herauszufinden, wie es sich von Datenbanktransaktionen unterscheidet? Gibt es einige Vorteile, die ich bei STM nicht verstehe?

5voto

Chris Conway Punkte 54023

Die Idee einer "Transaktion" im Software-Transaktionsspeicher ist ausdrücklich von Datenbanken entlehnt. Der Unterschied besteht darin, wo die Transaktionen implementiert sind und wie sie verwendet werden.

STM ist ein Konzept auf Sprachebene: Eine Folge von Operationen wird erst dann wirksam, wenn eine Transaktion abgeschlossen ist. In der Regel bedeutet dies, dass sich die Werte einiger globaler/gemeinsamer Variablen nur ändern, wenn eine Transaktion erfolgreich ist. Die Eigenschaft wird von der Sprachlaufzeit erzwungen. Es gibt keinen inhärenten Begriff der Persistenz: Die an einer Transaktion beteiligten Variablen können rein dynamischer Natur sein (z. B. die Größe einer Arbeitswarteschlange).

Datenbanktransaktionen sind ein Konzept auf Anwendungsebene: Eine Folge von Datenoperationen wird erst dann wirksam, wenn die Transaktion abgeschlossen ist. Da es sich um eine Datenbank handelt, ist die Persistenz von grundlegender Bedeutung: Die Bedeutung von "wirksam werden" innerhalb einer Datenbank ist, dass die Daten in einem persistenten Speicher gespeichert werden.

Sie könnten eine Datenbank und Datenbanktransaktionen verwenden, um einen STM-ähnlichen Algorithmus zu implementieren, aber Sie würden die Einfachheit und den Komfort (und wahrscheinlich in den meisten Fällen die Leistung) einer Implementierung auf Sprachebene verlieren.

5voto

Norman Ramsey Punkte 193087

Eine STM-Transaktion hat viele Gemeinsamkeiten mit einer Datenbanktransaktion . Von den ACID-Eigenschaften, die für Datenbankentwickler wichtig sind, bietet STM insbesondere Atomarität und Isolation. Die Konsistenz liegt jedoch in der Hand des Programmierers: Sie können STM-Transaktionen schreiben, die beispielsweise die Invarianten der internen Datenstrukturen verletzen. Schließlich sind STM-Transaktionen in der Regel nicht dauerhaft; die Ergebnisse werden im flüchtigen RAM gespeichert, und wenn der Rechner nach einer erfolgreichen Transaktion abstürzt, können die Ergebnisse verloren gehen. Das ist meiner Meinung nach wahrscheinlich der wichtigste Unterschied zwischen einer STM-Transaktion und einer Datenbanktransaktion.

1voto

user38123 Punkte 669

STM wird hauptsächlich für die Gleichzeitigkeit verwendet, während es bei Datenbanktransaktionen um die Datenkonsistenz geht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X