DE4216871C2 - Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen - Google Patents

Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen

Info

Publication number
DE4216871C2
DE4216871C2 DE4216871A DE4216871A DE4216871C2 DE 4216871 C2 DE4216871 C2 DE 4216871C2 DE 4216871 A DE4216871 A DE 4216871A DE 4216871 A DE4216871 A DE 4216871A DE 4216871 C2 DE4216871 C2 DE 4216871C2
Authority
DE
Germany
Prior art keywords
transaction
transactions
execution
operations
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE4216871A
Other languages
English (en)
Other versions
DE4216871A1 (de
Inventor
Yoav Raz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE4216871A1 publication Critical patent/DE4216871A1/de
Application granted granted Critical
Publication of DE4216871C2 publication Critical patent/DE4216871C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Description

Die vorliegende Erfindung betrifft ganz allgemein eine verteilte Datenverarbeitung, und insbesondere ein Transaktionsverarbeitungssystem, in dem Teiloperationen in zugehörigen Transaktionen so verteilt werden, daß zumindest eine Operation in einer zweiten Transaktion durchgeführt wird, bevor eine erste Transaktion mit einer in Konflikt stehenden Operation ausgeführt wird. Die vorliegende Erfindung betrifft insbesondere ein Verfahren und eine Vorrichtung zur (Ablauf-) Planung bzw. Steuerung der Durchführung von in Konflikt stehenden Operationen gemäß verfügbaren Systemelementen (resource) und zum Sicherstellen, daß die Ergebnisse der in Konflikt stehenden Operationen in der gleichen Reihenfolge wie die Reihenfolge der Durchführung der in Konflikt stehenden Operationen ausgeführt werden.
Eine erwünschte Eigenschaft eines Datenverarbeitungssystems besteht in der Fähigkeit des Systems, daß es sich von einem teilweisen Systemausfall, der Speicherschreiboperationen unterbricht, wieder erholt. Wenn ein Anwendungsprogramm gerade eine Speicherschreiboperation zum Zeitpunkt eines Systemausfalls oder -fehlers ausführt, ist es sehr wahrscheinlich, daß der Speichereintrag fehlerhaft wird. Um das Wiederherstellen von Speichereinträgen nach einem teilweisen Systemausfall zu ermöglichen, d. h. die Fehler bei den Speichereinträgen zu beheben, ist es für ein Anwendungsprogramm notwendig, Sicherungskopien (backup copies) der Einträge in einem nicht flüchtigen Speicher abzuspeichern und zu halten. Wenn das Datenverarbeitungssystem wieder gestartet wird, werden die Speichereinträge, die wiedergeholt werden sollen, durch die Sicherungskopien ersetzt.
Um das Erstellen von Sicherungskopien und das Wiederherstellen (recovery) von Speichereinträgen zu ermöglichen und zu erleichtern, stellt das Betriebssystem typischerweise einen eingerichteten Satz von Speichermanagementprozeduren zur Verfügung, die von einem Anwendungsprogramm aufgerufen werden können, um eine "Wiederherstellungseinheit" zu definieren. Die Wiederherstellungseinheit (recovery unit) besteht aus Programmanweisungen (program statements) zwischen einer "Start"-Anweisung und einer "Ausführ"-Anweisung (commit statement). Alle Anweisungen in der "Wiederherstellungseinheit" müssen abgeschlossen sein, bevor die Speichereinträge, die durch die Anweisungen in der Wiederherstellungseinheit modifiziert werden, für eine nachfolgende Verarbeitung verfügbar gemacht werden. Die "Start"-Anweisung entspricht der Erstellung einer Sicherungskopie in einem nichtflüchtigen Speicher und die "Ausführ"-Anweisung entspricht dem Ersetzen der Sicherungskopie durch eine modifizierte Version. Die Anweisungen in der "Wiederherstellungseinheit" spezifizieren Operationen in einer einzelnen "Transaktion". Beim Beheben eines teilweisen Systemfehlers wird die Überprüfung des nichtflüchtigen Speichers (nonvolatile memory) zeigen, daß die Operationen in der einzelnen "Transaktion" entweder alle abgeschlossen sind oder keine von ihnen abgeschlossen ist.
In einem verteilten Datenverarbeitungssystem können die Operationen in einer einzelnen Transaktion Dateien in unterschiedlichen Datenbanken modifizieren und auf die Dateien können andere Prozesse zugreifen. Während des Betriebs der Transaktion können die Dateien zeitweise inkonsistent sein, obwohl die Dateien nach der Beendigung der Transaktion konsistent sein werden. Ein typisches Beispiel ist der Transfer von Geldern von einem Konto auf ein anderes, bei dem ein erstes Konto belastet wird, und kurz darauf ein anderes Konto kreditiert wird. Während der Zwischenzeit sind die beiden Konten inkonsistent, da die Summe der beiden Konten nicht die Gesamtgelder der beiden Konten wiedergibt. Wegen der Inkonsistenz, wenn Dateien durch eine Transaktion modifiziert werden, ist es bekannt, anderen Prozessen zu verbieten, auf die Dateien zuzugreifen, bis die Modifikation abgeschlossen ist. Die Wiederherstellbarkeit kann in diesem Beispiel durch Ausführen einer Überweisung für beide Dateien zum gleichen Zeitpunkt und am gleichen Ort sichergestellt werden. Durch z. B. das Ändern eines einzelnen Zeichens (flag) können die Sicherungskopien jeder Datei durch die modifizierten Versionen der Dateien zum gleichen Zeitpunkt ersetzt werden. Bei vielen Anwendungen ist es jedoch wünschenswert, die Operationen einer Transaktion auf eine Vielzahl von Prozessoren oder Prozessen in einem Datenverarbeitungssystem zu verteilen und die Transaktion durch Ausführen der Operationen in jedem Prozeß oder Prozessor auszuführen, wobei eine gewisse Variabilität zwischen den Ausführungszeitpunkten zugelassen wird. Bei diesen Anwendungen wird ein "Gesamtausführungsprotokoll" (atomic commitment protocol) typischerweise dazu verwendet, die Wiederherstellbarkeit sicherzustellen. Das Protokoll erfordert den Austausch von Informationen über den Zustand der Transaktion zwischen den Prozessoren oder Prozessen. Um die Transaktion zu identifizieren, die ausgeführt wird, wird der Transaktion typischerweise eine individuelle bzw. einzigartige "Transaktionsidentifikationsnummer" (transaction identification number) zugewiesen.
Ein weit verbreitet verwendetes Gesamtausführungsprotokoll ist als "Zweiphasenausführungsprotokoll" (two-phase commit protocol) bekannt. In einem etwas elementaren Beispiel für dieses Protokoll wird einem Prozessor oder einem Prozeß des Datenverarbeitungssystems die Rolle eines Koordinators, der eine Transaktion initialisiert bzw. auslöst, zugewiesen. Um eine Transaktion zu beginnen, sendet der Koordinator einen Vorbereitungsbefehl (prepare command) an alte Prozessoren oder Prozesse, die an der Transaktion teilnehmen.
Mit dem Empfang des "Vorbereitungsbefehls" führt jeder Prozessor oder Prozeß, der an der Transaktion teilnimmt, eine "Start"-Operation durch, indem er zuerst "Schreibsperren" (write locks) für den Speicher, auf den durch die Transaktion zugegriffen wird, plaziert, die Transaktionsidentifikationsnummer in den Dauerspeicher (permanent memory) schreibt, um daran zu erinnern, daß er für die Transaktion bereitsteht bzw. vorbereitet ist, und dann eine Bestätigung zurück zu dem Koordinationsprozessor sendet, aber noch nicht seinen Teil der Transaktion durchführt. Der Koordinator wartet auf die Bestätigungen aller Teilnehmer. Wenn der Koordinator Bestätigungen von allen Teilnehmern erhält bzw. empfängt, schreibt der Koordinator in den Permanentspeicher eine Liste der Teilnehmer und eine Notiz, daß die Transaktion nunmehr abgeschlossen ist, wonach der Koordinator "Ausführ"-Befehle an alle Teilnehmer sendet bzw. ausgibt. Der Koordinator kann jedoch eine Nachricht von einem Teilnehmer empfangen, die anzeigt, daß er sich nicht auf die Transaktion vorbereiten kann, oder es kann fehlschlagen, daß der Koordinator Bestätigungen von allen Teilnehmern nach einer vorgegebenen Zeitdauer empfängt, möglicherweise nachdem der Koordinator den "Vorbereitungs"-Befehl erneut abgesendet hat. In diesem Fall gibt der Koordinator einen "Abbruch"-Befehl (abort command) an alle Teilnehmer aus.
Mit dem Empfang des "Ausführung"-Befehls überprüft jeder Teilnehmer seinen Dauerspeicher nach der Transaktionsidentifikationsnummer, um zu bestimmen, ob er sich auf die Transaktion vorbereitet hat, und, wenn er sich vorbereitet hat, führt er seinen Teil der Transaktion durch, und führt dann eine "Ausführung"-Operation ("COMMIT" operation) durch, um den Zustand bzw. Status des Dauerspeichers zu aktualisieren und die Transaktionsidentifikationsnummer (transaction ID) aus dem Dauerspeicher in einen "Gesamt"-Schritt ("atomic" step) zu löschen (clear) und hebt (erase) schließlich die Schreibsperren (write locks) auf. Dann sendet der Teilnehmer eine Bestätigung zurück an den Koordinator. Wenn der Koordinator die Bestätigungen von allen Teilnehmern erhalten hat, löscht er die Liste der Teilnehmer aus dem Dauerspeicher und die Transaktion ist abgeschlossen.
In vielen verteilten Datenverarbeitungssystemen ist es den Prozessoren oder Prozessen gestattet, mehrere Transaktionen gleichzeitig bzw. simultan durchzuführen. Im gewöhnlichen Fall führt jeder Prozessor oder Prozeß Transaktionen durch, die für den Prozessor oder den Prozeß lokal bzw. örtlich (local) sind, und führt auch Abschnitte von globalen Transaktionen durch. Z. B. können in einem verteilten Datenbanksystem Abfragen und Aufbereitungen (edits) in der lokalen Datenbank lokal auftreten und einige der Modifikationen können global durchgeführt werden. Eine direkte Anwendung des Zweiphasenausführungsprotokolls, das obenstehend beschrieben wurde, kann in einem solchen System zufriedenstellenderweise durchgeführt werden, solange den globalen Transaktionen eine hohe Priorität gegenüber den lokalen Transaktionen eingeräumt werden kann. Aber den Einsatz von Schreib- und Lesesperren kann unnötigerweise lokale Transaktionen einschränken, die gleichzeitig verarbeitet werden könnten.
Eine zusätzliche Schwierigkeit ergibt sich, wenn es erwünscht ist, globale Transaktionen gleichzeitig in mehreren Prozessoren oder Prozessen eines verteilten Datenverarbeitungssystems bzw. Verarbeitungssystems auszuführen. Es ist unpraktisch, es einem Prozessor oder einem Prozeß zu gestatten, ein globales Bild aller Konflikte in allen Prozessoren oder Prozessen zu sehen bzw. zu haben. Ohne ein globales Bild ist es jedoch schwierig für einen Prozessor oder einen Prozeß sicherzustellen, daß es eine Korrelation bzw. einen Zusammenhang zwischen seiner Serieneinordnung (seriability order) und den Serieneinordnungen der anderen Prozessoren oder Prozesse gibt. Das Zeitmarkieren (time stamping) von Transaktionsnachfragen (transaction requests) und von Datenaktualisierungen (data updates) ist ein Verfahren, das verwendet worden ist, um diesem Problem der Gleichzeitigkeitssteuerung und -kontrolle zu begegnen. Im allgemeinen ist eine Gleichzeitigkeitssteuerung in einem verteilten Datenverarbeitungssystem auf Kosten einer beschränkten Autonomie der lokalen Prozessoren und Prozesse oder durch Sperren (locking) erreicht worden.
Dem Problem des globalen Systemstillstands bzw. der globalen Blockierung (global deadlock) muß auch begegnet werden, wann immer globale Transaktionen gleichzeitig durchgeführt werden sollen. Eine bekannte Lösung dafür besteht darin, einen globalen Transaktionsmanager vorzusehen, der entscheidet, ob gleichzeitige globale Transaktionsnachfragen (global transaction request) gesendet werden oder nicht. Ein Beispiel dafür wird in Y. Breitbart usw., "Reliable Transaction Management in a Multidatabase System", Proc. of the ACM SIGMOD conf. on Management of Data, Atlantic City, New Jersey, June 1990, Seiten 215-224 beschrieben. Der globale Planer (global scheduler) verfolgt globale Transaktionsnachfragen nach lokalen Sperrungen von Datenbeständen, indem er einen globalen Sperrmechanismus verwendet. Jedes globale Datenfeld (data item) hat eine globale Sperre, die ihm zugeordnet ist. Eine globale Transaktion, die nur ein Datenfeld zu lesen braucht, fragt nach einer globalen Lesesperre. Sperren stehen in Konflikt zueinander, wenn sie von zwei unterschiedlichen Transaktionen bezüglich des gleichen Datenfelds nachgefragt werden und zumindest eine der nachgefragten Sperren eine Schreibsperre ist. Wenn zwei globale Transaktionen in Konflikt stehende (conflicting) globale Sperren nachfragen, sorgt der Planer dafür, daß eine der Transaktionen nicht durchgeführt bzw. verarbeitet wird, da er weiß, daß die beiden Tansaktionen einen Konflikt auf der lokalen Seite verursachen würden. Der Planer verwendet ein strenges Zwei-Phasen-Sperren (two-phase locking) zum Zuweisen globaler Sperren zu globalen Transaktionen und unterhält einen globalen "Wartegraphen" (wait for graph). Der globale Wartegraph ist ein gerichteter Graph G = (V, E), dessen Satz aus Punkten (vertices) V ein Satz aus globalen Transaktionen ist, wobei eine Kante (edge) Ti → Tj zu E gehört, wenn und nur wenn die globale Transaktion Ti auf eine globale Sperre wartet, die einer globalen Transaktion Tj zugewiesen wird. Wenn eine globale Transaktion auf eine globale Sperre wartet, dann wird der Transaktionszustand "blockiert" und die Transaktion ist im "globalen Wartegraphen" enthalten. Die Transaktion wird nur dann wieder aktiv, nachdem sie globale Sperren erhalten kann, auf die sie gewartet hat. Um einen globalen Stillstand oder eine globale Blockierung zu verhindern, wird der "globale Wartegraph" immer azyklisch erstellt. Um eine Datenkonsistenz beim Vorkommen von Ausfällen und Fehlern sicherzustellen, verwendet der Planer ebenfalls einen "Ausführungsgraphen" (commit graph) und einen "Warte- auf-Ausführungsgraphen" (wait-for-commit-graph), um zu bestimmen, wann eine Ausführungsoperation geplant werden kann. Der Ausführungsgraph CG = <TS, E< ist ein ungerichteter, zweigeteilter Graph (bipartite graph), dessen Satz aus Knoten (nodes) TS aus einem Satz globaler Transaktionen (Transaktionsknoten) und einem Satz lokaler Plätze (Platzknoten) besteht. Die Kanten von E kön­ nen nur Transaktionsknoten mit Platzknoten verbinden. Eine Kante (Ti, Sj) ist in E, wenn und nur wenn die Transaktion Ti an einem Platz (site) Sj ausgeführt wurde und die Ausfüh­ rungsoperation für Ti für die Verarbeitung eingeplant wor­ den ist. Nachdem die Ausführoperation für Ti abgeschlossen worden ist, wird Ti von dem Ausführungsgraphen zusammen mit allen Kanten die auf Ti treffen, entfernt. Eine globale Datenbankkonsistenz wird erreicht bzw. sichergestellt, wenn der Ausführungsgraph keine Schleifen enthält. Der Warte-auf- Ausführungsgraph ist ein gerichteter Graph G = (V, E), des­ sen Satz an Punkten V aus einem Satz globaler Transaktionen besteht. Eine Kante Ti → Tj ist in E, wenn und nur wenn Ti seine Ausführung (execution) abgeschlossen hat, aber seine Ausführungsoperation (commit operation) noch anhängig ist, und Tj ist eine Transaktion, deren Ausführungsopera­ tion abgeschlossen oder abgebrochen werden sollte, bevor die Ausführung von Ti geplant werden kann. Der Planer ver­ wendet den nachfolgenden Algorithmus zum Aufbauen des War­ te-auf-Ausführungsgraphen und zum Planen einer Ausführungs­ operation der Transaktion Ti:
  • 1. Für jeden Platz Sk an dem Ti ausgeführt wird, addiere kurzfristig die Kante Ti → Sk zum Ausführungsgraphen hinzu.
  • 2. Wenn der vergrößerte Ausführungsgraph keinen Zyklus enthält, dann wird die globale Ausführungsoperation zur Verarbeitung vorgelegt und die kurzzeitigen Kanten werden zu dauerhaften Kanten.
  • 3. Wenn der vergrößerte Ausführungsgraph einen Zyklus enthält, dann:
    • a) werden die Kanten Ti → Ti1, . . ., Ti → Tim in den Warte-auf- Ausführungsgraphen eingefügt. Der Satz {Ti1, Ti2, . . ., Tim} besteht aus all den Transaktionen, die in dem Zyklus auftreten, welcher als Ergebnis des Hinzuaddierens der neuen Kanten zu dem Ausführungsgraphen erzeugt worden ist.
    • b) Entferne die temporären Kanten aus dem Ausführungsgraphen.
