-
QUERVERWEIS AUF ZUGEHÖRIGE ANMELDUNG
-
Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung mit der seriellen Nr.
16/727,315 , eingereicht am 26. Dezember 2019, von welcher die Inhalte hierdurch durch Bezugnahme hierin in ihrer Gesamtheit enthalten sind.
-
TECHNISCHES GEBIET
-
Ausführungsformen der Offenbarung beziehen sich allgemein auf Datenbanken und insbesondere auf ein Erzeugen und Verwenden von Beschneidungsindizes, um eine Datenbankabfrageverarbeitung in einem cloudbasierten universellen Datenbank-System zu verbessern. Um als Gebrauchsmuster und Gegenstand des Gebrauchsmusters geschützt zu werden, gibt es gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind. In einem Fall, in welchem in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen, für welche mit den beigefügten Ansprüchen Schutz gesucht wird, darzustellen.
-
HINTERGRUND
-
Datenbanken werden weitreichend für eine Datenspeicherung und einen Datenzugriff bei Computeranwendungen verwendet. Ein Ziel einer Datenbankspeicherung ist es, enorme Mengen an Informationen auf organisierte Weise bereitzustellen, so dass darauf zugegriffen, sie gemanagt und upgedated werden können. In einer Datenbank können Daten in Zeilen, Spalten und Tabellen organisiert werden. Datenbanken werden von verschiedenen Entitäten und Unternehmen zum Speichern von Informationen verwendet, auf die möglicherweise zugegriffen werden muss oder die analysiert werden müssen.
-
Ein cloudbasiertes Data-Warehouse (das auch als „netzwerkbasiertes Data-Warehouse“ oder einfach als „Data-Warehouse“ bezeichnet wird) ist ein zur Datenanalyse und ein Berichten verwendetes netzwerkbasiertes System, das ein zentrales Repository integrierter Daten aus einer oder mehreren ganz verschiedenen Quellen umfasst. Ein cloudbasiertes Data-Warehouse kann aktuelle und historische Daten speichern, die zum Erstellen von Analyseberichten für ein Unternehmen basierend auf Daten verwendet werden können, die innerhalb von Datenbanken des Unternehmens gespeichert sind. Zu diesem Zweck stellen Data-Warehouses typischerweise Business Intelligence-Tools, Tools zum Extrahieren, Transformieren und Laden von Daten in das Repository und Tools zum Managen und Abrufen von Metadaten bereit.
-
Wenn bestimmte Informationen aus einer Datenbank extrahiert werden sollen, kann eine Abfrageanweisung gegenüber den Datenbankdaten ausgeführt werden. Ein cloudbasiertes Data-Warehouse-System verarbeitet die Abfrage und gibt bestimmte Daten gemäß einem oder mehreren Abfrageprädikaten zurück, die angeben, welche Informationen von der Abfrage zurückgegeben werden sollten. Das Data-Warehouse-System extrahiert spezifische Daten aus der Datenbank und formatiert diese Daten in eine lesbare Form. Es kann jedoch eine Herausforderung sein, Abfragen an einer sehr großen Tabelle auszuführen, da eine erhebliche Menge an Zeit und Rechenressourcen erforderlich ist, um eine gesamte Tabelle zu scannen, um Daten zu identifizieren, die die Abfrage erfüllen.
-
Figurenliste
-
Die vorliegende Offenbarung wird aus der nachstehend angegebenen detaillierten Beschreibung und aus den beigefügten Zeichnungen verschiedener Ausführungsformen der Offenbarung vollständiger verstanden werden.
- 1 stellt eine beispielhafte Rechenumgebung, die ein netzwerkbasiertes Data-Warehouse-System in Kommunikation mit einem Cloud-Speicheranbietersystem enthält, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
- 2 ist ein Blockdiagramm, das Komponenten eines Computerservice-Managers gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt.
- 3 ist ein Blockdiagramm, das Komponenten einer Ausführungsplattform gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt.
- 4 ist ein konzeptionelles Diagramm, das eine Erzeugung eines blockierten Bloom-Filters, das einen Teil eines Beschneidungsindex ausbilden kann, der vom netzwerkbasierten Data-Warehouse-System basierend auf einer Quelltabelle erzeugt wird, gemäß einigen beispielhaften Ausführungsformen darstellt.
- 5 stellt einen Teilbereich eines beispielhaften Beschneidungsindex gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
- 6 stellt ein einzelnes Bloom-Filter eines Beschneidungsindex gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
- 7 ist ein konzeptionelles Diagramm, das weitere Details bezüglich der Erstellung eines Beschneidungsindex gemäß einigen Ausführungsformen darstellt.
- 8 ist ein konzeptionelles Diagramm, das eine Aufrechterhaltung bzw. Wartung eines Beschneidungsindex gemäß einigen Ausführungsformen darstellt.
- 9-13 sind Ablaufdiagramme, die Operationen des netzwerkbasierten Data-Warehouse-Systems bei einem Durchführen eines Verfahrens zum Erzeugen und Verwenden eines Beschneidungsindex bei einem Verarbeiten einer Datenbankabfrage gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellen.
- 14 stellt eine schematische Darstellung einer Maschine in der Form eines Computersystems, innerhalb von welchem ein Satz von Anweisungen ausgeführt werden kann, um zu veranlassen, dass die Maschine irgendeine oder mehrere der hierin beschriebenen Methoden durchführt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
-
DETAILLIERTE BESCHREIBUNG
-
Es wird nun detailliert auf spezifische beispielhafte Ausführungsformen zum Ausführen des erfinderischen Gegenstands Bezug genommen werden. Beispiele für diese spezifischen Ausführungsformen sind in den beigefügten Zeichnungen dargestellt und spezifische Details werden in der folgenden Beschreibung dargelegt, um ein gründliches Verstehen des Gegenstands bereitzustellen. Es wird verstanden werden, dass nicht beabsichtigt ist, dass diese Beispiele den Schutzumfang der Ansprüche auf die dargestellten Ausführungsformen beschränken. Im Gegenteil ist beabsichtigt, dass sie solche Alternativen, Modifikationen und Äquivalente abdecken, wie sie innerhalb des Schutzumfangs der Offenbarung enthalten sein können.
-
Wie es oben angemerkt ist, ist ein Verarbeiten von Abfragen, die zu sehr großen Tabellen gerichtet sind, eine Herausforderung, da eine signifikante Menge an Zeit und Rechenressourcen erforderlich ist, um eine gesamte Tabelle zu scannen, um Daten zu identifizieren, die die Abfrage erfüllen. Daher kann es wünschenswert sein, eine Abfrage auszuführen, ohne die gesamte Tabelle zu scannen. Aspekte der vorliegenden Offenlegung adressieren die obigen und andere Herausforderungen bei einem Verarbeiten von Abfragen an große Tabellen, indem ein Beschneidungsindex erstellt wird, der verwendet werden kann, um eine reduzierte Scangruppe zum Verarbeiten einer Abfrage zu erstellen. Spezifischer kann eine große Quelltabelle in eine Gruppe von Mikropartitionen organisiert werden, und es kann ein Beschneidungsindex für die Quelltabelle erstellt werden, um bei einem Identifizieren einer Untergruppe der zu scannenden Mikropartitionen verwendet zu werden, um Daten zu identifizieren, die die Abfrage erfüllen.
-
Wie es hierin diskutiert ist, ist eine „Mikropartition“ eine Stapel- bzw. Batcheinheit, und jede Mikropartition hat zusammenhängende Einheiten eines Speichers. Beispielsweise kann jede Mikropartition zwischen 50 MB und 500 MB unkomprimierter Daten enthalten (es ist anzumerken, dass die tatsächliche Speichergröße kleiner sein kann, da 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öglicht eine extrem granulare Auswahl der zu scannenden Mikropartitionen, die aus Millionen oder sogar Hunderten von Millionen von Mikropartitionen bestehen können. Dieser granulare Auswahlprozess für zu scannende Mikropartitionen wird hierin als „Beschneiden“ bezeichnet. Ein Beschneiden enthält ein Verwenden von Metadaten, um zu bestimmen, welche Teilbereiche einer Tabelle, einschließlich welche Mikropartitionen oder Mikropartitionsgruppierungen in der Tabelle, für eine Abfrage nicht relevant sind, und dann ein Vermeiden dieser nicht relevanten Mikropartitionen, wenn auf die Abfrage geantwortet wird, und ein Scannen von nur den relevanten Mikropartitionen, um auf die Abfrage zu antworten. Metadaten können automatisch über alle in einer Mikropartition gespeicherten Zeilen gesammelt werden, einschließlich: des Wertebereichs für jede der Spalten in der Mikropartition; der Anzahl von unterschiedlichen Werten; und/oder zusätzlicher Eigenschaften, die für sowohl eine Optimierung als auch eine effiziente Abfrageverarbeitung verwendet werden. Bei einer Ausführungsform kann eine Mikropartitionierung an allen Tabellen automatisch durchgeführt werden. Zum Beispiel können Tabellen transparent partitioniert werden, indem die Reihenfolge verwendet wird, die beim Einfügen/Laden von Daten auftritt. Es sollte jedoch eingesehen werden, dass diese Offenbarung der Mikropartition nur beispielhaft ist und als nicht einschränkend angesehen werden sollte. Es sollte eingesehen werden, dass die Mikropartition andere Datenbankspeichervorrichtungen enthalten kann, ohne vom Schutzumfang der Offenbarung abzuweichen.
-
In Übereinstimmung mit einigen Ausführungsformen kann ein netzwerkbasiertes Data-Warehouse-System einen Beschneidungsindex für eine Quelltabelle generieren bzw. erzeugen und den Beschneidungsindex verwenden, um Mikropartitionen der Quelltabelle zu beschneiden, wenn Abfragen verarbeitet werden, die an die Quelltabelle gerichtet sind. Beim Erzeugen eines Beschneidungsindex erzeugt das netzwerkbasierte Data-Warehouse-System ein Filter für jede Mikropartition der Quelltabelle, das in jeder Spalte der Mikropartition der Quelltabelle unterschiedliche Werte indiziert. Das Filter kann zum Beispiel ein blockiertes Bloom-Filter, ein Bloom-Filter, ein Hash-Filter oder ein Cuckoo-Filter umfassen.
-
Wenn eher eine Abfrage, die ein Gleichheitsprädikat umfasst, empfangen wird als dass die gesamte Quelltabelle gescannt wird, um das Gleichheitsprädikat auszuwerten, untersucht das netzwerkbasierte Data-Warehouse-System den Beschneidungsindex, um eine reduzierte Scangruppe von Mikropartitionen zu identifizieren, die nur eine Untergruppe der Mikropartitionen der Quelltabelle umfasst, und nur die reduzierte Scangruppe von Mikropartitionen wird beim Ausführen der Abfrage gescannt.
-
Durch Verwenden eines Beschneidungsindexes zum Beschneiden bzw. Bereinigen der Gruppe von Mikropartitionen, die beim Ausführen einer Abfrage zu scannen sind, beschleunigt das netzwerkbasierte Data-Warehouse die Ausführung von Punktabfragen an großen Tabellen im Vergleich zu herkömmlichen Methoden. Ein Verwenden eines Beschneidungsindexes auf diese Weise garantiert auch einen konstanten Overhead für jedes Gleichheitsprädikat an der Tabelle. Zusätzliche Vorteile einer Verwendung von Beschneidungsindizes in Data-Warehouses enthalten, sind aber nicht darauf beschränkt, eine Fähigkeit, andere Arten von Prädikaten zu unterstützen, eine Fähigkeit, die Anzahl von unterschiedlichen Werten in einer Tabelle schnell zu berechnen, und die Fähigkeit, eine Verbindungs- bzw. Verknüpfungsbereinigung zu unterstützen.
-
1 stellt eine beispielhafte Rechenumgebung 100, die ein netzwerkbasiertes Data-Warehouse-System 102 in Kommunikation mit einer Speicherplattform 104 umfasst, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Um zu vermeiden, dass der erfinderische Gegenstand mit unnötigem Detail verdeckt wird, sind in 1 verschiedene funktionelle Komponenten weggelassen worden, die nicht geeignet sind, ein Verstehen des erfinderischen Gegenstands zu vermitteln. Ein Fachmann auf dem Gebiet wird jedoch leicht erkennen, dass verschiedene zusätzliche funktionelle Komponenten als Teil der Rechen- bzw. Computerumgebung 100 enthalten sein können, um eine zusätzliche Funktionalität zu ermöglichen, die hierin nicht spezifisch beschrieben ist.
-
Wie es gezeigt ist, umfasst die Computerumgebung 100 das netzwerkbasierte Data-Warehouse-System 102 und eine Speicherplattform 104 (z.B. AWS®, Microsoft Azure Blob Storage® oder Google Cloud Storage®). Das netzwerkbasierte Data-Warehouse-System 102 wird verwendet für ein Berichten und eine Analyse über integrierte Daten aus einer oder mehreren unterschiedlichen Quellen, die Speichervorrichtungen 106-1 bis 106-N enthalten, innerhalb der Speicherplattform 104. Die Speicherplattform 104 umfasst eine Vielzahl von Computer- bzw. Rechenmaschinen und stellt dem netzwerkbasierten Data-Warehouse-System 102 On-Demand-Computersystemressourcen wie Datenspeicherung und Rechenleistung zur Verfügung.
-
Das netzwerkbasierte Data-Warehouse-System 102 umfasst einen Computerservice-Manager 108, eine Ausführungsplattform 110 und eine Datenbank 114. Das netzwerkbasierte Data-Warehouse-System 102 hostet und stellt Datenberichts- und -analysedienste für mehrere Clientkonten bereit. Administrative Benutzer können Identitäten (z.B. Benutzer, Rollen und Gruppen) erstellen und verwalten bzw. managen und Berechtigungen verwenden, um einen Zugriff zu den Identitäten zu Ressourcen und Diensten zuzulassen oder zu verweigern.
-
Der Computerservice-Manager 108 koordiniert und managt Operationen des netzwerkbasierten Data-Warehouse-Systems 102. Der Computerservice-Manager 108 führt auch eine Abfrageoptimierung und -kompilierung sowie ein Managen von Clustern von Computerdiensten durch, die Computerressourcen (die auch als „virtuelle Lager“ bezeichnet sind) bereitstellen. Der Computerservice-Manager 108 kann irgendeine Anzahl von Clientkonten unterstützen, wie beispielsweise Endbenutzer, die Datenspeicherungs- und -abrufanforderungen bereitstellen, Systemadministratoren, die die hier beschriebenen Systeme und Verfahren managen, und andere Komponenten/Vorrichtungen, die mit dem Computerservice-Manager 108 interagieren.
-
Der Computerservice-Manager 108 ist auch mit einer Benutzervorrichtung 112 in Kommunikation. Die Benutzervorrichtung 112 entspricht einem Benutzer eines der mehreren Clientkonten, die vom netzwerkbasierten Data-Warehouse-System 102 unterstützt werden. Bei einigen Ausführungsformen empfängt der Computerservice-Manager 108 keinerlei direkte Kommunikation von der Benutzervorrichtung 112 und empfängt nur Kommunikationen in Bezug auf Jobs aus einer Warteschlange innerhalb des netzwerkbasierten Data-Warehouse-Systems 102.
-
Der Computerservice-Manager 108 ist auch mit der Datenbank 114 gekoppelt, die mit den in der Computerumgebung 100 gespeicherten Daten assoziiert ist. Die Datenbank 114 speichert Daten, die zu verschiedenen Funktionen und Aspekten gehören, die mit dem netzwerkbasierten Data-Warehouse-System 102 und seinen Benutzern assoziiert sind. Bei einigen Ausführungsformen enthält die Datenbank 114 eine Zusammenfassung von Daten, die in entfernten Datenspeichersystemen gespeichert sind, sowie Daten, die aus einem lokalen Cache verfügbar sind. Zusätzlich kann die Datenbank 114 Informationen diesbezüglich enthalten, wie Daten in entfernten Datenspeichersystemen (z.B. der Speicherplattform 104) und den lokalen Caches organisiert sind. Die Datenbank 114 lässt zu, dass Systeme und Dienste bestimmen, ob auf ein Datenstück zugegriffen werden muss, ohne die tatsächlichen Daten von einer Speichervorrichtung zu laden oder darauf zuzugreifen.
-
Zum Beispiel kann die Datenbank 114 einen oder mehrere Beschneidungsindizes enthalten. Der Computerservice-Manager 108 kann einen Beschneidungsindex für jede Quelltabelle generieren bzw. erzeugen, auf die von der Speicherplattform 104 aus zugegriffen wird, und einen Beschneidungsindex verwenden, um die Gruppe von Mikropartitionen einer Quelltabelle zu bereinigen bzw. zu beschneiden, um bei einem Ausführen einer Abfrage Daten zu scannen bzw. nach Daten zu suchen. Das heißt, dass der Computerservice-Manager 108 in Anbetracht einer Abfrage, die auf eine Quelltabelle gerichtet ist, die in eine Gruppe von Mikropartitionen organisiert ist, auf einen Beschneidungsindex aus der Datenbank 114 zugreifen und den Beschneidungsindex verwenden kann, um eine reduzierte Gruppe von Mikropartitionen zu identifizieren, die bei einem Ausführen der Abfrage zu scannen sind. Die Gruppe von Mikropartitionen, die bei einem Ausführen einer Abfrage zu scannen sind, kann hierin als „Scangruppe“ bezeichnet sein.
-
Bei einigen Ausführungsformen kann der Computerservice-Manager 108 bestimmen, dass ein Job durchgeführt werden sollte, und zwar basierend auf Daten aus der Datenbank 114. Bei solchen Ausführungsformen kann der Computerservice-Manager 108 die Daten scannen und bestimmen, dass ein Job durchgeführt werden sollte, um eine Datenorganisation oder eine Datenbankleistungsfähigkeit zu verbessern. Zum Beispiel kann der Computerservice-Manager 108 bestimmen, dass eine neue Version einer Quelltabelle erzeugt worden ist und der Beschneidungsindex nicht aufgefrischt bzw. aktualisiert worden ist, um die neue Version der Quelltabelle widerzuspiegeln bzw. zu berücksichtigen. Die Datenbank 114 kann einen Transaktionsänderungsnachverfolgungsstrom enthalten, der angibt, wann die neue Version der Quelltabelle erzeugt wurde und wann der Beschneidungsindex zuletzt aufgefrischt wurde. Basierend auf diesem Transaktionsstrom kann der Computerservice-Manager 108 bestimmen, dass ein Job durchgeführt werden sollte. Bei einigen Ausführungsformen bestimmt der Computerservice-Manager 108, dass ein Job durchgeführt werden sollte, basierend auf einem Auslöser- bzw. Triggerereignis und speichert den Job in einer Warteschlange, bis der Computerservice-Manager 108 bereit ist, die Ausführung des Jobs zu planen und zu managen. Bei einer Ausführungsform der Offenbarung bestimmt der Computerservice-Manager 108, ob eine Tabelle oder ein Beschneidungsindex neu gruppiert werden muss, basierend auf einem oder mehreren DML-Befehlen, die durchgeführt werden, wobei ein oder mehrere DML-Befehle das Triggerereignis bilden.
-
Der Computerservice-Manager 108 ist weiterhin mit der Ausführungsplattform 110 gekoppelt, die mehrere Computerressourcen bereitstellt, die verschiedene Datenspeicherungs- und Datenabrufaufgaben ausführen. Die Ausführungsplattform 110 ist mit einer Speicherplattform 104 der Speicherplattform 104 gekoppelt. Die Speicherplattform 104 umfasst mehrere Datenspeichervorrichtungen 106-1 bis 106-N. Bei einigen Ausführungsformen sind die Datenspeichervorrichtungen 106-1 bis 106-N cloudbasierte Speichervorrichtungen, die an einem oder mehreren geografischen Standorten angeordnet sind. Zum Beispiel können die Datenspeichervorrichtungen 106-1 bis 106-N Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur sein. Die Datenspeichervorrichtungen 106-1 bis 106-N können Festplattenlaufwerke (HDDs), Festkörperspeicher (SSDs), Speichercluster, Amazon S3TM-Speichersysteme oder andere Datenspeichertechnologien sein. Zusätzlich kann die Speicherplattform 104 verteilte Dateisysteme (z.B. Hadoop Distributed File Systems (HDFS)), Objektspeichersysteme und dergleichen enthalten.
-
Die Ausführungsplattform 110 umfasst eine Vielzahl von Rechenknoten. Eine Gruppe von Prozessen auf einem Rechenknoten führt einen vom Computerservice-Manager 108 kompilierten Abfrageplan aus. Die Gruppe von Prozessen kann folgendes enthalten: einen ersten Prozess, um den Abfrageplan auszuführen; einen zweiten Prozess, um Mikropartitionsdateien unter Verwendung einer LRU(Least Recently Used (= am längsten nicht verwendet))-Strategie zu überwachen und zu löschen und um einen OOM(Out of Memory (= kein Speicher mehr))-Fehlerminderungsprozess zu implementieren; einen dritten Prozess, der Gesundheitsinformation aus Prozessprotokollen und Statusinformation extrahiert, um sie zum Computerservice-Manager 108 zurückzusenden; einen vierten Prozess, um eine Kommunikation mit dem Computerservice-Manager 108 nach einem Systemstart herzustellen; und einen fünften Prozess, um die gesamte Kommunikation mit einem Computercluster für einen gegebenen Job zu handhaben, der vom Computerservice-Manager 108 bereitgestellt ist, und um Information zu dem Computerservice-Manager 108 und anderen Computing- bzw. Rechen- bzw. Computerknoten der Ausführungsplattform 110 zurück zu kommunizieren.
-
Bei einigen Ausführungsformen sind Kommunikationsverbindungen zwischen Elementen der Computerumgebung 100 über ein oder mehrere Datenkommunikationsnetzwerke implementiert. Diese Datenkommunikationsnetzwerke können irgendein Kommunikationsprotokoll und irgendeine Art von Kommunikationsmedium verwenden. Bei einigen Ausführungsformen sind die Datenkommunikationsnetzwerke eine Kombination von zwei oder mehr Datenkommunikationsnetzwerken (oder Unter- bzw. Teilnetzwerken), die miteinander gekoppelt sind. Bei alternativen Ausführungsformen werden diese Kommunikationsverbindungen unter Verwendung von irgendeiner Art von Kommunikationsmedium und irgendeinem Kommunikationsprotokoll implementiert.
-
Wie es in 1 gezeigt ist, sind die Datenspeichervorrichtungen 106-1 bis 106-N von den Computer- bzw. Rechenressourcen entkoppelt, die mit der Ausführungsplattform 110 assoziiert sind. Diese Architektur unterstützt dynamische Änderungen am netzwerkbasierten Data-Warehouse-System 102 basierend auf den sich ändernden Datenspeicherungs-/-abrufanforderungen sowie den sich ändernden Anforderungen der Benutzer und Systeme. Die Unterstützung dynamischer Änderungen lässt zu, dass sich das netzwerkbasierte Data-Warehouse-System 102 in Reaktion auf sich ändernde Anforderungen an die Systeme und Komponenten innerhalb des netzwerkbasierten Data-Warehouse-Systems 102 schnell skaliert. Die Entkopplung der Rechenressourcen von den Datenspeichervorrichtungen unterstützt die Speicherung von großen Datenmengen, ohne dass eine entsprechend große Menge an Rechenressourcen erforderlich ist. Gleichermaßen unterstützt diese Entkopplung von Ressourcen eine signifikante Erhöhung bezüglich der zu einem bestimmten Zeitpunkt verwendeten Rechenressourcen, ohne dass eine entsprechende Erhöhung bezüglich der verfügbaren Datenspeicherressourcen erforderlich ist.
-
Der Computerservice-Manager 108, die Datenbank 114, die Ausführungsplattform 110 und die Speicherplattform 104 sind in 1 als einzelne diskrete Komponenten dargestellt. Der Computerservice-Manager 108, die Datenbank 114, die Ausführungsplattform 110 und die Speicherplattform 104 können jedoch als verteiltes System implementiert werden (z.B. verteilt auf mehrere Systeme/Plattformen an mehreren geografischen Standorten). Zusätzlich kann jeweils der Computerservice-Manager 108, die Datenbank 114, die Ausführungsplattform 110 und die Speicherplattform 104 in Abhängigkeit von Änderungen der empfangenen Anforderungen und den sich ändernden Anforderungen des netzwerkbasierten Data-Warehouse-Systems 102 (unabhängig voneinander) nach oben oder unten skaliert werden. Somit ist das netzwerkbasierte Data-Warehouse-System 102 bei den beschriebenen Ausführungsformen dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Datenverarbeitungsanforderungen gerecht zu werden.
-
Während eines typischen Betriebs bzw. einer typischen Operation verarbeitet das netzwerkbasierte Data-Warehouse-System 102 mehrere vom Computerservice-Manager 108 bestimmte Jobs. Diese Jobs werden vom Computerservice-Manager 108 geplant und verwaltet bzw. gemanagt, um zu bestimmen, wann und wie der Job auszuführen ist. Zum Beispiel kann der Computerservice-Manager 108 den Job in mehrere diskrete Aufgaben aufteilen und kann bestimmen, welche Daten zum Ausführen einer jeweiligen der mehreren diskreten Aufgaben nötig sind. Der Computerservice-Manager 108 kann jede der mehreren diskreten Aufgaben einem oder mehreren Knoten der Ausführungsplattform 110 zuweisen bzw. zuordnen, um die Aufgabe zu verarbeiten. Der Computerservice-Manager 108 kann bestimmen, welche Daten zum Verarbeitung einer Aufgabe nötig sind, und weiterhin bestimmen, welche Knoten innerhalb der Ausführungsplattform 110 am besten geeignet für die Verarbeitung der Aufgabe sind. Einige Knoten haben möglicherweise bereits die zum Verarbeiten der Aufgabe erforderlichen Daten in einem Cache gespeichert bzw. zwischengespeichert und sind daher ein guter Kandidat zum Verarbeiten der Aufgabe. In der Datenbank 114 gespeicherte Metadaten helfen dem Computerservice-Manager 108 bei einem Bestimmen, welche Knoten in der Ausführungsplattform 110 bereits wenigstens einen Teilbereich der für die Verarbeitung der Aufgabe nötigen Daten in einem Cache gespeichert bzw. zwischengespeichert haben. Ein oder mehrere Knoten in der Ausführungsplattform 110 verarbeiten die Aufgabe unter Verwendung von durch die Knoten zwischengespeicherten Daten und, wenn es nötig ist, von durch die Speicherplattform 104 abgerufenen Daten. Es ist wünschenswert, so viele Daten wie möglich aus Caches innerhalb der Ausführungsplattform 110 abzurufen, da die Abrufgeschwindigkeit typischerweise viel schneller als ein Abrufen von Daten von der Speicherplattform 104 ist.
-
Wie es in 1 gezeigt ist, trennt die Computer- bzw. Rechenumgebung 100 die Ausführungsplattform 110 von der Speicherplattform 104. Bei dieser Anordnung arbeiten die Verarbeitungsressourcen und Cacheressourcen in der Ausführungsplattform 110 unabhängig von den Datenspeichervorrichtungen 106-1 bis 106-N in der Speicherplattform 104. Somit sind die Rechenressourcen und Cacheressourcen nicht auf spezifische Datenspeichervorrichtungen 106-1 bis 106-N beschränkt. Stattdessen können alle Computerressourcen und alle Cacheressourcen Daten von irgendeiner der Datenspeicherressourcen in der Speicherplattform 104 abrufen und Daten zu dieser speichern.
-
2 ist ein Blockdiagramm, das Komponenten des Computerservice-Managers 108 gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Wie es in 2 gezeigt ist, enthält der Computerservice-Manager 108 einen Zugriffsmanager 202 und einen Schlüsselmanager 204, die mit einer Datenspeichervorrichtung 206 gekoppelt sind. Der Zugriffsmanager 202 handhabt Authentifizierungs- und Autorisierungsaufgaben für die hierin beschriebenen Systeme. Der Schlüsselmanager 204 managt eine Speicherung und Authentifizierung von während Authentifizierungs- und Autorisierungsaufgaben verwendeten Schlüsseln. Zum Beispiel managen der Zugriffsmanager 202 und der Schlüsselmanager 204 die Schlüssel, die für einen Zugriff auf Daten verwendet werden, die in entfernten Speichervorrichtungen (z.B. Datenspeichervorrichtungen in der Speicherplattform 104) gespeichert sind. Wie es hierin verwendet ist, können die entfernten Speichervorrichtungen auch als „persistente Speichervorrichtungen“ oder „gemeinsam genutzte bzw. geteilte Speichervorrichtungen“ bezeichnet werden.
-
Ein Anforderungsverarbeitungsdienst 208 managt empfangene Datenspeicheranforderungen und Datenabrufanforderungen (z.B. für Datenbankdaten durchzuführende Jobs). Zum Beispiel kann der Anforderungsverarbeitungsdienst 208 die Daten bestimmen, die zur Verarbeitung einer empfangenen Anfrage (z.B. einer Datenspeicheranforderung oder einer Datenabrufanforderung) nötig sind. Die Daten können in einem Cache innerhalb der Ausführungsplattform 110 oder in einer Datenspeichervorrichtung in der Speicherplattform 104 gespeichert werden.
-
Ein Managementkonsolendienst 210 unterstützt einen Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager. Zusätzlich kann der Managementkonsolendienst 210 eine Anforderung zum Ausführen eines Jobs und zum Überwachen der Arbeitsauslastung auf dem System empfangen.
-
Der Computerservice-Manager 108 enthält auch einen Job-Compiler 212, einen Job-Optimierer 214 und einen Job-Ausführer 216. Der Job-Compiler 212 analysiert bzw. zerlegt bzw. parst einen Job in mehrere diskrete Aufgaben und generiert bzw. erzeugt den Ausführungscode für jede der mehreren diskreten Aufgaben. Der Job-Optimierer 214 bestimmt das beste Verfahren zum Ausführen der mehreren diskreten Aufgaben basierend auf den zu verarbeitenden Daten. Der Job-Optimierer 214 handhabt auch verschiedene Datenbereinigungsoperationen und andere Datenoptimierungstechniken, um die Geschwindigkeit und Effizienz eines Ausführens des Jobs zu verbessern. Der Job-Ausführer 216 führt den Ausführungscode für aus einer Warteschlange empfangene oder vom Computerservice-Manager 108 bestimmte Jobs aus.
-
Ein Job-Planer und -Koordinator 218 sendet empfangene Jobs zur Kompilierung, Optimierung und zur Abfertigung zur Ausführungsplattform 110 zu den geeigneten Diensten oder Systemen. Zum Beispiel können Jobs priorisiert und in dieser priorisierten Reihenfolge verarbeitet werden. Bei einer Ausführungsform bestimmt der Job-Planer und -Koordinator 218 eine Priorität für interne Jobs, die vom Computerservice-Manager 108 geplant sind, mit anderen „externen“ Jobs, wie beispielsweise Benutzerabfragen, die von anderen Systemen in der Datenbank geplant sein können, aber dieselben Verarbeitungsressourcen in der Ausführungsplattform 110 verwenden können. Bei einigen Ausführungsformen identifiziert der Job-Planer und -Koordinator 218 bestimmte Knoten in der Ausführungsplattform 110 oder weist sie zu, um bestimmte Aufgaben zu verarbeiten. Ein Manager für ein virtuelles Lager 220 managt den Betrieb bzw. die Operation mehrerer virtueller Lager, die in der Ausführungsplattform 110 implementiert sind. Wie es nachstehend diskutiert wird, enthält jedes virtuelle Lager mehrere Ausführungsknoten, die jeweils einen Cache und einen Prozessor enthalten.
-
Zusätzlich enthält der Computerservice-Manager 108 einen Konfigurations- und Metadatenmanager 222, der die Informationen in Bezug auf die Datenmanagt, die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches (z.B. den Caches in der Ausführungsplattform 110) gespeichert sind. Der Konfigurations- und Metadatenmanager 222 verwendet die Metadaten, um zu bestimmen, auf welche Daten-Mikropartitionen zugegriffen werden muss, um Daten zum Verarbeiten einer bestimmten Aufgabe oder eines bestimmten Jobs abzurufen. Ein Überwachungs- und ein Arbeitslast-Analysierer 224 überwacht die vom Computerservice-Manager 108 durchgeführten Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitslast) quer über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform 110. Der Überwachungs- und Arbeitslast-Analysierer 224 verteilt Aufgaben auch neu, wie es nötig ist bzw. nach Bedarf, und zwar basierend auf sich ändernden Arbeitslasten im gesamten netzwerkbasierten Data-Warehouse-System 102, und kann weiterhin Aufgaben basierend auf einer Benutzerabfrage-Arbeitslast (z.B. „extern“) verteilen, die auch von der Ausführungsplattform 110 verarbeitet werden kann. Der Konfigurations- und Metadatenmanager 222 sowie der Überwachungs- und Arbeitslast-Analysierer 224 sind mit einer Datenspeichervorrichtung 226 gekoppelt. Die Datenspeichervorrichtung 226 in 2 stellt irgendeine Datenspeichervorrichtung innerhalb des netzwerkbasierten Data-Warehouse-Systems 102 dar. Zum Beispiel kann die Datenspeichervorrichtung 226 Caches in der Ausführungsplattform 110, Speichervorrichtungen in der Speicherplattform 104 oder eine andere Speichervorrichtung darstellen.
-
Wie es gezeigt ist, enthält der Computerservice-Manager 108 weiterhin einen Beschneidungsindexgenerator 228. Der Beschneidungsindexgenerator 228 ist für die Generierung bzw. Erzeugung von Beschneidungsindizes verantwortlich, die in Bereinigungs- bzw. Beschneidungs-Scangruppen für Abfragen verwendet werden, die zu Tabellen gerichtet sind, die auf der Speicherplattform 104 gespeichert sind. Jeder Beschneidungsindex besteht aus einer Gruppe von Filtern (z.B. blockierte Bloom-Filter, Bloom-Filter, Hash-Filter oder Cuckoo-Filter), die eine Existenz eindeutiger Werte in jeder Spalte einer Quelltabelle codieren. Der Beschneidungsindexgenerator 228 generiert ein Filter für jede Mikropartition einer Quelltabelle, und jedes Filter gibt an, ob Daten, die einer Abfrage entsprechen, potenziell auf einer bestimmten Mikropartition der Quelltabelle gespeichert sind. Weitere Details zur Generierung von Beschneidungsindizes werden nachstehend diskutiert.
-
3 ist ein Blockdiagramm, das Komponenten der Ausführungsplattform 110 gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Wie es in 3 gezeigt ist, enthält die Ausführungsplattform 110 mehrere virtuelle Lager, einschließlich eines virtuellen Lagers 1, eines virtuellen Lagers 2 und eines virtuellen Lagers n. Jedes virtuelle Lager enthält mehrere Ausführungsknoten, die jeweils einen Datencache und einen Prozessor enthalten. Die virtuellen Lager können mehrere Aufgaben parallel ausführen, indem sie die mehreren Ausführungsknoten verwenden. Wie es hierin diskutiert ist, kann die Ausführungsplattform 110 neue virtuelle Lager hinzufügen und vorhandene virtuelle Lager fallenlassen, und zwar in Echtzeit, basierend auf den aktuellen Verarbeitungsanforderungen der Systeme und Benutzer. Diese Flexibilität lässt zu, dass die Ausführungsplattform 110, wenn es nötig ist, schnell große Mengen an Rechenressourcen einsetzt, ohne dazu gezwungen zu sein, weiterhin für diese Rechenressourcen zu bezahlen, wenn sie nicht mehr benötigt werden. Alle virtuellen Lager können auf Daten von irgendeiner Datenspeichervorrichtung (z.B. irgendeiner Speichervorrichtung in der Speicherplattform 104) zugreifen.
-
Obwohl jedes in gezeigte virtuelle Lager drei Ausführungsknoten enthält, kann ein bestimmtes virtuelles Lager irgendeine Anzahl von Ausführungsknoten enthalten. Weiterhin ist die Anzahl von Ausführungsknoten in einem virtuellen Lager dynamisch, so dass neue Ausführungsknoten erstellt werden, wenn zusätzlicher Bedarf vorhanden ist, und vorhandene Ausführungsknoten gelöscht werden, wenn sie nicht mehr benötigt werden.
-
Jedes virtuelle Lager ist in der Lage, auf irgendeine der in 1 gezeigten Datenspeichervorrichtungen 106-1 bis 106-N zuzugreifen. Somit sind die virtuellen Lager nicht notwendigerweise einer spezifischen Datenspeichervorrichtung 106-1 bis 106-n zugeordnet und können stattdessen auf Daten von irgendeiner der Datenspeichervorrichtungen 106-1 bis 106-N innerhalb der Speicherplattform 104 zugreifen. Gleichermaßen kann jeder der in 3 gezeigten Ausführungsknoten auf Daten von irgendeiner der Datenspeichervorrichtungen 106-1 bis 106-N zugreifen. Bei einigen Ausführungsformen kann ein bestimmtes virtuelles Warehouse oder ein bestimmter Ausführungsknoten temporär einer spezifischen Datenspeichervorrichtung zugewiesen bzw. zugeordnet sein, aber das virtuelle Lager oder der Ausführungsknoten kann später auf Daten von irgendeiner anderen Datenspeichervorrichtung zugreifen.
-
Bei dem Beispiel von 3 enthält das virtuelle Lager 1 drei Ausführungsknoten 302-1, 302-2 und 302-n. Der Ausführungsknoten 302-1 enthält einen Cache 304-1 und einen Prozessor 306-1. Der Ausführungsknoten 302-2 enthält einen Cache 304-2 und einen Prozessor 306-2. Der Ausführungsknoten 302-n enthält einen Cache 304-n und einen Prozessor 306-n. Jeder Ausführungsknoten 302-1, 302-2 und 302-n ist mit einer Verarbeitung von einer oder mehreren Datenspeicherungs- und/oder Datenabrufaufgaben assoziiert. Zum Beispiel kann ein virtuelles Lager Datenspeicherungs- und Datenabrufaufgaben handhaben, die mit einem internen Dienst assoziiert sind, wie beispielsweise einem Clusterdienst, einem Auffrisch- bzw. Aktualisierungsdienst für materialisierte Ansichten, einem Dateikomprimierungsdienst, einem Speicherungsprozedurdienst oder einem Datei-Upgradedienst. Bei anderen Implementierungen kann ein bestimmtes virtuelles Lager Datenspeicherungs- und Datenabrufaufgaben handhaben, die mit einem bestimmten Datenspeichersystem oder einer bestimmten Datenkategorie assoziiert sind.
-
Ähnlich dem oben diskutierten virtuellen Lager 1 enthält das virtuelle Lager 2 drei Ausführungsknoten 312-1, 312-2 und 312-n. Der Ausführungsknoten 312-1 enthält einen Cache 314-1 und einen Prozessor 316-1. Der Ausführungsknoten 312-2 enthält einen Cache 314-2 und einen Prozessor 316-2. Der Ausführungsknoten 312-n enthält einen Cache 314-n und einen Prozessor 316-n. Zusätzlich enthält das virtuelle Lager 3 drei Ausführungsknoten 322-1, 322-2 und 322-n. Der Ausführungsknoten 322-1 enthält einen Cache 324-1 und einen Prozessor 326-1. Der Ausführungsknoten 322-2 enthält einen Cache 324-2 und einen Prozessor 326-2. Der Ausführungsknoten 322-n enthält einen Cache 324-n und einen Prozessor 326-n.
-
Bei einigen Ausführungsformen sind die in 3 gezeigten Ausführungsknoten zustandslos in Bezug auf die Daten, die die Ausführungsknoten zwischenspeichern. Zum Beispiel speichern diese Ausführungsknoten Zustandsinformationen über den Ausführungsknoten oder die Daten, die von einem bestimmten Ausführungsknoten zwischengespeichert sind, nicht oder behalten sie auf andere Weise bei. Somit kann im Falle eines Ausführungsknotenausfalls bzw. -fehlers der ausgefallene Knoten transparent durch einen anderen Knoten ersetzt werden. Da es keine mit dem fehlerhaften Ausführungsknoten assoziierte Zustandsinformationen gibt, kann der neue (Ersatz-)Ausführungsknoten den ausgefallenen Knoten auf einfache Weise ersetzen, ohne sich um eine Neuerstellung eines bestimmten Zustands kümmern zu müssen.
-
Obwohl die in 3 gezeigten Ausführungsknoten jeweils einen Datencache und einen Prozessor enthalten, können alternative Ausführungsformen Ausführungsknoten enthalten, die irgendeine Anzahl von Prozessoren und irgendeine Anzahl von Caches enthalten. Zusätzlich können die Caches bezüglich einer Größe unter den verschiedenen Ausführungsknoten variieren. Die in 3 gezeigten Caches speichern im lokalen Ausführungsknoten Daten, die aus einer oder mehreren Datenspeichervorrichtungen in der Speicherplattform 104 abgerufen wurden. Somit reduzieren oder eliminieren die Caches die Engpassprobleme, die bei Plattformen auftreten, die konsistent Daten aus entfernten Speichersystemen abrufen. Anstatt eines wiederholten Zugreifens auf Daten von den entfernten Speichervorrichtungen, greifen die hierin beschriebenen Systeme und Verfahren auf Daten aus den Caches in den Ausführungsknoten zu, was signifikant schneller ist und das oben diskutierte Engpassproblem vermeidet. Bei einigen Ausführungsformen werden die Caches unter Verwendung von Hochgeschwindigkeitsspeichervorrichtungen implementiert, die einen schnellen Zugriff auf die im Cache gespeicherten bzw. zwischengespeicherten Daten bereitstellen. Jeder Cache kann Daten von irgendeiner der Speichervorrichtungen in der Speicherplattform 104 speichern.
-
Weiterhin können die Cacheressourcen und Rechenressourcen zwischen unterschiedlichen Ausführungsknoten variieren. Zum Beispiel kann ein Ausführungsknoten signifikante Rechenressourcen und minimale Cacheressourcen enthalten, was den Ausführungsknoten für Aufgaben nützlich macht, die signifikante Rechenressourcen erfordern. Ein weiterer Ausführungsknoten kann signifikante Cacheressourcen und minimale Rechenressourcen enthalten, was diesen Ausführungsknoten für Aufgaben nützlich macht, die ein Speichern im Cache bzw. Zwischenspeichern großer Datenmengen erfordern. Ein noch weiterer Ausführungsknoten kann Cacheressourcen enthalten, die schnellere Eingabe-Ausgabe-Operationen bereitstellen, die für Aufgaben nützlich sind, die ein schnelles Scannen großer Datenmengen erfordern. Bei einigen Ausführungsformen werden die mit einem bestimmten Ausführungsknoten assoziierten Cacheressourcen und Rechenressourcen beim Erstellen des Ausführungsknotens basierend auf den erwarteten Aufgaben bestimmt, die vom Ausführungsknoten auszuführen sind.
-
Zusätzlich können sich die Cacheressourcen und Computer- bzw. Rechenressourcen, die mit einem bestimmten Ausführungsknoten assoziiert sind, im Laufe der Zeit basierend auf sich ändernden vom Ausführungsknoten durchgeführten Aufgaben ändern. Zum Beispiel können einem Ausführungsknoten mehr Verarbeitungsressourcen zugewiesen werden, wenn die vom Ausführungsknoten durchgeführten Aufgaben prozessorintensiver werden, gleichermaßen können einem Ausführungsknoten mehr Cacheressourcen zugewiesen werden, wenn die vom Ausführungsknoten durchgeführten Aufgaben eine größere Cachekapazität erfordern.
-
Obwohl die virtuellen Lager 1, 2 und n mit derselben Ausführungsplattform 110 assoziiert sind, können die virtuellen Lager unter Verwendung mehrerer Computersysteme an mehreren geografischen Standorten implementiert sein. Zum Beispiel kann das virtuelle Lager 1 von einem Computersystem an einem ersten geografischen Standort implementiert sein, während die virtuellen Lager 2 und n von einem anderen Computersystem an einem zweiten geografischen Standort implementiert sind. Bei einigen Ausführungsformen sind diese verschiedenen Computersysteme cloudbasierte Computersysteme, die von einer oder mehreren unterschiedlichen Entitäten unterhalten werden.
-
Zusätzlich ist jedes virtuelle Lager in 3 derart gezeigt, dass es mehrere Ausführungsknoten hat. Die mehreren Ausführungsknoten, die mit jedem virtuellen Lager assoziiert sind, können unter Verwendung mehrerer Computersysteme an mehreren geografischen Standorten implementiert werden. Zum Beispiel implementiert eine Instanz vom virtuellen Lager 1 die Ausführungsknoten 302-1 und 302-2 auf einer Computerplattform an einem geografischen Standort und implementiert den Ausführungsknoten 302-n auf einer anderen Computerplattform an einem anderen geografischen Standort. Ein Auswählen bestimmter Computersysteme zum Implementieren eines Ausführungsknotens kann von verschiedenen Faktoren abhängen, wie beispielsweise der Ebene von Ressourcen, die für einen bestimmten Ausführungsknoten benötigt werden (z.B. Verarbeitungsressourcenanforderungen und Cacheanforderungen), den Ressourcen, die bei bestimmten Computersystemen verfügbar sind, den Kommunikationsfähigkeiten von Netzwerken innerhalb eines geografischen Standorts oder zwischen geografischen Standorten und welche Computersysteme bereits andere Ausführungsknoten im virtuellen Lager implementieren.
-
Die Ausführungsplattform 110 ist auch fehlertolerant. Wenn zum Beispiel ein virtuelles Lager ausfällt, wird dieses virtuelle Lager schnell durch ein anderes virtuelles Lager an einem anderen geografischen Standort ersetzt.
-
Eine bestimmte Ausführungsplattform 110 kann irgendeine Anzahl von virtuellen Lagern enthalten. Zusätzlich ist die Anzahl von virtuellen Lagern in einer bestimmten Ausführungsplattform dynamisch, so dass neue virtuelle Lager erstellt werden, wenn zusätzliche Verarbeitungs- und/oder Cachespeicherungs-Ressourcen benötigt werden. Gleichermaßen können existierende virtuelle Lager gelöscht werden, wenn die mit dem virtuellen Lager assoziierten Ressourcen nicht mehr benötigt werden.
-
Bei einigen Ausführungsformen können die virtuellen Lager in der Speicherplattform 104 an denselben Daten arbeiten, aber jedes virtuelle Lager hat seine eigenen Ausführungsknoten mit unabhängigen Verarbeitungs- und Cachespeicherungs-Ressourcen. Diese Konfiguration lässt zu, dass Anforderungen auf verschiedenen virtuellen Lagern unabhängig und ohne Interferenz zwischen den Anforderungen verarbeitet werden. Diese unabhängige Verarbeitung, kombiniert mit der Fähigkeit, virtuelle Lager dynamisch hinzuzufügen und zu entfernen, unterstützt das Hinzufügen neuer Verarbeitungskapazität für neue Benutzer, ohne die von den vorhandenen Benutzern beobachtete Leistungsfähigkeit zu beeinträchtigen.
-
4 ist ein konzeptionelles Diagramm, das die Generierung bzw. Erzeugung eines Filters 400, das Teil eines vom netzwerkbasierten Data-Warehouse-System 102 erzeugten Beschneidungsindex ist, basierend auf einer Quelltabelle 402 gemäß einigen beispielhaften Ausführungsformen darstellt. Wie es gezeigt ist, ist die Quelltabelle 402 in mehrere Mikropartitionen organisiert und umfasst jede Mikropartition mehrere Spalten, in denen Werte gespeichert werden.
-
Bei einem Erzeugen eines Beschneidungsindex erzeugt der Computerservice-Manager 108 ein Filter für jede Mikropartition der Quelltabelle 402, wovon ein Beispiel in 4 als blockiertes Bloom-Filter 400 dargestellt ist. Das blockierte Bloom-Filter 400 umfasst mehrere Bloom-Filter und codiert das Vorhandensein unterschiedlicher Werte in jeder Spalte der entsprechenden Mikropartition. Wenn eher eine Abfrage empfangen wird, die ein Gleichheitsprädikat enthält, als dass die gesamte Quelltabelle 402 gescannt wird, um das Gleichheitsprädikat auszuwerten, untersucht das netzwerkbasierte Data-Warehouse-System 102 den Beschneidungsindex, um eine reduzierte Scangruppe von Mikropartitionen zu identifizieren, die nur eine Untergruppe der Mikropartitionen der Quelltabelle 402 umfasst.
-
Wie es gezeigt ist, wird das blockierte Bloom-Filter 400 in N Bloom-Filter zerlegt, die als einzelne Spalten des Beschneidungsindex gespeichert sind, um spaltenförmige Scans auszunutzen. Bei einem Erzeugen bzw. Generieren des blockierten Bloom-Filters 400 für eine bestimmte Mikropartition der Quelltabelle 402 werden gespeicherte Werte in Bitpositionen in den Bloom-Filtern transformiert. Zum Beispiel kann ein Satz von Hash-Werten aus gespeicherten Werten in jeder Spalte der Mikropartition generiert werden und kann der Satz von Hash-Werten verwendet werden, um Bits in den Bloom-Filtern einzustellen bzw. festzulegen.
-
Die Anzahl von eindeutigen Werten über alle Spalten in einer Mikropartition hinweg wird durch eine maximale Größe der Mikropartition begrenzt. Als Beispiel ist die Summe der Anzahl von eindeutigen Werten für alle Spalten im schlimmsten Fall für eine 16-MB-Partition höchstens 4 Millionen (16 MB/4 Bytes). Demgemäß wird, um einen Zugriff auf den Beschneidungsindex so effizient wie möglich zu gestalten, jedes Bloom-Filter 400 in eine feste Anzahl von Stücken auf der Domäne bzw. dem Bereich der Hash-Werte geschnitten (z.B. basierend auf der Anzahl von eindeutigen Werten pro Partition) und wird jedes Bloom-Filter 400 weiterhin in eine feste Anzahl von M-Bit (z.B. 64 Bit) Werten zerlegt. Jede Zeile des blockierten Bloom-Filters 400 wird codiert und als einzelne Zeile im Beschneidungsindex gespeichert. Jedes Bloom-Filter 400 wird im Beschneidungsindex als zweidimensionales Feld dargestellt, das durch die Hash-Werte der gespeicherten Spaltenwerte indiziert wird.
-
5 stellt einen Teilbereich eines beispielhaften Beschneidungsindex 500 gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Der Beschneidungsindex 500 ist in mehrere Zeilen und Spalten organisiert. Die Spalten des Beschneidungsindex 500 umfassen eine Partitionsnummer 502, eine Schnittnummer 504, die ein Codieren des Bereichs der Hash-Werte bereitstellt, einen Zusammenfassungstyp 506, eine Hash-Nummer 508 und ein blockiertes Bloom-Filter 510 (z.B. das blockierte Bloom-Filter 400), das in N numerische Spalten zerlegt wird, wobei jede Spalte im blockierten Bloom-Filter 510 ein Bloom-Filter darstellt.
-
Innerhalb jeder Zeile ist eine Mikropartitionsnummer oder ein anderer Identifizierer in der Partitionsnummer 502 enthalten, eine Schnittnummer ist in der Spalte Schnittnummer 504 enthalten, ein Indikator eines Zusammenfassungstyps wird in der Spalte Zusammenfassungstyp 506 gespeichert und eine Zahl, die der Anzahl von Hash-Funktionen entspricht, die zum Erstellen der Bloom-Filter verwendet werden, wird in der Spalte Hash-Nummer 508 gespeichert. Jede Schnittnummer 504 in der Spalte Schnittnummer umfasst eine Kombination aus Ebene bzw. Schicht und Blocknummer. Die Schicht bzw. Ebene gibt die Anzahl der Schnitte bzw. Scheiben des Bloom-Filters 510 und die Blocknummer die Position des Schnitts in einem bestimmten Bloom-Filter 510 (z.B. in der Bloom-Filterspalte) an. Die Anzahl der Hash-Funktionen kann so eingestellt werden, dass die Falsch-Positiv-Rate des Beschneidungsindex 500 gesteuert wird.
-
Die Kosten in Bezug auf die Rechenressourcen für den Zugriff auf einen Beschneidungsindex werden hauptsächlich durch die Größe des Index begrenzt, und daher ist es von Vorteil, die Gesamtgröße des Beschneidungsindex zu minimieren. Zu diesem Zweck kann der Computerservice-Manager 108 die Anzahl der pro Mikropartition berechneten Schnitte bzw. Scheiben reduzieren. Die erste Partitionierungsebene des Beschneidungsindexes wird ausgeführt, um die Domäne bzw. den Bereich der Hash-Werte darzustellen. Auf der einen Seite kann ein Bloom-Filter den gesamten Bereich der Hash-Werte abdecken (wobei das Bloom-Filter eine einzelne Scheibe bzw. einen einzelnen Schnitt umfasst) und im anderen Extrem kann ein Bloom-Filter in ein beliebiges Maximum von Scheiben aufgeteilt werden (z.B. 4096). Diese Entscheidung wird durch die Anzahl an eindeutigen Werten in der Quelltabelle parametrisiert, da ein einzelner Schnitt des Beschneidungsindexes nur eine begrenzte Anzahl von eindeutigen Werten darstellen kann.
-
Die Anzahl von eindeutigen Werte wirkt sich erheblich auf die Kosten des Clusterns aus, da sie die Anzahl der für eine bestimmte Mikropartition generierten Zeiten steuert. Zum Beispiel hätte eine Mikropartition mit einer kleinen Anzahl von eindeutigen Werten (z.B. 3) einen einzelnen Schnitt, während eine Mikropartition mit einer großen Anzahl von eindeutigen Werten (z.B. 1 Million) die maximale Anzahl von Schnitten haben kann. Im Allgemeinen bestimmt die maximale Anzahl von eindeutigen Werten die maximale Anzahl der zu codierenden Schnitte. Demgemäß verwendet der Computerservice-Manager 108 bei einigen Ausführungsformen einen ersten Teil des Hash-Werts (z.B. die 16 höheren Bits) für die Ebene und einen zweiten Teil des Hash-Werts (z.B. die 16 unteren Bits) für die Adressierung.
-
Zu diesem Zweck sind Blöcke innerhalb des Beschneidungsindex 500 in einer Hierarchie organisiert, die die Ebene bzw. Schicht bzw. den Grad der Zerlegung der Domäne von Werten codiert. Als Beispiel hierfür zeigt 6 ein einzelnes Bloom-Filter 600 eines Beschneidungsindex. Bei dem in 6 dargestellten Beispiel ist das Bloom-Filter 600 2048 Byte groß und kann 64 verschiedene Werte mit einer Falsch-Positiv-Rate von 1/1.000.0000 darstellen. Wenn die entsprechende Mikropartition der Quelltabelle mehr als 64 verschiedene Werte enthält, würde sich die Falsch-Positiv-Rate verschlechtern, sobald die Dichte des Bloom-Filters größer als 1/2 ist (z.B. werden mehr Bits gesetzt als Bits nicht gesetzt). Um dieses Problem zu beheben, kann der Computerservice-Manager 108 bei einigen Ausführungsformen zwei Bloom-Filter (Bloom-Filter 602 und 604) mit einem Bloom-Filter für jede Hälfte der Domäne erstellen.
-
Jedes der Bloom-Filter 602 und 604 wird durch zwei Zeilen im Beschneidungsindex dargestellt, die durch ihre Ebene bzw. Schicht und Schnittnummer identifiziert werden. In Übereinstimmung mit einigen Ausführungsformen werden ein bestimmter Wert und der entsprechende Hash-Wert einem einzelnen der Blöcke über alle Mikropartitionen der Quelltabelle hinweg zugeordnet. Unabhängig von der Ebene codiert ein Bit eine feste Teilmenge der Domäne.
-
Jede Schnittnummer umfasst eine Kombination aus einer Ebenennummer und einer Blocknummer. Die Ebenen- und die Blocknummer können bei einigen Ausführungsformen als zwei verschiedene Spalten dargestellt werden, während bei anderen Ausführungsformen ein Linearisierungsprozess beim Clustern verwendet wird, um diese Werte zu kombinieren, um die Schnittnummer auszubilden.
-
Bei einigen Ausführungsformen kann die Anzahl der pro Bloom-Filter zu berechnenden Hash-Funktionen variiert werden, um die Leistung zu verbessern. Diese Optimierung kann die CPU-Kosten für die Erstellung des Beschneidungsindex senken und gleichzeitig eine Ziel-Falsch-Positiv-Rate für extrem große Tabellen beibehalten. Demgemäß kann ein Benutzer bei einigen Ausführungsformen eine Ziel-Falsch-Positiv-Rate angeben und kann der Computerservice-Manager 108 die Anzahl der pro Bloom-Filter zu berechnenden Hash-Funktionen sowie die Ebene basierend auf der Ziel-Falsch-Positiv-Rate bestimmen.
-
7 ist ein konzeptionelles Diagramm, das weitere Einzelheiten zur Erstellung eines Beschneidungsindex gemäß einigen Ausführungsformen darstellt. Die Erstellung eines Filters (z.B. eines blockierten Bloom-Filters) wird von einem spezialisierten Operator innerhalb des Computerservice-Managers 108 durchgeführt, der die Gruppe von Zeilen des Beschneidungsindexes berechnet. Dieser Operator ruft alle Spalten einer bestimmten Mikropartition einer Quelltabelle ab und füllt das Filter für diese Mikropartition auf.
-
Wenn die Gesamtzahl der eindeutigen Werte in der Quelltabelle unbekannt ist, weist der Computerservice-Manager 108 dem Beschneidungsindex die maximale Anzahl von Ebenen zu, füllt jedes Filter auf und wendet dann eine Konsolidierungsphase an, um die verschiedenen Filter in einer endgültigen Darstellung des Beschneidungsindex zusammenzuführen. Der Speicher, der zur Berechnung dieser Informationen pro Mikropartition zugewiesen wird, ist konstant. Bei dem in 7 dargestellten Beispiel ist der Speicher, der zur Berechnung dieser Informationen zugewiesen ist, ein zweidimensionales Feld von 64-Bit-Ganzzahlen ohne Vorzeichen. Die erste Dimension wird durch die Ebene indiziert (maximale Anzahl von Ebenen) und die zweite Dimension wird durch die Anzahl von Bloom-Filtern indiziert (z.B. 32). Da jede Partition von einem einzelnen Thread verarbeitet wird, wird der Gesamtspeicher durch die Anzahl von Threads (z.B. 8) und die maximale Ebene der Ebenen begrenzt.
-
Der folgende Pseudocodeausschnitt stellt einen beispielhaften Algorithmus dar, der vom Computerservice-Manager 108 beim Erzeugen eines Beschneidungsindexes ausgeführt werden kann, der mit einigen Ausführungsformen konsistent ist.
- • Wenn es sich um eine neue Partition handelt:
- • Für jede Spalte ist folgendes durchzuführen:
- ◯ Berechnen eines 32-Bit-Hash-Werts H für jeden Wert der Spalte
- ◯ Berechnen der Ebene L unter Verwendung der 16 hohen Bits, L = H » 16
- ◯ Berechnen des Filters bei der Position P = H & (32-1)
- ◯ Wenn das Bloom-Filter den Wert nicht enthält,
- ▪ Erhöhen der Anzahl von eindeutigen Werten
-
Wie es in 7 gezeigt ist, kombiniert der Computerservice-Manager 108 an jeder Partitionsgrenze Blöcke basierend auf einer Ziel-Bloom-Filterdichte. Zum Beispiel kann der Computerservice-Manager 108 Blöcke so kombinieren, dass die Bloom-Filterdichte nicht mehr als die Hälfte beträgt. Da die Domäne der Hash-Werte einheitlich ist, kann dies inkrementell oder global basierend auf der oben berechneten beobachteten Anzahl von eindeutigen Werten erfolgen.
-
Wenn die Anzahl von eindeutigen Werte bekannt ist, bestimmt der Computerservice-Manager 108 die Anzahl von Ebenen für den Beschneidungsindex, indem er die maximale Anzahl von eindeutigen Werte durch die Anzahl von eindeutigen Werten pro Ebene dividiert. Um zwei Ebenen zu kombinieren, führt der Computerservice-Manager 108 ein logisches ODER für alle ganzen Zahlen aus, die das Filter darstellen.
-
Aus Leistungsfähigkeitsgründen kombinieren die Filterfunktionen (Erstellen und Prüfen) zwei Hash-Funktionen (z.B. zwei 32-Bit-Hash-Funktionen). Sowohl die Hash-Funktionsberechnung als auch die Filterableitung müssen sowohl auf der Ausführungsplattform 110 als auch auf dem Computerservice-Manager 108 identisch sein, um eine Bereinigung im Computerservice-Manager 108 und in der Initialisierung der Scangruppe in der Ausführungsplattform 110 zu ermöglichen.
-
8 ist ein konzeptionelles Diagramm, das die Beibehaltung bzw. Aufrechterhaltung eines Beschneidungsindex auf der Grundlage von Änderungen an einer Quelltabelle gemäß einigen Ausführungsformen darstellt. Wie es gezeigt ist, wird bei 800 eine Änderung an einer Quelltabelle vorgenommen (z.B. Hinzufügen einer oder mehrerer Zeilen oder Spalten). Die Änderung an der Quelltabelle löst bei 802 die Generierung zusätzlicher Zeilen im Beschneidungsindex für jede geänderte oder neue Mikropartition der Quelltabelle aus. In regelmäßigen Abständen werden die neu erzeugten Zeilen im Beschneidungsindex auf der Scheiben- bzw. Schnittnummer bei 804 neu gruppiert.
-
Der Computerservice-Manager 108 verwendet einen deterministischen Auswahlalgorithmus als Teil des Clusterns des Bescheidungsindex. Bei der Verarbeitung jeder Mikropartition in der Quelltabelle wird eine begrenzte (und meist konstante) Anzahl von Zeilen erstellt, die auf der Anzahl der eindeutigen Werte in der Quellmikropartition basiert. Konstruktionsgemäß sind diese Zeilen als eindeutig bekannt, und die Indexdomäne überlappt sich für diese Partition nicht und überlappt vollständig mit bereits gruppierten Indexzeilen. Um die Kosten für das Clustern zu minimieren, verzögert der Computerservice-Manager 108 das erneute Clustern von Zeilen, bis eine Schwellenwertanzahl von Zeilen zum Erstellen konstanter Partitionen erstellt wurde.
-
Obwohl der Beschneidungsindex bei einigen Ausführungsformen so beschrieben ist, dass er speziell mit blockierten Bloom-Filtern implementiert wird, ist zu verstehen, dass der Beschneidungsindex nicht auf blockierte Bloom-Filter beschränkt ist, und bei anderen Ausführungsformen kann der Beschneidungsindex mit anderen Filtern wie Bloom-Filtern, Hash-Filtern oder Cuckoo-Filtern implementiert werden.
-
9-13 sind Ablauf- bzw. Flussdiagramme, die Operationen des netzwerkbasierten Data-Warehouse-Systems 102 bei der Durchführung eines Verfahrens 900 zum Erzeugen und Verwenden eines Beschneidungsindex bei der Verarbeitung einer Datenbankabfrage gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellen. Das Verfahren 900 kann in computerlesbaren Anweisungen zur Ausführung durch eine oder mehrere Hardwarekomponenten (z.B. einen oder mehrere Prozessoren) so verkörpert sein, dass die Operationen des Verfahrens 900 von Komponenten des netzwerkbasierten Data-Warehouse-Systems 102 ausgeführt werden können. Demgemäß wird im Folgenden das Verfahren 900 als Beispiel unter Bezugnahme darauf beschrieben. Es ist jedoch zu berücksichtigen, dass das Verfahren 900 auf verschiedenen anderen Hardwarekonfigurationen eingesetzt werden kann und nicht auf die Bereitstellung innerhalb des netzwerkbasierten Data-Warehouse-Systems 102 beschränkt sein soll.
-
In Abhängigkeit von einer Ausführungsform kann eine Operation des Verfahrens 900 auf unterschiedliche Weise wiederholt werden oder intervenierende Operationen beinhalten, die nicht gezeigt werden. Obwohl die Operationen des Verfahrens 900 in einer bestimmten Reihenfolge dargestellt und beschrieben werden können, kann die Reihenfolge, in der die Operationen ausgeführt werden, zwischen Ausführungsformen variieren, einschließlich der parallelen Ausführung bestimmter Operationen oder der Durchführung von Gruppen von Operationen in separaten Prozessen. Zum Beispiel ist, obwohl die Verwendung und Erzeugung des Beschneidungsindex zusammen als Teil des Verfahrens 900 beschrieben und illustriert werden, zu verstehen, dass die Verwendung und Erzeugung des Beschneidungsindex als separate Prozesse durchgeführt werden kann, die mit einigen Ausführungsformen übereinstimmen.
-
Bei einer Operation 905 greift der Computerservice-Manager 108 auf eine Quelltabelle zu, die in mehrere Mikropartitionen organisiert ist. Die Quelltabelle besteht aus einer Vielzahl von Zellen, die in Zeilen und Spalten organisiert sind, und in jeder Zelle ist ein Datenwert enthalten.
-
Bei einer Operation 910 erzeugt der Computerservice-Manager 108 einen Beschneidungsindex basierend auf der Quelltabelle. Der Beschneidungsindex besteht aus einer Gruppe von Filtern (z.B. einer Gruppe von blockierten Bloom-Filtern), die in jeder Spalte jeder Mikropartition der Quelltabelle unterschiedliche bzw. eindeutige Werte indizieren. Für jede Mikropartition in der Quelltabelle wird ein Filter erzeugt bzw. generiert und jedes Filter wird in N numerische Spalten (z.B. 32 numerische Spalten) zerlegt, um Ganzzahlvergleiche zu ermöglichen. In Übereinstimmung mit einigen Ausführungsformen umfasst der Beschneidungsindex eine Vielzahl von Zeilen und jede Zeile enthält einen Mikropartitions-Identifizierer, eine Schnittnummer und eine Reihe von Bloom-Filtern.
-
Bei einer Operation 915 gruppiert der Computerservice-Manager 108 Zeilen des Beschneidungsindex basierend auf Schnittnummern. Beim Clustern von Zeilen, die auf Schnittnummern basieren, gruppiert der Computerservice-Manager 108 Zeilen mit derselben Schnittnummer und sortiert die Zeilengruppen in der Reihenfolge basierend auf der entsprechenden Schnittnummer.
-
Bei einer Operation 920 empfängt der Computerservice-Manager 108 eine Abfrage, die an die Quelltabelle gerichtet ist. Die Abfrage kann ein Gleichheitsprädikat enthalten.
-
Bei einer Operation 925 greift der Computerservice-Manager 108 auf den Beschneidungsindex zu, der der Quelltabelle basierend auf der Abfrage zugeordnet ist, die an die Quelltabelle gerichtet ist. Beispielsweise kann die Datenbank 114 Informationen speichern, die Assoziationen zwischen Tabellen und Beschneidungsindizes beschreiben.
-
Bei einer Operation 930 verarbeitet der Computerservice-Manager 108 in Verbindung mit der Ausführungsplattform 110 die Abfrage unter Verwendung des Beschneidungsindexes. Bei der Verarbeitung der Abfrage können der Computerservice-Manager 108 und/oder die Ausführungsplattform 110 den Beschneidungsindex verwenden, um die Gruppe von Mikropartitionen der zu scannenden Suchtabelle auf Daten zu bereinigen, die der Abfrage entsprechen (z.B. einen Datenwert, der das Gleichheitsprädikat erfüllt). Das heißt, dass der Beschneidungsindex verwendet werden kann, um eine reduzierte Scangruppe zu identifizieren, die nur eine Untergruppe der Mikropartitionen der Quelltabelle umfasst. Der Computerservice-Manager 108 verwendet den Beschneidungsindex, um eine oder mehrere Mikropartitionen zu identifizieren, in denen Daten, die das Gleichheitsprädikat erfüllen, potenziell gespeichert sind. Bei der Verarbeitung der Abfrage scannt die Ausführungsplattform 110 die Untergruppe der Mikropartitionen der reduzierten Scangruppe, während auf einen Scan der verbleibenden Mikropartitionen verzichtet wird.
-
Wie es in 10 gezeigt ist, kann das Verfahren 900 bei einigen Ausführungsformen weiterhin die Operationen 1005 und 1010 umfassen. In Übereinstimmung mit diesen Ausführungsformen können die Operationen 1005 und 1010 als Teil der Operation 910 ausgeführt werden, wobei der Computerservice-Manager 108 den Beschneidungsindex erzeugt. Die Operationen 1005 und 1010 werden im Folgenden nur in Bezug auf eine einzelne Mikropartition der Quelltabelle beschrieben, um die Erklärung zu erleichtern. Es ist jedoch zu beachten, dass der Computerservice-Manager 108 bei der Erzeugung des Beschneidungsindex ein Filter für jede Mikropartition der Quelltabelle erzeugt und somit die Operationen 1005 und 1010 für jede Mikropartition der Quelltabelle ausgeführt werden können.
-
Bei einer Operation 1005 erzeugt der Computerservice-Manager 108 ein Filter für eine Mikropartition der Quelltabelle. Zum Beispiel kann der Computerservice-Manager 108 ein blockierte Bloom-Filter für die Mikropartition erzeugen, das in jeder Spalte der Mikropartition der Quelltabelle eindeutige Werte indiziert. Weitere Einzelheiten zur Erzeugung des Filters für die Mikropartition werden nachstehend in Bezug auf 11 diskutiert.
-
Bei einer Operation 1010, die bei einigen Ausführungsformen optional ist, verknüpft der Computerservice-Manager 108 eine oder mehrere Zeilen des Filters. Der Computerservice-Manager 122 kann Zeilen verknüpfen, indem er eine logische ODER-Operation ausführt. Der Computerservice-Manager 108 kann Zeilen des Filters zusammenführen, bis ein Dichteschwellenwert erreicht ist, wobei sich die Dichte auf das Verhältnis von 1 und 0 in einer Zeile bezieht. Der Dichteschwellenwert kann auf einer Ziel-Falsch-Positiv-Rate basieren.
-
Wie es in 11 gezeigt ist, kann die Operation 1005 bei einigen Ausführungsformen die Operationen 1105, 1110, 1115 und 1120 enthalten. Bei einer Operation 1105 berechnet der Computerservice-Manager 108 eine Anzahl von Ebenen bzw. Schichten für das Filter entsprechend der Mikropartition der Quelltabelle. Wenn die Anzahl von eindeutigen Werten in der Mikropartition der Quelltabelle unbekannt ist, bestimmt der Computerservice-Manager 108 die Anzahl von Ebenen basierend auf einer maximalen Anzahl möglicher eindeutiger Werte. Wenn die Anzahl von eindeutigen Werten in der Mikropartition der Quelltabelle bekannt ist, bestimmt der Computerservice-Manager 108 die Anzahl von Ebenen basierend auf der Anzahl von eindeutigen Werte.
-
Bei einer Operation 1110 identifiziert der Computerservice-Manager 108 eine Zielzelle innerhalb des Filters basierend auf einem bestimmten Datenwert, der in einer Spalte einer Mikropartition der Quelltabelle enthalten ist. Um die Zielzelle zu identifizieren, identifiziert der Computerservice-Manager 108 einen Schnitt bzw. eine Scheibe und eine Filterspalte im Filter. Der Computerservice-Manager 108 identifiziert den Schnitt basierend auf dem Datenwert und der Anzahl von Ebenen bzw. Schichten im Beschneidungsindex. Der Computerservice-Manager 108 identifiziert die Filterspalte unter Verwendung des Datenwerts und einer Anzahl von Filterspalten im blockierten Bloom-Filter.
-
Bei einer Operation 1115 erzeugt der Computerservice-Manager 108 einen Hash-Wert basierend auf dem Datenwert aus der Quelltabelle. Beim Erzeugen des Hash-Werts kann der Computerservice-Manager 108 eine oder mehrere Hash-Funktionen auf den Datenwert anwenden. Bei einer Operation 11120 füllt der Computerservice-Manager 108 die Zielzelle im blockierten Bloom-Filter unter Verwendung des Hash-Werts auf.
-
Der einfachen Erklärung halber sind die Operationen 1110, 1115 und 1120 oben in Bezug auf einen einzelnen Datenwert in einer einzelnen Mikropartition der Quelltabelle beschrieben. Es soll jedoch verstanden werden, dass die Operationen 1110, 1115 und 1120 bei der Erzeugung eines Filters für eine Mikropartition der Quelltabelle für jeden Datenwert jeder Spalte der Mikropartition in der Quelltabelle wiederholt werden.
-
Wie es in 12 gezeigt ist, kann das Verfahren 900 bei einigen Ausführungsformen die Operationen 1205 und 1210 enthalten. In Übereinstimmung mit diesen Ausführungsformen können die Operationen 1205 und 1210 als Teil der Operation 925 ausgeführt werden, wobei der Computerservice-Manager 108 in Verbindung mit der Ausführungsplattform 110 arbeitet, um die Abfrage unter Verwendung des Beschneidungsindexes zu verarbeiten.
-
Bei einer Operation 1205 identifiziert der Computerservice-Manager 108 eine reduzierte Scangruppe, die eine Untergruppe von Mikropartitionen der Quelltabelle umfasst, um nach Daten zu suchen, die das Gleichheitsprädikat in der Abfrage erfüllen. Die Untergruppe der Mikropartitionen der Quelltabelle enthält Mikropartitionen, die so bestimmt sind, dass sie die übereinstimmenden Daten basierend auf der Gruppe blockierter Bloom-Filter in den Beschneidungsindex aufnehmen können. Der Computerservice-Manager 108 kann die Untergruppe von Mikropartitionen identifizieren, indem er einen Hash-Wert basierend auf dem Gleichheitsprädikat erzeugt und einen oder mehrere Werte im Beschneidungsindex identifiziert, die dem Hash-Wert entsprechen. Der Computerservice-Manager 108 identifiziert eine oder mehrere Mikropartitionen, in denen potenziell Daten gespeichert werden, die das Gleichheitsprädikat erfüllen, basierend auf einem oder mehreren Werten im Beschneidungsindex, die dem Hash-Wert entsprechen. Das heißt, dass ein Wert im Beschneidungsindex, der mit dem Hash-Wert übereinstimmt, angibt, dass übereinstimmende Daten potenziell in einer Mikropartition gespeichert sind, die basierend auf der Schnittnummer und der Filterspalte identifiziert werden kann, die der Zelle des Beschneidungsindexes entsprechen, in dem der Wert gespeichert ist.
-
Der Computerservice-Manager 108 kommuniziert die Untergruppe von Mikropartitionen an die Ausführungsplattform 110 und die Ausführungsplattform 110 scannt nur die Untergruppe von Mikropartitionen der Quelltabelle in der reduzierten Scangruppe, um Daten zu finden, die das Gleichheitsprädikat erfüllen. Auf diese Weise durchsucht die Ausführungsplattform 110 nur Mikropartitionen, in denen möglicherweise übereinstimmende Daten gespeichert sind, und verzichtet dabei auf einen zusätzlichen Zeit- und Ressourcenaufwand, um auch die verbleibenden Mikropartitionen zu durchsuchen, für die aufgrund des Beschneidungsindex bekannt ist, dass übereinstimmende Daten nicht gespeichert sind.
-
In Übereinstimmung mit einigen Ausführungsformen kann der Computerservice-Manager 108 stattdessen eine Gruppe nicht übereinstimmender Mikropartitionen mit Mikropartitionen der Quelltabelle zum Scannen nach Daten identifizieren und kompilieren, anstatt eine Gruppe nicht übereinstimmender Mikropartitionen zu identifizieren und zu kompilieren. Der Computerservice-Manager 108 oder die Ausführungsplattform 110 kann Mikropartitionen aus der Scangruppe entfernen, und zwar basierend auf der Gruppe nicht übereinstimmender Mikropartitionen.
-
Wie es in 13 gezeigt ist, kann das Verfahren 900 bei einigen Ausführungsformen die Operationen 1305, 1310 und 1315 enthalten. Obwohl die Operationen 1305, 1310 und 1315 als nach der Operation 925 ausgeführt dargestellt sind, soll es eingesehen werden, dass die Operationen 1305, 1310 und 1315 jederzeit nach der Operation 910 ausgeführt werden können, wo der Computerservice-Manager 108 den Beschneidungsindex erzeugt.
-
Bei einer Operation 1305 erkennt der Computerservice-Manager 108 eine Änderung an der Quelltabelle. Die Änderung an der Quelltabelle kann eine oder mehrere Zeilen enthalten, die der Quelltabelle hinzugefügt und/oder daraus gelöscht sind.
-
Bei einer Operation 1310 erzeugt der Computerservice-Manager 108 eine oder mehrere zusätzliche Zeilen im mit der Quelltabelle assoziierten Beschneidungsindex basierend auf der Änderung an der Quelltabelle. Der Computerservice-Manager 108 erzeugt zusätzliche Zeilen auf dieselbe Weise, auf welche Zeilen des Beschneidungsindexes während der anfänglichen Erstellung des Beschneidungsindexes erzeugt werden.
-
Bei einer Operation 1315 clustert der Computerservice-Manager 108 den Beschneidungsindex basierend auf der Schnittnummer neu. In Übereinstimmung mit einigen Ausführungsformen kann der Computerservice-Manager 108 warten, um den Beschneidungsindex neu zu clustern, bis dem Beschneidungsindex eine Schwellenwertanzahl von zusätzlichen Zeilen hinzugefügt worden ist.
-
14 stellt eine schematische Darstellung einer Maschine 1400 in der Form eines Computersystems dar, innerhalb von welchem eine Gruppe von Anweisungen ausgeführt werden kann, zum Veranlassen, dass die Maschine 1400 irgendeine oder mehrere der hierin diskutieren Methoden durchführt, gemäß einer beispielhaften Ausführungsform. Spezifisch zeigt 14 eine schematische Darstellung der Maschine 1400 in der beispielhaften Form eines Computersystems, innerhalb von welchem Anweisungen 1416 (z.B. Software, ein Programm, eine Anwendung, ein Applet, eine App oder ein anderer ausführbarer Code) zum Veranlassen, dass die Maschine 1400 irgendeine oder mehrere der hierin diskutierten Methoden durchführt, ausgeführt werden können. Die Anweisungen 1416 können zum Beispiel veranlassen, dass die Maschine 1400 irgendeine oder mehrere Operationen des Verfahrens 900 ausführt. Als ein weiteres Beispiel können die Anweisungen 1416 veranlassen, dass die Maschine 1400 Teilbereiche der in irgendeiner oder mehreren der 4-8 dargestellten Funktionalität implementiert. Auf diese Weise transformieren die Anweisungen 1416 eine allgemeine, nicht programmierte Maschine in eine bestimmte Maschine 1400 (z.B. den Computerservice-Manager 108, die Ausführungsplattform 110 und die Datenspeichervorrichtungen 206), die speziell konfiguriert ist, um irgendeine der beschriebenen und dargestellten Funktionen auf die hierin beschriebene Weise auszuführen.
-
Bei alternativen Ausführungsformen arbeitet die Maschine 1400 als alleinstehende Vorrichtung oder sie kann mit anderen Maschinen gekoppelt (z.B. vernetzt) sein. Bei einer vernetzten Verwendung kann die Maschine 1400 in der Funktion einer Server-Maschine oder einer Client-Maschine in einer Server-Client-Netzwerkumgebung oder als Peer-Maschine in einer Peer-zu-Peer-(oder verteilten)Netzwerkumgebung arbeiten. Die Maschine 1400 kann, ist aber nicht beschränkt darauf, einen Servercomputer, einen Client-Computer, einen Personalcomputer (PC), einen Tablet-Computer, einen Laptop-Computer, ein Netbook, ein Smartphone, ein mobiles Gerät, einen Netzwerkrouter, einen Netzwerkschalter, eine Netzwerkbrücke oder irgendeine Maschine, die die Anweisungen 1316 sequentiell oder auf andere Weise ausführen kann, die von der Maschine 1400 vorzunehmende Aktionen spezifizieren, umfassen. Weiterhin soll, während nur eine einzige Maschine 1400 dargestellt ist, der Ausdruck „Maschine“ auch derart genommen werden, dass er eine Sammlung von Maschinen 1400 enthält, die einzeln oder gemeinsam die Anweisungen 1416 ausführen, um irgendeine oder mehrere der hierin diskutierten Methoden durchzuführen.
-
Die Maschine 1400 enthält Prozessoren 1410, einen Speicher 1430 und Eingabe-/Ausgabe-(I/O-)Komponenten 1450, die konfiguriert sind, um miteinander zu kommunizieren, wie beispielsweise über einen Bus 1402. Bei einer beispielhaften Ausführungsform können die Prozessoren 1410 (z.B. eine zentrale Verarbeitungseinheit (CPU), ein Prozessor mit reduziertem Befehlssatz (RISC), ein Prozessor mit komplexem Befehlssatz (CISC), eine Grafikverarbeitungseinheit (GPU), ein digitaler Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), eine integrierte Funkfrequenz-Schaltung (RFIC), ein anderer Prozessor oder irgendeine geeignete Kombination davon) zum Beispiel einen Prozessor 1412 und einen Prozessor 1414 umfassen, die die Anweisungen 1416 ausführen können. Es ist beabsichtigt, dass der Ausdruck „Prozessor“ Mehrkernprozessoren 1410 enthält, die zwei oder mehr unabhängige Prozessoren (auf die manchmal auch als „Kerne“ Bezug genommen wird) umfassen können, die Anweisungen 1416 gleichzeitig ausführen können. Obwohl 14 mehrere Prozessoren 1410 zeigt, kann die Maschine 1400 einen einzelnen Prozessor mit einem einzigen Kern, einen einzelnen Prozessor mit mehreren Kernen (z.B. einen Mehrkernprozessor), mehrere Prozessoren mit einem einzigen Kern, mehrere Prozessoren mit mehreren Kernen oder eine beliebige Kombination davon enthalten.
-
Der Speicher 1430 kann einen Hauptspeicher 1432, einen statischen Speicher 1434 und eine Speichereinheit 1436 enthalten, die alle für die Prozessoren 1410 zugreifbar bzw. zugänglich sind, wie beispielsweise über den Bus 1402. Der Hauptspeicher 1432, der statische Speicher 1434 und die Speichereinheit 1436 speichern die Anweisungen 1416, die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpern. Die Anweisungen 1416 können sich während ihrer Ausführung durch die Maschine 1400 auch ganz oder teilweise innerhalb des Hauptspeichers 1432, innerhalb des statischen Speichers 1434, innerhalb der Speichereinheit 1436, innerhalb von wenigstens einem der Prozessoren 1410 (z.B. innerhalb des Cachespeichers des Prozessors) oder irgendeiner geeigneten Kombination davon befinden.
-
Die I/O-Komponenten 1450 enthalten Komponenten, um eine Eingabe zu empfangen, eine Ausgabe zur Verfügung zu stellen, eine Ausgabe zu erzeugen, Information zu übertragen, Information auszutauschen, Messungen zu erfassen, und so weiter. Die spezifischen I/O-Komponenten 1450, die in einer bestimmten Maschine 1400 enthalten sind, werden vom Typ einer Maschine abhängen. Zum Beispiel werden portierbare bzw. tragbare Maschinen, wie beispielsweise Mobiltelefone, wahrscheinlich eine Berührungseingabevorrichtung oder andere solche Eingabemechanismen enthalten, während eine monitorlose Servermaschine wahrscheinlich keine solche Berührungseingabevorrichtung enthalten wird. Es wird eingesehen werden, dass die I/O-Komponenten 1450 viele andere Komponenten enthalten können, die nicht in 14 gezeigt sind. Die I/O-Komponenten 1450 sind lediglich zum Vereinfachen der folgenden Diskussion nach Funktionalität gruppiert und die Gruppierung ist in keiner Weise beschränkend. Bei verschiedenen beispielhaften Ausführungsformen können die I/O-Komponenten 1450 Ausgabekomponenten 1452 und Eingabekomponenten 1454 enthalten. Die Ausgabekomponenten 1452 können visuelle Komponenten (z.B. eine Anzeige wie einen Plasmabildschirm (PDP), eine Leuchtdioden-(LED-)Anzeige, eine Flüssigkristallanzeige (LCD), einen Projektor oder eine Kathodenstrahlröhre (CRT)), akustische Komponenten (z.B. Lautsprecher), andere Signalgeneratoren und so weiter enthalten. Die Eingabekomponenten 1454 können alphanumerische Eingabekomponenten (z.B. eine Tastatur, einen Berührungsbildschirm, der konfiguriert ist, um eine alphanumerische Eingabe zu empfangen, eine fotooptische Tastatur oder andere alphanumerische Eingabekomponenten), punktbasierte Eingabekomponenten (z.B. eine Maus, eine Rollkugel, ein Joystick, ein Bewegungssensor oder ein anderes Zeigeinstrument), taktile Eingabekomponenten (z.B. eine physikalische Taste, einen Berührungsbildschirm, der eine Stelle und eine Kraft von Berührungen oder Berührungsgesten zur Verfügung stellt, oder andere taktile Eingabekomponenten), Audio-Eingabekomponenten (z.B. ein Mikrofon) und ähnliches enthalten.
-
Kommunikation kann unter Verwendung einer weiten Vielzahl von Technologien implementiert werden. Die I/O-Komponenten 1450 können Kommunikationskomponenten 1464 enthalten, die betreibbar sind, um die Maschine 1400 mit einem Netzwerk 1480 oder Vorrichtungen bzw. Geräten 1470 über eine Kopplung 1482 bzw. eine Kopplung 1472 zu koppeln. Zum Beispiel können die Kommunikationskomponenten 1464 eine Netzwerkschnittstellenkomponente oder eine andere geeignete Vorrichtung enthalten, um eine Schnittstelle mit dem Netzwerk 1480 zu bilden. Bei weiteren Beispielen können die Kommunikationskomponenten 1464 kabelgebundene bzw. verdrahtete Kommunikationskomponenten, drahtlose Kommunikationskomponenten, zellulare Kommunikationskomponenten und andere Kommunikationskomponenten enthalten, um Kommunikation über andere Modalitäten zur Verfügung zu stellen. Die Vorrichtungen bzw. Geräte 1470 können eine andere Maschine oder irgendeine einer Vielzahl von peripheren Vorrichtungen bzw. Peripheriegeräten (z.B. ein Peripheriegerät, das über einen universellen seriellen Bus (USB) gekoppelt ist) sein. Zum Beispiel kann, wie es oben angemerkt ist, die Maschine 1400 irgendetwas von dem Computerservice-Manager 108, der Ausführungsplattform 110 entsprechen und die Vorrichtungen 1470 können irgendwelche anderen dieser Systeme und Vorrichtungen bzw. Geräte enthalten.
-
AUSFÜHRBARE ANWEISUNGEN UND MASCHINENSPEICHRMEDIUM
-
Die verschiedenen Speicher (z.B. 1430, 1432, 1434 und/oder ein Speicher des Prozessors (der Prozessoren) 1410 und/oder die Speichereinheit 1436) können einen oder mehrere Sätze von Anweisungen 1416 und Datenstrukturen (z.B. Software) speichern, die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpert oder durch diese genutzt werden. Diese Anweisungen 1416 veranlassen dann, wenn sie von dem (den) Prozessor(en) 1410 ausgeführt werden, verschiedene Operationen, um die offenbarten Ausführungsformen zu implementieren.
-
Wie sie hierin verwendet sind, bedeuten die Ausdrücke „Maschinen-speichermedium“, „Vorrichtungsspeichermedium“ und „Computerspeichermedium“ dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke beziehen sich auf eine einzelne oder mehrere Speichervorrichtungen und/oder Medien (z.B. eine zentrale oder verteilte Datenbank und/oder assoziierte Caches und Server), die ausführbare Anweisungen und/oder Daten speichern. Die Ausdrücke sollen demgemäß genommen werden, um Festkörperspeicher und optische und magnetische Medien, einschließlich eines Speichers intern oder extern von Prozessoren, zu enthalten, aber nicht um darauf beschränkt zu sein. Spezifische Beispiele für Maschinenspeichermedien, Computerspeichermedien und/oder Vorrichtungsspeichermedien enthalten einen nichtflüchtigen Speicher, einschließlich, anhand eines Beispiels, Halbleiterspeichervorrichtungen, wie z.B. eines löschbaren programmierbaren Nurlesespeichers (EPROM), eines elektrisch löschbaren programmierbaren Nurlesespeichers (EEPROM), von feldprogrammierbaren Gate-Arrays (FPGAs) und Flashspeichervorrichtungen; Magnetplatten wie beispielsweise interne Festplatten und entfernbare Scheiben bzw. Wechseldatenträger; magneto-optische Scheiben; und CD-ROM- und DVD-ROM-Scheiben. Die Ausdrücke „Maschinenspeichermedien“, „Computerspeichermedien“ und „Vorrichtungsspeichermedien“ schließen spezifisch Trägerwellen, modulierte Datensignale und andere solche Medien aus, von welchen wenigstens einige unter dem nachstehend diskutierten Ausdruck „Signalmedium“ abgedeckt sind.
-
ÜBERTRAGUNGSMEDIUM
-
Bei verschiedenen beispielhaften Ausführungsformen kann ein oder können mehrere Teilbereiche des Netzwerks 980 ein Ad-hoc-Netzwerk, ein Intranet, ein Extranet, ein virtuelles privates Netzwerk (VPN), ein lokales Netz (LAN), ein drahtloses LAN (WLAN), ein Weitverkehrsnetz (WAN), ein drahtloses WAN (WWAN), ein Stadtgebietsnetz (MAN), das Internet, ein Teilbereich des Internets, ein Teilbereich des öffentlichen geschalteten Telefonnetzes (PSTN), ein altes analoges Telefondienst-(POTS-)Netz, ein zellulares Telefonnetz, ein drahtloses Netz, ein Wi-Fi®-Netz, ein anderer Typ von Netzwerk oder eine Kombination von zwei oder mehreren solchen Netzwerken sein. Zum Beispiel kann das Netzwerk 1480 oder ein Teilbereich des Netzwerks 1480 ein drahtloses oder zellulares Netzwerk enthalten und die Kopplung 1482 kann eine Verbindung mit einem Codemultiplexverfahren (CDMA), eine Verbindung mit globalem System für mobile Kommunikationen (GSM) oder andere Typen einer zellularen oder drahtlosen Kopplung sein. Bei diesem Beispiel kann die Kopplung 1482 irgendeinen einer Vielfalt von Typen einer Datenübertragungstechnologie implementieren, wie beispielsweise eine Einzelträgerfunk-Übertragungstechnologie (1xRTT), eine Technologie mit optimierten Entwicklungsdaten (EVDO (Evolution Data Optimized)), eine Technologie eines allgemeinen Paketfunkdienstes (GPRS (General Packet Radio Service)), eine Technologie mit erhöhten Datenraten für GSM-Entwicklung (EDGE (Enhanced Data Rates for GSM Evolution)), Partnerschaftsprojekt der dritten Generation (3GPP) einschließlich 3G, drahtlose Netzwerke der vierten Generation (4G), universelle mobile Telekommunikationssysteme (UMTS), Hochgeschwindigkeits-Paketzugang (HSPA), weltweite Interoperabilität für Mikrowellenzugang (Wi-MAX), Langzeitentwicklungs-(LTE )Standard, andere, die durch verschiedene Standardeinstellungsorganisationen definiert sind, andere Weitbereichs- bzw. Langstreckenprotokolle oder andere Datenübertragungstechnologie.
-
Die Anweisungen 1416 können über das Netzwerk 1480 unter Verwendung eines Übertragungsmedium über eine Netzwerkschnittstellenvorrichtung (z.B. eine in den Kommunikationskomponenten 1464 enthaltene Netzwerkschnittstellenkomponente) übertragen bzw. gesendet oder empfangen werden und unter Nutzung von irgendeinem einer Anzahl von wohlbekannten Übertragungsprotokollen (z.B. Hypertext-Übertragungsprotokoll (HTTP)). Gleichermaßen können die Anweisungen 1416 unter Verwendung eines Übertragungsmediums über die Kopplung 1472 (z.B. Peer-zu-Peer-Kopplung) mit den Vorrichtungen bzw. Geräten 1470 übertragen bzw. gesendet oder empfangen werden. Die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ sollen genommen werden, um irgendein immaterielles Medium zu enthalten, das die Anweisungen 1416 zur Ausführung durch die Maschine 1400 speichern, codieren oder tragen kann, und um digitale oder analoge Kommunikationssignale oder andere immaterielle Medien zu enthalten, um eine Kommunikation von solcher Software zu erleichtern bzw. zu ermöglichen. Somit sollen die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ genommen werden, um irgendeine Form eines modulierten Datensignals, einer Trägerwelle und so weiter zu enthalten. Der Ausdruck „moduliertes Datensignal“ bedeutet ein Signal, das eine oder mehrere seiner Charakteristiken auf solche Weise eingestellt oder verändert hat, um Information im Signal zu codieren.
-
COMPUTERLESBARES MEDIUM
-
Die Ausdrücke „maschinenlesbares Medium“, „computerlesbares Medium“ und „vorrichtungslesbares Medium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke sind definiert, um sowohl Maschinenspeichermedien als auch Übertragungsmedien zu enthalten. Somit enthalten die Ausdrücke sowohl Speichervorrichtungen/-medien als auch Trägerwellen/modulierte Datensignale.
-
Die verschiedenen Operationen der hierin beschriebenen beispielhaften Verfahren können wenigstens teilweise durch einen oder mehrere Prozessoren durchgeführt werden, die temporär (z.B. durch Software) oder dauerhaft konfiguriert sind, um die relevanten Operationen durchzuführen. Gleichermaßen können die hierin beschriebenen Verfahren wenigstens teilweise prozessorimplementiert sein. Zum Beispiel können wenigstens einige Operationen des Verfahrens 900 durch einen oder mehrere Prozessoren durchgeführt werden. Die Leistungsfähigkeit von bestimmten der Operationen kann auf den einen oder die mehreren Prozessoren verteilt werden, die sich nicht nur innerhalb einer einzelnen Maschine befinden, sondern auch quer über eine Anzahl von Maschinen genutzt werden. Bei einigen beispielhaften Ausführungsformen kann der Prozessor oder können die Prozessoren an einer einzigen Stelle angeordnet sein (z.B. in einer häuslichen Umgebung, einer Büroumgebung oder einer Serverfarm), während die Prozessoren bei anderen Ausführungsformen quer über eine Anzahl von Stellen bzw. Standorten verteilt sein können.
-
Obwohl die Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen beschrieben worden sind, wird es offensichtlich werden, dass verschiedene Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne von dem breiteren Schutzumfang des erfinderischen Gegenstands abzuweichen. Demgemäß sind die Spezifikation und die Zeichnungen eher in einem illustrativen als in einem beschränkenden Sinn anzusehen. Die beigefügten Zeichnungen, die einen Teil hiervon bilden, zeigen, zur Veranschaulichung und nicht zur Beschränkung, spezifische Ausführungsformen, bei welchen der Gegenstand ausgeführt werden kann. Die dargestellten Ausführungsformen sind in ausreichendem Detail beschrieben, um Fachleuten auf dem Gebiet zu ermöglichen, die hierin offenbarten Lehren auszuführen. Andere Ausführungsformen können verwendet und daraus abgeleitet werden, so dass strukturelle und logische Substitutionen und Änderungen vorgenommen werden können, ohne vom Schutzbereich dieser Offenbarung abzuweichen. Diese detaillierte Beschreibung ist daher nicht in einem beschränkenden Sinn zu nehmen, und der Schutzumfang von verschiedenen Ausführungsformen wird nur durch die beigefügten Ansprüche definiert, zusammen mit dem gesamten Bereich von Äquivalenten, auf welche solche Ansprüche eine Anspruchsberechtigung haben.
-
Auf solche Ausführungsformen des erfinderischen Gegenstands kann hierin einzeln und/oder kollektiv lediglich der Annehmlichkeit halber und ohne die Absicht, den Schutzumfang dieser Anmeldung auf eine einzelne Erfindung oder ein erfinderisches Konzept gewollt zu beschränken, durch den Ausdruck „Erfindung“ Bezug genommen werden, wenn tatsächlich mehr als eine offenbart ist. Somit sollte, obwohl hierin spezifische Ausführungsformen dargestellt und beschrieben worden sind, eingesehen werden, dass irgendeine Anordnung, für die kalkuliert ist, dass sie den gleichen Zweck erreicht, für die gezeigten spezifischen Ausführungsformen substituiert werden kann. Diese Offenbarung soll irgendwelche und alle Anpassungen oder Variationen von verschiedenen Ausführungsformen abdecken. Kombinationen der obigen Ausführungsformen und andere Ausführungsformen, die hierin nicht spezifisch beschrieben sind, werden Fachleuten auf dem Gebiet beim Durchsehen bzw. Überprüfen der obigen Beschreibung offensichtlich werden.
-
In diesem Dokument werden die Ausdrücke „ein“ oder „eine“ verwendet, wie es in Patentdokumenten üblich ist, um einen (eine) oder mehr als einen (eine) zu enthalten, unabhängig von irgendwelchen anderen Fällen oder Verwendungen von „wenigstens einer“ oder „einer oder mehrere“. In diesem Dokument wird der Ausdruck „oder“ verwendet, um sich auf ein nicht ausschließliches oder zu beziehen, so dass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ enthält, solange nichts anderes angegeben ist. In den beigefügten Ansprüchen werden die Ausdrücke „einschließlich“ und „in welchen“ als Äquivalente in einfachem Englisch der jeweiligen Ausdrücke „umfassend“ und „wobei“ verwendet. Ebenso sind in den folgenden Ansprüchen die Ausdrücke „enthaltend“ und „umfassend“ mit offenem Ende; das bedeutet, dass ein System, eine Vorrichtung, ein Artikel oder ein Verfahren, das, die oder der Elemente zusätzlich zu denjenigen enthält, die nach einem solchen Ausdruck in einem Anspruch aufgelistet sind, derart angesehen wird, dass es, sie oder er in den Schutzbereich dieses Anspruchs fällt.
-
BEISPIELE
-
Beispiel 1 ist ein netzwerkbasiertes Data-Warehouse-System, das folgendes umfasst: wenigstens einen Hardwareprozessor; und einen Speicher, der Anweisungen speichert, die veranlassen, dass der wenigstens eine Hardwareprozessor Operationen durchführt, die folgendes umfassen: Zugreifen auf eine Quelltabelle, die in eine Gruppe von Mikropartitionen organisiert ist; Erzeugen eines Beschneidungsindexes basierend auf der Quelltabelle, wobei der Beschneidungsindex eine Gruppe von Filtern umfasst, die eindeutige Werte in jeder Spalte der Quelltabelle indizieren; Empfangen einer Abfrage, die zur Quelltabelle gerichtet ist; und Verarbeiten der Abfrage unter Verwendung des Beschneidungsindexes, wobei das Verarbeiten der Abfrage ein Beschneiden der Gruppe von Mikropartitionen der Quelltabelle umfasst, um nach Daten zu scannen, die mit der Abfrage übereinstimmen, wobei das Beschneiden der Gruppe von Mikropartitionen ein Identifizieren einer Untergruppe von Mikropartitionen unter Verwendung des Beschneidungsindexes umfasst, um nach den Daten zu scannen, die mit der Abfrage übereinstimmen.
-
Bei einem Beispiel 2 umfasst der Gegenstand von Beispiel 1 optional weiterhin folgendes: Erzeugen eines Filters für jede Mikropartition der Quelltabelle.
-
Bei einem Beispiel 3 umfasst der Gegenstand vom einem der Beispiele 1 und 2 optional weiterhin ein Erzeugen eines ersten Filters für eine erste Mikropartition durch Durchführen von Operationen, die folgendes umfassen: für einen gegebenen Datenwert Identifizieren einer Zelle innerhalb des ersten Filters basierend auf dem Datenwert; Erzeugen eines Hash-Werts basierend auf dem Datenwert; und Auffüllen der Zelle im ersten Filter unter Verwendung des Hash-Werts.
-
Bei einem Beispiel 4 umfasst der Gegenstand von einem der Beispiele 1-3 optional weiterhin folgendes: Berechnen einer Anzahl von Ebenen bzw. Schichten im ersten Filter; und Identifizieren eines Schnitts bzw. einer Scheibe bzw. eines Segments im ersten Filter basierend auf dem Datenwert und der Anzahl von Ebenen im ersten Filter; und Identifizieren einer Filterspalte basierend auf dem Datenwert und einer vorbestimmten Anzahl von Filterspalten im ersten Bloom-blockierten Filter.
-
Bei einem Beispiel 5 umfasst der Gegenstand von einem der Beispiele 1-4 optional weiterhin folgendes: Verknüpfen bzw. Zusammenführen einer oder mehrerer Zeilen des ersten Filters basierend auf einer Ziel-Falsch-Positiv-Rate.
-
Beispiel 6 umfasst den Gegenstand von einem der Beispiele 1-5, wobei ein Filter in der Gruppe von Filtern optional eine Gruppe von Bloom-Filtern umfasst; und der Beschneidungsindex optional eine Vielzahl von Spalten umfasst, wobei die Vielzahl von Spalten eine Mikropartitions-Identifizierer-Spalte, eine Schnittnummernspalte und die Gruppe von Bloom-Filtern umfasst.
-
Bei einem Beispiel 7 umfasst der Gegenstand von einem der Beispiele 1-6 optional weiterhin folgendes: Clustern einer Vielzahl von Zeilen an einer Schnittnummernspalte.
-
Bei einem Beispiel 8 umfasst das Filter von einem der Beispiele 1-7 optional mehrere Bloom-Filter, wobei eine Anzahl von Bloom-Filtern im Filter auf einer Falsch-Positive-Raten-Beschränkung basiert.
-
Bei einem Beispiel 9 umfasst der Gegenstand von einem der Beispiele 1-8 optional weiterhin folgendes: Erzeugen eines Hash-Werts basierend auf einem Gleichheitsprädikat, das in der Abfrage enthalten ist; Identifizieren von einem oder mehreren Werten im Beschneidungsindex, die mit dem Hash-Wert übereinstimmen; und Identifizieren von einer oder mehreren Mikropartitionen, die das Gleichheitsprädikat potentiell erfüllen, basierend auf dem einen oder den mehreren Werten im Beschneidungsindex, die mit dem Hash-Wert übereinstimmen.
-
Bei einem Beispiel 10 umfasst der Gegenstand von einem der Beispiele 1-9 optional weiterhin folgendes: Erkennen einer Änderung an der Quelltabelle; Erzeugen von einer oder mehreren zusätzlichen Zeilen für den Beschneidungsindex basierend auf der Änderung an der Quelltabelle; und erneutes Clustern des Beschneidungsindexes basierend auf der Schnittnummer.
-
Bei einem Beispiel 11 umfasst der Gegenstand von einem der Beispiele 1-10 optional weiterhin ein Scannen der Untergruppe von Mikropartitionen der Quelltabelle, um Daten zu identifizieren, die mit der Abfrage übereinstimmen.
-
Bei einem Beispiel 12 umfasst der Gegenstand von einem der Beispiele 1-11 optional weiterhin ein Identifizieren von einer oder mehreren Mikropartitionen, in denen Daten, die mit der Abfrage übereinstimmen, potentiell gespeichert sind.
-
Beispiel 13 ist ein Verfahren, das folgendes umfasst: Zugreifen auf eine Quelltabelle, die in eine Gruppe von Mikropartitionen organisiert ist; Erzeugen, durch einen oder mehrere Hardwareprozessoren eines Computers, eines Beschneidungsindexes basierend auf der Quelltabelle, wobei der Beschneidungsindex eine Gruppe von Filtern umfasst, die eindeutige Werte in jeder Spalte der Quelltabelle indizieren; Empfangen einer an die Quelltabelle gerichteten Abfrage; und Verarbeiten der Abfrage unter Verwendung des Beschneidungsindexes, wobei das Verarbeiten der Abfrage ein Beschneiden der Gruppe von Mikropartitionen der Quelltabelle umfasst, um nach Daten zu scannen, die mit der Abfrage übereinstimmen, wobei das Beschneiden der Gruppe von Mikropartitionen ein Identifizieren einer Untergruppe von Mikropartitionen unter Verwendung des Beschneidungsindexes umfasst, um nach den Daten zu scannen, die mit der Abfrage übereinstimmen.
-
Bei einem Beispiel 14 umfasst der Gegenstand von Beispiel 13 optional weiterhin folgendes: Erzeugen eines Filters für jede Mikropartition der Quelltabelle.
-
Bei einem Beispiel 15 umfasst der Gegenstand von einem der Beispiele 13-14 optional weiterhin folgendes: Erzeugen eines ersten Filters für eine erste Mikropartition durch Durchführen von Operationen, die folgendes umfassen: für einen gegebenen Datenwert Identifizieren einer Zelle innerhalb des ersten Filters basierend auf dem Datenwert; Erzeugen eines Hash-Werts basierend auf dem Datenwert; und Auffüllen der Zelle im ersten Filter unter Verwendung des Hash-Werts.
-
Bei einem Beispiel 16 umfasst der Gegenstand von einem der Beispiele 13-15 optional weiterhin folgendes: Berechnen einer Anzahl von Ebenen bzw. Schichten im ersten Filter; und Identifizieren eines Schnitts bzw. einer Scheibe bzw. eines Segments im ersten Filter basierend auf dem Datenwert und der Anzahl der Ebenen im ersten Filter; und Identifizieren einer Filterspalte basierend auf dem Datenwert und einer vorbestimmten Anzahl von Filterspalten im ersten Bloom-blockierten Filter.
-
Bei einem Beispiel 17 umfasst der Gegenstand von einem der Beispiele 13-16 optional weiterhin folgendes: Berechnen einer Anzahl von Ebenen bzw. Schichten im Beschneidungsindex; Identifizieren einer Ebene bzw. Schicht im ersten Filter basierend auf dem Datenwert und der Anzahl von Ebenen im Beschneidungsindex; und Identifizieren einer Filterspalte basierend auf dem Datenwert und einer vorbestimmten Anzahl von Filterspalten im ersten Bloom-blockierten Filter.
-
Bei einem Beispiel 18 umfasst der Gegenstand von einem der Beispiele 13-17 optional weiterhin folgendes: Verknüpfen bzw. Zusammenführen von einer oder mehreren Zeilen des ersten Filters basierend auf einer Ziel-Falsch-Positiv-Rate.
-
Beispiel 19 umfasst den Gegenstand von einem der Beispiele 13-18, wobei ein Filter in der Gruppe von Filtern optional eine Gruppe von Bloom-Filtern umfasst; der Beschneidungsindex weiterhin optional eine Vielzahl von Spalten umfasst, wobei die Vielzahl von Spalten eine Mikropartitions-Identifizierer-Spalte, eine Schnittnummernspalte und die Gruppe von Bloom-Filtern umfasst; und der Beschneidungsindex optional an den Schnittnummernspalten geclustert wird.
-
Bei einem Beispiel 20 umfasst der Gegenstand von einem der Beispiele 12-19 optional weiterhin folgendes: Erzeugen eines Hash-Werts basierend auf einem in der Abfrage enthaltenen Gleichheitsprädikat; Identifizieren von einem oder mehreren Werte im Beschneidungsindex, die mit dem Hash-Wert übereinstimmen; und Identifizieren von einer oder mehreren Mikropartitionen, die das Gleichheitsprädikat potentiell erfüllen, basierend auf dem einen oder den mehreren Werten im Beschneidungsindex, die mit dem Hash-Wert übereinstimmen.
-
Bei einem Beispiel 21 umfasst der Gegenstand von einem der Beispiele 12-20 optional weiterhin folgendes: Erkennen einer Änderung an der Quelltabelle; Erzeugen von einer oder mehreren zusätzlichen Zeilen für den Beschneidungsindex basierend auf der Änderung an der Quelltabelle; und erneutes Clustern des Beschneidungsindexes basierend auf der Schnittnummer.
-
Bei einem Beispiel 22 umfasst der Gegenstand von einem der Beispiele 12-21 optional weiterhin ein Scannen der Untergruppe von Mikropartitionen der Quelltabelle, um Daten zu identifizieren, die mit der Abfrage übereinstimmen.
-
Bei einem Beispiel 23 umfasst der Gegenstand von einem der Beispiele 12-22 optional weiterhin ein Identifizieren von einer oder mehreren Mikropartitionen, in denen Daten, die mit der Abfrage übereinstimmen, potentiell gespeichert sind.
-
Beispiel 24 ist ein Computer-Speichermedium, das Anweisungen umfasst, die dann, wenn sie von einem oder mehreren Prozessoren einer Maschine ausgeführt werden, die Maschine konfigurieren, um Operationen durchzuführen, die folgendes umfassen: Zugreifen auf eine Quelltabelle, die in eine Gruppe von Mikropartitionen organisiert ist; Erzeugen eines Beschneidungsindexes basierend auf der Quelltabelle, wobei der Beschneidungsindex eine Gruppe von Filtern umfasst, die eindeutige Werte in jeder Spalte der Quelltabelle indizieren; Empfangen einer an die Quelltabelle gerichteten Abfrage; und Verarbeiten der Abfrage unter Verwendung des Beschneidungsindexes, wobei das Verarbeiten der Abfrage ein Beschneiden der Gruppe von Mikropartitionen der Quelltabelle umfasst, um nach Daten zu scannen, die mit der Abfrage übereinstimmen, wobei das Beschneiden der Gruppe von Mikropartitionen ein Identifizieren einer Untergruppe von Mikropartitionen unter Verwendung des Beschneidungsindexes umfasst, um nach den Daten zu scannen, die mit der Abfrage übereinstimmen.
-
Bei einem Beispiel 25 umfasst der Gegenstand von Beispiel 24 optional weiterhin folgendes: Erzeugen eines Filters für jede Mikropartition der Quelltabelle.
-
Bei einem Beispiel 26 umfasst der Gegenstand von einem der Beispiele 24-25 optional weiterhin folgendes: Erzeugen eines ersten Filters für eine erste Mikropartition durch Durchführen von Operationen, die folgendes umfassen: für einen gegebenen Datenwert Identifizieren einer Zelle innerhalb des ersten Filters basierend auf dem Datenwert; Erzeugen eines Hash-Werts basierend auf dem Datenwert; und Auffüllen der Zelle im ersten Filter unter Verwendung des Hash-Werts.
-
Bei einem Beispiel 27 umfasst der Gegenstand von einem der Beispiele 24-26 optional weiterhin folgendes: Berechnen einer Anzahl von Ebenen bzw. Schichten im ersten Filter; Identifizieren eines Schnitts bzw. einer Scheibe bzw. eines Segments im ersten Filter basierend auf dem Datenwert und der Anzahl von Ebenen im ersten Filter; und Identifizieren einer Filterspalte basierend auf dem Datenwert und einer Anzahl von Filterspalten im ersten Filter.
-
Beispiel 28 umfasst den Gegenstand von einem der Beispiele 24-27, wobei ein Filter in der Gruppe von Filtern optional eine Gruppe von Bloom-Filtern umfasst; der Beschneidungsindex weiterhin optional eine Vielzahl von Spalten umfasst, wobei die Vielzahl von Spalten eine Mikropartitions-Identifizierer-Spalte, eine Schnittnummernspalte und die Gruppe von Bloom-Filtern umfasst; und der Beschneidungsindex optional an den Schnittnummernspalten geclustert wird.
-
Bei einem Beispiel 29 umfasst der Gegenstand von einem der Beispiele 24-28 optional folgendes: Erzeugen eines Hash-Werts basierend auf einem in der Abfrage enthaltenen Gleichheitsprädikat; Identifizieren von einem oder mehreren Werten im Beschneidungsindex, die mit dem Hash-Wert übereinstimmen; und Identifizieren von einer oder mehreren Mikropartitionen, die das Gleichheitsprädikat potentiell erfüllen, basierend auf dem einen oder den mehreren Werten im Beschneidungsindex, die mit dem Hash-Wert übereinstimmen.
-
Bei einem Beispiel 30 umfasst der Gegenstand von einem der Beispiele 24-29 optional folgendes: Erkennen einer Änderung an der Quelltabelle; Erzeugen von einer oder mehreren zusätzlichen Zeilen für den Beschneidungsindex basierend auf der Änderung an der Quelltabelle; und erneutes Clustern des Beschneidungsindex basierend auf der Schnittnummer.
-
Bei einem Beispiel 31 greift ein netzwerkbasiertes Data-Warehouse auf eine Quelltabelle zu, die in einer Gruppe von Mikropartitionen organisiert ist, wobei ein Beschneidungsindex basierend auf der Quelltabelle erzeugt wird und der Beschneidungsindex eine Gruppe von Filtern umfasst, die Stellen von eindeutigen Werten in jeder Spalte der Quelltabelle angeben und wobei eine an die Quelltabelle gerichtete Abfrage beim netzwerkbasierten Data-Warehouse empfangen wird, wobei die Abfrage unter Verwendung des Beschneidungsindexes verarbeitet wird. Die Verarbeitung der Abfrage umfasst ein Beschneiden der Gruppe von Mikropartitionen der Quelltabelle, um nach Daten zu scannen, die mit der Abfrage übereinstimmen, wobei das Beschneiden der Vielzahl von Mikropartitionen ein Identifizieren einer Untergruppe von Mikropartitionen unter Verwendung des Beschneidungsindexes umfasst, um nach den Daten zu scannen, die mit der Abfrage übereinstimmen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-