DE202021004327U1 - Autoskalierung externer Funktionsanforderungen - Google Patents

Autoskalierung externer Funktionsanforderungen Download PDF

Info

Publication number
DE202021004327U1
DE202021004327U1 DE202021004327.6U DE202021004327U DE202021004327U1 DE 202021004327 U1 DE202021004327 U1 DE 202021004327U1 DE 202021004327 U DE202021004327 U DE 202021004327U DE 202021004327 U1 DE202021004327 U1 DE 202021004327U1
Authority
DE
Germany
Prior art keywords
computing resources
external system
parallel
query
external
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
DE202021004327.6U
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 DE202021004327U1 publication Critical patent/DE202021004327U1/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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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

Landscapes

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

Abstract

Computerprogramm, das Anweisungen umfasst, 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 einer Abfrage durch ein Datenbanksystem durch einen Prozessor;
Erzeugen eines Abfrageplans, um die Abfrage auszuführen;
Bestimmen, dass der Abfrageplan eine Interaktion mit einem externen System enthält;
Einstellen einer ersten Anzahl von parallelen Rechenressourcen, um sich auf das externe System einzulassen, um wenigstens einen Teilbereich des Abfrageplans auszuführen, einschließlich eines Übertragens paralleler externer Anrufanforderungen zum externen System;
Empfangen einer Anzeige bezüglich Verarbeitungsmöglichkeiten des externen Systems in Bezug auf die parallelen externen Anrufanforderungen; und
in Reaktion auf ein Empfangen der Anzeige Modifizieren der Anzahl von parallelen Rechenressourcen zu einer zweiten Anzahl;
Ausführen wenigstens eines Teilbereichs des Abfrageplans unter Verwendung der zweiten Anzahl von paralleler Rechenressourcen; und
Erzeugen eines Ergebnisses der Abfrage.