Die Transaktion Ti muß jedoch nicht notwendigerweise auf die Beendigung jeder Transaktion Tik warten, so daß Ti → Tik wird. Sie kann für die Einplanung in einer Ausführungsoperation bereit sein, nachdem einige Transaktionen Tik erfolgreich ausgeführt worden sind, so daß Ti → Ti1 (0 < 1 < r) ist (und in einigen Fällen reicht eine erfolgreiche Ausführung von nur einer dieser Transaktionen aus, um die Ausführung der Transaktion zu planen!).
Aufgabe der vorliegenden Erfindung ist es, die Serienverarbeitung unter verteilten Transaktionen in einem Verarbeitungssystem sicherzustellen.
Mit dem Problem der Serienverarbeitung bzw. der Serialisierung des Zugriffs auf Objekte durch ein Datenverarbeitungssystem befaßt sich US-4,249,241. Zugriffsbeschränkungen werden automatisch durchgesetzt, indem auf mögliche Zugriffskonflikte hin überprüft wird und im Falle des Vorliegens eines Zugriffskonflikts der Zugriff gesperrt wird. Die Abwicklung möglicher Zugriffskonflikte erfolgt also basierend auf dem Sperren bzw. der Freigabe des Zugriffs auf ein bestimmtes Objekt. Zudem können vom Benutzer selbst Sperrungen vorgegeben werden.
Mit dem Problem der Koordinierung der Ausführung von Transaktionen befaßt sich Korth, Silberschatz "Database System Concepts", S. 491-503, McGraw-Hill, 1991. Widerherstellungsschemata sowie Schemata für den zeitgleichen Ablauf von Transaktionen werden vorgestellt. Insbesondere erfolgt eine genaue Beschreibung des Zwei-Phasen-Ausführungsprotokolls.
Mit dem Problem der Serialisierbarkeit von Multidatenbank-Transaktionen befaßt sich Georgakopoulos et al. "On Serializability of Multidatabase Transactions Through Forced Local Conflicts", Proceedings of Seventh International Conference on Data Engineering, Kobe, Japan, April 1991. Darin wird ein Transaktions- Managementmechanismus vorgestellt, der die Ausführung von Multidatenbank- Transaktionen lediglich dann erlaubt, wenn ihre relative serielle Reihenfolge in allen lokalen Datenbanken gleich ist. Hierzu werden direkte Konfikte zwischen Multidatenbank-Transaktionen generiert, die es gestatten, die relative serielle Reihenfolge der Untertransaktionen festzustellen.
Diese Aufgabe wird durch das Verfahren nach Anspruch 1 bzw. durch das digitale Computersystem zum Verarbeiten von Transaktionen nach Anspruch 15 gelöst. Die Unteransprüche definieren besondere Ausführungsformen der Erfindung.
Die vorliegende Erfindung garantiert gemäß einem Ausführungsbeispiel eine serielle Verarbeitung bzw. Serialisierbarkeit (serializability) unter verteilten Transaktionen in einem Datenverarbeitungssystem, indem die Transaktionen selektiv ausgeführt und abgebrochen werden, um eine Reihenfolge der Ausführung (order of commitment) zu ermöglichen bzw. zu unterstützen, die die gleiche ist, wie eine Reihenfolge der Durchführung von in Konflikt stehenden Teiloperationen der Transaktionen. Wenn die Transaktion ausgeführt wird, werden Ergebnisse der Teiloperationen einem Zustandsspeicher eingegeben. Wenn die Operation abgebrochen wird, werden die Ergebnissse der Teiloperationen gelöscht. Z. B. steht eine erste Speicherzugriffsoperation in einer ersten Transaktion mit einer zweiten Speicherzugriffsoperation in einer zweiten Transaktion in Konflikt, wenn die zwei Speicherzugriffsoperationen die gleiche Speicherstelle betreffen und zumindest eine der Operationen eine Schreiboperation ist.
Bei einem typischen bekannten Transaktionsverarbeitungssystem kann eine zweite Transaktion nur Daten lesen, die von einer ersten Transaktion geschrieben worden sind, nachdem die erste Transaktion ausgeführt worden ist. Diese Einschränkung ist eine ausreichende Bedingung dafür, eine Wiederherstellung des Systems sicherzustellen. Um die vorliegende Erfindung in diesem Fall praktisch umzusetzen, wenn eine zweite Transaktion eine Leseoperation durchführt, bevor eine in Konflikt stehende Schreiboperation einer ersten Transaktion ausgeführt wird, zu einem Zeitpunkt, wenn die zweite Transaktion noch nicht ausgeführt worden ist, wird die erste Transaktion abgebrochen, um sicherzustellen, daß die Reihenfolge, in der die Transaktionen ausgeführt werden, nicht unterschiedlich zu der Reihenfolge ist, in der die in Konflikt stehenden Operationen durchgeführt werden bzw. durchgeführt werden müssen.
Die vorliegende Erfindung erlaubt jedoch die Auslegung eines Transaktionsverarbeitungssystems, in dem eine zweite Transaktion Daten lesen kann, die von einer Schreiboperation einer ersten Transaktion geschrieben worden sind, bevor die erste Transaktion ausgeführt wird. In diesem Fall, und zwar in Abhängigkeit von der jeweiligen Reihenfolge, in der die zwei in Konflikt stehenden Operationen auftreten, kann eine der beiden Transaktionen abgebrochen werden, um sicherzustellen, daß die Reihenfolge der Ausführung der Transaktionen die gleiche ist wie die Reihenfolge der Durchführung der in Konflikt stehenden Operationen. Des weiteren, und zwar um eine Wiederherstellbarkeit zu gewährleisten, sollten beide Transaktionen in dem Fall abgebrochen werden, bei dem eine Leseoperation einer Schreiboperation nachfolgt und die Leseoperation durchgeführt wird, bevor die Schreiboperation abgebrochen wird. Im allgemeinen wird in einem Transaktionsverarbeitungssystem, in dem eine zweite Transaktion Daten lesen kann, die von einer Schreiboperation einer ersten Transaktion geschrieben worden sind, die Wiederherstellbarkeit durch einen Prozeß kaskadierender Abbrüche (cascading aborts) unterstützt. Das Abbrechen einer Transaktion erfordert das zusätzliche Abbrechen aller anderen Transaktionen, die Daten gelesen haben, welche von abgebrochenen Transaktionen geschrieben worden sind.
In Fällen, wo Speicheradressen oder Speicherzugriffsoperationen vor dem Erzeugen oder Vorbereiten der Transaktionen bekannt sind, kann die erforderliche Ausführungsreihenfolge vor der Vorbereitung der Transaktionen bestimmt werden. Ansonsten werden Konflikte festgestellt, wenn die Speicheradressen während des Vorbereitens der Transaktionen bestimmt werden.
Die Ausführungsreihenfolge (commitment order) wird durch Ausführen (committing) einer ausgewählten Transaktion erzwungen, für die ein Ergebnis vorbereitet worden ist, und indem andere Transaktionen abgebrochen werden, für die ein Ergebnis gerade in Vorbereitung ist oder vorbereitet wird und für die die Ausführung im Gegensatz zu der vorher definierten Ausführungsreihenfolge und der Ausführung der ausgewählten Transaktionen steht. Z. B. wird die Transaktion, die ausgeführt werden soll, ausgewählt, indem Prioritäten, die den Transaktionen zugeordnet sind, verglichen werden, indem ein Einreihen bzw. Einordnen der Transaktionen in eine Liste durchgeführt wird, indem eine Ausführungsnachfrage von einem Koordinator gemacht wird oder indem eine Strategie verwendet wird, um die Anzahl anderer Transaktionen zu minimieren, die als Ergebnis der Auswahl abgebrochen werden. In einem Vielprozessorsystem, in dem ein globaler Koordinator mit einer Vielzahl von Transaktionsprozessoren mittels "Vorbereitungs" (prepare) und "Ausführungs"-Befehlen kommuniziert, wird die Minimierungsstrategie bevorzugterweise dazu verwendet, um die Bestätigung zu verzögern, daß eine Transaktion "vorbereitet" worden ist, bis der "Abbruchsatz" (abort set) der Transaktion minimiert worden ist.
Vorteilhafte Weiterbildungen der vorliegenden Erfindung sind den Unteransprüchen zu entnehmen.
Weitere Vorteile und Anwendungsmöglichkeiten der vorliegenden Erfindung werden aus der nachfolgenden Beschreibung bevorzugter Ausführungsformen in Verbindung mit den beiliegenden Zeichnungen deutlich. Es zeigen:
Fig. 1 ein Blockdiagramm eines digitalen Computers, der für eine Transaktionsverarbeitung ausgelegt ist;
Fig. 2A ein Flußdiagramm einer Prozedur zum Durchführen einer Transaktionsverarbeitung in dem Computer der Fig. 1, indem zwischen zwei Zustandsspeicherbanken geschaltet wird;
Fig. 2B eine alternative Prozedur zum Betreiben des Digitalcomputers der Fig. 1 für Transaktionsverarbeitung, indem die Kopien von nur denjenigen Dateneinträgen des Zustandsspeichers bewahrt bzw. geschützt werden, die durch eine Transaktion modifiziert wurden;
Fig. 3A Verschiedene Planungsmöglichkeiten für in Konflikt stehende Speicherzugriffsoperationen von verteilten Transak­ tionen für den Fall, wo eine zweite Transaktion die Schreib­ daten einer ersten Transaktion nur lesen kann, nachdem die erste Transaktion ausgeführt worden ist;
Fig. 3B verschieden Planungsmöglichkeiten für in Konflikt stehende Speicherzugriffsoperationen verteilter Transaktio­ nen für den Fall, wo eine zweite Transaktion die Schreibda­ ten einer ersten Transaktion lesen kann, bevor die erste Transaktion ausgeführt wird;
Fig. 4A einen digitalen Computer, der in Übereinstimmung mit einer bevorzugten Ausführungsform der vorliegenden Er­ findung konfiguriert ist, um eine Ausführungsreihenfolge zu bewirken, in der verteilte Transaktionen in der Reihen­ folge, in der in Konflikt stehende Komponentenoperationen durchgeführt werden, ausgeführt werden;
Fig. 4B ein verteiltes Datenverarbeitungssystem, das eine Vielzahl von digitalen Computern gemäß Fig. 4A enthält;
Fig. 5 eine Planungsprozedur, die von einer Transaktions­ planungskomponente des digitalen Computers nach Fig. 4A verwendet wird.
Fig. 6 eine Organisation einer Transaktionsliste und zuge­ höriger Zeiger (pointer), die von dem Transaktionsplaner (transaction scheduler) zum Planen der Durchführung von Komponentenoperationen verteilter Transaktionen verwendet werden;
Fig. 7 ein schematisches Diagramm, das einer Datenstruktur entsprechend eines Graphen der Ausführungsreihenfolge zwi­ schen verteilten Transaktionen mit in Konflikt stehenden Komponentenoperationen entspricht;
Fig. 8 ein Pictogramm des Graphen, der den Daten, die in der Datenstruktur nach Fig. 7 gespeichert sind, entspricht;
Fig. 9 ein Flußdiagramm einer Prozedur, die sich auf die Datenstruktur nach Fig. 7 bezieht, um die Ausführungsreihen­ folge zu bewirken;
Fig. 10 ein Flußdiagramm einer Prozedur zum Auswählen einer Transaktion, die ausgeführt werden soll;
Fig. 11 eine Prozedur zum Detektieren einer in Konflikt stehenden Speicherzugriffsoperation während der Vorberei­ tung einer Transaktion;
Fig. 12 einen modifizierten Graphen, in dem Schreib/Lese- Konflikte von anderen Konflikten unterschieden sind;
Fig. 13 ein Flußdiagramm einer rekursiven Prozedur zum Si­ cherstellen einer Wiederherstellung beim Durchführen kaska­ dierender Abbrüche;
Fig. 14 ein Zustandsdiagramm eines digitalen Computers nach Fig. 4A, wenn der digitale Computer in einem Vielprozessor­ system der Fig. 4B zum Verarbeiten von lokaler und globalen Transaktionen verwendet wird;
Fig. 15 ein Flußdiagramm von Ausführungsplanungsprozeduren, die globale Transaktionen auf unterschiedliche Art und Wei­ se wie lokale Transaktionen behandeln;
Fig. 16 ein Flußdiagramm einer Prozedur zum Ausführen und Unterbrechen von Transaktionen in Antwort auf Signale von einem Koordinator einer globalen Transaktion;
Fig. 17 ein Blockdiagramm, das einen Ausführungsreihenfolge- Koordinator zeigt, der die vorliegende Erfindung verwendet, welche in einem herkömmlichen Transaktionsverarbeitungssystem zwischen einem Transak­ tionsmanager und einem Systemelementmanager verwendet wird; und
Fig. 18 ein Zustandsdiagramm eines Transaktionsverarbeitungssystems der Fig. 17.
Im nachfolgenden ist unter einer ausgeführten Transaktion auch immer eine Transaktion zu verstehen, die bestätigt wird, da jeder Teilnehmer nach dem Ausführen einer "Ausführung"-Operation ("COMMIT" operation) eine Bestätigung an den Koordinator sendet (vgl. Seite 5, erster Absatz).
In Fig. 1 wird ein Blockdiagramm gezeigt, das einen digitalen Computer 20 zeigt, der für eine Transaktionsverarbeitung ausgelegt ist. Der Computer 20 enthält eine zentrale Verarbeitungseinheit 21 zum Ausführen programmierter Befehle; einen flüchtigen Speicher mit wahlfreiem Zugriff 22 (random access memory) zum Halten und Speichern von Instruktionen oder Daten; einen nichtflüchtigen Speicher 23 wie z. B. ein Festplattenlaufwerk, eine Eingangs/Ausgangs-Einheit 24 und eine Echtzeituhr 25. Der nichtflüchtige Speicher 23 enthält einen Programmspeicher 26, in dem Programme gespeichert sind, und einen Arbeitsspeicherbereich 27 (scratch memory area) zum Speichern von Dateneinträgen (data records).
Typischerweise führt der Digitalcomputer 20 Programme aus, die von einem Programmspeicher 26 zu dem flüchtigen Speicher mit wahlfreiem Zugriff 22 transferiert worden sind. Während der Ausführung eines Programms ist es oft notwendig, eine Menge von Daten zu bearbeiten, die die Kapazität des flüchtigen Ramspeichers 22 übersteigt. In diesem Fall werden Dateneinträge abwechselnd gespeichert und aus dem Arbeitsspeicherbereich 27 wiedergeholt.
Ein allgemeines Problem, das bei Digitalcomputern 20 auf­ tritt, ist die Wahrscheinlichkeit, daß die Ausführung von Befehlen durch die zentrale Verarbeitungseinheit (central processing unit) wegen eines Hardwareausfalls oder -feh­ lers, eines Softwarefehlers oder eines Ausfalls der Span­ nungsversorgung gestört bzw. unterbrochen wird. Z. B. würde ein Ausfall der Spannungsversorgung das Verschwinden von Daten und Programmen verursachen, die in dem flüchtigen Ramspeicher gespeichert sind. Das Problem des Verlustes von Daten in dem flüchtigen Ramspeicher 22 aufgrund eines Ausfalls der Spannungsversorgung kann gelöst werden, indem die Sicherungskopien der Daten in den nicht flüchtigen Spei­ cher 23 gespeichert werden. Die Sicherungskopien (back-up copies) müssen jedoch auf eine Art und Weise gemacht wer­ den, die die Möglichkeit eines Ausfalls während einer Schreiboperation bezüglich des nichtflüchtigen Speichers 23 berücksichtigt. In diesem Fall könnte der Dateneintrag, der durch die Schreiboperation bewerkstelligt worden ist, ver­ fälscht worden sein und muß deshalb gelöscht werden.
Zur Lösung des Problems eines möglichen Ausfalls oder Feh­ lers bei dem Beschreiben eines nichtflüchtigen Speichers ist ein Programmierverfahren entwickelt werden, das als "Transaktionsverarbeitung" (transaction processing) bezeich­ net wird und das sicherstellt, daß ein Abschnitt des nicht­ flüchtigen Speichers (der nachfolgend als "Zustandsspei­ cher" (state memory) bezeichnet wird) entweder durch eine Transaktion nicht beeinflußt wird oder geeigneterweise durch die Ergebnisse einer Transaktion aktualisiert wird, wenn Ausfälle oder Fehler vorliegen. Eine Transaktionsverar­ beitung basiert auf der Technik des Erstellens einer Siche­ rungskopie des Zustandsspeichers bevor die Ergebnisse der Transaktion in den Zustandsspeicher geschrieben werden, aber auch auf der Technik des Schreibens eines Hinweises in den nichtflüchtigen Speicher für entweder eine erste Verar­ beitungsphase, in der die Sicherungskopie erstellt wird, oder für eine zweite Verarbeitungsphase, in der die Ergebnisse der Transaktion in den Zustandsspeicher geschrieben werden, um anzuzeigen, welche Kopie während eines Ausfalls oder Fehlers möglicherweise verfälscht worden ist. Zum Erstellen einer Sicherungskopie des Zustandsspeichers enthält der nichtflüchtige Speicher 23 z. B. zwei Zustandsspeicherbanken 28 und 29. Um einen Hinweis dafür zu erzeugen, welche Zustandsspeicherbank möglicherweise durch einen Ausfall verfälscht worden ist, enthält der nichtflüchtige Speicher 23 eine Speicherstelle 30 zum Speichern eines Kennzeichens oder Zeichens (switch or flag).
Bei der Rückkehr von einem Ausfall ist es wünschenswert, die Transaktion zu wissen, die zuletzt von der zentralen Verarbeitungseinheit 21 durchgeführt worden ist, so daß die Verarbeitung am Punkt der Unterbrechung wieder aufgenommen werden kann, ohne daß eine Transaktion wiederholt oder übersprungen wird. Für diesen Zweck wird immer dann, wenn der Zustandsspeicher in einer der Speicherbanken 28 oder 29 aktualisiert wird, ein Transaktionsidentifikationscode 31, 32 in den Zustandsspeicher zusammen mit den Zeitpunkten 33, 34 eingeschrieben, zu denen die Ergebnisse der Transaktion zuerst in den Zustandsspeicher eingeschrieben (d. h. eingegeben bzw. ausgeführt (committed)) wurden.
In Fig. 2A wird ein Flußdiagramm einer Prozedur zum Gewährleisten dargestellt, daß, wenn nach einem Ausfall weitergearbeitet wird, der Zustandsspeicher des Computers 20 nach Fig. 1 entweder von einer Transaktion unbeeinflußt worden ist oder durch das Ergebnis der Transaktion in geeigneter Weise aktualisiert wird. Man nehme z. B. an, daß das Computersystem nach einem Ausfall der Spannungsversorgung wieder eingeschaltet wird. In einem ersten Schritt 51 liest die zentrale Verarbeitungseinheit (CPU) 21 den Wert des Kennzei­ chens 30, das in dem nichtflüchtigen Speicher 23 gespei­ chert ist. Dieses Kennzeichen (switch) zeigt an, welche der zwei Zustandsspeicherbanken 28, 29 möglicherweise durch den Ausfall der Spannungsversorgung verfälscht worden ist. Beim Schritt 52 bezieht sich die zentrale Verarbeitungseinheit 21 auf den Wert des Kennzeichens, um die Zustandsspeicher­ bank zu lesen, von der bekannt ist, daß sie nicht ver­ fälscht worden ist, und um eine "Arbeitskopie" (working copy) der Daten in der anderen Zustandsspeicherbank zu ma­ chen. Deshalb haben nach dem Schritt 52 beide Zustandsspei­ cherbanken 28 und 29 den gleichen Inhalt. Des weiteren kann der Transaktionsidentifizierer 31, 32 und die Ausführungs­ zeit (commit time) 33, 34 überprüft werden, um die Stelle in einem Programm der nächsten Transaktion, die bearbeitet werden soll, zu finden.
Beim Schritt 53 wird diese Verarbeitung fortgesetzt, indem die Daten in der Arbeitskopie des Zustandsspeichers modifi­ ziert werden, indem die Ergebnisse der Transaktion, die verarbeitet wird, geschrieben werden. Das Ende der Verarbei­ tung der Transaktion wird beim Schritt 54 erreicht. Um die Ergebnisse der Transaktion in den Zustandsspeicher zu über­ tragen bzw. einzugeben, wird der Wert des Kennzeichens im Schritt 55 geändert und beim Schritt 56 wird der geänderte Wert des Kennzeichens in die Kennzeichenstelle 30 des nichtflüchtigen Speichers geschrieben. Wenn das Kennzeichen von der zentralen Verarbeitungseinheit 21 während der Rück­ kehr von einem Ausfall gesehen wird, dann hat das Schreiben des geänderten Werts des Kennzeichens in den nichtflüchti­ gen Speicher den Effekt des Sicherstellens, daß das übertra­ gene bzw. eingegebene Ergebnis der Transaktion entweder keinen Effekt bezüglich des Zustandsspeichers hat oder in geeigneter Weise den Zustandsspeicher aktualisiert, und zwar abhängig davon, ob der Ausfall vor oder nach dem Ein­ schreiben des Kennzeichenwertes in den nichtflüchtigen Spei­ cher aufgetreten ist oder nicht. Da der Wert des Kennzei­ chens 30 ein einzelnes Bit ist und das Kennzeichen 30 in einem Eintrag gespeichert ist, der unterschiedlich zu den Einträgen der Zustandsspeicherbanken ist, bleibt jeder Aus­ fall, der während des Schreibens dieses einzelnen Bits auf­ tritt, ohne Folge. In diesem Fall wird keine der Zustands­ speicherbanken verfälscht bzw. beeinträchtigt, so daß der Wert des Kennzeichens keine Rolle spielt.
Das Verfahren zum Übertragen des Ergebnisses einer Trans­ aktion gemäß Fig. 2A ist ziemlich ineffizient, wenn das Ergebnis einer Transaktion nur einen kleinen Abschnitt des Zustandsspeichers modifiziert. In diesem Fall wird beim Schritt 52 ziemlich viel Zeit für nicht notwendiges Kopie­ ren von Dateneinträgen, die nicht modifiziert worden sind, verbraucht. Dieses nicht notwendige Kopieren kann durch die etwas komplexere Prozedur gemäß Fig. 2B unterbunden werden.
Beim ersten Schritt 61 der Fig. 2B wird das Kennzeichen aus dem nichtflüchtigen Speicher gelesen. Als nächstes über­ prüft die zentrale Verarbeitungseinheit beim Schritt 62, ob das Kennzeichen gesetzt ist. Wenn das der Fall ist, dann ist ein Ausfall bzw. Fehler während der Verarbeitungsphase aufgetreten, in der die Ergebnisse einer Transaktion in den Zustandsspeicher eingegeben worden sind, wie weiter unten beschrieben wird. Beim Schritt 63 werden deshalb Ein­ träge, die in der Zustandsspeicherbank 29 aufbewahrt sind, in die Zustandsspeicherbank 28 kopiert. Beim Schritt 64 wird dann das Kennzeichen im nichtflüchtigen Speicher ge­ löscht.
Um dann eine Transaktion beim Schritt 65 zu verarbeiten, werden Dateneinträge von der Zustandsspeicherbank 28 gelesen und in den Zwischenspeicherbereich 27 übertragen. Dann werden die Einträge des Zwischen­ speichers gemäß den Ergebnissen der Transaktion modifiziert. Wenn die Transaktion abgeschlossen ist, was beim Schritt 67 festgestellt wird, werden beim Schritt 68 die originalen Daten der Einträge, die modifiziert werden sollen, von der Zustandsspeicherbank 28 in die Zustandsspeicherbank 29 kopiert. Dann wird beim Schritt 69 das Kennzeichen im nichtflüchtigen Speicher gesetzt. Beim Schritt 70 werden dann die Ergebnisse der Transaktion übertragen (committed), indem die modifizierten Daten in die Zustandsspeicherbank 28 eingeschrieben werden. Schließlich wird beim Schritt 64 das Kennzeichen im nichtflüchtigen Speicher gelöscht (cleared). Die Verarbeitung der nächsten Transaktion beginnt im Schritt 65.
Wie oben mit Bezug auf die Fig. 2A oder Fig. 2B beschrieben wurde, wird angenommen, daß die Transaktionen in einer Sequenz durch die zentrale Verarbeitungseinheit 21 des Computers 20 nach Fig. 1 abgearbeitet bzw. verarbeitet werden. Die vorliegende Erfindung erlaubt es jedoch, daß die Verarbeitung der Transaktionen so verteilt wird, daß die Ergebnisse für eine zweite Transaktion vorbereitet bzw. erzeugt werden können, bevor die Ergebnisse der ersten Transaktion übertragen werden. Wie nachfolgend mit Bezug auf Fig. 5 beschrieben wird, gestattet die vorliegende Erfindung die Verwendung eines Transaktionsplaners, der ein Echtzeitbetriebssystem oder einen Planer umfaßt, um die zentrale Verarbeitungseinheit während der Zeit effektiver auszunutzen bzw. zu beschäftigen, während der sie ansonsten auf die Beendigung von Eingabe/Ausgabe- oder Speicherzugriffsoperationen warten würde. Indem es erlaubt wird, daß eine zweite Transaktion Teiloperationen durchführt, bevor eine erste Transaktion ihre Ergebnisse übertragen bzw. eingegeben (committed) hat, wird jedoch das Problem der Inkonsistenz eingeführt, bis das Planen der Operationen und die Ausführung bzw. Übertragung der Transaktionen mit einer bestimmten Durchführungsreihenfolge übereinstimmt. Insbesondere sollten die Transaktionen in der gleichen Reihenfolge ausgeführt werden, wie die Reihenfolge, in der die zugehörigen in Konflikt stehenden (d. h. nicht kommutierenden (non-commuting) Operationen durchgeführt werden.
Wenn das Planen der Komponentenoperationen und die Ausführung der Transaktionen diese Eigenschaft der "Ausführungsreihenfolge" (commitment ordering) haben, kann auch gezeigt werden, daß in einem verteilten Verarbeitungssystem (wie es weiter unten in Verbindung mit der Fig. 4B beschrieben wird) eine globale Serienverarbeitung gewährleistet wird, wenn nur "Gesamtübertragung" (atomic comitment) eingesetzt wird, um die verschiedenen Prozessoren des Systems zu koordinieren. Dies wird durch eine ziemlich aufwendige mathematische Überprüfung belegt, welche an die vorliegende Beschreibung angehängt ist (vergleiche Anhang I). Von einem praktischen Gesichtspunkt bzw. Standpunkt aus bedeutet dieses Ergebnis, daß die Vorteile der vorliegenden Erfindung auf ein herkömmliches verteiltes Transaktionsverarbeitungssystem angewendet werden können, indem jeder Transaktionsprozessor oder Knoten des Systems ohne Modifikation des globalen Planers oder des Protokolls für das Verteilen globaler Transaktionen durch das System modifiziert wird.
Ein herkömmliches Transaktionsverarbeitungssystem stellt sicher, daß eine zweite Transaktion die Schreibdaten einer ersten Transaktion nur lesen kann, nachdem die erste Transaktion ausgeführt worden ist. Dies ist eine ausreichende aber nicht notwendige Bedingung dafür, eine Wiederherherstellung sicherzustellen. Bei einer ersten Ausführungs­ form der vorliegenden Erfindung kann diese Bedingung bzw. dieser Zustand auch beibehalten werden, um die erforder­ liche Größe des nichtflüchtigen Speichers zu minimieren und das zu vermeiden, was als "kaskadierende Abbrüche" be­ kannt ist, um eine Wiederherstellbarkeit zu erreichen. Bei dieser ersten Ausführungsform werden Transaktionen im we­ sentlichen verarbeitet, wie es in Fig. 2B gezeigt wird, wobei die Leseoperationen Einträge aus der Zustandsspeicher­ bank lesen und diese Einträge zum Zwischenspeicher trans­ ferieren, wie es beim Schritt 65 der Fig. 2B gezeigt wird. Die Schreiboperationen werden vorbereitet, indem die Einträ­ ge des Speichers, wie beim Schritt 66 der Fig. 2B gezeigt wird, modifiziert werden, aber die Ergebnisse jeder Trans­ aktion werden in separaten Einträgen des Zwischenspeichers 27 gehalten, auch dann, wenn die Schreiboperationen ver­ schiedener Transaktionen die gleichen Einträge in dem Zu­ standsspeicher betreffen. Der Grund dafür, besteht darin, daß der Effekt, den solche in Konflikt stehenden Schreibope­ rationen auf den Zustandsspeicher haben, durch die Reihen­ folge, in der die Transaktionen ausgeführt werden, festge­ legt ist.
Fig. 3A zeigt drei unterschiedliche Möglichkeiten für die Planung einer ersten Transaktion mit einer Schreiboperation und einer zweiten Transaktion mit einer in Konflikt stehen­ den Leseoperation. Im allgemeinen stehen zwei Operationen miteinander in Konflikt, wenn sie Speicherzugriffsoperatio­ nen sind, die auf die gleiche Stelle in dem Zustandsspei­ cher zugreifen wollen, und wenn zumindest eine der Operatio­ nen eine Schreiboperation ist. Aus einer Überprüfung folgt, daß von den drei Planungsmöglichkeiten die Möglichkeit (b) das Erfordernis der Übertragungsreihenfolge verletzt und deshalb eine Inkonsistenz bezüglich des Zustands des Zu­ standsspeichers verursachen kann. Wegen der Tatsache, daß die Schreiboperation Wx nicht austauschbar mit der Leseope­ ration Rx ist, kann das Ergebnis für die Transaktion T2 für die Planungsmöglichkeit (b) unterschiedlich zu dem Er­ gebnis für die Transaktion T2 für die Planungsmöglichkeit (a) sein. Um konsistente Ergebnisse zu erhalten, erlaubt es die vorliegende Erfindung, daß in Konflikt stehende Ope­ rationen von zwei Transaktionen in einer ausgewählten Rei­ henfolge eingeplant werden können, um die Systemelemente, die für die zentrale Verarbeitungseinheit erhältlich sind, möglichst effizient zu nutzen. Sie stellt aber auch die Konsistenz bzw. Verträglichkeit oder Widerspruchsfreiheit sicher, indem sie eine Ausführungsreihenfolge festlegt, die die gleiche ist, wie die Reihenfolge, in der die in Konflikt stehenden Operationen durchgeführt werden. Inkon­ sistente Planungsmöglichkeiten, wie z. B. die Möglichkeit (b) in Fig. 3A, werden unterbunden, indem eine in Konflikt stehende Transaktion abgebrochen wird, wenn eine ausgewähl­ te Transaktion ausgeführt wird, oder indem die Ausführung einer ausgewählten Transaktion solange verzögert wird, bis die in Konflikt stehende Transaktion ausgeführt worden ist.
In dem Beispiel nach Fig. 3A kann man z. B. annehmen, daß die erste geplante Operation eine Leseoperation Rx der zwei­ ten Transaktion T2 ist, wie es in den Möglichkeiten (b) und (c) gezeigt wird. Wenn die Transaktion T2 vor der Trans­ aktion T1 ausgeführt wird, wie es in der Möglichkeit (c) gezeigt ist, ergibt sich keine Inkonsistenz, da das Planen in Übereinstimmung mit der Ausführungsreihenfolge ist. Wenn jedoch die erste Transaktion T1 vor der zweiten Transaktion T2 ausgeführt wird, wie es in der Möglichkeit (b) gezeigt wird, muß die zweite Transaktion T2 abgebrochen werden, da ansonsten die Ausführung der zweiten Transaktion T2 die Ausführungsreihenfolge verletzen würde und zu inkonsisten­ ten Ergebnissen führen könnte.
Die vorliegende Erfindung ermöglicht weiterhin die Planung von Operationen so, daß eine zweite Transaktion T2, die Schreibdaten einer ersten Transaktion T1 lesen kann, bevor die erste Transaktion T1 ausgeführt wird. In diesem Fall kann die Wiederherstellbarkeit durch einen Prozeß von kaska­ dierenden Abbrüchen garantiert werden, wie es weiter unten mit Bezug auf die Fig. 12 und 13 beschrieben wird. Für den Fall einer ersten Transaktion T1 mit einer Schreibopera­ tion Wx und einer zweiten Transaktion T2 mit einer in Kon­ flikt stehenden Leseoperation Rx gibt es sechs Planungsmög­ lichkeiten, die in der Fig. 3B als (a) bis (f) angegeben sind. Zwei dieser Planungsmöglichkeiten können die Ausfüh­ rungsreihenfolge (commitment ordering) verletzen und können deshalb zu inkonsistenten Ergebnissen führen. Die vorliegen­ de Erfindung verhindert das Auftreten dieser Planungsmög­ lichkeiten, indem sie die Reihenfolge bestimmt in welcher die in Konflikt stehenden Operationen durchgeführt werden, und dann die Ausführung einer ausgewählten Transaktion ver­ zögert oder eine in Konflikt stehende Operation, wenn not­ wendig, abbricht, um eine Ausführungsreihenfolge zu erzwin­ gen. Um der Leseoperation in der zweiten Transaktion zu erlauben, die Schreibdaten einer Schreiboperation einer ersten Transaktion zu lesen, behält der Digitalcomputer 20 der Fig. 1 z. B. eine Arbeitskopie des Zustandsspeichers in dem Zwischenspeicherbereich 27. Immer dann, wenn eine Schreiboperation durchgeführt wird, werden die Ergebnisse der Schreiboperation in die Arbeitskopie des Zustandsspei­ chers in den Zwischenspeicherbereich eingeschrieben und separate Kopien der geschriebenen Einträge werden in den Zwischenspeicher in Verbindung mit jeder Transaktion gehal­ ten. Wenn die Transaktion ausgeführt wird, werden nur dann die Ergebnisse der Schreiboperation der Transaktion in den Zustandsspeicher eingeschrieben. Bei der Ausführungsform des Falls 2 bezieht sich die Leseoperation auf die Arbeits­ kopie des Zustandsspeichers in dem Zwischenspeicher, und nicht auf den Zustandsspeicher selbst, wie im Fall 1, so daß im Fall 2 die Leseoperationen die eingeschriebenen Da­ ten früherer Schreiboperationen lesen.
In Fig. 4A wird ein Blockdiagramm der Programmierung und der Datenstrukturen gezeigt, die in dem digitalen Computer 20 der Fig. 1 für Planungstransaktionen und für das Erzwingen der Ausführungsreihenfolge verwendet werden. Um die Ergebnisse der Transaktionen in den Zustandsspeicher 28, 29 zu übertragen und von Ausfällen bzw. Fehlern zurückzukehren, ist der digitale Computer mit einem Systemelement-Manager (RM) 81 versehen, der z. B. die Operationen, die in Fig. 2B gezeigt werden, durchführt. Im allgemeinen ist ein Systemelementmanager (RM) eine Softwarekomponente, die die Zustandsspeicher-Systemelemente, welche durch übertragende Transaktionen berührt werden, so betreibt, daß der Speicherzustand der Systemelemente wiederhergestellt bzw. erneut gespeichert werden kann, bevor die Transaktion übertragen bzw. ausgeführt wird, indem alle Änderungen, die durch die Transaktion eingeführt werden, effektiverweise unterdrückt bzw. rückgängig bzw. gelöscht werden. Anders ausgedrückt, der Systemelementmanager stellt sicher, daß die Transaktionen die Eigenschaft der "Gesamtheit" (atomicity) oder von "alles oder nichts"-Semantik bezüglich ihrer Zustandsspeicher-Systemelemente haben. Ein Systemelement ist typischerweise aber nicht notwendigerweise ein Datenelement oder ein Datenobjekt. Beispiele für Systemelementmanager (resource manager) sind typischerweise in Datenbanksystemen (DSB's = data base systems) in Listenmanagern und Cache-Managern zu finden.
Um die Komponentenoperationen der Transaktionen in der effizientesten Reihenfolge auf der Basis von verfügbaren Systemelementen für den Computer zu planen, ist ein Transaktionsplaner (TS = transaction scheduler) 82 vorgesehen. Bevorzugterweise enthält der Transaktionsplaner 82 eine Art von Echtzeitbetriebssystem, das eine Transaktionsliste (TL) 83 verwaltet und managed, wie es weiter unten mit Bezug auf Fig. 5 beschrieben wird.
Bevorzugterweise wird das Vorhandensein von in Konflikt stehenden Operationen in Echtzeit festgestellt, wenn die Transaktionen durchgeführt werden, wie weiter unten mit Bezug auf Fig. 11 beschrieben wird. In Übereinstimmung mit der Ausführungsreihenfolge bestimmt die Reihenfolge, in der in Konflikt stehende Operationen durchgeführt werden, eine erforderliche Reihenfolge der Ausführung der Transak­ tionen, und diese erforderliche Reihenfolge der Ausführung wird in einem Seriengraphen (USG = undecided transactions serializability graph) für nicht entschiedene Transaktionen 84 aufgezeichnet, der eine Datenstruktur im Speicher ist und der weiter unten mit Bezug auf die Fig. 7 und 8 be­ schrieben wird. Die "nichtentschiedenen Transaktionen" sind die Transaktionen, die noch ausgeführt werden oder abge­ brochen werden. Um die Ausführungsreihenfolge festzulegen, werden Transaktionen für die Ausführung ausgewählt und Transaktionen werden selektiv abgebrochen durch einen Aus­ führungsreihenfolgen-Koordinator (COCO = committment order coordinator) 85, der weiter unten mit Bezug auf die Fig. 10 und 15 beschrieben wird.
Die vorliegende Erfindung kann in Verarbeitungssystemen mit Einzelprozessor eingesetzt werden, in denen eine Vielzahl von Transaktionen gleichzeitig durchgeführt werden, indem Komponentenoperationen geplant werden, oder kann in einem Multiprozessorsystem eingesetzt werden, in dem Komponenten­ operationen der gleichen Transaktion gleichzeitig in unter­ schiedlichen Prozessoren durchgeführt werden. Ein Vielpro­ zessorsystem 90 wird in Fig. 4B erläutert. In diesem Fall sind drei digitale Computer 91, 92, 93 über einen Kommunika­ tionskanal 94 miteinander verbunden und die Kommunikation wird durch die Transaktionsplaner (TS) 95, 96, 97 gesteu­ ert. In dem Multiprozessorsystem 90 kann jeder der Transak­ tionsplaner 95, 96, 97 die Rolle eines Koordinators anneh­ men und globale Transaktionen an die anderen Transaktions­ planer ausgeben. Diese globalen Transaktionen werden z. B. gemäß dem bekannten Zwei-Phasenausführungsprotokoll koordi­ niert, wie oben mit Bezug auf den Stand der Technik erläu­ tert worden ist und unten mit Bezug auf die Fig. 14, 15 und 16 weiter erläutert wird.
Die Transaktionsplaner können auch Zustandsinformationen über den Kommunikationskanal 94 austauschen. Insbesondere fallen die Transaktionsverarbeitungssysteme allgemein unter zwei breite Kategorien, die als Datenbankmanagementsysteme und objektorientierte Systeme bezeichnet werden, was davon abhängt, ob die Zustandsspeicherinformationen resident in den nichtflüchtigen Speicherdateien eines bestimmten der digitalen Computer 91, 92, 93 abgespeichert ist oder nicht oder ob die Zustandsinformationen mit vordefinierten Objek­ ten verbunden bzw. diesen zugeordnet sind, die von einem Computer zum anderen weitergegeben werden. Die vorliegende Erfindung ist jedoch in beiden Systemtypen anwendbar, da die vorliegende Erfindung insbesondere das Planen von Kompo­ nentenoperationen der Transaktionen und die Festlegung und das Erzwingen einer Ausführungsreihenfolge betrifft, und nicht besonders damit befaßt ist, wo der Zustandsspeicher im verteilten Verarbeitungssystem physikalisch angesiedelt oder aufrechterhalten wird.
Fig. 5 zeigt ein Flußdiagramm einer Prozedur, der ein Trans­ aktionsplaner für Echtzeitplanen von Komponentenoperationen oder Transaktionen in Übereinstimmung mit erhältlichen Sy­ stemelementen des digitalen Computers nachfolgt. Insbeson­ dere enthalten die Transaktionen Eingabe/Ausgabe und Spei­ cherzugriffe auf einen rotierenden Speicher wie z. B. Plat­ tenlaufwerke und möglicherweise mathematische Berechnungen, die von einen Coprocessor durchgeführt werden. Ohne Echt­ zeitplanen würde die zentrale Verarbeitungseinheit des digi­ talen Computers eine relativ lange Wartezeit benötigen, bis diese Operationen abgeschlossen sind, bevor sie die Komponentenoperationen anderer Transaktionen durchführen könnte.
Um die Systemelemente des digitalen Computers effektiver verwenden zu können, kann eine Transaktion Eingabe/Ausgabe und Speicherzugriffsnachfragen an die Eingabe/Ausgabe- und Speichereinheiten des Computers absenden bzw. ausgeben und dann ein Sperrzeichen (inhibit flag) setzen, das dem Planer anzeigt, daß die Verarbeitung der gegenwärtigen Transaktion gehemmt bzw. gesperrt werden soll, bis die Eingabe/Ausgabe- oder Speicherzugriffsoperation abgeschlossen ist. Schließ­ lich führt die Transaktion einen Software-Interrupt für den Transaktionsplaner aus, um dem Transaktionsplaner zu ermög­ lichen, die Ausführung (execution) zu einer anderen Transak­ tion zu transferieren. Wenn die nachgefragte Eingabe/Ausga­ be- oder Speicherzugriffsoperation abgeschlossen ist, gibt die Eingabe/Ausgabe- oder Speichereinrichtung einen Ab­ schluß-Interrupt aus, der von einer Interrupt-Behandlungs­ routine verarbeitet wird, die das Sperrzeichen der Transak­ tion zurücknimmt bzw. löscht, welche die Eingabe/Ausgabe- oder Speicherzugriffsoperation nachgefragt hat. Die Beendi­ gungsinterrupts der Eingabe/ Ausgabe- und Speicherzugriffe und Bearbeitungsprogramme (device handlers) für solche In­ terrupts sind bekannt.
Nachfolgend wird insbesondere auf den ersten Schritt 101 in Fig. 5 Bezug genommen, wobei der Transaktionsplaner auf einen Interrupt durch Entfernen des Textes der unterbroche­ nen Transaktion aus dem Prozessorstapelspeicher des digita­ len Computers und durch Unterbringen des Kontextes in einem entsprechenden Textspeicher für die unterbrochene Transak­ tion reagiert. Der Kontext enthält den Wert des Programmzäh­ lers, der auf die unterbrochene Speicherstelle in dem Trans­ aktionsprogramm hinweist, und enthält auch den Kontext bzw. Inhalt weiterer Register allgemeinen Zwecks des digitalen Computers.
Der Transaktionsplaner kann auch während einer anfänglichen Hochlaufphase (start-up) des digitalen Computers beim Schritt 102 betreten werden. Beim Schritt 102 werden die Transaktionsliste 83 und weitere Datenstruk­ turen, wie z. B. der nichtentschiedene Seriengraph (USG) zurückgenommen und Zeiger (pointers) werden initialisiert.
In den Transaktionsplaner kann auch am Ende der Vorbereitung für eine Transaktion eingetreten werden. In diesem Fall wird die Transaktion beim Schritt 103 markiert, um anzuzeigen, daß sie fertig ist, ausgeführt zu werden. Außerdem wird die gegenwärtige Zeit, die von der Echtzeituhr (25 in Fig. 1) angezeigt wird, in einer Speicherstelle abgespeichert, die der Transaktion zugeordnet ist, um die Zeit anzugeben, bei der die Transaktion fertig war. Es wird darauf hingewiesen, daß jedoch einige Programmteile (tasks), die auf der Transaktionsliste plaziert sind, sogenannte Hintergrundtasks mit niedriger Priorität sein können, die niemals abgeschlossen werden und Rechnerzeit, die nach dem Bedienen aller Transaktionen der Liste verbleibt, der zentralen Verarbeitungseinrichtung benötigen.
In den Transaktionsplaner kann auch am Ende der Interrupt-Routine für das Steuerprogramm (device handler) eingetreten werden. Der Schritt 111 löscht z. B. das Sperrzeichen (I in der Liste von Fig. 6) für die Transaktion, die die Eingabe/Ausgabe- oder Speicheroperation nachgefragt hat, wonach die Ausführung beim Schritt 101 damit fortfährt, die gegenwärtige bzw. gerade laufende Transaktion zu unterbrechen, um möglicherweise die Ausführung zu der Transaktion zurückzulenken, die nach der Eingabe/Ausgabe- oder Speicheropera­ tion nachgefragt hat.
Der Transaktionsplaner führt drei Hauptaufgaben (major tasks) durch: er antwortet auf Transaktionsnachfragen durch Plazieren der Transaktionen auf der Transaktionsliste; er löst die Ausführung bereitstehender Transaktionen aus und er plant die Durchführung von Komponentenoperationen der Transaktionen. Beim Schritt 104 überprüft der Transaktions­ planer z. B., ob eine Transaktion nachgefragt hat. Ein Trans­ aktionsplanner-Interrupt kann z. B. in Antwort auf ein Inter­ rupt-Signal von der Eingabe/Ausgabe-Einheit auftreten, der anzeigt, daß ein Benutzer oder ein anderer digitaler Compu­ ter nach der Durchführung einer Transaktion nachgefragt hat. In diesem Fall wird die Transaktionsnachfrage auf der Transaktionsliste beim Schritt 105 plaziert.
Fig. 6 zeigt ein spezielles Beispiel einer Transaktionsli­ ste 83. Die Transaktionsliste enthält eine Verbindungslist (linked list) von Transaktionsidentifikationsnummern 106. Mit jeder Transaktionsidentifikationsnummer sind ein Zeiger auf den nächsten Eintrag in der Verbindungsliste und Werte für eine Anzahl von Zeichen (V, R, I, G, P) verbunden. Die­ se Zeichen (flags) enthalten ein Gültigkeitszeichen V, das anzeigt, ob der Eintrag in der Liste gültige Daten enthält, ein Zeichen R, das anzeigt, ob die Vorbereitung der Transak­ tion abgeschlossen worden ist und die Transaktion bereit dazu ist, ausgeführt zu werden, ein Zeichen I, das anzeigt, ob die Vorbereitung der Transaktion gesperrt worden ist, bis zum Abschluß einer Eingabe/Ausgabe- oder Speicherzu­ griffsnachfrage, ein Zeichen G, das angibt, ob die Transak­ tion eine lokale oder globale Transaktion ist, und ein Zei­ chen P, das angibt, ob der Abschluß der Vorbereitung einer globalen Transaktion an den Koordinator berichtet worden ist. Die Zeichen G und B, die mit globalen Transaktionen verbunden sind, werden nachfolgend mit Bezug auf die Fig. 14 und 15 erläutert.
Mit der Liste 83 sind ein Kopfzeiger (head pointer) 108, ein Endezeiger 109 und ein Zeiger 110 für die Transaktion, die durchgeführt wird, verbunden. Der Kopfzeiger 108 hat z. B. einen negativen Wert, wenn die Liste leer ist, und hat ansonsten einen positiven Wert, der auf den Listeneintrag für die erste (höchste Priorität) Transaktion zeigt. Auf ähnliche Art und Weise hat der Endezeiger 109 einen negativen Wert, wenn die Liste leer ist, und hat ansonsten einen positiven Wert, der auf den letzten Eintrag in der Liste zeigt. Der Zeiger 110 auf die Transaktion, die ausgeführt wird, wird von dem Transaktionsplaner beim Schritt 101 der Fig. 5 eingesetzt, wenn auf einen Interrupt geantwortet wird. Insbesondere wird der Zeiger 110 dazu verwendet, um die jeweilige Kontextspeicherstelle für die unterbrochene Transaktion zu finden, wenn Schritt 101 durchgeführt wird.
Gemäß Fig. 5 überprüft der Transaktionsplaner beim Schritt 112, ob eine Transaktion für eine Ausführung bzw. Übertra­ gung bereit ist. Wenn das der Fall ist, ruft der Transak­ tionsplaner beim Schritt 113 den Koordinator (85) für die Ausführungsreihenfolge auf, die auszuführende Transaktion auszuwählen und eine Ausführungsreihenfolge mit möglichen Abbrüchen und Verzögerungen zu erzwingen. Wenn der Koordina­ tor für die Ausführungsreihenfolge beschließt, die Ausfüh­ rung nicht zu verzögern, dann überträgt der Systemelement- Manager (RM) beim Schritt 115 die Ergebnisse der Transak­ tion in den Zustandsspeicher.
Schließlich überprüft der Transaktionsplaner beim Schritt 116 die Transaktionsliste, um zu bestimmen, ob es eine nichtgesperrte Transaktion gibt, die noch nicht bereit ist. Wenn das der Fall ist, wählt der Transaktionsplaner beim Schritt 117 eine der nicht gesperrten Transaktionen aus, die noch nicht bereit ist. Um die Schritte 116 und 117 durchzuführen, überprüft der Transaktionsplaner z. B. zu­ erst, ob die Transaktionsliste leer ist, indem er testet, ob der Kopfzeiger 108 einen negativen Wert aufweist. Wenn der Kopfzeiger einen positiven Wert hat, dann überprüft der Transaktionsplaner die Zeichen L und I für die Transak­ tion am Anfang der Liste, um zu bestimmen, ob sie noch nicht bereit und nicht gesperrt ist. Wenn der erste Eintrag bereit ist oder gesperrt ist, dann überprüft der Transak­ tionsplaner den Endezeiger 109, um zu bestimmen ob das Ende der Liste erreicht worden ist. Wenn nicht, überprüft der Transaktionsplaner den Zeiger auf den nächsten Eintrag und führt die gleichen Schritte durch, bis entweder eine nicht­ gesperrte Transaktion, die noch nicht bereit ist, gefunden wird oder das Ende der Liste erreicht worden ist.
Wenn eine nicht gesperrte Transaktion, die noch nicht be­ reit bzw. fertig ist, ausgewählt worden ist, wird beim Schritt 118 der Kontext der ausgewählten Transaktion in dem Stapelspeicher plaziert. Bezüglich dieses Vorgangs wird darauf hingewiesen, daß, wenn eine Transaktion zuerst in der Transaktionsschlange plaziert ist, ein Anfangskontext für die Transaktion in dem jeweiligen Kontextspeicher für die unterbrochene Transaktion plaziert wird. Der Anfangskon­ text enthält z. B. einen Programmzählerwert, der auf den ersten Befehl in dem Programm für die Transaktion zeigt. Nach dem Schritt 118 wird eine Rückkehr von einem Interrupt (Unterbrechung) beim Schritt 119 durchgeführt, um die Aus­ führung von Instruktionen bzw. Befehlen in dem Programm für die ausgewählte Transaktion anzufangen oder fortzuset­ zen.
Fig. 7 zeigt ein spezielles Beispiel einer Datenstruktur zum Speichern des Seriengraphen (USG) für nicht entschie­ dene Transaktionen. Immer dann, wenn eine bestimmt Reihen­ folge für die Durchführung von in Konflikt stehenden Opera­ tionen in einem jeweiligen Paar von Transaktionen eingerich­ tet worden ist, wird die Reihenfolge der Durchführung der in Konflikt befindlichen Operationen in dem Seriengraphen für nicht entschiedene Transaktionen notiert. Wenn die Spei­ cherzugriffsoperationen, die von jeder Transaktion durchge­ führt werden, und die Speicherstellen dieser Speicherzu­ griffsoperationen zu einen Zeitpunkt bekannt sind, wenn eine Transaktion in der Liste plaziert bzw. untergebracht wird, dann ist es im Fall 1 der Fig. 3A zu diesem Zeitpunkt möglich, die Reihenfolge des Durchführens der in Konflikt stehenden Operationen zu bestimmen. In dieser Hinsicht wird darauf hingewiesen, daß für den Fall 1, wie er in Fig. 3A angegeben ist, Schreiboperationen wirksam sind, die zu dem Zeitpunkt der Transaktionsausführung (commitment) durchge­ führt werden. Außer in diesem bestimmten Fall wird die Rei­ henfolge der Durchführung von in Konflikt stehenden Opera­ tionen bestimmt, wenn eine zweite der in Konflikt stehenden Operationen für die Durchführung durch den Transaktionspla­ ner eingeplant wird und die Speicherstelle, auf die durch die in Konflikt stehende Operation zugegriffen wird, be­ stimmt wird.
Zu diesem Zeitpunkt wird das Vorhandensein eines Konflikts festgestellt, wie es weiter unten mit Bezug auf Fig. 11 erläutert wird, und die Reihenfolge der Durchführung wird in dem Seriengraphen für nicht entschiedene Transaktionen aufgezeichnet. Die Daten des Graphen der Fig. 7 sind in bildlicher Form in Fig. 8 dargestellt. Die Zeichen, die in der Datenstruktur nach Fig. 7 gesetzt sind, entsprechen den Kanten 131 in der bildlichen Darstellung der Fig. 8. Die Richtung einer Kante 131 gibt die Reihenfolge der Durchfüh­ rung der in Konflikt stehenden Operationen der Transaktio­ nen an. Wenn diese Reihenfolge der Durchführung einmal ein­ gerichtet ist, wird sie durch Abbrechen von Transaktionen oder Verzögern von Transaktionen oder zusätzlichen in Kon­ flikt stehenden Operationen erzwungen.
Das Erzwingen der Ausführungsreihenfolge durch Abbrechen von Transaktionen wird durch die Schritte 141 und 142 in Fig. 9 erläutert. Beim Schritt 141 wird eine für die Ausfüh­ rung fertige Transaktion ausgewählt. In Situationen, wo es eine Anzahl von fertigen Transaktionen bzw. bereiten Transaktionen gibt, wird eine bestimmte fertige Transaktion ausgewählt, z. B. durch Auswählen einer der ersten dieser Transaktionen in der Liste, indem vorgegebene Prioritäten, die mit den Transaktionen verbunden sind, verglichen werden oder in Antwort auf die Auswahl von einem Koordinator. Für die Liste 106 der Fig. 6 können z. B. globale Transaktio­ nen Priorität über lokale Transaktionen in dem Auswahlvor­ gang haben.
Beim Schritt 142 wird die Ausführungsreihenfolge durch Ab­ brechen der Transaktionen erzwungen, für die die Ausführung bzw. Übertragung im Gegensatz zur Ausführungsreihenfolge und der Ausführung der ausgewählten Transaktion steht. Bei der Ausführungsreihenfolge, die durch den Graphen in Fig. 8 dargestellt wird, werden z. B., wenn die Transaktion T1 aus­ gewählt wird, die Transaktionen T0 und T3 abgebrochen, um die Ausführungsreihenfolge zu erzwingen. Das Abbrechen ei­ ner Transaktion umfaßt das Löschen der Ergebnisse jeder Transaktion. Bei lokalen Transaktionen kann eine Transak­ tion durch Zurücksetzen der Inhalte ihrer jeweiligen Kon­ textspeicher auf ihren Anfangskontext abgebrochen werden. Anders ausgedrückt wird der gegenwärtige Wert des Programm­ zählers für die Transaktion auf den Anfang des Programms für die Transaktion zurückgesetzt. Zudem müssen die Trans­ aktionsliste 106 und der Seriengraph 84 für nicht entschie­ dene Transaktionen neu initialisiert werden. Bei globalen Transaktionen wird eine abgebrochene Transaktion wenn über­ haupt von dem Koordinator neu gestartet. In diesen Fall wird die Transaktion vollständig aus der Transaktionsliste gestrichen bzw. entfernt.
Fig. 10 zeigt ein Flußdiagramm, das eine Prozedur 150 zum Auswählen einer für die Ausführung bereiten Transaktion zeigt, was oben stehend mit Bezug auf den Schritt 141 der Fig. 9 angerissen wurde. Beim ersten Schritt 151 der Fig. 10 wird die Transaktionsliste 106 mit dem Anfang bzw. Kopf der Liste beginnend nach der ersten bereiten Transak­ tion durchsucht. Zudem wird ein Ausführungszeichen (commit flag) zurückgenommen, das später in Fig. 10 verwendet wird. Als nächstes wird beim Schritt 152 die Anzahl der Teilneh­ mer in dem "Abbruchsatz" (abort set) der ausgewählten Trans­ aktionen gezählt. Mit Bezug auf den Seriengraphen 84 für nicht entschiedene Transaktionen der Fig. 8 enthält z. B. der Abbruchssatz jeder Transaktion in dem Graphen seine vorhergehenden Transaktionen. Anders ausgedrückt enthält der Abbruchsatz für die Transaktion T1 die Transaktionen T0 und T3 und die Anzahl der Teilnehmer des Abbruchsatzes von T1 ist zwei. Analog dazu haben die Transaktionen T0 und T4 keine Teilnehmer in ihren Abbruchsätzen. Geht man von der speziellen Datenstruktur der Fig. 7 aus, so werden die Teil­ nehmer eines Abbruchsatzes einer Transaktion durch die Kan­ tenzeichen (edge flags) bestimmt, die entlang einer Spalte der Datenstruktur gesetzt sind. Die Anzahl der Teilnehmer in dem Abbruchsatz wird durch Zählen der Anzahl der Zei­ chen, die in der entsprechenden Spalte für die Transaktion gesetzt sind, berechnet. Wenn der Abbruchsatz der ausgewähl­ ten Transaktion null ist (er hat keine Teilnehmer), was bei dem Schritt 153 überprüft wird, dann fährt die Ausführung beim Schritt 154 damit fort, möglicherweise die Ergebnisse der Transaktion in den Zustandsspeicher zu übertragen, was weiter unten mit Bezug auf die Fig. 15 für ein Transaktions­ verarbeitungssystem beschrieben wird, das lokale und globa­ le Transaktionen verarbeitet bzw. verwaltet.
Wenn der Abbruchsatz der ausgewählten Transaktion nicht Null ist, wird ein Versuch gemacht, die Ausführung der Transaktion zu verzögern, so daß die Anzahl der Teilnehmer in ihrem Abbruchsatz abnehmen kann. Diesbezüglich wird ange­ merkt, daß der Abbruchsatz einer bereitstehenden Transak­ tion nie zunehmen kann, aber abnehmen kann, da er jedesmal um Eins abnimmt bzw. verkleinert wird, wenn ein Teilnehmer ihres Abbruchsatzes ausgeführt bzw. eingegeben wird. Die Ausführung einer ausgewählten Transaktion sollte jedoch nicht unbestimmt lange verzögert werden, da ansonsten das System blockiert werden könnte. Die Verzögerung einer ausge­ wählten Transaktion wird deshalb beendet bzw. abgeschlos­ sen, wenn die Verzögerung eine vorgegebene Verzögerungszeit überschreitet. Beim Verarbeiten von globalen Transaktionen ist es auch wünschenswert, die Verzögerung in Antwort auf ein Abbruchsignal bzw. Beendungssignal von dem Koordinator zu beenden, wie weiter unten mit Bezug auf Fig. 15 beschrieben wird. Beim Schritt 157 der Fig. 10 wird die Verzögerungszeit als Differenz zwischen der gegenwärtigen Zeit und der Bereitzeit bzw. Fertigzeit für die Transaktion (die beim Schritt 103 der Fig. 5 gespeichert wurde) berechnet. Wenn die Verzögerungszeit eine vorgegebene Grenze bzw. einen vorgegebenen Grenzwert überschreitet, wie es im Schritt 158 überprüft wird, wird beim Schritt 159 ein Ausführungszeichen (commit flag) gesetzt.
Beim Schritt 160, wenn es zusätzliche fertige Transaktionen in der Transaktionsliste gibt, verzweigt die Ausführung zum Schritt 156, um die nächste fertige Transaktion zu bekommen und die Ausführung geht in der Schleife zurück zum Schritt 152. Ansonsten wird beim Schritt 161 das Ausführungszeichen überprüft und, wenn es nicht gesetzt wurde, dann fährt die Ausführung ohne eine Entscheidung fort, die ansonsten gemacht wird, um irgendeine der fertigen Transaktionen auszuführen. Ansonsten wird die fertige Transaktion mit der minimalen Anzahl von Teilnehmern in ihrem Abbruchsatz ausgewählt.
In Fig. 11 ist ein Flußdiagramm 170 einer Prozedur zum Bestimmen der Ausführungsreihenfolge von in Konflikt stehenden Komponentenoperationen der Transaktionen gezeigt. Die Prozedur 170 wird während der Vorbereitung einer Speicherzugriffsoperation, wie z. B. des Lesens oder Schreibens aufgerufen. Beim Schritt 171 wird die Adresse der Speicherzugriffsoperation bestimmt. Als nächstes wird beim Schritt 172 die Adresse mit der Adresse der früheren Operationen, die in Konflikt stehen könnte, verglichen. Dies wird durchgeführt, indem eine Liste der Adressen früherer Operationen für jede Transaktion in der Transaktionsliste durchsucht wird. Wenn die vorliegende Operation eine Leseoperation ist, kann die Leseoperation mit früheren Schreiboperationen in Konflikt stehen. Wenn die vorliegende Operation eine Schreiboperation ist, kann die Schreiboperation mit einer früheren Leseoperation (oder im Fall 2 der Fig. 3B, einer früheren Schreiboperation) in Konflikt stehen. Wenn es eine Adressübereinstimmung gibt, wie es beim Schritt 173 gete­ stet wird, wird beim Schritt 180 die gegenwärtige Reihen­ folge der Transaktion in dem Seriengraphen für nicht ent­ schiedene Transaktionen (84 in Fig. 7) aufgezeichnet. Insbe­ sonder treten Konflikte für den Fall 1 der Fig. 3A nur zwi­ schen einer Leseoperation und einer Schreiboperation auf und die Reihenfolge der Operationen ist Lesen, dann Schrei­ ben. Im Fall 2 der Fig. 3B muß die vorliegende Reihenfolge für die gegenwärtige Transaktion nach der vorhergehenden Transaktion durchgeführt werden. Beim Schritt 181 verzweigt die Ausführung zurück zum Schritt 172, wenn es zusätzliche frühere Speicherzugriffsoperationen zu überprüfen gibt. Ansonsten wird die Vorbereitung des Speicherzugriffs beim Schritt 177 durch Addieren der Adresse, die beim Schritt 171 festgelegt worden ist, zu einer Adressliste für Lese- und Schreiboperationen der gegenwärtigen Transaktion fortge­ setzt. Dann ist die Operation beim Schritt 178 vorbereitet oder wird beim Schritt 178 durchgeführt. Die Ausführung der Prozedur kehrt dann zu der Transaktion zurück.
Fig. 12 zeigt einen vergrößerten Seriengraphen für nicht entschiedene Transaktionen, in dem sich Kanten für Schreib/­ Lesekonflikte von Kanten anderer Konflikte unterscheiden. Ein solcher vergrößerter Graph kann in einer Datenstruktur ähnlich zu der Datenstruktur nach Fig. 7 gespeichert wer­ den, aber jede Kante wird durch ein Paar von Zeichen (flags) wiedergegeben, die aus einem ersten Zeichen, das jede Art von Konflikt angibt, und aus einem zweiten Zeichen beste­ hen, das einen Schreib/Lesekonflikt angibt. Der vergrößerte Graph der Fig. 12 wird eingesetzt, um kaskadierende Abbrü­ che durchzuführen, damit die Wiederherstellbarkeit in einem System, in dem eine zweite Transaktion die Schreibdaten der ersten Transaktion lesen kann, bevor die erste Transak­ tion ausgeführt wird, sichergestellt wird, wie zuvor mit Bezug auf Fig. 3B beschrieben worden ist. Eine Prozedur zum Durchführen eines kaskadierenden Abbruchs wird in dem Fluß­ diagramm 190 der Fig. 13 gezeigt. Man nehme z. B. an, daß T5 als zur Ausführung fertige Transaktion ausgewählt wird. Um die Ausführungsreihenfolge zu erzwingen, müssen dann die Transaktionen T3 und T4 der Fig. 12 abgebrochen werden. Nimmt man jedoch an, daß das Transaktionsverarbeitungssy­ stem so arbeitet, wie es oben mit Bezug auf Fig. 3B be­ schrieben wurde, wird, wenn eine Transaktion abgebrochen wird, um die Ausführungsreihenfolge zu erzwingen, jede Transaktion, die Schreibdaten der abgebrochenen Transaktion gelesen hat, auch abgebrochen werden müssen. Aus dem vergrö­ ßerten Graphen der Fig. 12 ist zu sehen, daß, wenn die Transaktion T4 abgebrochen wird, dann die Transaktion T7 auch abgebrochen werden muß, da die Transaktion T7 wegen des Schreib/Lesekonflikts zwischen den Transaktionen T4 und T7 auch negativ betroffen sein kann. Des weiteren, wenn die Transaktion T7 abgebrochen wird, dann muß auch die Transaktion T8 abgebrochen werden, da die Transaktion T8 Daten gelesen hat, die durch die Transaktion T7 geschrieben wurden.
Gemäß Fig. 13 wird bei der kaskadierenden Abbruchprozedur 190 zum Abbrechen der Transaktion Tx beim ersten Schritt 191 der vergrößerte Graph durchsucht, um alle Transaktionen Ty zu finden, die Daten gelesen haben, welche durch Tx ge­ schrieben worden sind. Dann wird bei Schritt 192 die Trans­ aktion Tx abgebrochen. In einem letzten Schritt 192 wird das Unterprogramm 190 der Fig. 13 rekursiv aufgerufen, um jede der Transaktionen Ty abzubrechen.
In der Fig. 14 wird ein Zustandsdiagramm eines Transaktions­ verarbeitungssystems gezeigt, das sowohl lokale als auch globale Transaktionen verarbeitet. Die lokalen Transaktionen werden z. B. von einem lokalen Benutzer 201 ausgegeben und die globalen Transaktionen werden von einem Koordinator 202 ausgegeben. In jedem Fall empfängt der Transaktionspla­ ner die Transaktionsnachfrage und setzt die Transaktions­ nachfrage in einen Eintrag der Transaktionsliste ein. Zu diesem Zeitpunkt wird die Transaktion als in Vorbereitung (preparation) befindlich bezeichnet. Der Transaktionsplaner transferiert schließlich die Ausführung zu der in Vorberei­ tung befindlichen Transaktion und die Transaktion wird aus­ geführt, bis sie entweder gesperrt wird oder fertig wird. Wie oben stehend in Verbindung mit Fig. 5 erläutert wurde, kann eine Transaktion sich selbst nach der Nachfrage nach einer Eingabe/Ausgabe- oder Speicheroperation sperren und nach der Beendigung einer Eingabe/Ausgabe- oder Speicherope­ ration wird die Transaktion freigegeben. Eine Transaktion, die entweder in Vorbereitung, gesperrt oder fertig bzw. abgeschlossen ist, kann abgebrochen werden, um eine Ausfüh­ rungsreihenfolge zu erzwingen.
Der Transaktionsplaner kann eine fertige lokale Transaktion ausführen. Um eine globale Synchronisation in einen verteil­ ten Transaktionsverabeitungssystem sicherzustellen, wird jedoch eine fertige globale Transaktion nur nach einer Quit­ tierung (handshake) mit dem Koordinator ausgeführt. Diese Quittierung stellt sicher, daß eine globale Transaktion nicht ausgeführt wird, bis alle Prozessoren, die zugewie­ sene Abschnitte der Transaktion verarbeiten, ebenfalls fer­ tig sind, oder bereit sind, ihre zugewiesenen Abschnitte der globalen Transaktion auszuführen bzw. zu übertragen. Deshalb, wenn der Transaktionsplaner den Zustand einer glo­ balen Transaktion von "in Vorbereitung befindlich" in den "fertig" Zustand ändert, gibt der Transaktionsplaner ein "Vorbereitet"-Signal an den Koordinator 202 ab.
Wenn der Koordinator 202 die "Vorbereitet"-Signale von al­ len Transaktionsplanern, die an einer Transaktion teilneh­ men, empfangen hat, sendet der Koordinator einen "Ausfüh­ rungs"-Befehl an den Transaktionsplaner zurück. Wenn der Koordinator jedoch nicht ein "Vorbereitet"-Signal von allen teilnehmenden Transaktionsplanern empfängt, kann der Koordi­ nator ein "Abbruch"-Signal an den Transaktionsplaner sen­ den. In Fig. 14 werden diese Quittierungssignale durch ge­ punktete Linien angegeben.
Wenn eine lokale Transaktion ausgeführt wird, entfernt der Transaktionsplaner die Transaktion aus der Liste und zeigt dem lokalen Benutzer an, daß die Transaktion abgeschlossen worden ist. Auf ähnliche Art und Weise, wenn eine globale Transaktion ausgeführt wird, entfernt der Transaktionspla­ ner die globale Transaktion von der Transaktionsliste und sendet ein Signal an den Koordinator, das angibt, daß die Transaktion abgeschlossen bzw. ausgeführt worden ist. Des weiteren, wenn eine globale Transaktion abgebrochen wurde, wird die globale Transaktion aus der Transaktionsliste und aus dem Seriengraphen für nicht entschiedene Transaktionen entfernt und der Transaktionsplaner sendet ein Signal an den Koordinator, um den Abbruch zu bestätigen. Für lokale Transaktionen kann es jedoch von Vorteil sein, die Vorberei­ tung der Transaktion erneut zu starten. In diesem Fall, ist es nur notwendig, den Anfangskontext der Transaktion erneut zu setzen, den Seriengraphen für nicht entschiedene Transak­ tionen zu löschen (clear) und den Zustand der Transaktion zurück in "Vorbereitung" zu setzen, indem die R- und I-Zei­ chen in dem Listeneintrag der Transaktion zurückgesetzt werden.
In Fig. 15 ist ein Flußdiagramm der Schritte, denen der Ausführungskoordinator zum Planen der Ausführung von globa­ len Transaktionen unterliegt. Die Prozedur der Fig. 10 kann z. B. entschieden haben, fortzufahren ohne eine Transaktion auszuführen. Beim Schritt 211 kann der Transaktionsplaner z. B. ein "Beende-Verzögerung"-Signal (terminate delay sig­ nal) von dem Koordinator empfangen haben. Dieses Signal kann ein spezielles Signal vom Koordinator sein oder es kann eine erneute Sendung einer vorher zugesendeten Transak­ tionsnachfrage sein. Wenn ein solches Signal empfangen wird, wird beim Schritt 212 das R-Zeichen für die Transak­ tion in der Transaktionsliste überprüft, um zu bestimmen, ob die globale Transaktion fertig ist. Wenn nicht, dann kann die globale Transaktion nicht ausgeführt werden. An­ sonsten werden dann die Teilnehmer des Abbruchsatzes für die Transaktion beim Schritt 213 überprüft, um zu bestim­ men, ob irgendeiner der Teilnehmer eine globale Transaktion mit einem gesetzten P-Zeichen ist. Der Schritt 213 wird auch bei globalen oder lokalen Transaktionen durchgeführt, für die die Prozedur nach Fig. 10 die Transaktion ausge­ wählt hat, nach Möglichkeit ausgeführt zu werden. Wenn der Abbruchsatz für die Transaktion, die für die Ausführung ausgewählt wurde, eine globale Transaktion mit einem geset­ zten P-Zeichen aufweist, kann die ausgewählte Transaktion nicht vor der globalen Transaktion mit dem gesetzten P-Zei­ chen ausgeführt werden. Deshalb wird die Ausführung in dem Transaktionsplaner fortgesetzt. Ansonsten verzweigt die Ausführung beim Schritt 211 in Abhängigkeit davon, ob die auszuführende Transaktion eine globale Transaktion ist oder nicht. Wenn sie eine globale Transaktion ist, kann sie nicht ausgeführt werden, bis der Transaktionsplaner ein Vorbereitungs-Anerkennungssignal an den Koordinator abgesen­ det hat und ein bestätigendes "Ausführungs"-Signal (commit Signal) empfangen hat. Bei einer globalen Transaktion wird deshalb das Vorbereitungs-Anerkennungs-Signal ("vorberei­ tet" in Fig. 14) an den Koordinator beim Schritt 216 gesen­ det, das P-Zeichen für die globale Transaktion in der Trans­ aktionsliste wird gesetzt und die Ausführung im Transak­ tionsplaner wird fortgesetzt. Ansonsten werden bei einer auszuführenden lokalen Transaktion beim Schritt 215 die Transaktionen in dem Abbruchsatz abgebrochen (und der "kas­ kadierende Abbruch" der Fig. 13 wird im Fall 2 der Fig. 3A verwendet) und die Ergebnisse der ausgewählten lokalen Transaktion werden zum Zustandsspeicher übertragen. Die Ausführung fährt dann im Transaktionsplaner fort.
Fig. 16 zeigt ein Flußdiagramm 220 zum Abarbeiten bzw. Ver­ walten vorbereiteter globaler Transaktionen in Antwort auf einen Ausführungs- oder Abbruch-Interrupt des Koordinators. Beim Schritt 221 verzweigt die Ausführung in Abhängigkeit davon, ob der Interrupt für eine Ausführung oder einen Ab­ bruch ist. Im Fall eines Abbruchs wird beim Schritt 222 die globale Transaktion abgebrochen, indem die Transaktion aus der Transaktionsliste entfernt wird und entsprechende Zeichen in dem Seriengraphen für unentschiedene Transaktio­ nen zurückgesetzt bzw. gelöscht werden. Schließlich wird beim Schritt 223 eine Anerkennung des Abbruchs zurück zum Koordinator gesendet und dann kehrt die Ausführungsprozedur vom Interrupt zurück.
Wenn beim Schritt 221 bestimmt worden ist, daß der Inter­ rupt für eine Ausführung war, dann werden beim Schritt 224 die Transaktionen im Abbruchsatz der ausgewählten globalen Transaktionen abgebrochen und die Ergebnisse der ausgewähl­ ten Transaktion werden in den Zustandsspeicher übertragen. Dann wird beim Schritt 223 eine Anerkennung bzw. Bestäti­ gung der Ausführung bzw. Übertragung zu dem Koordinator zurückgeschickt und die Ausführung der Prozedur kehrt vom Interrupt zurück.
Fig. 17 zeigt eine Ausführungsform der vorliegenden Erfin­ dung, in der ein Ausführungsreihenfolgenkoordinator (COCO = committment order coordinator) 151 in ein herkömmliches Transaktionsverarbeitungssystem eingefügt wird, das einen Transaktionsmanager (TM) 252 und einen Systemelement-Mana­ ger (RM = resource manager) 253 aufweist. Wie gezeigt, be­ steht der Ausführungsreihenfolgenkoordinator 251 aus einem Untersatz der Schnittstelle 254 zwischen dem Transaktionsma­ nager 252 und dem Systemelement-Manager 253. Der Ausfüh­ rungsreihenfolgenkoordinator überschneidet sich mit einem herkömmlichen Abschnitt 255 der Schnittstelle 254 und ist mit dem Systemelementmanager 253 via einer erweiterten Schnittstelle 256 verbunden, die einige zusätzliche Signale aufweist die individuell den Betrieb des Ausführungsreihen­ folgenkoordinators zugeordnet sind. In einem System mit verteilter Verarbeitung kann die Konfiguration nach Fig. 17 in jedem Knoten des Systems verwendet werden.
Es wird angenommen, daß der Systemelementmanager 253 die folgenden herkömmlichen Dienste zur Verfügung stellt:
R_VORBEREITE(T) (= R_PREPARE): Der TM zeigt dem RM an, die Transaktion T zu beenden. D. h., daß der RM keine weiteren Nachfragen oder externe Daten für die Transaktion T empfan­ gen wird;
R_AUSFÜHREN(T) (= R_COMMIT): Der TM zeigt dem RM an, die Transaktion T auszuführen. Eine Voraussetzung für das Aufru­ fen dieses Dienstes besteht darin, daß der RM vorhergehend die Vorbereitung der Transaktion anerkannt bzw. bestätigt hat (d. h., JA gewählt hat); und
R_ABBRUCH(T) (= R_ABORT): Der TM zeigt dem RM an (und mögli­ cherweise auch allen anderen RMs, die mit T zu tun haben), die Transaktion T abzubrechen.
Es wird auch angenommen, daß der Transaktionsmanager 252 die folgenden herkömmlichen Dienste zur Verfügung stellt:
T_FERTIG(T) (= T_READY): Der RM zeigt dem TM an, daß er die Verarbeitung der Transaktion T abgeschlossen hat und er wählt JA aus (d. h. er ist fertig, T zu übertragen oder abzu­ brechen gemäß der Notifikation von TM);
T_ABBRUCH(T) (= T_ABORT): Der RM zeigt dem TM an, daß er die Transaktion T abgebrochen hat (was in einem Abbruch von T durch alle beteiltigten RMs resultiert).
Wenn die TM-RM Schnittstelle 254 eingefügt ist, ruft der Ausführungsreihenfolgenkoordinator 251, und nicht der Sy­ stemelementmanager 253, direkt die T_FERTIG(T) und T_AB­ BRUCH(T) Dienste des Transaktionsmanagers 252 auf. Des wei­ teren empfängt der Ausführungsreihenfolgenkoordinator 251 anstatt des Systemelementmanagers direkt die Signale von dem Transaktionsmanager zum Verursachen der R_AUSFÜHRUNG(T) und R_ABBRUCH(T)-Dienste. Zur Erleichterung der Identifizie­ rung der Dienste in der nachfolgenden Beschreibung, werden die Dienste des Ausführungsreihenfolgenkoordinators bezüg­ lich dieser Signale als C_T_AUSFÜHRUNG(T) bzw. C_T_AB­ BRUCH(T) bezeichnet.
Das RM-COCO-Interface ist ein Untersatz der TM-COCO-Schnitt­ stelle. Insbesondere werden zusätzliche Dienste zum Auf­ rechterhalten des USG, der Datenstruktur des COCO, defi­ niert. Die Signale des RM, die vorher die herkömmlichen T_ FERTIG(T) und T_ABBRUCH(T) Dienste des Transaktionsmana­ gers aufgerufen haben, rufen jetzt die Dienste C_R_FERTIG 53452 00070 552 001000280000000200012000285915334100040 0002004216871 00004 53333 (T) und C_R_ABBRUCH(T) des Ausführungsreihenfolgenkoordina­ tors 251 auf. Der Ausführungsreihenfolgenkoordinator 251 wird auch durch den Systemelementmanager 253 aufgerufen, um die nachfolgenden zusätzlichen Dienste des Ausführungs­ reihenfolgenkoordinators durchzuführen:
C_R_ANFANG(T) (= C_R_BEGINN): Der RM zeigt dem COCO an, ei­ nen Knoten für T in dem USG einzurichten; und
C_R_KONFLIKT(T1, T2): Vor der Ausführung einer Operation von T2, die einen Konflikt mit T1 erzeugt, ruft der RM die­ sen Dienst auf, um dies dem COCO anzuzeigen. Wenn eine zuge­ ordnete Kante von T1 nach T2 noch nicht im USG existiert, wird sie erzeugt. Der tatsächliche Betrieb von T2 wird durch den RM nur nach dem Empfangen eines Anerkennungssig­ nals von dem COCO ausgeführt, um sicherzustellen, daß der USG zu diesem Zeitpunkt aktualisiert ist. Der Systemelement­ manager 253 wird von dem Ausführungsreihenfolgenkoordinator 251 aufgerufen, um die ursprünglichen R_AUSFÜHRUNG(T) und R_ABBRUCH(T) Dienste durchzuführen. Der Systemelementmanager 253 wird ebenfalls von dem Ausführungsreihenfolgenkoordinator 251 aufgerufen, um den nachfolgenden zusätzlichen Dienst zur Verfügung zu stellen: R_KONFLIKT_ACK(T1, T2). Nach diesem Aufruf kann der RM die Operation von T2 ausführen, die den entsprechenden Konflikt mit T1 verursacht.
Unter Berücksichtigung der oben stehenden Definitionen der Aufrufe in dem System der Fig. 17 ist es offensichtlich, daß die Zustände des Systems auf die Aufrufe nach Fig. 18 reagieren. Die Aufrufe werden weiterhin durch den im Anhang III angegebenen PASCAL/SQL-basierenden Pseudocode, der auf dem Diagramm nach Fig. 18 beruht, erläutert.
In dem Pseudocode (Anhang III) werden gleichzeitige Aufrufe erlaubt, aber auch mehrere gleichzeitige Aufrufe des gleichen Dienstes. T_ERROR(T) und R_ERROR(T) sind Fehlernachricht-Aufrufe von TM bzw. RM, die eine fehlerhafte Aufrufsequenz anzeigen. Der Kernzustand (atomic state) der Transaktion wird als Fehlertyp zurückgegeben.
Der Anhang III ist im Deutschen Patentamt zur freien Einsicht hinterlegt und umfaßt 5 Seiten eines Programms für eine Datenverarbeitungsanlage, dessen Kommentare in deutscher Sprache abgefaßt sind. Es wird darauf hingewiesen, daß das Programm nach Anhang III zur Offenbarung der Erfindung gehört.
Der Ausführungsreihenfolgenkoordinator 251, der durch den Pseudocode nach Anhang III definiert wird, kann modifiziert werden, um eine Wiederherstellbarkeit des Ausgabeplans sicherzustellen. Der modifizierte Ausführungskoordinator wird als CORCO bezeichnet, der CORCO wird eingesetzt, wenn der schnittstellenbildende RM (253 in Fig. 17) die Wiederherstellbarkeit nicht sicherstellt und er noch dem Zustandsdiagramm nach Fig. 18 folgt. Der CORCO unterscheidet sich von dem o. a. Beispiel im Pseudocode durch Verwendung kaskadierender Abbrüche und durch die nachfolgenden zusätzlichen Modifikationen. Schreib/Lese-Konflikte werden durch die Kanten des USG wiedergegeben, wie es in Fig. 12 dargestellt ist. Wenn die Kante (T1, T2) einen wr-Konflikt (und möglicherweise einige weitere Konflikte) repräsentiert, hat das Boolean wr (T1, T) den Wert wahr (= true), und keine JA-Wahl (YES vote) wird ausgegeben bei T2, wenn wr (T1, T2) den Wert wahr (true) hat (um eine Verletzung der Wiederherstellbarkeit zu vermeiden). Des weiteren hat der Dienst C_R_KONFLIKT einen zusätzlichen Boolean Parameter, wr, um einen wr-Konflikt (C_R_KONFLIKT(T1, T2, wr) anzugeben. Weiterhin sind die Aufrufe des CORCO und seine VOTE-Prozedur Modifikationen des COCOs, die die oben aufgelisteten Unterschiede wiedergeben.
Die im Anhang IV angegebene rekursive Prozedur CASCADE (T) ruft T-Abort (T) und erzeugt zusätzliche T_ABORT-Aufrufe, wenn es erforderlich ist für die Aufrechterhaltung der Wiederherstellbarkeit.
Der Anhang IV ist im Deutschen Patentamt zur freien Einsicht hinterlegt; er umfaßt 5 Seiten eines Programms für eine Datenverarbeitungsanlage, dessen Kommentare in deutscher Sprache abgefaßt sind. Es wird ausdrücklich darauf hingewiesen, daß das Programm nach Anhang IV zur Offenbarung der vorliegenden Erfindung gehört.
Die Programme der Anhänge III und IV liegen auch in kompletter Originalversion im Anhang II vor, der ebenfalls zur freien Einsicht hinterlegt ist und 10 Seiten umfaßt.
Gemäß den oben stehenden Erläuterungen können die Komponen­ tenoperationen einer Anzahl von Transaktionen für die Aus­ führung in einer Art und Weise verteilt und eingeplant wer­ den, die für den Einsatz erhältlicher Rechnerverarbeitungs­ kapazitäten am effizientesten ist. Außerdem kann die Kon­ sistenz durch Erzwingen einer Ausführungsreihenfolge auf­ rechterhalten werden, in der Transaktionen in der gleichen Reihenfolge ausgeführt werden, mit der auch in Konflikt stehende Operationen durchgeführt werden. In einem verteil­ ten Transaktionsverarbeitungssystem stellt die Übereinstim­ mung mit einer Ausführungsreihenfolge die serielle Abarbei­ tung eines kombinierten (globalen) Planes sicher. Des weite­ ren wird die serielle Abarbeitung des kombinierten (globa­ len) Planes aufrechterhalten, während die Unabhängigkeit bzw. Autonomie jedes verteilten Prozessors aufrechterhalten wird und während herkömmliche Kernausführungsprotokolle (atomic commitment protocols) für die Koordination globaler Transaktionen verwendet werden.
Die Serienherstellbarkeit unter verteilten Transaktionen wird durch selektives Ausführen und Abbrechen oder Verzö­ gern von Transaktionen sichergestellt, um eine Reihenfolge der Ausführung zu erzwingen, die die gleiche ist wie eine Reihenfolge der Durchführung von in Konflikt stehenden Kom­ ponentenoperationen der Transaktionen. Eine erste Speicher­ zugriffsoperation einer ersten Transaktion steht z. B. in Konflikt mit einer zweiten Speicherzugriffsoperation, wenn sich die beiden Speicherzugriffsoperationen auf die gleiche Speicherstelle beziehen und zumindest eine der Operationen eine Schreiboperation ist. Das Transaktionsverarbeitungssy­ stem kann einer zweiten Transaktion gestatten, Daten zu lesen, die von einer Schreiboperation einer ersten Transak­ tion geschrieben wurden, bevor die erste Transaktion ausge­ führt wird. In diesem Fall wird, in Abhängigkeit von der jeweiligen Reihenfolge, in der die zwei in Konflikt stehen­ den Operationen auftreten, die Ausführungsreihenfolge er­ zwungen, möglicherweise durch Abbrechen einer der zwei Transaktionen, um sicherzustellen, daß die Ausführungsrei­ henfolge die gleiche ist wie die Reihenfolge der Operatio­ nen. Die Konflikte werden z. B. detektiert, wenn die Adres­ sen während einer Vorbereitungsphase der Transaktionen be­ stimmt werden. Die Komponentenoperationen können z. B. gemäß des am meisten effizienten Einsatzes der Computersystemkapa­ zitäten geplant werden. In einem Multiprozessorsystem, in dem ein globaler Koordinator mit einer Vielzahl von Transak­ tionsprozessoren mittels "Vorbereitungs"- und "Ausfüh­ rungs"-Kommandos kommuniziert, wird in dar Ausführungsrei­ henfolge auf Verzögerungsbestätigungen Bezug genommen, daß eine Transaktion "vorbereitet" worden ist, bis der "Ab­ bruchssatz" der Transaktion minimiert worden ist.
ANHANG I Definitionen und Nachweise für Eigenschaften des Ausfüh­ rungsordnens
Nachfolgend wird gezeigt, daß eine zeitliche Eigenschaft (history property), die als "Ausführungsreihenfolge" be­ zeichnet wird, das globale Problem der seriellen Abarbei­ tung löst. Insbesondere wird eine globale serielle Abar­ beitung garantiert, wenn jeder Systemelementmanager in ei­ nem verteilten Transaktionsverarbeitungssystem der "Ausfüh­ rungsreihenfolge" (commitment ordering) folgt und wenn sie Systemelementmanager "autonom" sind (d. h., sie koordinieren über Kernausführungsprotokolle (atomic commitment proto­ cols) und tauschen keine zusätzliche gleichzeitige Steuerin­ formation aus).
Definitionen
  • 1. Eine Transaktion Ti ist eine teilweise Reihenfolge von Ereignissen. Die binäre, asymmetrische, transitive und irreflexive Beziehung, die die teilweise Reihenfolge bzw. Ordnung aufweist, wird mit "<i" bezeichnet. Der Index i kann weggelassen werden, wenn der Identifizierer der Trans­ aktion aus dem Kontext bekannt ist. Die Ereignisse umfassen Lese- uns Schreiboperationen; ri[x] bezeichnet, daß die Transaktion Ti das Datenfeld x gelesen hat, und wi[x] be­ deutet, daß die Transaktion Ti das Datenfeld x geschrieben hat. Eine Transaktion weist auch das Ende-Ereignis einer Transaktion auf; ei bedeutet, daß Ti abgeschlossen ist.
Axiome
  • 1. Eine Transaktion Ti hat genau ein einziges Ereignis ei. Ein Wert wird ei wie folgt zugewiesen: ei = c wenn und nur wenn die Transaktion ausgeführt wird; ei = a wenn und nur wenn die Transaktion abgebrochen wird, ei kann mit ci bzw. ai bezeichnet werden, wenn ei = c oder ei = a.
  • 2. Für jede Operation pi[x], die entweder ri[x] oder wi[x] ist, ist pi[x] <i ei.
Definitionen
  • 1. Zwei Operationen bezüglich eines Datenfelds x, pi[x], qi[x] stehen in Konflikt miteinander, wenn entweder pi [x] gleich wi[x] oder qj[x] gleich wj[x] ist.
  • 2. Eine komplette History (complete history) H über einem Satz T von Transaktionen ist eine partielle Reihenfolge mit einer Beziehung <H, die gemäß den nachfolgenden Axiomen 6, 7 und 8 definiert wird.
Axiome
  • 1. Wenn Ti in T ist und Ereignisa <i Ereignisb, dann ist Ereignisa <H Ereignisb.
  • 2. Wenn Ti und Tj in T sind, dann gilt für irgendwelche zwei in Konflikt stehenden Operationen pi[x], qj[x], daß entweder pi[x] <H qj[x] oder qj[x] <H Pi[x].
  • 3. Man nehme an, Ti und Tj sind Transaktionen in T und qj [x] irgendeine Operation. Wenn wi[x] <H qj[x], dann ist entweder ei <H qj[x] oder qj[x] <H ej. (Dieses Axiom lie­ fert eine einzigartige Definition der Semantik der History, da, wenn ei = a, der Effekt von Wi[x] aufgehoben wird; d. h., daß das Lesen von x nach ei im Lesen eines Wertes von x resultiert, der gerade vor wi[x] existiert hat). (Be­ merke: Der Index H in <H kann weggelassen werden, wenn H aus dem Kontext bekannt ist.)
Definitionen
  • 1. Eine History (Ablauf, Reihenfolge) ist jedes Präfix einer kompletten History. Ein Präfix einer partiellen Ord­ nung P über einem Satz S ist eine partielle Reihe P' über einem Satz S' C S mit den folgenden Eigenschaften:
    Wenn b ∈ S' und a <p b, dann auch a ∈ S'
    Wenn a, b ∈ S' dann a <p b, wenn und nur wenn a <p, b
  • 2. Eine Transaktion T2 ist in Konflikt mit einer Transak­ tion T1, wenn und nur wenn für die zugehörigen in Konflikt stehenden Operationen q2[x], p1[x], daß p1[x] < q2[x]. (Merke, daß diese Definition asymmetrisch ist).
  • 3. Wenn p1[x] gleich w1[x] und q2[x] gleich w2[x] ist, dann ist T2 in einem ww-Konflikt (Schreib/Schreib-Konflikt) mit der Transaktion T1.
  • 4. Wenn p1[x] gleich w1[x] und q2[x] gleich r2[x], dann ist T2 in einem wr-Konflikt (Schreib/Lesekonflikt) mit der Transaktion T1.
  • 5. Wenn p1 ist r1[x] und q2[x] ist w2[x], dann ist T2 in einem rw-Konflikt (Lese/Schreib-Konflikt) mit der Transak­ tion T1.
  • 6. Es gibt eine Konfliktäquivalenz zwischen zwei Histo­ rien H und H' (die zwei sind konfliktäquivalent), wenn und nur wenn beide im gleichen Satz von Transaktionen T defi­ niert sind und aus den gleichen Transaktionsereignissen (für teilweise ausgeführte Transaktionen) bestehen und pi [x] <H qj[x] wenn und nur wenn pi[x] <H, qj[x] für jede in Konflikt stehende Operation pi[x], qj[x] jeder ausge­ führten Transaktion Ti bzw. Tj in T gilt (d. h., H und H' haben die gleichen Konflikte zwischen Operationen der ausge­ führten Transaktionen.
  • 7. Eine History H bezüglich eines Transaktionssatzes T ist seriell, wenn und nur wenn für jeweils zwei Transak­ tionen Ti und Tj in T das folgende gilt:
    Wenn pi[x] <H qj[y], dann gilt für irgendwelche weiteren Operationen si[u], tj[v] in H si[u] <H tj[v] (d. h., alle Operationen von Ti gehen allen Operationen von Tj voran).
  • 8. Eine History ist einreihbar, seriell anordenbar (SER; ist in SER), wenn und nur wenn sie konfliktäquivalent zu einer irgendwie seriellen History ist.
  • 9. Seriengraph einer History H, SG(H) ist der gerichte­ te Graph SG(H) = (T, C), wobei T der Satz aller nicht abge­ brochenen (d. h. ausgeführten und unvollständigen) Transak­ tionen in H ist und C (ein Untersatz von T × T) ein Satz aus Kanten ist, die die Transaktionskonflikte wiedergeben, so daß es für irgendwelche zwei Transaktionen T1, T2, in T eine Kante von T1 nach T2 gibt, wenn und nur wenn T2 in einem Konflikt mit T1 ist. Der Seriengraph für ausgeführte Transaktionen (Commited Transaction Serializability Graph) einer History H, CSG(H), ist der Untergraph von SG(H) mit allen ausgeführten Transaktionen als Knoten und mit allen zugehörigen Kanten. Der Seriengraph für nicht entschiedene Transaktionen (Undecided Transactions Serializability Graph) einer History H, USG(H) ist der Untergraph von SG(H) mit all den nicht ausgeführten (d. h. unvollständigen) Trans­ aktionen als Knoten und mit all den zugehörigen Kanten.
Das Reihenanordnungs-Theorem: (Serializability theorem)
  • 1. Eine History H ist in Reihe (SER) anordenbar, wenn und nur wenn CSG(H) zyklusfrei ist.
Definitionen
  • 1. Eine History H ist behebbar (recoverable) (REC; ist in REC), wenn und nur wenn für irgendwelche zwei Transaktionen T1, T2, in H immer gilt, wenn T2 ist in einem wr-Kon­ flikt mit T1, daß T2 nur ausgeführt wird, nachdem T1 ausge­ führt worden ist. Formal geschrieben heißt das: (w1[x] < r2[x] und e2 = c) bedeutet ((e1 < e2 und e1 = c) oder (e1 < r2x und e1 = a)).
  • 2. Die History H vermeidet kaskadierende Abbrüche (cas­ cading aborts) (ACA; ist in ACA), wenn und nur wenn irgend­ eine Transaktion in H Daten liest, die von nur ausgeführten Transaktionen geschrieben worden sind. Man nehme an T1, T2 sind irgendwelche zwei Transaktionen in H. Der folgende Ausdruck ist eine formelmäßige Darstellung dieses Konzepts:
    w1[x]r2[x] bedeutet e1 < r2[x].
  • 3. Man nehme an T1, T2 sind irgendwelche zwei Transaktio­ nen in H. H ist strikt (strict) (ST; ist in ST; hat die Striktheitseigenschaft), wenn und nur wenn W1[x]p2[x] bedeutet e1 < p2[x], wobei p2[x] entweder r2[x] oder w2 [x] ist.
Theorem
  • 1. REC ⊂ ACA ⊂ ST wobei ⊂ eine strikt einzuhaltende Bedin­ gung (containment) bezeichnet. (Dieses Theorem folgt unmit­ telbar aus den Definitionen).
Definitionen
  • 1. Zwei Phasen Sperren (Two Phase Locking (2PL) ist ein Serieneinordnungsmechanismus, der zwei Typen von Sperren aufweist: Schreibsperren (write locks) und Lesesperren read locks). Es besteht darin, die Dauer der Transaktion in zwei Phasen einzuteilen: in der ersten Phase werden die Sperren aufgenommen (acquire), in der zweiten Phase werden die Sperren freigegeben bzw. gelöst (release).
  • 2. Eine History ist in einem streng-strikten ZweiPhasen­ sperren (Strong-Strict Two-phase Locking (S-S2PL)), wenn und nur wenn für irgendeine in Konflikt stehende Operation p1[x], q2[x] der Transaktionen T1 bzw. T2 in H gilt, p1[x] < q2[x], was bedeutet e1 < q2[x]. (Bemerkung: eine History ist eine Zwei-Phasen-Sperrung, wenn sie durch den Zwei-Pha­ sen-Sperrmechanismus erzeugt werden kann. Eine strikte Zwei-Phasen-Sperrung erfordert, daß Schreibsperren, die in Namen einer Transaktion ausgegeben wurden, bis zu ihrem Ende nicht gelöst werden; Lesesperren können jedoch früher gelöst werden, und zwar am Ende der Phase 1 des Zwei-Pha­ sen-Sperrmechanismus. Die streng-strikte Zwei-PhasenSper­ rung erfordert, daß alle Sperren nicht gelöst werden, bevor die Transaktion abgeschlossen ist (wenn sie entweder ausge­ führt oder abgebrochen ist.) Eine streng-strikte ZweiPha­ sen-Sperrung blockiert irgendwelche in Konflikt stehende Operationen bezüglich eines Datenfelds, auf das von einer Transaktion zugegriffen wird, bis zum Ende der Transaktion.)
  • 3. Ein Mechanismus blockiert, wenn er in einigen Situatio­ nen Ereignisse in einer Transaktion verzögert, bis gewisse Ereignisse in anderen Transaktionen auftreten.
  • 4. Eine History-Eigenschaft ist inhärent blockierend, wenn sie nur durch einen Blockiermechanismus erzwungen wer­ den kann.
  • 5. Eine History-Eigenschaft ist nicht inhärent blockie­ rend (non inherently blocking), wenn sie durch irgendeinen nicht blockierenden Mechanismus erzwungen werden kann. (Be­ merkung: Sowohl die Serienherstellbarkeit als auch die Wie­ derherstellbarkeit sind nicht inhärent blockierend, da sie immer sichergestellt werden können, indem eine verletzende Transaktion zu irgendeinem Zeitpunkt vor ihrem Ende abgebro­ chen wird. Diese Beobachtung ist die Basis für eine optimistische Gleichzeitigkeitssteuerung (optimistic con­ currency control), bei der Transaktionen ohne ein gegensei­ tiges Blockieren der jeweils anderen Ereignisse laufen und nur abgebrochen werden, wenn sie beendet sind, wenn eine Serienherstellbarkeit oder irgendeine andere gewünschte Eigenschaft durch sie verletzt wird. Zwei-Phasen-Sperren und ACA sind andererseits inhärent blockierend.)
  • 6. Eine Transaktion wird entschieden (decided), wenn und nur wenn sie entweder abgebrochen oder ausgeführt wird; ansonsten ist sie nicht entschieden (undecided).
  • 7. Eine nicht entschiedene Transaktion ist fertig (rea­ dy), wenn und nur wenn sie ihre Verarbeitung abgeschlossen hat und vorbereitet ist, entweder ausgeführt bzw. übertra­ gen oder abgebrochen zu werden; ansonsten ist sie aktiv.
  • 8. Eine Transaktion ist nicht entschieden, wenn und nur wenn sie entweder fertig oder aktiv ist.
Ausführungsreihenfolge Definition
  • 1. Eine History hat die Ausführungsreihenfolgeneigen­ schaft (Comitment Ordering (CO) property) (d. h., sie ist in CO), wenn und nur wenn für irgendwelche in Konflikt stehen­ de Operationen p1[x], q2[x] von ausgeführten Transaktionen T1 bzw. T2 p1[x] < q2[x] bedeutet e1 < e2. Formelmäßig ausge­ drückt (e1 = c und e2 = c und p1[x] < q2[x]) bedeutet e1 < e2.
Ausführungsreihenfolgentheorem (Commitment Ordering Theorem)
  • 1. SER ⊂ CO (d. h., die Ausführungsreihenfolge bedeutet Serienherstellbarkeit.)
    Nachweis: Man nehme an, daß die History H eine CO ist und daß . . . → Ti → . . . → Tj → . . . ein (gerichteter) Weg im CSG (H) ist.
    Unter Verwendung der CO-Definition und der Induktion θ auf die Reihenfolge auf dem Pfad, läßt sich unmittelbar schließen, daß ci < cj ist. Man nehme nun an, daß H nicht in SER ist. Durch das Serienherstellbarkeits-Theorem (l. 18) (ohne Verlust an Allgemeingültigkeit) gibt es einen Zyklus T1 → T2 → . . . → Tn → T1 im CSG (H). Man nehme an, daß Ti bzw. Tj T1 bzw. T2 sind (man betrachte ein geeignetes Prä­ fix des oben angegebenen Pfades). Das bedeutet durch die oben angegebene Beobachtung, daß c1 < c2 ist. Man nehme nun an, daß Ti bzw. Tj T2 bzw. T1 sind (man betrachte ein geeignetes Suffix bzw. eine geeignete Nachsilbe des oben angegebenen Pfades). Das bedeutet, daß c2 < c1 ist. Die zwei Implikationen widersprechen sich jedoch, da die Bezie­ hung "<" asymmetrisch ist. Deshalb ist CSG (H) azyklisch und H ist in SER durch das Serienherstellbarkeits-Theorem. Nun überprüfe man die folgende serienherstellbare nicht-CO- History, um zu folgern, ob die Bedingung strict ist: w1[x] w2[x]c2c1.
Definitionen
  • 1. Ein Gleichzeitigkeitssteuermechanismus für Zeitmar­ kierungsordnen (TO) (Timestamp Ordering (TO) concurrency control mechanism) erzeugt die Serienherstellbarkeit und basiert auf einer Zeitmarkierung ts (Ti) (eine reelle Zahl), die mit jeder Transaktion Ti verbunden ist; Zeitmar­ kierungen sind unterschiedlich.
Regel für Zeitmarkierungs-Reihenfolge
  • 1. Für beliebige zwei in Konflikt stehende Operationen p1[x], q2[x] jeder ausgeführten Transaktion T1 bzw. T2 bedeutet t2(T1) < t2(T2), daß p1[x] < q2[x] ist. (Bemerkung: Zeitmarkierungsordnen ist nicht blockierend, da es durch Abbrechen von entweder T1 oder T2, nachdem alle ihre Operationen ausgegeben worden sind, erzwungen werden kann, und stellt die Basis für eine optimistische Gleich­ zeitigkeitssteuerung auf Basis des Zeitmarkierungsordnens (optimistic timestamp ordering based concurrency control) dar, aber auch die Basis für blockierende zeitmarkierungs­ ordnende Mechanismen.
Regel für blockierende Zeitmarkierungsordnung
  • 1. Für beliebige zwei in Konflikt stehende Operationen p1[x], q2[x] irgendeiner Transaktion T1 bzw. T2 bedeu­ tet t2(T1) < t2(T2), daß p1[x] < q2[x]. (Merke: Diese Regel für blockierendes Zeitmarkierungsordnen erfordert, daß in Konflikt stehende Operationen entsprechend der Rei­ henfolge der Zeitmarkierungen unabhängig davon, ob die Transaktion ausgeführt wird oder nicht, verplant werden.)
Regel für zeitmarkiertes Ausführungsordnen
  • 1. Für beliebige zwei ausgeführte Transaktionen T1 bzw. T2 mit zugehörigen in Konflikt stehenden Operationen bedeu­ tet ts(T1) < ts(T2), daß e1 < e2 ist. Formell: (e1 = c und e2 = c und (p1[x], q2[x]) stehen in Konflikt) und ts(T1) < ts(T2) bedeutet e1 < e2.
Theorem
  • 1. Eine History hat die Ausführungsreihenfolge-Eigen­ schaft, wenn und nur wenn sie durch einen Mechanismus er­ zeugt wird, der sowohl der Regel für Zeitmarkierungsordnen (34) als auch der Regel für Zeitmarkierungsausführungsord­ nen (36) gehorcht. (Bemerkung: Dieses Theorem bedeutet, daß, wenn die Regel für Zeitmarkierungsausführungsordnen (TCO) durch irgendeinen Zeitmarkierungsordnungsmechanismus erzwungen wird, nur Historien mit der Ausführungsordnungs­ eigenschaft erzeugt werden. Die TCO-Regel kann einfach durch Verzögern von Ausführungsereignissen erzwungen wer­ den, wenn es notwendig ist, der Zeitmarkierungsordnung nach­ zukommen.)
Definitionen
  • 1. Transaktionsende-Planer (TTS) (= transaction termina­ tion scheduler) ist ein Systemelement, das den Satz ferti­ ger Transaktionen überwacht und entscheidet, wann und wel­ che Transaktion ausgeführt bzw. abgebrochen wird. In einer Managerumgebung für viele Systemelemente nimmt dieses Sys­ temelement an Kernausführungsprozeduren (atomic commitment procedures) im Namen seines Systemelementmanagers teil und steuert (innerhalb des jeweiligen Systemelementmanagers) die Ausführung der Entscheidung, die über die Kernausfüh­ rung für jede relevante Transaktion erhalten wurde.
  • 2. Ein Transaktionsende-Planer für Ausführungsordnen (COTTS) (= Commitment Ordering Transaction Terminating Scheduler) führt die folgende Prozedur oder eine hierzu äquivalente Prozedur aus:
    • a) Der COTTS hält einen Serienherstellbarkeitsgra­ phen bzw. Seriengraphen USC aller nicht entschiedenen Trans­ aktionen aufrecht. Jede neue Transaktion, die von dem RM verarbeitet wird, wird als neuer Knoten im USG wiedergege­ ben; jeder Konflikt zwischen Transaktionen im USG wird durch eine gerichtete Kante wiedergegeben (eine Kante zwi­ schen zwei Transaktionen kann somit mehrere Konflikte wie­ dergeben). USG(H) = (UT, C), wobei UT der Satz aller unent­ schiedenen Transaktionen in einer History H ist; und C (ein Untersatz von UT × UT) ist der Satz aus gerichteten Kanten zwischen Transaktionen in UT. Es gibt eine Kante von T1 nach T2, wenn und nur wenn T2 in Konflikt mit T1 ist. Der USG gibt alle Konflikte der Operationen bis zur Ausführung bzw. Übertragung wieder. Der Satz von Transaktionen, der als Ergebnis der Ausführung von T abgebrochen wurde (um eine zukünftige Verletzung der Ausführungsreihenfolge zu verhindern), wird wie nachfolgend definiert:
      ABORTco(T) = {T'/T' → T ist in C}
    Der COTTS führt die folgenden Schritte iterativ bzw. schrittweise aus:
    • a) er selektiert jede fertige Transaktion (d. h. die ihre Verarbeitung abgeschlossen hat) T im USG (unter Verwendung irgendeines Kriteriums, möglicherweise der Prioritäten, die jeder Transaktion zugeordnet werden; eine Priorität kann dynamisch solange geändert werden, solange die Transaktion im USG ist) und führt sie aus;
    • b) er bricht alle Transaktionen in dem Satz ABORTco(T) ab, d. h. alle Transaktionen (alle fertigen und aktiven) im USG, die eine Kante haben, die nach T geht; und (c) er entfernt jede entschiedene (decided) Transaktion (T) und die abgebrochenen Transaktionen) aus dem Graphen (sie gehö­ ren nicht zu USG gemäß der Definition).
