DE202020005734U1 - Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen - Google Patents

Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen Download PDF

Info

Publication number
DE202020005734U1
DE202020005734U1 DE202020005734.7U DE202020005734U DE202020005734U1 DE 202020005734 U1 DE202020005734 U1 DE 202020005734U1 DE 202020005734 U DE202020005734 U DE 202020005734U DE 202020005734 U1 DE202020005734 U1 DE 202020005734U1
Authority
DE
Germany
Prior art keywords
filter
micro
pruning
data
query
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202020005734.7U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Snowflake Inc filed Critical Snowflake Inc
Publication of DE202020005734U1 publication Critical patent/DE202020005734U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9035Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis

Abstract

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.

Description

  • 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:
      • ◯ Alle Filter verknüpfen
    • • 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
    • US 16/727315 [0001]

Claims (30)

  1. 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.
  2. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 1, wobei das Erzeugen des Beschneidungsindexes folgendes umfasst: Erzeugen eines Filters für jede Mikropartition der Gruppe von Mikropartitionen in der Quelltabelle.
  3. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 2, wobei das Erzeugen des Filters für jede Mikropartition ein Erzeugen eines ersten Filters für eine erste Mikropartition durch Durchführen von Operationen umfasst, 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.
  4. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 3, das weiterhin folgendes umfasst: Berechnen einer Anzahl von Ebenen bzw. Schichten im ersten Filter; wobei das Identifizieren der Zelle folgendes umfasst 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.
  5. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 3, wobei das Erzeugen des ersten Filters weiterhin folgendes umfasst: Verknüpfen bzw. Zusammenführen von einer oder mehreren Zeilen des ersten Filters basierend auf einer Ziel-Falsch-Positiv-Rate.
  6. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 1, wobei ein Filter in der Gruppe von Filtern eine Gruppe von Bloom-Filtern umfasst; und der Beschneidungsindex weiterhin eine Vielzahl von Spalten umfasst, wobei die Vielzahl von Spalten eine Mikropartitions-Identifizierer-Spalte, eine Schnittnummernspalte und die Gruppe von Bloom-Filtern umfasst.
  7. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 6, das weiterhin folgendes umfasst: Clustern des Beschneidungsindexes basierend auf der Schnittnummernspalte.
  8. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 1, wobei jedes Filter der Gruppe von Filtern mehrere Bloom-Filter umfasst, wobei eine Anzahl von Bloom-Filtern in jedem blockierten Bloom-Filter auf einer Falsch-Positive-Raten-Beschränkung basiert.
  9. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 1, wobei das Verarbeiten der Abfrage unter Verwendung des Beschneidungsindexes folgendes umfasst: 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.
  10. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 1, wobei die Operationen weiterhin folgendes umfassen: 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.
  11. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 1, wobei die Operationen weiterhin folgendes umfassen: Scannen der Untergruppe von Mikropartitionen der Quelltabelle, um Daten zu identifizieren, die mit der Abfrage übereinstimmen.
  12. Netzwerkbasiertes Data-Warehouse-System nach Anspruch 11, wobei das Identifizieren der Untergruppe von Mikropartitionen, um nach den Daten zu scannen, die mit der Abfrage übereinstimmen, ein Identifizieren von einer oder mehreren Mikropartitionen umfasst, in denen Daten, die mit der Abfrage übereinstimmen, potentiell gespeichert sind.
  13. Computerprogramm, das Anweisungen umfasst, die dann, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren Operationen durchführen, die folgendes umfassen: 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.
  14. Computerprogramm nach Anspruch 13, wobei das Erzeugen des Beschneidungsindexes folgendes umfasst: Erzeugen eines Filters für jede Mikropartition der Quelltabelle.
  15. Computerprogramm nach Anspruch 13, wobei das Erzeugen des Filters für jede Mikropartition ein Erzeugen eines ersten Filters für eine erste Mikropartition durch Durchführen von Operationen umfasst, 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.
  16. Computerprogramm nach Anspruch 15, wobei das Erzeugen des Beschneidungsindexes folgendes umfasst: Berechnen einer Anzahl von Ebenen bzw. Schichten im ersten Filter; wobei das Identifizieren der Zelle folgendes umfasst: Identifizieren eines Schnitts bzw. einer Scheibe bzw. eines Segments im ersten Filter; und Identifizieren einer Filterspalte basierend auf dem Datenwert und einer vorbestimmten Anzahl von Filterspalten im ersten Filter.
  17. Computerprogramm nach Anspruch 16, wobei das Erzeugen des ersten Filters weiterhin folgendes umfasst: Verknüpfen bzw. Zusammenführen von einer oder mehreren Zeilen des ersten Filters basierend auf einer Ziel-Falsch-Positiv-Rate.
  18. Computerprogramm nach Anspruch 13, wobei: ein Filter in der Gruppe von Filtern eine Gruppe von Bloom-Filtern umfasst; der Beschneidungsindex weiterhin 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 an den Schnittnummernspalten geclustert wird.
  19. Computerprogramm nach Anspruch 13, wobei jedes Filter der Gruppe von Filtern mehrere Bloom-Filter umfasst, wobei eine Anzahl von Bloom-Filtern in jedem blockierten Bloom-Filter auf einer Falsch-Positiv-Raten-Beschränkung basiert.
  20. Computerprogramm nach Anspruch 13, wobei das Verarbeiten der Abfrage unter Verwendung des Beschneidungsindexes folgendes umfasst: 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.
  21. Computerprogramm nach Anspruch 13, das weiterhin folgendes umfasst: 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 einer Schnittnummer.
  22. Computerprogramm nach Anspruch 13, das weiterhin folgendes umfasst: Scannen der Untergruppe von Mikropartitionen der Quelltabelle, um Daten zu identifizieren, die mit der Abfrage übereinstimmen.
  23. Computerprogramm nach Anspruch 22, wobei das Identifizieren der Untergruppe von Mikropartitionen, um nach Daten zu scannen, die mit der Abfrage übereinstimmen, ein Identifizieren von einer oder mehreren Mikropartitionen umfasst, in denen Daten, die mit der Abfrage übereinstimmen, potentiell gespeichert sind.
  24. 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.
  25. Computer-Speichermedium nach Anspruch 24, wobei das Erzeugen des Beschneidungsindexes folgendes umfasst: Erzeugen eines Filters für jede Mikropartition in der Gruppe von Mikropartitionen der Quelltabelle.
  26. Computer-Speichermedium nach Anspruch 25, wobei das Erzeugen des Filters für jede Mikropartition ein Erzeugen eines ersten Filters für eine erste Mikropartition durch Durchführen von Operationen umfasst, 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.
  27. Computer-Speichermedium nach Anspruch 26, wobei das Erzeugen des Beschneidungsindexes folgendes umfasst: 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.
  28. Computer-Speichermedium nach Anspruch 24, wobei: ein Filter in der Gruppe von Filtern eine Gruppe von Bloom-Filtern umfasst; der Beschneidungsindex weiterhin 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 an den Schnittnummernspalten geclustert wird.
  29. Computer-Speichermedium nach Anspruch 24, wobei das Verarbeiten der Abfrage unter Verwendung des Beschneidungsindexes folgendes umfasst: 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.
  30. Computer-Speichermedium nach Anspruch 24, das weiterhin folgendes umfasst: 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 einer Schnittnummer.
