SerialisierbarkeitDer Begriff Serialisierbarkeit stammt aus der Datenbanktheorie der Informatik. In Transaktionssystemen existiert ein Ausführungsplan für die parallele Ausführung mehrerer Transaktionen. Der Plan wird auch Historie genannt und gibt an, in welcher Reihenfolge die einzelnen Operationen der Transaktion ausgeführt werden. Als serialisierbar wird eine Historie bezeichnet, wenn sie zum selben Ergebnis führt wie eine nacheinander (seriell) ausgeführte Historie über dieselben Transaktionen. Man unterscheidet Konfliktserialisierbarkeit, Sichtenserialisierbarkeit und 1-Serialisierbarkeit. Steht der Begriff Serialisierbarkeit allein, wird er meistens als Konfliktserialisierbarkeit verstanden. Anschauliches BeispielUm sich die wichtigsten Begriffe dieses Artikels anschaulich vorstellen zu können, soll folgendes Beispiel dienen:
KonfliktserialisierbarkeitZur Überprüfung der Äquivalenz der Historien wird hier die Konfliktäquivalenz herangezogen. Die Bedingungen der Konfliktserialisierbarkeit lauten in Formeln:
In Worten:
Die Commit-abgeschlossene Projektion einer Historie enthält nur noch diejenigen Transaktionen, die durch Commit abgeschlossen werden (also nicht abgebrochen werden). Diese Projektion wird im Artikel Historie näher erläutert. Konfliktserialisierbarkeit kann mit Hilfe eines Serialisierbarkeitsgraphen getestet werden: Ist der entstehende Graph azyklisch (kreisfrei), so ist die getestete Historie serialisierbar. SichtenserialisierbarkeitHier wird zur Überprüfung der Äquivalenz die Sichtenäquivalenz verwendet. Die Bedingungen der Sichtenserialisierbarkeit lauten – analog zu oben – in Formeln:
In Worten:
Sichtenserialisierbarkeit kann mit Hilfe eines Polygraphen getestet werden: Ist der entstehende Graph azyklisch, so ist die getestete Historie sichtenserialisierbar. Zusammenhang zwischen Konflikt- und SichtenserialisierbarkeitDie Menge aller konfliktserialisierbaren Historien bildet eine echte Untermenge der Menge aller sichtenserialisierbaren Historien. Historien, die konfliktserialisierbar sind, sind demnach automatisch auch sichtenserialisierbar. Sichtenserialisierbarkeit ist theoretisch die effektivere Form der Serialisierbarkeit, denn sie ermöglicht mehr Nebenläufigkeit und damit bessere Leistungen als Konfliktserialisierbarkeit. Das Problem dabei ist, dass der Test auf Sichtenserialisierbarkeit mit einem Polygraphen NP-vollständig ist, also extrem lange dauert. Dadurch ist eine Ausnutzung der Sichtenserialisierbarkeit praktisch nicht möglich. 1-SerialisierbarkeitDie 1-Serialisierbarkeit ist eine Spezialisierung der Sichtenserialisierbarkeit auf Mehrversionen-Historien. In Formeln:
In Worten:
Prinzipiell ist die hierzu verwendete Äquivalenzrelation identisch mit der Sichtenäquivalenz, die besonderen Beschaffenheiten der Mehrversionen-Historien machen aber die Überprüfung der Gleichheit des letzten Schreibens hinfällig. Der Test, ob zwei Mehrversionen-Historien sichtenäquivalent sind, wird dadurch vereinfacht. 1-Serialisierbarkeit kann mit Hilfe eines Mehrversionen-Serialisierbarkeitsgraphen getestet werden: Ist der entstehende Graph azyklisch, so ist die getestete Historie 1-serialisierbar. Vergleich zwischen Sichten- und 1-SerialisierbarkeitAusschließlich gewöhnliche (Einversionen-)Historien können sichtenserialisierbar sein, während Mehrversionen-Historien ausschließlich 1-serialisierbar sein können. Die Grundbedeutung beider Begriffe ist – sieht man von der Form der Historie ab – identisch: „Wenn ich nur diejenigen Operationen ausführe, die das Ergebnis sichtbar beeinflussen, und das in der richtigen Reihenfolge, ist das Ergebnis korrekt“. Beide Eigenschaften bestätigen also die Korrektheit der überprüften Historie. Beide Eigenschaften werden in der Praxis kaum verwendet, da die Überprüfung über die zugehörigen Graphen extrem lange dauert. Datenbank-SchedulerEin Datenbank-Scheduler dient der Verwaltung von Schreib- und Lesezugriffen (sog. Operationen) auf Datenbankobjekten. Er sorgt dafür, dass keine Konflikte bei nebenläufigen Transaktionen auftreten. Transaktionen werden nach Möglichkeit parallel ausgeführt, um die Systemressourcen optimal ausnutzen zu können bzw. sie in kürzerer Zeit abzuschließen als wenn man sie nacheinander (seriell) ausführt. Dies kommt besonders bei Mehrbenutzerdatenbanken zum Tragen, da in solchen Systemen viele Datenbankzugriffe in sehr kurzer Zeit stattfinden können beispielsweise im zentralen Server einer Bank, der die Konten aller Filialen verwaltet. Mit anderen Worten, der Scheduler ist die Komponente eines DBMS, welche die Ablaufreihenfolge (auch Schedule oder Historie genannt) der Datenzugriffe auf der Datenbank (Datenbankoperation) so konstruiert, dass sie einem bestimmten Protokoll gehorchen. Außerdem übernimmt ein Scheduler die Ablaufkontrolle. Dabei hat er die Möglichkeit eine Operation sofort auszuführen (d. h. an den Datenverwalter weitergeben), sie zu verzögern (meist realisiert über eine Warteschlange) um den Operationen andere Transaktionen den Vorzug zu geben oder sie zurückzuweisen (durch Abbruch / abort der zugehörigen Transaktion). Ein Scheduler muss folgende Eigenschaften eines Schedules sicherstellen:
Serieller ScheduleIn einem seriellen Schedule werden die enthaltenen Transaktionen strikt nacheinander ausgeführt. Ein serieller Schedule ist damit immer korrekt, weil keine Überschneidungen der Transaktionen auftreten können. Allerdings ist ein serieller Schedule auch verhältnismäßig ineffizient, weil eine Transaktion immer die Beendigung der anderen Transaktion abwarten muss und damit keine Parallelisierung ausgenutzt werden kann. Ein Schedule wird als serialisierbar bezeichnet, wenn er äquivalent zu einem seriellen Schedule ist. Es gibt dabei folgende Äquivalenzklassen:
Fehlersicherheit eines Schedules ist die Eigenschaft, dass dieser Schedule sich bei Abbruch einer oder mehreren Transaktionen genauso verhält wie ein ähnlicher Schedule, der ausschließlich die nicht abgebrochenen Transaktionen enthält. Es gibt folgende Klassen von Schedules bzgl. der Fehlersicherheit:
|
Portal di Ensiklopedia Dunia