DE202013012479U1 - System zur Commit Ausführung von Transaktionen auf entfernten Servern - Google Patents

System zur Commit Ausführung von Transaktionen auf entfernten Servern Download PDF

Info

Publication number
DE202013012479U1
DE202013012479U1 DE202013012479.2U DE202013012479U DE202013012479U1 DE 202013012479 U1 DE202013012479 U1 DE 202013012479U1 DE 202013012479 U DE202013012479 U DE 202013012479U DE 202013012479 U1 DE202013012479 U1 DE 202013012479U1
Authority
DE
Germany
Prior art keywords
future time
commit
transaction
server
remote
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
DE202013012479.2U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202013012479U1 publication Critical patent/DE202013012479U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

System zur Commit-Ausführung von Transaktionen auf entfernten Servern, umfassend: mindestens einen Prozessor; Speicher; und mindestens ein Programm, das in dem Speicher gespeichert ist und von dem mindestens einen Prozessor ausgeführt werden kann, wobei das mindestens eine Programm Anweisungen zu Folgendem umfasst: das Ausgeben von Commit-Anfragen an entfernte Server in einem Satz von entfernten Servern, um anzufordern, dass die entfernten Server in dem Satz von entfernten Servern einer Commit-Ausführung einer Transaktion zu einem ersten festgelegten zukünftigen Zeitpunkt zustimmen; und wenn Antworten von den entfernten Servern in dem Satz von entfernten Servern vor einer ersten Abbruchzeit empfangen werden und anzeigen, dass alle entfernten Server in dem Satz von entfernten Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zugestimmt haben, das Ausgeben von Commit-Befehlen an die entfernten Server in dem Satz von entfernten Servern, um die entfernten Server zur Durchführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt anzuweisen.

