DE202017007217U1 - Multicluster-Lager - Google Patents

Multicluster-Lager Download PDF

Info

Publication number
DE202017007217U1
DE202017007217U1 DE202017007217.3U DE202017007217U DE202017007217U1 DE 202017007217 U1 DE202017007217 U1 DE 202017007217U1 DE 202017007217 U DE202017007217 U DE 202017007217U DE 202017007217 U1 DE202017007217 U1 DE 202017007217U1
Authority
DE
Germany
Prior art keywords
computer
clusters
computer clusters
requests
workload
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
DE202017007217.3U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Snowflake Inc filed Critical Snowflake Inc
Publication of DE202017007217U1 publication Critical patent/DE202017007217U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5019Ensuring fulfilment of SLA
    • H04L41/5025Ensuring fulfilment of SLA by proactively reacting to service quality change, e.g. by reconfiguration after service quality degradation or upgrade
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Warehouses Or Storage Devices (AREA)

Abstract

System, umfassend:
Mittel zum Zuteilen einer Vielzahl von Computerclustern als Teil einer virtuellen universellen Datenbank bzw. eines virtuellen Lagers zum Zugreifen auf Anfragen und Durchführen von ihnen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen;
Mittel zum Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern, wobei eine Vielzahl von Anfragen zu jedem der Vielzahl von Computerclustern des virtuellen Lagers bereitgestellt wird; und
Mittel zum dynamischen Hinzufügen von Computerclustern zu und Entfernen von Computerclustern von dem virtuellen Lager, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern.

