-
HINTERGRUND
-
Ein oder mehrere Aspekte betreffen allgemein ein Ermöglichen eines Verarbeitens innerhalb einer Datenverarbeitungsumgebung und insbesondere ein Ermöglichen eines Verarbeitens, das Datenbanksystemen der Datenverarbeitungsumgebung zugehörig ist.
-
Ein Datenbanksystem weist in der Regel eine oder mehrere Datenbanken und mindestens ein Datenbankverwaltungssystem auf. Eine Datenbank ist eine strukturierte Sammlung von Daten, die elektronisch gespeichert und auf die elektronisch zugegriffen wird, und ein Datenbankverwaltungssystem ist ein Mechanismus, der zum Interagieren mit einer oder mehreren Datenbanken sowie Benutzern und Anwendungen verwendet wird, die die eine oder die mehreren Datenbanken verwenden. Das Datenbankverwaltungssystem stellt verschiedene Funktionen zum Veralten der Datenbanken bereit, einschließlich einer Aktualisierungsfunktion, die ein Einfügen, Löschen und Modifizieren der Daten bereitstellt, die in den Datenbanken verwaltet werden; Abrufen der Daten in den Datenbanken; Verwalten der Datenbanken einschließlich Bereitstellen von Datensicherheit, Datenintegrität, Leistungsüberwachung usw.; und Definition der Organisation der Daten.
-
Die in den Datenbanken verwalteten Daten werden in ein Protokoll geschrieben (das auch als eine Protokoll-Pipe oder Protokoll-Pipeline bezeichnet wird), bevor sie in einen Speicher geschrieben werden. Die Geschwindigkeit, mit der die Daten in das Protokoll und den Speicher geschrieben werden, wirkt sich auf die Leistung von Aktualisierungs-, Lösch- und Einfüge-Operationen der Datenbanken aus, wodurch die Systemleistung beeinflusst wird. Zum Beispiel werden Aktualisierungs-, Lösch- und Einfüge-Operationen unter hoher Gleichzeitigkeit des Protokolls aufgrund einer Protokoll-Materialisierung in dem Speicher verlangsamt. Ferner wird die Systemleistung beeinflusst, da die Protokolldaten in einen Speicher geschrieben werden müssen, bevor modifizierte Daten in Seiten eines Arbeitsspeichers in einen Speicher herausgeschrieben werden. Daher kann eine Verschlechterung beim Schreiben der Protokolldaten in einen Speicher das Leeren von modifizierten Daten aus einem Arbeitsspeicher in einen Speicher verschlechtern.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Unzulänglichkeiten nach dem Stand der Technik werden beseitigt und zusätzliche Vorteile werden durch die Bereitstellung eines Computerprogrammprodukts zum Ermöglichen eines Verarbeitens in einer Datenverarbeitungsumgebung bereitgestellt. Das Computerprogrammprodukt weist ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen auf, die gemeinsam auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, um ein Verfahren durchzuführen. Das Verfahren weist ein Bestimmen auf, ob ein Konflikt beim Schreiben von Daten in eine Protokoll-Pipeline auf einer vorgegebenen Ebene vorliegt. Die Protokoll-Pipeline wird beim Schreiben der Daten aus einem Arbeitsspeicher in einen Speicher verwendet. Auf Grundlage eines Bestimmens, dass sich ein Konflikt beim Schreiben der Daten in die Protokoll-Pipeline auf der vorgegebenen Ebene befindet, wird automatisch eine Teilungsoperation durchgeführt, um eine neue Protokoll-Pipeline zu erstellen. Durch ein Durchführen der Teilungsoperation wird ein Konflikt auf der Protokoll-Pipeline reduziert, und eine Geschwindigkeit, mit der Daten in die Protokoll-Pipelines geschrieben werden können, wird erhöht, wodurch Daten schneller in einen Speicher geschrieben werden können, wodurch sich die Systemleistung erhöht.
-
In einem Aspekt werden eingehende Daten zu einer ausgewählten Protokoll-Pipeline auf Grundlage eines Weiterleitungsplans weitergeleitet. Der Weiterleitungsplan weist eine Angabe auf, welche Protokoll-Pipeline einer Mehrzahl von Protokoll-Pipelines die eingehenden Daten empfangen soll. Die Mehrzahl von Protokoll-Pipelines umfasst mindestens die Protokoll-Pipeline und die neue Protokoll-Pipeline. Die Verwendung eines Weiterleitungsplans ermöglicht ein Verfolgen, wohin die Protokolldaten in den Protokoll-Pipelines geschrieben werden, was mindestens Neustart- und/oder Wiederherstellungsoperationen ermöglicht.
-
Zum Beispiel wird die durch den Weiterleitungsplan angegebene Weiterleitung durch Verwenden von Modulo-Arithmetik einer ausgewählten Kennung bestimmt. Eine in der Modulo-Arithmetik verwendete Modulo-Zahl beruht zum Beispiel auf einer Anzahl von Protokoll-Pipelines in der Mehrzahl von Protokoll-Pipelines. In einem Beispiel ist die ausgewählte Kennung eine Kennung einer Einheiten-Wiederherstellung, und die Einheiten-Wiederherstellung umfasst eine oder mehrere Operationen, die die eingehenden Daten generieren. Modulo-Arithmetik ermöglicht einen erneuten Hash-Prozess für ausgewählte Kennungen, wodurch die Weiterleitung von eingehenden Daten ermöglicht wird.
-
In einer Ausführungsform wird der Weiterleitungsplan auf Grundlage eines Erstellens der neuen Protokoll-Pipeline erstellt. Zum Beispiel ermöglicht das Erstellen des Weiterleitungsplans (z.B. eines neuen Weiterleitungsplans) einen Teilungs-/ Zusammenführungsprozess einer Protokoll-Pipeline, der durchgeführt werden soll, ohne eine Sperre/eine Zwischenspeicherung auf einem oder mehreren Vorgänger-Weiterleitungsplänen zu erfordern, wodurch die Systemleistung verbessert wird.
-
In einem Aspekt erfolgt eine Bestimmung, ob eine oder mehrere Einheiten von Daten aus einem Arbeitsspeicher in einen Speicher geschrieben werden sollen. Das Bestimmen beruht auf einem oder mehreren Leerungspunkten in einer oder mehreren Protokoll-Pipelines. Auf Grundlage eines Bestimmens, dass die eine oder die mehreren Einheiten von Daten aus einem Arbeitsspeicher in einen Speicher geschrieben werden sollen, werden die eine oder die mehreren Einheiten von Daten aus einem Arbeitsspeicher in einen Speicher geschrieben. Durch Verwenden der Leerungspunkte können Einheiten von Daten gleichzeitig mit einem Schreiben von Daten in Protokoll-Pipelines in einen Arbeitsspeicher geschrieben werden, wodurch die Systemleistung verbessert wird.
-
In einer Ausführungsform wird eine Bestimmung eines Mindest-Leerungspunkts für die eine oder die mehreren Protokoll-Pipelines vorgenommen, und das Bestimmen, ob eine Einheit von Daten der einen oder der mehreren Einheiten von Daten aus einem Arbeitsspeicher in einen Speicher geschrieben werden soll, weist ein Bestimmen auf, ob die Einheit von Daten einen Zeitstempel hat, der eine vordefinierte Beziehung mit dem Mindest-Leerungspunkt hat. Auf Grundlage der Einheit von Daten mit dem Zeitstempel, der die vordefinierte Beziehung mit dem Mindest-Leerungspunkt hat, wird das Schreiben der Einheit von Daten durchgeführt. Dies ermöglicht, dass Einheiten von Daten (z.B. Seiten von Daten) zum Beispiel gleichzeitig mit einem Schreiben von Daten in die Protokoll-Pipelines in einen Speicher geschrieben werden, wodurch die Systemleistung erhöht wird.
-
In einem Aspekt wird eine Engine zum Schreiben von Protokollen verwendet, um Protokolldaten aus einer oder mehreren Protokoll-Pipelines in einen Speicher zu schreiben. Eine Bestimmung erfolgt automatisch, ob eine oder mehrere zusätzliche Engines zum Schreiben von Protokollen genutzt werden sollen, um die Protokolldaten aus der einen oder den mehreren Protokoll-Pipelines zu schreiben. Auf Grundlage eines Bestimmens, dass die eine oder die mehreren zusätzlichen Engines zum Schreiben von Protokollen genutzt werden sollen, werden die eine oder die mehreren zusätzlichen Engines zum Schreiben von Protokollen genutzt. Durch Bereitstellen von zusätzlichen Engines zum Schreiben von Protokollen wird die Geschwindigkeit erhöht, mit der Daten in einen Speicher geschrieben werden können, wodurch sich die Systemleistung erhöht. Ferner wird in einem oder mehreren Aspekten durch Erhöhen der Geschwindigkeit, mit der Protokolldaten in einen Speicher geschrieben werden können, die Geschwindigkeit, mit der zum Beispiel modifizierte Seiten eines Arbeitsspeichers aus einem Arbeitsspeicher in einen Speicher geschrieben werden können, ebenfalls erhöht.
-
In einem Aspekt erfolgt eine Bestimmung, ob eine Wiederherstellung für ein oder mehrere Datenbankobjekte durchgeführt werden soll. Auf Grundlage eines Bestimmens, dass eine Wiederherstellung durchgeführt werden soll, wird eine Mehrzahl von Datensätzen, die aus einem Speicher gelesen werden, durch Verwenden einer ersten Technik sortiert, um eine erste Mehrzahl von sortierten Datensätzen bereitzustellen. Die erste Mehrzahl von sortierten Datensätzen umfasst eine erste Mehrzahl von Protokolleinheiten. Die erste Mehrzahl von sortierten Datensätzen wird für eine Wiederholungsoperation bereitgestellt. Die Wiederholungsoperation soll parallel an der ersten Mehrzahl von Protokolleinheiten durchgeführt werden. Dies ermöglicht, dass ein Verarbeiten einer Datenbank-Wiederherstellung parallel durchgeführt werden kann, wobei die Datenintegrität gewahrt bleibt.
-
In einem Aspekt erfolgt eine Bestimmung, ob eine Wiederherstellung für ein oder mehrere Datenbankobjekte durchgeführt werden soll. Auf Grundlage eines Bestimmens, dass eine Wiederherstellung durchgeführt werden soll, wird eine Mehrzahl von Datensätzen, die aus einem Speicher gelesen werden, durch Verwenden einer zweiten Technik sortiert, um eine zweite Mehrzahl von sortierten Datensätzen bereitzustellen. Die zweite Mehrzahl von sortierten Datensätzen umfasst eine zweite Mehrzahl von Protokolleinheiten. Die zweite Mehrzahl von sortierten Datensätzen wird für eine Widerrufoperation bereitgestellt. Die Widerrufoperation soll parallel an der zweiten Mehrzahl von Protokolleinheiten durchgeführt werden. Dies ermöglicht, dass ein Verarbeiten einer Datenbank-Wiederherstellung parallel durchgeführt werden kann, wobei die Datenintegrität gewahrt bleibt.
-
In einem Aspekt erfolgt eine Bestimmung, ob sich ein Konflikt beim Schreiben von Daten in eine oder mehrere Protokoll-Pipelines auf einer weiteren vorgegebenen Ebene befindet. Auf Grundlage eines Bestimmens, dass sich ein Konflikt beim Schreiben der Daten in die eine oder die mehreren Protokoll-Pipelines auf der anderen vorgegebenen Ebene befindet, wird eine Zusammenführungsoperation durchgeführt, um eine Anzahl von Protokoll-Pipelines zu reduzieren. Durch ein Durchführen der Zusammenführungsoperation werden weniger Protokoll-Pipelines und somit weniger Systemressourcen in Anspruch genommen.
-
Computersysteme und durch Computer umgesetzte Verfahren, die einen oder mehrere Aspekte betreffen, werden hierin ebenfalls beschrieben und beansprucht. Ferner werden auch Dienste, die einen oder mehrere Aspekte betreffen, hierin ebenfalls beschrieben und können beansprucht werden.
-
Weitere Merkmale und Vorteile werden durch die hierin beschriebenen Techniken verwirklicht. Andere Ausführungsformen und Aspekte werden hierin ausführlich beschrieben und werden als Bestandteil der beanspruchten Aspekte betrachtet.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Ein oder mehrere Aspekte werden besonders hervorgehoben und eindeutig als Beispiele in den Ansprüchen am Ende der Patentschrift beansprucht. Das Vorgenannte und Aufgaben, Merkmale und Vorteile von einem oder mehreren Aspekten werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den begleitenden Zeichnungen offenkundig, wobei:
- 1A ein Beispiel einer Protokoll-Pipeline darstellt, die gemäß einem oder mehreren Aspekten der vorliegenden Erfindung verwendet wird;
- 1B ein Beispiel eines Seitenpuffer-Pools darstellt, der gemäß einem oder mehreren Aspekten der vorliegenden Erfindung verwendet wird;
- 2A ein Beispiel einer Teilungsoperation darstellt, um zusätzliche Protokoll-Pipelines gemäß einem oder mehreren Aspekten der vorliegenden Erfindung zu erstellen;
- 2B ein Beispiel für ein Nutzen von zusätzlichen Engines zum Schreiben von Protokollen darstellt, um Protokollinformationen aus den Protokoll-Pipelines in einen Speicher gemäß einem oder mehreren Aspekten der vorliegenden Erfindung zu schreiben;
- 2C ein Beispiel einer Teilungsoperation darstellt, um zusätzliche Protokoll-Pipelines zu erstellen und eine oder mehrere zusätzliche Engines zum Schreiben von Protokollen gemäß einem oder mehreren Aspekten der vorliegenden Erfindung zu nutzen;
- 3A bis 3C eine Ausführungsform für ein Verarbeiten darstellt, das einem Ermöglichen des Schreibens von Daten in Protokoll-Pipelines, des Schreibens von Protokolldaten aus Protokoll-Pipelines in einen Speicher, des Schreibens von modifizierten Seiten eines Arbeitsspeichers in einen Speicher und/oder eines Neustarts/einer Wiederherstellung einer Datenbank gemäß einem oder mehreren Aspekten der vorliegenden Erfindung zugehörig ist;
- 4 ein Beispiel für ein Verwenden eines Weiterleitungsplans zur Einheiten-Wiederherstellung darstellt, um Einheiten-Wiederherstellungen zu Protokoll-Pipelines gemäß einem oder mehreren Aspekten der vorliegenden Erfindung weiterzuleiten;
- 5 ein weiteres Beispiel für ein Verwenden eines Weiterleitungsplans zur Einheiten-Wiederherstellung darstellt, um Einheiten-Wiederherstellungen zu Protokoll-Pipelines gemäß einem oder mehreren Aspekten der vorliegenden Erfindung weiterzuleiten;
- 6 ein Beispiel für ein dynamisches Teilen einer Protokoll-Pipeline und ein Erstellen eines neuen Weiterleitungsplan zur Wiederherstellung einer Einheit gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 7 ein Beispiel für ein Verwenden eines neuen Weiterleitungsplans zur Einheiten-Wiederherstellung darstellt, um Einheiten-Wiederherstellungen zu Protokoll-Pipelines gemäß einem oder mehreren Aspekten der vorliegenden Erfindung weiterzuleiten;
- 8A bis 8C ein Beispiel für ein Bestimmen darstellen, welche modifizierten Seiten aus einem Arbeitsspeicher in einen Speicher gemäß einem oder mehreren Aspekten der vorliegenden Erfindung ausgeschlossen werden können;
- 9A bis 9B ein Beispiel für ein Generieren eines Mindest-Protokollzeitstempels für jede Protokoll-Pipeline gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellen;
- 9C ein Beispiel für ein Verwenden von Mindest-Protokollzeitstempeln beim Schreiben von Daten aus einem Arbeitsspeicher in einen Speicher gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 10A bis 10B ein Beispiel für ein Verwenden von Steuerungsintervallen darstellen, um Protokollinformationen aus Protokoll-Pipelines gemäß einem oder mehreren Aspekten der vorliegenden Erfindung in einen Speicher zu leeren;
- 11 ein Beispiel für ein Sortieren von Protokolldatensätzen für einen Neustart und/oder eine Wiederherstellung einer Datenbank gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 12A ein Beispiel einer Teilungsoperation darstellt, um eine oder mehrere zusätzliche Protokoll-Pipelines zu erstellen und eine oder mehrere zusätzliche Engines zum Schreiben von Protokollen gemäß einem oder mehreren Aspekten der vorliegenden Erfindung zu nutzen;
- 12B ein Beispiel für ein Sortieren von Protokolldatensätzen für eine Wiederherstellung und/oder einen Neustart einer Datenbank gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 13A bis 13C Aspekte einer Ausführungsform eines Ermöglichens eines Verarbeitens in einer Datenverarbeitungsumgebung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellen;
- 14A ein Beispiel für eine Datenverarbeitungsumgebung darstellt, in die bzw. in der ein oder mehrere Aspekten der vorliegenden Erfindung integriert oder verwendet werden sollen;
- 14B ein Beispiel für Komponenten eines Datenbanksystems der Datenverarbeitungsumgebung von 14A darstellt, die zum Durchführen von einem oder mehreren Aspekten der vorliegenden Erfindung verwendet werden sollen;
- 15A ein weiteres Beispiel für eine Datenverarbeitungsumgebung darstellt, in die bzw. in der ein oder mehrere Aspekten der vorliegenden Erfindung integriert oder verwendet werden sollen;
- 15B weitere Details des Arbeitsspeichers von 15A gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt;
- 16 eine Ausführungsform einer Cloud-Computing-Umgebung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt; und
- 17 ein Beispiel von Abstraktionsmodellschichten gemäß einem oder mehreren Aspekten der vorliegenden Erfindung darstellt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Gemäß einem oder mehreren Aspekten wird eine Möglichkeit bereitgestellt, das Schreiben von Daten aus einem Arbeitsspeicher in Protokoll-Pipelines (die auch als Protokoll-Pipes, Protokolle oder Pipes bezeichnet werden) und aus Protokoll-Pipelines in einen Speicher zu ermöglichen. In einem oder mehreren Aspekten umfasst die Möglichkeit ein dynamisches Teilen einer Protokoll-Pipeline in eine oder mehrere andere Protokoll-Pipelines auf Grundlage eines Erkennens, dass sich ein Konflikt auf der Protokoll-Pipeline auf einer vorgegebenen Ebene befindet (z.B. über einem ausgewählten Schwellenwert), sodass zusätzliche Protokoll-Pipelines zum Empfangen von Daten verfügbar sind, die in den Speicher geschrieben werden sollen. In einem oder mehreren weiteren Aspekten umfasst die Möglichkeit ein Zusammenführen von einer oder mehreren Protokoll-Pipelines auf Grundlage eines Erkennens, dass sich ein Konflikt auf mindestens einer Protokoll-Pipeline auf einer weiteren vorgegebenen Ebene befindet (z.B. unter einem ausgewählten Schwellenwert). Ferner umfasst die Möglichkeit in einem oder mehreren Aspekten ein dynamisches Erhöhen der Anzahl von Engines zum Schreiben von Protokollen, um Protokolldaten aus einer oder mehreren Protokoll-Pipelines in einen Speicher zu schreiben.
-
Durch Teilen einer Protokoll-Pipeline, um eine oder mehrere zusätzliche Protokoll-Pipelines zum Empfangen von Daten bereitzustellen, die in einen Speicher geschrieben werden sollen, wird ein Konflikt auf einer bestimmten Protokoll-Pipeline reduziert, wodurch die Geschwindigkeit erhöht wird, mit der Daten in die Protokoll-Pipeline geschrieben werden können, und mit der die Protokolldaten in einen Speicher geschrieben werden können, wodurch sich die Systemleistung erhöht. Ferner kann durch ein Erhöhen der Geschwindigkeit, mit der Protokolldaten in einen Speicher geschrieben werden können, die Geschwindigkeit, mit der modifizierte Seiten von Arbeitsspeicher aus einem Arbeitsspeicher in einen Speicher geschrieben werden können, ebenfalls erhöht werden, da das Schreiben von ausgewählten modifizierten Seiten im Anschluss an das Schreiben von bestimmten Protokolldaten aus der einen oder den mehreren Protokoll-Pipelines in einen Speicher erfolgt, wie zum Beispiel durch einen Vergleich von Zeitstempeln bestimmt wird.
-
Desgleichen kann durch Erhöhen der Anzahl von Schreib-Engines zum Schreiben der Protokolldaten aus einer Protokoll-Pipeline in einen Speicher die Geschwindigkeit, mit der Daten in die Protokoll-Pipeline geschrieben werden können und mit der die Protokolldaten in einen Speicher geschrieben werden können, dadurch erhöht werden, wodurch sich die Systemleistung erhöht. Wiederum kann durch ein Erhöhen der Geschwindigkeit, mit der Protokolldaten in einen Speicher geschrieben werden können, die Geschwindigkeit, mit der modifizierte Seiten von Arbeitsspeicher aus einem Arbeitsspeicher in den Speicher geschrieben werden können, ebenfalls erhöht werden, da das Schreiben von ausgewählten modifizierten Seiten im Anschluss an das Schreiben von bestimmten Protokolldaten aus der einen oder den mehreren Protokoll-Pipelines in einen Speicher erfolgt, wie zum Beispiel durch einen Vergleich von Zeitstempeln bestimmt wird.
-
Unter Bezugnahme auf 1A ist eine Protokoll-Pipeline 100 in einem Protokollpuffer-Pool 102 enthalten und umfasst eine Mehrzahl von Protokolleinträgen 104. Jeder Protokolleintrag 104 umfasst Daten, wie zum Beispiel einen Protokolldatensatz 106 (der auch als Protokolldaten oder Protokollinformationen bezeichnet wird). In einem Beispiel hat jeder Protokolldatensatz einen dazugehörigen Zeitstempel 120, der angibt, wann der Protokolldatensatz in die Pipe geschrieben worden ist. Die Daten werden aus einem Arbeitsspeicher (z.B. auf Grundlage eines Aktualisierens, Löschens, Einfügens in eine Datenbank) in eine Protokoll-Pipe geschrieben, bevor sie in einen Speicher geschrieben werden. Beim Schreiben der Daten in die Protokoll-Pipeline 100 wird eine Serialisierung an der Protokoll-Pipeline vorgenommen, zum Beispiel über eine Zwischenspeicher-Warteschlange, da entschieden werden muss, welcher Protokolleintrag zuerst geschrieben werden soll usw. Diese Serialisierung verursacht einen Konflikt auf der Protokoll-Pipeline, was zu einem Engpass führt, der sich negativ auf die Systemleistung auswirkt. Außerdem werden in diesem Beispiel die Protokolldatensätze 106 über eine einzelne Engine zum Schreiben von Protokollen in einen Speicher 108 geschrieben. Durch ein Verwenden einer einzelnen Engine zum Schreiben von Protokollen wird Zeit benötigt, um die Daten aus der Protokoll-Pipeline in einen Speicher zu schreiben, was zu einem weiteren Engpass führt, der sich negativ auf die Systemleistung auswirkt.
-
Ferner, wie hierin beschrieben, müssen die Protokolldaten vor ausgewählten modifizierten Daten, die aus einem Arbeitsspeicher in einen Speicher geleert werden, in einen Speicher geschrieben werden. Wie in 1B gezeigt, umfasst ein Seitenpuffer-Pool 140 eine Verzögerungs-Schreibwarteschlange 150, die eine Mehrzahl von miteinander verketteten Einträgen 152 umfasst. Jeder Eintrag umfasst zum Beispiel eine Einheit von Daten, die in einen Speicher 154 geschrieben werden sollen. In einem Beispiel ist die Einheit von Daten eine Seite von Daten 156 mit einem dazugehörigen Zeitstempel 158, der zum Beispiel einen Zeitpunkt angibt, an dem die Seite modifiziert wurde. (Eine Seite kann von jeder ausgewählten Größe sein.) In einer Ausführungsform werden die Zeitstempel 158 und Zeitstempel 120 verwendet, um zu bestimmen, wann die Seite von Daten aus der Verzögerungs-Schreibwarteschlange in einen Speicher geschrieben werden kann. Wenn zum Beispiel ein Zeitstempel einer Seite von Daten in der Verzögerungs-Schreibwarteschlange (z.B. 16:33:55) kleiner als ein Zeitstempel des letzten Protokolls ist, das aus der Protokoll-Pipeline (z.B. 16:33: 58) geschrieben wurde, kann die Seite von Daten aus der Verzögerungs-Schreibwarteschlange 150 in den Speicher 154 geschrieben werden. Indem ermöglicht wird, dass Daten aus der Verzögerungs-Schreibwarteschlange gleichzeitig mit einem Schreiben von Daten aus der Protokoll-Pipeline auf Grundlage der Zeitstempel in einen Speicher geschrieben werden, wird eine Parallelität beim Schreiben von modifizierten Daten in einen Speicher bereitgestellt, wodurch die Systemleistung verbessert wird.
-
Gemäß einem oder mehreren Aspekten der vorliegenden Erfindung wird zum Beschleunigen einer Datenbankverarbeitung, einschließlich zum Beispiel Aktualisieren, Löschen und/oder Einfügen von Operationen in Datenbanken, eine Protokoll-Pipeline überwacht, die zum Schreiben von Protokolldaten aus einem Arbeitsspeicher in einen Speicher verwendet wird, um zu bestimmen, ob ein Konflikt auf der Protokoll-Pipeline sich auf einer nicht akzeptablen Ebene befindet. Der Konflikt kann durch einen Engpass beim Schreiben der Daten in die Protokoll-Pipe und/oder beim Schreiben der Protokolldaten aus der Protokoll-Pipe in einen Speicher verursacht werden. Wenn bestimmt wird, dass ein Konflikt auf der Protokoll-Pipeline zu hoch ist (die Ebene eines Konflikts sich zum Beispiel auf einer vorgegebenen Ebene befindet, die größer als ein ausgewählter Schwellenwert ist) und/oder auf Grundlage von anderen Kriterien, wird eine Teilungsoperation durchgeführt, um automatisch eine oder mehrere zusätzliche Protokoll-Pipelines zu erstellen, um den Konflikt auf einer oder mehreren vorhandenen Protokoll-Pipelines zu reduzieren (hierin als Teilen einer Protokoll-Pipeline bezeichnet). Wenn zum Beispiel, wie in 2A gezeigt, bestimmt wird, dass ein Konflikt auf der Protokoll-Pipeline 100 zu hoch ist, wird automatisch eine Teilungsoperation durchgeführt, um eine oder mehrere zusätzliche Protokoll-Pipelines zu erstellen. Die Daten werden dann zu Protokoll-Pipelines 100a bis 100n im Protokollpuffer-Pool 102 anstatt nur zur Protokoll-Pipeline 100 oder einer kleineren Anzahl von Protokoll-Pipelines als den Protokoll-Pipelines 100a bis 100n weitergeleitet. In einer Ausführungsform werden Daten aus den mehreren Protokoll-Pipelines 100a bis 100n durch Verwenden einer einzelnen Engine 110 zum Schreiben von Protokollen in einen Speicher geschrieben. Die einzelne Engine 110 zum Schreiben von Protokollen schreibt Daten zum Beispiel aus den mehreren Protokoll-Pipelines 100a bis 100n in einen Protokollsatz 106 in einem Speicher.
-
Unter Bezugnahme auf 2B werden eine oder mehrere zusätzliche Engines zum Schreiben von Protokollen in einem Aspekt auf Grundlage eines Konflikts beim Schreiben von Protokollinformationen aus der Protokoll-Pipeline in einen Speicher, der zu hoch ist (z.B. auf einer vorgegebenen Ebene, die beispielsweise größer als ein ausgewählter Schwellenwert ist) und/oder auf Grundlage von anderen Kriterien automatisch genutzt, sodass Engines 110A bis 110x zum Schreiben von Protokollen verwendet werden, um Daten aus der Protokoll-Pipeline 100 in einen oder mehrere Protokollsätze 120a bis 120m zu schreiben. Durch ein Verwenden von mehreren Engines zum Schreiben von Protokollen wird die Geschwindigkeit erhöht, mit der Daten aus der Protokoll-Pipeline 100 in einen Speicher geschrieben werden können (z.B. ein oder mehrere Protokollsätze 120a bis 120m). Ferner wird durch Erhöhen der Geschwindigkeit, mit der Daten aus der Protokoll-Pipeline entfernt werden, die Rate, mit der Daten in die Protokoll-Pipeline geschrieben werden können, sowie die Rate erhöht, mit der Einheiten von Daten wie zum Beispiel Arbeitsspeicherseiten, die modifiziert worden sind, aus einem Arbeitsspeicher in einen Speicher geschrieben werden können.
-
In einem oder mehreren Aspekten wird unter Bezugnahme auf 2 auf Grundlage eines Konflikts auf einer oder mehreren Protokoll-Pipelines, der zu hoch ist und/oder auf Grundlage von anderen Kriterien dynamisch eine Teilungsoperation durchgeführt, um automatisch eine oder mehrere zusätzliche Protokoll-Pipelines zu erstellen, sodass die Protokoll-Pipelines 100a bis 100n verwendet werden, um Protokolldatensätze zu empfangen, und eine oder mehrere zusätzliche Engines zum Schreiben von Protokollen werden automatisch genutzt, um die Protokolldaten in den mehreren Protokoll-Pipelines in einen oder mehrere Protokollsätze 120a bis 120m zu schreiben.
-
In einem weiteren Aspekt, wenn ein Konflikt auf einer oder mehreren Protokoll-Pipelines zu gering ist (z.B. befindet sich die Konfliktebene auf einer anderen vorgegebenen Ebene, die beispielsweise kleiner als ein ausgewählter Schwellenwert ist), wird eine Zusammenführungsoperation durchgeführt, um mindestens eine Protokoll-Pipeline mit mindestens einer anderen Protokoll-Pipeline zusammenzuführen. Zum Beispiel werden die Daten zu weniger Protokoll-Pipelines weitergeleitet.
-
Weitere Details eines dynamischen Teilens/Zusammenführens von Protokoll-Pipelines und eines Nutzens von zusätzlichen Engines zum Schreiben von Protokollen, um zum Beispiel ein Aktualisieren, Löschen und/oder Einfügen von Operationen in Datenbanken zu beschleunigen, um den Systemdurchsatz zu erhöhen und einen Protokoll-Serialisierungskonflikt zu verringern, werden unter Bezugnahme auf 3A bis 3C sowie 4 bis 11 beschrieben. Insbesondere stellen 3A bis 3C einen Überblick über verschiedene Aspekte der vorliegenden Erfindung bereit, und 4 bis 11 stellen weitere Details von ausgewählten Aspekten bereit.
-
Unter Bezugnahme auf 3A werden in einem Aspekt zum Ermöglichen des Schreibens von Daten (z.B. Protokoll-Datensätze) in mehrere Pipelines und/oder zum Ermöglichen eines Neustarts und/oder einer Wiederherstellung einer Datenbank Protokoll-Datensätze, die aus Operationen stammen, die als Teil einer als eine Einheiten-Wiederherstellung bezeichneten Einheit durchgeführt werden, zu einer selben Pipeline weitergeleitet. Zum Beispiel umfasst jede Einheiten-Wiederherstellung Operationen, die von einem Festschreibungspunkt einer Transaktion oder eines Programms zu einem weiteren Festschreibungspunkt der Transaktion oder des Programms durchgeführt wurden. Eine Einheiten-Wiederherstellung (z.B. Protokoll-Datensätze, die auf Grundlage von Operationen der Einheiten-Wiederherstellung generiert wurden) wird in eine ausgewählte Protokoll-Pipeline geschrieben, und da gemäß einem Aspekt der vorliegenden Erfindung mehrere Protokoll-Pipelines vorhanden sein können, wird die Protokoll-Pipeline über einen Weiterleitungsplan zur Einheiten-Wiederherstellung ausgewählt. Ein Weiterleitungsplan zur Einheiten-Wiederherstellung (der als ursprünglicher Weiterleitungsplan zur Einheiten-Wiederherstellung oder Plan #1 bezeichnet wird) wird erstellt und verwendet, um jede Einheiten-Wiederherstellung zu einer ausgewählten Protokoll-Pipeline für ihre Protokoll-Informationenausgabe (300) weiterzuleiten. Dies wird ausführlicher unter Bezugnahme auf 4 bis 5 beschrieben.
-
Wie in 4 in einem Beispiel gezeigt, umfasst ein Programm wie beispielsweise ein Programm #X 400 eine Mehrzahl von Einheiten-Wiederherstellungen 402. Eine Einheiten-Wiederherstellung 402 umfasst eine oder mehrere Operationen 404 zum Beispiel zwischen einem Beginn eines Programms und einem ersten Festschreibungspunkt, zwischen zwei Festschreibungspunkten oder zwischen einem Festschreibungspunkt und einem Ende des Programms. Zum Beispiel umfasst eine Einheiten-Wiederherstellung #1 ein Einfügen #1, ein Aktualisieren #2 ...und ein Löschen #M; eine Einheiten-Wiederherstellung #2 umfasst ein Aktualisieren #N ... ein Löschen #X usw. Die Kennungen der Einheiten-Wiederherstellungen (z.B. 1, 2...) werden in einen Weiterleitungsplan zur Einheiten-Wiederherstellung 406 eingegeben, der angibt, welche Protokoll-Pipeline verwendet werden soll, um die Einheiten-Wiederherstellungsdaten zu puffern, die aus den Operationen stammen. In dem Beispiel in 4 wird die UR #1 zu einer Protokoll-Pipeline #N 408c weitergeleitet, die UR #2 wird zu einer Protokoll-Pipeline 408a weitergeleitet, und die UR #X wird zu einer Protokoll-Pipeline 408b weitergeleitet.
-
In einer Ausführungsform wird eine komplette Einheiten-Wiederherstellung auf eine einzelne Protokoll-Pipeline geschrieben, wie in 5 gezeigt. Zum Beispiel werden Daten (z.B. Protokoll-Datensätze) einer Operation #1 bis Operation #M der UR #1 über den Weiterleitungsplan zur Einheiten-Wiederherstellung 406 zu einer Protokoll-Pipeline 500a weitergeleitet; und Daten (z.B. Protokoll-Datensätze) einer Operation #N bis Operation #X der UR #2 werden über den Weiterleitungsplan zu Einheiten-Wiederherstellung 406 zu einer Protokoll-Pipeline 500b weitergeleitet. In einem Beispiel wird die Protokoll-Pipeline über einen Hash-Wert der Kennung der Einheiten-Wiederherstellung ausgewählt. Wenn zum Beispiel drei Protokoll-Pipelines vorhanden sind, aus denen ausgewählt werden kann, ist 1 mod (modulo) 3 für die Einheiten-Wiederherstellungs-ID #1 gleich 1, und die Protokoll-Pipeline #1 wird ausgewählt. Desgleichen ist 2 mod 3 für die Einheiten-Wiederherstellungs-ID #2 gleich 2, und die Protokoll-Pipeline #2 wird ausgewählt usw. Indem sich die Daten (z.B. Protokolldatensätze) für alle Operationen einer Einheiten-Wiederherstellung in einer einzelnen Protokoll-Pipeline befinden, und die Daten (z.B. Protokolldatensätze) für eine oder mehrere der Operationen einer Einheiten-Wiederherstellung nicht zu verschiedenen Protokoll-Pipelines weitergeleitet werden, werden Wiederherstellungsfunktionen wie beispielweise Abbruch-, Rollback- und Backout-Funktionen ermöglicht. In einem Beispiel wird zum Durchführen einer Wiederherstellung eine Protokoll-Pipeline rückwärts durchlaufen, um die Protokolldaten der Einheiten-Wiederherstellung zu ermitteln, die wiederhergestellt wurden. Diese Rückwärtsdurchquerung wird ermöglicht (ist z.B. schneller), wenn die Protokolldaten der Einheiten-Wiederherstellung sich auf einer Pipeline befinden.
-
Unter erneuter Bezugnahme auf 3A überwacht ein Datenbankprotokoll-Leistungsmonitor (auch als Protokoll-Leitungsmonitor bezeichnet) einen Konflikt in einer Protokoll-Pipeline in dem Protokollpuffer-Pool und teilt eine Protokoll-Pipeline automatisch in mehrere Protokoll-Pipelines auf Grundlage des Konflikts, der zu hoch ist (z.B. befindet sich eine Konfliktebene auf einer vorgegebenen Ebene; z.B. über einem ausgewählten Schwellenwert), um einen Systemdruck (302) zu verringern; oder führt Protokoll-Pipelines zusammen, wenn der Konflikt zu gering ist (z.B. befindet sich die Konfliktebene auf einer weiteren vorgegebenen Ebene; z.B. unter einem ausgewählten Schwellenwert), um Systemressourcen (304) zu schonen. In einem Beispiel überwacht der Datenbankprotokoll-Leistungsmonitor den Protokollpuffer-Pool (z.B. eine oder mehrere Protokoll-Pipelines) zum Bestimmen eines Konflikts und/oder eine oder mehrere Zwischenspeicher-Warteschlangen, um zu bestimmen, ob ein Konflikt auf einer oder mehreren der Protokoll-Pipelines in Bezug auf eine oder mehrere vorgegebene Ebenen zu hoch oder zu niedrig ist.
-
Zum Beispiel wird beim Schreiben der Daten in eine Protokoll-Pipeline eine Serialisierung zum Beispiel über eine Zwischenspeicher-Warteschlange durchgeführt. Zum Beispiel ist eine entsprechende Zwischenspeicher-Warteschlange für jede Protokoll-Pipe vorhanden, um in die Protokoll-Pipe geschriebene Informationen zu serialisieren. Wenn zum Beispiel Thread 1 dabei ist, Informationen in die Protokoll-Pipe #1 zu schreiben, übernimmt er einen exklusiven Zwischenspeicher vor der Schreiboperation. Desgleichen, wenn Thread #2 ebenfalls dabei ist, Protokollinformationen in die Protokoll-Pipe #1 zu schreiben, muss er einen exklusiven Zwischenspeicher übernehmen. Da ein exklusiver Zwischenspeicher immer nur einem Thread zur selben Zeit gewährt wird, wird die Anforderung von Thread #2 zum Warten in die Zwischenspeicher-Warteschlange gestellt. Je länger die Zwischenspeicher-Warteschlange ist (z.B. die Anzahl der wartenden Komponenten (z.B. Threads) in der Zwischenspeicher-Warteschlange), um so höher ist der Protokoll-Pipe-Konflikt. Somit wird die Länge der Zwischenspeicher-Warteschlange in einem Beispiel verwendet, um zu bestimmen, ob ein Konflikt hoch oder niedrig ist. Wenn der Datenbankprotokoll-Leistungsmonitor bestimmt, dass der Konflikt zu hoch ist (z.B. hat die Zwischenspeicher-Warteschlange eine Anzahl von wartenden Komponenten von über X, wobei X auf Grundlage einer Präferenz, von Leistungszielen usw. ausgewählt wird), wird eine Teilungsoperation durchgeführt, um eine oder mehrere zusätzliche Protokoll-Pipelines zu erstellen.
-
In einem Beispiel werden Arbeitsspeicheradressen des Protokollpuffer-Pools der neuen Protokoll-Pipeline zugewiesen, um eine neue Protokoll-Pipeline zu erstellen; eine Kennung wird der neuen Protokoll-Pipeline zugewiesen; und ein Weiterleitungsplan wird zum Weiterleiten von Daten (z.B. Einheiten-Wiederherstellungen) an die Protokoll-Pipelines erstellt, einschließlich die eine oder die mehreren zusätzlichen Protokoll-Pipelines. Zusätzliche, weniger und/oder andere Aktionen können durchgeführt werden, um eine neue Protokoll-Pipeline zu erstellen.
-
Wenn desgleichen der Datenbankprotokoll-Leistungsmonitor bestimmt, dass der Konflikt zu gering ist (z.B. hat die Zwischenspeicher-Warteschlange eine Anzahl von wartenden Komponenten (z.B. Threads) von weniger als X, wobei X auf Grundlage einer Präferenz, von Leistungszielen usw. ausgewählt wird), wird eine Zusammenführungsoperation durchgeführt, um die Anzahl von Protokoll-Pipelines zu verringern, zu denen Daten weitergeleitet werden. Zum Beispiel wird ein Weiterleitungsplan zur Einheiten-Wiederherstellung erstellt, der eine Weiterleitung zu einer oder weniger Protokoll-Pipelines vornimmt.
-
Obwohl in den Beispielen oben ein Konflikt auf der Anzahl von wartenden Komponenten beruht, kann er auf anderen Faktoren beruhen, die mit der Zwischenspeicher-Warteschlange in Beziehung stehen können. Viele Beispiele sind möglich.
-
Wie angegeben, wird während eines Teilungs-/Zusammenführungsprozesses ein neuer Weiterleitungsplan zur Einheiten-Wiederherstellung erstellt. In einer Ausführungsform ist während des Teilungs-/Zusammenführungsprozesses keine Sperre/kein Zwischenspeicher in Bezug auf den ursprünglichen Weiterleitungsplan zur Einheiten-Wiederherstellung (z.B. Plan #1) aufgrund des Erstellens des neuen Weiterleitungsplans zur Einheiten-Wiederherstellung (z.B. Plan #2) erforderlich. Auf Grundlage des Erstellens des neuen Weiterleitungsplans zur Einheiten-Wiederherstellung werden Kennungen von Einheiten-Wiederherstellungen aus dem Plan #1 in dem Plan #2 (306) neu gehasht. Wie zum Beispiel in 6 gezeigt, wurde in diesem Beispiel ein aktueller Weiterleitungsplan zur Einheiten-Wiederherstellung 600a durch ein Hashen der UR_IDs (z.B. UR #1, UR #2, UR #4, UR #6, UR #8 und UR #10) erstellt, die in einer Hash-Tabelle 602 enthalten sind. Da in diesem Beispiel anfänglich zwei Protokoll-Pipelines vorhanden sind, wird die UR_ID mod 2 (604) zum Zuweisen jeder Einheiten-Wiederherstellung zu einer Protokoll-Pipeline verwendet. Zum Beispiel wird die UR #1 zu einer Protokoll-Pipeline 1 (606b) weitergeleitet und die übrigen Einheiten-Wiederherstellungen (z.B. #2, #4, #6, #8 und #10) werden zu einer Protokoll-Pipeline 0 (606a) weitergeleitet. Auf Grundlage einer Bestimmung, dass eine der Pipelines geteilt werden muss, wird eine dritte Pipeline erstellt. Zunächst ist diese Pipeline für die Einheiten-Wiederherstellungen nicht sichtbar. Sie wird in einem Beispiel auf Grundlage eines Erstellens eines neuen Weiterleitungsplans zur Einheiten-Wiederherstellung 600b sichtbar. Da es in diesem Beispiel drei Protokoll-Pipelines gibt, wird UR_ID mod 3 (610) zum Erstellen des UR-Weiterleitungsplans 600b verwendet, um die Einheiten-Wiederherstellungen an die drei Protokoll-Pipelines 606a, 606b, 606c weiterzuleiten. Zum Beispiel wird die UR #6 durch ein Hinzufügen der Protokoll-Pipeline #2 weiterhin zu der Protokoll-Pipeline 0 weitergeleitet; UR #1, UR #4 und UR #10 werden zu der Protokoll-Pipeline #1 weitergeleitet; und UR #2, UR #8 und UR #11 werden zu der Protokoll-Pipeline #2 weitergeleitet.
-
Unter Bezugnahme auf 3A und 6 wird in einem Beispiel, wenn eine neue Einheiten-Wiederherstellung eintrifft (z.B. UR #11) nur ein Weiterleitungsplan zur Einheiten-Wiederherstellung (z.B. 600b) aktualisiert (308); der ursprüngliche Weiterleitungsplan zur Einheiten-Wiederherstellung (oder ein oder mehrere andere Vorgänger-Routenpläne zur Einheiten-Wiederherstellung) werden in diesem Beispiel nicht aktualisiert. Der aktualisierte Weiterleitungsplan zur Einheiten-Wiederherstellung (z.B. Plan #2 600b) wird verwendet, um die neue Einheiten-Wiederherstellung zu der entsprechenden Protokoll-Pipeline zur Ausgabe von Protokollinformationen (310) weiterzuleiten. Zum Beispiel wird die UR #11 zu der Protokoll-Pipeline #2 (606c) weitergeleitet; z.B. 11 mod 3=2.
-
Wenn in einem Beispiel eine vorhandene Einheiten-Wiederherstellung festgeschrieben wird, werden sowohl der Plan #1 (600a) als auch der Plan #2 (600b) aktualisiert, indem diese Kennung der Einheiten-Wiederherstellung aus der Hash-Tabelle 602 entfernt wird (312). Wenn zum Beispiel die UR #10 festgeschrieben wird, wird die UR #10 aus dem UR-Weiterleitungsplan 600a und dem UR-Weiterleitungsplan 600b entfernt. In einem Beispiel wird das Entfernen durch ein Aktualisieren der Hash-Tabelle 602 durchgeführt, einschließlich einem Entfernen der UR #10 und einem Re-Hashing der vorhandenen UR-Kennungen. In einem weiteren Beispiel wird das Entfernen durch ein direktes Entfernen der UR #10 aus den UR-Weiterleitungstabellen 600a, 600b durchgeführt. Andere Beispiele sind ebenfalls möglich.
-
Wenn ferner, unter Bezugnahme auf 3A und 7, eine vorhandene Einheiten-Wiederherstellung eintrifft (z.B. ein oder mehrere Datensätze der vorhandenen UR eintreffen), wird der Plan #2 (z.B. 600b) verwendet, um die eingehenden Protokollinformationen an die entsprechende Protokoll-Pipeline weiterzuleiten (314), vorausgesetzt, die UR-ID wurde im Plan #2 bereits erneut gehasht. Andernfalls wird der Plan #1 (z.B. 600a) verwendet, um zu bestimmen, welche Protokoll-Pipeline für die Ausgabe von Protokollinformationen (316) zuständig ist. Infolgedessen ist kein Blockproblem für eine Protokoll-Ausgabeoperation vorhanden, selbst wenn eine oder mehrere Teilungs- oder Zusammenführungsoperationen an der Protokoll-Pipeline durchgeführt werden. Zur weiteren Erläuterung, wenn eine Ausgabe von zusätzlichen Protokollinformationen (die auch als Daten bezeichnet werden) für eine vorhandene Einheiten-Wiederherstellung eintrifft, kann diese Ausgabe von zusätzlichen Protokollinformationen aufgrund der Teilung in einer anderen Protokoll-Pipeline als die vorher empfangene Ausgabe von Protokollinformationen für diese vorhandene Einheiten-Wiederherstellung platziert werden. Zum Beispiel wurde eine Ausgabe von Protokollinformationen für die UR #8 (700) anfänglich an die Protokoll-Pipeline #0 (606a) weitergeleitet, und jetzt wird eine Ausgabe von zusätzlichen Protokollinformationen für die UR #8 (700) an die Protokoll-Pipeline #2 (606c) weitergeleitet. In einem Beispiel wird die Ausgabe der Protokollinformationen auf Grundlage der Teilung nicht von einer Protokoll-Pipeline in eine andere verschoben. Da die Ausgabe von Protokollinformationen in mehreren Protokoll-Pipelines platziert werden kann, werden alle UR-Weiterleitungspläne beibehalten, die Einheiten-Wiederherstellungen mit nicht festgeschriebenen Daten umfassen, um erforderlichenfalls eine Wiederherstellung zu ermöglichen. Wie vorher angegeben, wird die Wiederherstellung durch ein Beibehalten der Ausgabe von Protokollinformationen für eine bestimmte Einheiten-Wiederherstellung in derselben Protokoll-Pipeline ermöglicht. Dies kann auf Grundlage von einer oder mehreren Teilungsoperationen jedoch möglicherweise nicht beibehalten werden, und die Ausgabe von Protokollinformationen kann sich auf mehreren Protokoll-Pipelines befinden. Um daher eine Wiederherstellung zu ermöglichen, werden mehrere UR-Weiterleitungspläne genutzt, um zu bestimmen, wo die Protokollinformationen zwischengespeichert sind, und sie von dort aus wiederherzustellen.
-
In einem weiteren Beispiel können die Protokollinformationen auf Grundlage einer Teilungs- oder Zusammenführungsoperation von einer Protokoll-Pipeline in eine andere verschoben werden. Andere Variationen sind möglich.
-
Unter Bezugnahme auf 3B und 7 werden in einem Aspekt, wenn eine Einheiten-Wiederherstellung abgebrochen oder rückgängig gemacht werden soll, sowohl der ursprüngliche Weiterleitungsplan zur Einheiten-Wiederherstellung (z.B. der Plan #1 (600a), der auch als ein virtueller UR-Weiterleitungsplan bezeichnet wird, da es sich dabei nicht mehr um den aktuellen UR-Weiterleitungsplan handelt), als auch ein oder mehrere neue Weiterleitungspläne zur Einheiten-Wiederherstellung (z.B. der Plan #2 (600b)) verwendet, um zu ermitteln, welcher von der einen oder den mehreren Protokoll-Pipelines verwendet werden soll, um widerrufene Protokolle zu dieser Einheiten-Wiederherstellung zu lesen (320). Eine Wiederherstellungsoperation wird anschließend in Bezug auf die Widerruf-Protokolle durchgeführt.
-
In einem Beispiel kann der ursprüngliche Weiterleitungsplan zur Wiederherstellung von Einheiten (z.B. der Plan #1) gelöscht werden, wenn alle Kennungen der Einheiten-Wiederherstellungen aus dem Plan entfernt worden sind, wodurch angegeben wird, dass die entsprechenden Einheiten-Wiederherstellungen festgeschrieben sind (322).
-
Unter Bezugnahme auf 3B und 8A wird in einem Aspekt, wenn Protokollinformationen in eine Protokoll-Pipe 800 geschrieben werden, ein Zeitstempel 802 für jede Schreiboperation generiert (324). Zum Beispiel wird auf Grundlage eines Schreibens von Protokollinformationen Protokoll #X für eine Operation X ein Zeitstempel 16:33:11 generiert; für Protokollinformationen Protokoll #J wird ein Zeitstempel 16:33:58 generiert; für Protokollinformationen Protokoll #N wird ein Zeitstempel 16:36:49 generiert usw. Diese Informationen werden in einem Beispiel verwendet, um zu bestimmen, welche modifizierten Seiten eines Arbeitsspeichers aus einer Verzögerungs-Schreibwarteschlange ausgeschlossen werden können, wie hierin beschrieben.
-
Unter Bezugnahme auf 8B umfasst eine Verzögerungs-Schreibwarteschlange 820 eine Mehrzahl von Seiten 822, die darauf warten, aus dem Seitenpuffer-Pool in einen Speicher (z.B. Festplatte usw.) geschrieben zu werden. Jede Seite 822, die in der Verzögerungs-Schreibwarteschlange 820 enthalten ist, hat einen Zeitstempel 824, der angibt, wann sie modifiziert und in den Puffer geschrieben wurde. Die Zeitstempel 802 und 824 werden verwendet, um zu bestimmen, ob eine Seite aus dem Seitenpuffer in einen Speicher geschrieben werden kann, wie hierin beschrieben.
-
In einem Beispiel, wie in 8C gezeigt, wird ein Leerungspunkt 840a bis 840c für jede Protokoll-Pipeline 800a bis 800c bestimmt. Der Leerungspunkt ist ein Zeitstempel, der angibt, dass Protokollinformationen mit einem Zeitstempel mit einer vordefinierten Beziehung mit dem Leerungspunkt (z.B. kleiner als der Leerungspunkt) aus der Protokoll-Pipeline in einen Speicher geschrieben worden sind.
-
Unter Bezugnahme auf 3B und 9A bis 9C wird in einer Ausführungsform für jede Protokoll-Pipeline (dabei wird angenommen, dass die Anzahl von Pipelines N entspricht) der früheste Zeitstempel von Protokollinformationen beibehalten (326), die aus der Protokoll-Pipeline in einem Arbeitsspeicher in einen Protokollsatz in einem Speicher geleert wurden. Somit sind N Leerungszeitstempel vorhanden, die den N Pipelines entsprechen. Wie in 9A gezeigt, ist an einem bestimmten Zeitpunkt (1) der Leerungspunkt für die Protokoll-Pipeline 800a T4; der Leerungspunkt für die Protokoll-Pipeline 800b ist T12; und der Leerungspunkt für die Protokoll-Pipeline 800c ist T9 Ein Mindest-Zeitstempel aus den N Zeitstempeln wird zum Verwenden als ein Leerungspunkt in einer Verzögerungs-Schreibwarteschlange ausgewählt, um zu entscheiden, welche modifizierten Seiten aus einem Arbeitsspeicher in einem Speicher materialisiert werden können (328). In dem Beispiel für den Zeitpunkt (1) ist T4 der Mindest-Zeitstempel, und daher können Seiten in einem Seitenpuffer-Pool 900 (9C) mit einem Zeitstempel, der kleiner als der Mindest-Zeitstempel T4 ist, wie beispielweise eine Seite #N mit einem Zeitstempel T1 und eine Seite #M mit einem Zeitstempel T3 aus dem Seitenpuffer-Pool in einen Speicher geschrieben werden.
-
In einem weiteren Beispiel in 9B ist an einem weiteren bestimmten Zeitpunkt (2) der Leerungspunkt für die Protokoll-Pipeline 800a T10; der Leerungspunkt für die Protokoll-Pipeline 800b ist T12; und der Leerungspunkt für die Protokoll-Pipeline 800c ist T9. In diesem Beispiel ist T9 für den Zeitpunkt (2) der Mindest-Zeitstempel, und daher können Seiten in dem Seitenpuffer-Pool 900 (9C) mit einem Zeitstempel, der kleiner als der Mindest-Zeitstempel T9 ist, wie beispielweise die Seite #N mit einem Zeitstempel T4 und die Seite #M mit einem Zeitstempel T8 aus dem Seitenpuffer-Pool in einen Speicher geschrieben werden.
-
Unter Bezugnahme auf 3C nutzt eine Zuteilerroutine einer Engine zum Schreiben von Protokollen in einer Ausführungsform zum Schreiben der Protokollinformationen aus den Protokoll-Pipelines in einen Speicher eine oder mehrere Engines zum Schreiben von Protokollen (330), um Protokolldaten aus den Pipelines in einen Speicher zu schreiben. Dies wird ausführlicher unter Bezugnahme auf 10A beschrieben. Wie in einem Aspekt gezeigt, nutzt eine Zuteilerroutine einer Engine zu Schreiben von Protokollen 1000 (z.B. initiiert, aktiviert usw.) eine oder mehrere Engines zum Schreiben von Protokollen 1002, die verwendet werden, um Protokollinformationen aus einer oder mehreren Protokoll-Pipelines in einen oder mehrere Protokollsätze zu leeren. Die Zuteilerroutine einer Engine zum Schreiben von Protokollen 1000 bestimmt, wie das Schreiben der Daten aus den Protokoll-Pipelines in die Protokolldatensätze in einem Speicher optimiert wird. In einer Ausführungsform werden zum Optimieren des Schreibens eine oder mehrere Zellen oder Steuerungsintervalle (Cls) 1004 definiert. Zum Beispiel ist ein Steuerungsintervall eine ausgewählte Datenmenge, die aus einer Protokoll-Pipeline (z.B. 4K, 8K, 16K usw.) geschrieben werden soll, und umfasst ein oder mehrere Elemente, wie zum Beispiel einen oder mehrere Protokolldatensatz-Header, einen oder mehrere Protokolldatensätze (z.B. eine ausgewählte Datenmenge) und eine oder mehrere Steuerungen. In anderen Ausführungsformen umfasst das Steuerungsintervall zusätzliche, weniger und/oder andere Elemente. In einer Ausführungsform sind die Protokolldaten in Steuerungsintervalle geteilt, und eine Mehrzahl von Steuerungsintervallen wird parallel durch verschiedene Engines zum Schreiben von Protokollen auf Grundlage einer Schreibrichtlinie herausgeschrieben. Die Engines zum Schreiben von Protokollen können Steuerungsintervalle aus derselben Pipe, verschiedenen Pipes und/oder einer Kombination von derselben Pipe und verschiedenen Pipes parallel herausschreiben. Dies verbessert die Systemleistung.
-
In einem Beispiel umfasst die Schreibrichtlinie ein Schreiben 1006 der Protokollinformationen aus den Protokoll-Pipelines in einen Speicher so früh wie möglich, sowie ein Vorabrufen 1008 von zusätzlichen Protokollinformationen, um das Schreiben (z.B. ein Erhöhen der Geschwindigkeit, mit der das Schreiben durchgeführt wird) zu ermöglichen (332). In einer Ausführungsform wird der früheste Zeitstempel von der Zuteilerroutine einer Engine zum Schreiben verwendet, um zu bestimmen, welche Steuerungsintervalle durch die Engines zum Schreiben von Protokollen herausgeschrieben werden sollen. Da T4 in einem Beispiel der früheste Zeitstempel ist, bestimmt die Zuteilerroutine einer Engine zum Schreiben von Protokollen beispielsweise, dass CI #2 der Protokollpipe #1 durch die Engine zum Schreiben von Protokollen #1 herausgeschrieben werden soll, and CI #1 und CI #3 der Protokollpipe #2 durch die Engine zum Schreiben von Protokollen #2 parallel herausgeschrieben werden sollen, um das schnellste Schreiben zu ermöglichen.
-
In einer Ausführungsform empfängt die Zuteilerroutine einer Engine zum Schreiben von Protokollen Informationen in Bezug auf das Schreiben und Vorabrufen der Steuerungsintervalle, und auf Grundlage einer Bestimmung, dass ein Konflikt auf einer oder mehreren Protokoll-Pipelines zu schwerwiegend ist (z.B. auf einer vorgegebenen Ebene), nimmt die Zuteilerroutine zum Schreiben von Protokollen eine Anpassung vor, welche Engines aus welchen Protokoll-Pipelines schreiben sollen und/oder nutzt/aktiviert zusätzliche Engines zum Schreiben von Protokollen 1010 (10B), um den Leerungsprozess für die eine oder die mehreren belegten Protokoll-Pipelines zu beschleunigen (334), wie hierin beschrieben.
-
Zum Beispiel bestimmt die Zuteilerroutine einer Engine zum Schreiben von Protokollen 1000, dass eine weitere Engine zum Schreiben von Protokollen auf Grundlage eines belegten Abschnitts einer Protokollpipe genutzt werden soll, der auf einer vorgegebenen Ebene liegt (z.B. 85 % der gesamten Pipe-Kapazität). Zum Beispiel ist die Kapazität einer Protokoll-Pipe begrenzt und kann zum Beispiel 100 MB betragen (andere Größen sind ebenfalls möglich). Neue Protokollinformationen sollen auf einen vorhandenen freien Abschnitt der Protokoll-Pipe geschrieben werden, und ein durch Protokollinformationen belegter Abschnitt soll auf einer Festplatte materialisiert werden. Wenn der Prozentsatz des belegten Abschnitts zu viel Platz (z.B. 85 %) von der gesamten Protokollkapazität einnimmt, wird damit angegeben, dass das Datenbanksystem damit beschäftigt ist, Daten in einen Speicher zu schreiben. Daher wird in einem Beispiel eine zusätzliche Engine zum Schreiben von Protokollen 1010 genutzt, um die Materialisierung von Protokolldaten in einem Speicher zu beschleunigen. In einem weiteren Beispiel können mehrere Schreib-Engines zugewiesen werden, um aus einer Protokoll-Pipeline zu schreiben. Wie in einem Beispiel in 10B gezeigt, werden die Engines #1 und #2 zum Schreiben von Protokollen zugewiesen, um ein Schreiben/einen Vorabruf aus der Protokoll-Pipe #1 vorzunehmen, und die Engines #3 und #4 zum Schreiben von Protokollen werden zugewiesen, um ein Schreiben/einen Vorabruf aus der Protokoll-Pipe #2 vorzunehmen. Diese Zuweisungen werden dynamisch durch die Zuteilerroutine einer Engine zum Schreiben von Protokollen nach Bedarf geändert, um schnell aus den Protokoll-Pipelines zu schreiben.
-
Wenn sich ein Datenbanksystem in einem oder mehreren Aspekten in einem Neustart- oder Wiederherstellungsprozess befindet, wird bzw. werden ein oder mehrere gespeicherte Protokolldatensätze in dem Wiederherstellungs- oder Neustartprozess verwendet. Zum Beispiel wird bzw. werden ein oder mehrere Datensätze aus einem Speicher in einen Arbeitsspeicher eingelesen und in einer Wiederholungsoperation angewendet und/oder ein oder mehrere Datensätze werden aus einem Speicher in einen Arbeitsspeicher eingelesen und in einer Widerrufoperation angewendet. Bei einer Wiederholungsoperation werden Protokolldatensätze in einer Vorwärtsrichtung gelesen, und für eine Widerrufoperation werden Protokolldatensätze in einer Rückwärtsrichtung gelesen. Das Lesen in einer Vorwärts- oder Rückwärtsrichtung muss jedoch modifiziert werden, wenn mehrere Protokoll-Pipelines für eine bestimmte Einheiten-Wiederherstellung wiederhergestellt werden sollen, da die Protokolle nicht notwendigerweise der Reihe nach angeordnet sind. In einem Beispiel müssen Protokolle für die Wiederholungs- und Widerrufoperationen der Reihe nach angewendet werden, wenn sich die Protokolle in einer selben Arbeitsspeichereinheit befinden (z.B. in einer selben Arbeitsspeicherseite). Wenn sich die Protokolle in verschiedenen Einheiten eines Arbeitsspeichers (verschiedenen Arbeitsspeicherseiten) befinden, können die Protokolle in ungeordneter Reihenfolge angewendet werden.
-
Unter Fortsetzung mit 3C wird in einer Ausführungsform, wenn das Datenbanksystem sich in einem Neustart- oder Wiederherstellungsprozess befindet, Folgendes durchgeführt, da die Protokolldatensätze in den Protokollsätzen nicht der Reihe nach geordnet sind, weil mehrere Protokoll-Pipelines verwendet werden:
- (1) Sortieren und Zusammenführen von Protokolldatensätzen gemäß einer Kennung der Einheiten-Wiederherstellung (z.B. UR_ID + Protokollzeitstempel), um zu bestimmen, welches Datenbankobjekt (wie zum Beispiel eine Datenseite) durch Verwenden einer Datenbank-Protokollwiderrufoperation (340) rückgängig gemacht werden soll;
- (2) Sortieren und Zusammenführen von Protokolldatensätzen gemäß einer eindeutigen Seitenkennung (z.B. Datenbank DB_ID + Seitengruppen-ID + Partitions-ID + Seiten-ID + Protokollzeitstempel) als die Eingabe für ein erneutes Übermitteln durch eine Protokoll-Wiederholungsoperation (342); und
- (3) Auslösen eines Anwendens des Protokolls gemäß den Ergebnissen, die aus den Sortieroperationen generiert worden sind, um einen Neustart oder eine Wiederherstellung des Datenbanksystems (344) zu erreichen.
-
Unter Bezugnahme auf 11 verwaltet ein Datenbank-Neustart- und -Wiederherstellungsmanager 1100 in einer Ausführungsform eine Wiederholungsoperation 1102 für ein Sortierergebnis 1106 und/oder eine Widerrufoperation 1104 für ein Sortierergebnis 1108. Beim Durchführen der Wiederholungsoperation lesen eine oder mehrere Engines zum Lesen von Protokollen 1110 die Protokolldatensätze aus einem Speicher 1112 in einen Arbeitsspeicher ein und sortieren dann die erhaltenen Protokolldatensätze zum Beispiel auf Grundlage von Objektkennungen 1120 (z.B. eindeutige Seitenkennungen). Die sortierten Protokolldatensätze 1106 werden dann für eine Wiederholungsoperation 1102 bereitgestellt, und die Wiederholungsoperation wird parallel auf die sortierten Protokolldatensätze angewendet, wie im Folgenden beschrieben.
-
Ferner lesen für die Widerrufoperation 1104 eine oder mehrere Engines zum Lesen von Protokollen 1110 die Protokolldatensätze aus dem Speicher 1112 in einen Arbeitsspeicher ein und sortieren dann die erhaltenen Protokolldatensätze zum Beispiel auf Grundlage von Kennungen von Einheiten-Wiederherstellungen 1122. Die sortierten Protokolldatensätze 1108 werden für eine Widerrufoperation 1104 bereitgestellt, und die Widerrufoperation wird parallel auf die sortierten Protokolldatensätze angewendet, wie im Folgenden beschrieben.
-
Für einen Neustart oder eine Wiederherstellung einer Datenbank wird in einer Ausführungsform eine Wiederholungsoperation 1102 für das Sortierergebnis 1106 auf Grundlage von Protokolleinheiten 1130 ausgelöst. Zum Beispiel werden die Protokolldatensätze T2, T4, T6 und T10 als ein Protokoll betrachtet, da sich diese Protokolldatensätze unter einer selben Seite #1 (Objekt-ID) befinden. Desgleichen werden T1, T3, T5 und T12 als eine weitere Protokolleinheit betrachtet usw. In jeder Protokolleinheit werden die sortierten Protokolldatensätze (z.B. T2, T4, T6 und T10 für eine Protokolleinheit) in einer Vorwärtsrichtung angewendet (z.B. von links nach rechts). Diese Protokolleinheiten 1130 werden parallel angewendet, um den Prozess der Wiederholungsoperation zu beschleunigen.
-
Außerdem wird eine Widerrufoperation 1104 für ein Sortierergebnis 1108 auf Grundlage jeder Protokolleinheit 1132 ausgelöst (wie zum Beispiel: T1, T3 und T6 werden zu einer Protokolleinheit zusammengestellt; T2 und T4 zu einer weiteren Protokolleinheit usw.). In jeder Protokolleinheit werden Protokolldatensätze (z.B. T1, T3 und T6 für eine Protokolleinheit) in einer Rückwärtsrichtung angewendet (z.B. von rechts nach links). Diese Protokolleinheiten 1132 werden parallel angewendet, um den Prozess der Widerrufoperation zu beschleunigen.
-
Sowohl für Wiederholung als auch für Widerruf wird in einer Ausführungsform, obwohl der Wiederherstellungsprozess parallel durchgeführt wird, die Datenintegrität gewahrt. Durch ein paralleles Durchführen des Wiederherstellungsprozesses wird der Wiederherstellungsprozess beschleunigt, wodurch die Systemleistung erhöht wird.
-
Wie oben und unter Bezugnahme auf 12A in einem oder mehreren Aspekten beschrieben, wird auf Grundlage einer Bestimmung, dass ein Konflikt auf einer Protokoll-Pipeline 1200 zu hoch ist, eine Teilungsoperation durchgeführt, um mindestens eine andere Protokoll-Pipeline 1202 zu definieren. Protokolldatensätze werden dann auf Grundlage von einem oder mehreren Weiterleitungsplänen zur Wiederherstellung von Einheiten 1204 in die Protokoll-Pipelines geschrieben. Ferner werden eine oder mehrere Engines zum Schreiben von Protokollen 1210 verwendet, um Protokollinformationen aus den Protokoll-Pipelines in Protokolldatensätze 1212 in einem Speicher zu schreiben.
-
Das Teilen von Protokoll-Pipelines und/oder das Nutzen von zusätzlichen Engines zum Schreiben von Protokollen ermöglichen das Schreiben von Daten in Protokoll-Pipelines und das Schreiben von Protokolldaten aus den Protokoll-Pipelines in einen Speicher, wodurch ein Konflikt verringert wird und die Systemleistung verbessert wird. Das Zusammenführen von Protokoll-Pipelines reduziert die Verwendung von Systemressourcen, wodurch die Systemleistung verbessert wird.
-
Um ferner einen Neustart und/oder eine Wiederherstellung beispielweise durch Verwenden von gespeicherten Protokolldaten durchzuführen, verwaltet ein Datenbank-Neustart- und -Wiederherstellungsmanager 1250 eine Wiederholungsoperation und/oder eine Widerrufoperation auf einer oder mehreren Protokolleinheiten. Beim Durchführen der Wiederholungsoperation lesen eine oder mehrere Engines zum Lesen von Protokollen 1260 die Protokolldatensätze aus einem Speicher 1262 in einen Arbeitsspeicher ein und sortieren dann die erhaltenen Protokolldatensätze zum Beispiel auf Grundlage von Objektkennungen 1270 (z.B. eindeutige Seitenkennungen). Die sortierten Protokolldatensätze werden dann als Eingabe für die Wiederholungsoperation verwendet, und die Wiederholungsoperation wird parallel auf die sortierten Protokolldatensätze der Protokolleinheiten angewendet. Ferner lesen eine oder mehrere Engines zum Lesen von Protokollen 1260 für die Widerrufoperation die Protokolldatensätze aus dem Speicher 1262 in einen Arbeitsspeicher ein und sortieren dann die erhaltenen Protokolldatensätze zum Beispiel auf Grundlage von Kennungen von Einheiten-Wiederherstellungen 1272. Die sortierten Protokolldatensätze werden dann als Eingabe für die Widerrufoperation verwendet, und die Widerrufoperation wird parallel auf die sortierten Protokolldatensätze der Protokolleinheiten angewendet.
-
Obwohl verschiedene Ausführungsformen hierin beschrieben werden, sind andere Variationen und Ausführungsformen möglich. Es ist anzumerken, sofern es anderweitig nicht widersprüchlich ist, dass jeder Aspekt bzw. jedes Merkmal, die hierin beschrieben werden, sowie Varianten davon mit jedem anderen Aspekt bzw. Merkmal kombinierbar sind.
-
Ein oder mehrere Aspekte der vorliegenden Erfindung sind untrennbar mit Computertechnologie verbunden und ermöglichen ein Verarbeiten in einem Computer, wodurch dessen Leistung verbessert wird. In einem Beispiel wird eine Systemverbesserung durch ein automatisches Teilen und/oder Zusammenführen von Protokoll-Pipelines, ein automatisches Nutzen von einer oder mehreren automatischen Schreib-Engines und/oder ein Sortieren/Zusammenführen von Protokolldatensätzen für einen Neustart/eine Wiederherstellung einer Datenbank bereitgestellt.
-
Aspekte einer Ausführungsform zum Ermöglichen eines Verarbeitens in einer Datenverarbeitungsumgebung, soweit sie sich auf einen oder mehrere Aspekte der vorliegenden Erfindung beziehen, werden unter Bezugnahme auf 13A bis 13C beschrieben.
-
In einem Aspekt, unter Bezugnahme auf 13A, erfolgt eine Bestimmung, ob sich ein Konflikt beim Schreiben von Daten auf eine Protokoll-Pipeline auf einer vorgegebenen Ebene 1300 befindet. Die Protokoll-Pipeline wird zum Beispiel beim Schreiben der Daten aus einem Arbeitsspeicher in einen Speicher 1301 verwendet. Auf Grundlage des Bestimmens, dass sich ein Konflikt beim Schreiben der Daten in die Protokoll-Pipeline auf der vorgegebenen Ebene befindet, wird automatisch eine Teilungsoperation durchgeführt, um eine neue Protokoll-Pipeline 1302 zu erstellen.
-
Durch das Durchführen der Teilungsoperation wird ein Konflikt auf der Protokoll-Pipeline reduziert, und eine Geschwindigkeit, mit der Daten in die Protokoll-Pipelines geschrieben werden können, wird erhöht, wodurch Daten schneller in einen Speicher geschrieben werden können, wodurch die Systemleistung erhöht wird.
-
In einem Aspekt werden eingehende Daten zu einer ausgewählten Protokoll-Pipeline auf Grundlage eines Weiterleitungsplans 1304 weitergeleitet. Der Weiterleitungsplan umfasst eine Angabe, welche Protokoll-Pipeline von einer Mehrzahl von Protokoll-Pipelines die eingehenden Daten 1306 empfangen soll. Die Mehrzahl von Protokoll-Pipelines umfasst zum Beispiel mindestens die Protokoll-Pipeline und die neue Protokoll-Pipeline 1308. Die Verwendung eines Weiterleitungsplans ermöglicht ein Verfolgen, wohin die Protokolldaten in den Protokoll-Pipelines geschrieben werden, was mindestens Neustart- und/oder Wiederherstellungsoperationen ermöglicht.
-
Zum Beispiel wird die durch den Weiterleitungsplan angegebene Weiterleitung durch Verwenden von Modulo-Arithmetik einer ausgewählten Kennung 1310 bestimmt. Eine in der Modulo-Arithmetik verwendete Modulo-Zahl beruht zum Beispiel auf einer Anzahl von Protokoll-Pipelines in der Mehrzahl von Log-Pipelines 1312. In einem Beispiel ist die ausgewählte Kennung eine Kennung einer Einheiten-Wiederherstellung 1314, wobei die Einheiten-Wiederherstellung zum Beispiel eine oder mehrere Operationen umfasst, die die eingehenden Daten 1316 generieren. In einer Ausführungsform wird der Weiterleitungsplan auf Grundlage eines Erstellens der neuen Protokoll-Pipeline 1318 erstellt. Zum Beispiel ermöglicht das Erstellen des Weiterleitungsplans (z.B. eines neuen Weiterleitungsplans) einen Teilungs-/Zusammenführungsprozess für eine Protokoll-Pipeline, der durchgeführt wird, ohne eine Sperre/einen Zwischenspeicher auf einem oder mehreren Vorgänger-Weiterleitungsplänen zu erfordern.
-
Unter Bezugnahme auf 13B erfolgt in einem Aspekt eine Bestimmung, ob eine oder mehrere Einheiten von Daten (z.B. Seiten) aus dem Arbeitsspeicher (z.B. einem Seitenpuffer) in einen Speicher 1330 geschrieben werden sollen. Das Bestimmen beruht zum Beispiel auf einem oder mehreren Leerungspunkten in einer oder mehreren Protokoll-Pipelines 1332. Auf Grundlage eines Bestimmens, dass die eine oder die mehreren Einheiten von Daten aus einem Arbeitsspeicher in einen Speicher geschrieben werden sollen, werden die eine oder die mehreren Einheiten von Daten aus einem Arbeitsspeicher in einen Speicher 1334 geschrieben.
-
In einer Ausführungsform erfolgt eine Bestimmung eines Mindest-Leerungspunkts für die eine oder die mehreren Protokoll-Pipelines 1336. Ferner umfasst die Bestimmung, ob eine Einheit von Daten der einen oder der mehreren Einheiten von Daten, die aus einem Arbeitsspeicher in einen Speicher geschrieben werden soll, ein Bestimmen, ob die Einheit von Daten einen Zeitstempel mit einer vordefinierten Beziehung mit dem Mindest-Leerungspunkt hat (z.B. kleiner ist), wobei das Schreiben der Einheit von Daten auf Grundlage der Einheit von Daten mit dem Zeitstempel durchgeführt wird, der die vordefinierte Beziehung mit dem Mindest-Leerungspunkt 1338 hat. Dies ermöglicht, dass Seiten von Daten zum Beispiel gleichzeitig mit einem Schreiben von Daten in die Protokoll-Pipelines in einen Speicher geschrieben werden, wodurch die Systemleistung erhöht wird.
-
In einem Aspekt werden Protokolldaten aus einer oder mehreren Protokoll-Pipelines durch Verwenden einer Engine zum Schreiben von Protokollen 1350 geschrieben. Ferner erfolgt in einem Aspekt automatisch eine Bestimmung, ob eine oder mehrere zusätzliche Engines zum Schreiben von Protokollen genutzt werden sollen, um die Protokolldaten aus der einen oder den mehreren Protokoll-Pipelines 1352 zu schreiben. Auf Grundlage eines Bestimmens, dass die eine oder die mehreren zusätzlichen Engines zum Schreiben von Protokollen genutzt werden sollen, werden die eine oder die mehreren zusätzlichen Engines zum Schreiben von Protokollen 1354 genutzt. Durch Bereitstellen von zusätzlichen Engines zum Schreiben von Protokollen wird die Geschwindigkeit erhöht, mit der Daten in einen Speicher geschrieben werden können, wodurch sich die Systemleistung erhöht. Ferner wird in einem oder mehreren Aspekten durch Erhöhen der Geschwindigkeit, mit der Protokolldaten in den Speicher geschrieben werden können, die Geschwindigkeit, mit der modifizierte Seiten eines Arbeitsspeicher aus einem Arbeitsspeicher in einen Speicher geschrieben werden können, ebenfalls erhöht.
-
In einem Aspekt, unter Bezugnahme auf 13C, erfolgt eine Bestimmung, ob eine Wiederherstellung für ein oder mehrere Datenbankobjekte 1370 durchgeführt werden soll. Auf Grundlage des Bestimmens, dass eine Wiederherstellung durchgeführt werden soll, wird eine Mehrzahl von Datensätzen, die aus einem Speicher gelesen werden, durch Verwenden einer ersten Technik sortiert, um eine erste Mehrzahl von sortierten Datensätzen 1372 bereitzustellen. Die erste Mehrzahl von sortierten Datensätzen umfasst eine erste Mehrzahl von Protokolleinheiten 1374. Die erste Mehrzahl von sortierten Datensätzen wird für eine Wiederholungsoperation 1376 bereitgestellt. Die Wiederholungsoperation ist parallel an der ersten Mehrzahl von Protokolleinheiten 1378 durchzuführen. Dies ermöglicht, dass ein Verarbeiten der Datenbank-Wiederherstellung parallel durchgeführt werden kann, wobei die Datenintegrität gewahrt bleibt.
-
In einem Aspekt erfolgt eine Bestimmung, ob eine Wiederherstellung für ein oder mehrere Datenbankobjekte 1380 durchgeführt werden soll. Auf Grundlage des Bestimmens, dass eine Wiederherstellung durchgeführt werden soll, wird eine Mehrzahl von Datensätzen, die aus dem Speicher gelesen werden, durch Verwenden einer zweiten Technik sortiert, um eine zweite Mehrzahl von sortierten Datensätzen 1382 bereitzustellen. Die zweite Mehrzahl von sortierten Datensätzen umfasst eine zweite Mehrzahl von Protokolleinheiten 1384. Die zweite Mehrzahl von sortierten Datensätzen wird für eine Widerrufoperation 1386 bereitgestellt. Die Widerrufoperation ist parallel an der zweiten Mehrzahl von Protokolleinheiten 1388 durchzuführen. Dies ermöglicht, dass ein Verarbeiten der Datenbank-Wiederherstellung parallel durchgeführt werden kann, wobei die Datenintegrität gewahrt bleibt.
-
In einem Aspekt erfolgt eine Bestimmung, ob sich ein Konflikt beim Schreiben von Daten auf einer oder mehreren Protokoll-Pipelines auf einer weiteren vorgegebenen Ebene 1390 befindet. Auf Grundlage eines Bestimmens, dass sich ein Konflikt beim Schreiben der Daten in die eine oder die mehreren Protokoll-Pipelines auf der anderen vorgegebenen Ebene befindet, wird eine Zusammenführungsoperation durchgeführt, um eine Anzahl von Protokoll-Pipelines 1392 zu reduzieren. Durch ein Durchführen der Zusammenführungsoperation werden weniger Protokoll-Pipelines und somit weniger Systemressourcen in Anspruch genommen.
-
Andere Ausführungsformen, Aspekte und/oder Variationen sind möglich.
-
Ein oder mehrere Aspekte der vorliegenden Erfindung werden durch ein Datenbanksystem durchgeführt, das in einer Datenverarbeitungsumgebung enthalten ist, für die ein Beispiel in 14A dargestellt ist. Wie in 14A gezeigt, enthält eine Datenverarbeitungsumgebung 1400 zum Beispiel ein Computersystem 1402, das z.B. in der Form einer Mehrzweck-Datenverarbeitungseinheit gezeigt wird. Das Computersystem 1402 kann einen oder mehrere Prozessoren oder Verarbeitungseinheiten 1404 (z.B. Zentraleinheiten (CPUs, Central Processing Units)), einen Arbeitsspeicher 1406 (zum Beispiel auch bekannt unter Systemarbeitsspeicher, Hauptarbeitsspeicher, Hauptspeicher, zentraler Speicher) und eine oder mehrere Eingabe/Ausgabe- (E/A) Schnittstellen 1408 enthalten, die über einen oder mehrere Busse und/oder andere Verbindungen 1410 miteinander verbunden sind, es ist aber nicht darauf beschränkt.
-
Der Bus 1410 stellt einen oder mehrere von mehreren beliebigen Typen von Busstrukturen dar, einschließlich eines Arbeitsspeicherbusses oder Arbeitsspeicher-Controllers, eines Peripheriebusses, eines Accelerated Graphics Ports (beschleunigter Grafikanschluss) und eines Prozessors oder lokalen Busses unter Verwendung von einer aus einer Vielfalt von Busarchitekturen. Als Beispiel und nicht einschränkend enthalten derartige Architekturen den Industry Standard Architecture- (ISA), den Micro Channel Architecture-(MCA), den Enhanced ISA- (EISA), den lokalen Video Electronics Standards Association-(VESA) Bus und den Peripheral Component Interconnect- (PCI) Bus.
-
Der Arbeitsspeicher 1406 kann zum Beispiel einen Cache 1412 enthalten, wie beispielsweise einen gemeinsam genutzten Cache, der mit lokalen Caches 1414 der Prozessoren 1404 verbunden sein kann. Ferner kann der Arbeitsspeicher 1406 ein oder mehrere Programme oder eine oder mehrere Anwendungen 1416, ein Betriebssystem 1418, ein Datenbanksystem 1419 und eine oder mehrere durch einen Computer lesbare Programmanweisungen 1420 enthalten. Die durch einen Computer lesbaren Programmanweisungen 1420 können so konfiguriert werden, dass sie Funktionen von Ausführungsformen von Aspekten der Erfindung ausführen.
-
Das Computersystem 1402 kann z.B. auch über die E/A-Schnittstellen 1408 mit einer oder mehreren externen Einheiten 1430 und einer Netzwerkschnittstelle 1432 Daten austauschen. Die externen Einheiten 1430 umfassen zum Beispiel ein Benutzerendgerät, ein Bandlaufwerk, eine Zeigeeinheit, eine Anzeige usw., sowie eine oder mehrere Datenspeichereinheiten 1434 (z.B. einen Speicher wie beispielweise eine Festplatte usw.). Die Datenspeichereinheit 1434 kann ein oder mehrere Programme 1436, eine oder mehrere durch einen Computer lesbare Programmanweisungen 1438 und/oder Daten (z.B. modifizierte Seiten, die in einen Speicher geschrieben sind, Protokolldaten, die in einen Speicher geschrieben sind usw.) usw. speichern. Die durch einen Computer lesbaren Programmanweisungen können konfiguriert werden, um Funktionen von Ausführungsformen von Aspekten der Erfindung auszuführen.
-
Die Netzwerkschnittstelle 1432 ermöglicht dem Computersystem 1402 mit einem oder mehreren Netzwerken Daten auszutauschen, wie beispielsweise einem lokalen Netzwerk (LAN), einem allgemeinem Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. das Internet), wodurch eine Datenübertragung mit anderen Datenverarbeitungseinheiten oder -systemen bereitgestellt wird.
-
Das Computersystem 1402 kann weitere austauschbare/nicht austauschbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten und oder mit diesen verbunden sein. Zum Beispiel kann es ein nicht entfernbares, nicht flüchtiges magnetisches Medium (das in der Regel als „Festplattenlaufwerk“ bezeichnet wird), ein Magnetplattenlaufwerk zum Auslesen aus und Beschreiben von einer entfernbaren, nicht flüchtigen Magnetplatte (z.B. eine „Floppy Disk“) und/oder ein optisches Plattenlaufwerk zum Auslesen aus oder Beschreiben von einer entfernbaren, nicht flüchtigen optischen Platte, wie beispielsweise ein CD-ROM, DVD-ROM, oder eines anderen optischen Datenträgers umfassen oder mit diesen verbunden sein. Es sollte klar sein, dass andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem 1402 verwendet werden könnten. Zu Beispielen zählen: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw., ohne auf diese beschränkt zu sein.
-
Das Computersystem 1402 kann mit zahlreichen weiteren Umgebungen oder Konfigurationen für Universal- oder Sonder-Datenverarbeitungssysteme betriebsfähig sein. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem 1402 geeignet sein können, zählen PC-Systeme, Servercomputersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der oben genannten Systeme oder Einheiten und dergleichen aufweisen, sie sind aber nicht darauf beschränkt.
-
In einem Beispiel umfasst das Datenbanksystem 1419 eine oder mehrere Komponenten, um einen oder mehrere Aspekte der vorliegenden Erfindung durchzuführen. Diese Komponenten können in einem Arbeitsspeicher gespeichert werden, der einen Hauptarbeitsspeicher (z.B. den Arbeitsspeicher 1406) und/oder einen oder mehrere Caches (z.B. den Cache 1412, den lokalen Cache 1414) und/oder einen externen Speicher (z.B. die Einheit 1434) umfasst und durch einen oder mehrere Prozessoren (z.B. den Prozessor 1404) ausgeführt werden kann.
-
In einem Beispiel umfassen die Komponenten unter Bezugnahme auf 14B zum Beispiel:
- eine oder mehrere Engines 1450 zum Schreiben von Protokollen, die verwendet wird bzw. werden, um Protokolldaten aus einer oder mehreren Protokoll-Pipelines in einen Speicher zu schreiben.
- eine Zuteilerroutine 1455 einer Engine zum Schreiben von Protokollen, die zum Beispiel verwendet wird, um zu bestimmen, wann eine oder mehrere zusätzliche Engines zum Schreiben von Protokollen genutzt werden soll bzw. sollen (z.B. automatisch);
- eine oder mehrere Engines zum Lesen von Protokollen 1460, die zum Beispiel verwendet werden, um Daten aus einem Speicher in einen Arbeitsspeicher einzulesen, z.B. für einen Neustart und/oder eine Wiederherstellung einer Datenbank;
- einen Protokoll-Leistungsmonitor 1465, der zum Beispiel verwendet wird, um zu bestimmen, wann eine Teilungs- und/oder Zusammenführungsoperation durchgeführt werden soll; und
- einen Datenbank-Neustart- und -Wiederherstellungsmanager 1470, der zum Beispiel verwendet wird, um einen Neustart und/oder eine Wiederherstellung von einem oder mehreren Datenbankobjekten durchzuführen.
-
Obwohl verschiedene Komponenten beschrieben worden sind, können Aspekte der Erfindung durch eine oder mehrere der Komponenten durchgeführt werden. Es können zusätzliche, weniger und/oder andere Komponenten verwendet werden, um einen oder mehrere Aspekte der vorliegenden Erfindung durchzuführen. Viele Variationen sind möglich.
-
Weitere andere Typen von Datenverarbeitungsumgebungen können ebenfalls einen oder mehrere Aspekte der vorliegenden Erfindung integrieren und verwenden, einschließlich Emulationsumgebungen, für die ein Beispiel unter Bezugnahme auf 15A beschrieben wird, sie sind aber nicht darauf beschränkt. In diesem Beispiel enthält eine Datenverarbeitungsumgebung 10 zum Beispiel eine native Zentraleinheit (CPU) 12, einen Arbeitsspeicher 14 und eine oder mehrere Eingabe/Ausgabe-Einheiten und/oder Schnittstellen 16, die zum Beispiel über einen oder mehrere Busse 18 und/oder andere Verbindungen miteinander verbunden sind. Zum Beispiel kann die Datenverarbeitungsumgebung 10 einen Prozessor PowerPC® von International Business Machines Corporation, Armonk, New York; einen HP Superdome mit Intel®-Itanium®-II-Prozessoren von Hewlett Packard Co., Palo Alto, Kalifornien; und/oder andere Maschinen auf Grundlage von Architekturen von International Business Machines Corporation, Hewlett Packard, Intel Corporation, Oracle, oder anderen umfassen. PowerPC ist eine Marke oder eingetragene Marke der International Business Machines Corporation unter mindestens einer Gerichtsbarkeit. Intel und Itanium sind Marken oder eingetragene Marken von Intel Corporation oder deren Tochterunternehmen in den Vereinigten Staaten und anderen Ländern.
-
Die native Zentraleinheit 12 enthält ein oder mehrere native Register 20, wie zum Beispiel ein oder mehrere Mehrzweckregister und/oder ein oder mehrere Sonderzweckregister, die während eines Verarbeitens innerhalb der Umgebung verwendet werden. Diese Register enthalten Informationen, die den Zustand der Umgebung zu jedem bestimmten Zeitpunkt darstellen.
-
Des Weiteren führt die native Zentraleinheit 12 Anweisungen und Code aus, die im Arbeitsspeicher 14 gespeichert sind. In einem bestimmten Beispiel führt die Zentraleinheit einen Emulatorcode 22 aus, der im Arbeitsspeicher 14 gespeichert ist. Dieser Code ermöglicht es der in einer Architektur konfigurierten Datenverarbeitungsumgebung eine andere Architektur zu emulieren. Zum Beispiel ermöglicht der Emulatorcode 22 Maschinen auf Grundlage anderer Architekturen als zum Beispiel der z/Architecture®-Hardware-Architektur von der International Business Machines Corporation, wie zum Beispiel PowerPC®-Prozessoren, HP-Superdome-Servern oder anderen, zum Beispiel die z/Architecture®-Hardware-Architektur zu emulieren und Software und Anweisungen auszuführen, die zum Beispiel auf Grundlage der z/Architecture®-Hardware-Architektur entwickelt wurden. Z/ARCHITECTURE ist eine Marke oder eingetragene Marke der International Business Machines Corporation unter mindestens einer Gerichtsbarkeit.
-
Weitere Details zum Emulatorcode 22 werden unter Bezugnahme auf 15B beschrieben. Im Arbeitsspeicher 14 gespeicherte Gast-Anweisungen 30 weisen Software-Anweisungen auf, (z.B. korrelierend zu Maschinenanweisungen), die entwickelt wurden, um in einer anderen Architektur als derjenigen der nativen CPU 12 ausgeführt zu werden. Zum Beispiel können die Gast-Anweisungen 30 dafür ausgelegt worden sein, auf einem Prozessor auf Grundlage der z/Architecture®-Hardware-Architektur ausgeführt zu werden, werden aber stattdessen auf der nativen CPU 12 emuliert, die zum Beispiel ein Intel®-Itanium®-II-Prozessor sein kann. In einem Beispiel enthält der Emulatorcode 22 eine Anweisungsabrufroutine 32, um eine oder mehrere Gast-Anweisungen 30 vom Arbeitsspeicher 14 zu erhalten und optional eine lokale Pufferspeicherung für die erhaltenen Anweisungen bereitzustellen. Außerdem enthält er eine Anweisungsübersetzungsroutine 34, um den Typ der erhaltenen Gast-Anweisung zu ermitteln, und um die Gast-Anweisung in eine oder mehrere native Anweisungen 36 zu übersetzen. Diese Übersetzung enthält zum Beispiel ein Identifizieren der Funktion, die durch die Gast-Anweisung ausgeführt werden soll, und ein Auswählen der nativen Anweisung(en), die diese Funktion ausführen soll(en).
-
Ferner enthält der Emulatorcode 22 eine Emulationssteuerungsroutine 40, die veranlasst, dass die nativen Anweisungen ausgeführt werden. Die Emulationssteuerroutine 40 kann die native CPU 12 veranlassen, eine Routine von nativen Anweisungen auszuführen, die eine oder mehrere vorher erhaltene Gast-Anweisungen emulieren, und die nach Abschluss einer derartigen Ausführung die Steuerung wieder an die Anweisungsabrufroutine zurückgeben, um das Erhalten der nächsten Gast-Anweisung oder einer Gruppe von Gast-Anweisungen zu emulieren. Die Ausführung der nativen Anweisungen 36 kann ein Laden von Daten aus dem Arbeitsspeicher 14 in ein Register; ein Zurückspeichern der Daten aus einem Register in den Arbeitsspeicher; oder ein Ausführen eines Typs einer arithmetischen oder logischen Operation umfassen, wie durch die Übersetzungsroutine bestimmt.
-
Jede Routine wird zum Beispiel in Software umgesetzt, die im Arbeitsspeicher gespeichert ist und durch die native Zentraleinheit 12 ausgeführt wird. In weiteren Beispielen wird bzw. werden eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder einer Kombination davon umgesetzt. Die Register des emulierten Prozessors können unter Verwendung von Registern 20 der nativen CPU oder unter Verwendung von Speicherorten im Arbeitsspeicher 14 emuliert werden. In Ausführungsformen können sich die Gast-Anweisungen 30, die nativen Anweisungen 36 und der Emulatorcode 22 in demselben Arbeitsspeicher befinden oder auf verschiedene Arbeitsspeichereinheiten verteilt werden.
-
Ein oder mehrere Aspekte der vorliegenden Erfindung können sich auf Cloud-Computing beziehen.
-
Obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud Computing enthält, sollte klar sein, dass die Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden.
-
Cloud Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
-
Die Eigenschaften sind wie folgt:
-
On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
-
Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
-
Resource Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
-
Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt, und sie können jederzeit in jeder beliebigen Menge gekauft werden.
-
Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Der Ressourcen-Verbrauch kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
-
Die Dienstmodelle sind wie folgt:
-
Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
-
Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
-
Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
-
Die Nutzungsmodelle sind wie folgt:
-
Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
-
Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
-
Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
-
Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
-
Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten enthält.
-
Unter folgender Bezugnahme auf 16 wird eine veranschaulichte Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 52, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N, Daten austauschen können. Die Knoten 52 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die in 16 gezeigten Typen von Datenverarbeitungseinheiten 54A bis 54N nur zur Veranschaulichung dienen sollen, und dass die Datenverarbeitungs-Knoten 52 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
-
Unter Bezugnahme auf 17 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (16) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 17 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
-
Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 61; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und vernetzte Komponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 67 und Datenbank-Software 68.
-
Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
-
In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und anderen Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 82 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 84 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 85 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
-
Eine Arbeitslastenschicht 90 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 91; Software-Entwicklung und Lifecycle-Management 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und datenbankbezogene Verarbeitung 96.
-
Die oben beschriebenen Datenverarbeitungsumgebungen sind nur Beispiele für Datenverarbeitungsumgebungen, die verwendet werden können. Andere Umgebungen, einschließlich nicht partitionierte Umgebungen, partitionierte Umgebungen, Cloud-Umgebungen und/oder emulierte Umgebungen können verwendet werden, ohne auf diese beschränkt zu sein; die Ausführungsformen sind nicht auf irgendeine Umgebung beschränkt. Obwohl verschiedene Beispiele von Datenverarbeitungsumgebungen hierin beschrieben werden, kann ein bzw. können mehrere Aspekte der vorliegenden Erfindung mit vielen Umgebungstypen verwendet werden. Die hierin angegebenen Datenverarbeitungsumgebungen sind nur Beispiele.
-
Jede Datenverarbeitungsumgebung kann so konfiguriert werden, dass sie einen oder mehrere Aspekte der vorliegenden Erfindung umfasst. Zum Beispiel kann jede konfiguriert werden, um eine datenbankbezogene Verarbeitung gemäß einem oder mehreren Aspekten der vorliegenden Erfindung bereitzustellen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder es anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.
-
Bei Aspekten der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Arbeitsspeicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können für einen Prozessor eines Computers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erstellen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich als ein Schritt erreicht werden, der gleichzeitig, im Wesentlichen gleichzeitig, in einer teilweise oder vollständig zeitlich überlappenden Weise ausgeführt wird, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Zusätzlich zu Vorgenanntem können ein oder mehrere Aspekte durch einen Dienstanbieter bereitgestellt, angeboten, eingesetzt, verwaltet, gewartet werden usw., der eine Verwaltung von Umgebungen von Kunden anbietet. Zum Beispiel kann der Dienstanbieter Computercode und/oder eine Computer-Infrastruktur erstellen, pflegen, unterstützen usw., die einen oder mehrere Aspekte für einen oder mehrere Kunden ausführen. Im Gegenzug kann der Dienstanbieter zum Beispiel eine Bezahlung von dem Kunden unter einem Abonnement und/oder einer Gebührenvereinbarung erhalten. Zusätzlich oder alternativ kann der Dienstanbieter eine Bezahlung aus dem Verkauf von Werbeinhalten an einen oder mehrere Fremdanbieter erhalten.
-
In einem Aspekt kann eine Anwendung zum Ausführen von einer oder mehreren Ausführungsformen verwendet werden. Zum Beispiel weist die Verwendung einer Anwendung ein Bereitstellen einer Computer-Infrastruktur auf, die fähig ist, eine oder mehrere Ausführungsformen auszuführen.
-
Als weiterer Aspekt kann eine Datenverarbeitungs-Infrastruktur verwendet werden, die ein Integrieren von durch einen Computer lesbarem Code in ein Datenverarbeitungssystem aufweist, in dem der Code in Kombination mit dem Datenverarbeitungssystem fähig ist, eine oder mehrere Ausführungsformen auszuführen.
-
Als noch ein weiterer Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungs-Infrastruktur bereitgestellt werden, die ein Integrieren von durch einen Computer lesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein durch einen Computer lesbares Medium auf, wobei das Computer-Medium eine oder mehrere Ausführungsformen aufweist. Der Code in Kombination mit dem Computersystem ist fähig, eine oder mehrere Ausführungsformen auszuführen.
-
Obwohl verschiedene Ausführungsformen oben beschrieben werden, sind dies nur Beispiele. Zum Beispiel kann eine Teilung und/oder eine Zusammenführung auf Grundlage von anderen Kriterien und/oder anders als hierin beschrieben durchgeführt werden. Ferner können andere Speichertechniken verwendet werden. Außerdem kann die Nutzung von zusätzlichen Engines zum Schreiben von Protokollen auf anderen Kriterien beruhen. Viele Variationen sind möglich.
-
Ferner können weitere Typen von Datenverarbeitungsumgebungen daraus Nutzen ziehen und verwendet werden. Zum Beispiel ist ein Datenverarbeitungssystem verwendbar, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, das mindestens zwei Prozessoren umfasst, die direkt oder indirekt über einen Systembus mit Arbeitsspeicherelementen verbunden sind. Die Arbeitsspeicherelemente umfassen zum Beispiel einen lokalen Arbeitsspeicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und einen Cache-Arbeitsspeicher, die eine vorübergehende Speicherung von mindestens einigem Programmcode bereitstellen, um die Anzahl zu verringern, wie oft Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
-
Eingabe-/Ausgabe- oder E/A-Einheiten (einschließlich Tastaturen, Anzeigen, Zeigeeinheiten, DASD, Band, CDs, DVDs, Thumb-Drives und andere Speichermedien usw., die jedoch nicht darauf beschränkt sind) können entweder direkt oder über zwischengeschaltete E/A-Controller mit dem System verbunden werden. Netzwerkadapter können ebenfalls mit dem System verbunden werden, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems oder Ethernet-Karten sind nur einige der verfügbaren Typen von Netzwerkadaptern.
-
Die hierin verwendete Terminologie dient nur zum Zweck der Beschreibung von bestimmten Ausführungsformen und soll keinesfalls einschränkend sein. Die hierin verwendeten Singularformen „ein“, „eine“ und „der/die/das“ sollen auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ und/oder „aufweisend“ bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementkomponenten und/oder Gruppen davon aber nicht ausschließen.
-
Die entsprechenden Strukturen, Materialien, und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen, sofern vorhanden, alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung von einer oder mehreren Ausführungsformen wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend oder auf die offenbarte Form eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig. Die Ausführungsform wurde ausgewählt und beschrieben, um verschiedene Aspekte und die praktische Anwendung am besten zu erklären und es anderen Fachleuten zu erleichtern, die verschiedenen Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.