Description

  • TECHNISCHES GEBIET
  • Die offenbarten Ausführungsformen betreffen im Allgemeinen die Commit-Ausführung von Transaktionen auf entfernten Servern. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • HINTERGRUND
  • In einem verteilten Rechensystem wird eine Vielzahl von Servern verwendet, um einen Lastausgleich bereitzustellen und/oder um für nahegelegene Computersysteme Zugriffspunkte mit geringer Latenz bereitzustellen. Zum Beispiel werden Daten in einem verteilten Speichersystem in Speicherclustern repliziert, die sich an mehreren geografischen Standorten befinden. Dadurch wird die Verfügbarkeit der Daten erhöht und die Netzwerknähe der Daten zu Client-Computersystemen wird verringert. Wenn eine atomare Transaktion durch das verteilte Rechensystem durchgeführt werden muss, wird üblicherweise ein Zwei-Phasen-Commit-Protokoll verwendet, um sicherzustellen, dass eine Commit-Ausführung (oder ein Abbruch) der Transaktion durch die Server des verteilten Rechensystems stattfindet. Bedauerlicherweise ist das Zwei-Phasen-Commit-Protokoll ein Blockierprotokoll, das die Durchführung anderer Transaktionen auf den Server des verteilten Rechensystems verhindert, bis ein Commit-(oder Rollback-)Befehl empfangen wird. Demnach blockiert ein Server, der langsam auf eine Commit-Anfrage von einem koordinierenden Server antwortet, die Durchführung von Transaktionen auf anderen Servern, die der Transaktion bereits zugestimmt haben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die hierin offenbarten Ausführungsformen werden in den Figuren der beigefügten Zeichnungen exemplarisch veranschaulicht und nicht einschränkend. Gleiche Bezugszeichen beziehen sich in den Zeichnungen auf entsprechende Teile.
  • 1 ist ein Blockdiagramm, das ein Netzwerksystem gemäß einigen Ausführungsformen veranschaulicht.
  • 2A ist ein Blockdiagramm, das einen Beispielprozess für die Commit-Ausführung von Transaktionen auf entfernten Servern gemäß einigen Ausführungsformen veranschaulicht.
  • 2B setzt den Prozess fort, der in 2A gemäß einigen Ausführungsformen veranschaulicht wird.
  • 2C setzt den Prozess fort, der in 2B gemäß einigen Ausführungsformen veranschaulicht wird.
  • 3A ist ein Blockdiagramm, das einen anderen Beispielprozess für die Commit-Ausführung von Transaktionen auf entfernten Servern gemäß einigen Ausführungsformen veranschaulicht.
  • 3B setzt den Prozess fort, der in 3A gemäß einigen Ausführungsformen veranschaulicht wird.
  • 3C setzt den Prozess fort, der in 3B gemäß einigen Ausführungsformen veranschaulicht wird.
  • 3D setzt den Prozess fort, der in 3C gemäß einigen Ausführungsformen veranschaulicht wird.
  • 3E setzt den Prozess fort, der in 3D gemäß einigen Ausführungsformen veranschaulicht wird.
  • 4A ist ein Blockdiagramm, das einen anderen Beispielprozess für die Commit-Ausführung von Transaktionen auf entfernten Server gemäß einigen Ausführungsformen veranschaulicht,
  • 4B setzt den Prozess fort, der in 4A gemäß einigen Ausführungsformen veranschaulicht wird.
  • 4C setzt den Prozess fort, der in 4B gemäß einigen Ausführungsformen veranschaulicht wird.
  • 4D setzt den Prozess fort, der in 4C gemäß einigen Ausführungsformen veranschaulicht wird.
  • 4E setzt den Prozess fort, der in 4D gemäß einigen Ausführungsformen veranschaulicht wird.
  • 5A ist ein Blockdiagramm, das einen exemplarischen Zeitstrahl von Transaktionen veranschaulicht, die auf einem entfernten Server gemäß einigen Ausführungsformen durchgeführt werden.
  • 5B ist ein Blockdiagramm, das einen anderen exemplarischen Zeitstrahl von Transaktionen veranschaulicht, die auf einem entfernten Server gemäß einigen Ausführungsformen durchgeführt werden.
  • 6 ist ein Blockdiagramm, das einen Server gemäß einigen Ausführungsformen veranschaulicht.
  • 7 ist ein Blockdiagramm, das einen entfernten Server gemäß einigen Ausführungsformen veranschaulicht.
  • 8 ist ein Ablaufdiagramm eines Verfahrens für die Commit-Ausführung von Transaktionen auf entfernten Server gemäß einigen Ausführungsformen,
  • 9A ist ein Ablaufdiagramm eines Verfahrens für die Commit-Ausführung von Transaktionen gemäß einigen Ausführungsformen,
  • 9B setzt das Verfahren fort, das in 9A gemäß einigen Ausführungsformen veranschaulicht wird.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Um die zuvor genannten Defizite des Zwei-Phasen-Commit-Protokolls anzugehen, wenn es auf ein verteiltes Rechensystem angewendet wird, gibt ein Server in einigen Ausführungsformen Commit-Anfragen an entfernte Server in einem Satz von entfernten Server aus, um anzufordern, dass die entfernten Server in dem Satz von entfernten Servern der Commit-Ausführung einer Transaktion zu einem festgelegten zukünftigen Zeitpunkt zustimmen. Wenn Antworten von den entfernten Server in dem Satz von entfernten Server vor einer vorher festgelegten Abbruchzeit empfangen werden und anzeigen, dass alle entfernten Server in dem Satz von entfernten Servern einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt zugestimmt haben, gibt der Server Commit-Befehle an die entfernten Server in dem Satz von entfernten Server aus, welche die entfernten Server zur Durchführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt anweisen. Diese Ausführungsformen werden nachfolgend ausführlicher beschrieben.
  • 1 ist ein Blockdiagramm, das ein Netzwerksystem 100 gemäß einigen Ausführungsformen veranschaulicht. Das Netzwerksystem 100 schließt einen Server 102 und eine Vielzahl von entfernten Servern 104-1 bis 104-N ein, die mit dem Netzwerk 120 gekoppelt sind. In einigen Ausführungsformen gibt der Server 102 Commit-Anfragen und Commit-Befehle an die entfernten Server 104-1 bis 104-N aus, um die entfernten Server 104-1 bis 104-N zur Commit-Ausführung von Transaktionen anzuweisen. In einigen Ausführungsformen schließt eine entsprechende Transaktion eine Operation zum Modifizieren eines Schemas einer Datenbank ein. In einigen Ausführungsformen schließt eine entsprechende Transaktion eine Operation zum Hinzufügen eines Index zu einer Datenbank ein.
  • In einigen Ausführungsformen ist ein entsprechender entfernter Server ein Computerknoten in einem Computercluster eines verteilten Rechensystems. Es wird vermerkt, dass ein Computerknoten ein oder mehrere Computersysteme beinhaltet, beinhaltend einen oder mehrere Prozessoren, die Rechenressourcen für andere Computersysteme bereitstellen. In einigen Ausführungsformen ist ein entsprechender entfernter Server ein Speicherknoten in einem Speichercluster eines verteilten Speichersystems. Es wird vermerkt, dass, obwohl sich die hierin beschriebenen Ausführungsformen auf „entfernte” Server (z. B. Server in einem anderen Datenzentrum, einem anderen Gebäude und/oder an einem anderen geografischen Standort usw. als der Server 102) beziehen, die hierin beschriebenen Ausführungsformen auf „lokale” Server (z. B. Server in dem gleichen Datenzentrum, dem gleichen Gebäude und/oder an dem gleichen geografischen Standort usw. wie der Server 102) angewendet werden können.
  • In einigen Ausführungsformen ist der Server 102 ein Computerknoten in einem Computercluster des verteilten Rechensystems. In einigen Ausführungsformen ist der Server 102 ein Speicherknoten in einem Speichercluster des verteilten Speichersystems.
  • Das Netzwerk 120 kann im Allgemeinen eine beliebige Art eines verdrahteten oder drahtlosen Kommunikationskanals beinhalten, der dazu in der Lage ist, Rechenknoten zusammenzukoppeln. Dies schließt unter anderem ein lokales Netzwerk, ein Weitverkehrsnetzwerk oder eine Kombination von Netzwerken ein. In einigen Ausführungsformen schließt das Netzwerk 120 das Internet ein.
  • Es wird vermerkt, dass, obwohl 1 eine Instanz des Servers 102 zeigt, mehrere Server in dem Netzwerksystem 100 vorhanden sein können. Zum Beispiel kann der Server 102 eine Vielzahl von verteilten Servern beinhalten. Gleichermaßen kann jeder der verteilten Server 104 mehrere entfernte Server darstellen. Zum Beispiel kann der entfernte Server 104-1 eine Vielzahl verteilter Server beinhalten. Verteilte Server können einen Lastausgleich bereitstellen und/oder können für nahegelegene Computersysteme Zugriffspunkte mit geringer Latenz bereitstellen. Die verteilten Server können sich an einem einzigen Standort (z. B. ein Datenzentrum, ein Gebäude usw.) befinden oder können geografisch über mehrere Standorte (z. B. Datenzentren an verschiedenen geografischen Standorten usw.) verteilt sein. Es wird außerdem vermerkt, dass, obwohl sich die hierin beschriebenen Ausführungsformen auf den Server 102 beziehen, die Ausführungsformen auf mehrere Server angewendet werden können. Es wird ferner vermerkt, dass der Begriff „Server” und „entfernter Server” relative Begriffe sind, die synonym sind. In dieser Patentschrift wird der Begriff „Server” verwendet, um sich auf ein Computersystem (z. B. der Server 102) zu beziehen, das Commit-Anfragen und Commit-Befehle an andere Computersysteme (z. B. die entfernten Server 104-1 bis 104-N usw.) ausgibt. Demnach kann der Server 102 in einigen Fällen das Computersystem sein, das Commit-Anfragen und Commit-Befehle an andere Computersysteme (z. B. die entfernten Server 104-1 bis 104-N) ausgibt. In anderen Fällen kann der entfernte Server 104-1 (oder ein anderer der entfernten Server 104-2 bis 104-N usw.) das Computersystem sein, das Commit-Anfragen und Commit-Befehle an andere Computersysteme (z. B. den Server 102, die entfernten Server 104-2 bis 104-N usw.) ausgibt.
  • In 2A gibt der Server 102 Commit-Anfragen CR(t1) an die entfernten Server 104-1 bis 104-4 aus, die anfordern, dass die entfernten Server 104-1 bis 104-4 der Commit-Ausführung einer Transaktion zu einem festgelegten zukünftigen Zeitpunkt t1 zustimmen. Der Zeitstrahl in 2A schließt drei Zeitpunkte ein: t = 0 ist der Zeitpunkt, zu dem der Server 102 die Commit-Anfragen CR(t1) an den entfernten Server 104-1 bis 104-4 ausgibt, ta1 ist die vorher festgelegte Abbruchzeit, t1 ist der festgelegte zukünftige Zeitpunkt, zu dem der Server 102 die entfernten Server 104-1 bis 104-4 auffordert, der Durchführung der Transaktion zuzustimmen. Es wird vermerkt, dass die vorher festgelegte Abbruchzeit der Zeitpunkt ist, zu dem der Server 102 alle Antworten auf die Commit-Anfragen erhalten muss, damit der Server 102 den Commit-Befehl ausgeben kann. Zum Beispiel bricht der Server 102, wenn der Server 102 nicht alle Antworten auf die Commit-Anfragen vor der vorher festgelegten Abbruchzeit ta1 erhält, die Transaktion ab.
  • In 2B senden die entfernten Server 104-1 bis 104-4 jeweils Antworten R104-1(t1) bis R104(t1) an den Server 102, mit denen auf die Commit-Anfrage CR(t1) geantwortet wird, wobei angezeigt wird, dass die entfernten Server 104-1 bis 104-4 einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 zustimmen. In diesem Beispiel empfängt der Server 102 die Antworten R104-1(t1) bis R104-4(t1) vor der vorher festgelegten Abbruchzeit ta1 jeweils von den entfernten Server 104-1 bis 104-4. Demnach fährt der Server 102 mit der Transaktion fort.
  • In 2C gibt der Server 102 Commit-Befehle C(t1) an die entfernten Server 104-1 bis 104-4 aus, welche die entfernten Server 104-1 bis 104-4 zur Durchführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 anweisen. Die entfernten Server 104-1 bis 104-4 führen dann die Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 durch.
  • In einigen Ausführungsformen, wenn ein entfernter Server einer Commit-Ausführung der Transaktion zum festgelegten zukünftigen Zeitpunkt nicht zustimmt, antwortet der entfernte Server dem Server 102 mit einem neuen festgelegten zukünftigen Zeitpunkt, zu dem der entfernte Server eine Commit-Ausführung der Transaktion ausführen kann. Der Server 102 gibt dann unter Verwendung des neuen festgelegten zukünftigen Zeitpunkts die Commit-Anfragen erneut aus. Diese Ausführungsformen werden nachfolgend in Bezug auf 3A3E ausführlicher beschrieben.
  • In 3A gibt der Server 102 Commit-Anfragen CR(t1) an die entfernten Server 104-1 bis 104-4 aus, die anfordern, dass die entfernten Server 104-1 bis 104-4 der Commit-Ausführung einer Transaktion zu einem festgelegten zukünftigen Zeitpunkt t1 zustimmen. Ähnlich wie der Zeitstrahl in 2A schließt der Zeitstrahl in 3A drei Zeitpunkte ein: t = 0 ist der Zeitpunkt, zu dem der Server 102 die Commit-Anfragen CR(t1) an den entfernten Server 104-1 bis 104-4 ausgibt, ta1 ist die vorher festgelegte Abbruchzeit, t1 ist der festgelegte zukünftige Zeitpunkt, zu dem der Server 102 die entfernten Server 104-1 bis 104-4 auffordert, einer Durchführung der Transaktion zuzustimmen.
  • In 3B senden die entfernten Server 104-1 bis 104-3 jeweils Antworten R104-1(t1) bis R104-4(t1) an den Server 102, mit denen auf die Commit-Anfrage CR(t1) geantwortet wird, wobei angezeigt wird, dass die entfernten Server 104-1 bis 104-3 einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 zustimmen. Jedoch sendet der entfernte Server 104-4 eine Antwort R104-4(t2) an den Server 102, die anzeigt, dass der entfernte Server 104-4 einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 nicht zustimmt, aber der entfernte Server 104-4 einer Commit-Ausführung der Transaktion zu einem neuen festgelegten zukünftigen Zeitpunkt t2 zustimmen kann. Demnach, obwohl der Server 102 die Antworten R104-1(t1) bis R104-3(t1) und R104-4(t2) vor der vorher festgelegten Abbruchzeit ta1 jeweils von den entfernten Servern 104-1 bis 104-4 empfängt, fährt der Server 102 nicht mit der Transaktion fort, da der entfernter Server 104-4 einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 nicht zugestimmt hat.
  • In 3C gibt der Server 102 als Reaktion auf das Empfangen der Antwort R104-4(t2) von dem entfernten Server 104-4 Abbruchbefehle an die entfernten Server 104-1 bis 104-4 aus, welche die entfernten Server 104-1 bis 104-4 anweisen, die Transaktion abzubrechen und/oder zurückzusetzen und gibt Commit-Anfragen CR(t2) an die entfernten Server 104-1 bis 104-4 aus, die anfordern, dass die entfernten Server 104-1 bis 104-4 der Commit-Ausführung einer Transaktion zu dem festgelegten zukünftigen Zeitpunkt t2 zustimmen. Wie in dem Zeitstrahl aus 3C veranschaulicht, tritt der festgelegte zukünftige Zeitpunkt t2 nach dem festgelegten zukünftigen Zeitpunkt t1 auf. Ferner wählt der Server 102 eine neue vorher festgelegte Abbruchzeit ta2 aus, die nach der vorher festgelegten Abbruchzeit ta1 auftritt.
  • In einigen Ausführungsformen, wenn der Server 102 mehrere neue festgelegte zukünftige Zeitpunkte von mehreren entfernten Servern empfängt, wählt der Server 102 den neuen festgelegten zukünftigen Zeitpunkt aus, der am weitesten in der Zukunft liegt.
  • In 3D senden die entfernten Server 104-1 bis 104-4 jeweils Antworten R104-1(t2) bis R104-4(t2) an den Server 102, wobei auf die Commit-Anfrage CR(t2) geantwortet wird, wobei angezeigt wird, dass die entfernten Server 104-1 bis 104-4 einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t2 zustimmen. In diesem Beispiel empfängt der Server 102 die Antworten R104-1(t2) bis R104-3(t2) und R104-4(t2) durch die neue vorher festgelegte Abbruchzeit ta2 jeweils von entfernten Servern 104-1 bis 104-4. Demnach fährt der Server 102 mit der Transaktion fort.
  • In 3E gibt der Server 102 Commit-Befehle C(t2) an die entfernten Server 104-1 bis 104-4 aus, welche die entfernten Server 104-1 bis 104-4 zur Durchführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t2. anweisen. Die entfernten Server 104-1 bis 104-4 führen dann zu dem festgelegten zukünftigen Zeitpunkt t2 die Transaktion durch.
  • In einigen Ausführungsformen gibt der Server 102 als Reaktion auf das Empfangen der Antwort R104-4(t2) von dem entfernten Server 104-4 (z. B. wie in 3B veranschaulicht), Commit-Befehle C(t2) an die entfernten Server 104-1 bis 104-4 aus, welche die entfernten Server 104-1 bis 104-4 anweisen, die Transaktion zu dem festgelegten zukünftigen Zeitpunkt t2 (z. B. wie in 3E veranschaulicht) durchzuführen. Demnach führt der Server in diesen Ausführungsformen nicht die Operationen durch, die in den 3C und 3D veranschaulicht werden, sondern führt stattdessen die Operationen durch, die in den 3B und 3E veranschaulicht werden. Die Operationen, die in den 3C und 3D veranschaulicht werden, können weggelassen werden, da (1) die entfernten Server 104-1, 104-2 und 104-3 durch das Senden der Antworten R104-1(t1), R104-2(t1) und R104-3(t1) dem Abbruch aller Transaktionen zugestimmt haben, die Ausführungszeiträume aufweisen, die den festgelegten zukünftigen Zeitpunkt t1 beinhalten oder danach auftreten, bis sie die Commit-Befehle empfangen (siehe z. B. die Erörterung in Bezug auf 5A und 5B unten) und (2) der festgelegte zukünftige Zeitpunkt t2 größer ist als der festgelegte zukünftige Zeitpunkt t1.
  • In einigen Ausführungsformen wählt der Server 102, wenn mindestens ein entfernter Server nicht vor der vorher festgelegten Abbruchzeit auf die Commit-Anfrage antwortet, einen neuen festgelegten zukünftigen Zeitpunkt aus und gibt die Commit-Anfragen an die entfernten Server erneut aus. Diese Ausführungsformen werden nachfolgend in Bezug auf 4A4E ausführlicher beschrieben.
  • In 4A gibt der Server 102 Commit-Anfragen CR(t1) an den entfernten Server 104-1 bis 104-4 aus, die anfordern, dass die entfernten Server 104-1 bis 104-4 der Commit-Ausführung einer Transaktion zu einem festgelegten zukünftigen Zeitpunkt t1 zustimmen. Ähnlich wie der Zeitstrahl in den 2A und 3A schließt der Zeitstrahl in 4A drei Zeitpunkte ein: t = 0 ist der Zeitpunkt, zu dem der Server 102 die Commit-Anfragen CR(t1) an den entfernten Server 104-1 bis 104-4 ausgibt, ta1 ist die vorher festgelegte Abbruchzeit, t1 ist der festgelegte zukünftige Zeitpunkt, zu dem der Server 102 die entfernten Server 104-1 bis 104-4 auffordert, einer Durchführung der Transaktion zuzustimmen.
  • In 4B senden die entfernten Server 104-1 bis 104-4 jeweils Antworten R104-1(t1) bis R104-4(t1) an den Server 102, mit denen auf die Commit-Anfrage CR(t1) geantwortet wird, wobei angezeigt wird, dass die entfernten Server 104-1 bis 104-4 einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 zustimmen. Jedoch empfängt der Server 102 die Antwort R104-2(t1) von dem entfernten Server 104-2 erst nach der vorher festgelegten Abbruchzeit tat Demnach fährt der Server 102 nicht mit der Transaktion fort, da der Server 102 die Antwort R104-2(t1) von dem entfernten Server 104-2 nicht vor der vorher festgelegten Abbruchzeit ta1 empfangen hat.
  • In 4C gibt der Server 102 als Reaktion darauf, dass er die Antwort R104-2(t1) von dem entfernten Server 104-4 nicht vor der vorher festgelegten Abbruchzeit ta1 empfangen hat, einen Abbruchbefehl an die entfernten Server 104-1 bis 104-4 aus, welcher die entfernten Server 104-1 bis 104-4 anweist, die Transaktion abzubrechen und/oder zurückzusetzen und wählt einen neuen festgelegten zukünftigen Zeitpunkt h aus und gibt Commit-Anfragen CR(t3) an die entfernten Server 104-1 bis 104-4 aus, die anfordern, dass die entfernten Server 104-1 bis 104-4 der Commit-Ausführung einer Transaktion zu dem neuen festgelegten zukünftigen Zeitpunkt t3 zustimmen. Wie in dem Zeitstrahl aus 4C veranschaulicht, tritt der neue festgelegte zukünftige Zeitpunkt t3 nach dem festgelegten zukünftigen Zeitpunkt t1 auf. Ferner wählt der Server 102 eine neue vorher festgelegte Abbruchzeit ta3 aus, die nach der vorher festgelegten Abbruchzeit ta1 auftritt.
  • In 4D senden die entfernten Server 104-1 bis 104-4 jeweils Antworten R104-1(t3) bis R104-4(t3) an den Server 102, mit denen auf die Commit-Anfrage CR(t3) geantwortet wird, wobei angezeigt wird, dass die entfernten Server 104-1 bis 104-4 einer Commit-Ausführung der Transaktion zu dem neuen festgelegten zukünftigen Zeitpunkt t3 zustimmen. In diesem Beispiel empfängt der Server 102 die Antworten R104-1(t3) bis R104-3(t3) und R104-4(t2) durch die neue vorher festgelegte Abbruchzeit ta3 jeweils von entfernten Servern 104-1 bis 104-4. Demnach fährt der Server 102 mit der Transaktion fort.
  • In 4E gibt der Server 102 Commit-Befehle C(t3) an die entfernten Server 104-1 bis 104-4 aus, welche die entfernten Server 104-1 bis 104-4 zur Durchführung der Transaktion zu dem neuen festgelegten zukünftigen Zeitpunkt t3 anweisen. Die entfernten Server 104-1 bis 104-4 führen dann die Transaktion zu dem neuen festgelegten zukünftigen Zeitpunkt t3 durch.
  • 5A und 5B sind Blockdiagramme, die exemplarischen Zeitstrahlen von Transaktionen veranschaulichen, die auf einem entfernten Server gemäß einigen Ausführungsformen durchgeführt werden. In diesem Beispiel hat der entfernte Server der Commit-Ausführung einer Transaktion zu einem festgelegten zukünftigen Zeitpunkt t1 durch die Ausgabe einer Antwort R (t1) an den Server 102 zugestimmt. In einigen Ausführungsformen führt der entfernte Server die Ausführung anderer Transaktionen aus, deren Ausführungszeiträume vor dem festgelegten zukünftigen Zeitpunkt t1 auftreten. Zum Beispiel führt der entfernte Server in 5 andere Transaktionen 502, 504 und 506 durch oder führt diesbezügliche Commit-Ausführungen aus, da die Ausführungszeiträume für diese anderen Transaktionen vor dem festgelegten zukünftigen Zeitpunkt t1 auftreten. Jedoch bricht der entfernte Server die anderen Transaktionen 508, 510 und 512 ab (oder führt diese nicht durch), da diese anderen Transaktionen Ausführungszeiträume aufweisen, die den festgelegten zukünftigen Zeitpunkt t1 beinhalten oder danach auftreten.
  • In 5B empfängt der entfernte Server einen Commit-Befehl C(t1) von dem Server 102, welcher den entfernten Server zu einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 anweist. Als Reaktion auf das Empfangen des Commit-Befehls C(t1) führt der entfernte Server die Commit-Ausführung anderer Transaktionen aus, deren Ausführungszeiträume den festgelegten zukünftigen Zeitpunkt t1 nicht beinhalten. Im Besonderen führt der entfernte Server Commit-Ausführungen der anderen Transaktionen 502, 504, 506, 510 und 512 aus. Jedoch führt der entfernte Server, obwohl der entfernte Server die Transaktion 508 durchführt, keine Commit-Ausführung der anderen Transaktion 508 aus (z. B. bricht der entfernte Server die andere Transaktion 508 ab und setzt sie zurück), da die andere Transaktion 508 vor dem festgelegten zukünftigen Zeitpunkt t1 beginnt und nach dem festgelegten zukünftigen Zeitpunkt t1 endet. Anders ausgedrückt, führt der entfernte Server, da der Ausführungszeitraum für die andere Transaktion 508 den festgelegten zukünftigen Zeitpunkt t1 beinhaltet, keine Commit-Ausführung der anderen Transaktion 508 aus. In einigen Ausführungsformen führt der entfernte Server die andere Transaktion 508 nach dem festgelegten zukünftigen Zeitpunkt t1 durch (z. B. führt er sie erneut aus).
  • Zusammenfassend veranschaulicht 5A den Fall, wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 zugestimmt hat, aber noch nicht den Commit-Befehl von dem Server 102 empfangen hat. Demnach führt der entfernte Server lediglich Commit-Ausführungen von anderen Transaktionen aus, deren Ausführungszeiträume vor dem festgelegten zukünftigen Zeitpunkt t1 auftreten Anders ausgedrückt, stimmt der entfernte Server, indem er einer Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 zustimmt, auch der Commit-Ausführung keiner anderen Transaktionen zu, deren Ausführungszeiträume den festgelegten zukünftigen Zeitpunkt t1 beinhalten oder danach auftreten. Der Grund, aus dem der entfernte Server andere Transaktionen abbricht (oder nicht durchführt), deren Ausführungszeiträume nach dem festgelegten zukünftigen Zeitpunkt t1 auftreten, besteht darin, dass der Server 102 den festgelegten zukünftigen Zeitpunkt immer noch auf einen späteren Zeitpunkt ändern kann (z. B. wie in Bezug auf 3A3E und 4A4E beschrieben). Ferner kann der entfernte Server keine Commit-Ausführung zukünftiger Transaktionen ausführen, da diese zukünftigen Transaktionen von der Transaktion abhängen können, deren Commit-Ausführung zu dem festgelegten zukünftigen Zeitpunkt t1 der entfernte Server zugestimmt hat (aber noch nicht angewendet hat). Zum Beispiel kann, wenn die Transaktion, deren Commit-Ausführung zu dem festgelegten zukünftigen Zeitpunkt t1 der entfernte Server zugestimmt hat, eine Transaktion zur Veränderung des Schemas einer Datenbank (oder eine Transaktion zum Erstellen eines Index ist), keine Commit-Ausführung der zukünftigen Transaktionen stattfinden, bis die Veränderung zu dem Schema der Datenbank abgeschlossen ist (oder der Index erstellt wurde). In 5B hat der entfernte Server den Commit-Befehl von dem Server 102 empfangen. Demnach kann der entfernte Server nun die Commit-Ausführung anderer Transaktionen ausführen, deren Ausführungszeiträume den festgelegten zukünftigen Zeitpunkt t1 nicht beinhalten. Anders ausgedrückt, kann der entfernte Server, da der entfernte Server weiß, dass eine Commit-Ausführung der Transaktion zu dem festgelegten zukünftigen Zeitpunkt t1 stattfindet, auf sichere Weise die Commit-Ausführung anderer Transaktionen ausführen, deren Ausführungszeiträume den festgelegten zukünftigen Zeitpunkt t1 nicht beinhalten.
  • 6 ist ein Blockdiagramm, das den Server 102 gemäß einigen Ausführungsformen veranschaulicht. Der Server 102 schließt üblicherweise eine oder mehrere Verarbeitungseinheiten (CPUs, gelegentlich Prozessoren genannt) 602 zur Ausführung von Programmen (z. B. Programmen, die in dem Speicher 610 gespeichert sind), eine oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 604, den Speicher 610 und einen oder mehrere Kommunikationsbusse 609 zum Verbinden dieser Komponenten ein. Die Kommunikationsbusse 609 können Schaltungen (gelegentlich Chipsatz genannt) beinhalten, die Kommunikationen zwischen Systemkomponenten verbinden und steuern. Der Server 102 schließt gegebenenfalls eine Benutzeroberfläche 605 ein (schließt sie jedoch üblicherweise nicht ein), umfassend eine Anzeigevorrichtung 606 und Eingabevorrichtungen 608 (z. B. Tastatur, Maus, Touchscreen, Tastenfeld usw.). Der Speicher 610 schließt ein High-Speed Random Access Memory, wie etwa DRAM, SRAM, DDR RAM oder andere Solid-State-Speichervorrichtungen mit Direktzugriff ein; und schließt üblicherweise nicht flüchtigen Speicher, wie etwa eine oder mehrere Magnetscheiben-Speichervorrichtungen, Speichervorrichtungen mit optischen Platten, Flash-Speichervorrichtungen oder andere nicht flüchtige Solid-State-Speichervorrichtungen ein. Der Speicher 610 schließt gegebenenfalls eine oder mehrere Speichervorrichtungen ein, die von der bzw. den CPU(s) 602 entfernt angeordnet sind. Der Speicher 610 oder alternativ die nicht flüchtige(n) Speichervorrichtung(en) in dem Speicher 610 umfasst bzw. umfassen ein nicht flüchtiges computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher 610 oder das computerlesbare Speichermedium des Speichers 610 die folgenden Programme, Module und Datenstrukturen oder eine Teilmenge davon:
    • • ein Betriebssystem 612, das Verfahren zur Bearbeitung verschiedener grundlegender Systemdienste und zur Durchführung Hardware-abhängiger Aufgaben beinhaltet;
    • • ein Kommunikationsmodul 614, das zur Verbindung des Servers 102 mit anderen Computer über die einen oder mehreren Kommunikationsnetzwerkschnittstellen 604 (verdrahtet oder drahtlos) und ein oder mehrere Kommunikationsnetze, wie etwa das Internet, andere Weitverkehrsnetzwerke, lokale Netzwerke, innerstädtische Netzwerke und so weiter verwendet wird;
    • • ein Benutzeroberflächenmodul 616, das Befehle von dem Nutzer über die Eingabevorrichtungen 608 empfängt und Benutzeroberflächenobjekte in der Anzeigevorrichtung 606 generiert;
    • • ein Transaktionsverarbeitungsmodul 618, das Commit-Anfragen und Commit-Befehle an entfernte Server ausgibt und/oder das Transaktionen durchführt, wie hierin beschrieben; und
    • • Transaktionsdaten 620, beinhaltend Daten für die Transaktion 622, wobei die Daten für die Transaktion 622 Commit-Zeitpunkte 624 (z. B. den festgelegten zukünftigen Zeitpunkt t1, den festgelegten zukünftigen Zeitpunkt t1, den festgelegten zukünftigen Zeitpunkt t3 usw.), Abbruchzeiten 626 (z. B. die vorher festgelegte Abbruchzeit ta1, die vorher festgelegte Abbruchzeit ta2 usw.), Antworten von entfernten Servern (z. B. die Antworten von den entfernten Servern R104-1(t1) bis R104-1(t1) usw.) und Operationen 630 beinhalten, die mit der Transaktion 622 verknüpft sind.
  • In einigen Ausführungsformen entsprechen die zuvor identifizierten Programme oder Module Sätzen von Anweisungen für die Durchführung einer zuvor beschriebenen Funktion. Die Sätze von Anweisungen können von einem oder mehreren Prozessoren (z. B. den CPUs 602) ausgeführt werden. Die zuvor definierten Module oder Programme (d. h. Sätze von Anweisungen) müssen nicht als separate Softwareprogramme, -verfahren oder -module implementiert werden und demnach können verschiedene Teilsätze dieser Programme oder Module in verschiedenen Ausführungsformen kombiniert oder auf andere Weise neu angeordnet werden. In einigen Ausführungsformen speichert der Speicher 610 einen Teilsatz der zuvor identifizierten Module und Datenstrukturen. Ferner kann der Speicher 610 zusätzliche Module und Datenstrukturen speichern, die nicht zuvor beschrieben wurden.
  • Obwohl 6 einen „Server” zeigt, ist 6 vielmehr als funktionale Beschreibung der verschiedenen Merkmale gedacht, die in einem Satz von Servern vorliegen können, denn als ein strukturelles Schaubild der hierin beschriebenen Ausführungsformen. In der Praxis, und wie von Fachleuten anerkannt werden wird, könnten die getrennt dargestellten Elemente kombiniert und einzelne Elemente getrennt werden. Zum Beispiel können einige Elemente, die in 6 separat gezeigt werden, auf einzelnen Server implementiert werden und einzelne Elemente können von einem oder mehreren Servern implementiert werden. Die tatsächliche Anzahl von Servern, die zur Implementierung eines Servers und wie Merkmale unter ihnen verteilt sind, verwendet werden, variiert von einer Implementierung zur anderen und kann teilweise von der Menge des Datenverkehrs abhängen, den das System während Spitzennutzungszeiträumen sowie während durchschnittlicher Nutzungszeiträume verarbeiten muss.
  • 7 ist ein Blockdiagramm, das den entfernten Server 104-1 gemäß einigen Ausführungsformen veranschaulicht. Es wird vermerkt, dass, obwohl sich die folgende Erörterung auf den entfernten Server 104-1 bezieht, die folgende Erörterung für beliebige der entfernten Server 104-1 bis 104-N gelten kann. Der entfernte Server 104-1 schließt üblicherweise eine oder mehrere Verarbeitungseinheiten (CPUs, gelegentlich Prozessoren genannt) 702 zur Ausführung von Programmen (z. B. Programmen, die in dem Speicher 710 gespeichert sind), eine oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 704, den Speicher 710 und einen oder mehrere Kommunikationsbusse 709 zum Verbinden dieser Komponenten ein. Die Kommunikationsbusse 709 können Schaltungen (gelegentlich Chipsatz genannt) beinhalten, die Kommunikationen zwischen Systemkomponenten verbinden und steuern. Der entfernte Server 104-1 schließt gegebenenfalls eine Benutzeroberfläche 705 ein (schließt sie jedoch üblicherweise nicht ein), umfassend eine Anzeigevorrichtung 706 und Eingabevorrichtungen 708 (z. B. Tastatur, Maus, Touchscreen, Tastenfeld usw.). Der Speicher 710 schließt ein High-Speed Random Access Memory, wie etwa DRAM, SRAM, DDR RAM oder andere Solid-State-Speichervorrichtungen mit Direktzugriff ein; und schließt üblicherweise nicht flüchtigen Speicher, wie etwa eine oder mehrere Magnetscheiben-Speichervorrichtungen, Speichervorrichtungen mit optischen Platten, Flash-Speichervorrichtungen oder andere nicht flüchtige Solid-State-Speichervorrichtungen ein. Der Speicher 710 schließt gegebenenfalls eine oder mehrere Speichervorrichtungen ein, die von der bzw. den CPU(s) 702 entfernt angeordnet sind. Der Speicher 710 oder alternativ die nicht flüchtigen) Speichervorrichtung(en) in dem Speicher 710 umfasst bzw. umfassen ein nicht flüchtiges computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher 710 oder das computerlesbare Speichermedium des Speichers 710 die folgenden Programme, Module und Datenstrukturen oder eine Teilmenge davon:
    • • ein Betriebssystem 712, das Verfahren zur Bearbeitung verschiedener grundlegender Systemdienste und zur Durchführung Hardware-abhängiger Aufgaben beinhaltet;
    • • ein Kommunikationsmodul 714, das zur Verbindung des Servers 104-1 mit anderen Computer über die einen oder mehreren Kommunikationsnetzwerkschnittstellen 704 (verdrahtet oder drahtlos) und ein oder mehrere Kommunikationsnetze, wie etwa das Internet, andere Weitverkehrsnetzwerke, lokale Netzwerke, innerstädtische Netzwerke und so weiter verwendet wird;
    • • ein Benutzeroberflächenmodul 716, das Befehle von dem Nutzer über die Eingabevorrichtungen 708 empfängt und Benutzeroberflächenobjekte in der Anzeigevorrichtung 706 generiert;
    • • ein Transaktionsverarbeitungsmodul 718, das Commit-Anfragen und Commit-Befehle an entfernte Server ausgibt und/oder das Transaktionen durchführt, wie hierin beschrieben; und
    • • Transaktionsdaten 720, beinhaltend Daten für die Transaktion 722, wobei die Daten für die Transaktion 722 Commit-Zeitpunkte 724 (z. B. den festgelegten zukünftigen Zeitpunkt t1, den festgelegten zukünftigen Zeitpunkt t1, den festgelegten zukünftigen Zeitpunkt t3 usw.), Abbruchzeiten 726 (z. B. die vorher festgelegte Abbruchzeit ta1, die vorher festgelegte Abbruchzeit ta2 usw.), Antworten von entfernten Servern (z. B. die Antworten von den entfernten Server R104-1(t1) bis R104-1(t1) usw.) und Operationen 730 beinhalten, die mit der Transaktion 722 verknüpft sind.
  • In einigen Ausführungsformen entsprechen die zuvor identifizierten Programme oder Module Sätzen von Anweisungen für die Durchführung einer zuvor beschriebenen Funktion. Die Sätze von Anweisungen können von einem oder mehreren Prozessoren (z. B. den CPUs 702) ausgeführt werden. Die zuvor definierten Module oder Programme (d. h. Sätze von Anweisungen) müssen nicht als separate Softwareprogramme, -verfahren oder -module implementiert werden und demnach können verschiedene Teilsätze dieser Programme oder Module in verschiedenen Ausführungsformen kombiniert oder auf andere Weise neu angeordnet werden. In einigen Ausführungsformen speichert der Speicher 710 einen Teilsatz der zuvor identifizierten Module und Datenstrukturen. Ferner kann der Speicher 710 zusätzliche Module und Datenstrukturen speichern, die nicht zuvor beschrieben wurden.
  • Obwohl 7 einen „entfernten Server” zeigt, ist 7 vielmehr als funktionale Beschreibung der verschiedenen Merkmale gedacht, die in einem Satz von entfernten Servern vorliegen können, denn als ein strukturelles Schaubild der hierin beschriebenen Ausführungsformen. In der Praxis, und wie von Fachleuten anerkannt werden wird, könnten die getrennt dargestellten Elemente kombiniert und einzelne Elemente getrennt werden. So könnten beispielsweise einige Elemente, die in 7 getrennt gezeigt werden, auf einem einzigen Server implementiert sein, und einzelne Elemente könnten von einem oder mehreren Servern implementiert werden. Die tatsächliche Anzahl von Servern, die zur Implementierung eines entfernten Servers und wie Merkmale unter ihnen verteilt sind, verwendet werden, variiert von einer Implementierung zur anderen und kann teilweise von der Menge des Datenverkehrs abhängen, den das System während Spitzennutzungszeiträumen sowie während durchschnittlicher Nutzungszeiträume verarbeiten muss.
  • Commit-Ausführung von Transaktionen auf entfernten Servern
  • 8 ist ein Ablaufdiagramm eines Verfahrens 800 für die Commit-Ausführung von Transaktionen auf entfernten Servern gemäß einigen Ausführungsformen. Das Transaktionsverarbeitungsmodul 618 gibt Commit-Anfragen an entfernte Server in einem Satz von entfernten Server aus (802), um anzufordern, dass die entfernten Server in dem Satz von entfernten Servern der Commit-Ausführung einer Transaktion zu einem ersten festgelegten zukünftigen Zeitpunkt (z. B. CR(t1) in 2A) zustimmen. Wenn Antworten von den entfernten Servern in dem Satz von entfernten Server vor einer ersten Abbruchzeit (z. B. ta1) empfangen werden und anzeigen, dass alle entfernten Server in dem Satz von entfernten Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zugestimmt haben, gibt das Transaktionsverarbeitungsmodul 618 Commit-Befehle an die entfernten Server in dem Satz von entfernten Server aus (804), um die entfernten Server zur Durchführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt (z. B. C(t1)) anzuweisen. In einigen Ausführungsformen ist die erste Abbruchzeit ein Zeitpunkt zwischen einem aktuellen Zeitpunkt und dem ersten festgelegten zukünftigen Zeitpunkt. In einigen Ausführungsformen schließt die Transaktion eine Operation zum Modifizieren eines Schemas einer Datenbank ein. In einigen Ausführungsformen schließt die Transaktion eine Operation zum Hinzufügen eines Index zu einer Datenbank ein. In einigen Ausführungsformen schließen die Commit-Anfragen die Operationen ein, die mit der Transaktion verknüpft sind.
  • Wenn die Antworten von den entfernten Server in dem Satz von entfernten Server vor der ersten Abbruchzeit empfangen werden und anzeigen, dass ein entfernter Server in dem Satz von entfernten Servern einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt (z. B. R104-4(t2) in 3B) nicht zustimmt, identifiziert (806) das Transaktionsverarbeitungsmodul 618 einen zweiten festgelegten zukünftigen Zeitpunkt, der in einer Antwort von dem entfernten Server eingeschlossen ist (z. B. den festgelegten zukünftigen Zeitpunkt t2, der in R104-4(t2) in 3B eingeschlossen ist), wobei der zweite festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt und wiederholt (808) die Operationen des Verfahrens 800 unter Verwendung des zweiten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  • Wenn die Antworten von den entfernten Servern in dem Satz von entfernten Servern nicht vor der ersten Abbruchzeit empfangen werden, gibt das Transaktionsverarbeitungsmodul 618 einen Abbruchbefehl an die entfernten Server in dem Satz von entfernten Server aus (810), um die entfernten Server zum Abbruch der Transaktion anzuweisen, wählt einen dritten festgelegten zukünftigen Zeitpunkt aus (812), zu dem eine Commit-Ausführung der Transaktion durch die entfernten Server in dem Satz von entfernten Servern stattfinden soll (z. B. der festgelegte zukünftige Zeitpunkt h in 4C), wobei der dritte festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt und wiederholt (814) die Operationen des Verfahrens 800 unter Verwendung des dritten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  • Es wird vermerkt, dass, obwohl sich die oben stehende Erörterung auf das Transaktionsverarbeitungsmodul 618 bezieht, das die in 8 veranschaulichten Operationen durchführt, diese Operationen von einem beliebigen Modul (oder Modulen) des Servers 102 (oder eines beliebigen anderen Computersystems) durchgeführt werden können.
  • Commit-Ausführung von Transaktionen auf entfernten Servern
  • 9A9B sind Ablaufdiagramme eines Verfahrens 900 für die Commit-Ausführung von Transaktionen gemäß einigen Ausführungsformen. Als Reaktion auf das Empfangen einer Commit-Anfrage (z. B. CR(t1) in 2A) von dem Server 102, der den entfernten Server 104-1 auffordert, der Commit-Ausführung einer Transaktion zu einem ersten festgelegten zukünftigen Zeitpunkt (z. B. dem festgelegten zukünftigen Zeitpunkt t1 in 2A) zuzustimmen, bestimmt (902) das Transaktionsverarbeitungsmodul 718, ob der entfernte Server 104-1 einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmen kann.
  • Wenn der entfernte Server 104-1 einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmen kann, überträgt (904) das Transaktionsverarbeitungsmodul 718 eine erste Antwort an den Server 102, die anzeigt, dass der entfernte Server 104-1 einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt (z. B. R104-1(t1) in 2B) zustimmt. Das Transaktionsverarbeitungsmodul 718 führt Commit-Ausführungen von Transaktionen aus (906), deren Ausführungszeiträume vor dem ersten festgelegten zukünftigen Zeitpunkt auftreten (z. B. die anderen Transaktionen 502, 504 und 506 in 5A). Das Transaktionsverarbeitungsmodul 718 bricht Transaktionen ab (908), deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt beinhalten oder danach auftreten (z. B. die anderen Transaktionen 508, 510 und 512 aus 5A). Es wird vermerkt, dass die Operationen 906 und 908 augenblicklich durchgeführt werden können. Zum Beispiel kann der entfernte Server 104-1 augenblicklich (1) eine Commit-Ausführung von Transaktionen ausführen und (2) andere Transaktionen abbrechen.
  • In einigen Ausführungsformen empfängt (910) das Transaktionsverarbeitungsmodul 718, nachdem der entfernte Server 104-1 die erste Antwort an den Server 102 überträgt, die anzeigt, dass der entfernte Server 104-1 einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmt, einen ersten Commit-Befehl von dem Server 102, der den entfernten Server 104-1 zur Durchführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt (z. B. C(t1) in 2C) anweist und führt eine Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt aus (912). Das Transaktionsverarbeitungsmodul 718 bricht Transaktionen ab (914), deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt beinhalten (z. B. die andere Transaktion 508 aus 5B) und führt die Transaktionen erneut aus (916), deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt zu einem Zeitpunkt nach dem ersten festgelegten zukünftigen Zeitpunkt beinhalten (z. B. die andere Transaktion 508 aus 5B). Das Transaktionsverarbeitungsmodul 718 führt außerdem Commit-Ausführungen von Transaktionen aus (918), deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt nicht beinhalten (z. B. die anderen Transaktionen 502, 504, 506, 510 und 512 in 5B). Es wird vermerkt, dass die Operationen 914, 916 und 918 augenblicklich ausgeführt werden können. Es wird außerdem vermerkt, dass die Operationen 910 bis 918 in einigen Fällen nicht von dem entfernten Server 104-1 durchgeführt werden können, da der Server 102 bestimmen kann, dass die Transaktion abgebrochen werden sollte (z. B. wird eine Antwort auf eine Commit-Anfrage von dem Server 102 nach einer vorher festgelegten Abbruchzeit empfangen, ein entfernter Server schlägt einen neuen festgelegten zukünftigen Zeitpunkt vor, zu dem eine Commit-Ausführung der Transaktion durch die entfernten Server stattfinden soll usw.).
  • Wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt nicht zustimmen kann, bestimmt (920) der entfernte Server 104-1 einen zweiten festgelegten zukünftigen Zeitpunkt, zu dem der entfernte Server 104-1 einer Commit-Ausführung der Transaktion zustimmen kann (z. B. den festgelegten zukünftigen Zeitpunkt t2 in 3B), wobei der zweite festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt und überträgt (922) eine zweite Antwort an den Server 102, die anzeigt, dass der entfernte Server einer Commit-Ausführung der Transaktion zu dem zweiten festgelegten zukünftigen Zeitpunkt (z. B. R104-4(t2) in 3B) zustimmen kann. Der entfernte Server 104-1 empfängt (924) dann eine zweite Commit-Anfrage von dem Server 102, der den entfernten Server 104-1 auffordert, einer Commit-Ausführung einer Transaktion zu dem zweiten festgelegten zukünftigen Zeitpunkt (z. B. CR(t2) in 3C) zuzustimmen und wiederholt (926) die Operationen des Verfahrens 900 unter Verwendung des zweiten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  • Es wird vermerkt, dass, obwohl sich die oben stehende Erörterung auf das Transaktionsverarbeitungsmodul 718 bezieht, das die in 9 veranschaulichten Operationen durchführt, diese Operationen von einem beliebigen Modul (oder Modulen) des entfernten Servers 104-1 (oder eines beliebigen anderen Computersystems) durchgeführt werden können.
  • Die in den 89 veranschaulichten Verfahren können durch Anweisungen gesteuert werden, die in einem computerlesbaren Speichermedium gespeichert sind und die von mindestens einem Prozessor von mindestens einem Server ausgeführt werden. Jede der in den 89 gezeigten Operationen kann Anweisungen entsprechen, die in einem nicht flüchtigen Computerspeicher oder computerlesbaren Speichermedium gespeichert sind. In verschiedenen Implementierungen schließt das nicht flüchtige computerlesbare Speichermedium eine Speichervorrichtung mit Magnetscheiben oder optischen Platten, Solid State-Speichervorrichtungen, wie etwa einen Flash-Speicher oder (eine) andere nicht flüchtige Speichervorrichtung oder -vorrichtungen ein. Die computerlesbaren Anweisungen, die auf dem nicht flüchtigen computerlesbaren Speichermedium gespeichert sind, können in Quellcode, Assemblersprachcode, Objektcode oder einem anderen Anweisungsformat vorliegen, das interpretiert wird und/oder, das von einem oder mehreren Prozessoren ausführbar ist.
  • Für Komponenten, Operationen oder Strukturen, die hierin als eine einzige Instanz beschrieben werden, können mehrfache Instanzen bereitgestellt werden. Schließlich sind Abgrenzungen zwischen verschiedenen Komponenten, Operationen und Datenspeichern in gewissem Maße arbiträr und bestimmte Operationen werden in dem Kontext spezifischer veranschaulichender Konfigurationen veranschaulicht. Andere Zuordnungen von Funktionalität werden vergegenwärtigt und können zu dem Umfang der Implementierungen) gehören. Im Allgemeinen können Strukturen und Funktionen, die in den exemplarischen Konfigurationen als separate Komponenten dargestellt werden, als eine kombinierte Struktur oder Komponente implementiert werden. Gleichermaßen können Strukturen und Funktionen, die als eine einzelne Komponente dargestellt werden, als separate Komponenten implementiert werden. Diese und andere Abwandlungen, Modifikationen, Hinzufügungen und Verbesserungen gehören zu dem Umfang der Implementierung(en).
  • Es versteht sich außerdem, dass, obwohl die Begriffe „erster/erste/erstes”, „zweiter/zweite/zweites” usw. hierin verwendet werden können, um verschiedene Elemente zu beschreiben, diese Elemente nicht durch diese Begriffe beschränkt werden sollten. Diese Begriffe werden nur verwendet, um ein Element vom anderen zu unterscheiden. Zum Beispiel kann ein erster Kontakt als ein zweiter Kontakt bezeichnet werden und gleichermaßen kann ein zweiter Kontakt als ein erster Kontakt bezeichnet werden, wodurch die Bedeutung der Beschreibung geändert wird, solange jedes Auftreten des „ersten Kontakts” durchweg umbenannt wird und jedes Auftreten des zweiten Kontakts durchweg umbenannt wird. Der erste Kontakt und der zweite Kontakt sind beide Kontakte, sie sind jedoch nicht derselbe Kontakt.
  • Die hierin verwendete Terminologie dient lediglich dem Zweck der Beschreibung bestimmter Implementierungen und soll im Hinblick auf die Patentansprüche nicht einschränkend sein. Wie in der Beschreibung der Implementierungen und den beigefügten Patentansprüchen verwendet, sollen die Singularformen „ein(e)” und „der/die/das” ebenso die Pluralformen beinhalten, sofern der Zusammenhang nicht eindeutig etwas anderes vorgibt. Es versteht sich außerdem, dass sich der Begriff „und/oder”, wie hierin verwendet, auf beliebige und alle möglichen Kombinationen von einem oder mehreren der zugehörigen aufgelisteten Elemente bezieht und diese umfasst. Es versteht sich ferner, dass die Begriffe „umfasst”, und/oder „umfassend” bei einer Verwendung in dieser Patentschrift das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, ganzer Zahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon ausschließen.
  • Wie hierin verwendet, kann der Begriff „falls” in Abhängigkeit von dem Kontext so ausgelegt werden, dass er bedeutet, „wenn” oder „nachdem” oder „als Reaktion auf das Bestimmen” oder „gemäß einer Bestimmung” oder „als Reaktion auf das Detektieren”, dass eine angegebene Vorbedingung zutrifft. Gleichermaßen kann die Wendung „falls bestimmt wird, (dass eine angegebene Vorbedingung zutrifft)” oder „falls (eine angegebene Vorbedingung zutrifft)” oder „wenn (eine angegebene Vorbedingung zutrifft)” in Abhängigkeit von dem Kontext so ausgelegt werden, dass sie bedeutet „nach dem Bestimmen” oder „als Reaktion auf das Bestimmen” oder „gemäß einer Bestimmung” oder „nach dem Detektieren” oder „als Reaktion auf das Detektieren”, dass die angegebene Vorbedingung zutrifft.
  • Die vorstehende Beschreibung schloss exemplarische Systeme, Verfahren, Methoden, Anweisungssequenzen und Rechnerprogrammprodukte ein, die veranschaulichende Implementierungen beinhalten. Zu Erläuterungszwecken wurden zahlreiche spezifische Details aufgeführt, um ein Verständnis verschiedener Implementierungen des Erfindungsgegenstands bereitzustellen. Für einen Fachmann liegt es jedoch auf der Hand, dass Implementierungen des Erfindungsgegenstands ohne diese spezifischen Details umgesetzt werden können. Im Allgemeinen wurden wohlbekannte Anweisungsinstanzen, Protokolle, Strukturen und Methoden nicht ausführlich gezeigt,
  • Die vorstehende Beschreibung wurde zum Zweck der Erläuterung unter Bezugnahme auf spezifische Implementierungen beschrieben. Die oben stehenden veranschaulichenden Erörterungen sollen jedoch nicht allumfassend sein oder die Implementierungen genau auf die offenbarten Formen beschränken. Angesichts der oben stehenden Lehren sind viele Modifikationen und Abwandlungen möglich. Die Implementierungen wurden ausgewählt und beschrieben, um die Prinzipien und ihre praktische Anwendung bestmöglich zu erläutern, um dadurch anderen Fachmännern die bestmögliche Verwendung der Implementierungen und verschiedener Implementierungen mit unterschiedlichen Modifikationen zu ermöglichen, wie sie für die bestimmte vorgesehene Verwendung geeignet sind.

