DE202020005722U1 - Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan - Google Patents

Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan Download PDF

Info

Publication number
DE202020005722U1
DE202020005722U1 DE202020005722.3U DE202020005722U DE202020005722U1 DE 202020005722 U1 DE202020005722 U1 DE 202020005722U1 DE 202020005722 U DE202020005722 U DE 202020005722U DE 202020005722 U1 DE202020005722 U1 DE 202020005722U1
Authority
DE
Germany
Prior art keywords
aggregation
query
operator
query plan
adaptive
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
DE202020005722.3U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Snowflake Inc filed Critical Snowflake Inc
Publication of DE202020005722U1 publication Critical patent/DE202020005722U1/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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • 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/2255Hash tables
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • 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/24556Aggregation; Duplicate elimination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

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

Abstract

Computerprogramm, das Anweisungen enthält, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren Operationen durchführt oder durchführen, wobei die Operationen folgendes umfassen:
Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation und wenigstens eine Verbindungsoperation enthält;
Analysieren des Abfrageplans, um eine Aggregation zu identifizieren, die redundant ist;
Entfernen der Aggregation basierend wenigstens teilweise auf dem Analysieren;
Bestimmen von wenigstens einer Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans;
Einfügen von wenigstens einem adaptiven Aggregationsoperator in den Abfrageplan basierend wenigstens teilweise auf der wenigstens einen Aggregationseigenschaft; und
Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator im Abfrageplan.