DE202020005734.7U 2019-12-26 2020-07-30 Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen Active DE202020005734U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/727,315 2019-12-26
US16/727,315 US10769150B1 (en) 2019-12-26 2019-12-26 Pruning indexes to enhance database query processing

Publications (1)

Publication Number Publication Date
DE202020005734U1 true DE202020005734U1 (de) 2022-04-04

Family

ID=72289900

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202020005734.7U Active DE202020005734U1 (de) 2019-12-26 2020-07-30 Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen

Country Status (6)

Country Link
US (5) US10769150B1 (de)
EP (1) EP3842957A1 (de)
KR (1) KR102520110B1 (de)
CN (1) CN113051351A (de)
DE (1) DE202020005734U1 (de)
WO (1) WO2021133433A1 (de)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220277013A1 (en) 2019-12-26 2022-09-01 Snowflake Inc. Pruning index generation and enhancement
US11593379B2 (en) 2019-12-26 2023-02-28 Snowflake Inc. Join query processing using pruning index
US11816107B2 (en) 2019-12-26 2023-11-14 Snowflake Inc. Index generation using lazy reassembling of semi-structured data
US11880369B1 (en) 2022-11-21 2024-01-23 Snowflake Inc. Pruning data based on state of top K operator
US11893025B2 (en) 2019-12-26 2024-02-06 Snowflake Inc. Scan set pruning for queries with predicates on semi-structured fields

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11016975B1 (en) 2019-12-26 2021-05-25 Snowflake Inc. Scan set pruning for pattern matching queries
US10997179B1 (en) 2019-12-26 2021-05-04 Snowflake Inc. Pruning index for optimization of pattern matching queries
US11681708B2 (en) 2019-12-26 2023-06-20 Snowflake Inc. Indexed regular expression search with N-grams
US11615095B2 (en) 2020-10-30 2023-03-28 Snowflake Inc. Automatic pruning cutoff in a database system
KR20230155026A (ko) * 2021-03-30 2023-11-09 쥐에스아이 테크놀로지 인코포레이티드 연상 처리 유닛을 이용한 n-gram 기반 분류 기술
CN115374329B (zh) * 2022-10-25 2023-03-17 杭州比智科技有限公司 一种管理企业业务元数据和技术元数据的方法及系统