Description

  • Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung mit der seriellen Nr. 17/039,473 , eingereicht am 30. September 2020, die hierin durch Bezugnahme in ihrer Gesamtheit enthalten ist.
  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich allgemein auf ein netzwerkbasiertes Datenbanksystem und insbesondere auf eine Autoskalierung externer Funktionen von einem netzwerkbasierten Datenbanksystem.
  • Um als Gebrauchsmuster geschützt zu werden und Gegenstand davon zu sein, 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 darzustellen, für welche mit den beigefügten Ansprüchen Schutz gesucht wird.
  • HINTERGRUND
  • Netzwerkbasierte Datenbanksysteme können über eine Cloud-Plattform bereitgestellt werden, die zulässt, dass Organisationen und Benutzer Daten aus der Cloud speichern, managen und abrufen bzw. wiedergewinnen. In Bezug auf eine Art von Datenverarbeitung könnte ein Datenbanksystem eine Online-Transaktionsverarbeitung, einen Online-Analyseverarbeitung, eine Kombination aus den beiden und/oder eine andere Art von Datenverarbeitung implementieren. Darüber hinaus könnte eine Datenbankplattform ein relationales Datenbankmanagementsystem und/oder eine oder mehrere andere Arten von Datenbankmanagementsystemen sein oder enthalten.
  • Ein solches Beispiel ist ein Cloud-Data-Warehouse bzw. Cloud-Datenlager (auch als „netzwerkbasiertes Data Warehouse“ oder einfach als „Data Warehouse“ bezeichnet), das ein zur Datenanalyse und Berichterstattung verwendetes netzwerkbasiertes System ist, das ein zentrales Repository bzw. Depot von integrierten Daten von einer oder mehreren ganz verschiedenen Quellen umfasst. Ein Cloud-Data-Warehouse kann aktuelle und historische Daten speichern, die zum Erstellen von Analyseberichten für ein Unternehmen verwendet werden können. Zu diesem Zweck können Data-Warehouses Business-Intelligence- bzw. Geschäftsanalytik-Tools, Tools bzw. Werkzeuge bzw. Hilfsprogramme zum Extrahieren, Transformieren und Laden von Daten in das Repository und Tools zum Managen und Abrufen von Metadaten bereitstellen.
  • In einigen Fällen kann es vorkommen, dass ein Benutzer von netzwerkbasierten Data-Warehouse eine Funktionsweise zu verwenden wünscht, die extern bzw. außerhalb vom Data-Warehouse-System ist, um die durch das Data-Warehouse gespeicherten Daten zu analysieren oder auf andere Weise zu verarbeiten. Darüber hinaus kann es sein, dass die Konfigurationen eines solchen externen Systems dem Data-Warehouse unbekannt sind. Zum Beispiel kann es einerseits sein, dass das Data-Warehouse elastisch und skalierbar ist; andererseits kann es sein, dass dem Data-Warehouse die Fähigkeiten und eine Kapazität des externen Systems unbekannt sind.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene der beigefügten Zeichnungen stellen lediglich beispielhafte Ausführungsformen der vorliegenden Offenbarung dar und sollten nicht als ihres Schutzumfang beschränkend angesehen werden.
    • 1 stellt eine beispielhafte Computer- bzw. Rechenumgebung, in der ein netzwerkbasiertes Data-Warehouse-System bzw. universelles Datenbanksystem Streams bzw. Datenströme bei gemeinsam genutzten Datenbankobjekten implementieren kann, gemäß einigen beispielhaften Ausführungsformen dar.
    • 2 ist ein Blockdiagramm, das Komponenten eines Datenverarbeitungsservice- bzw. Compute-Service-Managers gemäß einigen Ausführungsformen darstellt.
    • 3 ist ein Blockdiagramm, das Komponenten einer Ausführungsplattform gemäß einigen beispielhaften Ausführungsformen darstellt.
    • 4 zeigt eine Computing- bzw. Rechen-Umgebung gemäß einigen beispielhaften Ausführungsformen.
    • 5 zeigt ein Flussdiagramm eines Verfahrens zum Ausführen einer Abfrage gemäß einigen beispielhaften Ausführungsformen.
    • 6 zeigt ein Flussdiagramm eines Verfahrens zum Skalieren einer Anforderungsrate nach unten zu einem externen System gemäß einigen beispielhaften Ausführungsformen.
    • 7 zeigt ein Flussdiagramm eines Verfahrens zum Skalieren einer Anforderungsrate nach oben zu einem externen System gemäß einigen beispielhaften Ausführungsformen.
    • 8 zeigt ein Flussdiagramm eines mit einem externen System kommunizierenden globalen Dienstes gemäß einigen beispielhaften Ausführungsformen.
    • 9 stellt eine diagrammmäßige Darstellung einer Maschine in der Form eines Computersystems gemäß einigen beispielhaften Ausführungsformen der vorliegenden Offenbarung dar, innerhalb von welchem eine Gruppe bzw. ein Satz von Anweisungen ausgeführt werden kann, um zu veranlassen, dass die Maschine irgendeines oder irgendwelche der hierin diskutierten Verfahren durchführt.
  • DETAILLIERTE BESCHREIBUNG
  • Die Beschreibung, die folgt, enthält Systeme, Verfahren, Techniken, Anweisungs- bzw. Befehlssequenzen und Computermaschinenprogrammprodukte, die illustrative Ausführungsformen der Offenbarung verkörpern. In der folgenden Beschreibung werden zu Erklärungszwecken zahlreiche spezifische Details dargelegt, um für ein Verstehen verschiedener Ausführungsformen des erfinderischen Gegenstands zu sorgen. Für Fachleute auf dem Gebiet wird es jedoch offensichtlich sein, dass Ausführungsformen des erfinderischen Gegenstands ohne diese spezifischen Details in die Praxis umgesetzte werden können. Im Allgemeinen werden wohlbekannte Anweisungs- bzw. Befehlsinstanzen, Protokolle, Strukturen und Techniken nicht notwendigerweise im Detail gezeigt.
  • Externe Funktionen können Benutzern eines Datenbanksystems (z.B. eines Data-Warehouse-Systems) die Möglichkeit bieten, externe Dienste aufzurufen, während sie von einem Inneren des Datenbanksystems aus arbeiten. Die externen Dienste können durch ein entferntes externes System bereitgestellt werden. Während das Datenbanksystem skalierbar und elastisch sein kann (z.B. kann es seine Verarbeitungsrate basierend auf der Verfügbarkeit von Rechenressourcen nach oben oder nach unten skalieren), ist das externe System möglicherweise nicht skalierbar oder elastisch. Darüber hinaus sind die Fähigkeiten oder eine Kapazität des externen Systems dem Data-Warehouse-System möglicherweise nicht bekannt. Das Datenbanksystem weiß möglicherweise nicht, ob das externe System die aktuelle Last externer Aufrufanforderungen aus dem Datenbanksystem handhaben kann oder ob es sogar mehr als die aktuelle Last handhaben kann. Zum Beispiel kann eine hohe Anforderungsrate das externe System destabilisieren, was dazu führt, dass es abstürzt. Somit adressieren die hierin beschriebenen Techniken dieses Problem durch Erkennen einer Drosselung durch das externe System und entsprechendes automatisches Einstellen oder Modifizieren der Anforderungsrate und der Gleichzeitigkeit bzw. Parallelität zur Laufzeit. Ebenso können die hierin beschriebenen Techniken die Anforderungsrate erhöhen, um eine Nutzung der durch das externe System bereitgestellten Ressourcen vollständig zu optimieren. Diese Techniken lassen zu, dass das Datenbanksystem eine Effizienz beim Arbeiten mit externen Diensten verbessert. Darüber hinaus können diese Techniken Ausführungszeiten von Abfragen verkürzen, um dadurch Kosten zu reduzieren.
  • 1 stellt eine beispielhafte gemeinsam genutzte Datenverarbeitungsplattform 100 dar, die eine sichere Nachrichtenvermittlung bzw. einen sichern Datentransfer zwischen Einsätzen implementiert, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Um zu vermeiden, dass der erfinderische Gegenstand mit unnötigem Detail verdeckt wird, sind verschiedene funktionelle Komponenten, die nicht passend dafür sind, ein Verstehen des erfinderischen Gegenstands zu vermitteln, aus 1 weggelassen worden. Ein Fachmann wird jedoch ohne weiteres erkennen, dass verschiedene zusätzliche funktionelle Komponenten als Teil der Rechen-Umgebung 100 enthalten sein können, um zusätzliche Funktionalität zu ermöglichen, die hierin nicht spezifisch beschrieben ist.
  • Wie es gezeigt ist, umfasst die gemeinsam genutzte Datenverarbeitungsplattform 100 das netzwerkbasierte Data-Warehouse-System 102, eine Cloud-Computing-Speicherplattform 104 (z.B. eine Speicherplattform, einen AWS®-Dienst, Microsoft Azure® oder Google Cloud Services®) und eine entfernte Rechenvorrichtung 106. Das netzwerkbasierte Data-Warehouse-System 102 ist ein netzwerkbasiertes System, das zum Speichern von Daten und Zugreifen auf diese (z.B. internes Speichern von Daten, Zugreifen auf externe, entfernt angeordnete Daten) auf eine integrierte Weise und zum Berichten und zur Analyse der integrierten Daten aus der einen oder den mehreren ganz unterschiedlichen Quellen (z.B. der Cloud-Computing-Speicherplattform 104) verwendet wird. Die Cloud-Computing-Speicherplattform 104 umfasst eine Vielzahl von Rechenmaschinen und stellt dem netzwerkbasierten Data-Warehouse-System 102 Computersystemressourcen, wie beispielsweise Datenspeicherung und Rechenleistung, nach Bedarf bzw. auf eine Anforderung hin zur Verfügung. Während bei der in 1 dargestellten Ausführungsform ein Data Warehouse dargestellt ist, können andere Ausführungsformen andere Arten von Datenbanken oder andere Datenverarbeitungssysteme enthalten.
  • Die entfernte Rechenvorrichtung 106 (z.B. eine Benutzervorrichtung, wie beispielsweise ein Laptop-Computer) umfasst eine oder mehrere Rechenmaschinen (z.B. eine Benutzervorrichtung, wie beispielsweise ein Laptop-Computer), die eine entfernte Softwarekomponente 108 (z.B. einen über einen Browser zugänglichen Cloud-Dienst) ausführen, um Benutzern des netzwerkbasierten Data-Warehouse-Systems 102 zusätzliche Funktionalität zur Verfügung zu stellen. Die entfernte Softwarekomponente 108 umfasst eine Reihe bzw. eine Gruppe bzw. einen Satz von maschinenlesbaren Befehlen (z.B. einen Code), die dann, wenn sie durch die entfernte Rechenvorrichtung 106 ausgeführt werden, veranlassen, dass die entfernte Rechenvorrichtung 106 eine bestimmte Funktionalität bereitstellt. Die entfernte Softwarekomponente 108 kann an Eingabedaten arbeiten und erzeugt Ergebnisdaten basierend auf einem Verarbeiten, einem Analysieren oder einem anderweitigen Transformieren der Eingabedaten. Als Beispiel kann die entfernte Softwarekomponente 108 ein Datenanbieter oder ein Datenverbraucher sein, der Datenbankverfolgungsprozeduren, wie beispielsweise Datenströme bzw. Streams auf gemeinsam genutzten Tabellen und Ansichten, ermöglicht, wie es nachstehend in weiterem Detail diskutiert ist.
  • Das netzwerkbasierte Data-Warehouse-System 102 umfasst ein Zugriffsmanagementsystem 110, einen Computing-Service-Manager 112, eine Ausführungsplattform 114 und eine Datenbank 116. Das Zugriffsmanagementsystem 110 ermöglicht administrativen Benutzern, einen Zugriff auf Ressourcen und Dienste zu managen, die durch das netzwerkbasierte Data-Warehouse-System 102 bereitgestellt werden. Administrative Benutzer können Benutzer, Rollen und Gruppen erstellen und managen und Berechtigungen verwenden, um einen Zugriff auf Ressourcen und Dienste zuzulassen oder zu verweigern. Das Zugriffsmanagementsystem 110 kann Teilungsdaten speichern, die einen geteilten Zugriff auf die Speicherressourcen der Cloud-Computing-Speicherplattform 104 für verschiedene Benutzer des netzwerkbasierten Data-Warehouse-Systems 102 sicher managen, wie es nachstehend in weiterem Detail diskutiert wird.
  • Der Computing-Service-Manager 112 koordiniert und managt Operationen des netzwerkbasierten Data-Warehouse-Systems 102. Der Computing-Service-Manager 112 führt auch eine Abfrageoptimierung und -kompilierung durch und ein Managen von Clustern von Computing-Diensten, die Computerressourcen (z.B. virtuelle Lager, virtuelle Maschinen, EC2-Cluster) bereitstellen. Der Computing-Service-Manager 112 kann irgendeine Anzahl von Clientkonten unterstützen, wie beispielsweise Endbenutzer, die Datenspeicherungs- und -wiedergewinnungsanforderungen bereitstellen, Systemadministratoren, die die hierin beschriebenen Systeme und Verfahren managen, und andere Komponenten/Vorrichtungen, die mit dem Computing-Service-Manager 112 interagieren.
  • Der Computing-Service-Manager 112 ist auch mit einer Datenbank 116 gekoppelt, die mit der Gesamtheit von auf der gemeinsam genutzte Datenverarbeitungsplattform 100 gespeicherten Daten assoziiert ist. Die Datenbank 116 speichert Daten, die zu verschiedenen Funktionen und Aspekten gehören, die mit dem netzwerkbasierten Data-Warehouse-System 102 und seinen Benutzern assoziiert sind.
  • Bei einigen Ausführungsformen enthält die Datenbank 116 eine Zusammenfassung von in entfernten Datenspeichersystemen gespeicherten Daten sowie von aus einem oder mehreren lokalen Caches verfügbaren Daten. Zusätzlich kann die Datenbank 116 Information diesbezüglich enthalten, wie Daten in den entfernten Datenspeichersystemen und den lokalen Caches organisiert sind. Die Datenbank 116 lässt zu, dass Systeme und Dienste bestimmen, ob auf ein Stück von Daten zugegriffen werden muss, ohne die tatsächlichen Daten aus einer Speichervorrichtung zu laden oder auf diese zuzugreifen. Der Computing-Service-Manager 112 ist weiterhin mit einer Ausführungsplattform 114 gekoppelt, die mehrere Computing- bzw. Computerressourcen (z.B. virtuelle Lager) bereitstellt, die verschiedene Datenspeicherungs- und Datenabruf- bzw. Datenwiedergewinnungsaufgaben ausführen, wie es nachstehend detaillierter diskutiert wird.
  • Die Ausführungsplattform 114 ist mit mehreren Datenspeichervorrichtungen 124-1 bis 124-n gekoppelt, die Teil einer Cloud-Computing-Speicherplattform 104 sind. Bei einigen Ausführungsformen sind die Datenspeichervorrichtungen 124-1 bis 124-n cloudbasierte Speichervorrichtungen, die an einem oder mehreren geografischen Standorten angeordnet sind. Zum Beispiel können die Datenspeichervorrichtungen 124-1 bis 124-n Teil einer Infrastruktur einer öffentlichen Cloud oder einer Infrastruktur einer privaten Cloud sein. Die Datenspeichervorrichtungen 124-1 bis 124-n können Festplattenlaufwerke (HDDs), Festkörperspeicher (SSDs), Speichercluster, Amazon S3-Speichersysteme oder irgendeine andere Datenspeichertechnologie sein. Zusätzlich kann die Cloud-Computing-Speicherplattform 104 verteilte Dateisysteme (wie beispielsweise Hadoop Distributed File Systems (HDFS)), Objektspeichersysteme und dergleichen enthalten.
  • Die Ausführungsplattform 114 umfasst eine Vielzahl von Computing- bzw. Rechenknoten (z.B. virtuelle Lager). Eine Gruppe von Prozessen auf einem Rechenknoten führt einen durch den Computing-Service-Manager 112 kompilierten Abfrageplan aus. Die Gruppe von Prozessen kann folgendes enthalten: einen ersten Prozess, um den Abfrageplan auszuführen; einen zweiten Prozess, um Mikropartitionsdateien unter Verwendung einer LRU(Least Recently Used (= am längsten nicht verwendet))-Strategie zu überwachen und zu löschen und um einen OOM(Out of Memory (= kein Speicher mehr))-Fehlerminderungsprozess zu implementieren; einen dritten Prozess, der Gesundheitsinformation aus Prozessprotokollen und Statusinformation extrahiert, um sie zum Computing-Service-Manager 112 zurückzusenden; einen vierten Prozess, um eine Kommunikation mit dem Computing-Service-Manager 112 nach einem Systemstart herzustellen; und einen fünften Prozess, um die gesamte Kommunikation mit einem Computercluster für einen gegebenen Job zu handhaben, der vom Computing-Service-Manager 112 bereitgestellt ist, und um Information zu dem Computing-Service-Manager 112 und anderen Computing- bzw. Rechen- bzw. Computerknoten der Ausführungsplattform 114 zurück zu kommunizieren.
  • Die Cloud-Computing-Speicherplattform 104 umfasst auch ein Zugriffsmanagementsystem 118 und einen Web-Proxy 120. Wie beim Zugriffsmanagementsystem 110 lässt das Zugriffsmanagementsystem 118 zu, dass Benutzer Benutzer, Rollen und Gruppen erstellen und managen und Berechtigungen verwenden, um einen Zugriff auf Cloud-Dienste und -Ressourcen zuzulassen und zu verweigern. Das Zugriffsmanagementsystem 110 des netzwerkbasierten Data-Warehouse-Systems 102 und das Zugriffsmanagementsystem 118 der Cloud-Computing-Speicherplattform 104 können Information kommunizieren und gemeinsam nutzen bzw. teilen, um ein Zugreifen auf Ressourcen und Dienste und ein Management davon zu ermöglichen, die von Benutzern von sowohl dem netzwerkbasierten Data-Warehouse-System 102 als auch der Cloud-Computing-Speicherplattform 104 gemeinsam genutzt werden. Der Web-Proxy 120 handhabt Aufgaben, die bei einem Annehmen und einem Verarbeiten gleichzeitiger API-Aufrufe beteiligt sind, einschließlich eines Verkehrsmanagements, einer Autorisierung und einer Zugriffssteuerung bzw. -kontrolle, einer Überwachung und eines API-Versionsmanagements. Der Web-Proxy 120 stellt einen HTTP-Proxy-Dienst zum Erstellen, Veröffentlichen, Beibehalten, Sichern und Überwachen von APIs (z.B. REST-APIs) bereit.
  • Bei einigen Ausführungsformen sind Kommunikationsverbindungen zwischen Elementen der gemeinsam genutzten Datenverarbeitungsplattform 100 über ein oder mehrere Datenkommunikationsnetzwerke implementiert. Diese Datenkommunikationsnetzwerke können irgendein Kommunikationsprotokoll und irgendeinen Typ von Kommunikationsmedium verwenden. Bei einigen Ausführungsformen sind die Datenkommunikationsnetzwerke eine Kombination von zwei oder mehr Datenkommunikationsnetzwerken (oder Unter- bzw. Teilnetzwerken), die miteinander gekoppelt sind. Bei alternativen Ausführungsformen sind diese Kommunikationsverbindungen unter Verwendung von irgendeinem Typ von Kommunikationsmedium und irgendeinem Kommunikationsprotokoll implementiert.
  • Wie es in 1 gezeigt ist, sind die Datenspeichervorrichtungen 124-1 bis 124-N von den mit der Ausführungsplattform 114 assoziierten Computerressourcen entkoppelt. Das bedeutet, dass neue virtuelle Lager in der Ausführungsplattform 114 erstellt und beendet werden können und zusätzliche Datenspeichervorrichtungen auf eine unabhängige Weise auf der Cloud-Computing-Speicherplattform 104 erstellt und beendet werden können. Diese Architektur unterstützt dynamische Änderungen am netzwerkbasierten Data-Warehouse-System 102 basierend auf den sich ändernden Datenspeicherungs-/-abrufanforderungen sowie den sich ändernden Anforderungen der Benutzer und Systeme, die auf die gemeinsam genutzte Datenverarbeitungsplattform 100 zugreifen. Die Unterstützung dynamischer Änderungen lässt zu, dass sich das netzwerkbasierte Data-Warehouse-System 102 in Reaktion auf sich ändernde Anforderungen an die Systeme und Komponenten innerhalb des netzwerkbasierten Data-Warehouse-Systems 102 schnell skaliert. Die Entkopplung der Computerressourcen von den Datenspeichervorrichtungen 124-1 bis 124-n unterstützt die Speicherung großer Datenmengen, ohne eine entsprechend große Menge an Computerressourcen zu erfordern. Gleichermaßen unterstützt diese Entkopplung von Ressourcen eine signifikante Erhöhung von zu einem bestimmten Zeitpunkt verwendeten Computerressourcen, ohne eine entsprechende Erhöhung von verfügbaren Datenspeicherressourcen zu erfordern. Zusätzlich ermöglicht die Entkopplung von Ressourcen unterschiedlichen Konten, ein Erstellen zusätzlicher Computerressourcen zu handhaben, um durch andere Benutzer gemeinsam genutzte Daten zu verarbeiten, ohne die Systeme der anderen Benutzer zu beeinflussen bzw. zu beeinträchtigen. Zum Beispiel kann ein Datenanbieter drei Computerressourcen haben und Daten mit einem Datenverbraucher teilen und kann der Datenverbraucher neue Computerressourcen erzeugen, um Abfragen gegen die geteilten bzw. gemeinsam genutzten Daten auszuführen, wobei die neuen Computerressourcen durch den Datenverbraucher gemanagt werden und sich nicht auf die Computerressourcen des Datenanbieters auswirken oder mit ihnen interagieren.
  • Der Computing-Service-Manager 112, die Datenbank 116, die Ausführungsplattform 114, die Cloud-Computing-Speicherplattform 104 und die entfernte Rechenvorrichtung 106 sind in 1 als einzelne Komponenten gezeigt. Der Computing-Service-Manager 112, die Datenbank 116, die Ausführungsplattform 114, die Cloud-Computing-Speicherplattform 104 und die entfernte Computing-Umgebung können jedoch jeweils als verteiltes System implementiert sein (z.B. verteilt über mehrere Systeme/Plattformen an mehreren geografischen Standorten), verbunden durch APIs und Zugriffsinformation (z.B. Token, Anmeldedaten). Zusätzlich können der Computing-Service-Manager 112, die Datenbank 116, die Ausführungsplattform 114 und die Cloud-Computing-Speicherplattform 104 jeweils in Abhängigkeit von Änderungen an den empfangenen Anforderungen und den sich ändernden Anforderungen der gemeinsam genutzten Datenverarbeitungsplattform 100 (unabhängig voneinander) nach oben oder nach unten skaliert werden. Somit ist bei den beschriebenen Ausführungsformen das netzwerkbasierte Data-Warehouse-System 102 dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Datenverarbeitungsanforderungen gerecht zu werden.
  • Während einer typischen Operation verarbeitet das netzwerkbasierte Data-Warehouse-System 102 mehrere durch den Computing-Service-Manager 112 bestimmte Jobs (z.B. Abfragen). Diese Jobs werden durch den Computing-Service-Manager 112 geplant und gemanagt, um zu bestimmen, wann und wie der Job auszuführen ist. Zum Beispiel kann der Computing-Service-Manager 112 den Job in mehrere diskrete Aufgaben bzw. Aufträge aufteilen und kann bestimmen, welche Daten zum Ausführen von jeder der mehreren Aufgaben erforderlich sind. Der Computing-Service-Manager 112 kann jede der mehreren diskreten Aufgaben einem oder mehreren Knoten der Ausführungsplattform 114 zuordnen, um die Aufgabe zu verarbeiten. Der Computing-Service-Manager 112 kann bestimmen, welche Daten zum Verarbeiten einer Aufgabe nötig sind, und kann weiterhin bestimmen, welche Knoten innerhalb der Ausführungsplattform 114 für eine Verarbeitung der Aufgabe am besten geeignet sind. Es kann sein, dass einige Knoten bereits die für die Verarbeitung der Aufgabe erforderlichen Daten in einem Cache gespeichert bzw. zwischengespeichert haben (da die Knoten kürzlich die Daten von der Cloud-Computing-Speicherplattform 104 für einen früheren Job heruntergeladen haben) und daher ein guter Kandidat für die Verarbeitung der Aufgabe sein können. In der Datenbank 116 gespeicherte Metadaten unterstützen den Computing-Service-Manager 112 bei einem Bestimmen, welche Knoten in der Ausführungsplattform 114 bereits wenigstens einen Teilbereich der für die Verarbeitung der Aufgabe erforderlichen Daten zwischengespeichert haben. Ein oder mehrere Knoten in der Ausführungsplattform 114 verarbeiten die Aufgabe unter Verwendung von Daten, die durch die Knoten zwischengespeichert sind und, wenn es nötig ist, von Daten, die durch die Cloud-Computing-Speicherplattform 104 abgerufen bzw. wiedergewonnen sind. Es ist wünschenswert, so viele Daten wie möglich aus Caches innerhalb der Ausführungsplattform 114 abzurufen, da die Wiedergewinnungs- bzw. Abrufgeschwindigkeit typischerweise viel schneller als ein Wiedergewinnen bzw. Abrufen von Daten aus der Cloud-Computing-Speicherplattform 104 ist.
  • Wie es in 1 gezeigt ist, trennt die gemeinsam genutzte Datenverarbeitungsplattform 100 die Ausführungsplattform 114 von der Cloud-Computing-Speicherplattform 104. Bei dieser Anordnung arbeiten die Verarbeitungsressourcen und Cacheressourcen in der Ausführungsplattform 114 unabhängig von den Datenspeichervorrichtungen 124-1 bis 124-n in der Cloud-Computing-Speicherplattform 104. Somit sind die Computerressourcen und Cacheressourcen nicht auf spezifische Datenspeichervorrichtungen 124-1 bis 124-n beschränkt. Stattdessen können alle Computerressourcen und alle Cacheressourcen Daten von irgendeiner der Datenspeicherressourcen in der Cloud-Computing-Speicherplattform 104 abrufen und Daten dorthin speichern.
  • 2 ist ein Blockdiagramm, das Komponenten des Computing-Service-Managers 112 gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Wie es in 2 gezeigt ist, managt ein Anforderungsverarbeitungsdienst 202 empfangene Datenspeicheranforderungen und Datenwiedergewinnungs- bzw. Datenabrufanforderungen (z.B. an Datenbankdaten durchzuführende Jobs). Zum Beispiel kann der Anforderungsverarbeitungsdienst 202 die Daten bestimmen, die zur Verarbeitung einer empfangenen Abfrage (z.B. einer Datenspeicheranforderung oder einer Datenabrufanforderung) nötig sind. Die Daten können in einem Cache innerhalb der Ausführungsplattform 114 oder in einer Datenspeichervorrichtung in der Cloud-Computing-Speicherplattform 104 gespeichert werden. Ein Managementkonsolendienst 204 unterstützt einen Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager. Zusätzlich kann der Managementkonsolendienst 204 eine Anforderung empfangen, einen Job auszuführen und die Arbeitsauslastung auf dem System zu überwachen. Die Stream-Teilungsmaschine 225 managt eine Änderungsnachverfolgung an Datenbankobjekten, wie beispielsweise eine Datenteilung (z.B. geteilte Tabelle) oder eine geteilte Ansicht, gemäß einigen beispielhaften Ausführungsformen und wie es nachstehend in weiterem Detail diskutiert wird.
  • Der Computing-Service-Manager 112 enthält auch einen Job-Compiler 206, einen Job-Optimierer 208 und einen Job-Ausführer 210. Der Job-Compiler 206 parst bzw. zerlegt bzw. analysiert einen Job in mehrere diskrete Aufgaben und erzeugt den Ausführungscode für jede der mehreren diskreten Aufgaben. Der Job-Optimierer 208 bestimmt das beste Verfahren zum Ausführen der mehreren diskreten Aufgaben basierend auf den Daten, die verarbeitet werden müssen. Der Job-Optimierer 208 handhabt auch verschiedene Datenbereinigungsoperationen und andere Datenoptimierungstechniken, um die Geschwindigkeit und Effizienz eines Ausführens des Jobs zu verbessern. Der Job-Ausführer 210 führt den Ausführungscode für aus einer Warteschlange empfangene oder durch den Computing-Service-Manager 112 bestimmte Jobs aus.
  • Ein Job-Planer und -Koordinator 212 sendet empfangene Jobs zu den geeigneten Diensten oder Systemen zur Kompilierung, Optimierung und Entsendung zur Ausführungsplattform 114. Zum Beispiel können Jobs priorisiert und in dieser priorisierten Reihenfolge verarbeitet werden. Bei einer Ausführungsform bestimmt der Job-Planer und -Koordinator 212 eine Priorität für interne Jobs, die vom Computing-Service-Manager 112 geplant sind, mit anderen Jobs „von außen“, wie beispielsweise Benutzerabfragen, die von anderen Systemen in der Datenbank geplant sein können, aber dieselben Verarbeitungsressourcen in der Ausführungsplattform 114 verwenden können. Bei einigen Ausführungsformen identifiziert der Job-Planer und -Koordinator 212 bestimmte Knoten in der Ausführungsplattform 114 oder ordnet sie zu, um bestimmte Aufgaben zu verarbeiten. Ein Manger eines virtuellen Lagers 214 managt die Operation bzw. den Betrieb mehrerer virtueller Lager, die in der Ausführungsplattform 114 implementiert sind. Wie es nachstehend diskutiert wird, enthält jedes virtuelle Lager mehrere Ausführungsknoten, die jeweils einen Cache und einen Prozessor enthalten (z.B. eine virtuelle Maschine, eine Containerausführungsumgebung auf Betriebssystemebene).
  • Zusätzlich enthält der Computing-Service-Manager 112 einen Konfigurations- und Metadaten-Manager 216, der die Information in Bezug auf die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches (d.h. den Caches in der Ausführungsplattform 114) gespeicherten Daten managt. Der Konfigurations- und Metadaten-Manager 216 verwendet die Metadaten, um zu bestimmen, auf welche Datenmikropartitionen zugegriffen werden muss, um Daten für die Verarbeitung einer bestimmten Aufgabe oder eines bestimmten Jobs wiederzugewinnen bzw. abzurufen. Ein Überwachungs- und Arbeitslast-Analysator 218 beaufsichtigt durch den Computing-Service-Manager 112 durchgeführte Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitslast) quer über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform 114. Der Überwachungs- und Arbeitslast-Analysator 218 verteilt auch Aufgaben neu, wie es nötig ist, basierend auf sich ändernden Arbeitslasten über dem gesamten Data-Warehouse-System 102 und kann weiterhin Aufgaben basierend auf einer Abfragearbeitslast eines Benutzers (z.B. „von extern“) neu verteilen, die auch durch die Ausführungsplattform 114 verarbeitet werden kann. Der Konfigurations- und Metadaten-Manager 216 und der Überwachungs- und Arbeitslast-Analysator 218 sind mit einer Datenspeichervorrichtung 220 gekoppelt. Die Datenspeichervorrichtung 220 in 2 stellt irgendeine Datenspeichervorrichtung innerhalb des Data-Warehouse-Systems 102 dar. Zum Beispiel kann die Datenspeichervorrichtung 220 Caches in der Ausführungsplattform 114, Speichervorrichtungen in der Cloud-Computing-Speicherplattform 104 oder irgendeine andere Speichervorrichtung darstellen.
  • 3 ist ein Blockdiagramm, das Komponenten der Ausführungsplattform 114 gemäß einigen Ausführungsformen der vorliegenden Offenbarung darstellt. Wie es in 3 gezeigt ist, enthält die Ausführungsplattform 114 mehrere virtuelle Lager, die elastische Cluster von Computing-Instanzen sind, wie beispielsweise virtuelle Maschinen. Beim dargestellten Beispiel enthalten die virtuellen Lager ein virtuelles Lager 1, ein virtuelles Lager 2 und ein virtuelles Lager n. Jedes virtuelle Lager (z.B. ein EC2-Cluster) enthält mehrere Ausführungsknoten (z.B. virtuelle Maschinen), die jeweils einen Datencache und einen Prozessor enthalten. Die virtuellen Lager können mehrere Aufgaben parallel ausführen, indem sie die mehreren Ausführungsknoten verwenden. Wie es hierin diskutiert ist, kann die Ausführungsplattform 114 neue virtuelle Lager hinzufügen und vorhandene virtuelle Lager fallenlassen, und zwar in Echtzeit basierend auf den aktuellen Verarbeitungsanforderungen der Systeme und Benutzer. Diese Flexibilität lässt zu, dass die Ausführungsplattform 114 schnell große Mengen an Computerressourcen nutzt, wenn es nötig ist, ohne dazu gezwungen zu sein, fortgesetzt für diese Computerressourcen zu bezahlen, wenn sie nicht mehr benötigt werden. Alle virtuellen Lager können auf Daten von irgendeiner Datenspeichervorrichtung (z.B. irgendeiner Speichervorrichtung in der Cloud-Computing-Speicherplattform 104) zugreifen.
  • Obwohl jedes in 3 gezeigte virtuelle Lager drei Ausführungsknoten enthält, kann ein bestimmtes virtuelles Lager irgendeine Anzahl von Ausführungsknoten enthalten. Weiterhin ist die Anzahl von Ausführungsknoten in einem virtuellen Lager dynamisch, so dass neue Ausführungsknoten erstellt werden, wenn zusätzlicher Bedarf vorhanden ist, und vorhandene bzw. existierende Ausführungsknoten gelöscht werden, wenn sie nicht mehr benötigt werden (z.B. auf eine Abfrage oder einen Jobabschluss hin).
  • Jedes virtuelle Lager ist in der Lage, auf irgendeine der in 1 gezeigten Datenspeichervorrichtungen 124-1 bis 124-n zuzugreifen. Somit sind die virtuellen Lager nicht notwendigerweise einer spezifischen Datenspeichervorrichtung 124-1 bis 124-n zugeordnet und können stattdessen auf Daten von irgendeiner der Datenspeichervorrichtungen 124-1 bis 124-n innerhalb der Cloud-Computing-Speicherplattform 104 zugreifen. Gleichermaßen kann jeder der in 3 gezeigten Ausführungsknoten auf Daten von irgendeiner der Datenspeichervorrichtungen 124-1 bis 124-n zugreifen. Zum Beispiel kann die Speichervorrichtung 124-1 eines ersten Benutzers (z.B. eines Anbieterkontobenutzers) mit einem Workerknoten in einem virtuellen Lager eines anderen Benutzers (z.B. eines Verbraucherkontobenutzers) geteilt werden, so dass der andere Benutzer eine Datenbank (z. B. eine Nurlese-Datenbank) erstellen und die Daten in der Speichervorrichtung 124-1 direkt verwenden kann, ohne die Daten kopieren zu müssen (z.B. sie zu einer neuen Diskette bzw. Platte zu kopieren, die durch den Verbraucherkontobenutzer gemanagt wird). Bei einigen Ausführungsformen kann ein bestimmtes virtuelles Lager oder ein bestimmter Ausführungsknoten vorübergehend einer spezifischen Datenspeichervorrichtung zugeordnet sein, aber das virtuelle Lager bzw. Warehouse oder der Ausführungsknoten kann später auf Daten von irgendeiner anderen Datenspeichervorrichtung zugreifen.
  • Beim Beispiel von 3 enthält das virtuelle Lager 1 drei Ausführungsknoten 302-1, 302-2 und 302-n. Der Ausführungsknoten 302-1 enthält einen Cache 304-1 und einen Prozessor 306-1. Der Ausführungsknoten 302-2 enthält einen Cache 304-2 und einen Prozessor 306-2. Der Ausführungsknoten 302-n enthält einen Cache 304-n und einen Prozessor 306-n. Jeder Ausführungsknoten 302-1, 302-2 und 302-n ist mit einer Verarbeitung von einer oder mehreren Datenspeicherungs- und/oder Datenabrufaufgaben assoziiert. Zum Beispiel kann ein virtuelles Lager Datenspeicherungs- und Datenabrufaufgaben handhaben, die mit einem internen Dienst assoziiert sind, wie beispielsweise einem Clusterbildungsdienst, einem Auffrischungsdienst für eine materialisierte Ansicht, einem Dateikompaktierungsdienst, einem Speicherprozedurdienst oder einem Datei-Upgradedienst. Bei anderen Implementierungen kann ein bestimmtes virtuelles Lager Datenspeicherungs- und Datenabrufaufgaben handhaben, die mit einem bestimmten Datenspeichersystem oder einer bestimmten Datenkategorie assoziiert sind.
  • Ähnlich wie beim oben diskutierten virtuellen Lager 1 enthält das virtuelle Lager 2 drei Ausführungsknoten 312-1, 312-2 und 312-n. Der Ausführungsknoten 312-1 enthält einen Cache 314-1 und einen Prozessor 316-1. Der Ausführungsknoten 312-2 enthält einen Cache 314-2 und einen Prozessor 316-2. Der Ausführungsknoten 312-n enthält einen Cache 314-n und einen Prozessor 316-n. Zusätzlich enthält das virtuelle Lager 3 drei Ausführungsknoten 322-1, 322-2 und 322-n. Der Ausführungsknoten 322-1 enthält einen Cache 324-1 und einen Prozessor 326-1. Der Ausführungsknoten 322-2 enthält einen Cache 324-2 und einen Prozessor 326-2. Der Ausführungsknoten 322-n enthält einen Cache 324-n und einen Prozessor 326-n.
  • Bei einigen Ausführungsformen sind die in 3 gezeigten Ausführungsknoten zustandslos in Bezug auf die Daten, die die Ausführungsknoten im Cache speichern bzw. zwischenspeichern. Zum Beispiel speichern diese Ausführungsknoten Zustandsinformation über den Ausführungsknoten oder die Daten, die von einem bestimmten Ausführungsknoten zwischengespeichert werden, nicht oder halten sie nicht auf andere Weise. Somit kann im Fall eines Fehlers bzw. Ausfalls eines Ausführungsknotens der fehlerhafte bzw. ausgefallene Knoten transparent durch einen anderen Knoten ersetzt werden. Da es keine Zustandsinformation gibt, die mit dem fehlerhaften Ausführungsknoten assoziiert ist, kann der neue (Ersatz-) Ausführungsknoten den ausgefallenen Knoten auf einfache Weise ersetzen, ohne sich Gedanken über eine Neuerstellung eines bestimmten Zustands machen zu müssen.
  • Obwohl die in 3 gezeigten Ausführungsknoten jeweils einen Datencache und einen Prozessor enthalten, können alternative Ausführungsformen Ausführungsknoten umfassen, die irgendeine Anzahl von Prozessoren und irgendeine Anzahl von Caches enthalten. Zusätzlich können die Caches bezüglich der Größe zwischen den unterschiedlichen Ausführungsknoten variieren. Die in 3 gezeigten Caches speichern im lokalen Ausführungsknoten (z.B. in einer lokalen Platte) Daten, die von einer oder mehreren Datenspeichervorrichtungen in der Cloud-Computing-Speicherplattform 104 wiedergewonnen bzw. abgerufen wurden (z.B. S3-Objekte, auf die durch den gegebenen Knoten kürzlich zugegriffen ist). Bei einigen beispielhaften Ausführungsformen speichert der Cache Dateivorsätze bzw. Datei-Header und einzelne Spalten von Dateien, da eine Abfrage nur Spalten herunterlädt, die für diese Abfrage nötig sind.
  • Um Cache-Treffer zu verbessern und sich überlappende redundante Daten zu vermeiden, die in den Knoten-Caches gespeichert sind, ordnet der Job-Optimierer 208 den Knoten Eingabedateisätze unter Verwendung eines konsistenten Hashing-Schemas zu, um über Tabellendateinamen der Daten, auf die zugegriffen wird (z.B. Daten in der Datenbank 116 oder der Datenbank 122), zu hashen bzw. klein zu schneiden. Nachfolgende oder gleichzeitige Abfragen, die auf dieselbe Tabellendatei zugreifen, werden daher gemäß einigen beispielhaften Ausführungsformen auf demselben Knoten ausgeführt.
  • Wie es diskutiert ist, können sich die Knoten und virtuellen Lager in Reaktion auf Umgebungsbedingungen (z.B. Katastrophenszenarien), Hardware-/Softwareprobleme (z.B. Fehlfunktionen) oder administrative Änderungen (z.B. ein Ändern von einem großen Cluster zu einem kleineren Cluster zur Kostensenkung) dynamisch ändern. Bei einigen beispielhaften Ausführungsformen werden, wenn sich der Satz bzw. die Gruppe von Knoten ändert, keine Daten sofort umstrukturiert. Stattdessen wird die Ersatzpolitik bzw. -strategie für am wenigsten kürzlich verwendet implementiert, um die verlorenen Cacheinhalte über mehrere Jobs hinweg möglicherweise zu ersetzen. Somit reduzieren oder eliminieren die Caches die Engpassprobleme, die bei Plattformen auftreten, die konsistent Daten aus entfernten Speichersystemen abrufen. Anstatt wiederholt auf Daten aus den entfernten Speichervorrichtungen zuzugreifen, greifen die hierin beschriebenen Systeme und Verfahren auf Daten aus den Caches in den Ausführungsknoten zu, was signifikant schneller ist und das oben diskutierte Engpassproblem vermeidet. Bei einigen Ausführungsformen sind die Caches unter Verwendung von Hochgeschwindigkeits-Speichervorrichtungen implementiert, die einen schnellen Zugriff auf die zwischengespeicherten Daten bereitstellen. Jeder Cache kann Daten von irgendeiner der Speichervorrichtungen in der Cloud-Computing-Speicherplattform 104 speichern.
  • Weiterhin können die Cacheressourcen und Computerressourcen zwischen unterschiedlichen Ausführungsknoten variieren. Zum Beispiel kann ein Ausführungsknoten signifikante Computerressourcen und minimale Cacheressourcen enthalten, was den Ausführungsknoten für Aufgaben nützlich macht, die signifikante Computerressourcen erfordern. Ein anderer Ausführungsknoten kann signifikante Cacheressourcen und minimale Computerressourcen enthalten, was diesen Ausführungsknoten für Aufgaben nützlich macht, die das Zwischenspeichern großer Datenmengen erfordern. Ein noch weiterer Ausführungsknoten kann Cacheressourcen enthalten, die schnellere Eingabe-Ausgabe-Operationen bereitstellen, die für Aufgaben nützlich sind, die ein schnelles Scannen großer Datenmengen erfordern. Bei einigen Ausführungsformen implementiert die Ausführungsplattform 114 eine Versatz-Handhabung, um die Arbeit unter den Cacheressourcen und Computerressourcen zu verteilen, die mit einer bestimmten Ausführung assoziiert sind, wobei die Verteilung weiterhin auf den erwarteten Aufgaben basieren kann, die durch die Ausführungsknoten ausgeführt werden sollen. Zum Beispiel kann ein Ausführungsknoten mehreren Verarbeitungsressourcen zugeordnet werden, wenn die durch den Ausführungsknoten durchgeführten Aufgaben prozessorintensiver werden. Gleicherma-ßen kann ein Ausführungsknoten mehreren Cacheressourcen zugeordnet werden, wenn die durch den Ausführungsknoten durchgeführten Aufgaben eine größere Cachekapazität erfordern. Weiterhin können einige Knoten aufgrund verschiedener Probleme (z.B. Virtualisierungsprobleme, Netzwerk-Overhead) viel langsamer ausführend sein als andere. Bei einigen beispielhaften Ausführungsformen werden die Ungleichgewichte auf der Abtast- bzw. Scan-Ebene unter Verwendung eines Dateidiebstahlschemas behoben. Insbesondere fordert, wann immer ein Knotenprozess ein Scannen seines Satzes von Eingabedateien abschließt, er zusätzliche Dateien von anderen Knoten an. Wenn der eine der anderen Knoten eine solche Anforderung empfängt, analysiert der Knoten seinen eigenen Satz (z.B. wie viele Dateien beim Empfang der Anforderung im Eingabedateisatz gelassen sind) und überträgt dann das Eigentumsrecht bzw. den Besitz von einer oder mehreren der verbleibenden Dateien für die Dauer des aktuellen Jobs (z.B. der Abfrage). Der anfordernde Knoten (z.B. der Dateidiebstahlknoten) empfängt dann die Daten (z.B. Header-Daten) und lädt die Dateien von der Cloud-Computing-Speicherplattform 104 (z.B. von der Datenspeichervorrichtung 124-1) herunter und lädt die Dateien nicht vom übertragenden Knoten herunter. Auf diese Weise können zurückbleibende bzw. nacheilende Knoten Dateien über einen Dateidiebstahl auf eine Weise übertragen, die die Belastung an den zurückbleibenden Knoten nicht verschlechtert.
  • Obwohl die virtuellen Lager 1, 2 und n mit derselben Ausführungsplattform 114 assoziiert sind, können die virtuellen Lager unter Verwendung von mehreren Computersystemen an mehreren geografischen Standorten implementiert werden. Zum Beispiel kann das virtuelle Lager 1 durch ein Computersystem an einem ersten geografischen Standort implementiert werden, während die virtuellen Lager 2 und n durch ein anderes Computersystem an einem zweiten geografischen Standort implementiert werden. Bei einigen Ausführungsformen sind diese unterschiedlichen Computersysteme cloudbasierte Computersysteme, die durch ein oder mehrere unterschiedliche Unternehmen unterhalten werden.
  • Zusätzlich ist jedes virtuelle Lager in 3 derart gezeigt, dass es mehrere Ausführungsknoten hat. Die mit jedem virtuellen Lager assoziierten mehreren Ausführungsknoten können unter Verwendung mehrerer Computersysteme an mehreren geografischen Standorten implementiert werden. Zum Beispiel implementiert eine Instanz des virtuellen Lagers 1 die Ausführungsknoten 302-1 und 302-2 auf einer Computerplattform an einem geografischen Standort und implementiert den Ausführungsknoten 302-n auf einer anderen Computerplattform an einem anderen geografischen Standort. Ein Auswählen bestimmter Computersysteme, um einen Ausführungsknoten zu implementieren, kann von verschiedenen Faktoren abhängen, wie beispielsweise dem Ausmaß von Ressourcen, die für einen bestimmten Ausführungsknoten nötig sind (z.B. Verarbeitungsressourcenanforderungen und Cacheanforderungen), den Ressourcen, die bei bestimmten Computersystemen verfügbar sind, Kommunikationsfähigkeiten von Netzwerken innerhalb eines geografischen Standorts oder zwischen geografischen Standorten und welche Computersysteme bereits andere Ausführungsknoten im virtuellen Lager implementieren.
  • Die Ausführungsplattform 114 ist auch fehlertolerant. Wenn zum Beispiel ein virtuelles Lager ausfällt, wird dieses virtuelle Lager schnell durch ein anderes virtuelles Lager an einem anderen geografischen Standort ersetzt.
  • Eine bestimmte Ausführungsplattform 114 kann irgendeine Anzahl von virtuellen Lagern enthalten. Zusätzlich ist die Anzahl von virtuellen Lagern in einer bestimmten Ausführungsplattform dynamisch, so dass neue virtuelle Lager erstellt werden, wenn zusätzliche Verarbeitungs- und/oder Cachespeicherungs- bzw. Zwischenspeicherungs-Ressourcen nötig sind. Gleichermaßen können existierende virtuelle Lager gelöscht werden, wenn die mit dem virtuellen Lager assoziierten Ressourcen nicht mehr nötig sind.
  • Bei einigen Ausführungsformen können die virtuellen Lager an denselben Daten in der Cloud-Computing-Speicherplattform 104 arbeiten, aber jedes virtuelle Lager hat seine eigenen Ausführungsknoten mit unabhängigen Verarbeitungs- und Cachespeicherungs- bzw. Zwischenspeicherungs-Ressourcen. Diese Konfiguration lässt zu, dass Anforderungen an unterschiedlichen virtuellen Lagern unabhängig und ohne Interferenz zwischen den Anforderungen verarbeitet werden. Diese unabhängige Verarbeitung, kombiniert mit der Fähigkeit, virtuelle Lager dynamisch hinzuzufügen und zu entfernen, unterstützt das Hinzufügen neuer Verarbeitungskapazität für neue Benutzer, ohne die von den existierenden Benutzern beobachtete Leistungsfähigkeit zu beeinflussen bzw. zu beeinträchtigen.
  • 4 zeigt ein Beispiel einer Rechenumgebung bzw. Computerumgebung gemäß einigen beispielhaften Ausführungsformen. Die Rechenumgebung kann einen globalen Dienst (GS) 400, eine Vielzahl von Knoten (auch als XP-Knoten oder Ausführungsplattformen bezeichnet) 410.1-410. N und ein externes System 420 enthalten. Der Vordergrund-GS 400 kann auch als Compute-Service-Manager bezeichnet werden. Der Vordergrund-GS 400 kann Abfrageanforderungen empfangen und Abfragepläne entwickeln, um die Abfrageanforderungen auszuführen. Der Vordergrund-GS 400 kann Anforderungen zu Knoten 410.1-410.N vermitteln, die einen Abfrageplan ausführen, wie es hierin in weiterem Detail erklärt ist. Der Vordergrund-GS 400 kann Abfragekoordinatoren (QCs) 402.1-402.3 enthalten, die mit einem lokalen Hintergrunddienst (BG) 404 gekoppelt sind. Bei einer Ausführungsform kann der Vordergrund-GS 400 für eine bestimmte Art von Dienst definiert sein, wie beispielsweise Kopieren (Replizieren), Aufnehmen (eine Art einer Abtastung bzw. eines Scans großer Tabellen), Berechnen, Abfragen von der Art einer Abtastung großer Tabellen etc. Die QCs 402.1-402.3 können Abfrageanforderungen von unterschiedlichen Quellen empfangen, die unterschiedliche Konto-IDs haben können. Für bestimmte Operationen, wie beispielsweise solche, bei denen mehrere Rechenressourcen zusammenarbeiten, um unterschiedliche Teilbereiche einer Operation auszuführen (z.B. Abtastungen bzw. Scans großer Tabellen), kann die Quelle mit einer Granularität auf Data-Warehouse-Ebene definiert sein. Die QCs 402.1-402.3 können Information bezüglich der Abfrageanfragen und ihrer Quellen zum lokalen BG 404 kommunizieren.
  • Wie es nachstehend in weiterem Detail erklärt ist, kann der Vordergrund-GS 400 Knoten zum QC 402.1-402.3 zuweisen. Die Knoten können dem Vordergrund-GS 400 aus einem Pool von Rechenknoten 410.1-410. N zugeteilt sein. Jeder Knoten 410.1-410. N kann eine Vielzahl von Workern (die auch als XP-Worker oder Ausführungs-Worker bezeichnet werden) enthalten. Zum Beispiel kann jeder Knoten 64 Worker enthalten. Bei einer Ausführungsform können die Worker Maschinen, Server und/oder Prozessoren sein. Bei einer Ausführungsform können die Worker Kerne einer Maschine bearbeiten. Bei einer Ausführungsform können die Worker Betriebssystem- bzw. OS-Threads (z.B. 64 OS-Threads) enthalten. Auf ein Empfangen seiner Zuweisung von Knoten hin kann der Vordergrund-GS und können insbesondere die QCs 402.1-402.3 direkt mit den zugewiesenen Knoten kommunizieren, um jeweilige Abfragepläne auszuführen.
  • Das externe System 420 kann extern bzw. außerhalb vom Data-Warehouse sein, wie es hierin beschrieben ist. Für einige Abfragen oder Teilbereiche einiger Abfragen müssen die Knoten möglicherweise mit dem externen System 420 interagieren. Zum Beispiel ist es möglich, dass eine Abfrage auf eine Funktion verweist, die mit dem externen System 420 assoziiert ist (z.B. eine entfernte Softwarekomponente). Um das externe System einzubeziehen, können die Knoten 410.1-410. N externe Funktionen aufrufen, wie es in dem am 29. Oktober 2019 eingereichten und am 21. April 2020 erteilten US-Patent Nr. 10,628,244 mit dem Titel „Calling External Functions From A Data Warehouse“ beschrieben ist, welches hierin durch Bezugnahme in seiner Gesamtheit einbezogen ist, einschließlich, aber nicht beschränkt darauf, derjenigen Teilbereiche, die im hierin nachfolgend spezifisch erscheinen, wobei die Einbeziehung mit folgender Ausnahme durch Verweis erfolgt: In dem Fall, dass irgendein Teilbereich des oben genannten Patents mit dieser Anmeldung inkonsistent ist, macht diese Anmeldung das oben genannte Patent überflüssig.
  • Typischerweise kann jeder Worker in einem Knoten, der die Abfrage verarbeitet, eine oder mehrere externe Funktionsanforderungen parallel zum externen System 420 übertragen. Zum Beispiel können dann, wenn ein Knoten 64 Worker enthält und alle Worker die Abfrage verarbeiten, alle 64 Worker externe Funktionsanforderungen zum externen System 420 übertragen. Somit basiert die Anforderungsrate für das externe System auf allen 64 Workern. Jedoch kann dann, wenn das externe System 420 die Anzahl von durch die Worker gesendeten Anforderungen nicht handhaben kann, eine Drosselung auftreten, was zu einer Verschlechterung eines Dienstes, Netzwerkfehlern (z.B. Zeitüberschreitungen) und einer höheren Latenz führt.
  • 5 zeigt ein Flussdiagramm eines Verfahrens 500 zum Ausführen einer Abfrage gemäß einigen beispielhaften Ausführungsformen. Bei einem Beispiel können Teilbereiche des Verfahrens 500 durch den GS 400, die Knoten 410.1-410.N und das externe System 420 ausgeführt werden. Bei einer Operation 502 kann eine Abfrage durch den GS 400 empfangen werden. Die Abfrage kann eine Anforderung dafür enthalten, dass eine oder mehrere Operationen an einem Datensatz, wie beispielsweise einer Quelltabelle, ausgeführt wird oder werden. Zum Beispiel kann die Abfrage eine SQL-Zeichenfolge enthalten. Bei einer Operation 504 kann in Reaktion auf ein Empfangen der Abfrage ein Abfrageplan erstellt werden, um die empfangene Abfrage auszuführen. Zum Beispiel kann die SQL-Zeichenfolge geparst bzw. analysiert werden. Der Abfrageplan kann eine Vielzahl von Operatoren und Links bzw. Verbindungen, die die Operatoren verbinden, enthalten.
  • Bei einer Operation 506 kann der Abfrageplan basierend auf einer regelbasierten Optimierung überarbeitet werden. Das heißt, dass der Abfrageplan, der zum Beispiel als relationaler Algebrabaum dargestellt werden kann, basierend auf einem Regelwerk in eine bessere Form überarbeitet werden kann. Die Regeln können auf ein Beschneiden oder ein konstantes Falten eines oder mehrerer Operatoren basierend auf Prädikatseigenschaften, Prädikatsvereinfachung, Filter-Pushdown bzw. Filter-Kellerung, Eliminierung unnötiger Gruppierung oder Aggregation und/oder anderer geeigneter Regeln gerichtet sein. Darüber hinaus kann als Teil eines Optimierens der Abfrage eine Anzahl von Knoten zum Ausführen des Abfrageplans bestimmt werden. Zum Beispiel können, je komplexer und größer die Abfrage ist, desto mehr Knoten verwendet werden.
  • Bei einer Operation 508 kann der Abfrageplan oder können Teilbereiche des Abfrageplans durch einen oder mehrere Knoten empfangen werden und kann jeder Knoten bestimmen, ob der zugewiesene Abfrageplan eine Interaktion mit einem externen System erfordert. Bei 510 kann der Knoten eine anfängliche Anzahl von Workern zuweisen, um den Abfrageplan auszuführen. Bei 512 kann jeder zugewiesene Worker basierend auf dem Abfrageplan externe Anrufanforderungen zum externen System übertragen. Somit kann die anfängliche Anzahl von Workern auch die Anzahl von zur Verarbeitung zum externen System gesendeten parallelen externen Anrufanforderungen darstellen oder proportional dazu sein. Die anfängliche Anzahl kann durch den Knoten eingestellt werden oder kann durch den GS eingestellt werden. Bei einer nachstehend beschriebenen Ausführungsform kann die anfängliche Anzahl basierend auf einer Kommunikation mit dem externen System zugewiesen werden, wobei das externe System das Data-Warehouse (z.B. den Knoten und/oder den GS) über die Anzahl von parallelen Anforderungen benachrichtigen kann, die es zu dieser Zeit handhaben kann. Bei einer Operation 514 kann das externe System die parallelen externen Anrufanforderungen empfangen und kann mit einem Verarbeiten dieser externen Anrufanforderungen beginnen.
  • Als nächstes werden Beispiele für eine Verkleinerung bzw. ein Herunterskalieren der Anzahl externer Anrufanforderungen beschrieben. 6 zeigt ein Flussdiagramm eines Verfahrens 600 zum Herunterskalieren einer Anforderungsrate auf ein externes System gemäß einigen beispielhaften Ausführungsformen. Das Verfahren 600 kann durch einen Rechenknoten (z.B. Knoten 410.1-410. N) ausgeführt werden. Wie es oben unter Bezugnahme auf 5 diskutiert ist, kann der Knoten bei einer Operation 602 eine anfängliche Anzahl von Workern zuweisen, um einen Abfrageplan (oder Teilbereiche davon) auszuführen, die ein Einlassen auf ein externen System erfordern.
  • Bei einer Operation 604 können externe Aufrufanforderungen unter Verwendung der eingestellten anfänglichen Anzahl von Workern zum externen System übertragen werden. Somit kann die Anzahl von Workern die Anforderungsrate darstellen, da die Worker die Anforderungen parallel übertragen können. Zusätzlich dazu, dass die mehreren Worker parallel arbeiten, kann jeder Worker mehrere externe Anforderungen senden, um die Operationen asynchron zu verarbeiten. Bei einer Operation 606 kann ein erstes Rollfenster gestartet werden. Das Rollfenster kann ein Zeitgeber bzw. ein Timer sein. Bei einer Operation 608 kann der Knoten prüfen, ob während des ersten Rollfensters eine Anzeige (z.B. eine Fehlermeldung) vom externen System empfangen wird. Zum Beispiel kann die Fehlermeldung als HTTP 429-Nachricht bereitgestellt werden, die anzeigt, dass das externe System zu viele Anforderungen empfängt. Zusätzlich oder alternativ kann die Fehlermeldung als HTTP 504-Nachricht bereitgestellt werden, die anzeigt, dass das externe System eine Zeitüberschreitung hat. Bei einer anderen Ausführungsform kann die Fehlermeldung als Kommunikation bzw. Mitteilung vom externen System bereitgestellt werden, die eine Reduzierung bezüglich der Anforderungsrate anfordert.
  • Wenn während des ersten Rollfensters keine Fehlermeldung empfangen wird (z.B. ein Zeitgeber abgelaufen ist), kann das Verfahren die Anforderungsrate erhöhen, wie es nachstehend unter Bezugnahme auf 7 beschrieben wird. Wenn jedoch eine Fehlermeldung empfangen wird, kann der Knoten die Anzahl von internen Parallelismen reduzieren, die bei den asynchronen Aufrufen verwendet werden, und kann auch die Anzahl von der Abfrage zugewiesenen Workern reduzieren (z.B. eine zweite Anzahl von Workern), um dadurch die Anforderungsrate für das externe System zu reduzieren. Die Reduzierung bezüglich eines internen Parallelismus oder bezüglich der Anzahl von Workern kann schrittweise erfolgen und kann auf einer einstellbaren Schrittweite basieren (z.B. 1 Worker, 5 Worker, etc.). Bei einer Ausführungsform kann der Knoten auch andere Knoten konsultieren, bevor er die Anforderungsrate reduziert. Beispielsweise kann es sein, dass der Knoten dann, wenn der Knoten bestimmt, dass andere Knoten kürzlich ihre Anforderungsraten für dasselbe externe System reduziert haben, seine Anforderungsrate nicht reduziert und ein neues Rollfenster startet. Bei einer anderen Ausführungsform kann der Knoten Information bezüglich der Fehlermeldung zu anderen Knoten und dem GS übertragen, und kann der GS auch dieselbe Art von Information von anderen Knoten empfangen. Somit kann der GS die Entscheidung diesbezüglich treffen, ob die Anforderungsrate bei bestimmten Knoten reduziert werden soll. Darüber hinaus kann auch eine untere Grenze für die Anzahl von Workern verwendet werden. Das heißt, dass das System die Anzahl von Workern nicht unter eine untere Grenze reduzieren kann. Und wenn das System weiterhin Fehlermeldungen empfängt, während es sich an der unteren Grenze befindet (ohne Erfolg für eine definierte Zeit), kann das System entscheiden, die Abfrage abzubrechen.
  • Bei einer Operation 612 kann ein zweites Rollfenster gestartet werden. Das Rollfenster kann ein Zeitgeber bzw. ein Timer sein. Bei einer Operation 614 kann der Knoten prüfen, ob während des zweiten Rollfensters eine Fehlermeldung vom externen System in Reaktion auf die reduzierte Anforderungsrate (z.B. zweite Anzahl von Workern) empfangen wird. Wenn während des zweiten Rollfensters keine Fehlermeldung empfangen wird, kann das Verfahren die Anforderungsrate erhöhen, wie es nachstehend unter Bezugnahme auf 7 beschrieben wird. Wenn jedoch eine Fehlermeldung empfangen wird, kann der Knoten bei einer Operation 616 prüfen, ob die Fehlermeldung während einer Abkühlzeit bzw. Beruhigungszeit bzw. Abklingzeit empfangen wurde, die der Reduzierung der Anforderungsrate folgt. Die Abklingzeit kann eine kurze Zeitspanne nach einer Reduzierung der Anforderungsrate sein, um sicherzustellen, dass jede nach der Reduzierung empfangene Fehlermeldung auf die neu reduzierte Rate und nicht auf die vorherige höhere Anforderungsrate reagiert.
  • Wenn die Fehlermeldung während der Abklingzeit empfangen wird, kann die Fehlermeldung ignoriert werden und kann die Anforderungsrate beibehalten werden. Wenn die Fehlermeldung nach der Abklingzeit empfangen wird, kann sich das Verfahren 600 zur Operation 610 bewegen und kann die Anzahl von Workern wieder reduzieren. Das Verfahren 600 kann so lange fortgesetzt werden, bis die Abfrage ausgeführt ist und keine externen Aufrufanforderungen mehr für die Abfrage durchgeführt werden.
  • Darüber hinaus kann jede Anforderung, die eine Fehlermeldung empfängt, zurück zu einer Anforderungswarteschlange hinzugefügt werden. Diejenigen Anforderungen, die eine Fehlermeldung empfangen, können vor anderen Anforderungen in der Anforderungswarteschlange priorisiert werden.
  • Als nächstes werden Beispiele für ein Hochskalieren der Anzahl von externen Anrufanforderungen beschrieben. 7 zeigt ein Flussdiagramm eines Verfahrens 700 zum Hochskalieren einer Anforderungsrate zu einem externen System gemäß einigen beispielhaften Ausführungsformen. Bei einer Operation 702 kann bestimmt werden, dass in einem Rollfenster keine Fehlermeldung empfangen wurde (wie es oben unter Bezugnahme auf 6 beschrieben ist). Bei einer Operation 704 kann die Anzahl von Workern erhöht werden (z.B. eine zweite Anzahl), um dadurch die Anforderungsrate zu erhöhen. Bei einer Operation 706 kann ein weiteres Rollfenster gestartet werden. Die Anzahl von erhöhten Workern kann schrittweise sein und auf einer einstellbaren Schrittweite basieren (z.B. 1 Worker, 5 Worker, etc.). Darüber hinaus kann eine obere Grenze für die Anzahl von Workern verwendet werden. Das heißt, dass dann, wenn die Anzahl von Workern an der oberen Grenze liegt, keine weiteren Worker hinzugefügt werden dürfen. Das Rollfenster kann ein Zeitgeber bzw. ein Timer sein. Bei einer Operation 708 kann der Knoten prüfen, ob während des Rollfensters eine Fehlermeldung vom externen System in Reaktion auf die erhöhte Anforderungsrate (z.B. zweite Anzahl von Workern) empfangen wird. Wenn während des Rollfensters keine Fehlermeldung empfangen wird, kann das Verfahren die Anforderungsrate wieder erhöhen und zur Operation 704 zurückkehren. Wenn eine Fehlermeldung empfangen wird, kann die Anzahl von Workern reduziert werden, indem zu Beispiel zur Operation 610 des oben unter Bezugnahme auf 6 beschriebenen Verfahrens 600 gegangen wird. Die Verfahren 600/700 können so lange fortgesetzt werden, bis die Abfrage ausgeführt wird und keine externen Aufrufanforderungen mehr für die Abfrage durchgeführt werden.
  • Einiges oder alles der Kontrolle über die Anforderungsrate kann auch auf die GS-Ebene verlagert werden. 8 ist ein Flussdiagramm eines GS-Steuerungs-Interaktionsverfahrens 800 mit einem externen System, gemäß einigen beispielhaften Ausführungsformen. Bei einer Operation 802 kann eine Abfrage durch den GS 400 empfangen werden. Die Abfrage kann eine Anforderung dafür enthalten, dass eine oder mehrere Operationen an einem Datensatz, wie beispielsweise einer Quelltabelle, ausgeführt wird oder werden. Zum Beispiel kann die Abfrage eine SQL-Zeichenfolge enthalten. Bei einer Operation 804 kann in Reaktion auf ein Empfangen der Abfrage ein Abfrageplan erstellt werden, um die empfangene Abfrage auszuführen. Zum Beispiel kann die SQL-Zeichenfolge geparst bzw. analysiert werden. Der Abfrageplan kann eine Vielzahl von Operatoren und Links bzw. Verbindungen, die die Operatoren verbinden, enthalten.
  • Bei einer Operation 806 kann der Abfrageplan basierend auf einer regelbasierten Optimierung überarbeitet werden. Das heißt, dass der Abfrageplan, der zum Beispiel als relationaler Algebrabaum dargestellt werden kann, basierend auf einem Regelwerks in eine bessere Form überarbeitet werden kann. Die Regeln können auf ein Beschneiden oder ein konstantes Falten eines oder mehrerer Operatoren basierend auf Prädikatseigenschaften, Prädikatsvereinfachung, Filter-Pushdown bzw. Filter-Kellerung, Eliminieren unnötiger Gruppierung oder Aggregation und/oder anderen geeigneten Regeln gerichtet sein.
  • Bei einer Operation 808 kann der GS bestimmen, dass die Abfrage eine Interaktion mit einem externen System erfordert. Bei einer Ausführungsform kann der GS mit dem externen System kommunizieren, um die Kapazität des externen Systems zum Handhaben von Anforderungen zu überprüfen. Zum Beispiel kann der GS das externe System anpingen und in Reaktion darauf kann das externe System seine aktuelle Arbeitslast, seine aktuelle Kapazität, seine zukünftig erwartete Arbeitslast, seine zukünftig erwartete Kapazität etc. kommunizieren bzw. mitteilen. Bei einer Operation 810 kann der GS prüfen, wie viele Abfragen aktuell eine Interaktion mit dem externen System erfordern, und wenn diese Anzahl von Abfragen über einer Schwelle liegt, kann der GS die ausstehende Abfrage in einer Warteschlange platzieren und ein Verarbeiten von ihr verzögern. Dies kann eine Überlastung des externen Systems vermeiden. Die Schwelle kann einstellbar sein und kann basierend auf einer Kommunikation mit dem externen System bezüglich seiner Kapazität eingestellt werden. Darüber hinaus können die Rechenressourcen (z.B. XP-Knoten) die GS auch über die Anzahl von Fehlern informieren, die sie vom externen System empfangen. Die GS wiederum können diese Information bei einer Einstellung der Schwelle verwenden. Bei einer anderen Ausführungsform kann der GS die Kapazität des externen Systems basierend auf historischen Daten bestimmen.
  • Wenn die Abfrage zur Verarbeitung bereit ist, kann der GS bei einer Operation 812 eine anfängliche Anzahl von Rechenressourcen für die Verarbeitung der Abfrage einstellen. Wie es hierin beschrieben ist, können Rechenressourcen die Anzahl von Knoten und/oder die Anzahl von Workern bei jedem Knoten enthalten. Weiterhin kann sowohl die Anzahl von Knoten als auch die Anzahl von Workern während einer Abfrageverarbeitung konfigurierbar sein, um die Anforderungsrate einzustellen. Bei einer Operation 814 kann der GS die Anzahl von Rechenressourcen (z.B. Anzahl von Knoten und/oder Workern) einstellen, um die Anforderungsrate an das externe System basierend auf der Rückmeldung vom externen System zu modifizieren. Wie es hierin beschrieben ist, kann die Rückmeldung (z.B. Benachrichtigungen) in der Form von Fehlermeldungen vom externen System, einem Ablauf von Zeitfenstern ohne ein Empfangen einer Fehlermeldung, einer Kommunikation mit dem externen System (z.B. Out-of-Band bzw. Außerband - Rückkopplungsschleife), etc. bereitgestellt werden. Die Anforderungsrate kann während einer Abfrageverarbeitung, wie es hierin beschrieben ist (z.B. in den 6 und 7 beschriebenen Verfahren), erniedrigt und/oder erhöht werden, um die verfügbaren Ressourcen beim externen System zu optimieren.
  • 9 stellt eine schematische Darstellung einer Maschine 900 in der Form eines Computersystems dar, innerhalb von welchem eine Gruppe von Anweisungen ausgeführt werden kann, zum Veranlassen, dass die Maschine 900 irgendeine oder mehrere der hierin diskutieren Methoden durchführt, gemäß einer beispielhaften Ausführungsform. Spezifisch zeigt 9 eine schematische Darstellung der Maschine 900 in der beispielhaften Form eines Computersystems, innerhalb von welchem Anweisungen 916 (z.B. Software, ein Programm, eine Anwendung, ein Applet, eine App oder ein anderer ausführbarer Code) zum Veranlassen, dass die Maschine 900 irgendeine oder mehrere der hierin diskutierten Methoden durchführt, ausgeführt werden können. Die Anweisungen 916 können zum Beispiel veranlassen, dass die Maschine 900 irgendeine oder mehrere Operationen von irgendeinem oder mehreren der hierin beschriebenen Verfahren ausführt. Als ein weiteres Beispiel können die Anweisungen 916 veranlassen, dass die Maschine 900 Teilbereiche der hierin beschriebenen Datenflüsse implementiert. Auf diese Weise transformieren die Anweisungen 916 eine allgemeine, nicht programmierte Maschine in eine bestimmte Maschine 900 (z.B. die entfernte Computing- bzw. Computervorrichtung 106, das Zugriffsmanagementsystem 110, den Computing-Service-Manager 112, die Ausführungsplattform 114, das Zugriffsmanagementsystem 118, den Web-Proxy 120, eine entfernte Computing- bzw. Computervorrichtung 106), die speziell konfiguriert ist, um irgendeine der beschriebenen und dargestellten Funktionen auf die hierin beschriebene Weise auszuführen.
  • Bei alternativen Ausführungsformen arbeitet die Maschine 900 als alleinstehende Vorrichtung oder sie kann mit anderen Maschinen gekoppelt (z.B. vernetzt) sein. Bei einer vernetzten Verwendung kann die Maschine 900 in der Funktion einer Server-Maschine oder einer Client-Maschine in einer Server-Client-Netzwerkumgebung oder als Peer-Maschine in einer Peer-zu-Peer-(oder verteilten)Netzwerkumgebung arbeiten. Die Maschine 900 kann, ist aber nicht beschränkt darauf, einen Servercomputer, einen Client-Computer, einen Personalcomputer (PC), einen Tablet-Computer, einen Laptop-Computer, ein Netbook, ein Smartphone, ein mobiles Gerät, einen Netzwerkrouter, einen Netzwerkschalter, eine Netzwerkbrücke oder irgendeine Maschine, die die Anweisungen 916 sequentiell oder auf andere Weise ausführen kann, die von der Maschine 900 vorzunehmende Aktionen spezifizieren, umfassen. Weiterhin soll, während nur eine einzige Maschine 900 dargestellt ist, der Ausdruck „Maschine“ auch derart genommen werden, dass er eine Sammlung von Maschinen 900 enthält, die einzeln oder gemeinsam die Anweisungen 916 ausführen, um irgendeine oder mehrere der hierin diskutierten Methoden durchzuführen.
  • Die Maschine 900 enthält Prozessoren 910, einen Speicher 930 und Eingabe-/Ausgabe-(I/O-)Komponenten 950, die konfiguriert sind, um miteinander zu kommunizieren, wie beispielsweise über einen Bus 902. Bei einer beispielhaften Ausführungsform können die Prozessoren 910 (z.B. eine zentrale Verarbeitungseinheit (CPU), ein Prozessor mit reduziertem Befehlssatz (RISC), ein Prozessor mit komplexem Befehlssatz (CISC), eine Grafikverarbeitungseinheit (GPU), ein digitaler Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), eine integrierte Funkfrequenz-Schaltung (RFIC), ein anderer Prozessor oder irgendeine geeignete Kombination davon) zum Beispiel einen Prozessor 912 und einen Prozessor 914 umfassen, die die Anweisungen 916 ausführen können. Es ist beabsichtigt, dass der Ausdruck „Prozessor“ Mehrkernprozessoren 910 enthält, die zwei oder mehr unabhängige Prozessoren (auf die manchmal auch als „Kerne“ Bezug genommen wird) umfassen können, die Anweisungen 916 gleichzeitig ausführen können. Obwohl 9 mehrere Prozessoren 910 zeigt, kann die Maschine 900 einen einzelnen Prozessor mit einem einzigen Kern, einen einzelnen Prozessor mit mehreren Kernen (z.B. einen Mehrkernprozessor), mehrere Prozessoren mit einem einzigen Kern, mehrere Prozessoren mit mehreren Kernen oder eine beliebige Kombination davon enthalten.
  • [0004] Der Speicher 930 kann einen Hauptspeicher 932, einen statischen Speicher 934 und eine Speichereinheit 936 enthalten, die alle für die Prozessoren 910 zugreifbar bzw. zugänglich sind, wie beispielsweise über den Bus 902. Der Hauptspeicher 932, der statische Speicher 934 und die Speichereinheit 936 speichern die Anweisungen 916, die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpern. Die Anweisungen 916 können sich während ihrer Ausführung durch die Maschine 900 auch ganz oder teilweise innerhalb des Hauptspeichers 932, innerhalb des statischen Speichers 934, innerhalb der Speichereinheit 936, innerhalb von wenigstens einem der Prozessoren 910 (z.B. innerhalb des Cachespeichers des Prozessors) oder irgendeiner geeigneten Kombination davon befinden.
  • [0005] Die I/O-Komponenten 950 enthalten Komponenten, um eine Eingabe zu empfangen, eine Ausgabe zur Verfügung zu stellen, eine Ausgabe zu erzeugen, Information zu übertragen, Information auszutauschen, Messungen zu erfassen, und so weiter. Die spezifischen I/O-Komponenten 950, die in einer bestimmten Maschine 900 enthalten sind, werden vom Typ einer Maschine abhängen. Zum Beispiel werden portierbare bzw. tragbare Maschinen, wie beispielsweise Mobiltelefone, wahrscheinlich eine Berührungseingabevorrichtung oder andere solche Eingabemechanismen enthalten, während eine monitorlose Servermaschine wahrscheinlich keine solche Berührungseingabevorrichtung enthalten wird. Es wird eingesehen werden, dass die I/O-Komponenten 950 viele andere Komponenten enthalten können, die nicht in 9 gezeigt sind. Die I/O-Komponenten 950 sind lediglich zum Vereinfachen der folgenden Diskussion nach Funktionalität gruppiert und die Gruppierung ist in keiner Weise beschränkend. Bei verschiedenen beispielhaften Ausführungsformen können die I/O-Komponenten 950 Ausgabekomponenten 952 und Eingabekomponenten 954 enthalten. Die Ausgabekomponenten 952 können visuelle Komponenten (z.B. eine Anzeige wie einen Plasmabildschirm (PDP), eine Leuchtdioden-(LED-)Anzeige, eine Flüssigkristallanzeige (LCD), einen Projektor oder eine Kathodenstrahlröhre (CRT)), akustische Komponenten (z.B. Lautsprecher), andere Signalgeneratoren und so weiter enthalten. Die Eingabekomponenten 954 können alphanumerische Eingabekomponenten (z.B. eine Tastatur, einen Berührungsbildschirm, der konfiguriert ist, um eine alphanumerische Eingabe zu empfangen, eine fotooptische Tastatur oder andere alphanumerische Eingabekomponenten), punktbasierte Eingabekomponenten (z.B. eine Maus, eine Rollkugel, ein Joystick, ein Bewegungssensor oder ein anderes Zeigeinstrument), taktile Eingabekomponenten (z.B. eine physikalische Taste, einen Berührungsbildschirm, der eine Stelle und eine Kraft von Berührungen oder Berührungsgesten zur Verfügung stellt, oder andere taktile Eingabekomponenten), Audio-Eingabekomponenten (z.B. ein Mikrofon) und ähnliches enthalten.
  • [0006] Kommunikation kann unter Verwendung einer weiten Vielzahl von Technologien implementiert werden. Die I/O-Komponenten 950 können Kommunikationskomponenten 964 enthalten, die betreibbar sind, um die Maschine 900 mit einem Netzwerk 980 oder Vorrichtungen bzw. Geräten 970 über eine Kopplung 982 bzw. eine Kopplung 972 zu koppeln. Zum Beispiel können die Kommunikationskomponenten 964 eine Netzwerkschnittstellenkomponente oder eine andere geeignete Vorrichtung enthalten, um eine Schnittstelle mit dem Netzwerk 980 zu bilden. Bei weiteren Beispielen können die Kommunikationskomponenten 964 kabelgebundene bzw. verdrahtete Kommunikationskomponenten, drahtlose Kommunikationskomponenten, zellulare Kommunikationskomponenten und andere Kommunikationskomponenten enthalten, um Kommunikation über andere Modalitäten zur Verfügung zu stellen. Die Vorrichtungen bzw. Geräte 970 können eine andere Maschine oder irgendeine einer Vielzahl von peripheren Vorrichtungen bzw. Peripheriegeräten (z.B. ein Peripheriegerät, das über einen universellen seriellen Bus (USB) gekoppelt ist) sein. Zum Beispiel kann, wie es oben angemerkt ist, die Maschine 900 irgendetwas von der entfernten Rechenvorrichtung 106, dem Zugriffsmanagementsystem 110, dem Computing-Service-Manager 112, der Ausführungsplattform 114, dem Zugriffsmanagementsystem 118, dem Web-Proxy 120 entsprechen und die Vorrichtungen 970 können irgendwelche anderen dieser Systeme und Vorrichtungen bzw. Geräte enthalten.
  • [0007] Die verschiedenen Speicher (z.B. 930, 932, 934 und/oder ein Speicher des Prozessors (der Prozessoren) 910 und/oder die Speichereinheit 936) können einen oder mehrere Sätze von Anweisungen 916 und Datenstrukturen (z.B. Software) speichern, die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpert oder durch diese genutzt werden. Diese Anweisungen 916 veranlassen dann, wenn sie von dem (den) Prozessoren) 910 ausgeführt werden, verschiedene Operationen, um die offenbarten Ausführungsformen zu implementieren.
  • [0008] 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.
  • [0009] Bei verschiedenen beispielhaften Ausführungsformen kann ein oder können mehrere Teilbereiche des Netzwerks 980 ein Ad-hoc-Netzwerk, ein Intranet, ein Extranet, ein virtuelles privates Netzwerk (VPN), ein lokales Netz (LAN), ein drahtloses LAN (WLAN), ein Weitverkehrsnetz (WAN), ein drahtloses WAN (WWAN), ein Stadtgebietsnetz (MAN), das Internet, ein Teilbereich des Internets, ein Teilbereich des öffentlichen geschalteten Telefonnetzes (PSTN), ein altes analoges Telefondienst-(POTS-)Netz, ein zellulares Telefonnetz, ein drahtloses Netz, ein Wi-Fi®-Netz, ein anderer Typ von Netzwerk oder eine Kombination von zwei oder mehreren solchen Netzwerken sein. Zum Beispiel kann das Netzwerk 980 oder ein Teilbereich des Netzwerks 980 ein drahtloses oder zellulares Netzwerk enthalten und die Kopplung 982 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 982 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.
  • [0010] Die Anweisungen 916 können über das Netzwerk 980 unter Verwendung eines Übertragungsmedium über eine Netzwerkschnittstellenvorrichtung (z.B. eine in den Kommunikationskomponenten 964 enthaltene Netzwerkschnittstellenkomponente) übertragen bzw. gesendet oder empfangen werden und unter Nutzung von irgendeinem einer Anzahl von wohlbekannten Übertragungsprotokollen (z.B. Hypertext-Übertragungsprotokoll (HTTP)). Gleichermaßen können die Anweisungen 916 unter Verwendung eines Übertragungsmediums über die Kopplung 972 (z.B. Peer-zu-Peer-Kopplung) mit den Vorrichtungen bzw. Geräten 970 ü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 916 zur Ausführung durch die Maschine 900 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.
  • [0011] Die Ausdrücke „maschinenlesbares Medium“, „computerlesbares Medium“ und „vorrichtungslesbares Medium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke sind definiert, um sowohl Maschinenspeichermedien als auch Übertragungsmedien zu enthalten. Somit enthalten die Ausdrücke sowohl Speichervorrichtungen/-medien als auch Trägerwellen/modulierte Datensignale.
  • [0012] Die verschiedenen Operationen der hierin beschriebenen beispielhaften Verfahren können wenigstens teilweise durch einen oder mehrere Prozessoren durchgeführt werden, die temporär (z.B. durch Software) oder dauerhaft konfiguriert sind, um die relevanten Operationen durchzuführen. Gleichermaßen können die hierin beschriebenen Verfahren wenigstens teilweise prozessorimplementiert sein. Zum Beispiel können wenigstens einige Operationen der hierin beschriebenen Verfahren durch einen oder mehrere Prozessoren durchgeführt werden. Die Leistungsfähigkeit von bestimmten der Operationen kann auf den einen oder die mehreren Prozessoren verteilt werden, die sich nicht nur innerhalb einer einzelnen Maschine befinden, sondern auch quer über eine Anzahl von Maschinen genutzt werden. Bei einigen beispielhaften Ausführungsformen kann der Prozessor oder können die Prozessoren an einer einzigen Stelle angeordnet sein (z.B. in einer häuslichen Umgebung, einer Büroumgebung oder einer Serverfarm), während die Prozessoren bei anderen Ausführungsformen quer über eine Anzahl von Stellen bzw. Standorten verteilt sein können.
  • [0013] Obwohl die Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen beschrieben worden sind, wird es offensichtlich werden, dass verschiedene Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne von dem breiteren Schutzumfang des erfinderischen Gegenstands abzuweichen. Demgemäß sind die Spezifikation und die Zeichnungen eher in einem illustrativen als in einem beschränkenden Sinn anzusehen. Die beigefügten Zeichnungen, die einen Teil hiervon bilden, zeigen, zur Veranschaulichung und nicht zur Beschränkung, spezifische Ausführungsformen, bei welchen der Gegenstand ausgeführt werden kann. Die dargestellten Ausführungsformen sind in ausreichendem Detail beschrieben, um Fachleuten auf dem Gebiet zu ermöglichen, die hierin offenbarten Lehren auszuführen. Andere Ausführungsformen können verwendet und daraus abgeleitet werden, so dass strukturelle und logische Substitutionen und Änderungen vorgenommen werden können, ohne vom Schutzbereich dieser Offenbarung abzuweichen. Diese detaillierte Beschreibung ist daher nicht in einem beschränkenden Sinn zu nehmen, und der Schutzumfang von verschiedenen Ausführungsformen wird nur durch die beigefügten Ansprüche definiert, zusammen mit dem gesamten Bereich von Äquivalenten, auf welche solche Ansprüche eine Anspruchsberechtigung haben.
  • [0014] Auf solche Ausführungsformen des erfinderischen Gegenstands kann hierin einzeln und/oder kollektiv lediglich der Annehmlichkeit halber und ohne die Absicht, den Schutzumfang dieser Anmeldung auf eine einzelne Erfindung oder ein erfinderisches Konzept gewollt zu beschränken, durch den Ausdruck „Erfindung“ Bezug genommen werden, wenn tatsächlich mehr als eine offenbart ist. Somit sollte, obwohl hierin spezifische Ausführungsformen dargestellt und beschrieben worden sind, eingesehen werden, dass irgendeine Anordnung, für die kalkuliert ist, dass sie den gleichen Zweck erreicht, für die gezeigten spezifischen Ausführungsformen substituiert werden kann. Diese Offenbarung soll irgendwelche und alle Anpassungen oder Variationen von verschiedenen Ausführungsformen abdecken. Kombinationen der obigen Ausführungsformen und andere Ausführungsformen, die hierin nicht spezifisch beschrieben sind, werden Fachleuten auf dem Gebiet beim Durchsehen bzw. Überprüfen der obigen Beschreibung offensichtlich werden.
  • In diesem Dokument werden die Ausdrücke „ein“ oder „eine“ verwendet, wie es in Patentdokumenten üblich ist, um einen (eine) oder mehr als einen (eine) zu enthalten, unabhängig von irgendwelchen anderen Fällen oder Verwendungen von „wenigstens einer“ oder „einer oder mehrere“. In diesem Dokument wird der Ausdruck „oder“ verwendet, um sich auf ein nicht ausschließliches oder zu beziehen, so dass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ enthält, solange nichts anderes angegeben ist. In den beigefügten Ansprüchen werden die Ausdrücke „einschließlich“ und „in welchen“ als Äquivalente in einfachem Englisch der jeweiligen Ausdrücke „umfassend“ und „wobei“ verwendet. Ebenso sind in den folgenden Ansprüchen die Ausdrücke „enthaltend“ und „umfassend“ mit offenem Ende; das bedeutet, dass ein System, eine Vorrichtung, ein Artikel oder ein Verfahren, das, die oder der Elemente zusätzlich zu denjenigen enthält, die nach einem solchen Ausdruck in einem Anspruch aufgelistet sind, derart angesehen wird, dass es, sie oder er in den Schutzbereich dieses Anspruchs fällt.
  • Die folgenden nummerierten Beispiele sind Ausführungsformen:
  • Beispiel 1. Verfahren, umfassend: Empfangen einer Abfrage durch ein Datenbanksystem durch einen Prozessor; Erzeugen eines Abfrageplans, um die Abfrage auszuführen; Bestimmen, dass der Abfrageplan eine Interaktion mit einem externen System enthält; Einstellen einer ersten Anzahl paralleler Rechenressourcen, um sich mit dem externen System einzulassen, um wenigstens einen Teilbereich des Abfrageplans auszuführen, einschließlich eines Übertragens paralleler externer Anrufanforderungen zum externen System; Empfangen einer Anzeige bezüglich Verarbeitungsmöglichkeiten des externen Systems in Bezug auf die parallelen externen Anrufanfragen; und in Reaktion auf ein Empfangen der Anzeige Modifizieren die Anzahl von parallelen Rechenressourcen zu einer zweiten Anzahl; Ausführen wenigstens eines Teilbereichs des Abfrageplans unter Verwendung der zweiten Anzahl paralleler Rechenressourcen; und Erzeugen eines Ergebnisses der Abfrage.
  • Beispiel 2. Verfahren nach Beispiel 1, wobei die Anzeige eine Benachrichtigung enthält, dass das externe System die parallelen externen Aufrufanforderungen von der ersten Anzahl von Rechenressourcen nicht handhaben kann und wobei die zweite Anzahl kleiner als die erste Anzahl ist.
  • Beispiel 3. Verfahren nach einem der Beispiele 1-2, wobei die Benachrichtigung eine vom externen System empfangene HTTP-Fehlermeldung enthält.
  • Beispiel 4. Verfahren nach einem der Beispiele 1-3, weiterhin umfassend: nach einem Modifizieren der Anzahl von parallelen Rechenressourcen auf die zweite Anzahl Empfangen einer zweiten Benachrichtigung, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, Bestimmen, ob die zweite Benachrichtigung während einer Abklingzeit nach dem Modifizieren der Anzahl paralleler Rechenressourcen zu der zweiten Anzahl empfangen wird; in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung während der Abklingzeit empfangen wurde, Beibehalten der zweiten Anzahl von Rechenressourcen; und in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung außerhalb der Abklingzeit empfangen wurde, Modifizieren der Anzahl von Rechenressourcen zu einer dritte Anzahl, wobei die dritte Anzahl kleiner als die zweite Anzahl ist.
  • Beispiel 5. Verfahren nach einem der Beispiele 1-4, wobei die Anzeige einen Ablauf eines ersten Zeitfensters enthält, ohne eine Benachrichtigung zu empfangen, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, und wobei die zweite Anzahl größer als die erste Anzahl ist.
  • Beispiel 6. Verfahren nach einem der Beispiele 1-5, weiterhin umfassend: Starten eines zweiten Zeitfensters nach einem Modifizieren der Anzahl von parallelen Rechenressourcen zur zweiten Anzahl; Bestimmen eines Ablaufs des zweiten Zeitfensters, ohne eine Benachrichtigung zu empfangen, dass das externe System die parallelen Anrufanforderungen von der zweiten Anzahl von Rechenanforderungen nicht handhaben kann; und Modifizieren der Anzahl von Rechenressourcen zu einer dritten Anzahl, wobei die dritte Anzahl größer als die zweite Anzahl ist.
  • Beispiel 7. Verfahren nach einem der Beispiele 1-6, wobei die Rechenressourcen Worker eines Rechenknotens sind.
  • Beispiel 8. Verfahren nach einem der Beispiele 1-7, wobei die Rechenressourcen Rechenknoten sind.
  • Beispiel 9. Verfahren nach einem der Beispiele 1-8, weiterhin umfassend: Bestimmen, dass eine Anzahl von aktuellen Abfragen, die mit dem externen System interagieren, größer als eine Schwelle ist; und Platzieren der Abfrage in einer Warteschlange, um auf ein Verarbeiten zu warten, bis die Anzahl von aktuellen Abfragen, die mit dem externen System interagieren, unter die Schwelle abfällt.
  • Beispiel 10. System, umfassend: einen oder mehrere Prozessoren einer Maschine; und einen Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die eines der beispielhaften Verfahren 1 bis 9 implementieren.
  • Beispiel 11. Maschinenlesbare Speichervorrichtung, die Anweisungen verkörpert, die dann, wenn sie durch eine Maschine ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die eines der beispielhaften Verfahren 1 bis 9 implementieren.
  • Externe Funktionen können Benutzern eines Datenbanksystems die Möglichkeit bieten, externe Dienste aufzurufen, während sie von innerhalb des Datenbanksystems aus arbeiten. Die hierin beschriebenen Techniken können eine Drosselung durch das externe System erkennen und eine Anforderungsrate automatisch entsprechend einstellen oder modifizieren. Ebenso können die hierin beschriebenen Techniken die Anforderungsrate erhöhen, um die Nutzung der durch das externe System bereitgestellten Ressourcen zu optimieren. Diese Techniken lassen zu, dass das Datenbanksystem eine Effizienz beim Arbeit mit externen Diensten verbessert, was elastisch oder skalierbar sein kann oder nicht sein kann. Darüber hinaus können diese Techniken die Ausführungszeiten von Abfragen verringern und Kosten reduzieren.
  • 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 17/039473 [0001]
    • US 10628244 [0046]

