Frage

Ich habe viel über Software Transactional Memory lesen, vor allem in Bezug auf Haskell, aber ich versuche zu Figur, wie es aus dem Datenbank-Transaktionen unterscheidet? Gibt es einige Vorteile ich mit STM?

nicht verstehen
War es hilfreich?

Lösung

Die Idee einer „Transaktion“ in Software Transactional Memory wird hiermit ausdrücklich von Datenbanken entlehnt. Der Unterschied ist, wo die Transaktionen durchgeführt werden und wie sie verwendet werden.

STM ist ein Sprache-Level-Konzept: eine Folge von Operationen nicht wirksam, bis eine Transaktion festgeschrieben wird. Typischerweise bedeutet dies, dass die Werte einiger globaler / shared Variablen nur dann ändern, wenn eine Transaktion erfolgreich ist. Das Anwesen ist von der Sprache Laufzeit erzwungen. Es gibt keinen inhärenten Begriff der Persistenz. Die Variablen in einer Transaktion beteiligt ist, können rein dynamisch seine in der Natur (zum Beispiel der Größe eines Arbeitsvorrates)

Datenbank-Transaktionen sind ein Application-Level-Konzept: eine Folge von Datenoperationen nicht wirksam, bis die Transaktion festgeschrieben wird. Da es sich um eine Datenbank handelt, Beharrlichkeit ist von grundlegender Bedeutung. Die Bedeutung von „zeigt Wirkung“ innerhalb einer Datenbank ist, dass die Daten in einigen persistenten Speicher gespeichert

Sie könnte möglicherweise eine Datenbank und Datenbank-Transaktionen verwenden, um einen STM-Stil Algorithmus zu implementieren, aber Sie würden die Leichtigkeit und Bequemlichkeit (und wahrscheinlich in den meisten Fällen die Leistung) eine Sprachebene Implementierung verlieren.

Andere Tipps

Ein STM-Transaktion hat viel gemeinsam mit einer Datenbanktransaktion . Insbesondere die ACID-Eigenschaften wichtig Datenbank-Designer, bietet STM Atomicity und Isolation. Konsistenz ist jedoch bis zum Programmierer Sie können STM-Transaktionen schreiben, die die Invarianten von internen Datenstrukturen verletzen, zum Beispiel. Schließlich sind Transaktionen STM typischerweise nicht haltbar; Ergebnisse werden in einem flüchtigen RAM gespeichert, und wenn die Maschine nach einer erfolgreichen Transaktion abstürzt, können die Ergebnisse verloren. Das ist in meinem Kopf, ist wahrscheinlich der auffälligste Unterschied zwischen einer STM-Transaktion und einer Datenbanktransaktion.

STM ist vor allem für die Parallelität verwendet, während Datenbank-Transaktionen über die Datenkonsistenz sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top