DE202019005715U1 - Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten - Google Patents

Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten Download PDF

Info

Publication number
DE202019005715U1
DE202019005715U1 DE202019005715.3U DE202019005715U DE202019005715U1 DE 202019005715 U1 DE202019005715 U1 DE 202019005715U1 DE 202019005715 U DE202019005715 U DE 202019005715U DE 202019005715 U1 DE202019005715 U1 DE 202019005715U1
Authority
DE
Germany
Prior art keywords
data
micro
partition
transaction
metadata
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
DE202019005715.3U
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 DE202019005715U1 publication Critical patent/DE202019005715U1/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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

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

Abstract

Computerprogramm, das Anweisungen enthält, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren folgendes veranlasst oder veranlassen:
Unterhalten von gespeicherten Daten in einer ersten Mikropartition einer Datenstruktur, wobei die gespeicherten Daten mit einem ersten Zeitstempel assoziiert sind;
in Reaktion auf eine Transaktion Erzeugen von Transaktionsdaten, die mit der Transaktion assoziiert sind, und Durchführen von einer oder mehreren Modifikationen an den gespeicherten Daten in der ersten Mikropartition, um eine zweite Mikropartition basierend auf wenigstens der einen oder den mehreren Modifikationen an den gespeicherten Daten zu erzeugen, wobei die zweite Mikropartition bei einem zweiten Zeitstempel erzeugt wird;
Erzeugen von Modifikationsdaten, wobei die Modifikationsdaten die an den gespeicherten Daten in der ersten und der zweiten Mikropartition zwischen dem ersten und dem zweiten Zeitstempel durchgeführten Modifikationen nachverfolgen;
Verbinden der Modifikationsdaten mit den Transaktionsdaten, um verbundene Daten zu erzeugen;
Empfangen einer Abfrage; und
Ausführen der Abfrage unter Verwendung der verbundenen Daten, um zwischenzeitliche Änderungen an den gespeicherten Daten zwischen dem ersten und dem zweiten Zeitstempel zu bestimmen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Systeme, Computerprogramme und Vorrichtungen für Datenbanken und bezieht sich insbesondere auf eine Nachverfolgung von zwischenzeitlichen Änderungen bzw. Zwischenänderungen an Datenbankdaten.
  • Um als Gebrauchsmuster geschützt zu werden und Gegenstand des Gebrauchsmusters sind gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind. In einem Fall, in welchem in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen, für welche mit den beigefügten Ansprüchen Schutz gesucht wird, darzustellen.
  • HINTERGRUND
  • Datenbanken werden weit verbreitet zur Datenspeicherung und 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. Datenbanken können irgendwo vom kleinen bis zu extrem großen Datensätzen innerhalb von einer oder mehreren Tabellen speichern. Auf diese Daten kann durch verschiedene Anwender in einer Organisation zugreifen 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 zugrunde liegende Architektur können eine wichtige Rolle beim Erreichen einer erwünschten Leistungsfähigkeit von Datenbanken spielen.
  • Datenbankdaten können durch verschiedene Befehle modifiziert werden, einschließlich Einfüge-, Lösch- und Aktualisierungs- bzw. Updatebefehlen, die eine oder mehrere Zeilen in einer Datenbanktabelle modifizieren. Es kann kostspielig sein, solche Modifikationen nachzuverfolgen und Deltainformation zwischen einem ersten Satz von Datenbankdaten und einem zweiten Satz von Datenbankdaten zu bestimmen. Systeme, Verfahren und Vorrichtungen zum effizienten Nachverfolgen von an Datenbankdaten durchgeführten Änderungen werden hierin offenbart.
  • 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 in allen verschiedenen Figuren beziehen, solange nichts anders spezifiziert ist.
    • 1 ist ein Blockdiagramm, das an Tabellenversionen durchgeführte Modifikationen gemäß einer Ausführungsform darstellt;
    • 2 ist ein Blockdiagramm, das einen auf einer Mikropartition einer Datenbank durchgeführten Löschbefehl gemäß einer Ausführungsform darstellt;
    • 3 ist ein Blockdiagramm, das einen auf einer Mikropartition einer Datenbank durchgeführten Einfügebefehl gemäß einer Ausführungsform darstellt;
    • 4 ist ein Blockdiagramm, das einen auf einer Mikropartition einer Datenbank durchgeführten Update- bzw. Aktualisierungsbefehl gemäß einer Ausführungsform darstellt;
    • 5 ist ein Blockdiagramm, das ein Datenbanksystem mit einem Datenbank-Servicemanager gemäß einer Ausführungsform darstellt;
    • 6 ist ein Blockdiagramm, das Komponenten eines Datenbank-Servicemanagers gemäß einer Ausführungsform darstellt;
    • 7 ist ein Blockdiagramm, das Komponenten eines Änderungs-Nachverfolgungsmanagers gemäß einer Ausführungsform darstellt;
    • 8 ist ein schematisches Ablaufdiagramm, das ein Verfahren zum Nachverfolgen von Änderungen an Datenbankdaten gemäß einer Ausführungsform darstellt;
    • 9 ist ein schematisches Ablaufdiagramm, das ein Verfahren zum Nachverfolgen von Änderungen an Datenbankdaten gemäß einer Ausführungsform darstellt; und
    • 10 ist ein Blockdiagramm, das eine beispielhaften Computervorrichtung übereinstimmend mit wenigstens einer Ausführungsform von hierin offenbarten Prozessen und Systemen darstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Systeme, Computerprogramme und Vorrichtungen zum Nachverfolgen einer Reihe von Änderungen an Datenbankdaten und zum Zurückbringen einer umfassenden Zusammenfassung einer Änderungsnachverfolgung für eine Datenbanktabelle werden offenbart. Eine Datenbankänderungsnachverfolgung kann eine Zusammenfassung davon zurückbringen, welche Zeilen sich in einer Datenbanktabelle geändert haben und wie sich diese Zeilen geändert haben. Für eine Datenbank kann ein Delta zurückgebracht werden, das anzeigt, welche Zeilen sich geändert haben und wie sie sich zwischen zwei Zeitstempeln geändert haben, und keine Informationen über allen zwischenzeitlichen Änderungen enthält, die zwischen den beiden Zeitstempeln auftraten. Es kann eine umfassende Zusammenfassung der Änderungsnachverfolgung zurückgebracht werden, die anzeigt, wie sich Daten zwischen zwei Zeitstempeln geändert haben, und alle zwischenzeitlichen Änderungen enthält, die zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel auftraten.
  • Eine Änderungsnachverfolgung ist in der Vergangenheit sehr kostspielig und erfordert erhebliche Ressourcen und Speicherkapazität. Datenbanksysteme sind traditionell unter Verwendung eines Transaktionsprotokolls aufgebaut, das alle in der Datenbank vorgenommenen Änderungen ausdrückt bzw. enthält. Das Transaktionsprotokoll wird normalerweise verwendet, um Transaktionsänderungen atomar und dauerhaft vorzunehmen, und kann weiterhin in einem Fall, in welchem das Datenbanksystem abstürzt und Information wiederhergestellt werden muss, bei einer Wiederherstellung verwendet werden. Die Transaktion umfasst alle Änderungen, die bei der Datenbank aufgetreten sind, und kann verwendet werden, um diese Änderungen zu rekonstruieren. Jedoch erfordert der Ansatz eines Transaktionsprotokolls erhebliche Systemressource, weil Elemente unter Verwendung eines Scans bzw. einer Abtastung des Protokolls gespeichert werden müssen, weil es keine Direktzugriffsspeicherstruktur gibt, um den Prozess eines Rekonstruierens der Datenbank zu beschleunigen. Weiterhin ist das Transaktionsprotokoll selbst physisch bzw. körperlich und muss geparst und auf eine Seitenstruktur angewendet werden, um ganze Zeilenbilder und Änderungen zur Verfügung zu stellen.
  • Bei einem im Stand der Technik bekannten alternativen Ansatz kann zeitliche Information über Datenänderungen in zwei Transaktions-Zeitstempelspalten innerhalb einer Datenbanktabelle gespeichert werden. Die Transaktions-Zeitstempelspalten zeigen Transaktionszeiten an, zu welchen eine Zeile gültig war. Es kann eine interne Historientabelle erzeugt werden, die aktualisierte Dateninformation mit den Zeitstempeln aus den Transaktionszeitstempelspalten speichert. Aktualisierungen und Löschungen kopieren die Werte von geänderten Zeilen in die interne Historientabelle und aktualisieren die Transaktionszeitstempelspalten, um die gültige Transaktionslebensdauer von Zeilen zu markieren. Wenn der historische oder geänderte Datensatz erforderlich ist, müssen eine aktuelle Tabelle und die interne Historientabelle verbunden werden, um das Delta oder die historische Information zwischen zwei Transaktionszeitpunkten zu sammeln. Die Wartung der Transaktionszeitstempelspalten und der internen Historientabelle fügt den Datenbanktransaktionen signifikante Unkosten bzw. einen signifikanten Aufwand hinzu. Zusätzlich müssen Deltaabfragen die Information aus zwei Tabellen verbinden, wenn es angefordert wird.
  • Eine umfassende Zusammenfassung der Änderungsnachverfolgung wird historisch erzeugt, indem eine Modifikation bestimmt wird, die zwischen allen sequentiellen Transaktionspaaren aufgetreten ist, die in der Tabelle auftreten. Zum Beispiel wird eine Modifikation zwischen einem Zeitstempel Null und einem Zeitstempel Eins bestimmt werden; wird eine Modifikation zwischen einem Zeitstempel Eins und einem Zeitstempel Zwei bestimmt werden; wird eine Modifikation zwischen einem Zeitstempel Zwei und einem Zeitstempel Drei bestimmt werden, uun so weiter. Die Modifikationen können durch Vergleichen der Daten innerhalb der Tabelle beim Zeitstempel Null und beim Zeitstempel Eins und so weiter für jedes sequentielle Transaktionspaar in einer relevanten Zeitperiode bestimmt werden. Dies kann erfordern, dass enorme Summen an Daten in der Datenbank gespeichert werden müssen, und kann extrem kostspielig und zeitintensiv durchzuführen sein. Die Modifikationsreihe kann dann berichtet werden, um alle Modifikationen anzuzeigen, die in einer relevanten Zeitperiode in der Tabelle auftraten, wobei eine solche Modifikation zum Beispiel Updates bzw. Aktualisierungen, Löschungen, Einfügungen oder Zusammenführungen bei den Datenbankdaten umfasst.
  • Die hierin offenbarten Systeme, Verfahren und Vorrichtungen stellen ein kostengünstiges Mittel zum Erzeugen einer umfassenden Zusammenfassung einer Änderungsnachverfolgung zur Verfügung, die alle Modifikationen enthält, die in einer relevanten Zeitperiode bei einer Datenbanktabelle aufgetreten sind. Solche Systeme, Verfahren und Vorrichtungen ermöglichen, dass eine einzelne Abfrage über Transaktionsinformation in Betrieb genommen wird, um eine umfassende Auflistung von Modifikationen zurückzubringen, die in einer Tabelle aufgetreten sind. Dies reduziert die Speicherkapazität und Computerressourcen signifikant, die zum Analysieren von Datenbanktransaktionen und/oder -modifikationen über eine Zeitperiode erforderlich sind.
  • Eine Datenbanktabelle kann in Reaktion auf eine Datenmanipulations-(DML-)Anweisung geändert werden, wie beispielsweise einen Einfügebefehl, einen Löschbefehl, einen Aktualisierungsbefehl, einen Zusammenführungsbefehl und so weiter. Auf Solche Modifikationen kann als Transaktion Bezug genommen werden, die in der Datenbanktabelle auftrat. Bei einer Ausführungsform enthält jede Transaktion einen Zeitstempel, der anzeigt, wann die Transaktion empfangen wurde und/oder wann die Transaktion vollständig ausgeführt wurde. Bei einer Ausführungsform enthält eine Transaktion mehrere an einer Tabelle vorgenommene Änderungen, und solche Änderungen können sich auf eine oder mehrere Mikropartitionen in der Tabelle auswirken.
  • Eine Datenbanktabelle kann Daten in einer Vielzahl von Mikropartitionen speichern, wobei die Mikropartitionen unveränderliche Speichervorrichtungen sind. Wenn eine Transaktion in 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 dann irgendwelche ursprünglichen Mikropartitionen, die neu erstellt wurden, aus der Datenbank entfernt werden. Nach jeder Transaktion, die an der Tabelle ausgeführt wird, wird eine neue Version der Tabelle erzeugt. Die Tabelle kann sich über eine Zeitperiode vielen Versionen unterziehen, wenn die Daten in der Tabelle sich 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 bzw. beauftragt wurde, wann die Transaktion vollständig ausgeführt wurde und wie die Transaktion eine oder mehrere Zeilen in der Tabelle änderte. Die offenbarten Systeme, Verfahren und Vorrichtungen für eine kostengünstige Tabellenversionsbildung können wirksam eingesetzt werden, um ein effizientes Mittel zum Erzeugen einer umfassenden Zusammenfassung einer Änderungsnachverfolgung zur Verfügung zu stellen, die alle zwischenzeitlichen Änderungen anzeigt, die an einer Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommen worden 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 granulares 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 Nachverfolgen von zwischenzeitlichen Änderungen an Datenbankdaten offenbart. Das Verfahren enthält ein Ausführen einer Transaktion, um Daten in einer Mikropartition einer Tabelle einer Datenbank durch Erzeugen einer neuen Mikropartition zu modifizieren, die die Transaktion verkörpert. Das Verfahren enthält ein Assoziieren von Transaktionsdaten mit der neuen Mikropartition, wobei die Transaktionsdaten einen Zeitstempel umfassen, wenn die Transaktion vollständig ausgeführt wurde. Das Verfahren enthält ein Assoziieren von Modifikationsdaten mit der neuen Mikropartition, die einen Hinweis auf eine oder mehrere Zeilen der Tabelle umfasst, die durch die Transaktion modifiziert wurden. Das Verfahren enthält ein Verbinden der Transaktionsdaten mit den Modifikationsdaten, um verbundene Daten zu erzeugen. Das Verfahren enthält ein Abfragen der verbundenen Daten, um eine Auflistung der an der Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommenen zwischenzeitlichen Modifikationen zu bestimmen.
  • Bei einer Ausführungsform enthalten die Transaktionsdaten Information über die Transaktion, die veranlasste, dass die neue Mikropartition erzeugt wird. Bei einer Implementierung, bei welcher eine Vielzahl von neuen Mikropartitionen basierend auf einer Transaktion erzeugt wird, werden die Transaktionsdaten mit jeder der neuen Mikropartitionen assoziiert werden. Die Transaktionsdaten enthalten zum Beispiel eine Identität eines Anwenders oder Kontos, der oder das die Transaktion initiierte, einen Zeitstempel, wann die Transaktion angefordert wurde, einen Zeitstempel, wann eine Ausführung der Transaktion begann, einen Zeitstempel, wann eine Ausführung der Transaktion abgeschlossen wurde, eine Auflistung von allen Zeilen, die durch die Transaktion modifiziert wurden und wie diese Zeilen modifiziert wurden, eine Auflistung von Mikropartitionen, die basierend auf der Transaktion erzeugt und/oder entfernt wurden, und irgendeine andere geeignete Information, die für die Transaktion relevant ist. Die Transaktionsdaten können innerhalb der neuen Mikropartition als Metadaten gespeichert werden.
  • Bei einer Ausführungsform enthalten die Modifikationsdaten 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 in der Tabelle, und so weiter. Die Modifikationsdaten können eine Abstammung bzw. Reihe von Modifikationen enthalten, die an der Tabelle vorgenommen wurden, seit die Tabelle ursprünglich erzeugt wurde, oder seit einem bestimmten Zeitpunkt. Die Modifikationsdaten können eine Auflistung von Tabellenversionen der Tabelle enthalten, einschließlich aller Mikropartitionen, die derzeit Teil der Tabelle sind oder in der Vergangenheit Teil der Tabelle waren. Die Modifikationsdaten können innerhalb der neuen Mikropartition als Metadaten gespeichert werden.
  • Bei einer Ausführungsform werden die Transaktionsdaten und die Modifikationsdaten verbunden, um verbundene Daten zu erzeugen. Die verbundenen Daten geben wenigstens an, (a) welche Transaktion eine Modifikation an der Tabelle verursachte; und (b) wie die Tabelle modifiziert wurde. Die verbundenen Daten können abgefragt werden, um eine Auflistung der zwischenzeitlichen Modifikationen zu bestimmen, die an der Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommen worden sind. Die Auflistung von zwischenzeitlichen Modifikationen kann eine Auflistung von allen Transaktionen enthalten, die in der Tabelle ausgeführt worden sind, und wie diese Transaktionen die Tabelle modifizierten. Die Auflistung von zwischenzeitlichen Modifikationen enthält Tabellenmodifikationen, die später durch nachfolgende Transaktionen zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel rückgängig gemacht werden.
  • Ein Abfragen der Auflistung von zwischenzeitlichen Modifikationen bietet ein effizientes und kostengünstiges Mittel zum Bestimmen einer umfassenden Auflistung von an einer Datenbanktabelle zwischen zwei Zeitpunkten vorgenommenen inkrementellen Änderungen. Dies ist im Stand der Technik bekannten Methoden überlegen, bei welchen jede einer Reihe von nachfolgenden Tabellenversionen manuell verglichen werden muss, um zu bestimmen, wie die Tabelle im Laufe der Zeit modifiziert wurde. Solche im Stand der Technik bekannten Verfahren erfordern umfangreiche Speicherressourcen und Rechen- bzw. Computerressourcen zur Ausführung.
  • Bei einer Ausführungsform wird eine Tabellenversionshistorie erzeugt und sie enthält eine oder mehrere Änderungsnachverfolgungsspalten, die innerhalb der Mikropartition und/oder der neuen Mikropartition gespeichert sind. Die eine oder die mehreren Änderungsnachverfolgungsspalten können Information enthalten, die eines oder mehreres von folgendem enthalten: einen früheren Mikropartitionsnamen für einen Zeilenwert, eine frühere Zeilenidentifikation für einen Zeilenwert, eine an einem Zeilenwert vorgenommene Aktion, ob ein Zeilenwert aktualisiert wurde, ein Protokoll von an einer Zeile oder einem Zeilenwert vorgenommenen Änderungen, eine Abstammung für eine Zeile, die eine oder mehrere Änderungen anzeigt, die an der Zeile über eine Zeitperiode durchgeführt sind, eine Auflistung von Transaktionen, die eine Modifikation an einer Zeile initiierten, und irgendeine andere geeignete Information, die eine Änderung anzeigen kann, die an einer Zeile oder Mikropartition durchgeführt ist, oder eine historische Auflistung von Änderungen, die an einer Zeile oder Mikropartition in einer Tabelle durchgeführt worden sind.
  • 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 (Arbeits-)Speicher oder ähnliches. Bei einer Ausführungsform bestehen die Mikropartitionsmetadaten aus zwei Datensätzen: Tabellenversionen und Dateiinformation. Der Datensatz für Tabellenversionen enthält eine Abbildung von Tabellenversionen zu Listen von hinzugefügten Dateien und entfernten Dateien. Dateiinformation besteht aus Information über jede Mikropartition, einschließlich, zum Beispiel, Mikropartitionspfad, Mikropartitionsgröße, Mikropartitionsschlüssel-ID und Zusammenfassungen von allen Zeilen und Spalten, die in der Mikropartition gespeichert sind. Jede Modifikation der Tabelle erzeugt bzw. erstellt neue Mikropartitionen und neue Mikropartitionsmetadaten. Einfügungen in die Tabelle erstellen neue Mikropartitionen. Löschungen aus der Tabelle entfernen Mikropartitionen und fügen möglicherweise 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 mit neuen Mikropartitionen mit Zeilen, die die aktualisierten Datensätze bzw. Aufzeichnungen enthalten.
  • Bei einer Ausführungsform können Metadaten in Metadaten-Mikropartitionen in einem unveränderlichen 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 werden und gelesen werden, wie sie empfangen werden, um die Berechnung von Scansätzen zu verbessern. Bei einer Ausführungsform kann ein System Metadaten-Mikropartitionen im Hintergrund periodisch konsolidieren. Bei einer Ausführungsform können Leistungsfähigkeitsverbesserungen, 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 stellt ein schematisches Blockdiagramm einer Tabellenhistorie 100 mit mehreren Tabellenversionen dar. Die beispielhafte Tabellenhistorie 100 stellt drei Tabellenversionen, nämlich Tabellenversion 1, Tabellenversion 2 und Tabellenversion 3, dar. Tabellenversion 1 enthält Daten in Form von drei Mikropartitionen (MPs), nämlich Mikropartition 1 (MP1), Mikropartition 2 (MP2) und Mikropartition 3 (MP3). Eine erste Transaktion 102 wird an der Tabellenversion 1 ausgeführt, um die Tabellenversion 2 zu erzeugen. Die erste Transaktion 102 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 an der Tabellenversion 1 ausgeführte erste Transaktion 102 erzeugt die Tabellenversion 2, die die ursprünglichen MP1 und MP3 zusammen mit der neu erzeugten MP4 enthält. Als Ergebnis der ersten Transaktion 102 ist MP2 aus der Tabelle entfernt worden, wie es in der Tabellenversion 2 wiedergegeben ist. Eine zweite Transaktion 104 wird an der Tabellenversion 2 ausgeführt, um die Tabellenversion 3 zu erzeugen. Die zweite Transaktion 104 enthält ein Einfügen neuer Zeilen, so dass die Mikropartition 5 (MP5) erzeugt wird und MP3 aus der Tabelle entfernt wird. Die Tabellenversion 3 enthält die ursprüngliche MP1, die als Ergebnis der ersten Transaktion 102 erzeugte MP4 und die als Ergebnis der zweiten Transaktion 104 erzeugte MP5. Die MP2 wurde als Ergebnis der ersten Transaktion 102 entfernt und die MP3 wurde als Ergebnis der zweiten Transaktion 104 aus der Tabelle entfernt.
  • Wie es in 1 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 Zusammenfassung einer Änderungsnachverfolgung bestimmt werden, die alle Änderungen angibt, die zum Beispiel zwischen 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 102 dazu führte, dass Zeilen aus MP2 gelöscht und MP4 ohne diese Zeilen erzeugt wurde. Die Zusammenfassung wird weiterhin anzeigen, dass eine zweite Transaktion 104 dazu führte, dass neue Zeilen in die Tabelle eingefügt wurden, dazu führte, dass MP3 entfernt wurde und dazu führte, dass MP5 mit diesen neuen Zeilen erzeugt wurde. Die umfassende Zusammenfassung der Änderungsnachverfolgung zeigt alle Transaktionen an, die in der Tabelle auftreten, wenn 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, aber nicht vollständig abgeschlossen ist, die Tabellenhistorie nicht aktualisiert, um diese Transaktion einzubeziehen. 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 derjenigen, die basierend auf einem Löschbefehls gelöscht werden sollen. Wenn die Transaktion nicht abgeschlossen ist, d.h. wenn die neue Mikropartition nicht vollständig erzeugt ist, dann wird die Tabellenhistorie nicht aktualisiert, um anzuzeigen, dass die Transaktion auftrat.
  • Bei einer Ausführungsform wird die Tabellenhistorie in einer Metadatenspalte gespeichert, die eine Mikropartitionsabstammung enthält, die eine Abstammung von Mikropartitionsnamen über eine Zeitperiode speichert. Die Metadatenspalte kann weiterhin eine Zeilenabstammung enthalten, die eine Abstammung von Ordnungszahlen für eine gegebene Zeile über eine Zeitperiode speichert. Solche Werte sind NULL, wenn eine Tabelle zum ersten Mal erstellt wird oder wenn eine neue Zeile innerhalb der Tabelle erzeugt wird. Wenn eine neue Zeile erzeugt wird, werden die gespeicherten Werte NULL sein und kann der tatsächliche logische Wert aus dem Namen der Mikropartition, innerhalb von welcher die Zeile gespeichert ist, und dem Rang der Zeile innerhalb dieser Mikropartition abgeleitet werden.
  • Bei einer Ausführungsform wird, wenn eine Zeile als Teil einer DML-Abfrageausführung in eine neue Mikropartition kopiert wird, und dann, wenn der Wert für die Zeile NULL ist, die Abstammung der Zeile durch Ersetzen des Werts durch den anwendbaren Mikropartitionsnamen und den anwendbaren Rang der Zeile innerhalb dieser Mikropartition materialisiert. Wenn eine Zeile in eine neue Mikropartition kopiert wird und der Wert der Zeile nicht NULL ist, wird der Name der Zeile in die neue Mikropartition kopiert.
  • Die 2-4 stellen beispielhafte Ausführungsformen von Lösch-, Einfüge- und Aktualisierungsbefehlen dar, die an einer Datenbanktabelle ausgeführt werden können. Es sollte eingesehen werden, dass die in den 2-4 dargestellten Tabellenschemas illustrativ sind und einfache Werte enthalten, um Zeilen und Spalten darzustellen, die in einer Datenbanktabelle enthalten sein können.
  • 2 stellt ein Blockdiagramm eines beispielhaften Löschbefehls 200 dar, und eines resultierenden Deltas 210, das, nachdem der Löschbefehls 200 abgeschlossen ist, zurückgebracht werden kann. Die Mikropartition 2 (MP2), wie sie in 2 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 Zeilennummern, 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 2 dargestellt ist, wird der Löschbefehl 200 an MP2 ausgefü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 ausgeführten Löschbefehl 200 erzeugt, der die Zeilen 2 und 3 löscht, wie es in 2 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 Zeile 1 und 4 ist jeweils 1 und 4, was anzeigt, wo sich die Zeilen zuletzt befanden.
  • Ein Delta 210 kann bestimmt werden, nachdem der Löschbefehl 200 an einer Tabelle ausgefü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 2 dargestellte Delta 210 bestimmt einen Unterschied oder eine Änderung, der oder die zwischen MP2 und MP4 auftrat. Bei verschiedenen Ausführungsformen kann das Delta 210 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 210 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 210 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 Metadaten-sind-aktuell-Spalte 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 2 dargestellten Delta 210 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 in der 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.
  • Bei einer Ausführungsform kann ein 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 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 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 erreicht werden, indem Anti-Join (dt. Anti-Verbund) in den Listen von hinzugefügten und entfernten Mikropartitionen durchgeführt wird.
  • Bei einer Ausführungsform wird die Zeilengranularität zwischen hinzugefügten und entfernten Mikropartitionen bestimmt. Bei einer solchen Ausführungsform wird ein vollständiger Outer Join (dt. äußerer Verbund) zwischen einer Zeilengruppe hinzugefügter Mikropartitionen und einer Zeilengruppe entfernter Mikropartitionen an einer Metadatenpartition und Metadatenzeilennummernspalten durchgeführt. Wenn die resultierende verbundene Zeilengruppe NULL-Werte für die Metadatenspalten in den Daten aus der hinzugefügten Zeilengruppe enthält, bedeutet dies, dass diese Zeilen LÖSCHUNGen darstellen. Wenn die Werte für die Metadatenspalten in den Daten aus der eingefügten Zeilengruppe NULL sind, bedeutet dies, dass diese Zeilen EINFÜGUNGen darstellen. Wenn die Metadatenspalten, die aus den hinzugefügten und entfernten Zeilengruppen stammen, beide NULL sind, zeigt dies an, dass die Zeilen möglicherweise aktualisiert wurden, und ein Vergleichen der ursprünglichen Datenspalten wird in der Information resultieren, die anzeigt, ob die Zeilen tatsächlich modifiziert wurden.
  • 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. 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 einer Änderungsgruppe Bezug genommen wird, um einen Hinweis darauf zurückzugeben, welche Zeilen in der Tabelle eingefügt oder gelöscht worden sind.
  • 3 stellt ein Blockdiagramm eines beispielhaften Einfügebefehls 300 dar, und eines resultierenden Deltas 310, das zurückgebracht werden kann, nachdem der Einfügebefehl 300 abgeschlossen ist. 3 beginnt mit einer beispielhaften Mikropartition 3 (MP3), die sich einem Einfügebefehl 300 unterzieht, um eine Mikropartition 5 (MP5) zu erzeugen. Der EiNfügebefehl 300 fügt die Zeilen 17 und 18 in MP3 ein. Als eine 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. Eine NULL()-Notation zeigt an, dass die Werte für die Metadatenspalten NULL sind, wenn Zeilen zum ersten Mal in die Tabelle eingefügt werden. Die NULL()-Notation kann einen Overhead reduzieren. Wenn Werte für eine Zeile in eine neue Mikropartition kopiert werden, wird der Rang der Zeile in der NULL()-Notation notiert, so dass die erste Zeile NULL(1) ist, die zweite Zeile NULL(2) ist, die dritte Zeile NULL(3) ist, und so weiter.
  • MP5 wird basierend auf dem Einfügebefehl 300 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 310 für den Einfügebefehl 300 Stellt die zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel durchgeführte gesamte Änderung dar. Wie es in 2 dargestellt ist, stellt das Delta 310 die Änderung dar, 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 310 enthält die Zeilen 17 und 18 mit jeweils Wert17 und Wert18, weil die Zeilen 17 und 18 aufgrund des Einfügebefehls 300 zu MP3 hinzugefügt wurden. Die Metadatenaktion ist „EINFÜGEN“ für die Zeilen 17 und 18, da ein Einfügebefehl 300 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.
  • 4 stellt ein Blockdiagramm eines beispielhaften Aktualisierungs- bzw. Update-Befehls 400 dar, und eines resultierenden Deltas 410, das zurückgegeben bzw. zurückgebracht werden kann, nachdem der Update-Befehl 400 abgeschlossen ist. Bei der in 4 dargestellten beispielhaften Ausbildungsform wird eine Mikropartition 78 (MP78) aktualisiert, um eine Mikropartition 91 (MP91) zu erzeugen. Der Updatebefehl 400 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 Zeilen 1, 2, 3 und 4. Jedoch hat die Zeile 1 aufgrund des Update-Befehls 400 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“. Wenn die Zeilen 1, 2, 3 und 4 zur neuen MP91 hinüberkopiert würden, würde die Ordinalposition (auf die auch als „Rang“ Bezug genommen wird) der Zeilen auch von der ursprünglichen MP78 hinüberkopiert.
  • Das Delta 410 zeigt die Änderung zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel an. Wie es in 4 dargestellt ist, zeigt das Delta 410 eine gesamte Änderung zwischen MP78 und MP91 aufgrund des Update-Befehls 400 an. Das Delta 410 zeigt an, dass die Zeilen 1 und 4, die jeweils den Wert „Wert1“ und „Wert2“ hatten, gelöscht wurden. Das Delta 410 zeigt an, dass die Zeilen 1 und 4, die jeweils den Wert „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 400 an den Zeilen durchgeführt wurde. Wie es bei dem Delta 410 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 210, 310, 410 verwendet werden, um eine umfassende Zusammenfassung der Änderungsnachverfolgung für eine Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel zu bestimmen. Die Deltainformation kann als Metadaten in einer Änderungsnachverfolgungsspalte in jeder neuen Mikropartition gespeichert werden, die in der Tabelle erzeugt wird. Die Deltainformation kann abgefragt werden, um die umfassende Zusammenfassung der Änderungsnachverfolgung für die Tabelle zu bestimmen.
  • Wendet man sich der 5 zu, wird ein Blockdiagramm gezeigt, das eine Verarbeitungsplattform 500 zum Bereitstellen von Datenbankdiensten gemäß einer Ausführungsform darstellt. Die Verarbeitungsplattform 500 enthält einen Datenbank-Servicemanager 502, der durch mehrere Anwender 504, 506 und 508 zugreifbar ist. Auf den Datenbank-Servicemanager 502 kann hierin auch als Ressourcenmanager oder globalen Dienst Bezug genommen werden. Bei einigen Implementierungen kann der Datenbank-Servicemanager 502 irgendeine Anzahl von Anwender unterstützen, die einen Zugriff auf Daten oder Dienste der Verarbeitungsplattform 500 wünschen. Die Anwender 504-508 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 502 interagieren. Bei einer bestimmten Ausführungsform können, wie es hierin dargestellt ist, die Anwender 504-508 Änderungen an Datenbankdaten initiieren und können ein Delta für eine Datenbanktabelle anfordern.
  • Der Datenbank-Servicemanager 502 kann verschiedene Dienste und Funktionen bereitstellen, die den Betrieb bzw. die Operation der Systeme und Komponenten innerhalb der Verarbeitungsplattform 500 unterstützen. Der Datenbank-Servicemanager 502 hat Zugriff auf gespeicherte Metadaten, die mit den Daten assoziiert sind, die über die gesamte Datenverarbeitungsplattform 500 gespeichert sind. Der Datenbank-Servicemanager 502 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 512) 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 500 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 500 können Mikropartitionen erstellt 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 Werte enthalten; eine Anzahl von Null-Werten; und einen minimalen Wert und einen maximalen Wert für jede Datei. 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 514 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. In 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 510 gespeichert. Auf die Information über Metadaten kann zum Loklaisieren 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 502 ist weiterhin in der Kommunikation mit einer Ausführungsplattform 512, die Computerressourcen bereitstellt, die verschiedene Datenspeicher- und Datenabrufoperationen ausführen. Die Ausführungsplattform 512 kann ein oder mehrere Computercluster enthalten. Die Ausführungsplattform 512 ist in Kommunikation mit einer oder mehreren Datenspeichervorrichtungen 516, 518 und 520, die Teil einer Speicherplattform 514 sind. Obwohl in 5 drei Datenspeichervorrichtungen 516, 518 und 520 gezeigt sind, ist die Ausführungsplattform 512 in der Lage, mit irgendeiner Anzahl von Datenspeichervorrichtungen zu kommunizieren. Bei einigen Ausführungsformen sind die Datenspeichergeräte 516, 518 und 520 cloudbasierte Speichervorrichtungen, die sich an einem oder mehreren geografischen Standorten befinden. Zum Beispiel können die Datenspeichervorrichtungen 516, 518 und 520 Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur oder irgendeiner anderen Art von verteiltem Speichersystem sein. Die Datenspeichervorrichtungen 516, 518 und 520 können Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speichercluster oder irgendeine andere Datenspeichertechnologie enthalten. Zusätzlich kann die Speicherplattform 514 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 502 und den Anwendern 504-508, dem veränderbaren Speicher 510 für Information über Metadatendateien (d.h. Metadaten von Metadatendateien) und der Ausführungsplattform 512 über ein oder mehrere Datenkommunikationsnetzwerke implementiert und können verschiedenen Aufgaben zugeordnet sein, so dass Benutzeranforderungen optimiert werden können. Gleichermaßen sind die Kommunikationsverbindungen zwischen der Ausführungsplattform 512 und den Datenspeichervorrichtungen 516-520 in der Speicherplattform 514 ü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 Datenbank-Servicemanager 502, der veränderbare Speicher 510, die Ausführungsplattform 512 und die Speicherplattform 514 sind in 5 als einzelne Komponenten gezeigt. Jedoch kann jeder oder jede von dem Datenbank-Servicemanager 502, dem veränderbaren Speicher 510, der Ausführungsplattform 512 und der Speicherplattform 514 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 502, dem veränderbaren Speicher 510, der Ausführungsplattform 512 und der Speicherplattform 514 in Abhängigkeit von Änderungen an den von den Anwendern 504-508 Empfangenen Anforderungen und den sich ändernden Notwendigkeiten der Datenverarbeitungsplattform 500 nach oben oder unten (unabhängig voneinander) skaliert werden. Somit ist die Datenverarbeitungsplattform 500 bei den beschriebenen Ausführungsformen dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Datenverarbeitungsbedürfnissen gerecht zu werden.
  • 6 stellt ein Blockdiagramm dar, das Komponenten des Datenbank-Servicemanagers 502 gemäß einer Ausführungsform darstellt. Der Datenbank-Servicemanager 502 enthält einen Zugriffsmanager 602 und einen Schlüsselmanager 604, die mit einer Datenspeichervorrichtung 606 gekoppelt sind. Der Zugriffsmanager 602 handhabt Authentifizierungs- und Autorisierungsaufgaben für die hierin beschriebenen Systeme. Der Schlüsselmanager 604 managt eine Speicherung und Authentifizierung von während Authentifizierungs- und Autorisierungsaufgaben verwendeten Schlüsseln. Ein Anforderungsverarbeitungsdienst 608 managt empfangene Datenspeicheranforderungen und Datenabrufanforderungen. Ein Managementkonsolendienst 610 unterstützt einen Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager.
  • Der Datenbank-Servicemanager 502 enthält auch einen SQL-Compiler 612, einen SQL-Optimierer 614 und einen SQL-Ausführer 616. Der SQL-Compiler 612 analysiert SQL-Abfragen und erzeugt den Ausführungscode für die Abfragen. Der SQL-Optimierer 614 bestimmt das beste Verfahren, um Abfragen basierend auf den Daten auszuführen, die verarbeitet werden müssen. Der SQL-Ausführer 616 führt den Abfragecode für durch den Datenbank-Servicemanager 502 empfangene Abfragen aus. Ein Abfrageplaner und -koordinator 618 sendet empfangene Abfragen zu geeigneten Diensten oder Systemen zur Kompilierung, Optimierung und Absendung zu einer Ausführungsplattform 612. Ein virtueller Lagermanager 620 managt den Betrieb mehrerer virtueller Lager.
  • Zusätzlich enthält der Datenbank-Servicemanager 502 einen Änderungsnachverfolgungsmanager 628, der die Information in Bezug auf die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches gespeicherten Daten managt. Ein Überwachungs- und Arbeitslast-Analysator 624 überwacht die vom Datenbank-Servicemanager 502 durchgeführten Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitslast) quer über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform 512. Der Änderungsnachverfolgungsmanager 628 und der Überwachungs- und Arbeitslast-Analysator 624 sind mit einer Datenspeichervorrichtung 626 gekoppelt. Bei einer Ausführungsform sammelt, speichert und managt der Konfigurations- und Metadatenmanager 622 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. ein 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 Änderungsnachverfolgungsmanagers 628 wird in Bezug auf die 6-12 weiter diskutiert werden.
  • Der Datenbank-Servicemanager 502 enthält auch einen Änderungsnachverfolgungs-manager 628, der die Erzeugung der Änderungsnachverfolgungshistorie managt, wie beispielsweise eine oder mehrere in einer Tabelle gespeicherte Änderungsnachverfolgungsspalten. Der Änderungsnachverfolgungsmanager 628 managt weiterhin die Erzeugung eines Delta-Berichts, der eine gesamte Änderung anzeigt, die an einer Datenbanktabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel aufgetreten ist. Weil mehrere Anwender/Systeme gleichzeitig auf dieselben Daten zugreifen können, können Änderungen an den Daten synchronisiert werden, um sicherzustellen, dass jeder Anwender/jedes System mit der aktuellen Version der Daten arbeitet und 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.
  • 7 ist ein schematisches Blockdiagramm, das Komponenten eines Änderungsnachverfolgungsmanagers 628 gemäß einer Ausführungsform darstellt. Der Änderungsnachverfolgungsmanager 628 kann Metadaten über Tabellendatendateien (d.h. Mikropartitionen) sowie Metadaten über Metadatendateien sammeln, speichern und managen. Solche Metadaten enthalten Information zur Änderungsnachverfolgung oder eine Tabellenhistorie einschließlich eines Protokolls von Änderungen, die an einer Tabelle aufgetreten sind. Der Änderungsnachverfolgungsmanager 628 enthält eine Tabellendatenkomponente 702, eine Metadatenkomponente 704, eine Transaktionsdatenkomponente 706, eine Modifikationsdatenkomponente 708, eine Verbindungskomponente 710, eine Änderungsnachverfolgungskomponente 712, eine Abfragekomponente 714, eine Verschlüsselungskomponente 716 und eine Berichtskomponente 718. Die Komponenten 702-718 sind nur anhand einer Illustration angegeben und müssen nicht alle in allen Ausführungsformen enthalten sein. Tatsächlich können einige Ausführungsformen nur eine oder irgendeine Kombination von zwei oder mehr der Komponenten 702-718 enthalten. Zum Beispiel können sich einige der Komponenten außerhalb oder getrennt vom Änderungsnachverfolgungsmanager 628 befinden, wie beispielsweise innerhalb eines Datenbank-Servicemanagers 502 oder einer Verarbeitungsplattform 500. Weiterhin können die Komponenten 702-718 Hardware, computerlesbare Anweisungen oder eine Kombination aus beiden umfassen, um die Funktionalität durchzuführen und die hierin diskutierten Strukturen bereitzustellen.
  • Die Tabellendatenkomponente 702 speichert Tabellendaten für eine Datenbank, die Tabellendaten enthalten Information in Zeilen und Spalten von einer oder mehreren Datenbanktabellen. Die Tabellendatenkomponente 702 kann Tabellendaten in Mikropartitionen innerhalb einer Speicherressource speichern. Beispielhafte Speicherressourcen enthalten einen Cloud-Speicher und/oder einen unveränderlichen Speicher. Bei einer Ausführungsform können die Speicherressourcen für eine Speicherung von Tabellendatendateien dynamisch zugeteilt werden, um Erhöhungen oder Abnahmen beim Speicherbedarf Rechnung zu tragen. Die Tabellendatenkomponente 702 kann Tabellendaten managen und speichern, indem sie veranlasst, dass die Daten in einer entfernten Ressource, wie beispielsweise einer Cloud-Speicherressource oder einem Cloud-Dienst, gespeichert oder aktualisiert werden.
  • Die Metadatenkomponente 704 speichert Metadaten auf einem unveränderlichen Speicher, wie beispielsweise einer Mikropartition. Die Metadaten können Information über oder die Tabellendaten für die Datenbank enthalten oder diese beschreibend sein, die durch die Tabellendatenkomponente 702 gespeichert ist. Bei einer Ausführungsform können die Metadatendateien Metadaten, wie beispielsweise einen Hinweis auf hinzugefügte oder gelöschte Tabellendatendateien, enthalten. Die Metadaten können Dateiinformation für Tabellendatendateien enthalten, wobei die Dateiinformation einen oder mehrere Dateinamen und einen Speicherort enthält. Bei einer Ausführungsform können die Metadaten in Dateien auf denselben Cloud-Speicherressourcen wie die Tabellendaten gespeichert werden. Bei einer Ausführungsform kann die Metadatenkomponente 704 veranlassen, dass die Metadaten innerhalb von Metadatendateien in einem Format Spalte für Spalte in einem entfernten Cloud-Speicher gespeichert werden.
  • Die Metadatenkomponente 704 kann auch eine Speicherung von Metadaten in Metadatendateien auf dem unveränderlichen Speicher sammeln und managen. Die Metadatenkomponente 704 kann in Reaktion auf eine Änderung bei den Tabellendaten eine neue Metadatendatei im unveränderlichen Speicher erstellen, ohne vorherige Metadatendateien zu modifizieren. Die neue Metadatendatei kann Metadaten enthalten, die die Änderung bei den Tabellendaten anzeigen. Bei einer Ausführungsform zeigen die Metadaten in der neuen Metadatendatei ein Hinzufügen oder ein Löschen einer Tabellendatendatei an, die die Tabellendaten umfasst. Die Metadatenkomponente 704 kann auch abgelaufene Metadatendateien löschen. Abgelaufene Metadatendateien können diejenigen enthalten, die älter als ein spezifisches Alter sind und auf die in Metadateninformation nicht Bezug genommen wird, die durch die Änderungsnachverfolgungshistorienkomponente 706 gespeichert ist.
  • Die Transaktionsdatenkomponente 706 erzeugt und speichert Transaktionsdaten für jede Transaktion, die bei einer Tabelle ausgeführt wird. Die Transaktionsdatenkomponente 706 kann die Transaktionsdaten mit einer neuen Mikropartition assoziieren, so dass die Transaktionsdaten als Metadaten in der neuen Mikropartition gespeichert werden. Solche Transaktionsdaten können zum Beispiel eine Identität eines Anwenders oder Kontos enthalten, der oder das eine DML- oder SQL-Anweisung initiierte, 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 Modifikationsdatenkomponente 708 speichert und managt Information über Änderungen, die an den Tabellendaten vorgenommen sind. Die Modifikationsdaten können zum Beispiel in einem lokalen veränderbaren Speicher und/oder innerhalb der Tabellendaten als Änderungsnachverfolgungsspalte gespeichert werden. Bei einer Ausführungsform können die Modifikationsdaten gespeichert und an Ort und Stelle aktualisiert werden. Bei einer Ausführungsform werden die Modifikationsdaten innerhalb einer unveränderlichen Mikropartition in einer Änderungsnachverfolgungsspalte gespeichert, die eine letzte Änderung anzeigt, die in einer Zeile auftrat, und/oder ein Protokoll von Änderungen, die in der Tabelle aufgetreten sind. Bei einer Ausführungsform sichert die Modifikationsdatenkomponente 708 einen Zeitstempel für eine Transaktion, die in der Tabelle auftrat, und sichert weiterhin einen Zeitstempel für jede Änderung oder Modifikation, die bei einer oder mehreren Zeilen der Tabelle auftritt.
  • Die Verbindungskomponente 710 verbindet Transaktionsdaten mit Modifikationsdaten. Die Verbindungskomponente 710 kann die verbundenen Daten als Metadaten innerhalb einer neuen Mikropartition speichern. Die verbundenen Daten können zum Beispiel in einem lokalen veränderbaren Speicher und/oder innerhalb der Tabellendaten in einer Spalte gespeichert werden.
  • Die Änderungsnachverfolgungskomponente 712 bestimmt und speichert eine Abstammung von an einer Tabelle vorgenommenen Modifikationen. Die Abstammung kann zum Beispiel in einem lokalen veränderbaren Speicher und/oder innerhalb der Tabellendaten, wie beispielsweise in einer Änderungsnachverfolgungsspalte, gespeichert werden. Die Abstammung kann verbundene Daten oder Modifikationsdaten enthalten. Die Abstammung kann abgefragt werden, um entweder ein Delta zu bestimmen, das eine Nettoänderung zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel anzeigt, und/oder eine umfassende Zusammenfassung der Änderungsnachverfolgung, die alle Änderungen anzeigt, die in der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel auftraten.
  • Die Abfragekomponente 714 kann eine einzelne Abfrage ausführen bzw. laufenlassen, um zu bestimmen, welche Zeilen und/oder Mikropartitionen in einer Tabelle geändert worden sind, und um weiterhin zu bestimmen, welche Transaktionen eine jeweilige Änderung an der Tabelle verursachten. Die Abfragekomponente kann die Abfrage an irgendwelchen der Transaktionsdaten, der Modifikationsdaten und/oder die verbundenen Daten ausführen, um eine umfassende Zusammenfassung der Änderungsnachverfolgung für die Tabelle zu bestimmen. Die Abfragekomponente 714 kann verwendet werden, um die Kosten für das Bestimmen der umfassenden Zusammenfassung der Änderungsnachverfolgung für die Tabelle stark zu reduzieren, indem die Notwendigkeit, eine Änderung zwischen einer Vielzahl von sequenziellen Paaren von Tabellenversionen zu bestimmen, zunichtegemacht wird.
  • Die Verschlüsselungskomponente 716 ist konfiguriert, um Tabellendaten und Metadaten zu verschlüsseln. Bei einer Ausführungsform verschlüsselt die Verschlüsselungskomponente 716 die Metadaten Spalte für Spalte, um eine unabhängige Entschlüsselung und ein Lesen von Metadaten für eine bestimmte Spalte zuzulassen.
  • Die Berichtskomponente 718 erzeugt einen Bericht basierend auf durch die Abfragekomponente 714 bestimmten Daten. Der Bericht kann eine umfassende Zusammenfassung von allen Transaktionen enthalten, die an einer Tabelle ausgeführt worden sind, und wie diese Transaktionen die Zeit zwischen zwei Zeitstempeln modifiziert haben. Der Bericht kann weiterhin zum Beispiel einen Hinweis darauf enthalten, wann jede der Transaktionen und/oder Zwischenmodifikationen an der Tabelle auftraten, einen Hinweis darauf, welche Transaktionen eine jeweilige Zwischenmodifikation an der Tabelle verursachten, einen Hinweis darauf, welche Zeilen der Tabelle durch welche Transaktion modifiziert wurden, einen Hinweis darauf, welches Anwenderkonto eine Transaktion initiierte, die eine Modifikation an der Tabelle verursachte, und so weiter.
  • 8 ist ein schematisches Ablaufdiagramm, das eine beispielhaftes Verfahren 800 zum Bestimmen einer Reihe von an einer Datenbanktabelle vorgenommenen Änderungen darstellt. Das Verfahren 800 kann von einem Änderungsnachverfolgungsmanager 628, einem Datenbank-Servicemanager 502, einer Verarbeitungsplattform 500 und/oder einem anderen Dienst oder einer anderen Plattform durchgeführt werden.
  • Das Verfahren 800 beginnt und eine Computervorrichtung führt bei 802 eine Transaktion aus, um Daten in einer Mikropartition einer Tabelle einer Datenbank zu modifizieren, indem eine neue Mikropartition erzeugt wird, die die Transaktion widerspiegelt. Die Computervorrichtung assoziiert bei 804 Transaktionsdaten mit der neuen Mikropartition, wobei die Transaktionsdaten einen Zeitstempel umfassen, wenn die Transaktion vollständig ausgeführt wurde. Die Computervorrichtung assoziiert bei 806 Modifikationsdaten mit der neuen Mikropartition, die einen Hinweis auf eine oder mehrere Zeilen der Tabelle umfasst, die durch die Transaktion modifiziert wurden. Die Computervorrichtung verbindet bei 808 die Transaktionsdaten mit den Modifikationsdaten, um verbundene Daten zu erzeugen. Die Computervorrichtung fragt bei 810 die verbundenen Daten ab, um eine Auflistung von an der Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen zu bestimmen.
  • 9 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 900 zum Bestimmen einer Reihe von an einer Datenbanktabelle vorgenommenen Änderungen darstellt. Das Verfahren 900 kann von einem Änderungsnachverfolgungsmanager 628, einem Datenbank-Servicemanager 502, einer Verarbeitungsplattform 500 und/oder einem anderen Dienst oder einer anderen Plattform durchgeführt werden.
  • Das Verfahren 900 beginnt und eine Computervorrichtung führt bei 902 eine Transaktion aus, um Daten in einer Mikropartition einer Tabelle einer Datenbank zu modifizieren, indem eine neue Mikropartition erzeugt wird, die die Transaktion widerspiegelt, und die Mikropartition entfernt wird, nachdem die neue Mikropartition vollständig erzeugt ist. Die Computervorrichtung assoziiert bei 904 Transaktionsdaten mit der neuen Mikropartition, wobei die Transaktionsdaten einen Zeitstempel umfassen, wenn die Transaktion vollständig ausgeführt wurde. Die Computervorrichtung assoziiert bei 906 Modifikationsdaten mit der neuen Mikropartition, die einen Hinweis auf eine oder mehrere Zeilen der Tabelle enthält, die durch die Transaktion modifiziert wurden. Die Computervorrichtung verbindet bei 908 die Transaktionsdaten mit den Modifikationsdaten, um verbundene Daten zu erzeugen. Die Computervorrichtung fragt bei 910 die verbundenen Daten ab, um eine Auflistung von an der Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen zu bestimmen, indem Tupelgranularitätsänderungen zwischen jedem einer Reihe von sequenziellen Mikropartitionspaaren zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel abgeleitet werden. Die Computervorrichtung erzeugt bei 912 einen Bericht, der die Auflistung von an der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen umfasst.
  • 10 ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung 1000 darstellt. Bei einigen Ausführungsformen wird die Computervorrichtung 1000 verwendet, um eines oder mehrere der hierin beschriebenen Systeme und Komponenten zu implementieren. Zum Beispiel kann die Computervorrichtung 1000 einen Änderungsnachverfolgungsmanager 628, einen Datenbank-Servicemanager 502, eine Verarbeitungsplattform 500 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 1000 enthalten. Weiterhin kann die Computervorrichtung 1000 mit irgendeinem oder irgendeiner der hierin beschriebenen Systeme und Komponenten interagieren. Demgemäß kann die Computervorrichtung 1000 verwendet werden, um verschiedene Prozeduren und Aufgaben durchzuführen, wie beispielsweise diejenigen, die hierin beschrieben sind. Die Computervorrichtung 1000 kann als ein Server, ein Client oder irgendeine andere Computereinheit bzw. -entität fungieren. Die Computervorrichtung 1000 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 1000 enthält einen oder mehrere Prozessor(en) 1002, eine oder mehrere Speichervorrichtung(en) 1004, eine oder mehrere Schnittstelle(n) 1006, eine oder mehrere Massenspeichervorrichtung(en) 1008 und eine oder mehrere Eingabe-/Ausgabe-(I/O-)Vorrichtung(en) 1010, von welchen alle mit einem Bus 1012 gekoppelt sind. Der (Die) Prozessor(en) 1002 enthält (enthalten) einen oder mehrere Prozessoren oder Steuerungen, die Anweisungen ausführen, die in der (den) Speichervorrichtung(en) 1004 und/oder der (den) Massenspeichervorrichtung(en) 1008 gespeichert sind. Der (Die) Prozessor(en) 1002 kann (können) auch verschiedene Typen von computerlesbaren Medien, wie beispielsweise einen Cache-Speicher, enthalten.
  • Die Speichervorrichtung(en) 1004 enthalten verschiedene computerlesbare Medien, wie beispielsweise einen flüchtigen Speicher (z.B. einen Direktzugriffsspeicher (RAM)) und/oder einen nichtflüchtigen Speicher (z.B. Nurlesespeicher (ROM)). Die Speichervorrichtung(en) 1004 kann (können) auch einen wiederbeschreibbaren ROM enthalten, wie beispielsweise einen Flash-Speicher.
  • Die Massenspeichervorrichtung(en) 1008 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) 1008 enthalten sein, um ein Lesen von und/oder ein Schreiben zu den verschiedenen computerlesbaren Medien zu ermöglichen. Die Massenspeichervorrichtung(en) 1008 enthält (enthalten) Wechselmedien bzw. entfernbare Medien und/oder nicht entfernbare Medien.
  • Die I/O-Vorrichtung(en) 1010 enthält (enthalten) verschiedene Vorrichtungen, die zulassen, dass Daten und/oder andere Information in die Computervorrichtung 1000 eingegeben oder aus dieser abgerufen werden können. Eine (oder mehrere) beispielhafte E/A-Vorrichtung(en) 1010 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) 1006 enthält (enthalten) verschiedene Schnittstellen, die zulassen, dass die Computervorrichtung 1000 mit anderen Systemen, Vorrichtungen oder Computerumgebungen interagiert. Eine (oder mehrere) beispielhafte Schnittstelle(n) 1006 enthält (enthalten) irgendeine Anzahl von verschiedenen Netzwerkschnittstellen, wie beispielsweise Schnittstellen zu lokalen Netzen (LANs), Weitverkehrsnetzen (WANs), drahtlosen Netzwerken und dem Internet.
  • Der Bus 1012 lässt zu, dass der (die) Prozessor(en) 1002, die Speichervorrichtung(en) 1004, die Schnittstelle(n) 1006, die Massenspeichervorrichtung(en) 1008 und die I/O-Vorrichtung(en) 1010 miteinander kommunizieren, sowie auch anderen Vorrichtungen oder Komponenten, die mit dem Bus 1012 gekoppelt sind. Der Bus 1012 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 weitere Ausführungsformen.
  • Beispiel 1 ist ein Verfahren zum Nachverfolgen von inkrementellen Änderungen an Datenbankdaten. Das Verfahren enthält ein Ausführen einer Transaktion, um Daten in einer Mikropartition einer Tabelle einer Datenbank durch Erzeugen einer neuen Mikropartition, die die Transaktion verkörpert, zu modifizieren. Das Verfahren enthält ein Assoziieren von Transaktionsdaten mit der neuen Mikropartition, wobei die Transaktionsdaten einen Zeitstempel umfassen, wenn die Transaktion vollständig ausgeführt wurde, und ein Assoziieren von Modifikationsdaten mit der neuen Mikropartition, die einen Hinweis auf eine oder mehrere Zeilen der Tabelle umfasst, die durch die Transaktion modifiziert wurden. Das Verfahren enthält ein Verbinden der Transaktionsdaten mit den Modifikationsdaten zu erzeugten verbundenen Daten. Das Verfahren enthält ein Abfragen der verbundenen Daten, um eine Auflistung von an der Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen zu bestimmen.
  • Beispiel 2 ist ein Verfahren wie beim Beispiel 1, wobei ein Abfragen der verbundenen Daten ein Abfragen einer Vielzahl von Einträgen von verbundenen Daten für eine Vielzahl von an der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel ausgeführten Transaktionen umfasst.
  • Beispiel 3 ist ein Verfahren wie bei einem der Beispiele 1-2, wobei die Transaktion eines oder mehreres von folgendem umfasst: einen Löschbefehl, einen Einfügebefehl, einen Update- bzw. Aktualisierungsbefehl oder einen Zusammenführungsbefehl.
  • Beispiel 4 ist ein Verfahren wie bei einem der Beispiele 1-3, wobei ein Ausführen der Transaktion weiterhin ein Entfernen der Mikropartition umfasst, nachdem die neue Mikropartition vollständig erzeugt ist.
  • Beispiel 5 ist ein Verfahren wie bei einem der Beispiele 1-4, wobei ein Assoziieren der Transaktionsdaten mit der neuen Mikropartition ein Einfügen der Transaktionsdaten in eine Transaktionsnachverfolgungsspalte in der neuen Mikropartition umfasst und wobei ein Assoziieren der Modifikationsdaten mit der neuen Mikropartition ein Einfügen der Modifikationsdaten in eine Änderungsnachverfolgungsspalte in der neuen Mikropartition umfasst.
  • Beispiel 6 ist ein Verfahren wie bei einem der Beispiele 1-5, wobei die Modifikationsdaten eines oder mehreres von folgendem umfassen: eine Identifikation einer vorherigen Mikropartition für einen Wert in der Tabelle, eine Identifikation einer vorherigen Zeile für einen Wert in der Tabelle, eine Transaktion, die an einer Zeile der Tabelle auftrat, oder ein Hinweis darüber, ob ein Wert der Tabelle aktualisiert wurde.
  • Beispiel 7 ist ein Verfahren wie bei einem der Beispiele 1-6, wobei ein Abfragen der verbundenen Daten ein Ableiten von Tupelgranularitätsänderungen zwischen jedem einer Reihe von sequentiellen Mikropartitionspaaren zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel umfasst, um eine Reihe von an der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen zu bestimmen, und wobei jedes der Reihe von sequentiellen Mikropartitionspaaren gemäß Zeitstempeln geordnet ist.
  • Beispiel 8 ist ein Verfahren wie bei einem der Beispiele 1-7, wobei das Assoziieren von Transaktionsdaten mit der neuen Mikropartition erst erfolgt, nachdem die neue Mikropartition vollständig erzeugt ist und die Transaktion vollständig ausgeführt ist.
  • Beispiel 9 ist ein Verfahren wie bei einem der Beispiele 1-8, wobei die Transaktion Zeilen der Tabelle modifiziert, die quer über eine Vielzahl von Mikropartitionen der Tabelle gespeichert sind, und wobei ein Ausführen der Transaktion ein Erzeugen einer Vielzahl von neuen Mikropartitionen und ein Entfernen der Vielzahl von Mikropartitionen erst dann, nachdem die Transaktion vollständig ausgeführt ist, umfasst.
  • Beispiel 10 ist ein Verfahren wie bei einem der Beispiele 1-9, das weiterhin ein Erzeugen eines Berichts umfasst, der eines oder mehreres von folgendem umfasst: die Auflistung von an der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen; einen Hinweis darauf, wann jede der Zwischenmodifikationen auftrat; einen Hinweis darauf, welche Transaktion eine jeweilige Zwischenmodifikationen verursachte; einen Hinweis darauf, welche Zeilen der Tabelle durch eine Transaktion modifiziert wurden, die eine Modifikation an der Tabelle initiierte; oder einen Hinweis darauf, welches Anwenderkonto eine Transaktion initiierte, die eine Modifikation an der Tabelle initiierte.
  • Beispiel 11 ist ein System zum Nachverfolgen von Zwischenänderungen an Datenbankdaten. Das System enthält Mittel zum Ausführen einer Transaktion, um Daten in einer Mikropartition einer Tabelle einer Datenbank zu modifizieren, indem eine neue Mikropartition erzeugt wird, die die Transaktion verkörpert. Das System enthält Mittel zum Assoziieren von Transaktionsdaten mit der neuen Mikropartition, wobei die Transaktionsdaten einen Zeitstempel umfassen, wenn die Transaktion vollständig ausgeführt wurde. Das System enthält Mittel zum Assoziieren von Modifikationsdaten mit der neuen Mikropartition, die einen Hinweis auf eine oder mehrere Zeilen der Tabelle enthält, die durch die Transaktion modifiziert wurden. Das System enthält Mittel zum Verbinden der Transaktionsdaten mit den Modifikationsdaten, um verbundene Daten zu erzeugen. Das System enthält Mittel zum Abfragen der verbundenen Daten, um eine Auflistung von an der Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommenen inkrementellen Modifikationen zu bestimmen.
  • Beispiel 12 ist ein System wie beim Beispiel 11, wobei die Mittel zum Abfragen der verbundenen Daten konfiguriert sind, um eine Vielzahl von Einträgen von verbundenen Daten für eine Vielzahl von bei der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel ausgeführten Transaktionen abzufragen.
  • Beispiel 13 ist ein System wie bei einem der Beispiele 11-12, wobei die Mittel zum Ausführen der Transaktion weiterhin konfiguriert sind, um die Mikropartition aus der Datenbank zu entfernen, nachdem die neue Mikropartition vollständig erzeugt ist.
  • Beispiel 14 ist ein System wie bei einem der Beispiele 11-13, wobei die Mittel zum Assoziieren der Transaktionsdaten mit der neuen Mikropartition konfiguriert sind, um die Transaktionsdaten in eine Transaktionsnachverfolgungsspalte in der neuen Mikropartition einzufügen, und wobei die Mittel zum Assoziieren der Modifikationsdaten mit der neuen Mikropartition konfiguriert sind, um die Modifikationsdaten in einer Änderungsnachverfolgungsspalte in der neuen Mikropartition einzufügen, und wobei die Modifikationsdaten eines oder mehreres von folgendem umfassen: eine vorherige Mikropartitionsidentifikation für einen Wert in der Tabelle, eine vorherige Zeilenidentifikation für einen Wert in der Tabelle, eine Transaktion, die an einer Zeile der Tabelle auftrat, oder ein Hinweis darauf, ob ein Wert der Tabelle aktualisiert wurde.
  • Beispiel 15 ist ein System wie bei einem der Beispiele 11-14, wobei die Mittel zum Abfragen der verbundenen Daten konfiguriert sind, um Tupelgranularitätsänderungen zwischen jedem einer Reihe von sequentiellen Mikropartitionspaaren zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel abzuleiten, um eine Reihe von an der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen zu bestimmen, und wobei jedes der Reihe von sequentiellen Mikropartitionspaaren gemäß Zeitstempeln geordnet ist.
  • Beispiel 16 ist ein System wie bei einem der Beispiele 11-15, das weiterhin Mittel zum Erzeugen eines Berichts umfasst, der eines oder mehreres von folgendem umfasst: die Auflistung von an der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen; einen Hinweis darauf, wann eine jeweilige der Zwischenmodifikationen auftrat; einen Hinweis darauf, welche Transaktion eine jeweilige der Zwischenmodifikationen verursachte; einen Hinweis darauf, welche Zeilen der Tabelle durch eine Transaktion modifiziert wurden, die eine Modifikation an der Tabelle initiierte; oder einen Hinweis darauf, welches Anwenderkonto eine Transaktion initiierte, die eine Modifikation an der Tabelle initiierte.
  • Beispiel 17 sind nichtflüchtige, computerlesbare Speichermedien, die Anweisungen speichern, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren: eine Transaktion ausführt oder ausführen, um Daten in einer Mikropartition einer Tabelle einer Datenbank zu modifizieren, indem eine neue Mikropartition erzeugt wird, die die Transaktion verkörpert; Transaktionsdaten mit der neuen Mikropartition assoziiert oder assoziieren, wobei die Transaktionsdaten einen Zeitstempel umfassen, wenn die Transaktion vollständig ausgeführt wurde; Modifikationsdaten mit der neuen Mikropartition assoziiert oder assoziieren, die einen Hinweis auf eine oder mehrere Zeilen der Tabelle enthält, die durch die Transaktion modifiziert wurden; die Transaktionsdaten mit den Modifikationsdaten zu erzeugten Daten verbindet oder verbinden; und die verbundenen Daten abfragt oder abfragen, um eine Auflistung der an der Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen zu bestimmen.
  • Beispiel 18 sind nichtflüchtige, computerlesbare Speichermedien wie beim Beispiel 17, wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren die Transaktion ausführt oder ausführen, indem die Mikropartition aus der Datenbank entfernt wird, nachdem die neue Mikropartition vollständig erzeugt ist.
  • Beispiel 19 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 17-18, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Transaktionsdaten mit der neuen Mikropartition assoziiert oder assoziieren, indem die Transaktionsdaten in eine Transaktionsnachverfolgungsspalte in der neuen Mikropartition eingefügt werden, und wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Modifikationsdaten mit der neuen Mikropartition assoziiert oder assoziieren, indem die Modifikationsdaten in eine Änderungsnachverfolgungsspalte in der neuen Mikropartition eingefügt werden, und wobei die Modifikationsdaten eines oder mehreres von folgendem umfassen: eine vorherige Mikropartitionsidentifikation für einen Wert in der Tabelle, eine vorherige Zeilenidentifikation für einen Wert in der Tabelle, eine Transaktion, die bei einer Zeile der Tabelle auftrat, oder einen Hinweis darauf, ob ein Wert der Tabelle aktualisiert wurde.
  • Beispiel 20 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 17-19, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die verbundenen Daten abfragt oder abfragen, indem Tupelgranularitätsänderungen zwischen jedem einer Reihe von sequentiellen Mikropartitionspaaren zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel abgeleitet werden, um eine Reihe von an der Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel vorgenommenen Zwischenmodifikationen zu bestimmen, und wobei jedes der Reihe von sequentiellen Mikropartitionspaaren gemäß Zeitstempeln geordnet ist.
  • Beispiel 21 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 17-20, wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren einen Bericht erstellt oder erstellen, der eines oder mehreres von folgendem umfasst: die Auflistung von zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel an der Tabelle vorgenommenen Zwischenmodifikationen; einen Hinweis darauf, wann eine jeweilige der Zwischenmodifikationen auftrat; einen Hinweis darauf, welche Transaktion eine jeweilige der Zwischenmodifikationen verursachte; einen Hinweis darauf, welche Zeilen der Tabelle durch eine Transaktion modifiziert wurden, die eine Modifikation an der Tabelle initiierte; oder einen Hinweis darauf, welches Anwenderkonto eine Transaktion initiierte, die eine Modifikation an der Tabelle initiierte.
  • Beispiel 22 ist eine Vorrichtung, die Mittel enthält, um ein Verfahren wie bei einem der Beispiele 1-10 durchzuführen.
  • Beispiel 23 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 Beispiele 1-10.
  • Die Ablaufdiagramme und Blockdiagramme hierin stellen die Architektur, die Funktionalität und einen Betrieb von möglichen Implementierungen von Systemen, Computerprogrammen 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.