Claims (34)

  1. System zur Commit-Ausführung von Transaktionen auf entfernten Servern, umfassend: mindestens einen Prozessor; Speicher; und mindestens ein Programm, das in dem Speicher gespeichert ist und von dem mindestens einen Prozessor ausgeführt werden kann, wobei das mindestens eine Programm Anweisungen zu Folgendem umfasst: das Ausgeben von Commit-Anfragen an entfernte Server in einem Satz von entfernten Servern, um anzufordern, dass die entfernten Server in dem Satz von entfernten Servern einer Commit-Ausführung einer Transaktion zu einem ersten festgelegten zukünftigen Zeitpunkt zustimmen; und wenn Antworten von den entfernten Servern in dem Satz von entfernten Servern vor einer ersten Abbruchzeit empfangen werden und anzeigen, dass alle entfernten Server in dem Satz von entfernten Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zugestimmt haben, das Ausgeben von Commit-Befehlen an die entfernten Server in dem Satz von entfernten Servern, um die entfernten Server zur Durchführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt anzuweisen.
  2. System nach Anspruch 1, worin, wenn die Antworten von den entfernten Servern in dem Satz von entfernten Servern vor der ersten Abbruchzeit empfangen werden und anzeigen, dass ein entfernter Server in dem Satz entfernter Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt nicht zustimmt, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Identifizieren eines zweiten festgelegten zukünftigen Zeitpunkts, der in einer Antwort von dem entfernten Server eingeschlossen ist, worin der zweite festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt; und das Wiederholen der Operationen nach Anspruch 1 unter Verwendung des zweiten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  3. System nach irgendeinem der Ansprüche 1–2, worin, wenn die Antworten von den entfernten Servern in dem Satz von entfernten Servern nicht vor der ersten Abbruchzeit empfangen werden, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Ausgeben eines Abbruchbefehls an die entfernten Server in dem Satz von entfernten Servern, um die entfernten Server zum Abbruch der Transaktion anzuweisen; das Auswählen eines dritten festgelegten zukünftigen Zeitpunkts, zu dem eine Commit-Ausführung der Transaktion durch die entfernten Server in dem Satz von entfernten Server stattfinden soll, worin der dritte festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt; und das Wiederholen der Operationen nach Anspruch 1 unter Verwendung des dritten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  4. System nach irgendeinem der Ansprüche 1–3, worin die erste Abbruchzeit ein Zeitpunkt zwischen einem aktuellen Zeitpunkt und dem ersten festgelegten zukünftigen Zeitpunkt ist.
  5. System nach irgendeinem der Ansprüche 1–4, worin die Transaktion eine Operation zum Modifizieren eines Schemas einer Datenbank beinhaltet.
  6. System nach irgendeinem der Ansprüche 1–7, worin die Transaktion eine Operation zum Hinzufügen eines Index zu einer Datenbank beinhaltet.
  7. System nach irgendeinem der Ansprüche 1–8, worin die Commit-Anfragen die Operationen beinhalten, die mit der Transaktion verknüpft sind.
  8. Nicht flüchtiges computerlesbares Speichermedium, das mindestens ein Programm speichert, das zur Ausführung durch mindestens einen Prozessor eines Computersystems konfiguriert ist, wobei das mindestens eine Programm Anweisungen zu Folgendem umfasst: das Ausgeben von Commit-Anfragen an entfernte Server in einem Satz von entfernten Servern, um anzufordern, dass die entfernten Server in dem Satz von entfernten Server einer Commit-Ausführung einer Transaktion zu einem ersten festgelegten zukünftigen Zeitpunkt zustimmen; und wenn Antworten von den entfernten Servern in dem Satz von entfernten Servern vor einer ersten Abbruchzeit empfangen werden und anzeigen, dass alle entfernten Server in dem Satz von entfernten Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zugestimmt haben, das Ausgeben von Commit-Befehlen an die entfernten Server in dem Satz von entfernten Server, um die entfernten Server zur Durchführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt anzuweisen.
  9. Nicht flüchtiges computerlesbares Speichermedium nach Anspruch 8, worin, wenn die Antworten von den entfernten Servern in dem Satz von entfernten Servern vor der ersten Abbruchzeit empfangen werden und anzeigen, dass ein entfernter Server in dem Satz entfernter Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt nicht zustimmt, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Identifizieren eines zweiten festgelegten zukünftigen Zeitpunkts, der in einer Antwort von dem entfernten Server eingeschlossen ist, worin der zweite festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt; und das Wiederholen der Operationen nach Anspruch 8 unter Verwendung des zweiten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  10. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 8–9, worin, wenn die Antworten von den entfernten Server in dem Satz von entfernten Servern nicht vor der ersten Abbruchzeit empfangen werden, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Ausgeben eines Abbruchbefehls an die entfernten Server in dem Satz von entfernten Servern, um die entfernten Server zum Abbruch der Transaktion anzuweisen; das Auswählen eines dritten festgelegten zukünftigen Zeitpunkts, zu dem eine Commit-Ausführung der Transaktion durch die entfernten Server in dem Satz von entfernten Servern stattfinden soll, worin der dritte festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt; und das Wiederholen der Operationen nach Anspruch 8 unter Verwendung des dritten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  11. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 8–10, worin die erste Abbruchzeit ein Zeitpunkt zwischen einem aktuellen Zeitpunkt und dem ersten festgelegten zukünftigen Zeitpunkt ist.
  12. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 8–11, worin die Transaktion eine Operation zum Modifizieren eines Schemas einer Datenbank beinhaltet.
  13. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 8–12, worin die Transaktion eine Operation zum Hinzufügen eines Index zu einer Datenbank beinhaltet.
  14. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 8–13, worin die Commit-Anfragen die Operationen beinhalten, die mit der Transaktion verknüpft sind.
  15. System zur Commit-Ausführung von Transaktionen, umfassend: mindestens einen Prozessor; Speicher; und mindestens ein Programm, das in dem Speicher gespeichert ist und von dem mindestens einen Prozessor ausgeführt werden kann, wobei das mindestens eine Programm Anweisungen zu Folgendem umfasst: als Reaktion auf das Empfangen einer Commit-Anfrage von einem Server, der den entfernten Server auffordert, einer Commit-Ausführung einer Transaktion zu einem ersten festgelegten zukünftigen Zeitpunkt zuzustimmen, das Bestimmen, ob der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmen kann; und wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmen kann, das Übertragen einer ersten Antwort an den Server, die anzeigt, dass der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmt; und das Durchführen der Commit-Ausführung von Transaktionen, deren Ausführungszeiträume vor dem ersten festgelegten zukünftigen Zeitpunkt auftreten.
  16. System nach Anspruch 15, worin das mindestens eine Programm nach dem Übertragen der ersten Antwort an den Server Anweisungen zu Folgendem beinhaltet: das Empfangen eines ersten Commit-Befehls von dem Server, der den entfernten Server anweist, die Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt durchzuführen; und das Durchführen der Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt.
  17. System nach Anspruch 16, worin das mindestens eine Programm nach dem Empfangen des ersten Commit-Befehls Anweisungen zu Folgendem beinhaltet: das Abbrechen von Transaktionen, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt beinhalten; und das erneute Ausführen der Transaktionen, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt zu einem Zeitpunkt nach dem ersten festgelegten zukünftigen Zeitpunkt beinhalten.
  18. System nach Anspruch 16, worin das mindestens eine Programm nach dem Empfangen des ersten Commit-Befehls Anweisungen zur Commit-Ausführung von Transaktionen beinhaltet, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt nicht beinhalten.
  19. System nach irgendeinem der Ansprüche 15–18, worin, wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt und vor dem Empfangen eines Commit-Befehls von dem Server zustimmen kann, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Abbrechen von Transaktionen, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt beinhalten; und das Abbrechen von Transaktionen, deren Ausführungszeiträume nach dem ersten festgelegten zukünftigen Zeitpunkt auftreten.
  20. System nach irgendeinem der Ansprüche 15–19, worin, wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt nicht zustimmen kann, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Bestimmen eines zweiten festgelegten zukünftigen Zeitpunkts, zu dem der entfernte Server einer Commit-Ausführung der Transaktion zustimmen kann, worin der zweite festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt; und das Übertragen einer zweiten Antwort an den Server, die anzeigt, dass der entfernte Server einer Commit-Ausführung der Transaktion zu dem zweiten festgelegten zukünftigen Zeitpunkt zustimmen kann.
  21. System nach Anspruch 20, worin das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: Empfangen einer zweiten Commit-Anfrage von dem Server, die den entfernten Server auffordert, einer Commit-Ausführung der Transaktion zu dem zweiten festgelegten zukünftigen Zeitpunkt zuzustimmen; und das Wiederholen der Operationen nach Anspruch 15 unter Verwendung des zweiten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  22. System nach irgendeinem der Ansprüche 15–21, worin die Transaktion eine Operation zum Modifizieren eines Schemas einer Datenbank beinhaltet,
  23. System nach irgendeinem der Ansprüche 15–22, worin die Transaktion eine Operation zum Hinzufügen eines Index zu einer Datenbank beinhaltet.
  24. System nach irgendeinem der Ansprüche 15–23, worin die Commit-Anfrage die Operationen beinhaltet, die mit der Transaktion verknüpft sind.
  25. Nicht flüchtiges computerlesbares Speichermedium, das mindestens ein Programm speichert, das zur Ausführung durch mindestens einen Prozessor eines Computersystems konfiguriert ist, wobei das mindestens eine Programm Anweisungen zu Folgendem umfasst: als Reaktion auf das Empfangen einer Commit-Anfrage von einem Server, der den entfernten Server auffordert, einer Commit-Ausführung einer Transaktion zu einem ersten festgelegten zukünftigen Zeitpunkt zuzustimmen, das Bestimmen, ob der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmen kann; und wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmen kann, das Übertragen einer ersten Antwort an den Server, die anzeigt, dass der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt zustimmt; und das Durchführen der Commit-Ausführung von Transaktionen, deren Ausführungszeiträume vor dem ersten festgelegten zukünftigen Zeitpunkt auftreten.
  26. Nicht flüchtiges computerlesbares Speichermedium nach Anspruch 25, worin das mindestens eine Programm nach dem Übertragen der ersten Antwort an den Server Anweisungen zu Folgendem beinhaltet: das Empfangen eines ersten Commit-Befehls von dem Server, der den entfernten Server anweist, die Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt durchzuführen; und das Durchführen der Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt.
  27. Nicht flüchtiges computerlesbares Speichermedium nach Anspruch 26, worin das mindestens eine Programm nach dem Empfangen des ersten Commit-Befehls Anweisungen zu Folgendem beinhaltet: das Abbrechen von Transaktionen, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt beinhalten; und das erneute Ausführen der Transaktionen, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt zu einem Zeitpunkt nach dem ersten festgelegten zukünftigen Zeitpunkt beinhalten.
  28. Nicht flüchtiges computerlesbares Speichermedium nach Anspruch 26, worin das mindestens eine Programm nach dem Empfangen des ersten Commit-Befehls Anweisungen zur Commit-Ausführung von Transaktionen beinhaltet, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt nicht beinhalten.
  29. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 25–28, worin, wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt und vor dem Empfangen eines Commit-Befehls von dem Server zustimmen kann, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Abbrechen von Transaktionen, deren Ausführungszeiträume den ersten festgelegten zukünftigen Zeitpunkt beinhalten; und das Abbrechen von Transaktionen, deren Ausführungszeiträume nach dem ersten festgelegten zukünftigen Zeitpunkt auftreten.
  30. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 25–29, worin, wenn der entfernte Server einer Commit-Ausführung der Transaktion zu dem ersten festgelegten zukünftigen Zeitpunkt nicht zustimmen kann, das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: das Bestimmen eines zweiten festgelegten zukünftigen Zeitpunkts, zu dem der entfernte Server einer Commit-Ausführung der Transaktion zustimmen kann, worin der zweite festgelegte zukünftige Zeitpunkt ein Zeitpunkt ist, der später ist als der erste festgelegte zukünftige Zeitpunkt; und das Übertragen einer zweiten Antwort an den Server, die anzeigt, dass der entfernte Server einer Commit-Ausführung der Transaktion zu dem zweiten festgelegten zukünftigen Zeitpunkt zustimmen kann.
  31. Nicht flüchtiges computerlesbares Speichermedium nach Anspruch 30, worin das mindestens eine Programm Anweisungen zu Folgendem beinhaltet: Empfangen einer zweiten Commit-Anfrage von dem Server, die den entfernten Server auffordert, einer Commit-Ausführung der Transaktion zu dem zweiten festgelegten zukünftigen Zeitpunkt zuzustimmen; und das Wiederholen der Operationen nach Anspruch 25 unter Verwendung des zweiten festgelegten zukünftigen Zeitpunkts anstelle des ersten festgelegten zukünftigen Zeitpunkts.
  32. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 25–31, worin die Transaktion eine Operation zum Modifizieren eines Schemas einer Datenbank beinhaltet.
  33. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 25–32, worin die Transaktion eine Operation zum Hinzufügen eines Index zu einer Datenbank beinhaltet.
  34. Nicht flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 25–33, worin die Commit-Anfrage die Operationen beinhaltet, die mit der Transaktion verknüpft sind.