Description

  • Querverweis auf zugehörige Anmeldungen
  • Diese Anmeldung beansprucht den Vorteil unter 35 U.S.C. § 119(e) der provisorischen US-Anmeldung Nr. 62/328,943 , eingereicht am 28. April 2016, mit dem Titel „Multi-Cluster Warehouses“, welche hierdurch in ihrer Gesamtheit durch Bezugnahme enthalten ist.
  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft Systeme, Verfahren und Vorrichtungen für eine Multicluster-Lager.
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Hintergrund
  • Datenbanken werden weithin zur Datenspeicherung und zum Datenzugriff bei Computeranwendungen verwendet. Datenbanken können eine oder mehrere Tabellen enthalten, die Daten enthalten oder darauf Bezug nehmen, die unter Verwendung von Anfragen gelesen, modifiziert oder gelöscht werden können. Datenbanken können kleine oder extrem große Sätze bzw. Gruppen von Daten innerhalb von einer oder mehreren Tabellen speichern. Auf diese Daten kann durch verschiedene Anwender in einer Organisation zugegriffen werden oder sie können sogar dazu verwendet werden, öffentliche Anwender zu bedienen, wie beispielsweise über eine Webseite oder eine Anwenderprogrammschnittstelle (API). Sowohl Computer- als auch Speicherressourcen sowie ihre zugrundeliegende Architektur können eine große Rolle beim Erreichen einer erwünschten Datenbankleistungsfähigkeit spielen.
  • Figurenliste
  • Nicht beschränkende und nicht erschöpfende Ausführungsformen der vorliegenden Offenbarung werden unter Bezugnahme auf die folgenden Figuren beschrieben, wobei sich gleiche Bezugszeichen auf gleiche Teile in allen verschiedenen Figuren beziehen, solange nichts anderes spezifiziert ist.
    • 1 ist ein Blockdiagramm, das eine Verarbeitungsplattform gemäß einer beispielhaften Ausführungsform der hierin beschriebenen Systeme und Verfahren darstellt.
    • 2 ist ein Blockdiagramm, das Komponenten eines Ressourcenmanagers gemäß einer Ausführungsform darstellt.
    • 3 ist ein Blockdiagramm, das eine Planung bei einem Multicluster-Lager gemäß einer Ausführungsform darstellt.
    • 4 ist ein Blockdiagramm, das eine Vielzahl von Lagern bzw. universellen Datenbanken, die auf einer einzigen Ausführungsplattform bereitgestellt werden können, gemäß einer Ausführungsform darstellt.
    • 5 ist ein Blockdiagramm, das ein System mit mehreren verteilten virtuellen Lagern gemäß einer Ausführungsform darstellt.
    • 6 ist ein schematisches Ablaufdiagramm, das ein Verfahren für ein Multicluster-Lager gemäß einer Ausführungsform darstellt.
    • 7 ist ein schematisches Ablaufdiagramm, das ein Verfahren zum dynamischen Hinzufügen von Computerclustern in einem Multicluster-Lager gemäß einer Ausführungsform darstellt.
    • 8 ist ein schematisches Ablaufdiagramm, das ein Verfahren zum dynamischen Entfernen von Computerclustern in einem Multicluster-Lager gemäß einer Ausführungsform darstellt.
    • 9 ist ein schematisches Ablaufdiagramm, das ein Verfahren für ein Multicluster-Lager gemäß einer Ausführungsform darstellt.
    • 10 ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung gemäß wenigstens einer Ausführungsform von hierin offenbarten Prozessen und Systemen darstellt.
  • Detaillierte Beschreibung bevorzugter Ausführungsformen
  • Die vorliegende Offenbarung ist auf ein System, Verfahren und Vorrichtungen zum Bereitstellen und Managen von Multicluster-Lagern gerichtet. Ein Lager bzw. eine universelle Datenbank besteht aus einigen Servern, die verbunden sind und beim Handhaben von analytischen Anfragen zusammenarbeiten. In einigen Lagern sind Computer- und Speicherressourcen verbunden und zusammen zugeteilt. Bei wenigstens einer hierin offenbarten Ausführungsform sind Computerressourcen unabhängig zugeteilt und skalierbar separat von Speicherressourcen. In einigen Fällen enthält ein Lager ein oder mehrere Cluster und/oder ein Cluster von einem oder mehreren Serverknoten, die zusammenarbeiten können, um Dienste bereitzustellen. Die Anmelder haben Architekturen, Verfahren, Algorithmen und Systeme für Multi-cluster-Lager entwickelt und präsentieren sie hierin.
  • Gemäß einer Ausführungsform enthält ein Verfahren für ein Multicluster-Lager ein Zuteilen einer Vielzahl von Computerclustern als Teil eines virtuellen Lagers. Die Computercluster können verwendet werden, um auf Anfragen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen zuzugreifen und sie durchzuführen. Das Verfahren enthält ein Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern. Zum Beispiel kann jedes der Vielzahl von Computerclustern des virtuellen Lagers eine Vielzahl von Anfragen empfangen, so dass die Computerlast bzw. Rechenlast über die unterschiedlichen Cluster ausgebreitet wird. Das Verfahren kann auch ein dynamisches Hinzufügen von Computerclustern zu und ein Entfernen von Computerclustern von dem virtuellen Lager, wie es nötig ist, basierend auf eine Arbeitslast der Vielzahl von Computerclustern enthalten.
  • Ein Multicluster-Lager kann signifikante Verbesserungen bezüglich einer Gleichzeitigkeit sowie einer Verfügbarkeit bereitstellen. Zum Beispiel enthält ein Lager allgemein nur ein einziges Cluster, dessen Größe die Größe des Lagers ist. Zum Beispiel kann ein großes Lager ein einziges Cluster aus acht Serverknoten enthalten. Ein Multicluster-Lager kann eine Erzeugung eines einzelnen Lagers mit mehreren Clustern zulassen. Jedes Cluster innerhalb des Lagers kann acht Serverknoten enthalten. Somit kann das Multicluster-Lager das durch ein einziges Multicluster-Lager derselben Größe bereitgestellte Maß an Gleichzeitigkeit dreifach unterstützen. Diese Architektur kann ein hohes Maß an Gleichzeitigkeit gegenüber einem einzelnen Lager zulassen, während auch ein Skalieren von Computerressourcen zugelassen wird, wie es hierin im Weiteren beschrieben werden wird.
  • Eine verbesserte Verfügbarkeit kann auch in einem Multicluster-Lager durch Anordnen unterschiedlicher Cluster in unterschiedlichen Verfügbarkeitszonen erreicht werden. Zum Beispiel werden Multicluster-Lager eine verbesserte Fehlerresilienz bzw. Ausfallsicherheit bereitstellen, da jedes Lagercluster in einer anderen Verfügbarkeitszone eines Cloud-Providers (wie beispielsweise innerhalb unterschiedlicher Verfügbarkeitszonen von Amazon ®) zugeteilt sein würde. Somit würde ein Multicluster-Lager im Vergleich mit einen Einzelcluster-Lager sehr gut verfügbar sein. Weiterhin können Anfragen zu einem optimalen Cluster geführt werden, wo relevante Datensegmente bereits in einem Arbeitsspeicher oder einem lokalen plattenbasierten Festspeicher (z.B. in einem Cache) sind. Zum Beispiel kann ein Verfahren für ein Multicluster-Lager ein Führen von Anfragen basierend auf einer Session enthalten, von welcher die Anfrage entstand. Durch Liefern von Anfragen von einer selben Session zu einem selben Cluster wird eine Wahrscheinlichkeit erhöht, dass die für eine Anfrage nötigen Daten bereits in einem (Arbeits-)Speicher sind, und dies kann eine Notwendigkeit eliminieren, diese Daten von einer Cloud-Speicherressource wiederzugewinnen bzw. abzurufen. Mit verbesserter Gleichzeitigkeit und Verfügbarkeit können Anwender verbesserte Reaktionszeiten und eine Verfügbarkeit erfahren, die schwierig oder unmöglich bei anderen herkömmlichen Einzelcluster-Datenbankarchitekturen zu erreichen sein würden.
  • Zusätzlich zu verbesserter Verfügbarkeit und Gleichzeitigkeit ist eine signifikante Variation beim automatischen Skalieren von Computerressourcen möglich. Zum Beispiel stellen wenigstens einige Ausführungsformen eine separate Zuteilung von Computerressourcen vom Cloud-Speicher zur Verfügung. Somit kann ein Multicluster-Lager bezüglich der Anzahl von Computerclustern nach oben oder nach unten skaliert werden, um eine weite Spanne in Bezug auf eine Arbeitslast während noch eines Anfragens gegenüber den Daten, die sich nicht geändert haben oder sich sehr langsam ändern, im Vergleich mit der Anfrage-Arbeitslast unterzubringen.
  • Ein automatische Wiederaufnehmen oder Starten eines neuen oder vorübergehend ausgesetzten Clusters kann durchgeführt werden, wenn das Lager die Arbeitslast nicht handhaben kann und Anfragen in eine Wartschlange bringen müsste (oder Anfragen für länger als eine akzeptierte Länge an Zeit in eine Warteschlange bringen müsste). Anfragen können in eine Wartschlange gelangen, weil der gesamte Ressourcenverbrauch auf dem Cluster eine Schwelle überstiegen hat. Zum Beispiel kann der Ressourcenverbrauch Parameter für eine (Arbeits-)Speicherlast sowie eine Computer- bzw. Rechen- oder Verarbeitungslast enthalten kann. Bei einer Ausführungsform steuert ein Parameter, für wie lang eine Anfrage in eine Warteschlange gebracht sein kann, bevor ein neues Cluster wiederaufgenommen oder zur Verfügung gestellt werden sollte. So bald wie das neue Cluster wiederaufgenommen ist, kann geplant werden, dass Anfragen auf dem neuen Cluster ausführen. Dies gilt für neue Anfragen sowie für bereits in eine Warteschlange gebrachte Anfragen.
  • Bei einer Ausführungsform kann ein Verfahren für ein Multicluster-Lager ein dynamisches Hinzufügen von Computerclustern zum virtuellen Lager basierend auf der Arbeitslast enthalten. Das Verfahren kann ein Bestimmen enthalten, ob eine Anfrage während eines Erfüllens einer Leistungskennzahl für die Anfrage verarbeitet werden kann. Wenn die Anfrage in Kombination mit einer aktuellen Arbeitslast nicht zulässt, dass ein oder mehrere aktuell zugeteilte Computercluster die Leistungskennzahl erfüllen, kann das Verfahren ein Auslösen einer Inbetriebnahme eines neuen Computerclusters enthalten. Bei einigen Ausführungsformen kann ein neues Cluster schnell genug zugeteilt werden, um sicherzustellen, dass nicht eine einzige Anfrage weniger als die erforderliche Leistungskennzahl erfährt.
  • Ein automatisches kurzzeitiges Unterbrechen oder eine Außerbetriebnahme eines aktiven Clusters eines Multicluster-Lagers kann durchgeführt werden, wenn der Ressourcenverbrauch der Arbeitslast niedrig genug ist, dass ein kurzzeitiges Unterbrechen dieses Clusters nicht veranlasst haben würde, dass irgendeine in den vergangenen N Minuten ausgeführte Anfrage in eine Warteschlange gebracht wird (oder länger als eine Schwellenzeit in eine Warteschlange gebracht wird). Das Bringen in eine Warteschlange einer Anfrage oder eine Zeit für ein Bringen in eine Warteschlange für eine Anfrage ist nur ein Beispiel einer Leistungskennzahl, die verwendet werden kann. Bei einer Ausführungsform kann ein Verfahren für ein Multicluster-Lager ein Entfernen von Computerclustern basierend auf der Arbeitslast enthalten. Das Verfahren kann ein Bestimmen enthalten, ob eine aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, während eine Leistungskennzahl erfüllt wird. Das Verfahren kann eine Außerbetriebnahme (oder ein kurzzeitiges Unterbrechen) wenigstens eines Computerclusters der Vielzahl von Computercluster in Reaktion auf ein Bestimmen enthalten, dass die Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist.
  • Gemäß einer Ausführungsform kann ein automatisches Bereitstellen oder eine Entfernung von Clustern sowie ein Führen von Anfragen zu unterschiedlichen Clustern innerhalb eines Lagers als Teil eines mächtigen und flexiblen Multicluster-Lagers als ein Dienst verwendet werden.
  • Ein detaillierte Beschreibung von Systemen und Verfahren gemäß Ausführungsformen der vorliegenden Offenbarung wird nachstehend zur Verfügung gestellt. Während einige Ausführungsformen beschrieben werden, sollte es verstanden werden, dass diese Offenbarung nicht auf irgendeine Ausführungsform beschränkt ist, sondern stattdessen zahlreiche Alternativen, Modifikationen und Äquivalente umfasst. Zusätzlich können, während zahlreiche spezifische Details in der folgenden Beschreibung dargelegt sind, um ein vollständiges Verstehen der hierin offenbarten Ausführungsformen zur Verfügung zu stellen, einige Ausführungsformen ohne einige oder alle dieser Details ausgeführt werden. Darüber hinaus ist der Klarheit halber bestimmtes technisches Material, das im zugehörigen Stand der Technik bekannt ist, nicht detailliert beschrieben, um ein unnötiges Verdunkeln der Offenbarung zu vermeiden.
  • Wendet man sich den Figuren zu, ist 1 ein Blockdiagramm, das eine Verarbeitungsplattform 100 zum Bereitstellen und/oder Managen eines Multicluster-Lagers gemäß einer Ausführungsform darstellt. Die Verarbeitungsplattform 100 enthält einen Ressourcenmanager 102, der durch mehrere Anwender 104, 106 und 108 zugreifbar ist. Auf den Ressourcenmanager 102 kann hierin auch als ein Datenbankservicemanager Bezug genommen sein. Bei einigen Implementierungen kann der Ressourcenmanager 102 irgendeine Anzahl von Anwendern unterstützen, die einen Zugriff auf Daten oder Dienste der Verarbeitungsplattform 100 wünschen. Die Anwender 104-108 können zum Beispiel Endanwender enthalten, die Datenspeicherungs- und -wiedergewinnungsanfragen zur Verfügung stellen, Systemadministratoren, die die hierin beschriebenen Systeme und Verfahren managen, Softwareanwendungen, die mit einer Datenbank interagieren, und andere Komponenten/Vorrichtungen, die mit dem Ressourcenmanager 102 interagieren.
  • Der Ressourcenmanager 102 kann verschiedene Dienste und Funktionen zur Verfügung stellen, die den Betrieb der Systeme und Komponenten innerhalb der Verarbeitungsplattform 100 unterstützen. Der Ressourcenmanager 102 hat einen Zugriff auf gespeicherte Metadaten 110, die mit den über die gesamte Datenverarbeitungsplattform 100 hinweg gespeicherten Daten assoziiert sind. Der Ressourcenmanager 102 kann die Metadaten 110 zum Optimieren von Anwenderanfragen verwenden. Bei einigen Ausführungsformen enthalten die Metadaten 110 eine Zusammenfassung von Daten, die in entfernten Datenspeichersystemen gespeichert sind, sowie Daten, die von einem lokalen Cache (z.B. einem Cache innerhalb von einem oder mehreren der Cluster der Ausführungsplattform 112) verfügbar sind. Zusätzlich können die Metadaten 110 Information in Bezug darauf enthalten, wie Daten in den entfernten Datenspeichersystemen und den lokalen Caches organisiert sind. Die Metadaten 110 lassen zu, dass Systeme und Dienste bestimmen, ob ein Datenstück verarbeitet werden muss, ohne die tatsächlichen Daten von einer Speichervorrichtung zu laden oder auf diese zuzugreifen.
  • Als Teil der Datenverarbeitungsplattform 100 können die Metadaten 110 gesammelt werden, wenn Änderungen an den Daten durchgeführt werden, unter Verwendung einer Datenbearbeitungssprache (DML), welche Änderungen anhand von irgendeiner DML-Anweisung durchgeführt werden können. Beispiele eines Bearbeitens bzw. Manipulierens von Daten können ein Auswählen, ein Updaten, ein Ändern, ein Verknüpfen und ein Einfügen von Daten in Tabellen enthalten, sind aber nicht darauf beschränkt. Als Teil der Verarbeitungsplattform 100 können Dateien erzeugt werden und können Die Metadaten 110 auf einer pro-Datei- und eine pro-Spalte-Basis gesammelt werden, wonach die Metadaten 110 in einem Metadatenspeicher gesichert werden können. Diese Sammlung von Metadaten 110 kann während einer Datenaufnahme durchgeführt werden oder die Sammlung von Metadaten 110 kann als ein separater Prozess durchgeführt werden, nachdem die Daten aufgenommen oder geladen sind. Bei einer Implementierung können die Metadaten 110 eine Anzahl von eindeutigen Werten; eine Anzahl von Null-Werten; und einen minimalen Wert und einen maximalen Wert für jede Datei enthalten. Bei einer Implementierung können die Metadaten weiterhin Kettenlängeninformation und Bereiche von Zeichen in Ketten enthalten.
  • Der Ressourcenmanager 102 ist weiterhin in Kommunikation mit der Ausführungsplattform 112, die mehrere Computerressourcen zur Verfügung stellt, die verschiedene Datenspeicherungs- und Datenwiedergewinnungsoperationen ausführen, wie es nachstehend noch ausführlicher diskutiert wird. Die Ausführungsplattform 112 kann ein oder mehrere Computercluster enthalten, die dynamisch zugeteilt oder kurzzeitig unterbrochen werden können für spezifische Lager, basierend auf der Anfrage-Arbeitslast, die durch die Anwender 104-108 zu einem spezifischen Lager zur Verfügung gestellt wird. Die Ausführungsplattform 112 ist in Kommunikation mit einer oder mehreren Datenspeichervorrichtungen 116, 118 und 120, die Teil einer Speicherplattform 114 sind. Obwohl in 1 drei Datenspeichervorrichtungen 116, 118 und 120 gezeigt sind, kann die Ausführungsplattform 112 mit irgendeiner Anzahl von Datenspeichervorrichtungen kommunizieren. Bei einigen Ausführungsformen sind die Datenspeichervorrichtungen 116, 118 und 120 cloudbasierte Speichervorrichtungen, die an einem oder mehreren geographischen Standorten angeordnet sind. Beispielsweise können die Datenspeichervorrichtungen 116, 118 und 120 Teil einer Infrastruktur einer öffentlichen Cloud (Public Cloud) oder einer Infrastruktur einer privaten Cloud (Private Cloud) sein. Die Datenspeichervorrichtungen 116, 118 und 120 können Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speichercluster oder irgendeine andere Datenspeichertechnologie sein. Zusätzlich kann die Speicherplattform 114 verteilte Dateiensysteme (wie beispielsweise verteilte Hadoop-Datensysteme (HDFSS)), Objektspeichersysteme und ähnliches enthalten.
  • Bei einigen Ausführungsformen sind die Kommunikationsverbindungen zwischen dem Ressourcenmanager 102 und den Anwendern 104-108, den Metadaten 110 und der Ausführungsplattform 112 über ein oder mehrere Datenkommunikationsnetzwerke implementiert und können verschiedenen Aufgaben zugeordnet sein, so dass Anwenderaufforderungen optimiert werden können. Gleichermaßen sind die Kommunikationsverbindungen zwischen der Ausführungsplattform 112 und den Datenspeichervorrichtungen 116-120 in der Speicherplattform 114 über ein oder mehrere Datenkommunikationsnetzwerke implementiert. Diese Datenkommunikationsnetzwerke können irgendein Kommunikationsprotokoll und irgendeinen Typ von Kommunikationsmedium verwenden. Bei einigen Ausführungsformen sind die Datenkommunikationsnetzwerke eine Kombination aus zwei oder mehr Datenkommunikationsnetzwerken (oder Unternetzwerken), die miteinander gekoppelt sind. Bei alternativen Ausführungsformen sind diese Kommunikationsverbindungen unter Verwendung von irgendeinem Typ von Kommunikationsmedium und irgendeinem Kommunikationsprotokoll implementiert.
  • Wie es in 1 gezeigt ist, sind die Datenspeichervorrichtungen 116, 118 und 120 von den Computerressourcen entkoppelt, die mit der Ausführungsplattform 112 assoziiert sind. Diese Architektur unterstützt dynamische Änderungen an der Datenverarbeitungsplattform 100 basierend auf den sich ändernden Datenspeicherungs-/-wiedergewinnungsnotwendigkeiten, Computer- bzw. Berechnungsnotwendigkeiten sowie den Änderungsnotwendigkeiten der Anwender und Systeme, die auf die Datenverarbeitungsplattform 100 zugreifen. Die Unterstützung von dynamischen Änderungen lässt zu, dass sich die Datenverarbeitungsplattform 100 in Reaktion auf sich ändernde Anforderungen auf den Systemen und Komponenten innerhalb der Datenverarbeitungsplattform 100 schnell skaliert. Die Entkopplung der Computerressourcen von den Datenspeichervorrichtungen unterstützt die Speicherung großer Mengen von Daten, ohne eine entsprechende große Menge von Computerressourcen zu erfordern. Gleichermaßen unterstützt diese Entkopplung von Ressourcen eine signifikante Erhöhung bezüglich der zu einer bestimmten Zeit verwendeten Computerressourcen, ohne eine entsprechende Erhöhung bezüglich der verfügbaren Datenspeicherressourcen zu erfordern.
  • Der Ressourcenmanager 102, die Metadaten 110, die Ausführungsplattform 112 und die Speicherplattform 114 sind in 1 als individuelle Komponenten gezeigt. Jedoch kann jedes von dem Ressourcenmanager 102, den Metadaten 110, der Ausführungsplattform 112 und der Speicherplattform 114 als ein verteiltes System (z.B. über mehrere Systeme/Plattformen an mehreren geographischen Standorten verteilt) implementiert sein oder kann in ein oder mehrere Systeme kombiniert sein. Zusätzlich kann jedes von dem Ressourcenmanager 102, den Metadaten 110, der Ausführungsplattform 112 und der Speicherplattform 114 in Abhängigkeit von Änderungen bei den von den Anwendern 104-108 empfangenen Aufforderungen und den sich ändernden Notwendigkeiten der Datenverarbeitungsplattform 100 (unabhängig voneinander) vergrößert oder verkleinert werden. Somit ist die Datenverarbeitungsplattform 100 bei den beschriebenen Ausführungsformen dynamisch und unterstützt reguläre bzw. ständige Änderungen, um die aktuellen bzw. tatsächlichen bzw. gegenwärtigen Datenverarbeitungsnotwendigkeiten zu erfüllen.
  • Die Ausführungsplattform 112 enthält eine Vielzahl von Computerclustern 122, 124, 126, die eine Computer- bzw. Rechen- oder Verarbeitungslast der Verarbeitungsplattform 100 gemeinsam nutzen bzw. teilen können. Bei einer Ausführungsform können Kunden die Anzahl von aktiven (d.h. laufenden) Clustern durch Spezifizieren eines Bereichs (z.B. Spezifizieren von Werten, wie beispielsweise minClusterZahl und maxClusterZahl) steuern, wenn ein Lager erzeugt wird, oder seine Konfiguration ändern (sowohl während das Lager in Betrieb ist bzw. läuft als auch während es kurzzeitig unterbrochen ist). Kunden können eine exakte Anzahl von aktiven Clustern spezifizieren durch Spezifizieren, wie zum Beispiel Gleichmachen der minimalen Clusterzahl mit der maximalen Clusterzahl, so dass das Lager diese exakte Anzahl haben wird, die läuft, wann immer es läuft bzw. in Betrieb ist). Wenn ein Anwender eine maximale Clusterzahl spezifiziert, die größer als eine minimale Clusterzahl ist, kann der Ressourcenmanager 102 die Anzahl von aktuell aktiven Clustern basierend auf der Arbeitslast automatisch managen, um die Durchsatzkriterien zu erfüllen und um kosteneffektiv zu sein. Somit ist, wann immer das Lager läuft, wenigstens einem minimale Clusterzahl (minClusterZahl) von Clustern aktiv und ist höchstens eine maximale Clusterzahl (maxClusterZahl) von Clustern aktiv. Der Ressourcenmanager 102 kann entscheiden, wie viele Cluster erforderlich sind, um die aktuelle Arbeitslast zu handhaben, wobei die spezifizierten Leistungskriterien in Bezug auf Speicherlast und Gleichzeitigkeitsmaß vorgegeben sind.
  • 2 stellt ein Blockdiagramm dar, das Komponenten des Ressourcenmanagers 102 gemäß einer Ausführungsform darstellt. Der Ressourcenmanager 102 enthält einen Zugriffsmanager 202 und einen Schlüsselmanager 204, die mit einer Datenspeichervorrichtung 206 gekoppelt sind. Der Zugriffsmanager 202 handhabt Authentifizierungs- und Autorisierungsaufgaben für die hierin beschriebenen Systeme. Der Schlüsselmanager 204 managt ein Speichern und eine Authentifizierung von Schlüsseln, die während Authentifizierungs- und Autorisierungsaufgaben verwendet werden. Ein Aufforderungsverarbeitungsdienst 208 managt empfangene Datenspeicheraufforderungen und Datenwiedergewinnungsaufforderungen. Ein Managementkonsolendienst 210 unterstützt einen Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager.
  • Der Ressourcenmanager 102 enthält auch einen SQL-Compiler 212, einen SQL-Optimierer 214 und einen SQL-Ausführer 210. Der SQL-Compiler 212 parst SQL-Anfragen und erzeugt den Ausführungscode für die Anfragen. Der SQL-Optimierer 214 bestimmt das beste Verfahren zum Ausführen von Anfragen basierend auf den Daten, die verarbeitet werden müssen. Der SQL-Ausführer 216 führt den Anfragecode für durch den Ressourcenmanager 102 empfangene Anfragen aus. Ein Anfrageplaner und -koordinator 218 sendet empfangene Anfragen zu den geeigneten Diensten oder Systemen zur Kompilation, Optimierung und Abfertigung zu der Ausführungsplattform 112. Ein Manager für ein virtuelles Lager 220 managt die Operation bzw. den Betrieb von mehreren virtuellen Lagern, einschließlich Multicluster-Lagern, die in der Ausführungsplattform 112 implementiert sind.
  • Zusätzlich enthält der Ressourcenmanager 102 einen Konfigurations- und Metadatenmanager 222, der die Information in Bezug auf die Daten managt, die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches gespeichert sind. Ein Überwachungs- und Arbeitslastanalysator 224 überblickt die durch den Ressourcenmanager 102 durchgeführten Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitslast) quer über die virtuellen Lager und Ausführungsknoten in der Ausführungsplattform 112. Der Konfigurations- und Metadatenmanager 222 und der Überwachungs- und Arbeitslastanalysator 224 sind mit einer Datenspeichervorrichtung 226 gekoppelt.
  • Der Ressourcenmanager 102 enthält auch ein Transaktionsmanagement- und Zugriffssteuermodul 228, das die verschiedenen Aufgaben und andere mit der Verarbeitung von Datenspeicheraufforderungen und Datenzugriffsaufforderungen assoziierte Aktivitäten managt. Beispielsweise stellt das Transaktionsmanagement- und Zugriffssteuermodul 228 einen konsistenten und synchronisierten Zugriff auf Daten durch mehrere Anwender oder Systeme zur Verfügung. Da mehrere Anwender/Systeme auf dieselben Daten gleichzeitig zugreifen können, müssen Änderungen an den Daten synchronisiert werden, um sicherzustellen, dass jeder Anwender/jedes System mit der aktuellen Version der Daten arbeitet. Das Transaktionsmanagement- und Zugriffssteuermodul 228 stellt eine Steuerung von verschiedenen Datenverarbeitungsaktivitäten bei einer einzelnen zentralisierten Stelle im Ressourcenmanager 102 zur Verfügung.
  • Unter weiterer Bezugnahme auf den Manager für ein virtuelles Lager 220 wird eine automatische Wiederaufnahme von Clustern und ein automatisches kurzzeitiges Unterbrechen von Clustern in einem Multicluster-Lager diskutiert werden. Bei einer Ausführungsform wird der Manager für ein virtuelles Lager 220 eine automatische Wiederaufnahme von Clustern durchführen. Wenn ein Multicluster-Lager (z.B. innerhalb der Ausführungsplattform 112) für eine automatische Wiederaufnahme markiert ist, wird das erste Cluster für das Lager automatisch wiederaufgenommen, wenn eine SQL-Anweisung geplant ist und alle Cluster im Lager in einem kurzzeitig unterbrochenen Zustand sind. Aber die Entscheidung, die übrigen Cluster automatisch wiederaufzunehmen, wird basierend auf der Arbeitslast durchgeführt werden. Dies nimmt an, dass aktiveClusterZahl < maxClusterZahl gilt, das heißt, dass wir Cluster haben die aktiviert/wiederaufgenommen werden können, aber aktuell kurzzeitig unterbrochen sind.
  • Überlegungen in Bezug auf die Arbeitslast enthalten wenigstens zwei Dinge. Als erstes können Überlegungen in Bezug auf die Arbeitslast eine (Arbeits-)Speichernutzung berücksichtigen. Wenn Anfragen geplant sind und in eine Warteschlange gebracht sind, weil alle Cluster bei ihrer maximalen Speicherkapazität sind, wird der Manager für ein virtuelles Lager 220 ein oder mehrere Cluster wiederaufnehmen, so das eine Warteschlangenbildung vermieden oder verkürzt werden kann. Eine Warteschlangenbildung kann noch auftreten, wenn neue Cluster wiederaufgenommen werden müssen, da ein Wiederaufnehmen eines Clusters ein bisschen Zeit, zum Beispiel in Minuten, dauern wird. Jedoch kann der Manager für ein virtuelles Lager 220 auch sicherstellen, dass es einen freien Pool von einigen freien Servern gibt, so dass Anfragen während des Startens bzw. der Inbetriebnahme des neuen Clusters in den Pool gelegt werden können. Ebenso kann der Manager für ein virtuelles Lager 220 eine spezifische Zeitperiode warten, um zu sehen, ob eine Schlangenbildung sich selbst auflösen wird, bevor er entscheidet, ein neues Cluster zur Verfügung zu stellen.
  • Als zweites können Überlegungen in Bezug auf die Arbeitslast ein Ausmaß an Gleichzeitigkeit oder die Verarbeitungs-/Computerlast auf einem Cluster berücksichtigen. Wenn das Ausmaß an Gleichzeitigkeit auf allen aktiven Clustern hoch ist, dann kann der Manager für ein virtuelles Lager 220 selbst dann ein weiteres Cluster in Betrieb nehmen, wenn es genügend Speicher gibt, um die Anfrage zu planen. Hier kann das Ausmaß an Gleichzeitigkeit für jedes aktive Cluster basierend auf dem Ausmaß an Parallelität (DOP) berechnet werden. Zum Beispiel kann dies als die Summe von DOP für alle laufenden Anfragen geteilt durch das Produkt aus einem max DOP (MAX_DOP) und der Anzahl von laufenden Anfragen berechnet werden. Dies kann ein Teilwert oder ein nicht ganzzahliger Wert sein, da einige leichtgewichtige Anfragen mit einem kleineren DOP als dem maximalen laufen. Bei einer Ausführungsform kann ein Lagerparameter spezifiziert werden, um das Ausmaß an Gleichzeitigkeit zu steuern. Zum Beispiel kann das Ausmaß an Gleichzeitigkeit (Gleichzeitigkeit_Maß_Ziel) durch Vorgabe auf den Wert 8 eingestellt werden. Dieser Parameter kann einem Kunden freigelegt werden, da sein Wert wirklich davon abhängt, wie viel Geld der Kunde für dieses Problem ausgeben möchte und für wie viel Verschlechterung sie in Bezug auf eine Anfrageleistungsfähigkeit willentlich bereit sind, wenn ein Lager gemeinsam genutzt bzw. geteilt wird (im Vergleich mit einer alleinstehenden Anfrageleistungsfähigkeit).
  • Bei einer Ausführungsform wird der Manager für ein virtuelles Lager 220 ein automatisches kurzzeitiges Unterbrechen von Clustern durchführen. Bei einer Ausführungsform kann das vollständige Lager nach einer spezifischen Anzahl von Sekunden (z.B. basierend auf einem auto_unterbrechen Parameter) einer Inaktivität abschalten bzw. herunterfahren. Orthogonal bzw. im Gegensatz dazu können dann, wenn das Lager mehr als ein aktives Cluster hat, ein oder mehrere Cluster kurzzeitig unterbrochen werden, wenn das Lager unter seiner Kapazität für mehr als eine spezifizierte Menge an Zeit, z.B. in Minuten, in Betrieb war. Zum Beispiel soll ein Lager mit drei aktiven Clustern betrachtet werden. Wenn das Lager für mehr als eine spezifizierte Zeitperiode unterbelastet ist, d.h. dazu fähig sein würde, alle in der Maschine mit spezifizierter Zeitperiode ausgegebenen SQL-Anweisungen zur aktuellen Zeit ohne irgendeine Warteschlangenbildung oder ohne über das maximale Ausmaß an Gleichzeitigkeit hinausgehend auszuführen, dann würden ein oder mehrere Cluster kurzzeitig unterbrochen werden. Es ist zu beachten, dass ein Lager, während es unterbelastet ist, noch alle aktuell aktiven Cluster wirksam einsetzen wird. Ein Cluster muss nicht für eine spezifische Anzahl von Minuten inaktiv sein, um abgeschaltet zu werden. Eine Prüfung für ein automatisches Unterbrechen von Clustern kann auf einer periodischen Basis durchgeführt werden, wie beispielsweise für die letzten 5 Minuten, die letzten 10 Minuten, die letzte halbe Stunde, die letzte Stunde, etc. Bei einer Ausführungsform kann die Prüfung für ein automatisches Cluster in einem Intervall durchgeführt werden, das ein anderes als die spezifizierte Zeitperiode ist. Zum Beispiel kann die Prüfung, ob die letzten 10 Minuten unter Last gewesen sind, bei jedem Stundenwechsel durchgeführt werden, so dass ein Kunde auf einer stündlichen Basis mit Gebühren belastet werden kann.
  • Mit weiterer Bezugnahme auf den Anfrageplaner und -Koordinator 218 kann eine Anfrageplanung basierend auf einer Arbeitslast, einer Anfrageaffinität und anderen Faktoren durchgeführt werden. Der Anfrageplaner und -Koordinator 218 kann Anfragen zu einem spezifischen Cluster basierend auf einer Arbeitslast weiterleiten. Zum Beispiel kann der Anfrageplaner und -Koordinator 218 versuchen, eine ungefähr gleiche Arbeitslast auf jedem Cluster aufrechtzuerhalten, um Verarbeitungsaufgaben zu verbreiten und um eine Anfrageausführungszeit und eine Anwendererfahrung zu verbessern. Ein Anfrageaffinität kann verwendet werden, so dass zugehörige Anfragen, insbesondere Anfragen in Bezug auf dieselben Daten, zu demselben Cluster gesendet werden. Zum Beispiel kann der Anfrageplaner und -Koordinator 218 Anfragen mit einem selben Session-Identifizierer zu demselben Cluster senden. Ein Weiterleiten von Anfragen basierend auf einer Anfrageaffinität kann zulassen, dass der Anfrageplaner und -Koordinator 218 sicherstellt, dass die Daten, gegenüber welchen eine Anfrage durchzuführen ist, bereits im lokalen Cache eines spezifischen Clusters ist. Dies kann eine Reaktionszeit, eine Arbeitslast und ein Suchen nach Daten signifikant reduzieren.
  • 3 ist ein schematisches Blockdiagramm, das ein Multicluster-Lager 302 und das Planen von Anfragen 304 in dem Multicluster-Lager 302 darstellt. Das Lager 302 enthält eine Vielzahl von Clustern (Cluster 1, Cluster 2, Cluster N), die eine Vielzahl von Serverknoten enthalten. Bei einer Ausführungsform enthält jedes der Cluster dieselbe Anzahl von Servern, obwohl dies bei anderen Ausführungsformen anders sein kann. Bei einer Ausführungsform gehört jedes Cluster zu derselben Verfügbarkeitszone, aber andere Cluster können in anderen Verfügbarkeitszonen angeordnet sein. Das Konzept einer Verfügbarkeit des Lagers kann auf einem gesamten Verfügbarkeitsprozentsatz des Lagers basieren. Zum Beispiel kann die Verfügbarkeit für ein spezifisches Cluster innerhalb des Lages 302 der Prozentsatz von Servern sein, die verfügbar sind (z.B. in einem Betriebszustand), relativ zur Clustergröße. Wenn jedoch dieser Prozentsatz unter das Minimum geht (z.B. 50%), das erforderlich ist, um eine Anfrage laufenzulassen, kann eine Verfügbarkeit von 0% für dieses Cluster bestimmt werden, und keine Anfragen können zugeordnet werden, bis das Lager 302, oder einige der Server in dem Lager 302, repariert ist. Wie es hierin diskutiert ist, kann die Anzahl von Clustern im Lager 302 basierend auf Arbeitslast, Serverausfällen in den Clustern oder ähnlichem dynamisch eingestellt werden.
  • Bei einer Ausführungsform gewichtet der Anfrageplaner und -koordinator 218 jede Anfrage (z.B. eine SQL-Anweisung oder einen Teilbereich einer SQL-Anweisung) basierend auf ihrem geplanten Ressourcenverbrauch. Zum Beispiel können einige Anfragen signifikant mehr Speicher einnehmen, um durchzuführen, während andere Anfragen signifikant mehr Verarbeitungsressourcen einnehmen können, um durchzuführen. Gleichermaßen können einige Anfragen einen hohen oder niedrigen Verbrauch für sowohl Speicher als auch Verarbeitung haben. Der Ressourcenmanager 102 kann bestimmen, was der vorhergesagte oder geplante Verbrauch ist, und kann dann dazu fähig sein zu bestimmen, wo die Anfrage zu platzieren ist, um die Arbeitslast am effizientesten unter unterschiedlichen Clustern auszugleichen. Zum Beispiel kann eine Anfrage mit hohem Verbrauch so viele Ressourcen wie mehrere Anfragen mit niedrigem Verbrauch verwenden.
  • Bei einer Ausführungsform kann der Anfrageplaner und -koordinator 218 Anfragen auf dem einen oder den mehreren Clustern des Lagers 302 planen oder kann Anfragen in eine Warteschlange bringen, wenn eine Arbeitslast zu hoch ist oder eine Verfügbarkeit zu niedrig ist. Zum Beispiel kann der Anfrageplaner und -koordinator 218 zuerst versuchen, eine Anfrage 304 (z.B. eine SQL-Anweisung) auf einem aktiven (d.h. nicht kurzzeitig unterbrochenen) Cluster des Lagers 302 zu planen. Wenn es mehrere aktive Cluster gibt, wird der Anfrageplaner und -koordinator 218 die Gruppe von Clustern eliminieren, die nicht verfügbar sind, oder dort, wo die Anfrage 304 nicht laufen würde, weil ein Speicher überzeichnet sein würde. Wie es zuvor angegeben ist, kann ein Cluster durch eine Vorgabe als nicht verfügbar bestimmt werden, wenn weniger als 50% der Server eines Knotens nicht verfügbar sind (z.B. ausgefallen sind). Wenn es mehrere mögliche Cluster gibt, die übrig bleiben, kann dann der Anfrageplaner und -koordinator 218 das am wenigsten ausgelastete Cluster herauspicken. Das am wenigstens ausgelastete Cluster ist bei einer Ausführungsform als die Summe der DOPs von allen Jobs definiert, die auf diesem Cluster laufen. Das am wenigstens ausgelastete Cluster kann auch auf der Summe von allen Speichererfordernissen für dieses Cluster basieren. Wenn es mehrere Cluster mit gleicher Last gibt, kann der Anfrageplaner und -koordinator 218 die Session-ID für die spezifische Anfrage 304 als ein Entscheidungskriterium verwenden, so dass Anfragen von derselben Session auf demselben Cluster ausführen können. Anfragen 304, die einem Cluster im Lager 302 zugeordnet worden sind, sind als laufende Anfragen 306 gezeigt.
  • Wenn es nicht irgendwelche Cluster gibt, um eine spezifische Anfrage zu planen, dann kann der Anfrageplaner und -koordinator 218 die Anfrage in einer globalen Warteschlange in eine Warteschlange bringen. Global in eine Warteschlange gebrachte Anfragen 304 sind als in eine Warteschlange gebrachte Anfragen 308 gezeigt. Die Anfragen 308 können in eine Warteschlange gebracht bleiben, bis eines der Cluster des Lagers 302 freigegeben wird oder verfügbar wird. Es ist zu beachten, dass ein oder mehrere Server in einem zugeordneten Cluster als fehlgeschlagen verdächtigt markiert sein könnten, in welchem Fall es sein kann, dass einige laufenden Anfragen 306 auch wartend darauf, dass das Cluster repariert wird, in eine Warteschlange gebracht werden müssen.
  • 4 ist ein Blockdiagramm, das eine Ausführungsform einer Vielzahl von Lagern, die auf einer einzigen Ausführungsplattform 112 aktiv oder in Betrieb sein können, gemäß einer Ausführungsform darstellt. Mehrere virtuelle Lager 402, 402, 406 sind gezeigt und jedes virtuelle Lager enthält eine Vielzahl von Clustern 408. Jedes Cluster 408 enthält mehrere Ausführungsknoten 410, die jeweils einen Prozessor 412 und einen Cache 414 (z.B. einen (Arbeits-)Speicher) enthalten. Obwohl drei virtuelle Lager 402-406 gezeigt sind, kann die Anzahl von virtuellen Lagern sich dynamisch ändern. Gleichermaßen können die Anzahl von Clustern 408 in jedem Lager 402-406 und die Anzahl von Ausführungsknoten 410 in jedem Cluster bei anderen Ausführungsformen variieren und können auch relativ zueinander ohne Beschränkung variieren. Weiterhin können die Anzahl von Clustern 408 in einem virtuellen Lager und eine Anzahl von Ausführungsknoten 410 in einem Cluster dynamisch sein, so dass neue Cluster 408 und Ausführungsknoten 410 erzeugt oder entfernt werden, wenn sich eine Anforderung ändert.
  • Jedes virtuelle Lager 402-406 kann auf irgendeine der in 1 gezeigten Datenspeichervorrichtungen 116-120 zugreifen. Somit sind die virtuellen Lager 402-406 nicht notwendigerweise einer spezifischen Datenspeichervorrichtung 116-120 zugeordnet und können stattdessen auf Daten von irgendeiner der Datenspeichervorrichtungen 116-120 zugreifen. Bei einigen Ausführungsformen kann ein bestimmtes virtuelles Lager oder ein bestimmter Ausführungsknoten temporär einer spezifischen Datenspeichervorrichtung zugeordnet sein, aber das virtuelle Lager oder der Ausführungsknoten kann später auf Daten von irgendeiner anderen Datenspeichervorrichtung zugreifen.
  • Obwohl der dargestellte Ausführungsknoten 410 jeweils einen Cache und einen Prozessor enthält, können alternative Ausführungsformen Ausführungsknoten enthalten, die irgendeine Anzahl von Prozessoren und irgendeine Anzahl von Caches enthalten. Zusätzlich können die Caches bezüglich einer Größe unter den unterschiedlichen Ausführungsknoten 410 variieren. Die Caches 414 speichern in dem lokalen Ausführungsknoten Daten, die von einer oder mehreren Datenspeichervorrichtungen in der Speicherplattform 114 (1) wiedergewonnen bzw. abgerufen sind. Somit reduzieren oder eliminieren die Caches die Engpassprobleme, die in Plattformen auftreten, die Daten konsistent von entfernten Speichersystemen wiedergewinnen bzw. 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 einen schnellen Zugriff auf die im Cache gespeicherten Daten zur Verfügung stellen. Jeder Cache kann Daten von irgendeiner der Speichervorrichtungen in der Speicherplattform 114 speichern.
  • Weiterhin können die Cacheressourcen und die Computerressourcen zwischen unterschiedlichen Ausführungsknoten variieren. Zum Beispiel kann ein Ausführungsknoten signifikante Computerressourcen und minimale Cacheressourcen enthalten, was den Ausführungsknoten nützlich für Aufgaben macht, die signifikante Computerressourcen erfordern. Ein anderer Ausführungsknoten kann signifikante Cacheressourcen und minimale Computerressourcen enthalten, was diesen Ausführungsknoten nützlich für Aufgaben macht, die ein Speichern von großen Datenmengen im Cache erfordern. Bei einigen Ausführungsformen werden die Cacheressourcen und die Computerressourcen, die mit einem bestimmten Ausführungsknoten assoziiert sind, bestimmt, wenn der Ausführungsknoten erzeugt wird, und zwar basierend auf den durch den Ausführungsknoten durchzuführenden erwarteten Aufgaben.
  • Zusätzlich können die mit einem bestimmten Ausführungsknoten assoziierten Cacheressourcen und Computerressourcen sich im Laufe der Zeit basierend auf sich ändernden durch den Ausführungsknoten durchgeführten Aufgaben ändern. Zum Beispiel können einem bestimmten 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.
  • Obwohl virtuelle Lager 402-406 mit derselben Ausführungsplattform 112 assoziiert sind, können die virtuellen Lager unter Verwendung von mehreren Computersystemen an mehreren geographischen Standorten implementiert sein. Zum Beispiel kann das virtuelle Lager 402 durch ein Computersystem an einem ersten geographischen Standort implementiert sein, während die virtuellen Lager 404 und 406 durch ein weiteres Computersystem an einem zweiten geographischen Standort implementiert sind. Bei einigen Ausführungsformen sind diese unterschiedlichen Computersysteme cloudbasierte Computersysteme, die durch eine oder mehrere unterschiedliche Einheiten aufrechterhalten bzw. gewartet werden.
  • Zusätzlich ist in 4 jedes virtuelle Lager derart gezeigt, dass es mehrere Cluster 408 hat. Die mit jedem virtuellen Lager assoziierten Cluster 408 können unter Verwendung von mehreren Computersystem an mehreren geographischen Standorten oder innerhalb unterschiedlicher Verfügbarkeitszonen implementiert sein. Zum Beispiel implementiert eine bestimmte Instanz des virtuellen Lagers 402 Cluster 408 mit Ausführungsknoten 410 auf einer Computerplattform an einem bestimmten geographischen Standort und implementiert andere Cluster 408 und Ausführungsknoten 410 bei einer anderen Computerplattform an einem anderen geographischen Standort. Die virtuellen Lager 402-406 sind auch fehlertolerant. Zum Beispiel wird, wenn ein virtuelles Lager oder ein Ausführungsknoten 410 fehlerhaft ist, dieses virtuelle Lager oder der Ausführungsknoten an demselben oder einem anderen geographischen Standort schnell ersetzt.
  • Eine bestimmte Ausführungsplattform 112 kann irgendeine Anzahl von virtuellen Lagern 402-406 enthalten. Zusätzlich ist die Anzahl von virtuellen Lagern in einer bestimmten Ausführungsplattform dynamisch, so dass neue virtuelle Lager erzeugt werden, wenn zusätzliche Verarbeitungs- und/oder Cachespeicherungsressourcen 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.
  • 5 stellt ein Blockdiagramm dar, das eine weitere beispielhafte Betriebsumgebung 500 mit mehreren verteilten virtuellen Lagern und Ausführungsgruppen darstellt. Die Umgebung 500 enthält einen Ressourcenmanager 102, der mit einer Ausführungsplattformgruppe 1 504 und einer Ausführungsplattformgruppe 2 506 durch ein Datenkommunikationsnetzwerk 502 kommuniziert. Die Ausführungsplattformgruppe 1 504 enthält zwei Cluster, spezifisch ein Cluster A für ein erstes virtuelles Lager 508 und ein Cluster A für ein zweites virtuelles Lager 510. Die Ausführungsplattformgruppe 2 506 enthält zwei zusätzliche Cluster, spezifisch ein Cluster B für das erste virtuelle Lager 514 und ein Cluster B für das zweite virtuelle Lager 516. Der Ressourcenmanager 102 kommuniziert auch mit einem Cluster C des ersten virtuellen Lagers 512 (das kein Teil von einer der Ausführungsplattformgruppen 504, 506 ist) durch das Datenkommunikationsnetzwerk 502.
  • Die Ausführungsplattformgruppen 504 und 506 sowie das Cluster C für das erste virtuelle Lager 512 kommunizieren mit Datenbanken 520, 522 und 524 durch ein Datenkommunikationsnetzwerk 518. Bei einigen Ausführungsformen sind die Datenkommunikationsnetzwerke 502 und 518 dasselbe Netzwerk oder eine Kombination aus einem oder mehreren sich überlagernden Netzwerken. Die Umgebung 500 lässt zu, dass der Ressourcenmanager 102 Anwenderdatenspeicherungs- und -wiedergewinnungsaufforderungen über mehrere Cluster 508-516 von mehreren Lagern hinweg koordiniert, um Daten in den Datenbanken 520-524 zu speichern und wiederzugewinnen bzw. abzurufen. Die Ausführungsplattformgruppen 504 und 506 sowie das Cluster C für das erste virtuelle Lager 512 können in demselben oder einem unterschiedlichen geographischen Gebiet angeordnet sein oder können in denselben oder unterschiedlichen Verfügbarkeitszonen angeordnet sein. Zusätzlich können die Ausführungsplattformgruppen 504 und 506 durch dieselbe Einheit oder durch unterschiedliche Einheiten implementiert sein.
  • Die hierin beschriebenen Systeme und Verfahren lassen zu, dass Daten als ein Dienst gespeichert wird oder auf sie als ein Dienst zugegriffen wird, welcher Dienst separat von Computer- (oder Verarbeitungs-)Ressourcen ist. Selbst wenn keine Computerressourcen von der Ausführungsplattform aufgefordert worden sind, sind Daten einem virtuellen Lager verfügbar, ohne ein erneutes Laden der Daten von einer entfernten Datenquelle zu erfordern. Die beschriebenen Systeme und Verfahren sind mit irgendeinem Typ von Daten nützlich. Bei bestimmten Ausführungsformen werden Daten in einem strukturierten, optimierten Format gespeichert. Die Entkopplung der Datenspeicherung/des Zugriffsdienstes von den Computerdiensten vereinfacht auch das gemeinsame Nutzen bzw. Teilen von Daten unter unterschiedlichen Anwendern und Gruppen. Wie es hierin diskutiert ist, kann jedes virtuelle Lager auf irgendwelche Daten zugreifen, zu welchen es eine Zugriffserlaubnis hat, selbst zu derselben Zeit, zu welcher andere virtuelle Lager gerade auf dieselben Daten zugreifen. Diese Architektur unterstützt ein Laufenlassen von Anfragen ohne irgendwelche aktuellen im lokalen Cache gespeicherten Daten. Die hierin beschriebenen Systeme und Verfahren sind zu einer transparenten dynamischen Datenbewegung fähig, die Daten von einer entfernten Speichervorrichtung zu einem lokalen Cache bewegt, wie es nötig ist, auf eine Weise, die transparent für den Anwender des Systems ist. Weiterhin unterstützt diese Architektur ein gemeinsames Nutzen bzw. Teilen von Daten ohne vorherige Datenbewegung, da aufgrund der Entkopplung des Datenspeicherdienstes von dem Computerdienst irgendein virtuelles Lager auf irgendwelche Daten zugreifen kann.
  • Weiterhin lässt die Umgebung 500 das Verbreiten eines einzelnen virtuellen Lagers über mehrere geographische Standorte oder Verfügbarkeitszonen zu. Zum Beispiel gehören die Cluster 508, 512 und 514 alle zu demselben virtuellen Lager (dem ersten virtuellen Lager), können aber in unterschiedlichen geographischen Gebieten oder Verfügbarkeitszonen angeordnet sein. Weil Ausfälle oder Fehler über einem geographischen Gebiet oder einer Verfügbarkeitszone passieren können, kann eine verbesserte Fehlertoleranz erreicht werden. Zum Beispiel sind Verfügbarkeitszonen manchmal durch einen Cloud-Service-(Computer bzw. Berechnung oder Speicherung)-Provider implementiert, so dass Probleme in einer Verfügbarkeitszone wenig oder keine Chancen für eine Ausbreitung zu einer anderen Verfügbarkeitszone haben. Somit können Cluster innerhalb desselben Lagers, aber in unterschiedlichen Verfügbarkeitszonen, die Wahrscheinlichkeit signifikant erniedrigen, dass ein Lager ohne irgendwelche verfügbaren Ausführungs- oder Computerknoten gelassen wird.
  • Bei einer Ausführungsform können die hierin offenbarten Ausführungsformen des Multicluster-Lagers eine spezielle Datendefinitionssprache (DDL) verwenden. Das folgende sind einige Beispiele von Befehlen oder Anweisungen, die Teil eines Multicluster-Lagers sind.
  • DDL:
    • ⊐ create warehouse single_cluster size=xlarge; // Dies wird ein Einzelcluster-Lager erzeugen
    • J create warehouse multi_cluster size=xlarge max_cluster_count=3 min_cluster_count=1; // Dies wird ein extragroßes 3-Cluster-Lager erzeugen. Nur ein Cluster wird durch Vorgabe gestartet werden
    • □ create warehouse multi_cluster size=xlarge max_cluster_count=3 min_cluster_count=2; // Dies wird ein extragroßes Lager erzeugen, bei dem anfangs 2 Cluster wiederaufgenommen sind
    • □ create warehouse multi_cluster size=xlarge max_cluster_count=3 min_cluster_count=3; // Dies wird ein extragroßes Lager erzeugen, bei dem alle Cluster wiederaufgenommen sind
    • J Es ist zu beachten, dass der Ressourcenmanager versuchen würde, alle Verfügbarkeitszonen zu verwenden, und zwar eine pro Cluster. Die Verfügbarkeitszone zur Verwendung für jedes Cluster kann durch eine Infrastrukturmanagementsystem implementiert sein
    • □ alter warehouse <warehouse_name> set warehouse_size=<size>: Erlaubt einem, die Größe des Lagers zu ändern. Wenn dieses Lager in Betrieb genommen wird, werden alle Cluster im Lager neu bemaßt. Der Code, um diese Anweisung zu implementieren, kann eine Neubemaßungsoperation für jedes Cluster enthalten.
    • □ alter warehouse <warehouse_name> set max_cluster_count=<count>: Dies wird Cluster zu einem existierenden Lager hinzufügen oder von diesem entfernen. Intern können Cluster nummeriert sein, so dass diese Operation entweder neue Cluster am Ende des Bereichs hinzufügen wird oder Cluster beginnend ab dem Ende des Bereichs entfernen wird. Wenn neue Cluster erzeugt werden, werden sie in einem kurzzeitig unterbrochenen Zustand erzeugt werden. Wenn Cluster entfernt werden und diese Cluster aktiv sind, werden sie zuerst inaktiv (ruhig) gemacht werden, um zuzulassen, dass Anfragen abschließen.
    • J drop warehouse <warehouse_name>: Lager und alle zugehörigen Cluster fallen lassen. Die Cluster werden inaktiv (ruhig) gemacht werden, bevor sie fallen gelassen werden.
  • Wendet man sich wieder den Figuren zu, ist 6 ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 600 für ein Multicluster-Lager darstellt. Das Verfahren 600 kann durch eine Verarbeitungsplattform oder einen Ressourcenmanager durchgeführt werden, wie beispielsweise die Verarbeitungsplattform 100 der 1 oder den Ressourcenmanager 102 der 1, 2 oder 5.
  • Das Verfahren 600 beginnt und ein System teilt eine Vielzahl von Computerclustern als Teil eines virtuellen Lagers zum Zugreifen auf und Durchführen von Anfragen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen zu 602. Bei einer Ausführungsform wird die Vielzahl von Computerclustern durch das System unabhängig von der einen oder den mehreren Cloud-Speicherressourcen zugeteilt, so dass die Anzahl von Computerclustern ohne ein Erhöhen oder Erniedrigen von der einen oder den mehreren Cloud-Speicherressourcen vergrößert und verkleinert werden kann. Das System stellt Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern bereit 604. Zum Beispiel kann die Vielzahl von Anfragen zu jedem der Vielzahl von Computerclustern des virtuellen Lagers bereitgestellt werden. Das System fügt dynamisch Computercluster zu dem virtuellen Lager hinzu und entfernt sie davon 606, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern. Das Verfahren 600 kann auch ein Bestimmen der Arbeitslast durch Bestimmen einer Verfügbarkeit von einem oder mehreren von Prozessorressourcen für jedes der Vielzahl von Computerclustern und Speicherressourcen für jedes der Vielzahl von Computerclustern enthalten.
  • Das Verfahren 600 kann implementiert sein durch ein Datenbanksystem oder eine Vorrichtung, um zuzulassen, dass eine einzelne Einheit, wie beispielsweise ein Lager, sich in Abhängigkeit von einer Anzahl von Anfragen ausdehnt und kleiner wird. Spezifisch kann, wenn Änderungen bezüglich der Gleichzeitigkeit (oder der Computer- und Speicherlast) eines Lagers auftreten, ein Ressourcenmanager oder ein anderes System zulassen, dass sich das Lager vergrößert und verkleinert.
  • 7 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 700 zum dynamischen Hinzufügen von Computerclustern in einem Multicluster-Lager darstellt. Das Verfahren 700 kann durch eine Verarbeitungsplattform oder einen Ressourcenmanager durchgeführt werden, wie beispielsweise die Verarbeitungsplattform 100 der 1 oder den Ressourcenmanager der 1, 2 oder 5. Das Verfahren 700 kann in Verbindung mit oder separat von dem Verfahren 600 der 6 durchgeführt werden.
  • Das Verfahren 700 beginnt und ein System bestimmt 702, ob eine Anfrage verarbeitet werden kann, während eine Leistungskennzahl für die Anfrage erfüllt wird. Bei einer Ausführungsform enthält das Verfahren 700 ein Bestimmen 702, Ob die Anfrage für jede Anfrage verarbeitet werden kann, die zu dem Computercluster gerichtet ist, so dass die Leistungskennzahl für jede Anfrage erfüllt ist. Die Leistungskennzahl kann eine Dienstmaßübereinkunft (SLA) enthalten, die durch einen Kunden akzeptiert ist. Zum Beispiel kann die SLA erfordern, dass eine Anfrage innerhalb einer bestimmten Menge an Zeit (z.B. 10 Sekunden) geplant wird. Dies kann irgendeine Anfrage diesbezüglich beschränken, dass sie in einer globalen Warteschlange länger als eine maximale Zeit (z.B. 10 Sekunden) in eine Warteschlange gebracht ist. Der SLA kann im Voraus zwischen einem Lager als Serviceprovider und einem Kunden zugestimmt werden. Unterschiedliche Preisstufen können basierend darauf präsentiert werden, was die SLA ist, oder die SLA kann vorschreiben, dass das System mehr Ressourcen verwendet, um sicherzustellen, dass Anwender eine minimale Verzögerung beim Zugreifen auf und Durchführen von Anfragen gegenüber einer Datenbank erfahren.
  • Das System triggert bzw. veranlasst 704 eine Inbetriebnahme eines neuen Computerclusters in Reaktion auf ein Bestimmen, dass die Anfrage in Kombination mit einer aktuellen Arbeitslast nicht zulässt, dass eines oder mehrere von aktuell zugeteilten Computerclustern die Leistungskennzahl erfüllen. Bei einer Ausführungsform kann das System eine Inbetriebnahme nur auslösen 704, wenn die Anzahl von aktuell aktiven Clustern kleiner als eine vorbestimmte Anzahl von Computerclustern ist.
  • 8 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 800 zum dynamischen Entfernen von Computerclustern in einem Multicluster-Lager darstellt. Das Verfahren 800 kann durch eine Verarbeitungsplattform oder einen Ressourcenmanager durchgeführt werden, wie beispielsweise die Verarbeitungsplattform 100 der 1 oder den Ressourcenmanager der 1, 2 oder 5. Das Verfahren 800 kann in Verbindung mit oder separat von einem oder mehreren von dem Verfahren 600 oder 700 der 6 und 7 durchgeführt werden.
  • Das Verfahren 800 beginnt und ein System bestimmt 802, ob eine aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, während eine Leistungskennzahl erfüllt wird. Bei einer Ausführungsform kann ein Bestimmen 802, ob die aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, ein Bestimmen enthalten, ob eine historische Arbeitslast für eine Zeitperiode, die bis zur aktuellen Zeit führt, durch eines weniger als die Vielzahl von Clustern bedienbar war, während die Leistungskennzahl erfüllt wird. Zum Beispiel würde dann, wenn das beste Cluster vom virtuellen Lager entfernt wäre, das virtuelle Lager dazu fähig gewesen sein, alle Anfragen zu verarbeiten, während die Leistungskennzahl erfüllt wird?
  • Das System nimmt wenigstens ein Computercluster der Vielzahl von Computerclustern in Reaktion auf ein Bestimmen außer Betrieb 804 (oder macht es inaktiv), dass die Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist. Das System kann nur ein Computercluster außer Betrieb nehmen 804 oder entfernen, wenn die aktuelle Anzahl von aktiven Clustern kleiner als eine vorbestimmte minimale Anzahl von Computerclustern ist. Bei einer Ausführungsform kann eine Außerbetriebnahme 804 des wenigstens einen Computerclusters eine Außerbetriebnahme in Reaktion auf ein Bestimmen enthalten, dass die historische Arbeitslast für die Zeitperiode durch eines weniger als die Vielzahl von Computerclustern bedienbar war.
  • Bei einer Ausführungsform enthält eine Außerbetriebnahme 804 des wenigstens einen Computerclusters ein Veranlassen, dass ein Cluster untätig ist, um ein Bereitstellen oder Planen zusätzlicher Anfragen zu dem wenigstens einen Computercluster zu verhindern. Die Außerbetriebnahme 804 kann auch ein Zulassen enthalten, dass das wenigstens eine Computercluster aktuell zugeordnete Anfragen beendet, und ein Freisetzen von einer oder mehreren Ressourcen entsprechend dem wenigstens einen Computercluster auf ein Beenden der bereits geplanten oder aktiven Anfragen hin.
  • 9 ist ein schematisches Ablaufdiagramm, das ein beispielhaftes Verfahren 900 für ein Multicluster-Lager darstellt. Das Verfahren 900 kann durch eine Verarbeitungsplattform oder einen Ressourcenmanager durchgeführt werden, wie beispielsweise die Verarbeitungsplattform der 1 oder den Ressourcenmanager der 1, 2 oder 5. Das Verfahren 900 kann in Verbindung mit oder separat von einem oder mehreren der Verfahren 600, 700 oder 800 der 6, 7 und 8 durchgeführt werden.
  • Das Verfahren 900 beginnt und ein System teilt eine Vielzahl von Computercluster als Teil eines virtuellen Lagers zum Zugreifen auf und Durchführen von Anfragen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Speicherressourcen zu 902. Das System leitet Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern weiter 904. Die Vielzahl von Anfragen kann zu jedem der Vielzahl von Computerclustern des virtuellen Lagers bereitgestellt werden. bei einer Ausführungsform enthält ein Weiterleiten 904 von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computercluster ein Führen 906 von Anfragen basierend auf einer Session, von welcher die Anfrage entstand, so dass Anfragen von derselben Session durch eine Vorgabe zu einem selben Computercluster geführt werden. Jedes Cluster hat die Fähigkeit, an Fragmenten der Datenbank festzuhalten, an welchen es gerade arbeitet. Das heißt, dass jedes Cluster (oder jeder Computerknoten im Cluster) einen Cache von all den Tabellen beibehalten kann, auf die es aktuell zugegriffen hat, während Anfragen auf einem Cluster verarbeitet werden. Somit treibt bzw. steuert der Ressourcenmanager oder Planer die Anfragen von demselben Anfragestrom (z.B. mit demselben Session-Identifizierer) zu demselben Cluster, so dass sie den Cachespeicherungseffekt zu ihrem Vorteil nutzen bzw. wirksam einsetzen können. In einigen Fällen können, wenn ein Cluster, das eine spezifische Session handhabt, viel weniger verfügbare Ressourcen als ein weiteres Cluster hat, Anfragen mit demselben Session-Identifizierer auf unterschiedlichen Clustern enden.
  • Bei einer Ausführungsform kann das System die Anfragen basierend auf einer Arbeitslast von jedem der Vielzahl von Computerclustern führen 906. Wenn zum Beispiel ein Cluster neue Anfragen nicht annehmen bzw. akzeptieren kann, kann das System die Anfrage zu einem anderen Cluster bereitstellen, selbst wenn das andere Cluster Warteschlangen entsprechend derselben Session nicht verarbeitet hat. Bei einer Ausführungsform kann das System Anfragen zu wenigstens zwei Computerclustern in anderen Verfügbarkeitszonen bereitstellen 904.
  • 10 ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung 1000 darstellt. Bei einigen Ausführungsformen wird die Computervorrichtung 1000 verwendet, um ein oder mehrere der Systeme und Komponenten zu implementieren, die hierin diskutiert sind. Beispielsweise kann die Computervorrichtung 1000 zulassen, dass ein Anwender oder ein Administrator auf den Ressourcenmanager 102 zugreift. Als ein weiteres Beispiel können die hierin diskutierten Komponenten, Systeme oder Plattformen eine oder mehrere Computervorrichtungen 1000 enthalten. Weiterhin kann die Computervorrichtung 1000 mit irgendeinem oder irgendeiner der hierin beschriebenen Systeme und Komponenten interagieren. Demgemäß kann die Computervorrichtung 1000 verwendet werden, um verschiedene Prozeduren und Aufgaben durchzuführen, wie beispielsweise diejenigen, die hierin diskutiert sind. Die Computervorrichtung 1000 kann als ein Server, ein Client oder irgendeine andere Computereinheit fungieren. Die Computervorrichtung 1000 kann irgendeine einer weiten Vielfalt von Computervorrichtungen sein, wie beispielsweise ein Desktopcomputer, ein Notebookcomputer, ein Servercomputer, ein in der Hand gehaltener Computer bzw. Handheld-Computer, ein Tablet und ähnliches.
  • Die Computervorrichtung 1000 enthält einen oder mehrere Prozessoren 1002, eine oder mehrere Speichervorrichtungen 1004, eine oder mehrere Schnittstellen 1006, eine oder mehrere Massenspeichervorrichtungen 1008 und eine oder mehrere Eingabe/Ausgabe-(I/O-)Vorrichtungen 1010, von welchen alle mit einem Bus 1012 gekoppelt sind. Der Prozessor (die Prozessoren) 1002 enthält (enthalten) eine oder mehrere Prozessoren oder Steuerungen, die Anweisungen ausführen, die in der Speichervorrichtung (den Speichervorrichtungen) 1004 und/oder der Massenspeichervorrichtung (den Massenspeichervorrichtungen) 1008 gespeichert sind. Der Prozessor (die Prozessoren) 1002 kann (können) auch verschiedene Typen von computerlesbaren Medien enthalten, wie beispielsweise einen Cachespeicher.
  • Die Speichervorrichtung (die Speichervorrichtungen) 1004 enthält (enthalten) verschiedene computerlesbare Medien, wie beispielsweise einen flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM)) und/oder einen nichtflüchtigen Speicher (z.B. einen Nurlesespeicher (ROM)). Die Speichervorrichtung(en) 1004 kann (können) auch einen wiederbeschreibbaren ROM enthalten, wie beispielsweise einen Flash-Speicher.
  • Die Massenspeichervorrichtung(en) 1008 enthält (enthalten) verschiedene computerlesbare Medien, wie beispielsweise Magnetbänder, Magnetplatten, optische Platten, einen Festkörperspeicher (z.B. einen Flash-Speicher) und so weiter. Verschiedene Laufwerke können auch in der Massenspeichervorrichtung (den Massenspeichervorrichtungen) 1008 enthalten sein, um ein Lesen von den verschiedenen computerlesbaren Medien und/oder ein Schreiben zu diesen zu ermöglichen. Die Massenspeichervorrichtung(en) 1008 enthält (enthalten) entfernbare Medien und/oder nicht entfernbare Medien.
  • Die I/O-Vorrichtung(en) 1010 enthält (enthalten) verschiedene Vorrichtungen, die zulassen, dass Daten und/oder andere Information zu der Computervorrichtung 1000 eingegeben oder daraus wiedergewonnen bzw. ausgelesen werden oder wird. Die I/O-Vorrichtung(en) 1010 enthält (enthalten) als Beispiel Cursorsteuervorrichtungen, Tastaturen, Keypads bzw. kleine Tastaturen bzw. Folientastaturen, Mikrofone, Monitore oder andere Anzeigevorrichtungen, Lautsprecher, Drucker, Netzwerkschnittstellenkarten, Modems, eine Optik, CCDs oder andere Bilderfassungsvorrichtungen und ähnliches.
  • Die Schnittstelle(n) 1006 enthält (enthalten) verschiedene Schnittstellen, die zulassen, dass die Computervorrichtung 1000 mit anderen Systemen, Vorrichtungen oder Computerumgebungen interagiert. Die Schnittstelle(n) 1006 enthält (enthalten) als Beispiel irgendeine Anzahl von unterschiedlichen Netzwerkschnittstellen, wie beispielsweise Schnittstellen zu lokalen Netzen (LANs), Weitverkehrsnetzen (WANs), drahtlosen Netzen und dem Internet.
  • Der Bus 1012 lässt zu, dass der Prozessor (die Prozessoren) 1002, die Speichervorrichtung(en) 1004, die Schnittstelle(n) 1006, die Massenspeichervorrichtung(en) 1008 und die I/O-Vorrichtung(en) 1012 miteinander sowie mit anderen Vorrichtungen oder Komponenten, die mit dem Bus 1012 gekoppelt sind, kommunizieren. Der Bus 1012 stellt einen oder mehrere von einigen Typen von Strukturen dar, wie beispielsweise einen Systembus, einen PCI-Bus, einen IEEE 1394-Bus, einen USB-Bus und so weiter.
  • Beispiele
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Ein Beispiel 1 ist ein computerimplementiertes Verfahren für ein Multicluster-Lager. Das Verfahren enthält ein Zuteilen einer Vielzahl von Computerclustern als Teil eines virtuellen Lagers zum Zugreifen auf und Durchführen von Anfragen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen. Das Verfahren enthält ein Bereitstellen von Anfragen für das virtuelle Lager zu jedem einer Vielzahl von Computerclustern, wobei eine Vielzahl von Anfragen zu jedem der Vielzahl von Computerclustern des virtuellen Lagers bereitgestellt wird. Das Verfahren enthält ein dynamisches Hinzufügen von Computerclustern zu und ein Entfernen von Computerclustern von dem virtuellen Lager, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern.
  • Bei einem Beispiel 2 wird die Vielzahl von Computerclustern des Beispiels 1 unabhängig von der einen oder den mehreren Cloud-Speicherressourcen zugeteilt, so dass die Anzahl von Computerclustern ohne ein Erhöhen oder Erniedrigen der einen oder der mehreren Cloud-Speicherressourcen vergrößert und verkleinert werden kann.
  • Bei einem Beispiel 3 enthält das Verfahren bei einem der Beispiele 1-2 weiterhin ein Bestimmen der Arbeitslast für die Vielzahl von Computerclustern. Das Bestimmen der Arbeitslast enthält ein Bestimmen einer Verfügbarkeit von einer oder mehreren Prozessorressourcen für jede der Vielzahl von Computercluster-Speicherressourcen für jedes der Vielzahl von Computerclustern.
  • Bei einem Beispiel 4 enthält das dynamische Hinzufügen von Computerclustern bei einem der Bespiele 1-3 ein Bestimmen, ob eine Anfrage verarbeitet werden kann, während eine Leistungskennzahl für die Anfrage erfüllt ist, und ein Auslösen einer Inbetriebnahme eines neuen Computerclusters in Reaktion auf ein Bestimmen, dass die Anfrage in Kombination mit einer aktuellen Arbeitslast nicht zulassen, dass ein oder mehrere aktuell zugeteilte Computercluster die Leistungskennzahl erfüllen.
  • Bei einem Beispiel 5 enthält das Verfahren des Beispiels 4 ein Bestimmen, ob die Anfrage für jede Anfrage verarbeitet werden kann, die zudem Computercluster gerichtet ist, so dass die Leistungskennzahl für jede Anfrage erfüllt ist.
  • Bei einem Beispiel 6 enthält die Leistungskennzahl bei einem der Beispiel 4-5 eine Dienstausmaßübereinkunft, die durch einen Kunden angenommen bzw. akzeptiert ist.
  • Bei einem Beispiel 7 enthält die Leistungskennzahl bei einem der Beispiele 4-6 eine maximale Zeitperiode, für die die Anfrage in eine Warteschlange gebracht ist.
  • Bei einem Beispiel 8 enthält das dynamische Hinzufügen von Computerclustern bei einem der Beispiele 1-7 ein Hinzufügen von Computerclustern bis zu einer vorbestimmten Anzahl von Computerclustern.
  • Bei einem Beispiel 9 enthält das dynamische Entfernen von Computerclustern bei einem der Beispiele 1-8 ein Entfernen von Computerclustern bis hinab zu einer vorbestimmten minimalen Anzahl von Computerclustern.
  • Bei einem Beispiel 10 enthält das Entfernen von Computerclustern bei einem der Beispiele 1-9 ein Bestimmen, ob eine aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, während eine Leistungskennzahl erfüllt wird, und eine Außerbetriebnahme von wenigstens einem Computercluster der Vielzahl von Computercluster in Reaktion auf ein Bestimmen, dass die Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist.
  • Bei einem Beispiel 11 enthält die Außerbetriebnahme des Computerclusters beim Beispiel 10 folgendes: Verhindern eines Bereitstellens zusätzlicher Anfragen zu dem wenigstens einen Computercluster; Zulassen, dass das wenigstens eine Computercluster aktuell zugeordnete Anfragen beendet bzw. fertigstellt; und Freisetzen von einer oder mehreren Ressourcen entsprechend dem wenigstens einen Computercluster auf eine Beendigung der aktuell zugeordneten Anfragen in.
  • Bei einem Beispiel 12 enthält das Bestimmen, ob die aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, bei einem der Beispiele 10-11 ein Bestimmen, ob eine historische Arbeitslast für eine Zeitperiode, die bis zur aktuellen Zeit führt, durch eines weniger als die Vielzahl von Clustern bedienbar war, während die Leistungskennzahl erfüllt wird. Die Außerbetriebnahme des wenigstens einen Computerclusters enthält eine Außerbetriebnahme in Reaktion auf ein Bestimmen, dass die historische Arbeitslast für die Zeitperiode durch eines weniger als die Vielzahl von Computerclustern bedienbar war.
  • Bei einem Beispiel 13 enthält das Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern bei einem der Beispiele 1-12 ein Führen von Anfragen basierend auf einer Session, von welcher die Anfrage entstand.
  • Bei einem Beispiel 14 enthält das Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern bei einem der Beispiele 1-13 ein Führen von Anfragen basierend auf einer Arbeitslast von jedem der Vielzahl von Computerclustern.
  • Bei einem Beispiel 15 enthält ein Zuteilen der Vielzahl von Computerclustern bei einem der Beispiele 1-14 ein Zuteilen von wenigstens zwei Computerclustern in unterschiedlichen Verfügbarkeitszonen.
  • Ein Beispiel 16 ist eine Vorrichtung, die Mittel enthält, um ein Verfahren wie bei einem der Beispiele 1-15 durchzuführen.
  • Ein Beispiel 17 ist ein maschinenlesbarer Speicher, der maschinenlesbare Anweisungen enthält, die dann, wenn sie ausgeführt werden, ein Verfahren implementieren oder eine Vorrichtung realisieren von einem der Beispiele 1-16.
  • Die Ablaufdiagramme und Blockdiagramme in den beigefügten Figuren stellen die Architektur, die Funktionalität und die Operation von möglichen Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung dar. Diesbezüglich kann jeder Block in den Ablaufdiagrammen oder Blockdiagrammen ein Modul, ein Segment oder einen Teilbereich eines Codes darstellen, das oder der eine oder mehrere ausführbare Anweisungen zum Implementieren der spezifizierten logischen Funktion(en) umfasst. Es wird auch bemerkt werden, dass jeder Block der Blockdiagramme und/oder Ablaufdiagramme und Kombinationen von Blöcken in den Blockdiagrammen und/oder Ablaufdiagrammen durch spezielle hardwarebasierte Systeme, die die spezifizierten Funktionen oder Handlungen durchführen, oder Kombinationen von spezieller Hardware und Computeranweisungen implementiert sein können. Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf spezielle Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt erzeugen, das Anweisungsmittel enthält, die die Funktion/Handlung implementieren, die in dem Block oder den Blöcken des Ablaufdiagramms und/oder des Blockdiagramms spezifiziert ist.
  • Die hierin beschriebenen Systeme und Verfahren stellen ein flexibles und skalierbares Datenlager unter Verwendung einer neuen Datenverarbeitungsplattform zur Verfügung. Bei einigen Ausführungsformen setzen die beschriebenen Systeme und Verfahren eine Cloud-Infrastruktur ein, die cloudbasierte Speicherressourcen, Rechner- bzw. Computerressourcen und ähnliches unterstützt. Beispielhafte cloudbasierte Speicherressourcen bieten eine signifikante Speicherkapazität, die on-demand bzw. auf Anforderung bei niedrigen Kosten verfügbar ist. Weiterhin können diese cloudbasierten Speicherressourcen fehlertolerant und hochskalierbar sein, was bei privaten Datenspeichersystemen teuer zu erreichen sein kann. Beispielhafte cloudbasierte Computerressourcen sind on-demand verfügbar und für sie kann ein Preis basierend auf tatsächlichen Ausmaßen einer Nutzung der Ressourcen festgesetzt werden. Typischerweise wird die Cloud-Infrastruktur auf eine schnelle Weise dynamisch bereitgestellt, rekonfiguriert und außer Betrieb gesetzt.
  • Bei den beschriebenen Systemen und Verfahren verwendet ein Datenspeichersystem eine SQL-(strukturierte Anfragesprache)-basierte relationale Datenbank. Jedoch sind diese Systeme und Verfahren unter Verwendung von irgendeiner Datenspeicherarchitektur und unter Verwendung von irgendeiner Sprache, um Daten innerhalb der Datenspeicherungs- und -wiedergewinnungsplattform zu speichern und wiederzugewinnen, auf irgendeinen Typ von Datenbank und irgendeinen Typ von Datenspeicherungs- und -wiedergewinnungsplattform anwendbar. Die hierin beschriebenen Systeme und Verfahren stellen weiterhin ein mandantenfähiges System zur Verfügung, das eine Isolation von Computerressourcen und Daten zwischen unterschiedlichen Kunden/Klienten und zwischen unterschiedlichen Anwendern innerhalb desselben Kunden/Klienten unterstützt.
  • Verschiedene Techniken oder bestimmte Aspekte oder Teilbereiche davon können die Form eines Programmcodes (d.h. Anweisungen) annehmen, der in konkreten Medien verkörpert ist, wie beispielsweise Floppydisks, CD-ROMs, Festplattenlaufwerken, einem nichtflüchtigen computerlesbaren Speichermedium oder irgendeinem anderen maschinenlesbaren Speichermedium, wobei dann, wenn der Programmcode in eine Maschine geladen und durch diese ausgeführt wird, wie beispielsweise einen Computer, die Maschine eine Vorrichtung zum Ausführen der verschiedenen Techniken wird. Im Fall einer Programmcodeausführung auf programmierbaren Computern kann die Computervorrichtung einen Prozessor, ein Speichermedium, das durch den Prozessor lesbar ist (der einen flüchtigen und nichtflüchtigen Speicher und/oder Speicherelemente enthält), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung enthalten. Der flüchtige und der nichtflüchtige Speicher und/oder die Speicherelemente können ein RAM, ein EPROM, ein Speicherstück, ein optisches Laufwerk, ein magnetisches Festplattenlaufwerk oder ein anderes Medium zum Speichern elektronischer Daten sein. Ein oder mehrere Programme, die die verschiedenen Techniken implementieren oder verwenden, die hierin beschrieben sind, können eine Anwendungsprogrammierschnittstelle (API), wiederverwendbare Steuerungen und ähnliches verwenden. Solche Programme können in einer verfahrensmäßigen, funktionellen, objektorientierten Programmiersprache auf hoher Ebene implementiert sein, um mit einem Computersystem zu kommunizieren. Jedoch kann (können) das Programm (die Programme) in Assembler- oder Maschinensprache implementiert sein, wenn es erwünscht ist. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein und mit Hardwareimplementierungen kombiniert sein.
  • Es sollte verstanden werden, dass viele der in dieser Beschreibung beschriebenen funktionellen Einheiten als eine oder mehrere Komponenten oder Module implementiert sein können, die Ausdrücke sind, die verwendet werden, um ihre Implementierungsunabhängigkeit spezieller hervorzuheben. Beispielsweise kann eine Komponente oder ein Modul als eine Hardwareschaltung implementiert sein, die kundenspezifische Schaltungen sehr hoher Integration (VLSI) oder Gate-Arrays, Standard-Halbleiter, wie beispielsweise Logikchips, Transistoren oder andere diskrete Komponenten umfasst. Eine Komponente kann auch in programmierbaren Hardwarevorrichtungen, wie beispielsweise feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder ähnlichem implementiert sein.
  • Komponenten können auch in Software zur Ausführung durch verschiedene Typen von Prozessoren implementiert sein. Eine identifizierte Komponente eines ausführbaren Codes kann beispielsweise einen oder mehrere physikalische oder logische Blöcke von Computeranweisungen umfassen, die beispielsweise als ein Objekt, eine Prozedur oder eine Funktion organisiert sein können. Nichtsdestoweniger müssen die ausführbaren einer identifizierten Komponente nicht physikalisch zusammen angeordnet sein, sondern können getrennte Anweisungen umfassen, die an unterschiedlichen Standorten gespeichert sind, die dann, wenn sie logisch miteinander verbunden werden, die Komponente umfassen und den angegebenen Zweck für die Komponente erreichen.
  • Tatsächlich kann eine Komponente eines ausführbaren Codes eine einzelne Anweisung oder viele Anweisungen sein und kann sogar über mehrere unterschiedliche Codesegmente, unter unterschiedlichen Programmen und quer über mehrere Speichervorrichtungen verteilt sein. Gleichermaßen können Operationsdaten hierin innerhalb von Komponenten identifiziert und dargestellt sein und können in irgendeiner geeigneten Form verkörpert und innerhalb von irgendeinem geeigneten Typ einer Datenstruktur organisiert sein. Die Operationsdaten können als eine einzelne Datengruppe gesammelt werden oder können über unterschiedliche Standorte, einschließlich über unterschiedliche Speichervorrichtungen, verteilt sein und können wenigstens teilweise lediglich als elektronische Signale auf einem System oder Netzwerk existieren. Die Komponenten können passiv oder aktiv sein, einschließlich Agenten, die betreibbar sind, um erwünschte Funktionen durchzuführen.
  • Eine Bezugnahme in dieser gesamten Beschreibung auf „ein Beispiel“ bedeutet, dass ein besonderes Merkmal, eine besondere Struktur oder eine besondere Eigenschaft, welche in Verbindung mit dem Beispiel beschrieben ist, in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit sind Erscheinungen der Phrase „bei einem Beispiel“ an verschiedenen Stellen in dieser gesamten Beschreibung nicht notwendigerweise alle bezugnehmend auf dieselbe Ausführungsform.
  • Wie sie hierin verwendet sind, kann eine Vielzahl von Elementen, strukturellen Elementen, Kompositionselementen und/oder Materialien der Annehmlichkeit halber in einer gemeinsamen Liste präsentiert werden. Jedoch sollten diese Listen ausgelegt werden, als ob jedes Element der Liste individuell als separates und einzigartiges Element identifiziert ist. Somit sollte kein individuelles Element einer solchen Liste als tatsächlich äquivalent für irgendein anderes Element derselben Liste einzig basierend auf seiner Präsentation in einer gemeinsamen Gruppe ohne Anzeichen für das Gegenteil ausgelegt werden. Zusätzlich kann auf verschiedene Ausführungsformen und Beispiele der vorliegenden Offenbarung hierin zusammen mit Alternativen für die verschiedenen Komponenten davon Bezug genommen werden. Es wird verstanden, dass solche Ausführungsformen, Beispiele und Alternativen nicht als tatsächliche Äquivalente füreinander auszulegen sind, sondern als separate und autonome Darstellungen der vorliegenden Offenbarung anzusehen sind.
  • Obwohl das Vorangehende in einigem Detail zu Zwecken der Klarheit beschrieben worden ist, wird es offensichtlich werden, dass bestimmte Änderungen und Modifikationen durchgeführt werden können, ohne von den Prinzipien davon abzuweichen. Es sollte bemerkt werden, dass es viele alternative Arten zum Implementieren von sowohl den Prozessen als auch den Vorrichtungen gibt, die hierin beschrieben sind. Demgemäß sind die vorliegenden Ausführungsformen als illustrativ und nicht als beschränkend anzusehen.
  • Fachleute auf dem Gebiet werden erkennen, dass viele Änderungen an den Details der oben beschriebenen Ausführungsformen durchgeführt werden können, ohne von den zugrundeliegenden Prinzipien der Offenbarung abzuweichen. Der Schutzbereich der vorliegenden Offenbarung soll daher nur von den folgenden Ansprüchen bestimm sein.
  • Ein Verfahren für ein Multicluster-Lager enthält ein Zuteilen einer Vielzahl von Computerclustern als Teil eines virtuellen Lagers. Die Computercluster werden verwendet, um auf Anfragen zuzugreifen und diese durchzuführen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen. Das Verfahren enthält ein Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern. Jedes der Vielzahl von Computerclustern des virtuellen Lagers empfängt eine Vielzahl von Anfragen, so dass die Rechenlast über die unterschiedlichen Cluster ausgebreitet wird. Das Verfahren enthält auch ein dynamisches Hinzufügen von Computerclustern zu und ein dynamisches Entfernen von Computerclustern von dem virtuellen Lager, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62328943 [0001]

Claims (36)

  1. System, umfassend: Mittel zum Zuteilen einer Vielzahl von Computerclustern als Teil einer virtuellen universellen Datenbank bzw. eines virtuellen Lagers zum Zugreifen auf Anfragen und Durchführen von ihnen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen; Mittel zum Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern, wobei eine Vielzahl von Anfragen zu jedem der Vielzahl von Computerclustern des virtuellen Lagers bereitgestellt wird; und Mittel zum dynamischen Hinzufügen von Computerclustern zu und Entfernen von Computerclustern von dem virtuellen Lager, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern.
  2. System nach Anspruch 1, wobei die Vielzahl von Computerclustern unabhängig von der einen oder den mehreren Cloud-Speicherressourcen zugeteilt wird, so dass die Mittel zum dynamischen Hinzufügen und Entfernen von Computerclustern eine Anzahl von Computerclustern ohne Erhöhen oder Erniedrigen der einen oder mehreren Cloud-Speicherressourcen dynamisch vergrößern und verkleinern.
  3. System nach Anspruch 1, wobei die Mittel zum dynamischen Hinzufügen von Computerclustern zu und Entfernen von Computerclustern von dem virtuellen Lager basierend auf der Arbeitslast folgendes umfassen: Mittel zum Bestimmen, ob eine Anfrage verarbeitet werden kann, während eine Leistungskennzahl für die Anfrage erfüllt ist; und Mittel zum Auslösen einer Inbetriebnahme eines neuen Computerclusters in Reaktion auf ein Bestimmen, dass die Anfrage in Kombination mit einer aktuellen Arbeitslast nicht zulässt, dass ein oder mehrere aktuell zugeteilte Computercluster die Leistungskennzahl erfüllen.
  4. System nach Anspruch 1, wobei die Mittel zum dynamischen Hinzufügen von Computerclustern zu und Entfernen von Computerclustern von dem virtuellen Lager basierend auf der Arbeitslast folgendes umfassen: Mittel zum Bestimmen, ob eine aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, während eine Leistungskennzahl erfüllt wird; und Mittel zur Außerbetriebnahme von wenigstens einem Computercluster der Vielzahl von Computerclustern in Reaktion auf ein Bestimmen, dass die Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist.
  5. System nach Anspruch 1, wobei die Mittel zum Bereitstellen von Anfragen für die virtuellen Lager zu jedem der Vielzahl von Computerclustern eines oder mehreres von folgendem umfasst: Mittel zum Führen von Anfragen basierend auf einer Session, von der die Anfrage entstand; Mittel zum Führen von Anfragen basierend auf einer Clusterverfügbarkeit; oder Mittel zum Führen von Anfragen basierend auf einer Verfügbarkeit von Clusterressourcen, um eine Anfrage auszuführen.
  6. Computerprogramm für ein Multicluster-Lager, umfassend Anweisung, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren Operationen durchführt oder durchführen, wobei die Operationen folgendes umfassen: Zuteilen einer Vielzahl von Computerclustern als Teil einer virtuellen universellen Datenbank bzw. eines virtuellen Lagers zum Zugreifen auf Anfragen und Durchführen von ihnen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen; Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern, wobei eine Vielzahl von Anfragen zu jedem der Vielzahl von Computerclustern des virtuellen Lagers bereitgestellt wird; und dynamisches Hinzufügen von Computerclustern zu und Entfernen von Computerclustern von dem virtuellen Lager, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern.
  7. Computerprogramm nach Anspruch 6, wobei die Vielzahl von Computerclustern unabhängig von der einen oder den mehreren Cloud-Speicherressourcen zugeteilt wird, so dass die Anzahl von Computerclustern ohne Erhöhen oder Erniedrigen der einen oder mehreren Cloud-Speicherressourcen vergrößert und verkleinert werden kann.
  8. Computerprogramm nach Anspruch 6, wobei die Operationen weiterhin ein Bestimmen der Arbeitslast für die Vielzahl von Computerclustern umfassen, wobei ein Bestimmen der Arbeitslast ein Bestimmen einer Verfügbarkeit von einem oder mehreren von folgendem umfasst: Prozessorressourcen für jedes der Vielzahl von Computerclustern; und Speicherressourcen für jedes der Vielzahl von Computerclustern.
  9. Computerprogramm nach Anspruch 6, wobei ein dynamisches Hinzufügen von Computerclustern zu dem virtuellen Lager basierend auf der Arbeitslast folgendes umfasst: Bestimmen, ob eine Anfrage verarbeitet werden kann, während eine Leistungskennzahl für die Anfrage erfüllt wird; und Auslösen einer Inbetriebnahme eines neuen Computerclusters in Reaktion auf ein Bestimmen, dass die Anfrage in Kombination mit einer aktuellen Arbeitslast nicht zulässt, dass ein oder mehrere aktuell zugeteilte Computercluster die Leistungskennzahl erfüllen.
  10. Computerprogramm nach Anspruch 9, wobei die Operationen ein Bestimmen umfassen, ob die Anfrage verarbeitet werden kann, für jede Anfrage, die zu dem Computercluster gerichtet ist, so dass die Leistungskennzahl für jede Anfrage erfüllt wird.
  11. Computerprogramm nach Anspruch 9, wobei die Leistungskennzahl eine Dienstausmaßübereinkunft umfasst, die durch einen Kunden akzeptiert ist.
  12. Computerprogramm nach Anspruch 9, wobei die Leistungskennzahl eine maximale Zeitperiode umfasst, für die die Anfrage in eine Warteschlange gebracht sein wird.
  13. Computerprogramm nach Anspruch 6, wobei ein dynamisches Hinzufügen von Computerclustern ein Hinzufügen von Computerclustern bis hinauf zu einer vorbestimmten maximalen Anzahl von Computerclustern umfasst.
  14. Computerprogramm nach Anspruch 6, wobei ein dynamisches Entfernen von Computerclustern ein Entfernen von Computerclustern bis hinab zu einer vorbestimmten minimalen Anzahl von Computerclustern umfasst.
  15. Computerprogramm nach Anspruch 6, wobei ein Entfernen von Computerclustern basierend auf der Arbeitslast folgendes umfasst: Bestimmen, ob eine aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, während eine Leistungskennzahl erfüllt wird; und Außerbetriebnahme von wenigstens einem Computercluster der Vielzahl von Computerclustern in Reaktion auf ein Bestimmen, dass die Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist.
  16. Computerprogramm nach Anspruch 15, wobei eine Außerbetriebnahme des wenigstens einen Computerclusters folgendes umfasst: Verhindern eines Bereitstellens zusätzlicher Anfragen zu dem wenigstens einen Computercluster; Zulassen, dass das wenigstens eine Computercluster aktuell zugeordnet Anfragen fertigstellt; und Freisetzen von einer oder mehreren Ressourcen entsprechend dem wenigstens einen Computercluster auf eine Fertigstellung der aktuell zugeordneten Anfragen hin.
  17. Computerprogramm nach Anspruch 15, wobei: ein Bestimmen, ob die aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, weiterhin ein Bestimmen umfasst, ob eine historische Arbeitslast für eine Zeitperiode, die bis zur aktuellen Zeit führt, durch eines weniger als die Vielzahl von Computerclustern bedienbar war, während die Leistungskennzahl erfüllt war; und wobei eine Außerbetriebnahme des wenigstens einen Computerclusters eine Außerbetriebnahme in Reaktion auf ein Bestimmen umfasst, dass die historische Arbeitslast für die Zeitperiode durch eines weniger als die Vielzahl von Computerclustern bedienbar war.
  18. Computerprogramm nach Anspruch 6, wobei ein Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern ein Führen von Anfragen basierend auf einer Session umfasst, von der die Anfrage entstand.
  19. Computerprogramm nach Anspruch 6, wobei ein Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern ein Führen von Anfragen basierend auf einer Arbeitslast von jedem der Vielzahl von Computerclustern umfasst.
  20. Computerprogramm nach Anspruch 6, wobei ein Zuteilen der Vielzahl von Computerclustern ein Zuteilen von wenigstens zwei Computerclustern in unterschiedlichen Verfügbarkeitszonen umfasst.
  21. Multicluster-Verarbeitungsplattformsystem, wobei das System folgendes umfasst: Cloud-Speicherressourcen zum Speichern von Datenbankdaten; Prozessorressourcen zum Zugreifen auf Anfragen und Durchführen von ihnen gegenüber den Datenbankdaten in der Cloud-Speicherressource; einen Ressourcenmanager, der konfiguriert ist, um: eine Vielzahl von Computerclustern als Teil einer virtuellen universellen Datenbank bzw. eines virtuellen Lagers zuzuteilen; Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern bereitzustellen, wobei eine Vielzahl von Anfragen zu jedem der Vielzahl von Computerclustern bereitgestellt wird; und Computercluster dynamisch hinzuzufügen zu und Computercluster dynamisch zu entfernen von dem virtuellen Lager, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern.
  22. System nach Anspruch 21, wobei der Ressourcenmanager die Vielzahl von Computerclustern unabhängig von der einen oder den mehreren Cloud-Speicherressourcen zuteilt, so dass die Anzahl von Computerclustern ohne Erhöhen oder Erniedrigen der einen oder mehreren Cloud-Speicherressourcen vergrößert und verkleinert werden kann.
  23. System nach Anspruch 21, wobei der Ressourcenmanager weiterhin konfiguriert ist, um die Arbeitslast für die Vielzahl von Computerclustern zu bestimmen, wobei der Ressourcenmanager die Arbeitslast durch Bestimmen einer Verfügbarkeit von einem oder mehreren von folgendem bestimmt: Prozessorressourcen für jeden der Vielzahl von Computerclustern; Speicherressourcen für jeden der Vielzahl von Computerclustern; und Vorhersagen von minimalen Ressourcen, die erforderlich sind, um eine spezifische Anfrage zu verarbeiten.
  24. System nach Anspruch 21, wobei der Ressourcenmanager konfiguriert ist, um Computercluster basierend auf der Arbeitslast dynamisch zu dem virtuellen Lager hinzuzufügen durch: Bestimmen, ob eine Anfrage verarbeitet werden kann, während eine Leistungskennzahl für die Anfrage erfüllt wird; und Auslösen einer Inbetriebnahme eines neuen Computerclusters in Reaktion auf ein Bestimmen, dass die Anfrage in Kombination mit einer aktuellen Arbeitslast nicht zulässt, dass ein oder mehrere aktuell zugeteilte Computercluster die Leistungskennzahl erfüllen.
  25. System nach Anspruch 24, wobei der Ressourcenmanager bestimmt, ob die Anfrage während einer Erfüllung der Leistungskennzahl für jede zum virtuellen Lager gerichtete Anfrage so verarbeitet werden kann, dass die Leistungskennzahl für jede Anfrage erfüllt wird.
  26. System nach Anspruch 21, wobei der Ressourcenmanager konfiguriert ist, um Computercluster basierend auf der Arbeitslast dynamisch zu entfernen durch: Bestimmen, ob eine aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, während eine Leistungskennzahl erfüllt ist; und eine Außerbetriebnahme von wenigstens einem Computercluster der Vielzahl von Computerclustern in Reaktion auf ein Bestimmen, dass die Arbeitslast durch eines weniger als die Vielzahl von Computercluster bedienbar ist.
  27. System nach Anspruch 26, wobei der Ressourcenmanager konfiguriert ist, um das wenigstens eine Computercluster außer Betrieb zu nehmen durch: Verhindern eines Bereitstellens zusätzlicher Anfragen zu dem wenigstens einen Computercluster; Zulassen, dass das wenigstens eine Computercluster aktuell zugeordnete Anfragen fertigstellt; und Freisetzen von einer oder mehreren Ressourcen entsprechend dem wenigstens einen Computercluster auf eine Fertigstellung der aktuell zugeordneten Anfragen hin.
  28. System nach Anspruch 26, wobei: ein Bestimmen, ob die aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, weiterhin ein Bestimmen umfasst, ob eine historische Arbeitslast für eine Zeitperiode, die bis zur aktuellen Zeit führt, durch eines weniger als die Vielzahl von Computerclustern bedienbar war, während die Leistungskennzahl erfüllt war; und wobei eine Außerbetriebnahme des wenigstens einen Computerclusters eine Außerbetriebnahme in Reaktion auf ein Bestimmen umfasst, dass die historische Arbeitslast für die Zeitperiode durch eines weniger als die Vielzahl von Computerclustern bedienbar war.
  29. System nach Anspruch 2, wobei ein Bereitstellen von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern ein Führen von Anfragen basierend auf einer Session umfasst, von der die Anfrage entstand.
  30. Nichtflüchtige computerlesbare Medien, die Anweisungen speichern, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen, dass die Prozessoren: eine Vielzahl von Computerclustern als Teil einer virtuellen universellen Datenbank bzw. eines virtuellen Lagers zum Zugreifen auf Anfragen und Durchführen von ihnen gegenüber einer oder mehreren Datenbanken in einer oder mehreren Cloud-Speicherressourcen zuteilen; und Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern weiterleiten, wobei eine Vielzahl von Anfragen zu jedem der Vielzahl von Computerclustern des virtuellen Lagers bereitgestellt wird; wobei ein Weiterleiten von Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern eine Führen von Anfragen basierend auf einer Session umfasst, von der die Anfrage entstand, so dass Anfragen von derselben Session durch eine Vorgabe zu einem selben Computercluster geführt werden.
  31. Computerlesbare Medien nach Anspruch 30, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren Anfragen für das virtuelle Lager zu jedem der Vielzahl von Computerclustern basierend auf einer Arbeitslast von jedem der Vielzahl von Computerclustern weiterleiten.
  32. Computerlesbare Medien nach Anspruch 30, wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren wenigstens zwei Computercluster in unterschiedlichen Verfügbarkeitszonen zuteilen.
  33. Computerlesbare Medien nach Anspruch 30, wobei die Anweisungen weiterhin veranlassen, dass der eine oder die mehreren Prozessoren Computercluster dynamisch hinzufügen zu oder Computercluster dynamisch entfernen von dem virtuellen Lager, wie es nötig ist, basierend auf einer Arbeitslast der Vielzahl von Computerclustern.
  34. Computerlesbare Medien nach Anspruch 30, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren die Vielzahl von Computerclustern unabhängig von der einen oder den mehreren Cloud-Speicherressourcen so zuteilen, dass eine Anzahl von Computerclustern ohne Erhöhen oder Erniedrigen der einen oder mehreren Cloud-Speicherressourcen vergrößert und verkleinert wird.
  35. Computerlesbare Medien nach Anspruch 30, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren Computercluster zum virtuellen Lager basierend auf der Arbeitslast dynamisch hinzufügen durch: Bestimmen, ob eine Anfrage verarbeitet werden kann, während eine Leistungskennzahl für die Anfrage erfüllt ist, und Auslösen einer Inbetriebnahme eines neuen Computerclusters in Reaktion auf ein Bestimmen, dass die Anfrage in Kombination mit einer aktuellen Arbeitslast nicht zulässt, das ein oder mehrere aktuell zugeteilte Computercluster die Leistungskennzahl erfüllen.
  36. Computerlesbare Medien nach Anspruch 30, wobei die Anweisungen veranlassen, dass der eine oder die mehreren Prozessoren Computercluster von dem virtuellen Lager basierend auf der Arbeitslast dynamisch entfernen durch: Bestimmen, ob eine aktuelle Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist, während eine Leistungskennzahl erfüllt wird; und eine Außerbetriebnahme von wenigstens einem Computercluster der Vielzahl von Computerclustern in Reaktion auf ein Bestimmen, dass die Arbeitslast durch eines weniger als die Vielzahl von Computerclustern bedienbar ist.
DE202017007217.3U 2016-04-28 2017-04-28 Multicluster-Lager Active DE202017007217U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662328943P 2016-04-28 2016-04-28
US62/328,943 2016-04-28

Publications (1)

Publication Number Publication Date
DE202017007217U1 true DE202017007217U1 (de) 2020-02-06

Family

ID=60158363

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202017007217.3U Active DE202017007217U1 (de) 2016-04-28 2017-04-28 Multicluster-Lager

Country Status (8)

Country Link
US (9) US11615117B2 (de)
EP (1) EP3449363A4 (de)
JP (3) JP7271059B2 (de)
CN (1) CN109075994B (de)
AU (1) AU2017258659B2 (de)
CA (1) CA3021963C (de)
DE (1) DE202017007217U1 (de)
WO (1) WO2017190058A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180060133A1 (en) 2016-09-01 2018-03-01 Amazon Technologies, Inc. Event-driven resource pool management
JP7080033B2 (ja) * 2017-11-07 2022-06-03 株式会社日立製作所 タスク管理システム、タスク管理方法、及びタスク管理プログラム
JP6614280B1 (ja) * 2018-06-05 2019-12-04 富士通株式会社 通信装置および通信方法
US12013856B2 (en) * 2018-08-13 2024-06-18 Amazon Technologies, Inc. Burst performance of database queries according to query size
US10979359B1 (en) * 2018-09-28 2021-04-13 Amazon Technologies, Inc. Polling resource management system
US20200183948A1 (en) * 2018-12-07 2020-06-11 Capital One Services, Llc Provisioning compute and data resources within an elastic data warehouse system
CN110166282B (zh) * 2019-04-16 2020-12-01 苏宁云计算有限公司 资源分配方法、装置、计算机设备和存储介质
US11308100B2 (en) 2019-06-25 2022-04-19 Amazon Technologies, Inc. Dynamically assigning queries to secondary query processing resources
US10719517B1 (en) * 2019-12-18 2020-07-21 Snowflake Inc. Distributed metadata-based cluster computing
US10769167B1 (en) * 2019-12-20 2020-09-08 Lifebit Biotech Limited Federated computational analysis over distributed data
US11048716B1 (en) * 2020-01-31 2021-06-29 Snowflake Inc. Managed virtual warehouses for tasks
CN111367672A (zh) * 2020-03-05 2020-07-03 北京奇艺世纪科技有限公司 数据缓存方法、装置、电子设备及计算机存储介质
CN111696344B (zh) * 2020-04-21 2021-03-23 交通运输部公路科学研究院 一种智能云交通控制系统及交通控制方法
EP4104158A4 (de) * 2020-04-21 2023-08-09 Zeku, Inc. Skalierbare architektur auf datenebene für drahtlose kommunikation
US10860381B1 (en) * 2020-05-14 2020-12-08 Snowflake Inc. Flexible computing
US11914624B2 (en) 2020-12-10 2024-02-27 Coupang Corp. Systems and methods for managing connections in scalable clusters
US11762860B1 (en) 2020-12-10 2023-09-19 Amazon Technologies, Inc. Dynamic concurrency level management for database queries
US11914595B2 (en) 2021-07-13 2024-02-27 Capital One Services, Llc Virtual warehouse query monitoring and reporting
US11494413B1 (en) 2021-07-13 2022-11-08 Capital One Services, Llc Query alerts generation for virtual warehouse
US11669529B2 (en) * 2021-07-13 2023-06-06 Capital One Services, Llc Dynamic query allocation to virtual warehouses
US11392715B1 (en) 2021-12-14 2022-07-19 Capital One Services, Llc Data certification process for cloud database platform
US11829367B2 (en) 2021-12-14 2023-11-28 Capital One Services, Llc Data certification process for updates to data in cloud database platform
US11392587B1 (en) 2021-12-14 2022-07-19 Capital One Services, Llc Rule generation and data certification onboarding process for cloud database platform
WO2023150039A1 (en) * 2022-02-01 2023-08-10 Capital One Services, Llc Optimization of virtual warehouse computing resource allocation
US11693857B1 (en) 2022-06-22 2023-07-04 Keebo Inc. Managed tuning for data clouds
US20240104054A1 (en) * 2022-09-22 2024-03-28 Docusign, Inc. Smart content load
CN116226095A (zh) * 2023-05-08 2023-06-06 中用科技有限公司 一种无共享架构数据库的存算分离系统

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2172514C (en) 1993-09-27 2000-02-22 Gary Hallmark Method and apparatus for parallel processing in a database system
US5574900A (en) * 1994-02-25 1996-11-12 International Business Machines Corporation System and method for optimizing parallel processing of database queries
US5692182A (en) * 1995-10-05 1997-11-25 International Business Machines Corporation Bufferpool coherency for identifying and retrieving versions of workfile data using a producing DBMS and a consuming DBMS
JP2005056077A (ja) * 2003-08-01 2005-03-03 Hitachi Ltd データベース制御方法
US7415487B2 (en) * 2004-12-17 2008-08-19 Amazon Technologies, Inc. Apparatus and method for data warehousing
US7757214B1 (en) * 2005-11-10 2010-07-13 Symantec Operating Coporation Automated concurrency configuration of multi-threaded programs
US7783605B2 (en) * 2005-12-30 2010-08-24 Microsoft Corporation Calculating cluster availability
US8296303B2 (en) 2008-11-20 2012-10-23 Sap Ag Intelligent event query publish and subscribe system
US8296419B1 (en) * 2009-03-31 2012-10-23 Amazon Technologies, Inc. Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US8285709B2 (en) * 2009-05-12 2012-10-09 Teradata Us, Inc. High-concurrency query operator and method
US8473506B2 (en) * 2009-05-20 2013-06-25 Oracle International Corporation Type system for building extensible business applications
US8335765B2 (en) * 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
US20110126197A1 (en) 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US8316010B2 (en) 2010-03-08 2012-11-20 Nec Laboratories America, Inc. Systems and methods for SLA-aware scheduling in cloud computing
JP5513997B2 (ja) * 2010-06-07 2014-06-04 日本電信電話株式会社 通信システムおよび通信システム更新方法
US8719415B1 (en) * 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
US8832130B2 (en) * 2010-08-19 2014-09-09 Infosys Limited System and method for implementing on demand cloud database
US20120102189A1 (en) * 2010-10-25 2012-04-26 Stephany Burge Dynamic heterogeneous computer network management tool
CN102467570B (zh) * 2010-11-17 2014-03-12 日电(中国)有限公司 用于分布式数据仓库的连接查询系统和方法
US20130205028A1 (en) 2012-02-07 2013-08-08 Rackspace Us, Inc. Elastic, Massively Parallel Processing Data Warehouse
JP5735899B2 (ja) * 2011-10-25 2015-06-17 日本電信電話株式会社 サービス提供システム、ファイル更新方法、および分散管理装置
US9122535B2 (en) 2011-11-22 2015-09-01 Netapp, Inc. Optimizing distributed data analytics for shared storage
JP6144700B2 (ja) * 2011-12-23 2017-06-07 アマゾン・テクノロジーズ・インコーポレーテッド 半構造データのためのスケーラブルな分析プラットフォーム
US8756609B2 (en) 2011-12-30 2014-06-17 International Business Machines Corporation Dynamically scaling multi-tier applications vertically and horizontally in a cloud environment
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム
US9027024B2 (en) * 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9379995B2 (en) * 2012-09-11 2016-06-28 Vmware, Inc. Resource allocation diagnosis on distributed computer systems based on resource hierarchy
EP2731040B1 (de) 2012-11-08 2017-04-19 CompuGroup Medical SE Computersystem zum Speichern und Aufrufen von verschlüsselten Datenposten, Client-Computer, Computerprogrammprodukt und computerimplementiertes Verfahren
US9449038B2 (en) * 2012-11-26 2016-09-20 Amazon Technologies, Inc. Streaming restore of a database from a backup system
US10394611B2 (en) * 2012-11-26 2019-08-27 Amazon Technologies, Inc. Scaling computing clusters in a distributed computing system
US9390129B2 (en) * 2013-01-30 2016-07-12 Oracle International Corporation Scalable and adaptive evaluation of reporting window functions
US9158812B2 (en) * 2013-01-30 2015-10-13 Oracle International Corporation Enhancing parallelism in evaluation ranking/cumulative window functions
US8972337B1 (en) * 2013-02-21 2015-03-03 Amazon Technologies, Inc. Efficient query processing in columnar databases using bloom filters
US9063710B2 (en) * 2013-06-21 2015-06-23 Sap Se Parallel programming of in memory database utilizing extensible skeletons
US9251003B1 (en) 2013-08-14 2016-02-02 Amazon Technologies, Inc. Database cache survivability across database failures
FR3011413A1 (fr) * 2013-09-30 2015-04-03 Orange Procede d'acces d'un utilisateur a au moins un service de communication fourni par l'intermediaire d'un centre informatique d'un systeme d'informatique en nuage
US9892163B2 (en) 2013-11-26 2018-02-13 Sap Se Optimal operator placement for distributed query processing
US10325032B2 (en) * 2014-02-19 2019-06-18 Snowflake Inc. Resource provisioning systems and methods
JP6085265B2 (ja) * 2014-02-27 2017-02-22 日本電信電話株式会社 分散処理システム
US10248688B2 (en) * 2014-06-26 2019-04-02 Sap Se Annotations for parallelization of user-defined functions with flexible partitioning
US9454571B2 (en) * 2014-06-26 2016-09-27 Sap Se Optimization of parallelization of user-defined functions with flexible partitioning
JP6455035B2 (ja) 2014-09-10 2019-01-23 富士通株式会社 負荷分散管理装置、制御方法およびプログラム
US9860316B2 (en) * 2014-09-19 2018-01-02 Facebook, Inc. Routing network traffic based on social information
CN104484472B (zh) * 2014-12-31 2018-10-16 天津南大通用数据技术股份有限公司 一种混合多种异构数据源的数据库集群及实现方法
CN105404690B (zh) * 2015-12-16 2019-06-21 华为技术服务有限公司 查询数据库的方法和装置

Also Published As

Publication number Publication date
JP2022069497A (ja) 2022-05-11
US20200257706A1 (en) 2020-08-13
US20200218736A1 (en) 2020-07-09
US20200257705A1 (en) 2020-08-13
CN109075994B (zh) 2022-04-05
EP3449363A4 (de) 2019-10-02
WO2017190058A1 (en) 2017-11-02
US11675815B1 (en) 2023-06-13
US20230259530A1 (en) 2023-08-17
US11620313B2 (en) 2023-04-04
CA3021963C (en) 2024-05-28
US11593404B2 (en) 2023-02-28
CN109075994A (zh) 2018-12-21
US11630850B2 (en) 2023-04-18
JP7271059B2 (ja) 2023-05-11
JP2024096963A (ja) 2024-07-17
US20210089560A1 (en) 2021-03-25
US11615117B2 (en) 2023-03-28
US11593403B2 (en) 2023-02-28
US20230169095A1 (en) 2023-06-01
AU2017258659B2 (en) 2020-05-14
US11615118B2 (en) 2023-03-28
US20210089559A1 (en) 2021-03-25
EP3449363A1 (de) 2019-03-06
AU2017258659A1 (en) 2018-11-22
JP2019519026A (ja) 2019-07-04
US11983198B2 (en) 2024-05-14
US20170316078A1 (en) 2017-11-02
US20240232226A1 (en) 2024-07-11
CA3021963A1 (en) 2017-11-02

Similar Documents

Publication Publication Date Title
DE202017007217U1 (de) Multicluster-Lager
US10977245B2 (en) Batch data ingestion
DE102019133923B4 (de) Anwendungsverwendung in einem behältermanagementsystem
DE202015009778U1 (de) Systeme zur Bereitstellung von Ressourcen
DE202020005734U1 (de) Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen
DE202020005682U1 (de) Automatisierte erneute Abfrageversuche in einer Datenbankumgebung
DE112010004931T5 (de) Mehrphasige Wiederherstellung von Dateisystemen mit SelektiverBedarfsweiser Verfügbarkeit von Daten(
DE202023101653U1 (de) Organisations- und cloudübergreifende automatisierte Datenpipelines
DE60037972T2 (de) Verfahren und Gerät zum Anbieten von Betriebsmitteln in einem Internet-Gerät

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years
R081 Change of applicant/patentee

Owner name: SNOWFLAKE INC., BOZEMAN, US

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

R151 Utility model maintained after payment of second maintenance fee after six years