Claims (20)

  1. Computerprogramm, das Anweisungen enthält, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren folgendes veranlasst oder veranlassen: Unterhalten von gespeicherten Daten in einer ersten Mikropartition einer Datenstruktur, wobei die gespeicherten Daten mit einem ersten Zeitstempel assoziiert sind; in Reaktion auf eine Transaktion Erzeugen von Transaktionsdaten, die mit der Transaktion assoziiert sind, und Durchführen von einer oder mehreren Modifikationen an den gespeicherten Daten in der ersten Mikropartition, um eine zweite Mikropartition basierend auf wenigstens der einen oder den mehreren Modifikationen an den gespeicherten Daten zu erzeugen, wobei die zweite Mikropartition bei einem zweiten Zeitstempel erzeugt wird; Erzeugen von Modifikationsdaten, wobei die Modifikationsdaten die an den gespeicherten Daten in der ersten und der zweiten Mikropartition zwischen dem ersten und dem zweiten Zeitstempel durchgeführten Modifikationen nachverfolgen; Verbinden der Modifikationsdaten mit den Transaktionsdaten, um verbundene Daten zu erzeugen; Empfangen einer Abfrage; und Ausführen der Abfrage unter Verwendung der verbundenen Daten, um zwischenzeitliche Änderungen an den gespeicherten Daten zwischen dem ersten und dem zweiten Zeitstempel zu bestimmen.
  2. Computerprogramm nach Anspruch 1, wobei ein Abfragen der verbundenen Daten ein Berechnen von Tupeländerungen zwischen jedem einer Reihe von sequentiellen Mikropartitionspaaren zwischen dem ersten und dem zweiten Zeitstempel enthält.
  3. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Durchführen mehrerer Modifikationen an einer Zeile einer Vielzahl von Zeilen in der ersten Mikropartition, wobei die verbundenen Daten wenigstens eine Zwischenänderung bzw. zwischenzeitliche Änderung an der Zeile zwischen den Anfangs- und Endwerten anzeigen.
  4. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Erzeugen einer Deltatabelle, wobei die Deltatabelle schließliche Änderungen an den gespeicherten Daten in der zweiten Mikropartition beim zweiten Zeitstempel aus der ersten Mikropartition beim ersten Zeitstempel speichert.
  5. Computerprogramm nach Anspruch 4, das weiterhin folgendes umfasst: Durchführen mehrerer Modifikationen an einer Zeile einer Vielzahl von Zeilen in der ersten Mikropartition, wobei die Deltatabelle einen Anfangswert der Zeile beim ersten Zeitstempel und einen Endwert der Zeile nach Durchführung der mehreren Modifikationen an der Zeile beim zweiten Zeitstempel speichert.
  6. Computerprogramm nach Anspruch 5, wobei die Deltatabelle Information enthält, die folgendes anzeigt: welche Zeilen modifiziert worden sind, Endwerte von Zeilen, die zwischen dem ersten und dem zweiten Zeitstempel modifiziert worden sind, und einen Aktionstyp der Modifikation für jede modifizierte Zeile.
  7. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Speichern der Transaktionsdaten in der zweiten Mikropartition als Metadaten, wobei die Transaktionsdaten eines oder mehreres von folgendem enthalten: eine Identität eines Kontos, das die Transaktion initiierte, den zweiten Zeitstempel, einen dritten Zeitstempel, wenn die Transaktion angefordert wurde, einen vierten Zeitstempel, wenn eine Ausführung der Transaktion begann, eine Auflistung aller Zeilen, die durch die Transaktion modifiziert wurden, und Details der Modifikationen.
  8. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Speichern der Modifikationsdaten in der zweiten Mikropartition als Metadaten, wobei die Modifikationsdaten eine Abstammung von an der Tabelle vorgenommenen Modifikationen enthalten.
  9. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Speichern der Transaktionsdaten und der Modifikationsdaten in der zweiten Mikropartition als Metadaten, wobei die Metadaten in einem unveränderlichen Speicher gespeichert werden.
  10. System, umfassend: einen oder mehrere Prozessoren einer Maschine; und einen Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die folgendes umfassen: Unterhalten von gespeicherten Daten in einer ersten Mikropartition einer Datenstruktur, wobei die gespeicherten Daten mit einem ersten Zeitstempel assoziiert sind; in Reaktion auf eine Transaktion Erzeugen von Transaktionsdaten, die mit der Transaktion assoziiert sind, und Durchführen von einer oder mehreren Modifikationen an den gespeicherten Daten in der ersten Mikropartition, um eine zweite Mikropartition basierend auf wenigstens der einen oder den mehreren Modifikationen an den gespeicherten Daten zu erzeugen, wobei die zweite Mikropartition bei einem zweiten Zeitstempel erzeugt wird; Erzeugen von Modifikationsdaten, wobei die Modifikationsdaten die an den gespeicherten Daten in der ersten und der zweiten Mikropartition zwischen dem ersten und dem zweiten Zeitstempel durchgeführten Modifikationen nachverfolgen; Verbinden der Modifikationsdaten mit den Transaktionsdaten, um verbundene Daten zu erzeugen; Empfangen einer Abfrage; und Ausführen der Abfrage unter Verwendung der verbundenen Daten, um zwischenzeitliche Änderungen an den gespeicherten Daten zwischen dem ersten und dem zweiten Zeitstempel zu bestimmen.
  11. System nach Anspruch 10, wobei ein Abfragen der verbundenen Daten ein Berechnen von Tupeländerungen zwischen jedem einer Reihe von sequentiellen Mikropartitionspaaren zwischen dem ersten und dem zweiten Zeitstempel enthält.
  12. System nach Anspruch 10, wobei die Operationen weiterhin folgendes umfassen: Durchführen mehrerer Modifikationen an einer Zeile einer Vielzahl von Zeilen in der ersten Mikropartition, wobei die verbundenen Daten wenigstens eine Zwischenänderung bzw. zwischenzeitliche Änderung an der Zeile zwischen den Anfangs- und Endwerten anzeigen.
  13. System nach Anspruch 10, wobei die Operationen weiterhin folgendes umfassen: Erzeugen einer Deltatabelle, wobei die Deltatabelle schließliche Änderungen an den gespeicherten Daten in der zweiten Mikropartition beim zweiten Zeitstempel aus der ersten Mikropartition beim ersten Zeitstempel speichert.
  14. System nach Anspruch 13, wobei die Operationen weiterhin folgendes umfassen: Durchführen mehrerer Modifikationen an einer Zeile einer Vielzahl von Zeilen in der ersten Mikropartition, wobei die Deltatabelle einen Anfangswert der Zeile beim ersten Zeitstempel und einen Endwert der Zeile nach Durchführung der mehreren Modifikationen an der Zeile beim zweiten Zeitstempel speichert.
  15. System nach Anspruch 13, wobei die Deltatabelle Information enthält, die folgendes anzeigt: welche Zeilen modifiziert worden sind, Endwerte von Zeilen, die zwischen dem ersten und dem zweiten Zeitstempel modifiziert worden sind, und einen Aktionstyp der Modifikation für jede modifizierte Zeile.
  16. System nach Anspruch 1, wobei die Operationen weiterhin folgendes umfassen: Speichern der Transaktionsdaten in der zweiten Mikropartition als Metadaten, wobei die Transaktionsdaten eines oder mehreres von folgendem enthalten: eine Identität eines Kontos, das die Transaktion initiierte, den zweiten Zeitstempel, einen dritten Zeitstempel, wenn die Transaktion angefordert wurde, einen vierten Zeitstempel, wenn eine Ausführung der Transaktion begann, eine Auflistung aller Zeilen, die durch die Transaktion modifiziert wurden, und Details der Modifikationen.
  17. System nach Anspruch 1, wobei die Operationen weiterhin folgendes umfassen: Speichern der Modifikationsdaten in der zweiten Mikropartition als Metadaten, wobei die Modifikationsdaten eine Abstammung von an der Tabelle vorgenommenen Modifikationen enthalten.
  18. System nach Anspruchs 1, wobei die Operationen weiterhin folgendes umfassen: Speichern der Transaktionsdaten und der Modifikationsdaten in der zweiten Mikropartition als Metadaten, wobei die Metadaten in einem unveränderlichen Speicher gespeichert werden.
  19. Nichtflüchtige, computerlesbare Speichermedien, die Anweisungen speichern, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren folgendes veranlasst oder veranlassen: Unterhalten von gespeicherten Daten in einer ersten Mikropartition einer Datenstruktur, wobei die gespeicherten Daten mit einem ersten Zeitstempel assoziiert sind; in Reaktion auf eine Transaktion Erzeugen von Transaktionsdaten, die mit der Transaktion assoziiert sind, und Durchführen von einer oder mehreren Modifikationen an den gespeicherten Daten in der ersten Mikropartition, um eine zweite Mikropartition basierend auf wenigstens der einen oder den mehreren Modifikationen an den gespeicherten Daten zu erzeugen, wobei die zweite Mikropartition bei einem zweiten Zeitstempel erzeugt wird; Erzeugen von Modifikationsdaten, wobei die Modifikationsdaten die an den gespeicherten Daten in der ersten und der zweiten Mikropartition zwischen dem ersten und dem zweiten Zeitstempel durchgeführten Modifikationen nachverfolgen; Verbinden der Modifikationsdaten mit den Transaktionsdaten, um verbundene Daten zu erzeugen; Empfangen einer Abfrage; und Ausführen der Abfrage unter Verwendung der verbundenen Daten, um zwischenzeitliche Änderungen an den gespeicherten Daten zwischen dem ersten und dem zweiten Zeitstempel zu bestimmen.
  20. Nichtflüchtige, computerlesbare Speichermedien nach Anspruch 19, wobei ein Abfragen der verbundenen Daten ein Berechnen von Tupeländerungen zwischen jedem einer Reihe von sequentiellen Mikropartitionspaaren zwischen dem ersten und dem zweiten Zeitstempel enthält.