DE202013012479.2U 2012-05-11 2013-05-13 System zur Commit Ausführung von Transaktionen auf entfernten Servern Expired - Lifetime DE202013012479U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261646135P 2012-05-11 2012-05-11
US201261646135P 2012-05-11
US201313892169 2013-05-10
US13/892,169 US9596294B2 (en) 2012-05-11 2013-05-10 System and method for committing transactions on remote servers

Publications (1)

Publication Number Publication Date
DE202013012479U1 true DE202013012479U1 (de) 2017-01-19

Family

ID=48614111

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202013012479.2U Expired - Lifetime DE202013012479U1 (de) 2012-05-11 2013-05-13 System zur Commit Ausführung von Transaktionen auf entfernten Servern

Country Status (4)

Country Link
US (1) US9596294B2 (de)
EP (1) EP2847675B1 (de)
DE (1) DE202013012479U1 (de)
WO (1) WO2013170269A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201919B2 (en) * 2013-05-07 2015-12-01 Red Hat, Inc. Bandwidth optimized two-phase commit protocol for distributed transactions
US9760596B2 (en) * 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
US11157998B2 (en) * 2014-08-04 2021-10-26 Renaissance Technologies Llc System and method for executing synchronized trades in multiple exchanges
US10097630B2 (en) * 2014-10-01 2018-10-09 Red Hat, Inc. Transferring data between sites
EP3765968A1 (de) * 2018-03-13 2021-01-20 Google LLC Einbeziehung von zeitstempeln von transaktionalen commits in den primären schlüsseln von relationalen datenbanken

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764877A (en) * 1991-06-25 1998-06-09 Digital Equipment Corporation Media recovery with time-split B-trees
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US5950212A (en) 1997-04-11 1999-09-07 Oracle Corporation Method and system for workload based group committing for improved performance
US5958004A (en) 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
GB2335516A (en) 1998-03-18 1999-09-22 Ibm Failure recovery in distributed transaction avoids heuristic damage
US6970876B2 (en) * 2001-05-08 2005-11-29 Solid Information Technology Method and arrangement for the management of database schemas
JP4291060B2 (ja) 2003-07-01 2009-07-08 富士通株式会社 トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム
US7424499B2 (en) * 2005-01-21 2008-09-09 Microsoft Corporation Lazy timestamping in transaction time database
US8356007B2 (en) * 2010-10-20 2013-01-15 Microsoft Corporation Distributed transaction management for database systems with multiversioning