Claims (27)

  1. Computerprogramm, das Anweisungen umfasst, 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 einer Abfrage durch ein Datenbanksystem durch einen Prozessor; Erzeugen eines Abfrageplans, um die Abfrage auszuführen; Bestimmen, dass der Abfrageplan eine Interaktion mit einem externen System enthält; Einstellen einer ersten Anzahl von parallelen Rechenressourcen, um sich auf das externe System einzulassen, um wenigstens einen Teilbereich des Abfrageplans auszuführen, einschließlich eines Übertragens paralleler externer Anrufanforderungen zum externen System; Empfangen einer Anzeige bezüglich Verarbeitungsmöglichkeiten des externen Systems in Bezug auf die parallelen externen Anrufanforderungen; und in Reaktion auf ein Empfangen der Anzeige Modifizieren der Anzahl von parallelen Rechenressourcen zu einer zweiten Anzahl; Ausführen wenigstens eines Teilbereichs des Abfrageplans unter Verwendung der zweiten Anzahl von paralleler Rechenressourcen; und Erzeugen eines Ergebnisses der Abfrage.
  2. Computerprogramm nach Anspruch 1, wobei die Anzeige eine Benachrichtigung enthält, dass das externe System die parallelen externen Anrufanforderungen von der ersten Anzahl von Rechenressourcen nicht handhaben kann, und wobei die zweite Anzahl kleiner als die erste Anzahl ist.
  3. Computerprogramm nach Anspruch 2, wobei die Benachrichtigung eine vom externen System empfangene HTTP-Fehlermeldung enthält.
  4. Computerprogramm nach Anspruch 2, wobei die Operationen weiterhin folgendes umfassen: nach einem Modifizieren der Anzahl von parallelen Rechenressourcen zur zweiten Anzahl Empfangen einer zweiten Benachrichtigung, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, Bestimmen, ob die zweite Benachrichtigung während einer Abklingzeit nach dem Modifizieren der Anzahl von parallelen Rechenressourcen auf die zweite Anzahl empfangen wird; in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung während der Abklingzeit empfangen wurde, Beibehalten der zweiten Anzahl von Rechenressourcen; und in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung außerhalb der Abklingzeit empfangen wurde, Modifizieren der Anzahl von Rechenressourcen zu einer dritten Anzahl, wobei die dritte Anzahl kleiner als die zweite Anzahl ist.
  5. Computerprogramm nach Anspruch 1, wobei die Anzeige den Ablauf eines ersten Zeitfensters ohne ein Empfangen einer Benachrichtigung, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, enthält und wobei die zweite Anzahl größer als die erste Anzahl ist.
  6. Computerprogramm nach Anspruch 5, wobei die Operationen weiterhin folgendes umfassen: Starten eines zweiten Zeitfensters nach einem Modifizieren der Anzahl von parallelen Rechenressourcen zur zweiten Anzahl; Bestimmen eines Ablaufs des zweiten Zeitfensters ohne ein Empfangen einer Benachrichtigung, dass das externe System die parallelen Anrufanforderungen von der zweiten Anzahl von Rechenanforderungen nicht handhaben kann; und Modifizieren der Anzahl von Rechenressourcen zu einer dritten Anzahl, wobei die dritte Anzahl größer als die zweite Anzahl ist.
  7. Computerprogramm nach Anspruch 1, wobei die Rechenressourcen Worker eines Rechenknotens sind.
  8. Computerprogramm nach Anspruch 1, wobei die Rechenressourcen Rechenknoten sind.
  9. Computerprogramm nach Anspruch 1, wobei die Operationen weiterhin folgendes umfassen: Bestimmen, dass eine Anzahl aktueller Abfragen, die mit dem externen System interagieren, größer als eine Schwellen ist; und Platzieren der Abfrage in einer Warteschlange, um auf ein Verarbeiten zu warten, bis die Anzahl von aktuellen Abfragen, die mit dem externen System interagieren, unter die Schwelle abfällt.
  10. Maschinenspeichermedium, das Anweisungen verkörpert, die dann, wenn sie durch eine Maschine ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die folgendes umfassen: Empfangen einer Abfrage durch ein Datenbanksystem durch einen Prozessor; Erzeugen eines Abfrageplans, um die Abfrage auszuführen; Bestimmen, dass der Abfrageplan eine Interaktion mit einem externen System enthält; Einstellen einer ersten Anzahl von parallelen Rechenressourcen, um sich auf das externe System einzulassen, um wenigstens einen Teilbereich des Abfrageplans auszuführen, einschließlich eines Übertragens paralleler externer Anrufanforderungen zum externen System; Empfangen einer Anzeige bezüglich Verarbeitungsmöglichkeiten des externen Systems in Bezug auf die parallelen externen Anrufanforderungen; und in Reaktion auf ein Empfangen der Anzeige Modifizieren der Anzahl von parallelen Rechenressourcen zu einer zweiten Anzahl; Ausführen wenigstens eines Teilbereichs des Abfrageplans unter Verwendung der zweiten Anzahl von paralleler Rechenressourcen; und Erzeugen eines Ergebnisses der Abfrage.
  11. Maschinenspeichermedium nach Anspruch 10, wobei die Anzeige eine Benachrichtigung enthält, dass das externe System die parallelen externen Anrufanforderungen von der ersten Anzahl von Rechenressourcen nicht handhaben kann, und wobei die zweite Anzahl kleiner als die erste Anzahl ist.
  12. Maschinenspeichermedium nach Anspruch 11, wobei die Benachrichtigung eine vom externen System empfangene HTTP-Fehlermeldung enthält.
  13. Maschinenspeichermedium nach Anspruch 11, weiterhin umfassend: nach einem Modifizieren der Anzahl von parallelen Rechenressourcen zur zweiten Anzahl Empfangen einer zweiten Benachrichtigung, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, Bestimmen, ob die zweite Benachrichtigung während einer Abklingzeit nach dem Modifizieren der Anzahl von parallelen Rechenressourcen auf die zweite Anzahl empfangen wird; in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung während der Abklingzeit empfangen wurde, Beibehalten der zweiten Anzahl von Rechenressourcen; und in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung außerhalb der Abklingzeit empfangen wurde, Modifizieren der Anzahl von Rechenressourcen zu einer dritten Anzahl, wobei die dritte Anzahl kleiner als die zweite Anzahl ist.
  14. Maschinenspeichermedium nach Anspruch 10, wobei die Anzeige den Ablauf eines ersten Zeitfensters ohne ein Empfangen einer Benachrichtigung, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, enthält und wobei die zweite Anzahl größer als die erste Anzahl ist.
  15. Maschinenspeichermedium nach Anspruch 14, weiterhin umfassend: Starten eines zweiten Zeitfensters nach einem Modifizieren der Anzahl von parallelen Rechenressourcen zur zweiten Anzahl; Bestimmen eines Ablaufs des zweiten Zeitfensters ohne ein Empfangen einer Benachrichtigung, dass das externe System die parallelen Anrufanforderungen von der zweiten Anzahl von Rechenanforderungen nicht handhaben kann; und Modifizieren der Anzahl von Rechenressourcen zu einer dritten Anzahl, wobei die dritte Anzahl größer als die zweite Anzahl ist.
  16. Maschinenspeichermedium nach Anspruch 10, wobei die Rechenressourcen Worker eines Rechenknotens sind.
  17. Maschinenspeichermedium nach Anspruch 10, wobei die Rechenressourcen Rechenknoten sind.
  18. Maschinenspeichermedium nach Anspruch 10, weiterhin umfassend: Bestimmen, dass eine Anzahl aktueller Abfragen, die mit dem externen System interagieren, größer als eine Schwellen ist; und Platzieren der Abfrage in einer Warteschlange, um auf ein Verarbeiten zu warten, bis die Anzahl von aktuellen Abfragen, die mit dem externen System interagieren, unter die Schwelle abfällt.
  19. System, umfassend: einen oder mehrere Prozessoren einer Maschine; und einen Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die folgendes umfassen: Empfangen einer Abfrage durch ein Datenbanksystem; Erzeugen eines Abfrageplans, um die Abfrage auszuführen; Bestimmen, dass der Abfrageplan eine Interaktion mit einem externen System enthält; Einstellen einer ersten Anzahl von parallelen Rechenressourcen, um sich auf das externe System einzulassen, um wenigstens einen Teilbereich des Abfrageplans auszuführen, einschließlich eines Übertragens paralleler externer Anrufanforderungen zum externen System; Empfangen einer Anzeige bezüglich Verarbeitungsmöglichkeiten des externen Systems in Bezug auf die parallelen externen Anrufanforderungen; und in Reaktion auf ein Empfangen der Anzeige Modifizieren der Anzahl von parallelen Rechenressourcen zu einer zweiten Anzahl; Ausführen wenigstens eines Teilbereichs des Abfrageplans unter Verwendung der zweiten Anzahl von paralleler Rechenressourcen; und Erzeugen eines Ergebnisses der Abfrage.
  20. System nach Anspruch 19, wobei die Anzeige eine Benachrichtigung enthält, dass das externe System die parallelen externen Anrufanforderungen von der ersten Anzahl von Rechenressourcen nicht handhaben kann, und wobei die zweite Anzahl kleiner als die erste Anzahl ist.
  21. System nach Anspruch 20, wobei die Benachrichtigung eine vom externen System empfangene HTTP-Fehlermeldung enthält.
  22. System nach Anspruch 20, wobei die Operationen weiterhin folgendes umfassen: nach einem Modifizieren der Anzahl von parallelen Rechenressourcen zur zweiten Anzahl Empfangen einer zweiten Benachrichtigung, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, Bestimmen, ob die zweite Benachrichtigung während einer Abklingzeit nach dem Modifizieren der Anzahl von parallelen Rechenressourcen auf die zweite Anzahl empfangen wird; in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung während der Abklingzeit empfangen wurde, Beibehalten der zweiten Anzahl von Rechenressourcen; und in Reaktion auf ein Bestimmen, dass die zweite Benachrichtigung außerhalb der Abklingzeit empfangen wurde, Modifizieren der Anzahl von Rechenressourcen zu einer dritten Anzahl, wobei die dritte Anzahl kleiner als die zweite Anzahl ist.
  23. System nach Anspruch 19, wobei die Anzeige den Ablauf eines ersten Zeitfensters ohne ein Empfangen einer Benachrichtigung, dass das externe System die parallelen externen Anrufanforderungen nicht handhaben kann, enthält und wobei die zweite Anzahl größer als die erste Anzahl ist.
  24. System nach Anspruch 23, wobei die Operationen weiterhin folgendes umfassen: Starten eines zweiten Zeitfensters nach einem Modifizieren der Anzahl von parallelen Rechenressourcen zur zweiten Anzahl; Bestimmen eines Ablaufs des zweiten Zeitfensters ohne ein Empfangen einer Benachrichtigung, dass das externe System die parallelen Anrufanforderungen von der zweiten Anzahl von Rechenanforderungen nicht handhaben kann; und Modifizieren der Anzahl von Rechenressourcen zu einer dritten Anzahl, wobei die dritte Anzahl größer als die zweite Anzahl ist.
  25. System nach Anspruch 19, wobei die Rechenressourcen Worker eines Rechenknotens sind.
  26. System nach Anspruch 19, wobei die Rechenressourcen Rechenknoten sind.
  27. System nach Anspruch 19, wobei die Operationen weiterhin folgendes umfassen: Bestimmen, dass eine Anzahl aktueller Abfragen, die mit dem externen System interagieren, größer als eine Schwellen ist; und Platzieren der Abfrage in einer Warteschlange, um auf ein Verarbeiten zu warten, bis die Anzahl von aktuellen Abfragen, die mit dem externen System interagieren, unter die Schwelle abfällt.
