DE202021004295U1 - Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem - Google Patents

Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem Download PDF

Info

Publication number
DE202021004295U1
DE202021004295U1 DE202021004295.4U DE202021004295U DE202021004295U1 DE 202021004295 U1 DE202021004295 U1 DE 202021004295U1 DE 202021004295 U DE202021004295 U DE 202021004295U DE 202021004295 U1 DE202021004295 U1 DE 202021004295U1
Authority
DE
Germany
Prior art keywords
transaction
version identifier
read
write operation
version
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.)
Active
Application number
DE202021004295.4U
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.)
Snowflake Inc
Original Assignee
Snowflake Inc
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 Snowflake Inc filed Critical Snowflake Inc
Publication of DE202021004295U1 publication Critical patent/DE202021004295U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/2379Updates performed during online database operations; commit processing
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • 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/24Querying
    • G06F16/248Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

System, umfassend:
wenigstens einen Hardware-Prozessor; und
einen Speicher, der Anweisungen speichert, die veranlassen, dass der wenigstens eine Hardwareprozessor Operationen durchführt, die folgendes umfassen:
Empfangen einer ersten Transaktion, wobei die erste Transaktion auf einem linearisierbaren Speicher auszuführen ist;
Zuweisen bzw. Zuordnen einer ersten Leseversion zur ersten Transaktion, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt;
Durchführen einer Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank;
Bestimmen eines ersten Festlegungs-Versionsidentifizierers entsprechend den ersten Daten resultierend aus der Leseoperation; und
in Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, Fortfahren damit, eine andere Transaktion auszuführen, und Verzichten darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.

