DE202013012476U1 - Systeme zur Steigerung der Datenbankzugriffsparallelität mit Hilfe granularer Zeitstempel - Google Patents

Systeme zur Steigerung der Datenbankzugriffsparallelität mit Hilfe granularer Zeitstempel Download PDF

Info

Publication number
DE202013012476U1
DE202013012476U1 DE202013012476.8U DE202013012476U DE202013012476U1 DE 202013012476 U1 DE202013012476 U1 DE 202013012476U1 DE 202013012476 U DE202013012476 U DE 202013012476U DE 202013012476 U1 DE202013012476 U1 DE 202013012476U1
Authority
DE
Germany
Prior art keywords
column
key column
key
time
instructions
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
DE202013012476.8U
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 DE202013012476U1 publication Critical patent/DE202013012476U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • 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/2315Optimistic concurrency control
    • G06F16/2322Optimistic concurrency control using timestamps
    • 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/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning

Abstract

Ein Datenbankverwaltungssystem, das einen oder mehrere Server-Rechner umfasst, wobei jeder Server-Rechner einschließt: einen Prozessor oder mehrere Prozessoren; Speicher; eine im Speicher gespeicherte Datenbanktabelle, wobei die Datenbanktabelle eine Vielzahl von Zeilen aufweist, wobei jede Zeile aus einem Primärschlüssel und einer Vielzahl von Nicht-Schlüsselspalten besteht, wobei Nicht-Schlüsselspalte einen oder mehrere Spaltenwerte enthält, wobei jeder Spaltenwert einen zugehörigen Zeitstempel hat der identifiziert, wann der zugeordnete Spaltenwert gespeichert wurde und die den Spaltenwerten in jeder Nicht-Schlüsselspalte zugeordneten Zeitstempel sind, stellen eine eindeutige Reihenfolge für die Spaltenwerte bereit, die die Nicht-Schlüsselspalte umfassen; und eine oder mehrere im Speicher für die Ausführung gespeicherten Programme, die durch einen oder mehrere Prozessoren gespeichert sind, wobei die Programme Anweisungen enthalten für: Initiieren einer Lesevorgangstransaktion zum Lesen aus einer ersten Nicht-Schlüsselspalte einer ersten Zeile in der Datenbanktabelle, einschließlich bestimmen, dass eine Schreibtransaktion durchgeführt wird, die eine zweite Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle aktualisiert, wobei die zweite Nicht-Schlüsselspalte unterschiedlich zur ersten Nicht-Schlüsselspalte ist und die Schreibtransaktion eine Sperre für die zweite Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle hält; und gleichzeitig die Daten aus der ersten Nicht-Schlüsselspalte liest und einen neuen Spaltenwert in die zweite Nicht-Schlüsselspalte schreibt.