Theorem
  • 1. Der COTTS erzeugt Historyn mit der Ausführungsreihen­ folgeneigenschaft (CO).
    Nachweis: Der Nachweis wird durch Induktion bezüglich der Anzahl der Iterationen durch den COTTS erbracht, ausgehend von einer leeren Historie H0 und einem leeren Graphen USG0 = USG(H0). H0 ist eine CO. Man nehme an, daß die History Hn die nach der Iteration nb erzeugt wurde, eine CO ist. Der USGn (in seiner UT-Komponente) enthält alle unentschiedenen Transaktionen in Hn. Jetzt wird eine zusätzliche Iteration durchgeführt, Zahl n + 1, und die Transaktion T1 wird in USG durchgeführt (ohne Verlust an Allgemeingültigkeit). Hn+1 enthält alle Transaktionen in Hn und die neuen (nicht ent­ schiedenen) Transaktionen, die nach dem abschließenden Schritt n (und in USGn+1 sind) erzeugt worden sind. Man teste die folgenden Fälle nach dem Abschließen der Itera­ tion n + 1:
    • a) Man lasse T2, T3 (ohne Verlust an Allgemeingültig­ keit) zwei ausgeführte Transaktionen in Hn sein. Wenn T3 in Konflikt mit T2 ist, dann c2 < c3, da Hn = CO ist, und zwar durch die Induktionshypothese.
    • b) c2 < c1, für jede (zuvor) ausgeführte Transaktion T2 in Hn, mit der T1 in Konflikt ist.
    Der oben stehende Fall schöpft alle möglichen Paare von in Konflikt stehenden ausgeführten Transaktionen in Hn1 aus. Deshalb ist Hn + 1 eine CO.
