-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich auf ein Computerprogrammprodukt, ein System und ein Verfahren zum Festlegen von Speicherebenen zum Platzieren von Datensätzen während des Ausführens von Aufgaben in einem Arbeitsablauf.
-
2. Beschreibung des Standes der Technik
-
Unternehmen verschieben Datenverarbeitungsoperationen, die eine umfangreiche Datenanalyse beinhalten, zur Cloud, wobei die Datenverarbeitung über verteilte Datenverarbeitungsknoten ausgeführt werden kann. Ein System zum Verwalten des Ausführens mehrerer Aufgaben über zahlreiche Datenverarbeitungsknoten ist als ApacheTM Hadoop® bekannt. (Bei Apache handelt es sich um ein Warenzeichen, und Hadoop ist ein weltweit eingetragenes Warenzeichen der Apache Software Foundation). Bei Hadoop handelt es sich um ein Open-Source-Softwareprojekt, das eine verteilte Verarbeitung großer Datensätze über Cluster von handelsüblichen Servern ermöglicht. Hadoop ist so ausgelegt, dass es von einem einzelnen Server zu tausenden Maschinen bei einem sehr hohen Grad an Fehlertoleranz skaliert werden kann. Die Hadoop-Struktur wird verwendet, um langlaufende Analyseaufträge an sehr großen Datensätzen durch verteilte Prozesse des Map-Reduce-Typs abzuwickeln.
-
Bei einigen verteilten Hadoop-Datenverarbeitungsumgebungen wird ein gemeinsam genutzter Backend-Speicher verwendet, der durch einen Speicher-Manager verwaltet wird, wobei jedem Datenverarbeitungsknoten ein Abschnitt des gemeinsam genutzten Speichers zugewiesen ist, der als lokaler Speicher des Datenverarbeitungsknoten wirkt. Die Speicherschicht kann eine Daten-Klassifizierung heiß/kalt verwenden, um festzulegen, wo Daten auf unterschiedlichen Speicherebenen abgelegt werden, so dass die „heißen“ Daten oder die Daten, auf die häufiger zugegriffen wird, auf der kostenintensiveren leistungsstärkeren Speicherebene platziert werden. Zu weiteren Optionen gehört Zuweisen von leistungsfähigeren Ebenen zu Datensätzen, die stärkere Garantien der Dienstgütevereinbarung (SLA) aufweisen oder auf Preisbildungsmodellen beruhen.
-
Es besteht ein Bedarf an verbesserten Techniken zum Zuweisen von Speicherebenen zu Aufgaben in einer verteilten Datenverarbeitungsumgebung.
-
KURZDARSTELLUNG
-
Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Festlegen von Speicherebenen zum Platzieren von Datensätzen während des Ausführens von Aufgaben in einem Arbeitsablauf bereitgestellt. Eine Darstellung eines Arbeitsablauf-Ausführungsmusters von Aufgaben für einen Auftrag, das eine Abhängigkeit der Aufgaben und der Datensätze angibt, an denen durch die Aufgaben agiert wird, wird verarbeitet. Es wird eine Zuweisung der Datensätze für die Aufgaben zu einer Mehrzahl von Speicherebenen anhand der Abhängigkeit der Aufgaben festgelegt, die in dem Arbeitsablauf-Ausführungsmuster angegeben ist, wobei eine leistungsstärkere Speicherebene Speichereinheiten mit schnellerem Zugriff enthält als eine verhältnismäßig leistungsschwächere Speicherebene. Ein Verschieben eines betreffenden Datensatzes von den Datensätzen, an dem durch eine betreffende Aufgabe von den Aufgaben agiert wird, der Gegenstand eines Ereignisses ist, zu einer zugewiesenen Speicherebene, die in der Zuweisung für den betreffenden Aufgabengegenstand angegeben ist, wird zeitlich geplant. Das Verschieben des Datensatzes wird zeitlich so geplant, dass es in Reaktion auf das Ereignis und in Bezug auf die betreffende Aufgabe ausgeführt wird.
-
KURZBESCHREIBUNG DER ZEICHNUNG
-
1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
-
2a veranschaulicht ein Beispiel eines Arbeitsablauf-Ausführungsplans.
-
2b veranschaulicht ein Beispiel eines Auftrags.
-
3 veranschaulicht eine Ausführungsform von Scheitelpunkt-Informationen der Aufgaben.
-
4 veranschaulicht eine Ausführungsform einer Speicherebenen-Zuweisung.
-
5 veranschaulicht eine Ausführungsform eines Planungsereignisses der Platzierung von Datensätzen.
-
6 veranschaulicht eine Ausführungsform von Operationen zum Zuweisen von Speicherebenen zu Aufgaben.
-
Die 7a und 7b veranschaulichen eine Ausführungsform von Operationen zum Festlegen einer zeitlichen Planung der Speicherebenen-Zuweisung für Datensätze.
-
8 veranschaulicht eine Ausführungsform von Operationen zum Verschieben von Datensätzen zu zugewiesenen Speicherebenen in Reaktion auf ein Aufgabenereignis.
-
9 zeigt eine Ausführungsform eines Cloud-Datenverarbeitungsknotens.
-
10 zeigt eine Ausführungsform einer Cloud-Datenverarbeitungsumgebung.
-
11 zeigt eine Ausführungsform von Schichten eines Abstraktionsmodells einer Cloud-Datenverarbeitungsumgebung.
-
DETAILLIERTE BESCHREIBUNG
-
Die beschriebenen Ausführungsformen stellen Techniken zum Festlegen einer Speicherebene aus einer Mehrzahl von Speicherebenen bereit, von denen jede einen unterschiedlichen Grad der Speicherleistungsfähigkeit bereitstellt, zum Verwenden für Aufgaben, die in verschiedenen Aufträgen ausgeführt werden, die ein Arbeitsablauf-Ausführungsmuster definieren. Ein Arbeitsablauf-Ausführungsmuster, das die Abhängigkeit von Aufgaben über Aufträge und eine Abhängigkeit über Aufträge angibt, wird verwendet, um die Zuweisung der Datensätze, an denen durch die Aufgaben agiert wird, zu den verschiedenen Speicherebenen festzulegen. Die Speicherebene kann dann das Verschieben der Datensätze zwischen den verschiedenen Ebenen in Reaktion auf unterschiedliche Aufgabenereignisse wie beispielsweise ein Beginnen oder Beenden von Aufgaben zeitlich planen. Regeln werden verwendet zum Festlegen der zeitlichen Planung der Platzierung von Datensätzen wie beispielsweise anhand der Verwandtschaft von Datensätzen, die Datensätze aufweisen, an denen durch dieselbe Aufgabe, durch mehrere Aufgaben gleichzeitig, durch mehrere Aufgaben, die eine Eingabe einer abhängigen Aufgabe bereitstellen, agiert wird, oder anhand weiterer Kriterien wie z.B. die optimale Platzierung anhand einer vorgegebenen Gebrauchsfunktion (wie z.B. Maximieren der insgesamt abgelaufenen Zeit über Arbeitsabläufe hinweg oder innerhalb von Arbeitsabläufen). Die Speicherebene setzt dann die Operation zum Platzieren des Datensatzes in Reaktion auf das Aufgabenereignis um und legt das zeitliche Planen der Platzierung des Datensatzes für das auftretende Aufgabenereignis fest.
-
1 veranschaulicht eine Ausführungsform einer verteilten Datenverarbeitungsumgebung 100, die in einem oder mehreren Datenverarbeitungsknoten, virtuellen Knoten und/oder physischen Knoten umgesetzt ist, die über ein Netzwerk Daten austauschen können wie z.B. eine Cloud-Datenverarbeitungsumgebung, die eine Anwendungsschicht 102 und eine Speicherschicht 104 zum Speichern von Datensätzen enthält, die durch Aufgaben verarbeitet werden, die in der Anwendungsschicht 102 ausgeführt werden. Alternativ können die Anwendungsschicht 102 und die Speicherschicht 104 in einer einzigen Datenverarbeitungseinheit oder in untereinander verbundenen Datenverarbeitungseinheiten umgesetzt sein. Die Anwendungsschicht 102 enthält einen Auftragsmanager 106, der den Ablauf des Ausführens eines oder mehrerer Aufträge 108 1, 108 2...108 n verwaltet, von denen jeder eine oder mehrere Aufgaben 110 1, 110 2...110 n enthält, die auszuführen sind. Jeder Auftrag 108 1, 108 2...108 n weist eine Sammlung von einem oder mehreren Aufgaben 110 1, 110 2...110 n auf. Eine Aufgabe weist eine Arbeitseinheit auf, die ausgeführt werden muss, und kann Aufgaben aufweisen, bei denen es sich um Teilaufgaben handelt, wobei Aufgaben gleichzeitig parallel oder sequenziell ablaufen können, wobei eine beendet werden muss, bevor eine weitere Aufgabe beginnt. Die Aufträge 108 1, 108 2...108 n können voneinander abhängig sein, wobei bestimmte der Aufgaben 110 1, 110 2...110 n in mehreren Aufträgen von einer Eingabe oder von dem Beenden von Aufgaben in einem anderen Auftrag abhängig sein können. Eine Aufgabe kann außerdem von dem Beenden einer Aufgabe in demselben Auftrag abhängen. Für sequenzielle Arbeitsabläufe muss eine bestimmte Teilmenge der Aufgaben 110 1, 110 2...110 n beendet werden, bevor die nächste abhängige Aufgabe in demselben oder einem anderen Auftrag 108 1, 108 2...108 n beginnen kann. Auf diese Weise können Aufgaben von dem Ausführen von Aufgaben in demselben oder in unterschiedlichen Aufträgen abhängig sein. Analyse-Arbeitslasten enthalten häufig Zwischen-Abhängigkeiten über Aufträge hinweg, da analytische Anfragen in eine Reihe von Stapelverarbeitungsaufträgen umgesetzt werden, wobei die Ausgabe eines Auftrags als Eingabe in einen nächsten Auftrag verwendet werden kann.
-
Ein Arbeitsablauf-Ausführungsmuster 200 stellt ein Ablaufmuster bereit, das den Ablauf des Ausführens von Aufgaben beschreibt, wie z.B. in einem Gerichteten Azyklischen Graphen (DAG) dargestellt. Das Arbeitsablauf-Ausführungsmuster 200 kann gemäß einer Hadoop-Struktur oder anderer Strukturen zum Verarbeiten von Arbeitsabläufen aufgebaut sein, die in der Technik bekannt sind. Das Arbeitsablauf-Ausführungsmuster 200 kann einen umfangreichen Auftrag der Datenanalyse oder andere Auftragstypen aufweisen.
-
Die Speicherschicht 104 verwaltet die Platzierung von Datensätzen, an denen durch die Aufgaben 110 1, 110 2...110 n in verschiedenen Speicherebenen 112 1, 112 2...112 n agiert wird. Auf diese Weise wird dem lokalen Speicher, der von den Datenverarbeitungsknoten verwendet wird, die die Aufgaben 110 1, 110 2...110 n in der Anwendungsschicht 102 ausführen, ein lokaler Speicher in einer der gemeinsam genutzten Speicherebenen 112 1, 112 2...112 n zugewiesen. Jede Speicherklasse kann eine andere Speichermanagementklasse aufweisen, die einen anderen Grad der Speicherleistungsfähigkeit bereitstellt, wobei eine leistungsfähigere Speicherebene 112 1, 112 2...112 n leistungsfähigere Speichereinheiten als eine leistungsschwächere Ebene enthält. Beispielsweise kann eine Ebene 112 1 mit höchster Leistungsfähigkeit Halbleiter-Datenträger (SSDs) mit schnellem Zugriff enthalten, wohingegen eine Ebene 112 2 mit mittlerer Leistungsfähigkeit Festplattenlaufwerke mit schnellem Zugriff enthalten kann und eine Ebene 112 n mit geringster Leistungsfähigkeit Festplattenlaufwerke mit langsamstem Zugriff enthalten kann.
-
Die Speicherschicht 104 enthält einen Speicherebenen-Manager 116 zum Verwalten der Platzierung von Datensätzen, an deren durch die Aufgaben 110 1, 110 2...110 n auf den Speicherebenen 112 1, 112 2...112 n in Reaktion auf Ereignisse der Aufgabenausführung agiert wird. Der Speicherebenen-Manager 116 kann von der Anwendungsschicht 100 das Arbeitsablauf-Ausführungsmuster 200 empfangen und aus dem Arbeitsablauf-Ausführungsmuster Speicherebenen-Zuweisungen 400 festlegen, die eine Zuweisung einer Speicherebene 112 1, 112 2...112 n zu jeder Aufgabe 110 1, 110 2...110 n in den Aufträgen 108 1, 108 2...108 n bereitstellen. Bei bestimmten Ausführungsformen werden die Datensätze, an denen durch eine Aufgabe 110 1, 110 2...110 n agiert wird, vorzugsweise auf der zugewiesenen Speicherebene 112 1, 112 2...112 n platziert. Der Speicherebenen-Manager 116 kann des Weiteren einen Zeitplan 500 zum Platzieren von Datensätzen erzeugen, der einen Zeitplan zum Verschieben von Datensätzen, an denen durch die Aufgaben agiert wird, zwischen den Speicherebenen 112 1, 112 2...112 n anhand von verschiedenen Ereignissen, die auftreten, oder von Zuständen der Aufgaben wie beispielsweise Beginnen einer Aufgabe, Beenden einer Aufgabe usw. bereitstellen.
-
Bei einer Ausführungsform kann der Speicherebenen-Manager 116 im Voraus den Zeitplan 500 zum Platzieren von Datensätzen zum Verwenden während des Ausführens von Aufgaben 110 1, 110 2...110 n durch die Anwendungsschicht 102 erzeugen. Bei einer alternativen Ausführungsform können die Festlegungen des Zeitplans 500 zum Platzieren von Datensätzen in Echtzeit erfolgen, während Aufgabenereignisse verarbeitet werden, um sie zum Zeitpunkt des Empfangens des Aufgabenereignisses umzusetzen.
-
Die Speichereinheiten, die zum Umsetzen der Speicherebenen 112 1, 112 2...112 n verwendet werden, können eine oder mehrere Speichereinheiten enthalten, die nach dem Stand der Technik bekannt sind wie beispielsweise untereinander verbundene Speichereinheiten, wobei die Speichereinheiten Festplattenlaufwerke, Halbleiter-Datenträger (SSDs) mit Halbleiter-Elektronik, EEPROMs (elektrisch löschbare programmierbare Festwertspeicher), Flash-Speicher, Flash-Plattenspeicher, Direktzugriffsspeicher-(RAM-)Datenträger, Speicherklassen-Speicher (SCM) usw., Phasenänderungs-Speicher (PCM), Widerstands-Direktzugriffsspeicher (RRAM), Spintransfer-Drehmoment-Speicher (STM-RAM), RAM mit leitender Brücke (CBRAM), magnetische Festplattenlaufwerke, optische Laufwerke, Band usw. aufweisen. Die Speichereinheiten in einer Speicherebene können möglicherweise als Redundantes Array unabhängiger Platten (RAID-Array), ein Just-a-Bunch-of-Disk-(JBOD-)Array oder in Form anderer Anordnungen organisiert sein. Die Speichereinheiten in jeder der Speicherebenen 112 1, 112 2...112 n können mit einem Profil der Speicherleistungsfähigkeit konsistent sein, das der Speicherebene zugehörig ist.
-
Die Anwendungsschicht 102 und die Speicherschicht 104 können in Computersystemen in einem oder mehreren Datenverarbeitungsknoten virtuell oder physisch umgesetzt sein, die über ein Netzwerk Daten austauschen können wie beispielsweise ein Speicherbereich-Netzwerk (SAN), ein Lokalbereichnetz (LAN), ein Intranet, das Internet, ein Weitbereichsnetz (WAN), ein Peer-zu-Peer-Netzwerk, ein drahtloses Netzwerk, ein arbitriertes Schleifen-Netz usw. Bei einer Ausführungsform kann die Datenverarbeitungsumgebung 100 eine Cloud-Datenverarbeitungsumgebung aufweisen, wobei Operationen über mehrere Datenverarbeitungsknoten verteilt erfolgen.
-
Es sind zwar bestimmte Anzahlen von Instanzen von Elementen gezeigt wie z.B. Aufträge, Aufgaben und Speicherebene usw., es kann jedoch eine beliebige Anzahl dieser Elemente vorhanden sein.
-
2a veranschaulicht ein Beispiel einer Arbeitsablauf-Ausführungsumgebung 200, die beispielsweise eine Mehrzahl von Aufträgen 202 1, 202 2, und 202 3 enthält. Der Arbeitsablauf 200 weist einen DAG auf, der den Ablauf des Ausführens von Aufgaben zeigt, die in dem Muster 200 die Scheitelpunkte, z.B. 300 i aufweisen. Bei dem Beispiel von 2a sind Aufgaben in unterschiedlichen Aufträgen von dem Ausführen und Beenden vorhergehender Aufgaben in demselben oder anderen Aufträgen abhängig, und Aufträge sind untereinander von anderen Aufträgen abhängig.
-
2b stellt ein Beispiel eines Auftrags 250 zum Verarbeiten einer Anfrage bereit, die vier Aufgaben enthält, eine erste Aufgabe Grep, bei der eine Operation Grep ausgeführt wird, bei der es sich um eine Aufgabe handelt, bei der Dokumente nach einer übereinstimmenden Zeichenfolge durchsucht werden, eine zweite Aufgabe Pagerank, bei der die Menge von Dokumenten, die durchsucht werden, gemäß einer Reihenfolge eingestuft werden, eine dritte Aufgabe Sort zum Sortieren der Zeichenfolgen, die sich aus der der Aufgabe Grep ergeben, und eine vierte Aufgabe Join zum Zusammenführen der Ausgaben der Operationen Sort und Pagerank anhand der Benutzer-Anfrage.
-
3 veranschaulicht eine Ausführungsform von Aufgaben-Scheitelpunkt-Informationen 300 für eine der Aufgaben, die in dem Arbeitsablauf des Arbeitsablauf-Ausführungsmusters 200 dargestellt sind, zu denen gehören: eine Scheitelpunkt-Kennung (ID) 302, die den Scheitelpunkt in dem Arbeitsablaufmuster 200 kennzeichnet; eine Auftrags-Kennung 304 des Auftrags, der eine Aufgabe 306 enthält, die durch den Scheitelpunkt 302 dargestellt wird; übergeordnete Aufgaben 308, die null oder eine oder mehrere Aufgaben aufweisen, die beendet werden müssen, bevor die Aufgabe 306 beginnen kann, wie beispielsweise Aufgaben, die der Aufgabe 306 eine Eingabe bereitstellen oder die der Aufgabe 306 in einem sequenziellen Arbeitsablauf vorhergehen; untergeordnete Aufgaben 312, die null oder eine oder mehrere Aufgaben aufweisen, die nicht beginnen können, bevor die Aufgabe 306 beendet ist, wie beispielsweise Aufgaben, die eine Eingabe von der Aufgabe 306 empfangen oder die der Aufgabe 306 in einem sequenziellen Arbeitsablauf folgen; und ein oder mehrere Datensätze 312, an denen durch die Aufgabe 306 agiert wird.
-
4 veranschaulicht eine Ausführungsform einer Instanz einer Speicherebenen-Zuweisung 400 i, die eine Aufgaben-Kennung 402 und eine zugehörige Speicherebene 404 aufweist, die eine der Speicherebenen 112 1, 112 2...112 n aufweist, die den Datensätzen bevorzugt zugewiesen ist, an denen durch die Aufgabe 402 agiert wird.
-
5 veranschaulicht eine Ausführungsform einer Instanz eines Zeitplanereignisses 500 i der Datensatz-Platzierung, die enthält: eine Aufgabe i, j 502, wobei es sich bei i um eine Aufgabe in einem Auftrag j handelt; ein Ereignis 504, das für die Aufgabe 502 erfolgt, z.B. Beginnen, Beenden usw.; und für eine Mehrzahl von Datensätzen 506 1...506 n, an denen durch die Aufgabe 502 agiert wird, die das Aufgaben-Ereignis 504 feststellt, die zugewiesenen Speicherebenen 508 1...508 n, auf denen sich die Datensätze 504 1...504 n in Reaktion auf das Aufgaben-Ereignis 504 vorzugsweise befinden. Das Vorhandensein eines Paars aus Datensatz 506 i und zugewiesener Speicherebene 508 i in dem Zeitplanereignis 500 i der Datensatzplatzierung kann angeben, dass der Datensatz 506 i zu der zugewiesenen Speicherebene 508 i zu verschieben ist.
-
6 veranschaulicht eine Ausführungsform von Operationen, die durch den Speicherebenen-Manager 116 ausgeführt werden, um die Speicherebenen-Zuweisungen 400 zu erzeugen, indem Regeln auf den Aufgabenausführungsablauf, der in dem Arbeitsablauf-Ausführungsmuster 200 dargestellt ist, und die Aufgaben-Scheitelpunkt-Informationen 300 i angewendet werden. Beim Auslösen von Operationen (im Block 600), um Speicherebenen 112 1, 112 2...112 n den Aufgaben 110 1, 110 2...110 n zuzuweisen, verarbeitet der Speicherebenen-Manager 116 (im Block 602) das Arbeitsablauf-Ausführungsmuster 200 und die Aufgaben-Scheitelpunkt-Informationen 300 i. Der Speicherebenen-Manager 116 ermittelt (im Block 606) aus dem Arbeitsablauf-Ausführungsmuster 200 zugehörige Datensätze, die Datensätze aufweisen, an denen agiert wird: durch eine Aufgabe 110 1, 110 2...110 n; gleichzeitig durch eine Gruppe von Aufgaben 110 1, 110 2...110 n von wenigstens einem der Aufträge 108 1, 108 2...108 n; durch eine Gruppe von Aufgaben 110 1, 110 2...110 n, die einer abhängigen Aufgabe eine Eingabe bereitstellen, die die Eingabe von der Gruppe von Aufgaben empfangen muss, bevor die abhängige Aufgabe ausgeführt werden kann; und durch sequenzielle Aufgaben 110 1, 110 2...110 n in einem der Aufträge 108 1, 108 2...108 n, wobei eine Aufgabe in der Abfolge nicht begonnen werden kann, bevor die vorhergehende Aufgabe in der Abfolge beendet wird. Weitere Faktoren können außerdem verwendet werden, um zugehörige Datensätze zu ermitteln. Für jeden der zugehörigen Datensätze wird (im Block 608) ermittelt, ob auf einer leistungsstärkeren Speicherebene ausreichend Platz vorhanden ist, um die zugehörigen Datensätze zu speichern, während aktuelle Aufgaben an den zugehörigen Datensätzen agieren. Für zugehörige Datensätze, die der leistungsstärkeren Speicherebene 112 1 zugewiesen werden können, während eine oder mehrere Aufgaben an den zugehörigen Datensätzen agieren, weist der Speicherebenen-Manager 116 (im Block 610) die Aufgaben, die an den zugehörigen Datensätzen agieren, der leistungsstärkeren Speicherebene zu. Für zugehörige Datensätze, die der leistungsstärkeren Speicherebene nicht zugewiesen werden können, während eine oder mehrere Aufgaben an den zugehörigen Datensätzen agieren, weist der Speicherebenen-Manager 116 (im Block 612) die Aufgaben, die an diesen zugehörigen Datensätzen agieren, einer Speicherebene 112 2...112 n zu, die leistungsschwächer ist als die leistungsstärkere Speicherebene.
-
Beim Ermitteln, wie zugehörige Datensätze einer leistungsstärkeren Speicherebene 112 1 zugewiesen werden, kann der Speicherebenen-Manager 116 zugehörige Datensätze gemäß einem bestimmten Einflussfaktor auswählen, um das Platzieren auf der leistungsstärkeren Speicherebene 112 1 zu optimieren, wie etwa Größe, wie beispielsweise durch bevorzugtes Platzieren von zugehörigen Datensätzen, an denen durch eine größere Anzahl von Aufgaben auf der leistungsstärkeren Speicherebene 112 1 agiert wird bzw. an denen durch Aufgaben mit höherer Priorität agiert wird, usw.
-
Der Speicherebenen-Manager 116 kann (im Block 614) Datensätze, die nicht Teil eines zugehörigen Datensatzes sind, einer leistungsschwächeren Speicherebene 112 2...112 n zuweisen. Das Ergebnis der in 6 ermittelten Zuweisung ist die Speicherebenen-Zuweisung 400, die bevorzugte Zuweisungen von Speicherebenen 404 zu Aufgaben 402 bereitstellt.
-
Die 7a und 7b veranschaulichen eine Ausführungsform von Operationen, die von dem Speicherebenen-Manager 116 ausgeführt werden, um den Zeitplan 500 der Datensatz-Platzierung auf der Grundlage des Arbeitsablauf-Ausführungsmusters 200, von Scheitelpunkt-Informationen 300 i und der Speicherebenen-Zuweisung 400 zu ermitteln. In 7a beginnt der Speicherebenen-Manager 116 (im Block 702) nach dem Einleiten der Operation zum Ermitteln der zeitlichen Planung der Speicherebenen-Zuweisung für Datensätze eine Schleife von Operationen in den Blöcken 702 bis 726 für eine betreffende Aufgabe i, j der Aufgabe i im Auftrag j. Für jede betreffende Aufgabe i, j führt der Speicherebenen-Manager 116 eine Schleife von Operationen in den Blöcken 704 bis 724 für jeden betreffenden Datensatz k aus, an dem durch die betreffende Aufgabe i, j agiert werden soll. Wenn (im Block 706) beim Beginnen der Aufgabe i, j an dem Datensatz k nicht durch eine andere Aufgabe agiert wird, wird (im Block 708) ermittelt, ob sich der Datensatz k beim Beginnen der Aufgabe i, j auf der zugewiesenen Speicherebene 404 für die Aufgabe i, j 402 befindet. Wenn (im Block 708) beim Beginnen der Aufgabe i, j der Datensatz k sich nicht auf der zugewiesenen Speicherebene für die Aufgabe i, j befindet, plant der Speicherebenen-Manager 116 (im Block 712) ein Verschieben des Datensatzes k zu der zugewiesenen Speicherebene für die Aufgabe i, j, wenn die Aufgabe i, j begonnen wird, beispielsweise indem dem Planungsereignis 500 i zur Datensatz-Platzierung für die Aufgabe i, j 502 bei einem Beginn-Ereignis 504 der Datensatz k und die zugewiesene Speicherebene 404 als ein Paar aus Datensatz 506 i und zugewiesener Speicherebene 508 i hinzufügt werden. Wenn sich (im Block 709) der Datensatz k auf der zugewiesenen Speicherebene 404 für die Aufgabe i, j befindet, wird der Datensatz k (im Block 710) so geplant, dass er auf der zugewiesenen Speicherebene 404 bleibt, wenn die Aufgabe i, j begonnen wird. Der Datensatz k kann so geplant werden, dass er auf der zugewiesenen Speicherebene bleibt, indem kein Paar aus Datensatz 506 i und zugewiesener Speicherebene 508 i dem Planungsereignis 500 i zur Datensatz-Platzierung hinzugefügt wird.
-
Wenn (im Block 706) beim Beginnen der Aufgabe i, j an dem Datensatz k durch eine andere Aufgabe agiert wird, ermittelt der Speicherebenen-Manager 116 (im Block 714) beim Beginnen der Aufgabe i, j, ob es sich bei der Speicherebene 404, die der Aufgabe i, j zugewiesen ist, um eine leistungsstärkere Speicherebene handelt als die momentane Speicherebene, auf der sich der Datensatz k befindet. Wenn das der Fall ist, plant der Speicherebenen-Manager 116 (im Block 712) ein Verschieben des Datensatzes k zu der zugewiesenen Speicherebene 404 für die Aufgabe i, j beim Beginnen der Aufgabe i, j, indem beispielsweise die Aufgabe i, j und die zugewiesene Speicherebene 404 dem Planungsereignis 500 i zur Datensatz-Platzierung als Beginnen-Ereignis der Aufgabe i, j angegeben wird. Wenn andernfalls (im Block 714) die zugewiesene Speicherebene 404 für die Aufgabe i, j nicht leistungsstärker als die momentane Speicherebene ist, geht die Steuerung zum Block 710, um den Datensatz auf der momentanen Speicherebene zu belassen.
-
Nach Festlegen der Planungsoperation, die für den Datensatz k auszuführen ist, wenn die Aufgabe i, j begonnen wird, geht die Steuerung in 7b (vom Block 710 oder 712) zum Block 716, um ein Planen für das Beenden der Aufgabe i, j auszuführen. Wenn (im Block 716) beim Beenden der Aufgabe i, j keine zusätzliche Aufgabe weiterhin an dem Datensatz k agiert, plant der Speicherebenen-Manager 116 (im Block 718) ein Verschieben des Datensatzes k zu einer leistungsschwächeren Speicherebene als die Speicherebene, auf der sich der Datensatz momentan beim Beenden der Aufgabe i, j befindet. Die Planung im Block 718 kann ausgeführt werden, indem zum Planungsereignis 500 i zur Datensatz-Platzierung für die Aufgabe i, j 502 und ein Beenden-Ereignis 504 ein Paar aus Datensatz k und zugewiesener leistungsschwächerer Speicherebene 404 hinzugefügt wird, um das Verschieben zu der leistungsschwächeren Speicherebene zu planen. Wenn (im Block 716) eine zusätzliche Aufgabe an dem Datensatz k agiert, wenn die Aufgabe i, j beendet wird, wird (im Block 720) ermittelt, ob die zusätzliche Aufgabe, die an dem Datensatz k agiert, einer leistungsschwächeren Speicherebene als die momentane Speicherebene, auf der sich der Datensatz k momentan befindet, zugewiesen ist. Wenn das der Fall ist, plant der Speicherebenen-Manager 116 (im Block 722) ein Verschieben des Datensatzes k zu der Speicherebene 404, die der zusätzlichen Aufgabe zugewiesen ist, beim Beenden der Aufgabe i, j. Nach Ausführen der Planung für das Ereignis Aufgabe beendet (vom Block 718 oder 722) oder Feststellen, dass für den Datensatz k beim Beenden der Aufgabe i, j keine Planung erforderlich ist (von der Entscheidung keine Verzweigung des Blocks 720), geht die Steuerung (im Block 724) zurück zum Block 704, um einen nächsten Datensatz zu betrachten, an dem die Aufgabe i, j agiert, bis jeder einzelne oder mehrere Datensätze betrachtet wurden. Nach Betrachten aller Datensätze, an denen durch die Aufgabe i, j agiert wird, geht die Steuerung (im Block 726) zurück zum Block 702, um die nächste Aufgabe i, j zu betrachten, bis alle Aufgaben 110 1, 110 2...110 n in allen Aufträgen 108 1, 108 2...108 n berücksichtigt wurden.
-
Der Speicherebenen-Manager 116 ermittelt (im Block 728) Datensätze, die in Reaktion auf ein Beginnen oder Beenden einer Aufgabe 110 1, 110 2...110 n anschließend zu verarbeiten sind. Der Speicherebenen-Manager 116 plant (im Block 730) ein Einstufen des Datensatzes, der anschließend verarbeitet wird, in eine leistungsstärkere Speicherebene, die leistungsstärker ist als wenigstens eine andere Speicherebene, damit der Datensatz auf der leistungsstärkeren Speicherebene zur Verfügung steht, wenn der Datensatz verarbeitet wird. Zum Ausführen der Planung kann das Paar aus Datensatz, der eingestuft werden soll, und zugewiesener Speicherebene wie beispielsweise eine leistungsstärkere Speicherebene, einem Planungsereignis 500 i für das Aufgaben-Planungsereignis hinzugefügt werden, das das Einstufen auslöst.
-
Die beschriebenen Operationen der 7a und 7b erläutern das Planen des Verschiebens von Datensätzen in Reaktion auf ein Beginnen- und Beenden-Ereignis für eine Aufgabe. Bei zusätzlichen Ausführungsformen kann das Planen des Verschiebens eines betreffenden Datensatzes, an dem eine betreffende Aufgabe agiert, für andere Ereignistypen ausgeführt werden, die bezüglich der betreffenden Aufgabe zusätzlich zu Beenden- und Beginnen-Ereignissen für die betreffende Aufgabe auftreten.
-
Bei den beschriebenen Operationen der 7a und 7b wird der Plan 500 der Datensatz-Platzierung auf der Grundlage der Speicherebenen-Zuweisungen 400 und des Zustands von Operationen anderer Aufgaben in Bezug auf einen Datensatz erzeugt, wenn die Aufgabe, die an einem Datensatz agiert, begonnen oder beendet werden soll. Bei einer alternativen Ausführungsform können die Planungsoperationen nicht in einem Plan 500 der Datensatz-Platzierung gespeichert werden, sondern können stattdessen in Echtzeit festgelegt werden, wenn die Anwendungsschicht 102 Aufgabenereignisse verarbeitet, um die Operation des Zuweisens der Datensatz-Speicherebene in Reaktion auf das Aufgaben-Ereignis zu ermitteln, das in Echtzeit auftritt.
-
8 veranschaulicht eine Ausführungsform von Operationen, die von dem Speicherebenen-Manager 116 ausgeführt werden, um Operationen der Datensatz-Platzierung auszuführen, während Aufgaben in der Anwendungsschicht 102 ausgeführt werden. Beim Empfangen einer Benachrichtigung (im Block 800) von der Anwendungsschicht 102 über das Beginnen oder Beenden der Aufgabe, ermittelt der Speicherebenen-Manager 116 (im Block 802) das Speicherebenen-Planungsereignis für die Aufgabe und das gemeldete Ereignis für die Aufgabe. Dieses Ermitteln kann erfolgen, indem das Planungsereignis 500 i der Datensatz-Platzierung für die Aufgabe 502 und das Ereignis 504, für das die Benachrichtigung empfangen wurde, verarbeitet werden. Der Speicherebenen-Manager 116 führt (im Block 804) die Planungsoperation aus, um den einen oder mehrere Datensätze zu der zugewiesenen Speicherebene zu verschieben, die durch das Planungsereignis spezifiziert ist, z.B. 500 i, wenn spezifiziert wurde, dass eine Verschiebungsoperation ausgeführt werden soll. Nach dem Ausführen der Datensatz-Platzierungsoperationen, um die Datensätze, an denen unter dem Einfluss des Ereignisses auf den zugewiesenen Speicherebenen durch die Aufgabe agiert wird, zu den zugewiesenen Speicherebenen zu verschieben oder damit sie auf diesen verbleiben, gibt der Speicherebenen-Manager 116 (im Block 806) eine Bestätigung an die Anwendungsschicht 104 zurück, dass die Operationen zur Datensatz-Platzierung beendet wurden.
-
Bei der beschriebenen Operationen von 8 findet ein Abgleich zwischen Anwendungsschicht 102 und Speicherschicht 104 statt, um sicherzustellen, dass sich Datensätze beim Beginnen und Beenden von Aufgaben auf der geeigneten Speicherebene 112 2...112 n befinden. Die Anwendungsschicht 102 kann warten, bis die Benachrichtigung von der Speicherschicht 104 empfangen wurde, dass die Operationen zum Zuweisen von Datensätzen beendet wurden, bevor sie in dem Arbeitsablauf-Ausführungsmuster 200 zum Verarbeiten einer nächsten Aufgabe in einem der Aufträge 108 1, 108 2...108 n geht.
-
Ausführungsformen von Cloud-Datenverarbeitung
-
Zwar enthält diese Offenbarung eine genaue Beschreibung der Cloud-Datenverarbeitung, es sollte jedoch von vornherein klar sein, dass Umsetzungen der hier zitierten Lehren nicht auf eine Cloud-Datenverarbeitungsumgebung beschränkt sind. Stattdessen können Ausführungsformen der vorliegenden Erfindung in Verbindung mit jedem anderen Typ von Datenverarbeitungsumgebung umgesetzt werden, der gegenwärtig bekannt ist oder zukünftig entwickelt wird.
-
Cloud-Datenverarbeitung ist ein Modell des Liefern von Diensten, mit dem ein problemloser Netzwerkzugang auf Anforderung auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Speicher, Speichereinrichtungen, Anwendungen, virtuelle Maschinen und Dienste) ermöglicht wird, die rasch bereitgestellt und mit einem minimalen Verwaltungsaufwand oder minimaler Wechselwirkung mit einem Anbieter des Dienstes aufgegeben werden können. Dieses Cloud-Modell kann wenigstens fünf Charakteristiken, wenigstens drei Dienstmodelle und wenigstens vier Einsatzmodelle enthalten.
-
Es gibt folgende Charakteristiken:
-
Selbstbedienung auf Anforderung: ein Cloud-Kunde kann sich mit Datenverarbeitungsfunktionen wie etwa Serverzeit und Netzwerk-Speichereinrichtungen bei Bedarf automatisch einseitig versorgen, ohne dass eine menschliche Wechselwirkung mit dem Dienstanbieter erforderlich ist.
-
Allgemeiner Netzwerkzugang: Funktionen können über ein Netzwerk zur Verfügung stehen, und der Zugang kann über Standard-Mechanismen erfolgen, die eine Verwendung von heterogenen Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
-
Ressourcen-Poolbildung: die Datenverarbeitungs-Ressourcen eines Anbieters werden in einem Pool zusammengefasst, um mehrere Kunden unter Verwendung eines Mehrmandanten-Modells mit unterschiedlichen physischen und virtuellen Ressourcen zu versorgen, die dynamisch zugewiesen und nach Bedarf erneut zugewiesen werden. Es gibt eine Art von Standortunabhängigkeit dahingehend, dass der Kunde im Allgemeinen keine Kontrolle oder Kenntnis des genauen Standorts der bereitgestellten Ressource hat, er kann jedoch in der Lage sein, den Standort auf einer höheren Abstraktionsebene (z.B. Land, Staat oder Datenzentrum) anzugeben.
-
Schnelle Anpassbarkeit: Funktionen können schnell und elastisch, in einigen Fällen automatisch für eine schnelle Erweiterung, bereitgestellt werden und für eine schnelle Verkleinerung rasch freigegeben werden. Für den Kunden erscheinen die Funktionen, die zur Bereitstellung zur Verfügung stehen, häufig unbegrenzt und können jederzeit in beliebiger Menge gekauft werden.
-
Gemessener Dienst: Cloud-Systeme steuern und optimieren automatisch die Ressourcen-Nutzung durch die vorteilhafte Nutzung einer Messfunktion auf einem bestimmten Abstraktionsgrad, der für den Typ des Dienstes geeignet ist (z.B. Speicherung, Verarbeitung, Bandbreite und aktive Benutzerkonten). Die Ressourcen-Nutzung kann überwacht, gesteuert, und es kann von ihr berichtet werden, wodurch sowohl für den Anbieter als auch für den Kunden des genutzten Dienstes eine Transparenz bereitgestellt wird.
-
Es gibt folgende Dienstmodelle:
-
Software als Dienst (Software as a Service, SaaS): Die für den Kunden bereitgestellte Funktion besteht darin, die Anwendungen des Anbieters zu verwenden, die in einer Cloud-Infrastruktur ausgeführt werden. Die Anwendungen sind von verschiedenen Client-Einheiten über eine Thin-Client-Schnittstelle wie etwa einen Web-Browser (z.B. eMails auf Web-Grundlage) zugänglich. Der Kunde verwaltet oder steuert nicht die zugrunde liegende Cloud-Infrastruktur, zu der Netzwerk, Server, Betriebssysteme, Speicher oder sogar einzelne Anwendungsmöglichkeiten gehören, mit der möglichen Ausnahme von begrenzten benutzerspezifischen Anwendungskonfigurationseinstellungen.
-
Plattform als Dienst (Platform as a Service, PaaS): Die für den Kunden bereitgestellte Funktion besteht darin, in der Cloud-Infrastruktur vom Kunden erzeugte oder erworbene Anwendungen einzusetzen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erzeugt werden. Der Kunde verwaltet oder steuert nicht die zugrunde liegende Cloud-Infrastruktur, zu der Netzwerke, Server, Betriebssysteme oder Speicher gehören, hat jedoch steuernden Einfluss auf die eingesetzten Anwendungen und möglicherweise auf Konfigurationseinstellungen einer Anwendungs-Hosting-Umgebung.
-
Infrastruktur als Dienst (Infrastructure as a Service, IaaS): Die für den Kunden bereitgestellte Funktion besteht in der Bereitstellung von Verarbeitung, Speichereinrichtungen, Netzwerken und anderen grundlegenden Datenverarbeitungs-Ressourcen, wobei der Kunde in der Lage ist, willkürlich Software einzusetzen und zu betreiben, die Betriebssysteme und Anwendungen enthalten kann. Der Kunde verwaltet und steuert nicht die zugrunde liegende Cloud-Infrastruktur, hat jedoch steuernden Einfluss auf Betriebssysteme, Speichereinrichtungen, eingesetzte Anwendungen und dies eingeschränkt möglicherweise auch auf ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
-
Es gibt folgende Einsatzmodelle:
-
Private-Cloud: Die Cloud-Infrastruktur wird lediglich für eine Organisation betrieben. Sie kann durch die Organisation oder eine dritte Stelle verwaltet werden und kann intern oder extern vorhanden sein.
-
Community-Cloud: Die Cloud-Infrastruktur wird durch mehrere Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die durch gemeinsame Belange verbunden ist (z.B. Zielsetzung, Sicherheitsanforderungen, Strategie und Konformitätserwägungen). Sie kann durch die Organisationen oder eine dritte Stelle verwaltet werden und kann intern oder extern vorhanden sein.
-
Public-Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Branchengruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
-
Hybrid-Cloud: die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehr Clouds (Privat-, Community- oder öffentlich), die eigenständige Entitäten bleiben, jedoch durch eine standardisierte oder rechtlich geschützte Technologie miteinander verbunden sind, die eine Daten- und Anwendungsbeweglichkeit ermöglicht (z.B. Cloud-Bursting zum Lastausgleich zwischen Clouds).
-
Eine Cloud-Datenverarbeitungsumgebung ist dienstorientiert mit dem Schwerpunkt auf Statusunabhängigkeit, geringe Kopplung, Modularität und semantische Interoperabilität. Der Kern der Cloud-Datenverarbeitung ist eine Infrastruktur, die ein Netzwerk aus miteinander verbundenen Knoten aufweist.
-
In 9 ist eine schematische Darstellung eines Beispiels eines Cloud-Datenverarbeitungsknotens gezeigt wie beispielsweise die Knoten, die die Aufträge und Aufgaben in der Anwendungsschicht 102 ausführen, und die Knoten, die die Verwaltungsoperationen der Speicherschicht 104 des Speicherebenen-Managers 116 ausführen. Der Cloud-Datenverarbeitungsknoten 900 ist lediglich Beispiel eines geeigneten Cloud-Datenverarbeitungsknotens und soll keinerlei Einschränkungen an dem Umfang der Verwendungsmöglichkeiten oder der Funktionalität von Ausführungsformen der hier beschriebenen Erfindung darstellen. Unabhängig davon kann der Cloud-Datenverarbeitungsknoten 900 umgesetzt werden und/oder jede der vorstehend ausgeführten Funktionalitäten ausführen.
-
Bei dem Cloud-Datenverarbeitungsknoten 900 handelt es sich um ein Computersystem/einen Server 902, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen eines Universal- oder speziellen Datenverarbeitungssystems betrieben werden kann. Zu Beispielen bekannter Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem/Server 902 geeignet sind, gehören Personal-Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, handgehaltene oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxes, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Datenverarbeitungsumgebungen, die eines bzw. eine der oben genannten Systeme oder Einheiten enthalten, und dergleichen, sind jedoch nicht auf diese beschränkt.
-
Das Computersystem/der Server 902 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Befehlen wie z.B. als Programmmodule, die durch ein Computersystem ausgeführt werden, beschrieben werden. Programmmodule können im Allgemeinen Routinen, Programme, Objekte, Komponenten, Logikschaltungen, Datenstrukturen usw. enthalten, die spezielle Aufgaben ausführen oder bestimmte Typen abstrakter Daten umsetzen. Das Computersystem/der Server 902 kann in verteilten Cloud-Datenverarbeitungsumgebungen realisiert werden, wobei Aufgaben durch ferne Datenverarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. Bei einer verteilten Cloud-Datenverarbeitungsumgebung können sich Programmmodule in Speichermedien sowohl des lokalen als auch des fernen Computersystems befinden, zu denen Speichereinheiten des Arbeitsspeichers gehören.
-
Wie in 9 gezeigt ist das Computersystem/der Server 902 in dem Cloud-Datenverarbeitungsknoten 900 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/des Servers 902 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 904, einen Systemspeicher 906 und einen Bus 908 enthalten, der zahlreiche Systemkomponenten, darunter der Systemspeicher 906, mit dem Prozessor 904 verbindet, ohne jedoch auf diese beschränkt zu sein.
-
Der Bus 908 repräsentiert einen oder mehrere von verschiedenen Typen von Busstrukturen, darunter einen Speicherbus oder eine Speichersteuereinheit, einen peripheren Bus, einen beschleunigten Grafikanschluss und einen Prozessor- oder lokalen Bus unter Verwendung einer aus einer Vielfalt von Busarchitekturen. Lediglich beispielhaft und nicht einschränkend gehören zu derartigen Architekturen Industry-Standard-Architecture-(ISA-)Bus, Micro-Channel-Architecture-(MCA-)Bus, Enhanced-ISA-(EISA-)Bus, Video-Electronics-Standards-Association-(VESA-)Lokalbus und Peripheral-Component-Interconnects-(PCI-)Bus.
-
Das Computersystem/der Server 902 enthält üblicherweise eine Vielfalt von durch das Computersystem lesbaren Medien. Bei derartigen Medien kann es sich jedes verfügbare Medium handeln, auf das durch das Computersystem/den Server 902 zugegriffen werden kann, und es enthält sowohl flüchtige und nichtflüchtige Medien als auch Wechsel- und Nichtwechsel-Medien.
-
Der Systemspeicher 906 kann durch ein Computersystem lesbare Medien in der Form eines flüchtigen Speichers wie z.B. ein Direktzugriffsspeicher (RAM) 910 und/oder einen Cache-Speicher 912 enthalten. Das Computersystem/der Server 902 kann ferner andere flüchtige/nichtflüchtige Wechsel/Nichtwechsel-Speichermedien des Computersystems enthalten. Lediglich beispielhaft kann das Speichersystem 913 zum Lesen von und zum Schreiben auf Nichtwechsel-, nichtflüchtige magnetische Medien bereitgestellt werden (die nicht gezeigt sind und üblicherweise als „Festplattenlaufwerk“ bezeichnet werden). Obwohl nicht gezeigt können ein magnetisches Plattenlaufwerk zum Lesen von und zum Schreiben auf eine nichtflüchtige magnetische Wechselplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von und zum Schreiben auf eine nichtflüchtige optische Wechselplatte wie z.B. ein CD-ROM, DVD-ROM oder ein anderes optisches Medium bereitgestellt werden. Bei derartigen Fällen kann jedes Medium mit dem Bus 908 durch eine oder mehrere Datenmedien-Schnittstellen verbunden sein. Wie weiter im Folgenden dargestellt und beschrieben wird, kann der Speicher 906 wenigstens ein Programmprodukt mit einer Gruppe von Programmmodulen (z.B. wenigstens einem Programmmodul) enthalten, die so eingerichtet sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Das Programm/Dienstprogramm 914, das eine Gruppe von Programmmodulen 916 (wenigstens ein Programmmodul) aufweist, kann ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme und Programmdaten beispielhaft und nicht als Einschränkung in einem Speicher 906 gespeichert sein. In jedem Betriebssystem, einem oder mehreren Anwendungsprogrammen, anderen Programmmodulen und Programmdaten oder bestimmten Kombinationen hiervon kann eine Vernetzungsumgebung umgesetzt werden. Programmmodule 916 führen im Allgemeinen die Funktionen und/oder Verfahrensweisen von hier beschriebenen Ausführungsformen der Erfindung aus.
-
Das Computersystem/der Server 902 kann außerdem mit einer oder mehreren externen Einheiten 918 wie z.B. eine Tastatur, eine Zeigeeinheit, eine Anzeige 920 usw.; mit einer oder mehreren Einheiten, die ein Zusammenwirken eines Benutzers mit dem Computersystem/Server 902 ermöglichen; und/oder mit allen Einheiten (z.B. Netzwerkkarte, Modem usw.) Daten austauschen, die dem Computersystem/Server 902 einen Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen. Ein derartiger Datenaustausch kann über Eingabe/Ausgabe-(E/A-)Schnittstellen 922 erfolgen. Des Weiteren kann das Computersystem/der Server 902 mit einem oder mehreren Netzwerken wie z.B. einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z.B. das Internet) über einen Netzwerkadapter 924 Daten austauschen. Wie dargestellt tauscht der Netzwerkadapter 924 Daten mit den anderen Komponenten von Computersystem/Server 902 über einen Bus 908 aus. Obwohl nicht gezeigt sollte klar sein, dass in Verbindung mit dem Computersystem/Server 902 weitere Hardware- und/oder Software-Komponenten verwendet werden könnten. Zu Beispielen gehören, sind jedoch nicht beschränkt auf: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Datenarchiv-Speichersysteme usw.
-
In 10 ist eine veranschaulichende Cloud-Datenverarbeitungsumgebung 1000 dargestellt. Wie gezeigt weist die Cloud-Datenverarbeitungsumgebung 1000 einen oder mehrere Cloud-Datenverarbeitungsknoten 1000 auf, mit denen lokale Datenverarbeitungseinheiten, die von Cloud-Kunden verwendet werden wie z.B. ein persönlicher digitaler Assistent (PDA) oder ein Funktelefon 1002A, ein Desktop-Computer 1002B, ein Laptop-Computer 1002C und/oder ein Fahrzeug-Computersystem 1002N Daten austauschen können. Die Knoten 1000 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie z.B. in privaten, Community-, öffentlichen oder Hybrid-Clouds, die oben beschrieben wurden, oder in einer Kombination hiervon gruppiert sein (nicht gezeigt). Dadurch kann die Cloud-Datenverarbeitungsumgebung 1000 Infrastruktur, Plattformen und/oder Software als Dienste bereitstellen, für die ein Cloud-Kunde keine Ressourcen in einer lokalen Datenverarbeitungseinheit vorhalten muss. Es ist klar, dass die Typen von Datenverarbeitungseinheiten 1002A bis N, die in 10 gezeigt sind, lediglich veranschaulichend sein sollen und dass Datenverarbeitungsknoten 1000 und die Cloud-Datenverarbeitungsumgebung 1000 mit jedem Typ von computergestützter Einheit über jeden Typ von Netzwerk und/oder von im Netzwerk adressierbarer Verbindung (z.B. unter Verwendung eines Web-Browser) Daten austauschen können.
-
In 11 ist eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Datenverarbeitungsumgebung 1000 (10) bereitgestellt wird. Es sollte von vornherein klar sein, dass die in 11 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht auf diese beschränkt sind. Wie dargestellt werden die folgenden Schichten und betreffenden Funktionen bereitgestellt:
Die Hardware- und Software-Schicht 1102 enthält Hardware- und Software-Komponenten. Zu Beispielen von Hardware-Komponenten gehören: Mainframe-Computer, Server auf der Grundlage einer RISC-(Reduced Instruction Set Computer-)Architektur; Speichereinheiten; Netzwerke und Vernetzungskomponenten. Bei einigen Ausführungsformen enthalten Software-Komponenten Netzwerk-Anwendungsserver-Software.
-
Die Virtualisierungsschicht 1004 stellt eine Abstraktionsschicht bereit, von der die folgenden Beispiele virtueller Entitäten bereitgestellt werden können: virtuelle Server; virtuelle Speichereinrichtungen; virtuelle Netzwerke, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme; und virtuelle Clients.
-
Bei einem Beispiel kann die Verwaltungsschicht 1106 die nachfolgend beschriebenen Funktionen bereitstellen. Ressourcenbereitstellung gewährleistet eine dynamische Beschaffung von Datenverarbeitungsressourcen und weiterer Ressourcen, die zum Ausführen von Aufgaben in der Cloud-Datenverarbeitungsumgebung genutzt werden. Messung und Preisbildung (Metering and Pricing) stellt eine Kostenverfolgungsfunktion in Bezug auf die in der Cloud-Datenverarbeitungsumgebung verwendeten Ressourcen sowie eine Abrechnung oder Fakturierung (Billing and Invoicing) für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungssoftware-Lizenzen aufweisen. Sicherheit (Security) stellt eine Identitätsprüfung für Cloud-Kunden und Aufgaben sowie Schutz von Daten und andere Ressourcen bereit. Benutzerportal (User Portal) stellt einen Zugang zur Cloud-Datenverarbeitungsumgebung für Kunden und Systemadministratoren bereit. Kontextbezogene Dienstgüteverwaltung (Service Level Management) sorgt für eine Zuweisung und Verwaltung von Cloud-Datenverarbeitungsressourcen, so dass vorgeschriebene Dienstgütewerte eingehalten werden. Planung und Erfüllung von Dienstgütevereinbarungen (SLA) sorgt für eine vorbereitende Reservierung und Beschaffung von Cloud-Datenverarbeitungsressourcen, für die gemäß einer Dienstgütevereinbarung (SLA) ein zukünftiger Bedarf erwartet wird.
-
Die Speicherschicht 104 kann in den Funktionen der Verwaltungsschicht 1106 umgesetzt sein.
-
Die Arbeitslastschicht 1108 stellt Beispiele der Funktionalität bereit, für die die Cloud-Datenverarbeitungsumgebung verwendet werden kann. Zu Beispielen der Arbeitslast und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Zuordnung und Navigation; Software-Entwicklung und Lebenszyklus-Verwaltung; Bereitstellung von Bildungsinhalten im virtuellen Klassenzimmer; Datenanalysenverarbeitung; Transaktionsverarbeitung; und die oben beschriebene Anwendungsschicht 102.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Medien) enthalten, auf dem sich computerlesbare Programmbefehle befinden, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem computerlesbaren Speichermedium kann es sich um eine materielle Einheit handeln, die Befehle zum Verwenden durch eine Befehlsausführungseinheit halten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich beispielsweise um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination der Vorhergehenden handeln, ist jedoch nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen des computerlesbaren Speichermediums enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Festwertspeicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Compactdisk-Festwertspeicher (CD-ROM), eine digitale Versatile-Disk (DVD), einen Speicherstick, eine Diskette (Floppy Disk), eine mechanisch codierte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Nut, in denen Befehle aufgezeichnet sind, oder jede geeignete Kombination des Vorhergehenden. Ein hier verwendetes computerlesbares Speichermedium sollte nicht so ausgelegt werden, dass es sich dabei per se um vergängliche Signale handelt wie beispielsweise Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die durch ein Lichtwellenleiterkabel geleitet werden) oder elektrische Signale, die durch eine Leitung übertragen werden.
-
Computerlesbare Programmbefehle, die hier beschrieben werden, können von einem computerlesbaren Speichermedium zu betreffenden Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk, z.B. das Internet, ein Lokalbereichsnetz, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk zu einem externen Computer oder einer externen Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupfer-Übertragungskabel, Lichtwellenleiter, drahtlose Übertragungen, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder eine Netzwerk-Schnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt computerlesbare Programmbefehle von dem Netzwerk und leitet die computerlesbaren Programmbefehle zum Speichern in einem computerlesbaren Speichermedium in der betreffenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
-
Bei computerlesbaren Programmbefehlen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Befehle, Befehle mit Befehlssatz-Architektur (ISA), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, Zustandseinstellungsdaten oder Quellencode bzw. Objektcode handeln, die in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter eine objektorientierte Programmiersprache wie Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache "C" oder ähnliche Programmiersprachen. Die computerlesbaren Programmbefehle können nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden. Bei einigen Ausführungsformen können elektronische Schaltungsanordnungen, darunter beispielsweise eine programmierbare logische Schaltungsanordnung, vor Ort programmierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmbefehle ausführen, indem Zustandsinformationen der computerlesbaren Programmbefehle genutzt werden, um die elektronische Schaltungsanordnung zu personalisieren, um Aspekte der vorliegenden Erfindung auszuführen.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch computerlesbare Programmbefehle umgesetzt werden können.
-
Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen. Diese computerlesbaren Programmbefehle können außerdem in einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darin gespeicherten Befehlen einen Herstellungsgegenstand aufweist, der Befehle enthält, die Aspekte der Funktion/Wirkung umsetzen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
-
Die computerlesbaren Programmbefehle können außerdem in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden sollen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer, der anderen programmierbaren Vorrichtung oder der anderen Einheit ausgeführt werden, die Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, umsetzen.
-
Der Ablaufplan und die Blockdarstellungen in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in Blockdarstellungen ein Modul, Segment oder Abschnitt von Befehlen repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist. Bei einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen möglicherweise nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockdarstellungen und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockdarstellungen und/oder der Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
-
Die hier verwendeten Bezugszeichen wie etwa i, j, k, n werden hier verwendet, um eine veränderliche Anzahl von Instanzen eines Elements zu bezeichnen, die dieselben oder unterschiedliche Werte darstellen können und die bei Verwendung mit unterschiedlichen oder denselben Elementen in unterschiedlichen beschriebenen Instanzen dieselben oder unterschiedliche Werte darstellen können.
-
Die Ausdrücke „eine Ausführungsform“, „Ausführungsform“, „Ausführungsformen“, „die Ausführungsform“, „die Ausführungsformen“, „eine oder mehrere Ausführungsformen“, „einige Ausführungsformen“ und „eine Ausführungsform“ bedeuten „eine oder mehrere (jedoch nicht alle) Ausführungsform der vorliegenden Erfindung(en)“, falls nicht ausdrücklich anders angegeben.
-
Die Ausdrücke „darunter“, „aufweisend“, „enthaltend“ und deren Variationen bedeuten „darunter, jedoch nicht beschränkt auf“, falls nicht ausdrücklich anders angegeben.
-
Die nummerierte Auflistung von Elementen bedeutet nicht, dass einige oder alle Elemente sich untereinander ausschließen, falls nicht ausdrücklich anders angegeben.
-
Die Ausdrücke „ein“ und „der/die/das“ bedeuten „ein oder mehrere“, falls nicht ausdrücklich anders angegeben.
-
Einheiten, die untereinander Daten austauschen können, müssen nicht ständig miteinander verbunden sein, falls nicht ausdrücklich anders angegeben. Außerdem können Einheiten, die untereinander Daten austauschen, direkt oder indirekt über einen oder mehrere Vermittler Daten austauschen.
-
Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die untereinander Daten austauschen, bedeutet nicht, dass alle derartigen Komponenten erforderlich sind. Im Gegenteil wird eine Vielfalt von optionalen Komponenten beschrieben, um die breite Vielfalt von möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
-
Wenn eine einzige Einheit oder ein einziger Gegenstand hier beschrieben wird, ist es leicht ersichtlich, dass mehr als eine Einheit/ein Gegenstand (die möglicherweise zusammenwirken) anstelle einer einzigen Einheit/eines einzigen Gegenstands verwendet werden kann. Wenn in ähnlicher Weise mehr als eine Einheit oder mehr als ein Gegenstand hier beschrieben wird (die möglicherweise zusammenwirken), ist es leicht ersichtlich, dass eine einzige Einheit oder ein einziger Gegenstand anstelle der mehreren Einheiten oder der mehreren Gegenstände oder eine andere Anzahl von Einheiten/Gegenständen anstelle der gezeigten Anzahl von Einheiten oder Programmen verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehreren andere Einheiten verkörpert werden, die nicht explizit so beschrieben werden, dass sie eine derartige Funktionalität/Merkmale aufweisen. Somit müssen andere Ausführungsformen der vorliegenden Erfindung die eigentliche Einheit nicht enthalten.
-
Die vorhergehende Beschreibung zahlreicher Ausführungsformen der Erfindung wurde für den Zweck der Veranschaulichung und Beschreibung dargestellt. Sie soll für die Erfindung in der offenbarten präzisen Form nicht erschöpfend oder einschränkend sein. Viele Modifikationen und Variationen sind im Licht der oben genannten Lehren möglich. Der Umfang der Erfindung soll nicht durch diese genaue Beschreibung, sondern durch die daran angefügten Ansprüche beschränkt sein. Die obige Spezifikation, Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Verwendungsart der Zusammenstellung der Erfindung bereit. Da viele Ausführungsformen der Erfindung möglich sind, ohne vom Erfindungsgedanken und Umfang der Erfindung abzuweichen, liegt die Erfindung in den hier nachfolgend angefügten Ansprüchen.