DE202021004327.6U 2020-09-30 2021-06-30 Autoskalierung externer Funktionsanforderungen Active DE202021004327U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/039,473 US20220100758A1 (en) 2020-09-30 2020-09-30 Autoscaling external function requests
US17/039,473 2020-09-30

Publications (1)

Publication Number Publication Date
DE202021004327U1 true DE202021004327U1 (de) 2023-09-05

Family

ID=80821281

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202021004327.6U Active DE202021004327U1 (de) 2020-09-30 2021-06-30 Autoskalierung externer Funktionsanforderungen

Country Status (5)

Country Link
US (1) US20220100758A1 (de)
EP (1) EP4222611A4 (de)
CN (1) CN116348864A (de)
DE (1) DE202021004327U1 (de)
WO (1) WO2022072024A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI827974B (zh) * 2021-09-08 2024-01-01 財團法人工業技術研究院 虛擬功能效能分析系統及其分析方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628244B1 (en) 2019-10-29 2020-04-21 Snowflake Inc. Calling external functions from a data warehouse

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7574424B2 (en) * 2004-10-13 2009-08-11 Sybase, Inc. Database system with methodology for parallel schedule generation in a query optimizer
US10114825B2 (en) * 2014-03-14 2018-10-30 Sap Se Dynamic resource-based parallelization in distributed query execution frameworks
US9715414B2 (en) * 2015-10-23 2017-07-25 Oracle International Corporation Scan server for dual-format database
EP3226133A1 (de) * 2016-03-31 2017-10-04 Huawei Technologies Co., Ltd. Aufgabenneuplanung und ressourcenbereitstellungssystem und -verfahren
US10482084B2 (en) * 2016-08-16 2019-11-19 Netscout Systems Texas, Llc Optimized merge-sorting of data retrieved from parallel storage units
US11003664B2 (en) * 2016-08-29 2021-05-11 Oracle International Corporation Efficient hybrid parallelization for in-memory scans
US11023463B2 (en) * 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11442935B2 (en) * 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US10795884B2 (en) * 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US10649996B2 (en) * 2016-12-09 2020-05-12 Futurewei Technologies, Inc. Dynamic computation node grouping with cost based optimization for massively parallel processing
US20180173753A1 (en) * 2016-12-16 2018-06-21 Futurewei Technologies, Inc. Database system and method for compiling serial and parallel database query execution plans
US10585707B2 (en) * 2017-06-27 2020-03-10 International Business Machines Corporation Database resource scaling
US11544236B2 (en) * 2018-12-28 2023-01-03 Teradata Us, Inc. Machine-learning driven database management
US20200272526A1 (en) * 2019-02-21 2020-08-27 ESDS Software Solution Pvt. Ltd Methods and systems for automated scaling of computing clusters
US11223639B2 (en) * 2019-03-07 2022-01-11 Fortinet, Inc. Endpoint network traffic analysis
US10853137B2 (en) * 2019-03-12 2020-12-01 Oracle International Corporation Efficient resource allocation for concurrent graph workloads
US10990608B2 (en) * 2019-03-19 2021-04-27 Snowflake Inc. Transferring connections in a multiple deployment database
US10860381B1 (en) * 2020-05-14 2020-12-08 Snowflake Inc. Flexible computing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628244B1 (en) 2019-10-29 2020-04-21 Snowflake Inc. Calling external functions from a data warehouse