Bemerkung
Wenn eine Transaktion existiert, die nicht in einem Zyklus des USG vorkommt, dann existiert eine Trans­ aktion T mit keinen Kanten von irgendeiner anderen Trans­ aktion. T kann ohne Abbrechen irgendeiner anderen Trans­ aktion ausgeführt werden, da ABORTco(T) leer ist. Wenn alle Transaktionen in USG auf Zyklen sind, muß zumindest eine Transaktion abgebrochen werden. Dies Situation scheint un­ gewöhnlich zu sein. In einer Umgebung mit vielen RMs, wenn der RM (TTS) nicht selbst die auszuführende Transaktion auswählt, sondern eine Nachfrage (über ein Kernausführungs­ protokoll (= atomic commitment protocol)) empfängt, um eine Transaktion T im USG auszuführen, müssen alle Transaktionen in ABORTco(T), d. h. mit Kanten nach T, abgebrochen werden, wenn T ausgeführt wird (durch den COTTS). Der TTS kann wählen, daß T unmittelbar ausgeführt wird (die sogenannte nicht-blockierende Annäherung ohne Verzögerungen (= non- blocking without delays approach). Eine andere Annäherung bzw. Lösung (nicht blockierend mit Verzögerungen) besteht darin, die Ausführung für eine gegebene Zeitdauer zu ver­ zögern. Während der Verzögerung kann der Satz ABORTco(T) kleiner oder leer werden. Wenn T im Fertigzustand ist, kann der Satz nicht größer werden bzw. zunehmen. Anstatt einer unmittelbaren Ausführung oder Verzögerung der Ausführung für eine gegebene Zeitdauer (die in einem Abbruch resultie­ ren kann) kann der TTS die Ausführung von T blockieren, bis alle Transaktionen im ABORTco(T) entschieden sind. Wenn jedoch ein anderer RM in der Umgebung ebenfalls blockiert, kann das in einem globalen Stillstand resultieren.
Definitionen
  • 1. Ein CORTTS ist ein COTTS, der Historien erzeugt, die sowohl CO als auch behebbar sind. Der CORTTS hält einen vergrößerten Serienherstellbarkeitsgraphen, wr-USG aufrecht:
    wr-USG(H) = (UT, C, Cwr), wobei
    UT der Satz aller unentschiedenen Transaktionen in der Historie H ist; und C ist der Satz der Kanten zwischen Transaktionen im UT. Es gibt eine C-Kante von T1 nach T2, wenn und nur wenn T nur in Nicht-wr-Konflikten mit T1 ist. Cwr ist der Satz von Kanten zwischen Transaktionen in UT, der auch wr-Konflikte aufweisen kann. Es gibt eine Cwr-Kan­ te von T1 nach T2, wenn und nur wenn T2 in wr-Konflikt mit T1 ist (und möglicherweise ebenfalls in Konflikt mit anderen Typen). C und Cwr sind getrennt. Der Satz aus Transaktionen, die als Ergebnis der Ausführung von T abge­ brochen wurden (um zukünftige Verletzungen der Ausführungs­ ordnung zu verhindern), wird wie folgt definiert:
    ABORTco(T) = {T'/T' → T ist in C oder Cwr}
    Die Definition von ABORTco(T) hat hier die gleiche Semantik wie in dem jeweiligen Satz für COTTS. Der Satz der abge­ brochenen Transaktionen auf Grund der Wiederherstellbarkeit als Ergebnis einer abgebrochenen Transaktion T' wird wie folgt definiert:
    ABORTREC(T*) = {T"/T' → T" ist in Cwr oder T''' → t" ist in Cwr, wobei T''' in ABORTREC(T)}. Zu bemerken ist, daß die Definition rekursiv ist. Dies gibt die Natur kaskadierender Abbrüche gut wieder. Der CORTTS iteriert die folgenden Schritte: (a) er wählt irgendeine fertige Transaktion T im wr-USG aus, die keine hineinkommende Cwr- Kante hat (d. h. so, daß T nicht in ABORTREC(T') für irgend­ eine Transaktion T' in ABORTco(T) ist; damit die Notwendig­ keit eines späteren Abbruchs von T selbst vermieden wird, und führe sie aus; (b) unterbreche alle Transaktionen T' (sowohl die fertigen als auch die aktiven) in ABORTco(T); (c) unterbreche alle Transaktionen T" (sowohl die fertigen als auch die aktiven) in ABORTREC(T') für jedes T', das im vorhergehenden Schritt abgebrochen wurde (kaskadierende Abbrüche); und (d) entferne alle entschiedenen Transaktio­ nen (T und alle abgebrochenen Transaktionen) aus dem Gra­ phen. (Bemerkung: Während jeder Iteration soll wr-USG alle Operationskonflikte bis zur Ausführung wiedergeben.)
Theorem
  • 1. Der CORTTS erzeugt CO, behebbare Historien Nachweis: Die erzeugten Historien sind eine CO durch das Theorem 40, da sich der CORTTS von dem COTTS nur bezüglich des Abbrechens zusätzlicher Transaktionen während jeder Iteration unterscheidet (und zwar wegen des Wiederherstell­ barkeitserfordernisses). Da alle Transaktionen, die die Wiederherstellbarkeit verletzen (Transaktionen in ABORTREC(T')), für jede abgebrochene Transaktion T' in ABORTco(T) während jeder Iteration abgebrochen werden (d. h. Transaktionen, die Daten lesen, welche durch eine abgebro­ chene Transaktion vor dem Abbruch geschrieben worden sind), sind die erzeugten Historien behebbar. (Bemerkung: Der CORTTS kann als nicht blockierend ohne Verzögerung, mit Verzögerung und als blockierender TTS mit vergleichbaren bzw. ähnlichen Ergebnissen implementiert werden, wie jene oben diskutierten in den Bemerkungen zu dem COTTS.)
Folgesätze
  • 1. Ein COTTS erzeugt Historien, die serienherstellbar sind.
  • 2. Ein CORTTS erzeugt Historien, die sowohl serienher­ stellbar als auch behebbar sind.
  • 3. Nicht-blockierende Planer auf der Basis von COTTS und CORTTS erzeugen stillstandsfreie Ausführungen. (Bemer­ ke: Die TTS können mit irgendwelchen Systemelementzugriffs­ planern (RAS) (= resource access schedules) zum Planen von Systemelementzugriffsoperationen kombiniert werden. Wenn sowohl der TTS als auch der RAS nicht blockierend sind, dann ist auch der kombinierte Mechanismus nicht blockierend und deshalb stellt er Stillstandsfreiheit sicher. Eine Kom­ bination aus einem RAS und einem TTS kann den obenstehenden RAS ersetzen, wenn eine gewisse Filterung (durch einen TTS) erforderlich ist, um weitere History-Eigenschaften aufzu­ erlegen. In diesem Fall kann der filternde TTS nur dann eine Transaktion abbrechen. Aber es spielt keine Rolle, ob der RAS seriell ausgebildete Abläufe erzeugen kann oder nicht, da die obenstehenden COTTS Serienherstellbarkeit garantieren. Der kombinierte Mechanismus kann wie folgt ausgeführt werden: zuerst werden die Transaktionen durch den RAS (oder durch einen RAS mit einem TTS) kontrolliert. Die nicht abgebrochenen, fertigen Transaktionen werden von dem COTTS als auszuführende Kandidaten betrachtet und Trans­ aktionen werden abgebrochen, wenn sie die Bedingungen des COTTS verletzen. Man bemerke, daß, wenn der obenstehende Planer auf S-S2PL beruht, dann der USG des zugehörigen COTTS keinerlei Kanten aufweist. Das bedeutet, daß keine Abbrüche durch den COTTS benötigt werden, wie man erwarten kann, und ein COTTS unnötig ist. Das ist eine extremer Fall. Andere Planertypen können andere Eigenschaften der zugehörigen USGs mit sich bringen, um gewünschte Planungs­ muster und Systemeigenschaften bzw. Verhalten zu ermögli­ chen, und zwar gemäß der Natur der auftretenden Transak­ tionen. Es ist auch darauf hinzuweisen, daß, wenn der kombi­ nierte CC-Mechanismus die Wiederherstellbarkeitseigenschaft garantiert, der COTTS ausreichend ist (es besteht keine Notwendigkeit für den CORTTS, da die Wiederherstellbarkeit gegeben ist). Wenn der Planer auf Zeitmarkierungsordnen (TO) basiert und CO erwünscht ist, kann ein Vorteil aus den existierenden Datenstrukturen gezogen werden, und weniger aus dem unabhängigen Implementieren der USGs. In diesem Fall kann CO erhalten werden, indem die Regel für Ausfüh­ rungsordnen mit Zeitmarkierung erzwungen wird.
Definitionen
  • 1. Eine Umgebung (environment) weist ein System mit ver­ teilten Diensten auf, das eine Vielzahl von Systemelement­ managern (RMs) aufweist, wobei eine Transaktion irgendeinen Untersatz von teilnehmenden RMs überspannen kann. Jeder RM in einer Umgebung hat einen Identifizierer (z. B. RM 2). Ereignisse werden durch den Identifizierer der Transaktion und durch den Identifizierer des RMs eingestuft (z. B. w3,2 [x] bedeutet eine Schreiboperation eines Datenfelds x durch einen RM 2 im Namen der Transaktion T3).
Axiom
  • 1. Wenn Pi,j[x], qk,l[y], j ≠ l Operationen sind (je­ weils durch RMs j, l), dann ist x ≠ y; d. h. diese Operation können nicht in Konflikt stehen.
Definitionen
  • 1. Eine globale Transaktion Ti besteht aus einem oder mehreren lokalen Untertransaktionen (subtransactions). Eine lokale Untertransaktion Ti,j greift auf alle Daten unter der Steuerung eines RMj zu, die Ti zum Zugreifen benötigt, und nur auf diese Datenfelder (d. h. alle ihre Ereignisse werden mit j bezeichnet bzw. klassifiziert). Eine lokale Untertransaktion gehorcht der Definition einer Transaktion. Eine lokale Untertransaktion hat die Zustände einer Transak­ tion.
  • 2. Eine lokale History wird durch einen einzelnen RM erzeugt und über den Satz ihrer lokalen Untertransaktionen definiert. Eine lokale History gehorcht der Definition ei­ ner History in Abschnitt 2. Hi ist eine History, die von einem RMi mit einer Beziehung <Hi erzeugt wurde. (Bemerke: Es wird angenommen, daß ein Kernausführungsprotokoll (AC) (atomic commitment protocol) angewendet wird, um die Kern­ eigenschaft (atomicity) in der verteilten Umgebung sicherzu­ stellen.)
  • 3. Ein AC-Protokoll implementiert das folgende generel­ le Schema immer, wenn über eine Transaktion entschieden wird: jeder teilnehmende RM wählt entweder "ja" oder "nein", (aber nicht beide) nachdem die zugehörige lokale Untertrans­ aktion den Fertig-Zustand erreicht hat, oder wählt "nein", wenn sie nicht in der Lage ist, den "Fertig-Zustand" zu erreichen. Die Transaktion wird von allen RMs ausgeführt, wenn und nur wenn alle "ja" gewählt haben. Ansonsten wird sie von allen RMs abgebrochen. (Bemerkungen: 2PC ist ein spezieller Fall der AC. Ausfall- und Wiederherstellungsaus­ gaben werden hier nicht behandelt.) Die Tatsache, daß AC verwendet wird, legt die Vermutung nahe, daß eine verteilte Transaktion ein einziges Ausführungsereignis hat (obwohl dies in der Wirklichkeit nicht immer sichergestellt ist). Dies ist jedoch für Abbrüche nicht gegeben.
    Beispiel: die folgenden zwei Transaktionen greifen beide auf Datenfelder bzw. Datensätze x und y zu. x, y sind unter der Kontrolle des RMs 1 bzw. des RMs 2. T1 und T2 und ihre lokalen Transaktionen sind die folgenden:
    RM1 T1,1 : r1,1[x]c1 T2,1 : w2,1[x]c2
    RM2 T1,2 : r1,2[y]c1 T2,2 : w2,2[y]c2
    T1 T2
    Die RMs erzeugen die nachfolgenden (lokalen) Historien H1 und H2:
    RM1: H1 r1,1[x]w2,1[x]c2c1
    RM2: H2 w2,2[x]c2r1,2[y]c1
    Man bemerke, daß die History H1 die Ausführungsreihenfolge verletzt, was in einer (globalen) Serienherstellbarkeits­ verletzung resultiert. Die jeweilige globale History H wird durch die folgenden Beziehungen der Reihenfolge beschrieben:
    r1,1[x] < w2,1[x] < c2 < r1,2[y] < c1 w2,2[y] < c2
  • 4. Für jede History-Eigenschaft X ist eine (globale) History H in Lokal-X (ist lokales X), wenn und nur wenn für jedes RMi in der Umgebung Hi (die History von RMi) in X ist (ist X).
Theorem
  • 1. Eine History ist in X (globales X), wenn und nur wenn sie in Lokal-X ist (d. h. Lokal-X = X), wobei X irgendeine der nachfolgenden Eigenschaften ist: REC, ACA, ST, CO, S-S2PL.
    Nachweis: folgt aus der Definition von Lokal-X, Axiom 47, und den Definitionen von REC, ACA, ST, CO und S-S2PL.
Theorem
  • 1. In Lokal-X zu sein, bedeutet nicht, daß eine History in X ist (d. h. Lokal-X ⊂ x), wobei X eine der nachfolgenden Eigenschaften ist: SER, 2PL, S2PL
    Nachweis: Man lasse H die History sein, wie im obenstehen­ den Beispiel. Die History H ist Lokal-SER, Lokal-2PL und ein Lokal-S2PL, da sowohl H1 und H2 in SER, 2PL und S2PL sind. H ist jedoch nicht in SER, 2PL oder S2PL. CSC (H) hat einen Zyklus, so daß H nicht in SER ist. Wenn S in 2PL ist, ist es auch in SER und es liegt ein Widerspruch vor.
Theorem
  • 1. SER ⊂ Lokal-CO. Anders ausgedrückt, wenn eine Histo­ ry in Lokal-CO ist, dann ist sie global seriell angeord­ net. Dieses Theorem folgt aus dem Ausführungsreihenfolge- Theorem und dem Theorem 52. (Bemerke: Lokal-CO kann durch RMs aufrechterhalten werden, indem irgendwelche Typen von CO-Mechanismen verwendet werden.)
Definition
  • 1. Eine dauerhafte Risikotransaktion (permanent risk transaction (PR)) ist eine Transaktion, die eine potentiel­ le Verletzung der Serieneigenschaft verursacht, wenn sie ausgeführt wird, und in dieser Situation für immer bleibt. Die PR-Eigenschaft bezieht sich auf den Systemelementma­ nager. Das obenstehende Erfordernis bedeutet, daß jeder RM in der Umgebung die folgende Ausführungsstrategie (CS) (= commitment strategy): ausgehend von einer History mit keinen entschiedenen Transaktionen, wird jede fertige Trans­ aktion ausgeführt (für gewöhnlich wird der RM über ein AC- Protokoll nachgefragt, um eine Transaktion auszuführen). Jede andere Transaktion, die ein PR ist, wird abgebrochen. (Das Geheimaxiom (hidden axiom) wird hier angenommen, daß Systemelemente nicht unnötigerweise gehalten werden. An­ sonsten können PR-Transaktionen markiert werden und für immer nicht entschieden bleiben.) Dann wird eine andere (irgendeine) fertige Transaktion, die keine Verletzung der Serieneigenschaft verursacht, ausgeführt. Wieder werden alle PR-Transaktionen abgebrochen, usw.
Theorem
  • 1. Wenn nur eine Information über lokale Serieneigen­ schaft erhältlich für jeden RM in der Umgebung ist und wenn Kernausführung (atomic commitment) angewendet wird, dann ist CS eine notwendige Strategie für jeden RM, um eine glo­ bale Serieneigenschaft sicherzustellen. CS erzeugt Lokal- CO-Historien (globale Historien in Lokal-CO).
    Nachweis: Das Serieneigenschafts-Theorem bedeutet, daß der Serieneigenschaftsgraph all die notwendigen Informationen über die Serieneigenschaft bzw. Serienherstellbarkeit zur Verfügung stellt. Unter der Annahme, daß jeder RM, oder besser RMi, seinen lokalen Serieneigenschaftsgraphen SGi "weiß" (er enthält alle ausgeführten und nicht entschiede­ nen Transaktionen) und seine Untergraphen CSGi (die nur ausgeführte Transaktionen enthalten) und USGi (der alle nicht entschiedenen Transaktionen enthält). Es wird auch angenommen (beruhend auf AC), daß jeder RM eine Transaktion ausgeführt hat, wenn und nur wenn er "Ja" gewählt (voted) hat und "weiß", daß alle anderen RMs, die an einer Transak­ tion teilnehmen, "Ja" gewählt haben, und sie schließlich ausgeführt hat. Das Ziel für jeden RM ist es, einen zyklus­ freien (globalen) CSG sicherzustellen (einen Seriengraphen mit ausgeführten Transaktionen), in dem jede Aktion vermie­ den wird, die einen globalen Zyklus (lokale Zyklen im CSGi werden durch den RMi beseitigt) erzeugt. Zuerst ist CS trivialerweise notwendig aus den folgenden Gründen: da eine PR-Transaktion für immer PR bleibt (wegen Definition), kann sie nicht ausgeführt werden und muß abgebrochen werden, um Systemelemente freizugeben. Auf der anderen Seite kann jede fertige Transaktion, die keine Verletzung der Serieneigen­ schaft verursachen kann, ausgeführt werden. Es ist nun not­ wendig, permanente Risikotransaktionen (PR) zu identifizie­ ren, während CS implementiert wird. Man kann zeigen, daß dies bedeutet, daß jeder RM als COTTS arbeitet. Jeder RM implementiert CS wie folgt:
    • a) Basisstufe: Man nehme an, daß CSGi keine Trans­ aktion enthält. Führe jede fertige Transaktion T aus. Nehme an, daß vor dem Ausführen von T eine Kante T' → T in USGi vorhanden ist. Es ist möglich, daß es eine Kante T → T' in einigen USGj von einigen RMj gibt, wobei j ≠ i ist, aber RMi kann dies nicht überprüfen. Das bedeutet, daß das spätere Ausführen von T' einen Zyklus in CSG verursa­ chen kann. Da das Ausführen von T nicht rückgängig gemacht werden kann (siehe Transaktionszustandseinschwingen bzw. Übergänge in Abschnitt 3), kann kein Ereignis diese Situa­ tion ändern. Deshalb ist T' eine PR und RMi muß sie abbre­ chen.
    • b) Induktive Stufe: Angenommen, daß CSGi zumindest eine Transaktion enthält. Es kann gezeigt werden, daß keine fertige Transaktion eine Verletzung der Serieneigenschaft verursachen kann, wenn sie ausgeführt wird, und deshalb kann sie ausgeführt werden (vorausgesetzt, daß eine Überein­ stimmung für die Ausführung durch alle teilnehmenden RMs über den AC erreicht wird): führe jede fertige Transaktion T aus. Überprüfe jede vorher ausgeführte Transaktion T". Es ist unmöglich, einen Pfad T → . . . → T" in CSGi oder in CSGj für jeden RMj, wobei j ≠ i ist, zu haben, da, wenn dieser Pfad in der Stufe existieren würde, wenn T" ausge­ führt wird, er während dieser Stufe abgetrennt werden wür­ de, wenn alle Transaktionen mit Kanten nach T" abgeblockt werden (unter Einsatz der Argumente, die für die Basisstufe oben gegeben wurden), und da keine hinzukommenden Kanten nach T" erzeugt werden hätten können, nachdem T" ausge­ führt worden ist. Deshalb kann nur ein Pfad T" → . . . → T in CSGi oder in CSGj für jeden RMj existieren, wobei j ≠ i ist. D. h., daß kein Zyklus in CSG durch T und T" erzeugt werden kann und daß kein T" abgebrochen zu werden braucht (was die Strategie verletzen würde). Nachfolgend wird ir­ gendeine nicht entschiedene Transaktion T' (in USGi) über­ prüft. Man nehme an, daß vor dem Ausführen von T eine Kante T' → T in USGi vorhanden ist. Wenn wiederum die Argumente für die Basisstufe verwendet werden, ist T' eine PR und der RMi muß sie abbrechen (indem er "Nein" über AC wählt). Wenn es keine Kante von T' nach T gibt, dann wird auch kei­ ne Entscheidung betreffend T' in dieser Stufe ausgeführt.
    Die obenstehenden Argumente stellen sicher, daß keine fer­ tige Transaktion eine Verletzung der Serieneigenschaft ver­ ursachen kann, wenn sie zu Anfang der induktiven Stufe aus­ geführt wird, wie angenommen wurde, und deshalb konnte (ir­ gendeine fertige Transaktion) T ausgeführt werden.
    In der CS-Implementation oben werden alle PR-Transaktionen identifiziert und in jeder Stufe abgebrochen. Durch Über­ prüfen dieser Implementation konnte festgestellt werden, daß sie als ein COTTS funktioniert. Deshalb erzeugt jeder RM wegen des Theorems 40 eine CO-History und die erzeugte (globale) History ist eine Lokal-CO (in Lokal-CO). Die ein­ zig mögliche Abweichung von dieser obenstehenden Implementa­ tion ist durch Abbrechen zusätzlicher Transaktionen in je­ der Stufe gegeben. Eine solche Abweichung hält noch die erzeugte History in Lokal-CO.
Schlußfolgerung
  • 1. Wenn die RMs eine Gleichzeitigkeitskontrolle nur mit­ tels Kernausführung (atomic commitment) koordinieren, dann ist ein lokales Ausführungsordnen (local commitment order­ ing) eine notwendige und ausreichende Bedingung für eine (globale) Serienherstellung. Diese Schlußfolgerung folgt aus den Theoremen 52, 55 und 56.
Schlußfolgerung
  • 1. Wenn die RMs eine gleichzeitige Kontrolle nur über eine Kernausführung steuern, dann sind lokales Ausführungs­ ordnen und lokales Wiederherstellen eine notwendige und ausreichende Bedingung für eine (globale) Serienherstellbar­ keit und Wiederherstellbarkeit. Diese Schlußfolgerung folgt aus dem Theorem 52.
  • 2. Ein globaler Stillstand ist ein Stillstand, der durch ein gegenseitiges Blockieren von zwei oder mehreren loka­ len Untertransaktionen in zumindest zwei unterschiedlichen Transaktionen von zumindest zwei unterschiedlichen RMs ver­ ursacht wird. (Bemerkungen: Da ein Ausführungsordnen nicht inhärent blockierend ist, kann es in einer nicht blockieren­ den Art und Weise z. B. durch Abbrüche oder durch Abbrüche nach Verzögerungen implementiert bzw. bewerkstelligt wer­ den. Wenn die Planer aller RMs in der Umgebung nicht bloc­ kierend sind (mit der Ausnahme eines einzigen, der bloc­ kierend sein kann), sind die Ausführungen stillstandsfrei.
    Einen anderen Weg für die Implementierung von Ausführungs­ ordnen besteht in der Verwendung von blockierenden CO-Be­ stätigern (blocking CO certifiers) (CO-Planern mit nicht blockierenden RAS und blockierenden TTS). Wenn die Planer für alle RMs Bestätiger sind und zumindest zwei davon bloc­ kierend sind, können globale Stillstände auftreten (sogar dann, wenn jeder RM seinen eigenen Stillstand löst bzw. auflöst). In diesem Fall sind alle Transaktionen, die mit dem Stillstand beteiligt sind, in einem Fertig-Zustand. Diese Tatsache erlaubt es, Stillstände (deadlocks) während einer Kernausführung (atomic commitment) aufzulösen.
    Wenn Planer von zwei oder mehreren RMs blockieren, wobei einer zumindest einen blockierenden RAS hat (z. B. S-S2PL. oder CO, BTO basierend), dann können auch aktive Transak­ tionen an einem globalen Stillstand beteiligt sein. In die­ sem Fall sind Nachrichten über Kernausführungen nicht aus­ reichend für eine Stillstandsauflösung und zusätzliche Nach­ richten, die das Vorhandensein von Blöcken bzw. Blockierun­ gen signalisieren, sind erforderlich (möglicherweise aufge­ setzt (piggy-backed) auf AC-Nachrichten anderer Transak­ tionen).
Schlußfolgerung
Ausführungsordnen stellt einen Weg zum Erreichen einer glo­ balen Serienherstellbarkeit zur Verfügung, und das auch durch stillstandsfreie Mechanismen. Das erlaubt einen Kom­ promiß zwischen blockierenden Techniken, die Stillständen unterworfen sind, und nicht blockierenden Implementationen, die stillstandsfrei sind aber kaskadierenden Abbrüchen un­ terzogen sind. Um eine Serienherstellbarkeit sicherzustel­ len, sind keine Dienste, aber eine Kernausführung für die Koordination des Transaktionsmanagements durch RMs notwen­ dig, wenn jeder RM ein Ausführungsordnen (commitment order­ ing) unterstützt. Ein Ausführungsordnen ist für eine globa­ le Serienherstellbarkeit jedoch notwendig, wenn nur eine Kernausführung für die RM-Koordination verwendet wird.

Claims (19)

1. Computergesteuertes Verfahren zur Ablaufsteuerung von Transaktionen in einem Datenverarbeitungssystem, das die folgenden Verfahrensschritte aufweist:
  • 1. Beginn der Vorbereitung von Ergebnissen der Transaktionen durch Durchführen von Operationen der Transaktionen;
  • 2. Bestätigen von Transaktionen durch Einschreiben der Ergebnisse der Operationen der Transaktionen in einen Zustandsspeicher, wobei das Verfahren ferner aufweist:
  • 3. Prüfung, ob Speicherzugriffskonflikte zwischen den Transaktionen bestehen, wobei nicht alle Transaktionen Speicherzugriffskonflikte haben, und, wenn bei der Prüfung auf Speicherzugriffskonflikte festgestellt wird, daß bei einer der Transaktionen eine erste Operation mit einer zweiten Operation bei einer anderen Transaktion in Konflikt steht, Aufzeichnen einer Reihenfolge der Durchführung der ersten und zweiten in Konflikt stehenden Operation in einem Speicher des Datenverarbeitungssystems;
  • 4. nachdem diese Transaktionen mit der ersten bzw. zweiten in Konflikt stehenden Operation sowie deren Ergebnisse vorbereitet wurden, so daß jede der beiden Transaktionen bereit ist, bestätigt zu werden, Auswahl einer der beiden zu bestätigenden Transaktionen und dadurch Kennzeichnung dieser Transaktion als ausgewählte Transaktion und Bestimmung eines Satzes von Abbruchtrans­ aktionen, bei denen eine Bestätigung nach der Bestätigung der ausgewählten Transaktion im Widerspruch zu der im Speicher des Datenverarbeitungssystems gespeicherten Durchführungsreihen­ folge stehen würde, so daß dieser Satz von Abbruchtransaktionen alle noch nicht bestätigten oder nicht abgebrochenen Transaktionen einschließt, bei denen eine Operation durchgeführt wurde, die in Konflikt mit einer später durchgeführten Operation in der ausgewählten Transaktion steht, und, in Abhängigkeit von der Auswahl der ausgewählten Transaktion,
  • 5. Eingeben (Einschreiben) der Ergebnisse der ausgewählten Transaktion in den Zustandsspeicher und
  • 6. Abbrechen aller Transaktionen im Satz von Abbruchtransaktionen, wobei der Satz von Abbruchtransaktionen mindestens eine Transaktion einschließt, deren Ergebnisse bereits vorbereitet und zur Ausführung fertig sind und die eine durchgeführte Operation hat, die mit einer später durchgeführten Operation in der ausgewählten Transaktion in Konflikt steht.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Schritt des Eingebens in den Zustandsspeicher das Aktualisieren einer Datenbank umfaßt.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Schritt des Eingebens in den Zustandsspeicher das Ändern des Speicherzustands eines Datenobjekts enthält.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Transaktion aus den Transaktionen durch Vergleichen vorgegebener Prioritäten ausgewählt wird, die den Transaktionen zugewiesen sind.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Transaktion aus den Transaktionen auf der Basis einer Reihenfolge der Transaktionen in einer Liste ausgewählt wird.
6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Schritt des Auswählens der ausgewählten Transaktion in Reaktion auf ein Ausführungskommando von einem Koordinator durchgeführt wird.
7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die ausgewählte Transaktion aus den Transaktionen ausgewählt wird, um die Anzahl der Transaktionen zu minimieren, die im Schritt ii) abgebrochen werden.
8. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß es umfaßt:
Empfangen einer Anforderung von einem Koordinator zur Spezifikation einer vorzubereitenden Transaktion, um dadurch eine spezifizierte Transaktion zu identifizieren, wobei die Vorbereitung von Ergebnissen für die spezifizierte Transaktion in Schritt a1) begonnen wird, und wobei das Verfahren ferner den Schritt einer Verzögerung der Bestätigung der Beendigung der Vorbereitung der spezifizierten Transaktion für den Koordinator einschließt, bis keine der noch nicht bestätigten Transaktionen eine durchgeführte Operation beinhaltet, die mit einer später durchgeführten Operation in der spezifizierten Transaktion in Konflikt steht, da inzwischen die noch nicht bestätigten Transaktionen bestätigt werden konnten, um so ihren Abbruch zu vermeiden.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß das Verzögern beendet wird, wenn das Verzögern für eine vorgegebene Zeit andauert.
10. Verfahren nach Anspruch 8, dadurch gekennzeichnet, daß das Verzögern beendet wird, wenn ein Ende-Signal von dem Koordinator empfangen wird.
11. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Prüfung auf Speicherzugriffskonflikte zwischen Transaktionen während der Vorbereitung von Ergebnissen für Transaktionen mit in Konflikt stehenden Operationen durchgeführt wird.
12. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Daten in dem Speicher in der Form eines gerichteten Graphen abgespeichert werden und daß das Verfahren weiterhin den Schritt des Entfernens von Daten bezüglich ausgeführter und abgebrochener Transaktionen von dem Graphen umfaßt.
13. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß von einem Koordinator eine Anforderung empfangen wird, eine spezifizierte Transaktion der Transaktionen vorzubereiten, und daß die Bestätigung der Beendigung der Vorbereitung der spezifizierten Transaktion der Transaktionen verzögert wird, bis keine der Transaktionen, die bis jetzt weder ausgeführt noch abgebrochen wurden, widersprüchlich zu der vordefinierten Ausführungsordnung sind, und daß die spezifizierte Transaktion ausgeführt wird.
14. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Verfahren ferner umfaßt:
  • a) Empfangen von Anforderungen, um Transaktionen durchzuführen;
  • b) Planen der Durchführung von Operationen der Transaktionen auf einer Echtzeitbasis, so daß Operationen einiger Transaktionen in Übereinstimmung mit der Verfügbarkeit von Systemressourcen des Computers vor der Ausführung anderer Transaktionen durchgeführt werden.