Description

  • PRIORITÄTSBEANSPRUCHUNG
  • Diese Anmeldung beansprucht den Vorteil der Priorität der US-Patentanmeldung mit der seriellen Nr. 16/857,790 , eingereicht am 24. April 2020, die den Vorteil der Priorität der provisorischen US-Patentanmeldung Nr. 62/905,920 , eingereicht am 25. September 2019 beansprucht, von welchen jede hierdurch durch Bezugnahme hierin in ihrer Gesamtheit für alle Zwecke enthalten ist.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich auf Datenbanken und insbesondere auf Abfrageplanverbesserungs- und adaptive Aggregationsauswertungstechniken in Datenbankumgebungen. 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 zur Datenspeicherung und für einen Datenzugriff bei Computeranwendungen verwendet. Ein Ziel einer Datenbankimplementierung ist es, enorme Mengen an Information zu organisieren, so dass beispielsweise auf die Information zugegriffen, diese verwaltet und aktualisiert werden kann. In einer Datenbank können Daten in Zeilen, Spalten und Tabellen organisiert sein. Wie es hierin verwendet, ist eine Datenbanktabelle eine Sammlung von Datensätzen (z.B. Zeilen). Jeder Datensatz enthält eine Sammlung von Werten von Tabellenattributen (z.B. Spalten). Datenbanktabellen sind typischerweise physisch in mehreren kleineren Speichereinheiten (unterschiedlicher Größe oder fester Größe) gespeichert, z.B. Dateien oder Blöcken. Solche Dateien oder Blöcke werden hierin manchmal als Mikropartitionen bezeichnet. Bei einigen Implementierungen werden Mikropartitionen nicht vor Ort aktualisiert, sondern vielmehr werden neue Mikropartitionen erzeugt bzw. generiert und gespeichert, um Änderungen an Datenbankdaten widerzuspiegeln bzw. zu berücksichtigen.
  • Datenbankspeichersysteme können zum Speichern unterschiedlicher Typen von Inhalt verwendet werden, wie z.B. bibliographischer Inhalt, Volltextinhalt, numerischer Inhalt, alphanumerischer Inhalt, Bildinhalt, Videoinhalt und/oder dergleichen. Ferner können Datenbanksysteme gemäß dem organisatorischen Ansatz der Datenbank klassifiziert werden. Es gibt viele unterschiedliche Typen von Datenbanken, einschließlich relationaler Datenbanken, verteilter Datenbanken, cloudbasierter Datenbanken, objektorientierter Datenbanken und anderer.
  • Datenbanken werden oft von verschiedenen Entitäten (z.B. Unternehmen) verwendet, um Information zu speichern, auf die möglicherweise zugegriffen und/oder die analysiert werden muss. Bei einem Beispiel kann ein Einzelhandelsunternehmen eine Auflistung von Verkaufstransaktionen in einer Datenbank speichern. Für eine bestimmte Transaktion kann die Datenbank Informationen darüber enthalten, wann die Transaktion stattgefunden hat, wo die Transaktion stattgefunden hat, Gesamtkosten der Transaktion, eine Kennung und/oder Beschreibung der Artikel, die bei der Transaktion gekauft wurden, und/oder dergleichen. In derselben Datenbank kann das Unternehmen beispielsweise auch Mitarbeiterinformationen speichern, die Mitarbeiternamen, Mitarbeiterkontaktinformationen, Mitarbeiterarbeitshistorie, Gehaltssatz usw. enthalten können. Je nach Bedarf des Unternehmens können die transaktionsbezogenen Informationen und die mitarbeiterbezogenen Informationen in verschiedenen Tabellen der Datenbank gespeichert werden. Das Unternehmen kann von Zeit zu Zeit seine Datenbank abfragen, um Informationen zu erhalten, die in der Datenbank gespeichert sind.
  • Das Unternehmen möchte möglicherweise Daten finden, wie z.B. die Namen aller Mitarbeiter, die in einem bestimmten Geschäft arbeiten, alle Mitarbeiter, die an einem bestimmten Datum gearbeitet haben, alle Transaktionen, die den Kauf eines bestimmten Produkts während eines bestimmten Zeitraums beinhalteten, und/oder dergleichen. Wenn das Unternehmen seine Datenbank abfragen möchte, um bestimmte organisierte Informationen aus der Datenbank zu extrahieren, kann eine Abfrageanweisung für die Datenbank ausgeführt werden. Die Abfrage kann bestimmte Daten gemäß einem oder mehreren Abfrageprädikaten zurückgeben, die angeben, welche Informationen von der Abfrage zurückgegeben werden sollen. Die Ausführung der Abfrage kann das Extrahieren spezifischer Daten aus der Datenbank und das Formatieren der extrahierten Daten in eine lesbare Form enthalten. Die Abfrage kann in einer Sprache wie SQL (= Structured Query Language (= strukturierte Abfragesprache)) geschrieben werden, die von der Datenbank verstanden wird, so dass die Datenbank bestimmen kann, welche Daten lokalisiert und wie sie zurückgegeben werden sollen. Die Abfrage kann alle relevanten Informationen anfordern, die in der Datenbank gespeichert sind. Wenn geeignete Daten gefunden werden können, um auf die Anfrage zu antworten, hat die Datenbank das Potenzial, komplexe Trends und Aktivitäten offenzulegen bzw. aufzudecken. Diese Leistungsfähigkeit kann durch die Verwendung einer erfolgreich ausgeführten Abfrage genutzt werden.
  • Figurenliste
  • Ein detaillierteres Verstehen ergibt sich aus der folgenden Beschreibung, die anhand eines Beispiels in Verbindung mit den folgenden Zeichnungen präsentiert wird, in welchen quer über die Zeichnungen hinweg gleiche Bezugszeichen in Verbindung mit gleichen Elementen verwendet werden.
    • 1 stellt eine beispielhafte Aggregationsplatzierung gemäß wenigstens einer Ausführungsform dar.
    • 2 stellt einen beispielhaften verbesserten bzw. erweiterten Abfrageplan gemäß wenigstens einer Ausführungsform dar.
    • 3 stellt einen beispielhaften Prozessablauf gemäß wenigstens einer Ausführungsform dar.
    • 4 stellt einen beispielhaften verbesserten bzw. erweiterten Abfrageplan gemäß wenigstens einer Ausführungsform dar.
    • 5 stellt eine beispielhafte Datenverarbeitungsplattform gemäß wenigstens einer Ausführungsform dar.
    • 6 stellt eine beispielhafte Ressourcen-Manager-Architektur gemäß wenigstens einer Ausführungsform dar.
    • 7 stellt ein beispielhaftes Verfahren gemäß wenigstens einer Ausführungsform dar.
    • 8 stellt ein beispielhaftes Verfahren gemäß wenigstens einer Ausführungsform dar.
    • 9 stellt ein beispielhafte Verfahren gemäß wenigstens einer Ausführungsform dar.
    • 10 stellt einen beispielhaften Abfrageplan gemäß wenigstens einer Ausführungsform dar.
    • 11 stellt einen beispielhaften verbesserten bzw. erweiterten Abfrageplan gemäß wenigstens einer Ausführungsform dar.
    • 12 stellt ein beispielhaftes Verfahren gemäß wenigstens einer Ausführungsform dar.
    • 13 stellt einen beispielhaften Abfrageplan gemäß einer Ausführungsform dar.
    • 14 ist ein schematisches Diagramm einer Optimierung für einen Versuch von Deduplizierungen für einen Abfrageausführungsplan gemäß einigen Ausführungsformen der betreffenden Technologie.
    • 15 ist ein schematisches Diagramm einer lokalen verallgemeinerten Optimierung eines Abfrageausführungsplans gemäß einigen Ausführungsformen der betreffenden Technologie.
    • 16 ist ein schematisches Diagramm einer globalen verallgemeinerten Optimierung für einen Abfrageausführungsplan gemäß einigen Ausführungsformen der betreffenden Technologie.
    • 17 ist ein schematisches Diagramm einer Optimierung für eine Aggregation für ein Umschreiben bzw. Neuschreiben einer materialisierten Ansicht (MV (= Materialized View)) gemäß einigen Ausführungsformen der betreffenden Technologie.
    • 18 ist ein schematisches Diagramm einer Aggregations-Framework-Erweiterung für einen Abfrageausführungsplan gemäß einigen Ausführungsformen der betreffenden Technologie.
    • 19 stellt eine beispielhafte Computer- bzw. Computing- bzw. Rechenvorrichtung gemäß wenigstens einer Ausführungsform dar.
  • DETAILLIERTE BESCHREIBUNG
  • Einige Abfragen können beispielsweise in Bezug auf Zeit, Verarbeitungsressourcen und Speicherressourcen kostspielig sein. Kostspielige Abfragen können Computing- bzw. Rechenressourcen binden und Datenbankoperationen verlangsamen. Es ist daher wünschenswert, Abfragepläne zu verbessern und die Gesamtkosten einer Abfrageausführung zu reduzieren. Angesichts des Vorstehenden werden hierin Systeme und Verfahren zum adaptiven Verbessern von Abfrageplänen offenbart. Ebenfalls sind hierin Systeme und Verfahren zur bedingten fortgesetzten Ausführung eines Teilbereichs eines Abfrageplans offenbart.
  • Eine beispielhafte Ausführungsform nimmt die Form eines Verfahrens zum adaptiven Verbessern von Abfrageplänen an. Das Verfahren enthält ein Erhalten eines Abfrageplans, der einer Abfrage entspricht. Das Verfahren enthält auch ein Identifizieren einer oder mehrerer Verbindung-Aggregation-Sequenzen im Abfrageplan. Jede identifizierte Verbindung-Aggregation-Sequenzenthält einen Verbindungsoperator, der unter einem Aggregationsoperator positioniert ist. Das Verfahren enthält auch ein Generieren bzw. Erzeugen eines modifizierten Abfrageplans wenigsten zum Teil, indem für jede identifizierte Verbindung-Aggregation-Sequenz bestimmt wird, ob der Aggregationsoperator in der Verbindung-Aggregation-Sequenz ein duplikatunempfindlicher Aggregationsoperator ist, und wenn es so ist, dann ein adaptiver Duplikatentfernungs-Operator unter wenigstens einer Eingabe des entsprechenden Verbindungsoperators eingefügt wird. Das Verfahren enthält auch ein Ausführen des modifizierten Abfrageplans, um ein Abfrageergebnis zu erhalten. Ein Ausführen des modifizierten Abfrageplans enthält für jeden eingefügten adaptiven DuplikatentfernungsOperator folgendes: anfängliches Arbeiten mit dem eingefügten adaptiven Duplikatentfernungs-Operator aktiv; Überwachen wenigstens einer Laufzeitkosteneffizienzmetrik von wenigstens einem der eingefügten adaptiven Duplikatentfernungs-Operatoren und des entsprechenden Verbindungsoperators; und Deaktivieren des eingefügten adaptiven Duplikatentfernungs-Operators, wenn die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik eine Schwellenineffizienzbedingung anzeigt.
  • Eine weitere beispielhafte Ausführungsform nimmt die Form eines Verfahrens zum bedingten fortgesetzten Ausführen eines Teilbereichs eines Abfrageplans an. Das Verfahren enthält ein Ausführen eines Abfrageplans, der einer Abfrage entspricht. Der Abfrageplan enthält einen Aggregationsoperator, der unter einem Verbindungsoperator positioniert ist. Das Verfahren enthält während eines Ausführens des Abfrageplans auch folgendes: Überwachen von wenigstens einer Laufzeitkosteneffizienzmetrik des ausführenden Abfrageplans; und Deaktivieren des Aggregationsoperators basierend wenigstens teilweise auf der wenigstens einen überwachten Laufzeitkosteneffizienzmetrik.
  • Eine weitere Ausführungsform nimmt die Form eines Systems an, das wenigstens einen Prozessor enthält und das auch ein oder mehrere nicht transitorische bzw. nichtflüchtige computerlesbare Speichermedien enthält, die Anweisungen enthalten, die durch den wenigstens einen Prozessor ausgeführt werden können, zum Veranlassen, dass der wenigstens eine Prozessor wenigstens die Operationen durchführt, die in einem oder beiden der voranstehenden zwei Absätze aufgelistet sind. Noch eine weitere Ausführungsform nimmt die Form von einem oder mehreren nicht transitorischen bzw. nichtflüchtigen computerlesbaren Speichermedien (CRM) an, die Anweisungen enthalten, die durch den wenigstens einen Prozessor ausführbar sind, zum Veranlassen, dass der wenigstens eine Prozessor wenigstens die Operationen durchführt, die in einem oder beiden der voranstehenden zwei Absätze aufgelistet sind.
  • Weiterhin wird hierin eine Anzahl von Variationen und Permutationen der oben aufgelisteten Ausführungsformen beschrieben, und es wird ausdrücklich darauf hingewiesen, dass jede Variation oder Permutation, die in dieser Offenbarung beschrieben ist, in Bezug auf jede Art von Ausführungsform implementiert werden kann. Beispielsweise könnte eine Variation oder Permutation, die in dieser Offenbarung primär in Zusammenhang mit einer Verfahrensausführungsform beschrieben ist, genauso gut in Verbindung mit einer Systemausführungsform, einer CRM-Ausführungsform und/oder einer oder mehreren anderen Typen von Ausführungsformen implementiert werden. Weiterhin ist diese Flexibilität und Kreuzanwendbarkeit von Ausführungsformen trotz irgendeiner geringfügig anderen Sprache (z.B. Prozesse, Verfahren, Methoden, Schritte, Operationen, Funktionen und/oder dergleichen) vorhanden, die verwendet wird, um solche Ausführungsformen und/oder irgendein Element oder Elemente davon zu beschreiben und/oder zu charakterisieren.
  • Adaptive Aggregation und Abfrageverbesserung bzw. -erweiterung
  • Ausführungsformen der Offenbarung wenden adaptive Aggregation auf Abfragepläne an. Bei einer Ausführungsform ist ein adaptiver Aggregationsoperator so konfiguriert, dass doppelte Werte in einem Datensatz entfernt werden. Bei wenigstens einer Ausführungsform entfernt der adaptive Aggregationsoperator Datenbankdatensätze (z.B. Zeilen) mit doppelten Werten für bestimmte Attribute (z.B. Aggregationsschlüssel des adaptiven Aggregationsoperators). Bei wenigstens einigen Ausführungsformen schaltet der adaptive Aggregationsoperator während einer Abfrageausführung basierend auf Informationen, die (z.B. vom Operator selbst) zur Laufzeit beobachtet werden, selektiv und adaptiv ein und aus, wobei solche beobachteten Informationen die Reduktionsrate des Aggregationsoperators, die Selektivität eines zugehörigen bzw. assoziierten Verbindungsoperators, die Brisanz des zugehörigen Verbindungsoperators und/oder dergleichen enthält. Bei einer Ausführungsform wird der adaptive Aggregationsoperator in den Abfrageplan unterhalb einer oder beider Seiten einer oder mehrerer Verbindungsoperationen eingefügt. Ausführungsformen der hierin offenbarten Systeme und Verfahren bieten verbesserte Abfragepläne, die kosteneffizient sind und sich zur Laufzeit anpassen, um Gesamtkosten für eine Abfrageausführung zu reduzieren.
  • Es wird darauf hingewiesen, dass bei der vorliegenden Offenbarung in Bezug auf einen gegebenen Abfrageplan „unten“ „sequentiell davor“, „geplant, sequentiell davor aufzutreten“ oder dergleichen bedeutet, während „oben“ umgekehrt „sequentiell danach“, „geplant, sequentiell danach aufzutreten“ oder dergleichen bedeutet. Darüber hinaus werden in dieser Offenbarung die Ausdrücke „Abfrageplan“ und „Abfrageausführungsplan“ austauschbar verwendet. Weiterhin werden die Begriffe „Bediener“ bzw. „Operator“ und „Betrieb“ bzw. „Operation“ ebenso austauschbar verwendet. Als Beispiel sollten die Begriffe „Verbindungsoperator“ und „Verbindungsoperation“ als äquivalent angesehen werden, und manchmal wird ein solcher Operator oder eine solche Operation einfach als „Verbindung“ bezeichnet. Die Begriffe „Aggregationsoperator“, „Aggregationsoperation“ und einfach „Aggregation“ werden in der vorliegenden Offenbarung gleichermaßen austauschbar verwendet. Fachleute auf dem Gebiet sind mit solchen geringfügigen Abweichungen bezüglich der Terminologie vertraut.
  • Bei einer anderen Ausführungsform wird ein Verfahren zum Verbessern eines Abfrageplans offenbart. Das Verfahren enthält ein Definieren eines Abfrageplans für eine Abfrage, wobei der Abfrageplan eine Verbindungsoperation enthält, die selbst eine Aufbau- bzw. Errichtungsseite und eine Sondierungsseite hat. Das Verfahren enthält ein Verbessern bzw. Erweitern des Abfrageplans durch Einfügen eines Aggregationsoperators unterhalb einer Sondierungsseite des Verbindungsoperators im Abfrageplan. Das Verfahren enthält weiterhin ein Veranlassen, das eine Errichtungsseite des Verbindungsoperators, (i) ein Bloom-Filter aus der errichtungsseitigen Hash-Tabelle generiert bzw. erzeugt und (ii) die Anzahl von eindeutigen Werten des Verbindungsschlüssels von der Errichtungsseite zum Bloom-Filter bereitstellt. Da das Bloom-Filter im Abfrageplan unter dem eingefügten Aggregationsoperator platziert ist, kann der eingefügte Aggregationsoperator die Anzahl der eindeutigen Werte des Verbindungsschlüssels in Verbindung mit der Selektivität des Bloom-Filters verwenden, um Eigenschaften (z.B. die Verbindungs-Kardinalität) des Verbindungsoperators zu schätzen. Bei einigen Ausführungsformen kann, basierend wenigstens teilweise auf einer lokal beobachteten Reduktionsrate, der Aggregationsoperator adaptiv in einen Durchgangsmodus wechseln, um zusätzlichen Overhead bzw. zusätzliche Kosten zu vermeiden.
  • Bei einer Ausführungsform wird eine aggressive adaptive Aggregation implementiert, um adaptive Aggregationsoperatoren in jede Knotenstelle eines Abfrageplans einzufügen, wodurch die semantische Äquivalenz der Abfrage erhalten bleiben würde. Ein solcher eingefügter Aggregationsoperator kann während eines Ausführung der Abfrage angepasst (z.B. selektiv ein- und ausgeschaltet) werden. Bei einer Ausführungsform wird wenigstens ein eingefügter Aggregationsoperator nicht vollständig ausgewertet: eine partielle Auswertung ist immer noch vorteilhaft. Bei einem Beispiel wird wenigstens ein eingefügter Aggregationsoperator zum Entfernen von Duplikaten nicht vollständig ausgewertet - d.h. er entfernt nicht alle möglichen Duplikate in seinem Zuständigkeitsbereich. Bei wenigstens einer Ausführungsform können eingefügte Aggregationsoperationen während einer Ausführung des Abfrageplans basierend auf zur Laufzeit beobachteten Informationen gesperrt und erneut freigegeben werden.
  • Bei einer Ausführungsform wird die adaptive Aggregation mit einer Platzierung eines Versuchs von Deduplizierungen (= try-deduplication placement) implementiert. In der vorliegenden Offenbarung bezieht sich „try-deduplication placement“ auf eine Technik, gemäß der ein adaptiver Duplikatentfernungs(Aggregations)operator unter jeder zulässigen Verbindung-Aggregation-Sequenz in einem Abfrageplan eingefügt wird. Jede Verbindung-Aggregation-Sequenz enthält einen Verbindungsoperator unter (d.h. vor) einem Aggregationsoperator und bei wenigstens einer Ausführungsform ist jede zulässige Verbindung-Aggregation-Sequenz eine Verbindung-Aggregation-Sequenz, für die der Aggregationsoperator duplikatunempfindlich (auch bekannt als duplikatagnostisch) ist. Duplikatunempfindliche Aggregationsoperatoren sind solche, bei denen Duplikate im Subjektdatensatz die vom Aggregationsoperator bereitgestellte Antwort nicht beeinflussen. Beispiele für duplikatunempfindliche Aggregationsoperatoren enthalten ein Finden des Maximalwerts in einem Datensatz, ein Finden des Minimalwerts in einem Datensatz, ein Zählen der Anzahl von eindeutigen Werten in einem Datensatz und/oder dergleichen. Die Platzierung eines Versuchs von Deduplizierungen ist in einigen Fällen zusätzlich auf Semi-Verbindungen und Anti-Verbindungen anwendbar. Im Kontext von Zwei-Tabellen-Verbindungen ist eine Semi-Verbindung eine Verbindung, die eine Kopie jeder Zeile in der ersten Tabelle zurückgibt, für die wenigstens eine Übereinstimmung in der zweiten Tabelle gefunden wird, während eine Anti-Verbindung eine Kopie jeder Zeile in der ersten Tabelle zurückgibt, für die in der zweiten Tabelle keine Übereinstimmung gefunden wird.
  • Ausführungsformen der hierin beschriebenen Systeme und Verfahren haben mehrere Vorteile. Ein Vorteil ist die Tatsache, dass anfängliche Abfragepläne aufgrund der derzeit offenbarten Laufzeitanpassungen nicht perfekt sein müssen. Ein weiterer Vorteil ist die Verringerung der Wahrscheinlichkeit, dass die Abfrageleistung im Vergleich zur Ausführung eines anfänglichen Abfrageplans zurückgeht (d.h. wenn eine adaptive Aggregation gemäß der vorliegenden Offenlegung nicht freigegeben wäre). Daher ergeben die hierin offenbarten Systeme und Verfahren bei wenigstens einer Ausführungsform eine streng verbesserte Abfrageleistung. Ein weiterer Vorteil besteht darin, dass ein Platzieren von Aggregationsoperatoren an mehreren Speicherorten einen Abfrageausführungsplan hindurchgehend möglicherweise zu höheren Leistungsverbesserungen im Vergleich zu einem Platzieren eines Aggregationsoperators nur an einem Speicherort führt.
  • Verschiedene Ausführungsformen enthalten sowohl Verbindungsoperatoren als auch Aggregationsoperatoren. Diese werden wiederum nachstehend anhand einer weiterer Einführung diskutiert.
  • Verbindungsoperatoren
  • Eine Verbindung ist eine Operation in einer Abfrageverarbeitung, die ein Identifizieren von Zeilen in zwei Eingabeströmen bzw. -streams enthält, die in Bezug auf wenigstens einige ihrer Attribute übereinstimmen, die als Verbindungsschlüssel bezeichnet werden. Verbindungsoperationen sind typischerweise (oder können es wenigstens sein) sehr zeitaufwändige Operationen während einer Abfrageausführung. Eine bekannte Ausführungsform einer Verbindungsoperation enthält einen SQL-Verbindungsabschnitt zum Kombinieren von Spalten aus einer oder mehreren (z.B. zwei) Tabellen in einer relationalen Datenbank. Der Verbindungsabschnitt ist ein Mittel zum Kombinieren von Spalten aus einer oder mehreren Tabellen unter Verwendung von Werten, die jeder von der einen oder den mehreren Tabellen gemeinsam sind.
  • Eine Hash-Verbindung ist ein Beispiel für eine Verbindungsoperation, die bei der Implementierung eines relationalen Datenbankmanagementsystems (RDBMS) verwendet werden kann. Verschiedene Formen von Hash-Verbindungen werden allgemein in Datenbanksystemen verwendet, um das Ergebnis einer Verbindung zu berechnen. Hash-Verbindungen errichten bzw. erstellen eine oder mehrere Hash-Tabellen mit Zeilen von einer der Eingaben (typischerweise der kleineren Eingabe), die als „Erstellungsseiten“-Eingabe bezeichnet wird. Die Zeilen werden von der anderen Eingabe (typischerweise der größeren Eingabe), die als „Sondierungsseiten“-Eingabe bezeichnet wird, und in die Hash-Tabellen untersucht. In massiv parallelen Datenbanksystemen mit N Servern werden oft zwei Verteilungsstrategien unterschieden: Rundsendungs-Verbindungen und Hash-Hash-Verbindungen (letztere werden oft auch als Mischungs-Verbindungen bezeichnet). Diese zwei Verteilungsstrategien werden nachstehend beschrieben.
  • Eine Rundsendungs-Verbindung ist ein Beispiel für eine Verbindungsoperation, bei der eine einzelne Seite der zu verbindenden bzw. verknüpfenden Daten zu jedem einer Vielzahl von Servern (oder anderen Workern (z.B. Prozessoren, Threads und/oder dergleichen) gesendet wird. Rundsendungs-Verbindungen sind effizient, wenn die erstellungsseitige Eingabe in einen Hauptspeicher eines einzelnen solchen Servers passt. Rundsendungs-Verbindungen verteilen alle Zeilen der erstellungsseitigen Eingabe zu allen (N) Servern und Hash-partitionieren dann die sondierungsseitige Eingabe über die N Server so, dass jeder der N Server nur einen Bruchteil der sondierungsseitigen Eingabe empfängt. Jeder der N Server prüft bzw. untersucht bzw. sondiert seine Partition der sondierungsseitigen Eingabe in seine Kopie der Hash-Tabelle, die, wie es angegeben ist, alle der Daten aus der erstellungsseitigen Eingabe enthält.
  • Hash-Hash-Verbindungen werden häufig verwendet, wenn die erstellungsseitige Eingabe nicht in einen Hauptspeicher eines einzelnen Servers passt. Hash-Hash-Verbindungen sind so konfiguriert, dass die erstellungsseitige Eingabe über alle N Server hinweg Hash-partitioniert und dann die sondierungsseitige Eingabe mit derselben Partitionierungsfunktion Hash-partitioniert wird. Bei einer Hash-Hash-Verbindung prüft jeder Server der N Server seine Partition der sondierungsseitigen Eingabe in seine Partition der erstellungsseitigen Eingabe. Die Partitionierungsfunktion stellt sicher, dass dann, wenn eine Zeile aus einer i-ten Sondierungspartition PPi Übereinstimmungen auf der Erstellungsseite hat, diese Übereinstimmungen in der Erstellungspartition BPi sind, von denen beide demselben Server i zugeordnet sein würden. Dieser Ansatz führt zu einer gleichmäßigen Nutzung bzw. Auslastung aller N teilnehmenden Server während der Sondierungsphase der Hash-Hash-Verbindung, wenn und nur wenn die Partitionierungsfunktion die sondierungsseitige Eingabe in N Partitionen gleicher Größe partitioniert. Insbesondere dann, wenn ein Server eine unverhältnismäßig große Menge an sondierungsseitigen Daten empfängt, wird dieser Server viel länger als der Rest der Server brauchen, um seinen Anteil an der sondierungsseitigen Eingabe zu verarbeiten. Dies kann den Rest der Abfrageausführung verzögern. Dies wird oft durch einige häufig vorkommende Verbindungsschlüssel auf der Sondierungsseite verursacht, so dass einige Zeilen der erstellungsseitigen Eingabe mit vielen Zeilen der sondierungsseitigen Eingabe übereinstimmen. Dies wird als sondierungsseitige Verzerrung bezeichnet.
  • Die hierin offenbarten Abfrageoptimierungstechniken können auf Abfragen angewendet werden, die irgendeine der oben genannten Verbindungsoperationen enthalten. Bei einer Ausführungsform wird ein Aggregationsoperator in einen Abfrageplan unter einer Verbindungsoperation eingefügt, um doppelte Werte in einem Datensatz zu entfernen, bevor der Verbindungsoperation ausgeführt wird. Dies kann die Gesamtkosten der Abfrageausführung in Bezug auf Zeit, Verarbeitungsressourcen und Speicherressourcen senken bzw. reduzieren.
  • Aggregationsoperationen
  • Aggregationsoperationen können ein effektives Werkzeug zum Bereitstellen nützlicher Metriken über Datenbankdaten, zum Verbessern bzw. Erweitern von Abfrageplänen und zum Verbessern von Datenbankleistung sein.
  • Aggregationsoperationen arbeiten an Werten quer über Zeilen, um mathematische Berechnungen durchzuführen, wie beispielsweise ein Zählen unterschiedlicher Werte in einem Datensatz, ein Identifizieren von Minimalwerten, ein Identifizieren von Maximalwerten, ein Berechnen von Durchschnittswerten, ein Einreihen von Werten in einen Rang, ein Berechnen von Standardabweichungen und ein Schätzen als Beispiele. Aggregationsoperationen können auch nicht-mathematische Operationen ausführen. Bei einem Beispiel nimmt ein Aggregationsoperation null, eine oder mehrere Zeilen als Eingabe und erzeugt eine einzelne Zeile für jede Gruppe gemäß dem Gruppierungsschlüssel. Wie es hierin erwähnt ist, bezieht sich der Ausdruck „Gruppierungsschlüssel“ auf eine Gruppe von Identifizierern, die nachstehend weiter diskutiert werden, zum Aggregieren von Daten in einer gegebenen Gruppe. Im Gegensatz dazu nehmen skalare Operationen eine Zeile als Eingabe und erzeugen eine Zeile als Ausgabe.
  • Es wird darauf hingewiesen, dass die vorliegende Offenbarung Beispiele für das enthält, was hierin manchmal als Aggregationsoperatoren bezeichnet wird, wie beispielsweise der adaptive Aggregations-(AT-)operator, die keine einzige Ausgabe erzeugen. Im Fall des AT-Operators ist die Eingabe ein Strom von Datensätzen und ist die Ausgabe auch ein Strom von Datensätzen. Wenn er deaktiviert ist (z.B., wenn er so eingestellt ist, dass er in einem Durchgangsmodus arbeitet, in dem Datensätze nicht auf mögliche Duplizierung mit anderen Datensätzen ausgewertet werden), stimmen der Eingabestrom und der Ausgabestrom überein. Wenn er aktiv ist, unterscheidet sich der Ausgabestrom vom Eingabestrom in Fällen, in denen der AT-Operator wenigstens einen doppelten Datensatz identifiziert und entfernt (z.B. einen Datensatz, der ein Duplikat eines anderen Datensatzes ist, wenigstens in Bezug auf einen Schlüssel zum Entfernen von Duplikaten). Bei einem Beispiel gilt diese Eigenschaft (z.B. ein potenzielles Erzeugen mehrerer Zeilen für dieselbe Gruppe) für alle adaptiven Aggregationsoperationen und ist nicht auf adaptive Aggregationsoperationen beschränkt, wie es hierin erwähnt ist.
  • Allgemeiner hat eine Aggregationsoperation zwei Teile, nämlich einen Aggregationsschlüssel und eine Aggregationsfunktion. Der Aggregationsschlüssel (z.B. Gruppierungsschlüssel) definiert Identifizierer für bestimmte Daten, die aggregiert oder ausgewählt werden sollen. Die Aggregationsfunktion definiert die mathematische oder nicht-mathematische Operation, die für Daten ausgeführt werden soll, die den Aggregationsschlüssel erfüllen. Bei einem Beispiel wird eine Aggregationsoperation durchgeführt, um die Gesamtanzahl von im Bundesstaat Kalifornien in den Monaten April und Mai verkauften Produkten zu berechnen. Bei dieser beispielhaften Aggregationsoperation enthalten die Aggregationsschlüssel den Bundesstaat Kalifornien, den Monat April und den Monat Mai. Die Aggregationsfunktion ist bei diesem Beispiel die Summierungsfunktion.
  • Einige Aggregationsfunktionen ignorieren NULL-Werte. Beispielsweise kann eine Aggregationsfunktion zur Mittelung von Daten den Durchschnitt von Werten basierend auf einer Formel berechnen. Für die Mittelwertformel dürfen nur Nicht-NULL-Werte im Zähler und Nenner verwendet werden. Wenn alle zur Aggregationsfunktion übergebenen Werte NULL sind, dann kann die Aggregationsfunktion NULL zurückgeben.
  • Aggregationsoperationen haben zahlreiche Eigenschaften, die dazu führen, dass Aggregationen ein wichtiger Aspekt einer Abfrageoptimierung sind. Aggregationsoperationen können Teilbarkeit, Zersetzbarkeit und Duplikatempfindlichkeit aufweisen, wie es nachstehend weiter diskutiert wird.
  • Aggregationsoperationen können teilbar sein (d.h. sie können aufgeteilt werden). Ein Vektor von Aggregationsoperationen kann in zwei Teile aufgeteilt werden, wenn jede Aggregationsoperation nur auf Attribute aus einer von zwei sich gegenseitig ausschließenden Untergruppen von Eingabeattributen zugreift. Für eine Aggregationsplatzierung können Aggregationen unter einer Verbindung für die Untergruppe von Aggregationsoperationen mit Attributen, die nur von einer Seite der Verbindung kommen, nach unten gedrückt (z.B. eingefügt) werden. Eine der zwei Untergruppen kann leer sein und dies kann bedeuten, dass alle Aggregationsoperationen auf eine Seite der Verbindung nach unten gedrückt (z.B. unten eingefügt) werden können.
  • Es sollte bei der vorliegenden Offenbarung verstanden werden, dass das Verb „eingefügt“ und die Verbphrase „nach unten gedrückt“ und ihre äquivalenten Formen in anderen Zeitformen hierin etwas austauschbar verwendet werden. In Fällen, in denen ein gegebener Aggregationsoperator bereits in einem bestimmten Abfrageplan vorhanden war und dann die Position dieses gegebenen Aggregationsoperators gegenüber einem Verbindungsoperator geändert wird, kann der Ausdruck „nach unten gedrückt“ oder „nach oben gezogen“ verwendet werden, um anzuzeigen, dass ein Ändern der Position dieses Aggregationsoperators im Abfrageplan jeweils niedriger oder höher ist. In Fällen, in denen ein gegebener Aggregationsoperator nicht bereits in einem gegebenen Abfrageplan vorhanden war, kann das Verb „eingefügt“ verwendet werden, um ein Modifizieren (z.B. ein Erweitern bzw. Verbessern) des gegebenen Abfrageplans anzuzeigen, indem der gegebene Aggregationsoperator in den Abfrageplan eingefügt wird. In einigen Fällen kann jedoch die Wortwahl „Drücken nach unten“ eines Aggregationsoperators „unter eine Verbindung“ verwendet werden, um sich auf eine solche Modifikation zu beziehen - d.h. um sich auf ein Einfügen eines Aggregationsoperators in einen Abfrageplan zu verweisen oder es zu beschreiben, in dem der gegebene Aggregationsoperator nicht bereits vorhanden war. Fachleute auf dem Gebiet sind mit einem solchen Sprachgebrauch in diesem Zusammenhang vertraut.
  • Wenigstens einige Aggregationsoperationen haben eine Zerlegbarkeit. Eine Aggregationsoperation „agg“ ist zerlegbar, wenn die Aggregationsoperationen „agg1“ und „agg2“ existieren, so dass agg(Z)=agg2(agg1 (X), agg1 (Y)) für Gruppen von Werten X, Y und Z, wobei Z gleich X u Y ist. Innerhalb eines Aggregations-Auswertungsframeworks kann impliziert werden, dass eine Aggregationsoperation zerlegbar ist, wenn die Aggregationsoperation über eine untergeordnete und übergeordnete bzw. Kind-und-Eltern-Aggregationsimplementierung verfügt.
  • Aggregationsoperationen haben eine Duplikatemfindlichkeit: Sie können duplikatunempfindlich oder duplikatempfindlich sein. Duplikatunempfindliche (auch Duplikationsunabhängige) Aggregationsoperationen sind Operationen, bei denen die Ergebnisse nicht davon abhängen, ob es doppelte Werte im Argument gibt. Duplikatempfindliche Aggregationsoperationen sind Operationen, bei denen die Ergebnisse davon abhängen, ob es doppelte Werte im Argument gibt. Bei einigen Ausführungsformen wirken sich duplikatunempfindliche/-empfindliche Eigenschaften darauf aus, wie Aggregationen behandelt werden und wo oder wann die Aggregationsoperationen eingefügt werden. Bei duplikatunempfindlichen Aggregationsoperationen kann es für niedrigere Aggregationen (d.h. solche, die in einem gegebenen Abfrageplan früher geplant sind) semantisch äquivalent (und vorteilhaft) sein, wenigstens einige Duplikate zu entfernen. Für duplikatempfindliche Operationen kann es vorteilhaft sein, vor der Verbindung die Anzahl von Duplikaten zu bestimmen, die entfernt werden, und eine separate Zählspalte für jede Gruppe in der Aggregation beizubehalten. Die duplikatempfindliche Operation kann beim Berechnen ihrer eigenen Aggregationen eine Kardinalität pro Gruppe als Eingabe verwenden.
  • Allgemein gesagt gibt es zwei allgemeine Strategien zum Platzieren von Aggregationen entlang eines Abfrageplans: eifrige Aggregation und faule Aggregation. Eine eifrige Aggregation fügt ein, drückt Aggregationen (z.B. fügt sie ein) unter jeweilige Verbindungsoperatoren. Eine faule Aggregation ist die inverse Transformation und zieht eine Aggregation (z.B. fügt sie ein) über jeweilige Verbindungsoperatoren. Eine eifrige Anwendung von Aggregationen kann die Verarbeitungszeit einer Verbindung reduzieren. Somit wird es bei einem Beispiel eingesehen, dass eine eifrige Aggregation vorteilhafter ist, wenn die Verbindung explosiv bzw. brisant ist und eine Aggregation reduktiver bzw. reduzierend ist. Bei einem Beispiel ist eine faule Aggregation vorteilhafter im umgekehrten Szenario, wo die Verbindung selbst sehr selektiv ist und/oder die Aggregation nicht sehr reduktiv ist. Bei einer Ausführungsform sucht ein Modifikationsschema für adaptive Aggregation danach, Aggregationen unter Verbindungen einzufügen und dann an eine Laufzeit anzupassen (basierend z. B. auf einer oder mehreren überwachten Metriken, wie es hierin beschrieben ist). In einigen Fällen können Aggregationen so weit wie möglich nach unten von mehreren Verbindungen (z.B. semantisch zulässig) und auf beide Seiten (der Erstellungsseite und die Sondierungsseite) einer Verbindung gedrückt werden. Die betreffende Technologie bietet Techniken, die ein Platzieren einer Aggregationsoperation über und unter einem Verbindungsoperator kombinieren und daher vorteilhaft ein Anpassen während einer Laufzeit (z.B. Ausführung des Abfrageplans) ermöglichen.
  • Aggregationsplatzierungsverbesserungen bzw. -erweiterungen an Abfrageplänen
  • In einigen Fällen ist es vorteilhaft, eine Aggregationsoperation zu bestimmten Zeiten während einer Ausführung einer Abfrage auszuführen. Daher kann es vorteilhaft sein, eine Aggregationsoperation an bestimmten Stellen innerhalb eines Abfrageplans (z.B. Abfragebaums) einzufügen (z.B. zu drücken). Eine Aggregationsplatzierung kann ein wichtiger Aspekt einer Abfrageverbesserung bzw. -erweiterung sein und wird manchmal auch als „Group-by-Platzierung“ bzw. „Gruppierung durch Platzierung“ bezeichnet. Die Aggregationsplatzierung kann erhebliche Auswirkungen auf den Zeitaufwand und die Rechenressourcen haben, die für die vollständige Ausführung einer Abfrage erforderlich sind. Zum Beispiel können durch Anwenden einer gegebenen Aggregationsoperation vor einem Ausführen einer Verbindungsoperation irgendwelche nachfolgenden Verbindungsoperationen als Ergebnis der Ausführung der gegebenen Aggregationsoperation kostengünstiger gestaltet werden. Dies kann z.B. Vorteile für Abfragepläne bringen, in denen Aggregationsoperationen ursprünglich über (d. h. geplant, danach aufzutreten) teuren Verbindungen sind und stattdessen unter (d.h. geplant, davor aufzutreten) solchen Verbindungen platziert werden. Die semantische Äquivalenz zwischen einem Abfrageplan mit und ohne irgendwelche platzierten Aggregationsoperationen wird in verschiedenen Ausführungsformen verifiziert.
  • Eine Aggregationsplatzierung ist eine Abfragemodifikation (z.B. Verbesserung bzw. Erweiterung), gemäß der eine oder mehrere Aggregationsoperationen an verschiedenen Positionen in einem Abfrageplan platziert werden, die einen Verbindungsbaum enthalten können, verglichen mit der Anfangsposition der einen oder der mehreren Aggregationsoperationen, wie es in SQL der Abfrage spezifiziert ist. Aggregationsplatzierungsschemen enthalten ein Platzieren zusätzlicher Aggregationsoperationen über oder unter der ursprünglichen Aggregation in einem Verbindungsbaum oder, in einigen Fällen, ein direktes Ziehen oder Drücken der ursprünglichen Aggregationsoperationen durch (z.B. über oder unter) Verbindungen. Bei einer Ausführungsform kann es, wenn eine Verbindung explodiert bzw. brisant ist, weniger kostspielig sein, eine gegebene Aggregationsoperation an einer Eingabe zu dieser Verbindung auszuwerten, wenn die Aggregationsoperation eine relativ niedrige Gruppenzahl hat. Weiterhin kann bei einer Ausführungsform, wenn eine gegebene Aggregationsoperation, die in einer Ansicht oder Unterabfrage enthalten ist, unterhalb einer filternden Verbindung ausgewertet wird, die Abfrageausführung kostengünstiger sein, wenn die Aggregation über die Verbindung gezogen wird - und daher nach dieser ausgewertet wird. Bei einigen Ausführungsformen kann diese Optimierung zu einer Verbesserung in Größenordnungen (d.h. Reduzierung) bezüglich der Abfragelaufzeit führen.
  • Herkömmlich werden Aggregationsplatzierungsverbesserungen durch einen kostenbasierten Abfrageoptimierer durchgeführt durch Kostenberechnung - z.B. Modellierung, Vorhersage und/oder Schätzung von einem oder mehreren eines Kostenaufwands von - von Plänen mit unterschiedlichen Aggregationsplatzierungsschemen und Auswählen des Schemas, das gemäß dem Kostenmodell als das beste angesehen wird. Es gibt zahlreiche Nachteile für diesen Ansatz. Ein Nachteil besteht darin, dass ein Abfrageoptimierer häufig Fehler macht und eine oder mehrere unnötige Aggregationen durchführt. Die Abfrage wird unnötig teuer, wenn unnötige Aggregationen durchgeführt werden. Dies kann zu Leistungsregressionen bzw. -rückschritten im Vergleich zu dem Plan ohne ein Anwenden der Modifikation führen. Weiterhin sind existierende Gruppierungen durch Aggregationsplatzierungen normalerweise auf eine Untergruppe einfacher Aggregationsfunktionen beschränkt und werden nur auf innere Verbindungen angewendet.
  • Ausführungsformen der vorliegenden Offenbarung befassen sich mit den vorgenannten Nachteilen herkömmlicher Verfahren sowie anderen Nachteilen anderer Verfahren. Bei einer Ausführungsform wird eine Aggregation opportunistisch in einem Abfrageausführungsplan angewendet und wird während der Ausführungslaufzeit angepasst. Bei verschiedenen unterschiedlichen Ausführungsformen sind adaptive Aggregationserweiterungen bzw. -verbesserungen auf mehrere Typen bzw. Arten von Aggregationsfunktionen anwendbar. Die Implementierung einer adaptiven Aggregation ist nicht auf eine kleine Untergruppe von Aggregationstypen spezialisiert und kann auf existierende Aggregationsframeworks erweitert werden, um eine Aggregationsplatzierung zu unterstützen. Zusätzlich gelten Ausführungsformen der vorliegenden adaptiven Aggregationserweiterungen für mehrere Verbindungs-Typen, einschließlich äußerer Verbindungen und Semi-Verbindungen.
  • Bei einer Ausführungsform wird eine Aggregationsplatzierung durchgeführt, um die Kosten zum Ausführen einer Abfrage zu reduzieren. Dies kann erreicht werden durch Anwenden einer eifrigen Aggregationsplatzierung im Abfrageplan, wenn es möglich ist (z.B., wenn es semantisch zulässig ist), und durch Anpassen während einer Ausführung (basierend z.B. auf einer oder mehreren überwachten Kosteneffizienzmetriken). Bei einer Ausführungsform wird eine adaptive Aggregationsplatzierung so durchgeführt, dass sich niedrigere Aggregationen an die Eingabe anpassen und frühzeitig aufhören können, wenn sie sich nicht als vorteilhaft erweisen. Bei wenigstens einer Ausführungsform hat eine adaptive Aggregation einen geringen Overhead bzw. niedrige Kosten, da Abfragen, die eine Aggregationsplatzierung anwenden, nicht teurer sind als Abfragen, die keine Aggregationsplatzierung anwenden. Bei einer Ausführungsform wird eine Aggregationsplatzierung auf alle Verbindungs-Typen angewendet, einschließlich äußerer Verbindungen und Semi-Verbindungen.
  • Bei einigen Ausführungsformen ist eine adaptive Aggregation für alle Aggregationsfunktionen verfügbar, die bestimmte Eigenschaften erfüllen. Bei einer Ausführungsform ist eine adaptive Aggregation nicht auf eine Untergruppe von Aggregationen beschränkt, sondern kann in ein existierendes Abfrageoptimierungs- und Aggregationsframework integriert werden.
  • Bei einer Ausführungsform sind Aggregationsplatzierungen als Umschreib-Regeln in einem Abfrageoptimierer implementiert. Bei einigen Ausführungsformen werden Aggregationen immer dann unter Verbindungen nach unten gedrückt (z.B. eingefügt), wenn dies eine zulässige (z.B. semantisch zulässige) Transformation ist. Eine bestimmte Aggregationsoperation kann eine Oben/Unten-Aggregation oder eine Zwischenaggregation sein. Eine Aggregation kann unter mehrere Verbindungen nach unten gedrückt werden. Bei der Parallelisierung der Aggregationen für nach unten gedrückt kann ein Zwischenaggregationsoperator für die Verbindungen erstellt werden. Bei einigen Ausführungsformen kann ein Abfrageoptimierer zusätzliche Pseudospalten erstellen, um dazwischenliegende Aggregationsergebnisse und zusätzliche erforderliche Spalten, wie beispielsweise einen Zählausdruck, die durch Aggregationen für nach unten gedrückt erzeugt sind, weiterzuleiten.
  • Wie es oben erwähnt ist, sind bei einigen Implementierungen Aggregationsplatzierungen als Umschreib-Regeln in einem Abfrageoptimierer implementiert. Bei anderen Ausführungsformen werden Änderungen an einem Aggregationsframework vorgenommen. Bei einigen Ausführungsformen wird es als wünschenswert angesehen, Umschreib-Regeln in einem Abfrageoptimierer zu verwenden, wenn es möglich ist, um eine Aggregationsplatzierung, wie sie hierin offenbart ist, zu implementieren.
  • Bei verschiedenen Ausführungsformen kann ein Abfrageumschreiben in zwei Phasen erfolgen: einer Ziehen-nach-oben-Phase und einer Drücken-nach-unten-Phase. Die Ziehen-nach-oben-Phase kann Unterscheidbarkeitseigenschaften auf dem Abfragebaum ausbreiten und kann unnötige Aggregationen eliminieren. Die Ziehen-nach-oben-Phase kann die Einschränkungseigenschaften und das Vorhandensein niedrigerer Aggregationen berücksichtigen. Bei einer Ausführungsform werden die oberen Aggregationen in einem adaptiven Aggregationsansatz nie vollständig eliminiert. Die Ziehen-nach-oben-Phase kann vor einer physischen Ausdehnung von Verbindung und Gruppierungen bzw. Group-Bys auftreten. Die Drücken-nach-unten-Phase kann nach der physischen Ausdehnung von Verbindungen, Bloom-Filtern und Aggregationen auftreten. Die Drücken-nach-unten-Phase kann zunächst Planknoten unter Aggregationen mit den unterschiedlichen Schlüsseln und Ausdrücken kommentieren, die eliminiert werden könnten.
  • Bei einer Ausführungsform werden für eine Aggregation, die unter eine Verbindung gedrückt wird, eifrige Aggregationen erstellt und lokal im selben Thread wie die Verbindung ausgewertet. Die Vorteile eines Drücken-nach-unten von Aggregationen können von Eigenschaften der obigen Verbindung abhängen. Eifrige Aggregationen müssen möglicherweise auf Eigenschaften der Verbindung prüfen, wenn sie Entscheidungen zur Ausführungszeit treffen. Ungeachtet dessen, ob sich die eifrigen Aggregationen auf der Sondierungsseite oder der Erstellungsseite einer Verbindung befinden, passen sich die eifrigen Aggregationen lokal bei wenigstens einer Ausführungsform an.
  • Bei wenigstens einer Ausführungsform können auf der Sondierungsseite einer Verbindung eifrige Aggregationen weitere Entscheidungen treffen, da die Verbindungsergebnisse besser sichtbar sind, wenn sich die Aggregationen in derselben Leitung befinden. Auf der Sondierungsseite kann die nach-unten-gedrückt-Aggregation in einem Durchgangsmodus gestartet werden. Nachdem die obige Verbindung eine bestimmte Anzahl von Zeilen verarbeitet hat, kann die nach-unten-gedrückt-Aggregation nach verschiedenen Eigenschaften der Verbindung suchen, um zu bestimmen, ob es für die Aggregation von Vorteil ist, sie zu aktivieren. Ist dies nicht der Fall, kann der Operator für die Dauer der Abfrageausführung im Durchgangsmodus verbleiben. Wenn ein Abfrageoptimierer bestimmt, dass es vorteilhaft ist, die Aggregation auszuwerten, kann der Abfrageoperator die Aggregation für eine Stichprobe von Zeilen puffern und auswerten, um die Selektivität der Aggregation zu bestimmen. Wenn die Selektivität niedrig genug ist, kann der Aggregationsoperator für den Rest der Abfrageausführung eingeschaltet bleiben.
  • Auf der Erstellungsseite einer Verbindung ist es bei einigen Ausführungsformen möglicherweise nicht möglich, sich an eine bestimmte Eigenschaft (z.B. Explosivität bzw. Brisanz) einer Verbindung anzupassen. Bei einigen Ausführungsformen können Optimierungen noch mit lokalen Informationen auf der Erstellungsseite durchgeführt werden. Eine solche Optimierung kann für eindeutiges Drücken nach unten durchgeführt werden. Die Operation für ein eindeutiges Drücken nach unten selbst kann als Teil einer Verbindungserstellung ausgewertet werden. Bei einer Ausführungsform enthält die Operation für ein eindeutiges Drücken nach unten ein Beibehalten einer Hash-Tabelle einer zweiten Ebene für jeden Hash-Eintrag, der durch die zusätzlichen eindeutigen Schlüssel verschlüsselt ist. Gleichermaßen kann dies verwendet werden, um duplikatintensive Aggregationen auszuwerten, wie beispielsweise ein Identifizieren von Minimalwerten und ein Identifizieren von Maximalwerten.
  • Weitere Aspekte von Ausführungsformen der vorliegenden Offenbarung werden nachstehend im Zusammenhang mit den Zeichnungen beschrieben. Das heißt, dass eine detaillierte Beschreibung der Ausführungsformen der vorliegenden Offenbarung hierin bereitgestellt wird, einschließlich Nachstehendes in Verbindung mit den Zeichnungen. Während hierin mehrere Ausführungsformen beschrieben sind, einschließlich Nachstehendes, sollte es verstanden werden, dass diese Offenbarung nicht auf irgendeine Ausführungsform beschränkt ist, sondern stattdessen zahlreiche Alternativen, Modifikationen und Äquivalente umfasst. Während in der vorliegenden Offenbarung zahlreiche spezifische Details dargelegt sind, um ein gründliches Verstehen der hierin offenbarten Ausführungsformen zu vermitteln, können einige Ausführungsformen ohne einige oder alle dieser Details ausgeführt werden. Darüber hinaus sind aus Gründen der Klarheit bestimmte technische Materialien, die im zugehörigen Stand der Technik bekannt sind, nicht im Detail beschrieben worden, um ein unnötiges Verschleiern der vorliegenden Offenbarung zu vermeiden.
  • Als allgemeine Sache ist es zu verstehen, dass diese Offenbarung nicht auf die hierin offenbarten Konfigurationen, Prozessschritte und Materialien beschränkt ist, da solche Konfigurationen, Prozessschritte und Materialien etwas variieren können. Es ist auch zu verstehen, dass die hierin verwendete Terminologie nur zur Beschreibung von beispielhaften Implementierungen verwendet wird und nicht beschränkend sein soll.
  • Nimmt man nun Bezug auf sowohl 1 als auch 2 stellt 1 eine beispielhafte Aggregationsplatzierung 100 gemäß wenigstens einer Ausführungsform dar, während 2 einen beispielhaften erweiterten bzw. verbesserten Abfrageplan 200 gemäß wenigstens einer Ausführungsform darstellt. Insbesondere zeigt 1 schematische Diagramme von zwei potenziellen Abfrageplänen. Auf der linken Seite von 1 ist ein Abfrageplan 102 dargestellt, während auf der rechten Seite ein erweiterter Abfrageplan 104 dargestellt ist. Es wird weiterhin darauf hingewiesen, dass ein erweiterter Abfrageplan 200 in 2 dargestellt ist. Jeder dieser drei dargestellten Abfragepläne enthält eine Verbindung 108, die eine Tabelle auf der ersten Seite T1 110 und eine Tabelle auf der zweiten Seite T2 112 verbindet. Die Verwendung von Tabellen dient der Veranschaulichung; bei anderen Ausführungsformen könnte eine oder könnten beide Seiten einer gegebenen Verbindungsoperation die Form eines Eingabestroms von Datensätzen annehmen oder diesen enthalten oder eine andere Form annehmen. Bei den gezeigten Ausführungsformen bieten der erweiterte Abfrageplan 104 und der erweiterte Abfrageplan 200 signifikante Kosteneinsparungen in Bezug auf Zeit, Arbeitsspeicher und Verarbeitungsressourcen im Vergleich zum Abfrageplan 102, wenn die Verbindung 108 eine explosive Verbindung ist. Ein Beispiel für eine explosive Verbindung tritt auf, wenn eine Seite der Verbindung viel mehr Zeilen hat als die andere Seite der Verbindung. Ein weiteres Beispiel für eine explosive Verbindung tritt auf, wenn die Verbindung nicht sehr selektiv ist und sich das Ergebnis dementsprechend einem kartesischen Produkt annähert. Eine explosive Verbindung erzeugt einen großen Zwischendatensatz und ist in Bezug auf Zeit, Speicher und Verarbeitungsressourcen teuer durchzuführen.
  • Es wird darauf hingewiesen, dass in der vorliegenden Offenbarung in Anbetracht davon, dass unterschiedliche Arten von Verbindungen existieren, die Darstellung einer gegebenen Verbindung in einer gegebenen Weise nicht als einschränkend angesehen werden sollte. Zum Beispiel könnte eine Verbindung, die nicht explizit als eine Erstellungsseite und eine Sondierungsseite dargestellt ist, genauso gut auf diese Weise dargestellt werden. Als Beispiele könnten die Verbindung 108 von 1 und die Kombination der Verbindungserstellung 404 und der Verbindungssondierung 406 von 4 einfach unterschiedliche Arten von Darstellungen desselben Typs einer Verbindungsoperation sein, oder sie könnten unterschiedliche Arten einer Verbindungsoperation darstellen.
  • Im erweiterten Abfrageplan 104 wird auf einer Seite der Verbindung 108 eine zusätzliche (im Vergleich zum Abfrageplan 102) Aggregationsoperation, nämlich eine Vor-Verbindungs-Aggregation 114, ausgeführt, bevor die Verbindung 108 ausgeführt wird. Eine solche Aggregation kann auf eine oder beide Seiten der Verbindung 108 gedrückt werden. Bei dem in 1 dargestellten Beispiel für den erweiterten Abfrageplan 104 wird die Vor-Verbindungs-Aggregation 114 auf der zweiten Seite (d.h. der rechten Seite) in Bezug auf die Tabelle T2 112 durchgeführt, bevor die Verbindung 108 durchgeführt wird. Bei anderen Ausführungsformen kann die Aggregation auf der ersten Seite oder jeweils auf der ersten Seite und der zweiten Seite durchgeführt werden, bevor die Verbindung 108 durchgeführt wird.
  • Viele Abfragen ähneln dem Abfrageplan 102 und sind teuer zu berechnen. Der erweiterte Abfrageplan 104 kann teurer werden als der Abfrageplan 102, wenn, wie es abgebildet ist, eine zusätzliche Aggregationsfunktion ausgeführt wird. Es ist daher wünschenswert zu bestimmen, ob der Abfrageplan 102 oder der erweiterte Abfrageplan 104 der kostengünstigste Abfrageplan für eine bestimmte Abfrage und einen bestimmten Datensatz ist. Ausführungsformen der vorliegenden Offenbarung befassen sich vorteilhaft damit und anderen Szenarien. Insbesondere versuchen Ausführungsformen der vorliegenden Offenbarung den erweiterten Abfrageplan 104, überwachen, wie die Ausführung voranschreitet, und konvertieren im Wesentlichen zurück zum Abfrageplan 102, wenn sich für den erweiterten Abfrageplan 104 nicht zur Laufzeit herausstellt, dass er in Bezug auf eine Effizienz von der Einbeziehung der Vor-Verbindungs-Aggregation 114 einen Vorteil hat.
  • Herkömmliche Abfrageoptimierer berechnen basierend auf Kosten, wie zu versuchen ist, eine Abfrage zu optimieren. Ein herkömmlicher Abfrageoptimierer kann den Abfrageplan 102 und den erweiterten Abfrageplan 104 vergleichen, um zu bestimmen, welcher Abfrageplan am kostengünstigsten ist. Herkömmliche Abfrageoptimierer raten typischerweise bei dieser Bestimmung. Es ist bekannt, dass herkömmliche Abfrageoptimierer häufig falsch liegen, wenn sie bestimmen, ob der Abfrageplan 102 oder der erweiterte Abfrageplan 104 am kosteneffizientesten ist. Das in herkömmlichen Systemen häufig verwendete kostenbasierte Modell hat zahlreiche Nachteile und wählt häufig den falschen Abfrageplan in Bezug auf die Kosteneffizienz aus. Frühere Implementierungen treffen eine solche Wahl und halten sich unflexibel an diese Wahl; Ausführungsformen der vorliegenden Offenbarung passen sich zur Laufzeit an.
  • Eine hierin offenbarte Abfrageoptimierungstechnik kann als duplikatunempfindliche Technik bezeichnet werden und wird auch als Platzierung mit dem Versuch von Deduplizierungen bezeichnet. Die duplikatunempfindliche Technik kann angewendet werden, wenn eine Aggregationsoperation wie die Aggregation 106 duplikatunempfindlicher Ist. Die duplikatunempfindliche Technik kann kosteneffizient sein. Bei einer Ausführungsform enthält die duplikatunempfindliche Technik ein Einfügen adaptiver Aggregationsoperationen zum Entfernen von Duplikaten in den Abfrageplan.
  • Bei einer Ausführungsform enthält die duplikatunempfindliche Technik ein Beobachten dieser eingefügten Aggregationsoperationen, um zu bestimmen, ob die Daten (z.B. die Anzahl von Zeilen) durch jede solche Aggregationsoperation ausreichend reduziert werden (z.B. mehr als ein Schwellenwert). Wenn bei einigen Implementierungen die Datenmenge nicht ausreichend reduziert wird, schaltet sich die Aggregationsoperation aus (z.B. deaktiviert sich, stoppt den Betrieb und/oder dergleichen). Bei einigen Ausführungsformen können wenigstens die Aspekte zur Überwachung und bedingten Deaktivierung der duplikatunempfindlichen Technik lokal durch die eingefügte Aggregationsoperation durchgeführt werden.
  • Bei einigen Ausführungsformen beobachtet die eingefügte Aggregationsoperation die Selektivität des Verbindungen 108. Wenn die Verbindung 108 sehr selektiv ist, ist es möglicherweise nicht vorteilhaft, die Verarbeitung der Abfrage mit einer Aggregationsoperation wie der Vor-Verbindungs-Aggregation 114 in einem aktiven Zustand zu beginnen, und die Vor-Verbindungs-Aggregation 114 kann deaktiviert werden. Bei einer Ausführungsform wird die Selektivität der Verbindung 108 durch ein Bloom-Filter während der Erstellungsphase der Verbindung 108 bestimmt.
  • Der erweiterte Abfrageplan 104 und der erweiterte Abfrageplan 200 können ausgeführt werden, wenn die Abfragefunktionen (z.B. die Aggregation 106) dupliziert werden. Der erweiterte Abfrageplan 200 enthält ein Drücken der adaptiven Duplikatentfernungsoperationen 202 und 204 unter beiden Seiten der Verbindung 108. Eine Duplikatentfernungsoperation 202 oder eine Duplikatentfernungsoperation 204 kann auf der ersten Seite (über die Tabelle T1 110) bzw. auf der zweiten Seite (über die Tabelle T2 112) unter die Verbindung gedrückt werden. Bei einer Ausführungsform werden die Duplikatentfernungsoperatoren sowohl auf der ersten als auch auf der zweiten Seite der Verbindung 108 unter die Verbindung 108 gedrückt. Bei einer Ausführungsform wird die Duplikatentfernungsoperation unter der Verbindung 108 nur auf einer der ersten Seiten und der zweiten Seite der Verbindung 108 gedrückt. Bei einer Ausführungsform tastet eine gegebene Duplikatentfernungsoperation die Eingabe ab, die sonst für eine gegebene Seite der Verbindung 108 gebunden ist, und entfernt alle oder wenigstens einige doppelte Werte auf der gegebenen Seite basierend auf spezifischen Duplikatentfernungsschlüsseln, die für die Duplikatentfernungsoperation bereitgestellt sind). Die Operation zum Entfernen von Duplikaten kann vor der Verbindung 108 ausgeführt werden, um die Menge an Verarbeitung, Arbeitsspeicher und Zeit zu verringern, die zum Ausführen der Verbindung 108 erforderlich sind. Bei einer Ausführungsform wird die Operation zum Entfernen von Duplikaten nur dann in den Abfrageplan eingefügt und unter die Verbindung 108 gedrückt, wenn die Aggregation 106 der Abfrage duplikatunempfindlich ist. Der erweiterte Abfrageplan 200 stellt eine Implementierung einer Technik zur Abfragemodifikation (z.B. Erweiterung) und adaptiven Aggregation dar.
  • Eine beispielhafte Implementierung der duplikatunempfindlichen Technik wird angewendet, wenn eine Abfrage Minimal- und/oder Maximalwerte für eine Tabelle anfordert. Bei einem Beispiel wird eine Abfrage empfangen, die das höchste Gehalt in einer Gruppe von Mitarbeitern und das kleinste Gehalt in der Gruppe von Mitarbeitern anfordert. Diese Abfrage ist duplikatunempfindlich, da die größten und kleinsten Gehälter unabhängig davon gleich sind, wie viele Personen das gleiche Gehalt haben. Bei einer beispielhaften Implementierung wird eine Verbindungsoperation zum Ausführen dieser Abfrage verwendet, und zwar vielleicht aufgrund der Struktur und Organisation der Tabelle(n). Zum Beispiel können verschiedene Spalten in derselben Tabelle und/oder unterschiedliche Tabellen verbunden werden, so dass die gesamte Auflistung der Mitarbeiter analysiert werden kann, um die größten und kleinsten Gehälter zu identifizieren. Bei einem Beispiel wird eine Spalte aus einer ersten Mikropartition (oder einer anderen Speichereinheit) mit einer Spalte in einer zweiten Mikropartition verbunden. Bei einem Beispiel kann eine der beiden Spalten viel größer sein als die andere, was bedeutet, dass die Verbindungsoperation eine explosive Verbindung ist. Da es sich bei der Verbindungsoperation bei diesem Beispiel um eine explosive Verbindung handelt, kann es von Vorteil sein, die Abfrage gemäß dem erweiterten Abfrageplan 104 auszuführen, indem die Vor-Verbindungs-Aggregation 114 auf wenigstens einer Seite der Verbindung 108 ausgeführt wird, bevor die Verbindung 108 ausgeführt wird. Dies kann die Eingabe in die Verbindung 108 reduzieren und dadurch die Ausführung der Verbindung 108 kostengünstiger machen. Nachdem die Verbindung 108 ausgeführt ist, kann die Aggregation 106 abgeschlossen werden, um die größten und kleinsten Gehälter in der Gruppe der Mitarbeiter zu identifizieren.
  • 3 stellt einen beispielhaften Prozessablauf 300 zum Ändern eines Abfrageplans und Zuordnen von Aufgaben zum Ausführen des modifizierten Abfrageplans gemäß wenigstens einer Ausführungsform dar. Bei wenigstens einer Ausführungsform wird der Prozessablauf 300 von einer oder mehreren Entitäten der in 5 dargestellten Datenverarbeitungsplattform 500 ausgeführt, die auf einer Rechenvorrichtung, wie der in 19 dargestellten beispielhaften Rechenvorrichtung 1900, ausführen kann.
  • Im Prozessablauf 300 empfängt ein Ressourcenmanager 302 eine Abfrage bei einer Operation 304. Die Abfrage kann von einem Kundenkonto in Kommunikation mit einer Datenbankplattform empfangen werden. Der Ressourcenmanager 302 identifiziert bei einer Operation 306 eine oder mehrere Dateien, die gelesen werden sollen, um auf die Abfrage zu antworten. Jede der einen oder mehreren Dateien kann eine Mikropartition sein, die einer Tabelle zugeordnet ist. Der Ressourcenmanager 302 kann eine oder mehrere Dateien identifizieren, indem er Metadaten in einem Metadatenspeicher scannt bzw. abtastet, wobei der Metadatenspeicher unabhängig von den Datenbankdaten ist, in denen die Dateien gespeichert sind. Der Ressourcenmanager 302 kann bei einer Operation 308 bestimmen, ob die eine oder mehrere Funktionen, die zum Ausführen der Abfrage erforderlich sind, duplikatunempfindlich sind. Bei der dargestellten Ausführungsform ermittelt der Ressourcenmanager 302 bei einer Operation 310, ob die Ausführung der Abfrage eine Verbindungsoperation erfordert. Der Ressourcenmanager 302 fügt in Reaktion auf die Abfragefunktion(en), die duplikatunempfindlich ist/sind, und den Abfrageplan einschließlich einer Verbindungsoperation bei einer Operation 312 eine Operation zum Entfernen von Duplikaten (z.B. einen adaptiven Aggregationsoperator, wie er hierin beschrieben ist) in den Abfrageplan vor der Verbindungsoperation ein, um den Abfrageplan zu erweitern bzw. zu verbessern (z.B. zu optimieren).
  • Bei einer Ausführungsform wird die Duplikatentfernungsoperation auf wenigstens einer Seite der Verbindungsoperation ausgeführt und sie entfernt alle oder die meisten (oder nur einige) doppelte Werte auf dieser Seite (oder beiden Seiten) der Verbindungsoperation. Eine Duplikatentfernungsoperation kann in den erweiterten Abfrageplan unter die Verbindungsoperation auf beiden Seiten der Verbindungsoperation eingefügt werden. Die Operation zum Entfernen von Duplikaten reduziert die Größe einer oder mehrerer Eingaben der Verbindung und bewirkt daher, dass die Verbindung in Bezug auf Zeit, Verarbeitung und Speicherressourcen effizienter wird. Der modifizierte Abfrageplan kann dann dem in 1 dargestellten erweiterten Abfrageplan 104 ähneln. Wenn auf beiden Seiten der Verbindungsoperation eine Operation zum Entfernen von Duplikaten eingefügt wird, kann der modifizierte Abfrageplan dem in 2 dargestellten erweiterten Abfrageplan 200 ähneln. Der Ressourcenmanager 302 kann mehrere Aufgaben bestimmen, die zur Ausführung der Abfrage auszuführen sind, und bei einer Operation 314 jeder der mehreren Aufgaben Ausführungsknoten einer Ausführungsplattform 316 zuweisen bzw. zuordnen, die dann die Abfrage gemäß dem modifizierten Abfrageplan ausführen kann.
  • Eine Ausführungsform des Prozessablaufs 300 erfolgt auf eine Weise nach besten Kräften. Eine gegebene Operation zum Entfernen von Duplikaten kann auf eine Weise nach besten Kräften ausgeführt werden, so dass einige (z.B. die meisten), aber möglicherweise nicht alle, doppelten Werte von der Seite der Abfrage entfernt werden, in die die Operation zum Entfernen von Duplikaten eingefügt wurde. Ein Ziel der hierin offenbarten Abfrageerweiterungstechniken besteht darin, die Kosten für die Ausführung einer Abfrage zu senken, indem zusätzliche Aufgaben eingeführt werden, wie beispielsweise eine oder mehrere Operationen zum Entfernen von Duplikaten, die die Gesamtkosten für die Ausführung der Abfrage nicht erhöhen. Eine gegebene Operation zum Entfernen von Duplikaten kann so ausgeführt werden, dass eine beträchtliche Anzahl von doppelten Werten entfernt wird und die nachfolgende Verbindungsoperation daher weniger Verarbeitung, Speicher und/oder Zeit kostet. Eine gegebene Operation zum Entfernen von Duplikaten wird möglicherweise nicht bis zum Abschluss ausgeführt, so dass einige doppelte Werte erhalten bleiben. Es kann sein, dass dies die Kosten für die Durchführung der Verbindung nicht wesentlich erhöht. Jedoch könnte ein Veranlassen, dass die Operation zum Entfernen von Duplikaten alle doppelten Werte perfekt entfernt, die Kosten der Operation zum Entfernen von Duplikaten erheblich erhöhen und kann die Gesamtkosten für die Ausführung der Abfrage weiter erhöhen.
  • Bei einer Ausführungsform wird eine Duplikatentfernungsoperation (z.B. eine adaptive Aggregationsoperation) von mehreren Ausführungsknoten einer Ausführungsplattform ausgeführt. Solche Ausführungsknoten können auch als Worker, Server, Threads und/oder dergleichen bezeichnet werden. Bei einer solchen Ausführungsform können die multiplen Ausführungsknoten miteinander kommunizieren, wenn sie sicherstellen sollten, dass die Operation zum Entfernen von Duplikaten alle doppelten Werte perfekt entfernt. Dies wäre kostspielig und bei einigen Implementierungen unerwünscht. Daher wird bei einer Ausführungsform die Operation zum Entfernen von Duplikaten so ausgeführt, dass jeder der mehreren Ausführungsknoten die doppelten Werte im Datenteil dieses Ausführungsknotens entfernt. Die mehreren Ausführungsknoten müssen nicht miteinander kommunizieren, um sicherzustellen, dass alle doppelten Werte über die mehreren Ausführungsknoten hinweg entfernt werden. Bei einer solchen Ausführungsform kann jeder der mehreren Ausführungsknoten alle doppelten Werte im Teil der Daten dieses Ausführungsknotens perfekt entfernen oder auch nicht. Die mehreren Ausführungsknoten müssen jedoch nicht miteinander kommunizieren, um sicherzustellen, dass alle doppelten Werte in allen Teilen der Daten entfernt werden. Dies ist eine Ausführungsform eines Durchführens der Operation zum Entfernen von Duplikaten auf eine Weise nach besten Kräften.
  • Bei einer Ausführungsform ist die Operation zum Entfernen von Duplikaten so konfiguriert, dass doppelte Werte in einem Eingabestrom entfernt werden, der durch eine Speichermenge eingeschränkt ist, die der Operation zum Entfernen von Duplikaten zugewiesen ist. Die Operation zum Entfernen von Duplikaten kann mit der Aufnahme von Datensätzen (z.B. Zeilen) beginnen. Die Operation zum Entfernen von Duplikaten kann eine Reduktionsrate identifizieren, die als Verhältnis von (i) der Anzahl der Datensätze, die die Operation zum Entfernen von Duplikaten entfernt hat, zu (ii) der Anzahl der Datensätze, die die Operation zum Entfernen von Duplikaten aufgenommen hat, definiert werden kann. Wenn bei einer Ausführungsform die Operation zum Entfernen von Duplikaten ein kleineres Verhältnis von Werten als eine vordefinierte Schwelle entfernt, schaltet sich die Operation zum Entfernen von Duplikaten reaktionsschnell aus. Zum Beispiel kann die Operation zum Entfernen von Duplikaten bestimmen, dass eintausend Datensätze aufgenommen wurden und dass alle diese aufgenommenen Datensätze in Bezug auf einen bestimmten Schlüssel der Operation zum Entfernen von Duplikaten eindeutig waren. Die Operation zum Entfernen von Duplikaten kann so konfiguriert werden, dass sie sich dann selbst deaktiviert, da sie keinen Schwellenwert für doppelte Datensätze entfernt. Bei einem anderen Beispiel kann die Operation zum Entfernen von Duplikaten bestimmen, dass 90% der aufgenommenen Datensätze entfernt wurden, was darauf hinweist, dass die Daten stark dupliziert sind. Die Operation zum Entfernen von Duplikaten wird dann möglicherweise weiter ausgeführt, da eine beträchtliche Anzahl von Datensätzen entfernt wird und die Ergebnisse der Operation zum Entfernen von Duplikaten wahrscheinlich die Kosten für die Ausführung der nachfolgenden Verbindungsoperation senken.
  • Bei einer Ausführungsform ist die Operation zum Entfernen von Duplikaten so konfiguriert, dass doppelte Werte nach besten Kräften entfernt werden. Die Operation zum Entfernen von Duplikaten kann durch eine zugewiesene Menge an Cachespeicher begrenzt sein. Die Operation zum Entfernen von Duplikaten darf möglicherweise nicht mehr Arbeitsspeicher als den zugewiesenen verwenden und daher möglicherweise nicht alle doppelten Werte erfolgreich entfernen. Bei einer solchen Ausführungsform kann die Operation zum Entfernen von Duplikaten Zeilen in einem Datensatz aufnehmen und ein Protokoll eindeutiger (z.B. in Bezug auf einen oder mehrere Schlüssel) Zeilen im Cachespeicher speichern, bis die Operation zum Entfernen von Duplikaten den gesamten zugewiesenen Cachespeicher verwendet hat. Nachdem die Operation zum Entfernen von Duplikaten den gesamten zugewiesenen Cachespeicher verwendet hat, kann die Operation zum Entfernen von Duplikaten die eindeutigen Werte aus dem Protokoll (im Cachespeicher) entfernen, die im Datensatz nicht häufig angezeigt wurden. Da die Operation zum Entfernen von Duplikaten einige eindeutige Werte aus dem Protokoll entfernt, nachdem der zugewiesene Cachespeicher verwendet wurde, erkennt die Operation zum Entfernen von Duplikaten möglicherweise nicht alle Duplikate im Datensatz. Dies ist daher ein Beispiel dafür, dass die Operation zum Entfernen von Duplikaten so konfiguriert wird, dass doppelte Werte aufgrund von Speicherbeschränkungen nach besten Kräften entfernt werden.
  • Eine hierin offenbarte Abfragemodifikationstechnik kann als Verbindungsbeobachtungstechnik bezeichnet werden. Bei einer Ausführungsform enthält die Verbindungsbeobachtungstechnik die Beobachtung einer Verbindungssonde, wenn eine gegebene Verbindungsoperation ausgeführt wird. Die Verbindungsbeobachtungstechnik kann mit einer deaktivierten Aggregationsoperation beginnen. Wenn die Aggregationsoperation deaktiviert ist, beginnt der Verbindungstest möglicherweise mit der Ausführung der Verbindungsoperation. Die Verbindungsbeobachtungstechnik kann bestimmen, ob die Abfrageausführung kostengünstiger wäre, wenn die Aggregationsoperation aktiviert ist. Die Aggregationsoperation kann so konfiguriert werden, dass sie sich selbst ausschaltet, wenn die Daten nicht ausreichend reduziert sind (z.B. um mehr als einen Schwellenwert).
  • Eine hierin offenbarte Abfrageoptimierungstechnik kann als adaptive Aggregationstechnik bezeichnet werden. Bei einer Ausführungsform enthält die adaptive Aggregationstechnik ein Platzieren von Aggregationsoperationen in einem Abfrageplan. Die Aggregationsoperationen können auf der Erstellungsseite und/oder der Sondierungsseite einer oder mehrerer Verbindungsoperationen platziert werden. Bei einer Ausführungsform wird eine Aggregationsoperation auf der Erstellungsseite einer Verbindungsoperation platziert und ausgeführt, bevor die Sondierungsseite dieser Verbindungsoperation ausgeführt wird. Die adaptive Aggregationstechnik kann ein Erstellen einer Hash-Tabelle mit einer Reihe unterschiedlicher Werte umfassen. Die Aggregation kann durchgeführt werden und Informationen können zusammen mit der Bloom-Filter-Aktivität auf die Erstellungsseite übergeben werden. Die Aggregationsoperation kann mit der regelmäßigen Aggregation beginnen und die Reduktionsrate überwachen. Auf der Grundlage der Reduktionsrate kann eine Eigenschaft der Verbindungsoperation bestimmt werden. Diese Informationen können der Sondierungsseite der Verbindungsoperation zur Verfügung gestellt werden. Bei der adaptiven Aggregationstechnik kann die Aggregationsoperation selbst zwischen Erstellungsseite und Sondierungsseite wechseln. Die Aggregationsoperation kann über Aggregationsinformationen verfügen, die vom Bloom-Filter aus leicht verfügbar sind, und kann entscheiden, ohne zur Sondierungsseite zu gehen.
  • Bei wenigstens einer Ausführungsform ist die adaptive Aggregationstechnik während der Laufzeit adaptiv. Bei einer Ausführungsform trifft die Aggregationsoperation Entscheidungen auf der Grundlage von Daten aus einem oder mehreren Bloom-Filtern und schaltet sich selbst aus, wenn die Aggregationsoperation bestimmt, dass die Aggregation nicht vorteilhaft ist (z.B. in Bezug auf Zeit und/oder Ressourcen, die zur Verarbeitung der entsprechenden Abfrage erforderlich sind). Bei einer Ausführungsform bestimmt die Aggregationsoperation, dass die Verbindung sehr selektiv ist (z.B. mehr als ein Selektivitätsschwellenwert) und die Aggregation selbst nicht reduktiv genug ist (z.B. ist eine Reduktionsrate kleiner als eine Schwellenwertreduktionsrate). Bei einer Ausführungsform bestimmt die Aggregationsoperation die Explosivität der Verbindung und kann die Explosivität der Erstellungsseite und die Explosivität der Sondierungsseite der Verbindung weiter bestimmen. Basierend auf einer oder einer beliebigen Kombination solcher Kosteneffizienzmetriken kann die Aggregationsoperation eine Entscheidung darüber treffen, ob sie aktiv oder inaktiv sein soll (z.B. in einem Durchgangsmodus).
  • Bei einer Ausführungsform wird die adaptive Aggregation und Abfragemodifikation zur Laufzeit durchgeführt und ist daher nicht darauf angewiesen, dass ein Abfrageoptimierer in erster Instanz einen optimalen Abfrageplan entwickelt hat. Bei einer solchen Ausführungsform werden Aggregationsoperationen und/oder Duplikatentfernungsoperationen im gesamten Abfrageplan platziert und so konfiguriert, dass sie automatisch deaktiviert werden, wenn bestimmt wird, dass ihre jeweilige Operation mit diesem Datensatz (oder dieser Kombination aus Datensatz und Abfrage) nicht wirksam ist. Dies kann die Effizienz der Abfrage erhöhen und die Wahrscheinlichkeit erhöhen, dass die tatsächlich verwendeten und nicht deaktivierten Abfragemodifikationstechniken vorteilhafte Techniken für diesen Datensatz und diese Abfrage sind. Dies unterscheidet sich von herkömmlichen Abfrageoptimierern, von denen bekannt ist, dass sie häufig ineffiziente Abfrageoptimierungstechniken auswählen (und dabei bleiben). In Übereinstimmung mit Ausführungsformen der vorliegenden Offenbarung sind Abfragemodifikationstechniken zur Laufzeit adaptiv, um die Wahrscheinlichkeit zu erhöhen, dass die Abfrage effizienter ausgeführt wird.
  • Bei einer Ausführungsform enthält eine Abfragemodifikationsinstanz eine oder mehrere der duplikatunempfindlichen Techniken, die Verbindungsbeobachtungstechnik und die adaptive Aggregationstechnik. Jede und/oder jede Kombination dieser Techniken kann im Zusammenhang mit der Verarbeitung einer bestimmten Abfrage verwendet werden.
  • 4 zeigt ein Beispiel für einen erweiterten Abfrageplan 400 gemäß wenigstens einer Ausführungsform. Bei wenigstens einer Ausführungsform kann der erweiterte Abfrageplan 400 in einer Instanz implementiert sein, in der eine Aggregation 402 nicht duplikatunempfindlich ist. Ein Beispiel für eine Aggregationsoperation, die nicht duplikatunempfindlich ist, ist eine Operation, die eine Zähl-, Summen- oder andere Aggregationsfunktion verwendet, deren Endergebnis von jedem Wert - einschließlich jeder Instanz doppelter Werte - innerhalb des entsprechenden Datensatzes abhängt. Der erweiterte Abfrageplan 400 enthält eine Verbindungsoperation. Bei einer Ausführungsform ist die Verbindungsoperation eine Hash-Verbindung und enthält eine Verbindungserstellung 404 und eine Verbindungssondierung 406. Im erweiterten Abfrageplan 400 wird eine Aggregation 408 unter der Verbindungssondierung 406 nach unten gedrückt (z.B. eingefügt). Bei einer Ausführungsform verwendet die Aggregation 408 ein Bloom-Filter 410, um unterschiedliche Werte im Datensatz zu identifizieren und eine Reduktionsrate für die Aggregation 408 zu bestimmen. Die Verbindungserstellung 404 kann eine Hash-Tabelle basierend auf unterschiedlichen Werten im Datensatz generieren.
  • Bei einer Hash-Verbindung kann zunächst eine Hash-Tabelle auf der kleineren Relation bzw. Beziehung vorbereitet werden. Die Hash-Tabelle kann den Verbindungsschlüssel und seine Zeile enthalten. Da auf die Hash-Tabelle zugegriffen werden kann, indem eine Hash-Funktion auf den Verbindungsschlüssel angewendet wird, kann es effizienter sein, die Zeilen eines bestimmten Verbindungsschlüssels unter Verwendung der Hash-Tabelle zu finden, als die ursprüngliche Beziehung zu scannen. Nachdem die Hash-Tabelle erstellt ist, kann die größere Beziehung bzw. Relation gescannt werden, um relevante (z.B. übereinstimmende) Zeilen in der kleineren Beziehung zu finden, indem auf die Hash-Tabelle Bezug genommen wird. Die erste Phase wird als Verbindungserstellung 404 und die zweite Phase wird als Verbindungssondierung 406 bezeichnet. Die Verbindungsbeziehung, auf der die Hash-Tabelle aufgebaut ist, kann als Erstellungs-Eingabe (oder Erstellungsseite) bezeichnet werden, und die andere Eingabe kann als Sondierungs-Eingabe (oder Sondierungsseite) bezeichnet werden. Der erweiterte Abfrageplan 400 kann mit verschiedenen Verbindungsoperationen implementiert werden und wird nicht unbedingt mit einer Hash-Verbindung implementiert.
  • Bei einer beispielhaften Instanz für die Ausführung des erweiterten Abfrageplans 400 schließt die Verbindungserstellung 404 auf der linken Seite ihre Operation ab, bevor die Aggregation 408 auf der rechten Seite beginnt. Die Aggregation 408 beginnt dann mit der Durchführung einer Aggregation basierend auf einer Ausgabe 414 des Bloom-Filters 410, die Informationen bei der Informationsübertragung 412 von der Verbindungserstellung 404 empfängt. Die Aggregation 408 kann ihre besondere Aggregationsfunktion ausführen und die Reduktionsrate ihrer Aggregationsfunktion basierend auf der Ausgabe 414 aus dem Bloom-Filter 410 überwachen. Bei einer Ausführungsform ist die Aggregation 408 insofern adaptiv, als dass sie so konfiguriert ist, dass sie sich selbst ausschaltet, wenn ihre zugehörige Reduktionsrate eine vordefinierte Schwellenwertreduktionsrate nicht erreicht und/oder wenn die Explosivität der Verbindung einen vordefinierten Explosivitätsschwellenwert überschreitet, und zwar als Beispiele.
  • 5 stellt ein Beispiel für eine Datenverarbeitungsplattform 500 gemäß wenigstens einer Ausführungsform dar. Bei verschiedenen Ausführungsformen kann die Datenverarbeitungsplattform 500 zur Durchführung einer oder mehrerer der Operationen eines oder mehrerer der hierin offenbarten Verfahren (einschließlich Prozessen und dergleichen) verwendet werden. Wie es in 5 gezeigt ist, enthält die Datenverarbeitungsplattform 500 einen Datenbankmanager 502, der selbst den Ressourcenmanager 302 und die Ausführungsplattform 316 enthält, wobei die Ausführungsplattform 316 einen oder mehrere Ausführungsknoten (z. B. Server, Worker, Threads und/oder dergleichen) enthalten kann. Der Datenbankmanager 502 muss kein definiertes physisches Gerät sein, obwohl dies der Fall sein könnte, sondern wird hier im Allgemeinen als Abkürzung verwendet, um auf die Kombination aus dem Ressourcenmanager 302 und der Ausführungsplattform 316 zu verweisen.
  • Der Ressourcenmanager 302 kann für die Verwaltung von „externen“ Datenbankaufgaben - wie beispielsweise Abfrageanforderungen - konfiguriert werden, die z.B. von einem Client- bzw. Kundenkonto empfangen werden. Der Ressourcenmanager 302 kann mit einer beliebigen Anzahl N mehrerer Benutzer gekoppelt sein, wie beispielsweise einem Benutzer 1 504, einem Benutzer 2 506 und/oder bis zu einem Benutzer N 508. Bei bestimmten Implementierungen kann der Ressourcenmanager 302 eine beliebige Anzahl von Benutzern unterstützen, die Zugriff auf die Datenverarbeitungsplattform 500 wünschen. Bei wenigstens einer Ausführungsform werden der Benutzer 1 504, der Benutzer 2 506 bis zum Benutzer N 508 nicht als Teil der Datenverarbeitungsplattform 500 betrachtet, sondern sie interagieren vielmehr mit der Datenverarbeitungsplattform 500. Der Benutzer 1 504, der Benutzer 2 506 und/oder bis zum Benutzer N 508 können/kann zum Beispiel Endbenutzer enthalten, die Datenspeicherungs- und/oder Datenabrufanforderungen bereitstellen, Systemadministratoren, die die hierin beschriebenen Systeme, Verfahren und Vorrichtungen managen, und/oder einen oder mehrere andere Benutzer, Komponenten, Vorrichtungen und/oder dergleichen, die mit dem Ressourcenmanager 302 interagieren. Der Benutzer 1 504, der Benutzer 2 506 und/oder bis zum Benutzer N 508 können/kann hierin als Clients, Kunden und/oder dergleichen bezeichnet werden (z.B. enthalten) und können/kann eine (z.B. direkte) Verbindung zu einer oder mehreren Nutzungen haben, wie es hierin angegeben ist. Jeder von dem Benutzer 1 504, dem Benutzer 2 506 bis zum Benutzer N 508 kann mit einer primären Nutzung verbunden sein und die Fähigkeit haben, die Verbindung von der primären Nutzung auf eine sekundäre Nutzung zu übertragen, und zwar als eine beispielhafte Architektur.
  • Der Ressourcenmanager 302 kann mit einem Speicher der Metadaten 518 gekoppelt sein, der bei einer Ausführungsform mit der Gesamtheit der datenverarbeitenden Daten verknüpft ist, die auf der Datenverarbeitungsplattform 500 gespeichert sind. Bei einigen Ausführungsformen enthalten die Metadaten 518 eine Zusammenfassung von Daten, die in entfernten Datenspeichersystemen gespeichert sind, sowie Daten, die aus einem lokalen Cache verfügbar sind. Zusätzlich können die Metadaten 518 Informationen darüber enthalten, wie Daten in entfernten Datenspeichersystemen und in lokalen Caches organisiert sind. Die Metadaten 518 können es Systemen und Diensten ermöglichen, zu bestimmen, ob ein Datenelement verarbeitet werden muss (z.B. in Verbindung mit einer gegebenen Abfrage), ohne die tatsächlichen Daten von einer Speichervorrichtung zu laden oder darauf zuzugreifen.
  • Der Ressourcenmanager 302 kann weiterhin mit der Ausführungsplattform 316 gekoppelt sein, die mehrere Rechenressourcen bereitstellen kann, die verschiedene Datenspeicherungs- und Datenabrufaufgaben ausführen. Bei einer Ausführungsform gibt es eine oder mehrere Instanzen der Ausführungsplattform 316, die zum Ausführen von Client-Aufgaben verwendet werden, wie beispielsweise Datenbankabfragen und/oder „interne“ Datenbankaufgaben wie das Aktualisieren bzw. Updaten von Metadaten, das Clustern einer Tabelle, das Generieren einer materialisierten Ansicht und so weiter. Bei einer solchen Ausführungsform kann es auch eine oder mehrere Instanzen der Ausführungsplattform 316 geben, die für die inkrementelle Merkmals-Entwicklung und/oder das Testen verwendet werden, und jede solche Instanz der Ausführungsplattform 316 kann von jeder Client-Instanz der Ausführungsplattform 316 getrennt sein, so dass die Client-Verarbeitung nicht durch Merkmals-Entwicklungsaufgaben beeinträchtigt wird. Die Ausführungsplattform 316 kann mit mehreren Datenspeichervorrichtungen gekoppelt sein, wie beispielsweise einer oder mehreren einer Datenspeichervorrichtung 512, einer Datenspeichervorrichtung 514 und einer Datenspeichervorrichtung 516, die Teil einer Speicherplattform 510 sind. Obwohl in 5 drei Datenspeichervorrichtungen dargestellt sind, kann die Ausführungsplattform 316 in der Lage sein, mit einer beliebigen Anzahl von Datenspeichervorrichtungen zu kommunizieren. Bei einigen Ausführungsformen sind eine oder mehrere von der Datenspeichervorrichtungen 512, der Datenspeichervorrichtung 514 und der Datenspeichervorrichtung 516 cloudbasierte Speichervorrichtungen, die sich an einem oder mehreren geografischen Standorten befinden. Zum Beispiel kann eine oder können mehrere von der Datenspeichervorrichtungen 512, die der Datenspeichervorrichtung 514 und der Datenspeichervorrichtung 516 Teil einer öffentlichen Cloudinfrastruktur oder einer privaten Cloudinfrastruktur sein. Eine oder mehrere von der Datenspeichervorrichtungen 512, der Datenspeichervorrichtung 514 und der Datenspeichervorrichtung 516 kann oder können Festplattenlaufwerke (HDDs), Festkörperspeicher (SSDs), Speichercluster oder andere Datenspeichertechnologien sein oder umfassen. Zusätzlich kann die Speicherplattform 510 verteilte Dateisysteme (wie beispielsweise Hadoop Distributed File Systems (HDFS)), Objektspeichersysteme und dergleichen enthalten.
  • Bei bestimmten Ausführungsformen könnte eine oder könnten mehrere der in 5 dargestellten Kommunikationsverbindungen über ein oder mehrere Datenkommunikationsnetze implementiert sein, die irgendein Kommunikationsprotokoll und irgendeine Art von Kommunikationsmedium verwenden können. Bei einigen Ausführungsformen sind die Datenkommunikationsnetze eine Kombination von zwei oder mehr Datenkommunikationsnetzen (oder Unter- bzw. Teilnetzen), die miteinander gekoppelt sind. Bei alternativen Ausführungsformen werden diese Kommunikationsverbindungen unter Verwendung irgendeiner Art von Kommunikationsmedium und irgendeines Kommunikationsprotokolls implementiert.
  • Wie es in gezeigt ist, sind die Datenspeichervorrichtung 512, die Datenspeichervorrichtung 514 und die Datenspeichervorrichtung 516 von den Rechenressourcen entkoppelt, die im Allgemeinen der Ausführungsplattform 316, dem Ressourcenmanager 302 und dem Datenbankmanager 502 zugeordnet sind. Bei einer Ausführungsform enthält jede von mehreren Datenbanknutzungen eine jeweilige Speicherplattform 510 mit ihren eigenen bzw. mehreren Datenspeichervorrichtungen. Diese Architektur unterstützt dynamische Änderungen an der Datenverarbeitungsplattform 500 basierend auf den sich ändernden Datenspeicherungs-/Abrufanforderungen sowie den sich ändernden Anforderungen von Benutzern und Systemen, die auf die Datenverarbeitungsplattform 500 zugreifen. Die Unterstützung dynamischer Änderungen ermöglicht eine schnelle Skalierung der Datenverarbeitungsplattform 500 als Reaktion auf sich ändernde Anforderungen an die Systeme und Komponenten innerhalb der Datenverarbeitungsplattform 500. Die Entkopplung der Rechenressourcen von den Datenspeichergeräten unterstützt die Speicherung großer Datenmengen, ohne dass entsprechend große Rechenressourcen benötigt werden. Auf ähnliche Weise unterstützt diese Entkopplung der Rechenressourcen eine signifikante Erhöhung der zu einem bestimmten Zeitpunkt verwendeten Rechenressourcen, ohne dass eine entsprechende Erhöhung der verfügbaren Datenspeicherressourcen erforderlich ist.
  • Der Datenbankmanager 502, der Ressourcenmanager 302, die Metadaten 518, die Ausführungsplattform 316 und die Speicherplattform 510 sind in 5 als Komponenten dargestellt. Jedes von dem Ressourcenmanager 302, den Metadaten 518, der Ausführungsplattform 316 und der Speicherplattform 510 kann jedoch als verteiltes System implementiert werden (z.B. verteilt auf mehrere Systeme/Plattformen an mehreren geografischen Standorten). Zusätzlich können der Datenbankmanager 502, der Ressourcenmanager 302, die Metadaten 518, die Ausführungsplattform 316 und die Speicherplattform 510 je nach Änderungen der von Benutzern empfangenen Anforderungen und den sich ändernden Anforderungen der Datenverarbeitungsplattform 500 (unabhängig voneinander) nach oben oder unten skaliert werden. Somit ist die Datenverarbeitungsplattform 500 dynamisch und unterstützt regelmäßige Änderungen, um den sich ändernden Datenverarbeitungsanforderungen gerecht zu werden.
  • 6 stellt ein Beispiel für eine Ressourcenmanager-Architektur 600 gemäß wenigstens einer Ausführungsform dar. Wie es in 6 gezeigt ist, enthält der Ressourcenmanager 302 einen Zugriffsmanager 602 und einen Schlüsselmanager 604, die mit einem Datenspeicher 606 gekoppelt sind. Der Zugriffsmanager 602 übernimmt Authentifizierungs- und Autorisierungsaufgaben für die hier beschriebenen Systeme. Der Schlüsselmanager 604 verwaltet die Speicherung und Authentifizierung von Schlüsseln, die während der Authentifizierungs- und Autorisierungsaufgaben verwendet werden. Beispielsweise können der Zugriffsmanager 602 und der Schlüsselmanager 604 die Schlüssel managen, die für den Zugriff auf Daten verwendet werden, die auf entfernten Speichervorrichtungen gespeichert sind (z.B. Datenspeichervorrichtungen auf der Speicherplattform 510). Wie es hierin verwendet ist, können die entfernten Speichervorrichtungen auch als „persistente Speichervorrichtungen“ oder „gemeinsam genutzte bzw. geteilte Speichervorrichtungen“ bezeichnet werden. Ein Anforderungsverarbeitungsdienst 608 managt empfangene Datenspeicheranforderungen und Datenabrufanforderungen (z.B. Aufträge, die für Datenbankdaten ausgeführt werden sollen). Zum Beispiel kann der Anforderungsverarbeitungsdienst 608 die Daten bestimmen, die zur Verarbeitung einer bestimmten empfangenen Datenspeicheranforderung oder Datenabrufanforderung erforderlich sind. Die erforderlichen Daten können in einem Cache innerhalb der Ausführungsplattform 316 (wie es hierin näher erläutert ist) oder in einer Datenspeichervorrichtung in der Speicherplattform 510 gespeichert werden. Ein Verwaltungskonsolendienst 610 unterstützt einen Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager. Zusätzlich erhält der Verwaltungskonsolendienst 610 möglicherweise eine Anforderung zum Ausführen eines Auftrags und zum Überwachen der Arbeitsauslastung auf dem System.
  • Bei der dargestellten Ausführungsform enthält der Ressourcenmanager 302 auch einen Job-Compiler 612, einen Job-Optimierer 614 und einen Job-Ausführer 616. Der Job-Compiler 612 kann einen Job in mehrere diskrete Aufgaben analysieren bzw. zergliedern bzw. parsen und einen Ausführungscode für jede der mehreren diskreten Aufgaben generieren bzw. erzeugen. Der Job-Optimierer 614 kann ein Verfahren auswählen, um die mehreren diskreten Aufgaben basierend auf den zu verarbeitenden Daten auszuführen. Der Job-Optimierer 614 kann auch verschiedene Datenbereinigungsvorgänge und andere Datenoptimierungstechniken verarbeiten, um Geschwindigkeit und Effizienz der Ausführung des Auftrags zu verbessern. Der Job-Ausführer 616 kann den Ausführungscode für empfangene Aufträge (eine empfangene Abfrage) oder wie vom Ressourcenmanager 302 bestimmt ausführen.
  • Weiterhin sendet bei der dargestellten Ausführungsform ein Job-Planer und -Koordinator 618 empfangene Jobs an die entsprechenden Dienste oder Systeme zur Kompilierung, Optimierung und Abfertigung an die Ausführungsplattform 316. Beispielsweise können Aufträge in dieser priorisierten Reihenfolge priorisiert und verarbeitet werden. Bei einer Ausführungsform bestimmt der Job-Planer und -Koordinator 618 eine Priorität für interne Jobs, die vom Ressourcenmanager 302 mit anderen „externen“ Jobs wie Benutzerabfragen geplant werden, die von anderen Systemen geplant werden können, aber die gleichen Verarbeitungsressourcen in der Ausführungsplattform 316 verwenden können. Bei einigen Ausführungsformen identifiziert der Job-Planer und -Koordinator 618 bestimmte Knoten in der Ausführungsplattform 316 oder ordnet bzw. weist sie zu, um bestimmte Aufgaben zu verarbeiten. Ein Manager für ein virtuelles Lager 620 kann die Operation bzw. den Betrieb mehrerer virtueller Lager managen, die in der Ausführungsplattform 316 implementiert sind. Wie es nachstehend diskutiert wird, enthält jedes virtuelle Lager bei wenigstens einer Ausführungsform mehrere Ausführungsknoten, die jeweils einen Cache und einen Prozessor enthalten.
  • Zusätzlich enthält der Ressourcenmanager 302 bei der dargestellten Ausführungsform einen Konfigurations- und Metadatenmanager 622, der die Informationen verwalten kann, die sich auf die Daten beziehen, die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches (d.h. Caches in der Ausführungsplattform 316) gespeichert sind. Bei einigen Ausführungsformen verwendet der Konfigurations- und Metadatenmanager 622 die Metadaten 518, um zu bestimmen, auf welche Datendateien zugegriffen werden muss, um Daten für die Verarbeitung einer bestimmten Aufgabe oder eines bestimmten Auftrags abzurufen. Ein Überwachungs- und Arbeitslast-Analysierer 624 kann vom Ressourcenmanager 302 ausgeführte Prozesse überwachen und die Verteilung von Aufgaben (z.B. Arbeitslast) auf die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform 316 managen. Der Überwachungs- und Arbeitslast-Analysierer 624 können bei Bedarf auch Aufgaben basierend auf sich ändernden Arbeitslasten auf der gesamten Datenverarbeitungsplattform 500 neu verteilen und Aufgaben basierend auf einer Abfrage-Arbeitslast eines Benutzers (d.h. einer „externen“), die auch von der Ausführungsplattform 316 verarbeitet werden kann, weiter verteilen. Der Konfigurations- und Metadatenmanager 622 sowie der Überwachungs- und Arbeitslast-Analysierer 624 sind mit einem Datenspeicher 626 gekoppelt. Die Datenspeicherung 606 und die Datenspeicherung 626 in 6 können alle Datenspeichervorrichtungen innerhalb der Datenverarbeitungsplattform 500 darstellen. Zum Beispiel können der Datenspeicher 606 und der Datenspeicher 626 Caches in der Ausführungsplattform 316, irgendeine der Datenspeichervorrichtung 512, der Datenspeichervorrichtung 514 und/oder der Datenspeichervorrichtung 516 in der Speicherplattform 510 und/oder eine andere Speichervorrichtung darstellen.
  • Bei der dargestellten Ausführungsform umfasst der Ressourcenmanager 302 auch ein Transaktionsmanagement- und Zugriffssteuerungsmodul 628, das verschiedene Aufgaben und andere Aktivitäten im Zusammenhang mit der Verarbeitung von Datenspeicheranforderungen und Datenzugriffsanforderungen managen kann. Zum Beispiel kann das Transaktionsmanagement- und Zugriffssteuerungsmodul 628 einen konsistenten und synchronisierten Zugriff auf Daten durch mehrere Benutzer und/oder Systeme ermöglichen. Da mehrere Benutzer und/oder Systeme gleichzeitig auf dieselben Daten zugreifen können, müssen Änderungen an den Daten synchronisiert werden, um sicherzustellen, dass jeder Benutzer und/oder jedes System mit der aktuellen Version der Daten arbeitet. Das Transaktionsmanagement- und Zugriffssteuerungsmodul 628 kann die Kontrolle über verschiedene Datenverarbeitungsaktivitäten an einem einzigen, zentralen Ort im Ressourcenmanager 302 bereitstellen. Bei einigen Ausführungsformen interagiert das Transaktionsmanagement- und Zugriffssteuerungsmodul 628 mit dem Job-Ausführer 616, um das Management verschiedener Aufgaben zu unterstützen, die vom Job-Ausführer 616 ausgeführt werden.
  • 7 stellt ein beispielhaftes Verfahren 700 gemäß wenigstens einer Ausführungsform das. Das Verfahren 700 ist ein Verfahren zum Modifizieren einer Abfrage. Das Verfahren 700 kann von jeder geeigneten Rechenressource (z.B. Vorrichtung(en)) wie dem Datenbankmanager 502, dem Ressourcenmanager 302 oder dem Job-Optimierer 614 als Beispiele durchgeführt werden.
  • Das Verfahren 700 beginnt, und eine Rechenressource bewertet bei einer Operation 702 eine Abfrage, um zu bestimmen, ob die Abfrage dupliziert wird. Die Abfrage ist duplikatunempfindlich, wenn ein Ergebnis der Abfrage nicht davon abhängig ist, wie viele doppelte Werte im Datensatz vorhanden sind und/oder welche Instanz von doppelten Werten im Datensatz vorhanden ist. Eine beispielhafte Abfrage, bei der Duplikate nicht berücksichtigt werden, enthält eine Abfragefunktion zum Bestimmen von Minimal- und Maximalwerten in einem Datensatz. Das Verfahren 700 wird fortgesetzt und eine Rechenressource bestimmt bei einer Operation 704, ob ein Abfrageplan für die Abfrage eine Verbindungsoperation enthält. Das Verfahren 700 wird fortgesetzt und eine Rechenressource drückt in Reaktion auf die Abfrage, die duplikatunempfindlich ist, und den Abfrageplan einschließlich einer Verbindungsoperation, bei einer Operation 706 eine Operation zum Entfernen von Duplikaten (z.B. einen adaptiven Aggregationsoperator) unter die Verbindungsoperation im Abfrageplan. Das Verfahren 700 wird fortgesetzt und eine Rechenressource bestimmt bei einer Operation 708 eine Schwellenwertreduktionsrate für die Operation zum Entfernen von Duplikaten, so dass die Operation zum Entfernen von Duplikaten in Reaktion auf das Nichterreichen der Schwellenwertreduktionsrate ausgeschaltet wird. Die Rechenressource kann die Schwellenwertreduktionsrate basierend auf einem benutzerdefinierten Parameter, basierend auf SQL-Text für die Abfrage, basierend auf Parametern für Abfrageergebnisse und/oder dergleichen bestimmen.
  • 8 stellt ein beispielhaftes Verfahren 800 gemäß wenigstens einer Ausführungsform dar. Das Verfahren 800 ist ein Verfahren zum Verbessern einer Abfrage. Das Verfahren 800 kann von jeder geeigneten Rechenressource (z.B. Vorrichtung(en)) wie dem Datenbankmanager 502, dem Ressourcenmanager 302 oder dem Job-Optimierer 614 als Beispiele durchgeführt werden.
  • Das Verfahren 800 beginnt und eine Rechenressource definiert bei einer Operation 802 einen Abfrageplan für eine Abfrage, wobei der Abfrageplan eine Verbindungsoperation enthält. Eine Rechenressource erweitert bei einer Operation 804 den Abfrageplan, indem ein Aggregationsoperator unter einer Sondierungsseite der Verbindungsoperation nach unten gedrückt wird. Eine Rechenressource bewirkt bei einer Operation 806, dass eine Erstellungsseite der Verbindungsoperation eine Hash-Tabelle generiert und ein Bloom-Filter einen Wert für die Anzahl der eindeutigen Werte zur Verfügung stellt. Eine Rechenressource bewirkt bei einer Operation 808, dass der Aggregationsoperator eine Eigenschaft der Verbindungsoperation basierend auf dem Bloom-Filter bestimmt. Eine Rechenressource definiert bei einer Operation 810 eine Schwellenwertreduktionsrate für den Aggregationsoperator, so dass sich der Aggregationsoperator ausschaltet, wenn er die Schwellenwertreduktionsrate nicht erreicht. Eine Rechenressource definiert bei einer Operation 812 eine Schwellenwertexplosivität für den Aggregationsoperator, so dass der Aggregationsoperator ausgeschaltet wird, wenn die Verbindungsoperation die Schwellenwertexplosivität überschreitet.
  • 9 stellt ein beispielhaftes Verfahren 900 gemäß wenigstens einer Ausführungsform dar. Das Verfahren 900 ist ein Verfahren zur adaptiven Verbesserung eines Abfrageplans. Bei verschiedenen Ausführungsformen könnte das Verfahren 900 durch jede Rechen- und Kommunikationsvorrichtung oder jedes System solcher Vorrichtungen durchgeführt werden, das geeignet ausgestattet, programmiert und konfiguriert ist, um die hierin beschriebenen Operationen auszuführen. Als Beispiel und nicht als Einschränkung wird das Verfahren 900 im Folgenden als vom Datenbankmanager 502 ausgeführt beschrieben, was einen oder mehrere Aspekte des Verfahrens 900 umfassen kann, das vom Ressourcenmanager 302 durchgeführt wird, einen oder mehrere Aspekte des Verfahrens 900, das von der Ausführungsplattform 316 durchgeführt wird, und/oder einen oder mehrere Aspekte des Verfahrens 900, das von einer oder mehreren anderen funktionalen Komponenten der Datenbankmanager 502 durchgeführt wird.
  • Bevor auf die speziell beschriebenen Operationen des Verfahrens 900 eingegangen wird, wird darauf hingewiesen, dass das Verfahren 900 bei einigen Ausführungsformen darin besteht, einen oder mehrere der hierin als adaptive Aggregation (AD) bezeichneten Operatoren in einen Abfrageplan zu „streuen“. Das Streuen bzw. die Berieselung kann das Einfügen von AT-Operatoren unterhalb von Verbindungen beinhalten, die unter Aggregationsoperatoren an einem oder mehreren Knoten (z.B. an jedem Knoten) liegen, wobei dies semantisch zulässig ist, da die Semantik der Abfrage erhalten bleibt. Sobald diese Berieselung bzw. Streuung abgeschlossen ist, wird der (modifizierte) Abfrageplan ausgeführt, wobei die gestreuten AT-Operatoren zunächst auf einen aktiven Status eingestellt sind (siehe unten). Im Falle jedes eingefügten AT-Operators werden eine oder mehrere der hierin als Kosteneffizienzmetriken bezeichneten Metriken überwacht, und ein bestimmter AT-Operator wird abgeschaltet, wenn die eine oder mehrere überwachte Metriken auf eine Schwellenwertineffizienzbedingung hinweisen (z.B. entweder über oder unter einem bestimmten Schwellenwert liegen, abhängig von der Art der überwachten Metrik). Bei einem Beispiel ist ein spezialisierter Typ von AT-Operator ein Operator für einen adaptiven Versuch von Deduplizierungen, bei dem der Unterschied darin besteht, dass ein bestimmter Operator für einen Versuch von Deduplizierungen nur unterschiedliche (deduplizierte) Operationen ausführt, während ein adaptiver Aggregationsoperator auch die Aggregation durchführt.
  • Somit werden AT-Operatoren, wo es zulässig ist, eingefügt, aktiviert und dann selektiv deaktiviert, wenn sie nicht helfen (z.B. nicht genug helfen). Wie es oben erwähnt ist, kann ein herkömmlicher Abfrageoptimierer bei der Aggregationsplatzierung „falsch raten“, so dass Ausführungsformen der vorliegenden Offenlegung die Ratearbeit beseitigen und sich nicht auf den Abfrageoptimierer verlassen, um einen endgültigen „perfekten“ Plan zu erstellen: AT-Operatoren werden eingefügt und dann selektiv aktiv oder deaktiviert mit dem Ziel, die Gesamteffizienz der Verarbeitung der zugehörigen Abfrage zu verbessern. Als solche beinhalten Ausführungsformen der vorliegenden Offenbarung das Hinunterdrücken (z.B. Einfügen) von AT-Operatoren und/oder anderen Aggregationen, bei denen die Laufzeitadaptivität der Ausführungsformen der vorliegenden Offenbarung das Risiko einer allgemeinen Leistungsverschlechterung beseitigt oder zumindest stark reduziert. Im Rahmen dieser laufzeitadaptiven Strategie wird, wie unten und an anderer Stelle hierin beschrieben, anerkannt, dass die zu verarbeitenden Daten nicht völlig duplikatfrei sein müssen, damit die Reduktion wirksam ist. Mit anderen Worten ist die partielle Deduplizierung immer noch besser als nichts und in der Tat sehr hilfreich.
  • In Bezug auf das Verfahren 900 erhält der Datenbankmanager 502 bei einer Operation 902 einen Abfrageplan, der einer Abfrage entspricht. Bei einer Ausführungsform kann dies ein Empfangen der Abfrage, ein Generieren einer analysierten bzw. geparsten Abfrage zumindest teilweise durch Analysieren bzw. Parsen der Abfrage und ein Kompilieren des Abfrageplans basierend zumindest teilweise auf der analysierten bzw. geparsten Abfrage beinhalten. Als Beispiel für einen Abfrageplan, den der Datenbankmanager 502 bei einer Operation 902 erhalten kann, wird die Aufmerksamkeit auf 10 gelenkt, die einen beispielhaften Abfrageplan 1000 gemäß wenigstens einer Ausführungsform darstellt.
  • Ausgehend von oben nach unten endet der Abfrageplan 1000 mit einer Aggregation, die als „AGG1“ bezeichnet ist. Vor AGG1 ist eine Verbindung, die als „JOIN1“ bezeichnet ist. Die linke Eingabe von JOIN1 ist eine erste Tabelle T1, die durch eine Funktion SCAN1 bezeichnet ist. Die rechte Eingabe für JOIN1 ist eine zweite Verbindung mit der Bezeichnung „JOIN2“. Die linke Eingabe von JOIN2 ist eine dritte Verbindung, die mit „JOIN3“ bezeichnet ist, während die rechte Eingabe die Daten aus einer Tabelle T3 mit der Bezeichnung „SCAN3“ sind. Die linke Eingabe von JOIN3 sind die Daten einer Tabelle T2, die als „SCAN2“ bezeichnet ist, und die rechte Eingabe von JOIN3 ist die Ausgabe einer zweiten Aggregation, die als „AGG2“ bezeichnet ist. Die Eingabe in AGG2 ist eine vierte Verbindung mit der Bezeichnung „JOIN4“, bei der die linke und die rechte Eingabe die Daten aus den Tabellen T4 und T5 mit der Bezeichnung „SCAN4“ bzw. „SCAN5“ sind.
  • Wendet man sich wieder der 9 zu, identifiziert der Datenbankmanager 502 bei einer Operation 904 eine oder mehrere Verbindung-Aggregation-Sequenzen im Abfrageplan 1000, wobei jede identifizierte Verbindung-Aggregation-Sequenz einen Verbindungsoperator enthält, der unter einem Aggregationsoperator positioniert ist. Im Abfrageplan 1000 gibt es zwei Verbindung-Aggregation-Sequenzen: JOIN1→AGG1 und JOIN4→AGG2. In beiden ist die jeweilige Verbindung unmittelbar unterhalb der entsprechenden Aggregation im Abfrageplan 1000 positioniert. Es könnte jedoch auch der Fall sein, dass eine Mehrfachverbindung-Aggregation-Sequenz identifiziert wurde, in der eine Reihe von Mehrfachverbindungen unterhalb einer gegebenen Aggregation positioniert ist. Ein solches Beispiel wäre JOIN3→JOIN2→JOIN1→AGG1. Der Einfachheit halber werden hier die Verbindung-Aggregation-Sequenzen JOIN1→AGG1 und JOIN4→AGG2 erläutert.
  • Bei einer Operation 906 generiert der Datenbankmanager 502 zumindest teilweise einen modifizierten Abfrageplan, indem er für jede bei einer Operation 904 identifizierte Verbindung-Aggregation-Sequenz bestimmt, ob der Aggregationsoperator in der Verbindung-Aggregation-Sequenz ein duplikatunempfindlicher Aggregationsoperator ist, und wenn ja, dann einen adaptiven Duplikatentfernungsoperator (z.B. einen AT-Operator) unter wenigstens einer Eingabe des entsprechenden Verbindungsoperators einfügt. Beispiele für duplikatunempfindliche Aggregationsoperatoren enthalten einen Aggregationsoperator zum Suchen eines Maximalwerts, einen Aggregationsoperator zum Suchen eines Minimalwerts und einen Aggregationsoperator zum Suchen der Anzahl eindeutiger Werte. Andere Beispiele könnten hier ebenfalls aufgeführt werden. Wie es oben diskutiert ist, werden hier die Einzelverbindung-Aggregation-Sequenzen JOIN1→AGG1 und JOIN4→AGG2 als Beispiel diskutiert, aber bei einigen Ausführungsformen beinhaltet die Operation 906 ein Einfügen eines adaptiven Duplikatentfernungsoperators unter einer Reihe von mehreren Verbindungen, die einer Aggregation in einem Abfrageplan vorausgehen.
  • Bei der Ausführung der Operation 906 kann der Datenbankmanager 502 an jedem Knoten des Abfrageplans 1000 eine Bewertung von oben nach unten vornehmen, um die semantisch zulässigen Aggregationsoperatoren zu identifizieren, die an jedem dieser Knoten eingefügt werden könnten, so dass die gesamte Semantik des Abfrageplans erhalten bleibt. Bei einigen Ausführungsformen werden solche Beurteilungen der semantischen Zulässigkeit oberhalb einer gegebenen Verbindung einer gegebenen Verbindung-Aggregation-Sequenz vorgenommen, und diese bestimmte Eigenschaft wird dann im Wesentlichen unter die gegebene Verbindung gedrückt, zumindest als Teil der Bestimmung einer Liste semantisch zulässiger Aggregationsoperatoren für ein Einfügen unter der gegebenen Verbindung. Wie es hierin beschrieben ist, wird ein adaptiver Duplikatentfernungsoperator (z.B. ein AT-Operator) bei Ausführungsformen dieser Offenbarung als Spezialfall eines Aggregationsoperators behandelt, da er kein singuläres Ergebnis (z.B. einen identifizierten Maximalwert) erzeugt.
  • Nach der Ausführung der Operation 906 kann der Datenbankmanager 502 einen modifizierten (z.B. erweiterten) Abfrageplan generiert haben, wie z.B. den beispielsweise modifizierten Abfrageplan 1100, der in 11 dargestellt ist. Wie es in 11 zu sehen ist, wurden zwei AT-Operatoren in den Abfrageplan 1000 eingefügt, um zum modifizierten Abfrageplan 1100 zu gelangen: ein AT1 1102 und ein AT2 1104. Bei der dargestellten Ausführungsform wurden sowohl der AT1 1102 als auch der AT2 1104 unterhalb der rechten Seite von JOIN1 bzw. JOIN4 eingefügt. Bei anderen Ausführungsformen könnten eine oder beide von AT1 1102 und AT2 1104 unterhalb der linken Seite einer jeweiligen Verbindung eingefügt werden. Bei einigen Ausführungsformen könnte im Falle einer oder beider von JOIN1 und JOIN4 ein AT unter beiden Seiten eingefügt werden. Obwohl es in 11 nicht explizit dargestellt ist, könnten eine oder beide von JOIN1 und JOIN4 die jeweiligen Erstellungsseiten und Sondierungsseiten enthalten.
  • Kehrt man zurück zur 9 und fährt mit dem Verfahren 900 fort, führt der Datenbankmanager 502 bei einer Operation 908 den modifizierten Abfrageplan 1100 aus, um ein Abfrageergebnis zu erhalten, wobei die Ausführung des modifizierten Abfrageplans 1100 für jeden eingefügten adaptiven Duplikatentfernungsoperator (d.h. für jeden von AT1 1102 und AT2 1104) folgendes beinhaltet: (i) anfängliches Arbeiten mit dem eingefügten aktiven adaptiven Duplikatentfernungsoperator; ii) Überwachen wenigstens einer Laufzeitkosteneffizienzmetrik von wenigstens einem der eingefügten adaptiven Duplikatentfernungsoperatoren und des entsprechenden Verbindungsoperators; und (iii) Deaktivieren des eingefügten adaptiven Duplikatentfernungsoperators, wenn die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik auf eine Schwellenwertineffizienzbedingung hinweist.
  • Einige beispielhafte Merkmale von AT1 1102 werden nun mit dem Verständnis beschrieben, dass diese Merkmale mit gleicher Kraft auch für den AT2 1104 und/oder allgemein für jeden eingefügten adaptiven Duplikatentfernungsoperator gemäß der vorliegenden Offenbarung gelten könnten. Bei wenigstens einer Ausführungsform arbeitet der AT1 1102, wenn er aktiv ist, um zumindest einige Datensätze mit doppelten Werten für wenigstens einen Duplikatentfernungsoperatorschlüssel zu entfernen. Bei einigen Ausführungsformen verwendet der AT1 1102 ein Bloom-Filter oder einen anderen ähnlichen Mechanismus, um beobachtete Schlüsselwerte zu verfolgen.
  • Es wird darauf hingewiesen, dass in einigen Fällen, wenn sich die Schlüssel der zugehörigen Verbindung (z.B. JOIN1) von den Duplikatentfernungsoperatorschlüsseln von AT1 1102 unterscheiden, der AT1 1102 angepasst werden kann, um die eingestellte Vereinigung der Verbindungsschlüssel und seiner eigenen Schlüssel zu verwenden. Im Allgemeinen ist der Duplikatentfernungsoperatorschlüssel von AT1 1102 das Attribut (z.B. eine Spalte), in dem der AT1 1102 nach Duplikaten sucht und Zeilen basierend auf einer solchen Duplizierung entfernt. In vielen Fällen ist der Duplikatentfernungsoperatorschlüssel von AT1 1102 derselbe wie der Verbindungsschlüssel, zumindest für die Seite der Verbindung, unter der der 1102 eingefügt worden ist. In einigen Fällen stimmt der Duplikatentfernungsoperatorschlüssel mit einem Aggregationsschlüssel der Aggregation (z.B. AGG1) überein, der über der Verbindung (z.B. JOIN1) positioniert ist, unter der der eingefügte AT1 1102 positioniert ist. Wenn also AGG1 ein Minimum einer Spalte C1 und ein Maximum einer Spalte C2 anstrebt, können C1 und C2 als die Duplikatentfernungsoperatorschlüssel von AT1 1102 eingestellt werden.
  • Wie es bereits erwähnt ist, wird bei einigen Ausführungsformen dann, wenn sie aktiv ist, die Operation des AT1 1102 durch ein Speicherbudget begrenzt. So kann der AT1 1102 Zeilen bis zu seinem Speicherbudget aufnehmen, Datensätze mit Duplikaten seiner Schlüssel suchen und entfernen und, wie es unten ausführlicher beschrieben ist, sich selbst ausschalten (z.B. in einen Durchgangsmodus), wenn er nicht wenigstens eine Schwellenwertverringerung der Anzahl der Zeilen verursacht, die an den richtigen Eingang von JOIN1 ausgegeben werden. Bei einem Einschränken der Operation von AT1 1102 mit einem Speicherbudget wird die Wahrscheinlichkeit einer Leistungsregression verringert, die durch die eingefügte Duplikatentfernungsoperation verursacht wird. Bei wenigstens einer Ausführungsform verwendet der AT1 1102 nur den Hauptspeicher des Workers (z.B. Thread, Ausführungsknoten und/oder dergleichen), in dem er instanziiert wurde. Bei solchen Ausführungsformen überschüttet der AT1 1102 nicht mit Daten (z.B. auf lokale Festplatte oder entfernten Speicher). Aufgrund dieser Eigenschaft garantiert bei solchen Ausführungsformen der AT1 1102 nicht, dass sein Eingabestrom von Datensätzen in Bezug auf seine Duplikatentfernungsoperatorschlüssel, die auch als Deduplizierungsschlüssel bezeichnet werden können, immer vollständig dedupliziert wird. Stattdessen versucht der AT1 1102 zumindest bei einigen Ausführungsformen einfach, Eingabedatensätze bis zu seiner konfigurierten Speicherkapazität zu deduplizieren.
  • In Bezug auf die Deaktivierung beinhaltet zumindest bei einigen Ausführungsformen die Deaktivierung des AT1 1102 das Platzieren des AT1 1102 in einem Durchgangsmodus, in dem Datensätze nicht als Duplikat anderer Datensätze bewertet werden. So beobachtet der AT1 1102 bei einigen Ausführungsformen seine eigenen Ein- und Ausgabedatensätze und schaltet in den Durchgangsmodus, wenn er erkennt, dass er nicht ausreichend effizient (z.B. Schwellenwert) und/oder vorteilhaft ist.
  • Wie es oben erwähnt ist, wird bei wenigstens einer Ausführungsform der AT1 1102 deaktiviert, wenn die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik auf eine Schwellenwertineffizienzbedingung hinweist. Als Beispiel für die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik, die eine Schwellenwertineffizienzbedingung angibt, könnte die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik kleiner als ein entsprechender Schwellenwert sein. Zum Beispiel könnte die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik eine Reduktionsrate sein oder enthalten und könnte die überwachte Laufzeitkosteneffizienzmetrik, die eine Schwellenwertineffizienzbedingung angibt, beinhalten, dass die überwachte Reduktionsrate kleiner als ein Reduktionsratenschwellenwert ist.
  • Als weiteres Beispiel für die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik, die eine Schwellenwertineffizienzbedingung angibt, könnte die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik größer als ein entsprechender Schwellenwert sein. Zum Beispiel könnte die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik ein Explosionsfaktor eines Verbindungsoperators sein oder diesen enthalten und könnte die überwachte Laufzeitkosteneffizienzmetrik, die eine Schwellenwertineffizienzbedingung angibt, beinhalten, dass der überwachte Explosionsfaktor größer als ein Explosionsfaktorschwellenwert ist.
  • Bei einem Beispiel wird ein Explosionsfaktor der Verbindung in Bezug auf eine seiner Eingaben (z.B. Erstellungsseite oder Sondierungsseite) definiert. Daher ist der Explosionsfaktor bei diesem Beispiel definiert als die Anzahl der beobachteten Ausgabezeilen der Verbindung geteilt durch die Anzahl der Eingabezeilen von beiden Seiten der Verbindung. Bei einigen Ausführungsformen gibt der Datenbankmanager 502, sobald der geänderte Abfrageplan 1100 vollständig verarbeitet wurde, ein erhaltenes Abfrageergebnis an die anfordernde Entität (z.B. den Benutzer) aus. Eine solche Ausgabe kann die Form oder ein Speichern einer materialisierten Ansicht, ein Anzeigen eines Berichts, ein Übertragen eines Ergebnisdatensatzes an eine anfordernde Entität und/oder dergleichen annehmen oder umfassen.
  • 12 stellt ein beispielhaftes Verfahren 1200 gemäß wenigstens einer Ausführungsform das. Das Verfahren 1200 ist ein Verfahren zum bedingten Fortsetzen der Ausführung eines Teils eines Abfrageplans. Bei verschiedenen Ausführungsformen könnte das Verfahren 1200 durch jede Rechen- und Kommunikationsvorrichtung oder jedes System solcher Vorrichtungen durchgeführt werden, das geeignet ausgestattet, programmiert und konfiguriert ist, um die hierin beschriebenen Operationen durchzuführen. Als Beispiel und nicht als Einschränkung wird das Verfahren 1200 im Folgenden als vom Datenbankmanager 502 ausgeführt beschrieben, was einen oder mehrere Aspekte des Verfahrens 1200 enthalten kann, das vom Ressourcenmanager 302 durchgeführt wird, einen oder mehrere Aspekte des Verfahrens 1200, das von der Ausführungsplattform 316 durchgeführt wird, und/oder einen oder mehrere Aspekte des Verfahrens 1200, das von einer oder mehreren anderen funktionalen Komponenten der Datenbankmanager 502 durchgeführt wird.
  • Das Verfahren 1200 der 12 ähnelt in gewisser Weise dem Verfahren 900 der 9 und wird daher nicht so detailliert beschrieben. Eine Ähnlichkeit besteht darin, dass beide Verfahren zumindest bei einigen Ausführungsformen die Überwachung einer oder mehrerer Laufzeitkosteneffizienzmetriken eines gegebenen Aggregationsoperators beinhalten, der unter einem Verbindungsoperator in einem Abfrageplan positioniert ist. Ein Unterschied besteht darin, dass der Aggregationsoperator unter einer Verbindung, der bei dem Verfahren 1200 überwacht wird, nicht notwendigerweise ein adaptiver Duplikatentfernungsoperator ist, wie es in den beschriebenen Ausführungsformen des Verfahrens 900 der Fall ist. Sowohl das Verfahren 900 als auch das Verfahren 1200 beinhalten ein selektives Abschalten eines Aggregationsoperators unter einer Verbindung basierend auf einer oder mehreren überwachten Kosteneffizienzmetriken. Weitere Ähnlichkeiten und Unterschiede zwischen dem Verfahren 900 und dem Verfahren 1200 werden sich aus der Ausgewogenheit dieser Beschreibung von 12 ergeben.
  • Wendet man sich nun dem Verfahren 1200 zu, führt der Datenbankmanager 502 bei einer Operation 1202 einen Abfrageplan aus, der einer Abfrage entspricht, wobei der Abfrageplan einen Aggregationsoperator enthält, der unter einem Verbindungsoperator positioniert ist. Als Beispiel könnte der Abfrageplan, der im Zusammenhang mit den beschriebenen Ausführungsformen des Verfahrens 1200 ausgeführt wird, der beispielhafte Abfrageplan 1300 sein, der in 13 dargestellt ist. Im 1300 endet der Abfrageplan 1300, beginnend von oben nach rechts und von links nach rechts, mit einer Aggregation, die als AGG1 1306 bezeichnet wird und eine Ausgabe von einer Verbindung empfängt, die mit JOIN1 1304 bezeichnet ist. Die linke Eingabe von JOIN1 1304 sind die Daten einer Eingabetabelle T1, die als SCAN1 bezeichnet ist, während die rechte Eingabe von JOIN1 1304 die Ausgabe einer Aggregation ist, die als AGG2 1302 bezeichnet ist. Die Eingabe von AGG2 1302 sind die Daten einer Eingabetabelle T2, die als SCAN2 bezeichnet ist.
  • Wie es oben erwähnt ist, ist der Abfrageplan 1300 einer Abfrage zugeordnet. Bei einer Ausführungsform empfängt der Datenbankmanager 502 die Abfrage und generiert aus der empfangenen Abfrage den Abfrageplan 1300. Bei wenigstens einer solchen Ausführungsform generiert der Datenbankmanager 502 zunächst einen anfänglichen Abfrageplan (nicht gezeigt), der den Aggregationsoperator AGG2 1302 nicht enthält, und fügt später AGG2 1302 in diesen anfänglichen Abfrageplan ein, um den Abfrageplan 1300 zu generieren. Andere Sequenzen der Generierung des Abfrageplans 1300 könnten bei verschiedenen Ausführungsformen ebenfalls verwendet werden.
  • Wie es in 13 dargestellt ist, enthält der Abfrageplan 1300 neben dem AGG2 1302 auch den AGG1 1306, der über JOIN1 1304 positioniert ist. Bei wenigstens einer Ausführungsform sind AGG2 1302 und AGG1 1306 vom gleichen Aggregationsoperatortyp (z.B. Summe, Durchschnitt, Standardabweichung usw.) zueinander. Unabhängig von der Art der Aggregation, die AGG2 1302 ist, könnte der AGG1 1306 bei verschiedenen Ausführungsformen entweder ein duplikatunempfindlicher Aggregationsoperator oder ein duplikatempfindlicher Aggregationsoperator sein.
  • Wendet man sich wieder der 12 zu, überwacht der Datenbankmanager 502 während der Ausführung des Abfrageplans 1300 (bei einer Operation 1204) wenigstens eine Laufzeitkosteneffizienzmetrik des ausführenden Abfrageplans 1300. Bei wenigstens einer Ausführungsform enthält die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik eine Reduktionsrate von AGG2 1302. Die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik könnte auch oder stattdessen einen Explosionsfaktor von JOIN1 1304 enthalten. Eine weitere Option, die die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik enthalten könnte, ist eine Ausführungszeit des Abfrageplans 1300. Das heißt, dass der Datenbankmanager 502 bei einigen Ausführungsformen die Gesamtausführungszeit berücksichtigen kann, um zu bestimmen, ob AGG2 1302 in einem aktiven Zustand gehalten oder deaktiviert werden soll. Bei einer Ausführungsform kann der Datenbankmanager 502 dies zumindest teilweise tun, indem er die Gesamtausführungszeit (bisher während der Ausführung) mit einer erwarteten Zeit, einer durchschnittlichen Zeit und/oder dergleichen vergleicht. Außerdem gilt das Verfahren 1200 sicherlich für Abfragepläne, die komplexer sind als der Abfrageplan 1300, da dieser Plan als einfaches Beispiel und nicht als Einschränkung bereitgestellt wird.
  • Bei einer Operation 1206 deaktiviert der Datenbankmanager 502 AGG2 1302, ebenfalls während der Ausführung des Abfrageplans 1300, zumindest teilweise basierend auf der wenigstens einen Laufzeitkosteneffizienzmetrik, die bei der Operation 1204 überwacht wird (z.B. gerade überwacht wird). Bei wenigstens einer Ausführungsform enthält eine Deaktivierung von AGG2 1302 ein Platzieren von AGG2 1302 in einen Durchgangsmodus, in dem aufgenommene Datensätze einfach ausgegeben werden, ohne analysiert oder anderweitig in eine gegebene Aggregationsfunktion verarbeitet zu werden.
  • Bei einer Ausführungsform führt der Datenbankmanager 502 die Operation 1206 als Reaktion auf die wenigstens eine überwachte Laufzeitkosteneffizienzmetrik aus, die auf eine Schwellenwertineffizienzbedingung hinweist. Als Beispiele kann eine bestimmte Laufzeitkosteneffizienzmetrik bei der wenigstens einen Laufzeitkosteneffizienzmetrik je nach Metriktyp größer oder kleiner als ein bestimmter Schwellenwert sein. Als Beispiele könnte eine Schwellenwertineffizienzbedingung beinhalten, dass eine Reduktionsrate kleiner als ein Reduktionsratenschwellenwert und/oder ein Explosionsfaktor größer als ein Explosionsfaktorschwellenwert ist.
  • Bei einigen Ausführungsformen erhält der Datenbankmanager 502, sobald der Abfrageplan 1300 vollständig verarbeitet wurde, ein Abfrageergebnis für die Abfrage aus der Ausführung des Abfrageplans 1300 und gibt das erhaltene Abfrageergebnis an die anfordernde Entität (z.B. den Benutzer) aus. Eine solche Ausgabe könnte die Form oder ein Speichern einer materialisierten Ansicht, ein Anzeigen eines Berichts, ein Übertragen eines Ergebnisdatensatzes an eine anfordernde Entität und/oder dergleichen annehmen oder enthalten.
  • 14 ist ein schematisches Diagramm einer Optimierung für einen Versuch von Deduplizierungen für einen Abfrageausführungsplan gemäß einigen Ausführungsformen der betreffenden Technologie. 14 stellt die Optimierungstechnik der Abfrage für einen Versuch von Deduplizierungen dar. Ein Diagramm 1400 auf der linken Seite stellt das ursprüngliche Abfrageausführungsplanfragment mit einer Aggregationsoperation über einer Verbindungsoperation dar. Ein Diagramm 1450 auf der rechten Seite stellt den Abfrageausführungsplan nach dem Drücken von Operationen für einen Versuch von Deduplizierungen unter den Verbindungsoperationen auf beiden Seiten des Plans dar. Es ist zu beachten, dass dies nur dann möglich ist, wenn die Aggregationsfunktionen (in 10 als FL und FR bezeichnet) duplikatunabhängig sind. Diese Optimierung ist auch insofern optional, als die Operationen für einen Versuch von Deduplizierungen auf beide Seiten gedrückt werden können und nicht immer auf beide Seiten der Verbindungsoperation gedrückt werden müssen. Der Graph bzw. das Diagramm 1450 auf der rechten Seite zeigt auch, woher die verschiedenen Schlüssel in den Operationen für einen Versuch von Deduplizierungen stammen. Bei einer Ausführungsform müssen diese Schlüssel möglicherweise mit Verbindungsschlüsseln kombiniert werden, wenn sich die Verbindungsschlüssel von den unterschiedlichen Schlüsseln unterscheiden. Diese Optimierung ist lokal und die parallelen Worker und Threads müssen nicht miteinander kommunizieren.
  • Die Operation für einen Versuch von Deduplizierungen ist ein Operator mit begrenzter Speicherplatznutzung. Dies bedeutet, dass die Operation für einen Versuch von Deduplizierungen nur den Hauptspeicher verwendet und keine Daten auf eine lokale Festplatte oder einen entfernten Speicher verschüttet. Infolgedessen garantiert der Operator für einen Versuch von Deduplizierungen nicht, dass er immer dedupliziert, indem er unterschiedliche Werte von Eingabedatensätzen berechnet. Stattdessen versucht der Operator für einen Versuch von Deduplizierungen, Eingabedatensätze bis zu einer konfigurierten Speicherkapazität zu deduplizieren. Der Operator für einen Versuch von Deduplizierungen kann seine eigenen Ein- und Ausgaben beobachten und in den Durchgangsmodus wechseln, wenn der Operator für einen Versuch von Deduplizierungen erkennt, dass er nicht reduktiv genug ist.
  • 15 ist ein schematisches Diagramm einer lokalen verallgemeinerten Optimierung eines Abfrageausführungsplans gemäß einigen Ausführungsformen der betreffenden Technologie. Verglichen mit der in 14 dargestellten Optimierung für einen Versuch von Deduplizierungen ist die lokalisierte verallgemeinerte Optimierung allgemein und kann auf jede Aggregationsfunktion angewendet werden. Die lokalisierte verallgemeinerte Optimierung ist lokal für jeden Thread, der die Abfrage parallel ausführt, und erfordert keine globale Kommunikation. Die linke Seite zeigt ein Diagramm 1500 einschließlich einer Aggregation an der Spitze einer Verbindung mit einem Bloom-Filter unter der Verbindungssondierung. Nach der Transformation, wie sie in einem Graph bzw. einem Diagramm 1550 gezeigt ist, wird ein adaptiver Aggregationsoperator unter die Sondierungsseite der Verbindung gedrückt, und zwar mit einem Bloom-Filter unter der Verbindung. Die erste gepunktete Linie stellt dar, dass der Verbindungserstellungs-Operator das Bloom-Filter als Teil des Erstellungsprozesses erstellt und zusammen mit dem Bloom-Filter Informationen der Erstellungsseite weitergibt, einschließlich der Erstellungsseitenverbindungsschlüssel-Kardinalität und der Anzahl der unterschiedlichen Werte. Die zweite gepunktete Linie stellt die zusätzlichen Informationen dar, die vom Bloom-Filter zur Nach-unten-gedrückt-Aggregation übergeben werden. Hier übergibt das Bloom-Filter die Informationen, die es von der Erstellungsseite erhält, zusammen mit der Selektivität des Bloom-Filters selbst zu der Nach-unten-gedrückt-Aggregation. Bei einer Ausführungsform wird dies ausgewertet, indem die Aggregationsoperation mit dem Aufbau der Hash-Tabelle für den Verbindungserstellungsoperator kombiniert wird. Bei einer Ausführungsform ist diese Optimierung orthogonal zu anderen Schritten und kann unabhängig voneinander angewendet werden. Das Diagramm in 15 stellt den lokalen Entscheidungsprozess in der Nach-unten-gedrückt-Aggregation weiter dar. Wie es gezeigt ist, berücksichtigt eine Nach-unten-gedrückt-Aggregation „Agg_p“ die von der Erstellungsseite der Verbindung erhaltenen Informationen als Proxy für die Explosivität der Verbindung und betrachtet die beobachtete Reduktionsrate weiter, um zu bestimmen, ob eine weitere Auswertung der Aggregation oder der Wechsel in den Durchgangsmodus von Vorteil ist.
  • Die lokale verallgemeinerte Optimierung ermöglicht zahlreiche Vorteile. Ein Vorteil ist, dass die Aggregation Drücken-nach-unten adaptiv ist und Leistungsregressionen im Vergleich zu einem nicht optimierten Abfrageplan vermeidet. Ein weiterer Vorteil ist, dass die lokale verallgemeinerte Optimierung einfach und weniger fehleranfällig ist, da die Optimierungstechniken lokal innerhalb eines kleinen Threads durchgeführt werden. Ein weiterer Vorteil ist, dass der lokale verallgemeinerte Optimierer allgemein ist und für alle Arten von Aggregationsfunktionen gilt.
  • 16 ist ein schematisches Diagramm einer globalen verallgemeinerten Optimierung für einen Abfrageausführungsplan gemäß einigen Ausführungsformen der betreffenden Technologie. Die globale verallgemeinerte Optimierung ist eine robuste und genaue Optimierung mit einem Kompromiss, der eine globale Kommunikation über Threads und Knoten hinweg erfordert, die die Abfrage ausführen. Ein Graph 1600 oben in 16, der einer Transformation entspricht, die durch einen Graph 1650 dargestellt wird, hat die gleiche Form wie der Plan, der in Bezug auf 15 beschrieben ist. Die erste gepunktete Linie im Graph 1650 stellt eine Rückkopplung von Informationen von nach der Verbindungssondierung zurück zur Nach-unten-gedrückt-Aggregation dar. Zu Beginn kann eine Nach-unten-gedrückt-Aggregation ausgeschaltet werden, und nach einem Beobachten der Verbindungs-Informationen kann die Nach-unten-gedrückt-Aggregation wieder eingeschaltet werden. Die Nach-unten-gedrückt-Aggregation kann wieder eingeschaltet werden, wenn angenommen wird, dass die Verbindung explosiv genug ist. Nachdem einem Auswerten der Nach-unten-gedrückt-Aggregation für einen bestimmten Zeitraum kann die Nach-unten-gedrückt-Aggregationsoperation wieder deaktiviert werden, wenn das Reduktionsverhältnis einen Schwellenwert nicht erfüllt.
  • Eine Graph 1670 am Ende von 16 zeigt, wie der Rückkoppel-Prozess funktioniert, wenn mehrere Threads und Server den Plan parallel ausführen. Informationen wie Verbindungs-Kardinalität, Explosivität und Verzerrungen vom Verbindungssondierungs-Operator jeder Arbeit werden über einen globalen Kommunikationsnachrichtenkanal an alle Worker gesendet. Die Aggregationsoperation jedes Workers empfängt die globalen Informationen, wertet die globalen Informationen anhand der beobachteten lokalen Informationen aus und entscheidet, ob auf lokaler Ebene in den Durchgangsmodus gewechselt werden soll.
  • Die globale verallgemeinerte Optimierung ist genau, da die genauen Eigenschaften der Verbindungssondierung zur Ausführungszeit beobachtet und ausgewertet werden. Darüber hinaus verfügt die Optimierung über die globalen Informationen, so dass Verzerrungen in der Verbindungsoperation erkannt werden können. Bei einer Ausführungsform bedeutet dies, dass die Nach-unten-gedrückt-Aggregation eine größere Chance hat, die richtige Entscheidung zum Ein- oder Ausschalten zu treffen.
  • 17 ist ein schematisches Diagramm einer Umschreiboptimierung für eine Aggregation für materialisierte Ansicht (MV (= Materialized View)) gemäß einigen Ausführungsformen der betreffenden Technologie. Ein Graph 1700 auf der linken Seite von 17 stellt den ursprünglichen Plan mit einer Aggregationsoperation an der Spitze einer Verbindungsoperation dar, wobei die Verbindungsoperation direkt über zwei Tabellen steht. Die Aggregations-MV-Umschreiboptimierung kann angewendet werden, wenn nur eine Seite der Verbindung ein Basistabellen-Scan ist und die andere Seite der Verbindung ebenfalls eine Verbindung sein kann. Ein Graph 1750 auf der rechten Seite von 17 stellt den Abfrageausführungsplan nach den Transformationen dar, die durch die Aggregations-MV-Umschreiboptimierung vorgenommen sind. Bei einer Ausführungsform kann der Abfrageplan unter der Annahme, dass Aggregations-MVs auf den Basistabellen erstellt werden und dass der Aggregationsschlüssel in der MV eine Obergruppe der Nach-unten-gedrückt-Aggregation ist, unter den Verbindungen auf beiden Seiten neu geschrieben werden, um die MV abzufragen. Bei einer Ausführungsform wird es immer noch eine Kompensationsaggregation auf dem MV-Scan geben, auch wenn die MV selbst die Aggregation enthält.
  • Die Aggregation-MV-Umschreiboptimierung ermöglicht zahlreiche Vorteile. Ein Vorteil besteht darin, dass die Optimierung die Vorteile von MVs nutzen kann, um die Abfrageverarbeitung zu beschleunigen, und zwar insbesondere dann, wenn die Aggregation reduktiv ist und der Tabellenscan teuer ist. Ein weiterer Vorteil besteht darin, dass durch Drücken der Aggregation unter die Verbindung die MVs genutzt und inkrementell gewartet werden können. Dies gewährleistet eine gute Abfrageleistung, ohne dass teure MV-Wartungskosten anfallen.
  • 18 ist ein schematisches Diagramm einer Aggregationsframeworkerweiterung für einen Abfrageausführungsplan gemäß einigen Ausführungsformen der betreffenden Technologie. Ein Abfrageausführungsplan, der in einem Diagramm 1800 dargestellt ist, verwendet ein existierendes Aggregationsframework, das typischerweise höchstens zwei Aggregationen enthält, einschließlich der übergeordneten bzw. Eltern-Aggregation und der untergeordneten bzw. Kinder-Aggregation. Die untergeordnete Aggregation wird für jeden Thread und/oder Knoten ausgewertet. Die übergeordnete Aggregation verwendet das Ergebnis jeder untergeordneten Aggregation und führt eine abschließende globale Aggregationsoperation aus. Typischerweise wird die übergeordnete Aggregation unmittelbar über der untergeordneten Aggregation in der Abfrageplanstruktur angezeigt, und dies ist nicht flexibel. Im Abfrageplan, der einem Diagramm 1800 entspricht, werden die übergeordnete Aggregation und die untergeordnete Aggregation als A_Eltern und A_Kind bezeichnet. Der Datentyp der Eingabe für die untergeordnete Aggregation wird als T_Eingabe und der Datentyp der Ausgabe als T_Zwischen und die Ausgabe als Typ T Ausgabe bezeichnet.
  • Die Aggregationsframeworkerweiterung unterteilt eine Aggregation in drei verschiedene Teile und nicht in die traditionellen zwei Teile. Die Aggregationsframeworkerweiterung, wie sie in einem Diagramm 1850 dargestellt ist, enthält eine obere Aggregation, eine Zwischenaggregation und eine untere Aggregation. Die obere Aggregation wird als A_oben bezeichnet, die Zwischenaggregation als A_zwischen und die untere Aggregation als A_unten. Die übergeordnete Aggregation bleibt mit der ursprünglichen übergeordneten Aggregation identisch. Es wird jedoch ein Zwischenaggregationstyp eingeführt, der lokal ohne Kommunikation angewendet wird. Die Aggregationen müssen im Abfrageplan nicht nebeneinander liegen und können durch Verbindung gedrückt werden. Sowohl A_zwischen als auch A_unten werden nur lokal angewendet. Die Zwischenaggregation und die untergeordnete Aggregation haben auch andere adaptive Mechanismen als die übergeordnete. A_unten hat einen Eingabetyp T_Eingabe und einen Ausgabetyp T_zwischen. A_zwischen hat sowohl Eingabe- als auch Ausgabetypen als T_zwischen. A_oben hat eine Eingabe T_zwischen und Ausgabetypen als T_zwischen. Beliebige Aggregationsfunktionen können auf diese Weise aufgeteilt werden, so dass das Framework flexibler und leistungsfähiger ist.
  • 19 stellt ein Beispiel der Rechenvorrichtung 1900 gemäß wenigstens einer Ausführungsform dar. Bei einigen Ausführungsformen wird die Rechenvorrichtung 1900 verwendet, um eines oder mehrere der hierin diskutierten Systeme und Komponenten zu implementieren. Beispielsweise kann die Rechenvorrichtung 1900 einem Benutzer oder Administrator den Zugriff auf den Ressourcenmanager 302 ermöglichen. Weiterhin kann die Rechenvorrichtung 1900 mit jedem der hierin beschriebenen Systeme und Komponenten interagieren. Dementsprechend kann die Rechenvorrichtung 1900 verwendet werden, um verschiedene Verfahren und Aufgaben auszuführen, wie sie hierin erörtert sind. Die Rechenvorrichtung 1900 kann als Server, Client oder jede andere Recheneinheit fungieren. Die Rechenvorrichtung 1900 kann eines von einer Vielzahl von Computervorrichtungen sein, wie z.B. ein Desktop-Computer, ein Notebook-Computer, ein Servercomputer, ein Handheld-Computer, ein mobiles Gerät, ein Tablet und/oder dergleichen.
  • Bei der dargestellten Ausführungsform enthält die Rechen- bzw. Computervorrichtung 1900 einen oder mehrere Prozessoren 1902, eine oder mehrere Speichervorrichtungen 1904, eine oder mehrere Schnittstellen 1906, eine oder mehrere Massenspeichervorrichtungen 1908 und eine oder mehrere Eingabe-/Ausgabe-(I/O-)Vorrichtungen (E/A) 1910, von welchen alle mit einem Bus 1912 gekoppelt sind. Der (Die) Prozessor(en) 1902 enthält (enthalten) einen oder mehrere Prozessoren oder Steuerungen, die Anweisungen ausführen, die in der (den) Speichervorrichtung(en) 1904 und/oder der (den) Massenspeichervorrichtung(en) 1908 gespeichert sind. Der (Die) Prozessor(en) 1902 kann (können) auch verschiedene Typen von computerlesbaren Medien enthalten, wie beispielsweise einen Cachespeicher.
  • Die Speichervorrichtung(en) 1904 kann (können) verschiedene computerlesbare Medien, wie beispielsweise einen flüchtigen Speicher (z.B. einen Direktzugriffsspeicher (RAM)) und/oder einen nichtflüchtigen Speicher (z.B. einen Nurlesespeicher (ROM)) enthalten. Die Speichervorrichtung(en) 1904 kann (können) auch einen wiederbeschreibbaren ROM enthalten, wie beispielsweise einen Flash-Speicher.
  • Die Schnittstelle(n) 1906 kann (können) verschiedene Schnittstellen enthalten, die zulassen, dass die Computervorrichtung 1900 mit anderen Systemen, Vorrichtungen oder Computerumgebungen interagiert. Beispiele für die Schnittstelle(n) 1906 enthalten irgendeine Anzahl unterschiedlicher Netzwerkschnittstellen, wie beispielsweise Schnittstellen zu lokalen Netzwerken (LANs), Weitverkehrsnetzwerken (WANs), drahtlosen Netzwerken und dem Internet.
  • Die Massenspeichervorrichtung(en) 1908 kann (können) verschiedene computerlesbare Medien enthalten, wie beispielsweise Magnetbänder, Magnetplatten, optische Platten, einen Festkörperspeicher (z.B. einen Flash-Speicher) und so weiter. Verschiedene Laufwerke können auch in der (den) Massenspeichervorrichtung(en) 1908 enthalten sein, um ein Lesen von und/oder ein Schreiben zu den verschiedenen computerlesbaren Medien zu ermöglichen. Die Massenspeichervorrichtung(en) 1908 kann (können) Wechselmedien bzw. -datenträger und/oder nicht entfernbare Medien bzw. Datenträger enthalten.
  • Die I/O-Vorrichtung(en) 1910 kann (können) verschiedene Vorrichtungen enthalten, die zulassen, Daten und/oder andere Information zur der Computervorrichtung 2000 einzugeben oder daraus wiederzugewinnen. Eine oder mehrere beispielhafte Eingabe/Ausgabe-Vorrichtung(en) 1910 enthalten Cursorsteuerungsvorrichtungen, Tastaturen, Kleintastaturen, Mikrofone, Monitore oder andere Anzeigevorrichtungen, Lautsprecher, Drucker, Netzwerkschnittstellenkarten, Modems, Objektive, CCDs oder andere Bilderfassungsvorrichtungen und dergleichen.
  • Der Bus 1912 lässt zu, dass der (die) Prozessor(en) 1902, die Speichervorrichtung(en) 1904, die Schnittstelle(n) 1906, die Massenspeichervorrichtung(en) 1908 und die I/O-Vorrichtung(en) 1910 miteinander sowie mit anderen Vorrichtungen oder Komponenten, die mit Bus 2012 gekoppelt sind, kommunizieren. Der Bus 1912 stellt einen oder mehrere von mehreren Typen von Busstrukturen dar, wie beispielsweise einen Systembus, einen PCI-Bus, einen IEEE-1394-Bus, einen USB-Bus und so weiter.
  • Ausführbare Anweisungen und Maschinenspeichermedium
  • Die verschiedenen Speicher können einen oder mehrere Sätze von Anweisungen 1914 und Datenstrukturen (z.B. Software) speichern, die eine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpern oder von ihnen verwendet werden. Diese Anweisungen 1914 veranlassen, wenn sie von dem/den Prozessoren) 1902 ausgeführt werden, dass verschiedene Operationen die offenbarten Ausführungsformen implementieren.
  • Wie sie hierin verwendet sind, bedeuten die Ausdrücke „Maschinenspeichermedium“, „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 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 880 oder ein Teilbereich des Netzwerks 880 ein drahtloses oder zellulares Netzwerk enthalten und die Kopplung 882 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 882 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 (WiMAX), Langzeitentwicklungs-(LTE-)Standard, andere, die durch verschiedene Standardeinstellungsorganisationen definiert sind, andere Weitbereichs- bzw. Langstreckenprotokolle oder andere Datenübertragungstechnologie.
  • Die Anweisungen 1914 können über ein Netzwerk unter Verwendung eines Übertragungsmedium über eine Netzwerkschnittstellenvorrichtung (z.B. eine 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 1914 unter Verwendung eines Übertragungsmediums über die Kopplung (z.B. Peer-zu-Peer-Kopplung) mit den Vorrichtungen bzw. Geräten ü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 1914 zur Ausführung durch die Maschine 1900 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
  • Wie es oben erwähnt ist, bedeuten die Ausdrücke „maschinenlesbares Medium“, „computerlesbares Medium“ und „vorrichtungslesbares Medium“ 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.
  • Zu Darstellungszwecken sind Programme und andere ausführbare Programmkomponenten hierin als diskrete Blöcke dargestellt, obwohl es verstanden wird, dass sich solche Programme und Komponenten zu verschiedenen Zeiten in unterschiedlichen Speicherkomponenten der Computervorrichtung 1900 befinden können und durch den (die) Prozessor(en) 1902 ausgeführt werden. Alternativ können die hierin beschriebenen Systeme und Verfahren in Hardware oder einer Kombination aus Hardware, Software und/oder Firmware implementiert sein. Zum Beispiel kann eine oder können mehrere anwendungsspezifische integrierte Schaltungen (ASICs) programmiert werden, um eines oder mehrere der hierin beschriebenen Systeme und Verfahren auszuführen.
  • Beispiele für Ausführungsformen
  • Das Folgende ist eine Liste von einigen Beispielen von Ausführungsformen von Systemen und Verfahren zum adaptiven Verbesserun von Abfrageplänen.
  • Beispiel 1 ist ein Verfahren, das folgendes umfasst: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation und wenigstens eine Verbindungsoperation enthält; Analysieren des Abfrageplans, um eine Aggregation zu identifizieren, die redundant ist; Entfernen der Aggregation basierend wenigstens teilweise auf dem Analysieren; Bestimmen von wenigstens einer Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans; Einfügen von wenigstens einem adaptiven Aggregationsoperator in den Abfrageplan basierend wenigstens teilweise auf der wenigstens einen Aggregationseigenschaft; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator im Abfrageplan.
  • Beispiel 2 enthält den Gegenstand von Beispiel 1, wobei ein Analysieren des Abfrageplans, um die Aggregation zu identifizieren, die redundant ist, optional folgendes umfasst: Bestimmen, dass eine erste Aggregation garantiert ist, wenn eine zweite Aggregation im Abfrageplan enthalten ist, wobei die erste Aggregation und die zweite Aggregation unterschiedlichen Abfrageoperationen bei separaten Teilbereichen des Abfrageplans entsprechen, wobei der Abfrageplan eine Baumstruktur mit mehreren Knoten umfasst, wobei jeder Knoten einer bestimmten Abfrageoperation entspricht; und Entfernen, als Teil einer Phase eines Ziehens nach oben, der ersten Aggregation aus dem Abfrageplan.
  • Beispiel 3 enthält den Gegenstand von einem der Beispiele 1 und 2, wobei ein Bestimmen der wenigstens einen Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans optional folgendes umfasst: Bestimmen der wenigstens einen Aggregationseigenschaft zum Assoziieren mit der wenigstens einen Abfrageoperation des Abfrageplans; und Zuordnen, als Teil einer Phase eines Drückens nach unten, der wenigstens einen Aggregationseigenschaft zu der wenigstens einen Abfrageoperation des Abfrageplans.
  • Beispiel 4 enthält den Gegenstand von einem der Beispiele 1-3, wobei optional die wenigstens eine Aggregationseigenschaft eine Gruppe von Aggregationseigenschaften umfasst, wobei optional jede Aggregationseigenschaft einer bestimmten Abfrageoperation des Abfrageplans zugeordnet wird und eine Anzahl von Abfrageoperationen, denen eine Aggregationseigenschaft zugeordnet ist, einer Gruppe von Abfrageoperationen im Abfrageplan entspricht, die semantisch äquivalent sind, wenn ein Auswerten einer bestimmten Aggregation bei jeder Abfrageoperation der Gruppe von Abfrageoperationen erfolgt.
  • Beispiel 5 enthält den Gegenstand von einem der Beispiele 1-4, wobei die Gruppe von Aggregationseigenschaften optional eine Teilbarkeitseigenschaft, eine Zerlegungseigenschaft oder eine Duplikationsempfindlichkeitseigenschaft umfasst.
  • Beispiel 6 enthält den Gegenstand von einem der Beispiele 1-5, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan optional folgendes umfasst: Analysieren einer bestimmten Aggregationseigenschaft, um einen Typ von Aggregationsoperator zu bestimmen, um ihn einer bestimmten Abfrageoperation des Abfrageplans zuzuordnen; und Generieren bzw. Erzeugen wenigstens einer adaptiven Aggregationsoperation basierend wenigstens teilweise auf einem Schwellenwert, wobei der Schwellenwert einer Anzahl von Schlüsseln oder Schlüssellängen entspricht, die mit der Aggregation assoziiert sind.
  • Beispiel 7 ist ein Verfahren, das folgendes umfasst: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation enthält; Analysieren des Abfrageplans, um eine Aggregation zu identifizieren; Bestimmen, dass die Aggregation duplikationsunempfindlich ist; Einfügen wenigstens eines adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf einer Analyse einer bestimmten Abfrageoperation aus dem Abfrageplan; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator in den Abfrageplan.
  • Beispiel 8 enthält den Gegenstand von Beispiel 7, wobei der wenigstens eine adaptive Aggregationsoperator optional einen adaptiven Operator für einen Versuch für ein Deduplizieren umfasst.
  • Beispiel 9 enthält den Gegenstand von einem der Beispiele 7-8, wobei optional der adaptive Operator für einen Versuch für ein Deduplizieren unter einem Verbindungserstellungs-Operator eingefügt wird oder unter einem Verbindungssondierungs-Operator eingefügt wird.
  • Beispiel 10 enthält den Gegenstand von einem der Beispiele 7-9, wobei der adaptive Operator für einen Versuch für ein Deduplizieren optional an ein Budget eines lokales Speichers gebunden ist.
  • Beispiel 11 enthält den Gegenstand von einem der Beispiele 7-10, wobei der adaptive Operator für einen Versuch für ein Deduplizieren optional zu einem Durchgangsmodus wechselt, wenn ein Reduktionsfaktor unter einem Schwellenwert liegt.
  • Beispiel 12 enthält den Gegenstand von einem der Beispiele 7-11, wobei der wenigstens eine adaptive Aggregationsoperator optional einen untergeordneten Aggregationsoperator umfasst.
  • Beispiel 13 enthält den Gegenstand von einem der Beispiele 7-12, wobei der untergeordnete Aggregationsoperator optional unter einer Erstellungsseite einer Hash-Verbindung eingefügt wird, in der ein Verbindungserstellungs-Operator eine Hash-Verbindung unter dem Verbindungserstellungs-Operator hat.
  • Beispiel 14 enthält den Gegenstand von einem der Beispiele 7-13, wobei der untergeordnete Aggregationsoperator optional durch einen lokalen Speicher begrenzt ist und basierend auf einem lokal beobachteten Reduktionsverhältnis in einen Durchgangsmodus wechselt.
  • Beispiel 15 enthält den Gegenstand von einem der Beispiele 7-14, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf der Analyse der bestimmten Abfrageoperation optional folgendes umfasst: Analysieren eines Datenflusses für die bestimmte Abfrageoperation basierend auf einer Gruppe von Faktoren, wobei die Gruppe von Faktoren Daten umfasst, die durch die bestimmte Abfrageoperation durchlaufen, oder eine Speichernutzung der bestimmten Abfrageoperation oder anderer Abfrageoperationen.
  • Beispiel 16 enthält den Gegenstand von einem der Beispiele 7-15, wobei der Abfrageplan optional eine Baumstruktur mit mehreren Knoten umfasst, wobei jeder Knoten einer bestimmten Abfrageoperation entspricht, und einem Scheitelpunkt, der einen Datenfluss zwischen einem Knotenpaar aus den mehreren Knoten darstellt.
  • Beispiel 17 ist ein System, das folgendes umfasst: wenigstens einen Prozessor; und eine Speichervorrichtung, die Anweisungen enthält, die dann, wenn sie durch den wenigstens einem Prozessor ausgeführt werden, veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregations- und wenigstens eine Verknüpfungsoperation enthält; Analysieren des Abfrageplans, um eine redundante Aggregation zu identifizieren; Entfernen der Aggregation basierend wenigstens teilweise auf dem Analysieren; Bestimmen wenigstens einer Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans; Einfügen wenigstens eines adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf der wenigstens einen Aggregationseigenschaft; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator in den Abfrageplan.
  • Beispiel 18 enthält den Gegenstand von Beispiel 17, wobei eine Analysieren des Abfrageplans, um die Aggregation zu identifizieren, die redundant ist, weiterhin veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die weiterhin optional folgendes umfassen: Bestimmen, dass eine erste Aggregation garantiert ist, wenn eine zweite Aggregation in dem Abfrageplan enthalten ist, wobei die erste Aggregation und die zweite Aggregation unterschiedlichen Abfrageoperationen bei separaten Teilen des Abfrageplans entspricht, wobei der Abfrageplan eine Baumstruktur mit mehreren Knoten umfasst, wobei jeder Knoten einer bestimmten Abfrageoperation entspricht; und Entfernen, als Teil einer Phase eines Ziehens nach oben, der ersten Aggregation aus dem Abfrageplan.
  • Beispiel 19 enthält den Gegenstand von einem der Beispiele 17-18, wobei ein Bestimmen der wenigstens einen Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans weiterhin veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die optional weiterhin folgendes umfassen: Bestimmen der wenigstens einen Aggregationseigenschaft zum Assoziieren mit der wenigstens einen Abfrageoperation des Abfrageplans; und Zuordnen, als Teil einer Phase eines Drückens nach unten, der wenigstens einen Aggregationseigenschaft für die wenigstens eine Abfrageoperation des Abfrageplans.
  • Beispiel 20 enthält den Gegenstand von einem der Beispiele 17-19, wobei die wenigstens eine Aggregationseigenschaft optional eine Gruppe von Aggregationseigenschaften umfasst, wobei jede Aggregationseigenschaft einer bestimmten Abfrageoperation des Abfrageplans zugeordnet ist und eine Anzahl von Abfrageoperationen, denen eine Aggregationseigenschaft zugeordnet ist, einer Gruppe von Abfrageoperationen im Abfrageplan entspricht, wenn ein Auswerten einer bestimmten Aggregation bei jeder Abfrageoperation der Gruppe von Abfrageoperationen erfolgt.
  • Beispiel 21 enthält den Gegenstand von einem der Beispiele 17-20, wobei die Gruppe von Aggregationseigenschaften optional eine Teilbarkeitseigenschaft, eine Zerlegungseigenschaft oder eine Duplikationsempfindlichkeitseigenschaft umfasst.
  • Beispiel 22 enthält den Gegenstand von einem der Beispiele 17-21, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die optional weiterhin folgendes umfassen: Analysieren einer bestimmten Aggregationseigenschaft, um einen Typ von Aggregationsoperator zu bestimmen, um in einer bestimmten Abfrageoperation des Abfrageplans zuzuordnen; und Generieren bzw. Erzeugen wenigstens einer adaptiven Aggregationsoperation basierend wenigstens teilweise auf einem Schwellenwert, wobei der Schwellenwert einer Anzahl von Schlüsseln oder Schlüssellängen entspricht, die mit der Aggregation assoziiert sind.
  • Beispiel 23 ist ein System, das folgendes umfasst: wenigstens einen Prozessor; und eine Speichervorrichtung; die Anweisungen enthält, die dann, wenn sie durch den wenigstens einen Prozessor ausgeführt werden, veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation enthält; Analysieren des Abfrageplans, um eine Aggregation zu identifizieren; Bestimmen, dass die Aggregation duplikatunempfindlich ist; Einfügen wenigstens eines adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf einer Analyse einer bestimmten Abfrageoperation aus dem Abfrageplan; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator in den Abfrageplan.
  • Beispiel 24 enthält den Gegenstand von Beispiel 23, wobei der wenigstens eine adaptive Aggregationsoperator optional einen adaptiven Operator für einen Versuch von Deduplizierungen umfasst.
  • Beispiel 25 enthält den Gegenstand von einem der Beispiele 23-24, wobei Operator für einen Versuch von Deduplizierungen optional unter einem Verbindungserstellungs-Operator eingefügt ist oder unter einem Verbindungssondierungs-Operator eingefügt ist.
  • Beispiel 26 enthält den Gegenstand von einem der Beispiele 23-25, wobei der Operator für einen Versuch von Deduplizierungen optional durch ein Budget eines lokalen Speichers begrenzt ist.
  • Beispiel 27 enthält den Gegenstand von einem der Beispiele 23-26, wobei der Operator für einen Versuch von Deduplizierungen optional in einen Durchgangmodus wechselt, wenn ein Reduktionsfaktor unter einem Schwellenwert liegt.
  • Beispiel 28 enthält den Gegenstand von einem der Beispiele 23-27, wobei der wenigstens eine adaptive Aggregationsoperator optional einen untergeordneten Aggregationsoperator umfasst.
  • Beispiel 29 enthält den Gegenstand von einem der Beispiele 23-28, wobei der untergeordnete Aggregationsoperator optional unter einer Erstellungsseite einer Hash-Verbindung eingefügt ist, bei der ein Verbindungserstellungs-Operator eine Hash-Verbindung unter dem Verbindungserstellungs-Operator hat, wobei der untergeordnete Aggregationsoperator an den lokalen Speicher gebunden ist und basierend auf einem lokal beobachteten Reduktionsverhältnis in einen Durchgangsmodus wechselt.
  • Beispiel 30 enthält den Gegenstand von einem der Beispiele 23-26, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf der Analyse der bestimmten Abfrageoperation veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die optional weiterhin folgendes umfassen: Analysieren eines Datenflusses für die bestimmte Abfrageoperation basierend auf einer Gruppe von Faktoren, wobei die Gruppe von Faktoren Daten umfasst, die durch die bestimmte Abfrageoperation hindurchgehen, oder eine Speichernutzung der bestimmten Abfrageoperation oder anderer Abfrageoperationen.
  • Schlussfolgerung
  • Um ein Verstehen der Prinzipien der vorliegenden Offenbarung zu fördern, sind in den Zeichnungen verschiedene Ausführungsformen dargestellt. Die hierin offenbarten Ausführungsformen sind nicht dazu bestimmt, erschöpfend zu sein oder die vorliegende Offenbarung auf die präzisen Formen zu beschränken, die in der obigen detaillierten Beschreibung offenbart sind. Vielmehr sind die beschriebenen Ausführungsformen so ausgewählt, dass andere, die auf dem Gebiet erfahren sind, ihre Lehren nutzen können. Demgemäß ist dadurch keine Beschränkung des Schutzumfangs der vorliegenden Offenbarung beabsichtigt.
  • In allen Fällen in dieser Offenbarung, einschließlich in den Ansprüchen, in welchen numerische Modifikatoren wie erster, zweiter und dritter in Bezug auf Komponenten, Daten (z.B. Werte, Identifizierer, Parameter und/oder dergleichen) und/oder andere Elemente verwendet werden, ist eine solche Verwendung solcher Modifikatoren nicht dazu bestimmt, eine spezifische oder erforderliche Reihenfolge der Elemente, auf welche auf diese Weise verwiesen wird, zu bezeichnen oder zu diktieren. Vielmehr soll jede solche Verwendung solcher Modifikatoren dem Leser helfen, Elemente voneinander zu unterscheiden, und sollte nicht so ausgelegt werden, dass sie auf einer bestimmten Reihenfolge bestehen oder irgendeine andere Signifikanz haben, es sei denn, eine solche Reihenfolge oder andere Signifikanz wird hierin klar und affirmativ erklärt.
  • Darüber hinaus können im Einklang mit der Tatsache, dass die hierin beschriebenen Entitäten und Anordnungen, einschließlich der Entitäten und Anordnungen, die in den Zeichnungen dargestellt und in Verbindung mit diesen beschrieben sind, als Beispiele und nicht als Beschränkung präsentiert sind, alle Aussagen oder andere Hinweise darauf, was eine bestimmte Zeichnung „darstellt bzw. zeigt“, was ein bestimmtes Element oder eine bestimmte Entität in einer bestimmten Zeichnung oder anderweitig in dieser Offenbarung erwähnt „ist“ oder „hat“, und alle ähnlichen Aussagen, die nicht ausdrücklich durch eine Klausel wie „Bei wenigstens einer Ausführungsform“ selbstqualifizierend sind und daher isoliert und aus dem Zusammenhang gerissen als absolut und somit als Beschränkung für alle Ausführungsformen gelesen werden könnten, nur richtig als konstruktiv durch eine solche Klausel qualifiziert gelesen werden. Der Kürze und Klarheit der Präsentation halber wird diese implizite Qualifizierungsklausel in dieser Offenbarung nicht ad nauseum wiederholt.
  • In der vorliegenden Offenbarung werden verschiedene Terminologien in Übereinstimmung mit den bereitgestellten Definitionen verwendet. Darüber hinaus wird im Zusammenhang mit den hier dargelegten Definitionen darauf hingewiesen, dass die hierin verwendeten definierten Ausdrücke bzw. Begriffe und Phrasen die bereitgestellten Definitionen zusammen mit dem gesamten allgemeinen und konventionellen Verständnis der Bedeutung der jeweiligen Begriffe und Phrasen enthalten.
  • Es wird ferner darauf hingewiesen, dass, wie in dieser Spezifikation und in den beigefügten Ansprüchen verwendet, die Singularformen „ein“, „eine“, „eines“ und „der“, „die“, „das“ Pluralreferenzen enthalten, es sei denn, der Kontext schreibt eindeutig etwas anderes vor.
  • Wie sie hierin verwendet sind, sind die Begriffe „umfassend“, „einschließlich“, „enthaltend“, „gekennzeichnet durch“ und grammatikalische Entsprechungen davon inklusive, offene Begriffe, die zusätzliche, nicht zitierte Elemente, Verfahrensschritte oder dergleichen nicht ausschließen.
  • Viele der in dieser Spezifikation beschriebenen Funktionseinheiten können als eine oder mehrere Komponenten implementiert werden, was ein Begriff ist, der verwendet wird, um ihre Implementierungsunabhängigkeit besonders hervorzuheben. Zum Beispiel kann eine Komponente als Hardwareschaltung implementiert werden, einschließlich benutzerdefinierter VLSI-(= Very Large Scale Integration)Schaltungen oder Gate-Arrays, Standardhalbleiter wie Logikchips, Transistoren und/oder anderen diskreten Komponenten. Eine Komponente kann auch in programmierbaren Hardwarevorrichtungen wie FPGAs (= Field Programmable Gate Arrays), programmierbarer Arraylogik, programmierbarer Logikvorrichtungen und/oder dergleichen implementiert sein.
  • Komponenten können auch in Software zur Ausführung auf verschiedenen Typen von Hardware implementiert werden (z.B. durch verschiedene Typen von Prozessoren). Eine identifizierte Komponente von ausführbarem Code kann beispielsweise einen oder mehrere physische oder logische Blöcke von Computeranweisungen enthalten, die beispielsweise als Objekt, Prozedur oder Funktion organisiert sein können. Dennoch müssen die ausführbaren Anweisungen einer identifizierten Komponente nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen enthalten, die an verschiedenen Orten gespeichert sind und, wenn sie logisch miteinander verbunden sind, die Komponente bilden und den angegebenen Zweck für die Komponente erreichen.
  • Tatsächlich kann eine Komponente des ausführbaren Codes eine einzelne Anweisung oder viele Anweisungen sein und über mehrere verschiedene Codesegmente, zwischen verschiedenen Programmen und über mehrere Speichervorrichtungen verteilt sein. Auf ähnliche Weise können Betriebsdaten hierin innerhalb von Komponenten identifiziert und veranschaulicht werden und können in jeder geeigneten Form verkörpert und innerhalb jeder geeigneten Art von Datenstruktur organisiert werden. Die Betriebsdaten können als einzelner Datensatz gesammelt oder über verschiedene Standorte, einschließlich verschiedener Speichergeräte bzw. -vorrichtungen, verteilt werden und können wenigstens teilweise nur als elektronische Signale in einem System oder Netzwerk vorliegen. Die Komponenten können passiv oder aktiv sein, einschließlich Agenten, die zur Ausführung der gewünschten Funktionen geeignet sind.
  • Eine Bezugnahme in dieser Spezifikation auf „ein Beispiel“ bedeutet, dass ein in Verbindung mit dem Beispiel beschriebenes Merkmal, eine Struktur oder eine Charakteristik in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Daher beziehen sich die Erscheinungen des Ausdrucks „bei einem Beispiel“ an verschiedenen Stellen in dieser Spezifikation nicht unbedingt alle auf dieselbe Ausführungsform.
  • Wie es hierin verwendet ist, kann eine Vielzahl von Elementen, Strukturelementen, Kompositionselementen und/oder Materialien aus Gründen der Bequemlichkeit in einer gemeinsamen Liste dargestellt werden. Diese Listen sollten jedoch so ausgelegt werden, dass jedes Element der Liste einzeln als separates und eindeutiges Element identifiziert wird. Daher sollte kein einzelnes Element einer solchen Liste als faktisches Äquivalent zu einem anderen Element derselben Liste ausgelegt werden, das allein auf seiner Darstellung in einer gemeinsamen Gruppe ohne gegenteilige Anhaltspunkte beruht. Darüber hinaus können hierin verschiedene Ausführungsformen und Beispiele der vorliegenden Offenbarung zusammen mit Alternativen für die verschiedenen Komponenten davon erwähnt werden. Es versteht sich, dass solche Ausführungsformen, Beispiele und Alternativen nicht als de facto Äquivalente zueinander auszulegen sind, sondern als separate und autonome Darstellungen der vorliegenden Offenbarung zu betrachten sind.
  • Obwohl das Vorstehende aus Gründen der Klarheit ausführlich beschrieben wurde, wird es offensichtlich sein, dass bestimmte Änderungen und Modifikationen vorgenommen werden können, ohne von den Grundsätzen abzuweichen. Es sollte beachtet werden, dass es viele alternative Möglichkeiten gibt, sowohl die hier beschriebenen Prozesse als auch die hier beschriebenen Apparate zu implementieren. Dementsprechend sind die vorliegenden Ausführungsformen als illustrativ und nicht als beschränkend zu betrachten.
  • Fachleute dem Gebiet werden zu schätzen wissen, dass viele Änderungen an den Details der oben beschriebenen Ausführungsformen vorgenommen werden können, ohne von den zugrunde liegenden Prinzipien der Offenbarung abzuweichen. Der Schutzumfang dieser Offenbarung sollte daher nur durch die Ansprüche bestimmt sein.
  • Bei einem weiteren Beispiel empfängt die betreffende Technologie einen Abfrageplan, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation und wenigstens eine Verbindungsoperation umfasst. Die betreffende Technologie analysiert den Abfrageplan, um eine redundante Aggregation zu identifizieren. Die betreffende Technologie entfernt die Aggregation basierend wenigstens teilweise auf dem Analysieren. Die betreffende Technologie bestimmt wenigstens eine Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans. Die betreffende Technologie fügt wenigstens einen adaptiven Aggregationsoperator basierend wenigstens teilweise auf der wenigstens einen Aggregationseigenschaft in den Abfrageplan ein. Die betreffende Technologie stellt einen modifizierten Abfrageplan bereit, der wenigstens teilweise auf dem in den Abfrageplan eingefügten wenigstens einen adaptiven Aggregationsoperator basiert.
  • 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/857790 [0001]
    • US 62/905920 [0001]

Claims (30)

  1. Computerprogramm, das Anweisungen enthält, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren Operationen durchführt oder durchführen, wobei die Operationen folgendes umfassen: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation und wenigstens eine Verbindungsoperation enthält; Analysieren des Abfrageplans, um eine Aggregation zu identifizieren, die redundant ist; Entfernen der Aggregation basierend wenigstens teilweise auf dem Analysieren; Bestimmen von wenigstens einer Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans; Einfügen von wenigstens einem adaptiven Aggregationsoperator in den Abfrageplan basierend wenigstens teilweise auf der wenigstens einen Aggregationseigenschaft; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator im Abfrageplan.
  2. Computerprogramm nach Anspruch 1, wobei eine Analysieren des Abfrageplans, um die Aggregation zu identifizieren, die redundant ist, folgendes umfasst: Bestimmen, dass eine erste Aggregation garantiert ist, wenn eine zweite Aggregation im Abfrageplan enthalten ist, wobei die erste Aggregation und die zweite Aggregation unterschiedlichen Abfrageoperationen bei separaten Teilbereichen des Abfrageplans entsprechen, wobei der Abfrageplan eine Baumstruktur mit mehreren Knoten umfasst, wobei jeder Knoten einer bestimmten Abfrageoperation entspricht; und Entfernen, als Teil einer Phase eines Ziehens nach oben, der ersten Aggregation aus dem Abfrageplan.
  3. Computerprogramm nach Anspruch 1, wobei ein Bestimmen der wenigstens einen Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans folgendes umfasst: Bestimmen der wenigstens einen Aggregationseigenschaft zum Assoziieren mit der wenigstens einen Abfrageoperation des Abfrageplans; und Zuordnen, als Teil einer Phase eines Drückens nach unten, der wenigstens einen Aggregationseigenschaft zu der wenigstens einen Abfrageoperation des Abfrageplans.
  4. Computerprogramm nach Anspruch 3, wobei die wenigstens eine Aggregationseigenschaft eine Gruppe von Aggregationseigenschaften umfasst, wobei jede Aggregationseigenschaft einer bestimmten Abfrageoperation des Abfrageplans zugeordnet wird und eine Anzahl von Abfrageoperationen, denen eine Aggregationseigenschaft zugeordnet ist, einer Gruppe von Abfrageoperationen im Abfrageplan entspricht, die semantisch äquivalent sind, wenn ein Auswerten einer bestimmten Aggregation bei jeder Abfrageoperation der Gruppe von Abfrageoperationen erfolgt.
  5. Computerprogramm nach Anspruch 4, wobei die Gruppe von Aggregationseigenschaften eine Teilbarkeitseigenschaft, eine Zerlegungseigenschaft oder eine Duplikationsempfindlichkeitseigenschaft umfasst.
  6. Computerprogramm nach Anspruch 1, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan folgendes umfasst: Analysieren einer bestimmten Aggregationseigenschaft, um einen Typ von Aggregationsoperator zu bestimmen, um ihn einer bestimmten Abfrageoperation des Abfrageplans zuzuordnen; und Generieren bzw. Erzeugen wenigstens einer adaptiven Aggregationsoperation basierend wenigstens teilweise auf einem Schwellenwert, wobei der Schwellenwert einer Anzahl von Schlüsseln oder Schlüssellängen entspricht, die mit der Aggregation assoziiert sind.
  7. Computerprogramm, das Anweisungen enthält, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren Operationen durchführt oder durchführen, wobei die Operationen folgendes umfassen: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation enthält; Analysieren des Abfrageplans, um eine Aggregation zu identifizieren; Bestimmen, dass die Aggregation duplikationsunempfindlich ist; Einfügen wenigstens eines adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf einer Analyse einer bestimmten Abfrageoperation aus dem Abfrageplan; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator in den Abfrageplan.
  8. Computerprogramm nach Anspruch 7, wobei der wenigstens eine adaptive Aggregationsoperator einen adaptiven Operator für einen Versuch für Deduplizierungen umfasst.
  9. Computerprogramm nach Anspruch 8, wobei der adaptive Operator für einen Versuch für Deduplizierungen unter einem Verbindungserstellungs-Operator eingefügt wird oder unter eine Verbindungssondierungs-Operator eingefügt wird.
  10. Computerprogramm nach Anspruch 9, wobei der adaptive Operator für einen Versuch für Deduplizierungen durch ein Budget eines lokalen Speichers begrenzt ist.
  11. Computerprogramm nach Anspruch 9, wobei der adaptive Operator für einen Versuch für Deduplizierungen in einen Durchgangmodus wechselt, wenn ein Reduktionsfaktor unter einem Schwellenwert liegt.
  12. Computerprogramm nach Anspruch 7, wobei der wenigstens eine adaptive Aggregationsoperator einen untergeordneten Aggregationsoperator umfasst.
  13. Computerprogramm nach Anspruch 12, wobei der untergeordnete Aggregationsoperator unter einer Erstellungsseite einer Hash-Verbindung eingefügt wird, in der ein Verbindungserstellungs-Operator eine Hash-Verbindung unter dem Verbindungserstellungs-Operator hat.
  14. Computerprogramm nach Anspruch 13, wobei der untergeordnete Aggregationsoperator durch einen lokalen Speicher begrenzt ist und basierend auf einem lokal beobachteten Reduktionsverhältnis in einen Durchgangsmodus wechselt.
  15. Computerprogramm nach Anspruch 7, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf der Analyse der bestimmten Abfrageoperation folgendes umfasst: Analysieren eines Datenflusses für die bestimmte Abfrageoperation basierend auf einer Gruppe von Faktoren, wobei die Gruppe von Faktoren Daten umfasst, die durch die bestimmte Abfrageoperation durchlaufen, oder eine Speichernutzung der bestimmten Abfrageoperation oder anderer Abfrageoperationen.
  16. Computerprogramm nach Anspruch 12, wobei der Abfrageplan eine Baumstruktur mit mehreren Knoten umfasst, wobei jeder Knoten einer bestimmten Abfrageoperation entspricht, und einem Scheitelpunkt, der einen Datenfluss zwischen einem Knotenpaar aus den mehreren Knoten darstellt.
  17. System, das folgendes umfasst: wenigstens einen Prozessor; und eine Speichervorrichtung, die Anweisungen enthält, die dann, wenn sie durch den wenigstens einem Prozessor ausgeführt werden, veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregations- und wenigstens eine Verknüpfungsoperation enthält; Analysieren des Abfrageplans, um eine redundante Aggregation zu identifizieren; Entfernen der Aggregation basierend wenigstens teilweise auf dem Analysieren; Bestimmen wenigstens einer Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans; Einfügen wenigstens eines adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf der wenigstens einen Aggregationseigenschaft; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator in den Abfrageplan.
  18. System des Anspruchs 17, wobei ein Analysieren des Abfrageplans, um die Aggregation zu identifizieren, die redundant ist, weiterhin veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die weiterhin folgendes umfassen: Bestimmen, dass eine erste Aggregation garantiert ist, wenn eine zweite Aggregation in dem Abfrageplan enthalten ist, wobei die erste Aggregation und die zweite Aggregation unterschiedlichen Abfrageoperationen bei separaten Teilen des Abfrageplans entspricht, wobei der Abfrageplan eine Baumstruktur mit mehreren Knoten umfasst, wobei jeder Knoten einer bestimmten Abfrageoperation entspricht; und Entfernen, als Teil einer Phase eines Ziehens nach oben, der ersten Aggregation aus dem Abfrageplan.
  19. System des Anspruchs 17, wobei ein Bestimmen der wenigstens einen Aggregationseigenschaft entsprechend wenigstens einer Abfrageoperation des Abfrageplans weiterhin veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die weiterhin folgendes umfassen: Bestimmen der wenigstens einen Aggregationseigenschaft zum Assoziieren mit der wenigstens einen Abfrageoperation des Abfrageplans; und Zuordnen, als Teil einer Phase eines Drückens nach unten der wenigstens einen Aggregationseigenschaft für die wenigstens eine Abfrageoperation des Abfrageplans.
  20. Das System des Anspruchs 19, wobei die wenigstens eine Aggregationseigenschaft eine Gruppe von Aggregationseigenschaften umfasst, wobei jede Aggregationseigenschaft einer bestimmten Abfrageoperation des Abfrageplans zugeordnet ist und eine Anzahl von Abfrageoperationen, denen eine Aggregationseigenschaft zugeordnet ist, einer Gruppe von Abfrageoperationen im Abfrageplan entspricht, wenn ein Auswerten einer bestimmten Aggregation bei jeder Abfrageoperation der Gruppe von Abfrageoperationen erfolgt.
  21. System des Anspruchs 20, wobei die Gruppe von Aggregationseigenschaften eine Teilbarkeitseigenschaft, eine Zerlegungseigenschaft oder eine Duplikationsempfindlichkeitseigenschaft umfasst.
  22. System des Anspruchs 17, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die weiterhin folgendes umfassen: Analysieren einer bestimmten Aggregationseigenschaft, um einen Typ von Aggregationsoperator zu bestimmen, um ihn einer bestimmten Abfrageoperation des Abfrageplans zuzuordnen; und Generieren bzw. Erzeugen wenigstens einer adaptiven Aggregationsoperation basierend wenigstens teilweise auf einem Schwellenwert, wobei der Schwellenwert einer Anzahl von Schlüsseln oder Schlüssellängen entspricht, die mit der Aggregation assoziiert sind.
  23. System, das folgendes umfasst: wenigstens ein Prozessor; und eine Speichervorrichtung, die Anweisungen enthält, die dann, wenn sie durch den wenigstens einen Prozessor ausgeführt werden, veranlassen, dass der wenigstens eine Prozessor Operationen durchführt, die folgendes umfassen: Empfangen eines Abfrageplans, wobei der Abfrageplan eine Gruppe von Abfrageoperationen umfasst, wobei die Gruppe von Abfrageoperationen wenigstens eine Aggregation enthält; Analysieren des Abfrageplans, um eine Aggregation zu identifizieren; Bestimmen, dass die Aggregation duplikatunempfindlich ist; Einfügen wenigstens eines adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf einer Analyse einer bestimmten Abfrageoperation aus dem Abfrageplan; und Bereitstellen eines modifizierten Abfrageplans basierend wenigstens teilweise auf dem eingefügten wenigstens einen adaptiven Aggregationsoperator in den Abfrageplan.
  24. System nach Anspruch 23, wobei der wenigstens eine adaptive Aggregationsoperator einen adaptiven Operator für einen Versuch von Deduplizierungen umfasst.
  25. System nach Anspruch 24, wobei der Operator für einen Versuch von Deduplizierungen unter einem Verbindungserstellungs-Operator eingefügt ist oder unter einem Verbindungssondierungs-Operator eingefügt ist.
  26. System nach Anspruch 25, wobei der Operator für einen Versuch von Deduplizierungen durch ein Budget eines lokalen Speichers begrenzt ist.
  27. System nach Anspruch 25, wobei der Operator für einen Versuch von Deduplizierungen in einen Durchgangmodus wechselt, wenn ein Reduktionsfaktor unter einem Schwellenwert liegt.
  28. System nach Anspruch 23, wobei der wenigstens eine adaptive Aggregationsoperator einen untergeordneten Aggregationsoperator umfasst.
  29. System nach Anspruch 28, wobei der untergeordnete Aggregationsoperator unter einer Erstellungsseite einer Hash-Verbindung eingefügt ist, bei der ein Verbindungserstellungs-Operator eine Hash-Verbindung unter dem Verbindungserstellungs-Operator hat, wobei der untergeordnete Aggregationsoperator an den lokalen Speicher gebunden ist und basierend auf einem lokal beobachteten Reduktionsverhältnis in einen Durchgangsmodus wechselt.
  30. System nach Anspruch 23, wobei ein Einfügen des wenigstens einen adaptiven Aggregationsoperators in den Abfrageplan basierend wenigstens teilweise auf der Analyse der bestimmten Abfrageoperation veranlasst, dass der wenigstens eine Prozessor Operationen durchführt, die weiterhin folgendes umfassen: Analysieren eines Datenflusses für die bestimmte Abfrageoperation basierend auf einer Gruppe von Faktoren, wobei die Gruppe von Faktoren Daten umfasst, die durch die bestimmte Abfrageoperation hindurchgehen, oder eine Speichernutzung der bestimmten Abfrageoperation oder anderer Abfrageoperationen.
DE202020005722.3U 2019-09-25 2020-07-31 Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan Active DE202020005722U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962905920P 2019-09-25 2019-09-25
US62/905,920 2019-09-25
US16/857,790 2020-04-24
US16/857,790 US10997173B2 (en) 2019-09-25 2020-04-24 Placement of adaptive aggregation operators and properties in a query plan

Publications (1)

Publication Number Publication Date
DE202020005722U1 true DE202020005722U1 (de) 2022-03-08

Family

ID=74881891

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202020005722.3U Active DE202020005722U1 (de) 2019-09-25 2020-07-31 Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan

Country Status (6)

Country Link
US (4) US11144550B2 (de)
EP (1) EP3973409A4 (de)
KR (1) KR102494425B1 (de)
CN (1) CN113711197B (de)
DE (1) DE202020005722U1 (de)
WO (1) WO2021061276A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11971888B2 (en) 2019-09-25 2024-04-30 Snowflake Inc. Placement of adaptive aggregation operators and properties in a query plan

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11620287B2 (en) 2020-02-26 2023-04-04 Snowflake Inc. Framework for providing intermediate aggregation operators in a query plan
US11620547B2 (en) 2020-05-19 2023-04-04 Oracle International Corporation Estimating number of distinct values in a data set using machine learning
US20220327129A1 (en) * 2021-04-09 2022-10-13 Tekion Corp Enabling Real-Time Integration of Up-To-Date Siloed Data
US11520834B1 (en) 2021-07-28 2022-12-06 Oracle International Corporation Chaining bloom filters to estimate the number of keys with low frequencies in a dataset
CN114328606B (zh) * 2021-12-30 2022-11-29 星环信息科技(上海)股份有限公司 Sql执行效率的提高方法、设备及存储介质
US11645231B1 (en) 2022-04-24 2023-05-09 Morgan Stanley Services Group Inc. Data indexing for distributed query execution and aggregation
US11520739B1 (en) 2022-04-24 2022-12-06 Morgan Stanley Services Group Inc. Distributed query execution and aggregation
US11500889B1 (en) 2022-04-24 2022-11-15 Morgan Stanley Services Group Inc. Dynamic script generation for distributed query execution and aggregation
US11899662B1 (en) * 2022-12-21 2024-02-13 Teradata Us, Inc. Compression aware aggregations for queries with expressions
US11995080B1 (en) * 2023-07-25 2024-05-28 Snowflake Inc. Runtime join pruning to improve join performance for database tables

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69032576T2 (de) * 1990-02-27 1999-04-15 Oracle Corp Dynamische Optimierung eines einzelnen relationalen Zugriffs
US6529896B1 (en) * 2000-02-17 2003-03-04 International Business Machines Corporation Method of optimizing a query having an existi subquery and a not-exists subquery
US7133858B1 (en) * 2000-06-30 2006-11-07 Microsoft Corporation Partial pre-aggregation in relational database queries
US20040111410A1 (en) 2002-10-14 2004-06-10 Burgoon David Alford Information reservoir
US7958160B2 (en) * 2003-12-16 2011-06-07 Oracle International Corporation Executing filter subqueries using a parallel single cursor model
US7493337B2 (en) * 2004-03-31 2009-02-17 Microsoft Corporation Query progress estimation
US8126870B2 (en) * 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US7908242B1 (en) 2005-04-11 2011-03-15 Experian Information Solutions, Inc. Systems and methods for optimizing database queries
US7606827B2 (en) * 2006-12-14 2009-10-20 Ianywhere Solutions, Inc. Query optimization using materialized views in database management systems
US8832073B2 (en) 2007-06-29 2014-09-09 Alcatel Lucent Method and apparatus for efficient aggregate computation over data streams
US7844600B2 (en) 2007-07-13 2010-11-30 Oracle International Corp. Materialized views with user-defined aggregates
US7822712B1 (en) 2007-10-18 2010-10-26 Google Inc. Incremental data warehouse updating
US7673065B2 (en) * 2007-10-20 2010-03-02 Oracle International Corporation Support for sharing computation between aggregations in a data stream management system
US20100162251A1 (en) 2008-12-19 2010-06-24 Anita Richards System, method, and computer-readable medium for classifying problem queries to reduce exception processing
US8346736B2 (en) 2009-03-16 2013-01-01 International Business Machines Corporation Apparatus and method to deduplicate data
EP2414926A1 (de) 2009-09-18 2012-02-08 Hitachi, Ltd. Speichersystem zum eliminieren von duplizierten daten
US8688683B2 (en) * 2009-11-30 2014-04-01 Business Objects Software Ltd. Query plan reformulation
US8996463B2 (en) * 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US8880508B2 (en) 2010-12-30 2014-11-04 Sap Se Processing database queries using format conversion
US20130013585A1 (en) * 2011-07-08 2013-01-10 Goetz Graefe Hash join and hash aggregation integration system
US8762396B2 (en) 2011-12-22 2014-06-24 Sap Ag Dynamic, hierarchical bloom filters for network data routing
JP6338579B2 (ja) * 2012-07-24 2018-06-06 アビニシオ テクノロジー エルエルシー データモデルにおけるエンティティのマッピング
US9383982B2 (en) * 2012-09-12 2016-07-05 Microsoft Technology Licensing, Llc Data-parallel computation management
US9460154B2 (en) 2012-12-04 2016-10-04 Oracle International Corporation Dynamic parallel aggregation with hybrid batch flushing
US9235621B2 (en) * 2013-01-30 2016-01-12 Oracle International Corporation Data-aware scalable parallel execution of rollup operations
US9740714B2 (en) * 2014-02-06 2017-08-22 International Business Machines Corporation Multilevel filters for cache-efficient access
US20150248461A1 (en) * 2014-02-28 2015-09-03 Alcatel Lucent Streaming query deployment optimization
US9454574B2 (en) 2014-03-28 2016-09-27 Sybase, Inc. Bloom filter costing estimation
US9680831B2 (en) 2014-07-30 2017-06-13 Verily Life Sciences Llc Data permission management for wearable devices
US20160132523A1 (en) 2014-11-12 2016-05-12 Strato Scale Ltd. Exploiting node-local deduplication in distributed storage system
US11023443B2 (en) * 2015-02-13 2021-06-01 Teradata Us, Inc. Collaborative planning for accelerating analytic queries
US10025822B2 (en) * 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US10067980B2 (en) 2015-06-16 2018-09-04 Sap Se Database calculation engine integrating hierarchy views
US20160378824A1 (en) 2015-06-24 2016-12-29 Futurewei Technologies, Inc. Systems and Methods for Parallelizing Hash-based Operators in SMP Databases
US10127277B2 (en) * 2015-07-31 2018-11-13 International Business Machines Corporation Outer join optimizations in database management systems
US9813351B2 (en) 2015-10-06 2017-11-07 Huawei Technologies Co., Ltd. Method and apparatus for adaptive packet aggregation
US10496643B2 (en) * 2016-02-08 2019-12-03 Microsoft Technology Licensing, Llc Controlling approximations of queries
KR20170109119A (ko) * 2016-03-17 2017-09-28 한국전자통신연구원 분산 질의 엔진에서의 질의 최적화 방법 및 장치
US10380282B2 (en) 2016-08-24 2019-08-13 Improbable Worlds Ltd Distributable and customizable load-balancing of data-associated computation via partitions and virtual processes
US11055148B2 (en) * 2017-10-24 2021-07-06 Genesys Telecommunications Laboratories, Inc. Systems and methods for overload protection for real-time computing engines
US11288274B1 (en) * 2019-05-29 2022-03-29 Yellowbrick Data, Inc. System and method for storing data for, and providing, rapid database join functions and aggregation statistics
US11144550B2 (en) 2019-09-25 2021-10-12 Snowflake Inc. Pipeline level optimization of aggregation operators in a query plan during runtime
US11620287B2 (en) 2020-02-26 2023-04-04 Snowflake Inc. Framework for providing intermediate aggregation operators in a query plan
WO2022026975A1 (en) 2020-07-27 2022-02-03 Snowflake Inc. Intermediate aggregation operators in a query plan

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11971888B2 (en) 2019-09-25 2024-04-30 Snowflake Inc. Placement of adaptive aggregation operators and properties in a query plan

Also Published As

Publication number Publication date
CN113711197A (zh) 2021-11-26
KR20210135535A (ko) 2021-11-15
CN113711197B (zh) 2022-11-25
EP3973409A1 (de) 2022-03-30
US10997173B2 (en) 2021-05-04
EP3973409A4 (de) 2023-02-15
US11144550B2 (en) 2021-10-12
KR102494425B1 (ko) 2023-02-06
US11468063B2 (en) 2022-10-11
WO2021061276A1 (en) 2021-04-01
US20210232583A1 (en) 2021-07-29
US20210089535A1 (en) 2021-03-25
US11971888B2 (en) 2024-04-30
US20210173839A1 (en) 2021-06-10
US20210089533A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
DE202020005722U1 (de) Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan
DE202020005687U1 (de) Gemeinsame Datennutzung bzw. Datenteilung und materilisierte Ansichten in Datenbanken
DE202017007212U1 (de) System zur inkrementellen Clusterwartung einer Tabelle
DE60130475T2 (de) Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem
DE69910219T2 (de) Transformation der perspektive auf tabellen von relationalen datenbanken
US10762087B2 (en) Database search
DE202019005484U1 (de) Inkrementale Merkmalsentwicklung und Arbeitsbelastungserfassung in Datenbanksystemen
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
DE202011110124U1 (de) Hybridabfrageausführungsplan
DE202020005734U1 (de) Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen
DE112015000347T5 (de) Verarbeiten von Datensätzen in einer Ablage für große Datenmengen
DE10103574A1 (de) Aggregierte Prädikate und Suche in einem Datenbankverwaltungssystem
DE112011101391T5 (de) GPU-fähige Datenbanksysteme
DE102013215009A1 (de) Verfahren und System zur Optimierung der Datenübertragung
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE112011101200T5 (de) Spaltenorientierte Speicher-Darstellungen von Datensätzen
DE202021004036U1 (de) Data Clean Room
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
DE202020005682U1 (de) Automatisierte erneute Abfrageversuche in einer Datenbankumgebung
DE60300984T2 (de) Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung
DE202021004295U1 (de) Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem
Myalapalli et al. An appraisal to optimize SQL queries
WO2018090557A1 (zh) 查询数据表的方法和装置
US20210263929A1 (en) Framework for providing intermediate aggregation operators in a query plan
DE112022000886T5 (de) Datenverarbeitungssystem mit manipulation logischer datensatzgruppen

Legal Events

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