Kapitel 7 - Integrität und Transaktionskonzept
- Klassifikation der Datenintegrität
- Was ist semantische Integrität
- Was ist operationale Integrität
- Transaktionen und parallele Ausführung
- Was sind Phantome?
- Was bedeutet das ACID-Prinzip für Transaktionen?
|
Was kann zur Datenintegrität beigetragen werden?
Durch einzelne wenige fehlerhafte Daten kann der gesamte Datenbestand einer
Datenbank zerstört werden. DBMS müssen deshalb einige Fehlersituationen
selbstständig erkennen und entsprechend darauf reagieren.
- fehlerbehaftete Bestandsänderungen durch Anwender und fehlerhafte
Programmfragmente
- Kollisionen im Mehrbenutzerbetrieb bei zeitgleichem Zugriff auf die Daten
- Systemausfall aufgrund von Hardware- oder anderer Fehler innerhalb eines
Abarbeitungsprozesses
Das Überprüfen von Randbedingungen für Attribut-Ausprägungen und das
Überwachen von Beziehungen zwischen Tupeln sind zwei der wenigen Möglichkeiten des
DBMS für den ersten Fall. Diese werden im Allgemeinen unter logischer
Datenintegrität als Integritätsbedingungen bezeichnet.
Die wichtigste Komponente ist mit Sicherheit der
Transaktionsmanager, welcher den Mehrbenutzerbetrieb abgleicht, um
Kollisionen zu vermeiden.
In welche fünf Bereiche kann man Integrität klassifizieren?
- Sematische Integrität
- Operationale Integrität
- Recovery
- Datenschutz
- Konsistenz (ist Synonym für Integrität)
Was ist semantische Integrität?
Das DBMS muss unabsichtliche Fehlbedienungen oder auch beabsichtigte
Fehleingaben erkennen und hier Kontrollmöglichkeiten besitzen, um die Zulässigkeit
der Eingaben zu prüfen.
Die Bedingungen werden im konzeptuellen Schema definiert oder im DBMS selbst etwa
durch Typprüfungen für Attributwertdomänen oder Bereichsprüfungen numerischer
Werte.
Das Problem von Integritätsprüfungen ist die möglich hohe Komplexität. Es muss also
ein Trade-Off zwischen Veränderung der Laufzeit, der Wahrscheinlichkeit von
Integritätsverletzungen und der Korrektheitsanforderung der jeweiligen Umgebung
getroffen werden.
Was ist operationale Integrität?
Wenn mehrere Benutzer gleichzeitig an einer Datenbank arbeiten, können sie
sich gegenseitig stören oder beeinflussen, wenn sie auf die selben Daten zugreifen.
Auch wenn sich jeder Teilnehmer korrekt verhält, können durch Überschneidung von
Operationen Fehler auftreten, welche die Datenbank in einen inkonsistenten Zustand
versetzen könnten. Deshalb wird zur Aufrechterhaltung der operationalen Integrität
eine Koordination der verschiedenen Operationen notwendig...
Deshalb wird hier der Begriff der Transaktion und der Synchronisation paralleler
Transaktionen notwendig.
Was ist eine Transaktion?
Eine Transaktion ist ein Benutzerauftrag, der die Datenbank von einem
konsistenten Zustand in einen anderen ebenfalls konsistenten Zustand überführen
soll. Eine Transaktion ist zwingend atomar, d.h. nicht unterbrechbar durch
irgendwelche anderen Prozesse bzw. Transaktionen!
Transaktionen und korrekte Verarbeitung
Es muss eine zeitlich verzahnte Verarbeitung verschiedener Aufträge möglich
sein. Dabei muss ein gewisser Grad an Fehlertoleranz garantiert werden können.
- ein DB Benutzer darf nicht merken, dass er nicht alleine am System arbeitet
- das DBMS muss selbstständig auftretende Konflikte lösen können
Transaktionsverarbeitung = Concurrency-Control +
Recovery-Manager Wichtigstes Prinzip bei der Transaktionsverarbeitung ist
das Read-Write-Transaktionen Modell, welches eine Abstrahierung erlaubt und dadurch
Fehlerverarbeitung und Umgehung erleichtert. Read-Write-Transaktionen führen
wiederrum zu Schedules.
Wozu Parallelität bei Transaktionsverarbeitung?
Ein DBMS könnte Konsistenz bewahren, wenn es alle ankommenden Transaktionen in
einen Buffer legen würde, um sie dort sequentiell abzuarbeiten. Dies ist aber auf
Grund extremer Wartezeiten nicht akzeptabel. Deshalb müssen Transaktionen so weit
wie möglich Parallel verarbeitet werden. Dies kann ohne Bedenken geschehen, wenn
folgende beiden Bedingungen zutreffen:
- alle Transaktionen sind nur lesend
- alle Transaktionen greifen auf keine gemeinsamen Elemente zu
Sind diese Bedingungen nicht gegeben kommt es zu Konflikten.
Was sind Phantome?
Phantome sind Objekte in einer Datenbank, welche zu einem bestimmten Zeitpunkt
noch nicht existieren, die aber nicht illegal sind. Sie treten bei mehrphasigen
Operationen, wie beim Erstellen von Statistiken auf. Wird in der ersten Phase eine
Anzahl bestimmt, danach Datensätze hinzugefügt, so treten diese im weiteren Verlauf
der Berechnungen als Phantome auf. Das DBMS muss dies irgendwie verhindern. Die
Technik hierfür wird später erklärt. (Einführung von LOCK und UNLOCK)
Was bedeutet das ACID-Prinzip?
Atomicity (Atomar)
Aus Sicht des Nutzers wird seine Anfrage (bzw. Programm) komplett oder gar nicht
ausgeführt. Falls ein Fehler während der Ausführung auftritt, erscheint die
Datenbank in dem Zustand, als wäre der Code nie ausgeführt worden. Der Recovery
Manager biegt es wieder gerade :-)
Consistency (Konsistenz)
Alle Integritätsbedingungen der DB werden eingehalten und die DB wird in einem
konsistenten "Zustand" gehalten, falls sie vor Ausführung der Transaktion in einer
solchen war.
Isolation
Das Programm läuft völlig unabhängig von eventuell parallel laufenden Prozessen in
einem gesicherten Pufferbereich ab. Zur Verarbeitung bekommt des Programm nur
sichere konsistente Daten aus der DB. Die Isolation verhindert somit Konflikte im
Mehrbenutzerbetrieb.
Durability (Persistenz)
Falls eine "Befehl erfolgreich ausgeführt" Meldung angezeigt wird, muss
sichergestellt sein, dass die geänderten Daten auch nach jedem Hard- oder
Softwarefehler permanent in der Datenbank erhalten bleiben. Sogar wenn die Daten
sich zu diesem Zeitpunkt noch im Puffer und nicht auf dem Sekundärspeicher
befinden.
Was sind die Kostenkriterien einer Transaktion?
CPU-Intensität und I/O-Intensität.
Kann eine Transaktion zwischen BOT und EOT ein rechtliches Dokument erzeugen?
Nein, die Daten sind erst nach EOT bzw. nach dem abschließenden Commit
'amtlich'. Falls eine Dokument zwischen BOT und EOT amtlich wäre, dann wäre im
übrigen die Rücksetzbedingung verletzt.
|
|
|
|
|
|
Kapitel 1
|
DBMS Konzept
|
|
Eigenschaften, Bestandteile, Ebenen...
|
|
Kapitel 2
|
DB Entwurf
|
|
Qualitätsmerkmale, funktionale Abhängigkeiten, ER...
|
|
Kapitel 3
|
Normalformen
|
|
Übersicht Normalformen, Anomalien...
|
|
Kapitel 4
|
Relationalität
|
|
Regeln und Vorgehensweisen...
|
|
Kapitel 5
|
Sprachen
|
|
relationale Sprachen, SQL, Query...
|
|
Kapitel 6
|
Datenorganisation
|
|
Tertiärspeicher, Adressierung, Indexe, ISAM...
|
|
Kapitel 7
|
Transaktionskonzept
|
|
Datenintegrität, Serialisierbarkeit, ACID...
|
|
Kapitel 8
|
Concurrency Control
|
|
Read-Write Modell, Schedules, Prinzip...
|
|
Kapitel 9
|
Scheduler & Recovery
|
|
2-Phasen-Sperren,Deadlocks,Recovery...
|
|
|
|
|
|
|
Quellen:
|
Gottfried Vossen
Datenbankmanagementsysteme
|
Heuer und Saake
Konzepte und Sprachen
|
Prof. Benn
Skript und Vorlesung
|
Relationale Datenbanken
Andreas Kelz
|
Word Wide Web
Verschiedenste Seiten
|
|
|
|
|