15. Digitales Computersystem zur Verarbeitung von Transaktionen, dadurch gekennzeichnet, daß das System aufweist:
  • 1. eine Einrichtung zum Vorbereiten von Ergebnissen der Transaktionen durch Durchführen von Operationen der Transaktionen;
  • 2. eine Einrichtung zum Bestätigen von Transaktionen durch Einschreiben der Ergebnisse der Operationen der Transaktionen in einen Zustandsspeicher, wobei das Computersystem ferner aufweist:
  • 3. eine Einrichtung zur Prüfung, ob Speicherzugriffskonflikte zwischen den Transaktionen bestehen, wobei nicht alle Transaktionen Speicherzugriffskonflikte aufweisen, und eine Einrichtung zum Aufzeichnen einer Reihenfolge der Durchführung der ersten und zweiten in Konflikt stehenden Operation in einem Speicher des Computersystems, wenn eine der Transaktionen eine erste Operation aufweist, die mit einer zweiten Operation bei einer anderen Transaktion in Konflikt steht;
  • 4. eine Einrichtung zum, nachdem die Ergebnisse der Transaktionen mit der ersten bzw. zweiten in Konflikt stehenden Operation vorbereitet wurden, so daß jede der Transaktionen mit der ersten bzw. zweiten in Konflikt stehenden Operation zur Bestätigung vorbereitet ist, Auswählen einer der beiden zu bestätigenden Transaktionen, wodurch eine ausgewählte Transaktion identifiziert wird, und zum Bestimmen eines Abbruchsatzes von Transaktionen, bei denen eine Bestätigung nach der Bestätigung der ausgewählten Transaktion im Widerspruch zu der im Speicher des Computersystems gespeicherten Durchführungsordnung, stehen würde, so daß dieser Satz von Abbruchtransaktionen alle noch nicht bestätigten oder abgebrochenen Transaktionen einschließt, bei denen eine Operation durchgeführt wurde, die mit einer später durchgeführten Operation der ausgewählten Transaktion in Konflikt steht, und die in Abhängigkeit von der Auswahl der ausgewählten Transaktion folgendes ausführt:
  • 5. Eingeben der Ergebnisse der ausgewählten Transaktion in einen Zustandsspeicher; und
  • 6. Abbrechen aller Transaktionen im Abbruchsatz, wobei der Abbruchsatz zumindest eine Transaktion mit vorbereiteten Ergebnissen umfaßt, die vorbereitet zur Ausführung ist, und eine Operation aufweist, die mit einer später durchgeführten Operation der ausgewählten Transaktion in Konflikt steht.