DE202019005715.3U 2018-11-06 2019-10-25 Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten Active DE202019005715U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/182,216 2018-11-06
US16/182,216 US10977244B2 (en) 2018-11-06 2018-11-06 Tracking intermediate changes in database data

Publications (1)

Publication Number Publication Date
DE202019005715U1 true DE202019005715U1 (de) 2021-07-30

Family

ID=70458633

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202019005715.3U Active DE202019005715U1 (de) 2018-11-06 2019-10-25 Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten

Country Status (5)

Country Link
US (6) US10977244B2 (de)
EP (1) EP3877836A4 (de)
CN (1) CN112969996A (de)
DE (1) DE202019005715U1 (de)
WO (1) WO2020096789A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977244B2 (en) 2018-11-06 2021-04-13 Snowflake Inc. Tracking intermediate changes in database data
US11086894B1 (en) * 2019-06-25 2021-08-10 Amazon Technologies, Inc. Dynamically updated data sheets using row links
US11194793B1 (en) 2019-06-25 2021-12-07 Amazon Technologies, Inc. Dynamically materialized views for sheets based data
US20220012214A1 (en) * 2020-07-07 2022-01-13 Salesforce.Com, Inc. Techniques and Architectures for Utilizing a Change Log to Support Incremental Data Changes
US11474989B2 (en) 2020-09-09 2022-10-18 International Business Machines Corporation Online reorganization of database tables with concurrent updates
US11741093B1 (en) 2021-07-21 2023-08-29 T-Mobile Usa, Inc. Intermediate communication layer to translate a request between a user of a database and the database
AU2021470113A1 (en) * 2021-10-20 2024-01-18 Paypal, Inc. Database management using sort keys
CN113672692B (zh) * 2021-10-25 2022-02-22 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质
US20240069863A1 (en) * 2022-08-25 2024-02-29 Databricks, Inc. Efficient merge of tabular data using a processing filter
US20240070155A1 (en) * 2022-08-25 2024-02-29 Databricks, Inc. Efficient merge of tabular data using mixing

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546402B1 (en) * 2000-06-05 2003-04-08 International Business Machines Corporation System and method for asynchronous view maintenance
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US7941408B2 (en) 2003-09-06 2011-05-10 Oracle International Corporation System, structure, interface, and semantics for implementing row versions: accessing past versions of a data item
US7930297B2 (en) * 2004-12-03 2011-04-19 Oracle International Corporation Materialized view maintenance and change tracking
US20070050429A1 (en) * 2005-08-26 2007-03-01 Centric Software, Inc. Time-range locking for temporal database and branched-and-temporal databases
US20070106771A1 (en) * 2005-11-10 2007-05-10 International Business Machines Corporation Reconciliation of independently updated distributed data
US7970742B2 (en) * 2005-12-01 2011-06-28 Oracle International Corporation Techniques for implementing indexes on columns in database tables whose values specify periods of time
US8589357B2 (en) * 2006-10-20 2013-11-19 Oracle International Corporation Techniques for automatically tracking and archiving transactional data changes
US7774354B2 (en) * 2007-08-02 2010-08-10 International Business Machines Corporation Method and system for response time optimization for task list retrieval from databases
US8244716B2 (en) * 2008-06-13 2012-08-14 Oracle International Corporation Data pattern for storing information, including associated version and audit information for use in data management
US8825601B2 (en) * 2010-02-01 2014-09-02 Microsoft Corporation Logical data backup and rollback using incremental capture in a distributed database
US8818944B2 (en) * 2011-06-30 2014-08-26 Microsoft Corporation Data change tracking and event notification
IN2014DN05723A (de) 2011-12-23 2015-04-10 Univ Arizona State
US9361308B2 (en) 2012-09-28 2016-06-07 Oracle International Corporation State initialization algorithm for continuous queries over archived relations
US9798630B2 (en) * 2013-03-08 2017-10-24 Intel Corporation Hardware-supported memory temporal copy
US20140258234A1 (en) * 2013-03-11 2014-09-11 AppGlu, Inc. Synchronization of cms data to mobile device storage
US10114970B2 (en) * 2015-06-02 2018-10-30 ALTR Solutions, Inc. Immutable logging of access requests to distributed file systems
US10380086B2 (en) * 2015-09-11 2019-08-13 International Business Machines Corporation Deleting rows from tables in a database without an index
US20170235792A1 (en) * 2016-02-17 2017-08-17 Www.Trustscience.Com Inc. Searching for entities based on trust score and geography
US11093494B2 (en) * 2016-12-06 2021-08-17 Microsoft Technology Licensing, Llc Joining tables by leveraging transformations
US10776428B2 (en) 2017-02-16 2020-09-15 Nasdaq Technology Ab Systems and methods of retrospectively determining how submitted data transaction requests operate against a dynamic data structure
WO2018170276A2 (en) 2017-03-15 2018-09-20 Fauna, Inc. Methods and systems for a database
US10977244B2 (en) 2018-11-06 2021-04-13 Snowflake Inc. Tracking intermediate changes in database data

