DE202019005716U1 - Nachverfolgen von Änderungen bei Datenbankdaten - Google Patents

Nachverfolgen von Änderungen bei Datenbankdaten Download PDF

Info

Publication number
DE202019005716U1
DE202019005716U1 DE202019005716.1U DE202019005716U DE202019005716U1 DE 202019005716 U1 DE202019005716 U1 DE 202019005716U1 DE 202019005716 U DE202019005716 U DE 202019005716U DE 202019005716 U1 DE202019005716 U1 DE 202019005716U1
Authority
DE
Germany
Prior art keywords
micro
partition
change
delta
row
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
DE202019005716.1U
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 DE202019005716U1 publication Critical patent/DE202019005716U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

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)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Computerprogramm, das Anweisungen enthält, die durch wenigstens einem Prozessor ausführbar sind, zum Veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen:
Ausführen einer Änderung an einer ersten unveränderlichen Mikropartition einer Tabelle einer Datenbank, wobei das Ausführen der Änderung ein Erzeugen einer neuen Mikropartition, die die Änderung verkörpert, und ein Löschen der ersten unveränderlichen Mikropartition umfasst;
Speichern eines Werts der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung in einer Änderungsnachverfolgungsspalte der Tabelle;
Empfangen, von einem Anforderungsverarbeitungsdienst, einer Anforderung für ein Delta für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel; und
Abfragen von wenigstens einer Änderungsnachverfolgungsspalte der Tabelle, um das Delta zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel zu bestimmen, wobei das Delta den Wert der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung enthält; und
Bereitstellen des Deltas für die Tabelle und des Werts der ersten unveränderlichen Mikropartition für den Anforderungsverarbeitungsdienst.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Systeme, Computerprogramme und Vorrichtungen für Datenbanken und bezieht sich insbesondere auf eine Nachverfolgung von Änderungen an Datenbankdaten.
  • Als Gebrauchsmuster geschützt werden und gemäß den Erfordernissen des Gebrauchsmustergesetzes sind Gegenstand des Gebrauchsmusters 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 für einen Zugriff bei Computeranwendungen verwendet. Datenbanken können eine oder mehrere Tabellen enthalten, die Daten enthalten oder darauf Bezug nehmen, die unter Verwendung von Datenbankoperationen gelesen, modifiziert oder gelöscht werden können, auf die für gewöhnlich als DML-(= Data Manipulation Language)Anweisungen Bezug genommen wird. 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 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.
  • 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 Änderungen an Datenbankdaten offenbart. Das Verfahren enthält ein Bestimmen einer Änderung, die an einer Mikropartition einer Tabelle einer Datenbank ausgeführt werden soll, wobei die Änderung irgendein Befehl sein kann und, zum Beispiel, einen Löschbefehl, einen Update- bzw. Aktualisierungsbefehl, einen Zusammenführungsbefehl und/oder einen Einfügebefehl enthalten kann. Das Verfahren enthält ein Ausführen der Änderung an der Tabelle durch Erzeugen einer neuen Mikropartition, die die Änderung verkörpert, und kann weiterhin ein Entfernen der (ursprünglichen) Mikropartition enthalten. Das Verfahren enthält ein Aktualisieren einer Tabellenhistorie, die ein Protokoll von an der Tabelle vorgenommenen Änderungen umfasst, wobei jede Änderung im Protokoll von Änderungen einen Zeitstempel umfasst und wobei ein Aktualisieren der Tabellenhistorie ein Einfügen der Änderung in das Protokoll von Änderungen umfasst. Das Verfahren enthält ein Bestimmen eines Deltas für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel basierend auf der Tabellenhistorie. Bei einer Ausführungsform zeigt das Delta an, welche Zeilen sich geändert haben und wie sich diese Zeilen geändert haben zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel, und enthält keine Information über an diesen Zeilen zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel vorgenommenen Zwischenänderungen.
  • Bei einer Ausführungsform enthält die Tabellenhistorie 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 anzeigen: 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 von an der Zeile über eine Zeitperiode vorgenommenen Änderungen anzeigt, eine Auflistung von Transaktionen, die eine Modifikation an einer Zeile initiiert haben, und irgendeine andere geeignete Information, die eine an einer Zeile oder einer Mikropartition vorgenommene Änderung oder eine historische Auflistung von Änderungen, die an einer Zeile oder einer Mikropartition in einer Tabelle vorgenommen worden sind, anzeigen kann. 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 Ordinalzahlen für eine gegebene Zeile über eine Zeitperiode speichert.
  • Bei einer Ausführungsform wird ein Delta für eine Tabelle basierend auf Metadaten bestimmt, die in einer Tabellenhistorie gespeichert sind, die eine oder mehrere Änderungsnachverfolgungsspalten enthalten kann. Bei einer solchen Ausführungsform können frühere Versionen einer Zeile oder einer Mikropartition aus der Datenbank entfernt werden, und die Tabellenhistorie liefert historische Information über Änderungen, die an der Zeile oder der Mikropartition vorgenommen sind. Eine solche Ausführungsform kann Änderungsnachverfolgungsinformation auf effiziente Weise bereitstellen, die keine signifikante Speicherkapazität zum Speichern historischer Versionen von Zeilen oder Mikropartitionen erfordert.
  • 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 ein Delta für die Tabelle bestimmt werden, das alle Änderungen anzeigt, die zwischen, zum Beispiel, der Tabellenversion 1 und der Tabellenversion 3 vorgenommen worden sind. Ein Delta für die in 1 dargestellte Ausführungsform kann anzeigen, dass Zeilen in der Mikropartition 2 gelöscht wurden und dass Zeilen in der Mikropartition 3 eingefügt wurden. Das Delta kann weiterhin anzeigen, dass die Mikropartition 4 basierend auf der Mikropartition 2 in Reaktion auf eine Löschtransaktion erzeugt wurde und dass die Mikropartition 5 basierend auf der Mikropartition 3 in Reaktion auf eine Einfügetransaktion erzeugt wurde.
  • Das Delta kann basierend auf einer Tabellenhistorie bestimmt werden, die ein Protokoll von Änderungen enthält, die an der Tabelle vorgenommen sind. Jede Änderung im Protokoll von Änderungen kann einen Zeitstempel enthalten, der anzeigt, wann die Änderung vorgenommen wurde, und der weiterhin anzeigt, welche Transaktion die Änderung initiierte. Das Protokoll von Änderungen kann historische Daten enthalten, die anzeigen, welche Zeilen geändert wurden, wo Zeilen ursprünglich gespeichert wurden (z.B. in welcher Mikropartition eine Zeile ursprünglich gespeichert wurde), welche Transaktion Änderungen an bestimmten Zeilen verursachte, frühere Zeilen-Identifizierer für eine Zeile, frühere Werte für eine Zeile, einen Hinweis darauf, ob eine Zeile aktualisiert wurde, und so weiter. Bei einer Implementierung wird ein Protokoll von Änderungen als eine oder mehrere Änderungsnachverfolgungsspalten gespeichert, die innerhalb der Tabelle selbst gespeichert sind.
  • Bei einer Ausführungsform wird die 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 numerische IDs, die primär für Identifikationszwecke für Anwenderdaten 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 numerischen Ids jeweils 2 und 3 sind. Die Spalte 2 zeigt an, dass die Werte der Zeilen 2 und 3 jeweils Wert2 und Wert3 sind. Bei verschiedenen Ausführungsformen können 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 1 und die Spalte 2 den ursprünglichen Wert oder den neuesten Wert anzeigen. Die Metadatenaktionsspalte zeigt an, dass sich die Zeilen 2 und 3 einem LÖSCH-Befehl unterzogen. Die Metadaten-sind-aktuell-Spalte zeigt an, ob die Metadaten aktualisiert bzw. upgedated wurden. Bei dem in 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.
  • 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. Zusammenführungs- bzw. Vereinigungs-Anweisung) verwendet werden kann, indem überprüft wird, welcher Teil von Daten vorhanden ist. Eine Tabellenwertfunktion kann verwendet werden, um die Tabellenhistorie für eine gegebene Tabelle (oder eine materialisierte Ansicht) abzufragen. Weiterhin kann eine SQL-Anweisung verwendet werden, indem auf die Spalten EINGEFÜGT oder GELÖSCHT in 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, 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 - wir nehmen auf diese Zeilen durch Verwenden des Inhalts der ersten Spalte Bezug. 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.
  • 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 Änderungsnachverfolgungshistorienkomponente 706, eine Verschlüsselungskomponente 708 und eine Deltakomponente 710. Die Komponenten 702-710 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-710 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-710 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 Änderungsnachverfolgungshistorienkomponente 706 speichert und managt Information über an den Tabellendaten vorgenommene Änderungen. Die Änderungsnachverfolgungshistorie kann zum Beispiel in einem lokalen veränderbaren Speicher und/oder innerhalb der Tabellendaten als Änderungsnachverfolgungsspalte gespeichert werden. Bei einer Ausführungsform kann die Änderungsnachverfolgungshistorie gespeichert und an Ort und Stelle aktualisiert werden. Bei einer Ausführungsform wird die Änderungsnachverfolgungshistorie innerhalb einer unveränderlichen Mikropartition in einer Änderungsnachverfolgungsspalte gespeichert, die eine letzte Änderung anzeigt, die bei einer Zeile auftrat, und/oder ein Protokoll von Änderungen, die bei der Tabelle aufgetreten sind. Bei einer Ausführungsform sichert die Änderungsnachverfolgungshistorienkomponente 706 einen Zeitstempel für eine Transaktion, die bei der Tabelle auftrat, und sichert weiterhin einen Zeitstempel für jede Änderung oder Modifikation, die bei einer oder mehreren Zeilen der Tabelle auftritt.
  • 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 Deltakomponente 710 erzeugt ein Delta für eine Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel. Die Deltakomponente 710 bestimmt eine gesamte Änderung oder Modifikation, die an bzw. bei einer oder mehreren Zeilen in einer Tabelle aufgetreten ist, ohne Information über inkrementelle Änderungen bereitzustellen, die zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel auftraten.
  • 8 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 800 zum Bestimmen einer an einer Datenbanktabelle vorgenommenen Änderungen darstellt. Das Verfahren 800 kann durch einen Änderungsnachverfolgungsmanager 628, einen Datenbank-Servicemanager 502, eine Verarbeitungsplattform 500 und/oder einen anderen Dienst oder eine andere Plattform durchgeführt werden.
  • Das Verfahren 800 beginnt und eine Tabellendatenkomponente 702 bestimmt bei 802, dass es bei einer Mikropartition einer Tabelle einer Datenbank auszuführen ist. Die Tabellendatenkomponente 702 führt bei 804 eine Änderung an der Tabelle aus, indem sie eine neue Mikropartition erzeugt, die die Änderung widerspiegelt. Eine Änderungsnachverfolgungshistorienkomponente 706 aktualisiert bei 806 eine Tabellenhistorie, die ein Protokoll von an der Tabelle vorgenommenen Änderungen umfasst, wobei jede Änderung im Protokoll von Änderungen einen Zeitstempel umfasst und wobei ein Aktualisieren der Tabellenhistorie ein Einfügen der Änderung in das Protokoll von Änderungen umfasst.
  • 9 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 900 zum Bestimmen einer an einer Datenbanktabelle vorgenommenen Änderungen darstellt. Das Verfahren 900 kann durch einen Änderungsnachverfolgungsmanager 628, einen Datenbank-Servicemanager 502, eine Verarbeitungsplattform 500 und/oder einen anderen Dienst oder eine andere Plattform durchgeführt werden.
  • Das Verfahren 900 beginnt und eine Tabellendatenkomponente 702 bestimmt bei 902 eine Änderung, die auf einer Mikropartition einer Tabelle einer Datenbank ausgeführt werden soll. Die Tabellendatenkomponente 702 führt bei 904 die Änderung an der Tabelle aus, indem sie eine neue Mikropartition erzeugt, die die Änderung widerspiegelt, und indem sie die Mikropartition entfernt. Eine Änderungsnachverfolgungshistorienkomponente 706 aktualisiert bei 906 eine oder mehrere Änderungsnachverfolgungsspalten in der neuen Mikropartition, wobei die eine oder die mehreren Änderungsnachverfolgungsspalten eines oder mehreres von folgendem anzeigen: eine frühere Mikropartition, die mit einer Zeile in der neuen Mikropartition assoziiert ist, eine frühere Zeilen-Identifikation, die mit einer Zeile in der neuen Mikropartition assoziiert ist, oder eine frühere Transaktion, die mit einer Zeile in der neuen Mikropartition assoziiert ist. Ein Anforderungsverarbeitungsdienst 608 empfängt bei 908 eine Anforderung, um ein Delta für die Mikropartition und die neue Mikropartition zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel zu bestimmen. Eine Deltakomponente 710 reagiert auf die Anforderung, indem sie bei 910 die eine oder die mehreren Änderungsnachverfolgungsspalten abfragt, um das Delta zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel zu bestimmen.
  • 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.
  • Ein Bus 1212 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 1212 gekoppelt sind. Der Bus 1212 stellt eine oder mehrere von mehreren Typen von Busstrukturen dar, wie beispielsweise einen Systembus, einen PCI-Bus, einen IEEE 1394 Bus, einen USB-Bus und so weiter.
  • Beispiele
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Beispiel 1 ist ein Verfahren zum Nachverfolgen von Änderungen an Datenbankdaten. Das Verfahren enthält ein Bestimmen einer an einer Mikropartition einer Tabelle einer Datenbank auszuführenden Änderung und ein Ausführen der Änderung auf an der Tabelle durch Erzeugen einer neuen Mikropartition, die die Änderung verkörpert. Das Verfahren enthält ein Aktualisieren einer Tabellenhistorie, die ein Protokoll von an der Tabelle vorgenommenen Änderungen umfasst, wobei jede Änderung im Protokoll von Änderungen einen Zeitstempel umfasst und wobei ein Aktualisieren der Tabellenhistorie ein Einfügen der Änderung in das Protokoll von Änderungen umfasst. Das Verfahren enthält ein Bestimmen eines Deltas für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel basierend auf der Tabellenhistorie.
  • Beispiel 2 ist ein Verfahren wie beim Beispiel 1, wobei die Änderung ein Löschen einer Zeile in einer ersten Mikropartition umfasst und wobei ein Ausführen der Änderung ein Erzeugen einer zweiten Mikropartition, die die Zeile nicht enthält, und ein Löschen der ersten Mikropartition umfasst.
  • Beispiel 3 ist ein Verfahren Methode wie bei einem der Beispiele 1-2, wobei die Änderung ein Hinzufügen einer Zeile zu einer ersten Mikropartition umfasst und wobei ein Ausführen der Änderung ein Erzeugen einer zweiten Mikropartition, die die Zeile umfasst, und ein Löschen der ersten Mikropartition umfasst.
  • Beispiel 4 ist ein Verfahren wie bei einem der Beispiele 1-3, wobei die Änderung ein Aktualisieren einer Zeile in einer ersten Mikropartition umfasst und wobei ein Ausführen der Änderung ein Erzeugen einer zweiten Mikropartition, die das Update bzw. die Aktualisierung umfasst, und ein Löschen der ersten Mikropartition umfasst.
  • Beispiel 5 ist ein Verfahren wie bei einem der Beispiele 1-4, wobei ein Ausführen der Änderung an der Tabelle weiterhin ein Löschen der Mikropartition umfasst.
  • Beispiel 6 ist ein Verfahren wie bei einem der Beispiele 1-5, wobei die Änderung auf eine Vielzahl von Mikropartitionen der Tabelle angewendet wird, so dass ein Ausführen der Änderung an der Tabelle ein Erzeugen einer Vielzahl von neuen Mikropartitionen und ein Löschen der Pluralität von Mikropartitionen umfasst.
  • Beispiel 7 ist ein Verfahren wie bei einem der Beispiele 1-6, wobei die Änderung eines oder mehreres von einem Löschen, einem Einfügen, einem Zusammenführen oder einem Aktualisieren an einer oder mehreren Zeilen der Tabelle umfasst.
  • Beispiel 8 ist ein Verfahren wie bei einem der Beispiele 1-7, wobei das Delta für die Tabelle einen Hinweis auf Zeilen und Mikropartitionen der Tabelle umfasst, die sich zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel geändert haben, wobei der erste Zeitstempel und der zweite Zeitstempel irgendwelche Zeiten in der Tabellenhistorie umfassen.
  • Beispiel 9 ist ein Verfahren wie bei einem der Beispiele 1-8, das weiterhin ein Erzeugen einer Zeilenidentifikation für jede Zeile einer Vielzahl von Zeilen der Tabelle umfasst, wobei die Zeilenidentifikation in der Tabellenhistorie in Verbindung mit einem anwendbaren Zeitstempel im Protokoll von an der Tabelle vorgenommenen Änderungen gespeichert wird.
  • Beispiel 10 ist ein Verfahren wie bei einem der Beispiele 1-9, wobei ein Erzeugen der Zeilenidentifikation folgendes umfasst: für eine unmodifizierte Zeile Ableiten einer Zeilenidentifikation basierend darauf, wie Daten in der unmodifizierten Zeile gespeichert werden; oder für eine modifizierte Zeile, die durch Ausführen der Änderung an der Tabelle modifiziert wird, Erzeugen einer neuen Zeilenidentifikation für die modifizierte Zeile in der neuen Mikropartition, die die Änderung verkörpert.
  • Beispiel 11 ist ein Verfahren wie bei einem der Beispiele 1-10, wobei ein Bestimmen des Deltas für die Tabelle ein Vergleichen eines ersten Datensatzes, der mit dem ersten Zeitstempel assoziiert ist, und eines zweiten Datensatzes, der mit dem zweiten Zeitstempel assoziiert ist, umfasst, wobei das Vergleichen ein Ableiten von Tupelgranularitätsänderungen zwischen dem ersten Datensatz und dem zweiten Datensatz umfasst.
  • Beispiel 12 ist ein Verfahren wie bei einem der Beispiele 1-11, wobei die Tabellenhistorie eine in der Tabelle gespeicherte Änderungsnachverfolgungsspalte umfasst und wobei die Mikropartition eine unveränderliche Speichervorrichtung ist.
  • Beispiel 13 ist ein Verfahren wie bei einem der Beispiele 1-12, wobei ein Erzeugen der neuen Mikropartition, die die Änderung verkörpert, folgendes umfasst: Kopieren von unmodifizierten Zeilen aus der Mikropartition zusammen mit in Verbindung mit den unmodifizierten Zeilen gespeicherter Änderungshistorieninformation; Erzeugen von neuen modifizierten Zeilen basierend auf der Änderung; und Erzeugen einer Zeilenidentifikation für jede der neuen modifizierten Zeilen.
  • Beispiel 14 ist ein Verfahren wie bei einem der Beispiele 1-13, wobei der erste Zeitstempel mit einem ersten Satz von Mikropartitionen assoziiert ist und der zweite Zeitstempel einem zweiten Satz von Mikropartitionen assoziiert ist, und wobei ein Bestimmen des Deltas für die Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel folgendes umfasst: Vergleichen eines ersten Satzes von Regeln für den ersten Satz von Mikropartitionen und eines zweiten Satzes von Regeln für den zweiten Satz von Mikropartitionen; Ableiten von anwendbarer Änderungsnachverfolgungsinformation aus der Tabellenhistorie für jeden des ersten Zeitstempels und des zweiten Zeitstempels; und Bestimmen von einer oder mehreren Zeilen, die zwischen dem ersten Satz von Mikropartitionen und dem zweiten Satz von Mikropartitionen hinzugefügt, gelöscht oder aktualisiert worden sind.
  • Beispiel 15 ist ein Verfahren wie bei einem der Beispiele 1-14, wobei das Protokoll von Änderungen in der Tabellenhistorie folgendes umfasst: eine Auflistung von einer oder mehreren Transaktionen, die eine Modifikation an der Tabelle initiierten, wobei die Modifikation eines oder mehreres von folgendem umfasst: eine hinzugefügte Zeile, eine gelöschte Zeile oder eine aktualisierte Zeile; und einen Zeitstempel für jede Transaktion in der Auflistung von einer oder mehreren Transaktionen.
  • Beispiel 16 ist ein Verfahren wie bei einem der Beispiele 1-15, wobei das Protokoll von Änderungen in der Tabellenhistorie eine Abstammung für jede einer Vielzahl von Zeilen in der Tabelle umfasst, wobei die Abstammung ein Protokoll von Modifikationen mit einem mit jeder Modifikation assoziierten Zeitstempel umfasst, und wobei die Abstammung ein Nachverfolgen von jeder der Vielzahl von Zeilen über eine Vielzahl von Mikropartitionen in der Tabelle ermöglicht.
  • Beispiel 17 ist ein System zum Nachverfolgen von Änderungen an Datenbankdaten. Das System enthält Mittel zum Bestimmen einer an einer Mikropartition einer Tabelle einer Datenbank auszuführenden Änderung und Mittel zum Ausführen der Änderung an der Tabelle durch Erzeugen einer neuen Mikropartition, die die Änderung verkörpert. Das System enthält Mittel zum Aktualisieren einer Tabellenhistorie, die ein Protokoll von an der Tabelle vorgenommenen Änderungen umfasst, wobei jede Änderung beim Protokoll von Änderungen einen Zeitstempel umfasst und wobei ein Aktualisieren der Tabellenhistorie ein Einfügen der Änderung in das Protokoll von Änderungen umfasst. Das System enthält Mittel zum Bestimmen eines Deltas für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel basierend auf der Tabellenhistorie.
  • Beispiel 18 ist ein System wie beim Beispiel 17, wobei die Änderung ein Löschen einer Zeile in einer ersten Mikropartition umfasst und wobei die Mittel zum Ausführen der Änderung konfiguriert sind, um eine zweite Mikropartition zu erzeugen, die die Zeile nicht enthält, und ein Löschen der ersten Mikropartition.
  • Beispiel 19 ist ein System wie bei einem der Beispiele 17-18, wobei die Änderung ein Hinzufügen einer Zeile zu einer ersten Mikropartition umfasst und wobei die Mittel zum Ausführen der Änderung konfiguriert sind, um eine zweite Mikropartition zu erzeugen, die die Zeile umfasst, und ein Löschen der ersten Mikropartition.
  • Beispiel 20 ist ein System wie bei einem der Beispiele 17-19, wobei die Änderung ein Aktualisieren einer Zeile in einer ersten Mikropartition umfasst und wobei die Mittel zum Ausführen der Änderung konfiguriert sind, um eine zweite Mikropartition zu erzeugen, die die Aktualisierung umfasst, und ein Löschen der ersten Mikropartition.
  • Beispiel 21 ist ein System wie bei einem der Beispiele 17-20, wobei die Mittel zum Ausführen der Änderung an der Tabelle weiterhin konfiguriert sind, um die Mikropartition zu löschen.
  • Beispiel 22 ist ein System wie bei einem der Beispiele 17-21, wobei die Änderung auf eine Vielzahl von Mikropartitionen der Tabelle angewendet wird, so dass ein Ausführen der Änderung an der Tabelle ein Erzeugen einer Vielzahl von neuen Mikropartitionen und ein Löschen der Vielzahl von Mikropartitionen umfasst.
  • Beispiel 23 ist ein System wie bei einem der Beispiele 17-22, wobei die Änderung eines oder mehreres von einem Löschen, einem Einfügen, einem Zusammenführen oder einem Aktualisieren an einer oder mehreren Zeilen der Tabelle umfasst.
  • Beispiel 24 ist ein System wie bei einem der Beispiele 17-23, wobei das Delta für die Tabelle einen Hinweis auf Zeilen und Mikropartitionen der Tabelle umfasst, die sich zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel geändert haben, wobei der erste Zeitstempel und der zweite Zeitstempel irgendwelche Zeiten in der Tabellenhistorie umfassen.
  • Beispiel 25 ist ein System wie bei einem der Beispiele 17-24, das weiterhin Mittel zum Erzeugen einer Zeilenidentifikation für jede Zeile einer Vielzahl von Zeilen der Tabelle umfasst, wobei die Zeilenidentifikation in der Tabellenhistorie in Verbindung mit einem anwendbaren Zeitstempel im Protokoll von an der Tabelle vorgenommenen Änderungen gespeichert wird.
  • Beispiel 26 ist ein System wie bei einem der Beispiele 17-25, wobei die Mittel zum Erzeugen der Zeilenidentifikation konfiguriert sind, um: für eine unmodifizierte Zeile eine Zeilenidentifikation basierend darauf abzuleiten, wie Daten in der unmodifizierten Zeile gespeichert sind; oder für eine modifizierte Zeile, die durch Ausführen der Änderung an der Tabelle modifiziert ist, eine Zeilenidentifikation für die modifizierte Zeile in der neuen Mikropartition zu erzeugen, die die Änderung verkörpert.
  • Beispiel 27 ist ein System, wie bei einem der Beispiele 17-26, wobei die Mittel zum Bestimmen des Deltas für die Tabelle konfiguriert sind, um einen ersten Datensatz, der mit dem ersten Zeitstempel assoziiert ist, und einen zweiten Datensatz, der mit dem zweiten Zeitstempel assoziiert ist, zu vergleichen, wobei das Vergleichen ein Ableiten von Tupelgranularitätsänderungen zwischen dem ersten Datensatz und dem zweiten Datensatz umfasst.
  • Beispiel 28 ist ein System wie bei einem der Beispiele 17-27, wobei die Tabellenhistorie eine in der Tabelle gespeicherte Änderungsnachverfolgungsspalte umfasst und wobei die Mikropartition eine unveränderliche Speichervorrichtung ist.
  • Beispiel 29 ist ein System wie bei einem der Beispiele 17-28, wobei die Mittel zum Erzeugen der neuen Mikropartition, die die Änderung verkörpert, konfiguriert sind, um: unmodifizierte Zeilen aus der Mikropartition zusammen mit in Verbindung mit den unmodifizierten Zeilen gespeicherter Änderungshistorieninformation zu kopieren; neue modifizierte Zeilen basierend auf der Änderung zu erzeugen; und eine Zeilenidentifikation für jede der neuen modifizierten Zeilen zu erzeugen.
  • Beispiel 30 ist ein System wie bei einem der Beispiele 17-29, wobei der erste Zeitstempel mit einem ersten Satz von Mikropartitionen assoziiert ist und der zweite Zeitstempel mit einem zweiten Satz von Mikropartitionen assoziiert ist und wobei ein Bestimmen des Deltas für die Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel folgendes umfasst: Vergleichen eines ersten Satzes von Regeln für den ersten Satz von Mikropartitionen und eines zweiten Satzes von Regeln für den zweiten Satz von Mikropartitionen; Ableiten anwendbarer Änderungsnachverfolgungsinformation aus der Tabellenhistorie für jeden des ersten Zeitstempels und des zweiten Zeitstempels; und Bestimmen von einer oder mehreren Zeilen, die zwischen dem ersten Satz von Mikropartitionen und dem zweiten Satz von Mikropartitionen hinzugefügt, gelöscht oder aktualisiert worden sind.
  • Beispiel 31 ist ein System wie bei einem der Beispiele 17-30, wobei das Protokoll von Änderungen in der Tabellenhistorie folgendes umfasst: eine Auflistung von einer oder mehreren Transaktionen, die eine Modifikation an der Tabelle initiierten, wobei die Modifikation eines oder mehreres von folgendem umfasst: eine hinzugefügte Zeile, eine gelöschte Zeile oder eine aktualisierte Zeile; und einen Zeitstempel für jede Transaktion in der Auflistung von einer oder mehreren Transaktionen.
  • Beispiel 32 ist ein System wie bei einem der Beispiele 17-31, wobei das Protokoll von Änderungen in der Tabellenhistorie eine Abstammung für jede einer Vielzahl von Zeilen in der Tabelle umfasst, wobei die Abstammung ein Protokoll von Modifikationen mit einem mit jeder Modifikation assoziierten Zeitstempel umfasst, und wobei die Abstammung ein Nachverfolgen von jeder der Vielzahl von Zeilen über eine Vielzahl von Mikropartitionen in der Tabelle ermöglicht.
  • Beispiel 33 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 an einer Mikropartition einer Tabelle einer Datenbank auszuführende Änderung bestimmt oder bestimmen; die Änderung an der Tabelle durch Erzeugen einer neuen Mikropartition erzeugt oder erzeugen, die die Änderung verkörpert; eine Tabellenhistorie aktualisiert oder aktualisieren, die ein Protokoll von an der Tabelle vorgenommenen Änderungen enthält, wobei jede Änderung beim Protokoll von Änderungen einen Zeitstempel enthält und wobei ein Aktualisieren der Tabellenhistorie ein Einfügen der Änderung in das Protokoll von Änderungen umfasst; und ein Delta für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel basierend auf der Tabellenhistorie bestimmt oder bestimmen.
  • Beispiel 34 sind nichtflüchtige, computerlesbare Speichermedien wie beim Anspruch 33, wobei die Änderung ein Löschen einer Zeile in einer ersten Mikropartition umfasst und wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Änderung durch Erzeugen einer zweiten Mikropartition, die die Zeile nicht enthält, und Löschen der ersten Mikropartition ausführt oder ausführen.
  • Beispiel 35 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-34, wobei die Änderung ein Hinzufügen einer Zeile zu einer ersten Mikropartition umfasst und wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Änderung durch Erzeugen einer zweiten Mikropartition, die die Zeile umfasst, und ein Löschen der ersten Mikropartition ausführt oder ausführen.
  • Beispiel 36 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-35, wobei die Änderung ein Aktualisieren einer Zeile in einer ersten Mikropartition umfasst und wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Änderung durch Erzeugen einer zweiten Mikropartition, die die Aktualisierung umfasst, und ein Löschen der ersten Mikropartition ausführt oder ausführen.
  • Beispiel 37 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-36, wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren die Änderung an der Tabelle durch ein Löschen der Mikropartition ausführt oder ausführen.
  • Beispiel 38 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-37, wobei die Änderung auf eine Vielzahl von Mikropartitionen der Tabelle angewendet wird, so dass die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Änderung an der Tabelle durch Erzeugen einer Vielzahl von neuen Mikropartitionen und Löschen der Vielzahl von Mikropartitionen ausführt oder ausführen.
  • Beispiel 39 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-38, wobei die Änderung eines oder mehreres von einem Löschen, einem Einfügen, einem Zusammenführen oder einem Aktualisieren an einer oder mehreren Zeilen der Tabelle umfasst.
  • Beispiel 40 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-39, wobei das Delta für die Tabelle einen Hinweis auf Zeilen und Mikropartitionen der Tabelle umfasst, die sich zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel geändert haben, wobei der erste Zeitstempel und der zweite Zeitstempel irgendwelche Zeiten in der Tabellenhistorie umfassen.
  • Beispiel 41 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-40, wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren für jede Zeile einer Vielzahl von Zeilen der Tabelle eine Zeilenidentifikation erzeugt oder erzeugen, wobei die Zeilenidentifikation in der Tabellenhistorie in Verbindung mit einem anwendbaren Zeitstempel im Protokoll von an der Tabelle vorgenommenen Änderungen gespeichert wird.
  • Beispiel 42 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-41, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Zeilenidentifikation erzeugt oder erzeugen durch: für eine unmodifizierte Zeile Ableiten einer Zeilenidentifikation basierend darauf, wie Daten in der unmodifizierten Zeile gespeichert sind; oder für eine modifizierte Zeile, die durch Ausführen der Änderung an der Tabelle modifiziert ist, Erzeugen einer Zeilenidentifikation für die modifizierte Zeile in der neuen Mikropartition, die die Änderung verkörpert.
  • Beispiel 43 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-42, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren das Delta für die Tabelle durch Vergleichen eines ersten Datensatz, der mit dem ersten Zeitstempel assoziiert ist, und eines zweiten Datensatzes, der mit dem zweiten Zeitstempel assoziiert ist, bestimmt oder bestimmen, wobei das Vergleichen ein Ableiten von Tupelgranularitätsänderungen zwischen dem ersten Datensatz und dem zweiten Datensatz umfasst.
  • Beispiel 44 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-43, wobei die Tabellenhistorie eine in der Tabelle gespeicherte Änderungsnachverfolgungsspalte umfasst und wobei die Mikropartition eine unveränderliche Speichervorrichtung ist.
  • Beispiel 45 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-44, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die neue Mikropartition, die die Änderung verkörpert, erzeugt oder erzeugen durch: Kopieren von unmodifizierten Zeilen aus der Mikropartition zusammen mit in Verbindung mit den unmodifizierten Zeilen gespeicherter Änderungshistorieninformation; Erzeugen von neuen modifizierten Zeilen basierend auf der Änderung; und Erzeugen einer Zeilenidentifikation für jede der neuen modifizierten Zeilen.
  • Beispiel 46 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-45, wobei der erste Zeitstempel mit einem ersten Satz von Mikropartitionen assoziiert ist und der zweite Zeitstempel mit einem zweiten Satz von Mikropartitionen assoziiert ist und wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren das Delta für die Tabelle zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel bestimmt oder bestimmen durch: Vergleichen eines ersten Satzes von Regeln für den ersten Satz von Mikropartitionen und eines zweiten Satzes von Regeln für den zweiten Satz von Mikropartitionen; Ableiten anwendbarer Änderungsnachverfolgungsinformation aus der Tabellenhistorie für jeden des ersten Zeitstempels und des zweiten Zeitstempels; und Bestimmen von einer oder mehreren Zeilen, die zwischen dem ersten Satz von Mikropartitionen und dem zweiten Satz von Mikropartitionen hinzugefügt, gelöscht oder aktualisiert worden sind.
  • Beispiel 47 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-46, wobei das Protokoll von Änderungen in der Tabellenhistorie folgendes umfasst: eine Auflistung von einer oder mehreren Transaktionen, die eine Modifikation an der Tabelle initiierten, wobei die Modifikation eines oder mehreres von folgendem umfasst: eine hinzugefügte Zeile, eine gelöschte Zeile oder eine aktualisierte Zeile; und einen Zeitstempel für jede Transaktion in der Auflistung von einer oder mehreren Transaktionen.
  • Beispiel 48 sind nichtflüchtige, computerlesbare Speichermedien wie bei einem der Beispiele 33-37, wobei das Protokoll von Änderungen in der Tabellenhistorie eine Abstammung für jede einer Vielzahl von Zeilen in der Tabelle umfasst, wobei die Abstammung ein Protokoll von Modifikationen mit einem mit jeder Modifikation assoziierten Zeitstempel umfasst und wobei die Abstammung ein Nachverfolgen von jede der Vielzahl von Zeilen über eine Vielzahl von Mikropartitionen in der Tabelle ermöglicht.
  • Beispiel 49 ist eine Vorrichtung, die Mittel enthält, um ein Verfahrens wie bei einem der Beispiele 1-17 durchzuführen.
  • Beispiel 50 ist ein maschinenlesbarer Speicher, der maschinenlesbare Anweisungen enthält, die dann, wenn sie ausgeführt werden, ein Verfahren implementieren oder eine Vorrichtung realisieren von irgendeinem der Beispiele 1-17.
  • 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 durch wenigstens einem Prozessor ausführbar sind, zum Veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Ausführen einer Änderung an einer ersten unveränderlichen Mikropartition einer Tabelle einer Datenbank, wobei das Ausführen der Änderung ein Erzeugen einer neuen Mikropartition, die die Änderung verkörpert, und ein Löschen der ersten unveränderlichen Mikropartition umfasst; Speichern eines Werts der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung in einer Änderungsnachverfolgungsspalte der Tabelle; Empfangen, von einem Anforderungsverarbeitungsdienst, einer Anforderung für ein Delta für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel; und Abfragen von wenigstens einer Änderungsnachverfolgungsspalte der Tabelle, um das Delta zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel zu bestimmen, wobei das Delta den Wert der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung enthält; und Bereitstellen des Deltas für die Tabelle und des Werts der ersten unveränderlichen Mikropartition für den Anforderungsverarbeitungsdienst.
  2. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Aktualisieren einer Tabellenhistorie, die ein Protokoll von an der Tabelle vorgenommenen Änderungen umfasst, wobei jede Änderung im Protokoll von Änderungen einen Zeitstempel umfasst, wobei das Aktualisieren der Tabellenhistorie ein Einfügen eines Hinweises auf die Änderung in das Protokoll von Änderungen umfasst.
  3. Computerprogramm nach Anspruch 2, das weiterhin folgendes umfasst: Bereitstellen des Deltas in Reaktion auf die Anforderung für das Delta, wobei das Delta anzeigt, dass eine Transaktion basierend auf der aktualisierten Tabellenhistorie abgeschlossen wurde.
  4. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Aktualisieren von einer oder mehreren Änderungsnachverfolgungsspalten in der neuen Mikropartition.
  5. Computerprogramm nach Anspruch 4, wobei die eine oder die mehreren Änderungsnachverfolgungsspalten eines oder mehreres von folgendem anzeigen: eine frühere Mikropartition, die mit einer Zeile in der neuen Mikropartition assoziiert ist, eine frühere Zeilenidentifikation, die mit einer Zeile in der neuen Mikropartition assoziiert ist, oder eine frühere Transaktion, die mit einer Zeile in der neuen Mikropartition assoziiert ist.
  6. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Vergleichen eines ersten Datensatzes, der mit dem ersten Zeitstempel assoziiert ist, und eines zweiten Datensatzes, der mit dem zweiten Zeitstempel assoziiert ist, wobei das Vergleichen ein Bestimmen von Zeilengranularitätsänderungen zwischen hinzugefügten und entfernten Mikropartitionen zwischen dem ersten Datensatz und dem zweiten Datensatz umfasst.
  7. Computerprogramm nach Anspruch 1, wobei die wenigstens eine Änderungsnachverfolgungsspalte eine neueste Änderung anzeigt, die an einer Zeile auftrat, oder ein Protokoll von Änderungen, die an der Tabelle aufgetreten sind.
  8. Computerprogramm nach Anspruch 1, das weiterhin folgendes umfasst: Bestimmen eines Zeitstempels für eine Transaktion, die an der Tabelle aufgetreten ist; und Bestimmen eines Zeitstempels für jede Modifikation, die an einer oder mehreren Zeilen der Tabelle auftritt.
  9. System, umfassend: wenigstens einen Prozessor; und ein oder mehrere nichtflüchtige, computerlesbare Speichermedien, die Anweisungen enthalten, die durch den wenigstens einem Prozessor ausführbar sind, zum Veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Ausführen einer Änderung an einer ersten unveränderlichen Mikropartition einer Tabelle einer Datenbank, wobei das Ausführen der Änderung ein Erzeugen einer neuen Mikropartition, die die Änderung verkörpert, und ein Löschen der ersten unveränderlichen Mikropartition umfasst; Speichern eines Werts der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung in einer Änderungsnachverfolgungsspalte der Tabelle; Empfangen einer Anforderung für ein Delta für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel; und Abfragen von wenigstens einer Änderungsnachverfolgungsspalte der Tabelle, um das Delta zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel zu bestimmen, wobei das Delta den Wert der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung enthält; und Bereitstellen des Deltas für die Tabelle und des Werts der ersten unveränderlichen Mikropartition.
  10. System nach Anspruch 9, wobei die Operationen weiterhin folgendes umfassen: Aktualisieren einer Tabellenhistorie, die ein Protokoll von an der Tabelle vorgenommenen Änderungen umfasst, wobei jede Änderung im Protokoll von Änderungen einen Zeitstempel umfasst, wobei das Aktualisieren der Tabellenhistorie ein Einfügen eines Hinweises auf die Änderung in das Protokoll von Änderungen umfasst.
  11. System nach Anspruch 10, wobei die Operationen weiterhin folgendes umfassen: Bereitstellen des Deltas in Reaktion auf die Anforderung für das Delta, wobei das Delta anzeigt, dass eine Transaktion basierend auf der aktualisierten Tabellenhistorie abgeschlossen wurde.
  12. System nach Anspruch 10, wobei die Tabellenhistorie innerhalb einer unveränderlichen Mikropartition gespeichert wird.
  13. System nach Anspruch 11, wobei die Operationen weiterhin folgendes umfassen: Aktualisieren von einer oder mehreren Änderungsnachverfolgungsspalten in der Tabelle, die anzeigen, dass auf den Wert der ersten unveränderlichen Mikropartition zugegriffen worden ist.
  14. System nach Anspruch 13, wobei die eine oder die mehreren Änderungsnachverfolgungsspalten eines oder mehreres von folgendem anzeigen: eine frühere Mikropartition, die mit einer Zeile in der neuen Mikropartition assoziiert ist, eine frühere Zeilenidentifikation, die mit einer Zeile in der neuen Mikropartition assoziiert ist, oder eine frühere Transaktion, die mit einer Zeile in der neuen Mikropartition assoziiert ist.
  15. System nach Anspruch 9, wobei die Operationen weiterhin folgendes umfassen: Vergleichen eines ersten Datensatzes, der mit dem ersten Zeitstempel assoziiert ist, und eines zweiten Datensatzes, der mit dem zweiten Zeitstempel assoziiert ist, wobei das Vergleichen ein Bestimmen von Zeilengranularitätsänderungen zwischen hinzugefügten und entfernten Mikropartitionen zwischen dem ersten Datensatz und dem zweiten Datensatz umfasst.
  16. System nach Anspruch 9, wobei die wenigstens eine Änderungsnachverfolgungsspalte eine neueste Änderung anzeigt, die an einer Zeile auftrat, oder ein Protokoll von Änderungen, die an der Tabelle aufgetreten sind.
  17. System nach Anspruch 9, wobei die Operationen weiterhin folgendes umfassen: Bestimmen eines Zeitstempels für eine Transaktion, die an der Tabelle aufgetreten ist; und Bestimmen eines Zeitstempels für jede Modifikation, die an einer oder mehreren Zeilen der Tabelle auftritt.
  18. Nichtflüchtige, computerlesbare Speichermedien, die Anweisungen enthalten, die durch wenigstens einen Prozessor ausführbar sind, zum Veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Ausführen einer Änderung an einer ersten unveränderlichen Mikropartition einer Tabelle einer Datenbank, wobei das Ausführen der Änderung ein Erzeugen einer zweiten Mikropartition, die die Änderung verkörpert, und ein Löschen der ersten unveränderlichen Mikropartition umfasst; Speichern eines Werts der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung in einer Änderungsnachverfolgungsspalte der Tabelle; Empfangen, von einem Anforderungsverarbeitungsdienst, einer Anforderung für ein Delta für die Tabelle zwischen einem ersten Zeitstempel und einem zweiten Zeitstempel; und Abfragen von wenigstens einer Änderungsnachverfolgungsspalte der Tabelle, um das Delta zwischen dem ersten Zeitstempel und dem zweiten Zeitstempel zu bestimmen, wobei das Delta den Wert der ersten unveränderlichen Mikropartition vor dem Ausführen der Änderung enthält; und Bereitstellen des Deltas für die Tabelle und des Werts der ersten unveränderlichen Mikropartition für den Anforderungsverarbeitungsdienst.
  19. Nichtflüchtige, computerlesbare Speichermedien nach Anspruch 18, wobei die Operationen weiterhin folgendes umfassen: Vergleichen eines ersten Datensatzes, der dem ersten Zeitstempel assoziiert ist, und eines zweiten Datensatzes, der mit dem zweiten Zeitstempel assoziiert ist, wobei das Vergleichen ein Bestimmen von Zeilengranularitätsänderungen zwischen hinzugefügten und entfernten Mikropartitionen zwischen dem ersten Datensatz und dem zweiten Datensatz umfasst.
  20. Nichtflüchtige, computerlesbare Speichermedien nach Anspruch 18, wobei die wenigstens eine Änderungsverfolgungsspalte eine neueste Änderung anzeigt, die in einer Zeile auftrat, oder ein Protokoll von Änderungen, die in der Tabelle aufgetreten sind.
