-
HINTERGRUND
-
Die vorliegende Erfindung betrifft allgemein das Gebiet der Verarbeitung in einem Multi-Tenant- (Mehrmandanten-) System und insbesondere ein Verfahren zur gemeinsamen Nutzung von Verarbeitungsressourcen eines Multi-Tenant-ETL- (Extract Transform Load - Extraktion, Umwandlung, Laden) Systems.
-
Die vorliegende Erfindung betrifft zudem ein Computerprogrammprodukt, das durch einen Computer lesbaren Programmcode aufweist, der es einem Prozessor eines Systems oder einer Anzahl von Prozessoren eines Netzwerks ermöglicht, ein solches Verfahren zu implementieren.
-
Die vorliegende Erfindung betrifft zudem ein System zur gemeinsamen Nutzung von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems.
-
In einem Multi-Tenant-ETL-System werden große Datenmengen asynchron und hochparallel von mehreren verschiedenen Tenants (Mandanten) aus extrahiert und verarbeitet. Die Daten werden Seite für Seite extrahiert und zur Verarbeitung durch eine gemeinsame Verarbeitungs-Engine (oder einen Cluster) in eine Warteschlange gestellt.
-
Mehrere Tenants können große Arbeitsaufkommen übermitteln, die dann zur Verarbeitung in der gemeinsamen Verarbeitungs-Engine in eine Warteschlange gestellt werden. Entsprechend kann das Arbeitsaufkommen eines Tenant das System mit großen Datenmengen für sich beanspruchen und die Verarbeitung des Arbeitsaufkommens eines anderen Tenant verzögern. Dies ist unfair gegenüber anderen Tenants, die das gleiche Dienstniveau erhalten sollten (z.B. Tenants derselben Kategorie). Auch wenn eine bestimmte Kategorie von Tenants eine bessere Dienstgüte erhalten kann als eine andere Kategorie von Tenants (z.B. kann ein System so konfiguriert sein, dass es zahlenden oder Premium-Kunden ein höheres Dienstniveau bietet als nichtzahlenden oder Standard-Kunden), erwarten alle Tenants innerhalb derselben Kategorie das gleiche Dienstniveau. Mit anderen Worten, eine typische Erwartung ist, dass ein Multi-Tenant-ETL-System allen Tenants innerhalb derselben Kategorie gegenüber gerecht sein sollte.
-
Die
US 8 473 960 B2 offenbart ein Verfahren für die Verwaltung der Systemleistung von Ressourcen, die Aufgaben als Reaktion auf Aufgabenanforderungen von Tenants ausführen. In einem Beispiel umfasst ein System mindestens eine Ressource, die so konfiguriert ist, dass sie mindestens eine zugelassene Aufgabe mit einer Auswirkung unter der Kontrolle eines Computersystems ausführt. Das Computersystem bietet Dienste für mehr als einen Tenant an. Das Computersystem umfasst einen Strategen, der so konfiguriert ist, dass er die Auswirkungen der zugelassenen Aufgabe bewertet, um einen Kostenfunktionsvektor, der mehrere Kostenfunktionsspezifikationen enthält, und einen Budgetrichtlinienvektor, der mehrere Budgetrichtlinien enthält, sowie einen Aktor zu erstellen. Der Aktor empfängt den Kostenfunktionsvektor und den Budgetrichtlinienvektor vom Strategen, empfängt eine Aufgabenanforderung von einem der mehreren Tenants und berechnet Kostenfunktionen auf der Grundlage des Kostenfunktionsvektors, um die Auswirkungen der Aufgabenanforderung auf die Ressourcen für jede der Aufgabenanforderungen vorherzusagen. Der Aktor drosselt die Aufgabenanforderungen auf der Grundlage der Budgetrichtlinien für die Auswirkungen auf die Ressourcen, um mindestens eines von der zugelassenen Aufgabe, die von der Ressource ausgeführt wird, und einer verzögerten Aufgabenanforderung zu erzeugen.
-
Die
US 2006 / 0 090 163 A1 offenbart ein Verfahren zur Steuerung des Zugriffs auf eine Rechenressource innerhalb einer gemeinsam genutzten Rechenumgebung. Das Verfahren beginnt mit einem ersten Schritt der Messung von Leistungsparametern für Arbeitslasten, die auf die Rechenressource zugreifen, um einen Leistungsparametervektor für die Arbeitslasten zu bestimmen. Das Verfahren fährt mit einem zweiten Schritt fort, in dem eine Steuerungsfunktion für die Rechenressource durch Analyse der jüngsten Leistungsparameter und der jüngsten Durchsätze geschätzt wird. Die Steuerungsfunktion umfasst eine mathematische Operation, die eine Eingabe annimmt und eine Ausgabe liefert. In einem dritten Schritt vergleicht das Verfahren den Leistungsparametervektor mit einem Referenzleistungsparametervektor, um einen Fehlerparameter zu bestimmen. In einem vierten Schritt wendet das Verfahren die Steuerungsfunktion auf den Fehlerparameter an, um einen Zieldurchsatz für jede der Arbeitslasten zu bestimmen. Das Verfahren schließt mit einem fünften Schritt der Anpassung des Zugriffs auf die Rechenressource für jede Arbeitslast mit einer Durchsatzgrenze, die sich von etwa dem Zieldurchsatz unterscheidet, indem die Durchsatzgrenze für die Arbeitslast auf etwa den Zieldurchsatz reduziert oder erhöht wird.
-
Die
US 2016 / 0 021 196 A1 offenbart ein Verfahren, bei dem Tenant-Änderungen bei einem Multi-Tenant-Service empfangen werden. Die Tenant-Änderungen werden in Abschnitte unterteilt. Die Abschnitte von Tenant-Änderungen werden beim Multi-Tenant-Service über alle Tenants, die Änderungen beantragt haben, bearbeitet, um die Bearbeitungsressourcen gleichmäßig auf alle anfragenden Tenants zu verteilen.
-
KURZDARSTELLUNG
-
Gemäß einer Ausführungsform der vorliegenden Erfindung ist ein durch einen Computer implementiertes Verfahren zum gemeinsamen Nutzen von Verarbeitungsressourcen eines Multi-Tenant-ETL- (Extract Transform Load - Extrahieren, Umwandeln, Laden) Systems vorgesehen, wobei das Verfahren Folgendes umfasst: durch einen oder mehrere Prozessoren erfolgendes Ermitteln einer Gesamtarbeitslast des Multi-Tenant-ETL-Systems; durch den einen oder die mehreren Prozessoren erfolgendes Ermitteln einer einem Tenant zugeordneten Arbeitslast in einer Warteschlange; und durch den einen oder die mehreren Prozessoren erfolgendes Verzögern der Hinzufügung von durch den Tenant angeforderter Arbeit zu der Arbeitslast des Multi-Tenant-ETL-Systems auf Grundlage der Gesamtarbeitslast und der Arbeitslast in der Warteschlange.
-
Gemäß einer anderen Ausführungsform der vorliegenden Erfindung weist ein Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen auf, wobei die Programmanweisungen durch eine Verarbeitungseinheit ausführbar sind, um die Verarbeitungseinheit zu veranlassen, bei Ausführung in einem Computernetzwerk ein Verfahren zum gemeinsamen Nutzen von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems durchzuführen, wobei das Verfahren Folgendes umfasst: Ermitteln einer Gesamtarbeitslast des Multi-Tenant-ETL-Systems; Ermitteln einer einem Tenant zugeordneten Arbeitslast in einer Warteschlange; und Verzögern der Hinzufügung von durch den Tenant angeforderter Arbeit zu der Arbeitslast des ETL-Systems auf Grundlage der Gesamtarbeitslast und der Arbeitslast in der Warteschlange.
-
Gemäß einer anderen Ausführungsform der vorliegenden Erfindung ist ein System zur gemeinsamen Nutzung von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems vorgesehen, wobei das System Folgendes aufweist: eine Arbeitslastkomponente, die so konfiguriert ist, dass sie eine Gesamtarbeitslast des Multi-Tenant-ETL-Systems ermittelt; eine Analysekomponente, die so konfiguriert ist, dass sie eine einem Tenant zugeordnete Arbeitslast in einer Warteschlange ermittelt; und eine Verzögerungskomponente, die so konfiguriert ist, dass sie die Hinzufügung von durch den Tenant angeforderter Arbeit zu der Arbeitslast des Multi-Tenant-ETL-Systems auf Grundlage der Gesamtarbeitslast und der Arbeitslast in der Warteschlange verzögert.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Bevorzugte Ausführungsformen der vorliegenden Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die nachfolgenden Zeichnungen beschrieben, wobei:
- 1 zeigt eine bildliche Darstellung eines beispielhaften verteilten Systems, in dem Aspekte der veranschaulichenden Ausführungsformen implementiert werden können;
- 2 zeigt eine schematische Darstellung eines vorgeschlagenen verteilten Datenübertragungssystems gemäß einer Ausführungsform;
- 3 zeigt einen Ablaufplan eines Verfahrens zum gemeinsamen Nutzen von Ressourcen eines ETL-Systems gemäß einer Ausführungsform; und
- 4 zeigt ein Blockschaubild von Komponenten des Servers und/oder eines Client gemäß einer Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es ist zu beachten, dass die Figuren nur schematisch und nicht maßstabsgetreu dargestellt sind. Zudem ist zu beachten, dass in den Figuren gleiche Bezugszeichen verwendet werden, um gleiche oder ähnliche Teile zu bezeichnen.
-
Es ist zu beachten, dass in Ausführungsformen der vorliegenden Erfindungen, die ein Verfahren darstellen, es sich im Rahmen der vorliegenden Erfindung bei einem solchen Verfahren um einen Prozess zur Ausführung durch einen Computer, d.h. ein durch einen Computer implementierbares Verfahren, handeln kann. Die verschiedenen Schritte des Verfahrens können somit verschiedene Teile eines Computerprogramms, z.B. verschiedene Teile eines oder mehrerer Algorithmen, widerspiegeln.
-
Im Rahmen der vorliegenden Anmeldung kann es sich bei einem System zudem um eine einzelne Einheit oder um eine Sammlung verteilter Einheiten handeln, die zur Ausführung einer oder mehrerer Ausführungsformen der Verfahren der vorliegenden Erfindung geeignet sind. Ein System kann beispielsweise ein Personal Computer (PC), ein Server oder eine Sammlung von PCs und/oder Servern sein, die über ein Netzwerk wie ein lokales Netzwerk, das Internet usw. verbunden sind, um gemeinsam mindestens eine Ausführungsform der Methoden der vorliegenden Erfindung auszuführen. Ferner kann es sich bei einer Komponente um einen Integrationsfluss handeln, der von einer oder mehreren Verarbeitungseinheiten ausgeführt wird.
-
Vorgeschlagen werden Konzepte zum gemeinsamen Nutzen von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems. Bei solchen Konzepten wird eine Gesamtarbeitslast des Multi-Tenant-ETL-Systems zusammen mit der in einer Warteschlange befindlichen Arbeitslast eines Tenant berücksichtigt, um eine Lieferung der in der Warteschlange befindlichen Arbeitslast an das System zu steuern. Eine solche Steuerung erfolgt zum Beispiel durch Verzögern der Arbeit des Tenant. Mit den vorgeschlagenen Änderungen soll daher eine Richtlinie entwickelt werden, die für Fairness unter den Tenants sorgt.
-
Man kann also davon ausgehen, dass Ausführungsformen so konfiguriert sind, dass sie Arbeit, die einem System zu einem bestimmten Zeitpunkt zugeführt wird, verlangsamen. Es wird vorgeschlagen, dass dies durch Messen einer Reihe von gleichzeitigen Strömen aktiver Arbeit für einen Tenant erfolgen kann. So kann beispielsweise bei einem Tenant, der eine große Anzahl gleichzeitiger aktiver Arbeitsströme hat, die Hinzufügung dieser Arbeit durch vorliegend beschriebene Ausführungsformen verzögert wird. Dadurch kann verhindert werden, dass ein Tenant das System mit großen Datenmengen monopolisiert (d.h. überlastet), was andernfalls die Verarbeitung der Arbeit eines anderen Tenant verzögern würde.
-
Dementsprechend können vorgeschlagene Ausführungsformen die Hinzufügung von Arbeitslast eines Tenant unter Berücksichtigung einer Gesamtarbeitslast des Systems automatisch und dynamisch steuern. Beispielsweise kann auf Grundlage einer Gesamtarbeitslast des Systems und der einem Tenant zugeordneten Arbeitslast in einer Warteschlange die Hinzufügung von Arbeit, die von diesem Tenant angefordert wurde, verzögert/verschoben werden. Auf diese Weise kann Fairness bei der Aufteilung von Verarbeitungsressourcen des Systems erreicht werden. Es können Konzepte zum Erreichen von Fairness für eine Kategorie (z.B. bezahlt, unbezahlt, Premium-, Platin-Tenant usw.) von Tenants bereitgestellt werden.
-
Die vorgeschlagenen Konzepte können für ETL-Systeme besonders wertvoll und/oder vorteilhaft sein, da sie die erhöhte Vorhersagbarkeit, die mit ETL-Systemen aufgrund ihrer Kette von Extraktionsanfragen verbunden ist, nutzen können, um Fairness über mehrere Tenants hinweg zu erreichen.
-
Da die Datenextraktion Zeit in Anspruch nimmt, ist es üblich, die drei Phasen Extraktion, Umwandlung und Laden parallel auszuführen. Während die Daten extrahiert werden, läuft ein weiterer Umwandlungsprozess ab, der die bereits empfangenen Daten verarbeitet und für das Laden vorbereitet, während das Laden der Daten beginnt, ohne auf den Abschluss der vorherigen Phasen zu warten. Vorgeschlagene Ausführungsformen machen sich dies zunutze und konzentrieren sich auf die Erzielung von Fairness für Tenants, indem sie eine Verzögerung bei der Hinzufügung von Arbeit, die von einem Tenant angefordert wird, zur Arbeitslast steuern.
-
Insbesondere wird vorgeschlagen, die Hinzufügung der Arbeit eines Tenant zu einem ETL-System auf Grundlage eines Maßes für die derzeit im System in Warteschlangen befindliche Gesamtarbeitslast zu verzögern. Ein solches Maß für das im System zu verarbeitende Arbeitsaufkommen kann z.B. durch eine Verzögerung im System angezeigt werden.
-
Vorgeschlagene Ausführungsformen können versuchen, Fairness zwischen den Tenants einer Kategorie (d.h. einer Gruppe, Sammlung, Klasse, Art, Klassifizierung usw.) zu ermöglichen, indem sie die Gesamtlast innerhalb des Systems und die einem Tenant zugeordnete Arbeit überwachen und im Falle einer Überlast eine Verzögerung beim Extraktions-Paging einführen. Die Verzögerung kann proportional zu der von jedem Tenant erzeugten Arbeit sein. Dies kann als „Pacing“ (Dosierung) bezeichnet werden.
-
Beispielsweise kann eine Ausführungsform die Gesamtauslastung überwachen, indem sie das Arbeitsaufkommen misst, das für alle Tenants in Warteschlangen eingestellt wurde. Eine solche Ausführungsform kann dann die Hinzufügung neuer Arbeit für jeden Tenant verlangsamen. Die „Pacing“-Verzögerung kann beispielsweise auf Grundlage der Gesamttiefe der Arbeitswarteschlange(n) (z.B. Verzögerung) und der Arbeitslast (z.B. der Anzahl laufender ETL-Batches) jedes Tenant berechnet werden.
-
Durch Ermitteln, wann Pacing erforderlich ist, können personalisierte Pacing-Faktoren berechnet und durch vorgeschlagene Ausführungsformen angewandt werden. Dies kann zu einer verbesserten Benutzererfahrung und -wahrnehmung eines Produkts führen, das eine vorgeschlagene Ausführungsform implementiert.
-
Vorgeschlagene Ausführungsformen können beispielsweise eine gemeinsame Nutzung von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems ermöglichen. Solche Ausführungsformen können Ermitteln einer Gesamtarbeitslast des Multi-Tenant-ETL-Systems umfassen. Für jeden Tenant, der das Multi-Tenant-ETL-System nutzt, kann dann eine zugehörige in einer Warteschlange befindliche Arbeitslast ermittelt werden. Auf Grundlage der ermittelten Gesamtarbeitslast und der einem Tenant zugeordneten Arbeitslast in der Warteschlange kann die Hinzufügung vom Tenant angeforderter Arbeit zur Arbeitslast des Multi-Tenant-ETL-Systems dann verzögert werden.
-
Einige Ausführungsformen können zudem für jeden Tenant unter Verwendung des Multi-Tenant-ETL-Systems erfolgendes Berechnen eines zugehörigen Verzögerungskoeffizienten auf Grundlage der dem Tenant zugeordneten Arbeitslast in der Warteschlange berechnet werden. Ferner erfolgt ein Verzögern der Hinzufügung vom Tenant angeforderter Arbeit zur Arbeitslast des Systems durch Einführen einer Verzögerung für vom Tenant angeforderte Arbeit auf Grundlage des dem Tenant zugeordneten Verzögerungskoeffizienten.
-
Ferner kann das Berechnen eines zugehörigen Verzögerungskoeffizienten auf Grundlage der dem Tenant zugeordneten Arbeitslast in der Warteschlange Berechnen des Verzögerungskoeffizient als gleich einem vorbestimmten Standardwert umfassen, wenn die dem Tenant zugeordnete Arbeitslast in der Warteschlange unter einem vorbestimmten Schwellenwert liegt.
-
Das Berechnen eines zugehörigen Verzögerungskoeffizienten auf Grundlage der dem Tenant zugeordneten Arbeitslast in der Warteschlange kann Berechnen des Verzögerungskoeffizienten als direkt proportional zu der dem Tenant zugeordneten Arbeitslast in der Warteschlange umfassen.
-
Als weiteres Beispiel können Ausführungsformen ferner Folgendes umfassen: Überwachen der Gesamtarbeitslast des Multi-Tenant-ETL-Systems, um eine Änderung der Gesamtarbeitslast zu erkennen; und Modifizieren des Verzögerungskoeffizienten in Reaktion auf eine erkannte Änderung der Gesamtarbeitslast.
-
Das Ermitteln einer Gesamtarbeitslast des Multi-Tenant-ETL-Systems kann Messen mindestens eines der Folgenden umfassen: eines Gesamtarbeitsaufkommens, das für alle Tenants des Multi-Tenant-ETL-Systems in Warteschlangen steht; und eines Werts einer aktuellen Verzögerung im Multi-Tenant-ETL-System.
-
Das Ermitteln einer einem Tenant zugeordneten Arbeitslast in einer Warteschlange kann zudem Messen mindestens eines der Folgenden umfassen: einer Anzahl von Prozessen, die für den Tenant ausgeführt werden; eines für den Tenant in einer Warteschlange befindlichen Arbeitsaufkommens; einer Anzahl gleichzeitiger Arbeitsströme, die für den Tenant aktiv sind; und einer Anzahl von Verarbeitungsanfragen, die aktuell für den Tenant registriert sind.
-
Ausführungsformen können in Verbindung mit bestehenden ETL-Systemen implementiert werden. Auf diese Weise können die Funktionalitäten und/oder der Nutzen von Multi-Tenant-ETL-Systemen durch Einbeziehen der vorgeschlagenen Ausführungsformen verbessert werden.
-
1 zeigt eine bildliche Darstellung eines beispielhaften verteilten Systems, in dem Aspekte der veranschaulichenden Ausführungsformen implementiert werden können. Ein verteiltes System 100 kann ein Netzwerk aus Computern aufweisen, in dem Aspekte der veranschaulichenden Ausführungsformen implementiert werden können. Das verteilte System 100 enthält mindestens ein Netzwerk 102, bei welchem es sich um das zum Bereitstellen von Datenübertragungsverbindungen zwischen verschiedenen innerhalb des verteilten Datenverarbeitungssystems 100 zusammengeschlossenen Einheiten und Computern verwendete Medium handelt. Das Netzwerk 102 kann Verbindungen wie beispielsweise drahtgebundene oder drahtlose Kommunikationsverbindungen oder Lichtleiterkabel beinhalten.
-
In dem abgebildeten Beispiel sind ein erster Server 104 und ein zweiter Server 106 zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Zudem sind Clients 110, 112 und 114 ebenfalls mit dem Netzwerk 102 verbunden. Bei den Clients 110, 112 und 114 kann es sich um Edge-Einheiten handeln, beispielsweise um Personal Computer, Netzwerkcomputer, loT-Einheiten oder dergleichen. In dem abgebildeten Beispiel stellt der erste Server 104 den Clients 110, 112 und 114 Daten wie beispielsweise Bootdateien, Betriebssystemabbilder und Anwendungen bereit. In dem abgebildeten Beispiel weisen die Clients 110, 112 und 114 mit dem ersten Server 104 eine Client-Beziehung auf. Das verteilte Verarbeitungssystem 100 kann weitere Server, Clients und andere nicht gezeigte Einheiten umfassen.
-
In dem abgebildeten Beispiel kann es sich bei dem verteilten System 200 um das Internet handeln, wobei das Netzwerk 102 eine weltweite Sammlung aus Netzwerken und Gateways darstellt, welche die „Transmission Control Protocol/Internet Protocol“- (TCP/IP-) Protokollsuite verwenden, um Daten auszutauschen. Im Kern des Internets befindet sich ein Backbone aus Hochgeschwindigkeits-Datenübertragungsleitungen zwischen Hauptknoten oder Hostcomputern, welche aus tausenden gewerblicher, staatlicher, dem Lehrbetrieb zugehöriger und anderer Computersysteme bestehen, die Daten und Nachrichten weiterleiten. Natürlich kann das verteilte System 100 auch so implementiert sein, dass es mehrere unterschiedliche Arten von Netzwerken enthält, beispielsweise ein Intranet, ein lokales Netzwerk, ein Weitverkehrsnetz (WAN) oder dergleichen. Wie vorstehend erwähnt, soll 1 ein Beispiel und nicht eine architektonische Einschränkung für verschiedene Ausführungsformen der vorliegenden Erfindung darstellen, weshalb die in 1 gezeigten konkreten Elemente hinsichtlich der Umgebungen, in denen die veranschaulichenden Ausführungsformen der vorliegenden Erfindung implementiert werden können, nicht als einschränkend zu betrachten sind.
-
Ein Fachmann versteht, dass die Architektur und/oder Hardware in 1 abhängig von der Implementierung variieren können. Die Prozesse der veranschaulichenden Ausführungsformen können zudem auf ein Datenverarbeitungssystem mit mehreren Prozessoren angewandt werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen.
-
Wie vorstehend beschrieben, stellen vorgeschlagene Ausführungsformen ein Verfahren und ein System zum gemeinsamen Nutzen von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems bereit. Zur weiteren Erläuterung wird nun eine vorgeschlagene Ausführungsform in Bezug auf ein verteiltes Datenübertragungssystem beschrieben, das ein mehrere Tenants versorgendes ETL-System enthält.
-
2 zeigt eine schematische Darstellung eines verteilten Datenübertragungssystems gemäß einer Ausführungsform. Das verteilte Datenübertragungssystem umfasst ein ETL-System 300, einen Sitzungsspeicher 395 und ein System 305 zum gemeinsamen Nutzen von Verarbeitungsressourcen des ETL-Systems 300. An dieser Stelle sei darauf hingewiesen, dass das ETL-System 300 verschiedene Komponenten aufweist, die zur Verarbeitung von ETL-Batches beitragen, die sehr große Datenmengen (z.B. Millionen von Datensätzen) enthalten können. Zu diesen Komponenten können ein Controllersystem (z.B. ein Batch-Controller), Systeme, aus denen der Controller Daten extrahiert, SaaS-Anwendungen oder Unternehmenssysteme sowie eine Verarbeitungs-Engine gehören, die extrahierte Datensätze verarbeitet. Beliebige oder alle diese Komponenten können über ein Datenübertragungsnetz 310 (z.B. das Internet) mit anderen externen Systemen interagieren.
-
Auf das ETL-System 300 kann eine Mehrzahl von Tenants 320 über das Datenübertragungsnetz 310 (z.B. das Internet) zugreifen. In diesem Fall umfasst die Mehrzahl von Tenants den ersten bis dritten Tenant.
-
In dem in 2 dargestellten Beispiel ist das System 305 zum gemeinsamen Nutzen von Verarbeitungsressourcen des ETL-Systems 300 als außerhalb des ETL-Systems 300 liegend dargestellt. Dies dient jedoch nur der Veranschaulichung des Systems 305 und seiner verschiedenen Komponenten. Es ist daher zu beachten, dass Ausführungsformen auf Steuern der Extraktionsphase eines ETL-Systems 300 gerichtet sein können und das System 305 somit einen Teil des ETL-Systems 300 selbst bilden kann, da der Extraktionsprozess in einer Reihe von Pull-Operationen bestehen kann und von innerhalb des ETL-Systems 300 initiiert werden kann.
-
Das System 305 zum gemeinsamen Nutzen von Verarbeitungsressourcen weist eine Arbeitslastkomponente 330 auf, die so konfiguriert ist, dass sie eine Gesamtarbeitslast des ETL-Systems 300 ermittelt. In diesem Beispiel ist die Arbeitslastkomponente 330 so konfiguriert, dass sie mindestens eines der Folgenden misst: ein Gesamtarbeitsaufkommen, das für alle Tenants 320 des Multi-Tenant-ETL-Systems 300 in Warteschlangen steht; und einen Wert einer aktuellen Verzögerung im Multi-Tenant-ETL-System 300. Ein solches Maß kann repräsentativ für die Gesamtarbeitslast des ETL-Systems 300 sein.
-
Das System 305 zum gemeinsamen Nutzen von Verarbeitungsressourcen weist zudem eine Analysekomponente 340 auf. Die Analysekomponente 340 ist so konfiguriert, dass sie mithilfe des Multi-Tenant-ETL-Systems 300 für jeden Tenant 320 eine Arbeitslast in einer Warteschlange ermittelt. Konkret ist die Analysekomponente 340 dieser beispielhaften Ausführungsform so konfiguriert, dass sie mindestens eines der Folgenden misst: eine Anzahl von Prozessen, die für den Tenant 320 ausgeführt werden; ein für den Tenant 320 in einer Warteschlange befindliches Arbeitsaufkommen; eine Anzahl gleichzeitiger Arbeitsströme, die für den Tenant 320 aktiv sind; und eine Anzahl von Verarbeitungsanfragen, die aktuell für den Tenant 320 registriert sind.
-
Eine Verzögerungskomponente 350 des Systems 305 zum gemeinsamen Nutzen von Verarbeitungsressourcen ist so konfiguriert, dass sie die Hinzufügung von Arbeit, die von einem Tenant 320 angefordert wird, zur Arbeitslast des Multi-Tenant-ETL-Systems 300 auf Grundlage der ermittelten Gesamtarbeitslast und der diesem Tenant 320 zugeordneten Arbeitslast in der Warteschlange verzögert. In diesem Zusammenhang ist anzumerken, dass das System 305 dieser beispielhaften Ausführungsform zudem einen Prozessor 360 aufweist, der so konfiguriert ist, dass er für Tenants 320, die das Multi-Tenant-ETL-System 300 verwenden, einen zugehörigen Verzögerungskoeffizienten auf Grundlage der einem Tenant 320 zugeordneten Arbeitslast in der Warteschlange berechnet. Die Verzögerungskomponente 350 dieser beispielhaften Ausführungsform kann dann auf Grundlage eines dem Tenant 320 zugeordneten Verzögerungskoeffizienten eine Verzögerung für von einem Tenant 320 angeforderte Arbeit einführen.
-
In dieser Ausführungsform, und nur als Beispiel, kann der Prozessor 360 so konfiguriert sein, dass er den Verzögerungskoeffizienten als gleich einem vorbestimmten Standardwert berechnet, wenn die dem Tenant 320 zugeordnete Arbeitslast in der Warteschlange unter einem vorbestimmten Schwellenwert liegt. Darüber hinaus kann der Prozessor 360 so konfiguriert sein, dass er den Verzögerungskoeffizienten als direkt proportional zur dem Tenant 320 zugeordneten Arbeitslast in der Warteschlange berechnet. Auf diese Weise ist der Verzögerungskoeffizient umso größer, je höher/größer die Arbeitslast in der Warteschlange für einen Tenant 320 ist, wodurch die Steuerung einer Verzögerung der durch einen Tenant 320 angeforderten Arbeit gemäß der für diesen Tenant 320 in der Warteschlange befindlichen Arbeitslast angepasst wird.
-
Das System 305 zum gemeinsamen Nutzen von Verarbeitungsressourcen weist in dieser Ausführungsform zudem eine Überwachungskomponente 370 auf. Die Überwachungskomponente 370 kann so konfiguriert sein, dass sie die Gesamtarbeitslast des Multi-Tenant-ETL-Systems 300 überwacht, um eine Änderung der Gesamtarbeitslast zu erkennen. In Reaktion auf eine erkannte Änderung der Gesamtarbeitslast kann der Prozessor 360 den Verzögerungskoeffizienten modifizieren. Auf diese Weise ist der Verzögerungskoeffizient umso größer, je höher/größer die Gesamtarbeitslast ist, wodurch eine Steuerung einer auf Arbeit angewendeten Verzögerung gemäß der Arbeitslast des Systems 305 angepasst wird.
-
Als weiteres Beispiel soll nun eine weitere beispielhafte Ausführungsform betrachtet werden.
-
Wie vorstehend erwähnt, kann ein ETL-System 300 verschiedene Komponenten aufweisen, die zur Verarbeitung von ETL-Batches beitragen. Zu diesen Komponenten zählen ein Controllersystem (z.B. ein Batch-Controller), Systeme, aus denen der Controller Daten extrahiert, SaaS-Anwendungen oder Unternehmenssysteme sowie eine Verarbeitungs-Engine, die extrahierte Datensätze verarbeitet. Beliebige oder alle diese Komponenten können möglicherweise mit anderen externen Systemen interagieren.
-
Komponenten eines ETL-Systems können ein Nachrichtenübermittlungssystem mit hohem Durchsatz und geringer Latenz (z.B. Kafka) für Austausch und Weiterleitung von Daten zwischen ihnen verwenden. So definiert Kafka beispielsweise Topics (Themen) mit einer Reihe von Partitionen, Produzenten und Gruppen von Konsumenten für die Nachrichten.
-
Ein wichtiger Betrachtungsaspekt ist die Konsumentenverzögerung (consumer lag). Hierbei handelt es sich um die Differenz zwischen der Anzahl geschriebener und der Anzahl gelesener Nachrichten. Konsumentenverzögerung kann daher als Maß dafür verwendet werden, wie weit die Gruppe der Konsumenten von Nachrichten im Vergleich zu den Produzenten von Nachrichten zurückliegt. Ein großer/hoher Konsumentenverzögerungswert bedeutet beispielsweise, dass die extrahierten Daten neuer ETL-Batches sehr lange brauchen, um verarbeitet zu werden, und dass das System auf einige Tenants 320 nicht zu reagieren scheint.
-
Der Einfachheit halber kann davon ausgegangen werden, dass alle Tenants 320 einer Kategorie angehören (z.B. zahlende Nutzer zum gleichen Tarif). Wenn es mehrere Kategorien gibt, können die vorgeschlagenen Konzepte als innerhalb der Grenzen einer einzigen Kategorie anwendbar betrachtet werden und dann separat auf andere Kategorien angewendet werden.
-
Ein großes Volumen an ETL-Batches wird von einem Controllersystem (z.B. einem Batch-Controller) erfasst und dann von anderen Verarbeitungskomponenten (z.B. einer Fluss-Engine) verarbeitet, die die Arbeit über ein Nachrichtenübermittlungssystem (z.B. Kafka) empfangen. Jeder ETL-Batch kann eine geordnete Liste (z.B. Seiten) von Datensätzen durch eine Kette von Extraktionsanfragen extrahieren.
-
Vorgeschlagene Ausführungsformen können eine Kombination aus Sitzungsspeicher 395 und einem Nachrichtenübermittlungssystem wie Kafka verwenden, um eine Richtlinie zur Verteilung der Arbeit (z.B. ETL-Batches) an externe Systeme (SaaS- oder Unternehmensanwendungen) zu implementieren, die sicherstellt, dass Tenants 320 über einen angemessenen Anteil an den Gesamtsystemressourcen verfügen und Tenants die Möglichkeit erhalten, den Fortschritt ihrer Arbeit zu sehen.
-
Wenn das Controllersystem beispielsweise einen ETL-Batch erhält, wird es die erste Anfrage (z.B. eine Seite) in der Kette ohne Verzögerung in die Warteschlange stellen, um sicherzustellen, dass alle Arbeitselemente gestartet werden. Zudem registriert es den ETL-Batch im Sitzungsspeicher 395. Die Konsumentenverzögerung in der Verarbeitungswarteschlange wird dann überwacht, und wenn die Konsumentenverzögerung in der Verarbeitungswarteschlange einen Schwellenwert überschreitet, kann das System ab der zweiten Anfrage der Ketten eine Verzögerung einführen (z.B. ein Pacing einstellen).
-
Ausführungsformen können die folgenden Informationen verwenden, um zu ermitteln, wie lange die nächste Anfrage eines bestimmten Tenant 320 verzögert werden sollte: die Gesamttiefe von Warteschlangen des Nachrichtenübermittlungssystems (d.h. die Gesamtarbeit im System); wie viele ETL-Stapel derzeit im Sitzungsspeicher 395 registriert sind (d.h. gleichzeitige ETL-Stapel); und der vorkonfigurierte Anfangswert für den Gesamtverzögerungskoeffizienten. Auf Grundlage solcher Informationen kann eine Ausführungsform einen Verzögerungskoeffizienten berechnen, der für einen Tenant 320 spezifisch ist und der die zu induzierende Verzögerung (falls vorhanden) steuert.
-
Eine nachfolgende Extraktionsanfrage wird nach der Verzögerung in die Warteschlange gestellt und die registrierten Informationen im Sitzungsspeicher 395 werden mit ihrer neuen Position in der Kette aktualisiert.
-
Gemäß 3 wird nun ein Verfahren gemäß einer Ausführungsform beschrieben. 3 zeigt insbesondere einen Ablaufplan eines Verfahrens zum gemeinsamen Nutzen von Ressourcen eines ETL-Systems 300 gemäß einer vorgeschlagenen Ausführungsform.
-
Zunächst wird ein globaler Verzögerungskoeffizient mit einem Anfangswert festgelegt.
-
Wenn eine neue Extraktionsseitenanfrage empfangen wird 400 (z.B. eine nächste Anfrage in einer Kette verarbeitet wird), beginnt das Verfahren und geht zu Schritt 410. In Schritt 410 wird ermittelt, ob eine neue Seite mit extrahierten Daten gesendet werden muss. Ist dies nicht der Fall, wird das Verfahren einfach in Schritt 415 beendet. Wird dagegen in Schritt 410 festgestellt, dass eine neue Seite mit extrahierten Daten an die Verarbeitungs-Engine gesendet werden muss, fährt das Verfahren mit Schritt 420 fort, in dem der globale Verzögerungskoeffizient neu berechnet und aktualisiert wird. Dies umfasst somit Berechnen der aktuellen Verzögerung aus der Verarbeitungswarteschlange Vergleichen derselben mit der alten Verzögerung (die aus dem Sitzungsspeicher 395 abgerufen wurde), um den globalen Koeffizienten zu erhöhen oder zu verringern.
-
Auf Grundlage des aktualisierten globalen Verzögerungskoeffizienten wird in Schritt 430 ein Verzögerungskoeffizient für den aktuellen Tenant 320 berechnet. Dies umfasst somit Sammeln der Anzahl der für den aktuellen Tenant 320 ausgeführten ETL-Batches aus dem Sitzungsspeicher 395 und anschließendes Berechnen des für den aktuellen Tenant 320 zu verwendenden Verzögerungskoeffizienten durch Multiplizieren des globalen Verzögerungskoeffizienten mit der Anzahl der dem aktuellen Tenant 320 gehörenden ETL-Batches, d.h. Tenant-Verzögerungskoeffizient = globaler Koeffizient * Anzahl der dem Tenant gehörenden ETL-Batches.
-
Als nächstes wird in Schritt 440 eine Verzögerung oder Wartezeit eingeführt. Die Verzögerung oder Wartezeit wird hierbei durch Multiplizieren der Verzögerung mit dem Tenant-Verzögerungskoeffizienten ermittelt. Anders ausgedrückt, kann die Verzögerung oder Wartezeit als Wartezeit = (Verzögerung * Tenant-Verzögerungskoeffizient) dargestellt werden.
-
Nach dem Verzögern/Warten für eine bestimmte Zeitspanne sendet das Controllersystem in Schritt 450 die neue Extraktionsanfrage, und das Verfahren kehrt dann zu Schritt 400 zurück.
-
Es ist somit klar, dass der Koeffizient und die Verzögerung/Wartezeit umso größer sind, je mehr ETL-Batches ein Tenant 320 startet.
-
Ausführungsformen können ein Computersystem 70 aufweisen, das Teil eines in 4 dargestellten vernetzten Systems 7 sein kann. Beispielsweise kann gemäß einer Ausführungsform eine Verzögerungskomponente in dem Computersystem 70 (z.B. einer Verarbeitungseinheit 71) implementiert sein, die so konfiguriert ist, dass sie die Hinzufügung von Arbeit, die von einem Tenant 320 angefordert wird, zur Arbeitslast des Multi-Tenant-ETL-Systems 300 verzögert. Zu den Komponenten des Computersystems/Servers 70 können, ohne jedoch hierauf eingeschränkt zu sein, eine oder mehrere Verarbeitungsanordnungen, die beispielsweise Prozessoren oder Verarbeitungseinheiten 71 aufweisen, ein Systemspeicher 74 und ein Bus 90 zählen, der verschiedene Systemkomponenten einschließlich des Systemspeichers 74 mit der Verarbeitungseinheit 71 verbindet.
-
Der Systemspeicher 74 kann durch ein Computersystem lesbare Medien in Form eines flüchtigen Speichers wie beispielsweise Arbeitsspeicher (RAM) 75 und/oder Cache 76 umfassen. Computersystem/Server 70 kann ferner weitere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Speichermedien des Computersystems umfassen. In solchen Fällen kann jedes der Genannten über eine oder mehrere Daten-Medien-Schnittstellen mit dem Bus 90 verbunden sein. Der Speicher 74 kann mindestens ein Programmprodukt mit einer Gruppe (z.B. mindestens einem) von Programmmodulen umfassen, die so konfiguriert sind, dass sie die Funktionen vorgeschlagener Ausführungsformen ausführen. Beispielsweise kann der Speicher 74 ein Computerprogrammprodukt mit einem Programm enthalten, das von der Verarbeitungseinheit 71 ausführbar ist, um die Eingabe/Ausgabe- (E/A-) Schnittstelle 72 zu veranlassen, ein Verfahren zum gemeinsamen Nutzen von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems 300 gemäß einer vorgeschlagenen Ausführungsform durchzuführen. Ein Programm/Dienstprogramm 78 mit einer Reihe (mindestens einem) von Programmmodulen 79 kann im Speicher 74 gespeichert sein. Die Programmmodule 79 führen grundsätzlich die Funktionen und/oder Methoden vorgeschlagener Ausführungsformen zum gemeinsamen Nutzen von Verarbeitungsressourcen eines Multi-Tenant-ETL-Systems 300 aus.
-
Computersystem/Server 70 kann zudem mit einer oder mehreren externen Einheiten 80 wie beispielsweise einer Tastatur, einer Zeigeeinheit, einer Anzeige 85 usw., einer oder mehreren Einheiten, die einem Nutzer eine Interaktion mit dem Computersystem/Server 70 ermöglichen, und/oder jedweden Einheiten (z.B. Netzwerkkarte, Modem usw.) in Datenaustausch stehen, die dem Computersystem/Server 70 einen Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen. Ein solcher Datenaustausch kann über Ein/Ausgabe- (E/A-) Schnittstellen 72 erfolgen. Dennoch kann Computersystem/Server 70 über einen Netzwerkadapter 73 in Datenaustausch mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) stehen (z.B. um bestimmte Entwicklungsregeln an Einheiten eines verteilten Netzwerkes zu übermitteln).
-
Zudem ist zu beachten, dass in Ausführungsformen der vorliegenden Erfindungen, die ein Verfahren darstellen, es sich im Rahmen der vorliegenden Erfindung bei einem solchen Verfahren um einen Prozess zur Ausführung durch einen Computer, d.h. ein durch einen Computer implementierbares Verfahren handelt. Die Schritte des Verfahrens spiegeln somit verschiedene Teile eines Computerprogramms, z.B. Teile eines oder mehrerer Algorithmen, wider.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, 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 zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele 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 Speicherklassenspeicher (storage dass memory, SCM), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-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 daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin 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 ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende 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 Weitverkehrsnetz 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 oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter eine objektorientierte Programmiersprache wie Smalltalk, Python, C++ o.ä. sowie herkömmliche 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 fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit 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, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern mittels durch einen Computer lesbarer Programmanweisungen ausgeführt werden können. Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder festgelegten Funktionen/Schritte erzeugen. 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, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder 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 Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass 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 Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder 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 Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden für Zwecke der Veranschaulichung dargelegt, sind jedoch nicht als abschließend oder auf die Ausführungsformen beschränkt zu verstehen. Für den Fachmann sind viele Abwandlungen und Variationen ersichtlich, ohne vom Umfang und Grundgedanken der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um bestmöglich die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber den auf dem Markt erhältlichen Technologien zu erklären oder um dem Fachmann das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.