Description

  • QUERVERWEIS AUF ZUGEHÖRIGE ANMELDUNG
  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung mit der seriellen Nr. 63/081,611 , eingereicht am 22. September 2020, mit dem Titel „CONCURRENT TRANSACTION PROCESSING IN A DATABASE SYSTEM“, deren Inhalte hierin durch Bezugnahme in ihrer Gesamtheit für alle Zwecke enthalten sind.
  • TECHNISCHES GEBIET
  • Ausführungsformen der Offenbarung betreffen allgemein ein netzwerkbasiertes Datenbanksystem oder eine Cloud-Datenplattform und insbesondere ein Verarbeiten gleichzeitiger Transaktionen, um OLTP (Online Transactional Processing (= Online-Transaktionsverarbeitung)) auf sichere und performante bzw. leistungsfähige Weise (z.B. unter Vermeidung von Blockierung (= Deadlock) und Verhungern (= Starvation)) innerhalb des Datenbanksystems zu ermöglichen. Um als Gebrauchsmuster und Gegenstand des Gebrauchsmusters geschützt zu werden, gibt es gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind. In einem Fall, in welchem in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen darzustellen, für welche mit den beigefügten Ansprüchen Schutz gesucht wird.
  • HINTERGRUND
  • Cloudbasierte universelle Datenbanken und andere Datenbanksysteme oder Datenplattformen bieten manchmal Unterstützung für eine Transaktionsverarbeitung, die als OLTP bezeichnet wird, was es solchen Systemen ermöglicht, Operationen bzw. Vorgänge durchzuführen, die über die eingebauten bzw. integrierten, systemdefinierten Funktionen nicht verfügbar sind. Um Sicherheitsrisiken zu mindern, sind jedoch Sicherheitsmechanismen nötig, um sicherzustellen, dass ein Benutzercode, der auf solchen Systemen läuft bzw. ausgeführt wird, isoliert bleibt.
  • Figurenliste
  • Die vorliegende Offenbarung wird aus der nachstehenden detaillierten Beschreibung und aus den beigefügten Zeichnungen verschiedener Ausführungsformen der Offenbarung vollständiger verstanden werden.
    • 1 stellt eine beispielhafte Computer- bzw. Rechenumgebung, die ein netzwerkbasiertes Data-Warehouse-System bzw. universelles Datenbanksystem in Kommunikation mit einer Cloud-Speicherplattform enthält, gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung dar.
    • 2 ist ein Blockdiagramm, das Komponenten eines Datenverarbeitungsservice- bzw. Compute-Service-Managers gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 3 ist ein Blockdiagramm, das Komponenten einer Ausführungsplattform gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 4 ist eine Computing- bzw. Rechen-Umgebung, die konzeptmäßig eine beispielhafte Software-Architektur zum Managen und Ausführen gleichzeitiger Transaktionen auf einem Datenbanksystem, die durch einen gegebenen Ausführungsknoten der Ausführungsplattform durchgeführt werden können, gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 5 ist ein Flussdiagramm, das Operationen eines Datenbanksystems beim Durchführen eines Verfahrens gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 6 ist ein Flussdiagramm, das Operationen eines Datenbanksystems beim Durchführen eines Verfahrens gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 7 ist ein Flussdiagramm, das Operationen eines Datenbanksystems beim Durchführen eines Verfahrens gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung darstellt.
    • 8 stellt eine diagrammmäßige Darstellung einer Maschine in der Form eines Computersystems gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung dar, innerhalb von welchem eine Gruppe bzw. ein Satz von Anweisungen ausgeführt werden kann, um zu veranlassen, dass die Maschine irgendeine oder mehrere der hierin diskutierten Verfahren durchführt.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird nun detailliert auf spezifische beispielhafte Ausführungsformen zum Ausführen des erfinderischen Gegenstandes Bezug genommen werden. Beispiele für diese spezifischen Ausführungsformen sind in den beigefügten Zeichnungen dargestellt, und spezifische Details sind in der folgenden Beschreibung dargelegt, um ein gründliches Verständnis des Gegenstands bereitzustellen. Es wird verstanden werden, dass diese Beispiele nicht dazu gedacht sind, den Schutzumfang der Ansprüche auf die dargestellten Ausführungsformen zu beschränken. Im Gegensatz sollen sie solche Alternativen, Modifikationen und Äquivalente abdecken, wie sie innerhalb des Schutzumfangs der Offenbarung enthalten sein können.
  • In Datenbanksystemen kann ein Durchführen von Transaktionen auf einer gegebenen Datenbank unterstützt werden. Um zu erleichtern, dass eine gegebene Transaktion zu einer Tabelle übergeben wird, können existierende Datenbanksysteme unterschiedliche Ansätze, die OLTP-Techniken enthalten, verwenden. Wie es hierin diskutiert wird, bezieht sich OLTP (Online Transactional Processing (= Online-Transaktionsverarbeitung)) auf eine Kategorie von Datenverarbeitung, die transaktionsorientierte Aufgaben enthält. Bei einem Beispiel enthält OLTP ein Einfügen, ein Aktualisieren bzw. Updaten und/oder ein Löschen unterschiedlicher Datenmengen in einer gegebenen Datenbank. OLTP kann eine große Anzahl von Transaktionen von einer großen Anzahl von Benutzern handhaben. Zunehmend finden solche Transaktionen innerhalb einer verteilten und vernetzten Umgebung von unterschiedlichen Standorten und Computerumgebungen aus statt und arbeiten Benutzer entsprechend. Daher wird es auch immer wichtiger, sicherzustellen, dass solche Transaktionen auf gleichzeitige Weise ausführen und abschließen, die die Integrität und Konsistenz der Daten in einer solchen verteilten Umgebung schützt.
  • Wie es hierin beschrieben ist, bietet die betreffende Technologie bzw. Fachgebietstechnologie eine Gleichzeitigkeits- bzw. Parallelitätssteuerung und eine Isolation zum Ausführen einer Reihe von Abfragebefehlen (z.B. SQL-Befehlen) innerhalb einer Transaktion gegenüber einem linearisierbaren Speicher. Insbesondere verwendet die betreffende Technologie einen Parallelitätssteuerungsmechanismus, der eine Kombination aus einer Parallelitätssteuerung mit mehreren Versionen für Leseoperationen (MVCC (= Multi-Version Concurrency Control)) und einer Verriegelung bzw. einer Sperrung für Schreiboperationen darstellt. Zusätzlich implementiert die betreffende Technologie eine gezielte Isolationsebene (z.B. Momentaufnahmen-Isolation bzw. Snapshot-Isolation), wobei jede Anweisung bzw. jeder Befehl gegenüber einer anderen Momentaufnahme einer Datenbank ausführen kann und Schreibsperren bis zu einer Transaktionsübergabe beibehalten werden.
  • Die betreffende Technologie implementiert bei einer Ausführungsform eine zweistufige Transaktionshierarchie, wobei eine Transaktion einer obersten Ebene einer SQL-Transaktion entspricht und eine geschachtelte Transaktion einem SQL-Befehl innerhalb der übergeordneten bzw. ursächlichen SQL-Transaktion entspricht. Eine gegebene geschachtelte Transaktion kann Lese- und Schreiboperationen ausführen und ein Wiederholen bzw. Zurücksetzen (= Rollback) ausführen und eine Ausführung null Mal oder mehrmals neu starten, bevor sie erfolgreich ist. Auf ein Übergeben bzw. Durchführen einer Transaktion hin können Schreiboperationen sichtbar werden und können durch jeden enthaltenen Befehl beibehaltene Schreibsperren freigegeben bzw. gelöst bzw. aufgehoben werden.
  • 1 stellt eine beispielhafte Computing- bzw. Rechen-Umgebung 100, die ein Datenbanksystem in der beispielhaften Form eines netzwerkbasierten universellen Datenbanksystems bzw. Data-Warehouse-System 102 enthält, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Um zu vermeiden, dass der erfinderische Gegenstand mit unnötigem Detail verdeckt wird, sind verschiedene funktionelle Komponenten, die nicht passend dafür sind, ein Verstehen des erfinderischen Gegenstands zu vermitteln, aus 1 weggelassen worden. Ein Fachmann wird jedoch ohne weiteres erkennen, dass verschiedene zusätzliche funktionelle Komponenten als Teil der Rechen-Umgebung 100 enthalten sein können, um zusätzliche Funktionalität zu ermöglichen, die hierin nicht spezifisch beschrieben ist. Bei anderen Ausführungsformen kann die Rechen-Umgebung einen anderen Typ von netzwerkbasiertem Datenbanksystem oder eine Cloud-Datenplattform umfassen.
  • Wie es gezeigt ist, umfasst die Computing-Umgebung 100 das netzwerkbasierte Data-Warehouse-System 102 in Kommunikation mit einer Cloud-Speicherplattform 104 (z.B. AWS®, Microsoft Azure Blob Storage® oder Google Cloud Storage) und einen Cloud-Anmeldeinformationsspeicheranbieter 106. Das netzwerkbasierte Data-Warehouse-System 102 ist ein netzwerkbasiertes System, das für ein Berichten und eine Analyse integrierter Daten aus einer oder mehreren ungleichartigen Quellen, einschließlich eines oder mehrerer Speicherorte innerhalb der Cloud-Speicherplattform 104, verwendet wird. Die Cloud-Speicherplattform 104 umfasst eine Vielzahl von Computing- bzw. Rechenmaschinen und stellt dem netzwerkbasierten Data-Warehouse-System 102 je nach Bedarf Computersystemressourcen, wie beispielsweise Datenspeicher und Rechenleistung, zur Verfügung.
  • Das netzwerkbasierte Data-Warehouse-System 102 umfasst einen Compute-Service-Manager 108, eine Ausführungsplattform 110 und eine oder mehrere Metadaten-Datenbänke 112. Das netzwerkbasierte Data-Warehouse-System 102 hostet und stellt Datenberichts- und -analysedienste für mehrere Clientkonten bereit.
  • Der Compute-Service-Manager 108 koordiniert und managt Operationen des netzwerkbasierten Data-Warehouse-Systems 102. Der Compute-Service-Manager 108 führt auch eine Abfrageoptimierung und -kompilierung durch sowie ein Managen von Clustern von Computing-Diensten, die Computerressourcen (die auch als „virtuelle Lager“ bezeichnet werden) bereitstellen. Der Compute-Service-Manager 108 kann irgendeine Anzahl von Clientkonten unterstützen, wie beispielsweise Endbenutzer, die Datenspeicherungs- und -wiedergewinnungsanforderungen bereitstellen, Systemadministratoren, die die hierin beschriebenen Systeme und Verfahren managen, und andere Komponenten/Vorrichtungen, die mit dem Compute-Service-Manager 108 interagieren.
  • Der Compute-Service-Manager 108 ist auch in Kommunikation mit einer Clientvorrichtung 114. Die Clientvorrichtung 114 entspricht einem Benutzer von einem oder mehreren durch das netzwerkbasierte Data-Warehouse-System 102 unterstützten Clientkonten. Ein Benutzer kann die Clientvorrichtung 114 verwenden, um dem Compute-Service-Manager 108 Datenspeicherungs-, -wiedergewinnungs- und -analyseanforderungen vorzulegen.
  • Der Compute-Service-Manager 108 ist auch mit einer oder mehreren Metadatendatenbanken 112 gekoppelt, die Metadaten speichern, die zu verschiedenen Funktionen und Aspekten gehören, die mit dem netzwerkbasierten Data-Warehouse-System 102 und seinen Benutzern assoziiert sind. Zum Beispiel kann eine Metadatendatenbank 112 eine Zusammenfassung von Daten enthalten, die in entfernten Datenspeichersystemen gespeichert sind, sowie von Daten, die aus einem lokalen Cache verfügbar sind. Zusätzlich kann eine Metadatendatenbank 112 Information diesbezüglich enthalten, wie Daten in entfernten Datenspeichersystemen (z.B. der Cloud-Speicherplattform 104) und den lokalen Caches organisiert sind. Durch eine Metadatendatenbank 112 gespeicherte Information lässt zu, dass Systeme und Dienste bestimmen, ob auf ein Datenstück zugegriffen werden muss, ohne die tatsächlichen Daten von einer Speichervorrichtung zu laden oder auf diese zuzugreifen.
  • Als weiteres Beispiel kann eine Metadatendatenbank 112 ein oder mehrere Anmeldedatenobjekte bzw. Anmeldeinformationsobjekte 115 speichern. Im Allgemeinen zeigt ein Anmeldedatenobjekt 115 eine oder mehrere Sicherheitsanmeldeinformationen an, die aus einem entfernten Anmeldeinformationsspeicher abgerufen werden sollen. Zum Beispiel unterhält der Anmeldeinformationsspeicheranbieter 106 mehrere entfernte Anmeldeinformationsspeicher 118-1 bis 118-N. Jeder der entfernten Anmeldeinformationsspeicher 118-1 bis 118-N kann mit einem Benutzerkonto assoziiert sein und kann verwendet werden, um Sicherheitsanmeldeinformationen zu speichern, die mit dem Benutzerkonto assoziiert sind. Ein Anmeldeinformationsobjekt 115 kann eine oder mehrere Sicherheitsanmeldeinformationen anzeigen, um durch den Compute-Service-Manager 108 aus einem der entfernten Anmeldeinformationsspeicher 118-1 bis 118-N abgerufen zu werden (z.B. zur Verwendung bei einem Zugreifen auf durch die Speicherplattform 104 gespeicherte Daten).
  • Der Compute-Service-Manager 108 ist weiterhin mit der Ausführungsplattform 110 gekoppelt, die mehrere Rechenressourcen bereitstellt, die verschiedene Datenspeicherungs- und Datenabrufaufgaben ausführen. Die Ausführungsplattform 110 ist mit einer Speicherplattform 104 der Cloud-Speicherplattform 104 gekoppelt. Die Speicherplattform 104 umfasst mehrere Datenspeichervorrichtungen 120-1 bis 120-N. Bei einigen Ausführungsformen sind die Datenspeichervorrichtungen 120-1 bis 120-N cloudbasierte Speichervorrichtungen, die an einem oder mehreren geografischen Standorten angeordnet sein. Zum Beispiel können die Datenspeichervorrichtungen 120-1 bis 120-N Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur sein. Die Datenspeichervorrichtungen 120-1 bis 120-N können Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speichercluster, Amazon S3™-Speichersysteme oder irgendeine andere Datenspeichertechnologie sein. Zusätzlich kann die Cloud-Speicherplattform 104 verteilte Dateisysteme (wie beispielsweise Hadoop Distributed File Systems (HDFS)), Objektspeichersysteme und dergleichen enthalten.
  • Wie es weiterhin gezeigt ist, enthält die Speicherplattform 104 einen Taktdienst 130, der kontaktiert werden kann, um eine Nummer bzw. Zahl zu holen, die größer ist als irgendeine zuvor zurückgegebene Nummer bzw. Zahl, wie z.B. eine solche, die mit der aktuellen Zeit korreliert. Der Taktdienst 130 wird hierin nachstehend in Bezug auf Ausführungsformen des betreffenden Systems weiter diskutiert.
  • Die Ausführungsplattform 110 umfasst eine Vielzahl von Rechenknoten. Eine Gruppe bzw. ein Satz von Prozessen auf einem Rechenknoten führt einen vom Compute-Service-Manager 108 kompilierten Abfrageplan aus. Der Satz von Prozessen kann folgendes umfassen: einen ersten Prozess, um den Abfrageplan auszuführen; einen zweiten Prozess, um Cache-Dateien unter Verwendung einer Am-längsten-nicht-verwendet-(LRU (= Least Recently Used)-)Regel zu überwachen und zu löschen und um einen Nicht-genügend-Arbeitsspeicher-(OOM (= Out Of Memory)-)Fehlerminderungsprozess zu implementieren; einen dritten Prozess, der Gesundheits- bzw. Zustandsinformationen aus Prozessprotokollen und -status extrahiert, um sie zum Compute-Service-Manager 108 zurückzusenden; einen vierten Prozess, um eine Kommunikation mit dem Compute-Service-Manager 108 nach einem Systemstart herzustellen bzw. einzurichten; und einen fünften Prozess, um die gesamte Kommunikation mit einem Compute-Cluster für einen durch den Compute-Service-Manager 108 bereitgestellten gegebenen Job abzuwickeln bzw. zu handhaben und um Informationen zurück zu dem Compute-Service-Manager 108 und anderen Rechenknoten der Ausführungsplattform 110 zu kommunizieren.
  • Bei einigen Ausführungsformen sind Kommunikationsverbindungen zwischen Elementen der Rechenumgebung 100 über ein oder mehrere Datenkommunikationsnetzwerke implementiert. Diese Datenkommunikationsnetzwerke können irgendein Kommunikationsprotokoll und irgendeine Art von Kommunikationsmedium verwenden. Bei einigen Ausführungsformen sind die Datenkommunikationsnetzwerke eine Kombination aus zwei oder mehr Datenkommunikationsnetzwerken (oder Unter- bzw. Teilnetzwerken), die miteinander gekoppelt sind. Bei alternativen Ausführungsformen werden diese Kommunikationsverbindungen unter Verwendung von irgendeinem Typ von Kommunikationsmedium und irgendeinem Kommunikationsprotokoll implementiert.
  • Der Compute-Service-Manager 108, die Metadatendatenbank(en) 112, die Ausführungsplattform 110 und die Speicherplattform 104 sind in 1 als einzelne diskrete Komponenten gezeigt. Allerdings kann alles von dem Compute-Service-Manager 108, der (den) Metadatendatenbank(en) 112, der Ausführungsplattform 110 und der Speicherplattform 104 als ein verteiltes System implementiert werden (z.B. verteilt über mehrere Systeme/Plattformen an mehreren geografischen Standorten). Zusätzlich kann alles von dem Compute-Service-Manager 108, der (den) Metadatendatenbank(en) 112, der Ausführungsplattform 110 und der Speicherplattform 104 (unabhängig voneinander) abhängig von Änderungen an den empfangenen Anforderungen und den sich ändernden Anforderungen bzw. Notwendigkeiten des netzwerkbasierten Data-Warehouse-Systems 102 (maßstäblich) vergrö-ßert oder verkleinert werden. Somit ist bei den beschriebenen Ausführungsformen das netzwerkbasierte Data-Warehouse-System 102 dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Datenverarbeitungsbedürfnissen gerecht zu werden.
  • Während eines typischen Betriebs bzw. einer typischen Operation verarbeitet das netzwerkbasierte Data-Warehouse-System 102 mehrere durch den Compute-Service-Manager 108 bestimmte Jobs. Diese Jobs werden vom Compute-Service-Manager 108 geplant und gemanagt, um zu bestimmen, wann und wie der Job auszuführen ist. Zum Beispiel kann der Compute-Service-Manager 108 den Job in mehrere diskrete Aufgaben (oder Transaktionen, wie es hierin weiter diskutiert ist) aufteilen und kann bestimmen, welche Daten nötig sind, um jede der mehreren diskreten Aufgaben auszuführen. Der Compute-Service-Manager 108 kann jede der mehreren diskreten Aufgaben einem oder mehreren Knoten der Ausführungsplattform 110 zuweisen, um die Aufgabe zu verarbeiten. Der Compute-Service-Manager 108 kann bestimmen, welche Daten nötig sind, um eine Aufgabe zu verarbeiten, und weiterhin bestimmen, welche Knoten innerhalb der Ausführungsplattform 110 am besten geeignet sind, um die Aufgabe zu verarbeiten. Einige Knoten können die Daten bereits zwischengespeichert haben, die nötig sind, um die Aufgabe zu verarbeiten, und können daher ein guter Kandidat zum Verarbeiten der Aufgabe sein. In einer Metadatendatenbank 112 gespeicherte Metadaten unterstützen den Compute-Service-Manager 108 beim Bestimmen, welche Knoten in der Ausführungsplattform 110 bereits wenigstens einen Teilbereich der Daten zwischengespeichert haben, die nötig sind, um die Aufgabe zu verarbeiten. Ein oder mehrere Knoten in der Ausführungsplattform 110 verarbeiten die Aufgabe unter Verwendung von durch den Knoten zwischengespeicherten Daten und, falls erforderlich, von aus der Cloud-Speicherplattform 104 abgerufenen Daten. Es ist wünschenswert, so viele Daten wie möglich aus Caches innerhalb der Ausführungsplattform 110 abzurufen, da die Abrufgeschwindigkeit typischerweise viel schneller ist als ein Abrufen von Daten aus der Cloud-Speicherplattform 104.
  • Wie es in 1 gezeigt ist, trennt die Computing- bzw. Rechenumgebung 100 die Ausführungsplattform 110 von der Speicherplattform 104. Bei dieser Anordnung arbeiten die Verarbeitungsressourcen und Cacheressourcen in der Ausführungsplattform 110 unabhängig von den Datenspeichervorrichtungen 124-1 bis 124-N in der Cloud-Speicherplattform 104. Somit sind die Computerressourcen und Cacheressourcen nicht auf spezifische Datenspeichervorrichtungen 124-1 bis 124-N beschränkt. Stattdessen können alle Computerressourcen und alle Cacheressourcen Daten von irgendeiner der Datenspeicherressourcen in der Cloud-Speicherplattform 104 abrufen und Daten dorthin speichern.
  • 2 ist ein Blockdiagramm, das Komponenten des Compute-Service-Managers 108 gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Wie es in 2 gezeigt ist, enthält der Compute-Service-Manager 108 einen Zugriffsmanager und ein Anmeldedaten- bzw. Anmeldeinformations-Managementsystem 204, die mit einer Zugriffsmetadatendatenbank 206 gekoppelt sind, die ein Beispiel für die Metadatendatenbank(en) 112 ist. Der Zugriffsmanager 202 handhabt Authentifizierungs- und Autorisierungsaufgaben für die hierin beschriebenen Systeme. Das Anmeldeinformations-Managementsystem 204 erleichtert eine Verwendung von entfernten gespeicherten Anmeldedaten bzw. Anmeldeinformationen (z.B. von in einem der entfernten Anmeldeinformationsspeicher 118-1 bis 118-N gespeicherten Anmeldeinformationen), um auf externe Ressourcen, wie beispielsweise Datenressourcen in einer entfernten Speichervorrichtung, zuzugreifen. Wie es hierin verwendet ist, können die entfernten Speichervorrichtungen auch als „persistente Speichervorrichtungen“ oder „gemeinsam genutzte bzw. geteilte Speichervorrichtungen“ bezeichnet sein. Zum Beispiel kann das Anmeldeinformations-Managementsystem 204 entfernte Anmeldeinformationsspeicherdefinitionen und Anmeldeinformationsobjekte (z.B. in der Zugriffsmetadatendatenbank 206) erstellen und unterhalten. Eine entfernte Anmeldeinformationsspeicherdefinition identifiziert einen entfernten Anmeldeinformationsspeicher (z.B. einen oder mehrere der entfernten Anmeldeinformationsspeicher 118-1 bis 118-N) und enthält Zugriffsinformationen, um auf Sicherheitsanmeldeinformationen aus dem entfernten Anmeldeinformationsspeicher zuzugreifen. Ein Anmeldeinformationsobjekt identifiziert eine oder mehrere Sicherheitsanmeldeinformationen unter Verwendung von nicht vertraulichen Informationen (z.B. Textzeichenfolgen bzw. -ketten), die zur Verwendung beim Zugreifen auf eine externe Ressource aus einem entfernten Anmeldeinformationsspeicher abgerufen werden sollen. Wenn eine Anforderung, die eine externe Ressource aufruft, zur Laufzeit bzw. Betriebszeit empfangen wird, verwenden das Anmeldeinformations-Managementsystem 204 und der Zugriffsmanager 202 Informationen, die in der Zugriffsmetadatendatenbank 206 gespeichert sind (z.B. ein Anmeldeinformationsobjekt und eine Anmeldeinformationsspeicherdefinition), um Sicherheitsanmeldeinformationen abzurufen, die verwendet werden, um auf die externe Ressource von einem entfernten Anmeldeinformationsspeicher aus zuzugreifen.
  • Ein Anforderungsverarbeitungsdienst bzw. -service 208 managt empfangene Datenspeicheranforderungen und Datenabrufanforderungen (z.B. Jobs, die an Datenbankdaten ausgeführt werden sollen). Zum Beispiel kann der Anforderungsverarbeitungsdienst 208 die Daten bestimmen, um eine empfangene Abfrage (z.B. eine Datenspeicheranforderung oder eine Datenabrufanforderung) zu verarbeiten. Die Daten können in einem Cache innerhalb der Ausführungsplattform 110 oder in einer Datenspeichervorrichtung in der Speicherplattform 104 gespeichert werden.
  • Ein Managementkonsolendienst 210 unterstützt einen Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager. Zusätzlich kann der Managementkonsolendienst 210 eine Anforderung empfangen, um einen Job auszuführen und um die Arbeitslast auf dem System zu überwachen.
  • Der Compute-Service-Manager 108 enthält auch einen Job-Compiler 212, einen Job-Optimierer 214 und einen Job-Ausführer 216. Der Job-Compiler 206 parst bzw. zerlegt bzw. analysiert einen Job in mehrere diskrete Aufgaben und erzeugt den Ausführungscode für jede der mehreren diskreten Aufgaben. Der Job-Optimierer 214 bestimmt das beste Verfahren zum Ausführen der mehreren diskreten Aufgaben basierend auf den Daten, die verarbeitet werden müssen. Der Job-Optimierer 214 handhabt auch verschiedene Datenbereinigungsoperationen und andere Datenoptimierungstechniken, um die Geschwindigkeit und Effizienz eines Ausführens des Jobs zu verbessern. Der Job-Ausführer 216 führt den Ausführungscode für aus einer Warteschlange empfangene oder durch den Compute-Service-Manager 108 bestimmte Jobs aus.
  • Ein Job-Planer und -Koordinator 218 sendet empfangene Jobs zu den geeigneten Diensten oder Systemen zur Kompilierung, Optimierung und Entsendung zur Ausführungsplattform 114. Zum Beispiel können Jobs priorisiert und dann in dieser priorisierten Reihenfolge verarbeitet werden. Bei einer Ausführungsform bestimmt der Job-Planer und -Koordinator 218 eine Priorität für interne Jobs, die vom Compute-Service-Manager 108 geplant sind, mit anderen Jobs „von außen“, wie beispielsweise Benutzerabfragen, die von anderen Systemen in der Datenbank (z.B. der Speicherplattform 104) geplant sein können, aber dieselben Verarbeitungsressourcen in der Ausführungsplattform 110 verwenden können. Bei einigen Ausführungsformen identifiziert der Job-Planer und -Koordinator 218 bestimmte Knoten in der Ausführungsplattform 110 oder ordnet sie zu, um bestimmte Aufgaben zu verarbeiten. Ein Manger eines virtuellen Lagers 220 managt die Operation bzw. den Betrieb mehrerer virtueller Lager, die in der Ausführungsplattform 110 implementiert sind. Zum Beispiel kann der Manager eines virtuellen Lagers 220 Abfragepläne zum Ausführen empfangener Abfragen erzeugen.
  • Zusätzlich enthält der Compute-Service-Manager 108 einen Konfigurations- und Metadaten-Manager 222, der die Information in Bezug auf die in den entfernten Datenspeichervorrichtungen und in den lokalen Puffern (d.h. den Puffern in der Ausführungsplattform 110) gespeicherten Daten managt. Der Konfigurations- und Metadaten-Manager 222 verwendet die Metadaten, um zu bestimmen, auf welche Datendateien zugegriffen werden muss, um Daten zur Verarbeitung einer bestimmten Aufgabe oder eines bestimmten Jobs wiederzugewinnen bzw. abzurufen. Ein Überwachungs- und Arbeitslast-Analysator 224 beaufsichtigt durch den Compute-Service-Manager 108 durchgeführte Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitslast) quer über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform 110. Der Überwachungs- und Arbeitslast-Analysator 224 verteilt auch Aufgaben neu, wie es nötig ist, basierend auf sich ändernden Arbeitslasten über dem gesamten netzwerkbasierten Data-Warehouse-System 102 und kann weiterhin Aufgaben basierend auf einer Abfragearbeitslast eines Benutzers (z.B. „von extern“) neu verteilen, die auch durch die Ausführungsplattform 110 verarbeitet werden kann. Der Konfigurations- und Metadaten-Manager 222 und der Überwachungs- und Arbeitslast-Analysator 224 sind mit einer Datenspeichervorrichtung 226 gekoppelt. Die Datenspeichervorrichtung 220 in 2 stellt irgendeine Datenspeichervorrichtung innerhalb des Data-Warehouse-Systems 102 dar. Zum Beispiel kann die Datenspeichervorrichtung 226 Puffer in der Ausführungsplattform 110, Speichervorrichtungen in der Speicherplattform 104 oder irgendeine andere Speichervorrichtung darstellen.
  • Wie es bei Ausführungsformen hierin beschrieben ist, validiert der Compute-Service-Manager 108 die gesamte Kommunikation von einer Ausführungsplattform (z.B. der Ausführungsplattform 110), um zu validieren, dass der Inhalt und der Kontext dieser Kommunikation mit der (den) Aufgabe(n) konsistent sind, von der (denen) bekannt ist, dass sie der Ausführungsplattform zugewiesen ist (sind). Zum Beispiel sollte nicht zugelassen werden, dass eine Instanz der Ausführungsplattform, die eine Abfrage A ausführt, einen Zugriff auf eine Datenquelle D (z.B. die Datenspeichervorrichtung 226) anfordert, die für die Abfrage A nicht relevant ist. Auf ähnliche Weise kann es sein, dass ein gegebener Ausführungsknoten (z.B. ein Ausführungsknoten 302-1) mit einem anderen Ausführungsknoten (z.B. einem Ausführungsknoten 302-2) kommunizieren muss, und es sollte nicht zugelassen werden, dass er mit einem dritten Ausführungsknoten (z.B. einem Ausführungsknoten 312-1) kommuniziert, und jede solche unzulässige Kommunikation kann aufgezeichnet werden (z.B. in einem Protokoll oder an einem anderen Ort). Ebenso sind die auf einem gegebenen Ausführungsknoten gespeicherten Informationen auf Daten beschränkt, die für die aktuelle Abfrage relevant sind, und irgendwelche anderen Daten sind unbrauchbar, was durch Zerstörung oder Verschlüsselung, wenn der Schlüssel nicht verfügbar ist, so gemacht wird.
  • 3 ist ein Blockdiagramm, das Komponenten der Ausführungsplattform 110 gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Wie es in 3 gezeigt ist, enthält die Ausführungsplattform 110 mehrere virtuelle Lager, die ein virtuelles Lager 1, ein virtuelles Lager 2 und ein virtuelles Lager n enthalten. Jedes virtuelle Lager enthält mehrere Ausführungsknoten, die jeweils einen Datencache und einen Prozessor enthalten. Die virtuellen Lager können mehrere Aufgaben parallel ausführen, indem sie die mehreren Ausführungsknoten verwenden. Wie es hierin diskutiert ist, kann die Ausführungsplattform 110 in Echtzeit basierend auf den aktuellen Verarbeitungsanforderungen der Systeme und Benutzer neue virtuelle Lager hinzufügen und vorhandene virtuelle Lager fallenlassen. Diese Flexibilität lässt zu, dass die Ausführungsplattform 110 schnell große Mengen an Computerressourcen nutzt, wenn es nötig ist, ohne dazu gezwungen zu sein, fortgesetzt für diese Computerressourcen zu bezahlen, wenn sie nicht mehr benötigt werden. Alle virtuellen Lager können auf Daten von irgendeiner Datenspeichervorrichtung (z.B. irgendeiner Speichervorrichtung in der Cloud-Speicherplattform 104) zugreifen.
  • Obwohl jedes in 3 gezeigte virtuelle Lager drei Ausführungsknoten enthält, kann ein bestimmtes virtuelles Lager irgendeine Anzahl von Ausführungsknoten enthalten. Weiterhin ist die Anzahl von Ausführungsknoten in einem virtuellen Lager dynamisch, so dass neue Ausführungsknoten erstellt werden, wenn zusätzlicher Bedarf vorhanden ist, und vorhandene bzw. existierende Ausführungsknoten gelöscht werden, wenn sie nicht mehr benötigt werden.
  • Jedes virtuelle Lager ist in der Lage, auf irgendeine der in 1 gezeigten Datenspeichervorrichtungen 120-1 bis 120-N zuzugreifen. Somit sind die virtuellen Lager nicht notwendigerweise einer spezifischen Datenspeichervorrichtung 120-1 bis 120-N zugeordnet und können stattdessen auf Daten von irgendeiner der Datenspeichervorrichtungen 120-1 bis 120-N innerhalb der Cloud-Speicherplattform 104 zugreifen. Gleichermaßen kann jeder der in 3 gezeigten Ausführungsknoten auf Daten von irgendeiner der Datenspeichervorrichtungen 120-1 bis 120-N zugreifen. Bei einigen Ausführungsformen kann ein bestimmtes virtuelles Lager oder ein bestimmter Ausführungsknoten vorübergehend einer spezifischen Datenspeichervorrichtung zugeordnet sein, aber das virtuelle Lager bzw. Warehouse oder der Ausführungsknoten kann später auf Daten von irgendeiner anderen Datenspeichervorrichtung zugreifen.
  • Beim Beispiel von 3 enthält das virtuelle Lager 1 drei Ausführungsknoten 302-1, 302-2 und 302-n. Der Ausführungsknoten 302-1 enthält einen Cache 304-1 und einen Prozessor 306-1. Der Ausführungsknoten 302-2 enthält einen Cache 304-2 und einen Prozessor 306-2. Der Ausführungsknoten 302-n enthält einen Cache 304-n und einen Prozessor 306-n. Jeder Ausführungsknoten 302-1, 302-2 und 302-n ist mit einer Verarbeitung von einer oder mehreren Datenspeicherungs- und/oder Datenabrufaufgaben assoziiert. Zum Beispiel kann ein virtuelles Lager Datenspeicherungs- und Datenabrufaufgaben handhaben, die mit einem internen Dienst assoziiert sind, wie beispielsweise einem Clusterbildungsdienst, einem Auffrischungsdienst für eine materialisierte Ansicht, einem Dateikompaktierungsdienst, einem Speicherprozedurdienst oder einem Datei-Upgradedienst. Bei anderen Implementierungen kann ein bestimmtes virtuelles Lager Datenspeicherungs- und Datenabrufaufgaben handhaben, die mit einem bestimmten Datenspeichersystem oder einer bestimmten Datenkategorie assoziiert sind.
  • Ähnlich wie beim oben diskutierten virtuellen Lager 1 enthält das virtuelle Lager 2 drei Ausführungsknoten 312-1, 312-2 und 312-n. Der Ausführungsknoten 312-1 enthält einen Cache 314-1 und einen Prozessor 316-1. Der Ausführungsknoten 312-2 enthält einen Cache 314-2 und einen Prozessor 316-2. Der Ausführungsknoten 312-n enthält einen Cache 314-n und einen Prozessor 316-n. Zusätzlich enthält das virtuelle Lager 3 drei Ausführungsknoten 322-1, 322-2 und 322-n. Der Ausführungsknoten 322-1 enthält einen Cache 324-1 und einen Prozessor 326-1. Der Ausführungsknoten 322-2 enthält einen Cache 324-2 und einen Prozessor 326-2. Der Ausführungsknoten 322-n enthält einen Cache 324-n und einen Prozessor 326-n.
  • Bei einigen Ausführungsformen sind die in 3 gezeigten Ausführungsknoten zustandslos in Bezug auf die Daten, die die Ausführungsknoten im Cache speichern bzw. zwischenspeichern. Zum Beispiel speichern diese Ausführungsknoten Zustandsinformation über den Ausführungsknoten oder die Daten, die von einem bestimmten Ausführungsknoten zwischengespeichert werden, nicht oder halten sie nicht auf andere Weise. Somit kann im Fall eines Fehlers bzw. Ausfalls eines Ausführungsknotens der fehlerhafte bzw. ausgefallene Knoten transparent durch einen anderen Knoten ersetzt werden. Da es keine Zustandsinformation gibt, die mit dem fehlerhaften Ausführungsknoten assoziiert ist, kann der neue (Ersatz-) Ausführungsknoten den ausgefallenen Knoten auf einfache Weise ersetzen, ohne sich Gedanken über eine Neuerstellung eines bestimmten Zustands machen zu müssen.
  • Obwohl die in 3 gezeigten Ausführungsknoten jeweils einen Datencache und einen Prozessor enthalten, können alternative Ausführungsformen Ausführungsknoten enthalten, die irgendeine Anzahl von Prozessoren und irgendeine Anzahl von Caches enthalten. Zusätzlich können die Caches bezüglich der Größe zwischen den unterschiedlichen Ausführungsknoten variieren. Die in 3 gezeigten Caches speichern im lokalen Ausführungsknoten Daten, die von einer oder mehreren Datenspeichervorrichtungen in der Cloud-Speicherplattform 104 wiedergewonnen bzw. abgerufen wurden. Somit reduzieren oder eliminieren die Caches die Engpassprobleme, die in Plattformen auftreten, die konsistent Daten von entfernten Speichersystemen abrufen. Anstelle eines wiederholten Zugreifens auf Daten von den entfernten Speichervorrichtungen greifen die hierin beschriebenen Systeme und Verfahren auf Daten von den Caches in den Ausführungsknoten zu, was signifikant schneller ist und das oben diskutierte Engpassproblem vermeidet. Bei einigen Ausführungsformen sind die Caches unter Verwendung von Hochgeschwindigkeits-Speichervorrichtungen implementiert, die einen schnellen Zugriff auf die im Cache gespeicherten Daten bereitstellen. Jeder Cache kann Daten von irgendeiner der Speichervorrichtungen in der Cloud-Speicherplattform 104 speichern.
  • Weiterhin können die Cacheressourcen und Computerressourcen zwischen unterschiedlichen Ausführungsknoten variieren. Zum Beispiel kann ein Ausführungsknoten signifikante Computerressourcen und minimale Cacheressourcen enthalten, was den Ausführungsknoten für Aufgaben nützlich macht, die signifikante Computerressourcen erfordern. Ein anderer Ausführungsknoten kann signifikante Cacheressourcen und minimale Computerressourcen enthalten, was diesen Ausführungsknoten für Aufgaben nützlich macht, die das Zwischenspeichern großer Datenmengen erfordern. Ein noch weiterer Ausführungsknoten kann Cacheressourcen enthalten, die schnellere Eingabe-Ausgabe-Operationen bereitstellen, die für Aufgaben nützlich sind, die ein schnelles Scannen großer Datenmengen erfordern. Bei einigen Ausführungsformen werden die Cacheressourcen und Computerressourcen, die mit einem bestimmten Ausführungsknoten assoziiert sind, bestimmt, wenn der Ausführungsknoten erstellt wird, und zwar basierend auf den erwarteten Aufgaben, die von dem Ausführungsknoten ausgeführt werden sollen.
  • Zusätzlich können sich die Cache- und Computerressourcen, die mit einem bestimmten Ausführungsknoten assoziiert sind, im Laufe der Zeit basierend auf sich ändernden vom Ausführungsknoten durchgeführten Aufgaben ändern. Einem Ausführungsknoten können zum Beispiel mehr Verarbeitungsressourcen zugewiesen werden, wenn die vom Ausführungsknoten ausgeführten Aufgaben prozessorintensiver werden. Gleichermaßen können einem Ausführungsknoten mehr Cacheressourcen zugewiesen werden, wenn die vom Ausführungsknoten ausgeführten Aufgaben eine größere Cache-Kapazität erfordern.
  • Obwohl die virtuellen Lager 1, 2 und n mit derselben Ausführungsplattform 110 assoziiert sind, können die virtuellen Lager unter Verwendung von mehreren Computersystemen an mehreren geografischen Standorten implementiert werden. Zum Beispiel kann das virtuelle Lager 1 durch ein Computersystem an einem ersten geografischen Standort implementiert werden, während die virtuellen Lager 2 und n durch ein anderes Computersystem an einem zweiten geografischen Standort implementiert werden. Bei einigen Ausführungsformen sind diese unterschiedlichen Computersysteme cloudbasierte Computersysteme, die durch ein oder mehrere unterschiedliche Unternehmen unterhalten werden.
  • Zusätzlich ist jedes virtuelle Lager in 3 derart gezeigt, dass es mehrere Ausführungsknoten hat. Die mit jedem virtuellen Lager assoziierten mehreren Ausführungsknoten können unter Verwendung mehrerer Computersysteme an mehreren geografischen Standorten implementiert werden. Zum Beispiel implementiert eine Instanz des virtuellen Lagers 1 die Ausführungsknoten 302-1 und 302-2 auf einer Computerplattform an einem geografischen Standort und implementiert den Ausführungsknoten 302-n auf einer anderen Computerplattform an einem anderen geografischen Standort. Ein Auswählen bestimmter Computersysteme, um einen Ausführungsknoten zu implementieren, kann von verschiedenen Faktoren abhängen, wie beispielsweise dem Ausmaß von Ressourcen, die für einen bestimmten Ausführungsknoten nötig sind (z.B. Verarbeitungsressourcenanforderungen und Cacheanforderungen), den Ressourcen, die bei bestimmten Computersystemen verfügbar sind, Kommunikationsfähigkeiten von Netzwerken innerhalb eines geografischen Standorts oder zwischen geografischen Standorten und welche Computersysteme bereits andere Ausführungsknoten im virtuellen Lager implementieren.
  • Die Ausführungsplattform 110 ist auch fehlertolerant. Wenn zum Beispiel ein virtuelles Lager ausfällt, wird dieses virtuelle Lager schnell durch ein anderes virtuelles Lager an einem anderen geografischen Standort ersetzt.
  • Eine bestimmte Ausführungsplattform 110 kann irgendeine Anzahl von virtuellen Lagern enthalten. Zusätzlich ist die Anzahl von virtuellen Lagern in einer bestimmten Ausführungsplattform dynamisch, so dass neue virtuelle Lager erstellt werden, wenn zusätzliche Verarbeitungs- und/oder Cachespeicherungs- bzw. Zwischenspeicherungs-Ressourcen nötig sind. Gleichermaßen können existierende virtuelle Lager gelöscht werden, wenn die mit dem virtuellen Lager assoziierten Ressourcen nicht mehr nötig sind.
  • Bei einigen Ausführungsformen können die virtuellen Lager an denselben Daten in der Cloud-Speicherplattform 104 arbeiten, aber jedes virtuelle Lager hat seine eigenen Ausführungsknoten mit unabhängigen Verarbeitungs- und Cachespeicherungs- bzw. Zwischenspeicherungs-Ressourcen. Diese Konfiguration lässt zu, dass Anforderungen an unterschiedlichen virtuellen Lagern unabhängig und ohne Interferenz zwischen den Anforderungen verarbeitet werden. Diese unabhängige Verarbeitung, kombiniert mit der Fähigkeit, virtuelle Lager dynamisch hinzuzufügen und zu entfernen, unterstützt das Hinzufügen neuer Verarbeitungskapazität für neue Benutzer, ohne die von den existierenden Benutzern beobachtete Leistungsfähigkeit zu beeinflussen bzw. zu beeinträchtigen.
  • 4 ist eine Rechenumgebung 400, die konzeptmäßig eine beispielhafte Softwarearchitektur zum Managen und Ausführen gleichzeitiger Transaktionen auf einem Datenbanksystem (z.B. dem netzwerkbasierten Data-Warehouse-System 102), die von einem gegebenen Ausführungsknoten der Ausführungsplattform 110 ausgeführt werden kann, gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Bei einer Ausführungsform wird ein Prozessablauf von einem Transaktionsmanager ausgeführt, der konfiguriert ist, um Transaktionen zu managen und auszuführen, wie es hierin weiter beschrieben ist.
  • Wie es gezeigt ist, ist der Transaktionsmanager 440 im Compute-Service-Manager 108 enthalten. Der Transaktionsmanager 440 empfängt einen Job 410, der in eine oder mehrere diskrete Transaktionen 420-425, z.B. Transaktion 0, Transaktion 1, Transaktion 2, Transaktion 3 und so weiter aufgeteilt, werden kann, durch eine Transaktion (Transaktionen). Bei einer Ausführungsform enthält jede Transaktion eine oder mehrere Aufgaben oder Operationen (z.B. Leseoperation, Schreiboperation, Datenbankanweisung bzw. -befehl, benutzerdefinierte Funktion und dergleichen), die ausgeführt werden müssen. Der Transaktionsmanager 440 empfängt den Job bei 450 und bestimmt Transaktionen bei 452, die ausgeführt werden können, um den Job 410 auszuführen. Der Transaktionsmanager 440 ist so konfiguriert, dass er die eine oder die mehreren diskreten Transaktionen, wie Transaktion 0, Transaktion 1, Transaktion 2, Transaktion 3 und so weiter, basierend auf anwendbaren Regeln und/oder Parametern bestimmt. Der Transaktionsmanager 440 ordnet Transaktionen bei 454 zu.
  • Wie es weiter gezeigt ist, ist der Transaktionsmanager 440 so konfiguriert, dass er gleichzeitig mehrere Jobs verarbeitet, die von der Ausführungsplattform 110 ausgeführt werden können. Bei einem Beispiel kann der Transaktionsmanager 440 einen zweiten Job 430 oder einen dritten Job 435 empfangen, von denen jeder jeweils entsprechende diskrete Transaktionen enthält, um auf der Ausführungsplattform 110 durchgeführt zu werden. Jede der Transaktionen kann gleichzeitig von der Ausführungsplattform 110 ausgeführt werden, in der unterschiedliche Operationen durchgeführt werden (z.B. werden jeweilige Leseoperationen oder Schreiboperationen von jeder der Transaktionen durch die Ausführungsplattform 110 ausgeführt).
  • Bei einer Implementierung wird der Job 410, einschließlich der jeweiligen Transaktionen darin, durch den Transaktionsmanager 440 ausgeführt, der die Verbindlichkeiten eines Abfragemanagers (z.B. ein Verarbeiten von Abfrageanweisungen und -operationen und dergleichen) durchführen kann. Wie es gezeigt ist, kann der Transaktionsmanager 440 mehrere Threads haben, die zum Beispiel Transaktionsmanager-Threads 442a, 442b, 442c und so weiter enthalten. Der Transaktionsmanager 440 kann den Job 410, einschließlich der mehreren diskreten Transaktionen, einem bestimmten virtuellen Lager der Ausführungsplattform 110 zuweisen. Basierend auf dieser Zuweisung kann der Transaktionsmanager 440 den Job 410, einschließlich der mehreren diskreten Transaktionen, zur Ausführung zum zugewiesenen virtuellen Lager senden. Alternativ kann der Transaktionsmanager 440 eine Teilmenge bzw. Untergruppe der Transaktionen, die im Job 410 enthalten sind, zur Ausführung durch die Ausführungsplattform 110 senden.
  • Bei einer Ausführungsform kann, wie es hierin weiter beschrieben ist, der Transaktionsmanager 440 Operationen ausführen, um Transaktionen (z.B. OLTP) zu verarbeiten, die gleichzeitig ausführen können, während Konflikte behandelt und ein Verhungern bzw. eine Verknappung von Ressourcen vermieden wird. Weiterhin behandelt der Transaktionsmanager 440, wie es hierin weiter beschrieben ist, Konflikte zwischen mehreren Transaktionen und Parallelitätsprobleme, die entstehen können, wenn mehrere Transaktionen parallel auf der Ausführungsplattform 110 ausführen. Wie es weiterhin gezeigt ist, kommuniziert die Ausführungsplattform 110 mit der Speicherplattform 104, die eine verteilte Datenbank (z.B. FoundationDB und dergleichen) bereitstellt, wo Daten in Verbindung mit einem Durchführen der Transaktionen gelesen und geschrieben werden können.
  • Bei einer Ausführungsform plant und managt der Transaktionsmanager 440 die Ausführung von Transaktionen im Namen eines Clientkontos bzw. Kundenkontos. Der Transaktionsmanager 440 kann jede beliebige SQL-Abfrage planen, die in einer gegebenen Transaktion enthalten ist. Der Transaktionsmanager 440 kann eine Rolle annehmen, um den Job 410 so zu planen, als ob es sich um das Clientkonto und nicht um ein internes Konto oder ein anderes spezielles Konto handelt. Der Transaktionsmanager 440 kann die Rolle von zum Beispiel einem Kontoadministrator oder eine Rolle mit dem (kleinsten) Umfang, der zum Ausführen des Jobs 410 erforderlich ist, verkörpern. Bei einer Ausführungsform verkörpert der Transaktionsmanager 440 die Rolle, die das Objekt besitzt, das das Ziel des Jobs 410 ist (z.B. ist für ein Cluster die Tabelle, die geclustert bzw. gruppiert wird, das Ziel).
  • Bei einer Ausführungsform bestimmt der Transaktionsmanager 440 Transaktionen bei 452 und weist Transaktionen bei 454 zu, die ausgeführt werden müssen, um den Job 410 vollständig auszuführen. Bei einer Ausführungsform weist der Transaktionsmanager 440 einer beliebigen Anzahl von der einen oder den mehreren diskreten Transaktionen, wo es anwendbar ist, Reihenfolgenbeschränkungen zu. Abhängig von den Beschränkungen des Jobs 410 kann der Transaktionsmanager 440 bestimmen, dass eine oder mehrere von mehreren diskreten Transaktionen serialisiert und in einer bestimmten Reihenfolge ausgeführt werden muss oder müssen.
  • Bei einer Ausführungsform erzeugt der Transaktionsmanager 440 einen Bericht, der anzeigt, wann eine Ausführung des Jobs 410 geplant ist und wie viel Rechenressourcen schätzungsweise bei einer Ausführung des Jobs 410 gebunden werden. Der Transaktionsmanager 440 kann ein Clientkonto alarmieren, wenn der Job 410 ausgeführt wird.
  • Die Fachgebietstechnologie stellt Gleichzeitigkeits- bzw. Parallelitätssteuerung und Isolation zum Ausführen von Transaktionen (z.B. eine Reihe von SQL-Anweisungen bzw. -Befehlen innerhalb einer SQL-Transaktion) gegenüber einem linearisierbaren Speicher (z.B. einem linearisierbaren Schlüsselwert-Speicher) zur Verfügung. Eine Transaktion, auf die hierin Bezug genommen wird, enthält eine Gruppe von atomar ausgeführten Operationen. Bei einem Beispiel können solche Transaktionen Lese- und Schreiboperationen enthalten, können aber auch Operationen wie beispielsweise Inkrementieren, Dekrementieren, Vergleichen und Tauschen und dergleichen enthalten. Weiterhin wird eingesehen werden, dass ein linearisierbarer Speicher irgendeinen Typ von verteilter Datenbank (z.B. Apache HBase) enthalten kann.
  • Die folgende Diskussion bezieht sich auf Transaktionen in einem gegebenen verteilten Datenbanksystem. Bei einem Beispiel verwendet der Transaktionsmanager 440 einen linearisierbaren Speicher, der durch die Speicherplattform 104 bereitgestellt wird, zum Managen und Verarbeiten von Transaktionen, wie es hierin beschrieben ist. Bei einer Ausführungsform implementiert der Transaktionsmanager 440 ein auf ein Lesen festgelegtes Modell zum Durchführen von Transaktionen. Wie es hierin bezeichnet ist, kann sich ein auf ein Lesen festgelegtes Modell auf ein Modell beziehen, das sicherstellt, dass alle in einer gegebenen Transaktion durchgeführten Leseoperationen eine konsistente Momentaufnahme der Datenbank sehen (z.B. ein Lesen eines letzten Satzes bzw. einer letzten Gruppe von festgelegten Werten, die zu Beginn der Leseoperation existierten), und die Transaktion selbst nur dann erfolgreich festlegt, wenn keine Aktualisierungen, die die Transaktion vorgenommen hat, in Schreiben-Schreiben-Konflikten mit irgendwelchen gleichzeitigen Transaktionen resultieren.
  • Wie es hierin weiter diskutiert ist, implementiert der Transaktionsmanager 440 eine zweistufige Transaktionshierarchie, wobei eine Transaktion der obersten Ebene einer SQL-Transaktion und eine geschachtelte bzw. verschachtelte Transaktion einer SQL-Anweisung innerhalb der übergeordneten SQL-Transaktion entspricht. Eine gegebene geschachtelte Transaktion kann Operationen durchführen, wie beispielsweise Lese- und Schreiboperationen, und kann ein Zurückgehen bzw. eine Wiederholung durchführen und eine Ausführung null Mal oder mehrmals neu starten, bevor sie erfolgreich ist. Auf eine Transaktionsfestlegung hin können Schreiboperationen sichtbar werden und können Schreibsperren, die von jeder enthaltenen Anweisung gehalten werden, aufgehoben bzw. freigegeben werden.
  • Wie es zuvor erwähnt ist, stellt das Fachgebietssystem Parallelitätssteuerung und Isolation zum Ausführen einer Reihe von SQL-Anweisungen innerhalb einer SQL-Transaktion gegenüber einem linearisierbaren Speicher zur Verfügung. Wie es hierin weiter diskutiert ist, ist ein Transaktionsmanager (z.B. der Transaktionsmanager 440) so konfiguriert, dass er einen Parallelitätssteuerungsmechanismus bereitstellt, der als eine Kombination aus einer Parallelitätssteuerung mit mehreren Versionen (MVCC (= Multi-Version Concurrency Control)) für Leseoperationen und Sperren für Schreiboperationen verstanden werden kann. Das Fachgebietssystem stellt Techniken für eine Isolation für ein festgelegtes Lesen zur Verfügung, wobei jede Anweisung gegenüber einer anderen Momentaufnahme der Datenbank (z.B. der Speicherplattform 104) ausführen kann, wobei Schreibsperren bis zur Transaktionsfestlegung gehalten werden.
  • Bei einer Ausführungsform ermöglicht der linearisierbare Speicher, wie er hierin beschrieben ist, jeder Operation, zwischen Aufruf und Antwort atomar auszuführen. Als Beispiel stellt ein solcher linearisierbarer Schlüsselwert-Speicher sicher, dass Operationen auf atomare Weise konsistent mit einer „Echtzeit“-Reihenfolge von diesen Operationen ausführen, z.B. sollte dann, wenn eine Operation A endet, bevor eine Operation B beginnt, die Operation B nach der Operation A wirksam werden. Im Kontext mit einer Datenbank muss eine erste Schreiboperation zu einer Zeile in der Tabelle vor einer zweiten Schreib- oder Leseoperation zu derselben Zeile in der Tabelle wirksam werden, wenn die zweite Operation ausgegeben wurde, nachdem die ersten endete.
  • Die hierin beschriebenen Beispiele beziehen sich auf einen linearisierbaren Speicher, wie beispielsweise eine linearisierbare Datenbank, die zum Beispiel NoSQL-Systeme und dergleichen enthält. Eine gegebene NoSQL-Datenbank bezieht sich auf eine Datenbank, die Daten in einem anderen Format als einem tabellarischen Format speichert und Daten anders als in relationalen Tabellen speichern kann. Weiterhin ist Übers Schemaless ein Beispiel für ein Aufbauen eines linearisierbaren Schlüsselwert-Speichers über eine „Schlüssel“- und eine „Wert“-Spalte in einer relationalen Tabelle. Andere Beispiele für linearisierbare Datenbanken sind: HBase, RocksDB, TiKV, Redis, Etcd.
  • Einige Beispiele für Optimierungen, die von dem Fachgebietssystem bereitgestellt werden, enthalten ein Verwenden eingeschränkter Transaktionsfähigkeiten, die von einigen Ausführungsformen der Speicherplattform 104, wie z.B. FoundationDB, angeboten werden, die genutzt werden können, um eine effizientere Transaktionsimplementierung zu ermöglichen. Zum Beispiel wird in einem Schreib-(/Sperr-/Lösch-)protokoll eine Schreiboperation durchgeführt, und dann wird eine Leseoperation durchgeführt, um zu überprüfen, ob (1) eine Schreiboperation vor dem Senden der Schreibanforderung stattgefunden hat, (2) eine andere Schreiboperation gleichzeitig mit der Schreiboperation gesendet wurde, die zuvor serialisiert wurde. Das folgende Beispiel stellt das oben Gesagte dar:
    • • T1 startet eine Anweisung S1
    • • S1 startet eine FoundationDB-Transaktion und verwendet ihre Leseversion als Lesezeitstempel
    • • S1 wünscht, Objekt X zu schreiben, so dass sie zuerst Objekt X ab dem Lesezeitstempel liest
    • • Wenn keine Konflikte gefunden werden, schreibt S1 X unter Verwendung einer Operation mit Zeitstempel, um den Festlegungs-Zeitstempel im Schlüssel einzubetten und unter Einstellung von IsCommitEmbedded (ist festlegungseingebettet).
    • • S1 stellt einen Lesekonfliktbereich bei der FoundationDB-Transaktion für alle Schlüssel mit dem Präfix X ein
    • • S1 schreibt einen Transaktionsstatuseintrag für ID, während er direkt auf festgelegt eingestellt wird.
    • • T1 legt die FoundationDB-Transaktion fest.
    • • Wenn sich die Transaktion festlegt, dann gab es keine gleichzeitigen Konflikt-Transaktionen.
    • • Wenn die Transaktion abgebrochen wird, gab es eine Gleichzeitigkeitskonflikt-Transaktion für eines von dem Schreiben, welches durchgeführt wurde. Weder eines von dem Schreiben von S1, noch der Transaktionsstatuseintrag werden beibehalten werden. S1 muss nun im langsamen Pfad neu gestartet werden.
  • Bei einem Beispiel bezieht sich eine „Lese-Version“ auf eine „Version“ oder einen Zustand der Datenbank, die oder der dem entspricht, wann eine letzte Operation erfolgreich zur Datenbank übergeben bzw. festgelegt wurde.
  • Das Folgende bezieht sich auf eine Diskussion von strenger Serialisierbarkeit. Während die Linearisierbarkeit ein „Echtzeit“-Ordnungs- und Atomaritätsversprechen über einzelne Operationen macht, macht die strenge Serialisierbarkeit ein „Echtzeit“-Ordnungs- und Atomaritätsversprechen über Gruppen von Operationen. Bei einem Beispiel wird die Gruppe von Operationen im Laufe der Zeit inkrementell übermittelt, wobei ein Terminal- bzw. Endgerätebefehl „commit“ bzw. „Festlegen“ ausgegeben wird. Die streng serialisierbare Speicherplattform kann Techniken wie beispielsweise einen pessimistischen sperrbasierten Ausschluss oder eine optimistische Validierungsphase verwenden, um diese Funktionalität freizugeben bzw. zu ermöglichen. Bei diesem Beispiel wird die Gruppe von Operationen als Transaktion bezeichnet, wie es hierin erwähnt ist. Das Fachgebietssystem kann der Transaktion Einschränkungen auferlegen, wie beispielsweise bezüglich der Anzahl, der Größe oder der Dauer der Operationen, und Transaktionen immer ablehnen, die diese Grenzen überschreiten.
  • Bei einer Ausführungsform können Leseoperationen auf die folgende Weise optimiert werden. Beim Lesen mit einem gegebenen Lesezeitstempel ist es möglicherweise nicht möglich, dass irgendeine Transaktion, die nach dem Lesezeitstempel startete, sich vor dem Lesezeitstempel festlegt. Wenn also die Transaktions-ID so eingestellt ist, dass sie dieselbe wie der Lesezeitstempel der ersten Anweisung ist, kann das Fachgebietssystem anstelle von [X.0, X.inf] [X.0, X.readTimestamp] lesen. Folglich kann dieser Ansatz Leseoperationen für alte oder häufig geschriebene Daten effizienter machen.
  • Bei einer Ausführungsform implementiert das Fachgebietssystem eine zweistufige Transaktionshierarchie, wobei die Transaktion der obersten Ebene einer SQL-Transaktion entspricht und die geschachtelte bzw. verschachtelte Transaktion (als „StatementContext“ bzw. „Anweisungskontext“ bezeichnet) einer SQL-Anweisung innerhalb der übergeordneten SQL-Transaktion entspricht. Ein gegebener StatementContext bzw. Anweisungskontext führt Lese- und Schreiboperationen durch und kann angewiesen werden, eine Wiederholung bzw. ein Zurückgehen durchzuführen und eine Ausführung null Mal oder mehrmals neu zu starten, bevor er erfolgreich ist. Bei einem Beispiel steuern Transaktionen die kollektive Sichtbarkeit aller Schreiboperationen aus erfolgreichen Anweisungen. Auf ein Festlegen einer Transaktion hin werden alle Schreiboperationen sichtbar und werden alle von jeder enthaltenen Anweisung gehaltenen Schreibsperren aufgehoben bzw. freigegeben.
  • Bei einer Ausführungsform ist jeder Objektschlüssel mit einem Stempel assoziiert, der einen einzelnen Ausführungsversuch einer Anweisung eindeutig identifiziert, was durch Anhängen eines dreiteiligen Tupels von (Transaktions-ID, Anweisungsnummer, Neustartzähler) erfolgen kann. Die Komponente höherer Ordnung ist der Transaktionsidentifizierer, der der Transaktion auf SQL-Ebene zugewiesen ist. Die Anweisungsnummer identifiziert die SQL-Anweisung innerhalb des BEGINN/FESTLEGUNG-Blocks auf SQL-Ebene. Der Neustartzähler verfolgt, welcher Neustartversuch der Anweisung diese Schreiboperationen erzeugte. Ein Anweisungskontext wird mit diesem Stempel instanziiert und wendet ihn auf das gesamte über die Anweisungskontext-Instanz durchgeführte Schreiben an.
  • Ein Stempeln von Schlüsseln auf diese Weise hat eine Anzahl von wünschenswerten Eigenschaften. Erstens gilt dann, wenn key1 < key2, key1.suffix1 < key2.suffix2, und zwar unabhängig von den Werten von suffix1 und suffix2. Wenn key1==key2, dann erlaubt uns die Transaktions-ID-Komponente vom Suffix, den Festlegungs-Status des Objekts aufzulösen, um seine Sichtbarkeit für die Anweisung zu bestimmen. Wenn transactionlD1 == transactionlD2 gilt, lässt Anweisungsnummer zu, dass Anweisungen durch vorherige Anweisungen innerhalb derselben Transaktion durchgeführtes Schreiben sehen. Die Neustartzähler-Komponente vom Suffix ermöglicht es dem System, veraltete Versionen des Objekts zu erkennen und zu löschen, die zurückgelassen worden waren, wenn eine Anweisung neu gestartet werden muss.
  • Auf ähnliche Weise ist jeder Ausführung einer Anweisung ein dreiteiligen Identifizierer zugeteilt, der aus dem Lesezeitstempel (RTS (= readTimestamp)) der Anweisung und den aktuellen Werten von Anweisungsnummer (SN (= statement-Number)) und Neustartzähler (RC (= restartCount)) besteht. Dieser Ansatz stellt sicher, dass jede Anweisung, die Teil der Ausführung einer SQL-Anweisung (oder allgemeiner einer SQL-Transaktion) ist, entweder Daten sieht, die festgelegt sind, bevor die SQL-Anweisung startete, oder Daten, die von der Transaktion selbst geschrieben oder aktualisiert sind.
  • Bei einer Ausführungsform verwendet der Transaktionsmanager eine Transaktionsstatustabelle (TST), um festgeschriebene bzw. festgelegte und abgebrochene Transaktionen zu verfolgen. Die TST ist eine persistente Hashtabelle, die die Transaktions-ID ihren Metadaten zuordnet, vor allem einer Liste von abgeschlossenen Anweisungsnummern und ihrem schließlichen Neustartzähler und dem Festlegungs-Ergebnis einschließlich des Festlegungs-Zeitstempels (CTS (= Commit TimeStamp)) der Transaktion. Transaktionen, die in Bearbeitung sind, sind in der Transaktionsstatustabelle nicht vorhanden. Bei einer Ausführungsform kann die TST in der Speicherplattform 104 oder innerhalb eines Speichers oder eines Caches der Ausführungsplattform 110 gespeichert sein.
  • Die folgende Diskussion bezieht sich auf ein Leseprotokoll, das durch den Transaktionsmanager 440 verwendet wird.
  • Bei einer Ausführungsform verwendet der Transaktionsmanager 440 eine Isolationsstufe bzw. -ebene für auf ein Lesen festgelegte Transaktionen und kann jede Anweisung mit einem anderen Lesezeitstempel ausgeführt werden. Bei einem Beispiel wird die Leseanforderung für einen gegebenen Schlüssel (oder einen Bereich von Schlüsseln) implementiert, indem ein Leseaufruf für einen linearisierbaren Speicher für alle Schlüssel mit X als ihr Präfix ausgeführt wird. Der Aufruf gibt Versionen von X mit ihren Stempeln und Werten zurück. Das Leseverfahren gibt entweder die von einer Transaktion, die festlegte, bevor SQL-Anweisung startete, erstellte letzte Version von X zurück, oder das, was durch die neueste Anweisung der Transaktion selbst geschrieben wurde, die nicht abgebrochen bzw. gelöscht wurde (falls es eine solche gibt).
  • Die folgende Diskussion bezieht sich auf ein Schreibprotokoll, das durch den Transaktionsmanager 440 verwendet wird.
  • Bei einer Ausführungsform prüft das Schreibprotokoll sowohl auf WW-(Schreiben-Schreiben(= Write-Write)-)Konflikte als auch auf WW-Blockierungen. Das folgende Beispiel beschreibt eine einzelne Transaktion und keine Konflikte. Es soll angenommen werden, dass ein Objekt X anfänglich den Stempel TXN1.0.0 hat und auf einen Zeitstempel 10 festgelegt wurde. Beim folgenden Beispiel sollte verstanden werden, dass die weiter unten beschriebenen folgenden Transaktionsschritte innerhalb einer Transaktion ausgeführt und gemeinsam festgelegt werden können. Bei einem Ausfall oder bei einer Überschreitung der Einschränkungen des zugrunde liegenden Transaktionssystems kann die Ausführung auf ein einzelnes Ausgeben der Operationen zurückfallen, wie es nachstehend in weiterem Detail beschrieben ist.
  • T2 startet und erstellt S1 von StatementContext(ID=TXN2, Statement-Number=1, restartCount=0)
  • Es soll angenommen werden, dass der Konstruktor aus dem linearisierbaren Speicher einen Lesezeitstempel von 15 erhält, indem er den Taktservice 130 kontaktiert. Wie es zuvor erwähnt ist, ist der Taktservice 130 eine Komponente der Speicherplattform 104, die kontaktiert werden kann, um eine Zahl abzurufen, die größer sein wird als irgendeine zuvor zurückgegebene Zahl, wie beispielsweise eine, die mit der aktuellen Zeit korreliert. Bei einer Ausführungsform ist der Taktservice 130 separat vorgesehen und unabhängig kontaktierbar vom linearisierbaren Speicher oder kann in den linearisierbaren Speicher integriert sein, so dass der Taktwert in einen geschriebenen Wert eingefügt werden kann. Die letztere Operation wird als Schreiben mit Zeitstempel bezeichnet werden. Um den Wert von X zu aktualisieren, wird bei einer Ausführungsform die folgende Sequenz von Aktionen durchgeführt:
 {
      S1 führt für einen linearisierbaren Speicher ein Schreiben für X.TXN2.1.0 mit
      einem Wert von 100 durch
      //Der nächste Schritt besteht für S1 darin, nach WW-(Schreiben-Schreiben-
      )Konflikten zu suchen, indem geprüft wird, ob es
      //eine weitere Transaktion, die X zwischen dem RTS und dem Schreiben von
      S1 aktualisiert hat, gibt.
      S1 gibt den Bereich Lesen [X.0, X.inf] aus, um die eingestellten gesamten
      Versionen von X und ihren Stempeln zu erhalten.
      Das Lesen gibt [X.TXN1.0.0, X.TXN2.1.0] zurück.
      S1 sucht TXN1 in der Transaktionsstatustabelle und findet einen Festle-
      gungs-Zeitstempel von 10.
      10 ist früher als unser Lesezeitstempel von 15, weshalb es kein Konflikt ist.
      S1 ignoriert [X.TXN2.1.0], da es zu S1 gehört.
      //Für jetzt soll angenommen werden, dass vorerst keine Konflikte erkannt
      wurden.
      S1 schließt ab und zeichnet (Anweisungsnummer = 1, Neustartzähler = 0) in
      die Transaktionsstatustabelle für TXN2 auf
 }

T2 legt fest. Dies wird veranlassen, dass der Datensatz bzw. die Aufzeichnung der Transaktionsstatustabelle im linearisierbaren Speicher aktualisiert wird, um widerzuspiegeln, dass TXN2 jetzt festgeschrieben bzw. festgelegt ist, und ihren Festlegungs-Zeitstempel von 20.
  • Zu diesem Zeitpunkt wird es zwei Versionen von X geben, und zwar eine mit TXN1.0.0 gestempelt, und die andere mit TXN2.1.0. Nachfolgende Transaktionen, die X lesen, können bestimmen, ob diese neue Version von X durch die festgelegte Transaktion geschrieben wurde, indem sie den Transaktionsstatusdatensatz lesen, und den CTS der Transaktion bestimmen.
  • Nun kann das Schreibprotokoll für eine Transaktion T angegeben werden.
  • Bei einer Implementierung erfordert jede aktualisierte Zeile (jedes aktualisierte Objekt) zwei separate Transaktionen für einen linearisierbaren Speicher:
    1. 1) Die erste Transaktion für einen linearisierbaren Speicher von T fügt eine neue Version des Objekts ein, wobei an ihren Schlüssel X ein dreiteiliges Suffix (T.ID, T.statementNumber, T.restartCount) angehängt ist.
    2. 2) Die zweite Transaktion für einen linearisierbaren Speicher gibt einen mit dem Präfix „X.“ gelesenen Bereich aus, um den SCT (Set of Conflicting Transactions (= Satz von Konflikt-Transaktionen)) zu erhalten. Der Ergebnissatz ist eine Liste von festgelegten oder aktiven Transaktionen, die neue Versionen von X schrieben (oder gerade schreiben).
  • Es gibt eine Anzahl möglicher unterschiedlicher Ergebnisse für diesen Leseaufruf für einen linearisierbaren Speicher, die in der folgenden Reihenfolge ausgewertet werden:
    1. 1) SCT ist leer, in welchem Fall trivialerweise zugelassen wird, dass T fortfährt.
    2. 2) SCT ist nicht leer, aber für alle Ti in SCT hat Ti vor einem Lesezeitstempel von T festgelegt, und daher gibt es keine WW-(Schreiben-Schreiben-) Konflikte. T kann fortfahren.
    3. 3) SCT ist nicht leer; für alle Ti in SCT ist Ti festgelegt; und es existiert ein Ti in SCT, so dass seine CTN größer ist als der Lesezeitstempel von T. Es ist zugelassen, dass T ohne Verzögerung erneut startet.
    4. 4) SCT ist nicht leer, und für ein oder mehrere Ti in SCT hat Ti noch nicht festgelegt oder abgebrochen. T muss vor einem erneuten Starten der aktuellen Anweisung warten, bis alle Transaktionen in SCT abschließen.
    5. 5) SCT ist nicht leer, und für ein oder mehrere Ti in SCT ist Ti.TransactionID dieselbe wie unsere eigene Transaktions-ID und ist Ti.StatementCount kleiner als unsere aktuelle Anweisungszählung. Dies bedeutet, dass die Sperre aktuell behalten wird, da eine vorherige Anweisung sie angenommen und ihre Ausführung erfolgreich abgeschlossen hat. T kann fortfahren.
    6. 6) SCT ist nicht leer, und für ein oder mehrere Ti in SCT ist TI.TransactionID dieselbe wie unsere eigene Transaktions-ID, ist Ti.StatementCount dieselbe wie unsere eigene Anweisungszählung und ist Ti.RestartCount kleiner als unsere eigene Neustartzählung. Dies ist eine Sperre aus einer vorherigen Ausführung unserer eigenen Transaktion, weshalb T die Sperre für diese Zeile behält, und T kann fortfahren.
  • Für alle Fälle wird das Objekt(X.Stamp, Value) in der Datenbank (z.B. der Speicherplattform 104) belassen. Für (3) und (4), die einen Neustart erfordern, dient das Objekt als Schreibsperre. Im Allgemeinen werden alle vorläufigen Schreibvorgänge für ein Objekt X eine Warteschlange von Schreibsperren ausbilden. (5) und (6) stellen die Fälle dar, bei denen zuvor belassene Schreibsperren es nachfolgenden Anweisungen oder Neustarts einer Anweisung ermöglichen, zu erkennen, dass sie die Sperre, die sie nehmen möchten, bereits halten.
  • Die folgende Diskussion beschreibt ein Beispiel, das einen Schreiben-Schreiben-(WW-)Konflikt darstellt. Ein Schreiben-Schreiben-Konflikt, der auch als Überschreiben nicht festgelegter Daten verstanden wird, bezieht sich auf eine Berechnungsanomalie, die mit einer verschachtelten Ausführung von Transaktionen assoziiert ist. Zur Vereinfachung des Beispiels werden Stempel weggelassen. Es soll angenommen werden, dass, bevor T1 oder T2 startet, ein Objekt X einen Wert von 500, einen Stempel von TXN1.0.0 und eine CTN von 10 hat.
    • T1 startet und bekommt einen Lesezeitstempel von 15
    • T2 startet und bekommt einen Lesezeitstempel von 20
    • T2 schreibt (Schlüssel = X.T2, Wert = 100)
    • T2 gibt ein Lesen für einen linearisierbaren Speicher mit einem Bereich [X.0, X.Inf] aus. Der Satz SCT wird leer sein, so dass T2 fortsetzt.
    • T1 schreibt (Schlüssel = X.T1, Wert = 50)
    • T1 gibt ein Lesen für einen linearisierbaren Speicher mit einem Bereich [X.0, X.Inf] aus. Der Satz SCT wird T2 enthalten, so dass T1 neu starten muss.
    • T2 legt erfolgreich fest. CTN von T1 für X wird > 20 sein. Es soll angenommen werden, dass sie 21 ist.
  • Nach einem Warten, bis T2 entweder festlegt oder abbricht, startet T1 die Anweisung mit einem Lesen von TS > 21 neu.
  • Die folgende Diskussion bezieht sich auf ein durch den Transaktionsmanager 440 verwendetes Löschprotokoll.
  • Bei einer Ausführungsform werden Löschoperationen als Schreiben eines Markierungsgrabsteinwerts (= Sentinel Tombstone Value) implementiert; sonst wird für Löschoperationen dasselbe Protokoll wie für Schreiboperationen verwendet. Wenn eine Leseoperation bestimmt, dass der zuletzt festgelegte Schlüssel ein Grabstein (= Tombstone) ist, wird dieser Schlüssel als nicht vorhanden angesehen.
  • Die folgende Diskussion bezieht sich auf ein durch den Transaktionsmanager 440 verwendetes Sperrprotokoll.
  • Um eine Abfrageanweisung von SELECT ... FOR UPDATE (AUSWÄHLEN ... FÜR EINE AKTUALISIERUNG) zu unterstützen, bietet die Transaktions-Manager-API einen StatementContext::lock(Key) an, was zulässt, dass Zeilen gesperrt werden können, ohne einen Wert zu ihnen zu schreiben. Die Implementierung von lock() (= sperren()) folgt dem Schreibprotokoll, mit der Ausnahme, dass sie einen speziellen Sentinel- bzw. Markierungs-Wert schreibt, um das Nichtvorhandensein eines Werts anzuzeigen (im Unterschied zu SQL NULL). Eine Anweisung SELECT ... FOR UPDATE kann auch gezwungen werden, mehrmals neu zu starten, bevor die Anweisung erfolgreich endet. Sobald dies der Fall ist, werden nachfolgende Anweisungen in der Transaktion das Vorhandensein dieses Schlüssels als einen Hinweis darauf erkennen, dass sie die Sperre halten (gemäß den obigen Fällen (5) und (6)). Alle Leseoperationen können den Schlüssel als Schreiben ignorieren.
  • Die folgende Diskussion bezieht sich auf ein Bestimmen, ob eine gegebene Transaktion festzulegen, abzubrechen oder erneut zu starten ist, was durch den Transaktionsmanager 440 bestimmt werden kann.
  • Wenn eine Transaktion ihre Ausführung beendet, wird sie entweder eine leere SCT haben, die anzeigt, dass das Festlegen fortgesetzt werden kann, oder eine SCT mit einer oder mehreren in Konflikt stehenden Transaktionen, die anzeigt, dass die Transaktion erneut gestartet werden muss.
  • Wenn eine Anweisung neu gestartet wird, werden alle Schreibvorgänge, die mit einem niedrigeren Neustartzählung gestempelt sind, als provisorische Schreibsperren für die nächste Ausführung in der Datenbank (z.B. der Speicherplattform 104) belassen. Die nächste Ausführung der Anweisung könnte möglicherweise einen anderen Satz von Schlüsseln schreiben. Der Satzunterschied zwischen der ersten und der zweiten Ausführung bildet einen Satz verwaister Schreibvorgänge, die entfernt werden müssen und niemals sichtbar werden. Die Anweisung selbst kann sich nicht darauf verlassen, immer in der Lage zu sein, ihre eigenen verwaisten Schreibvorgänge zu bereinigen, da im Falle eines Prozessabsturzes der Ort der vorherigen Schreibvorgänge vergessen worden sein wird. Ein Abschließen von Anweisungen und ein Aufzeichnen der Neustartzählung der erfolgreichen Ausführung verspricht, dass immer nur die Ergebnisse von einer Ausführung sichtbar werden, und erlaubt, das verwaiste Schreibvorgänge verzögert bereinigen werden.
  • Eine Transaktion legt fest, und alle ihre Schreibvorgänge werden sichtbar gemacht, indem ihre Transaktions-ID in die Transaktionsstatustabelle eingefügt wird. Der Festlegungs-Zeitstempel wird vom Taktservice 130 oder direkt von der verteilten Datenbank (z.B. FoundationDB) ausgefüllt, so dass er höher ist als irgendein zuvor zugewiesener Lese- oder Festlegungs-Zeitstempel. Alle Schreibvorgänge müssen abgeschlossen sein, bevor eine Anweisung abgeschlossen werden kann, und alle Anweisungen müssen abgeschlossen werden, bevor die Transaktion festgelegt werden kann.
  • Eine Transaktion wird abgebrochen, indem ihre Transaktions-ID in die Transaktionsstatustabelle eingefügt wird, wobei ihr Transaktionsergebnis als abgebrochen eingestellt wird. Die Liste von abgeschlossenen Anweisungen und deren Neustartzählungen wird auf eine leere Liste zurückgesetzt. Die Einfügung in die Transaktionsstatustabelle wird das Abbruchergebnis für alle in Konflikt stehenden Transaktionen sichtbar machen, und alle durch die abgeschlossenen Anweisungen durchgeführten Schreibvorgänge können proaktiv oder verzögert aus der Datenbank (z.B. der Speicherplattform 104) entfernt werden.
  • Wenn eine Anweisung versucht, mit einer nicht leeren SCT abzuschlie-ßen, wartet sie darauf, dass die Festlegungs-Ergebnisse für alle in Konflikt stehenden Transaktionen in der Transaktionsstatustabelle beibehalten werden, wenn einmal alle in Konflikt stehenden Transaktionen festgeschrieben bzw. festgelegt oder abgebrochen sind, wird die Transaktion ihren Neustartversuch beginnen.
  • Die folgende Diskussion bezieht sich auf eine API (z.B. die Transaktionsmanager-API, wie es nachstehend angegeben ist), die verwendet werden kann (z.B. durch eine gegebene Client-Vorrichtung), um Befehle und Anforderungen zum Transaktionsmanager 440 zu senden.
  • Eine SQL-Transaktion enthält eine Sequenz von einer oder mehreren SQL-Anweisungen. Jede SQL-Anweisung wird als geschachtelte bzw. verschachtelte Transaktion ausgeführt, wie sie von der Anweisungskontext-Klasse des Transaktionsmanagers implementiert ist. Jede Transaktionsmanageranweisung selbst wird als eine oder mehrere Datenbanktransaktionen ausgeführt.
  • Bei einer Ausführungsform ist die Transaktionsmanager-API in zwei Teile aufgeteilt: 1) die Datenschicht, die eine Lese- und Schreib-API für die Transaktionsausführungsprozesse bereitstellt; und 2) die Transaktionsschicht, die dem Compute-Service-Manager 108 eine API zum Arrangieren des Transaktionslebenszyklus bereitstellt. Bei einer Implementierung arbeiten Transaktionen auf einer Isolationsebene für READ COMMITTED (AUF LESEBN FESTGELEGT) und implementieren MVCC am obersten Ende der verteilten Datenbank (z.B. der Speicherplattform 104), um zu vermeiden, irgendwelche Lesesperren zu vorzunehmen.
  • Es soll die folgende beispielhafte SQL-Abfrage betrachtet werden:
  • Update emp.Salary = emp.Salary*1.1 wobei emp.Dept = "shoe";
  • Bei einem Beispiel wird eine Instanz der StatementContext- bzw. Anweisungskontext-Klasse erstellt werden, um diese SQL-Anweisung auszuführen. Der Konstruktor kontaktiert den Transaktionsmanager für einen linearisierbaren Speicher, um eine Transaktion für einen linearisierbaren Speicher zu beginnen und eine STN für einen linearisierbaren Speicher zu erhalten, die dann in der readTimestamp- bzw. Lesezeitstempel-Variablen gespeichert wird.
  • Die Update- bzw. Aktualisierungsoperation führt dann über irgendeine Anzahl von Ausführungsknoten hinweg aus, die alle dieselbe Anweisungskontext-Instanz verwenden. Bei einem Beispiel wird eine Funktion rangeRead() (= Bereichslesen()) verwendet werden, um die Basistabelle oder einen Index auf Dept für die zu Tupel, um zu aktualisieren, zu scannen. Es wird eine Reihe von write()- bzw. Schreiben()-Aufrufen durchgeführt werden, um das Gehalt (= Salary) aller übereinstimmenden bzw. passenden Mitarbeiter zu aktualisieren.
  • Ein Aufruf von finalize() (= abschließen()) wird CONFLICT (= KONFLIKT) zurückgeben, wenn die Anweisung während ihrer Ausführung auf irgendwelche Konflikte gestoßen ist, um anzuzeigen, dass eine erneute Ausführung nötig ist. Der Schlüssel dafür, dass Neustarts einen Fortschritt machen, besteht darin, dass die erste Ausführung der Anweisung den Nebeneffekt haben wird, dass ein eigentliches Einstellen von Schreibsperren für die Objekte erfolgt, die aktualisiert werden. Dies stellt sicher, dass beim erneuten Ausführen der Anweisung die nötigen Schreibsperren bereits erhalten worden sind, und die Anweisung im Allgemeinen (aber nicht immer).
  • Als Nächstes soll ein Beispiel betrachtet werden, das Schreiben-Schreiben-Konflikte zwischen 3 Transaktionen darstellt:
    • T1 startet S1 mit Zeitstempel 10
    • T2 startet S2 mit Zeitstempel 20
    • T3 startet S3 mit Zeitstempel 30
    • S1 schreibt X
    • S2 schreibt Y
    • S3 schreibt Z
    • S1 schreibt Y und notiert den Konflikt mit T2
    • S2 schreibt Z und notiert den Konflikt mit T3
    • S3 schreibt X und notiert den Konflikt mit T1
  • In diesem oben beschriebenen Fall sind drei Transaktionen an einem Deadlock bzw. einer Blockierung beteiligt. Jede Anweisung geht davon aus, dass sie neu starten und warten muss, bis die Ausführung der vorherigen Transaktion abgeschlossen ist. Keine Transaktion hat die vollständigen Informationen, um zu wissen, dass sie an einer Blockierung beteiligt ist.
  • Wenn somit eine Anweisung aufgrund von Konflikten darin fehlschlägt, abzuschließen, schreibt sie stattdessen ihren Konfliktsatz in die Datenbank (z.B. die Speicherplattform 104). Diese Konfliktsätze können von allen anderen Transaktionen gelesen werden, was zulässt, dass sie einen Zyklus im Wartediagramm erkennen, was darauf hinweist, dass sie an einer Blockierung beteiligt sind.
  • 5 ist ein Flussdiagramm, das Operationen eines Datenbanksystems beim Durchführen eines Verfahrens gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Das Verfahren 500 kann in computerlesbaren Anweisungen zur Ausführung durch eine oder mehrere Hardwarekomponenten (z.B. einen oder mehrere Prozessoren) verkörpert sein, so dass die Operationen des Verfahrens 500 von Komponenten des netzwerkbasierten Data-Warehouse-Systems 102 durchgeführt werden können, wie beispielsweise Komponenten des Compute-Service-Managers 108 oder eines Knotens in der Ausführungsplattform 110. Demgemäß wird das Verfahren 500 nachfolgend anhand eines Beispiels unter Bezugnahme darauf beschrieben. Es soll jedoch eingesehen werden, dass das Verfahren 500 an verschiedenen anderen Hardwarekonfigurationen eingesetzt werden kann und nicht dazu gedacht ist, auf einen Einsatz innerhalb des netzwerkbasierten Data-Warehouse-Systems 102 beschränkt zu sein.
  • Bei einer Operation 502 empfängt der Transaktionsmanager 440 eine erste Transaktion, nämlich die erste Transaktion, um auf einem linearisierbaren Speicher ausgeführt zu werden.
  • Bei einer Operation 504 weist der Transaktionsmanager 440 der ersten Transaktion eine erste Leseversion zu, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt. Alternativ kann ein Lesezeitstempel von einem Taktservice (z.B. dem Taktservice 130) abgerufen bzw. wiedergewonnen werden und kann der ersten Transaktion dort, wo der Transaktionsidentifizierer einer Lesestartzeit entspricht, ein Transaktionsidentifizierer zugewiesen werden.
  • Bei einer Operation 506 führt der Transaktionsmanager 440 eine Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank durch.
  • Bei einer Operation 508 bestimmt der Transaktionsmanager 440 einen ersten Festlegungs- bzw. Übergabe-Versionsidentifizierer entsprechend den ersten Daten resultierend aus der Leseoperation.
  • Bei einer Operation 510 bestimmt der Transaktionsmanager 440, ob eine bestimmte Schreiboperation in der ersten Transaktion enthalten ist. Wenn die bestimmte Schreiboperation mit der ersten Transaktion durchzuführen ist, dann fährt der Transaktionsmanager 440 damit fort, ein Verfahren durchzuführen, wie es unten in 7 beschrieben ist.
  • Wenn alternativ dazu der Transaktionsmanager 440 bestimmt, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, fährt der Transaktionsmanager 440 bei einer Operation 512 damit fort, eine andere Transaktion auszuführen (zusammen mit einem Verzichten darauf, einen Festlegungsprozess für die erste Transaktion durchzuführen), was unten bei einem Beispiel in 6 beschrieben ist. Es wird eingesehen, dass aufgrund der Gleichzeitigkeit von Transaktionen, die durchgeführt werden, die unten in 6 weiter beschriebenen Operationen zu jeder Zeit während der oben in 5 beschriebenen Operationen ausgeführt werden können.
  • 6 ist ein Flussdiagramm, das die Operationen eines Datenbanksystems beim Durchführen eines Verfahrens gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Das Verfahren 600 kann in computerlesbaren Anweisungen für eine Ausführung durch eine oder mehrere Hardwarekomponenten (z.B. einen oder mehrere Prozessoren) verkörpert sein, so dass die Operationen des Verfahrens 600 durch Komponenten des netzwerkbasierten Data-Warehouse-Systems 102 ausgeführt werden können, wie beispielsweise Komponenten des Compute-Service-Managers 108 oder eines Knotens in der Ausführungsplattform 110. Demgemäß wird das Verfahren 600 nachstehend anhand eines Beispiels unter Bezugnahme darauf beschrieben. Es soll jedoch eingesehen werden, dass das Verfahren 600 bei verschiedenen anderen Hardwarekonfigurationen eingesetzt werden kann und nicht dazu gedacht ist, auf einen Einsatz innerhalb des netzwerkbasierten Data-Warehouse-Systems 102 beschränkt zu sein.
  • Bei einigen Ausführungsformen kann das Verfahren 600 in Verbindung mit dem Verfahren 500 ausgeführt werden, wie es oben diskutiert ist. Zum Beispiel kann das Verfahren 600 nach den Operationen des Verfahrens 500 durchgeführt werden oder im Wesentlichen gleichzeitig mit dem Verfahren 500 durchgeführt werden.
  • Bei einer Operation 602 empfängt der Transaktionsmanager 440 eine zweite Transaktion, nämlich die zweite Transaktion, um auf einem linearisierbaren Speicher ausgeführt zu werden.
  • Bei einer Operation 604 weist der Transaktionsmanager 440 der zweiten Transaktion eine zweite Leseversion zu, wobei die zweite Leseversion eine zweite Version des linearisierbaren Speichers anzeigt.
  • Bei einer Operation 606 führt der Transaktionsmanager 440 eine zweite Leseoperation von der zweiten Transaktion auf der Tabelle in der Datenbank durch.
  • Bei einer Operation 608 führt der Transaktionsmanager 440 eine zweite Schreiboperation von der zweiten Transaktion auf der Tabelle in der Datenbank durch.
  • Bei einer Operation 610 bestimmt der Transaktionsmanager 440 einen bestimmten Festlegungs-Versionsidentifizierer entsprechend zweiten Datenergebnissen aus der zweiten Leseoperation.
  • Bei einer Operation 612 schließt der Transaktionsmanager 440 die Schreiboperation in Reaktion darauf ab, dass der bestimmte Festlegungs-Versionsidentifizierer äquivalent zum ersten Festlegungs-Versionsidentifizierer ist.
  • Bei einer Operation 614 weist der Transaktionsmanager 440 den von der Schreiboperation zur Tabelle gespeicherten zweiten Daten einen zweiten Festlegungs-Versionsidentifizierer zu, wobei der zweite Festlegungs-Versionsidentifizierer einer zweiten Version von Daten in der Tabelle entspricht, wobei der zweite Festlegungs-Versionsidentifizierer ein anderer als der erste Festlegungs-Versionsidentifizierer ist.
  • Bei einer Operation 616 initiiert der Transaktionsmanager 440 einen Festlegungsprozess für die zweite Transaktion.
  • 7 ist ein Flussdiagramm, das Operationen eines Datenbanksystems beim Durchführen eines Verfahrens gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Das Verfahren 700 kann in computerlesbaren Anweisungen für eine Ausführung durch eine oder mehrere Hardwarekomponenten (z.B. einen oder mehrere Prozessoren) verkörpert sein, so dass die Operationen des Verfahrens 700 von Komponenten des netzwerkbasierten Data-Warehouse-Systems 102 durchgeführt werden können, wie beispielsweise Komponenten des Compute-Service-Managers 108 oder eines Knotens in der Ausführungsplattform 110. Demgemäß wird das Verfahren 700 nachfolgend anhand eines Beispiels unter Bezugnahme darauf beschrieben. Es soll jedoch eingesehen werden, dass das Verfahren 700 bei verschiedenen anderen Hardwarekonfigurationen eingesetzt werden kann und nicht dazu gedacht ist, auf einen Einsatz innerhalb des netzwerkbasierten Data-Warehouse-Systems 102 beschränkt zu sein.
  • Bei einigen Ausführungsformen kann das Verfahren 700 in Verbindung mit dem Verfahren 500 und dem Verfahren 600 durchgeführt werden, wie es oben diskutiert ist. Zum Beispiel kann das Verfahren 700 nach den Operationen des Verfahrens 500 oder des Verfahrens 600 durchgeführt werden (oder im Wesentlichen gleichzeitig mit einem der beiden Verfahren durchgeführt werden).
  • Bei einer Operation 702 fährt der Transaktionsmanager 440 damit fort, eine bestimmte Schreiboperation von der ersten Transaktion aus durchzuführen.
  • Bei einer Operation 704 bestimmt der Transaktionsmanager 440, dass der erste Festlegungs-Versionsidentifizierer darin fehlschlägt, mit dem zweiten Festlegungs-Versionsidentifizierer übereinzustimmen.
  • Bei einer Operation 706 bricht der Transaktionsmanager 440 die bestimmte Schreiboperation von der ersten Transaktion ab.
  • Bei einer Operation 708 führt der Transaktionsmanager 440 eine bestimmte Leseoperation von der ersten Transaktion auf der Tabelle in der Datenbank durch.
  • Bei einer Operation 710 bestimmt der Transaktionsmanager 440 einen bestimmten Festlegungs-Versionsidentifizierer entsprechend bestimmten Daten resultierend aus der bestimmten Leseoperation.
  • Bei einer Operation 712 versucht der Transaktionsmanager 440 erneut, die bestimmte Schreiboperation von der ersten Transaktion auszuführen.
  • Bei einer Operation 714 führt der Transaktionsmanager 440 die bestimmte Schreiboperation in Reaktion auf den bestimmten Festlegungs-Versionsidentifizierer aus, der mit dem zweiten Festlegungs-Versionsidentifizierer übereinstimmt.
  • Bei einer Operation 716 initiiert der Transaktionsmanager 440 einen bestimmten Festlegungsprozess für die erste Transaktion.
  • 8 stellt eine schematische Darstellung einer Maschine 800 in der Form eines Computersystems dar, innerhalb von welchem eine Gruppe von Anweisungen ausgeführt werden kann, zum Veranlassen, dass die Maschine 800 irgendeine oder mehrere der hierin diskutieren Methoden durchführt, gemäß einer beispielhaften Ausführungsform. Spezifisch zeigt 8 eine schematische Darstellung der Maschine 800 in der beispielhaften Form eines Computersystems, innerhalb von welchem Anweisungen 816 (z.B. Software, ein Programm, eine Anwendung, ein Applet, eine App oder ein anderer ausführbarer Code) zum Veranlassen, dass die Maschine 800 irgendeine oder mehrere der hierin diskutierten Methoden durchführt, ausgeführt werden können. Die Anweisungen 816 können zum Beispiel veranlassen, dass die Maschine 800 irgendeine oder mehrere Operationen von irgendeinem oder mehreren der hierin beschriebenen Verfahren ausführt. Als weiteres Beispiel können die Anweisungen 816 veranlassen, dass die Maschine 800 Teilbereiche der in wenigstens 4 dargestellten Datenflüsse implementiert. Auf diese Weise transformieren die Anweisungen 816 eine allgemeine, nicht programmierte Maschine in eine bestimmte Maschine 800 (z.B. den Compute-Service-Manager 108 oder einen Knoten in der Ausführungsplattform 110), die speziell konfiguriert ist, um irgendeine der beschriebenen und dargestellten Funktionen auf die hierin beschriebene Weise auszuführen.
  • Bei alternativen Ausführungsformen arbeitet die Maschine 800 als alleinstehende Vorrichtung oder sie kann mit anderen Maschinen gekoppelt (z.B. vernetzt) sein. Bei einer vernetzten Verwendung kann die Maschine 800 in der Funktion einer Server-Maschine oder einer Client-Maschine in einer Server-Client-Netzwerkumgebung oder als Peer-Maschine in einer Peer-zu-Peer-(oder verteilten)Netzwerkumgebung arbeiten. Die Maschine 800 kann, ist aber nicht beschränkt darauf, einen Servercomputer, einen Client-Computer, einen Personalcomputer (PC), einen Tablet-Computer, einen Laptop-Computer, ein Netbook, ein Smartphone, ein mobiles Gerät, einen Netzwerkrouter, einen Netzwerkschalter, eine Netzwerkbrücke oder irgendeine Maschine, die die Anweisungen 816 sequentiell oder auf andere Weise ausführen kann, die von der Maschine 800 vorzunehmende Aktionen spezifizieren, umfassen. Weiterhin soll, während nur eine einzige Maschine 800 dargestellt ist, der Ausdruck „Maschine“ auch derart genommen werden, dass er eine Sammlung von Maschinen 800 enthält, die einzeln oder gemeinsam die Anweisungen 816 ausführen, um irgendeine oder mehrere der hierin diskutierten Methoden durchzuführen.
  • Die Maschine 800 enthält Prozessoren 810, einen Speicher 830 und Eingabe-/Ausgabe-(I/O-)Komponenten 850, die konfiguriert sind, um miteinander zu kommunizieren, wie beispielsweise über einen Bus 802. Bei einer beispielhaften Ausführungsform können die Prozessoren 810 (z.B. eine zentrale Verarbeitungseinheit (CPU), ein Prozessor mit reduziertem Befehlssatz (RISC), ein Prozessor mit komplexem Befehlssatz (CISC), eine Grafikverarbeitungseinheit (GPU), ein digitaler Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), eine integrierte Funkfrequenz-Schaltung (RFIC), ein anderer Prozessor oder irgendeine geeignete Kombination davon) zum Beispiel einen Prozessor 812 und einen Prozessor 814 umfassen, die die Anweisungen 816 ausführen können. Es ist beabsichtigt, dass der Ausdruck „Prozessor“ Mehrkernprozessoren 810 enthält, die zwei oder mehr unabhängige Prozessoren (auf die manchmal auch als „Kerne“ Bezug genommen wird) umfassen können, die Anweisungen 816 gleichzeitig ausführen können. Obwohl 8 mehrere Prozessoren 810 zeigt, kann die Maschine 800 einen einzelnen Prozessor mit einem einzigen Kern, einen einzelnen Prozessor mit mehreren Kernen (z.B. einen Mehrkernprozessor), mehrere Prozessoren mit einem einzigen Kern, mehrere Prozessoren mit mehreren Kernen oder eine beliebige Kombination davon enthalten.
  • Der Speicher 830 kann einen Hauptspeicher 832, einen statischen Speicher 834 und eine Speichereinheit 836 enthalten, die alle für die Prozessoren 810 zugreifbar bzw. zugänglich sind, wie beispielsweise über den Bus 802. Der Hauptspeicher 832, der statische Speicher 834 und die Speichereinheit 836 speichern die Anweisungen 816, die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpern. Die Anweisungen 816 können sich während ihrer Ausführung durch die Maschine 800 auch ganz oder teilweise innerhalb des Hauptspeichers 832, innerhalb des statischen Speichers 834, innerhalb der Speichereinheit 836, innerhalb von wenigstens einem der Prozessoren 810 (z.B. innerhalb des Cachespeichers des Prozessors) oder irgendeiner geeigneten Kombination davon befinden.
  • Die I/O-Komponenten 850 enthalten Komponenten, um eine Eingabe zu empfangen, eine Ausgabe zur Verfügung zu stellen, eine Ausgabe zu erzeugen, Information zu übertragen, Information auszutauschen, Messungen zu erfassen, und so weiter. Die spezifischen I/O-Komponenten 850, die in einer bestimmten Maschine 800 enthalten sind, werden vom Typ einer Maschine abhängen. Zum Beispiel werden portierbare bzw. tragbare Maschinen, wie beispielsweise Mobiltelefone, wahrscheinlich eine Berührungseingabevorrichtung oder andere solche Eingabemechanismen enthalten, während eine monitorlose Servermaschine wahrscheinlich keine solche Berührungseingabevorrichtung enthalten wird. Es wird eingesehen werden, dass die I/O-Komponenten 850 viele andere Komponenten enthalten können, die nicht in 8 gezeigt sind. Die I/O-Komponenten 850 sind lediglich zum Vereinfachen der folgenden Diskussion nach Funktionalität gruppiert und die Gruppierung ist in keiner Weise beschränkend. Bei verschiedenen beispielhaften Ausführungsformen können die I/O-Komponenten 850 Ausgabekomponenten 852 und Eingabekomponenten 854 enthalten. Die Ausgabekomponenten 852 können visuelle Komponenten (z.B. eine Anzeige wie einen Plasmabildschirm (PDP), eine Leuchtdioden-(LED-)Anzeige, eine Flüssigkristallanzeige (LCD), einen Projektor oder eine Kathodenstrahlröhre (CRT)), akustische Komponenten (z.B. Lautsprecher), andere Signalgeneratoren und so weiter enthalten. Die Eingabekomponenten 854 können alphanumerische Eingabekomponenten (z.B. eine Tastatur, einen Berührungsbildschirm, der konfiguriert ist, um eine alphanumerische Eingabe zu empfangen, eine fotooptische Tastatur oder andere alphanumerische Eingabekomponenten), punktbasierte Eingabekomponenten (z.B. eine Maus, eine Rollkugel, ein Joystick, ein Bewegungssensor oder ein anderes Zeigeinstrument), taktile Eingabekomponenten (z.B. eine physikalische Taste, einen Berührungsbildschirm, der eine Stelle und eine Kraft von Berührungen oder Berührungsgesten zur Verfügung stellt, oder andere taktile Eingabekomponenten), Audio-Eingabekomponenten (z.B. ein Mikrofon) und ähnliches enthalten.
  • Kommunikation kann unter Verwendung einer weiten Vielzahl von Technologien implementiert werden. Die I/O-Komponenten 850 können Kommunikationskomponenten 864 enthalten, die betreibbar sind, um die Maschine 800 mit einem Netzwerk 880 oder Vorrichtungen bzw. Geräten 870 über eine Kopplung 882 bzw. eine Kopplung 872 zu koppeln. Zum Beispiel können die Kommunikationskomponenten 864 eine Netzwerkschnittstellenkomponente oder eine andere geeignete Vorrichtung enthalten, um eine Schnittstelle mit dem Netzwerk 880 zu bilden. Bei weiteren Beispielen können die Kommunikationskomponenten 864 kabelgebundene bzw. verdrahtete Kommunikationskomponenten, drahtlose Kommunikationskomponenten, zellulare Kommunikationskomponenten und andere Kommunikationskomponenten enthalten, um Kommunikation über andere Modalitäten zur Verfügung zu stellen. Die Vorrichtungen bzw. Geräte 870 können eine andere Maschine oder irgendeine einer Vielzahl von peripheren Vorrichtungen bzw. Peripheriegeräten (z.B. ein Peripheriegerät, das über einen universellen seriellen Bus (USB) gekoppelt ist) sein. Zum Beispiel kann, wie es oben angemerkt ist, die Maschine 800 irgendetwas von dem Compute-Service-Manager 108 oder der Ausführungsplattform 110 entsprechen, und die Vorrichtungen 870 können die Client-Vorrichtung 114 oder irgendeine andere Computing-Vorrichtung enthalten, die hierin derart beschrieben sind, dass sie in Kommunikation mit dem netzwerkbasierten Data-Warehouse-System 102 oder der Cloud-Speicherplattform 104 sind.
  • AUSFÜHRBARE ANWEISUNGEN UND MASCHINENSPEICHERMEDIUM
  • Die verschiedenen Speicher (z.B. 830, 832, 834 und/oder ein Speicher des Prozessors (der Prozessoren) 810 und/oder die Speichereinheit 836) können einen oder mehrere Sätze von Anweisungen 816 und Datenstrukturen (z.B. Software) speichern, die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpert oder durch diese genutzt werden. Diese Anweisungen 816 veranlassen dann, wenn sie von dem (den) Prozessoren) 810 ausgeführt werden, verschiedene Operationen, um die offenbarten Ausführungsformen zu implementieren.
  • Wie sie hierin verwendet sind, bedeuten die Ausdrücke „Maschinenspeichermedium“, „Vorrichtungsspeichermedium“ und „Computerspeichermedium“ dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke beziehen sich auf eine einzelne oder mehrere Speichervorrichtungen und/oder Medien (z. B. eine zentrale oder verteilte Datenbank und/oder assoziierte Caches und Server), die ausführbare Anweisungen und/oder Daten speichern. Die Ausdrücke sollen demgemäß genommen werden, um Festkörperspeicher und optische und magnetische Medien, einschließlich eines Speichers intern oder extern von Prozessoren, zu enthalten, aber nicht um darauf beschränkt zu sein. Spezifische Beispiele für Maschinenspeichermedien, Computerspeichermedien und/oder Vorrichtungsspeichermedien enthalten einen nichtflüchtigen Speicher, einschließlich, anhand eines Beispiels, Halbleiterspeichervorrichtungen, wie z.B. eines löschbaren programmierbaren Nurlesespeichers (EPROM), eines elektrisch löschbaren programmierbaren Nurlesespeichers (EEPROM), von feldprogrammierbaren Gate-Arrays (FPGAs) und Flashspeichervorrichtungen; Magnetplatten wie beispielsweise interne Festplatten und entfernbare Scheiben bzw. Wechseldatenträger; magnetooptische Scheiben; und CD-ROM- und DVD-ROM-Scheiben. Die Ausdrücke „Maschinenspeichermedien“, „Computerspeichermedien“ und „Vorrichtungsspeichermedien“ schließen spezifisch Trägerwellen, modulierte Datensignale und andere solche Medien aus, von welchen wenigstens einige unter dem nachstehend diskutierten Ausdruck „Signalmedium“ abgedeckt sind.
  • ÜBERTRAGUNGSMEDIUM
  • Bei verschiedenen beispielhaften Ausführungsformen kann ein oder können mehrere Teilbereiche des Netzwerks 880 ein Ad-hoc-Netzwerk, ein Intranet, ein Extranet, ein virtuelles privates Netzwerk (VPN), ein lokales Netz (LAN), ein drahtloses LAN (WLAN), ein Weitverkehrsnetz (WAN), ein drahtloses WAN (WWAN), ein Stadtgebietsnetz (MAN), das Internet, ein Teilbereich des Internets, ein Teilbereich des öffentlichen geschalteten Telefonnetzes (PSTN), ein altes analoges Telefondienst-(POTS-)Netz, ein zellulares Telefonnetz, ein drahtloses Netz, ein Wi-Fi°-Netz, ein anderer Typ von Netzwerk oder eine Kombination von zwei oder mehreren solchen Netzwerken sein. Zum Beispiel kann das Netzwerk 880 oder ein Teilbereich des Netzwerks 880 ein drahtloses oder zellulares Netzwerk enthalten und die Kopplung 882 kann eine Verbindung mit einem Codemultiplexverfahren (CDMA), eine Verbindung mit globalem System für mobile Kommunikationen (GSM) oder andere Typen einer zellularen oder drahtlosen Kopplung sein. Bei diesem Beispiel kann die Kopplung 882 irgendeinen einer Vielfalt von Typen einer Datenübertragungstechnologie implementieren, wie beispielsweise eine Einzelträgerfunk-Übertragungstechnologie (1xRTT), eine Technologie mit optimierten Entwicklungsdaten (EVDO (Evolution Data Optimized)), eine Technologie eines allgemeinen Paketfunkdienstes (GPRS (General Packet Radio Service)), eine Technologie mit erhöhten Datenraten für GSM-Entwicklung (EDGE (Enhanced Data Rates for GSM Evolution)), Partnerschaftsprojekt der dritten Generation (3GPP) einschließlich 3G, drahtlose Netzwerke der vierten Generation (4G), universelle mobile Telekommunikationssysteme (UMTS), Hochgeschwindigkeits-Paketzugang (HSPA), weltweite Interoperabilität für Mikrowellenzugang (WiMAX), Langzeitentwicklungs-(LTE-)Standard, andere, die durch verschiedene Standardeinstellungsorganisationen definiert sind, andere Weitbereichs- bzw. Langstreckenprotokolle oder andere Datenübertragungstechnologie.
  • Die Anweisungen 816 können über das Netzwerk 880 unter Verwendung eines Übertragungsmedium über eine Netzwerkschnittstellenvorrichtung (z.B. eine in den Kommunikationskomponenten 864 enthaltene Netzwerkschnittstellenkomponente) übertragen bzw. gesendet oder empfangen werden und unter Nutzung von irgendeinem einer Anzahl von wohlbekannten Übertragungsprotokollen (z.B. Hypertext-Übertragungsprotokoll (HTTP)). Gleichermaßen können die Anweisungen 816 unter Verwendung eines Übertragungsmediums über die Kopplung 872 (z.B. Peer-zu-Peer-Kopplung) mit den Vorrichtungen bzw. Geräten 870 übertragen bzw. gesendet oder empfangen werden. Die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ sollen genommen werden, um irgendein immaterielles Medium zu enthalten, das die Anweisungen 816 zur Ausführung durch die Maschine 800 speichern, codieren oder tragen kann, und um digitale oder analoge Kommunikationssignale oder andere immaterielle Medien zu enthalten, um eine Kommunikation von solcher Software zu erleichtern bzw. zu ermöglichen. Somit sollen die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ genommen werden, um irgendeine Form eines modulierten Datensignals, einer Trägerwelle und so weiter zu enthalten. Der Ausdruck „moduliertes Datensignal“ bedeutet ein Signal, das eine oder mehrere seiner Charakteristiken auf solche Weise eingestellt oder verändert hat, um Information im Signal zu codieren.
  • COMPUTERLESBARES MEDIUM
  • Die Ausdrücke „maschinenlesbares Medium“, „computerlesbares Medium“ und „vorrichtungslesbares Medium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke sind definiert, um sowohl Maschinenspeichermedien als auch Übertragungsmedien zu enthalten. Somit enthalten die Ausdrücke sowohl Speichervorrichtungen/-medien als auch Trägerwellen/modulierte Datensignale.
  • Die verschiedenen Operationen der hierin beschriebenen beispielhaften Verfahren können wenigstens teilweise durch einen oder mehrere Prozessoren durchgeführt werden, die temporär (z.B. durch Software) oder dauerhaft konfiguriert sind, um die relevanten Operationen durchzuführen. Gleichermaßen können die hierin beschriebenen Verfahren wenigstens teilweise prozessorimplementiert sein. Zum Beispiel können wenigstens einige Operationen der hierin beschriebenen Verfahren durch einen oder mehrere Prozessoren durchgeführt werden. Die Leistungsfähigkeit von bestimmten der Operationen kann auf den einen oder die mehreren Prozessoren verteilt werden, die sich nicht nur innerhalb einer einzelnen Maschine befinden, sondern auch quer über eine Anzahl von Maschinen genutzt werden. Bei einigen beispielhaften Ausführungsformen kann der Prozessor oder können die Prozessoren an einer einzigen Stelle angeordnet sein (z.B. in einer häuslichen Umgebung, einer Büroumgebung oder einer Serverfarm), während die Prozessoren bei anderen Ausführungsformen quer über eine Anzahl von Stellen bzw. Standorten verteilt sein können.
  • BEISPIELE VON AUSFÜHRUNGSFORMEN
  • Das Folgende ist eine Liste einiger Beispiele für Ausführungsformen von Systemen und Verfahren zum adaptiven Erweitern bzw. Verbessern von Abfrageplänen.
  • Beispiel 1 ist ein System, das folgendes umfasst: wenigstens einen Hardware-Prozessor; und einen Speicher, der Anweisungen speichert, die veranlassen, dass der wenigstens einen Hardwareprozessor Operationen durchführt, die folgendes umfassen: Empfangen einer ersten Transaktion, nämlich die erste Transaktion, um auf einem linearisierbaren Speicher ausgeführt zu werden; Zuweisen bzw. Zuordnen einer ersten Leseversion zur ersten Transaktion, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt; Durchführen einer Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank; Bestimmen eines Festlegungs-Versionsidentifizierers entsprechend den ersten Daten resultierend aus der Leseoperation; und in Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation abwesend von der ersten Transaktion ist, Fortfahren damit, eine andere Transaktion auszuführen, und Verzichten darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.
  • Bei einem Beispiel 2 der Gegenstand von Beispiel 1, wobei die Operationen optional weiterhin folgendes umfassen: Empfangen einer zweiten Transaktion, nämlich die zweite Transaktion, um auf einem linearisierbaren Speicher ausgeführt zu werden; Zuweisen bzw. Zuordnen der zweiten Transaktion eines zweiten Transaktionsidentifizierers, wobei der zweite Transaktionsidentifizierer eine zweite Version des linearisierbaren Speichers anzeigt; Durchführen einer zweiten Leseoperation von der zweiten Transaktion auf der Tabelle in der Datenbank; und Durchführen einer Schreiboperation von der zweiten Transaktion auf der Tabelle in der Datenbank.
  • Bei einem Beispiel 3 der Gegenstand von einem der Beispiele 1 und 2, wobei ein Durchführen der Schreiboperation von der zweiten Transaktion optional folgendes umfasst: Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend den zweiten Datenergebnissen von der zweiten Leseoperation; und Abschließen der Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer äquivalent zum ersten Festlegungs-Versionsidentifizierer ist.
  • Bei einem Beispiel 4 Gegenstand von einem der Beispiele 1-3, wobei die Operationen optional weiterhin folgendes umfassen: Zuweisen bzw. Zuordnen eines zweiten Festlegungs-Versionsidentifizierers zu von der Schreiboperation zur Tabelle gespeicherten zweiten Daten, wobei der zweite Festlegungs-Versionsidentifizierer einer zweiten Version von Daten in der Tabelle entspricht, wobei der zweite Festlegungs-Versionsidentifizierer ein anderer als der erste Festlegungs-Versionsidentifizierer ist; und Initiieren eines Festlegungsprozesses für die zweite Transaktion.
  • Bei einem Beispiel 5 Gegenstand von einem der Beispiele 1-4, wobei ein optionales Zuweisen des zweiten Festlegungs-Versionsidentifizierers ein Inkrementieren eines Wertes umfasst, der mit dem ersten Festlegungs-Versionsidentifizierer assoziiert ist, um den zweiten Festlegungs-Versionsidentifizierer zu bestimmen.
  • Bei einem Beispiel 6 Gegenstand von einem der Beispiele 1-5, wobei die Operationen optional weiterhin folgendes umfassen: Fortfahren damit, eine bestimmte Schreiboperation von der ersten Transaktion durchzuführen; Bestimmen, dass der erste Festlegungs-Versionsidentifizierer darin fehlschlägt, mit dem zweiten Festlegungs-Versionsidentifizierer übereinzustimmen; und Abbrechen der bestimmten Schreiboperation von der ersten Transaktion.
  • Bei einem Beispiel 7 Gegenstand von einem der Beispiele 1-6, wobei die Operationen optional weiterhin folgendes umfassen: Durchführen einer bestimmten Leseoperation von der ersten Transaktion auf der Tabelle in der Datenbank; und Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend den bestimmten Daten resultierend aus der bestimmten Leseoperation.
  • Bei einem Beispiel 8 Gegenstand von einem der Beispiele 1-7, wobei die Operationen im optimalen Fall weiterhin folgendes umfassen: erneut Versuchen, die bestimmte Schreiboperation von der ersten Transaktion durchzuführen; und Durchführen der bestimmten Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer mit dem zweiten Festlegungs-Versionsidentifizierer übereinstimmt.
  • Bei einem Beispiel 9 Gegenstand von einem der Beispiele 1-8, wobei die Operationen optional weiterhin folgendes umfassen: Initiieren eines bestimmten Festlegungsprozesses für die erste Transaktion.
  • Bei einem Beispiel 10 Gegenstand von einem der Beispiele 1-9, wobei die Datenbank optional eine verteilte Datenbank umfasst.
  • Beispiel 11 ist ein Verfahren, das folgendes umfasst: Empfangen einer ersten Transaktion, nämlich der ersten Transaktion, um auf einem linearisierbaren Speicher ausgeführt zu werden; Zuweisen bzw. Zuordnen einer ersten Leseversion zur ersten Transaktion, wobei die erste Leseversion eine erste Startzeit der ersten Transaktion anzeigt; Durchführen einer Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank; Bestimmen eines ersten Festlegungs-Versionsidentifizierers entsprechend den ersten Daten resultierend aus der Leseoperation; und in Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, Fortfahren damit, eine andere Transaktion auszuführen, und Verzichten darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.
  • Bei einem Beispiel 12 der Gegenstand vom Beispiel 11, der optional weiterhin folgendes umfasst: Empfangen einer zweiten Transaktion, wobei die zweite Transaktion auf einem linearisierbaren Speicher auszuführen ist; Zuweisen bzw. Zuordnen eines zweiten Transaktionsidentifizierers zur zweiten Transaktion, wobei der zweite Transaktionsidentifizierer eine zweite Version des linearisierbaren Speichers anzeigt; Durchführen einer zweiten Leseoperation von der zweiten Transaktion auf der Tabelle in der Datenbank; und Durchführen einer Schreiboperation von der zweiten Transaktion auf der Tabelle in der Datenbank.
  • Bei einem Beispiel 13 der Gegenstand von einem der Beispiele 11 und 12, wobei eine optionales Durchführen der Schreiboperation von der zweiten Transaktion folgendes umfasst: Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend zweiten Datenergebnissen von der zweiten Leseoperation; und Abschließen der Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer äquivalent zum ersten Festlegungs-Versionsidentifizierer ist.
  • Bei einem Beispiel 14 der Gegenstand von einem der Beispiele 11-13, wobei er optional folgendes umfasst: Zuweisen bzw. Zuordnen eines zweiten Festlegungs-Versionsidentifizierers zu von der Schreiboperation zur Tabelle gespeicherten zweiten Daten, wobei der zweite Festlegungs-Versionsidentifizierer einer zweiten Version von Daten in der Tabelle entspricht, wobei der zweite Festlegungs-Versionsidentifizierer ein anderer als der erste Festlegungs-Versionsidentifizierer ist; und Initiieren eines Festlegungsprozesses für die zweite Transaktion.
  • Bei einem Beispiel 15 der Gegenstand von einem der Beispiele 11-14, wobei ein optionales Zuweisen des zweiten Festlegungs-Versionsidentifizierers ein Inkrementieren eines Wertes umfasst, der mit dem ersten Festlegungs-Versionsidentifizierer assoziiert ist, um den zweiten Festlegungs-Versionsidentifizierer zu bestimmen.
  • Bei einem Beispiel 16 der Gegenstand von einem der Beispiele 11-15, der optional weiterhin folgendes umfasst: Fortfahren damit, eine bestimmte Schreiboperation von der ersten Transaktion durchzuführen; Bestimmen, dass der erste Festlegungs-Versionsidentifizierer darin fehlschlägt, mit dem zweiten Festlegungs-Versionsidentifizierer übereinzustimmen; und Abbrechen der bestimmten Schreiboperation von der ersten Transaktion.
  • Bei einem Beispiel 17 der Gegenstand von einem der Beispiele 11-16, der optional weiterhin folgendes umfasst: Durchführen einer bestimmten Leseoperation von der ersten Transaktion auf der Tabelle in der Datenbank; und Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend bestimmten Daten resultierend aus der bestimmten Leseoperation.
  • Bei einem Beispiel 18 der Gegenstand von einem der Beispiele 11-17, der optional weiterhin folgendes umfasst: erneut Versuchen, die bestimmte Schreiboperation von der ersten Transaktion durchzuführen; und Durchführen der bestimmten Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer mit dem zweiten Festlegungs-Versionsidentifizierer übereinstimmt.
  • Bei einem Beispiel 19 der Gegenstand von einem der Beispiele 11-18, der optional weiterhin folgendes umfasst: Initiieren eines bestimmten Festlegungsprozesses für die erste Transaktion.
  • Bei einem Beispiel 20 der Gegenstand von einem der Beispiele 11-19, wobei die Datenbank optional eine verteilte Datenbank umfasst.
  • Bei einem Beispiel 21 handelt es sich um ein Computer-Speichermedium, das Anweisungen umfasst, die dann, wenn sie durch einen oder mehrere Prozessoren einer Maschine ausgeführt werden, die Maschine so konfigurieren, dass sie Operationen durchführt, die folgendes umfassen: Empfangen einer ersten Transaktion; Zuweisen bzw. Zuordnen einer ersten Leseversion zur ersten Transaktion, wobei die erste Transaktion auf einem linearisierbaren Speicher auszuführen ist, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt; Durchführen einer Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank; Bestimmen einer ersten Festlegungs-Versionsidentifizierer entsprechend den ersten Daten resultierend aus der Leseoperation; und in Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, Fortfahren damit, eine andere Transaktion auszuführen, und Verzichten darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.
  • Bei einem Beispiel 22 der Gegenstand vom Beispiel 21, wobei die Operationen optional weiterhin folgendes umfassen: Empfangen einer zweiten Transaktion, wobei die zweite Transaktion auf dem linearisierbaren Speicher auszuführen ist; Zuweisen bzw. Zuordnen eines zweiten Transaktionsidentifizierers zur zweiten Transaktion, wobei der zweite Transaktionsidentifizierer eine zweite Version des linearisierbaren Speichers anzeigt; Durchführen einer zweiten Leseoperation von der zweiten Transaktion auf der Tabelle in der Datenbank; und Durchführen einer Schreiboperation von der zweiten Transaktion auf der Tabelle in der Datenbank.
  • Bei einem Beispiel 23 der Gegenstand von einem der Beispiele 21 und 22, wobei ein optionales Durchführen der Schreiboperation von der zweiten Transaktion folgendes umfasst: Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend zweiten Datenergebnissen von der zweiten Leseoperation; und Abschließen der Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer äquivalent zum ersten Festlegungs-Versionsidentifizierer ist.
  • Bei einem Beispiel 24 der Gegenstand von einem der Beispiele 21-23, wobei die Operationen optional weiterhin folgendes umfassen: Zuweisen bzw. Zuordnen eines zweiten Festlegungs-Versionsidentifizierers zu von der Schreiboperation zur Tabelle gespeicherten zweiten Daten, wobei der zweite Festlegungs-Versionsidentifizierers einer zweiten Version von Daten in der Tabelle entspricht, wobei der zweite Festlegungs-Versionsidentifizierer ein anderer als der erste Festlegungs-Versionsidentifizierer ist; und Initiieren eines Festlegungsprozesses für die zweite Transaktion.
  • Bei einem Beispiel 25 der Gegenstand von einem der Beispiele 21-24, wobei ein optionales Zuweisen des zweiten Festlegungs-Versionsidentifizierers ein Inkrementieren eines Wertes umfasst, der mit dem ersten Festlegungs-Versionsidentifizierer assoziiert ist, um den zweiten Festlegungs-Versionsidentifizierer zu bestimmen.
  • Bei einem Beispiel 26 der Gegenstand von einem der Beispiele 21-25, wobei die Operationen optional weiterhin folgendes umfassen: Fortfahren damit, eine bestimmte Schreiboperation von der ersten Transaktion auszuführen; Bestimmen, dass der erste Festlegungs-Versionsidentifizierer darin fehlschlägt, mit dem zweiten Festlegungs-Versionsidentifizierer übereinzustimmen; und Abbrechen der bestimmten Schreiboperation von der ersten Transaktion.
  • Bei einem Beispiel 27 der Gegenstand von einem der Beispiele 21-26, wobei die Operationen optional weiterhin folgendes umfassen: Durchführen einer bestimmten Leseoperation von der ersten Transaktion auf der Tabelle in der Datenbank; und Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend bestimmten Daten resultierend aus der bestimmten Leseoperation.
  • Bei einem Beispiel 28 der Gegenstand von einem der Beispiele 21-27, wobei die Operationen optional weiterhin folgendes umfassen: erneut Versuchen, die bestimmte Schreiboperation von der ersten Transaktion auszuführen; und Durchführen der bestimmten Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer mit dem zweiten Festlegungs-Versionsidentifizierer übereinstimmt.
  • Bei einem Beispiel 29 der Gegenstand von einem der Beispiele 21-28, wobei die Operationen optional weiterhin folgendes umfassen: Initiieren eines bestimmten Festlegungsprozesses für die erste Transaktion. Bei einem Beispiel 30 der Gegenstand von einem der Beispiele 21-29, wobei die Datenbank optional eine verteilte Datenbank umfasst.
  • SCHLUSSFOLGERUNG
  • Obwohl die Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen beschrieben worden sind, wird es offensichtlich werden, dass verschiedene Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne von dem breiteren Schutzumfang des erfinderischen Gegenstands abzuweichen. Demgemäß sind die Spezifikation und die Zeichnungen eher in einem illustrativen als in einem beschränkenden Sinn anzusehen. Die beigefügten Zeichnungen, die einen Teil hiervon bilden, zeigen, zur Veranschaulichung und nicht zur Beschränkung, spezifische Ausführungsformen, bei welchen der Gegenstand ausgeführt werden kann. Die dargestellten Ausführungsformen sind in ausreichendem Detail beschrieben, um Fachleuten auf dem Gebiet zu ermöglichen, die hierin offenbarten Lehren auszuführen. Andere Ausführungsformen können verwendet und daraus abgeleitet werden, so dass strukturelle und logische Substitutionen und Änderungen vorgenommen werden können, ohne vom Schutzbereich dieser Offenbarung abzuweichen. Diese detaillierte Beschreibung ist daher nicht in einem beschränkenden Sinn zu nehmen, und der Schutzumfang von verschiedenen Ausführungsformen wird nur durch die beigefügten Ansprüche definiert, zusammen mit dem gesamten Bereich von Äquivalenten, auf welche solche Ansprüche eine Anspruchsberechtigung haben.
  • Auf solche Ausführungsformen des erfinderischen Gegenstands kann hierin einzeln und/oder kollektiv lediglich der Annehmlichkeit halber und ohne die Absicht, den Schutzumfang dieser Anmeldung auf eine einzelne Erfindung oder ein erfinderisches Konzept gewollt zu beschränken, durch den Ausdruck „Erfindung“ Bezug genommen werden, wenn tatsächlich mehr als eine offenbart ist. Somit sollte, obwohl hierin spezifische Ausführungsformen dargestellt und beschrieben worden sind, eingesehen werden, dass irgendeine Anordnung, für die kalkuliert ist, dass sie den gleichen Zweck erreicht, für die gezeigten spezifischen Ausführungsformen substituiert werden kann. Diese Offenbarung soll irgendwelche und alle Anpassungen oder Variationen von verschiedenen Ausführungsformen abdecken. Kombinationen der obigen Ausführungsformen und andere Ausführungsformen, die hierin nicht spezifisch beschrieben sind, werden Fachleuten auf dem Gebiet beim Durchsehen bzw. Überprüfen der obigen Beschreibung offensichtlich werden.
  • In diesem Dokument werden die Ausdrücke „ein“ oder „eine“ verwendet, wie es in Patentdokumenten üblich ist, um einen (eine) oder mehr als einen (eine) zu enthalten, unabhängig von irgendwelchen anderen Fällen oder Verwendungen von „wenigstens einer“ oder „einer oder mehrere“. In diesem Dokument wird der Ausdruck „oder“ verwendet, um sich auf ein nicht ausschließliches oder zu beziehen, so dass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ enthält, solange nichts anderes angegeben ist. In den beigefügten Ansprüchen werden die Ausdrücke „einschließlich“ und „in welchen“ als Äquivalente in einfachem Englisch der jeweiligen Ausdrücke „umfassend“ und „wobei“ verwendet. Ebenso sind in den folgenden Ansprüchen die Ausdrücke „enthaltend“ und „umfassend“ mit offenem Ende; das bedeutet, dass ein System, eine Vorrichtung, ein Artikel oder ein Verfahren, das, die oder der Elemente zusätzlich zu denjenigen enthält, die nach einem solchen Ausdruck in einem Anspruch aufgelistet sind, derart angesehen wird, dass es, sie oder er in den Schutzbereich dieses Anspruchs fällt.
  • Bei einem weiteren Beispiel empfängt die Fachgebietstechnologie bzw. betreffende Technologie eine erste Transaktion und ordnet der ersten Transaktion eine erste Leseversion zu, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt. Die Fachgebietstechnologie führt eine Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank durch. Die Fachgebietstechnologie bestimmt einen ersten Festlegungs-Versionsidentifizierer entsprechend ersten Daten resultierend aus der Leseoperation. In Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, fährt die Fachgebietstechnologie damit fort, eine andere Transaktion auszuführen, und verzichtet darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/081611 [0001]

    Claims (20)

    1. System, umfassend: wenigstens einen Hardware-Prozessor; und einen Speicher, der Anweisungen speichert, die veranlassen, dass der wenigstens eine Hardwareprozessor Operationen durchführt, die folgendes umfassen: Empfangen einer ersten Transaktion, wobei die erste Transaktion auf einem linearisierbaren Speicher auszuführen ist; Zuweisen bzw. Zuordnen einer ersten Leseversion zur ersten Transaktion, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt; Durchführen einer Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank; Bestimmen eines ersten Festlegungs-Versionsidentifizierers entsprechend den ersten Daten resultierend aus der Leseoperation; und in Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, Fortfahren damit, eine andere Transaktion auszuführen, und Verzichten darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.
    2. System nach Anspruch 1, wobei die Operationen weiterhin folgendes umfassen: Empfangen einer zweiten Transaktion, wobei die zweite Transaktion auf dem linearisierbaren Speicher auszuführen ist; Zuweisen bzw. Zuordnen einer zweiten Leseversion zur zweiten Transaktion, wobei die zweite Leseversion eine zweite Version des linearisierbaren Speichers anzeigt; Durchführen einer zweiten Leseoperation von der zweiten Transaktion auf der Tabelle in der Datenbank; und Durchführen einer Schreiboperation von der zweiten Transaktion auf der Tabelle in der Datenbank.
    3. System nach Anspruch 2, wobei ein Durchführen der Schreiboperation von der zweiten Transaktion folgendes umfasst: Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend den zweiten Daten resultierend aus der zweiten Leseoperation; und Abschließen der Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer äquivalent zum ersten Festlegungs-Versionsidentifizierer ist.
    4. System nach Anspruch 2, wobei die Operationen weiterhin folgendes umfassen: Zuweisen bzw. Zuordnen eines zweiten Festlegungs-Versionsidentifizierers zu von der Schreiboperation zur Tabelle gespeicherten zweiten Daten, wobei der zweite Festlegungs-Versionsidentifizierer einer zweiten Version von Daten in der Tabelle entspricht, wobei der zweite Festlegungs-Versionsidentifizierer ein anderer als der erste Festlegungs-Versionsidentifizierer ist; und Initiieren eines Festlegungsprozesses für die zweite Transaktion.
    5. System nach Anspruch 4, wobei ein Zuweisen des zweiten Festlegungs-Versionsidentifizierer ein Inkrementieren eines Wertes umfasst, der mit dem ersten Festlegungs-Versionsidentifizierer assoziiert ist, um den zweiten Festlegungs-Versionsidentifizierer zu bestimmen.
    6. System nach Anspruch 4, wobei die Operationen weiterhin folgendes umfassen: Fortfahren damit, eine bestimmte Schreiboperation von der ersten Transaktion durchzuführen; Bestimmen, dass der erste Festlegungs-Versionsidentifizierer darin fehlschlägt, mit dem zweiten Festlegungs-Versionsidentifizierer übereinzustimmen; und Abbrechen der bestimmten Schreiboperation von der ersten Transaktion.
    7. System nach Anspruch 6, wobei die Operationen weiterhin folgendes umfassen: Durchführen einer bestimmten Leseoperation von der ersten Transaktion auf der Tabelle in der Datenbank; und Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend bestimmten Daten resultierend aus der bestimmten Leseoperation.
    8. System nach Anspruch 7, wobei die Operationen weiterhin folgendes umfassen: erneut Versuchen, die bestimmte Schreiboperation von der ersten Transaktion durchzuführen; und Durchführen der bestimmten Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer mit dem zweiten Festlegungs-Versionsidentifizierer übereinstimmt.
    9. System nach Anspruch 8, wobei die Operationen weiterhin folgendes umfassen: Initiieren eines bestimmten Festlegungsprozesses für die erste Transaktion.
    10. System nach Anspruch 1, wobei die Datenbank eine verteilte Datenbank umfasst.
    11. Computerprogramm, das Anweisungen umfasst, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren Operationen durchführt oder durchführen, wobei die Operationen folgendes umfassen: Empfangen einer ersten Transaktion, wobei die erste Transaktion auf einem linearisierbaren Speicher auszuführen ist; Zuweisen bzw. Zuordnen einer ersten Leseversion zur ersten Transaktion, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt; Durchführen einer Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank; Bestimmen eines ersten Festlegungs-Versionsidentifizierers entsprechend den ersten Daten resultierend aus der Leseoperation; und in Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, Fortfahren damit, eine andere Transaktion auszuführen, und Verzichten darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.
    12. Computerprogramm nach Anspruch 11, wobei die Operationen weiterhin folgendes umfassen: Empfangen einer zweiten Transaktion; Zuweisen bzw. Zuordnen einer zweiten Leseversion zur zweiten Transaktion, wobei die zweite Leseversion eine zweite Version des linearisierbaren Speichers anzeigt; Durchführen einer zweiten Leseoperation von der zweiten Transaktion auf der Tabelle in der Datenbank; und Durchführen einer Schreiboperation von der zweiten Transaktion auf der Tabelle in der Datenbank.
    13. Computerprogramm nach Anspruch 12, wobei ein Durchführen der Schreiboperation von der zweiten Transaktion folgendes umfasst: Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend den zweiten Daten resultierend aus der zweiten Leseoperation; und Abschließen der Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer äquivalent zum ersten Festlegungs-Versionsidentifizierer ist.
    14. Computerprogramm nach Anspruch 12, wobei die Operationen weiterhin folgendes umfassen: Zuweisen bzw. Zuordnen eines zweiten Festlegungs-Versionsidentifizierers zu von der Schreiboperation zur Tabelle gespeicherten zweiten Daten, wobei der zweite Festlegungs-Versionsidentifizierer einer zweiten Version von Daten in der Tabelle entspricht, wobei der zweite Festlegungs-Versionsidentifizierer ein anderer als der erste Festlegungs-Versionsidentifizierer ist; und Initiieren eines Festlegungsprozesses für die zweite Transaktion.
    15. Computerprogramm nach Anspruch 14, wobei ein Zuweisen des zweiten Festlegungs-Versionsidentifizierer ein Inkrementieren eines Wertes umfasst, der mit dem ersten Festlegungs-Versionsidentifizierer assoziiert ist, um den zweiten Festlegungs-Versionsidentifizierer zu bestimmen.
    16. Computerprogramm nach Anspruch 14, wobei die Operationen weiterhin folgendes umfassen: Fortfahren damit, eine bestimmte Schreiboperation von der ersten Transaktion durchzuführen; Bestimmen, dass der erste Festlegungs-Versionsidentifizierer darin fehlschlägt, mit dem zweiten Festlegungs-Versionsidentifizierer übereinzustimmen; und Abbrechen der bestimmten Schreiboperation von der ersten Transaktion.
    17. Computerprogramm nach Anspruch 16, wobei die Operationen weiterhin folgendes umfassen: Durchführen einer bestimmten Leseoperation von der ersten Transaktion auf der Tabelle in der Datenbank; und Bestimmen eines bestimmten Festlegungs-Versionsidentifizierers entsprechend bestimmten Daten resultierend aus der bestimmten Leseoperation.
    18. Computerprogramm nach Anspruch 17, wobei die Operationen weiterhin folgendes umfassen: erneut Versuchen, die bestimmte Schreiboperation von der ersten Transaktion durchzuführen; und Durchführen der bestimmten Schreiboperation in Reaktion darauf, dass der bestimmte Festlegungs-Versionsidentifizierer mit dem zweiten Festlegungs-Versionsidentifizierer übereinstimmt.
    19. Computerprogramm nach Anspruch 18, wobei die Operationen weiterhin folgendes umfassen: Initiieren eines bestimmten Festlegungsprozesses für die erste Transaktion.
    20. Computerspeichermedium, das Anweisungen umfasst, die dann, wenn sie durch einen oder mehrere Prozessoren einer Maschine ausgeführt werden, die Maschine so konfigurieren, dass sie Operationen durchführt, die folgendes umfassen: Empfangen einer ersten Transaktion, wobei die erste Transaktion auf einem linearisierbaren Speicher auszuführen ist; Zuweisen bzw. Zuordnen einer ersten Leseversion zur ersten Transaktion, wobei die erste Leseversion eine erste Version des linearisierbaren Speichers anzeigt; Durchführen einer Leseoperation von der ersten Transaktion auf einer Tabelle in einer Datenbank; Bestimmen eines ersten Festlegungs-Versionsidentifizierers entsprechend den ersten Daten resultierend aus der Leseoperation; und in Reaktion auf ein Bestimmen, dass eine bestimmte Schreiboperation von der ersten Transaktion abwesend ist, Fortfahren damit, eine andere Transaktion auszuführen, und Verzichten darauf, einen Festlegungsprozess in Verbindung mit der ersten Transaktion durchzuführen.
    DE202021004295.4U 2020-09-22 2021-06-29 Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem Active DE202021004295U1 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US202063081611P 2020-09-22 2020-09-22
    US63/081,611 2020-09-22

    Publications (1)

    Publication Number Publication Date
    DE202021004295U1 true DE202021004295U1 (de) 2023-07-11

    Family

    ID=80740348

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE202021004295.4U Active DE202021004295U1 (de) 2020-09-22 2021-06-29 Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem

    Country Status (5)

    Country Link
    US (3) US11468032B2 (de)
    EP (1) EP4217888A4 (de)
    CN (1) CN116249978A (de)
    DE (1) DE202021004295U1 (de)
    WO (1) WO2022066257A1 (de)

    Families Citing this family (4)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11436212B2 (en) 2020-09-22 2022-09-06 Snowflake Inc. Concurrent transaction processing in a database system
    US11468032B2 (en) 2020-09-22 2022-10-11 Snowflake Inc. Concurrent transaction processing in a database system
    US12045223B2 (en) * 2022-06-02 2024-07-23 Microsoft Technology Licensing, LLP Method and system for lock after qualification for update queries
    US12093248B1 (en) 2023-05-08 2024-09-17 Snowflake Inc. Online index creation for multi-version database without table locks

    Family Cites Families (32)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US5280612A (en) * 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
    US5335343A (en) * 1992-07-06 1994-08-02 Digital Equipment Corporation Distributed transaction processing using two-phase commit protocol with presumed-commit without log force
    US6363387B1 (en) 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
    US6606626B1 (en) 1998-10-20 2003-08-12 Sybase, Inc. Database system with lock manager enhancement for improving concurrency
    US8644305B2 (en) * 2007-01-22 2014-02-04 Synopsys Inc. Method and system for modeling a bus for a system design incorporating one or more programmable processors
    US8661204B2 (en) * 2007-08-15 2014-02-25 University Of Rochester, Office Of Technology Transfer Mechanism to support flexible decoupled transactional memory
    US8429386B2 (en) * 2009-06-30 2013-04-23 Oracle America, Inc. Dynamic tag allocation in a multithreaded out-of-order processor
    US8868506B1 (en) * 2010-06-17 2014-10-21 Evolphin Software, Inc. Method and apparatus for digital asset management
    US8818963B2 (en) 2010-10-29 2014-08-26 Microsoft Corporation Halloween protection in a multi-version database system
    US9086890B2 (en) * 2012-01-06 2015-07-21 Oracle International Corporation Division unit with normalization circuit and plural divide engines for receiving instructions when divide engine availability is indicated
    US10474645B2 (en) 2014-02-24 2019-11-12 Microsoft Technology Licensing, Llc Automatically retrying transactions with split procedure execution
    US20180011892A1 (en) 2015-01-29 2018-01-11 Hewlett Packard Enterprise Development Lp Foster twin data structure
    US9864774B2 (en) * 2015-06-23 2018-01-09 International Business Machines Corporation Granular buffering of metadata changes for journaling file systems
    US10795881B2 (en) * 2015-12-18 2020-10-06 Sap Se Table replication in a database environment
    US10489518B1 (en) * 2016-03-03 2019-11-26 Nutanix, Inc. Virtual machine object version control
    US10146606B2 (en) 2016-04-06 2018-12-04 Dell Products, Lp Method for system debug and firmware update of a headless server
    US10545950B2 (en) 2016-09-26 2020-01-28 Amazon Technologies, Inc. Atomic application of multiple updates to a hierarchical data structure
    US10346386B2 (en) 2016-11-04 2019-07-09 Salesforce.Com, Inc. Multiversion concurrency control of database records with uncommitted transactions
    US10552372B2 (en) * 2017-01-31 2020-02-04 Microsoft Technology Licensing, Llc Systems, methods, and computer-readable media for a fast snapshot of application data in storage
    US10977227B2 (en) 2017-06-06 2021-04-13 Sap Se Dynamic snapshot isolation protocol selection
    US20200389309A1 (en) * 2017-07-10 2020-12-10 Burstiq Analytics Corporation Systems and methods for accessing digital assets in a blockchain using owner consent contracts
    KR102348418B1 (ko) 2017-07-11 2022-01-07 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
    US10795877B2 (en) 2017-12-04 2020-10-06 Sap Se Multi-version concurrency control (MVCC) in non-volatile memory
    US10698920B2 (en) * 2017-12-22 2020-06-30 Dropbox, Inc. Techniques for a linearizable primary-secondary database system that replicates database data with eventual consistency
    EP3759865B1 (de) * 2018-02-27 2024-04-03 Visa International Service Association Datenintegrität mit hohem durchsatz durch vertrauenswürdige berechnung
    US10754565B2 (en) * 2018-04-23 2020-08-25 Google Llc Systems and methods for deferred lock enforcement
    US20190342380A1 (en) 2018-05-07 2019-11-07 Microsoft Technology Licensing, Llc Adaptive resource-governed services for performance-compliant distributed workloads
    EP3794458B1 (de) * 2018-05-14 2023-06-14 Dianemo Limited LTD System und verfahren für eine verteilte datenbank
    US20210174432A1 (en) 2018-08-07 2021-06-10 Perpetual Altruism Limited Computer implemented method and system for updating a database system for a blockchain version control system; computer implemented methods of auctioning an item for a seller, and computer implemented method of updating a smart contract
    EP3669268A4 (de) * 2019-09-12 2020-12-23 Alibaba Group Holding Limited Protokollstrukturierte speichersysteme
    US11436212B2 (en) 2020-09-22 2022-09-06 Snowflake Inc. Concurrent transaction processing in a database system
    US11468032B2 (en) 2020-09-22 2022-10-11 Snowflake Inc. Concurrent transaction processing in a database system

    Also Published As

    Publication number Publication date
    US11468032B2 (en) 2022-10-11
    WO2022066257A1 (en) 2022-03-31
    US11709818B2 (en) 2023-07-25
    US20220092051A1 (en) 2022-03-24
    EP4217888A1 (de) 2023-08-02
    US20230325376A1 (en) 2023-10-12
    US20230011046A1 (en) 2023-01-12
    EP4217888A4 (de) 2024-10-23
    CN116249978A (zh) 2023-06-09

    Similar Documents

    Publication Publication Date Title
    DE202020005687U1 (de) Gemeinsame Datennutzung bzw. Datenteilung und materilisierte Ansichten in Datenbanken
    US9767131B2 (en) Hierarchical tablespace space management
    DE202021004295U1 (de) Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem
    DE202019005484U1 (de) Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen
    DE202020005681U1 (de) Tabellen mit Journal in Datenbanksystemen
    DE202020005680U1 (de) Abfragen über externe Tabellen in Datenbanksystemen
    US10754854B2 (en) Consistent query of local indexes
    DE202020005734U1 (de) Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen
    DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
    DE102016105472A1 (de) Speicherebenenverteilung und parallele Zuordnung auf Blockebene bei Dateisystemen
    DE202020005682U1 (de) Automatisierte erneute Abfrageversuche in einer Datenbankumgebung
    US11436212B2 (en) Concurrent transaction processing in a database system
    US11809916B2 (en) Deadlock detection in distributed databases
    DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
    DE202023104916U1 (de) Verteilte Ausführung von transaktionalen Abfragen
    DE202023102700U1 (de) Datenaufnahmereplizierung und Notfallwiederherstellung
    US10872073B1 (en) Lock-free updates to a data retention index
    US20240176775A1 (en) Datastore workload isolation
    US11514080B1 (en) Cross domain transactions
    US20230350921A1 (en) Database processing using hybrid key-value tables
    US11704305B1 (en) Optimizations for long-lived statements in a database system
    US11709808B1 (en) Schema evolution for the serialization of non-primary key columnar data into row-organized byte sequences
    US11709866B2 (en) Scalable compaction in a concurrent transaction processing distributed database
    US20230195719A1 (en) Optimizations to read and write transactions for large values in distributed databases

    Legal Events

    Date Code Title Description
    R207 Utility model specification
    R150 Utility model maintained after payment of first maintenance fee after three years