-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft ein Verfahren, das zur Optimierung
des Transaktionsprotokolls vorgesehen ist, das bei Transaktionen
zwischen einer Mehrzahl von Knoten innerhalb eines Systems von Knoten
verwendet wird, in welchen eine Information, die zu einer verteilten
Datenbank gehört,
gespeichert ist. Die Information ist in Tabellen aufgeteilt.
-
Die
Transaktion rührt
von einem Transaktionskoordinator her und beeinflusst zumindest
eine Gruppe von Teilen von zumindest einer ersten Tabelle der Tabellen
in der Datenbank. Eine derartige Gruppe wird zumindest einen ersten
und einen zweiten Tabellenteil und möglicherweise einen oder mehrere
weitere Teile einschließen.
-
Der
erste Teil ist innerhalb eines ersten Knotens gespeichert, und der
zweite Teil ist innerhalb eines zweiten Knotens gespeichert, wobei
dieser zweite Knoten getrennt von dem ersten Knoten ist. Mögliche andere
Teile innerhalb der Gruppe sind in Zwischenknoten gespeichert, wobei
diese Zwischenknoten aus weiteren Knoten bestehen, getrennt voneinander
und auch von den ersten und zweiten Knoten sind.
-
Die
Transaktion besteht aus einer Two-Safe-Transaktion, was bedeutet,
dass die Transaktion durchgeführt
wird, wenn sämtliche
Knoten, die von der Transaktion betroffen sind, in der Lage sind,
die Transaktion durchzuführen,
und dass die Transaktion abgebrochen wird, wenn irgendeiner der
Knoten, der von der Transaktion betroffen ist, nicht in der Lage
ist, die Transaktion auszuführen.
-
HINTERGRUND DER ERFINDUNG
-
Es
ist alt bekannt, dass das, was hier als ein "System" bezeichnet wird, einen Teil eines Netzes ausbilden
kann, und eine Mehrzahl unterschiedlicher wechselseitig zusammenwirkender
Knoten einschließt,
indem die Knoten für
einen Fall in einer verteilten Datenbank gebildet werden. In einem
derartigen System finden unterschiedliche Transaktionen zwischen
zwei oder mehreren Knoten konstant statt. Diese Transaktionen werden
auf eine positive und zeiteffiziente Weise ausgeführt werden.
-
Sogenannte
verteilte Transaktionen bedeuten, dass eine Transaktion zwischen
einer Mehrzahl von Knoten oder Teilnehmern durchgeführt werden soll.
Eine Transaktion kann jedwede Verpflichtung mit sich bringen, die
eine Mehrzahl von Knoten betrifft. Zwei Verfahren sind in Verbindung
mit verteilten Transaktionen alt bekannt, wobei diese Verfahren eine
herkömmliche
Verpflichtung mit zwei Phasen und eine lineare Verpflichtung sind.
Mit Verpflichtung ist gemeint, dass sich ein Teilnehmer verpflichtet
hat, etwas zu tun und dies auch tut.
-
Es
ist auch bekannt, ein Sicherheitskopieren oder Sicherungskopieren
einer Information in einer verteilten Datenbank zu benutzen. Somit
wird eine Primärkopie
eines Teils einer Tabelle innerhalb eines ersten Knotens gespeichert,
und eine Sekundärkopie des
gleichen Teils wird innerhalb eines zweiten Knotens gespeichert.
-
Eine
Primärkopie,
die einer Sekundärkopie zugeordnet
ist, wird als ein Fragment in diesem Dokument bezeichnet. Eine Transaktion,
die einen Teil einer Tabelle beeinflusst, beeinflusst somit ein
Fragment einer Tabelle, die sowohl eine Primärkopie als auch eine Sekundärkopie dieses
Teils der Tabelle einschließt.
Wenn eine verteilte Transaktion eine Mehrzahl unterschiedlicher
Tabellen einschließen kann,
oder eine Mehrzahl unterschiedlicher Teile einer Tabelle, werden
eine Mehrzahl unterschiedlicher Fragmente und zugeordneter Kopien
auch beeinflusst werden.
-
Eine
herkömmliche
Verpflichtung in zwei Phasen und eine lineare Verpflichtung sind
auf unterschiedliche Weisen bezüglich
einer Transaktion, die eine Mehrzahl von Fragmenten beeinflusst,
vorteilhaft. Dies wird detaillierter unten stehend unter Bezugnahme
auf die zugehörigen
Zeichnungen beschrieben werden.
-
Jedoch
wird in diesem Stadium kurz erwähnt,
dass
- – eine "herkömmliche
Verpflichtung in zwei Phasen" eine
große
Anzahl zu sendenden Nachrichten erfordert, obwohl dies teilweise
parallel durchgeführt
werden kann und damit hohe Anforderungen an den Prozessor und die Übertragungskapazität stellt,
aber relativ kurze Antwortzeiten erreicht, wohingegen
- – eine "lineare Verpflichtung" eine geringere Anzahl
von zu sendenden Nachrichten erfordert, obwohl diese im Wesentlichen
seriell sind, und damit weniger Anforderung an verfügbare Prozessor- und Übertragungskapazität stellt,
aber relativ längere
Antwortzeiten
in einer und derselben Transaktion ergibt.
-
Es
ist auch bekannt, eine sogenannte Systemredundanz mit der Absicht
eines Erhaltens einer Redundanz in einem System zu verwenden, was
bedeutet, dass eine parallele Sekundärkopie des kompletten Systems
gefunden wird. Eine Sekundärkopie ist
vollständig
getrennt von der Primärkopie
hinsichtlich der Hardware.
-
Eine
Erhebung eines Sekundärsystems
in ein Primärsystem
findet nur in dem Fall eines Gesamtkollapses des Primärsystems,
d. h. eines Gesamtcrash statt.
-
Ein
sogenanntes Blockieren des Systems kann auftreten, sollte ein Transaktionskoordinator während einer
Transaktion zusammenbrechen. Dies bedeutet, dass das System warten
muss, bis der zusammengebrochene Transaktionskoordinator wieder gestartet
hat, oder bis eine Sekundärkopie
des Transaktionskoordinators in eine Primärkopie befördert ist und die Rolle des
Transaktionskoordinators übernommen
hat.
-
Es
ist bekannt, in diesem Kontext einen sogenannten "nicht blockierenden
Koordinator" zu schaffen.
Ein derartiger Koordinator ist in der Publikation "Location and Replication
independent recovery in a highly available database", Svein Erik Bratsberg, Svein-Olof
Hvasshovel, Öysten
Torjörnsen.
Telenor R&D,
beschrieben.
-
In
Kürze bringt
dieses Verfahren die Verwendung von parallelen Transaktionskoordinatoren
mit sich, was wiederum sehr hohe Betriebskosten nach sich zieht.
-
Erwähnt sei
hier auch die Publikation "D3
Dynamic Data Distribution Algorithm" von Chamberlain, auf der Konferenz "Very large Databases" in Vancouver, 1992,
veröffentlicht,
welche auch das Handhaben eines zusammengebrochenen Transaktionskoordinators
während
einer Transaktion beschreibt.
-
Das
US Patent 5,432,926 , erteilt
an Citron et al. betrifft eine Verbesserung einer Datenbankzuverlässigkeit
und einer Antwortzeit in einem verteilten Transaktionsverarbeitungssystem.
Das
US Patent 5,432,926 beschreibt
eine herkömmliche
Verpflichtung in zwei Phasen, wobei parallele Nachrichten von einem
Knoten mit einem Transaktionsprogramm zu seinen Kindknoten gesendet
werden. Eine Nachricht, die von einem Kindknoten zu einem älteren Knoten gesendet
wird, ist "zuverlässig", was bedeutet, dass dies
für sämtliche
Knoten unterhalb (Kind, Enkel, etc.) in dem Synchronisationspunkt-Baum
gilt. Ein Knoten antwortet, dass er zuverlässig ist, an sein Elternteil
nur dann, wenn sämtliche
Agenten des antwortenden Knotens angezeigt haben, dass sie "zuverlässig" sind. Anderenfalls
antwortet ein Knoten "Nicht
zuverlässig" zu seinem Elternknoten.
Wenn der betrachtete Knoten und sämtliche Kindknoten verfügbar sind,
kann die Transaktion an dem Knoten frei gegeben werden, ohne auf
Bestätigungen
einer Beendigung des Befehls der zweiten Phase durch die Kindknoten
zu warten.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
TECHNISCHE AUFGABEN
-
Wenn
der frühere
Standpunkt von Techniken betrachtet wird und mit einem Startpunkt
von einem Verfahren zum Ausführen
einer Transaktion, die eine Anzahl von Knoten innerhalb eines Systems
von Knoten beeinflusst, in welchen eine Information, die zu einer
verteilten Datenbank gehört,
gespeichert ist, wobei die Information in Tabellen aufgeteilt ist,
wobei die Transaktion von einem Transaktionskoordinator herrührt und
zumindest eine Gruppe von Teilen von zumindest einer ersten der
Tabellen beeinflusst, wobei die Gruppe zumindest einen ersten und
einen zweiten Teil und möglicherweise
einen oder mehrere weitere Teile einschließt, wobei der erste Teil innerhalb
eines ersten Knotens gespeichert ist, und der zweite Teil innerhalb
eines zweiten Knotens gespeichert ist, der getrennt von dem ersten
Knoten ist, und wobei mögliche
andere Teile innerhalb der Gruppe in Zwischenknoten gespeichert
sind, die durch weitere Knoten gebildet sind, die getrennt voneinander
und von dem ersten und dem zweiten Knoten sind, und wobei die Transaktion
aus einer Two-Safe-Transaktion
besteht, wird erkannt werden, dass ein Problem beim Ermöglichen
einer derartigen Transaktion darin liegt, dass sie schnell und zuverlässig durchgeführt wird,
betrachtet in Bezug auf eine verfügbare Prozessor- und Übertragungskapazität.
-
Eine
weitere technische Aufgabe besteht darin, in der Lage zu sein, eine
derartige Transaktion in im Wesentlichen zwei Phasen aufzuteilen,
wobei nur einige Nachrichten in Bezug auf eine "herkömmliche Verpflichtung
in zwei Phasen" gesendet
werden müssen,
und wobei eine schnellere Antwortzeit in Bezug auf eine "lineare Verpflichtung" erhalten wird.
-
Ein
weiteres technisches Problem besteht darin, in der Lage zu sein,
eine derartige Transaktion bereitzustellen, wenn die Transaktion
eine Mehrzahl von Gruppen beeinflusst, wobei jeweilige Gruppen zwei
oder mehrere Teile einschließen.
-
Ein
weiteres technisches Problem besteht darin, in der Lage zu sein,
ein Transaktionsprotokoll spezifisch einzusetzen, um ein einfaches
und effizientes Handhaben einer Transaktion bereitzustellen, die
eine Mehrzahl unterschiedlicher Fragmente beeinflusst, wobei jedes
Fragment sowohl eine Primärkopie
als auch eine oder mehrere Sicherungskopien, wie etwa eine Sekundärkopie und
eine Bereitschaftskopie, einschließt.
-
Ein
weiteres technisches Problem besteht darin, in der Lage zu sein,
ein Transaktionsprotokoll einzusetzen, um eine einfache Handhabung
zusammengebrochener Knoten während
einer Transaktion, und auch eines zusammengebrochenen Transaktionskoordinators
bereitzustellen, ohne dass das System in einen blockierten Zustand
fällt.
Ein weiteres technisches Problem besteht darin, eine Sperre auf eine
korrekte Weise und zur richtigen Zeit einzustellen und die Sperre
auf die korrekte Weise und zur richtigen Zeit in Verbindung mit
einer Transaktion aufzuheben, um so in der Lage zu sein, eine Transaktion in
nur zwei Phasen bereitzustellen, welche auch ein sicheres Handhaben
einer Transaktion bezüglich
jedweder Knoten leistet, die während
der Transaktion zusammenbrechen.
-
Ein
weiteres technisches Problem besteht darin, in der Lage zu sein,
ein Sekundärsystem
in Verbindung mit einer Transaktion zu aktualisieren, ohne dass
es erforderlich ist, weitere Phasen in die Transaktion einzuführen.
-
Ein
weiteres technisches Problem besteht darin, in der Lage zu sein,
es zu ermöglichen,
dass ein Sekundärsystem
in Bezug auf die Anwendung aktualisiert wird und eine Sperre, die
auf betroffene Fragmente angewandt ist, auf eine einfache und effektive
Weise freizugeben.
-
Ein
weiteres technisches Problem besteht darin, in der Lage zu sein,
es zu ermöglichen,
eine Aktualisierung eines Sekundärsystems
in Verbindung mit einer Transaktion auf unterschiedliche positive
Weisen in Abhängigkeit
von den Anforderungen zu bewirken, die bezüglich unterschiedlicher Transaktionen
an die Sicherheit gestellt werden.
-
Es
kann auch ersehen werden, dass ein technisches Problem darin besteht,
eine Möglichkeit zum
Auswählen
eines Transaktionskoordinators innerhalb des Sekundärsystems
auf eine einfache und effektive Weise bereitzustellen, was es auch
ermöglicht,
dass die Last an den Knoten des Sekundärsystems geregelt wird, wenn
die Transaktion-Koordination
verteilt wird.
-
LÖSUNG
-
Mit
der Absicht, eines oder mehrere der zuvor erwähnten technischen Probleme
zu lösen,
stellt die vorliegende Erfindung ein Verfahren zur Verwendung einer
Transaktion bereit, die eine Anzahl von Knoten innerhalb eines Systems
von Knoten beeinflusst, in welchen Information, die zu einer verteilten Datenbank
gehört,
in einer Tabellenform gespeichert ist.
-
Die
Transaktion rührt
von einem Transaktionskoordinator her und beeinflusst zumindest
eine Gruppe von Teilen von zumindest einer ersten der Tabellen,
wobei jeweilige Gruppen zumindest einen ersten Teil und einen zweiten
Teil und möglicherweise
einen und mehrere weitere Teile einschließen.
-
Der
erste Teil ist in einem ersten Knoten gespeichert, der zweite Teil
ist in einem zweiten Knoten gespeichert, der getrennt von dem ersten
Knoten ist, und mögliche
andere Tabellenteile in der Gruppe sind in Zwischenknoten gespeichert,
die weitere Knoten umfassen können,
die getrennt voneinander und von den ersten und den zweiten Knoten
sind.
-
Die
Transaktion besteht aus einer Two-Safe-Transaktion.
-
Mit
der Absicht, ein schnelles und zuverlässiges Verfahren zum Durchführen einer
derartigen Transaktion in Bezug auf verfügbare Prozessor- und Übertragungskapazität bereitzustellen,
wird in Übereinstimmung
mit der vorliegenden Erfindung vorgeschlagen, dass die Transaktion
mit einer ersten Phase eröffnet
wird, in welcher:
- – der Transaktionskoordinator
eine Nachricht "Vorbereiten" an den ersten Knoten
stellt, mit anderen Worten, eine Aufforderung zur Vorbereitung der
Transaktion,
- – wenn
der erste Knoten in der Lage ist, die Transaktion auszuführen, der
erste Knoten dann die Vorbereitungsaufforderung an den zweiten Knoten
entweder direkt oder über
einen oder mehrere Zwischenknoten sendet, oder
- – wenn
der erste Knoten nicht in der Lage ist, die Transaktion auszuführen, der
erste Knoten dann eine Nachricht "Nicht vorbereitet" an den zweiten Knoten entweder direkt
oder über
einen oder mehrere Zwischenknoten sendet,
- – wenn
der zweite Knoten in der Lage ist, die Transaktion auszuführen, der
zweite Knoten dann eine Nachricht "Vorbereitet", d. h. dass sämtliche betroffenen Knoten
vorbereitet sind, die Transaktion auszuführen, direkt an den Transaktionskoordinator
sendet, oder
- – wenn
der zweite Knoten nicht in der Lage ist, die Transaktion auszuführen, oder
wenn der zweite Knoten die Nachricht "Nicht vorbereitet" empfangen hat, der zweite Knoten dann
eine Nachricht "Nicht
vorbereitet" direkt
an den Transaktionskoordinator sendet,
was die erste Phase
abschließt.
-
Der
ersten Phase folgt eine zweite Phase, in welcher:
- – der Transaktionskoordinator
zu dem zweiten Knoten eine Nachricht sendet, die die zu treffenden
Maßnahmen
betrifft;
- – der
zweite Knoten dann zu dem ersten Knoten die Nachricht, die die zu
treffenden Maßnahmen betrifft,
entweder direkt oder über
einen oder mehrere Zwischenknoten sendet; und
- – der
erste Knoten dann eine Abschlussnachricht zu dem Transaktionskoordinator
sendet,
was die zweite Phase abschließt.
-
Die
Nachricht, die die zu treffenden Maßnahmen betrifft, ist eine
Verpflichtungs-Nachricht, d. h. die Maßnahmen gemäß der Transaktion auszuführen, und
die Abschlussnachricht ist "verpflichtet", d. h. die Maßnahmen
gemäß der Transaktion
werden ausgeführt,
wenn die erste Phase mit einer Nachricht "vorbereitet" abgeschlossen ist.
-
Andererseits
ist, wenn die erste Phase mit einer Nachricht "nicht vorbereitet" abgeschlossen ist, die Nachricht, die
die zu treffenden Maßnahmen
betrifft, eine "Abbrechen"-Nachricht, d. h.
die Transaktion wird abgebrochen, und die Abschlussnachricht wird
dann "Abgebrochen", d. h. die Transaktion
wird abgebrochen.
-
Dies
ist eine einfache Beschreibung der Weise, auf welche eine Gruppe
gehandhabt wird. Jedoch wird die Transaktion oft weitere Gruppen
anderer Tabellenteile beeinflussen, wo jeweilige Gruppen Teile einschließen, die
zu der ersten Tabelle und/oder Teilen, die zu anderen Tabellen in
der Datenbank gehören,
und die getrennt von der ersten Tabelle sind, gehören.
-
Diese
Teile werden in jeweiligen ersten und zweiten Knoten und möglicherweise
in einem oder mehreren Zwischenknoten gespeichert, die getrennt voneinander
innerhalb jeweiliger Gruppen von Teilen sind.
-
In
diesem Fall wird in Übereinstimmung
mit der vorliegenden Erfindung vorgeschlagen, dass die erste Phase
eröffnet
wird, wobei der Transaktionskoordinator jeweilige erste Knoten auffordert,
sich vorzubereiten, und abgeschlossen wird mit einer Nachricht "Vorbereitet" oder "Nicht vorbereitet" von jeweiligen zweiten
Knoten zu dem Transaktionskoordinator.
-
Die
zweite Phase wird mit der Nachricht eröffnet, die von dem Transaktionskoordinator
zu jeweiligen zweiten Knoten hinsichtlich der auszuführenden
Maßnahmen
gesendet wird, und wird mit der Abschlussnachricht von jeweiligen
ersten Knoten zu dem Transaktionskoordinator beendet.
-
In
diesem Fall ist die Nachricht eine "Verpflichtungs"-Nachricht,
und die Abschlussnachricht ist eine "Verpflichtet"-Nachricht, wenn die erste Phase mit
einer "Vorbereitet"-Nachricht von sämtlichen zweiten
Knoten abgeschlossen ist.
-
Die
Nachricht, die die auszuführenden
Maßnahmen
betrifft, ist eine "Abbrechen"-Nachricht, und die
Abschlussnachricht wird "Abgebrochen", wenn die erste
Phase mit einer Nachricht "Nicht
vorbereitet" von
irgendeinem zweiten Knoten abgeschlossen wird.
-
Somit
ist, wenn eine Transaktion mehrere Knoten beeinflusst, die Erfindung
im Wesentlichen auf ein Teilen dieser Knoten in Gruppen basiert,
und die Nachrichten werden seriell innerhalb jeweiliger Gruppen
und parallel zu jeweiligen Gruppen von dem Transaktionskoordinator
gesendet.
-
Die
erste Phase wird mit einer Nachricht von dem Transaktionskoordinator
an den ersten Knoten in jeweiligen Gruppen eröffnet und wird mit einer Nachricht
abgeschlossen, die von dem letzten Knoten in jeweiligen Gruppen
direkt zu dem Transaktionskoordinator gesendet wird.
-
Die
zweite Phase wird mit eine Nachricht von dem Transaktionskoordinator
zu dem letzten Knoten in jeweiligen Gruppen eröffnet, und wird mit einer Nachricht
abgeschlossen, die von dem ersten Knoten in jeweiligen Gruppen direkt
zu dem Transaktionskoordinator gesendet wird.
-
Die
vorliegende Erfindung ist insbesondere zweckmäßig, wenn dem ersten Teil eine
höhere
Priorität
als dem zweiten oder anderen Teilen in jeweiligen Gruppen zugeordnet
ist, und wenn jeweilige Gruppen einen oder mehrere weitere Teile
einschließen,
die in oder den Zwischengruppen gespeichert sind.
-
In
diesem Fall wird die Nachricht in der ersten Phase seriell von dem
ersten Knoten zu dem oder den Zwischenknoten und von dort zu dem
zweiten Knoten gesendet, und die Nachricht in der zweiten Phase
wird seriell von dem zweiten Knoten zu dem oder den Zwischenknoten
und von dort zu dem ersten Knoten gesendet.
-
Eine
besondere Anwendung wird erhalten, wenn jeweilige Gruppen ein Datenbasis-Fragment ausbilden,
das den ersten Teil, den zweiten Teil und einen weiteren Teil, der
in einem dritten Knoten gespeichert ist, einschließt, und
wobei die höhere
Priorität
in dem ersten Teil besteht, der eine Primärkopie eines Teils einer Tabelle
umfasst, und der weitere Teil eine Sekundär- oder Sicherungskopie der
Primärkopie
umfasst, und der zweite Teil eine Bereitschaftskopie der Primärkopie umfasst.
-
Die
vorliegende Erfindung stellt auch eine sichere Weise zum Ausführen von
Transaktionen bereit, so sämtliche
Kopien innerhalb eines Fragments aktualisiert werden, und wo ein
Zusammenbruch sämtlicher
Kopien in einem Fragment nicht notwendigerweise zu einer Blockierung
des Systems führen muss.
Dies wird durch ein Anwenden einer Sperre bezüglich jeweiliger Kopien, die
zu einem Fragment gehören,
in Verbindung mit einem Ausführen
einer Transaktion und einem Freigeben der Sperre von jeweiligen
Kopien erreicht, wobei die Vorbereitung des ersten Knotens ein Anwenden
einer Sperre auf sämtliche
Kopien, die zu dem Fragment in der ersten Phase gehören, mit
sich bringt.
-
In Übereinstimmung
mit einer Ausführungsform
der Erfindung wird die Sperre, die auf jeweilige Kopien durch den
ersten Knoten angewandt wird, nicht freigegeben, bis der erste Knoten
die Nachricht, die die auszuführenden
Maßnahmen
betrifft, empfangen und die Abschlussnachricht gesendet hat.
-
Diese
Sperre wird in Übereinstimmung
mit einem bestimmten geeigneten Verfahren angewandt werden, derart,
dass nur jene Teile jeweilige Kopien, die durch die Transaktion
beeinflusst werden, anderen Transaktionen verfügbar gemacht werden, während andere
Teile für
derartige andere Transaktionen verfügbar bleiben.
-
Sollte
einer der Knoten innerhalb eines Fragments, das durch den Transaktionszusammenbruch beeinflusst
werden, während
die Transaktion ausgeführt
wird, wird in Übereinstimmung
mit der vorliegenden Erfindung vorgeschlagen, dass
- – der
Transaktionskoordinator sämtliche
laufenden Nachrichtenübertragungen überprüft,
- – die
Phase der Transaktion, die angehalten worden ist, von dem Beginn
neu gestartet wird,
- – die
Nachrichten in Übereinstimmung
mit dieser Phase gesendet werden, wobei aber der zusammengebrochene
Knoten aus der Nachrichtenkette ausgeschlossen wird, und dass
- – ein
Knoten, der eine zuvor empfangene Nachricht empfängt, die Nachricht ignoriert
und selbige weiterschickt.
-
Andererseits
wird, wenn der zusammengebrochene Knoten aus einem ersten Knoten
innerhalb eines Fragments besteht, das durch die Transaktion beeinflusst
wird, und wenn der Zusammenbruch während der Vorbereitungsphase
der Transaktion auftritt, die Transaktion abgebrochen.
-
Es
wird in Übereinstimmung
mit der vorliegenden Erfindung ferner vorgeschlagen, dass dann, wenn
der Transaktionskoordinator während
einer Transaktion zusammenbricht, ein Systemkoordinator eingesetzt
wird, um den Zusammenbruch irgendeines Knotens in dem System zu
erfassen, und dass
- – der Systemkoordinator eine
allgemeine Abfrage an sämtliche
Knoten in dem System sendet, wobei abgefragt wird, ob irgendein
Knoten an einer Transaktion teilnimmt, in welcher der zusammengebrochene
Knoten der Transaktionskoordinator ist,
- – einem
neuen Knoten die Rolle des Transaktionskoordinators zugewiesen wird,
- – sämtliche
Knoten in jeweiligen Fragmenten, die von der Transaktion beeinflusst
werden, einen Statusbericht erstellen, der zu dem neuen Transaktionskoordinator
gesendet wird und der eine Knotenidentität, eine Fragmentidentität, einen Transaktionsstatus,
und, ob der Knoten eine Primär-,
Sekundär-
oder Bereitschaftskopie ist, in jeweiligen Fragmenten einschließt, und
dass
- – der
neue Transaktionskoordinator auf der Grundlage der Statusberichte
bestimmt, ob die Transaktion fortgesetzt oder abgebrochen werden soll.
-
Das
zuvor benannte Verfahren kann auch eingesetzt werden, wenn jeweilige
Gruppen nur einen ersten und einen zweiten Teil einschließen, wobei
die höhere
Priorität
in dem ersten Teil, der eine Primärkopie eines Teils einer Tabelle
ausbildet, besteht, und der zweite Teil eine Sekundärkopie der
Primärkopie
umfasst.
-
Wenn
eine Sekundärkopie
des Gesamtsystems verwendet wird, d. h. sowohl eines Primär- als auch
eines Sekundärsystems,
mit der Absicht, es einem derartigen Sekundärsystem zu ermöglichen,
in Verbindung mit einer Transaktion aktualisiert zu werden, wird
in Übereinstimmung
mit der Erfindung vorgeschlagen, dass das Aktualisieren des Sekundarsystems
vor einer Freigabe der Sperre bezüglich jeweiliger Kopien angefordert
wird.
-
Das
Aktualisieren des Sekundärsystems kann
in einem Schritt bewirkt werden, und kann auch durch eine One-Safe-Übertragung
oder eine begrenzte Two-Safe-Übertragung
erreicht werden.
-
Das
Verfahren, das gewählt
wird, wird von dem Sicherheitspegel abhängen, der von jeder Transaktion
gefordert wird. Es wird in Übereinstimmung
mit der Erfindung vorgeschlagen, dass diese Eigenschaften, die die
Transaktion steuern, anzeigen, ob das Aktualisieren des Sekundärsystems durch
eine One-Safe-Übertragung
oder eine begrenzte Two-Safe-Übertragung
bewirkt werden soll.
-
Wenn
die Aktualisierung durch eine One-Safe-Übertragung bewirkt wird, senden
jeweilige erste Knoten, die durch die Transaktion beeinflusst werden,
eine Nachricht zu entsprechenden Knoten in dem Sekundärsystem,
wobei diese Knoten über
die Maßnahme
informiert werden, die ausgeführt
werden sollen, d. h. eine "Verpflichtungs"-Nachricht. Die Transaktion
dauert dann an, ohne auf eine Antwort von den beeinflussten Knoten
in dem Sekundärsystem
zu warten, besagend, ob die Maßnahmen ausgeführt werden
können
oder nicht.
-
Wenn
das Sekundärsystem über eine
begrenzte Two-Safe-Übertragung
aktualisiert wird, senden jeweilige erste Knoten, die durch die
Transaktion beeinflusst sind, zu den entsprechenden Knoten in dem
Sekundärsystem
eine Nachricht, die die Knoten von den auszuführenden Maßnahmen informiert, d. h. eine "Verpflichtungs"-Nachricht, und es
wartet auf eine Antwort von den beeinflussten Knoten innerhalb des
Sekundärsystems
als Teil der Transaktion, wobei die Nachricht mit einer "Verpflichtet"-Nachricht, die den
ersten Knoten anzeigt, dass die Maßnahmen ausgeführt werden,
und dass das System somit in Übereinstimmung
mit der Transaktion aktualisiert werden wird, oder mit einer "Abbrechen"-Nachricht, die dem ersten Knoten anzeigt,
dass die Maßnahmen nicht
ausgeführt
werden, und dass das Sekundärsystem
deswegen in Übereinstimmung
mit der Transaktion nicht aktualisiert werden wird, beantwortet
wird.
-
Die
Begrenzung in der Two-Safe-Übertragung
besteht darin, dass Knoten in dem Sekundärsystem nicht in der Lage sind
anzufordern, dass die Transaktion abgebrochen wird.
-
Es
wird in Übereinstimmung
mit der Erfindung auch vorgeschlagen, dass eine Anzeige, dass das
Sekundärsystem
nicht in Übereinstimmung
mit der Transaktion aktualisiert werden wird, das Sekundärsystem
dazu veranlasst werden wird, erneut gestartet zu werden, um so eine
Kopie des Systems korrekt auszubilden.
-
Mit
der Absicht eines Einrichtens eines Transaktionskoordinators, der
einfach und effektiv in dem Sekundärsystem zu wählen ist,
wenn das Sekundärsystem
in Verbindung mit einer Transaktion aktualisiert wird, wird in Übereinstimmung
mit der Erfindung vorgeschlagen, dass die Wahl des Transaktionskoordinators
innerhalb des Sekundärsystems durch
den Transaktionskoordinator in dem Primärsystem ermöglicht wird, indem ein logischer
Transaktionskoordinator aus einer Abbildungstabelle gewählt wird,
die mögliche
logische Transaktionskoordinatoren innerhalb des Sekundärsystems
abdeckt.
-
Jeweilige
logische Transaktionskoordinatoren in der Abbildungstabelle können auf
einen physikalischen Knoten abgebildet werden, der in dem Sekundärsystem
arbeitet.
-
Ein
Systemkoordinator in dem Sekundärsystem
stellt sicher, dass sämtliche
Positionen in der Abbildungstabelle besetzt sind, und dass diese
Knoten verfügbar
sind, um als ein Transaktionskoordinator zu wirken.
-
Mit
der Absicht, dass die Last auf den Knoten in dem Sekundärsystem
in gewissem Maß geregelt werden
kann, wird in Übereinstimmung
mit der Erfindung vorgeschlagen, dass dann, wenn bestimmte Knoten
schwer belastet sind, der Systemkoordinator innerhalb des Sekundärsystems
in der Lage sein wird sicherzustellen, dass diese schwer belasteten
Knoten in der Abbildungstabelle nicht vorhanden sind.
-
VORTEILE
-
Diese
Vorteile, die primär
eine Eigenschaft eines erfinderischen Verfahrens sind, beruhen auf der
Möglichkeit
eines Ausführens
von Transaktionen in einer verteilten Datenbank mit einer größeren Zuverlässigkeit
und mit einer höheren
Geschwindigkeit, als dies bisher möglich gewesen ist.
-
Dies
ermöglicht
vermöge
der Tatsache, dass eine Transaktion, die in Übereinstimmung mit der vorliegenden
Erfindung durchgeführt
wird, zu kürzeren
Antwortzeiten in dem Fall von Transaktionen führt, die eine Mehrzahl von
Fragmenten beeinflusst, als es mittels einer "Linearen Verpflichtung (linear commit)" möglich ist,
welche das übliche
Transaktionsprotokoll in dem Fall der verteilten Transaktionen ist,
die eine Mehrzahl von Fragmenten mit zugeordneten Kopien beeinflussen.
-
Die
Erfindung stellt auch ein nicht-blockierendes System und kürzere Verzögerungszeiten
bereit, wenn einer oder mehrere Knoten während einer Transaktion zusammenbrechen.
-
Die
vorliegende Erfindung stellt auch die Möglichkeit eines Aktualisierens
eines Sekundärsystems
bereit, ohne dass es die Hinzufügung
weiterer Phasen bei der Transaktion zum Ausführen eines derartigen Aktualisierens
zu erfordern.
-
Die
primären
charakteristischen Merkmale eines erfinderischen Verfahrens sind
in dem kennzeichnenden Teil des folgenden Anspruchs 1 offenbart.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Früher bekannte
Verfahren und ein Verfahren gemäß der vorliegenden
Erfindung werden nun detaillierter unter Bezugnahme auf die zugehörigen Zeichnungen
beschrieben werden. In den Zeichnungen zeigen:
-
1 eine
in hohem Maße
vereinfachte schematische Veranschaulichung eines Teils eines Systems
von Knoten und ihre wechselseitigen Beziehungen;
-
2 eine
schematische Veranschaulichung, wie eine lineare Verpflichtung in Übereinstimmung
mit bekannter Technologie ausgeführt
werden kann;
-
3 eine
schematische Veranschaulichung einer wechselseitigen Beziehung zwischen unterschiedlichen
Knoten, die durch eine "TPC-B"-Transaktion beeinflusst werden, wobei
die Transaktion vier Gruppen mit drei Teilnehmern in jeder Gruppe
beeinflusst;
-
4 schematisch,
wie eine TPC-B-Transaktion durch eine herkömmliche Verpflichtung in zwei Phasen
ausgeführt
wird;
-
5 schematisch,
wie eine TPC-B-Transaktion durch eine lineare Verpflichtung ausgeführt wird;
-
6 eine
vereinfachte und schematische Veranschaulichung, wie ein Teil einer
Transaktion in Übereinstimmung
mit der Erfindung ausgeführt
wird;
-
7 schematisch,
wie eine TPC-B-Transaktion in Übereinstimmung
mit der Erfindung ausgeführt
wird;
-
8 schematisch
ein Handhaben eines zusammengebrochenen Knotens;
-
9 schematisch
ein Handhaben eines zusammengebrochenen Transaktionskoordinators;
-
10 eine
schematische Veranschaulichung eines Beispiels von Gruppen, wobei
jede Gruppe nur zwei Teilnehmer einschließt;
-
11 schematisch
ein erstes Beispiel, wie ein Sekundärsystem in Übereinstimmung mit der vorliegenden
Erfindung aktualisiert werden kann;
-
12 schematisch
ein zweites Beispiel, wie ein Sekundärsystem in Übereinstimmung mit der vorliegenden
Erfindung aktualisiert werden kann; und
-
13 eine
schematische Veranschaulichung, wie eine Abbildungstabelle bei der
Auswahl eines Transaktionskoordinators innerhalb eines Sekundärsystems
arbeitet, wenn das Sekundärsystem aktualisiert
wird.
-
BESCHREIBUNG BEKANNTER VERFAHREN, DIE TRANSAKTIONEN
IN VERTEILTEN DATENBANKEN BETREFFEN
-
Mit
der Absicht, dass die vorliegende Erfindung einfacher verstanden
wird, während
gleichzeitig die Vorteile offenbart werden, die durch die vorliegende
Erfindung erreicht werden, wird die bekannte Technologie etwas detaillierter
beschrieben werden.
-
Zunächst wird
die "herkömmliche
Verpflichtung in zwei Phasen" beschrieben
werden, wobei dies ein alt bekanntes Verfahren zum Ausführen von verteilten
Transaktionen ist. Trotz seiner Kennzeichnung schließt dieses
Verfahren drei Phasen ein, von welchen zwei die tatsächliche
Transaktion beeinflussen. Diese drei Phasen sind:
- – Aktualisieren
der Transaktion
- – Vorbereitung
und Verpflichtung
- – Ausführen der
Maßnahmen,
wenn sich sämtliche
Teilnehmer verpflichtet haben, anderenfalls wird keine Maßnahme ausgeführt.
-
Die
erste Phase ist eine Eröffnungsphase, bei
welcher ein Transaktionskoordinator die Transaktion durch unterschiedliche
Aktualisierungen vorbereitet. In der zweiten Phase sendet der Transaktionskoordinator
eine Nachricht "Vorbereiten", die eine Aufforderung
an sämtliche
Teilnehmer ist, sich auf eine gegebene Maßnahme vorzubereiten, und jeweilige
Teilnehmer bereiten sich selbst vor, die vorzunehmende Maßnahme auszuführen. Jeweilige
Teilnehmer antworten mit der Nachricht "Vorbereitet", wenn sie in der Lage sind, sich zu
verpflichten, die Maßnahme
auszuführen,
oder die Nachricht "Nicht vorbereitet", wenn sie nicht
in der Lage sind, die betreffende Maßnahme auszuführen.
-
In
entweder der Eröffnungsphase
oder der Vorbereitungsphase wird eine Sperre auf jenen Teil der
Datenbank angewandt, die durch die Transaktion beeinflusst wird,
so dass jedwede andere Transaktionen, die den gleichen Teil der
Datenbank betreffen können,
warten müssen,
bis die laufende Transaktion abgeschlossen worden ist. Dies wird
durchgeführt, um
zu verhindern, dass die Bedingungen für eine Verpflichtung während der
tatsächlichen
Transaktion geändert
werden.
-
Eine
derartige Sperre kann auf unterschiedliche Weisen eingerichtet werden
und wird somit alles von einem Sperren eines Gesamtknotens bis zu
einem Sperren von nur jenem Teil der Datenbank, die durch die Transaktion
beeinflusst wird, einschließen. Die
vorliegende Erfindung ist nicht abhängig von dem Typ der verwendeten
Sperre, und folglich wird die Sperre in jedwedem weiteren Detail
in diesem Dokument nicht beschrieben werden.
-
Phase
Drei des Verfahrens wird dann eröffnet.
In dieser Phase empfängt
der Transaktionskoordinator die "Vorbereitet"-Nachricht von sämtlichen teilnehmenden Knoten,
und der Transaktionskoordinator sendet eine Verpflichtungs-Nachricht,
die ein Auftrag ist, die Maßnahmen
auszuführen.
Anderenfalls, wenn der Transaktionskoordinator eine Nicht-Vorbereitet-Nachricht von irgendeinem
teilnehmenden Knoten empfängt,
sendet der Transaktionskoordinator eine "Abbrechen"-Nachricht,
die ein Auftrag ist, nicht irgendeine Maßnahme auszuführen.
-
Die
Phasen Eins und Zwei können
als eine gemeinsame Phase ausgeführt
werden, wobei eine Vorbereitung auch ein Aktualisieren vor der Transaktion
einschließt.
-
Somit
erfordert eine herkömmliche
Verpflichtung in zwei Phasen zwischen zwei Knoten die Übertragung
von zumindest vier Nachrichten zwischen dem Transaktionskoordinator
und jeweiligen Teilnehmern. In dem folgenden Beispiel ist ein Knoten
1 der Transaktionskoordinator, und ein Knoten 2 ist ein Teilnehmer.
Die vier Nachrichten sind:
- 1: "Vorbereiten" von Knoten 1 zu
Knoten 2,
- 2: "Vorbereitet" oder "Nicht vorbereitet" von Knoten 2 zu
Knoten 1,
- 3: "Verpflichten" oder "Abbrechen" von Knoten 1 zu
Knoten 2, und
- 4: "Verpflichtet" oder "Abgebrochen" von Knoten 2 zu
Knoten 1.
-
In
einem System können
mehrere Knoten durch eine Transaktion beeinflusst werden. Beispielsweise
kann eine Hierarchie von Knoten vorhanden sein, wobei sich ein Transaktionskoordinator nicht
notwendigerweise bewusst über
irgendwelche weiteren Knoten sein muss, die weiter unten in der Hierarchie
als jene Knoten angeordnet sind, mit welchen der Transaktionskoordinator
direkt verbunden ist, und die durch die Transaktion beeinflusst
werden.
-
1 zeigt
ein Beispiel einer derartigen Hierarchie, wobei ein Transaktionskoordinator 1 eine Transaktion
beginnt, welche Teilnehmer 1a und 1b beeinflusst.
-
1 zeigt
auch, dass der Teilnehmer 1b einen Koordinator für Teilnehmer 1c und 1d ausbildet, ohne
dass sich der Transaktionskoordinator darüber bewusst sein muss.
-
Eine
Kommunikation zwischen dem Transaktionskoordinator 1 und
dem Teilnehmer 1a bzw. dem Teilnehmer 1b kann
gleichzeitig stattfinden, was bedeutet, dass, obwohl die Transaktion
von dem Transaktionskoordinator zu einer Anzahl von Teilnehmern
stattfindet, diese nicht notwendigerweise eine längere Zeit benötigt, um
die Übertragung
zu bewirken, da die vier Nachrichten zu und von den verschiedenen
Teilnehmern gleichzeitig gesendet werden.
-
Mit "gleichzeitig" ist nicht notwendigerweise eine
absolute Gleichzeitigkeit gemeint, da die Übertragungskapazität zwischen
unterschiedlichen Knoten die Prozessorkapazität innerhalb unterschiedlicher
Knoten und die Antwortzeiten von unterschiedlichen Knoten variieren
können.
Beispielsweise kann die Antwortzeit von 1a kürzer sein
als die Antwortzeit von 1b, da 1b bestimmte Betriebsschritte
mit 1c und 1d ausführen muss, bevor er dem Transaktionskoordinator 1 antworten
kann.
-
Somit
gibt eine herkömmliche
Verpflichtung in zwei Phasen relativ kurze Antwortzeiten, erfordert aber
normalerweise die Übertragung
von mehr Nachrichten als bei anderen Verfahren.
-
Es
ist auch möglich,
die Koordinatorenschaft zu verschieben, womit es ermöglicht wird,
die Verpflichtung in zwei Phasen zu optimieren. Dieser Typ einer
Optimierung ist in den Datenbanken von Telekommunikationssystemen üblich. Eine
derartige Optimierung ist auch in Situationen zweckmäßig, wo
ein Benutzer nicht gleichermaßen
zuverlässig
ist wie ein Server. Beispielsweise ist es nicht zweckmäßig, dass ein
Heimcomputerbenutzer ein Transaktionskoordinator in einer Telekommunikations-Datenbank
ist.
-
Ein
Beispiel einer Verschiebung einer Koordinatorenschaft ist eine sogenannte "Lineare Verpflichtung", die eine Optimierung
einer herkömmlichen
Verpflichtung in zwei Phasen ist, wobei die Anzahl von Nachrichten,
die erforderlich sind, in dem Fall reduziert ist, wenn eine Mehrzahl
von Knoten durch eine Transaktion beeinflusst werden.
-
2 zielt
darauf ab zu veranschaulichen, wie eine Anzahl von Knoten gemäß 1 über eine lineare
Verpflichtung zusammenwirken.
-
Diese
Figur zeigt, dass die Koordinatorenschaft in jedem Schritt verschoben
wird. Die Pfeile zeigen den Vorbereitungs- und Verpflichtungsteil in Phase 2 einer
Transaktion. Der Transaktionskoordinator fordert einen Teilnehmer 1a (1)
auf sich vorzubereiten, und schickt die Koordinatorenschaft weiter. Der
Teilnehmer 1a fordert den Teilnehmer 1b (2) auf sich
vorzubereiten, wenn der Teilnehmer 1a in der Lage ist sich
zu verpflichten, die Transaktion auszuführen, und schickt die Koordinatorenschaft
weiter. Der Teilnehmer 1b fordert den Teilnehmer 1c (3)
auf sich vorzubereiten, wenn der Teilnehmer 1b in der Lage
ist sich zu verpflichten, die Transaktion auszuführen, und schickt die Koordinatorenschaft
weiter. Der Teilnehmer 1c fordert den Teilnehmer 1d (4)
auf sich vorzubereiten, wenn der Teilnehmer 1c in der Lage
ist sich zu verpflichten, die Transaktion auszuführen.
-
Der
Teilnehmer 1d sieht, dass er der letzte in der Kette ist,
und da die Vorbereitungs-Anforderung ihn erreicht hat, weiß er, dass
sämtliche
vorangehenden Knoten sich verpflichtet haben, die Transaktion auszuführen. Der
Teilnehmer 1d weist die Koordinatorenschaft auf und kann
somit Anordnungen "Verpflichtung" (5) zu dem Teilnehmer 1c senden,
wenn der Teilnehmer 4 selbst die Verpflichtung ausführen kann.
Wenn der Teilnehmer 1c den "Verpflichtungs"-Befehl von dem Teilnehmer 1d empfängt, antwortet
der Teilnehmer 1c dem Teilnehmer 1d (6) mit einem "Verpflichtungs"-Befehl, usw. bis
hinauf zu dem Teilnehmer 1a (7), der dann in der Lage ist,
die Nachricht "Verpflichtet" (8) zu dem Transaktionskoordinator 1 zu
senden.
-
Der
Transaktionskoordinator 1 wird nur die "Verpflichtet"-Nachricht
von dem Teilnehmer 1a empfangen, wenn sämtliche vorangehenden Teilnehmer 1b, 1c, 1d sich
verpflichtet haben, die Transaktion auszuführen. Wenn irgendeiner der
Teilnehmer, beispielsweise der Teilnehmer 1c sich selbst
als "Nicht vorbereitet" erklärt, wird
die Transaktion abgebrochen.
-
Eine
lineare Verpflichtung erfordert nur zwei Nachrichten zwischen teilnehmenden
Knoten, obwohl die Antwortzeiten relativ lang sind, da alles seriell
stattfindet. Dies ist insbesondere dann der Fall, wenn eine große Anzahl
von teilnehmenden Knoten betroffen ist.
-
Ein übliches
Testverfahren zum Überprüfen des
Betriebsverhaltens, wenn Transaktionen in einer verteilten Datenbank
ausgeführt
werden, besteht darin, eine sogenannte TPC-B-Transaktion auszuführen. Die
Teilnehmer bei einer derartigen Transaktion sind schematisch in 3 gezeigt.
-
Eine
TPC-B-Transaktion schließt
ein Aktualisieren von vier unterschiedlichen Tabellen in der Datenbank
ein.
-
Eine
Tabelle kann in eine Anzahl unterschiedlicher Gruppen aufgeteilt
werden, die jeweils unterschiedliche Teile der Tabellen einschließen, die von
der Transaktion beeinflusst werden. Diese Tabellenteile sind physikalisch
in unterschiedlichen Knoten in dem System platziert. Somit erfordert
ein Aktualisieren einer Tabelle ein Aktualisieren der gesamten Gruppe,
d. h. sämtlicher
beeinflusster Teile.
-
Bei
einer TPC-B-Transaktion, wo vier unterschiedliche Tabellen aktualisiert
werden sollen, müssen
sämtliche
Teile, die zu jeweiligen Gruppen gehören, aktualisiert werden.
-
3 zeigt
einen Transaktionskoordinator 1 und vier Gruppen g1, g2,
g3 und g4, die jeweils drei unterschiedliche Teile einschießen, die
in einem jeweiligen Knoten platziert sind. Die erste Gruppe g1 ist somit
bei drei Teilnehmern d1, d2, d3 platziert, die zweite Gruppe g2
bei drei Teilnehmern, und so weiter.
-
Wie
aus 4 zu ersehen ist, erfordert die Verwendung einer
herkömmlichen
Verpflichtung in zwei Phasen die Übertragung von vier Nachrichten zwischen
dem Transaktionskoordinator 1 und dem jeweiligen Teilnehmer,
wobei jeweilige Teile in zwei Richtungen diese vier Nachrichten
darstellen, was zu einer Anzahl von 4·g·d Nachrichten führt, wobei
g die Anzahl von Gruppen und d die Anzahl von Teilnehmern in jeweiligen
Gruppen ist. In dem Fall einer TPC-B-Transaktion gemäß 3 führt dies
zu 48 Nachrichten, obwohl zwölf
Nachrichten jeweils gleichzeitig gesendet werden können.
-
Wie
aus 5 zu ersehen ist, sendet, wenn eine lineare Verpflichtung
in der gleichen Konfiguration von Gruppen und Knoten verwendet wird,
der Transaktionskoordinator 1 eine Nachricht zu einem ersten
Teilnehmer d1. Die Koordinatorenschaft wird zu dem Teilnehmer d1
verschoben, der die Nachricht und die Koordinatorenschaft seriell
zu dem letzten Teilnehmer weiterschickt, wie veranschaulicht, wobei dieser
letzte Teilnehmer der Teilnehmer d1''' in der vierten Gruppe
g4 ist. Dieser Teilnehmer ist der letzte Teilnehmer in der Kette,
und die "Verpflichtungs"-Nachricht oder die "Abbrechen"-Nachricht wird,
in Abhängigkeit
davon, was früher
geschehen ist, über
die Kette zurück
zu dem Transaktionskoordinator 1 gesendet. Dies erfordert
2·g·d-Nachrichten, was
in dem in 3 veranschaulichten Fall zu
24 Nachrichten jeweils seriell eine nach der anderen führt.
-
BESCHREIBUNG DER VORGESCHLAGENEN AUSFÜHRUNGSFORMEN
-
6 veranschaulicht
ein Verfahren zum Ausführen
einer Transaktion, die eine Anzahl von Knoten in einem System von
Knoten beeinflusst, in welchen Informationen, die zu einer verteilten
Datenbank gehört,
gespeichert ist, wobei diese Information in Tabellen aufgeteilt
ist.
-
Eine
Transaktion rührt
von einem Transaktionskoordinator 1 her und beeinflusst
zumindest eine Gruppe g1 von Teilen von zumindest einer ersten Tabelle
der Anzahl von Tabellen.
-
Diese
Gruppe g1 schließt
zumindest einen ersten Teil und einen zweiten Teil und möglicherweise
einen oder mehrere weitere Teile ein.
-
Der
erste Teil ist in einem ersten Knoten n1 gespeichert, während der
zweite Teil in einem zweiten Knoten n2 gespeichert ist, der getrennt
von dem ersten Knoten n1 ist. Mögliche
andere Teile in der Gruppe sind in Zwischenknoten gespeichert, die
aus weiteren Knoten bestehen, die getrennt voneinander und von dem
ersten und dem zweiten Knoten sind.
-
Die
Erfindung ist auf der Transaktion basiert, die eine Two-Safe-Transaktion
ist.
-
Der
Nachrichtenweg zwischen dem Transaktionskoordinator 1 und
einer Gruppe g1 wird zunächst
beschrieben werden. 6 zeigt, dass die Transaktion
mit einer ersten Phase eröffnet
wird, bei welcher:
- – der Transaktionskoordinator 1 eine "Vorbereitungs"-Nachricht "a" sendet,
d. h. eine Transaktions-Vorbereitungs-Anforderung
zu dem ersten Knoten n1 sendet;
- – wenn
der erste Knoten sich verpflichten kann, die Transaktion auszuführen, sendet
der erste Knoten n1 eine Vorbereitungsaufforderung "b" zu dem zweiten Knoten n2 entweder direkt
oder über einen
oder mehrere Zwischenknoten, oder
- – wenn
der erste Knoten nicht in der Lage ist, sich selbst zu verpflichten,
die Transaktion auszuführen,
sendet der erste Knoten n1 eine "Nicht
vorbereitet"-Nachricht "b" zu dem zweiten Knoten n2 entweder direkt
oder über
einen oder mehrere Zwischenknoten;
- – wenn
der zweite Knoten in der Lage ist, eine Verpflichtung der Transaktion
zu übernehmen, sendet
der zweite Knoten n2 eine "Vorbereitet"-Nachricht "c", d. h. sämtliche beeinflussten Knoten
innerhalb der Gruppe sind vorbereitet, die Transaktion auszuführen, direkt
zu dem Transaktionskoordinator 1, oder wenn der zweite
Knoten nicht in der Lage ist, sich selbst zu verpflichten, die Transaktion
auszuführen,
oder wenn der zweite Knoten eine "Nicht vorbereitet"-Nachricht empfangen hat, sendet der
zweite Knoten eine "Nicht vorbereitet"-Nachricht "c" direkt zu dem Transaktionskoordinator 1,
was
die erste Phase abschließt.
-
Mit
direkt ist gemeint, dass die Nachricht mit einer direkten Adresse
zu einem Empfangsknoten gesendet wird. Jedoch verhindert dies nicht,
dass die Nachricht über
einen Knoten gesendet wird, der nicht an der Transaktion teilnimmt,
sondern die Nachricht in Übereinstimmung
mit der Nachrichtenadresse lediglich weiterschickt. Mit indirekt
ist gemeint, dass die Nachricht über
eine oder mehrere Knoten gesendet wird, die selbst Teilnehmer in
der Transaktion sind.
-
Vermöge eines
Beispiels einer indirekt gesendeten Nachricht zeigt 6,
dass der erste Knoten die Nachricht "b'" zu einem dritten
Knoten n3 sendet, der auch an der Transaktion teilnimmt, und der, wenn
der dritte Knoten n3 in der Lage ist, sich selbst zu verpflichten,
die Transaktion auszuführen,
die Nachricht "b''",
d. h. die Vorbereitungsaufforderung, zu dem zweiten Knoten n2 sendet.
-
Auf
die erste Phase folgt eine zweite Phase, bei welcher:
- – der
Transaktionskoordinator 1 eine Nachricht "d", die eine auszuführende Maßnahme betrifft, direkt zu
dem zweiten Knoten n2 sendet;
- – der
zweite Knoten n2 die Nachricht "e", die vorzunehmende
Maßnahmen
betrifft, zu dem ersten Knoten n1 entweder direkt oder über einen
oder mehrere Zwischenknoten sendet; und bei welcher
- – der
erste Knoten n1 dann eine Abschlussnachricht "f" zu
dem Transaktionskoordinator 1 sendet,
was die
zweite Phase abschließt.
-
Die
Nachricht "d", "e" ist eine "Verpflichtungs"-Nachricht, d. h. eine Nachricht, die
eine Verpflichtung festlegt, die Maßnahmen in Übereinstimmung mit der Transaktion
auszuführen,
und die Abschlussnachricht "f" ist "Eine Verpflichtet"-Nachricht, womit gemeint ist, dass die
Maßnahmen
gemäß der Transaktion
verpflichtet sind, vorausgesetzt, dass die erste Phase mit einer "Vorbereitet"-Nachricht "c" abgeschlossen ist.
-
Andererseits
ist, wenn die erste Phase mit einer "Nicht vorbereitet"-Nachricht "c" abgeschlossen ist,
die Nachricht "d", "e" eine "Abbrechen"-Nachricht, es wird mit anderen Worten
die Transaktion abgebrochen, und die Abschlussnachricht "f" ist eine "Abgebrochen"-Nachricht, mit anderen Worten wird
die Transaktion abgebrochen.
-
Es
ist auch gezeigt, dass dann, wenn ein Zwischenknoten n3 an der Transaktion
teilnimmt, die Nachricht "e" zwischen dem zweiten
Knoten n2 und dem ersten Knoten n1 in zwei Nachrichten "e'", "e''" aufgeteilt werden
kann, um so über
den Zwischenknoten n3 zu laufen.
-
Um
die Sache zu vereinfachen, hat sich die obige Beschreibung mit einer
Transaktion befasst, die eine Gruppe g1 betrifft, obwohl es üblich ist,
dass mehrere Gruppen durch eine Transaktion beeinflusst werden.
-
Die
TPC-B-Transaktion wird hier in einer beispielhaften Form verwendet
werden, um die Erfindung zu erläutern
und um auch die vorliegende Erfindung mit bekannter Technologie
auf eine einfache Weise zu vergleichen.
-
Somit
zeigt 7 eine Transaktion, die eine Anzahl von Gruppen
g1, g2, g3, g4 von Tabellenteilen beeinflusst, wobei jeweilige Gruppenteile,
die zu der ersten Tabelle gehören,
oder Teile, die zu einer bestimmten anderen Tabelle in der Datenbank
gehören und
getrennt von der ersten Tabelle sind, einschließen.
-
Die
Teile werden in ersten Knoten n1, n1', n1'', n1''' und
zweiten Knoten n2, n2',
n2' n2''' jeweils und
möglicherweise
in einem oder mehreren Zwischenknoten n3, n3', n3'', n3''',
die jeweils getrennt von dem anderen in jeweiligen Gruppen von Teilen sind,
gespeichert.
-
Die
erste Phase wird mit einer Vorbereitungsaufforderung "a", "a'", "a''", "a'''" von dem Transaktionskoordinator 1 an
jeweilige erste Knoten n1, n1',
n1'', n1''' eröffnet und
wird mit einer Nachricht "c", "c'", "c''", "c'''" "Vorbereitet" oder "Nicht vorbereitet" von jeweiligen zweiten
Knoten n2, n2',
n2'', n2''' zu dem
Transaktionskoordinator 1 abgeschlossen.
-
Die
zweite Phase wird mit einer Nachricht "d", "d'", "d''", "d'''" von dem Transaktionskoordinator 1 zu
jeweiligen zweiten Knoten n2, n2',
n2'', n2''' betreffend
vorzunehmender Maßnahmen
eröffnet
und wird mit einer Abschlussnachricht "f", "f'", "f''", "f'''" von jeweiligen ersten Knoten n1, n1' n1'', n1''' zu dem Transaktionskoordinator 1 abgeschlossen.
-
Die
Nachricht "d", "d'",
d''", "d'''" ist eine Verpflichtungs-Nachricht,
d. h. sie führt
die Maßnahmen gemäß der Transaktion
durch, und die Abschluss-Nachricht "f", "f'", "f''", "f'''" ist eine Verpflichtet-Nachricht, d.
h. die gemäß der Transaktion
vorzunehmenden Nachrichten werden verpflichtet, d. h. sie werden
ausgeführt,
vorausgesetzt, dass die erste Phase mit einer "Vorbereitet"-Nachricht "c", "c'", "c''", "c'''" von sämtlichen anderen Knoten n2,
n2', n2'', n2''' abgeschlossen ist.
-
Andererseits
ist, wenn die erste Phase mit einer "Nicht vorbereitet"-Nachricht "c", "c'", "c''", "c'''" von irgendeinem Knoten n2, n2', n2'', n2''' abgeschlossen ist, die Nachricht eine "Abbrechen"-Nachricht, d. h.
sie bricht die Transaktion ab, und die Abschluss-Nachricht "f", "f'", "f''", "f'''" ist eine "Abgebrochen"-Nachricht, d. h. die Transaktion wird
abgebrochen.
-
Das
erfinderische Verfahren kann insbesondere vorteilhaft angewendet
werden, wenn dem ersten Teil eine höhere Priorität als zweiten
Teilen innerhalb jeweiliger Gruppen zugeordnet ist.
-
Das
ist der Fall, wenn jeweilige Gruppen ein Fragment der Datenbank
umfassen, wobei dieses Fragment den ersten Teil, den zweiten Teil
und einen weiteren Teil einschließt, wobei der weitere Teil
in einem dritten Knoten gespeichert ist, und wobei die höhere Priorität, die dem
ersten Teil zugeordnet ist, darin besteht, dass der erste Teil eine
Primärkopie
eines Teils der Tabelle ausbildet, und der weitere Teil aus einer
Sekundärkopie
der Primärkopie
besteht, und wobei der zweite Teil aus einer Bereitschaftskopie der
Primärkopie
besteht.
-
Die
Art und Weise, in welcher ein Sicherungskopieren unterschiedlicher
Teile einer Tabelle in einer verteilten Datenbank erreicht werden
kann, oder wie eine Datenbank aufgebaut sein kann, um ein hohes
Maß an
Zuverlässigkeit
bei einem Sicherheitskopien sicherzustellen, wird im Detail in diesem Dokument
nicht beschrieben werden. Jedoch wird der Leser auf die schwedische
Patentanmeldung betreffend "Method
to be used with a distributed database, and a system adapted to
work according to the method",
mit der
schwedischen Anmeldenummer
97 02015-0 zur detaillierteren Beschreibung der vorbenannten
Bestandteile eines Fragments hingewiesen.
-
Wenn
jede Gruppe g1, g2, g3, g4 ein Fragment bildet, das eine Primärkopie,
eine Sekundärkopie
und eine Bereitschaftskopie einschließt, wobei die jeweilige Kopie
in unterschiedlichen Knoten n1, n2, n3 gespeichert werden, wird
die vorbenannte TPC-B-Transaktion in einer Transaktion erhalten,
die vier unterschiedliche Fragmente mit sich bringt.
-
In
diesem Fall erfordert eine Transaktion gemäß der vorliegenden Erfindung
2·f·(n + 1)
Nachrichten, wobei f die Anzahl von Fragmenten ist, die durch eine
Transaktion beeinflusst werden, und n die Anzahl von Kopien innerhalb
jeweiliger Fragmente ist, was für
eine TPC-B-Transaktion gemäß 7 32 Nachrichten
bedeutet. Von diesen 32 Nachrichten können vier Nachrichten gleichzeitig
gesendet werden, was die Übertragung
von vier "gleichzeitigen" Nachrichten acht
Mal bedeutet.
-
Im
Vergleich zu einer herkömmlichen
Verpflichtung in zwei Phasen wird die geringfügig längere Antwortzeit (acht Mal
anstelle von vier Mal) durch die kleinere Anzahl von Nachrichten
(32 anstelle von 48), die gesendet werden müssen, kompensiert.
-
Im
Vergleich zu einer linearen Verpflichtung wird die größere Anzahl
von Nachrichten (32 anstelle von 24) durch die viel kürzere Antwortzeit
kompensiert, die durch eine teilweise gleichzeitige Übertragung
von Nachrichten ermöglicht
wird. Die Sequenz wird mit dem Transaktionskoordinator 1 eröffnet und abgeschlossen,
weil der Transaktionskoordinator 1 dann wissen wird oder
nicht, ob der Vorbereitungsteil beendet worden ist, und folglich
kann eine Aufforderung betreffend korrekter Maßnahmen unmittelbar nach dem
Vorbereitungsteil gesendet werden. Dies ermöglicht die gleichzeitige Nachrichtenübertragung und
die viel kürzere
Antwortzeit, als die lineare Verpflichtungs-Antwort erreichen kann.
-
In Übereinstimmung
mit der Erfindung kann die Vorbereitung des ersten Knotens, n1,
n1', n1'', n1''' in der ersten Phase es auch mit sich
bringen, dass der erste Knoten n1, n1', n1'', n1''' es
herbeiführt,
dass eine Sperre auf sämtliche
Kopien, die zu jeweiligen Fragmenten gehören, platziert wird.
-
Der
erste Knoten n1, n1',
n1'', n1''' verursacht auch,
dass jeweilige Sperren freigegeben werden, aber nur, nachdem der
erste Knoten die Nachricht betreffend auszuführender Maßnahmen empfangen hat und die
Abschlussnachricht zu dem Transaktionskoordinator 1 gesendet
hat.
-
Somit
wird er, wenn der Transaktionskoordinator 1 die Abschlussnachricht "f", "f'", "f''", "f'''" von einem ersten Knoten n1, n1', n1'', n1''' empfängt, wissen, dass sämtliche
Knoten innerhalb dieses Fragments die Nachricht betreffend auszuführender
Maßnahmen
empfangen haben. Andererseits wird, wenn der erste Knoten oder irgendein
anderer Knoten innerhalb eines Fragments während der zweiten Phase und
bevor der erste Knoten Zeit gehabt hat, die Abschlussnachricht zu
senden, zusammenbrechen sollten, der Transaktionskoordinator wissen,
dass kein Knoten innerhalb dieses Fragments die Transaktion abgeschlossen
hat, dass sämtliche
Knoten in der ersten Stufe dieser ersten Phase gesperrt waren, und
da die Sperre noch immer aktiv ist.
-
Um
es einfacher zu machen, kann gesagt werden, dass ein Zusammenbruch
des ersten Knotens oder eines bestimmten anderen Knotens es herbeiführen wird,
dass die zuletzt gesendete Nachricht zu den übrigen Knoten erneut gesendet
wird. Ein Handhaben eines zusammengebrochenen Knotens in Übereinstimmung
mit der vorliegenden Erfindung wird detaillierter nachstehend unter
Bezugnahme auf 8 beschrieben werden.
-
Gemäß einem
geeigneten Verfahren kann eine Sperre so angewandt werden, dass
nur jene Teile jeweiliger Kopien, die von der Transaktion beeinflusst
werden, nicht verfügbar
für andere
Transaktionen gemacht werden, während übrige Teile
für andere
Transaktionen verfügbar
belassen werden.
-
Eine
Sperre kann vermöge
des ersten Knotens n1, n1',
n1'', n1''' einschließlich einer
Nachricht angewandt werden, mit der Wirkung, dass die Sperre in
Verbindung mit der ersten Nachricht a, a', a'', a''' auf
sämtliche
beeinflussten Knoten innerhalb jeweiliger Fragmente angewandt wird.
-
Eine
Sperre muss nicht notwendigerweise durch ein Senden einer spezifischen
Nachricht für diese
Wirkung an jeweilige Knoten freigegeben werden. Dies würde eine
zusätzliche
Transaktionsphase in unnötiger
Weise erfordern. Auf eine Transaktion folgt normalerweise eine Säuberungsnachricht,
die eine Sperren-Freigabeinstruktion unter anderem einschließt. Eine
derartige Nachricht wird normalerweise bei der nächsten Gelegenheit eines Sendens
einer Nachricht zwischen beeinflussten Knoten gesendet, eine sogenannte
Huckepack-Unterstützung (piggy-backing),
wobei diese nächste
Nachricht nichts mit der fraglichen Transaktion zu tun hat.
-
Ein
weiteres Verfahren einer Sperren-Freigabe besteht darin, dass dann,
wenn der zweite Knoten und mögliche
Zwischenknoten innerhalb jeweiliger Fragmente gewahr sind, wenn
eine weitere Transaktion angefordert wird, die einen gesperrten
Teil betrifft, dann der erste Knoten den Beginn einer neuen Transaktion
akzeptiert hat, was anzeigt, dass der erste Knoten seine Sperre
freigegeben hat. Der zweite Knoten und mögliche Zwischenknoten wissen
deswegen, dass die Sperre freigegeben werden kann.
-
Eine
Einbehaltung der Koordinatorenschaft des Transaktionskoordinators
in Kombination mit einem Sperren sämtlicher Kopien innerhalb eines Fragments,
gesteuert durch jeweilige erste Knoten, ermöglicht eine Nicht-Blockierungs-Handhabung von zusammengebrochenen
Knoten während
einer Transaktion.
-
8 veranschaulicht
eine Prozedur, die in Übereinstimmung
mit der Erfindung in dem Fall vorgeschlagen wird, dass einer der
Knoten innerhalb eines Fragments, das durch eine Transaktion beeinflusst
wird, während
des Durchführens
der Transaktion zusammenbricht. Es wird angenommen, dass der durchgestrichene
Zwischenknoten n3 in der ersten Gruppe g1 zusammengebrochen ist,
womit
- – der
Transaktionskoordinator sämtliche
laufenden Nachrichtenübertragungen überprüft;
- – die
angehaltene Transaktionsphase von Beginn an erneut gestartet wird;
- – die
Nachrichten in Übereinstimmung
mit der Phase gesendet werden, der zusammengebrochene Knoten aber
aus der Nachrichtenkette ausgeschlossen wird; und
- – ein
Knoten, der eine früher
empfangene Nachricht empfängt,
die Nachricht ignoriert und dieselbe weiterschickt.
-
Jedoch
soll die Transaktion abgebrochen werden, wenn ein erster Knoten
innerhalb eines Fragments, das durch die Transaktion beeinflusst wird,
während
der Vorbereitungsphase der Transaktion zusammenbricht.
-
In
der Veranschaulichung der 8 ist der Zwischenknoten
n3 während
der ersten Phase zusammengebrochen, und folglich geht die Nachricht "b" von dem ersten Knoten n1 direkt zu
dem zweiten Knoten n2.
-
9 veranschaulicht
eine Prozedur, bei welcher in dem Fall eines Zusammenbruchs des Transaktionskoordinators 1 während der
Durchführung
einer Transaktion ein Systemkoordinator 1s fungiert, um
den Zusammenbruch eines Knotens in dem System zu erfassen, woraufhin:
- – der
Systemkoordinator 1s eine allgemeine Abfrage an sämtliche
Knoten in dem System sendet, wobei abgefragt wird, ob irgendein
Knoten ein Teilnehmer in einer Transaktion ist, in welcher der zusammengebrochene
Knoten 1 den Transaktionskoordinator ausbildet;
- – einem
neuen Knoten 1' die
Rolle eines Transaktionskoordinators zugewiesen wird;
- – sämtliche
Knoten in jeweiligen Fragmenten g1, g2, g3, die von der Transaktion
beeinflusst werden, einen Statusbericht erstellen, der zu dem neuen
Transaktionskoordinator gesendet wird, und der die Knotenidentität, die Fragmentidentität, einen
Transaktionsstatus und einschließt, ob der Knoten Primär-, Sekundär- oder
Bereitschaftskopien innerhalb jeweiliger Fragmente einschließt oder
nicht; und
- – der
neue Transaktionskoordinator 1 auf der Grundlage der empfangenen
Statusberichte bestimmt, ob die Transaktion fortgesetzt oder abgebrochen
werden soll.
-
Obwohl
die jeweiligen Gruppen in der obigen Beschreibung drei Tabellenteile
einschließen,
spricht nichts dagegen, dass die vorliegende Erfindung angewandt
wird, wenn jeweilige Gruppen einen ersten Teil und einen zweiten
Teil einschließen,
und wenn die höhere
Priorität
der jeweiligen ersten Teile darin bestehen, dass der erste Teil
eine Primärkopie
eines Teils einer Tabelle umfasst, und der zweite Teil eine Sekundärkopie der
Primärkopie
umfasst.
-
10 veranschaulicht
ein Beispiel, bei welchem ein Transaktionskoordinator 1 eine
Transaktion durchführt,
die vier Gruppen g1, g2, g3, g4 beeinflusst, wobei jede zwei Knoten
n1, n2 einschließt,
die Primär-
und Sekundärkopien
von Teilen enthalten, die durch die Transaktion beeinflusst werden.
-
Wie
vorher erwähnt,
kann ein System ein Primärsystem "p" ausbilden, und kann ergänzt sein durch
ein Sekundärsystem "s". Es wird in Übereinstimmung mit der Erfindung
vorgeschlagen, dass ein Aktualisieren eines derartigen Sekundärsystems "s" gemäß einer
Transaktion vor einem Freigeben der Sperre angefordert werden soll.
-
Dieses
Aktualisieren kann über
sowohl eine One-Safe-Übertragung
als auch über
eine begrenzte Two-Safe-Übertragung
bewirkt werden. Das gewählte
Verfahren wird von dem Sicherheitspegel abhängen, der von jeweiligen Transaktionen
gefordert ist. Gemäß der Erfindung
zeigen die Attribute, die die Transaktion steuern, an, ob ein Aktualisieren
des Sekundärsystems
mittels einer One-Safe-Übertragung oder
einer begrenzten Two-Safe-Übertragung
bewirkt werden soll.
-
Wenn
sämtliche
Attribute, die die Transaktion steuern, anzeigen, dass ein Aktualisieren
des Sekundärsystems "s" mittels einer One-Safe-Übertragung
bewirkt werden soll, dann wird ein Aktualisieren mittels einer One-Safe-Übertragung
bewirkt, wohingegen dann, wenn irgendein Attribut, das die Transaktion
steuert, anzeigt, dass das Sekundärsystem "s" mittels
einer begrenzten Two-Safe-Übertragung
aktualisiert werden soll, die Aktualisierung mittels einer begrenzten
Two-Safe-Übertragung
bewirkt wird.
-
11 veranschaulicht
ein Beispiel eines Aktualisierens durch eine One-Safe-Übertragung. Wie
veranschaulicht, wird die Aktualisierung durch jeweilige erste Knoten
n1p, n1'p, die durch
die Transaktion beeinflusst werden, bewirkt, indem eine "Verpflichtungs"-Nachricht "as", "a's" zu
jeweiligen Knoten n1s, n1's
innerhalb des Sekundärsystems "s" gesendet wird. Die Transaktion dauert
dann an, ohne auf eine Antwort von jeweiligen beeinflussten Knoten n1s,
n1's innerhalb des
Sekundärsystems "s" zu warten.
-
12 veranschaulicht,
wie ein Aktualisieren mittels einer begrenzten Two-Safe-Übertragung ausgeführt werden
kann. Wie veranschaulicht, senden jeweilige erste Knoten n1p, n1'p, die durch die Transaktion
beeinflusst werden, eine "Verpflichtungs"-Nachricht "as", "a's" zu
jeweiligen Knoten n1s, n1's
innerhalb des Sekundärsystems "s".
-
Als
ein Teil der Übertragung
wartet der erste Knoten n1p, n1'p
auf eine Antwort von beeinflussten Knoten n1s, n1's innerhalb des Sekundärsystems "s", wobei diese Antwort aus einer "Verpflichtet"-Nachricht "bs", "b's" von
dem ersten Knoten n1p, n1'p
besteht, welche dem ersten Knoten n1p, n1'p anzeigt, dass die Maßnahmen
ausgeführt
werden, und das System "s" wird somit in Übereinstimmung mit
der Transaktion aktualisiert, oder einer "Abgebrochen"-Nachricht "bs", "b's",
welche dem ersten Knoten n1p, n1'p
anzeigt, dass die Maßnahmen
nicht ausgeführt
werden und dass das Sekundärsystem "s" somit nicht in Übereinstimmung mit der Transaktion
aktualisiert werden wird.
-
Eine
Anzeige, dass das Sekundärsystem "s" nicht in Übereinstimmung mit der Transaktion
aktualisiert werden wird, führt
dazu, dass das Sekundärsystem
neu gestartet wird, um so eine korrekte Kopie des Primärsystems "p" auszubilden.
-
Das
oben beschriebene Aktualisieren eines Sekundärsystems wird als eine begrenzte Two-Safe-Übertragung
bezeichnet, wobei die Begrenzung in der Tatsache besteht, dass Knoten
innerhalb des Sekundärsystems
nicht das Recht haben zu verlangen, dass eine Transaktion gestoppt
oder abgebrochen wird.
-
Bei
dem Verfahren zum Aktualisieren eines Sekundärsystems, das unter Bezugnahme
auf 11 beschrieben ist, empfangen beeinflusste Knoten
in dem Primärsystem
irgendeine Anzeige, ob das Sekundärsystem in Übereinstimmung mit der Transaktion
aktualisiert werden wird oder nicht, auf eine natürliche Weise
nicht. Dies verhindert nicht, dass eine derartige Anzeige auf irgendeine
andere Weise erzeugt wird, jedoch bedeutet dies wiederum, dass das
Sekundärsystem
erneut gestartet wird, um so eine Kopie des Primärsystems "p" auf
eine korrekte Weise auf eine Aufforderung nach einem nicht-durchführbaren
Aktualisieren des Sekundärsystems
hin auszubilden.
-
Somit
besteht der Unterschied zwischen einem Aktualisieren durch eine
One-Safe-Übertragung oder
eine begrenzte Two-Safe-Übertragung
darin, dass in dem Fall einer begrenzten Two-Safe-Übertragung unmittelbar bekannt
ist, ob das Sekundärsystem
aktualisiert wird oder nicht, wohingegen bei einer One-Safe-Übertragung
ein Unterschied zwischen dem Primär- und Sekundärsystem
für eine
kurze Periode vorhanden sein kann.
-
Unterschiedliche
Transaktionen verursachen unterschiedliche Änderungen, wovon bestimmte Änderungen
weniger empfindlich auf Fehlfunktionen sind als andere. Somit kann
eines der Transaktions-Steuerattribute bestimmen, ob die Transaktion mittels
einer One-Safe-Übertragung
oder einer begrenzten Two-Safe-Übertragung
durchgeführt
werden soll, wenn das Sekundärsystem
aktualisiert wird.
-
Die
Einfügung
von persönlichen
Daten, die zu einem Teilnehmer gehören, in ein mobiles Telefonnetz,
ist ein Beispiel einer Transaktion, die eine begrenzte Two-Safe-Übertragung
erfordern könnte, wenn
das Sekundärsystem
aktualisiert wird. In diesem Fall ist es wichtig, dass die korrekte
Information in sowohl dem Primär-
als auch dem Sekundärsystem
zu finden ist.
-
Die
Einfügung
der vorübergehenden
Position eines Teilnehmers innerhalb eines mobilen Telefonnetzes
ist ein Beispiel einer Transaktion, wo eine One-Safe-Übertragung
bei einem Aktualisieren des Sekundärsystems ausreichend sein kann.
Da sich die Position eines Mobilgeräts in einem Mobiltelefonnetz
dauernd ändern
wird und deswegen wiederholt im Verlauf der Zeit aktualisiert werden
wird, ist die Bedeutung einer korrekten Information in dem Sekundärsystem
in dieser Hinsicht nicht so kritisch wie in dem früheren Fall.
-
Es
kann auch sein, dass dann, wenn eine Anzeige empfangen wird, mit
der Wirkung, dass das Sekundärsystem
nicht in Übereinstimmung
mit einer derartigen Transaktion zu aktualisieren ist, die nicht notwendigerweise
bedeutet, dass das Sekundärsystem
erneut gestartet werden muss, da das Sekundärsystem wahrscheinlich das
nächste
Mal korrekt aktualisiert werden wird, wenn sich der geografische
Ort eines spezifischen Teilnehmers ändert.
-
Als
Antwort auf eine Aufforderung, die ein Aktualisieren des Sekundärsystems "s" in Übereinstimmung
mit einer Transaktion innerhalb des Primärsystems "p" betrifft,
wird eine Information von beeinflussten Knoten in dem Primärsystem "p" zu beeinflussten Knoten innerhalb des
Sekundärsystems "s" gesendet, von wo ein logischer Transaktionskoordinator
gewählt
werden kann. Die Wahl eines Transaktionskoordinators innerhalb des
Sekundärsystems wird
durch diese Information und durch ein momentanes Beladen von Knoten,
die zu dem Sekundärsystem
gehören,
gesteuert. 13 dient der Absicht zu zeigen,
dass die Information "i" in dem Transaktionskoordinator
1p in dem Primärsystem "p" bestehen kann, wobei ein logischer
Transaktionskoordinator ltk aus einer Abbildungstabelle mt möglicher
logischer Transaktionskoordinatoren innerhalb des Sekundärsystems "s" gewählt
wird. Diese Wahl wird so ausgeführt,
dass die Aufgabe eines Wirkens als ein Transaktionskoordinator zufällig unter
den logischen Transaktionskoordinatoren verteilt werden wird, die aus
der Abbildungstabelle mt gewählt
werden können.
-
Jeweilige
logische Transaktionskoordinatoren ltk in der Abbildungstabelle
mt können
auf einen physikalischen Knoten 1s oder physikalische Transaktionskoordinatoren
ftk, die innerhalb des Sekundärsystems
wirken, abgebildet werden. Die Abbildungstabelle mt wird innerhalb
jedes Knotens, der zu dem Sekundärsystem "s" gehört,
gespeichert, oder ist diesem verfügbar. Wenn jeweilige Knoten
innerhalb des Sekundärsystems,
die durch eine Transaktion beeinflusst werden, eine Information "i" darüber empfangen,
welcher logische Transaktionskoordinator ltk ausgewählt worden
ist, identifizieren diese Knoten über eine Abbildungstabelle
mt die gleichen physikalischen Transaktionskoordinatoren ftk innerhalb
des Sekundärsystems "s".
-
Ein
Systemkoordinator sks in dem Sekundärsystem sieht, dass sämtliche
Positionen in der Abbildungstabelle mt durch Knoten besetzt sind,
die verfügbar
sind, um als Transaktionskoordinatoren zu wirken. Somit stellt,
wenn bestimmte Knoten schwer belastet sind, der Transaktionskoordinator
sks sicher, dass diese Knoten nicht in der Abbildungstabelle eingeschlossen
sind. Dies stellt ein bestimmtes Maß einer Laststeuerung bezüglich der
Knoten innerhalb des Sekundärsystems "s" bereit.
-
Es
ist zu verstehen, dass die Erfindung nicht auf die vorbenannten
und veranschaulichten beispielhaften Ausführungsformen davon beschränkt ist,
und dass Modifikationen innerhalb des Umfangs des erfinderischen
Konzepts, wie es durch die folgenden Ansprüche definiert ist, ausgeführt werden
können.