Also Published As

Publication number Publication date
US20200218714A1 (en) 2020-07-09
EP3877836A4 (de) 2022-08-03
US10977244B2 (en) 2021-04-13
US20230205766A1 (en) 2023-06-29
US11106661B2 (en) 2021-08-31
US20200142987A1 (en) 2020-05-07
US20210216535A1 (en) 2021-07-15
US20210349886A1 (en) 2021-11-11
US20220222247A1 (en) 2022-07-14
US11321309B2 (en) 2022-05-03
US10997162B2 (en) 2021-05-04
US11620281B2 (en) 2023-04-04
EP3877836A1 (de) 2021-09-15
WO2020096789A1 (en) 2020-05-14
CN112969996A (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
DE202019005716U1 (de) Nachverfolgen von Änderungen bei Datenbankdaten
DE202019005715U1 (de) Nachverfolgen von zwischenzeitlichen Änderungen bei Datenbankdaten
DE202019005723U1 (de) Aufgabenplanung in Datenbanksystemen
DE202020005681U1 (de) Tabellen mit Journal in Datenbanksystemen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE202015009777U1 (de) Transparente Entdeckung eines semistrukturierten Datenschemas
US11615067B2 (en) Transactional stores of change tracking data
US11106678B2 (en) Storing metadata using data structures in database systems
Mishra et al. Database Performance Management in Cloud
Gandle et al. SAP HANA Real Time Database

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