DE202019005716.1U 2018-11-06 2019-11-05 Nachverfolgen von Änderungen bei Datenbankdaten Active DE202019005716U1 (de)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
DE202019005716U1 true DE202019005716U1 (de) 2021-08-03

Family

ID=70458512

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202019005716.1U Active DE202019005716U1 (de) 2018-11-06 2019-11-05 Nachverfolgen von Änderungen bei Datenbankdaten

Country Status (5)

Country Link
US (8) US11347714B2 (de)
EP (1) EP3877837A4 (de)
CN (1) CN112969997A (de)
DE (1) DE202019005716U1 (de)
WO (1) WO2020097032A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347714B2 (en) 2018-11-06 2022-05-31 Snowflake Inc. Tracking changes in database data
US11086840B2 (en) 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
US11243982B2 (en) * 2019-04-10 2022-02-08 International Business Machines Corporation Immutable partitioning for databases
US11709862B2 (en) 2020-02-04 2023-07-25 Grav1Ty Inc. Selective synchronization of database objects
US20220197728A1 (en) * 2020-12-22 2022-06-23 Nokia Solutions And Networks Oy Intent-based networking using partitioning for scalability
US11704327B2 (en) 2021-03-19 2023-07-18 International Business Machines Corporation Querying distributed databases
US11727022B2 (en) * 2021-03-19 2023-08-15 International Business Machines Corporation Generating a global delta in distributed databases
US11567921B2 (en) * 2021-03-31 2023-01-31 Microsoft Technology Licensing, Llc Rowgroup consolidation with global delta accumulation and versioning in distributed systems
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
US11734087B2 (en) * 2021-12-13 2023-08-22 Sap Se Event-driven service for configurable metrics
US11734301B1 (en) * 2022-03-23 2023-08-22 Snowflake Inc. Selective table replication to enable stream replication
US11899636B1 (en) 2023-07-13 2024-02-13 Fmr Llc Capturing and maintaining a timeline of data changes in a relational database system

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6010554A (en) * 1997-06-23 2000-01-04 Battelle Memorial Institute Micro-machined virtual impactor and method of operation
US7934204B2 (en) * 2003-07-15 2011-04-26 International Business Machines Corporation Partitioning code in program code conversion
US8996502B2 (en) * 2004-05-17 2015-03-31 Oracle International Corporation Using join dependencies for refresh
US20060047633A1 (en) * 2004-08-26 2006-03-02 Jay Fontana Cellular telephone directory service
US20060047233A1 (en) * 2004-09-02 2006-03-02 Alex Dussaussoy Stress relief vest
US7895186B2 (en) * 2005-03-31 2011-02-22 Oracle International Corp. Method and mechanism of materialized view mix incremental refresh
US8743708B1 (en) * 2005-08-01 2014-06-03 Rockwell Collins, Inc. Device and method supporting cognitive, dynamic media access control
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
TWI417722B (zh) * 2007-01-26 2013-12-01 Hicamp Systems Inc 階層式不可改變的內容可定址的記憶體處理器
US9430552B2 (en) * 2007-03-16 2016-08-30 Microsoft Technology Licensing, Llc View maintenance rules for an update pipeline of an object-relational mapping (ORM) platform
US7818292B2 (en) * 2007-04-05 2010-10-19 Anil Kumar Nori SQL change tracking layer
US8010554B1 (en) * 2007-11-08 2011-08-30 Teradata Us, Inc. Processing a temporal aggregate query in a database system
US8301652B2 (en) * 2008-09-03 2012-10-30 Teradata Us, Inc. Parallel algorithm to implement temporal aggregate queries
US8825601B2 (en) * 2010-02-01 2014-09-02 Microsoft Corporation Logical data backup and rollback using incremental capture in a distributed database
US9430155B2 (en) * 2010-03-25 2016-08-30 International Business Machines Corporation File index, metadata storage, and file system management for magnetic tape
US9063666B2 (en) * 2010-03-25 2015-06-23 International Business Machines Corporation File index, metadata storage, and file system management for magnetic tape
US20120310934A1 (en) * 2011-06-03 2012-12-06 Thomas Peh Historic View on Column Tables Using a History Table
US9223822B1 (en) * 2011-06-24 2015-12-29 Emc Corporation Techniques for performing indication management
US8909996B2 (en) * 2011-08-12 2014-12-09 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging
US8751525B2 (en) 2011-12-23 2014-06-10 Sap Ag Time slider operator for temporal data aggregation
US9262479B2 (en) * 2012-09-28 2016-02-16 Oracle International Corporation Join operations for continuous queries over archived views
US20190171650A1 (en) * 2017-12-01 2019-06-06 Chavdar Botev System and method to improve data synchronization and integration of heterogeneous databases distributed across enterprise and cloud using bi-directional transactional bus of asynchronous change data system
US9542468B2 (en) * 2014-03-24 2017-01-10 Hitachi, Ltd. Database management system and method for controlling synchronization between databases
US9965497B2 (en) * 2014-05-29 2018-05-08 Oracle International Corporation Moving data between partitions
US9229952B1 (en) * 2014-11-05 2016-01-05 Palantir Technologies, Inc. History preserving data pipeline system and method
US10262002B2 (en) * 2016-08-11 2019-04-16 International Business Machines Corporation Consistent execution of partial queries in hybrid DBMS
US10664462B2 (en) 2017-03-01 2020-05-26 Sap Se In-memory row storage architecture
US10713238B2 (en) * 2017-11-14 2020-07-14 Snowflake Inc. Database metadata in immutable storage
US20190188309A1 (en) * 2017-12-14 2019-06-20 International Business Machines Corporation Tracking changes in mirrored databases
US20200125660A1 (en) 2018-10-19 2020-04-23 Ca, Inc. Quick identification and retrieval of changed data rows in a data table of a database
US11347714B2 (en) 2018-11-06 2022-05-31 Snowflake Inc. Tracking changes in database data