Also Published As

Publication number Publication date
WO2013170269A1 (en) 2013-11-14
EP2847675A1 (de) 2015-03-18
US9596294B2 (en) 2017-03-14
EP2847675B1 (de) 2022-04-13
US20130318146A1 (en) 2013-11-28

Similar Documents

Publication Publication Date Title
DE69724877T2 (de) Verfahren und Vorrichtung zum Betrieb einer Aggregation von Serverrechnern mittels eines Doppelzweck-Proxy-Servers
DE112012002631T5 (de) Stream-Verarbeitung unter Verwendung einer Client-Server-Architektur
DE69837130T2 (de) Vorrichtung und Verfahren zum Simulieren mehrerer Knoten auf einer einzelnen Maschine
DE202016008045U1 (de) Verteiltes Speichersystem mit Replika-Standortauswahl
DE112013000465B4 (de) Verwaltung einer fernen Datenreplikation
DE112012000693T5 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE3786069T2 (de) Virtueller Programmablauf auf einem Mehrfachverarbeitungssystem.
DE102016103733A1 (de) Kanaleigentum in einem Veröffentlichungs-/Abonnier-System
DE202013012479U1 (de) System zur Commit Ausführung von Transaktionen auf entfernten Servern
DE102012216028A1 (de) Webseiten-skriptverwaltung
DE10314148A1 (de) Verfahren und Vorrichtung zum Verteilten Steuern
DE10059796A1 (de) Steuerung der Lebensdauer von Aktivitäten für die Datenverarbeitung
DE112010004530T5 (de) Transaktionsaktualisierung bei Dynamischen Verteilten Arbeitslasten
DE112018008127T5 (de) Verfahren und vorrichtung zum mappen von network-slices auf netzinfrastrukturen mit sla-garantie
DE112013007469B4 (de) Kommunikationssystem, Standby-Vorrichtung, Kommunikationsverfahren, und Standby-Programm
DE112012000274B4 (de) Schutz der Unversehrtheit von Daten auf Speicherdatenträgern
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben
DE112021003499T5 (de) Skalierbare operatoren für eine automatische verwaltung von arbeitslasten in hybriden cloud-umgebungen
DE3689991T2 (de) Verteilter Datenverwaltungsmechanismus.
DE102006046717A1 (de) Dynamisch migrierende Kanäle
WO1996019759A1 (de) Verfahren zur steuerung von technischen vorgängen
DE102012210064A1 (de) Verwalten von aus Geschäftsobjekten erzeugten Ereignissen
DE102019217015A1 (de) Kommunikationsvorrichtung
DE112019005042T5 (de) Ressourcenzuweisung unter verwendung von wiederherstellungsguthaben
DE112012005046T5 (de) Koordinieren von Schreiboperationsabfolgen in einem Datenspeichersystem

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right