16. Digitales Computersystem nach Anspruch 15, dadurch gekennzeichnet, daß es ferner umfaßt:
eine Einrichtung zum Empfang einer Anforderung von einem Koordinator zur Spezifizierung einer vorzubereitenden Transaktion, wodurch eine spezifizierte Transaktion identifiziert wird, wobei die Vorbereitung von Ergebnissen für die spezifische Transaktion durch die Einrichtung aus a1) vorgenommen wird,
eine Einrichtung zum Verzögern der Bestätigung der Beendigung der Vorbereitung der spezifischen Transaktion für den Koordinator, bis keine der noch nicht bestätigten oder abgebrochenen Transaktionen eine durchgeführte Operation beinhaltet, die mit einer später durchgeführten Operation der spezifischen Transaktion in Konflikt steht, da inzwischen die noch nicht bestätigten Transaktionen bestätigt werden konnten, um so ihren Abbruch zu vermeiden.
17. System nach einem der Ansprüche 15 oder 16, gekennzeichnet durch eine Einrichtung zum Abbrechen der ausgewählten Transaktionen, nachdem die Verzögerung eine vorgegebene Zeitdauer anhält.
18. System nach einem der Ansprüche 15 bis 17, gekennzeichnet durch eine Einrichtung zum Verzögern der Bestätigung der Beendigung der Vorbereitung der ausgewählten Transaktionen, bis keine der Transaktionen, die noch nicht bestätigt oder abgebrochen worden sind, im Gegensatz zur vorgegebenen Ausführungsreihenfolge und der Ausführung der angeforderten Transaktion stehen.
19. System nach einem der Ansprüche 15 bis 18, gekennzeichnet durch eine Einrichtung zum Vergleichen einer Adresse einer Speicherzugriffsoperation für eine Transaktion mit den Adressen von Speicherzugriffsoperationen, die vorher für eine andere Transaktion durchgeführt worden sind.
DE4216871A 1991-05-21 1992-05-21 Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen Expired - Fee Related DE4216871C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US70339491A 1991-05-21 1991-05-21

