DE69838506T2 - Verfahren für transaktionen zwischen verteilten datenbanken - Google Patents

Verfahren für transaktionen zwischen verteilten datenbanken Download PDF

Info

Publication number
DE69838506T2
DE69838506T2 DE69838506T DE69838506T DE69838506T2 DE 69838506 T2 DE69838506 T2 DE 69838506T2 DE 69838506 T DE69838506 T DE 69838506T DE 69838506 T DE69838506 T DE 69838506T DE 69838506 T2 DE69838506 T2 DE 69838506T2
Authority
DE
Germany
Prior art keywords
transaction
node
message
nodes
coordinator
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 - Lifetime
Application number
DE69838506T
Other languages
English (en)
Other versions
DE69838506D1 (de
Inventor
Ulf Mikael RONSTRÖM
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.)
MySQL AB
Original Assignee
MySQL AB
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 MySQL AB filed Critical MySQL AB
Publication of DE69838506D1 publication Critical patent/DE69838506D1/de
Application granted granted Critical
Publication of DE69838506T2 publication Critical patent/DE69838506T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Description

  • 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.

Claims (19)

  1. Verfahren zum Durchführen einer Transaktion, die eine Mehrzahl von Knoten innerhalb eines Systems von Knoten beeinflusst, bei welcher eine Information, die zu der verteilten Datenbank gehört, gespeichert wird, wobei die Information in Tabellen geteilt ist und die Transaktion von einem Transaktionskoordinator (1) herrührt, wobei die Transaktion zumindest eine Gruppe (g1) von Teilen von zumindest einer ersten Tabelle der Anzahl von Tabellen beeinflusst, wobei die Gruppe (g1) zumindest einen ersten Teil und einen zweiten Teil und möglicherweise eine oder mehrere weitere Teile einschließt, wobei der erste Teil in einem ersten Knoten (n1) gespeichert wird und der zweite Teil in einem zweiten Knoten (n2) gespeichert wird, der getrennt von dem ersten Knoten ist, wobei mögliche andere Teile in den Gruppen in Zwischenknoten gespeichert werden, die aus weiteren Knoten bestehen, die voneinander und von dem ersten und dem zweiten Knoten getrennt sind, und wobei die Transaktion eine Two-Safe-Transaktion ist, gekennzeichnet durch ein Öffnen der Transaktion mit einer ersten Phase, bei welcher: – der Transaktionskoordinator (1) eine "Vorbereitungs"-Nachricht (a) sendet, mit welcher eine Aufforderung gemeint ist, die den ersten Knoten (n1) auffordert, sich auf die Transaktion vorzubereiten; – wenn der erste Knoten (n1) in der Lage ist, die Transaktion durchzuführen, der erste Knoten die Vorbereitungsaufforderung (b) an den zweiten Knoten (n2) entweder direkt oder über einen oder mehrere Zwischenknoten sendet, oder – wenn der erste Knoten (n1) nicht in der Lage ist, die Transaktion auszuführen, der zweite Knoten eine "Nicht vorbereitet"-Nachricht (b) an den zweiten Knoten (n2) entweder direkt oder über einen oder mehrere Zwischenknoten sendet; – wenn der zweite Knoten (n2) in der Lage ist, die Transaktion vorzunehmen, der zweite Knoten eine "Vorbereitet"-Nachricht (c) direkt an den Transaktionskoordinator (1) sendet, d. h. eine Nachricht, die anzeigt, dass sämtliche beeinflussten Knoten vorbereitet sind, die Transaktion vorzunehmen; oder – wenn der zweite Knoten (n2) nicht in der Lage ist, die Transaktion auszuführen oder wenn der zweite Knoten eine "Nicht vorbereitet"-Nachricht empfangen hat, der zweite Knoten eine "Nicht vorbereitet"-Nachricht (c) direkt an den Transaktionskoordinator (1) sendet, was die erste Phase abschließt, wobei die erste Phase gefolgt wird von einer zweiten Phase, bei welcher: – der Transaktionskoordinator (1) eine Nachricht (d), die auszuführende Maßnahmen betrifft, direkt zu dem zweiten Knoten (n2) sendet; – der zweite Knoten (n2) dann die Nachricht (e), die die 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) an den Transaktionskoordinator (1) sendet; womit die zweite Phase abgeschlossen wird, wobei die Nachricht (d, e), die die Maßnahmen betrifft, eine "Verpflichtungs"-Nachricht ist, d. h. eine Nachricht, die Maßnahmen in Übereinstimmung mit der Transaktion auszuführen, und die Abschlussnachricht (f) eine "Verpflichtet"-Nachricht ist, d. h. eine Nachricht, die darlegt, dass die Maßnahmen in Übereinstimmung mit der Transaktion ausgeführt worden sind, vorausgesetzt, dass die erste Phase mit einer "Vorbereitet"-Nachricht abgeschlossen ist, oder wenn die Nachricht (d, e), die die Maßnahmen betrifft, eine "Abbrechen"-Nachricht ist, d. h. eine Nachricht, die Transaktion abzubrechen, und die Abschlussnachricht (nf) eine "Abgebrochen"-Nachricht ist, d. h. die Transaktion wird abgebrochen, wenn die erste Phase mit einer "Nicht vorbereitet"-Nachricht abgeschlossen ist.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Transaktion weitere Gruppen (g1, g2, g3, g4) von Tabellenteilen beeinflusst, wobei jeweilige Gruppen, Teile, die zu der ersten Tabelle gehören, oder Teile, die zu einer bestimmten anderen Tabelle innerhalb der Datenbank gehören, aber getrennt sind von der ersten Tabelle, einschließen; wobei die Tabellenteile in den ersten und zweiten Knoten (n1, n2) und möglicherweise in einem oder mehreren Zwischenknoten gespeichert werden, die jeweils getrennt von den anderen innerhalb jeweiliger Gruppen von Teilen sind; wobei die erste Phase mit der Vorbereitungsaufforderung von dem Transaktionskoordinator (1) an jeweilige erste Knoten (n1) geöffnet wird und mit einer "Vorbereitet"-Nachricht oder einer "Nicht vorbereitet"-Nachricht von jeweiligen zweiten Knoten (n2) an den Transaktionskoordinator (1) abgeschlossen wird; wobei die zweite Phase mit der Nachricht, die auszuführende Maßnahmen betrifft, von dem Transaktionskoordinator an jeweilige zweite Knoten (n2) geöffnet wird und mit der Abschlussnachricht von jeweiligen ersten Knoten (n1) an den Transaktionskoordinator (1) abgeschlossen wird, wobei die Nachricht, die auszuführende Maßnahmen betrifft, eine "Verpflichtungs"-Nachricht ist, d. h. eine Nachricht, Maßnahmen in Übereinstimmung mit der Transaktion auszuführen, und wobei die Abschlussnachricht eine "Verpflichtet"-Nachricht ist, d. h. eine Nachricht, die darlegt, dass die Maßnahmen in Übereinstimmung mit der Transaktion ausgeführt worden sind, wenn die erste Phase mit einer "Vorbereitet"-Nachricht von sämtlichen zweiten Knoten (n2) abgeschlossen ist, oder wenn die Nachricht, die die Maßnahmen betrifft, eine "Abbrechen"-Nachricht ist, d. h. eine Nachricht, die Transaktion abzubrechen, und die Abschlussnachricht eine Transaktions-Abbrechen-Nachricht ist, wenn die erste Phase mit einer "Nicht vorbereitet"-Nachricht von irgendeinem zweiten Knoten (n2) abgeschlossen ist.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, dadurch gekennzeichnet, dass jeweilige Gruppen einen oder mehrere Teile einschließen, die innerhalb des Zwischenknotens/der Zwischenknoten gespeichert sind; dass Nachrichten in der ersten Phase seriell von dem ersten Knoten zu dem/den Zwischenknoten und von dort zu dem zweiten Knoten (n2) gesendet werden; und dass Nachrichten in der zweiten Phase seriell von dem zweiten Knoten (n2) zu dem/den Zwischenknoten und von dort zu dem ersten Knoten (n1) gesendet werden.
  4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass jeweilige Gruppen ein Fragment einer Tabelle umfassen, die in der Datenbank enthalten ist, wobei das Fragment den ersten Teil, den zweiten Teil und einen weiteren Teil einschließt; dass der zweite Teil in einem dritten Knoten gespeichert wird, und dass der erste Teil eine Primärkopie eines Teils der Tabelle bildet, dass der weitere Teil eine Sekundärkopie der Primärkopie bildet, und dass der zweite Teil eine Bereitschaftskopie der Primärkopie bildet.
  5. Verfahren nach Anspruch 1 und Anspruch 4, dadurch gekennzeichnet, das eine Vorbereitung des ersten Knotens (n1) in der ersten Phase einschließt, dass der erste Knoten (n1) eine Sperre auf sämtliche Kopien, die zu dem Fragment gehören, erzeugt und anwendet.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass erste Knoten (n1) die Freigabe der Sperre auf sämtliche Kopien, die zu dem Fragment gehören, nur dann erzeugt, nachdem der erste Knoten (n1) die Nachricht, die auszuführende Maßnahmen betrifft, empfangen hat und die Abschlussnachricht gesendet hat.
  7. Verfahren nach Anspruch 5 und Anspruch 6, dadurch gekennzeichnet, dass die Sperre in Übereinstimmung mit einem geeigneten Verfahren angewandt wird, beispielsweise etwa nur jene Teile der jeweiligen Kopien nicht verfügbar zu machen, die von der Transaktion beeinflusst worden sind, während die übrigen Teile für andere Transaktionen verfügbar belassen werden.
  8. Verfahren nach den Ansprüchen 1 bis 7, wobei einer der Knoten innerhalb eines Fragments, das durch die Transaktion beeinflusst wird, während des Durchführens der Transaktion zusammenbricht, dadurch gekennzeichnet, dass – der Transaktionskoordinator (1) sämtliche laufenden Nachrichtenübertragungen überprüft; – die Transaktionsphase, die angehalten worden ist, erneut vom Anfang an gestartet wird; – die Nachrichten in Übereinstimmung mit der Phase, aber unter Ausschluss des zusammengebrochenen Knotens von der Nachrichtenkette gesendet werden; und – wenn ein Knoten eine frühere empfangene Nachricht empfängt, der Knoten die Nachricht ignoriert und selbige weiterschickt.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass die Transaktion abgebrochen wird, wenn der zusammengebrochene Knoten ein erster Knoten (n1) innerhalb eines Fragments ist, das durch die Transaktion beeinflusst wird, und wenn der Zusammenbruch während der Vorbereitungsphase der Transaktion auftritt.
  10. Verfahren nach Anspruch 1 bis 7, wobei der Transaktionskoordinator (1) während der Durchführung der Transaktion zusammenbricht, und wobei ein Systemkoordinator (1s) ausgelegt ist, den Zusammenbruch eines Knotens in dem System zu erfassen, dadurch gekennzeichnet, dass – der Systemkoordinator (1s) eine allgemeine Abfrage an alle Knoten in dem System sendet, um zu fragen, ob ein Knoten ein Teilnehmer bei einer Transaktion ist oder nicht, wobei der zusammengebrochene Knoten ein Transaktionskoordinator ist; – einem neuen Knoten (1') die Rolle des Transaktionskoordinators zugeordnet wird; – sämtliche Knoten in jeweiligen Fragmenten, die von der Transaktion beeinflusst werden, einen Statusreport erstellen, der zu dem neuen Transaktionskoordinator (1') gesendet wird, wobei der Statusreport eine Knotenidentität, eine Fragmentidentität, einen Transaktionsstatus und ob der Knoten eine Primär-, eine Sekundär- oder eine Bereitschaftskopie in jeweiligen Fragmenten ist, einschließt, und dass – der neue Transaktionskoordinator (1') auf der Grundlage der Statusreports bestimmt, ob die Transaktion fortdauern oder abgebrochen werden soll.
  11. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass jeweilige Gruppen einen ersten und einen zweiten Teil einschließen; dass der erste Teil eine Primärkopie eines Teils der Tabelle ausbildet; und dass der zweite Teil eine Sekundärkopie der Primärkopie ausbildet.
  12. Verfahren nach Anspruch 5 und 6 oder 7, wobei das System (p) ergänzt wird durch ein Sekundärsystem (s), dadurch gekennzeichnet, dass ein Aktualisieren des Sekundärsystems (s) in Übereinstimmung mit der Transaktion angefordert wird, bevor die Sperre freigegeben wird.
  13. Verfahren nach Anspruch 12, wobei jeweilige Transaktionen gefolgt werden durch unterschiedliche Attribute, die die Durchführung der betreffenden Transaktion steuern, dadurch gekennzeichnet, dass dann, wenn sämtliche der Attribute anzeigen, dass das Sekundärsystem (s) mittels einer One-Safe-Übertragung aktualisiert werden sollte, die Aktualisierung mittels einer One-Safe-Übertragung bewirkt wird; und dass dann, wenn eines der Attribute anzeigt, dass das Sekundärsystem (s) mit Hilfe einer begrenzten Two-Safe- Übertragung aktualisiert werden sollte, das Sekundärsystem (s) mittels einer begrenzten Two-Safe-Übertragung aktualisiert wird.
  14. Verfahren nach Anspruch 12 oder Anspruch 13, dadurch gekennzeichnet, dass eine One-Safe-Übertragung jeweilige erste Knoten (n1) einschließt, die durch die Transaktion beeinflusst werden, die eine "Verpflichtungs"-Nachricht zu entsprechenden Knoten innerhalb des Sekundärsystems (s) betreffend jene Maßnahmen, die ausgeführt werden sollen, sendet, woraufhin die Transaktion fortdauert.
  15. Verfahren nach Anspruch 14, gekennzeichnet durch ein Erzeugen einer Anzeige, dass eine angeforderte Maßnahme nicht ausgeführt werden kann, und ein Senden dieser Anzeige von dem Sekundärsystem (s) zu dem Primärsystem (p) in einer getrennten Transaktion oder als ein Teil einer weiteren Transaktion zwischen den Sekundär- und Primärsystemen.
  16. Verfahren nach Anspruch 12 oder 13, dadurch gekennzeichnet, dass eine begrenzte Two-Safe-Übertragung einen jeweiligen ersten Knoten (n1) einschließt, der durch die Transaktion beeinflusst wird, die eine "Verpflichtungs"-Nachricht zu entsprechenden Knoten innerhalb des Sekundärsystems (s) betreffend Maßnahmen, die durchgeführt werden sollen, sendet, woraufhin die entsprechenden Knoten innerhalb des Sekundärsystems (s) durch ein Senden, zu dem ersten Knoten (n1), einer "Verpflichtungs"-Nachricht, die dem ersten Knoten (n1) anzeigt, dass Maßnahmen durchgeführt werden und dass das Sekundärsystem (s) somit in Übereinstimmung mit der Transaktion aktualisiert werden wird, oder mit einer Nachricht "Abbrechen" antworten, die dem ersten Knoten (n1) anzeigt, dass Maßnahmen nicht durchgeführt werden und dass das Sekundärsystem (s) somit nicht in Übereinstimmung mit der Transaktion aktualisiert werden wird.
  17. Verfahren nach Anspruch 15 oder Anspruch 16, dadurch gekennzeichnet, dass das Sekundärsystem (s) neu gestartet wird, um so korrekt eine Kopie des Systems zu umfassen, wenn angezeigt wird, dass das Sekundärsystem (s) in Übereinstimmung mit der Transaktion nicht aktualisiert werden wird.
  18. Verfahren nach Anspruch 14 oder Anspruch 16, dadurch gekennzeichnet, dass die Information, die zu jeweiligen Knoten innerhalb des Sekundärsystems (s) in Verbindung mit einem Aktualisieren des Sekundärsystems gesendet wird, die Information einschließt, die zum Erzeugen eines logischen Transaktionskoordinators (ltk) innerhalb des Sekundärsystems (s) erforderlich ist; und dass ein physikalischer Transaktionskoordinator (ftk) innerhalb des Sekundärsystems (s) auf der Grundlage der Information und auf der Grundlage einer momentanen Beladung der Knoten, die zu dem Sekundärsystem gehören, ausgewählt wird.
  19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, dass eine Abbildungstabelle (mt) in sämtlichen Knoten, die zu dem Sekundärsystem (s) gehören, gespeichert wird oder für diese verfügbar ist; dass die Abbildungstabelle (mt) eine Tabelle ist, die es ermöglicht, dass eine Abbildung von einem logischen Transaktionskoordinator (ltk) auf einen physikalischen Knoten (1s) innerhalb des Sekundärsystems (s) erreicht wird; dass die Information von dem Primärsystem (p) eine Auswahl eines logischen Transaktionskoordinators (ltk) innerhalb des Sekundärsystems (s) einschließt; dass ein Systemkoordinator (sks) in dem Sekundärsystem (s) sicherstellt, dass sämtliche logischen Transaktionskoordinatoren auf einen physikalischen Knoten innerhalb des Sekundärsystems abgebildet werden können; und dass die Abbildungstabelle (mp) nur Knoten enthält, die verfügbar sind, um als ein Transaktionskoordinator in dem Fall einer Transaktion zu wirken.
DE69838506T 1997-05-28 1998-05-28 Verfahren für transaktionen zwischen verteilten datenbanken Expired - Lifetime DE69838506T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9702014 1997-05-28
SE9702014A SE521041C2 (sv) 1997-05-28 1997-05-28 Metod för optimering av transaktionsprotokoll inom en distribuerad databas
PCT/SE1998/001010 WO1998054659A2 (en) 1997-05-28 1998-05-28 Method for transaction within a distributed database

Publications (2)

Publication Number Publication Date
DE69838506D1 DE69838506D1 (de) 2007-11-15
DE69838506T2 true DE69838506T2 (de) 2008-07-03

Family

ID=20407137

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838506T Expired - Lifetime DE69838506T2 (de) 1997-05-28 1998-05-28 Verfahren für transaktionen zwischen verteilten datenbanken

Country Status (9)

Country Link
US (1) US6216126B1 (de)
EP (1) EP1016005B1 (de)
JP (1) JP4241940B2 (de)
KR (1) KR20010013112A (de)
AU (1) AU7683198A (de)
CA (1) CA2291009A1 (de)
DE (1) DE69838506T2 (de)
SE (1) SE521041C2 (de)
WO (1) WO1998054659A2 (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0854423A1 (de) * 1997-01-20 1998-07-22 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Datenaufteilung und -duplizierung in einem verteilten Datenverarbeitungssystem
GB2346983B (en) * 1999-02-18 2003-04-16 Ibm Client/server computing for transaction processing with superior coordinator o ptimization
US6473829B1 (en) * 1999-05-28 2002-10-29 International Business Machines Corporation Data storage device providing communication between processing units
US7206805B1 (en) * 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
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
KR100659971B1 (ko) 2003-12-26 2006-12-22 한국전자통신연구원 웹서비스 트랜잭션의 자동중단 처리시스템 및 방법
US7478400B1 (en) 2003-12-31 2009-01-13 Symantec Operating Corporation Efficient distributed transaction protocol for a distributed file sharing system
US20050165748A1 (en) * 2004-01-15 2005-07-28 Seagate Technology Llc Method and apparatus for querying a computerized database
US20090276367A1 (en) * 2008-04-30 2009-11-05 Rosenthal Collins Group, L.L.C. Method and system for providing risk management for multi-market electronic trading
US8429059B2 (en) 2004-06-08 2013-04-23 Rosenthal Collins Group, Llc Method and system for providing electronic option trading bandwidth reduction and electronic option risk management and assessment for multi-market electronic trading
US7912781B2 (en) * 2004-06-08 2011-03-22 Rosenthal Collins Group, Llc Method and system for providing electronic information for risk assessment and management for multi-market electronic trading
US20080162378A1 (en) * 2004-07-12 2008-07-03 Rosenthal Collins Group, L.L.C. Method and system for displaying a current market depth position of an electronic trade on a graphical user interface
US20100076906A1 (en) * 2004-07-12 2010-03-25 Rosenthal Collins Group, L.L.C. Method and system for using quantitative analytics on a graphical user interface for electronic trading
US20100094777A1 (en) * 2004-09-08 2010-04-15 Rosenthal Collins Group, Llc. Method and system for providing automatic execution of risk-controlled synthetic trading entities
US8589280B2 (en) * 2005-05-04 2013-11-19 Rosenthal Collins Group, Llc Method and system for providing automatic execution of gray box strategies for electronic trading
US7801801B2 (en) 2005-05-04 2010-09-21 Rosenthal Collins Group, Llc Method and system for providing automatic execution of black box strategies for electonic trading
US8364575B2 (en) 2005-05-04 2013-01-29 Rosenthal Collins Group, Llc Method and system for providing automatic execution of black box strategies for electronic trading
US20080288391A1 (en) * 2005-05-31 2008-11-20 Rosenthal Collins Group, Llc. Method and system for automatically inputting, monitoring and trading spreads
US7617149B2 (en) * 2005-05-31 2009-11-10 Rosenthal Collins Group, Llc Method and system for electronically inputting, monitoring and trading spreads
US7849000B2 (en) 2005-11-13 2010-12-07 Rosenthal Collins Group, Llc Method and system for electronic trading via a yield curve
US20080059846A1 (en) * 2006-08-31 2008-03-06 Rosenthal Collins Group, L.L.C. Fault tolerant electronic trading system and method
US7921189B2 (en) * 2006-11-20 2011-04-05 Microsoft Corporation Single virtual client for multiple client access and equivalency
US7805420B2 (en) * 2006-11-20 2010-09-28 Microsoft Corporation Versioning and concurrency control for multiple client access of data
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8229945B2 (en) * 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US20100010937A1 (en) * 2008-04-30 2010-01-14 Rosenthal Collins Group, L.L.C. Method and system for providing risk assessment management and reporting for multi-market electronic trading
JP5463988B2 (ja) 2010-03-17 2014-04-09 富士通株式会社 構成情報管理装置、構成情報管理プログラム及び構成情報管理方法
US8266126B2 (en) * 2010-03-24 2012-09-11 Matrixx Software, Inc. System with multiple conditional commit databases
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8677055B2 (en) 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
EP2867799A1 (de) * 2012-06-29 2015-05-06 Telefonaktiebolaget LM Ericsson (Publ) Verfahren und vorrichtung zur implementierung einer verteilten datenbank
KR20140047230A (ko) * 2012-10-10 2014-04-22 (주)티베로 분산 시스템에서 분산 트랜잭션의 최적화를 위한 방법 및 트랜잭션을 최적화한 분산 시스템
US10044835B1 (en) 2013-12-11 2018-08-07 Symantec Corporation Reducing redundant transmissions by polling clients
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US10372685B2 (en) 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service
US9519510B2 (en) * 2014-03-31 2016-12-13 Amazon Technologies, Inc. Atomic writes for multiple-extent operations
US9959308B1 (en) 2014-09-29 2018-05-01 Amazon Technologies, Inc. Non-blocking processing of federated transactions for distributed data partitions
US11481385B1 (en) * 2021-01-29 2022-10-25 Neo4J Sweden Ab Graph database system to safely store data at high volume and scale

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755792A (en) 1985-06-13 1988-07-05 Black & Decker Inc. Security control system
US5065311A (en) * 1987-04-20 1991-11-12 Hitachi, Ltd. Distributed data base system of composite subsystem type, and method fault recovery for the system
US5212789A (en) * 1989-10-12 1993-05-18 Bell Communications Research, Inc. Method and apparatus for updating application databases used in a distributed transaction processing environment
US5072370A (en) 1990-05-08 1991-12-10 International Business Machines Corporation System and method for monitoring electronic data processing equipment
JPH0415840A (ja) * 1990-05-10 1992-01-21 Toshiba Corp 分散型データベース管理装置
US5212788A (en) * 1990-05-22 1993-05-18 Digital Equipment Corporation System and method for consistent timestamping in distributed computer databases
US5893117A (en) * 1990-08-17 1999-04-06 Texas Instruments Incorporated Time-stamped database transaction and version management system
US5287501A (en) * 1991-07-11 1994-02-15 Digital Equipment Corporation Multilevel transaction recovery in a database system which loss parent transaction undo operation upon commit of child transaction
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5555404A (en) 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US5423037A (en) 1992-03-17 1995-06-06 Teleserve Transaction Technology As Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes
US5530855A (en) * 1992-10-13 1996-06-25 International Business Machines Corporation Replicating a database by the sequential application of hierarchically sorted log records
US5404508A (en) 1992-12-03 1995-04-04 Unisys Corporation Data base backup and recovery system and method
US5432926A (en) * 1992-12-04 1995-07-11 International Business Machines Corporation Method and apparatus for improving database reliability and response time in a distributed transaction processing system
EP0686282A4 (de) * 1993-02-08 1997-07-02 Action Tech Inc Verfahren und gerät zur verwaltung von geschäftsverfahren
US5581750A (en) * 1993-03-15 1996-12-03 International Business Machines Corporation System and method for improving data recovery performance
US5835757A (en) * 1994-03-30 1998-11-10 Siemens Telecom Networks Distributed database management system for servicing application requests in a telecommunications switching system
US5752026A (en) * 1994-04-28 1998-05-12 The United States Of America As Represented By The Secretary Of The Navy Early commit locking computer database protocol
US5625811A (en) * 1994-10-31 1997-04-29 International Business Machines Corporation Method and system for database load balancing
US5799322A (en) * 1995-01-24 1998-08-25 Tandem Computer, Inc. System and method for stopping updates at a specified timestamp in a remote duplicate database facility
US5991771A (en) * 1995-07-20 1999-11-23 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US5960194A (en) * 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US5862318A (en) * 1995-10-26 1999-01-19 Microsoft Corporation System for generating a gapless series of identity values
US5799305A (en) * 1995-11-02 1998-08-25 Informix Software, Inc. Method of commitment in a distributed database transaction
US5850507A (en) * 1996-03-19 1998-12-15 Oracle Corporation Method and apparatus for improved transaction recovery
US5884327A (en) * 1996-09-25 1999-03-16 International Business Machines Corporation System, method and program for performing two-phase commit with a coordinator that performs no logging

Also Published As

Publication number Publication date
DE69838506D1 (de) 2007-11-15
KR20010013112A (ko) 2001-02-26
WO1998054659A3 (en) 1999-03-25
WO1998054659A2 (en) 1998-12-03
JP2002500791A (ja) 2002-01-08
EP1016005B1 (de) 2007-10-03
SE9702014L (sv) 1998-11-29
AU7683198A (en) 1998-12-30
US6216126B1 (en) 2001-04-10
SE9702014D0 (sv) 1997-05-28
CA2291009A1 (en) 1998-12-03
JP4241940B2 (ja) 2009-03-18
EP1016005A2 (de) 2000-07-05
SE521041C2 (sv) 2003-09-23

Similar Documents

Publication Publication Date Title
DE69838506T2 (de) Verfahren für transaktionen zwischen verteilten datenbanken
DE69724877T2 (de) Verfahren und Vorrichtung zum Betrieb einer Aggregation von Serverrechnern mittels eines Doppelzweck-Proxy-Servers
DE60302876T2 (de) Master-knotenauswahl in geclusterten knotenkonfigurationen
DE69814900T2 (de) Verfahren und system zur unterstützung verteilter software- entwicklung ohne bewusstsein der verteilten charakteristik der software
DE19805891B4 (de) Konfigurationsvorrichtung für eine Nebenstellenanlage
DE602005000635T2 (de) Verfahren und Netzknoten zum Konfigurieren der Topologie eines Netzwerks
DE68927508T2 (de) Zeitweilige Zustandsbewahrung für einen verteilten Dateidienst
DE69030524T2 (de) Fernanwendungsschnittstelle
EP0743595B1 (de) Kommunikationssystem mit Mitteln zum Austausch von Software
DE60301202T2 (de) Verfahren und vorrichtung zur verkehrssteuerung einer web-farm
DE3689664T2 (de) Verfahren und Gerät zur Verwaltung von veralteten Datenobjekten.
EP1901191B1 (de) Verfahren und Anordnung zur Verwaltung von Lizenzen
DE60220418T2 (de) Verfahren und Anbieter zur Systemsynchronisation
DE69126587T2 (de) Verfahren zur Verwaltung von Arbeitseinheitidentifizierern in einem verteilten Transaktionsverarbeitungssystem
DE102020113347A1 (de) Ausführung von containerisierten prozessen innerhalb der beschränkungen der verfügbaren host-knoten
DE69821243T2 (de) Rekonfigurierung eines zellularen telefonnetzes
EP1316012A2 (de) Verfahren und anordnung zur synchronisation eines auf einem ersten rechner ablaufenden programms mit einem auf einem server ablaufenden programm, computerlesbares speichermedium und computerprogramm-element
WO2007003432A1 (de) Technik zur migration einer host-umgebung auf eine neue systemplattform
EP0791884A2 (de) Verfahren zum rechnergestützten Abgleich mehrerer, in mindestens einem Rechner gespeicherten Dateikopien einer gespeicherten Datei
DE2911677B2 (de) Verfahren und Schaltungsanordnung zum Überwachen und Verhindern von Blockierungen in Datenverarbeitungssystemen mit mehreren Prozessoren
DE69025494T2 (de) Entfernte Unterbrechungsverarbeitung
DE69814697T2 (de) Vorrichtung, methode und computer programm produkt für client/server rechner mit vom client auswählbarer lokalisierung von transaktionsobjekten
DE69434184T2 (de) Verfahren zur vermeidung von unerwünschten interferenzen zwischen diensten
DE19803697C2 (de) Verfahren zum Aufrüsten eines Softwaresystems und Vorrichtung zur Durchführung des Verfahrens
EP1162851B1 (de) Verfahren zur Kommunikation zwischen Kommunikationsnetzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition