DE202021102315U1 - Flexibles Computing - Google Patents

Flexibles Computing Download PDF

Info

Publication number
DE202021102315U1
DE202021102315U1 DE202021102315.5U DE202021102315U DE202021102315U1 DE 202021102315 U1 DE202021102315 U1 DE 202021102315U1 DE 202021102315 U DE202021102315 U DE 202021102315U DE 202021102315 U1 DE202021102315 U1 DE 202021102315U1
Authority
DE
Germany
Prior art keywords
computer
local
resources
computer resources
current
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
DE202021102315.5U
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
Priority to DE202021102315.5U priority Critical patent/DE202021102315U1/de
Publication of DE202021102315U1 publication Critical patent/DE202021102315U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen:
Empfangen, durch einen oder mehrere Prozessoren eines lokalen Hintergrunddienstes, von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren;
basierend auf der Information in Bezug auf Abfrageanforderungen, Erzeugen eines aktuellen lokalen Bedarfs an Computerressourcen;
Kommunizieren des aktuellen lokalen Bedarfs an Computerressourcen zu einem globalen Hintergrunddienst über ein Netzwerk;
Empfangen einer aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst;
Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit zugeordneten Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen;
Kommunizieren eines upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst;
Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst;
Zuordnen der upgedateten aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren; und
in Reaktion auf die upgedatete aktuelle zulässige Anzahl von Computerressourcen, die kleiner als die aktuelle zulässige Anzahl von Computerressourcen ist, Übertragen bzw. Senden einer Anweisung, eine zugeordnete Computerressource freizugeben, zu einer der Vielzahl von Abfragekoordinatoren.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich allgemeinen auf flexibles Computing und insbesondere auf eine dynamische Zuteilung von Computerressourcen auf Bedarfsbasis.
  • Um als Gebrauchsmuster geschützt und Gegenstand davon zu sein, gibt es gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren. In einem Fall, in welchem in der Beschreibung Bezug auf Verfahren genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen darzustellen, für welche mit den enthaltenen Ansprüchen Schutz gesucht wird.
  • HINTERGRUND
  • Da die Welt immer datengetriebener wird, speichern Datenbanksysteme und andere Datensysteme immer mehr Daten. Damit ein Unternehmen diese Daten verwenden kann, werden unterschiedliche Operationen oder Abfragen typischerweise an dieser großen Datenmenge ausgeführt. Einige Operationen, wie zum Beispiel diejenigen, die große Tabellenscans bzw. -abtastungen enthalten, können eine beträchtliche Menge an Zeit in Anspruch nehmen, um an einer großen Datenmenge auszuführen. Die Zeit zur Ausführung solcher Operationen kann proportional zur Anzahl von zur Ausführung verwendeten Computerressourcen sein, so dass die Zeit unter Verwendung von mehr Computerressourcen verkürzt werden kann.
  • Zu diesem Zweck können einige Datensysteme einen Pool von Computerressourcen bereitstellen und diese Ressourcen können zugeordnet werden, um verschiedene Operationen auszuführen. In solchen Systemen arbeiten jedoch die zugeordneten Computerressourcen typischerweise zusammen, wie zum Beispiel in einer Prozessgruppe. Somit sind ihre Zuordnungen fest und statisch. Das bedeutet, dass eine Computerressource einer Operation zugeordnet bleiben kann, die diese Computerressource nicht mehr benötigt. Die Zuordnungen dieser Computerressourcen können nicht einfach in Reaktion auf Bedarfsänderungen modifiziert werden. Somit werden die Computerressourcen nicht bis zu ihrer vollständigen Leistungsfähigkeit genutzt.
  • Figurenliste
  • Verschiedene der beigefügten Zeichnungen stellen lediglich beispielhafte Ausführungsformen der vorliegenden Offenbarung dar und sollten nicht als ihren Schutzumfang beschränkend angesehen werden.
    • 1 stellt eine beispielhafte Computerumgebung, in welcher ein netzwerkbasiertes, universelles Datenbanksystem Streams an gemeinsam genutzten bzw. geteilten Datenbankobjekten implementieren kann, gemäß einigen beispielhaften Ausführungsformen dar.
    • 2 ist ein Blockdiagramm, das Komponenten eines Computer-Servicemanagers darstellt, gemäß einigen beispielhaften Ausführungsformen.
    • 3 ist ein Blockdiagramm, das Komponenten einer Ausführungsplattform darstellt, gemäß einigen beispielhaften Ausführungsformen.
    • 4 ist ein Blockdiagramm, das einen globalen Vordergrunddienst darstellt, gemäß einigen beispielhaften Ausführungsformen.
    • 5 ist ein Blockdiagramm, das ein Netzwerksystem darstellt, gemäß einigen beispielhaften Ausführungsformen.
    • 6 zeigt ein Ablaufdiagramm zum Berechnen eines lokalen Bedarfs an Computerressourcen gemäß einigen beispielhaften Ausführungsformen.
    • 7 zeigt ein Ablaufdiagramm zum Zuteilen von Computerressourcen gemäß einigen beispielhaften Ausführungsformen.
    • 8A-8B zeigen ein Ablaufdiagramm zur dynamischen Zuteilung von Computerressourcen gemäß einigen beispielhaften Ausführungsformen.
    • 9 stellt eine schematische Darstellung einer Maschine in der Form eines Computersystems, innerhalb von welchem eine Gruppe von Anweisungen ausgeführt werden kann, um zu veranlassen, dass die Maschine irgendeine oder mehrere der hierin diskutierten Methoden durchführt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar.
  • DETAILLIERTE BESCHREIBUNG
  • Die Beschreibung, die folgt, enthält Systeme, Methoden, Techniken, Anweisungssequenzen und Computermaschinenprogrammprodukte, die illustrative Ausführungsformen der Offenbarung verkörpern. In der folgenden Beschreibung werden zum Zwecke einer Erklärung 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 klar sein, dass Ausführungsformen des erfinderischen Gegenstands ohne diese spezifischen Details ausgeführt werden können. Im Allgemeinen werden wohlbekannte Anweisungsinstanzen, Protokolle, Strukturen und Techniken nicht notwendigerweise im Detail gezeigt.
  • Die Ausführungsformen der vorliegenden Offenbarung können dynamische Zuordnungstechniken zum Zuteilen von Ressourcen auf einer Bedarfsbasis zur Verfügung stellen. Eine Zuordnungssteuerung kann in wenigstens zwei Komponenten getrennt sein: eine lokale Komponente und eine globale Komponente. Jede Komponente kann einen aktiven Dialog miteinander haben; der Dialog kann zwei Aspekte enthalten: 1) einen Bedarf an Computerressourcen und 2) eine zulässige Gesamtanzahl von Computerressourcen. Die lokale Komponente kann den ersten Aspekt, den aktuellen Bedarf an Computerressourcen, einstellen; die globale Komponente kann den zweiten Aspekt, die zulässige Gesamtanzahl von Computerressourcen, einstellen. Diese Aufteilung einer Steuerung bietet Vorteile, wie beispielsweise ein proportionales Zuteilen von Ressourcen zu konkurrierenden Anforderungen unter Verwendung von Algorithmen für gerechte Verteilung. Die globale Komponente kann Ressourcen aus einem Pool von Ressourcen verschiedenen lokalen Komponenten zuteilen und die lokalen Komponenten können wiederum ihre zugeteilten Ressourcen lokalen konkurrierenden Anforderungen zuordnen. Sowohl die globalen als auch die lokalen Komponenten können Algorithmen für gerechte Verteilung für ihre jeweiligen Zuteilungen und Zuordnungen verwenden. Somit können die Zuordnungen der Ressourcen dynamisch modifiziert werden, wenn sich ein Bedarf ändert, was zu einer weiter optimierten Nutzung von Computerressourcen führt.
  • 1 stellt eine beispielhafte gemeinsam genutzte bzw. geteilte Datenverarbeitungsplattform 100, die eine sichere Nachrichtenübermittlung zwischen Bereitstellungen bzw. Stationierungen implementiert, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Um zu vermeiden, dass der erfinderische Gegenstand mit unnötigem Detail verdunkelt wird, wurden in den Figuren verschiedene funktionelle Komponenten weggelassen, die nicht passend dafür sind, ein Verstehen des erfinderischen Gegenstands zu fördern. Ein erfahrener Handwerker wird jedoch ohne weiteres erkennen, dass verschiedene zusätzliche funktionelle Komponenten als Teil der gemeinsam genutzten bzw. geteilten Datenverarbeitungsplattform 100 enthalten sein können, um eine zusätzliche Funktionalität zu ermöglichen, die hierin nicht spezifisch beschrieben ist.
  • Wie es gezeigt ist, umfasst die gemeinsam genutzte Datenverarbeitungsplattform 100 das netzwerkbasierte, universelle Datenbanksystem 102, eine Cloud-Computing-Speicherplattform 104 (z. B. eine Speicherplattform, einen AWS®-Service, Microsoft Azure® oder Google Cloud Services®) und eine entfernte Computervorrichtung 106. Das netzwerkbasierte, universellen Datenbanksystem 102 ist ein netzwerkbasiertes System, das zum Speichern von und Zugreifen auf Daten (z. B. internes Speichern von Daten, Zugreifen auf externe, entfernt angeordnete Daten) und zum Berichten über die und Analysieren der integrierten Daten aus der einen oder den mehreren ungleichen Quellen (z. B. der Cloud-Computing-Speicherplattform 104) verwendet wird. Die Cloud-Computing-Speicherplattform 104 umfasst eine Vielzahl von Computermaschinen und stellt dem netzwerkbasierten, universellen Datenbanksystem 102 Computersystemressourcen auf eine Anforderung hin bzw. On-Demand-Computersystemressourcen, wie beispielsweise Datenspeicherung und Rechenleistung, zur Verfügung. Während bei der in 1 dargestellten Ausführungsform eine universelle Datenbank gezeigt ist, können andere Ausführungsformen andere Arten von Datenbanken oder andere Datenverarbeitungssysteme enthalten.
  • Die entfernte Computervorrichtung 106 (z.B. ein Anwendergerät wie beispielsweise ein Laptop-Computer) umfasst eine oder mehrere Computermaschinen (z.B. ein Anwendergerät wie beispielsweise einen Laptop-Computer), die eine entfernte Softwarekomponente 108 (z.B. Clouddienst, auf den durch einen Browserzugegriffen wird) ausführen, um Anwendern des netzwerkbasierten, universellen Datenbanksystems 102 eine zusätzliche Funktionalität zur Verfügung zu stellen. Die entfernte Softwarekomponente 108 umfasst eine Gruppe von maschinenlesbaren Anweisungen (z.B. einen Code), die dann, wenn sie durch die entfernte Computervorrichtung 106 ausgeführt werden, veranlassen, dass die entfernte Computervorrichtung 106 eine bestimmte Funktionalität zur Verfügung stellt. Die entfernte Softwarekomponente 108 kann mit Eingabedaten betrieben werden und erzeugt Ergebnisdaten basierend auf einem Verarbeiten, Analysieren oder einem anderweitigen Transformieren der Eingabedaten. Als ein Beispiel kann die entfernte Softwarekomponente 108 ein Datenanbieter oder Datenverbraucher sein, der Datenbankverfolgungsprozeduren, wie beispielsweise Streams an geteilten Tabellen und Ansichten, ermöglicht, wie es nachstehend in weiterem Detail diskutiert wird.
  • Das netzwerkbasierte, universelle Datenbanksystem 102 umfasst ein Zugriffsmanagementsystem 110, einen Computer-Servicemanager 112, eine Ausführungsplattform 114 und eine Datenbank 116. Das Zugriffsmanagementsystem 110 ermöglicht, dass administrative Anwender einen Zugriff auf Ressourcen und Dienste, die durch das netzwerkbasierte, universelle Datenbanksystem 102 zur Verfügung gestellt sind, managen. Administrative Anwender können Anwender, Rollen bzw. Aufgaben und Gruppen erzeugen 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 unter unterschiedlichen Anwender des netzwerkbasierten, universellen Datenbanksystems 102 sicher managen, wie es nachstehend in weiterem Detail diskutiert wird.
  • Der Computer-Servicemanager 112 koordiniert und managt Operationen des netzwerkbasierten, universellen Datenbanksystems 102. Der Computer-Servicemanager 112 führt auch Abfrageoptimierung und -kompilierung sowie ein Managen von Clustern von Computerdiensten durch, die Computerressourcen (z.B. virtuelle Lagerorte, virtuelle Maschinen, EC2-Cluster) zur Verfügung stellen. Der Computer-Servicemanager 112 kann eine beliebige Anzahl von Client-Konten unterstützen, wie beispielsweise Endanwender, die Datenspeicherungs- und -wiedergewinnungsanforderungen zur Verfügung stellen, Systemadministratoren, die die hierin beschriebenen Systeme und Verfahren managen, und andere Komponenten/Vorrichtungen, die mit dem Computer-Servicemanager 112 interagieren.
  • Der Computer-Servicemanager 112 ist auch mit der Datenbank 116 gekoppelt, die mit der Gesamtheit von auf der gemeinsam genutzten bzw. geteilten Datenverarbeitungsplattform 100 gespeicherten Daten assoziiert ist. Die Datenbank 116 speichert Daten, die zu verschiedenen Funktionen und Aspekten gehören, die mit dem netzwerkbasierten, universellen Datenbanksystem 102 und seinen Anwendern assoziiert sind.
  • Bei einigen Ausführungsformen enthält die Datenbank 116 eine Zusammenfassung von in entfernten Datenspeichersystemen gespeicherten Daten sowie Daten, die aus einem oder mehreren lokalen Caches verfügbar sind. Zusätzlich kann die Datenbank 116 Information in Bezug darauf 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 Datenstück zugegriffen werden muss, ohne die tatsächlichen Daten aus einer Speichervorrichtung zu laden oder darauf zuzugreifen. Der Computer-Servicemanager 112 ist weiterhin mit einer Ausführungsplattform 114 gekoppelt, die mehrere Computerressourcen (z.B. virtuelle Lagerorte) zur Verfügung stellt, die verschiedene Datenspeicherungs- und Datenwiedergewinnungsaufgaben ausführen, wie es nachstehend in größerem Detail 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 sich an einem oder mehreren geografischen Standorten befinden. Zum Beispiel können die Datenspeichervorrichtungen 124-1 bis 124-n Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur sein. Die Datenspeichervorrichtungen 124-1 bis 124-n können Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speichercluster, Amazon-S3-Speichersysteme oder irgendeine andere Datenspeichertechnologie sein. Zusätzlich kann die Cloud-Computing-Speicherplattform 104 verteilte Dateiensysteme (z.B. Hadoop Distributed File Systems (HDFS)), Objektspeichersysteme und ähnliches enthalten.
  • Die Ausführungsplattform 114 umfasst eine Vielzahl von Computerknoten (z.B. virtuelle Lagerorte). Eine Gruppe von Prozessen auf einem Computerknoten führt einen Abfrageplan aus, der durch den Computer-Servicemanager 112 kompiliert ist. Die Gruppe bzw. der Satz von Prozessen kann folgendes enthalten: einen ersten Prozess, um den Abfrageplan auszuführen; einen zweiten Prozess, um Mikropartitionsdateien unter Verwendung einer „am-längsten-nicht-verwendet“-(LRU-)Strategie zu überwachen und zu löschen und um einen „außerhalb-des-Speichers“-(OOM-)Fehlerminderungsprozesses zu implementieren; einen dritten Prozess, der Gesundheits- bzw. Integritätsinformation aus Prozessprotokollen und Statusinformationen extrahiert, um sie zum Computer-Servicemanager 112 zurückzusenden; einen vierten Prozess, um eine Kommunikation mit dem Computer-Servicemanager 112 nach einem Systemstart einzurichten; und einen fünften Prozess, um die gesamte Kommunikation mit einem Computercluster für einen gegebenen Job bzw. Auftrag handzuhaben, der durch den Computer-Servicemanager 112 zur Verfügung gestellt ist, und um Information zurück zum Computer-Servicemanager 112 und andere Computerknoten der Ausführungsplattform 114 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 Anwender Anwender, Rollen bzw. Aufgaben und Gruppen erzeugen und managen und Berechtigungen verwenden, um einen Zugriff auf Clouddienste und -ressourcen zuzulassen oder zu verweigern. Das Zugriffsmanagementsystem 110 des netzwerkbasierten, universellen Datenbanksystems 102 und das Zugriffsmanagementsystem 118 der Cloud-Computing-Speicherplattform 104 können kommunizieren und Information teilen, um einen Zugriff und ein Management von Ressourcen und Diensten zu ermöglichen, die von Anwender des netzwerkbasierten, universellen Datenbanksystems 102 und der Cloud-Computing-Speicherplattform 104 gemeinsam genutzt bzw. geteilt werden. Der Web-Proxy 120 handhabt Aufgaben, die an einem Akzeptieren und Verarbeiten gleichzeitiger API-Aufrufe beteiligt sind, einschließlich eines Verkehrsmanagements, einer Autorisierung und einer Zugriffssteuerung, einer Überwachung und eines API-Versionsmanagements. Der Web-Proxy 120 stellt einen HTTP-Proxydienst zum Erzeugen, Veröffentlichen, Warten, Sichern und Überwachen von APIs (z.B. REST-APIs) zur Verfügung.
  • 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 nutzen. Bei einigen Ausführungsformen sind die Datenkommunikationsnetzwerke eine Kombination aus zwei oder mehr miteinander gekoppelten Datenkommunikationsnetzwerken (oder Unternetzwerken). In 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 Computerressourcen entkoppelt, die mit der Ausführungsplattform 114 assoziiert sind. Das bedeutet, dass neue virtuelle Lagerstandorte in der Ausführungsplattform 114 erzeugt und aufgelöst werden können und zusätzliche Datenspeichervorrichtungen auf der Cloud-Computing-Speicherplattform 104 auf unabhängige Weise erzeugt und aufgelöst werden können. Diese Architektur unterstützt dynamische Änderungen am netzwerkbasierten, universellen Datenbanksystem 102 basierend auf den sich ändernden Notwendigkeiten von Datenspeicherung/-wiedergewinnung sowie den sich ändernden Notwendigkeiten der Anwender und Systeme, die auf die gemeinsam genutzte Datenverarbeitungsplattform 100 zugreifen. Die Unterstützung dynamischer Änderungen lässt zu, dass sich das netzwerkbasierte, universelle Datenbanksystem 102 in Reaktion auf sich ändernde Anforderungen an die Systeme und Komponenten innerhalb des netzwerkbasierten, universellen Datenbanksystems 102 schnell skaliert bzw. maßstäblich anpasst. Die Entkopplung der Computerressourcen von den Datenspeichervorrichtungen 124-1 bis 124-n unterstützt die Speicherung großer Datenmengen, ohne dass eine entsprechende große Menge an Computerressourcen erforderlich ist. Auf ähnliche Weise unterstützt diese Entkopplung von Ressourcen eine signifikante Erhöhung bei den zu einem bestimmten Zeitpunkt genutzten Computerressourcen, ohne dass eine entsprechende Erhöhung bei den verfügbaren Datenspeicherressourcen erforderlich ist. Zusätzlich ermöglicht die Entkopplung von Ressourcen unterschiedlichen Konten ein Erzeugen zusätzlicher Computerressourcen zu handhaben, um Daten zu verarbeiten, die von anderen Anwendern gemeinsam genutzt bzw. geteilt werden, ohne die Systeme der anderen Anwender 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über den geteilten Daten auszuführen, wobei die neuen Computerressourcen durch den Datenverbraucher gemanagt werden und die Computerressourcen des Datenanbieters nicht beeinflussen oder mit ihnen interagieren.
  • Der Computer-Servicemanager 112, die Datenbank 116, die Ausführungsplattform 114, die Cloud-Computing-Speicherplattform 104 und die entfernte Computervorrichtung 106 sind in 1 als einzelne Komponenten gezeigt. Jedoch kann jeder bzw. jede von dem Computer-Servicemanager 112, der Datenbank 116, der Ausführungsplattform 114, der Cloud-Computing-Speicherplattform 104 und der entfernten Computerumgebung als verteiltes System implementiert sein (z. B. verteilt über mehrere Systeme/Plattformen an mehreren geografischen Standorten), das durch APIs und Zugriffsinformation (z.B. Token, Anmeldedaten) verbunden ist. Zusätzlich kann jeder oder jede von dem Computer-Servicemanager 112, der Datenbank 116, der Ausführungsplattform 114 und der Cloud-Computing-Speicherplattform 104 abhängig von Änderungen an den empfangenen Anforderungen und den sich ändernden Notwendigkeiten der der gemeinsam genutzten Datenverarbeitungsplattform 100 nach oben oder unten skaliert werden. Somit ist das netzwerkbasierte, universellen Datenbanksystem 102 bei den beschriebenen Ausführungsformen dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Notwendigkeiten einer Datenverarbeitung gerecht zu werden.
  • Während einer typischen Operation bzw. eines typischen Betriebs verarbeitet das netzwerkbasierte, universelle Datenbanksystem 102 mehrere Jobs bzw. Aufträge (z.B. Abfragen), die durch den Computer-Servicemanager 112 bestimmt sind. Diese Aufträge werden durch den Computer-Servicemanager 112 geplant und gemanagt, um zu bestimmen, wann und wie der Auftrag ausgeführt werden soll. Zum Beispiel kann der Computer-Servicemanager 112 den Job in mehrere diskrete Aufgaben aufteilen und kann bestimmen, welche Daten nötig sind, um jede der mehreren diskreten Aufgaben auszuführen. Der Computer-Servicemanager 112 kann jede der mehreren diskreten Aufgaben einem oder mehreren Knoten der Ausführungsplattform 114 zuordnen, um die Aufgabe zu verarbeiten. Der Computer-Servicemanager 112 kann bestimmen, welche Daten nötig sind, um eine Aufgabe zu verarbeiten, und weiter bestimmen, welche Knoten innerhalb der Ausführungsplattform 114 am besten geeignet sind, um die Aufgabe zu verarbeiten. Einige Knoten können bereits die Daten in einem Cache gespeichert bzw. zwischengespeichert haben, die nötig sind, um die Aufgabe zu verarbeiten (aufgrund dessen, dass die Knoten die Daten kürzlich von der Cloud-Computing-Speicherplattform 104 für einen früheren Auftrag heruntergeladen haben), und können daher ein guter Kandidat zum Verarbeiten der Aufgabe sein. Metadaten, die in der Datenbank 116 gespeichert sind, helfen dem Computer-Servicemanager 112 beim Bestimmen, welche Knoten in der Ausführungsplattform 114 bereits wenigstens einen Teilbereich der Daten zwischengespeichert haben, die nötig sind, um die Aufgabe zu verarbeiten. 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, Daten, die von der Cloud-Computing-Speicherplattform 104 wiedergewonnen sind. Es ist wünschenswert, so viele Daten wie möglich aus Caches innerhalb der Ausführungsplattform 114 wiederzugewinnen bzw. abzurufen, weil die Wiedergewinnungs- bzw. Abrufgeschwindigkeit typischerweise viel schneller ist als eine Abrufen von Daten von der Cloud-Computing-Speicherplattform 104.
  • 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 Cache-Ressourcen 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 Cache-Ressourcen nicht auf spezifische Datenspeichervorrichtungen 124-1 bis 124-n beschränkt. Stattdessen können alle Computerressourcen und alle Cache-Ressourcen Daten aus irgendeiner der Datenspeicherressourcen in der Cloud-Computing-Speicherplattform 104 abrufen und Daten zu dieser speichern.
  • 2 ist ein Blockdiagramm, das Komponenten des Computer-Servicemanagers 112 darstellt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Wie es in 2 gezeigt ist, managt ein Anforderungsverarbeitungsdienst 202 empfangene Datenspeicheranforderungen und Datenabrufanfragen (z.B. Jobs bzw. Aufträge, die an Datenbankdaten durchgeführt werden sollen). Zum Beispiel kann der Anforderungsverarbeitungsdienst 202 die Daten bestimmen, die nötig sind, um eine empfangene Abfrage zu verarbeiten (z.B. eine Datenspeicheranforderung oder Datenabrufanforderung). Die Daten können in einem Cache innerhalb der Ausführungsplattform 114 oder in einer Datenspeichervorrichtung auf der Cloud-Computing-Speicherplattform 104 gespeichert werden. Ein Managementkonsolendienst 204 unterstützt den Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager. Zusätzlich kann der Managementkonsolendienst 204 eine Anforderung empfangen, um einen Job auszuführen und die Arbeitsbelastung auf dem System zu überwachen. Die Stream-Teilungsmaschine 225 managt eine Änderungsverfolgung an Datenbankobjekten, wie beispielsweise eine Datenfreigabe bzw. -teilung (z.B. freigegebene bzw. geteilte Tabelle) oder eine freigegebene bzw. geteilte Ansicht, gemäß einigen beispielhaften Ausführungsformen und wie es nachstehend in weiterem Detail diskutiert wird.
  • Der Computer-Servicemanager 112 enthält auch einen Auftrags- bzw. Job-Compiler 206, einen Auftrags- bzw. Job-Optimierer 208 und einen Auftrags- bzw. Job-Ausführer 210. Der Job-Compiler 206 zerlegt bzw. parst einen Job in mehrere diskrete Aufgaben und erzeugt den Ausführungscode für jede der mehreren diskreten Aufgaben. Der Job-Optimierer 208 bestimmt die beste Methode, um die mehreren diskreten Aufgaben auszuführen, basierend auf den zu verarbeitenden Daten. Der Job-Optimierer 208 handhabt auch verschiedene Datenbeschneidungsoperationen und andere Datenoptimierungstechniken, um die Geschwindigkeit und Effizienz einer Ausführung des Jobs zu verbessern. Der Job-Ausführer 210 führt den Ausführungscode für Jobs aus, die von einer Warteschlange empfangen oder durch den Computer-Servicemanager 112 bestimmt sind.
  • Ein Auftrags- bzw. Job-Planer und -Koordinator 212 sendet empfangene Jobs zu den geeigneten Diensten oder Systemen zur Kompilierung, Optimierung und Auslieferung 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 durch den Computer-Servicemanager 112 geplant sind, mit anderen Jobs „von außerhalb“, wie beispielsweise Anwenderabfragen, die durch andere Systeme 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 bestimmter Aufgaben zu verarbeiten. Ein virtueller Lagermanager 214 managt die Operation von mehreren virtuellen Lagern, 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 Computer-Servicemanager 112 einen Konfigurations- und Metadaten-Manager 216, der die Informationen in Bezug auf die Daten managt, die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches (d.h. den Caches in der Ausführungsplattform 114) gespeichert sind. Der Konfigurations- und Metadaten-Manager 216 verwendet die Metadaten, um zu bestimmen, auf welche Daten-Mikropartitionen zugegriffen werden muss, um Daten zur Verarbeitung einer bestimmten Aufgabe oder eines bestimmten Auftrags bzw. Jobs abzurufen. Ein Überwachungs- und Arbeitsbelastungs-Analysator 218 überwacht durch den Computer-Servicemanager 112 durchgeführte Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitsbelastung) quer über die virtuellen Lagerorte und Ausführungsknoten in der Ausführungsplattform 114. Der Überwachungs- und Arbeitsbelastungs-Analysator 218 verteilt Aufgaben auch neu, wie es nötig ist, basierend auf sich ändernden Arbeitsbelastungen im gesamten netzwerkbasierten, universellen Datenbanksystem 102 und kann Aufgaben weiterhin neu verteilen basierend auf einer Abfragearbeitsbelastung eines Anwenders (z.B. „extern“), die auch durch die Ausführungsplattform 114 verarbeitet werden können. Der Konfigurations- und Metadaten-Manager 216 sowie der Überwachungs- und Arbeitsbelastungs-Analysator 218 sind mit einer Datenspeichervorrichtung 220 gekoppelt. Die Datenspeichervorrichtung 220 in 2 stellt irgendeine Datenspeichervorrichtung innerhalb des netzwerkbasierten, universellen Datenbanksystems 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 darstellt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Wie es in 3 gezeigt ist, enthält die Ausführungsplattform 114 mehrere virtuelle Lagerorte, die elastische Cluster von Computerinstanzen sind, wie beispielsweise virtuelle Maschinen. Bei dem dargestellten Beispiel enthalten die virtuellen Lagerorte einen virtuellen Lagerort 1, einen virtuellen Lagerort 2 und einen virtuellen Lagerort n. Jeder virtuelle Lagerort bzw. jedes virtuelle Lager (z.B. 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 existierende virtuelle Lager fallenlassen, und zwar in Echtzeit basierend auf den aktuellen Notwendigkeiten einer Verarbeitung der Systeme und Anwender. Diese Flexibilität lässt zu, dass die Ausführungsplattform 114 schnell große Mengen an Computerressourcen nutzt, wenn sie benötigt werden, ohne dazu gezwungen zu sein, weiterhin für diese Computerressourcen zu bezahlen, wenn sie nicht mehr benötigt werden. Alle virtuellen Lager können von irgendeiner Datenspeichervorrichtung (z. B. irgendeiner Speichervorrichtung in der Cloud-Computing-Speicherplattform 104) aus auf Daten zugreifen.
  • Obwohl jedes in 3 gezeigte virtuelle Lager drei Ausführungsknoten enthält, kann ein bestimmtes virtuelles Lager eine beliebige Anzahl von Ausführungsknoten enthalten. Weiterhin ist die Anzahl von Ausführungsknoten in einem virtuellen Lager dynamisch, so dass neue Ausführungsknoten erzeugt werden, wenn zusätzlicher Bedarf vorhanden ist, und existierende Ausführungsknoten gelöscht werden, wenn sie nicht mehr benötigt werden (z.B. auf eine Abfrage oder eine Job-Beendigung 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 Anwenders (z.B. Anbieterkontoanwender) mit einem Arbeiterknoten in einem virtuellen Lager eines anderen Anwenders (z. B. Verbraucherkontoanwender) geteilt werden, so dass der andere Anwender eine Datenbank (z.B. schreibgeschützte Datenbank) erzeugen und die Daten in der Speichervorrichtung 124-1 direkt verwenden kann, ohne die Daten kopieren zu müssen (z.B. sie auf eine neue, durch den Anwender gemanagte Festplatte zu kopieren). Bei einigen Ausführungsformen kann ein bestimmtes virtuelles Lager oder ein bestimmter Ausführungsknoten temporär einer bestimmten Datenspeichervorrichtung zugeordnet sein, aber das virtuelle Lager oder der Ausführungsknoten kann später auf Daten von irgendeiner anderen Datenspeichervorrichtung zugreifen.
  • Bei dem Beispiel von 3 enthält das virtuelle Lager 1 drei Ausführungsknoten 302-1, 302-2 und 302-n. Der Ausführungsknoten 302-1 enthält einen Cache 304-1 und einen Prozessor 306-1. Der Ausführungsknoten 302-2 enthält einen Cache 304-2 und einen Prozessor 306-2. Der Ausführungsknoten 302-n enthält einen Cache 304-n und einen Prozessor 306-n. Jeder Ausführungsknoten 302-1, 302-2 und 302-n ist mit einer Verarbeitung von einer oder mehreren Datenspeicher- und/oder Datenabrufaufgaben assoziiert. Ein virtuelles Lager kann zum Beispiel Datenspeicher- und Datenabrufaufgaben handhaben, die mit einem internen Dienst assoziiert sind, wie beispielsweise einem Clusterdienst, einem Auffrischdienst für eine materialisierte Ansicht, einem Dateikomprimierungsdienst, einem Speicherprozedurdienst oder einem Dateiaktualisierungsdienst bzw. -upgradedienst. Bei anderen Implementierungen kann ein bestimmtes virtuelles Lager Datenspeicher- und Datenabrufaufgaben, die mit einem bestimmten Datenspeichersystem oder einer bestimmten Datenkategorie assoziiert sind, handhaben.
  • Ähnlich dem oben diskutierten virtuellen Lager 1 enthält das virtuelle Lager 2 drei Ausführungsknoten 312-1, 312-2 und 312-n. Der Ausführungsknoten 312-1 enthält einen Cache 314-1 und einen Prozessor 316-1. Der Ausführungsknoten 312-2 enthält einen Cache 314-2 und einen Prozessor 316-2. Der Ausführungsknoten 312-n enthält einen Cache 314-n und einen Prozessor 316-n. Zusätzlich enthält das virtuelle Lager 3 drei Ausführungsknoten 322-1, 322-2 und 322-n. Der Ausführungsknoten 322-1 enthält einen Cache 324-1 und einen Prozessor 326-1. Der Ausführungsknoten 322-2 enthält einen Cache 324-2 und einen Prozessor 326-2. Der Ausführungsknoten 322-n enthält einen Cache 324-n und einen Prozessor 326-n.
  • Bei einigen Ausführungsformen sind die in 3 gezeigten Ausführungsknoten in Bezug auf die Daten, die die Ausführungsknoten im Cache speichern, zustandslos. Zum Beispiel speichern diese Ausführungsknoten keine Statusinformation über den Ausführungsknoten oder unterhalten sie auf andere Weise, oder die Daten, die durch einen bestimmten Ausführungsknoten im Cache gespeichert bzw. zwischengespeichert sind. Somit kann im Falle eines Ausführungsknotenfehlers der ausgefallene Knoten transparent durch einen anderen Knoten ersetzt werden. Da es keine Statusinformationen gibt, die mit dem fehlgeschlagenen Ausführungsknoten assoziiert ist, kann der neue (Ersatz-)Ausführungsknoten den ausgefallenen Knoten auf einfache Weise ersetzen, ohne Sorge um ein erneutes Erzeugen eines bestimmten Status.
  • Obwohl die in 3 gezeigten Ausführungsknoten jeweils einen Datencache und einen Prozessor enthalten, können alternative Ausführungsformen Ausführungsknoten enthalten, die eine beliebige Anzahl von Prozessoren und eine beliebige Anzahl von Caches enthalten. Zusätzlich können die Caches bezüglich der Größe zwischen den verschiedenen Ausführungsknoten variieren. Die in 3 gezeigten Caches speichern im lokalen Ausführungsknoten (z. B. einer lokalen Platte) Daten, die von einer oder mehreren Datenspeichervorrichtungen in der Cloud-Computing-Speicherplattform 104 abgerufen wurden (z.B. S3-Objekte, auf die kürzlich durch den gegebenen Knoten zugegriffen wurde). Bei einigen beispielhaften Ausführungsformen speichert der Cache Dateiheader und einzelne Spalten von Dateien als Abfrage-Downloads nur Spalten, die für diese Abfrage nötig sind.
  • Um Cache-Treffer zu verbessern und überlappende redundante Daten zu vermeiden, die in den Knotencaches gespeichert sind, ordnet der Job-Optimierer 208 den Knoten unter Verwendung eines konstanten Hash-Schemas Eingabedateisätze zu, um über Tabellendateinamen der Daten, auf die zugegriffen ist, (z. B. Daten in der Datenbank 116 oder der Datenbank 122) zu hashen. Nachfolgende oder gleichzeitige Abfragen, die auf dieselbe Tabellendatei zugreifen, werden daher gemäß einigen beispielhaften Ausführungsformen auf demselben Knoten durchgeführt werden.
  • Wie es diskutiert ist, können sich die Knoten und virtuellen Lager bzw. Lagerorte in Reaktion auf Umgebungsbedingungen (z.B. Katastrophenszenarien), Hardware-/Softwareprobleme (z.B. Fehlfunktionen) oder administrative Änderungen (z.B. ein Wechseln von einem großen Cluster zu einem kleineren Cluster zu niedrigeren Kosten) dynamisch ändern. Bei einigen beispielhaften Ausführungsformen werden dann, wenn sich die Gruppe bzw. der Satz von Knoten ändert, keine Daten sofort neu gemischt bzw. umstrukturiert. Stattdessen ist die Am-längsten-nicht-verwendet-Ersatzstrategie implementiert, um die verlorenen Cacheinhalte möglicherweise über mehrere Jobs zu ersetzen. Somit reduzieren oder eliminieren die Caches die Engpassprobleme, die in Plattformen auftreten, die konsistent Daten aus entfernten Speichersystemen abrufen. Anstelle eines wiederholten Zugreifens auf Daten von den entfernten Speichervorrichtungen, greifen die hierin beschriebenen Systeme und Verfahren auf Daten von 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 schnellen Zugriff auf die im Cache gespeicherten bzw. zwischengespeicherten Daten zur Verfügung stellen. Jeder Cache kann Daten von irgendeiner der Speichervorrichtungen in der Cloud-Computing-Speicherplattform 104 speichern.
  • Weiterhin können die Cacheressourcen und Computerressourcen zwischen verschiedenen 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 Speichern im Cache bzw. Zwischenspeichern großer Datenmengen erfordern. Ein weiterer Ausführungsknoten kann Cacheressourcen enthalten, die schnellere Eingabe-/Ausgabeoperationen zur Verfügung stellen, was für Aufgaben nützlich ist, die ein schnelles Scannen großer Datenmengen erfordern. Bei einigen Ausführungsformen implementiert die Ausführungsplattform 114 eine Schieflagenhandhabung, um Arbeit auf die Cacheressourcen und Computerressourcen zu verteilen, die mit einer bestimmten Ausführung assoziiert sind, wobei die Verteilung weiter auf den erwarteten Aufgaben basieren kann, die durch die Ausführungsknoten durchgeführt werden sollen. Zum Beispiel können einem Ausführungsknoten mehr Verarbeitungsressourcen zugeordnet werden, wenn die durch den Ausführungsknoten durchgeführten Aufgaben prozessorintensiver werden. Gleichermaßen können einem Ausführungsknoten mehr Cacheressourcen zugeordnet werden, wenn die durch den Ausführungsknoten durchgeführten Aufgaben eine größere Cachekapazität erfordern. Weiterhin kann es sein, dass einige Knoten aufgrund verschiedener Probleme (z.B. Virtualisierungsprobleme, Netzwerk-Overhead) viel langsamer ausführend sind als andere. Bei einigen beispielhaften Ausführungsformen wird sich mit den Ungleichgewichten auf der Scan-Ebene unter Verwendung eines Dateidiebstahl-Schemas befasst. Insbesondere fordert ein Knotenprozess, wann immer er ein Scannen seiner Gruppe bzw. seines Satzes von Eingabedateien beendet, 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 im Eingabedateisatz gelassen sind, wenn die Anforderung empfangen wird), und überträgt dann den Besitz einer oder mehrerer der verbleibenden Dateien für die Dauer des aktuellen Jobs (z.B. Abfrage). Der anfordernde Knoten (z.B. der Dateidiebstahl-Knoten) empfängt dann die Daten (z.B. Headerdaten) 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 verzögernde Knoten Dateien über Dateidiebstahl auf eine Weise übertragen, die die Last auf den verzögernden Knoten nicht verschlechtert.
  • Obwohl virtuelle Lager 1, 2 und n mit derselben Ausführungsplattform 114 assoziiert sind, können die virtuellen Lager bzw. Lagerorte unter Verwendung von mehreren Computersystemen an mehreren geografischen Standorten implementiert sein. Zum Beispiel kann das virtuelle Lager 1 durch ein Computersystem an einem ersten geografischen Standort implementiert sein, während die virtuellen Lager 2 und n durch ein anderes Computersystem an einem zweiten geografischen Standort implementiert sind. Bei einigen Ausführungsformen sind diese verschiedenen Computersysteme cloudbasierte Computersysteme, die durch eine oder mehrere verschiedene Einheiten aufrechterhalten sind.
  • Zusätzlich ist jedes virtuelle Lager in 3 derart gezeigt, dass es mehrere Ausführungsknoten hat. Die mehreren Ausführungsknoten, die mit jedem virtuellen Lager assoziiert sind, können unter Verwendung von mehreren Computersystemen an mehreren geografischen Standorten implementiert sein. Zum Beispiel implementiert ein Fall des virtuellen Lagers 1 Ausführungsknoten 302-1 und 302-2 auf einer Computerplattform an einem geografischen Standort und implementiert einen 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 der Ebene der 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 eine beliebige Anzahl virtueller Lager enthalten. Zusätzlich ist die Anzahl von virtuellen Lager in einer bestimmten Ausführungsplattform dynamisch, so dass neue virtuelle Lager erzeugt werden, wenn zusätzliche Verarbeitungs- und/oder Zwischenspeicherressourcen 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 Zwischenspeicherungsressourcen. Diese Konfiguration lässt zu, dass Anforderungen in verschiedenen virtuellen Lagern unabhängig ohne Interferenz bzw. Beeinflussung zwischen den Anforderungen verarbeitet werden. Diese unabhängige Verarbeitung kombiniert mit der Fähigkeit, virtuelle Lagerorte dynamisch hinzuzufügen und zu entfernen, unterstützt das Hinzufügen neuer Verarbeitungskapazität für neue Anwender, ohne die durch die existierenden Anwender beobachtete Leistungsfähigkeit zu beeinträchtigen.
  • 4 zeigt einen beispielhaften globalen Vordergrunddienst (GS) 400 gemäß einigen beispielhaften Ausführungsformen. Auf GS kann auch als Computer-Servicemanager Bezug genommen werden. Der Vordergrund-GS 400 kann Abfrageanforderungen empfangen und Abfragepläne entwickeln, um die Abfrageanforderungen auszuführen. Der Vordergrund-GS 400 kann Anforderungen zu Computerknoten oder -ressourcen 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 einen bestimmten Typ von Dienst definiert sein, wie beispielsweise Kopieren (Replizieren), Aufnehmen (eines Typs eines großen Tabellenscans), Berechnen, Abfragen des Typs eines großen Tabellenscans, etc. Die QCs 402.1-402.3 können Abfrageanforderungen aus verschiedenen Quellen empfangen, die unterschiedliche Konto-IDs haben können. Für bestimmte Operationen, wie beispielsweise diejenigen, an denen mehrere Computerressourcen beteiligt sind, die zusammenarbeiten, um verschiedene Teilbereiche einer Operation (z.B. große Tabellenscans) auszuführen, kann die Quelle bei einer Granularität auf einer Ebene einer universellen Datenbank definiert sein. Die QCs 402.1-402.3 können Information in Bezug auf die Abfrageanforderungen und ihre Quellen zum lokalen BG 404 kommunizieren.
  • Wie es nachstehend in weiterem Detail erklärt wird, kann der lokale BG 404 dem QC 402.1-402.3 Computerressourcen (manchmal auch als Ausführungsplattformen bezeichnet) zuordnen. Die Computerressourcen können Computerknoten, die dem Vordergrund-GS 400 zugeteilt sind, aus einem Pool von Computerknoten sein. Bei einer Ausführungsform können die Computerressourcen Maschinen, Server und/oder Prozessoren sein. Bei einer Ausführungsform können die Computerressourcen Verarbeitungskernen einer Maschine sein. Auf ein Empfangen seiner Zuordnung von Computerressourcen hin können die QCs 402.1-402.3 direkt mit den zugeordneten Computerressourcen kommunizieren, um jeweilige Abfragepläne auszuführen.
  • 5 zeigt ein Beispiel eines Netzwerksystems 500 zum Zuteilen von Computerressourcen gemäß einigen beispielhaften Ausführungsformen. Das Netzwerksystem 500 kann eine Vielzahl von Vordergrunddiensten 510, 520, 530 enthalten. Jeder Vordergrunddienst kann eine Vielzahl von Abfragekoordinatoren und lokalen BGs enthalten, wie es oben beschrieben ist. Zum Beispiel kann der Vordergrunddienst 510 Abfragekoordinatoren 512.1-512.3 enthalten, die mit einem lokalen BG 514 gekoppelt sind; der Vordergrunddienst 520 kann Abfragekoordinatoren 522.1-522.3 enthalten, die mit einem lokalen BG 524 gekoppelt sind; und der Vordergrunddienst 530 kann Abfragekoordinatoren 532.1-532.3 enthalten, die mit einem lokalen BG 534 gekoppelt sind.
  • Die lokalen BGs 514, 524, 534 können mit einem globalen BG 550 über ein Netzwerk kommunizieren. Bei einer Ausführungsform können Kommunikationen zwischen den lokalen BGs 514, 524, 534 und der globalen BG 550 über eine Metadatendatenbank 540 durchgeführt werden. Das bedeutet, dass der lokale BG 514, 524, 534 Nachrichten, zum Beispiel in Bezug auf ihre aktuellen Computeranforderungen, zu der Metadatendatenbank 540 übertragen kann, wo die Information aus diesen Nachrichten gespeichert werden kann. Und der globale BG 550 kann die Information, die von dem lokalen BG 514, 524, 534 gesendet ist, aus der Metadatendatenbank 540, lesen. Bei einer anderen Ausführungsform können die Kommunikation zwischen den lokalen BGs 514, 524, 534 und dem globalen BG 550 direkt über, zum Beispiel, entfernte Prozeduraufrufe, wie beispielsweise gRPCs, durchgeführt werden. Darüber hinaus können Kommunikationen zwischen den lokalen BGs 514, 524, 534 und dem globalen BG 550 unter Verwendung einer Kombination aus direkter Kommunikation (z.B. entfernte Prozeduraufrufe) und indirekten Kommunikationen (z.B. über eine Metadatendatenbank) durchgeführt werden.
  • Der globale BG 550 kann mit einem Cloudressourcenanbieter 560 gekoppelt sein. Der Cloudressourcenanbieter 560 kann einen Pool von Computerressourcen unterhalten. Bei einer Ausführungsform kann der globale BG 550 mit einer Kommunikationsschicht über dem Cloudressourcenanbieter 560 kommunizieren.
  • Wie es nachstehend in weiterem Detail erklärt wird, kann das Netzwerksystem 500 dynamische Computerressourcen-Zuteilungstechniken implementieren, indem Zuteilungs- oder Zuordnungsteuerungen zwischen den lokalen BGs 514, 524, 534 und dem globalen BG 550 aufgeteilt werden. Jede oder jeder der Zuteilungssteuerungskomponenten, der lokalen BGs und des globalen BG, kann Computerressourcen basierend auf Fair-Distribution-Algorithmen, wie beispielsweise einem Max-Min-Fairness-Algorithmus, zuteilen oder zuordnen. Und jede der Zuteilungssteuerungskomponenten kann ihre Zuteilungen oder Zuordnungen auf einer Bedarfsbasis modifizieren.
  • 6 zeigt ein Ablaufdiagramm eines Verfahrens 600 zum Berechnen eines lokalen Bedarfs an Computerressourcen durch einen Vordergrund-GS gemäß einigen beispielhaften Ausführungsformen. Wie es gezeigt ist, können Teilbereiche des Verfahrens 600 durch QCs (z.B. QC 512.1) und einen lokalen BG (z.B. lokalen BG 514) ausgeführt werden.
  • Bei einer Operation 605 kann der QC eine Abfrageanforderung von einer Quelle empfangen. Zum Beispiel kann die Abfrageanforderung ein Kopierbefehl oder ein Befehl für ein großes Scannen oder ähnliches sein. Die Quelle kann durch eine Konto-ID oder durch die universelle Datenbank oder ähnliches identifiziert werden. Bei einer Operation 610 kann der QC Information in Bezug auf die Abfrageanforderung zum lokalen BG kommunizieren; die kommunizierte Information kann die Quelle der Abfrageanforderung enthalten. Andere QCs im Vordergrund-GS können auch Information in Bezug auf ihre jeweiligen Abfrageanforderungen zum lokalen BG kommunizieren, einschließlich der Quellen der Abfrageanforderungen. Bei einer Ausführungsform kann der Vordergrund-GS service-spezifisch bzw. dienstspezifisch sein; zum Beispiel kann der Vordergrund-GS, während er Abfragen von verschiedenen Quellen verarbeiten kann, einen Diensttyp, z.B. Kopieren, Aufnehmen, Scannen einer großen Tabelle, etc., handhaben.
  • Bei einer Operation 615 kann der lokale BG Abfrageinformation von seinen QCs empfangen und sammeln. Bei einer Operation 620 kann der lokale BG die Abfrageinformation von den QCs konsolidieren bzw. zusammenlegen, den Bedarf durch die QCs zu einem Bedarf pro Quelle (oder Konto) umsetzen und er kann einen aktuellen lokalen Bedarf an Computerressourcen für den Vordergrund-GS berechnen. Der lokale BG kann den aktuellen lokalen Bedarf an Computerressourcen mit der Information in Bezug auf den Bedarf pro Quelle in einem lokalen Speicher speichern und aufrechterhalten.
  • Ein Kommunizieren des aktuellen lokalen Bedarfs und ein Empfangen einer aktuellen zulässigen Anzahl von Ressourcen vom globalen BG wird als nächstes unter Bezugnahme auf 7 beschrieben. 7 zeigt ein Ablaufdiagramm eines Verfahrens 700 zur Zuteilung von Computerressourcen durch einen globalen BG gemäß einigen beispielhaften Ausführungsformen. Wie es gezeigt ist, können Teilbereiche des Verfahrens 700 durch lokale BGs (z.B. den lokalen BG 514), einen globalen BG (z.B. den globalen BG 550) und einen Cloudressourcenanbieter (z.B. den Cloudressourcenanbieter 560) ausgeführt werden. Ebenso kann, wie es hierin diskutiert ist, die Kommunikation zwischen den lokalen BGs und den globalen BGs wenigstens teilweise über eine Metadaten-DB (z.B. 540) durchgeführt werden. Der Klarheit und Kürze halber ist die Metadaten-DB in 7 nicht gezeigt, aber es sollte verstanden werden, dass Kommunikationen zwischen dem lokalen BG und dem globalen BG ganz oder teilweise über eine Metadaten-DB durchgeführt werden können. Es sollte auch verstanden werden, dass Kommunikationen zwischen dem globalen BG und dem Cloudressourcenanbieter über eine Kommunikationsschicht über dem Cloudressourcenanbieter durchgeführt werden können.
  • Bei einer Operation 705 kann der lokale BG seinen aktuellen lokalen Bedarf an Computerressourcen und die Informationen in Bezug auf den Bedarf pro Quelle kommunizieren. Bei einer Ausführungsform kann der lokale BG diese Information (aktuellen lokalen Bedarf und Quellinformation) in seinem lokalen Speicher sammeln, updaten und speichern und kann durch den globalen BG abgefragt werden, um diese Information periodisch (sagen wir alle zwei Minuten) zu kommunizieren. Zu dieser Zeit kann der lokale BG die in seinem Speicher gespeicherte letzte Information kommunizieren. Bei einer Ausführungsform kann die Häufigkeit eines Kommunizierens des aktuellen lokalen Bedarfs basierend auf Systembedingungen eingestellt werden. Wenn zum Beispiel der Bedarf volatiler bzw. unbeständiger bzw. instabiler ist, kann die Häufigkeit eines Berichtens erhöht werden, und wenn der Bedarf weniger volatil ist, kann die Häufigkeit eines Berichtens erniedrigt werden.
  • Bei einer Operation 710 kann der globale BG die aktuellen lokalen Bedürfnisse und Quellinformation von den lokalen BGs empfangen und sammeln. Bei einer Operation 715 kann der globale BG basierend auf der gesammelten Information einen aktuellen Bedarf für das System, N Anzahl von Ressourcen, berechnen. Bei einer Ausführungsform kann der berechnete aktuelle Bedarf für das System, N, die Summe der aktuellen lokalen Bedürfnisse der lokalen BGs sein. Bei einer Ausführungsform kann N kleiner als die Summe der aktuellen lokalen Bedürfnisse der lokalen BGs sein. Zum Beispiel kann der globale BG die Daten glätten und/oder historische Daten bei seiner Berechnung des aktuellen Bedarfs für das System berücksichtigen. Dies kann ein Anfordern von zu vielen Ressourcen basierend auf einem kurzfristigen Anstieg bezüglich eines Bedarfs verhindern, wo die Ressourcen möglicherweise nicht vollständig genutzt werden, sobald sich der Anstieg des Bedarfs auflöst. Zusätzlich kann der globale BG die Quelleninformation aus den verschiedenen Abfrageanforderungen überprüfen und basierend auf einer Quote oder einer Kontoobergrenze von Ressourcen für eine Quelle bestimmen, dass eine oder mehrere der Quellen möglicherweise nicht geeignet sind, alle angeforderten Ressourcen in Bezug auf ihren Anforderungen zu empfangen. Die Quote oder die Kontoobergrenze kann durch eine Quelle oder einen Administrator eingestellt werden.
  • Bei einer Operation 720 kann der globale BG den Cloudressourcenanbieter für die Anzahl N von Ressourcen anfordern. Bei einer Operation 725 kann der Cloudressourcenanbieter die Anforderung für die Anzahl N von Ressourcen auch empfangen. Der Cloudressourcenanbieter kann auch Anforderungen von anderen Quellen empfangen. Bei einer Operation 730 kann der Cloud-Anbieter eine Verteilung einer Anzahl M von Computerressourcen zum globalen BG und eine Identifizierung der M Computerressourcen senden, und bei einer Operation 735 kann der globale BG diese Information empfangen. Bei einer Ausführungsform kann M gleich oder kleiner als N sein. Anders ausgedrückt kann der globale BG alle angeforderten Computerressourcen empfangen oder er kann weniger Computerressourcen als angefordert empfangen.
  • Bei einer Operation 740 kann der globale BG die M Computerressourcen oder wenigstens einen Teilbereich davon unter Verwendung von Fair-Distribution-Algorithmen, wie beispielsweise einem Max-Min-Fairness-Algorithmus, den verschiedenen lokalen BGs zuteilen. Der globale BG kann die zulässige Anzahl von Computerressourcen für jeden lokalen BG einstellen. Bei einer Ausführungsform kann der globale BG eine abgestufte hierarchische Klassifizierung für zur Zuteilung verwenden. Zum Beispiel kann eine oberste Stufe bzw. Ebene der Diensttyp sein, wobei der globale BG die M Computerressourcen basierend auf Diensttypen verteilen kann. Einige Dienste können gegenüber anderen Diensten priorisiert sein. Unter der Dienstebene kann die nächste Ebene eine Quelle sein. Hier können die zugeteilten Computerressourcen unter jedem Diensttyp dann basierend auf den Quellen der Abfrageanforderungen verteilt werden. Unter der Quellebene kann die nächste Stufe bzw. Ebene GSes sein. Das bedeutet, dass die zugeteilten Ressourcen unter jedem Quellentyp dann basierend auf den GSes verteilt werden, die die Anforderungen vorlegen.
  • Bei einer Ausführungsform kann die Quellenklassifizierung zum Implementieren einer Beschränkung und Drosselung verwendet werden, wenn es nötig ist, basierend auf eingestellten Quoten oder Obergrenzen für Quellen. Zum Beispiel kann eine Quelle eine Quote oder Obergrenze diesbezüglich einstellen, wie viele Ressourcen sie für eine Zeitperiode, zum Beispiel einen Monat, verwenden kann. Daher kann der globale BG die einer Quelle zugeteilten Computerressourcen basierend auf der Quote für diese Quelle beschränken oder drosseln.
  • Bei einer Operation 745 kann der globale BG seine Zuteilungsentscheidung zu den lokalen BGs kommunizieren. Der globale BG kann seine jeweils zulässige Anzahl von Computerressourcen zu jedem lokalen BG kommunizieren. Bei einer Ausführungsform kann der globale BG die Zuteilung von M Computerressourcen kommunizieren. Bei einer Operation 750 kann der lokale BG eine Benachrichtigung über seine Zuteilung empfangen, z.B. seine zulässige Anzahl von Computerressourcen.
  • Der globale BG kann auch eine Liste der M Computerressourcen oder wenigstens eines Teilbereichs davon unterhalten, die den lokalen BGs zuzuteilen sind, wie zum Beispiel als eine persistente Liste. Bei einer Ausführungsform kann der globale BG die Computerressourcen den lokalen BGs basierend auf der zulässigen Anzahl von Computerressourcen von jedem lokalen BG zuordnen. Zum Beispiel kann der globale BG Identifikationsinformation der zugeordneten Computerressourcen zu jedem der lokalen BGs kommunizieren. Bei einer anderen Ausführungsform kann der globale BG die Liste der M Computerressourcen unterhalten und kann zulassen, dass jeder lokale BG Computerressourcen bis seiner zulässigen Anzahl von Computerressourcen in Anspruch nimmt. Der globale BG kann eine Liste der Computerressourcen unterhalten, die jedem der lokalen BGs zugeordnet sind. Bei einer Ausführungsform können die Liste der Computerressourcen und ihre Zuordnungen in der Metadaten-DB gehalten werden. Zum Beispiel kann die Liste in der Metadaten-DB durch den globalen BG gehalten werden, und verschiedene Identifizierer können verwendet werden, um zu identifizieren, ob eine Computerressource zugeordnet oder frei ist, und, wenn sie zugeordnet ist, zu welchem lokalen BG (oder Vordergrund-GS) sie zugeordnet ist. Wie es nachstehend in weiterem Detail erklärt ist, kann jeder lokale BG in der Lage sein, Computerressourcen freizugeben, und kann Benachrichtigungen über diese Freigabe kommunizieren, um die Liste upzudaten.
  • 8A-8B zeigen ein Ablaufdiagramm eines Verfahrens 800 zur dynamischen Zuteilung von Computerressourcen durch lokale und globale BGs gemäß einigen beispielhaften Ausführungsformen. Wie es gezeigt ist, können Teilbereiche des Verfahrens 800 durch QCs (z.B. den QC 512.1), einen lokalen BG (z.B. den lokalen BG 514), einen globalen BG (z.B. den globalen BG 550) ausgeführt werden. Wie es hierin diskutiert ist, kann auch eine Kommunikation zwischen den lokalen BGs und den globalen BGs wenigstens teilweise über eine Metadaten-DB durchgeführt werden. Der Klarheit und Kürze halber ist die Metadaten-DB in 8A-8B nicht gezeigt, aber es sollte verstanden werden, dass Kommunikationen zwischen dem lokalen BG und dem globalen BG ganz oder teilweise über eine Metadaten-DB durchgeführt werden kann.
  • Bei einer Operation 802 kann der lokale BG in Reaktion auf ein Empfangen seiner zulässigen Anzahl von Computerressourcen vom globalen BG (z.B. Operation 750) seinen QCs Computerressourcen zuordnen. Diese Zuordnung kann mit Fair-Distribution-Algorithmen, wie beispielsweise einem Max-Min-Fairness-Algorithmus, implementiert werden. Bei einer Ausführungsform kann der lokale BG die Quelle der Abfrageanforderungen bei seinem Durchführen einer Zuweisungsentscheidung berücksichtigen. Zum Beispiel kann der lokale BG die Computerressourcen jeder Quelle basierend auf der aktuell zulässigen Anzahl von Ressourcen und der Anforderungsbestellung zuordnen.
  • Bei einer Operation 804 kann der lokale BG die Computerressourcenzuordnungen zu den QCs kommunizieren. Die Zuordnung kann Identifikationsinformation für die Computerressourcen enthalten. Bei einer Operation 806 kann der QC seine Zuordnung von Computerressourcen vom lokalen BG empfangen. Bei einer Operation 808 kann sich der QC mit seinen zugeordneten Computerressourcen koordinieren, um jeweilige Abfrageergebnisse auszuführen. Der QC kann zum Planen von Jobs direkt mit seinen zugeordneten Computerressourcen kommunizieren. Der QC kann zum Beispiel Dateien oder Batches bzw. Stapel von Dateien zur Computerressource verteilen, um sie zu verarbeiten. Der QC kann die Leistungsfähigkeit seiner zugeordneten Computerressourcen nachverfolgen.
  • Bei einer Operation 810 kann der lokale BG Bedingungen bei den QCs überwachen und kann die Computerressourcen den QCs neu zuordnen, wie es nötig ist. Zum Beispiel können die QCs abgefragt werden, um Information zum lokalen BG zu senden. Bei einer Operation 812 kann der lokale BG in Reaktion auf ein Überwachen der Leistungsfähigkeit durch die QCs in der Zeit zwischen einem abgefragt werden durch den globalen BG die Computerressourcen seinen verschiedenen QCs dynamisch neu zuordnen. Diese neue Zuordnung kann zum Beispiel durch den lokalen BG periodisch, sagen wir alle 10 oder 30 Sekunden (im Vergleich mit alle zwei Minuten durch den globalen BG) durchgeführt werden. Daher kann der lokale BG im Vergleich mit dem globalen BG Computerressourcen schneller und flexibler zuordnen und neu zuordnen, wodurch die Nutzung der zugeordneten Computerressourcen optimiert wird. Darüber hinaus kann deshalb, weil der lokale BG seine Liste von zugeteilten Computerressourcen und ihre Zuordnungen zum QC im lokalen Speicher speichern kann (im Vergleich mit einer persistenten Liste in einer Metadaten-DB, z.B.), die Geschwindigkeit eines Änderns von Zuordnungen zu QCs erhöht werden. Der lokale BG und die QCs können die Operationen 804-812 bis zu der Zeit wiederholen, zu welcher der nächste aktuelle lokale Bedarf beim lokalen BG erzeugt wird.
  • Wie es oben diskutiert ist, können die lokalen BGs periodisch (z.B. alle zwei Minuten) bezüglich ihres aktuellen Bedarfs an Computerressourcen abgefragt werden. Bei einer Operation 814 kann der lokale BG, basierend auf den überwachten Bedingungen der QCs (z.B. Operationen 610-615, 810), seinen aktuellen lokalen Bedarf an Computerressourcen für den Vordergrunddienst berechnen (z.B. Operation 620). Bei einer Operation 816 kann der lokale BG seinen aktuellen lokalen Bedarf zum globalen BG kommunizieren, der bei einer Operation 818 die aktuellen lokalen Bedürfnisse von den lokalen BGs empfangen kann. Bei einer Operation 820 kann der globale BG mit dem Cloudressourcenanbieter interagieren und die aktuelle Zuteilung (z.B. aktuell zulässige Anzahl von Computerressourcen für jeden lokalen BG) erzeugen, wie es oben unter Bezugnahme auf 7 diskutiert ist, wie z.B. das Verfahren 700 oder Teilbereiche davon ausführen.
  • Bei einer Operation 822 kann der globale BG seine aktuelle (überarbeitete) Zuteilungsentscheidung zu den lokalen BGs kommunizieren. Zum Beispiel kann der globale BG zu jedem lokalen BG seine jeweilige zulässige Anzahl von Computerressourcen kommunizieren. Bei einer Operation 824 kann der lokale BG eine Benachrichtigung über seine Zuteilung, z.B. seine zulässige Anzahl von Computerressourcen, empfangen. Der lokale BG kann seine gespeicherte Information in Bezug auf eine aktuelle zulässige Anzahl von Computerressourcen entsprechend synchronisieren. Wenn die aktuelle zulässige Anzahl von Ressourcen erhöht worden ist, kann der lokale BG zusätzliche Computerressourcen aus der Liste beanspruchen, die durch den globalen BG unterhalten ist, und diese zusätzlichen Computerressourcen verwenden, um seine Jobs weiter zu planen. Bei einer Operation 826 kann der lokale BG seinem QC Computerressourcen zuordnen bzw. zuweisen (oder frühere Zuordnungen modifizieren).
  • Als nächstes soll ein Beispiel betrachtet werden, bei welchem die zulässige Anzahl von Computerressourcen für den lokalen BG reduziert worden ist. Zum Beispiel waren dem lokalen BG zuvor zehn Computerressourcen zugeordnet, aber ihm wurden nun durch den globalen BG acht Computerressourcen zugeordnet - eine Reduzierung um zwei. Bei diesem Beispiel muss der lokale BG zwei Computerressourcen zu dem globalen BG freigeben. Bei einer Operation 828 kann der lokale BG Anweisungen zum QC übertragen, um eine oder mehrere Computerressourcen freizugeben, und der QC kann die Anweisungen bei einer Operation 830 empfangen. Bei einer Operation 832 kann der QC bestimmen, welche Computerressource(n) freigegeben werden soll(en). Der QC kann zulassen, dass die ausgewählte(n) Computerressource(n) ihre aktuelle(n) Operation(en) beendet (beenden), zum Beispiel an einer Datei oder an einem Stapel von Dateien arbeitet (arbeiten), und kann aufhören, irgendwelche weiteren Dateien zu der (den) ausgewählten Computerressource(n) zu verteilen, wodurch seine Verwendung der ausgewählten Computerressource(n) abgeschlossen wird. Bei Operationen 834 kann der QC den lokalen BG darüber benachrichtigen, welche ausgewählte(n) Computerressource(n) (z.B. Identifikationsinformation von freigegebener (freigegebenen) Computerressource(n)) er nicht mehr verwendet, und der lokale BG kann diese Benachrichtigung bei einer Operation 836 empfangen und kann diese Information bei einer Operation 838 zum globalen BG weitergeben.
  • Als nächstes kann bei einer Operation 840 der globale BG in Reaktion auf die Benachrichtigung über eine (oder mehrere) freigegebene Ressource(n) seine aktuelle Zuteilung (z.B. Operation 818) weiter implementieren. Wenn zum Beispiel die freigegebene(n) Computerressource(n) anderen lokalen BGs zuzuteilen sind, kann der globale BG eine Benachrichtigung über diese Zuteilung zu diesen anderen lokalen BGs kommunizieren, wie es hierin diskutiert ist. Wenn die freigegebenen Computerressourcen zum Cloudressourcenanbieter zurück freigegeben werden sollen, kann der globale BG eine Benachrichtigung über diese Freigabe zum Cloudressourcenanbieter kommunizieren. Die Liste der Computerressourcenzuordnungen kann entsprechend überarbeitet werden.
  • Darüber hinaus kann das Netzwerksystem für eine Zuteilungssteuerung Wiederherstellungsprozeduren in dem Fall implementieren, dass eine oder mehrere Komponenten einen Fehler erfährt. Wie es hierin diskutiert ist, kann das Netzwerksystem für die Zuteilungssteuerung wenigstens drei primäre Komponenten enthalten: 1) die QCs, 2) die lokalen BGs (oder Vordergrund-GSes) und 3) den globalen BG. Wenn ein QC einen Fehler erfährt, kann der lokale BG den Fehler erkennen und die Abfragepläne entsprechend modifizieren. Dies kann ein neues Zuordnen von Abfragen und Computerressourcen enthalten. Wenn ein lokaler BG (oder ein Vordergrund-GS) einen Fehler erfährt, kann der globale BG Information dieses lokalen BG löschen bzw. beseitigen bzw. reinigen, bis der lokale BG wiederhergestellt ist. Und wenn der globale BG einen Fehler erfährt, kann der Status der Zuteilungen (z.B. aktueller Bedarf pro lokalem BG, aktuelle zulässige Anzahl pro lokalem BG) aus früheren Dialogen oder Kommunikationen wiederhergestellt werden, bis sich der globale BG erholt.
  • 9 zeigt eine schematische Darstellung einer Maschine 900 in der Form eines Computersystems, 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 Verfahren 600, 700 und 800 ausführt. Als ein weiteres Beispiel können die Anweisungen 916 veranlassen, dass die Maschine 900 Teilbereiche der Datenflüsse implementiert, die in irgendeiner oder mehreren der 1-8 dargestellt sind. Auf diese Weise transformieren die Anweisungen 916 eine allgemeine, nicht programmierte Maschine in eine bestimmte Maschine 900 (z.B. die entfernte Computervorrichtung 106, das Zugriffsmanagementsystem 110, den Computer-Servicemanager 112, die Ausführungsplattform 114, das Zugriffsmanagementsystem 118, den Web-Proxy 120, die entfernte Computervorrichtung 106), die speziell konfiguriert ist, um irgendeine der beschriebenen und dargestellten Funktionen auf die hierin beschriebenen 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 irgendeiner Maschine, die die Anweisungen 916 sequentiell oder auf andere Weise ausführen kann, die von der Maschine 900 vorzunehmende Aktionen spezifizieren. 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 sind 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, der 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.
  • 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.
  • 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.
  • 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 Computervorrichtung 106, dem Zugriffsmanagementsystem 110, dem Computer-Servicemanager 112, der Ausführungsplattform 114, dem Zugriffsmanagementsystem 118, dem Web-Proxy 120 und den Vorrichtungen bzw. Geräten 970 entsprechen.
  • Die verschiedenen Speicher (z.B. 930, 932, 934 und/oder Speicher des (der) Prozessors (Prozessoren) 910 und/oder der 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) Prozessor(en) 910 ausgeführt werden, verschiedene Operationen, um die offenbarten Ausführungsformen zu implementieren.
  • Wie sie hierin verwendet sind, bedeuten die Ausdrücke „Maschinenspeichermedium“, „Vorrichtungsspeichermedium“ und „Computerspeichermedium“ dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke beziehen sich auf eine einzelne oder mehrere Speichervorrichtungen und/oder Medien (z.B. eine zentrale oder verteilte Datenbank und/oder assoziierte Caches und Server), die ausführbare Anweisungen und/oder Daten speichern. Die Ausdrücke sollen demgemäß genommen werden, um Festkörperspeicher und optische und magnetische Medien, einschließlich eines Speichers intern oder extern von Prozessoren, zu enthalten, aber nicht um darauf beschränkt zu sein. Spezifische Beispiele für Maschinenspeichermedien, Computerspeichermedien und/oder Vorrichtungsspeichermedien enthalten einen nichtflüchtigen Speicher, einschließlich, anhand eines Beispiels, Halbleiterspeichervorrichtungen, wie z.B. eines löschbaren programmierbaren Nurlesespeichers (EPROM), 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.
  • Bei verschiedenen beispielhaften Ausführungsformen können ein oder 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.
  • 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 Vorrichtung 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.
  • Die Ausdrücke „maschinenlesbares Medium“, „computerlesbares Medium“ und „vorrichtungslesbares Medium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke sind definiert, um sowohl Maschinenspeichermedien als auch Übertragungsmedien zu enthalten. Somit enthalten die Ausdrücke sowohl Speichervorrichtungen/-medien als auch Trägerwellen/modulierte Datensignale.
  • Die verschiedenen Operationen der hierin beschriebenen beispielhaften Verfahren können wenigstens teilweise durch einen oder mehrere Prozessoren durchgeführt werden, die temporär (z.B. durch Software) oder dauerhaft konfiguriert sind, um die relevanten Operationen durchzuführen. Gleichermaßen können die hierin beschriebenen Verfahren wenigstens teilweise prozessorimplementiert sein. Zum Beispiel können wenigstens einige Operationen der Verfahren 600, 700 und 800 durch einen oder mehrere Prozessoren durchgeführt werden. Die Leistungsfähigkeit von bestimmten der Operationen kann auf den einen oder die mehreren Prozessoren verteilt werden, die sich nicht nur innerhalb einer einzelnen Maschine befinden, sondern auch quer über eine Anzahl von Maschinen genutzt werden. Bei einigen beispielhaften Ausführungsformen kann der Prozessor oder können die Prozessoren an einer einzigen Stelle angeordnet sein (z.B. in einer häuslichen Umgebung, einer Büroumgebung oder einer Serverfarm), während die Prozessoren bei anderen Ausführungsformen quer über eine Anzahl von Stellen bzw. Standorten verteilt sein können.
  • Obwohl die Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen beschrieben worden sind, wird es offensichtlich werden, dass verschiedene Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne von dem breiteren Schutzumfang des erfinderischen Gegenstands abzuweichen. Demgemäß sind die Spezifikation und die Zeichnungen eher in einem illustrativen als in einem beschränkenden Sinn anzusehen. Die beigefügten Zeichnungen, die einen Teil hiervon bilden, zeigen, zur Veranschaulichung und nicht zur Beschränkung, spezifische Ausführungsformen, bei welchen der Gegenstand ausgeführt werden kann. Die dargestellten Ausführungsformen sind in ausreichendem Detail beschrieben, um Fachleuten auf dem Gebiet zu ermöglichen, die hierin offenbarten Lehren auszuführen. Andere Ausführungsformen können verwendet und daraus abgeleitet werden, so dass strukturelle und logische Substitutionen und Änderungen vorgenommen werden können, ohne vom Schutzbereich dieser Offenbarung abzuweichen. Diese detaillierte Beschreibung ist daher nicht in einem beschränkenden Sinn zu nehmen, und der Schutzumfang von verschiedenen Ausführungsformen wird nur durch die beigefügten Ansprüche definiert, zusammen mit dem gesamten Bereich von Äquivalenten, auf welche solche Ansprüche eine Anspruchsberechtigung haben.
  • Auf solche Ausführungsformen des erfinderischen Gegenstands kann hierin einzeln und/oder kollektiv lediglich der Annehmlichkeit halber und ohne die Absicht, den Schutzumfang dieser Anmeldung auf eine einzelne Erfindung oder ein erfinderisches Konzept gewollt zu beschränken, durch den Ausdruck „Erfindung“ Bezug genommen werden, wenn tatsächlich mehr als eine offenbart ist. Somit sollte, obwohl hierin spezifische Ausführungsformen dargestellt und beschrieben worden sind, eingesehen werden, dass irgendeine Anordnung, für die kalkuliert ist, dass sie den gleichen Zweck erreicht, für die gezeigten spezifischen Ausführungsformen substituiert werden kann. Diese Offenbarung soll irgendwelche und alle Anpassungen oder Variationen von verschiedenen Ausführungsformen abdecken. Kombinationen der obigen Ausführungsformen und andere Ausführungsformen, die hierin nicht spezifisch beschrieben sind, werden Fachleuten auf dem Gebiet beim Durchsehen bzw. Überprüfen der obigen Beschreibung offensichtlich werden.
  • In diesem Dokument werden die Ausdrücke „ein“ oder „eine“ verwendet, wie es in Patentdokumenten üblich ist, um einen (eine) oder mehr als einen (eine) zu enthalten, unabhängig von irgendwelchen anderen Fällen oder Verwendungen von „wenigstens einer“ oder „einer oder mehrere“. In diesem Dokument wird der Ausdruck „oder“ verwendet, um sich auf ein nicht ausschließliches oder zu beziehen, so dass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ enthält, solange nichts anderes angegeben ist. In den beigefügten Ansprüchen werden die Ausdrücke „einschließlich“ und „in welchen“ als Äquivalente in einfachem Englisch der jeweiligen Ausdrücke „umfassend“ und „wobei“ verwendet. Ebenso sind in den folgenden Ansprüchen die Ausdrücke „enthaltend“ und „umfassend“ mit offenem Ende; das bedeutet, dass ein System, eine Vorrichtung, ein Artikel oder ein Verfahren, das, die oder der Elemente zusätzlich zu denjenigen enthält, die nach einem solchen Ausdruck in einem Anspruch aufgelistet sind, derart angesehen wird, dass es, sie oder er in den Schutzbereich dieses Anspruchs fällt.
  • Die folgenden nummerierten Beispiele sind Ausführungsformen:
  • Beispiel 1. Verfahren, das folgendes umfasst: Empfangen, durch einen oder mehrere Prozessoren eines lokalen Hintergrunddienstes, von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren; Updaten des aktuellen lokalen Bedarfs an Computerressourcen; Kommunizieren des upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst; Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; und Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit zugeordneten Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen.
  • Beispiel 2. Verfahren des Beispiels 1, das weiterhin folgendes umfasst: Konsolidieren der Abfrageanforderungen pro Quelle, um einen Pro-Quelle-Bedarf zu erzeugen; und Kommunizieren des Pro-Quelle-Bedarfs zum globalen Hintergrunddienst.
  • Beispiel 3. Verfahren von einem der Beispiele 1-2, das weiterhin folgendes umfasst: Überwachen von Bedingungen bei den Abfragekoordinatoren; und, basierend auf den überwachten Bedingungen, neues Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zu der Vielzahl von Abfragekoordinatoren.
  • Beispiel 4. Verfahren von einem der Beispiele 1-3, das weiterhin folgendes umfasst: Empfang von upgedateter Information in Bezug auf Abfrageanforderungen von der Vielzahl von Abfragekoordinatoren; Updaten des aktuellen lokalen Bedarfs an Computerressourcen; Kommunizieren des upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst; Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; und Zuordnen der upgedateten aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren.
  • Beispiel 5. Verfahren von einem der Beispiele 1-4, das weiterhin folgendes umfasst: in Reaktion darauf, dass die upgedatete aktuelle zulässige Anzahl von Computerressourcen weniger als die aktuelle zulässige Anzahl von Computerressourcen ist, Übertragen bzw. Senden einer Anweisung, eine zugeordnete Computerressource freizugeben, zu einem der Vielzahl von Abfragekoordinatoren; Empfangen einer Benachrichtigung von dem einen der Vielzahl von Abfragekoordinatoren einschließlich Identifikationsinformation über eine freigegebene Computerressource; und Kommunizieren der Identifikationsinformation über die freigegebene Computerressource zum globalen Hintergrunddienst.
  • Beispiel 6. Verfahren von einem der Beispiele 1-5, wobei eine Computerressource einen Verarbeitungskern einer Maschine umfasst.
  • Beispiel 7. Verfahren, das folgendes umfasst: Empfangen, durch einen oder mehrere Prozessoren eines globalen Hintergrunddienstes, eines aktuellen Bedarfs an Computerressourcen von einer Vielzahl von lokalen Hintergrunddiensten; Berechnung eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System, Anfordern eine Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontrolliert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; und Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten, basierend wenigstens teilweise auf einem fairen Vertei lungsalgorithm us.
  • Beispiel 8. Verfahren des Beispiels 7, das weiterhin folgendes umfasst: periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; und, basierend auf den upgedateten aktuellen Bedürfnissen, Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten.
  • Beispiel 9. Verfahren von einem der Beispiele 7-8, das weiterhin folgendes umfasst: Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; Empfangen einer Benachrichtigung vom ersten lokalen Hintergrunddienst bezüglich einer Freigabe von einer seiner zugeteilten Computerressourcen; und Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten.
  • Beispiel 10. Verfahren von einem der Beispiele 7-9, wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten basiert.
  • Beispiel 11. Verfahren von einem der Beispiele 7-10, wobei M kleiner als N ist.
  • Beispiel 12. Verfahren von einem der Beispiele 7-11, wobei der Fair-Distribution-Algorithmus bzw. faire Verteilungsalgorithmus einen Max-Min-Fairness-Algorithmus enthält.
  • Beispiel 13. Verfahren von einem der Beispiele 7-12, das weiterhin folgendes umfasst: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert.
  • Beispiel 14. System, das folgendes umfasst: 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 irgendeines der beispielhaften Verfahren 1 bis 13 implementieren.
  • Beispiel 15. Maschinenlesbare Speichervorrichtung, die Anweisungen verkörpert, die dann, wenn sie durch eine Maschine ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die irgendeines der beispielhaften Verfahren 1 bis 13 implementieren.
  • Bei einem weiteren Beispiel der vorliegenden Offenlegung sind dynamische und faire Zuordnungstechniken zum Zuteilen von Ressource auf einer Bedarfsbasis zur Verfügung gestellt. Eine Zuordnungssteuerung kann in wenigstens zwei Komponenten getrennt sein: eine lokale Komponente und eine globale Komponente. Jede Komponente kann einen aktiven Dialog miteinander führen; der Dialog kann zwei Aspekte enthalten: 1) einen Bedarf an Computerressourcen, und 2) eine zulässige Gesamtanzahl von Computerressourcen. Die globale Komponente kann Ressourcen aus einem Ressourcenpool zu verschiedenen lokalen Komponenten zuteilen und die lokalen Komponenten können wiederum ihre zugeteilten Ressourcen zu lokalen konkurrierenden Anforderungen zuordnen. Die Zuteilung kann auch auf verschiedenen Ebenen gedrosselt oder begrenzt werden.

Claims (27)

  1. Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen: Empfangen, durch einen oder mehrere Prozessoren eines lokalen Hintergrunddienstes, von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren; basierend auf der Information in Bezug auf Abfrageanforderungen, Erzeugen eines aktuellen lokalen Bedarfs an Computerressourcen; Kommunizieren des aktuellen lokalen Bedarfs an Computerressourcen zu einem globalen Hintergrunddienst über ein Netzwerk; Empfangen einer aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit zugeordneten Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen; Kommunizieren eines upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst; Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; Zuordnen der upgedateten aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren; und in Reaktion auf die upgedatete aktuelle zulässige Anzahl von Computerressourcen, die kleiner als die aktuelle zulässige Anzahl von Computerressourcen ist, Übertragen bzw. Senden einer Anweisung, eine zugeordnete Computerressource freizugeben, zu einer der Vielzahl von Abfragekoordinatoren.
  2. Computerprogramm nach Anspruch 1, wobei die Operationen weiterhin folgenden umfassen: Konsolidieren der Abfrageanforderungen pro Quelle, um einen Pro-Quelle-Bedarf zu erzeugen; und Kommunizieren des Pro-Quelle-Bedarfs zum globalen Hintergrunddienst.
  3. Computerprogramm nach Anspruch 1, wobei die Operationen weiterhin folgenden umfassen: Überwachen von Bedingungen bei den Abfragekoordinatoren; und basierend auf den überwachten Bedingungen, neues Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zu der Vielzahl der Abfragekoordinatoren.
  4. Computerprogramm nach Anspruch 1, wobei die Operationen weiterhin folgenden umfassen: Empfangen von upgedateter Information in Bezug auf Abfrageanforderungen von der Vielzahl von Abfragekoordinatoren; und Updaten des aktuellen lokalen Bedarfs an Computerressourcen.
  5. Computerprogramm nach Anspruch 4, wobei die Operationen weiterhin folgenden umfassen: Empfangen einer Benachrichtigung von dem einen der Vielzahl von Abfragekoordinatoren einschließlich Identifikationsinformation über eine freigegebenen Computerressource; und Kommunizieren der Identifikationsinformation über die freigegebene Computerressource zum globalen Hintergrunddienst.
  6. Computerprogramm nach Anspruch 1, wobei eine Computerressource einen Verarbeitungskern einer Maschine umfasst.
  7. Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen: Empfangen, durch einen oder mehrere Prozessoren eines globalen Hintergrunddienstes, von einem aktuellen Bedarf an Computerressourcen von einer Vielzahl von lokalen Hintergrunddiensten; Berechnen eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System Anfordern einer Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontroll iert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten basierend wenigstens teilweise auf einem Fair-Distribution-Algorithmus bzw. fairen Verteilungsalgorithmus; periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; basierend auf den upgedateten aktuellen Bedürfnissen, Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten; Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; und Empfangen einer Benachrichtigung vom ersten lokalen Hintergrunddienst in Bezug auf eine Freigabe von einer seiner zugeteilten Computerressourcen.
  8. Computerprogramm nach Anspruch 7, wobei die Operationen weiterhin folgendes umfassen: Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten.
  9. Computerprogramm nach Anspruch 7, wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten basiert.
  10. Computerprogramm nach Anspruch 7, wobei M kleiner als N ist.
  11. Computerprogramm nach Anspruch 7, wobei der Fair-Distribution-Algorithmus einen Max-Min-Fairness-Algorithmus enthält.
  12. Computerprogramm nach Anspruch 7, wobei die Operationen weiterhin folgendes umfassen: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert.
  13. Maschinenspeichermedium, das Anweisungen verkörpert, die dann, wenn sie von einer Maschine ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die folgendes umfassen: Empfangen, durch einen oder mehrere Prozessoren eines globalen Hintergrunddienstes, von einem aktuellen Bedarf an Computerressourcen von einer Vielzahl von lokalen Hintergrunddiensten; Berechnen eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System Anfordern einer Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontrolliert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten basierend wenigstens teilweise auf einem Fair-Distribution-Algorithmus bzw. fairen Verteilungsalgorithmus; periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; basierend auf den upgedateten aktuellen Bedürfnissen, Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten; Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; und Empfangen einer Benachrichtigung vom ersten lokalen Hintergrunddienst in Bezug auf eine Freigabe von einer seiner zugeteilten Computerressourcen.
  14. Maschinenspeichermedium nach Anspruch 13, das weiterhin folgendes umfasst: Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten.
  15. Maschinenspeichermedium nach Anspruch 13, wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten basiert.
  16. Maschinenspeichermedium nach Anspruch 13, wobei M kleiner als N ist.
  17. Maschinenspeichermedium nach Anspruch 13, wobei der Fair-Distribution-Algorithmus einen Max-Min-Fairness-Algorithmus enthält.
  18. Maschinenspeichermedium nach Anspruch 13, das weiterhin folgendes umfasst: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert.
  19. System, das folgendes umfasst: eine Vielzahl von lokalen Hintergrunddiensten, die jeweils folgendes umfassen: einen oder mehrere Prozessoren einer ersten Maschine; und einen ersten Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die erste Maschine Operationen durchführt, die folgendes umfassen: Empfangen von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren; basierend auf der Information in Bezug auf Abfrageanforderungen Erzeugen eines aktuellen lokalen Bedarfs an Computerressourcen; und einen globalen Hintergrunddienst, der folgendes umfasst: einen oder mehrere Prozessoren einer zweiten Maschine; und einen zweiten Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die zweite Maschine Operationen durchführt, die folgendes umfassen: Empfangen des aktuellen Bedarfs an Computerressourcen von jedem der Vielzahl von lokalen Hintergrunddiensten; Berechnen eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System, Anfordern einer Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontrolliert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; und Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten basierend wenigstens teilweise auf einem Fair-Distribution-Algorithmus; periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; basierend auf den upgedateten aktuellen Bedürfnissen Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten; Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; und Empfangen einer Benachrichtigung von dem ersten lokalen Hintergrunddienst in Bezug auf eine Freigabe von einer seiner zugeteilten Computerressourcen.
  20. System nach Anspruch 19, das weiterhin folgendes umfasst: eine Metadaten-Datenbank, wobei Kommunikationen zwischen der Vielzahl von lokalen Hintergrunddiensten und dem globalen Hintergrunddienst wenigstens teilweise über die Metadaten-Datenbank durchgeführt werden.
  21. System nach Anspruch 19, wobei die Operationen von jedem der Vielzahl von lokalen Hintergrunddiensten weiterhin folgendes umfassen: Zuordnen seiner zugeteilten Computerressourcen zu der Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit ihren jeweiligen Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen.
  22. System von System nach Anspruch 21, wobei die Operationen von jedem der Vielzahl von lokalen Hintergrunddiensten weiterhin folgendes umfassen: Überwachen von Bedingungen bei den Abfragekoordinatoren; und basierend auf den überwachten Bedingungen, neu Zuordnen der zugeteilten Computerressourcen zu der Vielzahl von Abfragekoordinatoren.
  23. System vom System nach Anspruch 19, wobei eine Computerressource ein Verarbeitungskern einer Maschine ist.
  24. System nach Anspruch 19, wobei die Operationen des globalen Hintergrunddienstes weiterhin folgendes umfassen: Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten.
  25. System nach Anspruch 19, wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten beruht.
  26. System nach Anspruch 19, wobei der Fair-Distribution-Algorithmus einen Max-Min-Fairness-Algorithmus enthält.
  27. System nach Anspruch 19, wobei die Operationen des globalen Hintergrunddienstes weiterhin folgendes umfassen: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert.
DE202021102315.5U 2021-04-29 2021-04-29 Flexibles Computing Active DE202021102315U1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE202021102315.5U DE202021102315U1 (de) 2021-04-29 2021-04-29 Flexibles Computing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE202021102315.5U DE202021102315U1 (de) 2021-04-29 2021-04-29 Flexibles Computing

Publications (1)

Publication Number Publication Date
DE202021102315U1 true DE202021102315U1 (de) 2021-08-20

Family

ID=77659431

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202021102315.5U Active DE202021102315U1 (de) 2021-04-29 2021-04-29 Flexibles Computing

Country Status (1)

Country Link
DE (1) DE202021102315U1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687373B2 (en) 2020-05-14 2023-06-27 Snowflake Inc. Flexible computing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687373B2 (en) 2020-05-14 2023-06-27 Snowflake Inc. Flexible computing

Similar Documents

Publication Publication Date Title
DE102019133923B4 (de) Anwendungsverwendung in einem behältermanagementsystem
DE60221019T2 (de) Verwaltung von serverbetriebsmitteln für hostanwendungen
DE202020005700U1 (de) Aufrufen externer Funktionen aus einem Datenlager
DE202015009861U1 (de) Systeme zur Bereitstellung von Ressourcen
DE202020005734U1 (de) Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen
DE202020005693U1 (de) Externe berechtigungsnachweisfreie Stufen für Datenbankintegrationen
DE202020005715U1 (de) Dynamische Maskierung geteilter Datenobjekte
DE202021004036U1 (de) Data Clean Room
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
US11513859B2 (en) Flexible computing
DE112011103498T5 (de) Verhaltensgestützte Client-Auswahl für unterschiedliche Behandlung
DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE112013004805T5 (de) Unterstützen eines koordinierten Zugriffs auf einen gemeinsam genutzten Speicher eines Dateisystems unter Verwendung einer automatischen Ausrichtung eines Protokolls für einen parallelen Dateizugriff und einer Metadatenverwaltung
DE202020005703U1 (de) Auf verteilten Metadaten basierendes Cluster-Computing
DE112021004290T5 (de) Gemeinsames nutzen von zwischengespeicherten klassendaten in einer containerisierten umgebung
DE112021005586T5 (de) Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene
DE202021004295U1 (de) Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem
DE202021004340U1 (de) Beschränkte Sichten zum Steuern des Zugriffs auf Informationen in einem Datenbanksystem
DE202021004328U1 (de) Mit Daten-Cloud verbundene Anwendungen
DE202021102315U1 (de) Flexibles Computing
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben
DE202023103214U1 (de) Web-Anwendung als Datenbankobjekt erster Klasse
DE202023103216U1 (de) Datenplattform mit vereinheitlichten Privilegien
DE202023102700U1 (de) Datenaufnahmereplizierung und Notfallwiederherstellung

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: SNOWFLAKE INC., BOZEMAN, US

Free format text: FORMER OWNER: SNOWFLAKE INC., SAN MATEO, CA, US

R150 Utility model maintained after payment of first maintenance fee after three years