Also Published As

Publication number Publication date
CN112969997A (zh) 2021-06-15
US20200356545A1 (en) 2020-11-12
EP3877837A1 (de) 2021-09-15
US20200142980A1 (en) 2020-05-07
US20240095229A1 (en) 2024-03-21
US20210248127A1 (en) 2021-08-12
US10824617B2 (en) 2020-11-03
EP3877837A4 (de) 2022-08-03
US11194782B2 (en) 2021-12-07
WO2020097032A1 (en) 2020-05-14
US10997152B2 (en) 2021-05-04
US11347714B2 (en) 2022-05-31
US11645262B2 (en) 2023-05-09
US20210182268A1 (en) 2021-06-17
US11874818B2 (en) 2024-01-16
US10983980B2 (en) 2021-04-20
US20200364203A1 (en) 2020-11-19
US20200142882A1 (en) 2020-05-07
US20220245121A1 (en) 2022-08-04

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
DE202020005680U1 (de) Abfragen über externe Tabellen in Datenbanksystemen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
US9298564B2 (en) In place point-in-time recovery of pluggable databases
DE202020005687U1 (de) Gemeinsame Datennutzung bzw. Datenteilung und materilisierte Ansichten in Datenbanken
DE202015009777U1 (de) Transparente Entdeckung eines semistrukturierten Datenschemas
US11169983B1 (en) Transactional streaming of change tracking metadata
Wijaya et al. An overview and implementation of extraction-transformation-loading (ETL) process in data warehouse (Case study: Department of agriculture)
DE102017208084A1 (de) Datenbank mit feldbezogenen Zeitstempeln

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