Also Published As

Publication number Publication date
WO2022072024A1 (en) 2022-04-07
EP4222611A1 (de) 2023-08-09
EP4222611A4 (de) 2024-09-04
US20220100758A1 (en) 2022-03-31
CN116348864A (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
DE202020005700U1 (de) Aufrufen externer Funktionen aus einem Datenlager
DE202020005734U1 (de) Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE202021004036U1 (de) Data Clean Room
DE202020005703U1 (de) Auf verteilten Metadaten basierendes Cluster-Computing
DE112011101109B4 (de) Übertragung von Map/Reduce-Daten auf der Grundlage eines Speichernetzwerkes oder eines Speichernetzwerk-Dateisystems
DE202020005693U1 (de) Externe berechtigungsnachweisfreie Stufen für Datenbankintegrationen
DE112016001075T5 (de) Verteiltes speichern und abrufen von datensätzen
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE202015009859U1 (de) Ressourcenmanagementsysteme
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE202020005682U1 (de) Automatisierte erneute Abfrageversuche in einer Datenbankumgebung
CN113474764A (zh) 共享数据库对象上的流
DE112021003348B4 (de) Verwalten von datenübertragung zwischen mikrodiensten
DE202021004295U1 (de) Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem
DE102017213160A1 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
EP4158495A1 (de) Skalierbare abfrageverarbeitung
DE102013100054B4 (de) Verlagern von zusammengehörigen Ressourcenpartitionen
DE202021004328U1 (de) Mit Daten-Cloud verbundene Anwendungen
DE202021004340U1 (de) Beschränkte Sichten zum Steuern des Zugriffs auf Informationen in einem Datenbanksystem
DE202021004327U1 (de) Autoskalierung externer Funktionsanforderungen
DE202023103214U1 (de) Web-Anwendung als Datenbankobjekt erster Klasse
DE202023103216U1 (de) Datenplattform mit vereinheitlichten Privilegien

Legal Events

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