Ich habe viel über Software Transactional Memory gelesen, insbesondere in Bezug auf Haskell, aber ich versuche herauszufinden, wie es sich von Datenbanktransaktionen unterscheidet? Gibt es einige Vorteile, die ich mit STM nicht verstehe?Ist der Transaktionssicherungsspeicher der Software identisch mit Datenbanktransaktionen?
Antwort
Die Idee einer "Transaktion" im Softwaretransaktionsspeicher ist explizit aus Datenbanken entlehnt. Der Unterschied besteht darin, wo die Transaktionen implementiert sind und wie sie verwendet werden.
STM ist ein Konzept auf Sprachenebene: Eine Sequenz von Operationen wird erst wirksam, wenn eine Transaktion festgeschrieben wird. 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 durchgesetzt. Es gibt keinen inhärenten Begriff von 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 Sequenz von Datenoperationen wird erst wirksam, nachdem die Transaktion festgeschrieben wurde. Da es sich um eine Datenbank handelt, ist die Persistenz von grundlegender Bedeutung: Die Bedeutung des "Effekts" innerhalb einer Datenbank besteht darin, dass die Daten in einem persistenten Speicher gespeichert werden.
Sie könnten möglicherweise eine Datenbank und Datenbanktransaktionen verwenden, um einen STM-style-Algorithmus zu implementieren, aber Sie würden die Leichtigkeit und Bequemlichkeit (und wahrscheinlich in den meisten Fällen die Leistung) einer Implementierung auf Sprachebene verlieren.
STM wird hauptsächlich für Parallelität verwendet, während Datenbanktransaktionen Datenkonsistenz haben.
so stms sind nicht konsistent? – Zubair
In Datenbanken gibt es explizite Invarianten, die angegeben und verwaltet werden können, hauptsächlich zum Beibehalten von Zuordnungen zwischen Schlüsselfeldern in Tabellen. Wenn ich die Tabellen "Kunde" und "Adresse" habe, kann ich angeben, dass jede Adresse einen übereinstimmenden Kunden haben muss, und die Datenbank behält dies bei. Haskell STM tut dies nicht. –
@Paul meiner Meinung nach ist diese Art von Konsistenz nicht von Datenbanken ausgeschlossen. Sie können innerhalb einer STM-Transaktion immer eine Invariante erzwingen. –
Eine STM-Transaktion hat viel gemeinsam mit einer Datenbanktransaktion. Insbesondere für die für Datenbankdesigner wichtigen ACID-Eigenschaften bietet STM Atomicity and Isolation. Die Konsistenz ist jedoch Sache des Programmierers —, in dem Sie STM-Transaktionen schreiben können, die beispielsweise gegen die Invarianten interner Datenstrukturen verstoßen. Schließlich sind STM-Transaktionen normalerweise nicht haltbar. Die Ergebnisse werden im flüchtigen RAM gespeichert. Wenn der Computer nach einer erfolgreichen Transaktion abstürzt, können die Ergebnisse verloren gehen. Das ist meiner Meinung nach der wichtigste Unterschied zwischen einer STM-Transaktion und einer Datenbanktransaktion.
Wenn Sie Ihre Invarianten im Typsystem codieren können, können Sie nicht inkonsistent schreiben. –
- 1. Unterstützt der MSCRM-Webservice Datenbanktransaktionen?
- 2. Magento2 - Datenbanktransaktionen innerhalb der Serviceebene
- 3. Ökonomie der Software-Entwicklung
- 4. ACID- und Datenbanktransaktionen?
- 5. Warum ist der "Inhalt" für zwei separate Commits identisch mit der GH-API?
- 6. Ist IsBusy von BackgroundWorker identisch mit "IsAlive"?
- 7. Software Entfernung/Neuinstallation mit der Batch-Datei
- 8. Ersetzen der Textzeile, wenn der Benutzername in der Textdatei identisch ist?
- 9. Wie kann ich die Benachrichtigungssprache mit der Telefonsprache identisch machen?
- 10. Ist es möglich, dass Datenbanktransaktionen mehrere Anfragen in Rails umfassen?
- 11. Was ist der Unterschied zwischen Informatik und Software Engineering?
- 12. Wie füge ich ein Listenelement mit einem Klassennamen hinzu, der identisch mit der ungeordneten Listen-ID ist?
- 13. Wie kann ich mit Perl feststellen, ob der Inhalt von zwei Dateien identisch ist?
- 14. - Der Beendigungscode des Befehls ist nicht identisch mit dem Exitcode des Skripts
- 15. Ist der S3-Bereich "US-Standard" in EC2 identisch mit "us-east-1"?
- 16. Ist der "stations + soft-ap" -Modus des ESP8266 identisch mit WiFi Direct (P2P)?
- 17. Software Testing in Zeitreise - Bedeutung der Ortszeit
- 18. Sichere E-Mail-Adresse der Software
- 19. Testen von Netzwerkinterrupts in der Software
- 20. Erfahrungen der Smart Client Software Factory
- 21. Nicht festgeschriebene Datenbanktransaktionen und automatisch inkrementierte Spalten
- 22. Gibt es eine Möglichkeit, Datenbanktransaktionen zu beschleunigen?
- 23. Was ist "Commodity Software"?
- 24. Wie entwickelt man aus der Ferne Software?
- 25. Der sicherste Weg zur Lizenzierung von Software
- 26. Eclipse Problem bei der Installation neuer Software
- 27. Pro und Contra der Produktlinie Software-Entwicklung
- 28. Warum ist eine Methode nicht identisch mit sich selbst?
- 29. Linux - überschreiben Version der Software namens
Was meinen Sie mit einer "Operation"? Meinst du den laufenden Code? – Zubair
Ja, genau. In STM sind die Auswirkungen des Codes innerhalb der Transaktion (z. B. Zuweisungen an Variablen, E/A) nicht sichtbar, bis die Transaktion "festgeschrieben" ist. –