DE112012004099T5 - Transaktionsverarbeitungssystem, Verfahren und Programm - Google Patents

Transaktionsverarbeitungssystem, Verfahren und Programm Download PDF

Info

Publication number
DE112012004099T5
DE112012004099T5 DE112012004099.6T DE112012004099T DE112012004099T5 DE 112012004099 T5 DE112012004099 T5 DE 112012004099T5 DE 112012004099 T DE112012004099 T DE 112012004099T DE 112012004099 T5 DE112012004099 T5 DE 112012004099T5
Authority
DE
Germany
Prior art keywords
transaction
local
global
updated
value
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.)
Pending
Application number
DE112012004099.6T
Other languages
English (en)
Inventor
Hiroshi Horii
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012004099T5 publication Critical patent/DE112012004099T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details

Abstract

Aufgabe Realisieren einer lokalen Transaktionsverarbeitung mit hoher Leistung zum Aktualisieren und Abfragen von Zuordnungseinträgen auf einem Server in einem verteilten KVS-System, bei gleichzeitigem Realisieren einer globalen Transaktionsverarbeitung zum Aktualisieren und Abfragen von Zuordnungseinträgen auf mehreren Servern. Lösung Unter Verwendung eines KVS-Transaktionsverarbeitungsmechanismus werden vier Sperrstatus verwaltet, d. h. S (durch eine globale Transaktion oder eine lokale Transaktion referenziert werden), Init (kein Zugriff), LX (durch eine lokale Transaktion aktualisiert werden) und GX (durch eine globale Transaktion aktualisiert werden). Wenn dann eine lokale Transaktion einen Zuordnungseintrag referenziert und aktualisiert, für den von einer weiteren, globalen Transaktion GX akquiriert wird, wird die lokale Transaktion auf eine globale Transaktion hochgestuft. In diesem Fall wird als Erstes eine Startverarbeitung als die globale Transaktion ausgeführt, um eine Transaktions-ID festzulegen. Als Nächstes werden ein festgeschriebener Wert, ein Wert, der aktualisiert wird, und eine Transaktions-ID, die aktualisiert wird, in alle Zuordnungseinträge eingesetzt, für die aktuell LX-Sperren akquiriert werden. Als Nächstes wird eine weitere lokale Transaktion für alle Zuordnungseinträge gestartet, für die aktuell S-Sperren akquiriert werden, um S-Sperren zu akquirieren. Als Nächstes wird die ursprüngliche lokale Transaktion festgeschrieben. Als ein Ergebnis werden die akquirierten LX-Sperren auf GX-Sperren hochgestuft. Als Nächstes wartet die Prozedur auf das Beenden der globalen Transaktion, nachdem sie GX akquiriert hat. Nach dem Beenden der globalen Transaktion als dem Warteziel wird das Akquirieren von S-Sperren (GX-Sperren) als eine globale Transaktion versucht.