Description

  • TECHNISCHES GEBIET
  • Die offengelegten Ausführungsformen beziehen sich im Allgemeinen auf Datenbankverwaltungssysteme und insbesondere auf die Steigerung der Datenbankzugriffsparallelität. 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
  • Jedes Element (z. B. eine Spalte) in einer Multiversionsdatenbank ist versioniert und auf einem dem Server zugehörigen Zeitstempel gespeichert. Vorherige Versionen eines Elements können gelesen werden, sind aber typischerweise den Speicherbereinigungsgrenzen unterworfen. Zeitstempel sind kausal konsistent, so dass Lesevorgänge von Daten an alten Zeitstempeln garantiert werden, um eine kausal konsistente Datenbankansicht zu reflektieren. Wenn beispielsweise Transaktion T1 abgeschlossen ist bevor Transaktion T2 startet, muss der Zeitstempel von T1 kleiner sein als der Zeitstempel von T2, selbst wenn die Transaktionen auf separaten Rechnern ablaufen und sich nicht hinsichtlich der Daten, auf die sie zugreifen, überlappen. Darüber hinaus ist die Transaktion T2 garantiert, um die Auswirkungen von T1 zu „sehen”, und jede andere Transaktion die T2 „sieht”, wird auch T1 sehen.
  • Wenn ein Client Daten aus einer Multiversionsdatenbank ausliest, kann der Lesevorgang entweder einen Zeitstempel festlegen oder dem Datenbankverwaltungssystem ermöglichen, den Lesezeitstempel innerhalb einer festgelegten Grenze zum Alter auszuwählen. Die Auswahl eines Zeitstempels innerhalb einer Altersgrenze erfordert eine Sperre und/oder Blockade, um zweideutige Altersberechnungen zu vermeiden.
  • Früher ermöglichten Multiversionsdatenbanken die Berechnung von Lesezeitstempeln durch die Nachverfolgung des letzten Zeitpunkts, an dem eine Änderung an einer Datenzeile vorgenommen wurde Wenn die Datenbank allerdings nur zum letzten Zeitpunkt, als jede Zeile abgeändert wurde nachverfolgt, muss der Algorithmus zur Auswahl eines Lesezeitstempels einen Zeitstempel auswählen, der grösser als der zu dem letzten Zeitpunkt als eine Spalte für die Zeile geändert wurde. Diese künstlich hohe Untergrenze bei der Auswahl von Zeitstempeln kann das Auslesen unnötig verlangsamen oder blockieren. Es begrenzt damit den parallelen Zugriff auf eine einzelne Zeile.
  • In einigen Ausführungsformen umfasst eine Multiversionsdatenbank eine einzelne Nachbildung, die in der Regel an einem einzigen geographischen Standort gespeichert wird. In anderen Ausführungsformen wird eine Multiversionsdatenbank auf zwei oder mehrere Nachbildungen verteilt, die in der Regel an zwei oder mehreren unterschiedlichen geographischen Standorten gespeichert werden. Wenn eine Datenbank über zahlreiche Rechner verteilt wird, benutzen offengelegte Ausführungsformen im Allgemeinen ein verteiltes Zeitsystem. Für Datenbanken die verteilt sind, ist es für die Zeitstempel wichtig, über zahlreiche Server an zahlreichen Standorten konsistent zu sein, um eine eindeutige Ereignisanordnung zu ermöglichen. Allerdings sind die Uhren in einem verteilten System nicht immer synchronisiert. Eine Möglichkeit, synchronisierte Zeitstempel zu erhalten, ist mit einem Netzwerkzeitprotokoll(NTP)-Dienst. Durch die Verwendung eines NTP-Dienstes können Clients versuchen, sich selbst zu synchronisieren, indem sie periodisch einen Timemaster abfragen, der mit einem Zeitstempelpaket antworten kann. Die Zeitabfragen und -antworten vom Timemaster können einem Client ermöglichen, seinen Taktphasen- und Frequenzfehler zu schätzen und die Taktraten entsprechend anzupassen.
  • Mehrere Formen der Unsicherheit können solche abfragebasierten Messungen in Bedrängnis bringen. Zum Beispiel können sich Verzögerungen, die durch Zeitplanung, Netzüberlastung, Interruptkoaleszenz, Routing-Asymmetrie, Systemüberlastungen und andere Ursachen herbeigeführt werden, als unberechenbar erweisen, weil sie asymmetrisch sind. Ferner kann ein typisches NTP-Konzept zur Zeitsynchronisation elementar fehlerhaft sein, weil kein Master vollständig vertrauenswürdig sein kann. Daher wäre es für Clients ratsam, keine Zeitanpassungen einzig und allein auf der Grundlage einer einzigen Master-Reaktion vorzunehmen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Offengelegte Ausführungsformen steigern die Parallelität zwischen den Datenbanklesevorgängen und -schreibvorgängen, indem mehr granuläre Daten aufrecht erhalten werden, als Objekte zuletzt geändert wurden. Anstatt einen pro Zeile- oder pro Shard-Datensatz vom letzten geschrieben Zeitstempel beizubehalten, verfolgen offengelegte Ausführungsformen die Spur des letzten geschrieben Zeistempels für jedes Objekt (z. B. die Spalte oder das Feld innerhalb einer Zeile). Aufgrund dieser Details können Lesezeitstempel ausgewählt werden und Lesevorgänge können, ohne durch parallele Schreibvorgänge blockiert zu werden fortfahren, solange der permanente Schreibvorgang keine Sperren auf den spezifischen Objekten aufweist, die von der Leseoperation erforderlich sind.
  • Gemäss einiger Ausführungsformen wird ein computerimplementiertes Verfahren an einem oder mehreren Serversystemen, jedes mit einem oder mehreren Prozessoren und Speichern, ausgeführt. Der Speicher speichert ein oder mehrere Programme zur Ausführung durch einen oder mehrere Prozessoren. Die Programme umfassen Anweisungen zum Auslesen und Schreiben von Daten aus einer Datenbanktabelle, die eine Zeilenvielzahl aufweist. Jede Zeile in der Datenbanktabelle hat einen Primärschlüssel und eine Vielzahl von Nicht-Schlüsselspalten. Jede Nicht-Schlüsselspalte hat einen oder mehrere Spaltenwerte und jeder Spaltenwert hat einen damit verknüpften Zeitstempel der identifiziert, wann der dazugehörige Spaltenwert gespeichert wurde. Die Zeitstempel, die den Spaltenwerten in der Nicht-Schlüsselspalte zugeordnet sind, stellen eine eindeutige Reihenfolge für die Spaltenwerte der Nicht-Schlüsselspalte bereit. Gemäss einigen Ausführungsformen initiiert das Verfahren eine Lesevorgangstransaktion, um aus einer ersten Nicht-Schlüsselspalte einer ersten Zeile in der Datenbanktabelle auszulesen. Das Verfahren bestimmt, dass eine Schreibvorgangstransaktion abläuft, die gerade eine zweite Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle aktualisiert, wobei die zweite Nicht-Schlüsselspalte sich von der ersten Nicht-Schlüsselspalte unterscheidet. Die Schreibvorgangstransaktion hält eine Sperre auf der zweiten Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle. Das Verfahren liest parallel die Daten aus der ersten Nicht-Schlüsselspalte aus und schreibt einen neuen Spaltenwert in die zweite Nicht-Schlüsselspalte.
  • Gemäss einigen Ausführungsformen enthält jede Nicht-Schlüsselspalte einen letzten Schreibvorgangs-Zeitstempel, der angibt, wann der letzte Schreibvorgang für die jeweilige Nicht-Schlüsselspalte aufgetreten ist. In einigen Ausführungsformen umfasst das Initiieren der Lesevorgangstransaktion die Auswahl eines Lesezeitstempels, der teilweise auf dem letztem Schreibzeitstempel der ersten Nicht-Schlüsselspalte beruht. Bei einigen Implementierungen umfasst das Auslesen der Daten aus der ersten Nicht-Schlüsselspalte die Auswahl eines Spaltenwerts aus der ersten Nicht-Schlüsselspalte entsprechend des Lesezeitstempels. In einigen Ausführungsformen wird der Lesezeitstempel ausgewählt, der sowohl grösser als der letzte Schreibzeitstempel der ersten Nicht-Schlüsselspalte ist und kleiner als ein Wert, der als der minimale nächste neue Schreibzeitstempel für die Datenbanktabelle bestimmt wird. Beim Auslesen einer Vielzahl von Nicht-Schlüsselspalten wird der Lesezeitstempel ausgewählt, der grösser ist als der zuletzt geschriebene Zeitstempel für alle Spalten die ausgelesen werden (und kleiner als der Wert, der als der minimale nächste neue Schreibzeitstempel für die Datenbanktabelle bestimmt wird).
  • Gemäss einigen Ausführungsformen speichert das Verfahren für jede Nicht-Schlüsselspalte jeder Zeile einen letzten Schreibzeitstempel, der angibt, wann der letzte Schreibvorgang für die jeweilige Nicht-Schlüsselspalte der jeweiligen Zeile erfolgt ist. In einigen Ausführungsformen wird der letzte Schreibzeitstempel für jede Nicht-Schlüsselspalte von den Nicht-Schlüsselspaltenwerten getrennt gespeichert. In einigen Ausführungsformen umfasst das Initiieren der Lesevorgangstransaktion die Auswahl eines Lesezeitstempels, der teilweise auf dem letztem Schreibzeitstempel der ersten Nicht-Schlüsselspalte beruht. In einigen Ausführungsformen umfasst das Auslesen der Daten aus der ersten Nicht-Schlüsselspalte die Auswahl eines Spaltenwerts aus der ersten Nicht-Schlüsselspalte, entsprechend dem Lesezeitstempel. In einigen Ausführungsformen wird ein Lesezeitstempel ausgewählt, der sowohl grösser als der letzte Schreibzeitstempel der ersten Nicht-Schlüsselspalte und kleiner als ein Wert ist, der als der minimale nächste neue Schreibzeitstempel für die Datenbanktabelle bestimmt wird. Beim Auslesen einer Vielzahl von Nicht-Schlüsselspalten wird der Lesezeitstempel ausgewählt, der grösser ist als der zuletzt geschriebene Zeitstempel für alle Spalten die ausgelesen werden (und kleiner als der Wert, der als der minimale nächste neue Schreibzeitstempel für die Datenbanktabelle bestimmt wird).
  • Gemäss einiger Ausführungsformen wird ein computerimplementiertes Verfahren an einem oder mehreren Serversystemen ausgeführt, jedes mit einem oder mehreren Prozessoren und Speichern. Der Speicher speichert ein oder mehrere Programme zur Ausführung durch einen oder mehrere Prozessoren. Die Programme umfassen Anweisungen zum Auslesen und Schreiben von Daten aus einer Datenbank. Das Verfahren umfasst die Erstellung einer Datenbanktabelle, die eine Vielzahl von Zeilen hat. Jede Zeile hat einen Primärschlüssel und eine Vielzahl von Nicht-Schlüsselspalten. Jede Nicht-Schlüsselspalte hat einen oder mehrere Spaltenwerte, wobei diese jeweils einen dazu gehörigen Zeitstempel aufweisen. Der Zeitstempel, der einem Spaltenwert zugeordnet ist gibt an, wann der Spaltenwert gespeichert wurde. Dementsprechend bieten die Zeitstempel, die den Spaltenwerten in jeder Nicht-Schlüsselspalte zugeordnet sind, eine eindeutige Reihenfolge für die Spaltenwerte, welche die Nicht-Schlüsselspalte umfassen. In einigen Ausführungsformen speichert die Methode für jede Nicht-Schlüsselspalte jeder Zeile einen letzten Schreibzeitstempel der angibt, wann der letzte Schreibvorgang für die jeweilige Nicht-Schlüsselspalte der jeweiligen Zeile vorgefallen ist. Das Verfahren umfasst das Initiieren einer Lesetransaktion, um aus einer ersten Nicht-Schlüsselspalte einer ersten Zeile in der Datenbanktabelle auszulesen. In einigen Fällen umfasst das Initiieren der Lesetransaktion die Festlegung, dass eine Schreibtransaktion erfolgt die gerade eine zweite Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle aktualisiert, wobei sich die zweite Nicht-Schlüsselspalte von der ersten Nichtschlüssel unterscheidet. In einigen Ausführungsformen umfasst das Initiieren der Lesetransaktion ferner die Auswahl eines Lesezeitstempels, der teilweise auf dem letzten Schreibzeitstempel der ersten Nicht-Schlüsselspalte basiert. Die Schreibtransaktion hält eine Sperre auf der zweiten Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle, aber das Verfahren liest parallel die Daten aus der ersten Nicht-Schlüsselspalte aus und schreibt einen neuen Spaltenwert in die zweite Nicht-Schlüsselspalte. In einigen Ausführungsformen umfasst das Auslesen der Daten aus der ersten Nicht-Schlüsselspalte die Auswahl eines Spaltenwerts aus der ersten Nicht-Schlüsselspalte entsprechend dem Lesezeitstempel.
  • Gemäss einiger Ausführungsformen wird ein computerimplementiertes Verfahren an einem oder mehreren Serversystemen ausgeführt, jedes mit einem oder mehreren Prozessoren und Speichern. Der Speicher speichert ein oder mehrere Programme zur Ausführung durch einen oder mehrere Prozessoren. Die Programme umfassen Anweisungen zum Auslesen und Schreiben von Daten aus einer Datenbank. Das Verfahren beinhaltet die Erstellung einer Datenbanktabelle, die eine Vielzahl von Zeilen aufweist. Jede Zeile hat einen Primärschlüssel und eine Vielzahl von Nicht-Schlüsselspalten. Jede Nicht-Schlüsselspalte hat einen oder mehrere Spaltenwerte, wobei diese jeweils einen dazu gehörigen Zeitstempel aufweisen. Der Zeitstempel, der einem Spaltenwert zugeordnet ist gibt an, wann der Spaltenwert gespeichert wurde. Dementsprechend bieten die Zeitstempel, die den Spaltenwerten in jeder Nicht-Schlüsselspalte zugeordnet sind, eine eindeutige Reihenfolge für die Spaltenwerte, welche die Nicht-Schlüsselspalte umfassen. Das Verfahren beinhaltet das Initiieren einer Schreibtransaktion, um eine erste Zeile in der Datenbanktabelle zu aktualisieren, was die Platzierung einer Sperre auf einer ersten Nicht-Schlüsselspalte der ersten Zeile beinhaltet. Vor dem Abschluss der Schreibtransaktion initiiert das Verfahren eine Lesetransaktion, um aus einer zweiten Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle zu lesen. Die zweite Nicht-Schlüsselspalte unterscheidet sich von der ersten Nicht-Schlüsselspalte. Die erste Transaktion und die zweite Transaktion werden gleichzeitig ausgeführt, wobei sie an verschiedenen Spalten derselben Zeile arbeiten. Der Abschluss der Schreibtransaktion umfasst die Auswahl eines ersten Zeitstempels, der gröser als die Zeitstempel ist, die mit bestehenden Spaltenwerten für die erste Nicht-Schlüsselspalte der ersten Zeile verknüpft sind und das Einfügen eines neuen Spaltenwerts in die erste Nicht-Schlüsselspalte der ersten Zeile von der Datenbanktabelle. Der neue Spaltenwert ist mit dem ersten Zeitstempel assoziiert.
  • Gemäss einigen Ausführungsformen enthält ein Datenbankverwaltungssystem ein oder mehrere Serversysteme, die jeweils einen oder mehrere Prozessoren und Speicher haben. Der Speicher speichert ein oder mehrere Programme zur Ausführung durch einen oder mehrere Prozessoren. Die Programme umfassen Anweisungen zum Auslesen und Schreiben von Daten aus einer Datenbank. Das Datenbankverwaltungssystem erstellt eine Datenbanktabelle, die eine Vielzahl von Zeilen aufweist. Jede Zeile hat einen Primärschlüssel und eine Vielzahl von Nicht-Schlüsselspalten. Jede Nicht-Schlüsselspalte hat einen oder mehrere Spaltenwerte, wobei diese jeweils einen dazu gehörigen Zeitstempel aufweisen. Der Zeitstempel, der einem Spaltenwert zugeordnet ist gibt an, wann der Spaltenwert gespeichert wurde. Dementsprechend bieten die Zeitstempel, die den Spaltenwerten in jeder Nicht-Schlüsselspalte zugeordnet sind, eine eindeutige Reihenfolge für die Spaltenwerte, welche die Nicht-Schlüsselspalte umfassen. Das Datenbankverwaltungssystem initiiert eine Schreibtransaktion, um eine erste Zeile in der Datenbanktabelle zu aktualisieren, welche die Platzierung einer Sperre auf einer ersten Nicht-Schlüsselspalte der ersten Zeile umfasst. Vor dem Abschluss der Schreibtransaktion initiiert das Datenbankverwaltungssystem eine Lesetransaktion, um aus einer zweiten Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle auszulesen. Die zweite Nicht-Schlüsselspalte unterscheidet sich von der ersten Nicht-Schlüsselspalte. Die erste Transaktion und die zweite Transaktion werden zur selben Zeit ausgeführt, wobei sie verschiedene Spalten derselben Zeile bearbeiten. Das Datenbankverwaltungssystem schliesst die Schreibvorgangstransaktion durch die Auswahl eines ersten Zeitstempels ab, der grösser als die Zeitstempel ist, die mit bestehenden Spaltenwerten für die erste Nicht-Schlüsselspalte der ersten Zeile assoziiert sind, und das Einfügen eines neuen Spaltenwertes in die erste Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle. Der neue Spaltenwert ist mit dem ersten Zeitstempel assoziiert.
  • Gemäss einigen Ausführungsarten speichert ein computerlesbares Speichermedium ein oder mehrere Programme, die für die Ausführung durch einen oder mehrere Server-Computer in einem Datenbankverwaltungssystem konfiguriert sind, wobei jeder Server-Computer einen oder mehrere Prozessoren und einen Speicher aufweist, der ein oder mehrere Programme zur Ausführung durch den einen oder mehrere Prozessoren speichert, wobei das eine Programm oder mehrere Programm Anweisungen zum Auslesen und Schreiben von Daten aus einer Datenbank umfassen. Das computerlesbare Speichermedium umfasst Anweisungen zur Erstellung einer Datenbanktabelle, die eine Vielzahl von Zeilen aufweist. Jede Zeile hat einen Primärschlüssel und eine Vielzahl von Nicht-Schlüsselspalten. Jede Nicht-Schlüsselspalte hat einen oder mehrere Spaltenwerte, wobei diese jeweils einen dazu gehörigen Zeitstempel aufweisen. Der Zeitstempel, der einem Spaltenwert zugeordnet ist gibt an, wann der Spaltenwert gespeichert wurde. Dementsprechend bieten die Zeitstempel, die den Spaltenwerten in jeder Nicht-Schlüsselspalte zugeordnet sind, eine eindeutige Reihenfolge für die Spaltenwerte, welche die Nicht-Schlüsselspalte umfassen. Das computerlesbare Speichermedium umfasst Anweisungen zum Initiieren einer Schreibvorgangstransaktion, um eine erste Zeile in der Datenbanktabelle zu aktualisieren, was die Platzierung einer Sperre auf einer ersten Nicht-Schlüsselspalte der ersten Zeile beinhaltet. Das computerlesbare Speichermedium enthält Anweisungen, die konfiguriert sind, um vor dem Abschluss der Schreibvorgangstransaktion ausgeführt zu werden, was eine Lesevorgangstransaktion initiiert, um aus einer zweiten Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle auszulesen. Die zweite Nicht-Schlüsselspalte unterscheidet sich von der ersten Nicht-Schlüsselspalte. Die Anweisungen, die in dem computerlesbaren Speichermedium enthalten sind, sind konfiguriert, um die erste Transaktion und die zweite Transaktion zur selben Zeit auszuführen, wobei sie verschiedene Spalten derselben Zeile bearbeiten. Das computerlesbare Speichermedium umfasst Anweisungen, um die Schreibvorgangstransaktion durch die Auswahl eines ersten Zeitstempels abzuschliessen, der grösser als die Zeitstempel ist, die mit den bestehenden Spaltenwerten für die erste Nicht-Schlüsselspalte der ersten Zeile assoziiert sind, und das Einfügen eines neuen Spaltenwerts in die erste Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle. Der neue Spaltenwert ist mit dem ersten Zeitstempel assoziiert.
  • Ausführungsarten einer Datenbank mit mehreren Versionen, die den letzten geschriebenen Zeitstempel für einzelne Objekte nachverfolgen, sind damit in der Lage, den parallelen Zugriff auf unterschiedliche Objekte innerhalb einer einzigen Zeile einer Datenbanktabelle zu steigern. Wenn eine Multiversionsdatenbank als Einzelreplik existiert und/oder eine Datenspeicherung an einem einzelnen geografischen Standort aufweist, wird die Angabe hierin, um global synchronisierte Zeitstempel bereitzustellen, typischerweise nicht verwendet. Wie nachfolgend detaillierter beschrieben, müssen die Zeitstempel monoton zulegen, damit die Zeitstempel eine ursächlich konsistente Datenansicht bieten, es gibt aber keinen inhärenten Grund dafür, dass die Zeitstempel in einer Datenbank mit den Zeitstempeln für eine andere, damit nicht zusammenhängende Datenbank synchronisiert werden.
  • Andere Gesichtspunkte dieser Angabe könnten dabei vorteilhaft sein, global synchronisierte Zeitstempel zu erstellen, ohne verschiedene Typen von Netzwerkunsicherheit einzugehen, die bei einer expliziten Synchronisation inhärent sind. Die global synchronisierten Zeitstempel können von verschiedenen Diensten verwendet werden, z. B. um örtliche Zeitstempel und Takte zu validieren, oder um die eine Kausalität beachtenden Zeitstempel für Datenbankaktualisierungen bereitzustellen. Durch die Einführung von Techniken zur Nachverfolgung, Berechnung und Aufzeichnung von Zeitdaten mit Bezug zu einer Anzahl zuverlässiger Zeitreferenzen kann eine einfach zu verwaltende und kostengünstige Zeitbasis für Host-Rechner in einem verteilten System bereitgestellt werden.
  • Ein Aspekt der Angabe bietet ein Verfahren, das den Empfang eines anfänglichen örtlichen Zeitstempels, den Empfang von Referenzzeitstempeln, die von einer Vielzahl von Zeit referenzen übertragen werden, umfasst, wobei die Übertragungsverzögerungen, die mit den Zeitreferenzen assoziiert sind, festgelegt werden, und die Berechnung mit Hilfe eines Prozessors, von Zeitversatzintervallen entsprechend den Zeitreferenzen entsprechen, erfolgt. Jedes Zeitversatzintervall umfasst einen Satz aus Zeitversätzen, der die Unterschiede zwischen einem vorgegebenen Referenzzeitstempel und dem anfänglichen örtlichen Zeitstempel darstellt. Diesbezüglich kompensiert der Satz aus Zeitversätzen die Übertragungsverzögerung, die mit der entsprechenden Zeitreferenz assoziiert ist. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen.
  • Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Jedes Zeitversatzintervall umfasst einen Satz aus Zeitversätzen, der die Unterschiede zwischen einem vorgegebenen Referenzzeitstempel und dem anfänglichen örtlichen Zeitstempel darstellt. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen.
  • Noch ein weiterer Aspekt der Offenbarung bietet ein greifbares, computerlesbares Speichermedium, das Anweisungen enthält, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor dazu bringen, ein Verfahren durchzuführen. Das Verfahren umfasst den Empfang eines anfänglichen örtlichen Zeitstempels, den Empfang von Referenz-Zeitstempeln, die von einer Vielzahl von Zeitreferenzen versendet werden und dabei Übertragungsverzögerungen, die mit den Zeitreferenzen verknüpft sind, bestimmen, und unter Verwendung eines Prozessors, Intervalle mit zeitlichem Versatz entsprechend den Zeitreferenzen berechnen. Jedes Intervall mit zeitlichem Versatz umfasst einen Satz von Zeitversätzen, die Unterschiede zwischen einem gegebenen Referenzzeitstempel und dem anfänglichen örtlichen Zeitstempel darstellen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen. Das Verfahren umfasst auch die Auswahl von mindestens einem der Zeitversatzintervalle auf der Grundlage eines Auftretens jenes Zeitversatzintervalls unter den berechneten Zeitversatzintervallen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Diagramm eines Systems nach den Gesichtspunkten der aktuellen Technologie.
  • 2 ist eine geographische Veranschaulichung von Rechenzentren, die an verschiedenen Standorten auf der Erde gemäss der Gesichtspunkte der aktuellen Technologie positioniert werden.
  • 3 ist ein weiteres Diagramm eines Systems nach den Gesichtspunkten der aktuellen Technologie.
  • 4 ist ein Flussdiagramm, das ein Beispiel eines Verfahrens zum Synchronisieren eines Host-Rechners auf einen Satz von Zeitreferenzen nach den Gesichtspunkten der aktuellen Technologie darstellt.
  • 5 ist ein Flussdiagramm, das ein Beispiel eines Verfahrens zur Bereitstellung validierter Zeitstempel nach den Gesichtspunkten der aktuellen Technologie darstellt.
  • 6 ist eine Grafik von korrelierten Zeitstempeln nach den Gesichtspunkten der aktuellen Technologie.
  • 7 ist ein weiteres Diagramm eines Systems nach den Gesichtspunkten der aktuellen Technologie.
  • 8 ist ein Flussdiagramm, das ein Beispiel eines Verfahrens zum Erstellung kausaler Zeitstempel nach den Gesichtspunkten der aktuellen Technologie darstellt.
  • 9 ist ein konzeptionelles Blockdiagramm eines Datenbankverwaltungssystems gemäss einigen Ausführungsarten.
  • 10 ist ein Funktionsblockdiagramm eines Client-Computers gemäss einigen Ausführungsarten.
  • 11A ist ein Funktionsblockdiagramm eines Datenbankservers gemäss einigen Ausführungsarten.
  • 11B ist ein Funktionsblockdiagramm eines Frontendservers gemäss einigen Ausführungsarten.
  • Die 12A12D veranschaulichen beispielhafte Datenstrukturen, die in einer Datenbank mit mehreren Versionen gemäss einigen Ausführungsarten eingesetzt werden.
  • Die 12E bis 12F veranschaulichen die Shardbildung einer Zeile in einer Datenbanktabelle gemäss einigen Ausführungsarten.
  • Die 12G veranschaulicht eine alternative Methode, um eine Zeile 418 in Shards gemäss einigen Ausführungsarten zu splitten.
  • Die 13A13B veranschaulichen Daten, die von einer Datenbank mit mehreren Versionen verwendet werden, um Zeitstempel für den Lesevorgang und Zeitstempel für den Schreibvorgang gemäss einigen Ausführungsarten zuzuordnen.
  • Die 14A14B sind beispielhafte Flussdiagramme zum Auslesen und Schreiben von Daten aus einer Tabelle in einer Datenbank mit mehreren Versionen gemäss einigen Ausführungsarten.
  • 15 ist ein beispielhaftes Flussdiagramm zum gleichzeitigen Auslesen und Schreiben von Daten aus einer Tabelle in einer Datenbank mit mehreren Versionen gemäss einigen Ausführungsarten.
  • Die 16A16B veranschauichen einen beispielhaften Prozess, gemäss einigen Ausführungsformen, zum Lesen und Schreiben von Daten aus einer Tabelle in einer Multiversionsdatenbank.
  • Gleiche Referenzziffern beziehen sich in den verschiedenen Ansichten der Zeichnungen auf die dazugehörigen Teile.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Es wird nun im Detail auf Ausführungsarten Bezug genommen, von denen Beispiele in den begleitenden Zeichnungen dargestellt
  • Einige der offengelegten Ausführungsarten eines Datenbankverwaltungssystems benutzen ein verteiltes Zeitsystem, wenn die Datenbank über mehrere Rechner verteilt wird. Die 1 bis 8 veranschaulichen ein Beispiel eines verteilten Zeitsystems, das in Verbindung mit dem in den 9 bis 16B dargestellten Datenbankverwaltungssystem eingesetzt werden kann. Einige Ausführungsarten des Datenbankverwaltungssystems, die in den 916B dargestellt sind, verwenden alternative verteilte Zeitsysteme.
  • In dieser Angabe werden Systeme und Verfahren zur Erstellung global kohärenter Zeitstempel bereitgestellt. Diese Technologie kann es verteilten Systemen ermöglichen, ursächlich Transaktionen zu ordnen, ohne verschiedene Typen von Kommunikationsverzögerungen herbeizuführen, die einer expliziten Synchronisation inhärent sind. Durch den globalen Einsatz einer Anzahl von Zeiterfassungsgeräten, die auf verschiedenen Typen von Zeitreferenzen basieren (z. B. Satellitennavigationssysteme (GPS) und Atomuhren), können die Erfassungsgeräte als primäre Zeitreferenzen für die verteilten Systeme dienen. Die hierin beschriebenen Technologien können verwendet werden, um Daten mit Bezug zu jedem Zeiterfassungsgerät abzufragen, nachzuverfolgen, zu berechnen und aufzuzeichnen. Diese Daten können mit einer Reihe von Zeiterfassungsgeräten abgeglichen werden, um zu beurteilen, welche Zeiterfassungsgeräte eventuell fehlerhaft arbeiten und welche Zeiterfassungsgeräte den Clients validierte kausale Zeitstempel bereitstellen können.
  • 1 ist ein Diagramm eines Systems 100 gemäss einem Aspekt der aktuellen Technologie. Wie gezeigt, kann eine beispielhafte Ausführungsform des Systems 100 eine Reihe von Servern 110 und 170 umfassen, die mit einem Netzwerk 150 gekoppelt sind. Das System kann auch einen Client 160 umfassen, der zur drahtlosen Kommunikation mit den Servern 110 und 170 über das Netzwerk 150 in der Lage ist.
  • Server 110 kann einen Prozessor 120, einen Speicher 130 und andere Komponenten beinhalten, die typischerweise in Allzweckcomputern vorhanden sind. Der Speicher 130 kann Informationen speichern, auf die der Prozessor 120 zugreifen kann, dies umfasst Anweisungen 132, die vom Prozessor 120 ausgeführt werden können. Der Speicher kann auch Daten 134 enthalten, die vom Prozessor 120 abgerufen, verändert oder gespeichert werden können. Beim Typ des Speichers 130 kann es sich um ein nichtflüchtiges computerlesbares Medium handeln, das in der Lage ist, Informationen zu speichern, auf die der Prozessor 120 zugreifen kann, d. h. zum Beispiel um eine Festplatte, eine Speicherkarte, ROM, RAM, eine DVD, eine CD-ROM, um beschreibbare und schreibgeschützte Speicher. Der Prozessor 120 ist eventuell ein gut bekannter Prozessor, wie z. B. Prozessoren der Intel Corporation oder von Advanced Micro Devices. Alternativ dazu kann der Prozessor 120 ein dedizierter Controller, wie z. B. ein ASIC, sein.
  • Die Anweisungen 132 können ein Satz von Anweisungen sein, die direkt (wie z. B. Maschinencode) oder indirekt (wie z. B. Skripte) vom Prozessor 120 ausgeführt werden. Diesbezüglich können die Begriffe „Anweisungen”, „Schritte” und „Programme” hierin austauschbar verwendet werden. Die Anweisungen 132 können im Objektcode-Format zur direkten Verarbeitung durch den Prozessor 120 oder in sonstigen Computersprache einschliesslich Skripten oder Sammlungen unabhängiger Quellcode-Module, die auf Anfrage interpretiert oder im Voraus kompiliert werden, gespeichert werden. Funktionen, Verfahren und Routinen der Anweisungen werden unten ausführlicher erklärt.
  • Die Daten 134 können vom Prozessor 120 in Übereinstimmung mit den Anweisungen 132 abgerufen, gespeichert oder geändert werden. Obwohl das System und das Verfahren beispielsweise nicht von einer bestimmten Datenstruktur begrenzt sind, können die Daten 134 in Computerregistern in einer relationalen Datenbank als eine Tabelle gespeichert werden, die über eine Vielzahl von unterschiedlichen Feldern und Datensätzen, XML Dokumenten oder unstrukturierten Dateien verfügt. Die Daten 134 können auch in einem computerlesbaren Format wie zum Beispiel, aber nicht beschränkt auf binäre Werte, ASCII oder Unicode formatiert sein. Darüber hinaus können die Daten 134 alle Informationen umfassen, die dazu dienen, die relevanten Informationen zu erkennen, wie Zahlen, beschreibende Texte, proprietäre Codes, Zeiger, Verweise zu in anderen Speichern abgelegten Daten (einschliesslich anderer Netzstandorte) oder Informationen, die von einer Funktion zur Berechnung der relevanten Daten genutzt werden.
  • Obwohl 1 veranschaulicht, dass der Prozessor 120 und Speicher 130 funktional als in dem gleichen Block dargestellt werden, wird der Fachmann verstehen, dass Prozessor 120 und Speicher 130 in der Praxis mehrere Prozessoren und Speicher umfassen können, die in dem gleichen physischen Gehäuse untergebracht werden können oder nicht. Beispielsweise können einige der Anweisungen und Daten auf entfernbare CD-ROM und andere in einem Nur-Lese-Computer-Chip gespeichert werden. Einige oder alle der Anweisungen und Daten können an einem Standort gespeichert werden, der physisch vom Prozessor 120 entfernt ist, zu dem der Prozessor aber trotzdem Zugang hat. Desgleichen kann der Prozessor 120 eine Reihe von Prozessoren umfassen, die parallel betrieben werden können oder nicht.
  • Wie in 1 gezeigt, können die Server 110 und 170 auch ein Zeiterfassungsgerät-Modul 135 umfassen. Das Zeiterfassungsgerät-Modul 135 kann in Verbindung mit einem Empfänger zum Empfang von Zeitsignalen betrieben werden. Die Zeiterfassungsgeräte 135 können als präzise Zeitreferenzen in einem verteilten System für (1) Synchronisationsrechner und Vorrichtungen und (2) zur Validierung und Überwachung dieser Synchronisation dienen. Dies kann die Lieferung einer Referenzzeit für ein Kernnetzwerk von Rechnern und ihrer unterstützenden Infrastruktur umfassen. Zum Beispiel kann eine eingehende Zeitabfrage von einem Client 160 einen Zeitstempel empfangen, der vom Zeiterfassungsgerät 135 festgelegt wird. Die Zeitstempel können auf verschiedenen Systemtypen basieren, die in den Wissenschaften dafür bekannt sind, eine genaue und zuverlässige Zeitreferenz (z. B. ein GPS-System) bereitzustellen.
  • Nach den Gesichtspunkten können die Server 110 und 170 aus einer Middleware-Software bestehen, die das Zeitmastermodul 135 mit internen Komponenten der Server 110 und 170 verwalten und integrieren kann. Nach einem Gesichtspunkt kann die Middleware aus einem Satz von Diensten bestehen, die es mehreren Prozessen, die vom Zeitmastermodul 135 aus laufen, ermöglichen, mit dem Prozessor 120, dem Speicher 130, den Anweisungen 132 und den Daten 134 zu interagieren. Nach einigen Gesichtspunkten könnte es weder wünschenswert noch möglich sein, andere Typen von NTP-Diensten auf einem Host-Server 110 in Verbindung mit einem Zeitmastermodul 135 laufen zu lassen. Zum Beispiel können Systemkonflikte über Ports auftreten, die dem NTP-Dienst zugeordnet sind und dabei die Zuverlässigkeit eines Zeiterfassungsgeräts ernsthaft beeinträchtigen.
  • Server 110 und 170 können sich an einem Knoten eines Netzwerks 150 befinden und in der Lage sein, mit anderen Knoten eines Netzwerks 150 direkt und indirekt zu kommunizieren. Beispielsweise können die Server 110 und 170 einen Webserver umfassen, der in der Lage sein kann, mit einer Client-Vorrichtung 160 über das Netzwerk 150 zu kommunizieren, so dass er das Netzwerk 150 verwendet, um Informationen an eine Client-Anwendung zu übertragen. Die Server 110 und 170 können auch eine Vielzahl von Computern umfassen, z. B. eine lastenausgeglichene Serverfarm, die Informationen mit verschiedenen Knoten eines Netzwerks zu dem Zweck austauscht, Daten zu empfangen, zu verarbeiten und an Client-Vorrichtungen zu übermitteln. In diesem Fall wird der Client-Computer typischerweise immer noch an anderen Knoten des Netzwerks 150 als den Computern sein, welche die Server 110 und 170 umfassen. Obwohl nur wenige Server 110, 170 in 1 dargestellt sind, sollte es klar sein, dass ein typisches System eine grosse Anzahl von verbundenen Computern beinhalten kann, wobei sich jeder dieser Computer an einem anderen Knoten des Netzwerks 150 befindet.
  • Jeder Client 160 kann ähnlich den Servern 110 und 170 mit einem Prozessor 162, Speicher 163, Anweisungen 164 und Daten 167 konfiguriert werden. Jeder Client 160 kann ein PC sein, der für den Gebrauch durch eine Person bestimmt und mit allen internen Komponenten bestückt ist, die man normalerweise in einem PC vorfindet, wie z. B. eine zentrale Recheneinheit (CPU), ein optionales Anzeigegerät 165 (zum Beispiel ein Monitor mit Bildschirm, ein Projektor, einen Touchscreen, ein kleiner LCD-Bildschirm, ein Fernsehgerät oder ein anderes Gerät wie z. B. ein elektrisches Gerät, das zur Anzeige der vom Prozessor verarbeiteten Informationen betrieben werden kann), CD-ROM, eine Festplatte, eine Benutzereingabevorrichtung 166 (zum Beispiel eine Maus, Tastatur, einen Touchscreen oder Mikrofon), Lautsprecher, ein Modem und/oder Netzschnittstellengerät (Telefon, Kabel oder anderweitiges) und sämtliche Komponenten, die zur Verbindung dieser Elemente miteinander erforderlich sind. Darüber hinaus können Computer gemäss den hierin beschriebenen Systemen und Verfahren alle Geräte umfassen, die betriebsfähig zur Ausführung von Anweisungen und zur Übertragung von Daten an und von Personen und Computer sind, einschliesslich Allzweckcomputer, PDA, Netzwerkcomputer ohne lokale Speicherkapazität und Settop-Boxen für Fernsehgeräte.
  • Obwohl der Client 160 einen PC in voller Grösse umfassen kann, können die Systeme und Verfahren dieser Angabe auch in Verbindung mit Mobilgeräten verwendet werden, die in der Lage sind, drahtlos Daten über ein Netzwerk wie z. B. das Internet auszutauschen. Nur als Beispiel kann ein Client 160 ein mobiler PDA, ein Tablet-PC oder ein Mobiltelefon sein, das in der Lage ist, Informationen über das Internet zu versenden. Ein Benutzer kann mittels einer kleinen Tastatur, einer numerischen Tastatur oder eines Touchscreen Informationen eingeben.
  • Wie in 1 gezeigt, kann der Client 160 ein Anwendungsschnittstellenmodul 168 beinhalten. Das Anwendungsschnittstellenmodul kann verwendet werden, um auf einen Dienst zuzugreifen, der von einem Server wie z. B. den Servern 110 und 170 zur Verfügung gestellt worden ist. Das Anwendungsschnittstellenmodul 168 kann ein Softwaremodul sein, das in Verbindung mit mehreren Betriebssystemtypen, die in den Wissenschaften bekannt sind, betrieben werden kann. Zum Beispiel kann der Client 130 mit einem SQL (Structured Query Language) Datenbankserver verbunden sein, der in Verbindung mit dem Anwendungsschnittstellenmodul 168 zum Speichern und Abruf von Informationsdaten betrieben werden kann. Der Speicher 163, mit einem Client 160 gekoppelt, kann Daten 167 speichern, auf die seitens des Anwendungsmoduls 168 zugegriffen wird. Die Daten 167 können auch auf einem entfernbaren Medium, wie z. B. einer Diskette, einem Band, einer SD-Karte oder einer CD-ROM, die mit dem Client 160 verbunden werden kann, gespeichert werden.
  • Die Server 110 und 170 und der Client 160 können zur direkten und indirekten Kommunikation, wie z. B. über ein Netzwerk 150, in der Lage sein. Zum Beispiel kann sich ein Client 160 mit Hilfe eines Internetsockets mit einem Dienst verbinden, der auf Remote-Servern 110 und 170 über eine Internetprotokollfamilie betrieben wird. Die Server 110 und 170 können Listening Sockets einrichten, die eine initiierende Verbindung zum Versand und Empfang von Informationen akzeptieren können.
  • Das Netzwerk 150 und die beteiligten Knoten können verschiedene Konfigurationen und Protokolle einschliesslich des Internets, des World Wide Web, Intranets, virtueller privater Netzwerke, WANs, örtlicher Netzwerke, privater Netzwerke unter Verwendung von Kommunikationsprotokollen, die Eigentum eines oder mehrerer Gesellschaften sind, Ethernet, Wi-Fi (wie z. B. 802.11, 802.11b, g, n, oder andere solche Standards) und HTTP sowie verschiedene Kombinationen der vorgenannten umfassen. Eine solche Kommunikation kann durch ein Gerät ermöglicht werden, das in er Lage ist, Daten zu und von anderen Computern, wie z. B. Modems (z. B. Einwahl-, Kabel- oder Faseroptikmodems) und drahtlosen Schnittstellen, zu übertragen.
  • Obwohl durch die Übertragung von Informationen in der o. a. Weise gewisse Vorteile erzielt werden, sind andere Aspekte des Systems und der Methode nicht auf eine besondere Informationsübermittlungsart beschränkt. Mehr noch, obwohl einige Funktionen in der Weise dargestellt sind, dass sie auf einem einzelnen Server mit einem einzigen Prozessor erfolgen, können verschiedene Aspekte des Systems und der Methode durch mehrere Server implementiert werden, z. B. indem Informationen über das Netzwerk 150 kommuniziert werden.
  • 2 ist eine geographische Darstellung der Datenzentren 210, 220, 230, 240, 250, 260 und 270, die an verschiedenen Standorten auf der Erde positioniert sind. In diesem Beispiel kann es aufgrund der weltweiten Abdeckung eines soliden weltweiten Navigationssatellitensystems (GNSS) möglich sein, Zeiterfassungsgeräte in den Datenzentren 210, 220, 230, 240, 250, 260 und 270 rund um die Welt 200 einzusetzen. Andere bestehende Zeitverteilungssysteme kommen eventuell nicht nahe an ein GNSS-System heran, wenn sie auf Basis der Zuverlässigkeit, Genauigkeit, Abdeckung und Kosten vermessen werden. Nach einem Gesichtspunkt können alle wichtigen Datenzentren in einem verteilten System mit redundanten Zeiterfassungsgeräten, die dem Datenzentrum eine stabile Zeitreferenz mit niedriger Latenz bereitstellen können, ausgestattet werden. Redundante Zeiterfassungsgeräte können ebenfalls eine Ausfallsicherheit, eine Fehlererkennung, eine Lokalisierung und ein Mittel für den Abgleich von Zeiterfassungsgeräten bereitstellen.
  • Wie zuvor besprochen, kann jeder Host-Server mit einem Empfänger wie z. B. einem GPS-Empfänger zum Empfang von Zeitsignalen verbunden werden. Für die Belastbarkeit könnte es besser sein, mehrere Sorten von GPS-Empfängern einzusetzen, z. B. SPECTRACOM Modell TSync-PCIe, SYMMETRICOM Modell bc637PCI-V2 und MEINBERG. Die GPS-Empfänger erfordern eventuell dachmontierte Antennen 215, 225, 235, 245, 255, 265 und 275, die auf dem Dach über den Datenzentren 210, 220, 230, 240, 250, 260 und 270 angebracht werden können. Host-Server können in Server-Racks, die sich in den Datenzentren 210, 220, 230, 240, 250, 260 und 270 befinden, untergebracht werden. Als solche können Leitungen installiert werden, um Antennenkabel von einem Host-Server zu den Hausdachantennen zu leiten. Es könnte möglich sein, eine Antenne zur Mitbenutzung für mehrere Empfänger zu verwenden. Dies kann zum Beispiel mit einem Antennensplitter erreicht werden. Allerdings kann die Antennenmitbenutzung aufgrund der geringen Wahrscheinlichkeit eines Antennenausfalls unerwünscht sein.
  • Es ist vorstellbar, dass ein GPS-Empfänger ausfallen kann. Zum Beispiel können mögliche Szenarien latente Fehler in GPS-Empfängern, Software- und Satellitensoftware-Aktualisierungen und eine weltweite Katastrophe umfassen. Im Falle eines GPS-Versagens kann die Fähigkeit eines Zeiterfassungsgeräts, sich mehrere Monate lang freizulaufen (z. B. ohne eine GPS-Zeitreferenz zu laufen), es für eine ausreichende Zeit ermöglichen, genügend Zeit haben, um alternative Anordnungen zu treffen. Diese Art eines speziell konfigurierten Zeiterfassungsgeräts, das für Notfallsituationen implementiert wird, wird besser detailliert in Bezug auf 3 beschrieben.
  • 3 ist ein weiteres Diagramm eines Systems 300 im Einklang mit einigen Gesichtspunkten der aktuellen Technologie. In 3 kann ein speziell konfigurierter Server 310 während Notfällen eingesetzt werden, um „Wiederherstellungs”-Dienste zu unterstützen. Der Server 310 kann einen Prozessor 320, einen Speicher 330 und andere Komponenten enthalten, die üblicherweise in einem Mehrzweck-Computer vorhanden sind. Seine Komponenten können auf ähnliche Art und Weise wie die Komponenten der Server, die hinsichtlich 1 beschrieben werden, interagieren.
  • Wie in 3 gezeigt, kann der Server 310 ein Wiederherstellungsmastermodul 335 beinhalten, das ein Zeitmastermodul ersetzen kann. In dieser Konfiguration kann der Wiederherstellungsmaster frequenzverriegelt 325 gegenüber einem sehr stabilen Oszillator 338 anstelle, zum Beispiel, eines GPS-Systems sein. Die Stabilität des Oszillators 338 kann festlegen, wie lange und wie akkurat ein Wiederherstellungsmaster die Zeit vorlegen kann. Beispielsweise kann, basierend auf empirischen Daten, ein ofengesteuerter Kristalloszillator (OCXO) auf der Basis empirischer Daten eine kurzzeitige Frequenzstabilität von ±50 ppb (Teile-pro-Milliarde, 10-9) mit einer Alterungsrate einer Instabilität bei 5 ppb pro Tag haben, und ein Rubidiumoszillator kann eine Frequenzstabilität von ±1 ppb mit einer Alterungsrate der Instabilität bei 0,03 ppb pro Tag haben. Es sollte bedacht werden, dass sich Zeitinstabilitätsfehler linear mit der Kurzzeitstabilität und quadratisch mit der Alterungsrate aufhäufen können.
  • Nach den Gesichtspunkten kann ein Wiederherstellungsmaster 335 in Bezug auf einen Park von Zeiterfassungsgeräten 314, 316 und 318 über ein Netzwerk 350 kalibriert werden. Während der Neukalibrierung können alle verfügbaren gewöhnlichen Zeiterfassungsgeräte beteiligt sein. Jedes Zeiterfassungsgerät 314, 316 und 318 kann zum Beispiel mit einer individuellen Zeitreferenz, wie z. B. einer GPS-Versorgung, synchronisiert werden. Obwohl nur ein Wiederherstellungsmaster 335 in 3 dargestellt wird, sollte nachvollzogen werden, dass ein typisches System 300 eine Reihe von Wiederherstellungsmastern umfassen kann, wobei sich jeder an einem anderen Knoten des Netzwerks 350 befindet. Nach den Gesichtspunkten können Neukalibrierungen über mehrere Wiederherstellungsmaster gestaffelt sein, um die Injektion unentdeckter Ausfälle (z. B. GPS-Signalausfälle) in zahlreiche Wiederherstellungsmasters zu vermeiden.
  • Ein anfängliches Neukalibrierungsintervall zwischen einem Wiederherstellungsmaster 315 und den gewöhnlichen Zeiterfassungsgeräten 314, 316 und 318 ist eventuell kurz, um eine relativ schnelle näherungsweise Synchronisation zu erreichen. Um eine zunehmend genauere Kalibrierung zu erreichen, kann das Intervall bei jeder nachfolgenden Neukalibrierung verdoppelt werden, bis es eine konfigurierte Konstante erreicht (z. B. 60 Tage für den Rubidium-basierten Wiederherstellungsmaster und 2 Tage für den OXCO-basierten Wiederherstellungsmaster). Kalibrierungsparameter können in einer persistenten Datei gespeichert werden, so dass die Parameter die Software-Neustarts und neue Boot-Vorgänge von Servern überdauern. Zum Beispiel kann eine Kalibrierungsdatei in den Speicher 330, wann immer ein Server 310 startet, geladen werden. Die Kalibrierungsdatei kann eine Referenznummer enthalten, die dem Zeiterfassungsgeräte 314, 316 und 318 und den entsprechenden Kalibrierungsparametern entspricht. Die Neukalibrierungen können verworfen werden, wann immer eine Frequenzreferenz gestört wird (z. B. wenn eine Zeitreferenz aus- und wieder eingeschaltet wird).
  • Zusätzlich zu den oben beschriebenen und in den FIG. veranschaulichten Komponenten sollen nun verschiedene Operationen beschrieben werden. Es sollte sich verstehen, dass die folgenden Operationen nicht in der nachstehend beschriebenen genauen Reihenfolge durchgeführt werden müssen. Stattdessen können unterschiedliche Schritte in unterschiedlicher Reihenfolge oder gleichzeitig durchgeführt werden. Schritte können auch hinzugefügt oder weggelassen werden, sofern nicht anders angegeben.
  • Nach den Gesichtspunkten, um sicherzustellen, dass Zeitstempel, die in einem gestörten System berechnet werden, vertrauenswürdig sind, kann eine Unterroutine, die hierin als Zeitsynchronisationsdämon bezeichnet wird, ausgeführt werden. Zeitsynchronisierungsdämonen können auf einem oder einer Reihe von Host-Rechnern gleichzeitig (z. B. Client- und Zeiterfassungsgeräte-Host-Rechner) eingesetzt werden. Durch das Abfragen einer Flotte von Zeiterfassungsgeräten zur Bestimmung eines aktuellen Zeitstempels können die Zeitsynchronisationsdämonen periodisch das Zeitkonzept der Host-Rechner mit der Flotte von Zeiterfassungsgeräten vergleichen. Nachdem die Flottenzeitmaster für die aktuelle Zeit abgefragt worden sind, kann der Zeitsynchronisationsdämon die Rundlaufabfrageverzögerung, die mit der Abfrage jedes Zeiterfassungsgeräts verknüpft ist, nachverfolgen. Nach einigen Gesichtspunkten kann der Zeitsynchronisationsdämon die Synchronisationsversatzintervalle, die zu einem Zeiterfassungsgeräte in Beziehung stehen können (z. B. ein Intervall zwischen der Ortszeit und einem Zeitmasterkonzept der aktuellen Zeit), berechnen.
  • Um Versatzintervalle, die von möglicherweise fehlerhaft arbeitenden Zeiterfassungsgeräten abgeleitet werden (z. B. Zeiterfassungsgeräte, die versagt haben, aber immer noch Zeitstempel hervorrufen), zu erfassen und zurückzuweisen, kann ein Abstimmungsverfahren wie z. B. eine Variante des Marzullo-Algorithmus verwendet werden. Als Ergebnis des Abstimmungsverfahrens kann der Zeitsynchronisationsdämon die Ausgabe von validierten Zeiterfassungsgeräten oder die Ausgabe einer Ablehnung von bestimmten Zeiterfassungsgeräten, zum Beispiel fehlerhaft arbeitenden Zeiterfassungsgeräten, akzeptieren.
  • 4 ist ein Flussdiagramm, das ein Beispiel eines Verfahrens 400 zum Synchronisieren eines Host-Rechners (z. B. GPS-versorgter Zeiterfassungsgeräte, Wiederherstellungsmaster und Client-Host-Rechner) mit einem Satz von Zeitreferenzen veranschaulicht. Wie vorher besprochen, kann die Zeitsynchronisation eine Zeitabfrage einer konfigurierten Untermenge von Zeiterfassungsgeräten und die Ausführung eines Abstimmungsalgorithmus bei den Abfrageergebnissen mit sich bringen, um zu bestimmen, welche Zeiterfassungsgeräte gerade präzise aktuelle Zeitstempel hervorrufen.
  • In Block 410 kann ein anfänglicher örtlicher Zeitstempel abgerufen werden. Das Verfahren 400 kann zum Beispiel auf einen Eintrag zum Speichern des Konzepts eines aktuellen Datums und einer aktuellen Zeit eines Host-Rechners zugreifen. Dies kann die Zeit von einem internen Taktgeber auf dem Host-Rechner widerspiegeln. Die Zeitstempel können in verschiedenen Zeitformaten, die verwendet werden, um Zeitaugenblicke wie z. B. die Koordinierte Weltzeit (UTC), die Unix-Epoche und die eindeutige Internationale Atomzeit-Epoche (TAI) zu beschreiben, kodiert werden.
  • In Block 420 können Zeitabfragen zu einer vorbestimmten Zahl von Zeiterfassungsgeräten (z. B. 5 bis 10 Zeiterfassungsgeräte) gesendet werden. Eine Anwendungsschnittstelle kann zum Beispiel verwendet werden, um eine Verbindung zu einem Zeiterfassungsgerät zum Versand und Empfang von Informationen herzustellen. Nach einem Gesichtspunkt können die Zeiterfassungsgeräte bei Stratum 1 oder Stratum 2 betrieben werden. Es ist für Zeiterfassungsgeräte ebenfalls möglich, bei einer beliebigen Zahl in Betrieb zu sein, wie z. B. von [1 ... K]. Die grundlegende Definition eines Stratum 1-Zeiterfassungsgeräts ist, dass es direkt (z. B. nicht über eine Netzwerkverbindung) mit einer zuverlässigen Zeitquelle wie z. B. einem GPS-Empfänger verknüpft sein kann. Ein Stratum 2-Zeiterfassungsgeräte kann mit einem oder mehreren Stratum 1-Zeiterfassungsgeräten zum Beispiel über eine Netzwerkverbindung verbunden sein. In diesem Beispiel kann ein Stratum 2-Zeiterfassungsgeräte seine Zeit über eine Netzwerkabfrage an ein oder mehrere Stratum 1-Zeiterfassungsgeräte erhalten. Diesbezüglich kann, wenn ein Stratum-Erfassungsgerät von einem Erfassungsgerät, das am Stratum K oder niedriger betrieben wird, gespeist wird, dieses als ein Stratum-(K + 1) beschrieben werden.
  • In Block 430 können die Reaktionen von den Zeiterfassungsgeräten, die in Block 420 abgefragt werden, empfangen werden. Beispielsweise kann als ein Ergebnis der Zeitabfrage ein Zeiterfassungsgerät einen Zeitstempel hervorrufen. Nach den Gesichtspunkten können Zeiterfassungsgeräte Zeitstempel über eine Netzwerkverbindung in einem verteilten System publizieren. Nach einem Gesichtspunkt kann die Anwendungsschnittstelle, die dazu verwendet wird, um einen Zeitstempel in Block 420 abzufragen, auch eingesetzt werden, um Zeitstempelantworten abzurufen. Verschiedene andere Technologien zur Datenübertragung über ein Netzwerk-Socket können verwendet werden, um Zeitstempelantworten zu veröffentlichen und zu empfangen, z. B. ein Übertragungssteuerungsprotokoll/Internetprotokoll (TCP/IP), das Hypertextübertragungsprotokoll (HTTP), das Dateiübertragungsprotokoll (FTP), Telnet (Telnet) Protokolle und andere Typen von Kommunikationsprotokollen.
  • Im Block 440 kann eine empfangene Zeitabfragereaktion mit einem aktuellen örtlichen Zeitstempel verbunden sein. Der aktuelle örtliche Zeitstempel kann zum Beispiel die jeweiligen Empfangsvorfälle der Zeitabfragereaktion entsprechend einer örtlichen Zeitskala kennzeichnen. Nach einigen Gesichtspunkten kann die Assoziation der aktuellen Ortszeit mit der Zeitabfragereaktion durch die Speicherung von beiden im Speicher, einer Datenstruktur oder durch Einfügen von beiden in ein geeignetes computerlesbares Medium, das in der Lage ist, Informationen zu speichern, auf die von einem Prozessor zugegriffen werden kann, erreicht werden kann.
  • Im Block 450 kann ein Zeitversatzintervall für jeden Zeiterfassungsgeräte berechnet werden, der in Block 420 abgefragt wurde. Die Weite des Versatzintervalls (z. B. eine Länge der Zeitdauer) kann Übertragungsverzögerungen repräsentieren, die mit einer Zeitabfrage an und von einem bestimmten Zeiterfassungsgeräte assoziiert sind. Die Zeitstempel von jedem nicht fehlerhaft funktionierenden Zeiterfassungsgeräte können einem zeitlichen Augenblick irgendwo zwischen dem anfänglichen örtlichen Zeitstempel, der in Block 410 genommen wird, und dem örtlichen Zeitstempel, der mit der Reaktion eines Zeiterfassungsgeräts im Block 440 assoziiert ist, entsprechen.
  • Ein Unsicherheitsniveau (z. B. Übertragungsverzögerungen) kann auch die Zeitversatzintervallberechnung beeinträchtigen. Diesbezüglich können, um das Versatzintervall für jeden Zeiterfassungsgeräte zu berechnen, die folgenden Gleichungen verwendet werden. D(m) = T(m) – ((L(m) + L(0)/2) U(m) = (L(m) – L(0))/2
  • In den obigen Gleichungen stellt D(m) den Zeitversatz relativ zum Zeiterfassungsgeräte m dar, T(m) stellt den vom Erfassungsgerät m gelieferten Zeitstempel dar, U(m) stellt eine Unsicherheit dar, die sich auf einen Zeiterfassungsgeräte m bezieht, L(m) stellt die örtliche Zeit dar, die zu der Zeit erfasst wurde, als eine Zeitabfragereaktion vom Zeiterfassungsgeräte m empfangen wurde, und L(0) stellt einen örtlichen Zeitstempel dar, der vor dem Versand der Zeitabfragen an die Zeiterfassungsgeräte genommen wurde. Daher kann hinsichtlich eines Zeiterfassungsgeräts m die Ortszeit um einen Versatz D(m) plus oder minus der Unsicherheitsberechnung U(m) oder mit anderen Worten eine Intervallbandbreite von [D(m) – U(m) bis D(m) + U(m)] fehlerhaft sein.
  • In Block 460 kann kontinuierlich getestet werden, ob die Gesamtzahl der Zeitabfrageantworten erreicht worden ist. Wenn die Zahl erreicht worden ist, kann das Verfahren 400 zum Block 460 übergehen. Andernfalls kann das Verfahren 400 den Block 430 wiederholen und eine andere Zeitabfragereaktion empfangen.
  • Im Block 470 kann ein Übereinstimmungsalgorithmus eingesetzt werden, um eine Gesamtmenge der im Block 450 berechneten Zeitmasterversatzintervalle zu analysieren. Weil Zeiterfassungsgeräte gelegentlich fehlschlagen können, kann ein Übereinstimmungsalgorithmus (z. B. der Marzullo-Algorithmus) ein kleinstes Zeitversatzintervall bestimmen, das innerhalb einer ausgewählten Gruppe von Zeiterfassungsgeräten konsistent ist. Nach einigen Gesichtspunkten kann der Übereinstimmungsalgorithmus mehr als einmal eingesetzt werden.
  • In einem anfänglichen Durchlauf des Übereinstimmungsalgorithmus kann eine Gruppe von örtlichen Zeitversätzen, die im Block 450 berechnet werden, ausgewählt werden. Die Auswahl kann auf einer entsprechenden Zeiterfassungsgerätekonfiguration, wie z. B., ob ein Zeiterfassungsgerät bei Stratum 1 betrieben wird, basieren. Jeder berechnete Versatz kann den örtlichen Taktfehler mit Bezug zu einem bestimmten Zeiterfassungsgeräte repräsentieren. Eine Festlegung kann durch das Verfahren 400 für einen maximalen Satz von sich überschneidenden örtlichen Zeitversätzen aus der Gruppe vorgenommen werden. In einem Beispiel kann, wenn sich keine zwei Versatzintervalle schneiden, das Verfahren 400 gestoppt werden. Das Verfahren 400 kann auch stoppen, wenn mehrere Versätze in der Gruppe sich unterscheiden als übereinzustimmen. Wenn sich mindestens zwei Versatzintervalle schneiden, dann kann ein übereinstimmungsvalidiertes Versatzintervall (z. B. ein kleinstes Intervall, das alle Punkte enthält, die im Schnittpunkt von mindestens k – 1 der k Intervalle in der Gruppe liegen) für die Gruppe zugewiesen werden.
  • einem Gesichtspunkt kann ein Unsicherheitsniveau in einer Gruppe von Versätzen in einem Intervall (z. B. die Gruppenbandbreite vom kleinsten bis zum grössten Versatz) widergespiegelt werden. Dieses Unsicherheitsniveau kann relativ gering sein, weil typischerweise mehrere Zeiterfassungsgeräte in der Nähe sein könnten. Daher sollte der übereinstimmungsvalidierte Versatz, der in Block 470 bestimmt wird, relativ genau plus oder minus eines Gruppenunsicherheitsniveaus sein.
  • Nach einigen Gesichtspunkten kann der Übereinstimmungsalgorithmus ein zweites Mal eingesetzt werden. Bei dieser Iteration des Übereinstimmungsalgorithmus können örtliche Zeitversätze, die im Block 450 berechnet werden, aus einer Gruppe von Zeiterfassungsgeräten, die anders als die erste Gruppe konfiguriert sind, ausgewählt werden. Diese Auswahl kann zum Beispiel auf Zeiterfassungsgeräten basieren, die nicht bei Stratum 1 betrieben werden. Die Versatzintervalle, die den Nicht-Stratum 1-Zeiterfassungsgeräten entsprechen, können gegenüber dem Stratum 1-Versatzintervall abgetrennt werden. Die zweite Runde kann verwendet werden, um örtliche Takte zu steuern, wenn es keinen nahe gelegenen Stratum 1-Zeiterfassungsgeräte gibt, womit die Konsistenz zwischen den nahe gelegenen Hosts verbessert wird.
  • Die zweite Iteration des Übereinstimmungsalgorithmus kann dann auf die abgetrennten Nicht-Stratum 1-Versätze angewendet werden. Diese zweite Iteration kann ein endgültiges validiertes Versatzintervall abliefern, das akkurat plus oder minus einem Unsicherheitsniveau in Bezug auf die zweite Gruppe von Zeiterfassungsgeräten sein kann. Typischerweise sollte dieses abschliessende validierte Versatzintervall innerhalb der Unsicherheitsbandbreite liegen, die sich aus dem ersten Durchlauf des Übereinstimmungsalgorithmus ergibt. In einem Beispiel können die zweiten Iterationsergebnisse verworfen werden, wenn sich die Ergebnisse ausserhalb der Unsicherheitsbandbreite der ersten Iteration befinden.
  • In Block 480 kann die örtliche Zeit auf einem Host-Rechner, abhängig von der Rechner-Konfiguration, diszipliniert oder validiert werden. Wenn zum Beispiel der Rechner, der das Verfahren 400 einsetzt, ein GPS-gespeistes Zeiterfassungsgerät ist, kann das Versatzintervall von Block 470 verwendet werden, um die Zeit zu validieren, die vom GED-gespeisten Erfassungsgerät publiziert wird. Wenn der Rechner ein Client-Host oder ein Wiederherstellungsmaster ist, kann das Versatzintervall von Block 470 verwendet werden, um den örtlichen Taktgeber des Host-Rechners anzupassen. Wenn zum Beispiel das Versatzintervall [–2, –1] beträgt, kann der örtliche Taktgeber irgendwo zwischen 1 und 2 Sekunden vor den Mastern liegen. Wenn das Intervall [1, 2] beträgt, kann der örtliche Taktgeber 1 bis 2 Sekunden hinter den Mastern liegen. Wenn das Intervall [1, –1] beträgt, kann der örtliche Taktgeber irgendwo zwischen 1 Sekunde hinter bis 1 Sekunde vor dem Erfassungsgerät liegen.
  • Diesbezüglich kann der örtliche Systemtaktgeber eines Host-Servers diszipliniert werden, um dabei zu helfen, die präzise Zeit beizubehalten. Beispielsweise können kleine Anpassungen (z. B. der validierte Versatz von Block 470) regelmässig auf den Systemtaktgeber angewendet werden. Diese Einstellungen können mit Hilfe verschiedener Dienstprogramme Anwendung finden, um auf den örtlichen Taktgeber eines Systems, wie z. B. die Dienstprogrammanwendung adjtimex, zuzugreifen. Nach einem Gesichtspunkt kann adjtimex im PLL-Modus (Phasenregelkreis) benutzt werden. In diesem Beispiel können PLL-Konstanten und Versatzbrückenwerte ausgewählt werden, um den örtlichen Taktratenfehler bei ungefähr 1000 ppm zu belassen. Einige Anwendungen, zum Beispiel verteilte Bestandsprotokolle, können von der Zeit abhängen, die mit einer ähnlichen Rate auf jedem Host fortschreitet. Damit solche Anwendungen richtig funktionieren, müssen die Taktraten kontrolliert werden.
  • 5 ist ein Flussdiagramm, das ein Beispiel eines Verfahrens zur Bereitstellung validierter Zeitstempel veranschaulicht. Nach den Gesichtspunkten können abgeglichene und synchronisierte Zeiterfassungsgeräte 535 verwendet werden, um in einem verteilten System Zeitstempel an Clients zu übertragen. In einigen Beispielen dürfen die Zeitstempel verwendet werden, um Transaktionen zu bestellen und/oder örtliche Takte zu synchronisieren.
  • In Block 515 kann eine Abfrage für einen Zeitstempel empfangen werden. Zum Beispiel kann ein Client eine Socket-Verbindung zum Host-Server des Zeiterfassungsgeräts eröffnen, um eine Verbindung zum Versand und Empfang von Informationen zu initiieren. Durch diese Verbindung kann der Zeiterfassungsgeräte als NTP-Server agieren, welcher Zeitstempel an den Client überträgt.
  • In Block 520 können Zeitsignale von einer zuverlässigen Zeitreferenz geliefert werden. Beispielsweise können GPS-Zeitstempel von einem GPS-disziplinierten Oszillator (z. B. einem SPECTRACOM PCI-Express Modell Tsync-PCIe), der mit einem Host-Server verbunden ist, bereitgestellt werden. Nach einigen Gesichtspunkten dürfen Zeitstempel direkt vom System-Oszillator beliefert werden. Nach den Gesichtspunkten kann dies dabei helfen, mehrere Quellen von Zeitkorruption, wie z. B. Zeitmessungsfehler im Zusammenhang mit Betriebssystemen und Zeitstempelkontroll(TSC)-defizite, die viele Mikroprozessoren plagen, zu vermeiden.
  • In Block 530 können GPS-Zeitstempel basierend auf einer Schaltsekunde angepasst werden. Eine Schaltsekunde kann eine positive oder negative Eine-Sekunden-Anpassung an eine Zeitskala sein, die sie nahe der durchschnittlichen Sonnenzeit beibehalten kann. Nach einigen Gesichtspunkten können die Schaltsekunden über einen Zeitraum von zehn Stunden auf einer der Seiten der Schaltsekunde amortisiert werden, wodurch die Schaltsekunde für einen Client, der einen Zeitstempel anfordert, unsichtbar wird. Mehrere Technologien können eingesetzt werden, um Schaltsekunden zu amortisieren, zum Beispiel können sie linear über ein Zeitfenster (z. B. 10 Stunden auf einer der Seiten) amortisiert werden. Eine genormte Schaltdatei, die vom Nationalen Institut für Normen und Technologie (NIST) verbreitet wird, kann Schaltsekundeneinfügungen regeln.
  • In Block 540 können mögliche Systemausfallzustände kontinuierlich überwacht werden. Ein Fehler kann zum Beispiel eine entdeckte Unstimmigkeit zwischen der NIST-Schaltdatei und den Schaltsekunden sein, auf die von einem angeschlossenen GPS-System hingewiesen wird. Andere mögliche Ausfälle können, wenn die NIST-Datei in naher Zukunft abläuft, ein schlechter Satellitensignalempfang, ein kurz geschlossenes Antennenkabel, Paritätsfehler usw. sein. Wenn ein Fehlerzustand entdeckt wird, kann das Verfahren 500 einen Alarmhinweis im Block 550 hervorrufen. Andernfalls kann es zu Block 560 übergehen.
  • Im Block 550 kann ein Fehleralarmhinweis hervorgerufen werden. Sobald ein Fehlerzustand erkannt worden ist, kann ein Zeiterfassungsgerät 535 eingehende Zeitanfragen blockieren oder verwerfen, bis der Alarmhinweis beseitigt worden ist. In der Regel können viele Ausfälle eventuell eine Art von vorzuformender Nachbesserung erfordern. Einige Alarmhinweise können zum Beispiel beseitigt werden, indem eine Anfrage an einen Dienst für eine aktualisierte NIST-Datei für die Anpassung von Schaltsekunden vorgenommen wird. In diesem Beispiel kann das Verfahren 500 optional den Block 530 wiederholen, um Schaltsekunden basierend auf der neu bereitgestellten NIST-Datei anzupassen. Andere Ausfälle können durch die Nachbesserung eines GPS-Empfängers oder anderer Hardware behoben werden.
  • Im Block 560 können Zeitstempel mit einer externen Referenz synchronisiert werden. Zeitstempel können zum Beispiel von einer sekundären Vorrichtung, wie z. B. einem Hochpräzisions-Ereigniszeitmesser (HPET), der mit einem Zeiterfassungsgeräte-Host verbunden ist, als Plausibilitätsprüfung verwendet werden. Nach den Gesichtspunkten kann auf einem Server, auf dem ein Intel-Prozessor läuft, der HPET eine ziemlich zuverlässige Zeitsteuervorrichtung sein. HPET-Zugriffe können die Verarbeitungszeit um mehrere Mikrosekunden beeinflussen. Dies kann allerdings eine akzeptable Auswirkung auf die Leistungserbringung bedeuten.
  • In Block 570 können Zeitstempelspikes erkannt werden. Wenn ein Zeitstempel ausserhalb eines bestimmten Bereichs liegt, kann er als Spitze betrachtet werden. Die Spikes können zwar protokolliert, aber nicht an Clients weitergegeben werden. In einem Beispiel können Spikes durch den Einsatz von Wegweisern detektiert werden, um einen akzeptablen Bereich für die Zeitstempel zu markieren In diesem Beispiel kann ein Wegweiser in regelmässigen Abständen mit einem GPS- und hochpräzisen Echtzeit-Timer (HPET) Zeitstempel korreliert werden. Jeder GPS-Zeitstempel kann seit dem letzten Einsatz der Wegweiser, gegen die Grenzen überprüft werden Diese Überprüfung kann eine Schutzmassnahme gegen, z. B. GPS-Systemfehler und Satellitensignal-Spoofing-Angriffe, sein. Das in Block 560 eingesetzte Spike-Erkennungsverfahren wird in Bezug auf 6 näher beschrieben.
  • 6 ist eine graphische Darstellung von korrelierten Zeitstempeln. In einigen Aspekten können korrelierte GPS- und HPET-Zeitstempel grafisch dargestellt werden. Wie im Bild dargestellt, sind die Wegweiser 601 und 602 einer Reihe von GPS- und HPET-Zeitstempeln 610, 611, 612 und 613, die grafisch dargestellt sind (z. B., (x, y) Koordinaten), zugeordnet. Zum Beispiel werden die Plotpunkte 610 und 611 durch ein Paar GPS- und HPET-Zeitstempelmessungen bestimmt. Gemäss den Aspekten kann der Wegweiser 601 mit drei Zeitstempeln in der folgenden Reihenfolge verbunden sein: einem 1. HPET-Zeitstempel, einem 1. GPS-Zeitstempel und einem 2. HPET-Zeitstempel. In einem Aspekt kann die Hantel 601 als Wegweiser verwendet werden, um nachfolgende GPS-Zeitstempelwerte zu validieren, wie weiter unten beschrieben wird.
  • Wie veranschaulicht, sind die Ausstrahlungen 630 und 631 vom anfänglichen Wegweiser 601 in Winkeln positioniert. Ein schattierter Bereich (z. B. Cone of Uncertainty) zwischen den Strahlen reflektiert eine Unsicherheit über die Genauigkeit der HPET-Frequenz, plus oder minus eines vorgegebenen Toleranzpegels. Wenn ein nachfolgendes Lesen eines GPS-Zeitstempels, gemäss den Aspekten, den schattierten Bereich schneidet, kann er als ein gültiger Zeitstempel akzeptiert werden. Wird der schattierte Bereich nicht geschnitten, kann dies als Spitze deklariert werden, da es gegen die HPET-Frequenzfehlergrenzen 630 und 631 verstösst.
  • Der Wegweiser 601 kann mit einer Rate vorgeschoben werden, die durch grobes Ausgleichen der Unsicherheit bestimmt wird, induziert durch HPET-Frequenzfehler, das GPS-System und HPET-Leselatenzen. In einem Beispiel werden Wegweiser etwa alle 100 Millisekunden vorgeschoben. Ein neuer Wegweiser, wie beispielsweise der Führungsstab 602, kann gesetzt werden, wenn der vorherige Wegweiser 601 abläuft und ein neuer gültiger GPS-Zeitstempel für die Überprüfung erhalten wird. Der neu erhaltene GPS-Zeitstempel, kann auch ein Anker im neuen Wegweiser werden. Zum Beispiel werden die Plotpunkte 612 und 613 des Wegweisers 602 durch ein nachfolgendes Paar von GPS- und HPET-Zeitstempelmesswerten bestimmt. In einem Aspekt kann der Wegweiser 602 mit drei Zeitstempeln in der folgenden Reihenfolge verbunden sein: ein 3. HPET-Zeitstempel, ein 2. GPS-Zeitstempel und ein 4. HPET-Zeitstempel.
  • Gemäss den Aspekten können Spikes mit hochfrequenten Synchronisationsfehlern, die etwa 20 Mikrosekunden überschreiten, erkannt werden. Sowie auch im Extremfall die niederfrequenten Wanderspikes, die HPET-Variation überschreiten. In einigen Aspekten kann es wünschenswert sein, eine Anzahl von Spike-Detektoren zu verwenden, wobei jeder mit einer unterschiedlichen Rate vorrückt. In dieser Hinsicht kann ein Spike-Detektor, der mit einer schnellen Rate vorrückt, bei der Erfassung von Hochgeschwindigkeitsspitzen besser sein, während ein Detektor, der mit einer langsameren Rate vorrückt, besser sein kann, um graduelle Frequenzverschiebungen in einem Time-Master zu erfassen.
  • 7 zeigt noch ein anderes Diagramm eines 700 Systems, in Übereinstimmung mit einem Aspekt der vorliegenden Technologie. Wie gezeigt, kann das System 700 aus mindestens drei Hauptmodulen bestehen: einem Time-Master (z. B. Timemaster 715 und 725), der als zuverlässige Zeitreferenz dienen kann, einem Zeitsynchronisations-Dämon 750, der die lokale Zeit synchronisieren kann, indem periodisch mehrere Time-Master abgefragt werden und eine Echtzeit-Bibliotheksschnittstelle 755, um eine aktuelle Zeitintervallschnittstelle für Anwendungen bereitzustellen. Die drei Module können eine direkte und indirekte Kommunikation ermöglichen, z. B. über eine Netzwerkverbindung 740 und 745. Jedes Modul kann aus einer Middleware-Software bestehen, die die Module mit den Host-Rechnern 710, 760 und 770, wie Server und Client in Bezug auf 1 beschrieben, verwalten und integrieren kann.
  • Gemäss den Aspekten, können die Zeitmesseinrichtungen 715 und 725 als primäre Zeitreferenzen in einem verteilten System dienen. Wie bereits erwähnt, können z. B. die internen Taktgeber der Timemaster mit einem GPS-Signal, einer Atomuhr oder anderen Arten von präzisen Zeitmesstechnologien, die in der Technik bekannt sind, synchronisiert werden. Die Timemaster bieten eine hohe Zuverlässigkeit und können an mehreren Stellen in einem verteilten System eingesetzt werden. Obwohl in 7 nur zwei Timemaster dargestellt sind ist darauf hinzuweisen, dass ein typisches System 700 eine grosse Anzahl von miteinander kommunizierenden Timemastern umfassen kann, z. B. über eine Netzwerkverbindung 744.
  • Der Zeitsynchronisations-Daemon 750 kann in regelmässigen Abständen, mehrere Timemaster 715 und 725 für einen aktuellen Zeitstempel abfragen. Die Daemons können Synchronisationsversatzintervalle relativ zu jedem Timemaster 715 und 725 berechnen, indem sie Round-Trip-Verzögerung verfolgen, die sich auf eine Zeitabfrage bezieht. Sätze von Timemaster-Offsets können z. B. unter Verwendung von Taktsynchronisationstechniken, wie hinsichtlich 4 beschrieben, validiert werden. Wie bereits erwähnt, können die Taktsynchronisationstechniken einen Vereinbarungsalgorithmus verwenden, um Offsets von fehlerhaften Timemastern zu erkennen und zurückzuweisen. Ein Schnittpunkt von fortbestehenden Offsetintervallen kann verwendet werden, um einen lokalen Client-Zeitsynchronisierungsfehler zu bestimmen, der zum Zeitpunkt der Abfrage an einem Timemaster 715 und 725 aufgetreten sein könnte. Dementsprechend kann die lokale Taktrate des Client, basierend auf den fortbestehenden Offset-Intervallen, aktualisiert werden.
  • Eine Echtzeit-Bibliothekenschnittstelle 755 kann zum Einsatz kommen, um validierte Zeitstempel, die von Clientanwendungen angefordert werden, zu übermitteln. Ein Client kann beispielsweise eine Anwendungsprogrammierungsschnittstelle (API) verwenden, die in Verbindung mit der Echtzeit-Bibliothek eingesetzt werden kann, um mit Modulen des Systems 700 zu kommunizieren. Die Echtzeit-Bibliothek kann auch ein lokales Offset-Zeitintervall, basierend auf Faktoren wie ein lokaler Takt, ein bekannter Frequenzfehler, die sich auf den lokalen Takt beziehen berechnen (z. B. eine Differenz zwischen lokaler Zeit und einer Zeitreferenz) und ein Offset-Intervall, das durch den Zeitsynchronisations-Daemon 750 zum letzten Zeitpunkt bestimmt wurde, zu dem die Timemaster 715 und 725 abgefragt wurden.
  • In einigen Fällen kann es schwierig sein in einem verteilten System einen Ablauf von Ereignissen zu bestimmen, da Systemuhren nicht immer synchronisiert werden. Jedoch kann die Ereignisordnung unter Verwendung von Zeitstempeln bestimmt werden, die, anstatt unter Verwendung einer maschinellen lokalen Annäherung der aktuellen Zeit, mit der Echtzeit-Bibliothek erstellt wurde. In einem Aspekt können Zeitstempel, die durch Verwendung der Echtzeit-Bibliothek bestimmt werden, als Grundlage für die Erstellung von kausalabhängigen Informationen für Host-Clients in einem verteilten System verwendet werden. Diese Information kann beispielsweise von einer Anwendung verwendet werden die mit einem Host-Client verbunden ist, um Ereignistransaktionen kausal zu ordnen.
  • 8 ist ein Flussdiagramm, das ein Beispiel für ein Verfahren 800 zum Erstellen von kausalen Zeitstempeln darstellt. Beispielsweise kann ein Host-Client eine Anwendungsschnittstelle (z. B. eine Echtzeit-Bibliothekensschnittstelle) verwenden, die global konsistente Zeitstempel mit expliziten Unsicherheitsgrenzen (z. B. Netzübertragungsverzögerungen) bereitstellen kann, welche mit dem Übertragen der Zeitstempel assoziiert sind. Die Zeitstempel können dann beispielsweise zum Ordnen von Ereignissen in einem verteilten System verwendet werden.
  • In Block 810 kann ein anfänglicher lokaler Zeitstempel abgerufen werden. Zum Beispiel kann das aktuelle Datum und die Uhrzeit eines Host-Clients abgerufen und gespeichert werden. Dies kann die Zeit einer internen Zeituhr, einer Speicherregistrierung oder anderen Massnahmen zur Zeitverfolgung auf der Host-Machine reflektieren.
  • In Block 820 kann ein Zeitintervall (z. B. eine Differenz zwischen dem lokalen Zeitstempel und einer Zeitreferenz) bestimmt werden. Beispielsweise kann ein Softwaremodul, das in Verbindung mit einer Echtzeit-Bibliothekensschnittstelle betriebsfähig ist, ein Zeitintervall anfordern, das von der Echtzeit-Bibliothek bereitgestellt wird. Wie bereits erwähnt, kann die Echtzeit-Bibliothek eine Zeitintervallschnittstelle für Host-Clients bereitstellen, die sinnvolle, global kohärente Zeitstempel erfordert. Die Echtzeit-Bibliothek kann das Zeitintervall eines Zeitsynchronisierungs-Daemons bestimmen, der lokal auf einem Host-Client verwendet wird. der lokal auf einem Host-Client verwendet wird. Wie im Hinblick auf 7 beschrieben, können Host-Clients einen Zeitsynchronisations-Daemon verwenden, der eine Korrelation zwischen den lokalen Takten und der kausalen Zeit verfolgen kann, indem Unsicherheitsgrenzen für diese Korrelation berechnet werden. Der Zeitsynchronisations-Daemon kann eine Kausalzeit ableiten, indem er eine Reihevon Timemastern abfragt, die in einem verteilten System implementiert sind. In einigen Aspekten kann der Zeitsynchronisations-Dämon ein Zeitintervall bestimmen, das unter einer ausgewählten Gruppe von Timemastern konsistent ist, indem ein Vereinbarungsalgorithmus für die ausgewählte Gruppe verwendet wird.
  • In Block 830 kann ein Zeitstempel von dem Zeitintervall aufgenommen werden. Beispielsweise kann der jüngste Zeitstempel in dem in Block 820 festgelegten Zeitintervall ausgewählt werden. Gemäss den Aspekten kann dieser Zeitstempel grösser sein, als der Zeitstempel anderer kausaler Vorgänger. In einem Punkt kann der Zeitstempel in einem vorgegebenen Format aufgezeichnet und gehalten werden. Beispielsweise kann der Zeitstempel in einem Zeitformat codiert werden, das dazu verwendet wird, Zeitpunkte wie UTC zu beschreiben. Eine einheitliche Zeitformatierung kann zum Beispiel einen Vergleich des Zeitstempels mit lokalen Zeitstempeln von einem oder mehreren unterschiedlichen Systemen mit einem oder mehreren unterschiedlichen Systemen ermöglichen.
  • In Block 840 kann eine Zeitspanne vergehen, nachdem ein Zeitstempel aus dem Zeitintervall aufgezeichnet wurde. Die Wartezeit kann so gewählt werden, dass nach der Wartezeit die Zeit des aufgezeichneten Zeitstempels abgelaufen ist. Nach den Aspekten kann das Warten die kausale Reihenfolge der Ereignisse dadurch bewahren, dass sichergestellt wird, dass kausale Nachfolger (z. B. logisch geordnete Transaktionen) jeweils grösseren Zeitstempeln zugeordnet werden. Wenn zum Beispiel die aktuelle Zeit zwischen 15:50 und 16:00 Uhr ist und eine Wartezeit von 10 Minuten gewählt wird, wird es nach der Wartezeit später als 16:00 Uhr sein und somit werden alle zukünftig gewählten Zeitstempel später als 16:00 Uhr sein. Es wird darauf hingewiesen, dass in einigen Aspekten andere Typen der Client-Berechnungen in Block 840 auftreten können, während die Zeitspanne abläuft.
  • Der aufgezeichnete Zeitstempel kann in Block 850 bereitgestellt werden. Es kann zum Beispiel eine Programmierschnittstelle von einem Host-Client verwendet werden, um auf den aufgezeichneten Zeitstempel von Block 830 zuzugreifen. Der Zeitstempel kann auch als Ergebnis eines Aufrufs zu einem Computerprogramm, einer Bibliotheksklassenfunktion oder anderen Arten von Programmierverfahren, die in der Technik bekannt sind, zurückgeliefert werden. Der Host-Client kann dann den Zeitstempel, z. B. mit Host-Client-Ereignissen, assoziieren, wodurch eine kausale Reihenfolge von Ereignistransaktionen für Dienste auf dem Client sichergestellt wird.
  • Die oben beschriebenen Aspekte der Technologie können zum Erzeugen global synchronisierter Zeitstempel vorteilhaft sein, ohne dass verschiedene Arten von Netzwerkunsicherheiten auftreten, die einer expliziten Synchronisation inhärent sind. Die global synchronisierten Zeitstempel können von verschiedenen Diensten verwendet werden, z. B. um örtliche Zeitstempel und Takte zu validieren, oder um die eine Kausalität beachtenden Zeitstempel für Datenbankaktualisierungen bereitzustellen. Durch die Einführung von Techniken zur Nachverfolgung, Berechnung und Aufzeichnung von Zeitdaten mit Bezug zu einer Anzahl zuverlässiger Zeitreferenzen kann eine einfach zu verwaltende und kostengünstige Zeitbasis für Host-Rechner in einem verteilten System bereitgestellt werden. Darüber hinaus können die darin offenbarten verschiedenen Techniken weiter rekonfiguriert werden, um die Genauigkeit der Gesamtstempelzeit zu erhöhen.
  • Die 916B veranschaulichen ein Datenbankverwaltungssystem 950, das zum Speichern von Multiversionsdatenbanken verwendet wird. Die offengelegten Ausführungsformen der Datenbankverwaltungssysteme 950 erfordern keine global synchronisierten Zeitstempel, wie in 18 vermittelt. Wie in 18 vermittelt, verwenden jedoch einige Ausführungsformen der Datenbankverwaltungssysteme 950 global synchronisierte Zeitstempel, einschliesslich einiger Ausführungsformen, in denen die Multiversionsdatenbank an mehreren verschiedenen geografischen Standorten Nachbildungen enthält.
  • 9 ist ein konzeptionelles Blockdiagramm eines Datenbankverwaltungssystems 950, gemäss einigen Ausführungsformen. In dieser Ausführungsform werden drei verschiedene Nachbildungen 912, 914 und 916 der Datenbank an drei verschiedenen geografischen Standorten gehalten. In einigen Ausführungsformen wird der Paxos-Konsensusalgorithmus verwendet als Garantiekonsistenz der Daten über die Nachbildungen. Die Nachbildung 912 hat einen Datenspeicher 932, der die Daten physikalisch speichert. In einigen Ausführungsformen ist der Datenspeicher 932 ein Dateisystem, das von einer Vielzahl von Dateiservern verwaltet wird. In einigen Ausführungsformen umfasst der Datenspeicher 932 ein oder mehrere Bigtable (proprietäres Hochleistungs-Datenbanksystem) oder Bigtable-Zellen. Bei der Nachbildung 912 lesen und schreiben einer oder mehrere Datenbank-Server 922 in den Datenspeicher 932. Obwohl 9 nur einen einzigen Datenbankserver 922 darstellt der auf den Datenspeicher 932 zugreift, umfassen die meisten Ausführungsformen mehrere Datenbankserver 922, wie z. B. 100 oder 1000 Server 922.
  • Die Nachbildung 914 beinhaltet einen Datenbankserver 924 und einen Datenspeicher 934, ähnlich der Nachbildung 912, und die Nachbildung 916 enthält Datenbankserver 926, die auf den Datenspeicher 936, ähnlich wie Nachbildung 912, zugreifen. In einigen Ausführungsformen werden eine oder mehrere der Nachbildungen 912, 914 oder 916 als schreibgeschützt bezeichnet. Eine schreibgeschützte Nachbildung wird mit den anderen Nachbildungen synchronisiert, kann aber nicht dazu benannt werden auf Client-Anforderungen zu antworten, um Daten zu schreiben (nur Client-Leseanforderungen).
  • Wie in 9 veranschaulicht, können die Client-Rechner 902 und 904 auf die Daten des Datenbankverwaltungssystems 950 zugreifen, indem sie die Anforderungen über ein Kommunikationsnetzwerk 908, wie zum Beispiel das Internet, senden. Die Anfrage wird aus der auf einem Client-Rechner 902 oder 904 ausgeführten Softwareanwendung 906 gesendet, die eine Web-Anwendung 906 sein kann, die in einem Webbrowser 1020 läuft. Die Client-Anforderungen zum Lesen oder Schreiben von Daten werden von einem Front-End-Server 910 empfangen, der die Anforderungen zu einer geeigneten Nachbildung der Datenbank leitet. In einigen Ausführungsformen umfasst der Front-End-Server ein Lastenausgleichsmodul 1174, um die eingehenden Anforderungen zwischen den Nachbildungen zu verteilen. Obwohl 9 nur einen einzigen Front-End-Server 910 veranschaulicht, umfassen viele Ausführungsformen eine Vielzahl von Front-End-Servern 910, wie z. B. 10, 20 oder 50 Server.
  • 10 veranschaulicht einen typischen Client-Rechner 902. Ein Client-Rechner 902 umfasst im Allgemeinen zum Verbinden dieser Komponenten eine oder mehrere Verarbeitungseinheiten (CPUs) 1002, ein oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 1004, einen Speicher 1014 und einen oder mehrere Kommunikationsbusse 1012 Die Kommunikationsbusse 1012 können Schaltkreise (manchmal Chipsätze genannt) umfassen, die die Kommunikation zwischen Systemkomponenten miteinander verbinden und steuern. Ein Client-Rechner 902 enthält eine Benutzeroberfläche 1006, beispielsweise eine Anzeige 1008 und eine oder mehrere Eingabevorrichtungen 1010, wie beispielsweise eine Tastatur und eine Maus. Der Speicher 1014 kann einen Hochgeschwindigkeits-Speicher mit Zufallszugriff, wie beispielsweise DRAM, SRAM, DDR RAM oder andere Festkörperspeichervorrichtungen mit Zufallszugriff umfassen; und es kann einen nichtflüchtigen Speicher umfassen, wie zum Beispiel eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flashspeichervorrichtungen oder andere nichtflüchtige Festkörperspeichervorrichtungen. Der Speicher 1014 kann einen Massenspeicher umfassen, der entfernt von der/den zentralen Recheneinheit(en) 1002 untergebracht wird. Der Speicher 1014 oder alternativ die nichtflüchtige(n) Speichereinrichtung(en) innerhalb des Speicher 1014 umfasst bzw. umfassen ein computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher 1014 oder das computerlesbare Speichermedium des Speichers 1014 die folgenden Programme, Module und Datenstrukturen oder eine Teilmenge davon ab:
    • • ein Betriebssystem 1016 (z. B. WINDOWS, MAC OS X, ANDROID oder iOS), das im Allgemeinen die Prozeduren zum Umgang mit verschiedenen grundlegenden Systemdiensten und zur Durchführung hardwareabhängiger Aufgaben umfasst;
    • • ein Netzwerkkommunikationsmodul 1018, das zur Verbindung des Client-Computers 902 mit Servern oder anderen Computereinrichtungen über ein oder mehrere Kommunikationsnetzwerke 908, wie z. B. das Internet, andere Weitverkehrsnetzwerke, lokale Netzwerke, drahtlose Stadtnetze und ähnliche verwendet wird;
    • • ein Webbrowser 1020, der es einem Benutzer des Client-Computers 902 ermöglicht, auf Webseiten und andere Ressourcen über das Kommunikationsnetzwerk 908 zuzugreifen; und
    • • eine Softwareanwendung 906, welche eine Web-Anwendung sein kann. Die Softwareanwendung 906 greift auf Webressourcen zu, dies umfasst Daten aus dem Datenbankverwaltungssystem 950.
  • Mit Verweis auf 11A umfasst ein Datenbankserver 922 im Allgemeinen eine oder mehrere Recheneinheiten (CPUs) 1102, ein oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 1104, einen Speicher 1114 und einen oder mehrere Kommunikationsbusse 1112, um diese Komponenten miteinander zu verbinden. Die Kommunikationsbusse 1112 können Schaltkreise (manchmal als Chipsätze bezeichnet) enthalten, welche die Kommunikation zwischen Systemkomponenten untereinander verbindet und steuert. Ein Datenbankserver 922 kann optional eine Benutzerschnittstelle 1106, beispielsweise ein Display 1108 und eine Tastatur 1110, umfassen. Der Speicher 1114 kann einen Hochgeschwindigkeits-Speicher mit Zufallszugriff, wie beispielsweise DRAM, SRAM, DDR RAM oder andere Festkörperspeichervorrichtungen mit Zufallszugriff umfassen; und es kann einen nichtflüchtigen Speicher umfassen, wie zum Beispiel eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flashspeichervorrichtungen oder andere nichtflüchtige Festkörperspeichervorrichtungen. Der Speicher 1114 kann einen Massenspeicher umfassen, der von der Zentraleinheit(en) 1102 entfernt angeordnet wird. Der Speicher 1114 oder alternativ die nichtflüchtige(n) Speichereinrichtung(en) innerhalb des Speicher 1114 umfasst bzw. umfassen ein computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher 1114 oder das computerlesbare Speichermedium des Speichers 1114 die folgenden Programme, Module und Datenstrukturen oder eine Teilmenge davon:
    • • ein Betriebssystem 1116 (z. B. LINUX oder UNIX), das im Allgemeinen Prozeduren zum Umgang mit verschiedenen grundlegenden Systemdiensten und zur Durchführung hardwareabhängiger Aufgaben umfasst;
    • • ein Netzwerkkommunikationsmodul 1118, das zur Verbindung des Datenbankservers 922 mit anderen Servern oder anderen Computervorrichtungen über ein oder mehrere Kommunikationsnetze 908, wie z. B. das Internet, andere Weitverkehrsnetze, lokale Netzwerke, drahtlose Stadtnetze und ähnliche, verwendet wird;
    • • ein Datenbankverwaltungsmodul 1120, das verschiedene Prozeduren und Module zum Umgang mit Anfragen, um Daten im Datenspeicher 932 zu lesen oder zu schreiben, enthält;
    • • einen Transaktionsanforderungsparser 1122, der in dem Datenbankverwaltungsmodul 1120 enthalten ist, und der eingehende Transaktionsanfragen gliedert, um den Transaktionstyp (z. B. lesen oder schreiben), die aufgerufenen Zeilen und Spalten zu bestimmen usw.;
    • • ein Zeitstempelgenerator 1124, der in dem Datenbankverwaltungsmodul 1120 enthalten ist und der Zeitstempel für Lese- und Schreibanfragen erzeugt. Dies wird nachfolgend detaillierter mit Bezug auf die 14A, 14B und 15 beschrieben;
    • • ein Objektsperrmodul 1126, das in dem Datenbankverwaltungsmodul 1120 enthalten ist und welches Objekte, je nach Erfordernis, um die Datenintegrität zu gewährleisten, sperrt und Prozesse blockiert, die eine Sperre für ein Objekt erfordern, das bereits durch einen anderen Prozess gesperrt ist;
    • • ein Shardbildungsmodul 1128, das in dem Datenbankverwaltungsmodul 1120 enthalten ist und das eine Zeile in mehrere Shards aufteilt, wenn die Grösse der Zeile eine Schwellengrösse übersteigt, und welches Standorte der zahlreichen Shards verfolgt, so dass die Shardbildung für Client-Anforderungen transparent ist. Die Shardbildung wird detaillierter mit Bezug auf die 12E12G nachfolgend beschrieben; und
    • • ein Datenspeicher 932, der physikalisch die Daten aufbewahrt. In einigen Ausführungsformen ist der Datenspeicher 932 Teil des Datenbankservers 922 (z. B. die physikalischen Festplatten des Datenbankservers). In vielen Ausführungsformen ist der Datenspeicher 932 von dem/den Datenbankserver(n) 922 getrennt, wie in 9 veranschaulicht, und umfasst einen permanenten Speicher, der über eine grosse Anzahl physikalischer Platten oder anderer permanenter Speichermedien verteilt wird.
  • In vielen Ausführungsformen bestehen zahlreiche Datenbankserver 922, wie z. B. 100 oder 1000, von denen jeder auf Daten vom Datenspeicher 932 zugreift. Die in 9 dargestellten Datenbankserver 924 und 926 sind dem Datenbankserver 922 ähnlich.
  • Unter Bezugnahme auf die 11B umfasst ein Frontendserver 910 im Allgemeinen eine oder mehrere Recheneinheiten (CPUs) 1152, ein oder mehrere Netzwerk- oder andere Kommunikationsschnittstellen 1154, einen Speicher 1164 und einen oder mehrere Kommunikationsbusse 1162, um diese Komponenten miteinander zu verbinden. Die Kommunikationsbusse 1162 können Schaltkreise (manchmal als Chipsätze bezeichnet) enthalten, welche die Kommunikation zwischen Systemkomponenten untereinander verbinden und steuern. Ein Frontendserver 910 kann optional eine Benutzerschnittstelle 1156, zum Beispiel ein Display 1158 und eine Tastatur 1160, umfassen. Der Speicher 1164 kann einen Hochgeschwindigkeits-Speicher mit Zufallszugriff, wie beispielsweise DRAM, SRAM, DDR RAM oder andere Festkörperspeichervorrichtungen mit Zufallszugriff umfassen; und es kann einen nichtflüchtigen Speicher umfassen, wie zum Beispiel eine oder mehrere Magnetplattenspeichervorrichtungen, optische Plattenspeichervorrichtungen, Flashspeichervorrichtungen oder andere nichtflüchtige Festkörperspeichervorrichtungen. Der Speicher 1164 kann einen Massenspeicher umfassen, der von der Zentraleinheit(en) 1162 entfernt angeordnet wird. Der Speicher 1164 oder alternativ die nichtflüchtige(n) Speichereinrichtung(en) innerhalb des Speicher 1164 umfasst bzw. umfassen ein computerlesbares Speichermedium. In einigen Ausführungsformen speichert der Speicher 1164 oder das computerlesbare Speichermedium des Speichers 1164 die folgenden Programme, Module und Datenstrukturen oder eine Teilmenge davon ab:
    • • ein Betriebssystem 1166 (z. B. LINUX oder UNIX), das im Allgemeinen Prozeduren zum Umgang mit verschiedenen grundlegenden Systemdiensten und zur Durchführung hardwareabhängiger Aufgaben umfasst;
    • • ein Netzwerkkommunikationsmodul 1168, das zur Verbindung des Frontendservers 910 mit anderen Servern oder anderen Computervorrichtungen über ein oder mehrere Kommunikationsnetzwerke 908, wie z. B. das Internet, andere Weitverkehrsnetze, lokale Netzwerke, drahtlose Stadtnetze und ähnliche verwendet wird;
    • • ein Webserver 1170, der Anfragen von Clients für Webseiten oder einen Datenbankzugriff (liest oder schreibt) erhält und auf diese Anfragen reagiert;
    • • ein Datenzugriffsmodul 1172, das Datenzugriffsanfragen von Clients an einen geeigneten Datenbankserver 922 weiterleitet und geeignete Datenbankzugriffsanfragen basierend auf ausgewählten Webseiten hervorruft; und
    • • ein Lastenausgleichsmodul 1174, das die Verwendung jeder der DatenbankNachbildungen überwacht und neue Datenbankzugriffsanfragen an einen geeigneten Datenbankserver weiterleitet, um die Lasten zwischen den Datenbankservern auszugleichen. In einigen Ausführungsformen gleicht das Lastenausgleichsmodul 1174 des Frontendservers 910 die Last zwischen den Nachbildungen und die Last zwischen den Datenbankservern innerhalb jeder Nachbildung aus; in anderen Ausführungsformen gleicht das Lastenausgleichsmodul 1174 im Frontendserver 910 nur die Last über die Nachbildungen aus. Bei diesen letztgenannten Ausführungsformen wird ein Lastenausgleich für eine Nachbildung von einem oder mehreren Servern eher an der Nachbildung als am Frontendserver 910 durchgeführt.
  • 9 veranschaulicht einen einzelnen Frontendserver, aber viele Ausführungsformen beinhalten zahlreiche Frontendserver, wie z. B. 5, 20 oder 50, abhängig von der Nutzung.
  • Obwohl die 10, 11A und 11B verschiedene Client- und Server-Computer darstellen, sind diese FIG. eher als funktionelle FIG. der verschiedenen Funktionen beabsichtigt, die in einem einzelnen Computer oder einem Satz aus Servern vorhanden sein können, als als strukturelles Schema 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önnten einige Posten, die getrennt in 9 gezeigt werden (wie z. B. der Datenbankserver 922 und der Datenspeicher 932) auf einem einzelnen Server implementiert werden, und einzelne Posten könnten durch einen oder mehrere Server implementiert werden. Die tatsächliche Serveranzahl, die verwendet wird, um ein Datenbankverwaltungssystem 950 umzusetzen und wie die Funktionen unter ihnen zugewiesen werden, variiert von einer Ausführungsform zur anderen und kann teilweise von der Menge des Datenverkehrs abhängen, die das System während der Spitzenverbrauchszeiträume als auch während der durchschnittlichen Nutzungszeiträume verarbeiten muss.
  • Jedes der hierin beschriebenen Verfahren kann mittels Anweisungenn, die auf einem computerlesbaren Speichermedium gespeichert werden, ausgeführt werden. Die Anweisungen werden von einem oder mehreren Prozessoren eines oder mehrerer Server oder Clients ausgeführt. Jede der in den 10, 11A und 11B gezeigten Operationen kann Anweisungen entsprechen, die in einem Computerspeicher oder einem computerlesbaren Speichermedium gespeichert sind.
  • Die 12A12D veranschaulichen beispielhafte Datenstrukturen, die in einer Multiversionsdatenbank im Einklang mit einigen Ausführungsformen verwendet werden. 12A zeigt die zwei Zeilen 1216 und 1218 in einer Datenbanktabelle 1200. In einer derzeitigen Ausführungsform kann eine Datenbanktabelle 1200 zig Millionen oder Milliarden von Zeilen enthalten. Die veranschaulichte Datenbanktabelle 1200 hat eine Kunden-ID 1202 als Primärschlüssel. Jede Zeile hat einen verschiedenen Primärschlüsselwert, wie z. B. den Wert 312257018 (1220) für die zweite Zeile 1218. Die Datenbanktabelle 400 hat mehrere Nicht-Schlüsselspalten, einschliesslich des Nachnamens 1204, Vornamens 1206, der Adresse 1208, Stadt 1210, des Staates 1212 und der Bestellungen 1214. Jede Nicht-Schlüsselspalte hat einen spezifischen Datentyp, der numerisch, eine Zeichenfolge, Boolean, ein Datum oder Protokollpuffer sein kann. In einigen Ausführungsformen werden die Datentypen für die Nicht-Schlüsselspalten detaillierter spezifiziert, wie z. B. eine Einzelpräzision, Doppelpräzision oder festedezimalnumerische Typen. String-Datentypen können eine feste Länge oder variable Länge aufweisen. Ein Protokollpuffer ist ein sprachenneutraler, plattformneutraler, erweiterbarer Mechanismus zur Serialisierung strukturierter Daten – ähnlich wie XML, aber kleiner, schneller und einfacher. Ein Protokollpuffer definiert strukturierte Daten und kann leicht in eine Vielzahl von Datenströmen mit Hilfe einer Vielzahl von Programmiersprachen geschrieben oder ausgelesen werden. In der veranschaulichten Datenbanktabelle verwenden die ersten fünf Nicht-Schlüsselspalten einen String-Datentyp (entweder mit fester Länge oder variabler Länge abhängig von der Implementierung). Die Spalte Bestellung 1214 hat allerdings Werte, die selbst eine Tabelle sind. Zum Beispiel hat die Zeile 1218 die Untertabelle 1224 als Wert für die Bestellungen-Spalte 1214. Wie nachfolgend in den 12C und 12D dargestellt, können Untertabellen weiter verschachtelt sein.
  • Anders als bei einer gewöhnlichen SQL-Datenbank umfasst eine einzelne Spalte einer einzelnen Zeile in einer Multiversionsdatenbank eher einen Satz von Werten als einen einzelnen Wert. Zum Beispiel umfasst die Spalte Adressen 1208 der Zeile 1218 einen Satz von Werten 1222. Dieser Satz von Werten 1222 wird in 12B dargestellt. Jeder Adressenwert 1228 hat einen verknüpften Adressen-Zeitstempel 1226, der angibt, wann der Adressenwert 1228 in die Datenbanktabelle 1200 geschrieben wurde. In der veranschaulichten Ausführungsform werden die Zeitstempel mit einer Genauigkeit von 1/10000 Sekunde gespeichert, aber andere Ausführungsformen haben eine grössere oder kleinere Präzision. Die 12B zeigt, dass der Kunde mit der Kunden-ID 312257018 (1220) drei Adressen hatte, beginnend mit 123 Main St. (1232) am 2. Januar 2009 ungefähr um 13:12 Uhr (1230). Dieser Zeitstempel gibt an, wann die Adresse in der Datenbanktabelle 1200 gespeichert wurde, nicht wann der Kunde tatsächlich damit begann in der 123 Main Street zu leben (1232). (Die Zeitstempel sind keine vom Benutzer eingegebenen „Wirksamkeitsdaten”, die in einigen Softwareanwendungen erscheinen.)
  • Die 12B zeigt, dass der Kunde 312257018 (1220) die Adresse am 15. September 2011 gegen 18:15 Uhr (1234) auf 2388 First St. # 12 (1236) aktualisierte, und danach am 22. Dezember 2013 gegen 8:43 Uhr morgens (1238) die Adresse auf 9178 Sunset Avenue (1240) aktualisierte. Jeder nachfolgende Schreibvorgang an die Adressspalte 408 für den Kunden 312257018 weist einen Adressen-Zeitstempel 1226 auf, der später als der 22. Dezember 2013 um 8:43 Uhr (1238) ist. Dies wird nachfolgend detaillierter mit Bezug auf 13A, 13B und 14A beschrieben.
  • Mehrere Datenversionen zu haben ermöglicht ein Auslesen in der Vergangenheit, das die Daten erkennt, wie sie damals waren. Zum Beispiel gibt ein Lesevorgang der Zeile 1218 für den Kunden 322257018 bei einem Lesezeitstempel vom 1. Januar 2010 den Adresswert 123 Main Street (1232) zurück, wohingegen ein Auslesen derselben Zeile bei einem Lesezeitstempel vom 1. Januar 2012 2388 First St. # 12 (1236) zurückgibt. (Natürlich gibt ein tatsächlicher Lesezeitstempel auch die Tageszeit an, aber die Tageszeit würde keinen Unterschied in den oben genannten zwei Beispielen ausmachen.) Aufgrund der Speicherplatzgrenzen des Datenspeichers 932 unterliegen alte Versionen von Spaltenwerten der Speicherbereinigung basierend auf benutzerdefinierten Kriterien. Beispielsweise können Einträge der Beseitigung unterzogen werden, wenn die Anzahl von Einträgen für eine Spalte einen festgelegten Schwellenwert übersteigt oder die Einträge älter als ein Schwellenwertalter sind.
  • Wie durch die Abfolge von drei Werten für die Kundenadressen für den Kunden 312257018 veranschaulicht, erzeugen die Zeitstempel für die Werte eine eindeutige Reihenfolge für die Werte. Das Datenbankmanagementsystem 950 garantiert, dass die Zeitstempel für die Werte monoton steigen, selbst wenn neue Werte in schneller Aufeinanderfolge eingefügt werden.
  • Obwohl das Datenbankverwaltungssystem 950 mehrere Versionen für die Werte in Nicht-Schlüsselspalten unterstützt, sind mehrere Versionen nicht erforderlich. Beispielsweise ändern Menschen im Allgemeinen nicht ihre Vornamen und damit hätte typischerweise jede Kundenzeile nur einen einzigen Wert in der Vornamen-Spalte 1206. Der Zeitstempel für den einzelnen Wert wäre in diesem Fall der Zeitstempel, als die Zeile eingefügt wurde.
  • Wie in 12C veranschaulicht, hat die Spalte Bestellungen 1214 Werte, die Tabellen sind. 12C veranschaulicht die Untertabelle 1224 über Bestellungen für den Kunden 312257018. In dieser Darstellung hat die Untertabelle 1224 nur zwei Bestellungen 1260 und 1262, aber es kann eine beliebige Anzahl von Bestellungen geben. Die in 12C veranschaulichte abgekürzte Untertabelle 1224 hat vier Spalten, einschliesslich einer Bestellungs-ID 1250 als Primärschlüssel und die drei Nicht-Schlüsselspalten Bestelldatum 1252, Versandadresse 1254 und Bestellposten 1256. Wie die Stammtabelle 1200 haben die Werte für die Nicht-Schlüsselspalten spezifizierte Datentypen, die Zahlen, Strings, Termine, Boolesche Werte, Protokollpuffer oder Untertabellen sein können.
  • Obwohl das Auftragsdatum 1252 und die Versandadresse 1254 in der Untertabelle 1224 mehrere Werte speichern können, gäbe es im Allgemeinen einen einzelnen Wert für jede dieser Spalten. Zusätzliche Werte würden allerdings hinzugefügt, wenn der Kunde einen ungültigen Eintrag korrigiert. Zum Beispiel könnte der Kunde erfassen, dass die Versandadresse 1266 für die Bestellung QA1997233 (1264) falsch eingegeben oder eine alte Adresse verwendet wurde. Wenn der Kunde den Fehler korrigiert würde ein neuer Wert für die Versandadresse hinzugefügt, der vorherige Wert wäre aber immer noch in dem Satz der Werte 1266. Dies veranschaulicht auch den Punkt, dass ein Benutzer seine „Historie nicht ändern kann”. Sobald ein Wert gespeichert ist wird er weiterhin in der Datenbank vorhanden sein, bis er einige Zeit später durch eine Speicherbereinigung entfernt wird.
  • Die Bestellung QA1997233 (1264) enthält eine Untertabelle 1268, welche die Bestellposten 1256 in der Bestellung spezifiziert. Dies veranschaulicht, dass Untertabellen innerhalb von anderen Untertabellen verschachtelt werden können. 12D zeigt einen abgekürzten Satz von Spalten, um die Posten innerhalb der Untertabelle 1268 zu identifizieren. Ähnlich der Wurzeltabelle 1200 und der Untertabelle 1224 hat die Untertabelle 1268 eine Primärschlüsselposten-ID 1270 und einige Nicht-Schlüsselspalten. Die Nicht-Schlüsselspalten umfassen eine Menge 1272 und den Preis 1274. 12D zeigt eine Untertabelle mit zwei Zeilen 1276 und 1278, aber es könnte eine beliebige Anzahl von Zeilen geben. In der Zeile 1278 ist die Posten-ID 7752-81517 (1280), die Menge ist ein Wert im Satz von Mengenwerten 1282 und der Preis ist ein Wert im Satz von Preiswerten 1284. Im Allgemeinen gäbe es einen einzigen Wert für die Menge 1282 und den Preis 1284, aber es gäbe zahlreiche Werte wenn die Daten geändert würden, nachdem sie ursprünglich abgespeichert wurden. (z. B. entscheidet der Kunde, eher drei von einem Posten zu erhalten als zwei.)
  • Die bis veranschaulichen die Shardbildung einer Zeile in einer Datenbanktabelle gemäss einigen Ausführungsformen. Die 12E stellt eine Zeile 1218 einer Datenbanktabelle 1200 dar, die als ein einzelner Shard 1290 gespeichert wird. Das heisst, der Primärschlüssel 1202 und alle Nicht-Schlüsselspalten werden zusammen gespeichert. Solange die gesamte physikalische Grösse einer Zeile 1218 nicht zu lang ist, besteht die Zeile aus einem einzigen Shard 1290. So wie der Begriff hierin verwendet wird, wird ein Shard auch als „Split” bezeichnet. Die Schwellengrösse für einen einzelnen Shard hängt von der Implementierung ab (z. B. könnte die Schwellengrösse 10 Megabyte oder 10 Gigabyte betragen), und die Schwellengrösse ist eine „weiche” Grenze. Das heisst, eine Zeile 1218 kann über die Schwellengrösse hinaus anwachsen, bevor sie in Shards unterteilt wird. Typischerweise bestehen die meisten Zeilen aus einem einzigen Shard.
  • Die 12F zeigt eine Methode, wie eine Stammzeile 1218 in zwei Shards 1292 und 1294 aufgeteilt werden kann. In diesem Beispiel umfasst jeder Shard die Primärschlüssel-Kunden-D 1202 und eine Teilmenge der Nicht-Schlüsselspalten. Die Nicht-Schlüsselspalten Nachname 1204, Vorname 1206, Adresse 1208, Stadt 1210 und Staat 1212 sind in dem ersten Shard 1292 enthalten, und die Nicht-Schlüsselspalte Bestellungen 1214 ist in dem zweiten Shard 1294 enthalten. In diesem Beispiel ist jede Nicht-Schlüsselspalte in genau einem Shard enthalten, und der Primärschlüssel ist in jedem der Shards enthalten. Wie in 12F dargestellt, tritt die Aufspaltung in Shards bei einzelnen Zeilen auf. Daher kann die Zeile 1218 in einen Anteil 1218a in einem ersten Shard 1292 und ein zweiter Anteil 1218b in einem zweiten Shard 1294 aufgeteilt werden, wohingegen die Zeile 1216 (siehe 12A) als einziger Shard verbleiben kann.
  • Die 12G stellt eine alternative Methode dar, um eine Zeile 1218 in die Shards 1296 und 1298 zu unterteilen, wenn die Zeile eine oder mehrere Nicht-Schlüsselspalten umfasst, die Untertabellen sind. Ein Shard 1296 umfasst einen Anteil 1218c der ursprünglichen Zeile 1218, welche die Primärschlüsselkunden-ID 1202, zwei Nicht-Schlüsselspalten Nachname 1204 und Vorname 1206 sowie einen Anteil 1214a der Bestellungen-Untertabelle umfasst, die eine Teilmenge 1224a der Zeilen der Untertabelle 1224 von der ursprünglichen Zeile 1218 enthält. Insbesondere enthält die Teilmenge 1224a die Bestellung AB0032117 (1286). Ein weiterer Shard 1298 enthält einen Anteil 1218d der ursprünglichen Zeile 1218, welche die Primärschlüsselkunden-ID 1202, die drei Nicht-Schlüsselspalten Adresse 1208, Stadt 1210 und Staat 1212 sowie einen Anteil 1214b der Bestellungen-Untertabelle umfasst, die eine Teilmenge 1224b der Zeilen der Untertabelle 1224 von der ursprünglichen Zeile enthält. Insbesondere enthält die Teilmenge 1224b die Bestellung QA1997233 (1264). Bei diesem alternativen Shardbildungsverfahren werden gewöhnliche Nicht-Schlüsselspalten zu genau einem der Shards verlagert, aber eine Nicht-Schlüsselspalte, die eine Untertabelle ist, kann die Zeilen des Untertabellen-Splits zwischen den Shards umfassen.
  • 13A zeigt eine Datenstruktur, die einige Ausführungsformen für die Auswahl von Lesezeitstempeln und Schreibzeitstempeln verwenden. Diese Datenstruktur umfasst den Zeitstempel für den letzten Schreibvorgang jeder Spalte. Die abgebildete Datenzeile 1318 entspricht der Datenbanktabellenzeile 1218 in 12E. In einigen Ausführungsformen werden diese Daten als ständige Speicherung im Datenspeicher 932 oder im Speicher 1114 gespeichert, wohingegen in anderen Ausführungsformen diese Informationen, falls erforderlich, basierend auf den Zeitstempeln, die mit den Spaltenwerten in jeder Spalte verbunden sind, berechnet werden. Die Kundennummer 1202 korreliert diese Daten mit dem entsprechenden Kunden. Die tatsächliche Datenstruktur umfasst „letzter Schreibvorgang”-Zeitstempel für jede Nicht-Schlüsselspalte der Datenbanktabelle 1200, 13A zeigt aber nur zwei von ihnen. Der [Vorname] Letzter Schreibvorgang 1306 gibt den Zeitstempel des letzten Schreibvorgangs der Vornamen-Spalte 1206 an. Der [Adresse] Letzter Schreibvorgang 1308 gibt den Zeitstempel des letzten Schreibvorgangs an die Adressspalte 1208 an. Basierend auf den drei Spaltenwerten, die in 12B abgebildet werden, und ihren dazu gehörigen Zeitstempeln, war der letzte Schreibvorgang am 22. Dezember 2013 um 8:43 Uhr morgens (zuzüglich 29,8293 Sekunden, um genau zu sein). Der Vergleich des [Adresse] letzten Schreibvorgangs 1308 in 13A mit den Daten in 12B veranschaulicht, dass die Daten des letzten Schreibvorgangs für jede Spalte berechnet werden können (wählen Sie z. B. den höchsten Zeitstempel, der mit den Spaltenwerten verknüpft ist); wenn allerdings die Gemeinkosten in Zeit und Raum für die Speicherung dieser redundanten Informationen gering sind, speichern einige Ausführungsformen die Daten auf einem permanenten Speicher oder speichern die Daten im Speicher 1114.
  • Wie die 13A veranschaulicht, ist der letzte Zeitstempel des Schreibvorgangs für jede Spalte in der Datenbanktabelle 1200 bekannt. Diese Körnung ermöglicht die Auswahl von Lese- und Schreibzeitstempeln, ohne andere Transaktionen zu blockieren, die auf unterschiedliche Spalten derselben Zeile zugreifen.
  • 13B veranschaulicht ein Datenstück 1320, das von dem Datenbankverwaltungssystem 950 verwendet wird, um sicherzustellen, dass die Zeitstempel für Schreibvorgangstransaktionen monoton zunehmen. Der Minimale Nächste Neue Schreibvorgang-Zeitstempel (MNNWT) 1320 wird für jede Datenbank oder DatenbankNachbildung nachverfolgt. Wenn die nächste Schreibvorgangstransaktion eintrifft, wird ihr ein Schreibvorgangs-Zeitstempel zugewiesen, der grösser als oder gleich MNNWT 1320 ist.
  • Wenn ein Datenbank-Server eine Leseanforderung empfängt, wird dem Lesezugriff ein Zeitstempel zugewiesen, der grösser ist als der letzte Schreibvorgangs-Zeitstempel der aufgerufenen Spalten und kleiner als MNNWT 1320. Dies serialisiert die Leseanforderung nach dem letzten Schreibvorgang und vor dem nächsten Schreibvorgang. Der Lesevorgang kann parallel zu allen neuen Schreibvorgängen erfolgen, die vom Datenbank-Server empfangen werden, da die Datenbank mehrere Versionen von Spaltenwerten verwaltet; greift der Lesevorgang auf die vorhandenen Daten zu und jede neue Schreibanforderung erstellt eine neue Version von Daten mit Zeitstempeln, die grösser oder gleich zu MNNWT sind.
  • Wenn der Datenbank-Server eine Schreibanforderung empfängt, wird der Schreibtransaktion ein Zeitstempel zugewiesen, der grösser oder gleich zu MNNWT ist (typischerweise grösser als) und MNNWT nimmt mehr zu als der zugewiesene Zeitstempel ist.
  • Wenn ein Client-Rechner 902 einen Lesevorgang zu einer Zeit durchführen muss die konsistent über mehrere Datenbankserver ist, kann der Client 902 einen Zeitstempel angeben. Solange dieser Zeitstempel kleiner als der MNNWT 1320 jedes Datenbank-Servers ist, kann das Lesen auf jedem Datenbank-Server sicher ausgeführt werden und die Leseergebnisse werden garantiert stabil sein, wenn das Lesen mit demselben Zeitstempel wiederholt wird.
  • In einigen Ausführungsformen gibt es eine oder mehrere Datenbanknachbildungen (z. B. Nachbildung 916), die in der Lage sind Schreibvorgänge zu bedienen, diese aber nicht lesen können oder umgekehrt. In einigen Ausführungsformen erhält die begrenzte Nachbildung in regelmässigen Abständen MNNWT-Werte von anderen Nachbildungen. Eine Nachbildung mit Kenntnis über MNNWT bedient unabhängig einen Lesevorgang zu einem Zeitstempel der geringer ist als MNNWT, ohne mit anderen Datenbankservern kommunizieren zu müssen. Bei fehlenden Schreibvorgängen erhöht ein Datenbankserver in regelmässigen Abständen den Wert von MNNWT, so dass Nachbildungsentitäten dazu dienen können, bei zunehmenden Zeitstempeln zu lesen.
  • Die 14A und 14B sind beispielhafte Flussdiagramme, die die relevanten Aspekte von Lese- und Schreibtransaktionen zusammenfassen. In 14A empfängt (1402) das Datenbankverwaltungssystem 950 eine Schreibtransaktion 1400. Ein Datenbankserver ermittelt (1404), welche Objekte geschrieben werden müssen (z. B., organisierte Spalten in einer Datenbanktabelle). Der Datenbank-Server wählt dann (1406) einen Zeitstempel für den Schreibvorgang der grösser oder gleich zu MNNWT 1320 ist und grösser als der Zeitstempel des letzten Schreibvorgangs für die zu schreibenden Objekte. Einige Ausführungsformen lassen die zweite Überprüfung aus, da MNNWT 1320 immer grösser ist als alle Zeitstempel der vorherigen Schreibvorgänge. Der Datenbankserver aktualisiert (1408) MNNWT 1320, so dass MNNWT grösser ist als der gerade gewählte Zeitstempel. Der Datenbank-Server erfasst (1410) Schreibsperren für die zu schreibenden Objekte und fügt dann neue Objektwerte mit dem ausgewählten Zeitstempel in den Satz von Objektwerten ein (1412). Der Datenbank-Server gibt dann eine Schreibbestätigung (1414) an den Client-Rechner 902 zurück, der die Schreibtransaktion 1400 initiiert hat.
  • 14B veranschaulicht eine Lesetransaktion 1450. Das Datenverwaltungssystem 950 empfängt (1452) die Leseanforderung und bestimmt (1454), ob die Leseanforderung einen gelesenen Zeitstempel angibt. Wenn die Leseanforderung einen Lesezeitstempel enthält, bestimmt das Datenbankverwaltungssystem 950 (1456), ob der angegebene Zeitstempel kleiner ist als MNNWT. Wenn der festgelegte gelesene Zeitstempel grösser oder gleich ist zu MNNWT 1320, lehnen einige Ausführungsformen die Anforderung ab (1458). In anderen Ausführungsformen wird, wenn der festgelegte gelesene Zeitstempel grösser oder gleich zu MNNWT 1320 ist, wird die Lesetransaktion 1450 blockiert, bis MNNWT 1320 erhöht wird.
  • Wenn die Leseanforderung keinen gelesenen Zeitstempel enthält, wählt das Datenverwaltungssystem 950 (1460) gelesenen Zeitstempel aus, der grösser ist als der Zeitstempel der zuletzt zu lesenden Schreibobjekte und kleiner als MNNWT 1320. MNNWT 1320 wird dabei garantiert grösser als alle Zeitstempel der früheren Lesevorgänge, so dass es immer möglich ist, einen gelesenen Zeitstempel auszuwählen, der diese Kriterien erfüllt.
  • Unabhängig davon ob der gelesene Zeitstempel vom Client 902 festgelegt oder vom Datenverwaltungssystem 950 ausgewählt wird, fährt ein Datenbank-Server mit dem Lesen (1462) der gewünschten Daten zum festgelegten Zeitstempel fort und gibt die Daten an den Client 902 zurück (1464).
  • 15 veranschaulicht eine umfassende Sicht der Operationen, die auf einem Server durchgeführt werden, wenn eine Schreibtransaktion und eine Lesetransaktion etwa zur gleichen Zeit die gleiche Datenbanktabellenzeile aufrufen. In dieser Darstellung werden die Lese- und Schreibtransaktion von zwei verschiedenen Client-Rechnern 902 und 904 empfangen, jedoch könnten beide Transaktionen auch einfach von demselben Client 902 stammen. Beispielsweise kann eine grafische Benutzeroberfläche eines Client einen Schreibvorgang ausgeben und gleichzeitig einen unmittelbaren Lesevorgang, so dass die Oberfläche mit den aktuellen Daten aktualisiert wird. Als ein anderes Beispiel können die beiden Anfragen durch eigenständige asynchrone Prozesse ausgegeben werden. Darüber hinaus gilt im Wesentlichen die gleiche Beschreibung, wenn die Lesetransaktion vor der Schreibtransaktion empfangen wird, weil es nahezu zwei parallele Lesetransaktionen oder nahezu zwei parallele Schreibtransaktionen gibt. In diesem Beispiel empfängt das Datenverwaltungssystem 950 die Schreibanforderung 1502, bevor das Datenverwaltungssystem 950 die Leseanforderung 1506 empfängt. Wenn die Leseanforderung 1506 versucht eines der Objekte zu lesen, die die Schreibanforderung modifizieren soll, verursacht dies einen inhärenten Konflikt und der Lesevorgang muss warten bis der Schreibvorgang beendet ist. Daher stellt 15 Lese- und Schreibtransaktionen dar, die keinen inhärenten Konflikt haben.
  • Der Datenbank-Server 922 verarbeitet die Schreibtransaktion, sperrt (1504) das entsprechende Objekt und setzt den Schreibvorgang fort. Dies wird nachfolgend detaillierter mit Bezug auf die 14A beschrieben. In dieser Darstellung wird die Leseanforderung 1506 empfangen, kurz nachdem das Datenverwaltungssystem 950 die Schreibanforderung empfangen hat. Wie in 14B dargestellt, wählt der Datenbank-Server (1508) einen Zeitstempel für den Lesevorgang und überprüft (1508), dass keine Lesesperre besteht. Dann führt der Datenbank-Server (1510) den Schreibvorgang parallel zum Lesevorgang durch und den Lesevorgang (1512) parallel zum Schreibvorgang. In dieser Darstellung schliesst der Lesevorgang als Erstes ab (1514) und stellt dem Anforderer die Lesedaten bereit. Anschliessend ergänzt und bestätigt (1516) der Datenbank-Server den Schreibvorgang mit dem Anforderer des Schreibvorgangs. In manchen Fällen wird die Schreibanforderung vor dem Lesevorgang abgeschlossen.
  • Die 16A16B veranschaulichen einen exemplarischen Prozess 1600, der die Daten in einer Multiversionsdatenbank liest (1602) und schreibt (1602). Der Prozess 1600 wird über das Datenverwaltungssystem 950 durchgeführt, das einen oder mehrere Server umfasst, die einen oder mehrere Prozessoren und Speicher besitzen. In Prozess 1600 legt (1604) das System 950 einen Datenbanktabelle 1200 mit einer Vielzahl von Zeilen an. In einigen Ausführungsformen umfasst (1606) die Datenbanktabelle 1200 eine Vielzahl von Nachbildungen, wobei jede Nachbildung an einem bestimmten geografischen Ort gespeichert ist. Die Tabellennachbildungen sind Teil der Datenbank-Nachbildungen 912, 914 und 916, die in 9 dargestellt sind. Das heisst, eine Nachbildung einer Datenbanktabelle würde sich an einer Datenbank-Nachbildung befinden, wie beispielsweise der Nachbildung 912.
  • Jede Zeile der Datenbanktabelle enthält (1608) einen Primärschlüssel, der die Zeilen eindeutig identifiziert und eine Vielzahl von Nicht-Schlüsselspalten. In einigen Ausführungsformen enthält (1610) jede Zeile der Datenbanktabelle einen oder mehrere Shards. Dies wird nachfolgend detaillierter mit Bezug auf die 12E12G beschrieben. In einigen Ausführungsformen bilden (1610) die Shards für jede Zeile eine Unterteilung der Nicht-Schlüsselspalten in der jeweiligen Zeile. In einigen Ausführungsformen bilden die Shards für jede Zeile, deren Wert keine Untertabellen sind, eine Unterteilung der Nicht-Schlüsselspalten. Dies wird nachfolgend detaillierter mit Bezug auf die 12E12G beschrieben.
  • Wie oben in Bezug auf 12B eingehend beschrieben, enthält jede Nicht-Schlüsselspalte (1612) einen oder mehrere Spaltenwerte Jede Spaltenwert enthält (1614) einen zugehörigen Zeitstempel, der identifiziert, wenn der zugehörige Spaltenwert gespeichert wird. Dies ermöglicht dem Datenverwaltungssystem 950 das Lesen von Daten aus der Datenbanktabelle 1200, die in der Vergangenheit zu irgendeinem Zeitpunkt erschienen sind. Die Zeitstempel, die den Spaltenwerten in der Nicht-Schlüsselspalte zugeordnet sind, stellen eine eindeutige Reihenfolge für die Spaltenwerte der Nicht-Schlüsselspalte bereit (1616). Wenn ein neuer Spaltenwert eingefügt wird, wird er mit einem zugehörigen Zeitstempel gespeichert und somit ist der zugehörige Zeitstempel grösser als alle anderen früheren Zeitstempel für die zuvor existierenden Spaltenwerte der gleiche Spalte.
  • Der Prozess 1600 initiiert (1618) eine Schreibtransaktion, um eine erste Zeile in der Datenbanktabelle 1200 zu aktualisieren. In einigen Ausführungsformen kann eine einzelne Schreibtransaktion eine Vielzahl von Wurzel-Zeilen aktualisieren. Die Schreibtransaktion setzt (1620) eine Sperre auf eine erste Nicht-Schlüsselspalte der ersten Zeile. Die erste Nicht-Schlüsselspalte stellt eine Spalte dar, die die Schreibtransaktion aktualisiert.
  • or Beenden der Schreibtransaktion initiiert (1622) der Prozess 1600 eine Lesetransaktion, um aus einer zweiten Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle 1200 zu lesen. Die zweite Nicht-Schlüsselspalte unterscheidet (1622) sich von der ersten Nicht-Schlüsselspalte. Da die Zeitstempel für jede Nicht-Schlüsselspalte individuell gespeichert werden und die Lese- und Schreibtransaktionen, die auf die Spalten zugreifen, unterschiedlich sind, blockieren sie sich nicht gegenseitig. Daher werden die erste Transaktion und die zweite Transaktion gleichzeitig ausgeführt (1624). In Ausführungsformen in denen Datenbanktabellen 1200 gemeinsam genutzt werden können, können die erste und die zweite Nicht-Schlüsselspalte in der (1626) ersten Zeile in einem Shard genutzt werden oder (1626) in verschiedenen Shards in der ersten Zeile.
  • Das Beenden der Schreibtransaktion umfasst (1628): auswählen (1630) eines ersten Zeitstempels der gröaaer ist als die Zeitstempel, die den vorhandenen Werten der ersten Nicht-Schlüsselspalte der ersten Zeile zugeordnet sind; und Einfügen (1632) eines neuen Spaltenwerts in die erste Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle 1200. Der neue Spaltenwert wird mit dem ersten Zeitstempel zugeordnet (1632).
  • In einigen Fällen wird die Lesetransaktion beendet (1634), bevor die Schreibtransaktion beendet wird. In einigen Fällen wird die Schreibtransaktion beendet (1636), bevor die Lesetransaktion beendet wird.
  • In einigen Fällen umfasst (1638) die erste Zeile der Wurzel-Datenbanktabelle 1200 eine oder mehrere Nicht-Schlüsselspalten, die Spaltenwerte enthalten, die Untertabellen sind. Jede Untertabelle umfasst (1640) eine Vielzahl von Unterzeilen (z. B. Zeilen der Untertabelle). Jede Unterzeile umfasst (1642) einen Unterschlüssel, der die Unterzeile innerhalb der Untertabelle eindeutig identifiziert und eine oder mehrere Nicht-Schlüsselunterspalten (z. B. Spalten innerhalb der Tabelle). Jede Nicht-Schlüsselunterspalte umfasst (1644) einen oder mehrere Unterspaltenwerte (z. B. Werte für die Unterspalte). Darüber hinaus hat (1646) jede Unterspalte einen zugehörigen Sub-Zeitstempel, der identifiziert, wenn ein zugehöriger Sub-Zeitstempelwert in der Datenbank gespeichert wird. Die Sub-Zeitstempel, die den Spaltenwerten in der Nicht-Schlüsselunterspalte zugeordnet sind, stellen eine eindeutige Reihenfolge für die Unter-Spaltenwerte der Nicht-Schlüsselspalte bereit (1648).
  • Die vorstehende Beschreibung wurde zum Zweck der Erklärung unter Bezugnahme auf spezifische Ausführungsformen beschrieben. Jedoch sollen die oben stehenden veranschaulichenden Erörterungen nicht erschöpfend sein oder die Erfindung auf die genauen offenbarten Formen beschränken. Angesichts der oben stehenden Lehren sind viele Modifikationen und Abwandlungen möglich. Die Ausführungsformen wurden gewählt und beschrieben, um die Prinzipien der Erfindung und ihre praktischen Anwendungen zu beschreiben, um es dadurch anderen Fachleuten zu ermöglichen, die Erfindung und ihre verschiedenen Ausführungsformen mit verschiedenen Modifizierungen zu nutzen, die für die besondere, erwägte Nutzung geeignet sind.

Claims (10)

  1. Ein Datenbankverwaltungssystem, das einen oder mehrere Server-Rechner umfasst, wobei jeder Server-Rechner einschließt: einen Prozessor oder mehrere Prozessoren; Speicher; eine im Speicher gespeicherte Datenbanktabelle, wobei die Datenbanktabelle eine Vielzahl von Zeilen aufweist, wobei jede Zeile aus einem Primärschlüssel und einer Vielzahl von Nicht-Schlüsselspalten besteht, wobei Nicht-Schlüsselspalte einen oder mehrere Spaltenwerte enthält, wobei jeder Spaltenwert einen zugehörigen Zeitstempel hat der identifiziert, wann der zugeordnete Spaltenwert gespeichert wurde und die den Spaltenwerten in jeder Nicht-Schlüsselspalte zugeordneten Zeitstempel sind, stellen eine eindeutige Reihenfolge für die Spaltenwerte bereit, die die Nicht-Schlüsselspalte umfassen; und eine oder mehrere im Speicher für die Ausführung gespeicherten Programme, die durch einen oder mehrere Prozessoren gespeichert sind, wobei die Programme Anweisungen enthalten für: Initiieren einer Lesevorgangstransaktion zum Lesen aus einer ersten Nicht-Schlüsselspalte einer ersten Zeile in der Datenbanktabelle, einschließlich bestimmen, dass eine Schreibtransaktion durchgeführt wird, die eine zweite Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle aktualisiert, wobei die zweite Nicht-Schlüsselspalte unterschiedlich zur ersten Nicht-Schlüsselspalte ist und die Schreibtransaktion eine Sperre für die zweite Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle hält; und gleichzeitig die Daten aus der ersten Nicht-Schlüsselspalte liest und einen neuen Spaltenwert in die zweite Nicht-Schlüsselspalte schreibt.
  2. Das Datenbankverwaltungssystem nach Anspruch 1, wobei jede Nicht-Schlüsselspalte ferner einen Zeitstempel mit letztem Schreibzugriff umfasst, der den zuletzt erfolgten Schreibvorgang für die jeweilige Nicht-Schlüsselspalte anzeigt; wobei die Anweisungen zum Initiieren der Lesetransaktion weitere Anweisungen zur Auswahl eines Lesezeitstempels umfasst, teilweise basierend auf den zuletzt geschriebenen Zeitstempel der ersten Nicht-Schlüsselspalte; und wobei die Anweisungen zum Lesen der Daten aus der Nicht-Schlüsselspalte des Weiteren Anweisungen zur Auswahl eines Spaltenwertes aus der ersten Nicht-Schlüsselspalte entsprechend des Lesezeitstempels umfassen.
  3. Das Datenbankverwaltungssystem nach Anspruch 2, wobei die Anweisungen zum Initiieren der Lesetransaktion ferner Anweisungen zur Auswahl eines Lesezeitstempels umfasst, der ist: grösser als der zuletzt geschriebene Lesezeitstempel der ersten Nicht-Schlüsselspalte; und kleiner als ein Wert, der als der minimal nächste neue Schreibzeitstempel für die Datenbanktabelle bezeichnet wird.
  4. Das Datenbankverwaltungssystem nach Anspruch 1, wobei eines oder mehrere Programme weiterhin Anweisungen zum Speichern für jede Nicht-Schlüsselspalte jeder Zeile eines letzten Schreibzeitstempels enthält, der anzeigt, wann der letzte Schreibvorgang für die jeweilige Nicht-Schlüsselspalte der jeweiligen Zeile erfolgt ist; wobei die Anweisungen zum Initiieren der Lesetransaktion ferner Anweisungen zur Auswahl des Zeitstempels für den Lesevorgang umfasst, der teilweise auf dem letzten Lesezeitstempel der ersten Nicht-Schlüsselspalte basiert; und wobei die Anweisungen zum Lesen der Daten aus der ersten Nicht-Schlüsselspalte ferner die Anweisungen zum Auswählen des Spaltenwertes aus der ersten Nicht-Schlüsselspalte, entsprechend dem Lesezeitstempel, umfasst.
  5. Das Datenbankverwaltungssystem nach Anspruch 4, wobei die Anweisungen zum Initiieren der Lesetransaktion ferner Anweisungen zur Auswahl eines Lesezeitstempels umfasst, der ist: grösser als der zuletzt geschriebene Zeitstempel der ersten Nicht-Schlüsselspalte. kleiner als ein Wert, der als Minimum des nächsten neuen Schreibzeitstempels bezeichnet wird.
  6. Ein nicht-transitorisches computerlesbares Speichermedium, das ein oder mehrere Programme speichert, die zur Ausführung durch einen oder mehrere Server-Rechner konfiguriert sind, wobei jeder Server-Rechner einen oder mehrere Prozessoren und einen Speicher aufweist, der eines oder mehrere Programme zur Ausführung durch einen oder mehrere Prozessoren speichert, wobei das eine oder die mehreren Programme Anweisungen umfassen für: Pflegen einer Datenbanktabelle, wobei die Datenbanktabelle eine Vielzahl von Zeilen aufweist, wobei jede Zeile einen Primärschlüssel und eine Vielzahl von Nicht-Schlüsselspalten umfasst, wobei jede Nicht-Schlüsselspalte einen oder mehrere Spaltenwerte umfasst, jeder Spaltenwert einen zugehörigen Zeitstempel hat, der identifiziert, wenn der zugeordnete Spaltenwert gespeichert wurde und die Zeitstempel mit den zugehörigen Spaltenwerten in jeder Nicht-Schlüsselspalte eine eindeutige Reihenfolge für die Spaltenwerte bereitstellen, die die Nicht-Schlüsselspalte umfasst; Initiieren einer Lesetransaktion zum Lesen aus einer ersten Nicht-Schlüsselspalte einer ersten Zeile in der Datenbanktabelle, einschließlich bestimmen, dass eine Schreibtransaktion durchgeführt wird, die eine zweite Nicht-Schlüsselspalte der ersten Zeile in der Datenbanktabelle aktualisiert, wobei die zweite Nicht-Schlüsselspalte unterschiedlich zur ersten Nicht-Schlüsselspalte ist und die Schreibtransaktion eine Sperre für die zweite Nicht-Schlüsselspalte der ersten Zeile der Datenbanktabelle hält; und zeitgleiches Lesen der Daten aus der ersten Nicht-Schlüsselspalte und schreiben eines neuen Spaltenwertes zur zweiten Nicht-Schlüsselspalte.
  7. Das nicht-transitorische computerlesbare Speichermedium nach Anspruch 6, wobei jede Nicht-Schlüsselspalte ferner einen letzten Zeitstempel mit letztem Schreibzugriff umfasst, der den zuletzt erfolgten Schreibvorgang für die jeweilige Nicht-Schlüsselspalte anzeigt; wobei die Anweisungen zum Initiieren der Lesetransaktion ferner Anweisungen zur Auswahl des Zeitstempels für den Lesevorgang umfasst, der teilweise auf dem letzten Lesezeitstempel der ersten Nicht-Schlüsselspalte basiert; und wobei die Anweisungen zum Lesen der Daten aus der ersten Nicht-Schlüsselspalte ferner die Anweisungen zum Auswählen des Spaltenwertes aus der ersten Nicht-Schlüsselspalte, entsprechend dem Lesezeitstempel, umfasst.
  8. Das nicht-transitorische computerlesbare Speichermedium nach Anspruch 7, wobei die Anweisungen zum Initiieren der Lesetransaktion ferner Anweisungen zum Auswählen eines Lesezeitstempels umfasst, der ist: grösser als der zuletzt geschriebene Lesezeitstempel der ersten Nicht-Schlüsselspalte; und kleiner als ein Wert, der als der minimal nächste neue Schreibzeitstempel für die Datenbanktabelle bezeichnet wird.
  9. Das nicht-transitorische computerlesbare Speichermedium nach Anspruch 6, wobei eines oder mehrere Programme weiterhin Anweisungen zum Speichern für jede Nicht-Schlüsselspalte jeder Zeile eines letzten Schreibzeitstempels enthält, der anzeigt, wann der letzte Schreibvorgang für die jeweilige Nicht-Schlüsselspalte der jeweiligen Zeile erfolgt ist; wobei die Anweisungen zum Initiieren der Lesetransaktion ferner Anweisungen zur Auswahl des Zeitstempels für den Lesevorgang umfasst, der teilweise auf dem letzten Lesezeitstempel der ersten Nicht-Schlüsselspalte basiert; und wobei die Anweisungen zum Lesen der Daten aus der ersten Nicht-Schlüsselspalte ferner die Anweisungen zum Auswählen des Spaltenwertes aus der ersten Nicht-Schlüsselspalte, entsprechend dem Lesezeitstempel, umfasst.
  10. Ein nicht-flüchtiges computerlesbares Speichermedium nach Anspruch 9, wobei die Anweisungen zum Initiieren der Lesetransaktion weitergehende Anweisungen zum Auswählen eines Lesezeitstempels umfassen, diese sind: grösser als der zuletzt geschriebene Lesezeitstempel der ersten Nicht-Schlüsselspalte; und kleiner als ein Wert, der als der minimal nächste neue Schreibzeitstempel für die Datenbanktabelle bezeichnet wird.
DE202013012476.8U 2012-06-04 2013-06-04 Systeme zur Steigerung der Datenbankzugriffsparallelität mit Hilfe granularer Zeitstempel Expired - Lifetime DE202013012476U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261655438P 2012-06-04 2012-06-04
US61/655,438 2012-06-04
US201261655973P 2012-06-05 2012-06-05
US61/655,973 2012-06-05

Publications (1)

Publication Number Publication Date
DE202013012476U1 true DE202013012476U1 (de) 2017-02-16

Family

ID=52595416

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202013012476.8U Expired - Lifetime DE202013012476U1 (de) 2012-06-04 2013-06-04 Systeme zur Steigerung der Datenbankzugriffsparallelität mit Hilfe granularer Zeitstempel

Country Status (2)

Country Link
EP (1) EP2856356A2 (de)
DE (1) DE202013012476U1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084226A (zh) * 2019-06-13 2020-12-15 北京京东尚科信息技术有限公司 数据处理方法、系统、装置和计算机可读存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5956064B2 (ja) * 2013-04-01 2016-07-20 株式会社日立製作所 計算機システム、データ管理方法、及び計算機
CN111158999B (zh) * 2019-12-30 2023-05-26 杭州迪普科技股份有限公司 一种格式化时间的计算方法和装置
CN115858252B (zh) * 2023-02-21 2023-06-02 浙江智臾科技有限公司 一种数据恢复方法、装置及存储介质
CN117234697B (zh) * 2023-11-16 2024-02-06 中国人民解放军国防科技大学 一种保守时间同步并行事件调度计算架构和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334004B2 (en) * 2001-06-01 2008-02-19 Oracle International Corporation Consistent read in a distributed database environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084226A (zh) * 2019-06-13 2020-12-15 北京京东尚科信息技术有限公司 数据处理方法、系统、装置和计算机可读存储介质

Also Published As

Publication number Publication date
EP2856356A2 (de) 2015-04-08

Similar Documents

Publication Publication Date Title
US11853269B2 (en) Systems and methods for increasing database access concurrency
US11132381B2 (en) Pipelining paxos state machines
US11953938B1 (en) Generating globally coherent timestamps
US11789938B1 (en) Ensuring globally consistent transactions
Kulkarni et al. Logical physical clocks
US10747745B2 (en) Transaction execution commitment without updating of data row transaction status
US10037346B1 (en) Time reservations for ensuring consistent reads in a distributed database without logging
DE202013012476U1 (de) Systeme zur Steigerung der Datenbankzugriffsparallelität mit Hilfe granularer Zeitstempel
US6581110B1 (en) Method and system for reading and propagating authenticated time throughout a worldwide enterprise system
Brewer Spanner, truetime and the cap theorem
US11474991B2 (en) Including transactional commit timestamps in the primary keys of relational databases
US11556375B2 (en) Reducing commit wait in a distributed multiversion database by reading the clock earlier
US20100088197A1 (en) Systems and methods for generating remote system inventory capable of differential update reports
DE102013222471A1 (de) Erzeugung und verteilung einer synchronisierten zeitquelle
US11822436B2 (en) Database recovery based on logical timestamp
DE10016937B4 (de) Digitale Frequenzkorrektur
Zakhary et al. A System Infrastructure for Strongly Consistent Transactions on Globally-Replicated Data
Kamun et al. Towards Lock-Free Distributed Transactions

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
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
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0016270000

Ipc: G06F0016000000

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

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