Family Cites Families (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4956774A (en) 1988-09-02 1990-09-11 International Business Machines Corporation Data base optimizer using most frequency values statistics
US5864842A (en) 1995-10-23 1999-01-26 Ncr Corporation Optimization of SQL queries using hash star join operations
US6215910B1 (en) * 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US6374232B1 (en) * 1996-08-29 2002-04-16 Oracle Corp. Method and mechanism for retrieving values from a database
US6618729B1 (en) 2000-04-20 2003-09-09 Ncr Corporation Optimization of a star join operation using a bitmap index structure
US6571233B2 (en) 2000-12-06 2003-05-27 International Business Machines Corporation Optimization of SQL queries using filtering predicates
US7499907B2 (en) 2001-10-12 2009-03-03 Teradata Us, Inc. Index selection in a database system
US7386561B1 (en) 2002-02-06 2008-06-10 Ncr Corp. Partitioned joins of spatial objects in a database system
US7171427B2 (en) * 2002-04-26 2007-01-30 Oracle International Corporation Methods of navigating a cube that is implemented as a relational object
US6957225B1 (en) * 2002-05-07 2005-10-18 Oracle International Corporation Automatic discovery and use of column correlations in tables
US7281013B2 (en) 2002-06-03 2007-10-09 Microsoft Corporation Workload analysis tool for relational databases
US7111025B2 (en) 2003-04-30 2006-09-19 International Business Machines Corporation Information retrieval system and method using index ANDing for improving performance
US7500111B2 (en) 2003-05-30 2009-03-03 International Business Machines Corporation Querying encrypted data in a relational database system
US7620624B2 (en) 2003-10-17 2009-11-17 Yahoo! Inc. Systems and methods for indexing content for fast and scalable retrieval
US7849063B2 (en) 2003-10-17 2010-12-07 Yahoo! Inc. Systems and methods for indexing content for fast and scalable retrieval
US7454418B1 (en) 2003-11-07 2008-11-18 Qiang Wang Fast signature scan
US7870161B2 (en) 2003-11-07 2011-01-11 Qiang Wang Fast signature scan
US7493337B2 (en) 2004-03-31 2009-02-17 Microsoft Corporation Query progress estimation
US7814104B2 (en) * 2005-05-04 2010-10-12 Oracle International Corporation Techniques for partition pruning
US7428524B2 (en) * 2005-08-05 2008-09-23 Google Inc. Large scale data storage in sparse tables
US7461060B2 (en) * 2005-10-04 2008-12-02 International Business Machines Corporation Generalized partition pruning in a database system
US7849073B2 (en) 2006-12-18 2010-12-07 Ianywhere Solutions, Inc. Load balancing for complex database query plans
US8315984B2 (en) 2007-05-22 2012-11-20 Netapp, Inc. System and method for on-the-fly elimination of redundant data
US8666976B2 (en) 2007-12-31 2014-03-04 Mastercard International Incorporated Methods and systems for implementing approximate string matching within a database
US8209178B1 (en) 2008-01-10 2012-06-26 Google Inc. Randomized language models
US8145806B2 (en) 2008-09-19 2012-03-27 Oracle International Corporation Storage-side storage request management
US7996369B2 (en) 2008-11-14 2011-08-09 The Regents Of The University Of California Method and apparatus for improving performance of approximate string queries using variable length high-quality grams
JP5537649B2 (ja) * 2009-04-16 2014-07-02 株式会社東芝 データ検索およびインデクシングの方法および装置
US8533181B2 (en) * 2009-04-29 2013-09-10 Oracle International Corporation Partition pruning via query rewrite
US8271499B2 (en) 2009-06-10 2012-09-18 At&T Intellectual Property I, L.P. Incremental maintenance of inverted indexes for approximate string matching
US20110082855A1 (en) * 2009-10-01 2011-04-07 Al-Omari Awny K Multi-dimensional access to data
US20120137367A1 (en) 2009-11-06 2012-05-31 Cataphora, Inc. Continuous anomaly detection based on behavior modeling and heterogeneous information analysis
US8818991B2 (en) 2009-12-23 2014-08-26 Pivotal Software, Inc. Apparatus and method for analyzing query optimizer performance
US8359316B2 (en) * 2010-03-01 2013-01-22 International Business Machines Corporation Database table look-up
US8655867B2 (en) 2010-05-13 2014-02-18 Salesforce.Com, Inc. Method and system for optimizing queries in a multi-tenant database environment
CN101916261B (zh) 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
KR101838320B1 (ko) * 2010-09-10 2018-03-13 톰슨 라이센싱 예시-기반 데이터 프루닝을 이용한 비디오 디코딩
US8527544B1 (en) 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
US9916538B2 (en) 2012-09-15 2018-03-13 Z Advanced Computing, Inc. Method and system for feature detection
US11195057B2 (en) 2014-03-18 2021-12-07 Z Advanced Computing, Inc. System and method for extremely efficient image and pattern recognition and artificial intelligence platform
US9514272B2 (en) * 2011-10-12 2016-12-06 Complete Genomics, Inc. Identification of DNA fragments and structural variations
US8768927B2 (en) * 2011-12-22 2014-07-01 Sap Ag Hybrid database table stored as both row and column store
US8880510B2 (en) * 2011-12-23 2014-11-04 Sap Se Unique value calculation in partitioned tables
US8458156B1 (en) 2012-05-18 2013-06-04 Google Inc. Learning common spelling errors through content matching
US10311062B2 (en) 2012-08-21 2019-06-04 Microsoft Technology Licensing, Llc Filtering structured data using inexact, culture-dependent terms
US9111095B2 (en) 2012-08-29 2015-08-18 The Johns Hopkins University Apparatus and method for identifying similarity via dynamic decimation of token sequence n-grams
US9507825B2 (en) * 2012-09-28 2016-11-29 Oracle International Corporation Techniques for partition pruning based on aggregated zone map information
CN104620239B (zh) 2012-09-28 2018-11-16 甲骨文国际公司 自适应查询优化
US8996544B2 (en) * 2012-09-28 2015-03-31 Oracle International Corporation Pruning disk blocks of a clustered table in a relational database management system
US9298726B1 (en) 2012-10-01 2016-03-29 Netapp, Inc. Techniques for using a bloom filter in a duplication operation
US20140114942A1 (en) * 2012-10-23 2014-04-24 International Business Machines Corporation Dynamic Pruning of a Search Index Based on Search Results
CN105073379B (zh) 2012-11-21 2017-04-26 艾姆弗勒克斯有限公司 用于注塑模具系统的减小的尺寸的流道
US9773041B2 (en) 2013-03-06 2017-09-26 Oracle International Corporation Methods and apparatus of shared expression evaluation across RDBMS and storage layer
US10198363B2 (en) * 2015-10-23 2019-02-05 Oracle International Corporation Reducing data I/O using in-memory data structures
US10296508B2 (en) * 2013-06-06 2019-05-21 Sap Se Systems and methods to manage online analytical and transactional processing for an in-memory columnar database
US10394848B2 (en) * 2013-07-29 2019-08-27 Amazon Technologies, Inc. Generating a multi-column index for relational databases by interleaving data bits for selectivity
US9471711B2 (en) 2013-09-23 2016-10-18 Teradata Us, Inc. Schema-less access to stored data
US9659045B2 (en) 2013-11-08 2017-05-23 Oracle International Corporation Generic indexing for efficiently supporting ad-hoc query over hierarchically marked-up data
WO2015086824A1 (en) 2013-12-13 2015-06-18 Danmarks Tekniske Universitet Method of and system for information retrieval
US9684671B1 (en) 2014-02-28 2017-06-20 Pivotal Software, Inc. Parallel streaming of external data
CA2939117C (en) 2014-03-04 2022-01-18 Interactive Intelligence Group, Inc. Optimization of audio fingerprint search
US9836505B2 (en) 2014-03-13 2017-12-05 Sybase, Inc. Star and snowflake join query performance
US9792328B2 (en) 2014-03-13 2017-10-17 Sybase, Inc. Splitting of a join operation to allow parallelization
US9412365B2 (en) 2014-03-24 2016-08-09 Google Inc. Enhanced maximum entropy models
US9454574B2 (en) 2014-03-28 2016-09-27 Sybase, Inc. Bloom filter costing estimation
US20160004706A1 (en) * 2014-07-01 2016-01-07 Microsoft Corporation Security trimming of search suggestions
US10002148B2 (en) * 2014-07-22 2018-06-19 Oracle International Corporation Memory-aware joins based in a database cluster
US9940356B2 (en) 2014-07-31 2018-04-10 International Business Machines Corporation Efficient join-filters for parallel processing
US9672248B2 (en) 2014-10-08 2017-06-06 International Business Machines Corporation Embracing and exploiting data skew during a join or groupby
US10628418B2 (en) * 2014-11-13 2020-04-21 Sap Se Data driven multi-provider pruning for query execution plan
US20160162364A1 (en) * 2014-12-03 2016-06-09 Commvault Systems, Inc. Secondary storage pruning
CA2876466C (en) * 2014-12-29 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Scan optimization using bloom filter synopsis
US10810200B2 (en) 2015-01-07 2020-10-20 International Business Machines Corporation Technology for join processing
US10909078B2 (en) 2015-02-25 2021-02-02 International Business Machines Corporation Query predicate evaluation and computation for hierarchically compressed data
US9922064B2 (en) 2015-03-20 2018-03-20 International Business Machines Corporation Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables
US10303791B2 (en) 2015-03-20 2019-05-28 International Business Machines Corporation Efficient join on dynamically compressed inner for improved fit into cache hierarchy
US10372700B2 (en) 2015-03-30 2019-08-06 International Business Machines Corporation Data filtering using a plurality of hardware accelerators
WO2016168211A1 (en) * 2015-04-13 2016-10-20 Risk Management Solutions, Inc. High performance big data computing system and platform
US10067969B2 (en) * 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US10366247B2 (en) 2015-06-02 2019-07-30 ALTR Solutions, Inc. Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
US10321162B2 (en) * 2015-06-08 2019-06-11 Qualcomm Incorporated Derivation of color gamut scalability parameters and tables in scalable video coding
US10372706B2 (en) 2015-07-29 2019-08-06 Oracle International Corporation Tracking and maintaining expression statistics across database queries
US10204135B2 (en) 2015-07-29 2019-02-12 Oracle International Corporation Materializing expressions within in-memory virtual column units to accelerate analytic queries
US10162857B2 (en) * 2015-08-31 2018-12-25 Qatar Foundation For Education, Science And Community Optimized inequality join method
US10019382B2 (en) 2015-10-20 2018-07-10 Sap Se Secondary data structures for storage class memory (scm) enables main-memory databases
US10642831B2 (en) * 2015-10-23 2020-05-05 Oracle International Corporation Static data caching for queries with a clause that requires multiple iterations to execute
US20170139989A1 (en) * 2015-11-18 2017-05-18 Sap Se Pruning of Table Partitions from a Calculation Scenario for Executing a Query
US10324927B2 (en) * 2015-11-19 2019-06-18 Sap Se Data-driven union pruning in a database semantic layer
US9836603B2 (en) * 2015-12-30 2017-12-05 Symantec Corporation Systems and methods for automated generation of generic signatures used to detect polymorphic malware
US10242074B2 (en) 2016-02-03 2019-03-26 Facebook, Inc. Search-results interfaces for content-item-specific modules on online social networks
US10725994B2 (en) * 2016-04-08 2020-07-28 International Business Machines Corporation Automatically revising synopsis table structure
US20170300862A1 (en) 2016-04-14 2017-10-19 Linkedln Corporation Machine learning algorithm for classifying companies into industries
US10649991B2 (en) 2016-04-26 2020-05-12 International Business Machines Corporation Pruning of columns in synopsis tables
US10346403B2 (en) 2016-05-06 2019-07-09 International Business Machines Corporation Value range synopsis in column-organized analytical databases
US10353867B1 (en) 2016-06-27 2019-07-16 EMC IP Holding Company LLC Method and system for verifying files for garbage collection
US11507601B2 (en) 2016-08-18 2022-11-22 International Business Machines Corporation Matching a first collection of strings with a second collection of strings
US10817540B2 (en) * 2016-09-02 2020-10-27 Snowflake Inc. Incremental clustering maintenance of a table
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US10635671B2 (en) 2016-10-05 2020-04-28 Oracle International Corporation Sort-merge band join optimization
US20180101540A1 (en) 2016-10-10 2018-04-12 Facebook, Inc. Diversifying Media Search Results on Online Social Networks
US11036699B2 (en) * 2016-10-20 2021-06-15 International Business Machines Corporation Method for computing distinct values in analytical databases
US10642832B1 (en) 2016-11-06 2020-05-05 Tableau Software, Inc. Reducing the domain of a subquery by retrieving constraints from the outer query
US10528599B1 (en) 2016-12-16 2020-01-07 Amazon Technologies, Inc. Tiered data processing for distributed data
US11074261B1 (en) 2016-12-16 2021-07-27 Amazon Technologies, Inc. Format independent processing for distributed data
US10303456B2 (en) 2017-03-23 2019-05-28 Intel Corporation Technologies for performing energy efficient software distribution
US10713247B2 (en) 2017-03-31 2020-07-14 Amazon Technologies, Inc. Executing queries for structured data and not-structured data
US20180336262A1 (en) 2017-05-19 2018-11-22 Futurewei Technologies, Inc. Geometric approach to predicate selectivity
US10866971B2 (en) 2017-05-22 2020-12-15 Sap Se Hash collision tables for relational operations
US10789229B2 (en) 2017-06-13 2020-09-29 Microsoft Technology Licensing, Llc Determining a hierarchical concept tree using a large corpus of table values
US10705809B2 (en) 2017-09-08 2020-07-07 Devfactory Innovations Fz-Llc Pruning engine
US10838963B2 (en) * 2017-09-11 2020-11-17 International Business Machines Corporation Optimized access for hierarchical low cardinality value synopsis in analytical databases
US10885056B2 (en) 2017-09-29 2021-01-05 Oracle International Corporation Data standardization techniques
CA3074019A1 (en) 2017-10-05 2019-04-11 Liveramp, Inc. Statistical fingerprinting of large structured datasets
US10812495B2 (en) 2017-10-06 2020-10-20 Uvic Industry Partnerships Inc. Secure personalized trust-based messages classification system and method
KR102452953B1 (ko) * 2017-10-30 2022-10-11 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US20190205376A1 (en) 2017-12-28 2019-07-04 Microsoft Technology Licensing, Llc Title standardization through iterative processing
US11036735B2 (en) 2018-01-16 2021-06-15 Oracle International Corporation Dimension context propagation techniques for optimizing SQL query plans
US11037258B2 (en) 2018-03-02 2021-06-15 Dubset Media Holdings, Inc. Media content processing techniques using fingerprinting and heuristics
US10642840B1 (en) 2018-03-07 2020-05-05 Amazon Technologies, Inc. Filtered hash table generation for performing hash joins
EP3547166B1 (de) 2018-03-26 2020-12-02 Hasso-Plattner-Institut für Digital Engineering gGmbH Datenplatzierung in hybriden datenlayouts für abgestufte htap-datenbanken
US10657031B2 (en) * 2018-03-30 2020-05-19 Oracle International Corporation Scalable execution tracing for large program codebases
US10691753B2 (en) 2018-04-25 2020-06-23 Oracle International Corporation Memory reduced string similarity analysis
US11269839B2 (en) 2018-06-05 2022-03-08 Oracle International Corporation Authenticated key-value stores supporting partial state
US10713243B2 (en) 2018-06-18 2020-07-14 Salesforce.Com, Inc. Precompiled SQL queries that allow for dynamic selection of columns
US11061895B2 (en) * 2018-07-18 2021-07-13 Oracle International Corporation Adaptive granule generation for parallel queries with run-time data pruning
US11010257B2 (en) 2018-10-12 2021-05-18 EMC IP Holding Company LLC Memory efficient perfect hashing for large records
WO2020086381A1 (en) 2018-10-23 2020-04-30 Nvidia Corporation Effective and scalable building and probing of hash tables using multiple gpus
US11544300B2 (en) 2018-10-23 2023-01-03 EMC IP Holding Company LLC Reducing storage required for an indexing structure through index merging
US11170761B2 (en) 2018-12-04 2021-11-09 Sorenson Ip Holdings, Llc Training of speech recognition systems
US10388272B1 (en) 2018-12-04 2019-08-20 Sorenson Ip Holdings, Llc Training speech recognition systems using word sequences
US10573312B1 (en) 2018-12-04 2020-02-25 Sorenson Ip Holdings, Llc Transcription generation from multiple speech recognition systems
US11042650B2 (en) 2018-12-06 2021-06-22 International Business Machines Corporation Sargable query-predicate evaluation for encrypted databases
US20200285761A1 (en) 2019-03-07 2020-09-10 Lookout, Inc. Security policy manager to configure permissions on computing devices
US11176133B2 (en) 2019-04-04 2021-11-16 Sap Se Filter evaluation for table fragments
EP3742349A1 (de) * 2019-05-24 2020-11-25 Samsung Electronics Co., Ltd. Dekompressionsvorrichtung und steuerungsverfahren dafür
US11194793B1 (en) 2019-06-25 2021-12-07 Amazon Technologies, Inc. Dynamically materialized views for sheets based data
US20210073219A1 (en) 2019-09-09 2021-03-11 International Business Machines Corporation Database query data redundancy nullification
US11429604B2 (en) 2019-09-10 2022-08-30 Oracle International Corporation Techniques of heterogeneous hardware execution for SQL analytic queries for high volume data processing
US20220284025A1 (en) 2019-12-26 2022-09-08 Snowflake Inc. Indexed geospatial predicate search
US11308090B2 (en) 2019-12-26 2022-04-19 Snowflake Inc. Pruning index to support semi-structured data types
US11372860B2 (en) 2019-12-26 2022-06-28 Snowflake Inc. Processing techniques for queries where predicate values are unknown until runtime
US10769150B1 (en) 2019-12-26 2020-09-08 Snowflake Inc. Pruning indexes to enhance database query processing
US11016975B1 (en) 2019-12-26 2021-05-25 Snowflake Inc. Scan set pruning for pattern matching queries
US10997179B1 (en) 2019-12-26 2021-05-04 Snowflake Inc. Pruning index for optimization of pattern matching queries
US11468012B2 (en) 2020-02-28 2022-10-11 EMC IP Holding Company LLC Garbage collection assisted deduplication in a log structured file system
WO2022016170A1 (en) 2020-07-17 2022-01-20 Snowflake Inc. Pruning index for optimization of pattern matching queries

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220277013A1 (en) 2019-12-26 2022-09-01 Snowflake Inc. Pruning index generation and enhancement
US11593379B2 (en) 2019-12-26 2023-02-28 Snowflake Inc. Join query processing using pruning index
US11803551B2 (en) 2019-12-26 2023-10-31 Snowflake Inc. Pruning index generation and enhancement
US11816107B2 (en) 2019-12-26 2023-11-14 Snowflake Inc. Index generation using lazy reassembling of semi-structured data
US11893025B2 (en) 2019-12-26 2024-02-06 Snowflake Inc. Scan set pruning for queries with predicates on semi-structured fields
US11880369B1 (en) 2022-11-21 2024-01-23 Snowflake Inc. Pruning data based on state of top K operator

Also Published As

Publication number Publication date
KR102520110B1 (ko) 2023-04-11
US11308089B2 (en) 2022-04-19
US10769150B1 (en) 2020-09-08
CN113051351A (zh) 2021-06-29
US20210319025A1 (en) 2021-10-14
US11086875B2 (en) 2021-08-10
KR20210132156A (ko) 2021-11-03
US11803551B2 (en) 2023-10-31
WO2021133433A1 (en) 2021-07-01
US20210200772A1 (en) 2021-07-01
EP3842957A1 (de) 2021-06-30
US20220277013A1 (en) 2022-09-01
US10942925B1 (en) 2021-03-09

Similar Documents

Publication Publication Date Title
DE202020005734U1 (de) Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen
DE202020005700U1 (de) Aufrufen externer Funktionen aus einem Datenlager
DE202020005687U1 (de) Gemeinsame Datennutzung bzw. Datenteilung und materilisierte Ansichten in Datenbanken
DE202021004036U1 (de) Data Clean Room
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE202020005693U1 (de) Externe berechtigungsnachweisfreie Stufen für Datenbankintegrationen
DE202015009772U1 (de) Datenmanagementsysteme
US10769126B1 (en) Data entropy reduction across stream shard
US11113286B2 (en) Generation of pruning index for pattern matching queries
DE202020005703U1 (de) Auf verteilten Metadaten basierendes Cluster-Computing
US20210397619A1 (en) Processing techniques for queries where predicate values are unknown until runtime
DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
WO2022016170A1 (en) Pruning index for optimization of pattern matching queries
DE202020005682U1 (de) Automatisierte erneute Abfrageversuche in einer Datenbankumgebung
DE202021004295U1 (de) Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem
DE102013100054B4 (de) Verlagern von zusammengehörigen Ressourcenpartitionen
DE202021004328U1 (de) Mit Daten-Cloud verbundene Anwendungen
DE202021004340U1 (de) Beschränkte Sichten zum Steuern des Zugriffs auf Informationen in einem Datenbanksystem
DE202021004327U1 (de) Autoskalierung externer Funktionsanforderungen
DE202021102315U1 (de) Flexibles Computing
US20230222121A1 (en) Clustering and compaction of materialized views on a database system
DE202023103214U1 (de) Web-Anwendung als Datenbankobjekt erster Klasse
DE202023103216U1 (de) Datenplattform mit vereinheitlichten Privilegien

Legal Events

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