was sind transaktionen? wofür gut?
Leif Heinrichs
- datenbank
Hallo Forumer,
ich beschäftige mich seit ein paar Wochen mit dem Thema Datenbank-gestützte Internetseiten und bin|war stiller Mitleser dieses Forums. Dabei stoße ich immer wieder auf den Begriff: Transaktionen. Wenn ich danach google (mit "datenbank programmierung" etc dazu als Suchwörter) bekomme ich eine ganze Menge Ergebnisse, die mir immer Beispiele geben, aber nie so richtig den Sinn erklären, worum es dabei geht.
Ich bin mir sicher, daß es hier jemanden gibt, der mir mit etwas Auskunft darüber weiterhelfen kann oder mir zumindest einen Link zu einer Dokumentation oder so nennen kann.
Würde mich sehr über Eure Hilfe freuen, machts gut.
Euer Leif
Hallo,
Ich bin mir sicher, daß es hier jemanden gibt, der mir mit etwas Auskunft darüber weiterhelfen kann oder mir zumindest einen Link zu einer Dokumentation oder so nennen kann.
Link kann ich leider nicht bieten, aber dafür Erklärungen:
Mal angenommen, du führst mehrere Aktionen hintereinander auf einer Datenbank aus (INSERTs oder UPDATEs oder DELETEs oder sonstwas) - wenn eine dieser Aktionen schiefgeht (aus irgendeinem Grund) dann kannst Du einfach die Transaktion zurücksetzen, d.h. alle Änderungen rückgängig machen, die Du in dieser Transaktion bisher ausgeführt hast. Wenn alles bis zum Ende glatt gelaufen ist, dann kannst Du die Transaktion abschließen. Während der Transaktion bleiben alle Änderungen an der Datenbank nur für dich sichtbar, erst mit dem Abschließen werden die Änderungen auch für andere sichtbar. Desweiteren sind Transaktionen so ausgelegt, dass sie sich nicht gegenseitig in die Quere kommen können (wenn jetzt ein Programm hat eine Transaktion noch nicht abgeschlossen und ein anderes Programm will auf die gleiche Tabelle schreiben, dann muss es warten, bis die erste Transaktion fertig ist; wenn diese beiden Schreibvorgänge in Konflikt geraden, dann bricht die Datenbank beim Abschlussversuch der zweiten Transaktion automatisch ab und gibt eine Fehlermeldnug zurück - so kann Sichergestellt werden, dass die Daten immer konsistent bleiben)
Grüße,
Christian
ich beschäftige mich seit ein paar Wochen mit dem Thema Datenbank-gestützte Internetseiten und bin|war stiller Mitleser dieses Forums. Dabei stoße ich immer wieder auf den Begriff: Transaktionen. Wenn ich danach google (mit "datenbank programmierung" etc dazu als Suchwörter) bekomme ich eine ganze Menge Ergebnisse, die mir immer Beispiele geben, aber nie so richtig den Sinn erklären, worum es dabei geht.
Hallo,
Transaktionen sind Aktionen, die an mehreren Stellen in Wirkung treten (darum "trans").
Im DB-Bereich wird oft von Transaktionen gesprochen; so ist eine Buchung(zumindest eine "moderne") immer eine Transaktion, weil zumindest zwei Konten betroffen sind.
Transaktionen werden von bestimmten DBMS-System unterstützt; diese Unterstützung ist nicht wenig komplex und die Hersteller sind recht stolz auf Ihre Transaktionsimplementierung (MS mit TSQL z.B.)
Man öffnet z.B. eine Transaktion mit "open tran", führt ein paar Jobs aus und im Erfolgsfall schlisset man die Tran mit "commit tran". Scheitert ein Einzelschritt, kann man die Tran mit "rollback tran" komplett zurückfahren.
Viele Entwickler wärern übrigens glücklich, wenn ihre Programmiersprache auch Tran unterstützt; z.B. in Programmblöcken, die unbedingt als Ganzes ausgeführt werden müssen. Hier muss der Entwickler die Transaktionslogik selbst implementieren (also z.B. immer ErrorcodeLevel und Rückgabewerte prüfen).
Gruss,
Lude
Hallo Leif,
ich beschäftige mich seit ein paar Wochen mit dem Thema Datenbank-gestützte Internetseiten und bin|war stiller Mitleser dieses Forums. Dabei stoße ich immer wieder auf den Begriff: Transaktionen. Wenn ich danach google (mit "datenbank programmierung" etc dazu als Suchwörter) bekomme ich eine ganze Menge Ergebnisse, die mir immer Beispiele geben, aber nie so richtig den Sinn erklären, worum es dabei geht.
Ich weiß ja nicht wie Du suchst aber ich habe nach Eingabe von
"was sind datenbank transaktion"
An zweiter Stelle folgenden Link erhalten: http://beat.doebe.li/bibliothek/w00896.html
Gruss
MichaelB
Dank Euch Allen!!
Mit den Auskünften kann ich mir jetzt etwas zusammenreimen :-)
Sorry Michael, deinen Link hatte ich auch schon über google gefunden, allerdings hat mir die Beschreibung da nicht gerade weitergeholfen.
Frank, Lude und Christians Infos waren für mich etwas praxisnäher und einleuchtender.
Dennoch, ich freue mich, daß Newbies hier gern und kompetent geholfen wird.
Tschüss, Leif
Hallo,
Mit den Auskünften kann ich mir jetzt etwas zusammenreimen :-)
Ist auch nicht so ganz einfach, wenn man mit der Materie noch nicht soooo vertraut ist.
Frank, Lude und Christians Infos waren für mich etwas praxisnäher und einleuchtender.
Stimmt. Der Link beleuchtete mehr den theoretisch Sinn. Ich dachte auch darum ging es Dir. Aber gut wenn jetzt alles geklärt ist.
Dennoch, ich freue mich, daß Newbies hier gern und kompetent geholfen wird.
Jo .... so ein Forum ist schon ganz nett. *freu*
Gruss
MichaelB
Hallo,
in der Online-Hilfe zu SQL-Server steht:
Transaktionen
Eine Transaktion ist eine Folge von Operationen, die als einzelne logische Arbeitseinheit ausgeführt wird. Eine logische Arbeitseinheit muss vier Eigenschaften aufweisen, die als ACID-Eigenschaften (Atomicity, Consistency, Isolation und Durability; Unteilbarkeit, Konsistenz, Isolation und Beständigkeit) bezeichnet werden, um als Transaktion zu gelten.
Unteilbarkeit
Eine Transaktion muss eine unteilbare Arbeitseinheit sein; entweder werden alle durch sie vorgesehenen Datenänderungen oder keine der Änderungen ausgeführt.
Konsistenz
Am Ende einer Transaktion müssen sich alle Daten in einem konsistenten Zustand befinden. In einer relationalen Datenbank müssen alle Regeln auf die Änderungen der Transaktion angewendet werden, um die Integrität aller Daten zu erhalten. Alle internen Datenstrukturen, wie B-Baum-Indizes oder doppelt verknüpfte Listen, müssen am Ende der Transaktion korrekt sein.
Isolation
Änderungen, die von gleichzeitigen Transaktionen ausgeführt werden, müssen von allen Änderungen, die von anderen gleichzeitigen Transaktionen ausgeführt werden, isoliert sein. Einer Transaktion stehen Daten entweder in dem Zustand zur Verfügung, in dem sie sich vor der Änderung durch eine andere gleichzeitige Transaktion befanden, oder in dem Zustand nach Beenden der zweiten Transaktion, jedoch nicht in einem Zwischenzustand. Dies wird als Serialisierbarkeit bezeichnet, da sich daraus die Fähigkeit ableitet, die Ausgangsdaten erneut zu laden und eine Reihe von Transaktionen erneut durchzuführen, um schließlich die Daten in dem Zustand zu erhalten, der vorlag, nachdem die ursprünglichen Transaktionen ausgeführt wurden.
Beständigkeit
Nach Abschluss einer Transaktion sind ihre Auswirkungen im System dauerhaft. Die Änderungen bleiben auch bei einem Systemfehler erhalten.
Festlegen und Erzwingen von Transaktionen
SQL-Programmierer sind dafür verantwortlich, Transaktionen an Punkten zu starten und zu beenden, die die logische Konsistenz der Daten erzwingen. Der Programmierer muss die Sequenz der Datenänderungen so definieren, dass die Daten hinsichtlich der Geschäftsregeln der Organisation in konsistentem Zustand bleiben. Daraufhin schließt der Programmierer diese Änderungsanweisungen in eine einzelne Transaktion ein, so dass Microsoft® SQL Server™ die physische Integrität der Transaktion erzwingen kann.
Es ist die Aufgabe eines Unternehmensdatenbanksystems, wie SQL Server, Mechanismen bereitzustellen, durch die die physische Integrität aller Transaktionen sichergestellt wird. SQL Server stellt Folgendes zur Verfügung:
Sperrvorrichtungen, durch die die Isolation jeder Transaktion erhalten bleibt.
Protokolliervorrichtungen, durch die die Beständigkeit von Transaktionen sichergestellt wird. Sogar bei einem Fehler der Serverhardware, des Betriebssystems oder von SQL Server selbst verwendet SQL Server nach dem Neustart die Transaktionsprotokolle, um automatisch einen Rollback für alle nicht beendeten Transaktionen auszuführen, der sie auf ihren Zustand vor dem Systemfehler zurücksetzt.
Funktionen der Transaktionsverwaltung, die die Unteilbarkeit und Konsistenz der Transaktionen erzwingen. Nach Beginn einer Transaktion muss die Transaktion erfolgreich beendet werden, da SQL Server sonst alle Datenänderungen rückgängig macht, die seit Beginn der Transaktion ausgeführt wurden.
HTH
Gruß Frank