Publications (2)

Publication Number Publication Date
DE4216871A1 DE4216871A1 (de) 1993-01-21
DE4216871C2 true DE4216871C2 (de) 2001-09-06

Family

ID=24825204

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4216871A Expired - Fee Related DE4216871C2 (de) 1991-05-21 1992-05-21 Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen

Country Status (4)

Country Link
US (1) US5504900A (de)
JP (1) JPH05197604A (de)
DE (1) DE4216871C2 (de)
GB (1) GB2256514B (de)

Families Citing this family (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
JP3512439B2 (ja) * 1993-07-08 2004-03-29 富士通株式会社 チェックイン・チェックアウトモデルにおける施錠方式
US6920467B1 (en) * 1993-11-26 2005-07-19 Canon Kabushiki Kaisha Avoiding unwanted side-effects in the updating of transient data
JP3167259B2 (ja) 1994-05-06 2001-05-21 三菱電機株式会社 音響再生装置
JP3085085B2 (ja) * 1994-05-09 2000-09-04 三菱電機株式会社 データアクセス装置及び分散データベースシステム
JP3392236B2 (ja) * 1994-11-04 2003-03-31 富士通株式会社 分散トランザクション処理システム
US6275843B1 (en) * 1994-12-22 2001-08-14 Unisys Corporation Method and apparatus for processing multiple service requests within a global transaction by a single server application program instance
GB2301909A (en) * 1995-06-07 1996-12-18 Ibm Reduction of logging in distributed transaction processing systems
US5829013A (en) * 1995-12-26 1998-10-27 Intel Corporation Memory manager to allow non-volatile memory to be used to supplement main memory
US5893113A (en) * 1996-04-25 1999-04-06 Navigation Technologies Corporation Update transactions and method and programming for use thereof for incrementally updating a geographic database
US5734896A (en) * 1996-04-30 1998-03-31 Oracle Corporation Recovery of a remotely initiated distributed prepared transaction by status report from a second database to an external coordinator
US5903749A (en) * 1996-07-02 1999-05-11 Institute For The Development Of Emerging Architecture, L.L.C. Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs
FR2751106B1 (fr) * 1996-07-11 1999-01-08 Alsthom Cge Alcatel Methode de planification de transactions distribuees
US5970229A (en) * 1996-09-12 1999-10-19 Cabletron Systems, Inc. Apparatus and method for performing look-ahead scheduling of DMA transfers of data from a host memory to a transmit buffer memory
US5995995A (en) * 1996-09-12 1999-11-30 Cabletron Systems, Inc. Apparatus and method for scheduling virtual circuit data for DMA from a host memory to a transmit buffer memory
US5922046A (en) * 1996-09-12 1999-07-13 Cabletron Systems, Inc. Method and apparatus for avoiding control reads in a network node
US5941952A (en) * 1996-09-12 1999-08-24 Cabletron Systems, Inc. Apparatus and method for transferring data from a transmit buffer memory at a particular rate
US5966546A (en) 1996-09-12 1999-10-12 Cabletron Systems, Inc. Method and apparatus for performing TX raw cell status report frequency and interrupt frequency mitigation in a network node
US5999980A (en) * 1996-09-12 1999-12-07 Cabletron Systems, Inc. Apparatus and method for setting a congestion indicate bit in an backwards RM cell on an ATM network
US5920863A (en) * 1997-05-31 1999-07-06 International Business Machines Corporation System and method for supporting transactions for a thin client lacking a persistent store in a distributed object-oriented environment
US5999931A (en) * 1997-10-17 1999-12-07 Lucent Technologies Inc. Concurrency control protocols for management of replicated data items in a distributed database system
US6088771A (en) * 1997-10-24 2000-07-11 Digital Equipment Corporation Mechanism for reducing latency of memory barrier operations on a multiprocessor system
US6085263A (en) * 1997-10-24 2000-07-04 Compaq Computer Corp. Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6108737A (en) * 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
US6286090B1 (en) 1998-05-26 2001-09-04 Compaq Computer Corporation Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches
US6243702B1 (en) * 1998-06-22 2001-06-05 Oracle Corporation Method and apparatus for propagating commit times between a plurality of database servers
US6418538B1 (en) * 1998-07-06 2002-07-09 Intel Corporation Method and system for scheduling transactions over a half duplex link
US6138118A (en) * 1998-07-30 2000-10-24 Telcordia Technologies, Inc. Method and system for reconciling concurrent streams of transactions in a database
US6286110B1 (en) * 1998-07-30 2001-09-04 Compaq Computer Corporation Fault-tolerant transaction processing in a distributed system using explicit resource information for fault determination
US6671704B1 (en) 1999-03-11 2003-12-30 Hewlett-Packard Development Company, L.P. Method and apparatus for handling failures of resource managers in a clustered environment
US6411981B1 (en) 1999-03-12 2002-06-25 Compaq Computer Corporation Method and apparatus for conducting a transaction between homogeneous and/or heterogeneous transaction processing systems using asynchronous pull of a transaction transfer
US6295548B1 (en) * 1999-03-12 2001-09-25 Compaq Computer Corporation Detection of an imported transaction for finding the global transaction identifier
US6470342B1 (en) 1999-03-12 2002-10-22 Compaq Computer Corporation Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps
US6874104B1 (en) 1999-06-11 2005-03-29 International Business Machines Corporation Assigning recoverable unique sequence numbers in a transaction processing system
US6938256B2 (en) 2000-01-18 2005-08-30 Galactic Computing Corporation System for balance distribution of requests across multiple servers using dynamic metrics
US6823356B1 (en) 2000-05-31 2004-11-23 International Business Machines Corporation Method, system and program products for serializing replicated transactions of a distributed computing environment
US8538843B2 (en) * 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US6816905B1 (en) * 2000-11-10 2004-11-09 Galactic Computing Corporation Bvi/Bc Method and system for providing dynamic hosted service management across disparate accounts/sites
US6701387B1 (en) 2000-08-31 2004-03-02 Hewlett-Packard Development Company, L.P. Adaptive data fetch prediction algorithm
US20020124083A1 (en) * 2000-09-06 2002-09-05 Sun Microsystems, Inc. Method and apparatus for increasing the efficiency of transactions and connection sharing in an enterprise environment
US7689560B2 (en) * 2000-10-13 2010-03-30 Miosoft Corporation Persistent data storage techniques
US7587428B2 (en) 2000-10-13 2009-09-08 Microsoft Corporation Maintaining a relationship between two different items of data
US7028297B2 (en) * 2000-11-17 2006-04-11 Aristos Logic Corporation System and method of scalable transaction processing
US7406523B1 (en) * 2000-11-21 2008-07-29 Microsoft Corporation Client-server communications system and method using a semi-connectionless protocol
US6795878B2 (en) * 2000-12-11 2004-09-21 International Business Machines Corporation Verifying cumulative ordering of memory instructions
US6874071B2 (en) * 2001-12-13 2005-03-29 International Business Machines Corporation Database commit control mechanism that provides more efficient memory utilization through consideration of task priority
KR100477641B1 (ko) * 2002-01-15 2005-03-23 삼성전자주식회사 버스 시스템 및 그 데이터 전송경로 결정방법
US7756813B2 (en) * 2002-09-09 2010-07-13 Sap Ag Electronic data structure for controlling access to data objects using locks
US7693881B2 (en) * 2002-09-09 2010-04-06 Sap Ag Methods and systems for moving data using locks
US7457933B2 (en) * 2002-09-09 2008-11-25 Sap Ag Methods and systems for archiving data
US20060149696A1 (en) * 2002-09-09 2006-07-06 Thorsten Pferdekaemper Method and systems for controlling access to a data object by means of locks
US7653667B2 (en) * 2002-09-09 2010-01-26 Sap Ag Methods and systems for data moving using locks
AU2003267042A1 (en) * 2002-09-09 2004-04-30 Sap Aktiengesellschaft Methods and systems for archiving data
US7146366B2 (en) 2002-09-13 2006-12-05 Netezza Corporation Distributed concurrency control using serialization ordering
US8145759B2 (en) * 2002-11-04 2012-03-27 Oracle America, Inc. Dynamically configurable resource pool
US7165061B2 (en) 2003-01-31 2007-01-16 Sun Microsystems, Inc. Transaction optimization of read-only data sources
US7769722B1 (en) 2006-12-08 2010-08-03 Emc Corporation Replication and restoration of multiple data storage object types in a data network
US7082432B2 (en) 2003-04-24 2006-07-25 Sun Microsystems, Inc. Specifying transaction manager type at various application levels
US7743083B2 (en) 2003-04-24 2010-06-22 Oracle America, Inc. Common transaction manager interface for local and global transactions
US7610305B2 (en) * 2003-04-24 2009-10-27 Sun Microsystems, Inc. Simultaneous global transaction and local transaction management in an application server
US7152077B2 (en) * 2003-05-16 2006-12-19 Hewlett-Packard Development Company, L.P. System for redundant storage of data
US20040230862A1 (en) * 2003-05-16 2004-11-18 Arif Merchant Redundant data assigment in a data storage system
US7761421B2 (en) * 2003-05-16 2010-07-20 Hewlett-Packard Development Company, L.P. Read, write, and recovery operations for replicated data
DE112004001031T5 (de) * 2003-06-13 2006-04-27 Kirkegaard, Jon, Dallas Bestellverpflichtungsverfahren und -system
US7640545B2 (en) 2003-07-14 2009-12-29 Sun Microsytems, Inc. Transaction manager freezing
US7739252B2 (en) * 2003-07-14 2010-06-15 Oracle America, Inc. Read/write lock transaction manager freezing
US7134008B2 (en) * 2003-09-04 2006-11-07 Sun Microsystems, Inc. Utility for configuring and verifying data sources
US8521875B2 (en) * 2003-09-04 2013-08-27 Oracle America, Inc. Identity for data sources
US7146386B2 (en) * 2004-03-29 2006-12-05 Microsoft Corporation System and method for a snapshot query during database recovery
US7266571B2 (en) * 2004-07-27 2007-09-04 International Business Machines Corporation Method and system for scheduling a partial ordered transactions for event correlation
US7711721B2 (en) * 2004-09-01 2010-05-04 International Business Machines Corporation Apparatus, system, and method for suspending a request during file server serialization reinitialization
US7490088B2 (en) * 2004-09-01 2009-02-10 International Business Machines Corporation Apparatus, system, and method for preserving connection/position data integrity during file server serialization reinitialization
US7627578B2 (en) 2004-09-01 2009-12-01 International Business Machines Corporation Apparatus, system, and method for file system serialization reinitialization
US7716305B2 (en) * 2004-09-01 2010-05-11 International Business Machines Corporation Apparatus, system, and method for preserving cluster level serialization during file server serialization reinitialization
US20060195845A1 (en) * 2005-02-28 2006-08-31 Rhine Scott A System and method for scheduling executables
US9047306B1 (en) 2005-10-17 2015-06-02 Hewlett-Packard Development Company, L.P. Method of writing data
US7827144B1 (en) 2005-11-17 2010-11-02 Hewlett-Packard Development Company, L.P. Methods of reading and writing data
US7765187B2 (en) * 2005-11-29 2010-07-27 Emc Corporation Replication of a consistency group of data storage objects from servers in a data network
US7848261B2 (en) 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
US7899800B2 (en) * 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7653664B2 (en) * 2006-11-03 2010-01-26 Microsoft Corporation Anchor for database synchronization excluding uncommitted transaction modifications
US8010550B2 (en) 2006-11-17 2011-08-30 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7711678B2 (en) * 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US8024714B2 (en) 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
US8706833B1 (en) 2006-12-08 2014-04-22 Emc Corporation Data storage server having common replication architecture for multiple storage object types
US20080243684A1 (en) * 2007-03-19 2008-10-02 Steven Ng Method and apparatus for funding a transaction
US8966080B2 (en) * 2007-04-13 2015-02-24 Emc Corporation Systems and methods of managing resource utilization on a threaded computer system
US8775475B2 (en) * 2007-11-09 2014-07-08 Ebay Inc. Transaction data representations using an adjacency matrix
US8046324B2 (en) 2007-11-30 2011-10-25 Ebay Inc. Graph pattern recognition interface
US8145805B2 (en) * 2008-06-09 2012-03-27 Emulex Design & Manufacturing Corporation Method for re-sequencing commands and data between a master and target devices utilizing parallel processing
US20100017581A1 (en) * 2008-07-18 2010-01-21 Microsoft Corporation Low overhead atomic memory operations
US8166481B2 (en) * 2008-10-20 2012-04-24 Microsoft Corporation Transaction processing in transactional memory
US8001548B2 (en) * 2008-10-20 2011-08-16 Microsoft Corporation Transaction processing for side-effecting actions in transactional memory
KR20150038758A (ko) 2009-02-13 2015-04-08 아브 이니티오 테크놀로지 엘엘시 태스크 실행 관리
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
CN107066241B (zh) 2010-06-15 2021-03-09 起元技术有限责任公司 用于动态加载基于图的计算的系统和方法
JP5652047B2 (ja) * 2010-08-13 2015-01-14 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US9274862B2 (en) 2010-12-09 2016-03-01 Mimecast North America Inc. Reducing latency in performing a task among distributed systems
US9529355B2 (en) * 2011-11-11 2016-12-27 Rockwell Automation Technologies, Inc. Control environment change communication
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9740549B2 (en) * 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US9524195B2 (en) 2014-02-27 2016-12-20 International Business Machines Corporation Adaptive process for data sharing with selection of lock elision and locking
CN104572506B (zh) * 2013-10-18 2019-03-26 阿里巴巴集团控股有限公司 一种并发访问内存的方法及装置
AU2014360308B2 (en) 2013-12-05 2018-11-29 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
US9442853B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
US9262206B2 (en) 2014-02-27 2016-02-16 International Business Machines Corporation Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9430273B2 (en) 2014-02-27 2016-08-30 International Business Machines Corporation Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration
US9442775B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9465673B2 (en) 2014-02-27 2016-10-11 International Business Machines Corporation Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling
US9524187B2 (en) 2014-03-02 2016-12-20 International Business Machines Corporation Executing instruction with threshold indicating nearing of completion of transaction
GB2529246A (en) * 2014-08-15 2016-02-17 Ibm Method for securing integrity and consistency of a cloud storage service with efficient client operations
JP2016081169A (ja) * 2014-10-14 2016-05-16 富士通株式会社 情報処理装置、データ処理システム、データ処理管理プログラム、及び、データ処理管理方法
US11314544B2 (en) * 2015-02-09 2022-04-26 Red Hat, Inc. Transaction log for audit purposes
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
EP3394739B1 (de) 2015-12-21 2020-11-11 AB Initio Technology LLC Erzeugung einer subgraph-schnittstelle
US11741084B2 (en) * 2019-09-27 2023-08-29 Autodesk, Inc. High frequency data management (HFDM)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4249241A (en) * 1978-10-23 1981-02-03 International Business Machines Corporation Object access serialization apparatus for a data processing system
US4881166A (en) * 1987-07-24 1989-11-14 Amoco Corporation Method for consistent multidatabase transaction processing
DE3927703A1 (de) * 1988-08-23 1990-03-01 Hitachi Ltd Computersystem vom gemeinschaftsdaten-typ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4224664A (en) * 1976-05-07 1980-09-23 Honeywell Information Systems Inc. Apparatus for detecting when the activity of one process in relation to a common piece of information interferes with any other process in a multiprogramming/multiprocessing computer system
US4627019A (en) * 1982-07-08 1986-12-02 At&T Bell Laboratories Database management system for controlling concurrent access to a database
US5193188A (en) * 1989-01-05 1993-03-09 International Business Machines Corporation Centralized and distributed wait depth limited concurrency control methods and apparatus
US5319773A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Asynchronous resynchronization of a commit procedure
US5212788A (en) * 1990-05-22 1993-05-18 Digital Equipment Corporation System and method for consistent timestamping in distributed computer databases
US5263156A (en) * 1990-12-20 1993-11-16 Bell Communications Research, Inc. Parallel, distributed optimistic concurrency control certification using hardware filtering

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4249241A (en) * 1978-10-23 1981-02-03 International Business Machines Corporation Object access serialization apparatus for a data processing system
US4881166A (en) * 1987-07-24 1989-11-14 Amoco Corporation Method for consistent multidatabase transaction processing
DE3927703A1 (de) * 1988-08-23 1990-03-01 Hitachi Ltd Computersystem vom gemeinschaftsdaten-typ

Also Published As

Publication number Publication date
GB2256514B (en) 1994-11-16
DE4216871A1 (de) 1993-01-21
US5504900A (en) 1996-04-02
GB9210876D0 (en) 1992-07-08
JPH05197604A (ja) 1993-08-06
GB2256514A (en) 1992-12-09

Similar Documents

Publication Publication Date Title
DE4216871C2 (de) Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
EP0929864B1 (de) Koordinations-system
DE4497149B4 (de) Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung
DE4303062C2 (de) Verfahren zur Behebung von Systemausfällen in einem verteilten Computersystem und Vorrichtung zur Durchführung des Verfahrens
DE60130420T2 (de) Vorrichtung und Verfahren zur Aufrechterhaltung einer verknüpften Liste
DE69839145T2 (de) Kompensierender Betriebsmittelverwalter
DE19926115B4 (de) Transaktionshandhabung in einer Konfigurationsdatenbank
DE60220676T2 (de) Konsistente lesevorgänge in einer verteilten datenbankumgebung
DE69929095T2 (de) Verwaltung eines durch eine Mehrzahl von Knoten benutzten Betriebsmittels
DE602005004166T2 (de) Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE69731998T2 (de) Informationsverarbeitungsvorrichtung und Verfahren
DE3611223C2 (de)
DE102005053727B4 (de) Verteilte Verriegelung
DE602004006404T2 (de) Flashback-datenbank
DE4220198C2 (de) Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem
DE112010004947B4 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE60315996T2 (de) Verfahren und vorrichtung zur datenbewegung mittels sperren
DE4420451C2 (de) Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell
DE69815946T2 (de) Informationsverarbeitungsvorrichtung
DE112005002402T5 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE602005002532T2 (de) Cluster-datenbank mit ferndatenspiegelung
DE4033336A1 (de) Verfahren zum erzeugen einer ausfallmeldung und mechanismus fuer ausfallmeldung
DE4423559A1 (de) Datenverbindungsverfahren und Vorrichtung für Multiprozessor-Computersysteme mit gemeinsamem Speicher
DE19705955A1 (de) Verfahren zum Generieren einer Implementierung eines Workflow-Prozessmodells in einer Objektumgebung

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 13/42

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee