DE202019005723U1 - Aufgabenplanung in Datenbanksystemen - Google Patents

Aufgabenplanung in Datenbanksystemen Download PDF

Info

Publication number
DE202019005723U1
DE202019005723U1 DE202019005723.4U DE202019005723U DE202019005723U1 DE 202019005723 U1 DE202019005723 U1 DE 202019005723U1 DE 202019005723 U DE202019005723 U DE 202019005723U DE 202019005723 U1 DE202019005723 U1 DE 202019005723U1
Authority
DE
Germany
Prior art keywords
transaction
change tracking
stream
data
task
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
DE202019005723.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 DE202019005723U1 publication Critical patent/DE202019005723U1/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/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Landscapes

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

Abstract

Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen:
Ausführen einer Transaktion an einer ersten Tabelle, wobei die erste Tabelle Datenbankdaten umfasst, wobei das Ausführen der Transaktion ein Erzeugen einer zweiten Tabelle entsprechend einer neuen Version der ersten Tabelle umfasst, wobei die zweite Tabelle eine von der ersten Tabelle separate Tabelle ist;
nachdem die Transaktion vollständig ausgeführt ist, basierend wenigstens teilweise auf der zweiten Tabelle, die als die separate Tabelle erzeugt ist, Erzeugen eines Änderungsnachverfolgungseintrags, wobei der Änderungsnachverfolgungseintrag einen Hinweis auf wenigstens eine an der ersten Tabelle durch das Ausführen der Transaktion vorgenommene Modifikation umfasst;
Voranbringen eines Änderungsnachverfolgungsstroms wenigstens teilweise durch Eingeben des erzeugten Änderungsnachverfolgungseintrags in den Änderungsnachverfolgungsstrom, wobei das Voranbringen des Änderungsnachverfolgungsstroms ein Voranbringen eines Strom-Offsets und einer Zurückbehaltungsgrenze im Änderungsnachverfolgungsstrom umfasst, wobei der Strom-Offset einer ersten Position im Änderungsnachverfolgungsstrom entspricht und die Zurückbehaltungsgrenze einer zweiten Position im Änderungsnachverfolgungsstrom entspricht, wobei der Änderungsnachverfolgungsstrom eine Reihe von festgeschriebenen Transaktionen enthält; und
in Reaktion auf ein Auslöseereignis, das das Voranbringen des Änderungsnachverfolgungsstroms enthält, automatisch Ausführen einer vordefinierten Aufgabe an der zweiten Tabelle und Erzeugen eines Aufgabenhistorieneintrags, der anzeigt, dass die Aufgabe erfolgreich ausgeführt wurde.

Description

  • QUERVERWEIS AUF ZUGEHÖRIGE ANMELDUNG
  • Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung mit der seriellen Nr. 16/203,322 , eingereicht am 28. November 2018, deren Inhalte hierin in ihrer Gesamtheit durch Bezugnahme enthalten sind.
  • Um als Gebrauchsmuster geschützt und Gegenstand davon zu sein, gibt es gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren. In einem Fall, in welchem in der Beschreibung Bezug auf Verfahren genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen darzustellen, für welche mit den enthaltenen Ansprüchen Schutz gesucht wird.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Systeme und Vorrichtungen für Datenbanken und bezieht sich insbesondere auf ein Planen von Aufgaben, die an Datenbankdaten ausgeführt werden sollen.
  • HINTERGRUND
  • Datenbanken werden weit verbreitet zur Datenspeicherung und für einen Zugriff bei Computeranwendungen verwendet. Datenbanken können eine oder mehrere Tabellen enthalten, die Daten enthalten oder darauf Bezug nehmen, die unter Verwendung von Abfragen gelesen, modifiziert oder gelöscht werden können. Auf diese Daten kann durch verschiedene Anwender in einer Organisation zugegriffen werden oder sie können sogar zur Bedienung öffentlicher Anwender verwendet werden, wie beispielsweise über eine Website oder eine Anwendungsprogrammschnittstelle (API). Sowohl Computer- als auch Speicherressourcen sowie ihre zugrundeliegende Architektur können eine wichtige Rolle beim Erreichen einer erwünschten Leistungsfähigkeit von Datenbanken spielen.
  • Aufgaben oder Befehle könne an Datenbankdaten ausgeführt werden, um die Daten zu manipulieren oder zu abzuändern. Solche Aufgaben können durch ein Client-Konto angefordert werden und können Datenbankdaten manipulieren, um sie nützlicher für das Client-Konto zu machen. Bei bestimmten Implementierungen kann es von Vorteil sein, die automatische Ausführung von bestimmten Aufgaben zu planen, um Datenbanksysteme zu rationalisieren.
  • Figurenliste
  • Nicht beschränkende und nicht erschöpfende Ausführungsformen der vorliegenden Offenbarung werden unter Bezugnahme auf die folgenden Figuren beschrieben, wobei sich gleiche Bezugszeichen auf gleiche Teile überall in den verschiedenen Figuren beziehen, solange es nicht anders spezifiziert ist.
    • 1 ist ein schematisches Blockdiagramm eines Prozessablaufs für eine Datenaufnahme gemäß einer Ausführungsform;
    • 2 ist ein schematisches Blockdiagramm einer Tabellenhistorie und eines Änderungsnachverfolgungsstroms gemäß einer Ausführungsform;
    • 3 ist ein Blockdiagramm, das an Tabellenversionen vorgenommene Modifikationen gemäß einer Ausführungsform darstellt;
    • 4 ist ein Blockdiagramm einer Abfragepipeline gemäß einer Ausführungsform;
    • 5 ist ein Blockdiagramm eines Änderungsnachverfolgungsstroms gemäß einer Ausführungsform;
    • 6 ist ein schematisches Diagramm von Transaktionszeitachsen bzw. -plänen für Datenbankdaten gemäß einer Ausführungsform;
    • 7 ist ein Blockdiagramm, das einen an einer Mikropartition einer Datenbank durchgeführten Löschbefehl gemäß einer Ausführungsform darstellt;
    • 8 ist ein Blockdiagramm, das einen an einer Mikropartition einer Datenbank durchgeführten Einfügebefehl gemäß einer Ausführungsform darstellt;
    • 9 ist ein Blockdiagramm, das einen an einer Mikropartition einer Datenbank durchgeführten Aktualisierungsbefehl gemäß einer Ausführungsform darstellt;
    • 10 ist ein Blockdiagramm, das ein Datenbanksystem mit einem Datenbank-Servicemanager gemäß einer Ausführungsform darstellt;
    • 11 ist ein Blockdiagramm, das Komponenten eines Datenbank-Servicemanagers gemäß einer Ausführungsform darstellt;
    • 12 ist ein Blockdiagramm, das Komponenten eines Aufgabenausführungsmanagers gemäß einer Ausführungsform darstellt;
    • 13 ist ein schematisches Ablaufdiagramm, das ein Verfahren zum Planen von Aufgaben an Datenbankdaten gemäß einer Ausführungsform darstellt;
    • 14 ist ein schematisches Ablaufdiagramm, das ein Verfahren zum Planen von Aufgaben an Datenbankdaten gemäß einer Ausführungsform darstellt; und
    • 15 ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung darstellt, die mit wenigstens einer Ausführungsform von hierin offenbarten Prozessen und Systemen übereinstimmend ist.
  • DETAILLIERTE BESCHREIBUNG
  • Systeme, Verfahren und Vorrichtungen zum Planen von an Datenbankdaten auszuführenden Aufgaben werden offenbart. Aufgaben, wie beispielsweise SQL-(= Structured Query Language (dt. strukturierte Abfragesprache))Anweisungen können an Datenbankdaten ausgeführt werden, um die Daten zu manipulieren oder zu abzuändern. Eine Aufgabe kann irgendeine Funktion enthalten und kann von einem Client-Konto empfangene anwenderdefinierte Logik enthalten. Bei bestimmten Implementierungen kann es von Vorteil sein, die automatische Ausführung einer Aufgabe in Reaktion auf ein oder mehrere Trigger- bzw. Auslöseereignisse zu planen. Bei einer Ausführungsform kann eine Aufgabenausführung durch die vollständige Ausführung einer Transaktion, wie beispielsweise Einfügen, Löschen oder Updaten bzw. Aktualisieren von Datenbankdaten, ausgelöst werden.
  • Transaktionen, wie beispielsweise EINFÜGE-, LÖSCH-, ZUSAMMENFÜHRUNGS- oder AKTUALISIERUNGS-Befehle, können an einer Datenbanktabelle ausgeführt werden. Es kann von Vorteil sein, Änderungen nachzuverfolgen, die an einer Datenbanktabelle aufgetreten sind, und, bei bestimmten Ausführungsformen, eine Aufgabe auszulösen, die an einer Datenbanktabelle in Reaktion auf eine Transaktion auszuführen ist, die in der Tabelle ausgeführt worden ist. Die Änderungsnachverfolgung ist in der Vergangenheit sehr kostspielig und erfordert erhebliche Ressourcen und Speicherkapazität. Wie es hierin offenbart ist, kann ein Änderungsnachverfolgungsstrom erzeugt werden, der eine oder mehrere Versionen einer Datenbanktabelle anzeigt, und wie die Tabelle im Laufe der Zeit modifiziert worden ist. Der Änderungsnachverfolgungsstrom stellt eine kostengünstiges Mittel zum Zusammenzufassen von allen Transaktionen zur Verfügung, die im Laufe der Zeit auf bzw. an der Tabelle ausgeführt worden sind und wann diese Transaktionen auftraten.
  • Aufgaben, wie beispielsweise anwenderdefinierte Logik oder SQL-Anweisungen, können in Reaktion auf ein Auslöseereignis an Datenbankdaten ausgeführt werden. Bei einer Ausführungsform wird eine Aufgabe in Reaktion auf den das Fortschreiten des Änderungsnachverfolgungsstroms ausgeführt, nachdem eine Transaktion an den Datenbankdaten vollständig ausgeführt worden ist. Dies kann erhebliche Vorteile gegenüber anderen im Stand der Technik bekannten Aufgabenplanungsmitteln zur Verfügung stellen, indem sichergestellt wird, dass die Aufgabe nur einmal an einem bestimmten Datensatz ausgeführt wird, und weiterhin indem sichergestellt wird, dass eine Aufgabe an allen neu aufgenommenen Daten ausgeführt wird. Bei einer Ausführungsform wird dies durch ein Änderungsnachverfolgungssystem in der Datenbank ermöglicht, das einen Änderungsnachverfolgungsstrom erzeugt. Der Änderungsnachverfolgungsstrom nimmt an Transaktionen teil, die Tabellendaten ähnlich sind, so dass der Änderungsnachverfolgungsstrom fortschreiten wird, wenn sich die Transaktion festlegt oder anderweitig unmodifiziert bleibt.
  • Eine Datenbanktabelle kann Daten in einer Vielzahl von Mikropartitionen speichern, wobei die Mikropartitionen unveränderliche Speichervorrichtung sind. Wenn eine Transaktion an einer solchen Tabelle ausgeführt wird, werden alle betroffenen Mikropartitionen neu erstellt, um neue Mikropartitionen zu erzeugen, die die Modifikationen der Transaktion widerspiegeln. Nachdem eine Transaktion vollständig ausgeführt ist, können irgendwelche ursprünglichen Mikropartitionen, die neu erstellt wurden, dann aus der Datenbank entfernt werden. Nach jeder Transaktion, die an der Tabelle ausgeführt ist, wird eine neue Version der Tabelle erzeugt. Die Tabelle kann sich über eine Zeitperiode hinweg vielen Versionen unterziehen, wenn sich die Daten in der Tabelle vielen Änderungen unterziehen, wie beispielsweise Einfügungen, Löschungen, Aktualisierungen und/oder Zusammenführungen. Jede Version der Tabelle kann Metadaten enthalten, die anzeigen, welche Transaktion die Tabelle erzeugte, wann die Transaktion bestellt wurde, wann die Transaktion vollständig ausgeführt wurde und wie die Transaktion eine oder mehrere Zeilen in der Tabelle abänderte. Die offenbarten Systeme, Verfahren und Vorrichtungen für eine kostengünstige Tabellenversionsbildung können genutzt werden, um ein effizientes Mittel zum Auslösen von Aufgaben zur Verfügung zu stellen, die in Reaktion auf eine an den Daten vorgenommene Modifikation an Datenbankdaten auszuführen sind.
  • Information zur Änderungsnachverfolgung kann als Metadaten in einer Datenbank gespeichert werden. Diese Metadaten beschreiben die Daten, die in Datenbanktabellen von Kunden gespeichert sind, aber nicht tatsächlich die gespeicherten Tabellendaten sind. Metadaten können sehr groß werden, insbesondere wenn es große Datenbanktabellen von vielen Kunden gibt. Aktuelle Datenbanksysteme haben strenge Einschränkungen beim Handhaben großer Mengen an Metadaten. Aktuelle Datenbanksysteme speichern Metadaten in veränderbaren Speichervorrichtungen und Diensten, einschließlich von einem Hauptspeicher, Dateisystemen und Schlüssel-Wert-Speichern. Diese Vorrichtungen und Dienste lassen zu, dass die Metadaten vor Ort aktualisiert werden. Wenn sich eine Datenaufzeichnung ändert, kann sie mit der neuen Information aktualisiert werden und wird die alte Information überschrieben. Dies lässt zu, dass Datenbanken auf einfache Weise veränderbare Metadaten unterhalten, indem Metadaten vor Ort aktualisiert werden.
  • Diese veränderbaren Speichervorrichtungen und Dienste haben jedoch Einschränkungen. Die Einschränkungen sind wenigstens zweifach. Erstens haben veränderbare Speichervorrichtungen, wie beispielsweise ein Hauptspeicher und Dateisysteme, eine harte Grenze in Bezug auf Speicherkapazität. Überschreitet die Größe der Metadaten diese Grenzen, ist es unmöglich, dort weitere Metadaten zu speichern. Zweitens schneiden veränderbare Speicherdienste, wie beispielsweise Schlüssel-Wert-Speicher, beim Lesen großer Volumen an Metadaten schlecht ab. Ein Lesen von Daten wird unter Verwendung von Bereichsscans durchgeführt, die eine lange Zeit brauchen, um fertig zu werden. In der Praxis können Bereichsscans bei Nutzungen großen Ausmaßes viele Minuten brauchen oder sich sogar einer Stunde nähern, um fertig zu werden.
  • Diese Einschränkungen machen es unmöglich, große Mengen an Metadaten in existierenden veränderbaren Speichervorrichtungen und Diensten zu speichern. Die hierin offenbarten Systeme, Verfahren und Vorrichtungen sorgen für ein verbessertes Speichern und Management von Metadaten, einschließlich eines Speicherns von Metadaten in einem unveränderlichen (nicht veränderbaren) Speicher, wie beispielsweise Mikropartitionen. Wie er hierin verwendet ist, enthält ein unveränderlicher oder nicht veränderbarer Speicher einen Speicher, bei welchem Daten nicht überschrieben oder nicht an Ort und Stelle aktualisiert werden können oder dürfen. Zum Beispiel können Änderungen an Daten, die in einer Zelle oder einem Bereich von Speichermedien angeordnet sind, als neue Datei in einer anderen Zelle oder einem anderen Bereich, mit Zeitstempel, der Speichermedien gespeichert werden. Ein veränderbarer Speicher kann einen Speicher enthalten, bei welchem zugelassen ist, dass Daten überschrieben oder an Ort und Stelle aktualisiert werden. Zum Beispiel können Daten in einer gegebenen Zelle oder einem gegebenen Bereich der Speichermedien überschrieben werden, wenn es Änderungen an den Daten gibt, die für diese Zelle oder diesen Bereich der Speichermedien relevant sind.
  • Bei einer Ausführungsform werden Metadaten auf nicht veränderbaren Speicherdiensten in der Cloud gespeichert und unterhalten bzw. verwaltet. Diese Speicherdienste können zum Beispiel Amazon S3 Ⓡ, Microsoft Azure Blob Storage ® und Google Cloud Storage ® enthalten. Viele dieser Dienste erlauben nicht, Daten an Ort und Stelle zu aktualisieren (d.h. sie sind nicht veränderbar oder unveränderlich). Datendateien können nur hinzugefügt oder gelöscht, aber niemals aktualisiert werden. Bei einer Ausführungsform erfordert das Speichern und Halten bzw. Verwalten von Metadaten auf diesen Diensten, dass für jede Änderung bezüglich der Metadaten dem Speicherdienst eine Metadatendatei hinzugefügt wird. Diese Metadatendateien können periodisch in größere „komprimierte“ oder konsolidierte Metadatendateien im Hintergrund konsolidiert werden.
  • Bei einer Ausführungsform werden alle Daten in Tabellen automatisch in eine unveränderliche Speichervorrichtung unterteilt, auf die als Mikropartition Bezug genommen wird. Die Mikropartition kann als Chargenmengeneinheit betrachtet werden, bei der jede Mikropartition über zusammenhängende Speichereinheiten verfügt. Beispielsweise kann jede Mikropartition zwischen 50 MB und 500 MB unkomprimierte Daten enthalten (es ist zu beachten, dass die tatsächliche Speichergröße kleiner sein kann, weil Daten komprimiert gespeichert werden können). Gruppen von Zeilen in Tabellen können in einzelne Mikropartitionen abgebildet werden, die spaltenweise organisiert sind. Diese Größe und Struktur ermöglichen ein extrem granuläres Beschneiden von sehr großen Tabellen, die aus Millionen oder sogar Hunderten von Millionen von Mikropartitionen bestehen können. Metadaten können automatisch über alle Zeilen gesammelt werden, die in einer Mikropartition gespeichert sind, einschließlich: des Wertebereichs für jede der Spalten in der Mikropartition; der Anzahl von unterschiedlichen Werten; und/oder zusätzlicher Eigenschaften, die sowohl für eine Optimierung als auch für eine effiziente Abfrageverarbeitung verwendet werden. Bei einer Ausführungsform kann eine Mikropartitionierung automatisch für alle Tabellen durchgeführt werden. Zum Beispiel können Tabellen transparent partitioniert werden, indem die Reihenfolge verwendet wird, die beim Einfügen/Laden der Daten auftritt.
  • Nachstehend wird eine detaillierte Beschreibung der Systeme und Verfahren, die mit Ausführungsformen der vorliegenden Offenbarung übereinstimmen, zur Verfügung gestellt. Während mehrere Ausführungsformen beschrieben werden, sollte es verstanden werden, dass diese Offenbarung nicht auf irgendeine Ausführungsform beschränkt ist, sondern stattdessen zahlreiche Alternativen, Modifikationen und Äquivalente umfasst. Zusätzlich können, während in der folgenden Beschreibung zahlreiche spezifische Details dargelegt sind, um ein gründliches Verständnis der hierin offenbarten Ausführungsformen zu vermitteln, einige Ausführungsformen ohne einige oder alle diese Details ausgeführt werden. Darüber hinaus ist aus Gründen der Klarheit bestimmtes technisches Material, das im zugehörigen Stand der Technik bekannt ist, nicht detailliert beschrieben, um eine unnötige Verschleierung der Offenbarung zu vermeiden.
  • Bei einer Ausführungsform wird ein Verfahren zum Planen von auf einer Datenbank auszuführenden Aufgaben offenbart. Das Verfahren enthält ein Ausführen einer Transaktion an einer Tabelle, die Datenbankdaten umfasst, wobei ein Ausführen der Transaktion ein Erzeugen einer neuen Tabellenversion umfasst. Das Verfahren enthält in Reaktion darauf, dass die Transaktion vollständig ausgeführt ist, ein Erzeugen eines Änderungsnachverfolgungseintrags, der einen Hinweis auf eine oder mehrere Modifikationen enthält, die durch die Transaktion an der Tabelle vorgenommen sind, und ein Speichern des Änderungsnachverfolgungseintrags in einem Änderungsnachverfolgungsstrom. Das Verfahren enthält ein Ausführen einer Aufgabe an der neuen Tabellenversion in Reaktion auf ein Trigger- bzw. Auslöseereignis.
  • Bei einer Ausführungsform enthält das Verfahren weiterhin ein Voranbringen eines Strom-Offsets im Änderungsnachverfolgungsstrom in Reaktion auf die vom Änderungsnachverfolgungsstrom verbrauchte Änderungsnachverfolgungsinformation. Bei einer solchen Ausführungsform kann eine Transaktion (die einen Satz von an der Transaktion beteiligten Anweisungen enthalten kann) das Voranbringen des Strom-Offsets enthalten. Bei einer Ausführungsform enthält das Auslöseereignis eine oder mehrere Zeitperioden, eine Schwellenzahl von an der Tabelle vorgenommenen Modifikationen, eine Verfügbarkeit von einem oder mehreren Änderungsnachverfolgungseinträgen im Änderungsnachverfolgungsstrom oder die Verfügbarkeit von Änderungsnachverfolgungseinträgen im Änderungsnachverfolgungsstrom plus eine vordefinierte Zeitperiode.
  • Bei einer Ausführungsform enthält die Transaktion eines oder mehreres von einem Einfügen, einem Löschen, einer Zusammenführung oder eine Aktualisierung, ausgeführt an der Datenbanktabelle. Bei einer Ausführungsform können Datenmanipulationsanweisungen, die die Transaktion ausführen, ein Erzeugen von wenigstens einer neuen Mikropartition enthalten, die die Transaktion widerspiegelt, und ein Entfernen von einer oder mehreren existierenden Mikropartitionen, die die durch die Transaktion vorgenommenen Modifikationen nicht widerspiegeln. Bei einer Implementierung, bei welcher eine Vielzahl von neuen Mikropartitionen basierend auf einer Transaktion erzeugt wird, kann die Änderungsnachverfolgungsinformation eine Vielzahl von Änderungsnachverfolgungseinträgen enthalten, wobei jeder der Vielzahl von Änderungsnachverfolgungseinträgen an eine andere Mikropartition gerichtet wird, die durch die Transaktion modifiziert wurde. Die Änderungsnachverfolgungsinformation enthält Daten, die zu der Transaktion gehören, einschließlich, zum Beispiel, einer Identität eines Anwenders oder eines Kontos, der oder das die Transaktion initiierte, eines Zeitstempels, wann die Transaktion angefordert wurde, eines Zeitstempels, wann eine Ausführung der Transaktion begann, eines Zeitstempels, wann die Ausführung des Zeitstempels abgeschlossen wurde, einer Auflistung von allen Zeilen, die durch die Transaktion modifiziert wurden, und wie diese Zeilen modifiziert wurden, einer Auflistung von Mikropartitionen, die basierend auf der Transaktion erzeugt und/oder entfernt wurden, und irgendwelcher anderer geeigneter Information, die für die Transaktion relevant ist. Die Information zur Änderungsnachverfolgung enthält Daten in den Mikropartitionen, um ein Nachverfolgen der Abstammung von Tabellenzeilen über eine oder mehrere Mikropartitionen hinweg zu ermöglichen. Information zur Tabellenversionsbildung kann Information darüber enthalten, welche Mikropartitionen Teil einer bestimmten Tabellenversion sind, einschließlich dessen, welche Mikropartitionen hinzugefügt und entfernt wurden. Tabellenversionsbildungs- bzw. Tabellenversionsinformation kann weiterhin Transaktionsinformation einschließlich des Anfangs- und Endzeitstempels der Transaktion und/oder Abfrageinformation einschließlich dessen, welcher Anwender und welche Abfrage ausgeführt wurde, enthalten.
  • Bei einer Ausführungsform enthält die Änderungsnachverfolgungsinformation Information darüber, welche Zeilen durch eine Transaktion geändert wurden, welche Mikropartitionen durch eine Transaktion modifiziert wurden, wie die Zeilen und/oder Mikropartitionen durch die Transaktion modifiziert wurden, Information über frühere Modifikationen an der Tabelle, und so weiter. Der Änderungsnachverfolgungsstrom kann eine Abstammung von Modifikationen enthalten, die an der Tabelle vorgenommen sind, seitdem die Tabelle ursprünglich erzeugt wurde, oder seit einer bestimmten Zeit. Der Änderungsnachverfolgungsstrom kann eine Auflistung von Tabellenversionen der Tabelle enthalten, einschließlich aller Mikropartitionen, die aktuell Teil der Tabelle sind oder in der Vergangenheit Teil der Tabelle waren. Der Änderungsnachverfolgungsstrom kann in seiner eigenen Mikropartition gespeichert sein, oder als Metadaten innerhalb einer Mikropartition, die Datenbankdaten enthält.
  • Bei einer Ausführungsform werden Dateimetadaten innerhalb eines Metadatenspeichers gespeichert. Die Dateimetadaten enthalten Tabellenversionen und Information über jede Tabellendatendatei. Der Metadatenspeicher kann einen veränderbaren Speicher (einen Speicher, der überschrieben oder an Ort und Stelle beschrieben werden kann) enthalten, wie beispielsweise ein lokales Dateisystem, ein System, einen Arbeitsspeicher oder ähnliches. Bei einer Ausführungsform bestehen die Mikropartitionsmetadaten aus zwei Datensätzen: Tabellenversionen und Dateiinformation. Der Datensatz für Tabellenversionen enthält eine Zuordnung von Tabellenversionen zu Listen von hinzugefügten Dateien und entfernten Dateien. Dateiinformation besteht aus Information über jede Mikropartition, einschließlich, als Beispiel, eines Mikropartitionspfad, einer Mikropartitionsgröße, einer Mikropartitionsschlüssel-ID und von Zusammenfassungen von allen Zeilen und Spalten, die in der Mikropartition gespeichert sind. Jede Modifikation der Tabelle erstellt neue Mikropartitionen und neue Mikropartitionsmetadaten. Einfügungen in die Tabelle erstellen neue Mikropartitionen. Löschungen aus der Tabelle entfernen Mikropartitionen und fügen potentiell neue Mikropartitionen mit den übrigen Zeilen in einer Tabelle hinzu, wenn nicht alle Zeilen in einer Mikropartition gelöscht wurden. Aktualisierungen bzw. Updates entfernen Mikropartitionen und ersetzen sie durch neue Mikropartitionen mit Zeilen, die die aktualisierten Datensätze bzw. Aufzeichnungen enthalten.
  • Bei einer Ausführungsform können Metadaten, einschließlich einer Änderungsnachverfolgungsspalte, in Metadaten-Mikropartitionen in einem unveränderliche Speicher gespeichert werden. Bei einer Ausführungsform kann ein System Metadaten-Mikropartitionen für jede Modifikation einer Datenbanktabelle zu einem Cloud-Speicher schreiben. Bei einer Ausführungsform kann ein System Metadaten-Mikropartitionen herunterladen und lesen, um den Scansatz zu berechnen. Die Metadaten-Mikropartitionen können parallel heruntergeladen und gelesen werden, wenn sie empfangen werden, um eine Berechnung des Scansatzes zu verbessern. Bei einer Ausführungsform kann ein System Metadaten-Mikropartitionen im Hintergrund periodisch konsolidieren. Bei einer Ausführungsform können Leistungsverbesserungen, einschließlich Speichervorgriff bzw. Prefetching, Aufnehmen im Cache, spaltenförmiges Layout und dergleichen, enthalten sein. Weiterhin sind Sicherheitsverbesserungen, einschließlich Verschlüsselung und Integritätsprüfung, auch bei Metadatendateien mit spaltenförmigem Layout möglich.
  • 1 zeigt ein schematisches Blockdiagramm eines Prozessablaufs 100 zum Aufnehmen und Manipulieren von Datenbankdaten. Der Prozessablauf 100 enthält einen Daten-Lake 102, der bei einer alternativen Ausführungsform eine universelle Datenbank bzw. ein Datenlager enthalten kann. Der Daten-Lake 102 enthält Bucket-Dateien 104, die einen oder mehrere Dateneinträge enthalten, die in die Datenbank 106 aufzunehmen sind. Die Daten werden bei 108 in die Datenbank 106 bei einer Staging-Tabelle 110 aufgenommen. Eine Aufgabe wird bei 112 an den Daten ausgeführt, um die Daten in eine oder mehrere Zieltabellen zu transformieren, wie beispielsweise die Zieltabelle 1, die Zieltabelle 2 und/oder die Zieltabelle 3. Die Aufgabe kann zum Beispiel anwenderdefinierte Geschäftslogik enthalten, wie beispielsweise eine oder mehrere Transformationen, die an den Datenbankdaten auftreten, wie beispielsweise einen Zusammenführungs-, einen Aktualisierungs-, einen Lösch-, einen Einfüge- oder einen DML-(= Data Manipulation Language (dt. Datenmanipulationssprache))Befehl, sowie irgendeine geeignete Transaktion mit mehreren Anweisungen oder eine SQL-Anweisung. Bei einer Ausführungsform wird die Aufgabe durch einen Anwender definiert und wird in Reaktion auf ein Auslöseereignis, wie beispielsweise ein geplantes Timer-Ereignis, angewendet.
  • Der Prozessablauf 100 ist so, dass aus dem Daten-Lake 102 geladene Daten sich einer zusätzlichen Verarbeitung unterziehen können, wenn die Aufgabe bei 112 ausgeführt wird, bevor die Daten ihre endgültige Zielorttabelle erreichen. Ein Client-Konto kann eine SQL-Anweisung oder einen DML-Befehl bereitstellen, um die anwendbare Verarbeitungslogik für die Aufgabe auszudrücken. Bei einer Ausführungsform wird, wie es in 1 dargestellt ist, die Aufgabe an den Daten ausgeführt, nachdem sie in die Staging-Tabelle 110 geladen sind und bevor sie eine endgültige Zielorttabelle, wie beispielsweise die Zieltabelle 1, die Zieltabelle 2 und/oder die Zieltabelle 3, erreichen. Die Staging-Tabelle 110 kann verwendet werden, um Daten auf kontinuierliche und serverlose Weise zu laden. Daten, die in die Staging-Tabelle 110 aufgenommen worden sind, können durch die bei 112 ausgeführte Aufgabe weiter modifiziert werden, bevor die Daten ihre eine oder mehrere endgültige Zielort-tabellen erreichen.
  • Die bei 112 ausgeführte Aufgabe kann anwenderdefiniert sein. Solche Aufgaben können eine gespeicherte Prozedur enthalten, die ein Mittel zur Verfügung stellt, um zum Beispiel eine Sequenz von auf die Daten, die in die Staging-Tabelle 110 aufgenommen werden, anzuwendende SQL-Anweisungen zu definieren. Ein Änderungsnachverfolgungsstrom kann genutzt werden, um Änderungen aus einer Staging-Tabelle 110 auf eine Transaktionsweise abzurufen bzw. wiederzugewinnen und ein Delta zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel nur einmal zu verbrauchen. Auf die Aufgabe kann im Katalog der Datenbank 106 als Objekt Bezug genommen werden und sie kann eine Ablaufsteuerungslogik enthalten. Die Aufgabe kann eine wiederkehrende Aufgabe enthalten, die kontinuierlich verarbeitet wird, wenn Daten aufgenommen werden und/oder Eingaben im Laufe der Zeit modifiziert werden. Die Aufgabe kann in Reaktion auf ein Auslöseereignis ausgeführt werden.
  • Ein Aufgabenplanung kann Datenbankanwendern zahlreiche Vorteile zur Verfügung stellen und es solchen Anwendern ermöglichen, wiederholte Aufgaben an aufgenommenen Datenbankdaten zu planen und/oder Aufgaben in Reaktion auf ein oder mehrere Auslöseereignisse zu planen. Aufgaben wie beispielsweise diejenigen Aufgaben, die bei 112 ausgeführt werden, stellen einen Planungsmechanismus zur Verfügung, der eine Notwendigkeit zunichtemachen kann, auf einen externen Job für allgemeine Planungsnotwendigkeiten für SQL-Jobs zurückzugreifen. Weiterhin ermöglichen Aufgaben, dass Staging-Tabellen 110 mit nachgelagerten Tabellen, wie beispielsweise der Zieltabelle 1, der Zieltabelle 2 und/oder der Zieltabelle 3 mit regelmäßig verarbeiteter Logik verbunden werden, die neue Daten aus der Staging-Tabelle 110 herausnimmt und die Daten in eine für die Zieltabelle erforderliche Form transformiert bzw. umwandelt.
  • Bei einer Ausführungsform kann eine Aufgabe, wie beispielsweise die bei 112 ausgeführte Aufgabe, von einem Client-Konto in der Form einer SQL-Anweisung empfangen werden, die eine oder mehrere Aufgaben definiert, die an den aufgenommenen Daten durchzuführen sind. Die Aufgabe kann so geplant werden, dass sie in Reaktion auf ein Auslöseereignis ausgeführt wird. Ein oder mehrere Auslöseereignisse können veranlassen, dass eine Ausführung der Aufgabe in vordefinierten Intervallen oder basierend auf einer vordefinierten Schwelle wiederholt wird. Bei einer Ausführungsform ist das Auslöseereignis die Ausführung einer Transaktion an der Datenbank, wobei die Transaktion eines oder mehreres von ein Einfügen, einem Löschen oder einem Aktualisieren an Datenbankdaten enthält. Bei einer Ausführungsform ist das Auslöseereignis das Voranbringen eines Änderungsnachverfolgungsstroms in Reaktion auf eine Transaktion, die vollständig an einer Datenbanktabelle ausgeführt ist. Bei einer Ausführungsform ist das Auslöseereignis das Voranbringen des Änderungsnachverfolgungsstroms plus eines vordefinierten Zeitintervalls, wie zum Beispiel 10 Sekunden, nachdem dem Änderungsnachverfolgungsstrom ein Änderungsnachverfolgungseintrag hinzugefügt wurde, 5 Minuten, nachdem dem Änderungsnachverfolgungsstrom ein Änderungsnachverfolgungseintrag hinzugefügt wurde, und so weiter. Bei einer Ausführungsform kann eine solche Aufgabenplanung Szenarien vermeiden, bei welchen mehrere Inkarnationen einer Aufgabe gleichzeitig ausgeführt werden.
  • Bei einer Ausführungsform ist die Aufgabe Teil des Datenbankschemas. Die Aufgabe kann Information über eines oder mehreres von folgenden enthalten: ein Datum, zu welchem die Aufgabe erstellt wurde, einen Namen der Ausgabe, einen Datenbanknamen, auf welchen die Aufgabe angewendet werden sollte, ein Schema, zu welchem die Aufgabe gehört, einen Kommentar, der an die Aufgabe angehängt ist, einen Besitzer oder Ersteller der Aufgabe, ein Datum, zu welchem die Aufgabe zuerst initiiert wurde, einen Zeitplan für die Aufgabe, eine Verbindungszeichenfolge, ein SQL-Skript, einen Status für die Aufgabe, wie beispielsweise ob die Aufgabe läuft bzw. in Betrieb ist oder beendet ist, eine letzte Ausführungszeit, wie beispielsweise einen Zeitstempel für die letzte vollständige Ausführung der Aufgabe, oder einen letzten Ausführungsstatus, wie beispielsweise einen Hinweis darauf, ob die Aufgabe erfolgreich ausgeführt wurde bzw. in Betrieb war, oder einen Fehler, den die Aufgabe zurückgegeben hat, wenn sie nicht erfolgreich ausgeführt werden konnte. Bei einer Ausführungsform kann eine Aufgabe durch ein Anwenderkonto gemanagt und/oder modifiziert werden, nachdem die Aufgabe erzeugt oder ausgeführt worden ist.
  • Bei einer Ausführungsform wird ein Aufgabenverlauf bzw. eine Aufgabenhistorie erzeugt, der bzw. die anzeigt, ob eine Aufgabe erfolgreich oder nicht erfolgreich ausgeführt wurde. Die Aufgabenhistorie kann Metadaten über die Daten enthalten, einschließlich von zum Beispiel einem Minimum/Maximum-Wertpaar für die relevanten Daten, einem Zeitstempel, wann die relevanten Daten aufgenommen wurden, einen Zeitstempel, wann die relevanten Daten erzeugt wurden, und so weiter. Zusätzlich kann die Aufgabenhistorie Information darüber enthalten, wie die Daten modifiziert wurden, wann die Daten modifiziert wurden, wie lange es dauerte, die Aufgabe auszuführen, wie viel Verarbeitungskapazität zum Ausführen der Aufgabe erforderlich war, und so weiter. Bei einer Ausführungsform sind Start- und Endzeitparameter für den Aufgabenhistorienaufruf optional. Bei einer Ausführungsform kann die Aufgabenhistorie, um sich nach einem Verhalten von ähnlichen Historienaufrufen zu richten, eine geeignete vergangene Zeitperiode melden, wie zum Beispiel eine Woche in die Vergangenheit, einen Monat in die Vergangenheit, und so weiter. Bei einer Ausführungsform enthält die Aufgabenhistorie eines oder mehreres von folgendem: einen Aufgabennamen, eine Aufgabenidentifikation, einen Ausführungszeitstempel und eine Ausführungskorrelationsidentifikation, einen Ausführungsstatus, wie beispielsweise ERFOLG oder FEHLER, der einen Fehlercode enthalten kann, eine an die Aufgabe angehängte Nachricht oder Ergebnisse, die von einer SQL-Anweisung zurückgegeben werden, die durch die Aufgabe ausgeführt wird.
  • Bei einer Ausführungsform ist eine Aufgabe, wie beispielsweise die bei 112 ausgeführte Aufgabe, eine Ausführung eines SQL-Codes, der in der Datenbank 106 eingebettet ist oder auf den Bezug genommen wird. Die Aufgabe kann basierend auf einem Plan initiiert werden, der durch einen Anwender in einer Aufgabendefinition definiert ist. Bei einer Ausführungsform erlaubt eine aktuelle Plandefinition keine überlappenden Ausführungen derselben Aufgabendefinition. Eine Ausführung der Aufgabe bei 112 verwendet den Kontext der Aufgabe, um den Ausführungskontext herauszunehmen bzw. auszuwählen (z.B. Datenbank, Schema etc.).
  • Ein Aufgabenplan kann eine WARTE-Bedingung oder alternativ eine PLAN-Eigenschaft enthalten, die einen Ausdruck definiert, um eine zeitbasierte Ausführung auszulösen. Eine solche zeitbasierte Ausführung kann eine einfache Intervalldefinition oder einen CRON-Ausdruck enthalten. Die WARTE-Bedingung ist ein Ausdruck, der vor dem Ausführen der Aufgabe ausgewertet bzw. bewertet wird. Wenn der Ausdruck mit falsch bewertet wird, wird die Aufgabenausführung übersprungen werden. Solche Ausdrücke können ein Bezugnehmen auf einen Strom, wie beispielsweise einen Änderungsnachverfolgungsstrom (siehe 202), zulassen, der zulässt, über eine Aktivität von einem oder mehreren Strömen nachzudenken, zum Beispiel zu überprüfen, ob der Strom leer ist oder Änderungen aus zugrundeliegenden bzw. darunter liegenden Tabellen enthält. Eine Aufgabe kann eine Vielzahl von Stromüberprüfungen mit UND und/oder ODER in einen größeren booleschen Ausdruck mit dem Erfordernis enthalten, dass der boolesche Ausdruck wahr sein muss, damit die SQL-Aktivität initiiert wird.
  • Bei einer Ausführungsform kann eine Aufgabe ohne die Eigenschaften WARTEN und PLAN anzeigen, dass das zugrundeliegende System die Aufgabe nach bestem Bemühen basierend auf einem internen Plan, Datenänderungsbenachrichtigungen oder einfach unter Verwendung einer kontinuierlichen Ausführung einer in der Aufgabe definierten Abfrage auf kontinuierliche Weise ausführen wird.
  • Bei einer Ausführungsform können sich mehrere Anwendungen derselben Aufgabe nicht überlappen bzw. überschneiden. Bei einer solchen Ausführungsform kann dann, wenn eine frühere bzw. vorherige Aufgabenausführung 112 noch verarbeitet wird, die nächste Ausführung noch nicht initiiert werden. Stattdessen kann die nächste Ausführung übersprungen werden oder sie kann zu einem späteren Zeitpunkt basierend auf einem regulären Aufgabenplan initiiert werden.
  • Der Prozessablauf 100 kann als Auto-Ingest-Framework bzw. Framework zur automatischen Aufnahme (von Daten) implementiert sein, um Dateien effizient in Zieltabellen zu laden. Der Prozessablauf 100 kann eine verbesserte Aufnahmepipeline gegenüber anderen im Stand der Technik bekannten Implementierungen zur Verfügung stellen. Bei verschiedenen Implementierungen kann der Prozessablauf 100 eines oder mehreres von folgendem erlauben: Daten aus der anfänglichen Staging-Tabelle 110 in mehrere andere Zieltabellen zu laden, Daten in die anfängliche Staging-Tabelle 110 zu laden und dann in andere Zieltabellen zusammenzuführen bzw. zu integrieren, oder den Ausdruck von komplexen Arbeitsabläufen, da eine oder mehrere Aufgaben bei 112 ausgeführt werden. Der Prozessablauf 100 kann die Notwendigkeit für eine Vielzahl von Datenaufnahmepipelines zunichtemachen und ermöglichen, dass Daten anhand einer einzigen Pipeline zur automatischen Aufnahme zu einer Vielzahl von Zieltabellen gerichtet bzw. geleitet werden. Der Prozessablauf 100 stellt ein kosteneffektives Mittel zum Aufnehmen von Daten in mehrere Zieltabellen zur Verfügung, das Vorteile gegenüber anderen Ansätzen zur Verfügung stellt, die einen KOPIER- oder ZUSAMMENFÜHRUNGS-Befehl verwenden. Solche Ansätze unter Verwendung eines KOPIER- oder ZUSAMMENFÜHRUNGS-Befehls können problematisch sein, weile ZUSAMMENFÜHREN sehr kostenintensiv ist und erfordert, dass Daten geclustert werden, um effizient zu sein. Der hierin offenbarte Prozessablauf 100 stellt ein effektives und kosteneffizientes Mittel zum Aufnehmen von Daten in mehrere Zieltabellen und zum Anwenden von einer oder mehreren Aufgaben auf aufgenommene Daten zur Verfügung.
  • Bei einer Ausführungsform ist die Aufgabe wird ausgeführt bei 112 als eine kontinuierliche Aufgabe implementiert. Die kontinuierliche Aufgabe kann eine beliebige Anwenderdefinierte Logik sein, die kontinuierlich ausführt. Es kann sein, dass die sogenannte „kontinuierliche“ Ausführung der Aufgabe bei 112 nicht wirklich kontinuierlich ist, sondern stattdessen eine diskrete Aktion enthalten kann, die häufig genug ausgewertet und/oder ausgeführt wird, dass sie kontinuierlich erscheint. Eine kontinuierliche Aufgabe kann eine anwenderdefinierte Logik enthalten, die eine reale Aufgabe darstellt, die ein Client-Konto auszuführen wünscht. Die kontinuierliche Aufgabe kann eine optionale anwenderdefinierte Bedingung enthalten, die bestimmt, ob eine Aufgabe zu einer bestimmten Zeit aufgerufen werden muss. Die kontinuierliche Aufgabe kann weiterhin einen Hinweis auf eine universelle Datenbank bzw. ein Datenlager enthalten, in welcher bzw. welchem die kontinuierliche Aufgabe ausgeführt werden sollte.
  • Bei einer Ausführungsform wird die Aufgabe bei 112 erst ausgeführt, nachdem die WARTE-Bedingung erfüllt ist. Wenn keine WARTE-Bedingung spezifiziert ist, wird die Aufgabe gemäß einem Aufgabenplan weitermachen. Das Auslöseereignis kann bei bestimmten Implementierungen unnötig sein, kann aber Kosteneinsparungen zur Verfügung stellen, um die Aktion auszuwerten bzw. zu bewerten und zu bestimmen, ob die Aufgabe ausgeführt werden muss. Bei einer Ausführungsform wird eine WARTE-Bedingung im Aufgabenausführungskontext ausgewertet, bevor die Abfrage ausgeführt wird, so dass sie ein Ausdruck sein muss, der in der Abfragekompilierungsumgebung ausgewertet werden kann. Verschiedene beispielhafte WARTE-Bedingungen enthalten: eine vordefinierter Zeitperiode ist seit der Startzeit der vorherigen Ausführung der Aufgabe vergangen, eine vordefinierte Zeitperiode ist seit der Endzeit der vorherigen Ausführung der Aufgabe vergangen, einen Status der vorherigen Ausführung der Aufgabe, eine vordefinierte Anzahl von geänderten Zeilen, die im Änderungsnachverfolgungsstrom erfasst sind (siehe 506) oder einen Zeitstempel eines frühesten Eintrags des Änderungsnachverfolgungsstroms 506. Bei einer Ausführungsform enthält die Aufgabe eine Vielzahl von Auslöseereignissen. Bei verschiedenen Ausführungsformen kann die Aufgabe weitermachen, nachdem eines der Auslöseereignisse erfüllt ist, nachdem ein oder mehrere bestimmte Ausloseereignisse erfüllt ist oder sind, nachdem alle Auslöseereignisse erfüllt sind, und so weiter.
  • 2 zeigt ein schematisches Diagramm einer Tabellenhistorie 200 mit mehreren Tabellenversionen und mehreren Einträgen zu einem Änderungsnachverfolgungsstrom 202. Die Tabellenhistorie 200 stellt drei Tabellenversionen dar, nämlich die Tabellenversion 0, die Tabellenversion 1 und die Tabellenversion 2. Der Änderungsnachverfolgungsstrom 202 enthält drei Einträge, nämlich den Änderungsnachverfolgungseintrag 1, den Änderungsnachverfolgungseintrag 2 und den Änderungsnachverfolgungseintrag 3. Der Änderungsnachverfolgungseintrag 1 wird zum Zeitpunkt T1 in den Änderungsnachverfolgungsstrom 202 eingegeben. Der Änderungsnachverfolgungseintrag 2 wird zum Zeitpunkt T2 in den Änderungsnachverfolgungsstrom 202 eingegeben. Der Änderungsnachverfolgungseintrag 3 wird zum Zeitpunkt T3 in den Änderungsnachverfolgungsstrom 202 eingegeben. Jeder der Änderungsnachverfolgungseinträge wird erst auf einen Abschluss einer Transaktion hin, die in der Datenbanktabelle ausgeführt wird, in den Änderungsnachverfolgungsstrom 202 eingegeben. Die Transaktion 1 ist 202 bei der Tabellenversion 0 und der Änderungsnachverfolgungseintrag 1 wird auf einen Abschluss der Transaktion 1 hin in den Änderungsnachverfolgungsstrom 202 eingegeben. Die Transaktion 2 wird bei der Tabellenversion 2 ausgeführt und der Änderungsnachverfolgungseintrag 2 wird auf einem Abschluss der Transaktion 2 hin in den Änderungsnachverfolgungsstrom 202 eingegeben. Die Transaktion 3 wird bei der Tabellenversion 3 ausgeführt und der Änderungsnachverfolgungseintrag 3 wird auf einen Abschluss der Transaktion 3 hin in den Änderungsnachverfolgungsstrom 202 eingegeben. Bei einer Ausführungsform kann der Änderungsnachverfolgungsstrom 202 weiterhin einen „Änderungsnachverfolgungseintrag 0“ enthalten, der Metadaten über eine ursprüngliche Version der Tabelle enthält.
  • Der Änderungsnachverfolgungsstrom 202 wird vorangebracht, d.h. ein neuer Änderungsnachverfolgungseintrag wird hinzugefügt, erst nachdem eine Transaktion an der Tabelle vollständig ausgeführt wurde. Wenn eine Transaktion an der Tabelle initiiert wird, aber aus irgendeinem Grund abgebrochen oder pausiert wird, wird kein entsprechender Änderungsnachverfolgungseintrag erzeugt und wird der Änderungsnachverfolgungsstrom 202 wird nicht fortschreiten.
  • Der Änderungsnachverfolgungsstrom 202 kann gelesen werden, um ein Delta für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel zu bestimmen. Jeder der Änderungsnachverfolgungseinträge enthält einen Hinweis auf eine Transaktion, die in der Tabelle ausgeführt wurde, und enthält weiterhin einen Zeitstempel für diese Transaktion. Eine Abfrage kann an dem Änderungsnachverfolgungsstrom 202 ausgeführt werden, um zu bestimmen, welche Zeilen der Tabelle zwischen zwei Zeitstempeln hinzugefügt, gelöscht und/oder aktualisiert worden sind. Weiterhin kann eine Abfrage an dem Änderungsnachverfolgungsstrom 202 ausgeführt werden, um eine umfassende Änderungsnachverfolgungszusammenfassung zwischen zwei Zeitstempeln zu ermitteln, wobei die umfassende Änderungsnachverfolgungszusammenfassung alle Zwischenmodifikationen anzeigt, die an der Tabelle zwischen zwei Zeitstempeln aufgetreten sind.
  • Bei einer Ausführungsform wird der Änderungsnachverfolgungsstrom 202 sequentiell so vorangebracht, dass jeder Änderungsnachverfolgungseintrag zu einer Transaktion gehört, die an der Tabelle auftrat. Die Änderungsnachverfolgungseinträge sind nach Transaktions-Zeitstempeln chronologisch geordnet.
  • Bei einer Ausführungsform stellen die Tabellenversionen jeweils eine neue Tabellenversion dar, nachdem Daten in eine Datenbank aufgenommen sind. Bei einer Ausführungsform werden Daten anhand eines automatischen Aufnahmedienstes kontinuierlich in eine erste Tabelle aufgenommen. Es kann sein, dass die Daten in der ersten Tabelle mit Daten in einer zweiten Tabelle zusammengeführt werden müssen, während die Daten gerade in die erste Tabelle aufgenommen werden. Bei einer Ausführungsform können die Daten periodisch in die erste Tabelle kopiert und weiterhin in mehrere andere Tabellen aufgeteilt werden.
  • 3 zeigt ein schematisches Blockdiagramm einer Tabellenhistorie 300 mit mehreren Tabellenversionen. Die beispielhafte Tabellenhistorie 300 stellt drei Tabellenversionen dar, nämlich eine Tabellenversion 1, eine Tabellenversion 2 und eine Tabellenversion 3. Die Tabellenversion 1 enthält Daten in Form von drei Mikropartitionen (MPs), nämlich einer Mikropartition 1 (MP1), einer Mikropartition 2 (MP2) und einer Mikropartition 3 (MP3). Eine erste Transaktion 302 wird an der Tabellenversion 1 ausgeführt, um die Tabellenversion 2 zu erzeugen. Die erste Transaktion 302 enthält ein Löschen von Zeilen in MP2, um eine neue Mikropartition 4 (MP4) zu erzeugen, und ein Löschen der ursprünglichen MP2. Die erste Transaktion 302, die an der Tabellenversion 1 ausgeführt wird, erzeugt die Tabellenversion 2, die die ursprünglichen MP1 und MP3 zusammen mit der neu erzeugten MP4 enthält. Als Ergebnis der ersten Transaktion 302 ist MP2 aus der Tabelle entfernt worden, wie es in der Tabellenversion 2 dargestellt ist. Eine zweite Transaktion 304 wird an der Tabellenversion 2 ausgeführt, um die Tabellenversion 3 zu erzeugen. Die zweite Transaktion 304 enthält ein Einfügen von neuen Zeilen, so dass die Mikropartition 5 (MP5) erzeugt und MP3 aus der Tabelle entfernt wird. Die Tabellenversion 3 enthält die ursprüngliche MP1, die als Ergebnis der ersten Transaktion 302 erzeugte MP4 und die als Ergebnis der zweiten Transaktion 304 erzeugte MP5. Die MP2 wurde als Ergebnis der ersten Transaktion 302 entfernt und die MP3 wurde als Ergebnis der zweiten Transaktion 304 aus der Tabelle entfernt.
  • Wie es in 3 dargestellt ist, kann eine Datenbanktabelle Datenbankdaten in einer oder mehreren Mikropartitionen speichern, wobei die Mikropartitionen unveränderliche Speichervorrichtungen bilden. Wenn eine Änderung oder Modifikation an der Tabelle ausgeführt wird, werden die betroffenen Mikropartitionen entfernt und werden neue Mikropartitionen erstellt, die die Änderung widerspiegeln. Bei einer Ausführungsform wird die ursprüngliche nicht modifizierte Mikropartition nicht entfernt, sondern wird auch mit der neuen Mikropartition gespeichert. Die Änderung kann irgendeinen Befehl enthalten, der sich auf eine oder mehrere Zeilen in der Tabelle auswirkt, einschließlich von zum Beispiel einem Löschbefehl, einem Einfügebefehl, einem Aktualisierungsbefehl und/oder einem Zusammenführungsbefehl.
  • Bei einer Ausführungsform kann eine umfassende Änderungsnachverfolgungszusammenfassung bestimmt werden, die alle Änderungen anzeigt, die zwischen, zum Beispiel, der Tabellenversion 1 und der Tabellenversion 3 vorgenommen worden sind. Eine umfassende Zusammenfassung der Änderungsnachverfolgung für die in 1 dargestellte Implementierung wird anzeigen, dass eine erste Transaktion 302 veranlasste, dass Zeilen aus MP2 gelöscht wurden, und veranlasste, dass MP4 ohne diese Zeilen erzeugt wurde. Die Zusammenfassung wird weiterhin anzeigen, dass eine zweite Transaktion 304 veranlasste, dass neue Zeilen in die Tabelle eingefügt wurden, veranlasste, dass MP3 entfernt wurde, und veranlasste, dass MP5 mit diesen neuen Zeilen erzeugt wurde. Die umfassende Zusammenfassung der Änderungsnachverfolgung zeigt alle Transaktionen an, die an der Tabelle auftreten, wann diese Transaktionen auftraten und wie sich diese Transaktionen auf die Tabelle auswirkten.
  • Bei einer Ausführungsform wird eine Tabellenhistorie nur aktualisiert, wenn eine Transaktion vollständig abgeschlossen ist. Daher wird, wenn eine Transaktion initiiert wird, aber nicht vollständig abgeschlossen wird, die Tabellenhistorie nicht aktualisiert werden, um diese Transaktion zu enthalten. Wenn zum Beispiel eine Transaktion initiiert wird, um bestimmte Zeilen einer ursprünglichen Mikropartition zu löschen, wird eine neue Mikropartition erzeugt werden, die alle ursprünglichen Zeilen in der ursprünglichen Mikropartition enthält, mit Ausnahme von denjenigen, die basierend auf eine Löschbefehl gelöscht werden sollten. Wenn die Transaktion nicht abgeschlossen wird, d.h. wenn die neue Mikropartition nicht vollständig erzeugt wird, dann wird die Tabellenhistorie nicht aktualisiert werden, um anzuzeigen, dass die Transaktion auftrat.
  • Bei einer Ausführungsform kann das Strom-Konzept nicht nur auf Tabellen-Ströme, sondern auch auf eine Abfrageausführung im Allgemeinen angewendet werden. Ähnlich wie Ströme bzw. Streams, die ein Delta zwischen zwei Zeitstempeln für Tabellendaten bereitstellen können, indem sie die Daten während der Abfrageausführung logisch vergleichen, kann ein Strom ein Delta zwischen dem Ergebnis einer Abfrage bei zwei verschiedenen Transaktions-Zeitstempeln bereitstellen.
  • 4 zeigt ein schematisches Blockdiagramm eines Beispiels für eine Abfragepipeline 400. In der Abfragepipeline 400 können die Tabellenseitenansichten 402 mit einer oder mehreren Transaktionen manipuliert werden, wie beispielsweise einem Einfügen, einem Löschen, einem Zusammenführen oder einem Aktualisieren. Am häufigsten werden die Tabellenseitenansichten 402 mit Einfüge-Anweisungen gefüllt, wenn Daten in eine Datenbank aufgenommen werden. Abfrageseiten-IDs 404 stellen eine kontinuierliche Abfrage dar, die entsprechend Ergebnisse erzeugt, wenn die Tabellenseitenansichten 402 mit Transaktionen gefüllt ist. Die Abfrageseiten-IDs 404 werden verwendet, um einen oder mehrere Ströme zu erzeugen. Bei der in 4 dargestellten Implementierung erzeugen die Abfrageseiten-IDs 404 zwei Ströme, nämlich einen Strom 1 und einen Strom 2. Der Strom 1 und der Strom 2 werden an unterschiedlichen Punkten im Abfragefluss positioniert und geben einen unterschiedlichen Satz von Datensätzen bzw. Aufzeichnungen zurück, wenn sie abgefragt werden.
  • 5 zeigt ein schematisches Blockdiagramm eines Beispiels für einen Änderungsnachverfolgungsstrom 506. Der Änderungsnachverfolgungsstrom 506 wird basierend auf einer Reihe von Transaktionen 502 erzeugt, nämlich einer Transaktion bei (Zeitstempel) T1, einer Transaktion bei (Zeitstempel) T2, einer Transaktion bei (Zeitstempel) T3 und einer Transaktion bei (Zeitstempel) T4, die basierend auf einem Commitzeit-Zeitstempel geordert bzw. geordnet sind. Die Transaktionen 502 erzeugen eine Reihe von Tabellenversionen 504, nämlich Tabelle V1, Tabelle V2, Tabelle V3 und Tabelle V4. Der Änderungsnachverfolgungsstrom 506 wird beim Zeitstempel T1, beim Zeitstempel T2, beim Zeitstempel T3 und beim Zeitstempel T4 aktualisiert, wie es in 5 dargestellt ist.
  • Wie es dargestellt ist, enthält die Transaktion bei T1 ein Einfügen von R1 (d.h. Zeilenidentifikationsnummer 1) und ein Einfügen von R2. Die Tabelle V1 enthält Zeile R1 bei Zeitstempel T1 und Zeile R2 bei Zeitstempel T1. Die Transaktion bei T2 enthält ein Einfügen von R3 und ein Aktualisieren von R1. Die Tabelle V2 enthält Zeile R1 bei Zeitstempel T2, Zeile R2 bei Zeitstempel T1 und Zeile R3 bei Zeitstempel T2. Die Transaktion bei T3 enthält ein Löschen von R2 und ein Einfügen von R4. Die Tabelle V3 enthält Zeile R1 bei Zeitstempel T2, Zeile R3 bei Zeitstempel T2 und Zeile R4 bei Zeitstempel T3. Die Transaktion bei T4 enthält ein Aktualisieren von R1 und ein Aktualisieren von R4. Die Tabelle V4 enthält Zeile R1 bei Zeitstempel T4, Zeile R3 bei Zeitstempel T2 und Zeile R4 bei Zeitstempel T4.
  • Der Änderungsnachverfolgungsstrom 506 enthält beim Zeitstempel T1 einen Änderungsnachverfolgungseintrag, der anzeigt, dass R1 und R2 in die Tabelle eingefügt wurden. Der Änderungsnachverfolgungseintrag beim Zeitstempel T2 zeigt an, dass R3 und R1 in die Tabelle eingefügt wurde und R1 aus der Tabelle gelöscht wurde. Der Änderungsnachverfolgungseintrag beim Zeitstempel T3 zeigt an, dass R2 aus der Tabelle gelöscht wurde und R4 in die Tabelle eingefügt wurde. Der Zeitstempel bei T4 zeigt an, dass R1 und R4 aus der Tabelle gelöscht wurden, während R1 und R4 in die Tabelle eingefügt wurden.
  • Der Änderungsnachverfolgungsstrom 506 ist ein Transaktionscontainer und unterhält den aktuellen (d.h. letzten) zeitlichen Punkt, zu welchem eine Transaktion an der Datenbanktabelle ausgeführt worden ist, und unterhält auch ein Wissen darüber, welche Tabellenversion(en) sicher verworfen werden können. Der Änderungsnachverfolgungsstrom 506 dient als ein Baustein, der eine Aufgaben- und/oder Abfragen-Pipeline unterstützt, wie es in 1 dargestellt ist. Der Änderungsnachverfolgungsstrom 506 wird implementiert, indem stabile Zeilenidentifikationswerte (z.B. Mikropartitionsname und Mikropartitionszeilennummer) eingeführt werden, die während einer DML-Anweisung gehalten bzw. unterhalten werden. Die Änderungsnachverfolgungseinträge können aus der Tabelle abgerufen werden, indem ein Strom-Objekt genutzt wird, das den Transaktionszeitpunkt nachverfolgen wird, von welchem aus startend die Modifikationen abgerufen werden können.
  • Bei einer Ausführungsform wird eine Aufgabe bei 112 bei einer Transaktion ausgeführt und wird der Änderungsnachverfolgungsstrom 102 nur dann vorangebracht werden, wenn die Transaktion feststeht. Dies erlaubt genau einmal ein Verhalten bezüglich eines Verbrauchens der Änderungen aus dem Änderungsnachverfolgungsstrom 102. Der Aufgabenplan kann anzeigen, dass die Aufgabe nach einem vordefinierten Zeitperiode initiiert werden sollte, nachdem der Änderungsnachverfolgungsstrom 506 Daten zu verbrauchen hat. Bei einer beispielhaften Implementierung zeigt der Aufgabenplan an, dass die Aufgabe nach 100 Sekunden seit der letzten Ausführung einer Transaktion ausgeführt werden sollte, die veranlasste, dass der Änderungsnachverfolgungsstrom 506 vorangebracht ist. Bei einer beispielhaften Implementierung zeigt der Aufgabenplan an, dass die Aufgabe ausgeführt werden sollte, nachdem wenigstens 100 modifizierte Zeilen im Änderungsnachverfolgungsstrom 506 erfasst worden sind.
  • Die Verwendung des Änderungsnachverfolgungsstroms 506 kann erlauben, dass ein Anwender Ergebnisse einer Abfrage oder einer Aufgabe selbst im Fall eines Verlustes einer Session oder anderer Dienstfehler auf zuverlässige Weise abruft. Dies stellt signifikante Vorteile gegenüber anderen im Stand der Technik bekannten Implementierungen zum Ausführen von Aufgaben, Logik oder Abfragen an einer Datenbanktabelle zur Verfügung.
  • 6 zeigt eine erste Transaktions-Zeitachse 600 und eine zweite Transaktions-Zeitachse 610 einer Datenbanktabelle. Die Datenbanktabelle unterzieht sich einer Reihe von Transaktionen, einschließlich der Transaktionen T1, T2, T3, T4, T5, T6 und T7. Der Änderungsnachverfolgungsstrom 506 unterhält einen Zeitstempel-Offset in der Transaktions-Zeitachse 600, 610 der Tabelle. Bei einer Ausführungsform beginnt dann, wenn der Änderungsnachverfolgungsstrom 506 angefordert wird, das Änderungssatzintervall bei dem letzten Lesezeitstempel und ist das Endintervall die aktuelle Transaktions-Commitzeit der Tabelle. Bei einer Ausführungsform kann bei einer gegebenen Aufbewahrungsperiode für irgendeine gegebene Tabelle die Beibehaltungsgrenze 602 der „früheste“ Zeitstempel sein, den der Strom-Offset 604 nehmen kann. Wenn der Änderungsnachverfolgungsstrom 506 an einer Tabelle initialisiert wird, kann er den aktuellen Transaktions-Zeitstempel als Offset auswählen (d.h. den Beginn des Änderungssatzintervalls, das T4 ist, wie es bei der ersten Transaktions-Zeitachse 600 dargestellt ist). Der Änderungssatz von Zeilen, die vom Änderungsnachverfolgungsstrom 506 in diesem Fall zurückgegeben werden, ist die durch die Transaktionen T4 und T5 erzeugte Delta-Information. Wenn der Strom-Offset als die zweite Transaktionszeitachse 610 zu T6 vorangebracht wird, werden die Zurückbehaltungsgrenze bzw. Beibehaltungsgrenze 612 und der Strom-Offset 614 so verschoben, dass ein Lesen des Änderungssatzes die durch die Transaktionen T6 und T7 erzeugten Deltas zurückgegeben werden.
  • Bei einer Ausführungsform kann der Änderungsnachverfolgungsstrom 506 als Systemtabellen-Wertfunktion verfügbar sein, die den Tabellennamen, den Startzeitstempel und optional Endtransaktionszeitwerte des Änderungssatzintervalls enthält. Der Strom-Offset 604, 614 des Änderungsnachverfolgungsstrom 506 kann transaktional gesichert bzw. gespeichert werden, um eine unabhängige Strom-Verarbeitung zuzulassen. Der Änderungsnachverfolgungsstrom 506 kann ein erstklassiges Schemaobjekt sein, das mit einem zugrundeliegenden Tabellenobjekt verknüpft ist und eine Transaktionsmanipulation des von ihm unterhaltenen Offsets unterstützt. Bei einer Ausführungsform enthält der Änderungsnachverfolgungsstrom 506 dieselben Spalten wie die Tabelle, bei welcher er erzeugt ist, einschließlich zusätzlicher METADATA$AKTION- und METADATEN$SIND-AKTUELL-Spalten, die die Aktion (d.h. Einfügen oder Löschen) anzeigen, und ob dies Teil einer Aktualisierung für die Zeilen war, die zurückgegeben wurden, wenn sie aus dem Strom abgefragt wurden.
  • Bei einer Ausführungsform wird es, wenn der Änderungsnachverfolgungsstrom 506 an einer Tabelle erzeugt wird, den Offset auf die aktuelle Tabellenversion initialisieren. Der Änderungsnachverfolgungsstrom 506 unterstützt AUSWAHL-Operationen ähnlich Tabellen und Ansichten, unterstützt aber bei einigen Ausführungsformen möglicherweise keine expliziten DML-Operationen. Eine Abfrage kann für den Änderungsnachverfolgungsstrom 506 ausgeführt werden, um einen Satz von Modifikationen von einem aktuellen Strom-Offset bis zur aktuellen Transaktionszeit der Quelltabelle zurückzugeben. Wenn er bei einer Auto-Commit-Anweisung verwendet wird, kann der Änderungsnachverfolgungsstrom 506 den internen Strom-Offset automatisch zu der Transaktionszeit voranbringen, zu welcher die Abfrage in Betrieb war (wenn die Abfrage oder Transaktion nicht fehlschlugen). Bei er bei einer expliziten Transaktion mit mehreren Anweisungen in Betreib genommen ist, kann der Änderungsnachverfolgungsstrom 506 die Transaktionszeit der Startzeit der Transaktionen als obere Grenze für das Transaktionsintervall von zurückzugebenden Änderungen beginnend mit dem Offset als untere Grenze auswählen. Der Änderungsnachverfolgungsstrom 506 wird den Strom-Offset nicht voranbringen, bis eine Transaktion vollständig festgelegt bzw. festschrieben ist, was bedeutet, dass mehrere Anweisungen den Änderungssatz aus dem Änderungsnachverfolgungsstrom 506 abrufen können. Weil die obere Grenze durch die Transaktionsstartzeit eingestellt werden kann, wenn DML-Anweisungen Tabellen modifizieren, werden sich die Modifikationen innerhalb der Transaktion nicht in dem aus dem Änderungsnachverfolgungsstrom 506 abgerufenen Änderungssatz widerspiegeln.
  • 7 stellt ein Blockdiagramm eines beispielhaften Löschbefehls 700 dar, und eines resultierenden Deltas 210, das, nachdem der Löschbefehl 700 abgeschlossen ist, zurückgebracht werden kann. Die Mikropartition 2 (MP2), wie sie in 7 dargestellt ist, enthält vier Spalten. Eine Spalte 1 enthält Einträge für Zeilennummern, die primär für Identifikationszwecke verwendet werden. Eine Spalte 2 enthält Einträge für Zeilenwerte, die in Abhängigkeit vom Betreff oder Zweck der Datenbanktabelle irgendeinen Werte enthalten können. Die Spalte mit dem Metadatennamen enthält Tabellenhistorieninformation darüber, von welcher Mikropartition die Daten stammen oder innerhalb von welcher sie sich zuletzt befanden. Die Metadatenzeilenspalte enthält Tabellenhistorieninformation darüber, aus welcher Zeile die Daten stammen oder innerhalb von welcher sie sich befanden.
  • Wie es in 7 dargestellt ist, wird der Löschbefehl 700 an MP2 durchgeführt und löscht die Zeilen 2 und 3 aus MP2, um das neue MP4 zu erzeugen. Als ein Beispiel enthält, wie es in 2 dargestellt ist, MP2 vier Zeilen - nämlich Zeilen 1, 2, 3 und 4. Es sollte eingesehen werden, dass eine Mikropartition irgendeine Anzahl von Zeilen enthalten kann und oft Tausende von Zeilen in einer einzigen Mikropartition enthalten kann. Die Werte für jede der Zeilen in MP2 sind anhand eines Beispiels als Wert1, Wert2, Wert3 und Wert4 für die vier Zeilen aufgelistet, aber es sollte eingesehen werden, dass der Wert irgendeinen geeigneten Wert als relevant für die Datenbank enthalten kann. In der ursprünglichen und unmodifizierten MP2 ist der Metadatenname für jede der vier Zeilen „NULL (MP2)“, was anzeigt, dass die Daten ursprünglich für diese Mikropartition sind und noch keinerlei Änderungshistorie haben. Gleichermaßen ist die Metadatenzeilenspalte für MP2 NULL und zeigt die ursprüngliche Zeilennummer an, weil die Daten ursprünglich für MP2 sind und noch keinerlei Änderungsnachverfolgungshistorie haben.
  • MP4 wird basierend auf dem an der MP2 durchgeführten Löschbefehl 700 erzeugt, der die Zeilen 2 und 3 löschte, wie es in 7 dargestellt ist. MP4 enthält jetzt nur noch die Zeilen 1 und 4 mit jeweils den Werten Wert1 und Wert4. Der Metadatenname für jede der Zeilen 1 und 4 ist „MP2“, was anzeigt, dass die Zeilendaten ursprünglich in MP2 entstanden oder sich zuletzt darin befanden. Die Metadatenzeile für jede der Zeilen 1 und 4 ist jeweils 1 und 4, was anzeigt, wo sich die Zeilen zuletzt befanden.
  • Ein Delta 710 kann bestimmt werden, nachdem der Löschbefehl 700 an einer Tabelle durchgeführt ist. Bei einer Ausführungsform wird ein Zeitstempel an jede Transaktion angebracht, die an der Tabelle stattfindet. Wenn die Transaktion vollständig abgeschlossen ist, dann wird der Zeitstempel weiterhin an die Änderungsnachverfolgungshistorie für diese Transaktion angebracht. Ein Anbringen des Zeitstempels an die Änderungsnachverfolgungshistorie ermöglicht dem System, Kenntnis darüber zu haben, wann eine Tabelle durch eine bestimmte Transaktion geändert wurde und wann eine bestimmte Änderung an irgendeiner einer Vielzahl von Zeilen in der Tabelle auftrat.
  • Das in 7 dargestellte Delta 710 bestimmt einen Unterschied oder eine Änderung, der oder die zwischen MP2 und MP4 auftrat. Bei verschiedenen Ausführungsformen kann das Delta 710 eine gesamte Änderung bestimmen, die zwischen irgendwelchen zwei Zeitstempeln aufgetreten ist, selbst wenn zwischen diesen zwei Zeitstempeln viele Transaktionen an den Daten aufgetreten sind und die Daten mehrmals geändert worden sind. Das Delta 710 liefert einen Hinweis auf eine gesamte Änderung zwischen zwei Zeitstempeln, ohne Information über irgendwelche zwischenzeitlichen Änderungen bzw. Zwischenänderungen zu liefern, die zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel auftraten.
  • Das Delta 710 enthält vier Spalten, nämlich eine Spalte 1 und eine Spalte 2 (ähnlich denjenigen, die in MP2 und in MP4 gezeigt sind) zusammen mit einer Metadatenaktionsspalte und einer Metadaten-sind-aktuell-Spalte. Die Spalte 1 zeigt an, dass die Zeilen 2 und 3 zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel abgeändert worden sind. Die Spalte 2 zeigt an, dass die Werte der Zeilen 2 und 3 jeweils Wert2 und Wert3 sind. Bei verschiedenen Ausführungsformen kann dort, wo die Werte der Zeilen 2 und 3 sich zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel ein oder mehrere Male geändert haben können, die Spalte 2 den ursprünglichen Wert oder den neuesten Wert anzeigen. Die Metadatenaktionsspalte zeigt an, dass sich die Zeilen 2 und 3 einem LÖSCH-Befehl unterzogen. Die Metadaten-sind-aktuell-Spalte zeigt an, ob die Metadaten aktualisiert bzw. upgedated wurden. Bei dem in 7 dargestellten Delta 710 gibt die Metadaten-sind-aktuell-Spalte FALSCH zurück, weil die Zeilen sich keiner Aktualisierung bzw. keinem Update unterzogen (sondern stattdessen gelöscht wurden).
  • Bei einer Ausführungsform wird eine Tabellenhistorie erzeugt, die alle Transaktionen enthält, die gegenüber der Tabelle initiiert worden sind. Solche Transaktionen können zum Beispiel an einer Mikropartition initiierte DML-(= Data Manipulation Language)Befehle, wie beispielsweise Lösch-, Einfüge-, Zusammenführungs- oder Aktualisierungsbefehle, enthalten. Der Tabellenhistorie kann dynamisch aktualisiert werden, um alle gelöschten oder eingefügten Zeilen an einer Tabelle für ein Intervall einer Transaktionszeit widerzuspiegeln. Die Tabellenhistorie kann eine Liste von DML-Anweisungen enthalten, die nach Transaktionszeit sortiert sind, wobei jede Transaktion einen Zeitstempel enthält. Bei einer Ausführungsform wird angenommen, dass alle DML-Anweisungen Zeilen gleichzeitig löschen, einfügen und/oder aktualisieren werden, und dies durch Unterziehen von ihnen einer ZUSAMMENFÜHRUNGS-Anweisung erreicht werden kann.
  • Bei einer Ausführungsform kann eine Tabellenhistorie durch Abrufen einer Liste hinzugefügter und entfernter Mikropartitionen zwischen zwei Transaktionen bestimmt werden. Für jede gegebene Mikropartition kann eine Abstammungssequenz von Abhängigkeiten erzeugt werden, die anzeigt, welche Zeilen aktualisiert worden sind, wie diese Zeilen aktualisiert wurden und welche Transaktion jede Aktualisierung verursachte. Ein Delta kann bestimmt werden, indem eine Änderungsgruppe bzw. ein Änderungssatz zwischen zwei Zeitstempeln in der Abstammung angefordert wird. Das Delta kann ein Auflisten aller hinzugefügten Mikropartitionen und aller entfernten Mikropartitionen zwischen den beiden Zeitstempeln zurückbringen bzw. -geben. Die Auflistung kann zusammengeführt bzw. konsolidiert werden, indem diejenigen Mikropartitionen entfernt werden, die sowohl in der Liste von hinzugefügten Mikropartitionen als auch in der Liste von entfernten Mikropartitionen erscheinen. Dies kann durch ein Durchführen einer äußeren Verbindung (outer join) an den Listen von hinzugefügten und entfernten Mikropartitionen erreicht werden.
  • Weiterhin kann bei einer Ausführungsform eine Zeilengranularitätsliste von Änderungen zwischen irgendwelchen zwei Transaktionszeiten für eine gegebene Tabelle bestimmt werden. Es kann eine Darstellung Seite an Seite erzeugt werden, die auf einfache Weise bei einer Merge-Anweisung (dt. Zusammenführungs- bzw. Vereinigungs-Anweisung) verwendet werden kann, indem überprüft wird, welcher Teil von Daten vorhanden ist. Eine Tabellenwertfunktion kann verwendet werden, um die Tabellenhistorie für eine gegebene Tabelle (oder eine materialisierte Ansicht) abzufragen. Weiterhin kann eine SQL-Anweisung verwendet werden, indem auf die Spalten EINGEFÜGT oder GELÖSCHT in einem Änderungssatz bzw. einer Änderungsgruppe Bezug genommen wird, um einen Hinweis darauf zurückzugeben, welche Zeilen in der Tabelle eingefügt oder gelöscht worden sind.
  • 8 stellt ein Blockdiagramm eines beispielhaften Einfügebefehls 800 dar, und eines resultierenden Deltas 810, das zurückgebracht werden kann, nachdem der Einfügebefehl 800 abgeschlossen ist. 8 beginnt mit einer beispielhaften Mikropartition 3 (MP3), die sich einem Einfügebefehl 800 unterzieht, um eine Mikropartition 5 (MP5) zu erzeugen. Der Einfügebefehl 800 fügt die Zeilen 17 und 18 in MP3 ein. Als ein Beispiel, eine Ausführungsform, enthält MP3 drei Zeilen, nämlich die Zeilen 21, 22 und 23 mit jeweils den Werten Wert21, Wert22 und Wert23. Der Metadatenname ist NULL (MP3) für jede der drei Zeilen, weil es noch keine Änderungsnachverfolgungshistorie für die Zeilen gibt, die anzeigt, wo die Zeilen entstanden oder zuletzt gespeichert wurden. Die Notation NULL(WERT) zeigt an, dass die Werte für die Metadatenspalten NULL sind, wenn Zeilen zum ersten Mal in die Tabelle eingefügt werden, aber die Spalten haben einen impliziten WERT, der verwendet wird, wenn die Zeile in eine neue Partition kopiert wird. Die NULL-Werte können einen Overhead reduzieren. Wenn Werte für eine Zeile in eine neue Mikropartition kopiert werden, wird der Rang der Zeile in der NULL(ZEILENNUMMER)-Notation notiert. Bei einer solchen Implementierung ist die NULL(ZEILENNUMMER)-Notation für die erste Zeile 1, für die zweite Zeile 2, für die dritte Zeile 3, und so weiter.
  • MP5 wird basierend auf dem Einfügebefehl 800 erzeugt und enthält nun die Zeilen 17 und 18. Die Werte für die Zeilen 17 und 18 sind jeweils Wert17 und Wert18, weil die Zeilen 17 und 18 in MP5 eingefügt wurden und diese die zugeordneten Werte für die Zeilen sind. Die Werte für die Zeilen 21, 22 und 23 haben sich nicht geändert. Die Metadatennameninformation für die Zeilen 21, 22 und 23 ist „MP3“, weil die Daten aus der Mikropartition 3 entstanden oder zuletzt darin gespeichert waren. Die Metadatenzeileninformation für die Zeilen 21, 22 und 23 ist jeweils 1, 2 und 3, weil die Zeilen 21, 22 und 23 ursprünglich oder zuletzt in den Zeilen 1, 2 und 3 in der Mikropartition 3 gespeichert waren. Die Metadatennameninformation und die Metadatenzeileninformation für die Zeilen 17 und 18 sind „NULL“, weil die Zeilen in MP5 entstanden und noch keinerlei Information zur Änderungsnachverfolgungshistorie haben.
  • Das Delta 810 für den Einfügebefehl 800 stellt die zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel durchgeführte gesamte Änderung dar. Wie es in 8 dargestellt ist, stellt das Delta 810 die Änderung dar, die zwischen MP5 und MP3 auftrat. Es sollte eingesehen werden, dass bei alternativen Ausführungsformen oder Implementierungen ein Delta eine vollständige Änderung oder Modifikation anzeigen kann, die an einer Tabelle zwischen irgendwelchen zwei Zeitstempeln auftrat, ohne inkrementelle Änderungen anzuzeigen, die an der Tabelle auftraten.
  • Das Delta 810 enthält die Zeilen 17 und 18 mit jeweils Wert17 und Wert18, weil die Zeilen 17 und 18 aufgrund des Einfügebefehls 800 zu MP3 hinzugefügt wurden. Die Metadatenaktion ist „EINFÜGEN“ für die Zeilen 17 und 18, da ein Einfügebefehl 800 die Transaktion war, die eine Modifikation an den Zeilen verursachte. Die Metadaten-sind-aktuell-Information ist „FALSCH“ für die Zeilen 17 und 18, weil die Zeilen nicht aktualisiert wurden, sondern stattdessen eingefügt wurden.
  • 9 stellt ein Blockdiagramm eines beispielhaften Aktualisierungs- bzw. Update-Befehls 900 dar, und eines resultierenden Deltas 910, das zurückgegeben bzw. zurückgebracht werden kann, nachdem der Update-Befehl 900 abgeschlossen ist. Bei der in 9 dargestellten beispielhaften Ausbildungsform wird eine Mikropartition 78 (MP78) aktualisiert, um eine Mikropartition 91 (MP91) zu erzeugen. Der Updatebefehl 900 aktualisiert Zeilen 1 und 4 auf neue Werte. MP78 enthält die Zeilen 1, 2, 3 und 4 mit jeweiligen Werten Wert1, Wert2, Wert3 und Wert4. Die Metadatennameninformation ist für jede der Zeilen „NULL (MP78)“, weil es noch keine Änderungsnachverfolgungshistorie für die Zeilen gibt, die anzeigt, wo die Zeilen zuletzt gespeichert waren. Die Metadatenzeileninformation für jede der Zeilen ist NULL, weil es noch keine Änderungsnachverfolgungshistorie für die Zeilen gibt, die anzeigt, in welcher Zeile die Werte zuletzt gespeichert waren.
  • MP91 enthält die Zeilen 1, 2, 3 und 4. Jedoch hat die Zeile 1 aufgrund des Update-Befehls 900 jetzt einen Wert von Wert11 und hat die Zeile 4 jetzt einen Wert von Wert44. Die Metadatennameninformation für jede der Zeilen 1, 2, 3 und 4 ist „MP78“, weil die Werte aus MP78 entstanden oder zuletzt in MP78 gespeichert waren. Die Metadatenzeileninformation für die Zeile 1 ist „1“, weil dieser Wert zuletzt in der Zeile 1 in MP78 gespeichert war. Gleichermaßen ist die Metadatenzeileninformation für die Zeilen 2, 3 und 4 jeweils „2“, „3“ und „4“.
  • Das Delta 910 zeigt die Änderung zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel an. Wie es in 9 dargestellt ist, zeigt das Delta 910 eine gesamte Änderung zwischen MP78 und MP91 aufgrund des Update-Befehls 900 an. Das Delta 910 zeigt an, dass die Zeilen 1 und 4, die jeweils einen Wert von „Wert1“ und „Wert2“ hatten, gelöscht wurden. Das Delta 910 zeigt an, dass die Zeilen 1 und 4, die jeweils einen Wert von „WERT11“ und „WERT44“ hatten, eingefügt wurden. Die Metadaten-sind-aktuell-Information ist „WAHR“ bzw. „RICHTIG“ für alle Zeilen, weil ein Update- bzw. Aktualisierungsbefehl 900 an den Zeilen durchgeführt wurde. Wie es bei dem Delta 910 angezeigt ist, wird dann, wenn ein Aktualisierungsbefehl durchgeführt wird, die ursprüngliche Zeile gelöscht und wird eine neue Zeile eingefügt, um den Befehl auszuführen.
  • Bei einer Ausführungsform kann jedes Delta 710, 810, 910 verwendet werden, um einen Änderungsnachverfolgungseintrag für die Tabelle zu bestimmen, der in den Änderungsnachverfolgungsstrom eingefügt werden kann. Die Deltainformation kann als Metadaten im Änderungsnachverfolgungsstrom in jeder neuen Mikropartition gespeichert werden, die in der Tabelle erzeugt wird. Das Voranbringen des Änderungsnachverfolgungsstroms kann als Auslöseereignis dienen, um die Ausführung einer Aufgabe an der Tabelle zu initiieren.
  • Wendet man sich der 10 zu, wird ein Blockdiagramm gezeigt, das eine Verarbeitungsplattform 1000 zum Bereitstellen von Datenbankdiensten gemäß einer Ausführungsform darstellt. Die Verarbeitungsplattform 1000 enthält einen Datenbank-Servicemanager 1002, der durch mehrere Anwender 1004, 1006 und 1008 zugreifbar ist. Auf den Datenbank-Servicemanager 1002 kann hierin auch als Ressourcenmanager oder globaler Dienst Bezug genommen werden. Bei einigen Implementierungen kann der Datenbank-Servicemanager 1002 irgendeine Anzahl von Anwendern unterstützen, die einen Zugriff auf Daten oder Dienste der Verarbeitungsplattform 1000 wünschen. Die Anwender 1004-1008 können zum Beispiel Endanwender enthalten, die Datenspeicher- und -abrufabfragen und -anforderungen bereitstellen, Systemadministratoren, die die hierin beschriebenen Systeme und Verfahren managen, Softwareanwendungen, die mit einer Datenbank interagieren, und andere Komponenten/Vorrichtungen, die mit dem Datenbank-Servicemanager 1002 interagieren. Bei einer bestimmten Ausführungsform können, wie es hierin dargestellt ist, die Anwender 1004-1008 Änderungen an Datenbankdaten initiieren und können ein Delta für eine Datenbanktabelle anfordern.
  • Der Datenbank-Servicemanager 1002 kann verschiedene Dienste und Funktionen bereitstellen, die den Betrieb bzw. die Operation der Systeme und Komponenten innerhalb der Verarbeitungsplattform 1000 unterstützen. Der Datenbank-Servicemanager 1002 hat Zugriff auf gespeicherte Metadaten, die mit den Daten assoziiert sind, die über die gesamte Datenverarbeitungsplattform 1000 gespeichert sind. Der Datenbank-Servicemanager 1002 kann die Metadaten zum Optimieren von Anwenderabfragen verwenden. Bei einigen Ausführungsformen enthalten Metadaten eine Zusammenfassung von Daten, die in entfernten Datenspeichersystemen gespeichert sind, sowie Daten, die aus einem lokalen Cache (z.B. einem Cache innerhalb von einem oder mehreren Clustern der Ausführungsplattform 1012) verfügbar sind. Zusätzlich können Metadaten Information diesbezüglich enthalten, wie Daten in den entfernten Datenspeichersystemen und den lokalen Caches organisiert sind. Metadaten lassen zu, dass Systeme und Dienste bestimmen, ob ein Stück von Daten verarbeitet werden muss, ohne die tatsächlichen Daten von einer Speichervorrichtung zu laden oder darauf zuzugreifen.
  • Als Teil der Datenverarbeitungsplattform 1000 können Metadaten gesammelt werden, wenn Änderungen an den Daten unter Verwendung einer Datenmanipulationssprache (DML) vorgenommen werden, welche Änderungen anhand irgendeiner DML-Anweisung vorgenommen werden können. Beispiele für ein Manipulieren von Daten können Auswählen, Aktualisieren, Ändern, Zusammenführen und Einfügen von Daten in Tabellen enthalten, sind aber nicht darauf beschränkt. Als Teil der Verarbeitungsplattform 1000 können Mikropartitionen erstellt werden und die Metadaten können auf einer Basis pro Datei und pro Spalte gesammelt werden. Diese Sammlung von Metadaten kann während der Datenaufnahme durchgeführt werden oder die Sammlung von Metadaten kann als separater Prozess durchgeführt werden, nachdem die Daten aufgenommen oder geladen sind. Bei einer Implementierung können die Metadaten eine Anzahl von unterschiedlichen Werten; eine Anzahl von Null-Werten; und einen minimalen Wert und einen maximalen Wert für jede Datei enthalten. Bei einer Implementierung können die Metadaten weiterhin Information für Zeichenfolgenlänge und Bereiche von Zeichen in Zeichenfolgen enthalten.
  • Bei einer Ausführungsform wird wenigstens ein Teilbereich der Metadaten in einem unveränderlichen Speicher, wie beispielsweise einer Mikropartition, gespeichert. Zum Beispiel können die Metadaten zusammen mit Tabellendaten auf der Speicherplattform 1014 gespeichert werden. Bei einer Ausführungsform können dieselben oder separate Cloud-Speicherressourcen, die für Tabellendaten verwendet werden, zugeteilt und für die Metadaten verwendet werden. Bei einer Ausführungsform können die Metadaten in einem lokalen unveränderlichen Speicher gespeichert werden. Bei einer Ausführungsform wird Information über die Metadaten in einem unveränderlichen Speicher oder Information über Metadatendateien, die in einem unveränderlichen Speicher gespeichert ist, in einem veränderbaren Speicher 1010 gespeichert. Auf die Information über Metadaten kann zum Lokalisieren der in einem unveränderlichen Speicher gespeicherten Metadaten und zum Zugreifen auf diese Bezug genommen werden. Bei einer Ausführungsform können Systeme mit einem Metadatenspeicher so umstrukturiert werden, dass der Metadatenspeicher stattdessen verwendet wird, um Information über Metadatendateien zu speichern, die sich in einem unveränderlichem Speicher befinden.
  • Der Datenbank-Servicemanager 1002 ist weiterhin in der Kommunikation mit einer Ausführungsplattform 1012, die Computerressourcen bereitstellt, die verschiedene Datenspeicher- und Datenabrufoperationen ausführen. Die Ausführungsplattform 1012 kann ein oder mehrere Computercluster enthalten. Die Ausführungsplattform 1012 ist in Kommunikation mit einer oder mehreren Datenspeichervorrichtungen 1016, 1018 und 1020, die Teil einer Speicherplattform 1014 sind. Obwohl in 10 drei Datenspeichervorrichtungen 1016, 1018 und 1020 gezeigt sind, ist die Ausführungsplattform 1012 in der Lage, mit irgendeiner Anzahl von Datenspeichervorrichtungen zu kommunizieren. Bei einigen Ausführungsformen sind die Datenspeichervorrichtungen 1016, 1018 und 1020 cloudbasierte Speichervorrichtungen, die sich an einem oder mehreren geografischen Standorten befinden. Zum Beispiel können die Datenspeichervorrichtungen 1016, 1018 und 1020 Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur oder irgendeiner anderen Art von verteiltem Speichersystem sein. Die Datenspeichervorrichtungen 1016, 1018 und 1020 können Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speichercluster oder irgendeine andere Datenspeichertechnologie enthalten. Zusätzlich kann die Speicherplattform 1014 ein verteiltes Dateisystem (wie beispielsweise Hadoop Distributed File Systems (HDFS)), Objektspeichersysteme und dergleichen enthalten.
  • Bei einigen Ausführungsformen sind die Kommunikationsverbindungen zwischen dem Datenbank-Servicemanager 1002 und den Anwendern 1004-1008, dem veränderbaren Speicher 1010 für Information über Metadatendateien (d.h. Metadaten von Metadatendateien) und der Ausführungsplattform 1012 über ein oder mehrere Datenkommunikationsnetzwerke implementiert und können verschiedenen Aufgaben zugeordnet sein, so dass Anwenderanforderungen optimiert werden können. Gleichermaßen sind die Kommunikationsverbindungen zwischen der Ausführungsplattform 1012 und den Datenspeichervorrichtungen 1016-1020 in der Speicherplattform 1014 über ein oder mehrere Datenkommunikationsnetzwerke implementiert. Diese Datenkommunikationsnetzwerke können irgendein Kommunikationsprotokoll und irgendeinen Typ von Kommunikationsmedium verwenden. Bei einigen Ausführungsformen sind die Datenkommunikationsnetze eine Kombination aus zwei oder mehr Datenkommunikationsnetzen (oder Unter-bzw. Teilnetzen), die miteinander gekoppelt sind. Bei alternativen Ausführungsformen sind diese Kommunikationsverbindungen unter Verwendung von irgendeinem Typ von Kommunikationsmedium und irgendeinem beliebigen Kommunikationsprotokoll implementiert.
  • Der Datenbankdienstmanager 1002, der veränderbare Speicher 1010, die Ausführungsplattform 1012 und die Speicherplattform 1014 sind in 10 als einzelne Komponenten gezeigt. Jedoch kann jeder oder jede von dem Datenbank-Servicemanager 1002, dem veränderbaren Speicher 1010, der Ausführungsplattform 1012 und der Speicherplattform 1014 als verteiltes System implementiert (z.B. über mehrere Systeme/Plattformen an mehreren geografischen Standorten verteilt) sein oder kann in ein oder mehrere Systeme kombiniert sein. Zusätzlich kann jeder oder jede von dem Datenbank-Servicemanager 1002, dem veränderbaren Speicher 1010, der Ausführungsplattform 1012 und der Speicherplattform 1014 in Abhängigkeit von Änderungen an den von den Anwendern 1004-1008 empfangenen Anforderungen und den sich ändernden Notwendigkeiten der Datenverarbeitungsplattform 1000 nach oben oder unten (unabhängig voneinander) skaliert werden. Somit ist die Datenverarbeitungsplattform 1000 bei den beschriebenen Ausführungsformen dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Datenverarbeitungsbedürfnissen gerecht zu werden.
  • 11 stellt ein Blockdiagramm dar, das Komponenten des Datenbank-Servicemanagers 1002 gemäß einer Ausführungsform darstellt. Der Datenbank-Servicemanager 1002 enthält einen Zugriffsmanager 1102 und einen Schlüsselmanager 1104, die mit einer Datenspeichervorrichtung 1106 gekoppelt sind. Der Zugriffsmanager 1102 handhabt Authentifizierungs- und Autorisierungsaufgaben für die hierin beschriebenen Systeme. Der Schlüsselmanager 1104 managt eine Speicherung und Authentifizierung von während Authentifizierungs- und Autorisierungsaufgaben verwendeten Schlüsseln. Ein Anforderungsverarbeitungsdienst 1108 managt empfangene Datenspeicheranforderungen und Datenabrufanforderungen. Ein Managementkonsolendienst 1110 unterstützt einen Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager.
  • Der Datenbankdienstmanager 1002 enthält auch einen SQL-Compiler 1112, einen SQL-Optimierer 1114 und einen SQL-Ausführer 1116. Der SQL-Compiler 1112 analysiert SQL-Abfragen und erzeugt den Ausführungscode für die Abfragen. Der SQL-Optimierer 1114 bestimmt das beste Verfahren, um Abfragen basierend auf den Daten auszuführen, die verarbeitet werden müssen. Der SQL-Ausführer 1116 führt den Abfragecode für durch den Datenbank-Servicemanager 1002 empfangene Abfragen aus. Ein Abfrageplaner und -koordinator 1118 sendet empfangene Abfragen zu geeigneten Diensten oder Systemen zur Kompilierung, Optimierung und Absendung zu einer Ausführungsplattform 1112. Ein virtueller Lagermanager 1120 managt den Betrieb mehrerer virtueller Lager.
  • Zusätzlich enthält der Datenbank-Servicemanager 1002 einen Aufgabenausführungsmanager 1128, der die Information in Bezug auf die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches gespeicherten Daten managt. Ein Überwachungs- und Arbeitslast-Analysator 1124 überwacht die vom Datenbank-Servicemanager 1002 durchgeführten Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitslast) quer über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform 1012. Aufgabenausführungsmanager 1128 und der Überwachungs- und Arbeitslast-Analysator 1124 sind mit einer Datenspeichervorrichtung 1126 gekoppelt. Bei einer Ausführungsform sammelt, speichert und managt der Konfigurations- und Metadatenmanager 1122 Metadaten in einer unveränderlichen Speicherressource. Bei einer Ausführungsform resultieren Aktualisierungen an Metadaten in neuen Dateien und werden nicht an Ort und Stelle aktualisiert.
  • Metadatendateien, wie sie hierin diskutiert sind, können Dateien enthalten, die Metadaten von Modifikationen (z.B. jede Modifikation) an irgendeiner Datenbanktabelle in einem Datenlager bzw. universellen Datenbanken enthalten. Eine Modifikation einer Datenbanktabelle kann eine oder mehrere Metadatendateien, oft nur eine einzige Metadatendatei, erzeugen. Bei einer Ausführungsform enthalten Metadatendateien die folgende Information: Information über eine Metadatendatei, einschließlich einer Versionsnummer; eine Liste von allen hinzugefügten Tabellendatendateien; eine Liste von gelöschten Tabellendatendateien; und Information über jede hinzugefügten Tabellendatendatei, einschließlich Dateipfad, Dateigröße, Dateischlüssel-ID sowie Zusammenfassungen von allen Zeilen und Spalten, die in der Tabellendatendatei gespeichert sind.
  • Bei einer Ausführungsform können die Inhalte von Metadatendateien im Laufe der Zeit variieren. Wenn sich Format oder Inhalt einer Metadatendatei ändert, kann die Versionsnummer der Metadatendatei inkrementiert werden. Bei einer Ausführungsform speichert der Metadatenspeicher (oder eine andere veränderliche Datenspeicherressource) nur Information über Metadatendateien (die in einem unveränderlichen Speicher gespeichert sind), nicht über Tabellendatendateien. In der Praxis ist Information über Metadatendateien, die im Metadatenspeicher (oder einem anderen veränderbaren Speicher) gespeichert sind, sehr begrenzt und kann Daten für Tausende von Metadatendateien enthalten. Bei einer Ausführungsform kann Information für bis zu 30.000 Metadatendateien in einem Metadatenspeicher oder einem anderen veränderbaren Speicher gespeichert werden. Dies reduziert die Menge an Speicher drastisch, die beim Metadatenspeicher oder einem anderen veränderbaren Speicher benötigt wird.
  • Bei einer Ausführungsform schreibt ein System Metadatendateien für jede Modifikation einer Datenbanktabelle (z.B. eine Modifikation von Tabellendatendateien) zu einem Cloud-Speicher. Zusätzlich zu einem Hinzufügen und Löschen von Dateien erzeugt jede Modifikation an einer Datenbanktabelle in der universellen Datenbank auch eine oder mehrere Metadatendateien. Typischerweise erstellt eine Modifikation eine einzelne Metadatendatei. Jedoch dann, wenn die Modifikation an der Tabelle groß ist (z.B. ein Einfügen in eine Tabelle, das sehr viele Dateien erzeugt), kann es in der Erstellung von mehreren Metadatendateien resultieren. Eine weitere Operation bzw. ein weiterer Betrieb des Aufgabenausführungsmanagers 1128 wird in Bezug auf die 6-12 weiter diskutiert werden.
  • Der Datenbank-Servicemanager 1002 enthält auch einen Aufgabenausführungsmanager 1128, der die Planung und Ausführung von einer oder mehreren Aufgaben an Datenbankdaten managt, wobei die Aufgaben anwenderdefinierte Logik, wie beispielsweise eine SQL-Anweisung, enthalten können. Weil mehrere Anwender/Systeme auf dieselben Daten gleichzeitig zugreifen können, können Änderung an den Daten synchronisiert werden, um sicherzustellen, dass jeder Anwender/jedes System mit der aktuellen Version der Daten arbeitet und einen Zugriff auf eine Änderungsnachverfolgungshistorie für die Daten hat.
  • Sicherheitsverbesserungen sind bei einigen Ausführungsformen auch implementiert. Bei einer Ausführungsform werden Metadatendateien und Änderungsnachverfolgungsinformation unter Verwendung von einzelnen bzw. individuellen Dateischlüsseln verschlüsselt. Innerhalb einer Mikropartition können Spalten unter Verwendung eines AES-CTR-Modes mit unterschiedlichen Startzählern individuell verschlüsselt werden. Dies lässt zu, dass ein Datenbanksystem eine individuelle Spalte aus einer Mikropartition liest, weil sie entschlüsselt werden kann, ohne ein Entschlüsseln der gesamten Mikropartition auf einmal zu benötigen. Eine Verschlüsselung verbessert die Sicherheit, weil niemand die Mikropartition lesen kann, ohne den richtigen Dateischlüssel zu haben.
  • Zur Verifizierung, dass eine Mikropartition nicht geändert worden ist, kann das System Hashes von Spalten für jede Spalte innerhalb der Mikropartition speichern. Vor einer Entschlüsselung der Daten vergleicht das System den Hash der verschlüsselten Spalte mit dem gespeicherten Hash der Spalte dieser Mikropartition. Wenn die Hashes nicht übereinstimmen, muss die Mikropartition geändert worden sein. Dies verbessert die Sicherheit, weil eine gesamte Änderung von Mikropartitionen durch das Datenbanksystem erkannt wird.
  • 12 ist ein schematisches Blockdiagramm, das Komponenten eines Aufgabenausführungsmanagers 1128 gemäß einer Ausführungsform darstellt. Der Aufgabenausführungsmanager 1128 kann die Planung und die Ausführung einer oder mehrerer Aufgaben für Datenbanktabellendaten managen. Der Aufgabenausführungsmanager 1128 enthält eine Transaktionskomponente 1202, eine Änderungsnachverfolgungskomponente 1204, eine Auslösekomponente 1206, eine Aufgabenplanungskomponente 1208 und eine Aufgabenausführungskomponente 1210. Die Komponenten 1202-1210 sind nur anhand einer Illustration angegeben und es kann sein, dass nicht alle in allen Ausführungsformen enthalten sind. Tatsächlich können einige Ausführungsformen nur eine oder irgendeine Kombination von zwei oder mehr der Komponenten 1202-1210 enthalten. Zum Beispiel können sich einige der Komponenten außerhalb oder getrennt vom Aufgabenausführungsmanager 1128 befinden, wie beispielsweise innerhalb eines Datenbank-Servicemanagers 1002 oder einer Verarbeitungsplattform 1000. Weiterhin können die Komponenten 1202-1210 Hardware, computerlesbare Anweisungen oder eine Kombination aus beiden umfassen, um die Funktionalität durchzuführen und die hierin diskutierten Strukturen bereitzustellen.
  • Die Transaktionskomponente 1202 führt eine oder mehrere Transaktionen an einer Tabelle einer Datenbank aus, wobei die Tabelle Datenbankdaten enthält. Die Transaktion kann irgendeinen DML-Befehl, wie beispielsweise einen Einfüge-, einen Lösch-, einen Aktualisierungs- und/oder einen Zusammenführungsbefehl enthalten. Bei einer Ausführungsform führt die Transaktionskomponente 1202 eine Transaktion an einer Mikropartition einer Datenbanktabelle aus, indem sie eine neue Mikropartition erzeugt, die die Transaktion widerspiegelt, und die (ursprüngliche) Mikropartition entfernt. Eine einzelne Transaktion kann sich auf mehrere Zeilen von Datenbankdaten über mehrere Mikropartitionen hinweg auswirken und daher dazu führen, dass mehrere neue Mikropartitionen erzeugt werden. Bei einer Ausführungsform führt die Transaktionskomponente 1202 niemals eine Transaktion durch Modifizieren von Datenbankdaten an Ort und Stelle aus, sondern erzeugt stattdessen eine neue unveränderliche Speichervorrichtung, wie beispielsweise eine Mikropartition.
  • Die Transaktionskomponente 1202 erzeugt und speichert weiterhin Transaktionsdaten für jede Transaktion, die an einer Tabelle ausgeführt wird. Die Transaktionskomponente 1202 kann die Transaktionsdaten mit einer neuen Mikropartition assoziieren, so dass die Transaktionsdaten als Metadaten für die neue Mikropartition gespeichert werden. Solche Transaktionsdaten können zum Beispiel eine Identität eines Anwenders oder eines Kontos enthalten, der oder das eine DML- oder SQL-Anweisung initiiert hat, wann die Transaktion angefordert wurde, wann die Transaktion initiiert wurde, wann die Transaktion abgeschlossen wurde, wie sich die Transaktion auf die Tabelle ausgewirkt hat, welche Zeilen und/oder Mikropartitionen durch die Transaktion modifiziert wurden, und so weiter.
  • Die Änderungsnachverfolgungskomponente 1204 erzeugt und speichert Änderungsnachverfolgungsinformation in Bezug auf Transaktionen, die an einer Datenbanktabelle ausgeführt worden sind. Die Änderungsnachverfolgungsinformation kann in einem oder mehreren Änderungsnachverfolgungseinträgen gespeichert werden, die eine Abstammung von Modifikationsinformation in einem Änderungsnachverfolgungsstrom ausbilden. Die Änderungsnachverfolgungskomponente 1204 kann die Änderungsnachverfolgungsinformation als Metadaten auf einem unveränderlichen Speicher, wie beispielsweise einer Mikropartition, speichern, kann in einem lokalen veränderbaren Speicher gespeichert werden und/oder kann innerhalb der Tabellendaten als zum Beispiel ein Änderungsnachverfolgungsstrom gespeichert werden. Bei einer Ausführungsform kann die Änderungsnachverfolgungsinformation gespeichert und an Ort und Stelle aktualisiert werden. Bei einer Ausführungsform wird die Änderungsnachverfolgungsinformation innerhalb einer unveränderlichen Mikropartition in einem Änderungsnachverfolgungsstrom gespeichert, der eine letzte Änderung angibt, die an einer Zeile und/oder einem Protokoll von Änderungen auftrat, die an der Tabelle aufgetreten sind. Bei einer Ausführungsform sichert die Änderungsnachverfolgungskomponente 1204 einen Zeitstempel für eine Transaktion, die in der Tabelle auftrat, und sichert weiterhin den Zeitstempel für einen assoziierten Änderungsnachverfolgungseintrag in einem Änderungsnachverfolgungsstrom.
  • Die Auslösekomponente 1206 bestimmt einen oder mehrere Ereignisauslöser, die mit einer an einer Datenbank auszuführenden Aufgabe assoziiert sein können. Die Auslösekomponente 1206 kann weiterhin bestimmen, ob ein Auslöseereignis erfüllt ist, und daher eine Aufgabe an der Datenbank ausgeführt werden sollte. Die Auslösekomponente 1206 kann einen Hinweis auf ein Auslöseereignis von einem Client-Konto erhalten und/oder kann ein Auslöseereignis basierend auf vordefinierten Regeln automatisch erzeugen.
  • Die Aufgabenplanungskomponente 1208 plant die Ausführung von Aufgaben an einer Datenbank basierend auf einem oder mehreren Auslöseereignissen. Bei einer Ausführungsform plant die Aufgabenplanungskomponente 1208, dass eine Aufgabe an allen neu aufgenommenen Daten ausgeführt werden muss, während sie in einer Staging-Tabelle 110 gespeichert sind, bevor sie in einer endgültigen Zieltabelle gespeichert werden.
  • Die Aufgabenausführungskomponente 1210 führt eine oder mehrere Aufgaben an Datenbankdaten aus. Die Aufgabenausführungskomponente 1210 kann eine Aufgabe in Reaktion auf die Auslösekomponente 1206 initiieren, die bestimmt, dass ein Auslöseereignis erfüllt worden ist. Die Aufgabe kann anwenderdefinierte Logik enthalten, wie beispielsweise eine SQL-Anweisung, die von einem Client-Konto empfangen wird. Die Aufgabe kann Datenbankdaten manipulieren, wenn sie in die Datenbank aufgenommen werden, um sicherzustellen, dass die Daten in der richtigen Form sind, um in einer Zieltabelle gespeichert zu werden. Die Aufgabe kann zum Beispiel das kontinuierliche oder automatische Abfragen von Datenbankdaten enthalten.
  • 13 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 1300 zum Planen einer an einer Datenbank auszuführenden Aufgabe darstellt. Das Verfahren 1300 kann durch einen Aufgabenausführungsmanager 1128, einen Datenbank-Servicemanager 1002, eine Verarbeitungsplattform 1000 und/oder einem anderen Dienst oder eine andere Plattform durchgeführt werden.
  • Das Verfahren 1300 beginnt und eine Computervorrichtung führt bei 1302 eine Transaktion an einer Tabelle aus, die Datenbankdaten umfasst, wobei ein Ausführen der Transaktion ein Erzeugen einer neuen Tabellenversion enthält. Die Computervorrichtung erzeugt in Reaktion darauf, dass die Transaktion vollständig ausgeführt ist, bei 1304 einen Änderungsnachverfolgungseintrag, der einen Hinweis auf eine oder mehrere durch die Transaktion an der Tabelle vorgenommene Modifikationen enthält. Die Computervorrichtung gibt bei 1306 den Änderungsnachverfolgungseintrag in einen Änderungsnachverfolgungsstrom ein. Die Computervorrichtung führt bei 1308 eine Aufgabe an der neuen Tabellenversion in Reaktion auf ein Auslöseereignis aus.
  • 14 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 1400 zum Planen einer an einer Datenbank auszuführenden Aufgabe darstellt. Das Verfahren 1400 kann von einem Aufgabenausführungsmanager 1128, einem Datenbank-Servicemanager 1002, einer Verarbeitungsplattform 1000 und/oder einem anderen Dienst oder einer anderen Plattform durchgeführt werden.
  • Das Verfahren 1400 beginnt und eine Computervorrichtung nimmt bei 1402 Daten in eine Staging-Tabelle einer Datenbank auf, wobei ein Aufnehmen der Daten ein Erzeugen einer neuen Mikropartition enthält, die die Daten enthält. Die Computervorrichtung führt in Reaktion darauf, dass die neue Mikropartition vollständig erzeugt ist, bei 1404 eine Aufgabe an der neuen Mikropartition aus, die in der Staging-Tabelle gespeichert ist. Die Computervorrichtung speichert in Reaktion darauf, dass die Aufgabe an der neuen Mikropartition vollständig ausgeführt ist, bei 1406 die neue Mikropartition in einer oder mehreren Zieltabellen. Das Verfahren 1400 ist so, dass die Aufgabe eine von einem Clientkonto empfangene SQL-Anweisung enthält (siehe 1408).
  • ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung 1500 darstellt. Bei einigen Ausführungsformen wird die Computervorrichtung 1500 verwendet, um eines oder mehreres von den hierin beschriebenen Systemen und Komponenten zu implementieren. Zum Beispiel kann die Computervorrichtung 1500 einen Aufgabenausführungsmanager 1128, einen Datenbank-Servicemanager 1002, eine Verarbeitungsplattform 1000 und/oder irgendwelche andere hierin diskutierte Komponenten oder Systeme enthalten oder Teil davon sein. Als ein weiteres Beispiel können die hierin diskutierten Komponenten, Systeme oder Plattformen eine oder mehrere Computervorrichtungen 1500 enthalten. Weiterhin kann die Computervorrichtung 1500 mit irgendeinem oder irgendeiner der hierin beschriebenen Systeme und Komponenten interagieren. Demgemäß kann die Computervorrichtung 1500 verwendet werden, um verschiedene Prozeduren und Aufgaben durchzuführen, wie beispielsweise diejenigen, die hierin beschrieben sind. Die Computervorrichtung 1500 kann als ein Server, ein Client oder irgendeine andere Computereinheit bzw. -entität fungieren. Die Computervorrichtung 1500 kann irgendeine einer weiten Vielfalt von Computervorrichtungen sein, wie beispielsweise ein Desktop-Computer, ein Notebook-Computer, ein Server-Computer, ein Handheld-Computer, ein Tablet und dergleichen.
  • Die Computervorrichtung 1500 enthält einen oder mehrere Prozessor(en) 1502, eine oder mehrere Speichervorrichtung(en) 1504, eine oder mehrere Schnittstelle(n) 1506, eine oder mehrere Massenspeichervorrichtung(en) 1508 und eine oder mehrere Eingabe-/Ausgabe-(I/O-)Vorrichtung(en) 1510, von welchen alle mit einem Bus 1512 gekoppelt sind. Der (Die) Prozessor(en) 1502 enthält (enthalten) einen oder mehrere Prozessoren oder Steuerungen, die Anweisungen ausführen, die in der (den) Speichervorrichtung(en) 1504 und/oder der (den) Massenspeichervorrichtung(en) 1508 gespeichert sind. Der (Die) Prozessor(en) 1502 kann (können) auch verschiedene Typen von computerlesbaren Medien, wie beispielsweise einen Cache-Speicher, enthalten.
  • Die Speichervorrichtung(en) 1504 enthalten verschiedene computerlesbare Medien, wie beispielsweise einen flüchtigen Speicher (z.B. einen Direktzugriffsspeicher (RAM)) und/oder einen nichtflüchtigen Speicher (z.B. einen Nurlesespeicher (ROM)). Die Speichervorrichtung(en) 1504 kann (können) auch einen wiederbeschreibbaren ROM enthalten, wie beispielsweise einen Flash-Speicher.
  • Die Massenspeichervorrichtung(en) 1508 enthält (enthalten) verschiedene computerlesbare Medien, wie beispielsweise Magnetbänder, Magnetplatten, optische Platten, einen Festkörper-Speicher (z.B. einen Flash-Speicher) und so weiter. Verschiedene Laufwerke können auch in der (den) Massenspeichervorrichtung(en) 1508 enthalten sein, um ein Lesen von und/oder ein Schreiben zu den verschiedenen computerlesbaren Medien zu ermöglichen. Die Massenspeichervorrichtung(en) 1508 enthält (enthalten) Wechselmedien bzw. entfernbare Medien und/oder nicht entfernbare Medien.
  • Die I/O-Vorrichtung(en) 1510 enthält (enthalten) verschiedene Vorrichtungen, die zulassen, dass Daten und/oder andere Information in die Computervorrichtung 1500 eingegeben oder aus dieser abgerufen werden können. Eine (oder mehrere) beispielhafte I/O-Vorrichtung(en) 1510 enthält (enthalten) Cursorsteuervorrichtungen, Tastaturen, kleine Tastaturen, Mikrofone, Monitore oder andere Anzeigevorrichtungen, Lautsprecher, Drucker, Netzwerkschnittstellenkarten, Modems, Objektive, CCDs oder andere Bilderfassungsvorrichtungen und dergleichen.
  • Die Schnittstelle(n) 1506 enthält (enthalten) verschiedene Schnittstellen, die zulassen, dass die Computervorrichtung 1500 mit anderen Systemen, Vorrichtungen oder Computerumgebungen interagiert. Eine (oder mehrere) beispielhafte Schnittstelle(n) 1506 enthält (enthalten) irgendeine Anzahl von verschiedenen Netzwerkschnittstellen, wie beispielsweise Schnittstellen zu lokalen Netzen (LANs), Weitverkehrsnetzen (WANs), drahtlosen Netzwerken und dem Internet.
  • Ein Bus 1512 lässt zu, dass der (die) Prozessor(en) 1502, die Speichervorrichtung(en) 1504, die Schnittstelle(n) 1506, die Massenspeichervorrichtung(en) 1508 und die I/O-Vorrichtung(en) 1510 miteinander kommunizieren, sowie auch anderen Vorrichtungen oder Komponenten, die mit dem Bus 1512 gekoppelt sind. Der Bus 1512 stellt eine oder mehrere von mehreren Typen von Busstrukturen dar, wie beispielsweise einen Systembus, einen PCI-Bus, einen USB-Bus und so weiter.
  • Beispiele
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Beispiel 1 ist ein Verfahren zum Planen einer an einer Datenbank auszuführenden Aufgabe. Das Verfahren enthält ein Ausführen einer Transaktion für eine Tabelle, die Datenbankdaten umfasst, wobei ein Ausführen der Transaktion ein Erzeugen einer neuen Tabellenversion umfasst. Das Verfahren enthält in Reaktion darauf, dass die Transaktion vollständig ausgeführt ist, ein Erzeugen eines Änderungsnachverfolgungseintrags, der einen Hinweis auf eine oder mehrere durch die Transaktion an der Tabelle vorgenommene Modifikationen umfasst, und ein Speichern des Änderungsnachverfolgungseintrags in einem Änderungsnachverfolgungsstrom. Das Verfahren enthält ein Ausführen einer Aufgabe an der neuen Tabellenversion in Reaktion auf ein Auslöseereignis.
  • Beispiel 2 ist ein Verfahren wie beim Beispiel 1, wobei die Transaktion ein Aufnehmen von neuen Daten in die Tabelle umfasst und wobei das Verfahren weiterhin folgendes umfasst: Speichern der neuen Tabellenversion in einer Staging-Tabelle vor einem Ausführen der Aufgabe an der neuen Tabellenversion; und in Reaktion darauf, dass die Aufgabe ausgeführt ist, ein Übergehen der neuen Tabellenversion zu einer oder mehreren Zieltabellen.
  • Beispiel 3 ist ein Verfahren wie bei einem der Beispiele 1-2, das weiterhin ein Voranbringen eines Strom-Offsets im Änderungsnachverfolgungsstrom in Reaktion darauf, dass der Änderungsnachverfolgungseintrag im Änderungsnachverfolgungsstrom gespeichert ist, und wobei das Auslöseereignis das Voranbringen des Strom-Offsets ist.
  • Beispiel 4 ist ein Verfahren wie bei einem der Beispiele 1-3, wobei das Auslöseereignis eines oder mehreres von folgendem umfasst: eine vordefinierte Zeitperiode, eine Schwellenanzahl von an der Tabelle vorgenommenen Modifikationen; das Speichern des Änderungsnachverfolgungseintrags im Änderungsnachverfolgungsstrom oder das Speichern des Änderungsnachverfolgungseintrags im Änderungsnachverfolgungsstrom plus eine vordefinierte Zeitperiode.
  • Beispiel 5 ist ein Verfahren wie bei einem der Beispiele 1-4, wobei die Tabelle eine oder mehrere Mikropartitionen umfasst, die Datenbankdaten speichern, und wobei ein Ausführen der Transaktion an der Tabelle ein Erzeugen von wenigstens einer neuen Mikropartition umfasst, die die Transaktion widerspiegelt, und ein Entfernen von wenigstens einer entsprechenden Mikropartition von der einen oder den mehreren Mikropartitionen.
  • Beispiel 6 ist ein Verfahren wie bei einem der Beispiele 1-5, wobei die Transaktion eines oder mehreres von einem Einfügen von Daten in die Tabelle, einem Löschen von Daten in der Tabelle oder ein Aktualisieren von Daten in der Tabelle umfasst.
  • Beispiel 7 ist ein Verfahren wie bei einem der Beispiele 1-6, wobei der Änderungsnachverfolgungseintrag weiterhin eines oder mehreres von folgendem umfasst: einen Zeitstempel, wann die Transaktion angefordert wurde, einen Zeitstempel, wann die Transaktion vollständig ausgeführt wurde, einen Identifizierer eines Anwenders oder eines Kontos, der oder das die Transaktion angefordert hat, oder ein minimales und maximales Datenwertpaar für durch die Transaktion eingefügte Daten.
  • Beispiel 8 ist ein Verfahren wie bei einem der Beispiele 1-7, wobei die Aufgabe eine anwenderdefinierte Logik umfasst, die eine oder mehrere SQL(= Structured Query Language)-Anweisungen umfasst.
  • Beispiel 9 ist ein Verfahren wie bei einem der Beispiele 1-8, wobei der Änderungsnachverfolgungsstrom so transaktional ist, dass der Änderungsnachverfolgungsstrom erst fortschreitet, nachdem die Transaktion vollständig und erfolgreich ausgeführt ist, und wobei die Aufgabe an der neuen Tabellenversion auf eine transaktional Weise so ausgeführt wird, dass die Aufgabe an der neuen Tabellenversion nur einmal ausgeführt wird.
  • Beispiel 10 ist ein Verfahren wie bei einem der Beispiele 1-9, die in Reaktion auf ein Ausführen der Aufgabe an der neuen Tabellenversion ein Erzeugen eines Aufgabenhistorieneintrags umfasst, der eines oder mehreres von folgendem umfasst: einen Aufgabennamen, eine Aufgabenidentifikation, einen Ausführungs-Zeitstempel, der anzeigt, wann die Aufgabe ausgeführt wurde, einen Ausführungsstatus, der anzeigt, ob die Aufgabe erfolgreich ausgeführt wurde oder ob ein Fehler zurückgegeben wurde, eine Meldung bzw. Nachricht mit einem Fehlercode in Reaktion darauf, dass die Aufgabe nicht erfolgreich ausgeführt ist, oder ein oder mehrere Ergebnisse, die durch Ausführen der Aufgabe zurückgegeben werden.
  • Beispiel 11 ist ein Verfahren wie bei einem der Beispiele 1-10, das weiterhin ein Abrufen der Aufgabe aus einem Datenbankschema umfasst, wobei die Aufgabe eines oder mehreres von folgendem umfasst: einen Zeitstempel, der anzeigt, wann die Aufgabe empfangen oder erzeugt wurde, einen Aufgabennamen, einen Datenbanknamen, der anzeigt, an welcher Datenbank die Aufgabe ausgeführt werden sollte, einen Identifizierer eines Besitzers oder Erstellers der Aufgabe, einen Plan bzw. Zeitplan für die Aufgabe, der das Auslöseereignis umfasst, ein SQL(= Structure Query Language)-Skript, einen letzten Ausführungszeitstempel, der anzeigt, wann die Aufgabe ein letztes Mal bzw. zuletzt ausgeführt wurde, oder einen letzten Ausführungsstatus, der anzeigt, ob die Aufgabe beim letzten Ausführen der Aufgabe erfolgreich ausgeführt wurde.
  • Beispiel 12 ist ein System zum Planen einer an einer Datenbank auszuführenden Aufgabe. Das System enthält Mittel zum Ausführen einer Transaktion an einer Tabelle, die Datenbankdaten umfasst, wobei ein Ausführen der Transaktion ein Erzeugen einer neuen Tabellenversion umfasst. Das System enthält Mittel zum Erzeugen eines Änderungsnachverfolgungseintrags, der einen Hinweis auf eine oder mehrere durch die Transaktion an der Tabelle vorgenommene Modifikationen umfasst, in Reaktion darauf, dass die Transaktion vollständig ausgeführt ist. Das System enthält Mittel zum Speichern des Änderungsnachverfolgungseintrags in einem Änderungsnachverfolgungsstrom. Das System enthält Mittel zum Ausführen einer Aufgabe an der neuen Tabellenversion als Reaktion auf ein Auslöseereignis.
  • Beispiel 13 ist ein System wie beim Beispiel 12, wobei die Transaktion ein Aufnehmen von neuen Daten in die Tabelle umfasst und wobei das System weiterhin folgendes umfasst: Mittel zum Speichern der neuen Tabellenversion in einer Staging-Tabelle vor einer Ausführung der Aufgabe an der neuen Tabellenversion; und Mittel zum Übergehen der neuen Tabellenversion zu einer oder mehreren Zieltabellen in Reaktion darauf, dass die Aufgabe ausgeführt ist.
  • Beispiel 14 ist ein System wie bei einem der Beispiele 12-13, das weiterhin Mittel zum Voranbringen eines Strom-Offsets im Änderungsnachverfolgungsstrom in Reaktion darauf, dass der Änderungsnachverfolgungseintrag im Änderungsnachverfolgungsstrom gespeichert ist, umfasst, und wobei das Auslöseereignis das Voranbringen des Strom-Offsets ist.
  • Beispiel 15 ist ein System wie bei einem der Beispiele 12-14, wobei das Auslöseereignis eines oder mehreres von folgendem umfasst: eine vordefinierte Zeitperiode, eine Schwellenanzahl von an der Tabelle vorgenommenen Modifikationen, das Speichern des Änderungsnachverfolgungseintrags im Änderungsnachverfolgungsstrom oder das Speichern des Änderungsnachverfolgungseintrags im Änderungsnachverfolgungsstrom plus eine vordefinierte Zeitperiode.
  • Beispiel 16 ist ein System wie bei einem der Beispiele 12-15, wobei die Tabelle eine oder mehrere Mikropartitionen umfasst, die Datenbankdaten speichern, und wobei die Mittel zum Ausführen der Transaktion an der Tabelle konfiguriert sind, um wenigstens eine neue Mikropartition zu erzeugen, die die Transaktion widerspiegelt, und wenigstens eine entsprechende Mikropartition von der einen oder den mehreren Mikropartitionen zu entfernen.
  • Beispiel 17 ist ein System wie bei einem der Beispiele 12-16, wobei der Änderungsnachverfolgungsstrom transaktional ist, so dass der Änderungsnachverfolgungsstrom erst fortschreitet, nachdem die Transaktion vollständig und erfolgreich ausgeführt ist, und wobei die Aufgabe an der neuen Tabellenversion auf transaktionale Weise ausgeführt wird, so dass die Daten, auf welche die Aufgabe zugreift, nur einmal abgerufen werden.
  • Beispiel 18 ist ein nichtflüchtiges, computerlesbares Speichermedium, das Anweisungen speichert, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren: eine Transaktion an einer Tabelle ausführt oder ausführen, die Datenbankdaten enthält, wobei ein Ausführen der Transaktion ein Erzeugen einer neuen Tabellenversion umfasst; in Reaktion darauf, dass die Transaktion vollständig ausgeführt ist, einen Änderungsnachverfolgungseintrag erzeugt oder erzeugen, der einen Hinweis auf eine oder mehrere durch die Transaktion an der Tabelle vorgenommene Modifikationen umfasst; den Änderungsnachverfolgungseintrag in einem Änderungsnachverfolgungsstrom speichert oder speichern; und in Reaktion auf ein Auslöseereignis eine Aufgabe an der neuen Tabellenversion ausführt oder ausführen.
  • Beispiel 19 ist ein nichtflüchtiges, computerlesbares Speichermedium wie beim Beispiel 18, wobei die Transaktion ein Aufnehmen von neuen Daten in die Tabelle umfasst und wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren: die neue Tabellenversion vor einem Ausführen der Aufgabe an der neuen Tabellenversion in einer Staging-Tabelle speichert oder speichern; und in Reaktion darauf, dass die Aufgabe ausgeführt ist, die neue Tabellenversion zu einer oder mehreren Zieltabellen übergehen lässt oder lassen.
  • Beispiel 20 ist ein nichtflüchtiges, computerlesbares Speichermedium wie bei einem der Beispiele 18-19, wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren einen Strom-Offset im Änderungsnachverfolgungsstrom in Reaktion darauf, dass der Änderungsnachverfolgungseintrag im Änderungsnachverfolgungsstrom gespeichert ist, voranbringt oder voranbringen, und wobei das Auslöseereignis das Voranbringen des Strom-Offsets ist.
  • Beispiel 21 ist ein nichtflüchtiges, computerlesbares Speichermedium wie bei einem der Beispiele 18-20, wobei das Auslöseereignis eines oder mehreres von folgendem umfasst: eine vordefinierte Zeitperiode, eine Schwellenanzahl von an der Tabelle vorgenommenen Modifikationen, das Speichern des Änderungsnachverfolgungseintrags im Änderungsnachverfolgungsstrom oder das Speichern des Änderungsnachverfolgungseintrags im Änderungsnachverfolgungsstrom plus eine vordefinierte Zeitperiode.
  • Beispiel 22 ist ein nichtflüchtiges, computerlesbares Speichermedium wie bei einem der Beispiele 18-21, wobei die Tabelle eine oder mehrere Mikropartitionen umfasst, die Datenbankdaten speichern, und wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Transaktion an der Tabelle ausführt oder ausführen, indem wenigstens eine neue Mikropartition erzeugt wird, die die Transaktion widerspiegelt, und wenigstens eine entsprechende Mikropartition von der einen oder den mehreren Mikropartitionen entfernt wird.
  • Beispiel 23 ist ein nichtflüchtiges, computerlesbares Speichermedium wie bei einem der Beispiele 18-22, wobei der Änderungsnachverfolgungsstrom transaktional ist, so dass der Änderungsnachverfolgungsstrom erst fortschreitet, nachdem die Transaktion vollständig und erfolgreich ausgeführt ist, und wobei die Aufgabe an der neuen Tabellenversion auf transaktionale Weise ausgeführt wird, so dass die Aufgabe an der neuen Tabellenversion nur einmal ausgeführt wird.
  • Beispiel 24 ist eine Vorrichtung, die Mittel enthält, um ein Verfahrens wie bei einem der Beispiele 1-23 durchzuführen.
  • Beispiel 25 ist ein maschinenlesbarer Speicher, der maschinenlesbare Anweisungen enthält, die dann, wenn sie ausgeführt werden, ein Verfahren implementieren oder eine Vorrichtung realisieren von einem der Beispiele1-23.
  • Die Ablaufdiagramme und Blockdiagramme hierin stellen die Architektur, die Funktionalität und einen Betrieb von möglichen Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung dar. In dieser Hinsicht kann jeder Block in den Ablaufdiagrammen oder Blockdiagrammen ein Modul, ein Segment oder einen Teilbereich eines Codes darstellen, das oder der eine oder mehrere ausführbare Anweisungen zum Implementieren der spezifizierten logischen Funktion(en) umfasst. Es wird auch angemerkt werden, dass jeder Block der Blockdiagramme und/oder Ablaufdiagramme und Kombinationen von Blöcken in den Blockdiagrammen und/oder Ablaufdiagrammen durch spezielle hardwarebasierte Systeme implementiert werden kann oder können, die die spezifizierten Funktionen oder Handlungen durchführen, oder Kombinationen von spezieller Hardware und Computeranweisungen. Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand einschließlich Anweisungsmitteln erzeugen, die die in dem Block oder den Blöcken des Ablaufdiagramms und/oder des Blockdiagramms spezifizierte Funktion/Handlung implementieren.
  • Die hierin beschriebenen Systeme und Verfahren stellen ein flexibles und skalierbares Datenlager bzw. eine flexible und skalierbare universelle Datenbank unter Verwendung neuer Datenverarbeitungsplattformen, Verfahren, Systeme und Algorithmen zur Verfügung. Bei einigen Ausführungsformen setzen die beschriebenen Systeme und Verfahren eine Cloud-Infrastruktur wirksam ein, die cloudbasierte Speicherressourcen, Computerressourcen und dergleichen unterstützt. Beispielhafte cloudbasierte Speicherressourcen bieten eine erhebliche Speicherkapazität an, die bei Bedarf zu geringen Kosten verfügbar ist. Weiterhin können diese cloudbasierten Speicherressourcen fehlertolerant und hoch skalierbar sein, was bei privaten Datenspeichersystemen kostspielig sein kann. Beispielhafte cloudbasierte Computerressourcen sind bei Bedarf verfügbar und können basierend auf tatsächlichen Nutzungsebenen der Ressourcen berechnet bzw. abgerechnet werden. Typischerweise wird die Cloud-Infrastruktur auf schnelle Weise dynamisch genutzt, neu konfiguriert und außer Betrieb genommen.
  • Bei den beschriebenen Systemen und Verfahren verwendet ein Datenspeichersystem eine SQL-(= Structured Query Language)basierte relationale Datenbank. Diese Systeme und Verfahren sind jedoch auf irgendeinen Typ von Datenbank anwendbar, die irgendeine Datenspeicherarchitektur verwendet und die irgendeine Sprache verwendet, um Daten innerhalb der Datenbank zu speichern und abzurufen. Die hierin beschriebenen Systeme und Verfahren können auch ein mandantenfähiges System bzw. Mehrmietersystem bereitstellen, das eine Isolierung von Computerressourcen und Daten zwischen verschiedenen Kunden/Clients und zwischen verschiedenen Anwendern innerhalb desselben Kunden/Clients unterstützt.
  • Verschiedene Techniken oder bestimmte Aspekte oder Teilbereiche davon können die Form eines Programmcodes (d.h. von Anweisungen) annehmen, der in materiellen Medien, wie beispielsweise Disketten, CD-ROMs, Festplatten, einem nichtflüchtigen computerlesbaren Speichermedium oder irgendeinem anderen maschinenlesbaren Speichermedium verkörpert ist, wobei dann, wenn der Programmcode in eine Maschine, wie beispielsweise einen Computer, geladen und durch diese ausgeführt wird, die Maschine eine Vorrichtung zum Ausführen bzw. Praktizieren der verschiedenen Techniken wird. In dem Falle einer Ausführung des Programmcode auf programmierbaren Computern kann die Computervorrichtung einen Prozessor, ein durch den Prozessor lesbares Speichermedium (einschließlich eines flüchtigen und nichtflüchtigen Speichers und/oder von Speicherelementen), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung enthalten. Der flüchtige und der nichtflüchtige Speicher und/oder die Speicherelemente können ein RAM, ein EPROM, ein Flash-Laufwerk, ein optisches Laufwerk, eine magnetische Festplatte oder ein anderes Medium zum Speichern elektronischer Daten sein. Ein oder mehrere Programme, die die hierin beschriebenen verschiedenen Techniken implementieren oder verwenden können, können eine Anwendungsprogrammierschnittstelle (API), wiederverwendbare Steuerungen und dergleichen verwenden. Solche Programme können in einer verfahrens- oder objektorientierten Programmier-Hochsprache implementiert werden, um mit einem Computersystem zu kommunizieren. Das/die Programm(e) kann/können jedoch in Assembler- oder Maschinensprache implementiert werden, wie es erwünscht ist. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein und mit Hardwareimplementierungen kombiniert werden.
  • Es sollte verstanden werden, dass viele der in dieser Spezifikation beschriebenen Funktionseinheiten als eine oder mehrere Komponenten implementiert werden können, was ein Ausdruck ist, der verwendet wird, um ihre Implementierungsunabhängigkeit besonders hervorzuheben. Zum Beispiel kann eine Komponente als Hardwareschaltung implementiert werden, die anwendungsspezifische VLSI-(= Very Large Scale Integration)Schaltungen oder Gate-Arrays, Standardhalbleiter wie Logikchips, Transistoren, oder andere diskrete Komponenten umfasst. Eine Komponente kann auch in programmierbaren Hardwarevorrichtungen wie feldprogrammierbaren Gate-Arrays, programmierbarer Zellenlogik bzw. Arraylogik, programmierbaren Logikvorrichtungen oder dergleichen implementiert sein.
  • Die Komponenten können auch in Software zur Ausführung durch verschiedene Typen von Prozessoren implementiert werden. Eine identifizierte Komponente von ausführbarem Code kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computeranweisungen umfassen, die zum Beispiel als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Nichtsdestoweniger müssen die ausführbaren einer identifizierten Komponente nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen umfassen, die an verschiedenen Orten gespeichert sind und dann, wenn sie logisch miteinander verbunden sind, die Komponente bilden und den angegebenen Zweck für die Komponente erreichen.
  • Tatsächlich kann eine Komponente eines ausführbaren Codes eine einzelne Anweisung oder viele Anweisungen sein, und sie kann sogar über mehrere verschiedene Codesegmente, zwischen verschiedenen Programmen, und über mehrere Speichervorrichtungen verteilt sein. Gleichermaßen können Betriebsdaten hierin innerhalb von Komponenten identifiziert und dargestellt werden und können in irgendeiner geeigneten Form verkörpert sein und innerhalb von irgendeinem geeigneten Typ von Datenstruktur organisiert sein. Die Betriebsdaten können als einzelner Datensatz gesammelt werden oder können über verschiedene Standorte, einschließlich verschiedene Speichervorrichtungen, verteilt werden und können wenigstens teilweise nur als elektronische Signale auf einem System oder einem Netzwerk existieren. Die Komponenten können passiv oder aktiv sein, einschließlich Agenten, die betreibbar sind, um erwünschte Funktionen durchzuführen.
  • Eine Bezugnahme in dieser Spezifikation auf „ein Beispiel“ bedeutet, dass ein in Verbindung mit dem Beispiel beschriebenes Merkmal, eine Struktur oder eine Charakteristik in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Daher beziehen sich die Erscheinungen des Ausdrucks „bei einem Beispiel“ an verschiedenen Stellen in dieser Spezifikation nicht unbedingt alle auf dieselbe Ausführungsform.
  • Wie es hierin verwendet ist, kann eine Vielzahl von Elementen, Strukturelementen, Kompositionselementen und/oder Materialien aus Gründen der Bequemlichkeit in einer gemeinsamen Liste dargestellt werden. Diese Listen sollten jedoch so ausgelegt werden, dass jedes Element der Liste einzeln als separates und eindeutiges Element identifiziert wird. Daher sollte kein einzelnes Element einer solchen Liste als faktisches Äquivalent zu einem anderen Element derselben Liste ausgelegt werden, das allein auf seiner Darstellung in einer gemeinsamen Gruppe ohne gegenteilige Anhaltspunkte beruht. Darüber hinaus können hierin verschiedene Ausführungsformen und Beispiele der vorliegenden Offenbarung zusammen mit Alternativen für die verschiedenen Komponenten davon erwähnt werden. Es versteht sich, dass solche Ausführungsformen, Beispiele und Alternativen nicht als de facto Äquivalente zueinander auszulegen sind, sondern als separate und autonome Darstellungen der vorliegenden Offenbarung zu betrachten sind.
  • Obwohl das Voranstehende aus Gründen der Klarheit ausführlich beschrieben wurde, wird es offensichtlich sein, dass bestimmte Änderungen und Modifikationen vorgenommen werden können, ohne von den Grundsätzen abzuweichen. Es sollte beachtet werden, dass es viele alternative Möglichkeiten gibt, sowohl die hier beschriebenen Prozesse als auch die hier beschriebenen Vorrichtungen zu implementieren. Dementsprechend sind die vorliegenden Ausführungsformen als illustrativ und nicht als beschränkend zu betrachten.
  • Fachleute dem Gebiet werden zu schätzen wissen, dass viele Änderungen an den Details der oben beschriebenen Ausführungsformen vorgenommen werden können, ohne von den zugrunde liegenden Prinzipien der Offenbarung abzuweichen. Der Schutzumfang dieser Offenbarung sollte daher nur durch die folgenden Ansprüche bestimmt sein.
  • Bei einem weiteren Beispiel führen Systeme und Vorrichtungen zum Ausführen einer Aufgabe an Datenbankdaten in Reaktion auf ein Auslöseereignis eine Transaktion an einer Tabelle aus, die Datenbankdaten umfasst, wobei ein Ausführen der Transaktion ein Erzeugen einer neuen Tabellenversion umfasst. Dabei umfassen Operationen in Reaktion darauf, dass die Transaktion vollständig ausgeführt ist, ein Erzeugen eines Änderungsnachverfolgungseintrags, der einen Hinweis auf eine oder mehrere an der Tabelle durch die Transaktion vorgenommene Modifikationen umfasst, und ein Speichern des Änderungsnachverfolgungseintrags in einem Änderungsnachverfolgungsstrom, wobei eine Aufgabe an der neuen Tabellenversion in Reaktion auf ein Auslöseereignis ausgeführt wird.
  • 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 16/203322 [0001]

Claims (27)

  1. Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen: Ausführen einer Transaktion an einer ersten Tabelle, wobei die erste Tabelle Datenbankdaten umfasst, wobei das Ausführen der Transaktion ein Erzeugen einer zweiten Tabelle entsprechend einer neuen Version der ersten Tabelle umfasst, wobei die zweite Tabelle eine von der ersten Tabelle separate Tabelle ist; nachdem die Transaktion vollständig ausgeführt ist, basierend wenigstens teilweise auf der zweiten Tabelle, die als die separate Tabelle erzeugt ist, Erzeugen eines Änderungsnachverfolgungseintrags, wobei der Änderungsnachverfolgungseintrag einen Hinweis auf wenigstens eine an der ersten Tabelle durch das Ausführen der Transaktion vorgenommene Modifikation umfasst; Voranbringen eines Änderungsnachverfolgungsstroms wenigstens teilweise durch Eingeben des erzeugten Änderungsnachverfolgungseintrags in den Änderungsnachverfolgungsstrom, wobei das Voranbringen des Änderungsnachverfolgungsstroms ein Voranbringen eines Strom-Offsets und einer Zurückbehaltungsgrenze im Änderungsnachverfolgungsstrom umfasst, wobei der Strom-Offset einer ersten Position im Änderungsnachverfolgungsstrom entspricht und die Zurückbehaltungsgrenze einer zweiten Position im Änderungsnachverfolgungsstrom entspricht, wobei der Änderungsnachverfolgungsstrom eine Reihe von festgeschriebenen Transaktionen enthält; und in Reaktion auf ein Auslöseereignis, das das Voranbringen des Änderungsnachverfolgungsstroms enthält, automatisch Ausführen einer vordefinierten Aufgabe an der zweiten Tabelle und Erzeugen eines Aufgabenhistorieneintrags, der anzeigt, dass die Aufgabe erfolgreich ausgeführt wurde.
  2. Computerprogramm nach Anspruch 1, wobei: ein Ausführen der Transaktion an der ersten Tabelle ein Aufnehmen von neuen Daten in die erste Tabelle umfasst; und die Operationen weiterhin folgendes umfassen: Speichern der neuen Daten in einer Staging-Tabelle; und Transformieren der neuen Daten in der Staging-Tabelle zur Speicherung in einer oder mehreren Zieltabellen.
  3. Computerprogramm nach Anspruch 1, wobei ein Ausführen der Transaktion an der ersten Tabelle eines oder mehreres von einem Einfügen von Daten in die erste Tabelle, einem Löschen von Daten aus der ersten Tabelle, einem Aktualisieren von Daten in der ersten Tabelle und einem Zusammenführen von Daten in der ersten Tabelle umfasst.
  4. Computerprogramm nach Anspruch 1, wobei der Änderungsnachverfolgungseintrag weiterhin einen Transaktions-Zeitstempel umfasst, der mit dem Ausführen der Transaktion assoziiert ist, wobei der Änderungsnachverfolgungsstrom nach Transaktions-Zeitstempeln chronologisch geordnet ist.
  5. Computerprogramm nach Anspruch 4, wobei der Hinweis auf wenigstens eine durch das Ausführen der Transaktion an der ersten Tabelle vorgenommene Modifikation folgendes anzeigt: irgendeine oder mehrere Mikropartitionen, die durch das Ausführen der Transaktion zu der ersten Tabelle hinzugefügt wurden; irgendeine oder mehrere Mikropartitionen, die durch das Ausführen der Transaktion aus der ersten Tabelle entfernt wurden; irgendeine oder mehrere Zeilen, die durch das Ausführen der Transaktion zu der ersten Tabelle hinzugefügt wurden; und irgendeine oder mehrere Zeilen, die durch das Ausführen der Transaktion aus der ersten Tabelle entfernt wurden.
  6. Computerprogramm nach Anspruch 5, wobei die Operationen weiterhin ein Lesen des Änderungsnachverfolgungsstroms umfassen, um ein Delta für die erste Tabelle zwischen einem ersten Transaktions-Zeitstempel und einem zweiten Transaktions-Zeitstempel zu bestimmen.
  7. Computerprogramm nach Anspruch 5, wobei die Operationen weiterhin ein Ausführen einer Abfrage an dem Änderungsnachverfolgungsstrom umfassen, um eine umfassende Änderungsnachverfolgungszusammenfassung zwischen einem ersten Transaktions-Zeitstempel und einem zweiten Transaktions-Zeitstempel zu bestimmen, wobei die umfassende Änderungsnachverfolgungszusammenfassung alle Zwischenmodifikationen anzeigt, die an der ersten Tabelle zwischen dem ersten Transaktions-Zeitstempel und dem zweiten Transaktions-Zeitstempel auftraten.
  8. Computerprogramm nach Anspruch 1, wobei das Auslöseereignis weiterhin ein Verstreichen einer vordefinierten Zeitperiode umfasst.
  9. Computerprogramm nach Anspruch 1, wobei das Auslöseereignis weiterhin eine Schwellenanzahl von Modifikationen umfasst, die an der ersten Tabelle vorgenommen worden sind.
  10. System, umfassend: wenigstens einen Prozessor; und ein oder mehrere nichtflüchtige, computerlesbare Speichermedien, die Anweisungen enthalten, die durch den wenigstens einen Prozessor ausführbar sind, zum Veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Ausführen einer Transaktion an einer ersten Tabelle, wobei die erste Tabelle Datenbankdaten umfasst, wobei das Ausführen der Transaktion ein Erzeugen einer zweiten Tabelle entsprechend einer neuen Version der ersten Tabelle umfasst, wobei die zweite Tabelle eine von der ersten Tabelle separate Tabelle ist; nachdem die Transaktion vollständig ausgeführt ist, basierend wenigstens teilweise auf der zweiten Tabelle, die als die separate Tabelle erzeugt ist, Erzeugen eines Änderungsnachverfolgungseintrags, wobei der Änderungsnachverfolgungseintrag einen Hinweis auf wenigstens eine an der ersten Tabelle durch das Ausführen der Transaktion vorgenommene Modifikation umfasst; Voranbringen eines Änderungsnachverfolgungsstroms wenigstens teilweise durch Eingeben des erzeugten Änderungsnachverfolgungseintrags in den Änderungsnachverfolgungsstrom, wobei das Voranbringen des Änderungsnachverfolgungsstroms ein Voranbringen eines Strom-Offsets und einer Zurückbehaltungsgrenze im Änderungsnachverfolgungsstrom umfasst, wobei der Strom-Offset einer ersten Position im Änderungsnachverfolgungsstrom entspricht und die Zurückbehaltungsgrenze einer zweiten Position im Änderungsnachverfolgungsstrom entspricht, wobei der Änderungsnachverfolgungsstrom eine Reihe von festgeschriebenen Transaktionen enthält; und in Reaktion auf ein Auslöseereignis, das das Voranbringen des Änderungsnachverfolgungsstroms enthält, automatisch Ausführen einer vordefinierten Aufgabe an der zweiten Tabelle und Erzeugen eines Aufgabenhistorieneintrags, der anzeigt, dass die Aufgabe erfolgreich ausgeführt wurde.
  11. System nach Anspruch 10, wobei: ein Ausführen der Transaktion an der ersten Tabelle ein Aufnehmen von neuen Daten in die erste Tabelle umfasst; und die Operationen weiterhin folgendes umfassen: Speichern der neuen Daten in einer Staging-Tabelle; und Transformieren der neuen Daten in der Staging-Tabelle zur Speicherung in einer oder mehreren Zieltabellen.
  12. System nach Anspruch 10, wobei ein Ausführen der Transaktion an der ersten Tabelle eines oder mehreres von einem Einfügen von Daten in die erste Tabelle, einem Löschen von Daten aus der ersten Tabelle, einem Aktualisieren von Daten in der ersten Tabelle und einem Zusammenführen von Daten in der ersten Tabelle umfasst.
  13. System nach Anspruch 10, wobei der Änderungsnachverfolgungseintrag weiterhin einen Transaktions-Zeitstempel umfasst, der mit dem Ausführen der Transaktion assoziiert ist, wobei der Änderungsnachverfolgungsstrom nach Transaktions-Zeitstempeln chronologisch geordnet ist.
  14. System nach Anspruch 13, wobei der Hinweis auf eine oder mehrere durch das Ausführen der Transaktion an der ersten Tabelle vorgenommene Modifikationen folgendes anzeigt: irgendeine oder mehrere Mikropartitionen, die durch das Ausführen der Transaktion zu der ersten Tabelle hinzugefügt wurden; irgendeine oder mehrere Mikropartitionen, die durch das Ausführen der Transaktion aus der ersten Tabelle entfernt wurden; irgendeine oder mehrere Zeilen, die durch das Ausführen der Transaktion zu der ersten Tabelle hinzugefügt wurden; und irgendeine oder mehrere Zeilen, die durch das Ausführen der Transaktion aus der ersten Tabelle entfernt wurden.
  15. System nach Anspruch 14, wobei die Operationen weiterhin ein Lesen des Änderungsnachverfolgungsstroms umfassen, um ein Delta für die erste Tabelle zwischen einem ersten Transaktions-Zeitstempel und einem zweiten Transaktions-Zeitstempel zu bestimmen.
  16. System nach Anspruch 14, wobei die Operationen weiterhin ein Ausführen einer Abfrage an dem Änderungsnachverfolgungsstrom umfassen, um eine umfassende Änderungsnachverfolgungszusammenfassung zwischen einem ersten Transaktions-Zeitstempel und einem zweiten Transaktions-Zeitstempel zu bestimmen, wobei die umfassende Änderungsnachverfolgungszusammenfassung alle Zwischenmodifikationen anzeigt, die an der ersten Tabelle zwischen dem ersten Transaktions-Zeitstempel und dem zweiten Transaktions-Zeitstempel auftraten.
  17. System nach Anspruch 10, wobei das Voranbringen des Änderungsnachverfolgungsstroms ein Voranbringen eines Strom-Offsets im Änderungsnachverfolgungsstrom umfasst.
  18. System nach Anspruch 10, wobei das Auslöseereignis weiterhin ein Verstreichen einer vordefinierten Zeitperiode umfasst.
  19. System nach Anspruch 10, wobei das Auslöseereignis weiterhin eine Schwellenanzahl von Modifikationen umfasst, die an der ersten Tabelle vorgenommen worden sind.
  20. Nichtflüchtiges, computerlesbares Speichermedium, das Anweisungen enthält, die durch wenigstens einem Prozessor ausführbar sind, zum Veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Ausführen einer Transaktion an einer ersten Tabelle, wobei die erste Tabelle Datenbankdaten umfasst, wobei das Ausführen der Transaktion ein Erzeugen einer zweiten Tabelle entsprechend einer neuen Version der ersten Tabelle umfasst, wobei die zweite Tabelle eine von der ersten Tabelle separate Tabelle ist; nachdem die Transaktion vollständig ausgeführt ist, basierend wenigstens teilweise auf der zweiten Tabelle, die als die separate Tabelle erzeugt ist, Erzeugen eines Änderungsnachverfolgungseintrags, wobei der Änderungsnachverfolgungseintrag einen Hinweis auf wenigstens eine an der ersten Tabelle durch das Ausführen der Transaktion vorgenommene Modifikation umfasst; Voranbringen eines Änderungsnachverfolgungsstroms wenigstens teilweise durch Eingeben des erzeugten Änderungsnachverfolgungseintrags in den Änderungsnachverfolgungsstrom, wobei das Voranbringen des Änderungsnachverfolgungsstroms ein Voranbringen eines Strom-Offsets und einer Zurückbehaltungsgrenze im Änderungsnachverfolgungsstrom umfasst, wobei der Strom-Offset einer ersten Position im Änderungsnachverfolgungsstrom entspricht und die Zurückbehaltungsgrenze einer zweiten Position im Änderungsnachverfolgungsstrom entspricht, wobei der Änderungsnachverfolgungsstrom eine Reihe von festgeschriebenen Transaktionen enthält; und in Reaktion auf ein Auslöseereignis, das das Voranbringen des Änderungsnachverfolgungsstroms enthält, automatisch Ausführen einer vordefinierten Aufgabe an der zweiten Tabelle und Erzeugen eines Aufgabenhistorieneintrags, der anzeigt, dass die Aufgabe erfolgreich ausgeführt wurde.
  21. Nichtflüchtiges, computerlesbares Speichermedium nach Anspruch 20, wobei: ein Ausführen der Transaktion an der ersten Tabelle ein Aufnehmen von neuen Daten in die erste Tabelle umfasst; und die Operationen weiterhin folgendes umfassen: Speichern der neuen Daten in einer Staging-Tabelle; und Transformieren der neuen Daten in der Staging-Tabelle zur Speicherung in einer oder mehreren Zieltabellen.
  22. Nichtflüchtiges, computerlesbares Speichermedium nach Anspruch 20, wobei ein Ausführen der Transaktion an der ersten Tabelle eines oder mehreres von einem Einfügen von Daten in die erste Tabelle, einem Löschen von Daten aus der ersten Tabelle, einem Aktualisieren von Daten in der ersten Tabelle und einem Zusammenführen von Daten in der ersten Tabelle umfasst.
  23. Nichtflüchtiges, computerlesbares Speichermedium nach Anspruch 20, wobei der Änderungsnachverfolgungseintrag weiterhin einen Transaktions-Zeitstempel umfasst, der mit dem Ausführen der Transaktion assoziiert ist, wobei der Änderungsnachverfolgungsstrom nach Transaktions-Zeitstempeln chronologisch geordnet ist.
  24. Nichtflüchtiges, computerlesbares Speichermedium nach Anspruch 23, wobei der Hinweis auf eine oder mehrere durch das Ausführen der Transaktion an der ersten Tabelle vorgenommene Modifikationen folgendes anzeigt: irgendeine oder mehrere Mikropartitionen, die durch das Ausführen der Transaktion zu der ersten Tabelle hinzugefügt wurden; irgendeine oder mehrere Mikropartitionen, die durch das Ausführen der Transaktion aus der ersten Tabelle entfernt wurden; irgendeine oder mehrere Zeilen, die durch das Ausführen der Transaktion zu der ersten Tabelle hinzugefügt wurden; und irgendeine oder mehrere Zeilen, die durch das Ausführen der Transaktion aus der ersten Tabelle entfernt wurden.
  25. Nichtflüchtiges, computerlesbares Speichermedium nach Anspruch 24, wobei die Operationen weiterhin ein Ausführen einer Abfrage an dem Änderungsnachverfolgungsstrom umfassen, um eine umfassende Änderungsnachverfolgungszusammenfassung zwischen einem ersten Transaktions-Zeitstempel und einem zweiten Transaktions-Zeitstempel zu bestimmen, wobei die umfassende Änderungsnachverfolgungszusammenfassung alle Zwischenmodifikationen anzeigt, die an der ersten Tabelle zwischen dem ersten Transaktions-Zeitstempel und dem zweiten Transaktions-Zeitstempel auftraten.
  26. Nichtflüchtiges, computerlesbares Speichermedium nach Anspruch 20, wobei das Voranbringen des Änderungsnachverfolgungsstroms ein Voranbringen eines Strom-Offsets im Änderungsnachverfolgungsstrom umfasst.
  27. Nichtflüchtiges, computerlesbares Speichermedium nach Anspruch 20, wobei das Auslöseereignis weiterhin ein Verstreichen einer vordefinierten Zeitperiode umfasst, oder ein Erfüllen einer Schwellenanzahl von Modifikationen, die an der ersten Tabelle vorgenommen worden sind.
DE202019005723.4U 2018-11-28 2019-11-25 Aufgabenplanung in Datenbanksystemen Active DE202019005723U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/203,322 2018-11-28
US16/203,322 US11106658B2 (en) 2018-11-28 2018-11-28 Task scheduling in database systems

Publications (1)

Publication Number Publication Date
DE202019005723U1 true DE202019005723U1 (de) 2021-08-30

Family

ID=70770763

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202019005723.4U Active DE202019005723U1 (de) 2018-11-28 2019-11-25 Aufgabenplanung in Datenbanksystemen

Country Status (5)

Country Link
US (6) US11106658B2 (de)
EP (1) EP3887966A4 (de)
CN (1) CN112997167A (de)
DE (1) DE202019005723U1 (de)
WO (1) WO2020112663A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11106658B2 (en) 2018-11-28 2021-08-31 Snowflake Inc. Task scheduling in database systems
US11086840B2 (en) 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
US11238174B2 (en) * 2019-01-31 2022-02-01 Salesforce.Com, Inc. Systems and methods of database encryption in a multitenant database management system
US20210110328A1 (en) * 2019-10-14 2021-04-15 Oracle International Corporation Techniques for configuring workflow event processing and identifier federation
US11055262B1 (en) * 2020-03-09 2021-07-06 Snowflake Inc. Extensible streams on data sources
CN112711624A (zh) * 2020-12-25 2021-04-27 北京达佳互联信息技术有限公司 数据打包控制方法、装置、电子设备和存储介质
CN112650744B (zh) * 2020-12-31 2024-04-30 广州晟能软件科技有限公司 一种防止数据二次污染的数据治理方法
US11640411B2 (en) * 2021-07-27 2023-05-02 Sap Se Data replication system
CN113672409A (zh) * 2021-08-24 2021-11-19 贵州电子商务云运营有限责任公司 一种基于一个定时任务执行多种不同业务事件的方法
CN114064609A (zh) * 2021-11-12 2022-02-18 中交智运有限公司 一种数据仓库任务调度方法、装置、系统及存储介质
FR3129496A1 (fr) * 2021-11-25 2023-05-26 Stmicroelectronics (Grenoble 2) Sas Procédé de gestion d’événements et circuit intégré correspondant.
US11620310B1 (en) * 2022-03-31 2023-04-04 Snowflake Inc. Cross-organization and cross-cloud automated data pipelines
CN115080203B (zh) * 2022-05-13 2024-04-19 广东工业大学 一种基于任务关联性的北斗测试任务调度方法和系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589357B2 (en) * 2006-10-20 2013-11-19 Oracle International Corporation Techniques for automatically tracking and archiving transactional data changes
TWI417722B (zh) * 2007-01-26 2013-12-01 Hicamp Systems Inc 階層式不可改變的內容可定址的記憶體處理器
US7739547B2 (en) 2007-06-07 2010-06-15 International Business Machines Corporation Failure recovery and error correction techniques for data loading in information warehouses
US8682859B2 (en) 2007-10-19 2014-03-25 Oracle International Corporation Transferring records between tables using a change transaction log
US8522006B2 (en) * 2008-09-05 2013-08-27 Accenture Global Services Limited Enhanced distribution of digital content
US20120207075A1 (en) * 2011-02-16 2012-08-16 Nagaraj Thadi M Multicast data delivery mechanism using packet bundling or file delivery framework
US9767138B2 (en) 2013-06-12 2017-09-19 Oracle International Corporation In-database sharded queue for a shared-disk database
US20150026114A1 (en) * 2013-07-18 2015-01-22 Dania M. Triff System and method of automatically extracting data from plurality of data sources and loading the same to plurality of target databases
WO2015065333A1 (en) 2013-10-29 2015-05-07 Hewlett-Packard Development Company, L.P. Mapping virtual memory pages to physical memory pages
US10359937B2 (en) 2013-12-20 2019-07-23 Sandisk Technologies Llc System and method of implementing a table storage support scheme
US9547651B1 (en) * 2014-03-31 2017-01-17 EMC IP Holding Company LLC Establishing file relationships based on file operations
US10108623B2 (en) * 2014-12-12 2018-10-23 International Business Machines Corporation Merging database operations for serializable transaction execution
US10666574B2 (en) * 2015-09-28 2020-05-26 Amazon Technologies, Inc. Distributed stream-based database triggers
WO2017115174A1 (en) * 2015-12-28 2017-07-06 Mobeewave, Inc. System for and method of authenticating a user on a device
US10204130B2 (en) * 2016-03-23 2019-02-12 International Business Machines Corporation Transactional table truncation for concurrent transactions
US10346248B2 (en) * 2016-06-23 2019-07-09 Red Hat Israel, Ltd. Failure resistant volume creation in a shared storage environment
US9753935B1 (en) * 2016-08-02 2017-09-05 Palantir Technologies Inc. Time-series data storage and processing database system
US10262002B2 (en) * 2016-08-11 2019-04-16 International Business Machines Corporation Consistent execution of partial queries in hybrid DBMS
US10664462B2 (en) * 2017-03-01 2020-05-26 Sap Se In-memory row storage architecture
US10848545B2 (en) * 2018-01-31 2020-11-24 EMC IP Holding Company LLC Managing cloud storage of block-based and file-based data
US11120006B2 (en) * 2018-06-21 2021-09-14 Amazon Technologies, Inc. Ordering transaction requests in a distributed database according to an independently assigned sequence
US11106658B2 (en) 2018-11-28 2021-08-31 Snowflake Inc. Task scheduling in database systems

Also Published As

Publication number Publication date
WO2020112663A1 (en) 2020-06-04
EP3887966A1 (de) 2021-10-06
US11106658B2 (en) 2021-08-31
US11507570B2 (en) 2022-11-22
US11308078B2 (en) 2022-04-19
US20220164339A1 (en) 2022-05-26
US20220188297A1 (en) 2022-06-16
US20200167340A1 (en) 2020-05-28
CN112997167A (zh) 2021-06-18
EP3887966A4 (de) 2022-08-03
US20210390094A1 (en) 2021-12-16
US20210357391A1 (en) 2021-11-18
US11269866B2 (en) 2022-03-08
US20200167343A1 (en) 2020-05-28
US11157486B2 (en) 2021-10-26

Similar Documents

Publication Publication Date Title
DE202019005723U1 (de) Aufgabenplanung in Datenbanksystemen
DE202019005716U1 (de) Nachverfolgen von Änderungen bei Datenbankdaten
DE202019005715U1 (de) Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten
DE202020005681U1 (de) Tabellen mit Journal in Datenbanksystemen
DE202019005483U1 (de) Datenreplikation und Datenausfallsicherung in Datenbanksystemen
DE202020005680U1 (de) Abfragen über externe Tabellen in Datenbanksystemen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
Albrand et al. ATLAS file and dataset metadata collection and use

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: SNOWFLAKE INC., BOZEMAN, US

Free format text: FORMER OWNER: SNOWFLAKE INC., SAN MATEO, CA, US

R150 Utility model maintained after payment of first maintenance fee after three years