Description

  • Gebiet der Erfindung
  • Diese Erfindung betrifft ein verteiltes Verarbeitungssystem, insbesondere Transaktionsverarbeitung in dem verteilten Datenbanksystem und ganz besonders Transaktionsverarbeitung in einem Schlüssel-Wert-Speichersystem (key-value store system, im Folgenden als KVS-System abgekürzt).
  • Hintergrund der Erfindung
  • Das verteilte Datenbanksystem ist weithin bekannt. Beispielsweise wird in der japanischen Patentanmeldung mit der Veröffentlichungs-Nr. 2007-188518 ein verteiltes Datenbanksystem offenbart, bei dem Eigentümergruppen verwendet werden, wobei ein Schritt des Änderns von Daten, die das Eigentum an Datenelementen anzeigen, eine atomare Operation ist.
  • Bei dem verteilten Datenbanksystem wird üblicherweise eine relationale Datenbank realisiert und Abfragesyntax wie beispielsweise SQL verwendet.
  • In jüngerer Zeit wird eine als ein Schlüssel-Wert-Speicher (key-value store, KVS) bezeichnete Datenbankverwaltungssoftware verwendet, um einen Wert durch Zuordnen eines Schlüssels zu dem Wert zu schreiben und einen Wert durch Angeben eines dem Wert zugeordneten Schlüssels zu lesen. Durch die Merkmale der unkomplizierten Schnittstelle werden ein hoher Durchsatz für Lesen und Schreiben von Werten sowie eine der Anzahl von Servern entsprechende hohe Skalierbarkeit bewirkt. Daher wurde auch ein verteilter KVS realisiert, der dazu in der Lage ist, Daten an mehrere Server zu verteilen.
  • In dem verteilten Datenbanksystem wird im Allgemeinen eine verteilte Transaktion unter Verwendung einer Zwei-Phasen-Festschreibung (two-phase commit, dt. auch: Zwei-Phasen-Commit) verarbeitet. Der Transaktionsstatus wird von jedem Ressourcenmanager und Transaktionsmonitor verwaltet, um eine mehrere verteilte Ressourcen übergreifende Transaktion zu erreichen. Wenn ein solcher Mechanismus jedoch in einem KVS eingeführt wird, geht die Eigenschaft der Unkompliziertheit des KVS verloren, was zu einer Beeinträchtigung des Verwaltungskomforts und der Skalierbarkeit führt. Daher wird bevorzugt bei einem verteilten KVS zum Erreichen einer globalen Transaktion keine Technik zum Verwenden eines verteilten Sperrenmanagers eingesetzt wie sie in der japanischen Patentanmeldung (Übersetzung der PCT-Anmeldung) mit der Veröffentlichungs-Nr. 2009-525536 offenbart wird. Aus diesem Grund ist es bei einem üblichen verteilten KVS erforderlich, dass ein Client nur eine Transaktion (lokale Transaktion) in jedem Server anfordern kann und eine Transaktion für Daten, die von mehreren Servern verwaltet werden, verarbeitet werden sollte, um durch Kombinieren lokaler Transaktionen eine verteilte Transaktion (globale Transaktion) zu erreichen.
  • Jedoch lässt sich in einem auf unkomplizierte Weise realisierten KVS mit verteilten Transaktionen keine globale Transaktion erreichen. Wenn beispielsweise ein Client-Computer eine Anforderung an zwei Server stellt, dass zwei lokale Transaktionen zu einer globalen Transaktion zusammengestellt werden sollen, und nach dem Festschreiben einer der lokalen Transaktionen auf dem Server in dem Client-Computer ein Fehler auftritt, lässt sich nicht feststellen, ob die andere lokale Transaktion auf dem Server festgeschrieben werden kann.
  • Daher wird ein Verfahren zum Koordinieren einer globalen Transaktion mit lokalen Transaktionen in Google App Engine in Slim3 an Google App Engine for Java: Development of cloud applications with Slim3, Yasuo Higa und Shinich Ogawa, Shuwa System Co. Ltd., Seiten 241 bis 251, offenbart. Bei diesem Verfahren wird in dem KVS eine Verwaltungszuordnung als eine spezielle Zuordnung zum Verwalten aller globalen Transaktionen definiert, und Datenzuordnungen werden nach Anwendung als Zuordnungen definiert, die nicht nur zum Speichern festgeschriebener Werte, sondern auch zum Speichern vorläufiger (dirty) Werte dienen, die mit IDs vom Aktualisieren globaler Transaktionen aktualisiert werden. Die Verwaltungszuordnung verwaltet als der Transaktionsmonitor bei dem Zwei-Phasen-Festschreibungsmechanismus, welche globalen Transaktionen festgeschrieben wurden, und Datenzuordnungen verwalten als die Ressourcenmanager, welche Daten bei dem Zwei-Phasen-Festschreibungsmechanismus für das Festschreiben vorbereitet werden, wodurch mit ihrer Hilfe dieselbe Funktion realisiert wird wie die Zwei-Phasen-Festschreibung in einem verteilten KVS, der nur lokale Transaktionen unterstützt. Die Gleichzeitigkeit der Datenoperationen wird mithilfe von Transaktions-IDs in den Datenzuordnungen und die globalen Transaktionsstatus in der Verwaltungszuordnung gesteuert. Mit anderen Worten wird bei dem Nebenläufigkeitssteuermechanismus niemals ein Nebenläufigkeitssteuermechanismus (lokaler Nebenläufigkeitssteuermechanismus) für von dem KVS bereitgestellte lokale Transaktionen verwendet.
  • Wenn eine globale Transaktion in einem verteilten KVS mithilfe einer solchen herkömmlicherweise bekannten Technik realisiert wird, können eine globale Transaktion und eine lokale Transaktion nicht gemischt werden, da der Nebenläufigkeitssteuermechanismus für lokale Transaktionen nicht mit einem Nebenläufigkeitssteuermechanismus für globale Transaktionen zusammenarbeitet. Wenn beispielsweise ein Client-Computer von zwei Servern verwaltete Werte mithilfe eines Koordinierens einer globalen Transaktion aktualisiert, um sie atomar zu aktualisieren, kann der andere Client die Werte, die in einer lokalen Transaktion aktualisiert werden, lesen und aktualisieren, da die Nebenläufigkeitssteuerung für die globale Transaktion keine Sperren von lokalen Nebenläufigkeitssteuermechanismen von Servern in dem KVS akquiriert.
  • Daher muss sogar eine Verarbeitung, für die bei der herkömmlicherweise bekannten Technik eine lokale Transaktion ausreicht, mithilfe einer globalen Transaktion ausgeführt werden. Da die globale Transaktion einen größeren Aufwand mit sich bringt als die lokale Transaktion, ist die Verringerung der Verarbeitungsgeschwindigkeit als Problem aufgetreten.
  • Stand der Technik mit Fundstellen
  • Patentdokumente
    • Patentdokument 1 Japanische Patentanmeldung mit der Veröffentlichungs-Nr. 2007-188518
    • Patentdokument 2 Japanische Patentanmeldung (Übersetzung der PCT-Anmeldung) mit der Veröffentlichungs-Nr. 2009-525536
  • Nicht-Patent-Dokument
    • Nicht-Patent-Dokument 1 Slim3 on Google App Engine for Java: Development of cloud applications with Slim3, Yasuo Higa und Shinich Ogawa, Shuwa System Co. Ltd., Seiten 241 bis 251.
  • Kurzdarstellung der Erfindung
  • Durch die Erfindung zu lösendes Problem
  • Es stellt eine Aufgabe dieser Erfindung dar, zu bewirken, dass ein Nebenläufigkeitssteuermechanismus für lokale Transaktionen mit einem Nebenläufigkeitssteuermechanismus für globale Transaktionen zusammenwirkt, um eine sehr schnelle lokale Transaktion zum Aktualisieren und Ausführen einer Abfrage über Zuordnungseinträge auf einem Server zu realisieren, während eine verteilte Transaktion (globale Transaktion) zum Aktualisieren und Ausführen einer Abfrage über Zuordnungseinträge auf mehreren Servern in einem verteilten KVS-System realisiert wird, das nur lokale Transaktionen unterstützt.
  • Mittel zur Lösung des Problems
  • Die vorliegende Erfindung löst das vorstehend genannte Problem durch Realisieren von Nebenläufigkeitssteuerung zwischen einer lokalen Transaktion und einer globalen Transaktion auf eine Weise, dass während einer Abfrage/Aktualisierungsverarbeitung für Zuordnungseinträge, die von einem lokalen Nebenläufigkeitssteuermechanismus als eine lokale Transaktion zugelassen wird, geprüft wird, ob ein zu referenzierender und aktualisierender Zuordnungseintrag als eine andere globale Transaktion aktualisiert wird, und wenn er aktualisiert wird, wird die gerade ablaufende lokale Transaktion auf eine globale Transaktion hochgestuft, um eine anschließende Verarbeitung auf eine Verarbeitung unter Verwendung von Nebenläufigkeitssteuerung für die globale Transaktion (globaler Nebenläufigkeitssteuermechanismus) umzuschalten.
  • Mit anderen Worten, ein System der vorliegenden Erfindung akquiriert bei einer weiteren lokalen Transaktion erneut eine Lesesperre (gemeinsame Sperre), die von dem lokalen Nebenläufigkeitssteuermechanismus während der lokalen Transaktionsverarbeitung akquiriert wurde, und modifiziert in einer vorhandenen lokalen Transaktion einen erhaltenen Zuordnungseintrag, um eine Schreibsperre (exklusive Sperre) des Zuordnungseintrags in eine für eine globale Transaktion zu ändern, um auf eine Schreibsperre des globalen Nebenläufigkeitssteuermechanismus umzuschalten, wodurch ein Hochstufen auf eine globale Transaktion erfolgt.
  • Zu diesem Zweck verteilt das System der vorliegenden Erfindung eine Verwaltungszuordnung mit einem Paar aus Transaktions-ID einer globalen Transaktion und deren Status an jeden Server als eine Zuordnung in einem KVS, um den Status der globalen Transaktion zu verwalten. Durch Platzieren der Verwaltungszuordnung auf diese Weise werden Lese-Schreib-Konflikte zwischen lokalen Transaktionen, zwischen globalen Transaktionen und zwischen einer lokalen Transaktion und einer globalen Transaktion durch den lokalen Nebenläufigkeitssteuermechanismus gelöst, ein Schreib-Schreib-Konflikt zwischen globalen Transaktionen wird durch Verwenden der Verwaltungszuordnung gelöst, ein Schreib-Schreib-Konflikt zwischen einer lokalen Transaktion und einer globalen Transaktion wird durch den lokalen Nebenläufigkeitssteuermechanismus gelöst, und ein Schreib-Lese-Konflikt und ein Schreib-Schreib-Konflikt zwischen einer globalen Transaktion und einer lokalen Transaktion werden durch Verwenden der Verwaltungszuordnung nach dem Hochstufen der lokalen Transaktion auf die globale Transaktion gelöst.
  • Erfindungsgemäß wird ein KVS-Transaktionsmechanismus dazu verwendet, für jeden Zuordnungseintrag vier Sperrstatus zu verwalten, d. h. S (Lesesperre, akquiriert während eines Referenziertwerdens durch eine globale Transaktion oder eine lokale Transaktion), Init (kein Zugriff), LX (Schreibsperre, akquiriert während des Aktualisiertwerdens durch eine lokale Transaktion) und GX (Schreibsperre, akquiriert während des Aktualisiertwerdens durch eine globale Transaktion).
  • Dann wird erfindungsgemäß bei einem Versuch, eine S-Sperre (LX-Sperre) für einen bestimmten Zuordnungseintrag zu akquirieren eine Verarbeitung zum Hochstufen von einer lokalen Transaktion auf eine globale Transaktion gestartet, wenn erkannt wird, dass eine Sperre für den Zuordnungseintrag durch eine weitere globale Transaktion GX ist.
  • In einem ersten Schritt wird eine Startverarbeitung für eine globale Transaktion ausgeführt, um als Erstes eine Transaktions-ID zu festzulegen.
  • Als Nächstes werden ein Wert CURRENT (AKTUELL) vor dem Aktualisieren, ein Wert DIRTY (VORLÄUFIG), der aktualisiert wird, sowie die erstellte Transaktions-ID als Werte in alle Zuordnungseinträge eingesetzt, für die aktuell LX-Sperren akquiriert werden.
  • Als Nächstes wird eine weitere lokale Transaktion für alle Zuordnungseinträge gestartet, für die aktuell S-Sperren akquiriert werden, um auf redundante Weise S-Sperren zu akquirieren. Dies ist immer erfolgreich, da die S-Sperren bei der ursprünglichen lokalen Transaktion akquiriert wurden.
  • Als Nächstes wird die ursprüngliche lokale Transaktion festgeschrieben. Als ein Ergebnis werden die LX-Sperren auf GX-Sperren hochgestuft.
  • Als Nächstes wartet die Prozedur auf das Beenden der globalen Transaktion, nachdem sie GX akquiriert hat.
  • Nach dem Beenden der globalen Transaktion als dem Warteziel wird das Akquirieren von S-Sperren (GX-Sperren) als eine globale Transaktion versucht.
  • Der Vorteil der Erfindung
  • Gemäß dieser Erfindung wird eine Funktion zum umstandsgemäßen Hochstufen einer lokalen Transaktion auf eine globale Transaktion bereitgestellt, um eine sehr schnelle lokale Transaktion zum Aktualisieren und Ausführen einer Abfrage über Zuordnungseinträge auf einem Server in einem verteilten KVS-System zu realisieren, während eine globale Transaktion zum Aktualisieren und Ausführen einer Abfrage über Zuordnungseinträge auf mehreren Servern realisiert wird.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein schematisches Schaubild des gesamten Systems zum Ausführen der vorliegenden Erfindung;
  • 2 ist ein schematisches Blockschaltbild der Hardware eines Client-Computers;
  • 3 ist ein schematisches Blockschaltbild der Hardware eines Servers;
  • 4 ist ein Funktionsschaubild eines Client-Computers und eines Servers;
  • 5 ist ein Schaubild, das eine Übersicht eines herkömmlichen KVS-Systems zeigt;
  • 6 ist ein Schaubild, das ein Beispiel für eine von dem herkömmlichen KVS-System ausgeführte Verarbeitung zeigt;
  • 7 ist ein Schaubild, das ein Beispiel für eine von einem herkömmlichen KVS-System ausgeführte Verarbeitung zum Ausführen einer globalen Transaktion zeigt;
  • 8 ist ein Schaubild, das eine Übersicht eines erfindungsgemäßen KVS-Systems zeigt;
  • 9 ist ein Schaubild, das Statusübergänge von Sperren zeigt;
  • 10 ist ein Ablaufplan, der eine Verarbeitung zeigt, wenn eine Transaktion zum ersten Mal eine Abfrage/Aktualisierungsverarbeitung ausführt;
  • 11 ist ein Ablaufplan, der eine Verarbeitung zeigt, wenn die Transaktion zum zweiten Mal sowie weitere Male eine Abfrage/Aktualisierungsverarbeitung ausführt;
  • 12 ist ein Ablaufplan, der eine Startverarbeitung für eine globale Transaktion zeigt;
  • 13 ist ein Ablaufplan, der eine Verarbeitung zum Hochstufen von einer lokalen Transaktion auf eine globale Transaktion zeigt;
  • 14 ist ein Ablaufplan, der eine Abfrageverarbeitung bei einer globalen Transaktion zeigt;
  • 15 ist ein Ablaufplan, der eine Aktualisierungsverarbeitung bei einer globalen Transaktion zeigt;
  • 16 ist ein Ablaufplan, der eine Festschreibungsverarbeitung bei einer globalen Transaktion zeigt;
  • 17 ist ein Ablaufplan, der eine Warteverarbeitung für eine globale Transaktion zeigt;
  • 18 ist ein Ablaufplan, der eine Beendigungsverarbeitung für eine globale Transaktion zeigt, und
  • 19 ist ein Schaubild, das ein Beispiel für den Betrieb des erfindungsgemäßen KVS-Systems zeigt.
  • Weg zur Ausführung der Erfindung
  • Im Folgenden wird mit Bezug auf die begleitenden Zeichnungen eine bevorzugte Ausführungsform der Erfindung beschrieben. In allen Zeichnungen bezeichnen dieselben Bezugszeichen, wenn nicht anders angegeben, dieselben Ziele. Es sollte beachtet werden, dass es sich bei der folgenden Beschreibung um eine bevorzugte Ausführungsform der vorliegenden Erfindung handelt, und dass diese Erfindung nicht auf den in dieser Ausführungsform beschriebenen Inhalt beschränkt ist.
  • 1 ist ein schematisches Schaubild, das das gesamte System zum Ausführen der vorliegenden Erfindung zeigt. In 1 greifen mehrere Client-Computer 102a, 102b, ..., 102z gemäß einem Protokoll wie beispielsweise HTTP über das Internet 104 auf ein verteiltes Verarbeitungssystem 106 zu.
  • Das verteilte Verarbeitungssystem 106 verfügt über mehrere Server 106a, 106b, ..., 106z, die untereinander über LAN, WAN oder dergleichen verbunden sind. Das verteilte Verarbeitungssystem 106 ist ein System zum Erstellen einer verteilten Datenbank unter Verwendung eines Schlüssel-Wert-Speichers. Mit anderen Worten wird jedem der Server 106a, 106b, ..., 106z eine ID zugewiesen, und es wird bevorzugt ein Hash-Wert mod (hash value mod) für einen Schlüssel berechnet (obwohl keine Einschränkung auf dieses Verfahren besteht), um auf eindeutige Weise einen Server zu ermitteln, der über den Schlüssel verfügt.
  • Auf diese Weise wird jeder der Server 106a, 106b, ..., 106z, auf den jeder der Client-Computer 102a, 102b, ..., 102z zugreifen soll, durch den Schlüssel ermittelt, der referenziert werden soll. Einer der Server 106a, 106b, ..., 106z ist bevorzugt ein als Katalogserver bezeichneter Server, auf dem auf den anderen Servern gespeicherte Schlüssel sowie andere Informationen derart gespeichert sind, dass jeder der Client-Computer 102a, 102b, ..., 102z einmal auf den Katalogserver zugreift, um Informationen zu erhalten, um zu ermitteln, auf welchen der Server 106a, 106b, ..., 106z der Client-Computer zugreifen soll, um eine Verbindung mit dem vorgeschriebenen Server herzustellen. Alternativ kann auch ein Verfahren eingesetzt werden, bei dem von einem beliebigen Server, auf den der Client-Computer zugreift, an die anderen Server gesendet wird, um die Informationen zu erhalten. Der Einfachheit halber wird nachfolgend ein Fall beschrieben, bei dem bereits ein Zielserver gefunden und eine Verbindung hergestellt wurde.
  • Jeder der Client-Computer 102a, 102b, ..., 102z erstellt eine eindeutige globale Transaktions-ID, um auf das verteilte Verarbeitungssystem 106 zuzugreifen, und verwendet die globale Transaktions-ID für spätere Transaktionen mit dem verteilten Verarbeitungssystem 106.
  • Als Nächstes wird mit Bezug auf 2 eine Hardwarekonfiguration des Client-Computers beschrieben, die durch die Bezugszeichen 102a, 102b, ..., 102z in 1 bezeichnet wird. In 2 verfügt der Client-Computer über einen Hauptspeicher 206, eine CPU 204 und einen IDE-Controller 208, und diese Komponenten sind mit einem Bus 202 verbunden. Ein Bildschirm-Controller 214, eine Datenübertragungs-Schnittstelle 218, eine USB-Schnittstelle 220, eine Audio-Schnittstelle 222 sowie ein Tastatur/Maus-Controller 228 sind außerdem mit dem Bus 202 verbunden. Ein Festplattenlaufwerk (hard disk drive, HDD) 210 und ein DVD-Laufwerk 212 sind mit dem IDE-Controller 208 verbunden. Das DVD-Laufwerk 212 wird dazu verwendet, bei Bedarf ein Programm von einem CD-ROM oder einer DVD einzuführen. Eine Bildschirmeinheit 216 mit einem LCD-Bildschirm ist bevorzugt mit dem Bildschirm-Controller 214 verbunden. Ein Anwendungsbildschirm wird mithilfe eines Webbrowsers auf der Bildschirmeinheit 216 angezeigt.
  • Eine Einheit wie beispielsweise ein erweitertes Festplattenlaufwerk kann bei Bedarf mit der USB-Schnittstelle 220 verbunden werden.
  • Eine Tastatur 230 und eine Maus 232 sind mit dem Tastatur/Maus-Controller 228 verbunden. Die Tastatur 230 wird dazu verwendet, um Schlüsseldaten oder ein Kennwort zum Durchführen einer Suche einzugeben.
  • Die CPU 204 kann von jeder Art sein, die beispielsweise eine 32-Bit-Architektur oder eine 64-Bit-Architektur als Grundlage hat, und es können Intel Pentium (eingetragene Marke von Intel Corporation) 4 oder Core (eingetragene Marke) 2 Duo oder AMD Athlon (Marke) oder dergleichen verwendet werden.
  • Mindestens ein Betriebssystem und ein clientseitiges Programm 402a (4) zum Zugreifen auf das verteilte Verarbeitungssystem 106 sind auf dem Festplattenlaufwerk 210 gespeichert. Das Betriebssystem wird beim Systemstart in den Hauptspeicher 206 geladen. Windows XP (eingetragene Marke von Microsoft Corporation), Windows Vista (eingetragene Marke von Microsoft Corporation), Windows (eingetragene Marke von Microsoft Corporation) 7, Linux (eingetragene Marke von Linus Torvalds) oder dergleichen können als Betriebssystem verwendet werden. Das clientseitige Anwendungsprogramm 402a wird später mit Bezug auf ein Blockschaltbild aus 4 und Ablaufpläne aus 9 bis 14 ausführlich beschrieben.
  • Bei der Datenübertragungsschnittstelle 218 wird die von dem Betriebssystem bereitgestellte TCP/IP-Datenübertragungsfunktion verwendet, um mit dem verteilten Verarbeitungssystem 106 gemäß dem Ethernet-Protokoll (Ethernet ist eine eingetragene Marke) oder dergleichen mithilfe des Internets 104 Daten auszutauschen.
  • 3 ist ein schematisches Blockschaltbild einer Hardwarekonfiguration des Servers 106a oder dergleichen in dem verteilten Verarbeitungssystem 106. Wie gezeigt, sind die Server 106a, 106b, ..., 106z mithilfe des Internets 104 verbunden. Da die Server 106a, 106b, ..., 106z im Wesentlichen dieselbe Konfiguration aufweisen, wird der Server 106a hier als der Vertreter für die Server gezeigt. Wie in 3 gezeigt, sind die Client-Computer 102a, 102b, ..., 102z über das Internet 104 mit einer Datenübertragungsschnittstelle 302 des Servers 106a verbunden. Die Datenübertragungsschnittstelle 302 ist außerdem mit einem Bus 304 verbunden, und eine CPU 306, ein Hauptspeicher (RAM) 308 sowie ein Festplattenlaufwerk (HDD) 310 sind mit dem Bus 304 verbunden.
  • Obwohl dies nicht gezeigt wird, können auch eine Tastatur, eine Maus und ein Bildschirm mit dem Server 106a verbunden sein, sodass das Wartungspersonal diese Komponenten für die Arbeit an der allgemeinen Verwaltung und Wartung des Servers 106 verwenden wird.
  • Ein Betriebssystem ist auf dem Festplattenlaufwerk 310 des Servers 106a gespeichert.
  • Auf dem Festplattenlaufwerk 310 ist außerdem Software gespeichert wie beispielsweise Apache, um zu bewirken, dass der Server 106a wie ein Webserver funktioniert, Java EE zum Realisieren einer virtuellen Java-Umgebung und ein erfindungsgemäßes Anwendungsprogramm 402a, welches später beschrieben wird, das in der virtuellen Java-Umgebung ausgeführt wird, sind ebenso gespeichert. Diese Softwareprogramme werden beim Start des Servers 106a in den Hauptspeicher 308 geladen und ausgeführt. Dadurch werden die Client-Computer 102a, 102b, ..., 102z in die Lage versetzt, mithilfe des TCP/IP-Protokolls auf den Server 106 zuzugreifen.
  • Außerdem ist auf dem Festplattenlaufwerk 310 des Servers 106a Software zum Realisieren eines KVS gespeichert wie beispielsweise IBM(R) WebSphere eXtreme Scale. Des Weiteren ist auf dem Festplattenlaufwerk 310 ein Transaktionsverarbeitungsprogramm 406a (4) für ein erfindungsgemäßes KVS gespeichert. Die Funktion dieses Transaktionsverarbeitungsprogramms 406a wird später mit Bezug auf das Blockschaltbild aus 4 und die Ablaufpläne aus 9 bis 14 ausführlich beschrieben.
  • Als der vorstehend genannte Server 106a kann ein Servermodell wie beispielsweise IBM (eingetragene Marke von International Business Machines Corporation) System X, System i oder System p verwendet werden, die bei International Business Machines Corporation erhältlich sind. Zu Beispielen für verwendbare Betriebssysteme zählen in diesem Fall AIX (eingetragene Marke von International Business Machines Corporation), UNIX (eingetragene Marke von The Open Group), Linux (eingetragene Marke), Windows (eingetragene Marke) 2003 Server und dergleichen.
  • 4 ist ein schematisches Blockschaltbild, das Verarbeitungsprogramme auf jedem der Client-Computer 102a, 102b, ..., 102z und entsprechend jedem der Server 106a, 106b, ..., 106z zeigt. Der Client-Computer 102a und der Server 106a werden hier als die Vertreter für die Client-Computer und die Server gezeigt.
  • Das Anwendungsprogramm 402a auf der Seite des Client-Computers wird auf dem Festplattenlaufwerk 210 gespeichert, in den Hauptspeicher 206 geladen und mit vorgegebenen Operationen des Benutzers auf dem Client-Computer ausgeführt, wobei es über die Funktionen verfügt, von dem Client-Computer aus einem KVS-System auf dem Server Anweisungen zu erteilen wie beispielsweise Transaktionsstart, Datenabfrage, Datenaktualisierung, Festschreiben (commit) und Transaktionsbeendigung.
  • Das Anwendungsprogramm 402a verfügt über eine Funktion 404a zum Erstellen einer eindeutigen globalen Transaktions-ID (TxID) in dem gesamten System. Bei einem Beispiel für das Verfahren zum Erstellen der globalen Transaktions-ID wird eine für jeden der Client-Computer 102a, 102b, ..., 102z und der Server 106a, 106b, ..., 106z eindeutige ID so vergeben, dass jedes Mal, wenn ein Client-Computer eine Transaktion startet, die ID des Client-Computers plus eine auf dem Client-Computer inkrementierte Seriennummer als die globale Transaktions-ID festgelegt wird. Allerdings kann auch jedes andere Verfahren zum Festlegen einer eindeutigen globalen Transaktions-ID in dem gesamten System verwendet werden.
  • Obwohl das Anwendungsprogramm 402a die globale Transaktions-ID zum Zugreifen auf den Server 106a erstellen kann, kann es auch andere globale Transaktions-IDs erstellen, um gleichzeitig auf mehrere Server zuzugreifen, um mehrere globale Transaktionen zu verarbeiten.
  • Auf dem Festplattenlaufwerk 310 des Servers 106a sind das Transaktionsverarbeitungsprogramm 406a, ein KVS-Programm 408a wie beispielsweise IBM(R) WebSphere eXtreme Scale und von dem KVS-Programm 408a zu referenzierende Schlüssel-Wert-Paare gespeichert. Das Transaktionsverarbeitungsprogramm 406a und das KVS-Programm 408a werden in den Hauptspeicher 308 geladen, um beim Start des Servers 106a ausgeführt zu werden.
  • Als Reaktion auf eine Anforderung, die von einer Transaktions-ID einer globalen Transaktion von dem Client-Computer 102a begleitet wird, steuert das Transaktionsverarbeitungsprogramm 406a das KVS-Programm 408a so, dass es eine Verarbeitung ausführt, die das Akquirieren einer Sperre für einen Zuordnungseintrag, das Verarbeiten für eine Festschreibungsoperation (commit) oder Rücksetzoperation (rollback) und bevorzugt das Erstellen einer Verwaltungszuordnung 412a in dem Hauptspeicher 308, die Einträge aufweist, zu denen globale Transaktions-IDs, Status und in Warteschlangen eingereihte globale Transaktions-IDs zählen, und ein Unterhalten der Verwaltungszuordnung 412a für jeden Server einschließt.
  • Vor einer Beschreibung der Konfiguration und des Betriebs eines erfindungsgemäßen KVS-Systems werden die Konfigurationen und Operationen einiger üblicher herkömmlicher KVS-Systeme beschrieben. Es wird in Betracht gezogen, dass die Merkmale des erfindungsgemäßen Systems durch Bezugnahme auf diese herkömmlichen Systeme deutlicher gemacht werden.
  • 5 ist ein Schaubild, das die Konfiguration eines üblichen herkömmlichen KVS zeigt. Der KVS ist hier wiederum so konfiguriert, dass Daten wie gezeigt in Daten 502a, 502b, 502c und 502d unterteilt und an mehrere Server 106a, 106b, 106c und 106d verteilt werden. Ein Client-Computer 102b stellt an einen Server eine Anforderung nach Transaktionsverarbeitung, aber wie der Client-Computer 102a kann auch der Client-Computer 102b an zwei Server Anforderungen nach Transaktionsverarbeitung stellen. In diesem Fall werden die Daten so verteilt, dass jede zwei Datenmengen nicht überschneidend sind. Bevorzugt sollte jeder Server, auf dem Daten platziert sind, über die Daten durch Berechnen eines Hash-Wert-Mod für einen Schlüssel entscheiden.
  • Die Client-Computer 102a und 102b senden Befehle wie beispielsweise „begin” (mit einer Transaktion beginnen), „put” (einen Schlüssel und einen Wert einander zuordnen), „get” (einen einem Schlüssel zugeordneten Wert beschaffen) und „commit” (eine Aktualisierung permanent machen), an einen durch den Schlüssel eindeutig festgelegten Server, um eine Anfrage nach Verarbeitung zu stellen.
  • 6 ist ein Schaubild, das ein Beispiel für Transaktionsverarbeitung zwischen dem Client-Computer 102a und dem Client-Computer 102b und dem Server 106a und dem Server 106b in dem üblichen herkömmlichen KVS-System zeigt. Tx1, Tx2 und Tx3 sind jeweils Transaktions-IDs lokaler Transaktionen. Bei diesem Beispiel weist ein Client 1, d. h. der Client-Computer 102a, einen Server 1, d. h. den Server 106a, an, put(K1, U1) für die Datenzuordnung auszuführen, weist einen Server 2 an, d. h. den Server 106b, put(K3, U3) für die Datenzuordnung nach dem Ausführen von get(K4) für die Datenzuordnung auszuführen, weist den Server 1 an, eine Festschreibungsoperation auszuführen, und weist dann den Server 2 an, eine Festschreibungsoperation auszuführen.
  • Andererseits weist der Client 2, d. h. der Client-Computer 102b, den Server 1 an, eine Verarbeitung für die Datenzuordnung auszuführen, um put(K2, U2), get(K5), put(K1, U1') auszuführen und der Reihe nach festzuschreiben.
  • Wenn in diesem Fall vor der Festschreibungsverarbeitung auf dem Server 2, nachdem der Server 1 bei der Festschreibungsverarbeitung eine Festschreibungsoperation abgeschlossen hat, in dem Client 1 ein Fehler auftritt, kann der Client 1 K1 und K3 nicht atomar aktualisieren und daher die globale Transaktion nicht realisiert werden, da der Server 2 nicht ermitteln kann, ob die Transaktion festgeschrieben werden soll.
  • Um dieses Problem zu lösen, wurde ein KVS-System wie in 7 gezeigt entwickelt, das eine Zwei-Phasen-Festschreibungsoperation zur Grundlage hat, um eine globale Transaktion zu ermöglichen. In einem solchen System wird eine Lesesperre in einer lokalen Transaktion gehalten, und eine Schreibsperre wird als ein Zuordnungseintrag value[CURRENT->DIRTY, LOCK] gehalten, der eine Transaktions-ID (LOCK) (SPERRE) einer globalen Transaktion enthält, die die Schreibsperre zusammen mit einem festgeschriebenen Wert (CURRENT) akquiriert, bevor sie aktualisiert und ein Wert (DIRTY) aktualisiert wird. Der Einfachheit halber wird nachfolgend angenommen, dass jeder Zuordnungseintrag aus einer Spalte SCHLÜSSEL, einer Spalte WERT und einer Spalte SPERRE besteht, und dass (CURRENT->DIRTY) als CURRENT- und DIRTY-Werte in der Spalte WERT gespeichert werden und ein LOCK-Wert in der Spalte SPERRE gespeichert wird. Wenn kein DIRTY-Wert vorhanden ist, wird nur CURRENT in der Spalte WERT gespeichert. In 7 sind außerdem Tx1-1, Tx1-2, Tx2-1, Tx2-2, Tx2-3, GTX1-1 und GTx1-2 Transaktions-IDs lokaler Transaktionen und GTx1 und GTx2 sind Transaktions-IDs globaler Transaktionen. Die als Tx1-1, Tx1-2, GTx1-1 und GTx1-2 bezeichneten lokalen Transaktionen sind lokale Transaktionsprozesse zum Verarbeiten der als GTx1 bezeichneten globalen Transaktion.
  • In dem Client-Computer 102a als Client 1 weist die lokale Transaktion GTx1-1 zuerst den Server 3 (Server 106c) an, eine Festschreibungsoperation für die Verwaltungszuordnung nach put(GTxA, working) auszuführen.
  • Dann weist der Client 1 den Server 1 (Server 106a) in der lokalen Transaktion Tx1-1 an, eine Festschreibungsoperation für die Verwaltungszuordnung nach put(K1, V1->U1, GTxA) auszuführen.
  • Als Nächstes weist der Client 1 den Server 2 (Server 106b) in der lokalen Transaktion Tx2-1 an, für die Verwaltungszuordnung get(K4) auszuführen.
  • Als Nächstes weist der Client 1 den Server 2 in der lokalen Transaktion Tx2-2 an, put(K3, V3->U3, GTxA) für die Verwaltungszuordnung auszuführen und festzuschreiben.
  • Als Nächstes weist der Client 1 den Server 3 in der lokalen Transaktion GTx1-2 an, put(GTxA, committed) für die Verwaltungszuordnung auszuführen und festzuschreiben.
  • Als Nächstes weist der Client 1 den Server 1 in der lokalen Transaktion Tx1-2 an, put(K1, U1, NULL) für die Verwaltungszuordnung auszuführen und festzuschreiben.
  • Als Nächstes weist der Client 1 den Server 2 in der lokalen Transaktion Tx2-1 an, eine Festschreibungsoperation auszuführen.
  • Als Nächstes weist der Client 1 den Server 2 in der lokalen Transaktion Tx2-3 an, put(K1, U3, NULL) für die Verwaltungszuordnung auszuführen und festzuschreiben.
  • Andererseits weist der Client 2, d. h. der Client-Computer 102b, den Server 1 in der lokalen Transaktion Tx3 an, put(K2, U2, NULL), get(K5), put(K1, U1', NULL) und eine Festschreibungsoperation für die Verwaltungszuordnung auszuführen.
  • Bei einer solchen Konfiguration kann der Client 1 K1- und K3-Werte atomar aktualisieren, aber dem Client 2 ist es nicht gestattet, einen K1-Wert in einer lokalen Transaktion zu aktualisieren. Dies verhält sich so, da der Client 1 keine Sperre eines lokalen Nebenläufigkeitssteuermechanismus auf dem Server 1 für einen Zuordnungseintrag für K1 hält, der aktualisiert wird, und daher kann der Client 2 Daten für den K1-Wert aktualisieren. Allerdings sollte in dem globalen Transaktionsprozess der Eintrag im Wesentlichen nicht aktualisiert werden können, da der Client 1 einen Eintrag mit GTxA als einem LOCK-Wert vornimmt. Um dies zu vermeiden, müssen alle Transaktionen auf globale Transaktionen hochgestuft werden. Da jedoch eine mithilfe mehrerer lokaler Transaktionen realisierte globale Transaktion mit einem größeren Aufwand einhergeht als eine lokale Transaktion, verschlechtert sich die Leistung des gesamten Systems.
  • 8 zeigt eine Konfiguration der vorliegenden Erfindung. Die Bezugszeichen in 8 entsprechen denen in dem Funktionsschaubild aus 4 Wie gezeigt, wird jede der Verwaltungszuordnungen 412a, 412b, 412c und 412d mit Spalten für Transaktions-ID (TxID) und Transaktionsstatus separat auf jedem der Server 106a, 106b, 106c und 106d bereitgestellt, wo der Transaktionsstatus in der Spalte WERT gespeichert wird.
  • Außerdem wird jede der Tabellen (Datenzuordnungen) 410a, 410b, 410c und 410d zum Speichen von KVS-Daten auf jedem der Server 106a, 106b, 106c und 106d bereitgestellt. Jede der Datenzuordnungen 410a, 410b, 410c und 410d weist eine Spalte SCHLÜSSEL als eine Spalte zum Eintragen eines Schlüssels, eine Spalte WERT als eine Spalte zum Eintragen eines festgeschriebenen Werts oder eines Werts, der aktualisiert wird, und eine Spalte SPERRE zum Speichern eines Sperrstatus auf, d. h. einer Transaktions-ID, die aktualisiert wird.
  • Jeder der Server 106a, 106b, 106c und 106d verwendet einen KVS-Transaktionsmechanismus für jeden Zuordnungseintrag in den Datenzuordnungen 410a, 410b, 410c und 410d zum Verwalten von vier Sperrstatus. Bei den vier Sperrstatus handelt es sich um S (durch eine globale Transaktion oder eine lokale Transaktion referenziert werden), mit (kein Zugriff), LX (durch eine lokale Transaktion aktualisiert werden) und GX (durch eine globale Transaktion aktualisiert werden). Die vier Sperrstatus vollziehen Übergänge gemäß einem Übergangsschaubild aus 9.
  • In 8 stellt der Client-Computer 102a, der eine globale Transaktion anfordert, Anforderungen nach dem Verarbeiten mehrerer lokaler Transaktionen, und der Client-Computer 102b, der eine lokale Transaktion anfordert, stellt eine Anforderung nach dem Verarbeiten einer einzigen lokalen Transaktion.
  • Jeder der Server 106a, 106b, 106c und 106d enthält einen lokalen Nebenläufigkeitssteuermechanismus, nicht gezeigt, und jede der Verwaltungszuordnungen 412a, 412b, 412c und 412d ist auf jedem der Server 106a, 106b, 106c und 106d platziert, sodass Lese-Schreib-Konflikte zwischen lokalen Transaktionen, zwischen globalen Transaktionen und zwischen einer lokalen Transaktion und einer globalen Transaktion durch den lokalen Nebenläufigkeitssteuermechanismus gelöst werden, ein Schreib-Schreib-Konflikt zwischen globalen Transaktionen durch Verwenden der Verwaltungszuordnung gelöst wird, ein Schreib-Schreib-Konflikt zwischen einer lokalen Transaktion und einer globalen Transaktion durch den lokalen Nebenläufigkeitssteuermechanismus gelöst wird, und ein Schreib-Lese-Konflikt und ein Schreib-Schreib-Konflikt zwischen einer globalen Transaktion und einer lokalen Transaktion durch Verwenden der Verwaltungszuordnung nach dem Hochstufen der lokalen Transaktion auf eine globale Transaktion gelöst werden. Es wird davon ausgegangen, dass der lokale Nebenläufigkeitssteuermechanismus einem Client, der eine lokale Transaktion anfordert, eine Lesesperre zuteilt, wenn „Get” angefordert wird, eine Schreibsperre, wenn „Put” angefordert wird, und eine Schreibsperre, wenn „GetForUpdate” angefordert wird.
  • Als Nächstes werden die vier Sperrstatus beschrieben, d. h. S (durch eine globale Transaktion oder eine lokale Transaktion referenziert werden), Init (kein Zugriff), LX (durch eine lokale Transaktion aktualisiert werden) und GX (durch eine globale Transaktion aktualisiert werden). Wie in 9 gezeigt, wird ein Übergang von Init aus zu einem aus S, LX und GX vollzogen.
  • Es wird ein Übergang von S aus zu einem aus Init, LX und GX vollzogen. LX und GX können nur zu Init zurückkehren.
  • Wenn eine lokale Transaktion eine S-Sperre anfordert, wird die lokale Transaktion gestartet, um eine Abfrageverarbeitung (Get) auszuführen. Nachdem bestätigt wurde, dass es sich bei dem Sperrstatus nicht um GX handelt, wird die Abfrageverarbeitung ausgeführt. Wenn es sich um GX handelt, wird die lokale Transaktion auf eine globale Transaktion hochgestuft, um als die globale Transaktion zu warten, bis eine globale Transaktion, die eine Aktualisierung vornimmt, beendet ist, und danach fordert sie als die globale Transaktion S an.
  • Wenn eine lokale Transaktion eine LX-Sperre anfordert, wird die lokale Transaktion gestartet, um eine Abfrageverarbeitung (GetForUpdate) auszuführen, die das Akquirieren einer Schreibsperre einschließt. Nachdem bestätigt wurde, dass es sich bei dem Sperrstatus nicht um GX handelt, wird eine Aktualisierungsverarbeitung ausgeführt. Wenn es sich um GX handelt, wird die lokale Transaktion auf eine globale Transaktion hochgestuft, um zu warten, bis eine globale Transaktion, die eine Aktualisierung vornimmt, beendet ist, und danach fordert sie als die globale Transaktion GX an.
  • Wenn eine lokale Transaktion Festschreiben/Zurücksetzen anfordert, wird Festschreiben/Zurücksetzen für die lokale Transaktion ausgeführt.
  • Wenn eine globale Transaktion eine S-Sperre anfordert, wird eine lokale Transaktion gestartet und nachdem bestätigt wurde, dass es sich bei dem Sperrstatus nicht um GX handelt, wird eine Abfrageverarbeitung ausgeführt. Wenn es sich um GX handelt, wird die lokale Transaktion festgeschrieben und wartet, bis eine globale Transaktion, die eine Aktualisierung vornimmt, beendet ist.
  • Wenn eine globale Transaktion eine GX-Sperre anfordert, wird eine lokale Transaktion gestartet, und nachdem durch Anwenden von GetForUpdate auf die Datenzuordnung bestätigt wurde, dass es sich bei dem Sperrstaus um Init handelt, wird eine Aktualisierungsverarbeitung für DIRTY aus der Spalte WERT und die Spalte SPERRE in dem Zuordnungseintrag ausgeführt, und die lokale Transaktion wird festgeschrieben. Wenn es sich um GX handelt, wird die lokale Transaktion festgeschrieben und wartet, bis eine globale Transaktion, die eine Aktualisierung vornimmt, beendet ist.
  • Wenn eine globale Transaktion Festschreiben von GX aus anfordert, wird eine lokale Transaktion gestartet, um CURRENT->DIRTY in der Spalte WERT auf DIRTY zu aktualisieren, die Spalte SPERRE zu löschen und die lokale Transaktion festzuschreiben.
  • Wenn eine globale Transaktion ein Zurücksetzen von GX aus anfordert, wird eine lokale Transaktion gestartet, um DIRTY in der Spalte WERT zu löschen, die Spalte SPERRE zu löschen und die lokale Transaktion festzuschreiben.
  • Als Nächstes wird mit Bezug auf Ablaufpläne eine Verarbeitung beschrieben, die gemäß Anweisungen von einem Client-Computer auf einem Server ausgeführt wird. Im Folgenden können, insbesondere im Interesse einer einfachen Beschreibung der Ablaufpläne, Begriffe wie folgt abgekürzt werden: Transaktions-ID als TxID, lokale Transaktion als lokale Tx und globale Transaktion als globale Tx.
  • 10 ist ein Ablaufplan, der eine Verarbeitung zeigt, wenn eine Transaktion zum ersten Mal eine Abfrage/Aktualisierungsverarbeitung ausführt.
  • Bei Schritt 1002 wird als eine Reaktion auf eine Anforderung von einer Transaktion ein Server auf der Grundlage eines Schlüssels festgelegt, der referenziert und aktualisiert werden soll, zum Beispiel durch einmaligen Zugriff auf einen Katalogserver. Zu diesem Zweck wird beispielsweise eine Server-ID aus einem Wert festgelegt, der der beim Teilen eines Hash-Werts für den Schlüssel durch die Anzahl von Servern erhaltene Rest ist.
  • Bei Schritt 1004 startet der festgelegte Server eine lokale Transaktion. Bei Schritt 1006 referenziert der festgelegte Server einen Wert, der dem Schlüssel entspricht, und ermittelt bei Schritt 1008, ob eine weitere Transaktions-ID in der Spalte SPERRE des referenzierten Zuordnungseintrags enthalten ist. Wenn dies zutrifft, wird eine Abfrageverarbeitung nach dem Hochstufen auf die globale Transaktion bei Schritt 1010 als eine globale Transaktion ausgeführt. Eine spezielle Verarbeitung zum Hochstufen der Transaktion auf eine globale Transaktion wird später mit Bezug auf einen Ablaufplan aus 13 beschrieben.
  • Wenn bei Schritt 1008 festgestellt wird, dass keine weitere Transaktions-ID in der Spalte SPERRE des referenzierten Werts enthalten ist, wird bei Schritt 1012 ermittelt, ob es sich bei der Verarbeitung um eine Abfrageverarbeitung handelt, und wenn dies nicht zutrifft, wird bei Schritt 1014 eine Aktualisierungsverarbeitung als eine lokale Transaktion ausgeführt. SPERRE bedeutet hier einen Wert in der Spalte SPERRE von jeder der Datentabellen 410a, ...oder dergleichen.
  • 11 ist ein Ablaufplan, der eine Verarbeitung zeigt, wenn die Transaktion zum zweiten Mal sowie weitere Male eine Abfrage/Aktualisierungsverarbeitung ausführt.
  • Bei Schritt 1102 wird ermittelt, ob die Transaktion als eine globale Transaktion ausgeführt wird. Wenn dies so ist, wird bei Schritt 1104 eine Abfrage/Aktualisierungsverarbeitung als die globale Transaktion ausgeführt.
  • Wenn sie nicht als eine globale Transaktion ausgeführt wird, wird bei Schritt 1106 auf der Grundlage eines Schlüssels, der referenziert und aktualisiert werden soll, beispielsweise durch einmaliges Zugreifen auf einen Katalogserver, ein Server festgelegt. Zu diesem Zweck wird beispielsweise eine Server-ID aus einem Wert festgelegt, der der beim Teilen eines Hash-Werts für den Schlüssel durch die Anzahl von Servern erhaltene Rest ist.
  • Bei Schritt 1108 wird ermittelt, ob der Server derselbe wie bei der vorhergehenden Verarbeitung ist, und wenn dies zutrifft, referenziert der festgelegte Server bei Schritt 1110 einen Wert, der dem Schlüssel entspricht. In diesem Fall ist es, wenn es sich bei der Verarbeitung um eine Aktualisierungsverarbeitung handelt, eine Abfrageverarbeitung (GetForUpdate), die eine Schreibsperre einschließt.
  • Bei Schritt 1112 ermittelt der festgelegte Server, ob eine weitere Transaktions-ID (TxID) in der Sperre auf den referenzierten Wert enthalten ist. Wenn dies zutrifft, wird nach dem Hochstufen auf die globale Transaktion bei Schritt 1114 eine Abfrageverarbeitung als eine globale Transaktion ausgeführt.
  • Wenn bei Schritt 1112 festgestellt wird, dass keine weitere Transaktions-ID in der Sperre auf den referenzierten Wert enthalten ist, wird bei Schritt 1116 ermittelt, ob es sich bei der Verarbeitung um eine Abfrageverarbeitung handelt, und wenn dies nicht zutrifft, wird bei Schritt 1118 eine Aktualisierungsverarbeitung als eine lokale Transaktion ausgeführt.
  • Zurück zu Schritt 1108: Wenn festgestellt wird, dass der Server nicht derselbe wie bei der vorhergehenden Verarbeitung ist, wird bei Schritt 1114 nach dem Hochstufen auf die globale Transaktion eine Abfrageverarbeitung als eine globale Transaktion ausgeführt.
  • 12 ist ein Ablaufplan, der eine Startverarbeitung für eine globale Transaktion zeigt.
  • Bei Schritt 1202 wird in einem Client eine Transaktions-ID als eine Kennung einer globalen Transaktion erstellt.
  • Bei Schritt 1204 wird auf der Grundlage der Transaktions-ID ein Server festgelegt. In diesem Fall wird beispielsweise eine Server-ID aus einem Wert festgelegt, der der beim Teilen eines Hash-Werts für die Transaktions-ID durch die Anzahl von Servern erhaltene Rest ist.
  • Bei Schritt 1206 wird auf dem festgelegten Server eine lokale Verwaltungstransaktion gestartet. Dann wird bei Schritt 1208 in der lokalen Verwaltungstransaktion eine Schreibsperre auf einen durch die Transaktions-ID codierten Zuordnungseintrag akquiriert.
  • 13 ist ein Ablaufplan, der eine Verarbeitung für ein Hochstufen von einer lokalen Transaktion auf eine globale Transaktion zeigt.
  • Bei Schritt 1302 wird eine globale Transaktion mit einer Transaktions-ID als Kennung gestartet.
  • Bei Schritt 1304 wird auf dem Server, der die lokale Transaktion verarbeitet, eine lokale Abfragetransaktion gestartet.
  • Bei Schritt 1306 wird in der lokalen Abfragetransaktion eine Abfrage über alle Werte ausgeführt, die in der lokalen Transaktion referenziert werden, d. h. für die S-Sperren akquiriert werden.
  • Bei Schritt 1308 werden alle Werte, die in der lokalen Transaktion aktualisiert werden, d. h. für die LX-Sperren akquiriert werden, auf value[CURRENT->DIRTY, LOCK] aktualisiert, was durch Kombinieren eines Werts (CURRENT) vor dem Aktualisieren, eines Werts (DIRTY), der aktualisiert wird, und einer Transaktions-ID (LOCK) erlangt wird, für die eine Schreibsperre akquiriert wird. LOCK-Wert bedeutet hier einen Wert in der Spalte SPERRE wie beispielsweise in der Datentabelle 410a, ...oder dergleichen.
  • Bei Schritt 1310 wird die ursprüngliche lokale Transaktion festgeschrieben. Auf diese Weise wird die akquirierte LX-Sperre auf eine GX-Sperre hochgestuft. Es sollte beachtet werden, dass die lokale Abfragetransaktion zu diesem Zeitpunkt nicht festgeschrieben wird.
  • 14 ist ein Ablaufplan, der eine Abfrageverarbeitung bei einer globalen Transaktion zeigt. Bei Schritt 1402 wird auf der Grundlage eines Schlüssels ein Server festgelegt. Zu diesem Zweck wird beispielsweise eine Server-ID aus einem Wert festgelegt, der der beim Teilen eines Hash-Werts für den Schlüssel durch die Anzahl von Servern erhaltene Rest ist.
  • Bei Schritt 1404 wird auf dem festgelegten Server eine lokale Abfrage-Transaktion gestartet.
  • Bei Schritt 1406 wird in der lokalen Abfragetransaktion ein dem Schlüssel entsprechender Wert referenziert.
  • Bei Schritt 1408 wird ermittelt, ob der LOCK-Wert des referenzierten Werts eine weitere Transaktions-ID enthält, und wenn dies der Fall ist, wird bei Schritt 1410 eine Warteverarbeitung für eine andere Transaktions-ID ausgeführt, und die Prozedur kehrt zu Schritt 1402 zurück.
  • Wenn der LOCK-Wert des referenzierten Werts keine weitere Transaktions-ID enthält, wird die Verarbeitung beendet, ohne zu diesem Zeitpunkt die lokale Abfragetransaktion festzuschreiben.
  • 15 ist ein Ablaufplan, der eine Aktualisierungsverarbeitung bei einer globalen Transaktion zeigt. Bei Schritt 1502 wird auf der Grundlage eines Schlüssels ein Server festgelegt. Zu diesem Zweck wird beispielsweise eine Server-ID aus einem Wert festgelegt, der der beim Teilen eines Hash-Werts für den Schlüssel durch die Anzahl von Servern erhaltene Rest ist.
  • Bei Schritt 1504 wird auf dem festgelegten Server eine lokale Aktualisierungstransaktion gestartet.
  • Bei Schritt 1506 wird in der lokalen Aktualisierungstransaktion ein dem Schlüssel entsprechender Wert referenziert.
  • Bei Schritt 1508 wird ermittelt, ob der LOCK-Wert des referenzierten Werts eine weitere Transaktions-ID enthält, und wenn dies der Fall ist, wird bei Schritt 1510 eine Warteverarbeitung für eine andere Transaktions-ID ausgeführt, und die Prozedur kehrt zu Schritt 1502 zurück.
  • Wenn der LOCK-Wert des referenzierten Werts keine weitere Transaktions-ID enthält, wird eine Aktualisierung von value[CURRENT->DIRTY, TxID], erhalten durch Kombinieren eines Werts (CURRENT) vor dem Aktualisieren, eines Werts (DIRTY), der aktualisiert wird, und einer Transaktions-ID (TxID), für die eine Schreibsperre akquiriert wird, bei Schritt 1512 in der lokalen Aktualisierungstransaktion vorgenommen.
  • Bei Schritt 1514 wird die lokale Aktualisierungstransaktion festgeschrieben.
  • 16 ist ein Ablaufplan, der eine Festschreibverarbeitung bei einer globalen Transaktion zeigt. Bei Schritt 1602 aktualisiert ein entsprechender Server einen Wert, der durch eine Transaktions-ID einer Verwaltungszuordnung codiert wurde, in einer lokalen Verwaltungstransaktion auf Festgeschrieben (committed).
  • Der Server schreibt die lokale Verwaltungstransaktion bei Schritt 1604 fest.
  • Bei Schritt 1606 wird ermittelt, ob die Festschreibungsoperation erfolgreich ausgeführt wurde, und wenn nicht, wird bei Schritt 1608 eine Rücksetzoperation ausgeführt.
  • Wenn bei Schritt 1606 ermittelt wird, dass die Festschreibungsoperation erfolgreich ausgeführt wurde, werden bei Schritt 1610 alle fertigen lokalen Transaktionen festgeschrieben.
  • Bei Schritt 1612 wird ermittelt, ob alle WERTe, die aktualisiert werden, ausgewählt sind, und wenn dies zutrifft, wird die Verarbeitung beendet.
  • Wenn noch nicht alle WERTe, die aktualisiert werden, ausgewählt sind, werden bei Schritt 1614 ein SCHLÜSSEL, der aktualisiert wird, und sein Wert [CURRENT->DIRTY, TxID] ausgewählt.
  • Bei Schritt 1616 wird auf der Grundlage des Schlüssels ein Server festgelegt. Zu diesem Zweck wird beispielsweise eine Server-ID aus einem Wert festgelegt, der der beim Teilen eines Hash-Werts für den Schlüssel durch die Anzahl von Servern erhaltene Rest ist.
  • Bei Schritt 1618 wird auf dem festgelegten Server eine lokale Aktualisierungstransaktion gestartet.
  • Bei Schritt 1620 wird in der lokalen Aktualisierungstransaktion ein dem Schlüssel entsprechender Wert referenziert.
  • Bei Schritt 1622 wird ermittelt, ob der referenzierte Wert [CURRENT->DIRTY, TxID] lautet, und wenn dies zutrifft, wird der dem Schlüssel entsprechende Wert bei Schritt 1624 in der lokalen Aktualisierungstransaktion auf [DIRTY, NULL] aktualisiert, die lokale Aktualisierungstransaktion wird bei Schritt 1626 festgeschrieben, und die Prozedur kehrt zu Schritt 1612 zurück.
  • Wenn bei Schritt 1622 der referenzierte Wert nicht [CURRENT->DIRTY, TxID] lautet, wird die lokale Aktualisierungstransaktion bei Schritt 1626 sofort festgeschrieben, und die Prozedur kehrt zu Schritt 1612 zurück
  • 17 ist ein Ablaufplan, der eine Warteverarbeitung für eine globale Transaktion zeigt, deren Kennung eine Transaktions-ID TxID' ist.
  • Bei Schritt 1702 wird in einer lokalen Verwaltungstransaktion eine Verarbeitung zum Aktualisieren eines Werts, der durch die Transaktions-ID TxID codiert wurde, auf [Wartend, TxID'] ausgeführt.
  • Bei Schritt 1704 wird die lokale Verwaltungstransaktion festgeschrieben.
  • Bei Schritt 1706 wird ermittelt, ob die Festschreibungsoperation erfolgreich ausgeführt wurde, und wenn nicht, wird bei Schritt 1708 eine Rücksetzoperation ausgeführt.
  • Wenn bei Schritt 1706 ermittelt wird, dass die Festschreibungsoperation erfolgreich ausgeführt wurde, wird bei Schritt 1710 auf der Grundlage der TxID' ein Server festgelegt. Dies wird zum Beispiel mithilfe eines Werts entschieden, der sich beim Teilen eines Hash-Werts für die TxID' durch die Anzahl von Servern ergibt.
  • Bei Schritt 1712 wird auf dem festgelegten Server eine lokale Wartetransaktion gestartet.
  • Bei Schritt 1714 wird in einer Verwaltungszuordnung in der lokalen Wartetransaktion ein Wert der TxID' referenziert.
  • Bei Schritt 1716 wird ermittelt, ob der Wert der TxID' „festgeschrieben” oder „zurückgesetzt” lautet. Wenn er „festgeschrieben” lautet, wird auf der Grundlage der TxID bei Schritt 1718 ein Server festgelegt, ein durch die TxID codierter Wert wird bei Schritt 1720 in der lokalen Verwaltungstransaktion auf „wird ausgeführt” aktualisiert, und die Verarbeitung wird beendet.
  • Wenn andererseits der Wert der TxID' „zurückgesetzt” lautet, wird bei Schritt 1722 ermittelt, ob die TxID in dem Wert der TxID', enthalten ist, und wenn nicht, schreitet die Prozedur bei Schritt 1724 zur Rücksetzverarbeitung fort.
  • Wenn bei Schritt 1722 festgestellt wird, dass die TxID in dem Wert der TxID' enthalten ist, wird die lokale Wartetransaktion bei Schritt 1726 festgeschrieben. Dann wird bei Schritt 1728 auf der Grundlage der TxID ein Server festgelegt, und bei Schritt 1730 wird auf dem festgelegten Server eine lokale Verwaltungstransaktion gestartet.
  • Anschließend wird bei Schritt 1732 eine Warteverarbeitung für eine globale Transaktion mit TxID' gestartet.
  • 18 ist ein Ablaufplan, der eine Beendigungsverarbeitung für eine globale Transaktion zeigt.
  • Bei Schritt 1802 wird unter Verwendung einer lokalen Transaktion, die beim Start einer globalen Transaktion gestartet wurde, ein Wert für einen Zuordnungseintrag, der den Status einer globalen Transaktion darstellt, auf „festgeschrieben” oder „zurückgesetzt” aktualisiert und festgeschrieben.
  • Bei Schritt 1804 verzweigt sich die Prozedur in Abhängigkeit davon, ob der Status der globalen Transaktion „festgeschrieben” oder „zurückgesetzt” ist. Wenn es sich um „festgeschrieben” handelt, wird CURRENT->DIRTY in der Spalte WERT bei Schritt 1806 für alle in der globalen Transaktion aktualisierten Zuordnungseinträge auf DIRTY aktualisiert, und es wird eine Verarbeitung zum Löschen der Spalte SPERRE ausgeführt (lokales Festschreiben). Wenn es sich andererseits um „zurückgesetzt” handelt, wird bei Schritt 1808 eine Verarbeitung zum Löschen von DIRTY in der Spalte WERT und der Spalte SPERRE für alle Zuordnungseinträge ausgeführt, die in der globalen Transaktion aktualisiert wurden (lokales Zurücksetzen).
  • Als Nächstes wird die Verarbeitung während Fehlern des Clients beschrieben.
  • Als Erstes bleibt, wenn in einem Client ein Fehler auftritt, bevor eine globale Transaktion festgeschrieben wurde, jeder Zuordnungseintrag intakt im GX-Status. Anschließend wird eine lokale Transaktion für einen Zuordnungseintrag in einer Verwaltungszuordnung, die den Status der globalen Transaktion darstellt, von dem Server zurückgesetzt und gelangt in einen Zustand, in dem der Status nicht mehr gespeichert ist. Eine Transaktion zum Referenzieren und Aktualisieren des Zuordnungseintrags kann beim nächsten Mal die Verwaltungszuordnung daraufhin prüfen, ob die Transaktion zurückgesetzt ist. Wenn sie zurückgesetzt ist, wird von der Transaktion, die geprüft hat, ob sie zurückgesetzt ist, eine lokale Rücksetzverarbeitung ausgeführt.
  • Als Nächstes bleibt, wenn in einem Client vor einer lokalen Festschreibungsverarbeitung ein Fehler auftritt, jeder Zuordnungseintrag intakt im GX-Status. Eine Transaktion zum Referenzieren und Aktualisieren des Zuordnungseintrags kann beim nächsten Mal die Verwaltungszuordnung daraufhin prüfen, ob die Transaktion festgeschrieben ist. Wenn sie festgeschrieben ist, wird von der Transaktion, die geprüft hat, ob sie festgeschrieben ist, eine lokale Festschreibungsverarbeitung ausgeführt.
  • Auf diese Weise kann erfindungsgemäß eine Beständigkeit der Verarbeitung sowohl gewahrt werden, wenn vor dem Festschreiben einer globalen Transaktion ein Fehler in einem Client auftritt, als auch, wenn vor einer lokalen Festschreibungsverarbeitung ein Fehler in einem Client auftritt.
  • Mit Bezug auf 19 wird als Nächstes ein Beispiel für den Betrieb dieser Ausführungsform der vorliegenden Erfindung beschrieben. Als Erstes weist in 19 eine globale Transaktion GTxA-1 des Clients 1 (Client-Computer 102a) den Server 3 (Server 106c) an, put(GTxA, working) auszuführen und anschließend festzuschreiben.
  • Als Nächstes weist die lokale Transaktion Tx1-1 des Clients 1 den Server 1 (Server 106a) an, put(K1, V1->U1, GTxA) auszuführen und anschließend festzuschreiben.
  • Als Nächstes weist die lokale Transaktion Tx2-1 des Clients 1 den Server 2 (Server 106b) an, put(K3, V3->U3, GTxA) auszuführen und anschließend festzuschreiben.
  • Als Nächstes weist die lokale Transaktion Tx1-2 des Clients 1 den Server 1 an, put(GTx1, committed) auszuführen und anschließend festzuschreiben. Gleichzeitig weist die globale Transaktion GTxA-1 des Clients 1 den Server 3 an, put(GTxA, committed) auszuführen und anschließend festzuschreiben.
  • In dieser Zeitspanne versucht die lokale Transaktion Tx3 des Clients 2 (Client-Computer 102b), GetForUpdate(K1) auf dem Server 1 auszuführen. Die Verarbeitung ist in diesem Fall unterschiedlich, abhängig davon, ob keine andere globale Transaktion eine Schreibsperre setzt, oder ob irgendeine andere globale Transaktion eine Schreibsperre setzt.
  • Wenn keine andere globale Transaktion eine Schreibsperre setzt, werden die folgenden Prozesse ausgeführt:
    Tx3-1'. getForUpdate(K2)
    Tx3-2'. put(K2, U2, NULL)
    Tx3-3'. get(K5)
    Tx3-4'. getForUpdate(K1)
    Tx3-5'. put(K1, U1', NULL)
    Tx3-6'. commit
  • Wenn eine andere globale Transaktion eine Schreibsperre setzt, werden die folgenden Prozesse ausgeführt:
    Tx3-1'. getForUpdate(K2)
    Tx3-2'. put(K2, U2, NULL)
    Tx3-3'. get(K5)
    Tx3-4'. getForUpdate(K1)
    Tx3-5'. put(K2, V2->U2, GTxB) // hochgestuft von Tx3 auf GTxB
    Tx4-1'. get(K5) // Starten von Tx4 zum Abfragen von Zuordnungseinträgen, die erneut abgefragt werden.
    Tx3-6'. commit
    Warten auf GTxA festschreiben/zurücksetzen // warten auf Beenden von GTxA
    Tx5-1'. put(K1, U1->U1', GTxB) // in einer vorhandenen Transaktion Modifizieren von Schreibsperren auf Zuordnungseinträge, die aktualisiert werden, für eine globale Transaktion.
  • Obwohl die Ausführungsform der vorliegenden Erfindung auf der Grundlage der Plattform spezieller Hardware und Software beschrieben wird, werden Fachleute verstehen, dass die vorliegende Erfindung in jeder Computerhardware und Computerplattform ausgeführt werden kann.
  • Bezugszeichenliste
  • 102
    Client-Computer
    106
    Server
    206
    Hauptspeicher
    204
    CPU
    206
    Hauptspeicher
    210
    Festplattenlaufwerk
    306
    CPU
    308
    Hauptspeicher
    310
    Festplattenlaufwerk
    404
    Anwendungsprogramm
    406
    Transaktionsverarbeitungsprogramm
    408
    KVS-Programm
    410
    Datenzuordnung
    412
    Verwaltungszuordnung

Claims (18)

  1. Verarbeitungsverfahren für ein verteiltes KVS-System, wobei das Verfahren Schritte aufweist, die von dem verteilten KVS-System in dem verteilten KVS-System ausgeführt werden, das Daten an eine Mehrzahl von Servern verteilt, auf denen auf die Daten von einem Client-Computer aus zugegriffen wird, wobei das Verfahren aufweist: einen Schritt des Platzierens, auf jedem aus der Mehrzahl von Servern, einer Verwaltungstabelle mit einer Transaktions-ID und einem Wert, der einen Zustand von dieser anzeigt, und einer Datentabelle mit einem Schlüsselwert, einem Wert und einem Sperrwert; einen Schritt des Festlegens einer Transaktions-ID auf dem Client-Cmputer zum Starten einer globalen Transaktion; einen Schritt des Startens einer lokalen Abfragetransaktion auf einem Server, der unter der Mehrzahl von Servern eine lokale Transaktion verarbeitet; einen Schritt des Ausführens einer Abfrage in der lokalen Abfragetransaktion über alle Werte, die in der lokalen Transaktion referenziert werden; einen Schritt des Aktualisierens aller Werte, die in der lokalen Transaktion aktualisiert werden, auf eine Kombination aus einem Wert vor dem Aktualisieren, einem Wert, der aktualisiert wird, und der Transaktions-ID als einem Sperrwert in der Datentabelle und einen Schritt des Festschreibens der lokalen Transaktion.
  2. Verarbeitungsverfahren nach Anspruch 1, wobei die lokale Abfragetransaktion an einem Punkt des Festschreibens der lokalen Transaktion nicht festgeschrieben wird.
  3. Verarbeitungsverfahren nach Anspruch 1, wobei die Sperre eine S-Sperre aufweist, was ein Referenziertwerden durch eine globale Transaktion oder eine lokale Transaktion anzeigt, eine LX-Sperre, was ein Aktualisiertwerden durch eine lokale Transaktion anzeigt, und eine GX-Sperre, was ein Aktualisiertwerden durch eine globale Transaktion anzeigt.
  4. Verarbeitungsverfahren nach Anspruch 1, wobei der Schritt des Startens der globalen Transaktion aufweist: einen Schritt des Veranlassens, dass der Client-Computer die Transaktions-ID erstellt; einen Schritt des Festlegens eines Servers, der über eine Verwaltungszuordnung verfügt, die auf der Grundlage der Transaktions-ID einen Zustand der globalen Transaktion darstellt, und einen Schritt des Startens einer lokalen Transaktion für Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, zum Akquirieren einer Sperre.
  5. Verarbeitungsverfahren nach Anspruch 4, das außerdem aufweist: einen Schritt des Verwendens der lokalen Transaktion zum Ändern von Werten der Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, auf „festgeschrieben” und „festzuschreiben” und einen Schritt des Änderns von Daten, die aktualisiert werden, in aktuelle Daten für alle Zuordnungseinträge, die in der globalen Transaktion aktualisiert wurden, und Ausführen eines Schritts des Löschens von Daten, die aktualisiert werden, sowie von Transaktions-IDs, um die globale Transaktion zu beenden.
  6. Verarbeitungsverfahren nach Anspruch 4, das außerdem aufweist: einen Schritt des Verwendens der lokalen Transaktion zum Ändern von Werten der Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, auf „zurückgesetzt” und „festzuschreiben”, und einen Schritt des Ausführens eines Schritts des Löschens von Daten, die aktualisiert werden, sowie von Transaktions-IDs in allen Zuordnungseinträgen, die in der globalen Transaktion aktualisiert wurden, um die globale Transaktion zu beenden.
  7. Verarbeitungsprogramm für ein verteiltes KVS-System, das Daten an eine Mehrzahl von Servern verteilt, auf denen auf die Daten von einem Client-Computer aus zugegriffen wird, wobei das Programm das verteilte KVS-System dazu veranlasst, auszuführen: einen Schritt des Platzierens, auf jedem aus der Mehrzahl von Servern, einer Verwaltungstabelle mit einer Transaktions-ID und einem Wert, der einen Zustand von dieser anzeigt, und einer Datentabelle mit einem Schlüsselwert, einem Wert und einem Sperrwert; einen Schritt des Festlegens einer Transaktions-ID auf dem Client-Computer zum Starten einer globalen Transaktion; einen Schritt des Startens einer lokalen Abfragetransaktion auf einem Server, der unter der Mehrzahl von Servern eine lokale Transaktion verarbeitet; einen Schritt des Ausführens einer Abfrage in der lokalen Abfragetransaktion über alle Werte, die in der lokalen Transaktion referenziert werden; einen Schritt des Aktualisierens aller Werte, die in der lokalen Transaktion aktualisiert werden, auf eine Kombination aus einem Wert vor dem Aktualisieren, einem Wert, der aktualisiert wird, und der Transaktions-ID als einem Sperrwert in der Datentabelle und einen Schritt des Festschreibens der lokalen Transaktion.
  8. Verarbeitungsprogramm nach Anspruch 7, wobei die lokale Abfragetransaktion an einem Punkt des Festschreibens der lokalen Transaktion nicht festgeschrieben wird.
  9. Verarbeitungsprogramm nach Anspruch 7, wobei die Sperre eine S-Sperre aufweist, was ein Referenziertwerden durch eine globale Transaktion oder eine lokale Transaktion anzeigt, eine LX-Sperre, was ein Aktualisiertwerden durch eine lokale Transaktion anzeigt, und eine GX-Sperre, was ein Aktualisiertwerden durch eine globale Transaktion anzeigt.
  10. Verarbeitungsprogramm nach Anspruch 7, wobei der Schritt des Startens der globalen Transaktion beinhaltet: einen Schritt des Veranlassens, dass der Client-Computer die Transaktions-ID erstellt; einen Schritt des Festlegens eines Servers, der über eine Verwaltungszuordnung verfügt, die auf der Grundlage der Transaktions-ID einen Zustand der globalen Transaktion darstellt, und einen Schritt des Startens einer lokalen Transaktion für Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, zum Akquirieren einer Sperre.
  11. Verarbeitungsprogramm nach Anspruch 10, das das verteilte KSV-System außerdem veranlasst, auszuführen: einen Schritt des Verwendens der lokalen Transaktion zum Ändern von Werten der Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, auf „festgeschrieben” und „festzuschreiben” und einen Schritt des Änderns von Daten, die aktualisiert werden, in aktuelle Daten für alle Zuordnungseinträge, die in der globalen Transaktion aktualisiert wurden, und Ausführen eines Schritts des Löschens von Daten, die aktualisiert werden, sowie von Transaktions-IDs, um die globale Transaktion zu beenden.
  12. Verarbeitungsprogramm nach Anspruch 10, das das verteilte KVS-System außerdem veranlasst, auszuführen: einen Schritt des Verwendens der lokalen Transaktion zum Ändern von Werten der Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, auf „zurückgesetzt” und „festzuschreiben”, und einen Schritt des Ausführens eines Schritts des Löschens von Daten, die aktualisiert werden, sowie von Transaktions-IDs in allen Zuordnungseinträgen, die in der globalen Transaktion aktualisiert wurden, um die globale Transaktion zu beenden.
  13. Verarbeitungssystem für ein verteiltes KVS-System, das Daten an eine Mehrzahl von Servern verteilt, auf denen auf die Daten von einem Client-Computer aus zugegriffen wird, wobei das System aufweist: Mittel zum Platzieren, auf jedem aus der Mehrzahl von Servern, einer Verwaltungszuordnung mit einer Transaktions-ID und einem Wert, der einen Zustand von dieser anzeigt, und einer Datentabelle mit einem Schlüsselwert, einem Wert und einem Sperrwert; Mittel zum Festlegen einer Transaktions-ID auf dem Client-Computer zum Starten einer globalen Transaktion; Mittel zum Starten einer lokalen Abfragetransaktion auf einem Server, der unter der Mehrzahl von Servern eine lokale Transaktion verarbeitet; Mittel zum Ausführen einer Abfrage in der lokalen Abfragetransaktion über alle Werte, die in der lokalen Transaktion referenziert werden; Mittel zum Aktualisieren aller Werte, die in der lokalen Transaktion aktualisiert werden, auf eine Kombination aus einem Wert vor dem Aktualisieren, einem Wert, der aktualisiert wird, und der Transaktions-ID als einem Sperrwert in der Datentabelle und Mittel zum Festschreiben der lokalen Transaktion.
  14. Verarbeitungssystem nach Anspruch 13, wobei die lokale Abfragetransaktion an einem Punkt des Festschreibens der lokalen Transaktion nicht festgeschrieben wird.
  15. Verarbeitungssystem nach Anspruch 13, wobei die Sperre eine S-Sperre aufweist, was ein Referenziertwerden durch eine globale Transaktion oder eine lokale Transaktion anzeigt, eine LX-Sperre, was ein Aktualisiertwerden durch eine lokale Transaktion anzeigt, und eine GX-Sperre, was ein Aktualisiertwerden durch eine globale Transaktion anzeigt.
  16. Verarbeitungsprogramm nach Anspruch 13, wobei das Mittel zum Starten der globalen Transaktion beinhaltet: Mittel zum Veranlassen, dass der Client-Computer die Transaktions-ID erstellt; Mittel zum Festlegen eines Servers, der über eine Verwaltungszuordnung verfügt, die auf der Grundlage der Transaktions-ID einen Zustand der globalen Transaktion darstellt, und Mittel zum Starten einer lokalen Transaktion für Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, um eine Sperre zu akquirieren.
  17. Verarbeitungssystem nach Anspruch 16, das außerdem aufweist: Mittel zum Verwenden der lokalen Transaktion zum Ändern von Werten der Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, in „festgeschrieben” und „festzuschreiben”, und Mittel zum Ändern von Daten, die aktualisiert werden, in aktuelle Daten für alle Zuordnungseinträge, die bei der globalen Transaktion aktualisiert wurden, und Ausführungsmittel zum Löschen von Daten, die aktualisiert werden, sowie von Transaktions-IDs, um die globale Transaktion zu beenden.
  18. Verarbeitungssystem nach Anspruch 16, das außerdem aufweist: Mittel zum Verwenden der lokalen Transaktion zum Ändern von Werten der Zuordnungseinträge in der Verwaltungszuordnung, die den Zustand der globalen Transaktion darstellt, in „zurückgesetzt” und „festzuschreiben”, und Mittel zum Ausführen von Mitteln zum Löschen von Daten, die aktualisiert werden, sowie von Transaktions-IDs in allen Zuordnungseinträgen, die in der globalen Transaktion aktualisiert wurden, um die globale Transaktion zu beenden.
DE112012004099.6T 2011-09-30 2012-07-20 Transaktionsverarbeitungssystem, Verfahren und Programm Pending DE112012004099T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011218145 2011-09-30
JPJP2011218145 2011-09-30
PCT/JP2012/068414 WO2013046883A1 (ja) 2011-09-30 2012-07-20 トランザクション処理システム、方法及びプログラム

Publications (1)

Publication Number Publication Date
DE112012004099T5 true DE112012004099T5 (de) 2014-07-17

Family

ID=47993587

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004099.6T Pending DE112012004099T5 (de) 2011-09-30 2012-07-20 Transaktionsverarbeitungssystem, Verfahren und Programm

Country Status (6)

Country Link
US (1) US8930323B2 (de)
JP (1) JP5940074B2 (de)
CN (1) CN103814362B (de)
DE (1) DE112012004099T5 (de)
GB (1) GB2511222A (de)
WO (1) WO2013046883A1 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10044548B2 (en) 2012-10-15 2018-08-07 Jetflow Technologies Flowlet-based processing
US9838242B2 (en) 2011-04-13 2017-12-05 Jetflow Technologies Flowlet-based processing with key/value store checkpointing
US10740323B1 (en) * 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US10049022B2 (en) * 2013-06-24 2018-08-14 Oracle International Corporation Systems and methods to retain and reclaim resource locks and client states after server failures
US9715405B2 (en) 2013-09-23 2017-07-25 International Business Machines Corporation Efficient coordination across distributed computing systems
WO2015097991A1 (ja) * 2013-12-24 2015-07-02 日本電気株式会社 トランザクション分散処理装置、方法、システム、および、記憶媒体
US9912731B2 (en) * 2014-03-04 2018-03-06 International Business Machines Corporation Dynamic transaction coordination
JP6442996B2 (ja) 2014-11-13 2018-12-26 日本電気株式会社 トランザクション処理装置、トラザクション処理方法、及びプログラム
CN107851101B (zh) * 2015-04-17 2022-08-12 中兴飞流信息科技有限公司 在分布式计算系统中执行容错数据处理的方法及容错分布式计算系统
CN104881766A (zh) * 2015-05-07 2015-09-02 北京京东尚科信息技术有限公司 一种分布式仓储数据处理方法、设备和系统
US10248174B2 (en) 2016-05-24 2019-04-02 Hedvig, Inc. Persistent reservations for virtual disk using multiple targets
US10789597B2 (en) * 2016-09-21 2020-09-29 R-Stor Inc. Systems and methods for using a distributed ledger for data handling
CN106354565B (zh) * 2016-09-21 2019-08-20 努比亚技术有限公司 一种分布式锁客户端及控制方法
CN106775468B (zh) * 2016-12-06 2020-01-10 曙光信息产业(北京)有限公司 分布式事务的实现方法和系统
WO2018193638A1 (ja) * 2017-04-21 2018-10-25 株式会社Orb 計算機及びトランザクション処理方法
KR102600366B1 (ko) 2017-08-15 2023-11-08 누오디비 인코포레이티드 분산형 데이터베이스에서의 인덱스 분할
CN109408201B (zh) * 2017-08-18 2022-07-12 中国银联股份有限公司 基于分布式数据库的事务管理方法
US10783073B2 (en) * 2018-02-23 2020-09-22 International Business Machines Corporation Chronologically ordered out-of-place update key-value storage system
US10635523B2 (en) 2018-02-23 2020-04-28 International Business Machines Corporation Fast recovery from failures in a chronologically ordered log-structured key-value storage system
US10642680B2 (en) 2018-02-23 2020-05-05 International Business Machines Corporation Chronologically ordered log-structured key-value store from failures during garbage collection
US10848468B1 (en) 2018-03-05 2020-11-24 Commvault Systems, Inc. In-flight data encryption/decryption for a distributed storage platform
CN111868707A (zh) * 2018-03-13 2020-10-30 谷歌有限责任公司 在关系数据库的主键中包括事务提交时间戳
CN110321374B (zh) * 2018-10-23 2022-03-25 开采夫(杭州)科技有限公司 基于分布式网络的标准文件io操作系统及方法
US11176121B2 (en) * 2019-05-28 2021-11-16 International Business Machines Corporation Global transaction serialization

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5408653A (en) 1992-04-15 1995-04-18 International Business Machines Corporation Efficient data base access using a shared electronic store in a multi-system environment with shared disks
JPH08202567A (ja) * 1995-01-25 1996-08-09 Hitachi Ltd システム間ロック処理方法
JP2000181754A (ja) * 1998-12-11 2000-06-30 Nec Corp トランザクション処理システム及びトランザクション処理システムの制御プログラムを記録した媒体
US6321238B1 (en) * 1998-12-28 2001-11-20 Oracle Corporation Hybrid shared nothing/shared disk database system
US7206805B1 (en) * 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
US6671686B2 (en) * 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7627574B2 (en) * 2004-12-16 2009-12-01 Oracle International Corporation Infrastructure for performing file operations by a database server
US8103642B2 (en) * 2006-02-03 2012-01-24 Oracle International Corporation Adaptive region locking
US7831574B2 (en) * 2006-05-12 2010-11-09 Oracle International Corporation Apparatus and method for forming a homogenous transaction data store from heterogeneous sources
JP4664931B2 (ja) 2007-02-27 2011-04-06 オラクル・インターナショナル・コーポレイション データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化
JP5213077B2 (ja) 2008-10-06 2013-06-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のアプリケーションサーバにより共有データをアクセスするシステム

Also Published As

Publication number Publication date
GB201407561D0 (en) 2014-06-11
US20130086018A1 (en) 2013-04-04
JP5940074B2 (ja) 2016-06-29
CN103814362A (zh) 2014-05-21
US8930323B2 (en) 2015-01-06
JPWO2013046883A1 (ja) 2015-03-26
WO2013046883A1 (ja) 2013-04-04
CN103814362B (zh) 2016-06-15
GB2511222A (en) 2014-08-27

Similar Documents

Publication Publication Date Title
DE112012004099T5 (de) Transaktionsverarbeitungssystem, Verfahren und Programm
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112011104419B4 (de) Bereichsmigration für gepaarte Speicherung
DE112010004652B4 (de) Zuverlässige Replikation mit hohem Durchsatz von umgewandelten Daten in Datensystemen
DE112011103829B4 (de) Verfahren und System zum Erzeugen einer virtuellen Maschine auf der Grundlage von Vorlagen
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
DE10113577A1 (de) Verfahren, Computerprogrammprodukt und Computersystem zur Unterstützung mehrerer Anwendungssysteme mittels eines einzelnen Datenbank-Systems
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE112013000465B4 (de) Verwaltung einer fernen Datenreplikation
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE112010003144T5 (de) Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen
DE112010004530B4 (de) Transaktionsaktualisierung bei Dynamischen Verteilten Arbeitslasten
DE102021125630A1 (de) Datensynchronisation in einem datenanalysesystem
WO2002021327A2 (de) Verfahren und computerprogramm zur erzeugung von dateien für ein datenbanksystem für ein betriebswirtschaftliches anwendungsprogramm
DE10119876A1 (de) Verfahren, System und Computerprorammprodukt zur Bereitstellung einer Jobüberwachung
DE102013215008A1 (de) Datenmobilität auf Rastergrundlage
DE112018002954T5 (de) Bereitstellen eines konfigurationsabhängigen arbeitsablaufs
DE112018001561B4 (de) Verteiltes speichernetzwerk
DE202015009316U1 (de) Metadatenmanagement in einem dezentralen Verarbeitungssystem
DE102013001196A1 (de) Verfahren zum Bereitstellen einer Benutzerschnittstelle, Computersystem und Computerprogrammprodukt
EP1701266A1 (de) Testvorrichtung zur Überprüfung einer Stapelverarbeitung
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112008003861T5 (de) Systeme und Verfahren, um Software zum Herunterladen zur Verfügung zu stellen
DE202013012479U1 (de) System zur Commit Ausführung von Transaktionen auf entfernten Servern
DE112021003031T5 (de) Archivieren von nur-beschleuniger-datenbanktabellen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012000000

Ipc: G06F0017300000

Effective date: 20140623

R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000