DE102013207049B4 - Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung - Google Patents

Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung Download PDF

Info

Publication number
DE102013207049B4
DE102013207049B4 DE102013207049.7A DE102013207049A DE102013207049B4 DE 102013207049 B4 DE102013207049 B4 DE 102013207049B4 DE 102013207049 A DE102013207049 A DE 102013207049A DE 102013207049 B4 DE102013207049 B4 DE 102013207049B4
Authority
DE
Germany
Prior art keywords
buffer
tuples
operator
tuple
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102013207049.7A
Other languages
English (en)
Other versions
DE102013207049A1 (de
Inventor
Michael J. Branson
Ryan K. Cradick
John M. Santosuosso
Brandon W. Schulz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013207049A1 publication Critical patent/DE102013207049A1/de
Application granted granted Critical
Publication of DE102013207049B4 publication Critical patent/DE102013207049B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Verfahren zum Überwachen einer Datenstrompufferung zur Optimierung einer Operatorverwaltung, aufweisend:Bereitstellen einer Mehrzahl von Verarbeitungselementen, die einen oder mehrere Operatoren aufweisen, wobei die Operatoren so konfiguriert sind, dass Datenstrom-Datentupel durch den Betrieb eines oder mehrerer Computerprozessoren verarbeitet werden;Einrichten eines Operatorgraphen aus einer Mehrzahl von Operatoren, wobei der Operatorgraph mindestens einen Ausführungspfad festlegt, in dem ein erster Operator der Mehrzahl von Operatoren so konfiguriert ist, dass Datentupel von mindestens einem vorhergehenden Operator empfangen und Datentupel an mindestens einen nachfolgenden Operator übertragen werden;für jeden der Mehrzahl von Operatoren Bereitstellen eines Puffers, der so konfiguriert ist, dass er Datentupel aufnimmt, die die Verarbeitung durch den betreffenden Operator erfordern, wobei es sich bei dem Puffer um einen First-In-First-Out-Puffer handelt.Empfangen einer Mehrzahl von Datentupeln in einem ersten Puffer, der zu einem ersten Operator gehört, wobei die Datentupel mindestens ein Attribut aufweisen;Feststellen, dass im ersten Puffer ein Rückstau von Datentupeln besteht,Auswählen mindestens eines Datentupels aus dem ersten Puffer;Untersuchen mindestens eines Attributes der ausgewählten Datentupel, um mindestens ein Kandidatentupel zu erkennen; und Durchführen einer vorherbestimmten Operation durch einen Puffermanager an dem mindestens einen Kandidatentupel, wobei das Durchführen der vorherbestimmten Operation aufweist:Neuordnen auf Grundlage eines Attributwertes der Mehrzahl von Tupeln aufweist, wobei sich die Mehrzahl von Datentupeln innerhalb des ersten Puffers befindet,- Entfernen des mindestens einen Kandidatentupels aus dem Puffer, und- falls bei nachfolgenden Operatoren ein Rückstau auftritt- Verarbeiten ressourcenintensiverer Tupel während des Wartens darauf, dass der Rückstau bei nachfolgenden Operatoren beseitigt wird.

Description

  • Hintergrund
  • Ausführungsformen der vorliegenden Erfindung betreffen allgemein Anwendungen zur Datenstrom-Datenverarbeitung. Insbesondere offenbaren die Ausführungsformen Methoden zum Überwachen der Datenstrompufferung, um die Verarbeitung von Operatoren in einer Datenstrom-Datenverarbeitungsumgebung zu optimieren.
  • In diesem Kontext wurden bereits Dokumente veröffentlicht: ABADI, Daniel J., et al.: The design of the borealis stream processing engine, in Cidr. 2005. S. 277-289 bzw. S. 1 - 13 beschreibt eine verteilte Stream-Processing-Engine der zweiten Generation namens Borealis, die von der Brandeis Universität, der Brown University und dem MIT entwickelt wurde. Dabei stehen insbesondere neu entstehende Stream-Processing-Anwendungen im Fokus. Weiterhin beschreibt das Dokument US 2009 / 0 178 059 A1 ein Verfahren und ein System zur Konsistenzeinhaltung, wenn Streams verarbeitet werden. Dabei werden auch Konsistenznachverfolgungsinformationen zu den eingehenden Datenströmen berücksichtigt. Ergänzend wird von TATBUL, Nesime, et al.: „Load shedding in a data stream manager" in Proceedings 2003 vldb conference, Morgan Kaufmann, 2003. S. 309-320 Lastreduzierungen bei einer Datenstromverarbeitung beschrieben. Dabei werden Workloads dann reduziert, wenn der Eingang von Daten eine höhere Rate aufweist als die Verarbeitungskapazität des Systems hergibt. Auf diese Weise wird die beobachtbare Latenz der Ergebnisse wieder verbessert.
  • Trotz dieser Fortschritte gibt es weiteres Verbesserungspotenzial beim Stream-Processing. Als Aufgabe für das hier vorgeschlagene Konzept kann deshalb gelten, dass das Verhalten einer Datenstromverarbeitunganwendung weiter verbessert werden soll.
  • Kurzdarstellung
  • Hierin offenbarte Ausführungsformen stellen ein Verfahren und ein System entsprechend den unabhängigen Ansprüchen bereit. Weitere Ausgestaltungen des erfinderischen Konzeptes sind durch die jeweils abhängigen Ansprüche angegeben.
  • Kurzbeschreibung der Zeichnungen
  • Ein besseres Verständnis der Art und Weise, in der die oben erwähnten Aspekte erreicht werden, ist durch eine ausführlichere Beschreibung der oben kurz dargestellten Erfindung unter Bezugnahme auf die beigefügten Zeichnungen möglich.
  • Anzumerken ist jedoch, dass die beigefügten Zeichnungen lediglich typische Ausführungsformen dieser Erfindung veranschaulichen und daher nicht als Einschränkung ihres Schutzbereiches zu verstehen sind, da die Erfindung auch andere, gleichermaßen wirksame Ausführungsformen zulässt.
    • Die 1A bis 1B veranschaulichen eine Datenverarbeitungsinfrastruktur, die so konfiguriert ist, dass sie eine Datenstrom-Datenverarbeitungsanwendung gemäß hierin offenbarten Ausführungsformen ausführt.
    • 2 ist eine ausführlichere Ansicht des Rechenknotens aus den 1A bis 1B gemäß einer hierin offenbarten Ausführungsform.
    • 3 ist eine ausführlichere Ansicht des Server-Verwaltungssystems aus den 1 A bis 1 B gemäß einer hierin offenbarten Ausführungsform.
    • 4 ist ein Ablaufplan, in dem ein Verfahren zum Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist.
    • 5 ist ein Ablaufplan, in dem ein Verfahren zum Auswählen von Tupeln in einem Operatorpuffer gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist.
    • 6 ist ein Ablaufplan, in dem ein Verfahren zum Erkennen von Kandidatentupeln in einem Operatorpuffer gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist.
    • 7 ist ein Ablaufplan, in dem ein Verfahren zum Durchführen einer Operation zur Optimierung der Operatorverarbeitung gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist.
    • 8 veranschaulicht eine Tabelle, in der der Inhalt eines Operatorpuffers gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist.
  • Ausführliche Beschreibung
  • Hierin offenbarte Ausführungsformen stellen ein Verfahren, ein System und ein Computerprogrammprodukt zum Durchführen einer Operation bereit, wobei die Operation das Bereitstellen einer Mehrzahl von Verarbeitungselementen mit einem oder mehreren Operatoren aufweist, wobei die Operatoren so konfiguriert sind, dass sie Tupel von Datenstromdaten verarbeiten. Die Operation richtet einen Operatorgraphen aus mehreren Operatoren ein, wobei der Operatorgraph mindestens einen Ausführungspfad festlegt, in dem ein erster Operator der Mehrzahl von Operatoren so konfiguriert ist, dass Datentupel von mindestens einem vorhergehenden Operator empfangen und Datentupel an mindestens einen nachfolgenden Operator übertragen werden. Für jeden der Mehrzahl von Operatoren wird ein Puffer bereitgestellt, der so konfiguriert ist, dass er Datentupel aufnimmt, die die Verarbeitung durch den betreffenden Operator erfordern, wobei es sich bei dem Puffer um einen First-In-First-Out-Puffer handelt. Eine Mehrzahl von Datentupeln wird in einem ersten Puffer empfangen, der zu einem ersten Operator gehört, wobei die Datentupel mindestens ein Attribut enthalten. Die Operation wählt anschließend aus dem ersten Puffer mindestens ein Datentupel aus und überprüft ein Attribut der ausgewählten Datentupel, um mindestens ein Kandidatentupel zu erkennen. Die Operation führt anschließend an dem mindestens einen Kandidatentupel eine zweite Operation durch.
  • Die auf Datenströmen beruhende Datenverarbeitung und die auf Datenströmen beruhende Datenbankdatenverarbeitung zeichnen sich als Entwicklungstechnologie für Datenbanksysteme ab. Es sind Produkte erhältlich, mit deren Hilfe Benutzer Anwendungen erstellen können, die Datenströme verarbeiten und abfragen, bevor diese in eine Datenbankdatei gelangen. Mit dieser sich abzeichnenden Technologie können Benutzer Verarbeitungslogik angeben, die während des laufenden Betriebs auf eingehende Datensätze angewendet wird, wobei die Ergebnisse in einer sehr kurzen Zeit, oftmals innerhalb von Millisekunden, zur Verfügung stehen. Die Schaffung einer Anwendung unter Verwendung dieser Art der Verarbeitung hat zu einem Programmiermodell geführt, das die Entwicklung einer breiten Vielfalt innovativer Anwendungen, Systeme und Prozesse ermöglicht und neue Herausforderungen für Anwendungsprogrammierer und Datenbankentwickler mit sich bringt.
  • Bei einer Datenstrom-Datenverarbeitungsanwendung sind Operatoren so untereinander verbunden, dass Daten von einem Operator zum nächsten strömen (z.B. über einen TCP/IP-Socket). Eine Skalierbarkeit wird erreicht, indem eine Anwendung durch Erstellen von ausführbaren Elementen (d.h. Verarbeitungselementen) auf mehrere Knoten verteilt wird, sowie dadurch, dass Verarbeitungselemente auf mehreren Knoten vervielfältigt (repliziert) und zwischen ihnen ein Ausgleich der Auslastung durchgeführt wird. Operatoren in einer Datenstrom-Datenverarbeitungsanwendung können zusammengeführt werden, um ein Verarbeitungselement zu bilden, das ausgeführt werden kann. Dadurch können Verarbeitungselemente einen gemeinsamen Prozessraum gemeinsam nutzen, was zwischen Operatoren zu einem viel schnelleren Datenaustausch führt, als bei Verwendung von Methoden der Interprozesskommunikation (z.B. unter Verwendung eines TCP/IP-Sockets) zur Verfügung steht. Ferner können Verarbeitungselemente dynamisch in einen Operatorgraphen eingefügt oder aus diesem entfernt werden, der den Datenstrom durch die Datenstrom-Datenverarbeitungsanwendung darstellt.
  • Bei einer Datenstromanwendung bewahrt ein Operator die Menge von Tupeln auf, auf die er in einem Puffer noch nicht eingewirkt hat. Die Tupel unterliegen der Einwirkung standardmäßig in der Reihenfolge, in der sie eintreffen und dementsprechend im Puffer angeordnet sind. Während der Operator ausgeführt wird, wird durch den Operator das nächste Tupel im Puffer verarbeitet. Die Anzahl von Tupeln in einem Puffer schwankt auf der Grundlage einer Reihe von Faktoren und kann während des normalen Betriebs groß werden. Zum Beispiel kann ein Puffer auf der Grundlage der schwankenden Auslastung eines Knotens infolge eines Rückstaus von nachstehenden Operatoren oder wegen der Art des Operators wie zum Beispiel eines Join-Operators, der darauf warten könnte, dass Tupel von unterschiedlichen Datenströmen gesendet werden, volllaufen. Hierin offenbarte Ausführungsformen verbessern das Betriebsverhalten eines Operators, indem der Inhalt eines Puffers untersucht und Maßnahmen ergriffen werden, um gegebenenfalls eine unnötige Verarbeitung zu unterbinden.
  • Hierin offenbarte Ausführungsformen untersuchen die Tupel in einem Puffer eines Operators, um Möglichkeiten zur Verbesserung des Betriebsverhaltens zu erkennen. Der grundsätzliche Fall kann darin bestehen, dass ein späteres Tupel im Puffer anzeigt, dass eine Teilmenge der früheren Tupel im Puffer verfallen ist und keine Verarbeitung erfordern. Wenn zum Beispiel ein späteres Tupel im Puffer anzeigt, dass ein Benutzer eine Anwendungssitzung beendet hat, können mit dieser Sitzung im Zusammenhang stehende Tupel aus dem Puffer entfernt werden. Alternativ können Tupel innerhalb des Puffers neu geordnet werden, wenn das Neuordnen zu einer effizienteren Verarbeitung als das Entfernen von Tupeln führt.
  • Im Folgenden wird Bezug auf Ausführungsformen der Offenbarung genommen. Es sollte jedoch klar sein, dass die Erfindung nicht auf bestimmte beschriebene Ausführungsformen beschränkt ist. Stattdessen ist eine beliebige Kombination der folgenden Merkmale und Elemente unabhängig davon, ob sie mit unterschiedlichen Ausführungsformen im Zusammenhang steht, denkbar, um die Offenbarung zu realisieren und in die Praxis umzusetzen. Des Weiteren schränkt eine bestimmte Ausführungsform die Offenbarung unabhängig davon nicht ein, ob ein bestimmter Vorteil durch eine bestimmte Ausführungsform erzielt wird, obwohl Ausführungsformen der Erfindung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erzielen können. Daher tragen die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile lediglich einen veranschaulichenden Charakter und sind nicht als Elemente oder Einschränkungen der beigefügten Ansprüche gedacht, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist. Ebenso ist der Bezug auf „die Erfindung“ nicht als Verallgemeinerung eines hierin offenbarten Erfindungsgegenstands auszulegen und nicht als Element oder Einschränkung der beigefügten Ansprüche anzusehen, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist.
  • Dem Fachmann wird klar sein, dass Aspekte der vorliegenden Beschreibung der Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert sein können. Dementsprechend können Aspekte der vorliegenden Beschreibung die Form einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, in der Software- und Hardwareaspekte kombiniert sind, die im vorliegenden Dokument allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden. Ferner können Aspekte der vorliegenden Beschreibung der Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches oder elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder eine beliebige geeignete Kombination des Vorstehenden gehören. Zu den genaueren Beispielen (unvollständige Liste) computerlesbarer Speichermedien zählen unter anderem folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle übertragenes Datensignal mit darin verkörpertem computerlesbarem Programmcode aufweisen. Ein derartiges übertragenes Signal kann eine beliebige Vielfalt von Formen annehmen, einschließlich, ohne darauf beschränkt zu sein, einer elektromagnetischen oder optischen Form oder einer beliebigen geeigneten Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, senden oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, einschließlich, ohne darauf beschränkt zu sein, drahtloser, drahtgebundener Medien, Lichtwellenleitern, HF usw., oder unter Verwendung einer beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen bei Aspekten der vorliegenden Offenbarung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie „C“ oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, 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. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder über ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Nachstehend sind Aspekte der vorliegenden Offenbarung unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Beschreibung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaltbildern durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis schaffen, das die Anweisungen aufweist, die die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebene Funktion/Aktion realisieren.
  • Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen bereitstellen.
  • Ausführungsformen der Offenbarung können Endbenutzern über eine Cloud-Datenverarbeitungsinfrastruktur bereitgestellt werden. Der Begriff „Cloud-Datenverarbeitung“ („Cloud-Computing“) bezeichnet allgemein die Bereitstellung skalierbarer Datenverarbeitungsressourcen als Dienst über ein Netzwerk. Formaler ausgedrückt kann das Cloud-Computing als Datenverarbeitungsfunktion definiert werden, die eine Abstraktion zwischen der Datenverarbeitungsressource und ihrer unterlagerten technischen Architektur (z.B. Server, Speicher, Netzwerke) bereitstellt, die den benutzerfreundlichen bedarfsorientierten Netzwerkzugriff auf eine gemeinsam genutzte Ansammlung konfigurierbarer Datenverarbeitungsressourcen ermöglicht, die mit minimalem Verwaltungsaufwand bzw. über minimale Interaktion mit dem Dienstanbieter bereitgestellt und freigegeben werden kann. Daher ermöglicht das Cloud-Computing einem Benutzer unabhängig von den unterlagerten physischen Systemen (oder den Standorten der Systeme), die zur Bereitstellung der Datenverarbeitungsressourcen verwendet werden, auf virtuelle Datenverarbeitungsressourcen (z.B. Speicher, Daten, Anwendungen und selbst komplette virtualisierte Datenverarbeitungssysteme) in der „Cloud“ zuzugreifen.
  • In der Regel werden Cloud-Computing-Ressourcen einem Benutzer auf einer Grundlage der Kosten pro Nutzung (Pay-per-Use) bereitgestellt, bei der Benutzern nur Kosten für die tatsächlich genutzten Datenverarbeitungsressourcen (z.B. eine Größe des von einem Benutzer verwendeten Speicherplatzes oder eine Anzahl virtueller Systeme, die der Benutzer instanziiert hat) in Rechnung gestellt werden. Ein Benutzer kann über das Internet jederzeit und von überall auf beliebige der Ressourcen zugreifen, die sich in der Cloud befinden. Im Kontext der vorliegenden Offenbarung kann ein Benutzer auf Anwendungen und zugehörige Daten zugreifen, die in der Cloud zur Verfügung stehen. Zum Beispiel kann es sich bei den Knoten, die zur Schaffung einer Datenstrom-Datenverarbeitungsanwendung verwendet werden, um virtuelle Maschinen handeln, die von einem Cloud-Dienstanbieter zur Verfügung gestellt werden. Dies ermöglicht einem Benutzer, von einem beliebigen Datenverarbeitungssystem, das an ein mit der Cloud verbundenes Netzwerk (z.B. das Internet) angeschlossen ist, auf diese Daten zuzugreifen.
  • Die 1A bis 1B veranschaulichen eine Datenverarbeitungsinfrastruktur, die so konfiguriert ist, dass sie eine Datenstrom-Datenverarbeitungsanwendung gemäß einer Ausführungsform der Offenbarung ausführt. Wie gezeigt weist die Datenverarbeitungsinfrastruktur 100 ein Verwaltungssystem 105 und eine Mehrzahl von Rechenknoten 1301 bis 4 auf, die jeweils mit einem Datenaustauschnetzwerk 120 verbunden sind. Außerdem weist das Verwaltungssystem 105 einen Operatorgraphen 132 und einen Datenstrommanager 134 auf. Wie nachfolgend ausführlicher beschrieben wird, stellt der Operatorgraph 132 eine Datenstrom-Datenverarbeitungsanwendung dar, die bei einem oder mehreren Operatoren in einem oder mehreren Quellen-Verarbeitungselementen (Quellen-VEs) beginnt und bis zu einem oder mehreren Operatoren in einem oder mehreren Senken-VEs reicht. Dieser Verlauf von der Quelle zur Senke wird hierin allgemein als „Ausführungspfad“ bezeichnet. Im Allgemeinen gelangen Datenattribute in einen Operator eines Quellen-VE einer Datenstrom-Datenverarbeitungsanwendung und werden durch diesen Operator verarbeitet. In der Regel empfangen Operatoren ein n-Tupel von Datenattributen aus dem Datenstrom und geben ein n-Tupel von Datenattributen in den Datenstrom aus (ausgenommen bei Operatoren in einem Senken-VE, bei dem der Datenstrom endet). Im Allgemeinen ist ein „Tupel“ eine einzelne Instanz einer Menge von Datenattributen, die der Formatierung eines Schemas folgen, wobei das Schema eine Menge typisierter Datenattributen einrichtet, die verwendet werden können. Zum Beispiel kann das Tupel ein Block oder ein Teil von aufteilbaren Daten wie zum Beispiel eines Datentyps (z.B. Zeichenkette, Ganzzahl, Boole'scher Datentyp) oder eine Kombination von Datentypen sein. Bei einer Ausführungsform kann ein „Tupel“ ein oder mehrere Attribute mit einem zugewiesenen Wert aufweisen - z.B. Tupel 1: {Sym = „Fe“, Nr = 26}, wobei „Sym“ und „Nr“ mögliche Attribute im Schema (d.h. eine Zeichenkette bzw. eine Ganzzahl) und „Fe“ und „26“ die Werte sind.
  • Selbstverständlich muss das durch einen Operator empfangene n-Tupel nicht dasselbe n-Tupel sein, das an den nachfolgenden Operator gesendet wird. Darüber hinaus könnten Operatoren so konfiguriert sein, dass sie Tupel in anderen Formaten empfangen oder ausgeben (z.B. könnten die VEs oder Operatoren Daten austauschen, die als XML-Dokumente ausgezeichnet sind). Des Weiteren könnte jeder Operator innerhalb eines VE so konfiguriert sein, dass er an dem empfangenen Tupel eine beliebige Form von Datenverarbeitungsfunktionen ausführt, darunter zum Beispiel das Schreiben in Datenbanktabellen oder Durchführen anderer Datenbankoperationen wie zum Beispiel Datenverknüpfungen, Datenaufteilungen, Datenlesevorgänge usw., Durchführen anderer Datenanalysefunktionen oder Datenoperationen.
  • Der Datenstrommanager 134 kann so konfiguriert sein, dass er eine Datenstrom-Datenverarbeitungsanwendung überwacht, die auf den Rechenknoten 1301 bis 4 ausgeführt wird, und die Bereitstellung des Operatorgraphen 132 ändert. Der Datenstrommanager 124 kann Verarbeitungselemente (VEs) von einem Rechenknoten 130 auf einen anderen verschieben, um zum Beispiel die Verarbeitungslasten der Rechenknoten 130 in der Datenverarbeitungsinfrastruktur 100 zu verwalten. Ferner kann der Datenstrommanager 134 die auf den Rechenknoten 1301 bis 4 ausgeführte Datenverarbeitungsanwendung durch Einfügen, Entfernen, Zusammenführen, Entflechten oder anderweitiges Abändern der Verarbeitungselemente und Operatoren (oder dessen, was über Datentupel zu den Verarbeitungselementen und Operatoren gelangt) steuern. Ein Beispiel einer Datenstrom-Datenverarbeitungsanwendung ist InfoSphere® Streams von IBM® (InfoSphere® ist eine Marke der International Business Machines Corporation, die weltweit in vielen juristischen Zuständigkeitsbereichen eingetragen ist).
  • 1B veranschaulicht einen beispielhaften Verarbeitungselementgraphen, der zehn (mit VE1 bis VE10 gekennzeichnete) Verarbeitungselemente aufweist, die auf den Rechenknoten 1301 bis 4 ausgeführt werden. Ein Verarbeitungselement ist aus einem oder mehreren Operatoren zusammengesetzt, die in einen eigenständig ausgeführten Prozess mit einer eigenen Prozesskennung (Process ID, PID) und einem eigenen Speicherbereich zusammengeführt wurden. In Fällen, in denen zwei (oder mehrere) Verarbeitungselemente eigenständig ausgeführt werden, kann Interprozesskommunikation auftreten, die einen „Transport“ (z.B. ein Netzwerk-Socket, einen TCP/IP-Socket oder gemeinsam genutzten Speicher) verwendet. Wenn jedoch Operatoren zusammengeführt wurden, können die zusammengeführten Operatoren schnellere Datenaustauschmethoden verwenden, um Tupel zwischen Operatoren in jedem Verarbeitungselement weiterzugeben.
  • Wie gezeigt beginnt der Verarbeitungselementgraph bei einer Quelle 135 (die in das mit VE1 gekennzeichnete Verarbeitungselement gelangt) und endet bei der Senke 1401 bis 2 (die von den mit VE6 und VE10 gekennzeichneten Verarbeitungselementen kommt). Der Rechenknoten 1301 weist die Verarbeitungselemente VE1, VE2 und VE3 auf. Die Quelle 135 gelangt in die Operatoren im Verarbeitungselement VE1, das wiederum Tupel ausgibt, die durch VE2 und VE3 empfangen werden. Zum Beispiel können Operatoren in VE1 Datenattribute aufteilen, die in einem Tupel empfangen wurden, und einige Datenattribute an VE2 weitergeben, während andere Datenattribute an VE3 weitergegeben werden. Daten, die zu VE2 gelangen, werden durch die in VE2 enthaltenen Operatoren verarbeitet, und die entstandenen Tupel werden anschließend an die Operatoren in VE4 am Rechenknoten 1302 ausgegeben. Desgleichen gelangen die Datentupel, die durch die Operatoren in VE4 ausgegeben wurden, zu den Operatoren in der Senke VE6 1401. Ebenso erreichen Datentupel, die von Operatoren in VE3 zu Operatoren in VE5 gelangen, auch Operatoren in der Senke VE6 1401. Demzufolge könnten Operatoren in VE6 außer, dass sie als Senke für diesen beispielhaften Verarbeitungselementgraphen fungieren, so konfiguriert sein, dass sie eine Join-Operation durchführen, indem sie Tupel kombinieren, die von Operatoren in VE4 und VE5 empfangen wurden. Dieser beispielhafte Verarbeitungselementgraph zeigt außerdem Datentupel, die von VE3 zu VE7 am Rechenknoten 1303 gelangen, der selbst Datentupel zeigt, die zu Operatoren in VE8 und zurück zu Operatoren in VE7 gelangen. Von Operatoren in VE8 ausgegebene Datentupel gelangen zu Operatoren in VE9 am Rechenknoten 1304, der wiederum Tupel ausgibt, die durch Operatoren in der Quelle PE10 1402 verarbeitet werden sollen.
  • Da es sich bei einem Verarbeitungselement um eine Sammlung zusammengeführter Operatoren handelt, ist es gleichermaßen korrekt, den Verarbeitungselementgraphen als Ausführungspfade zwischen bestimmten Operatoren zu beschreiben, zu denen Ausführungspfade zu unterschiedlichen Operatoren innerhalb desselben Verarbeitungselements gehören können. Zur Verdeutlichung veranschaulicht 1B Ausführungspfade zwischen Verarbeitungselementen.
  • 2 ist eine ausführlichere Ansicht des Rechenknotens 130 aus den 1A bis 1B gemäß einer hierin veranschaulichten Ausführungsform. Wie gezeigt weist der Rechenknoten 130, ohne darauf beschränkt zu sein, mindestens eine CPU 205, eine Netzwerkschnittstelle 215, eine Verbindung 220, einen Arbeitsspeicher 225 und einen Speicher 230 auf. Der Rechenknoten 130 kann außerdem eine E/A-Einheitenschnittstelle 210 aufweisen, die zum Anschluss von E/A-Einheiten 212 (z.B. einer Tastatur-, Anzeige- und Mauseinheit) an den Rechenknoten 130 dient.
  • Jede CPU 205 ruft im Hauptspeicher 225 gespeicherte Anweisungen ab und führt diese aus. Ebenso ruft die CPU 205 im Arbeitsspeicher 225 befindliche Anwendungsdaten ab und speichert diese dort. Die Verbindung 220 dient zur Übertragung von Programmieranweisungen und Anwendungsdaten zwischen jeder CPU 205, der E/A-Einheitenschnittstelle 210, dem Speicher 230, der Netzwerkschnittstelle 215 und dem Hauptspeicher 225. Die CPU 205 ist stellvertretend für eine einzige CPU, mehrere CPUs, eine einzige CPU mit mehreren Verarbeitungskernen und dergleichen enthalten. Bei einer Ausführungsform ist für ein VE 235 festgelegt, dass es durch nur eine CPU 205 ausgeführt werden soll, obwohl die Operatoren 240 eines VE 235 bei anderen Ausführungsformen einen oder mehrere Threads aufweisen können, die auf einer Mehrzahl von CPUs 205 ausgeführt werden. Der Arbeitsspeicher 225 ist allgemein stellvertretend für einen Direktzugriffsspeicher (z.B. DRAM oder Flash) enthalten. Der Speicher 230 wie zum Beispiel ein Festplattenlaufwerk, eine Halbleitereinheit (Solid State Device, SSD) oder ein Flash-Speicherlaufwerk können nichtflüchtige Daten speichern.
  • Bei diesem Beispiel weist der Arbeitsspeicher 225 eine Mehrzahl von Verarbeitungselementen 235 auf. Jedes VE 235 weist eine Sammlung von Operatoren 240 auf, die zusammengeführt sind. Wie oben erwähnt kann jeder Operator 240 einen kleinen Block mit Code bereitstellen, der so konfiguriert ist, dass Prozessdaten, die in ein Verarbeitungselement (z.B. VE 235) gelangen, verarbeitet und Daten an andere Operatoren 240 im selben VE oder an andere VEs in der Datenstrom-Datenverarbeitungsanwendung ausgegeben werden. Derartige Verarbeitungselemente können sich am selben Rechenknoten 130 oder an anderen Rechenknoten befinden, die über das Datenaustauschwerk 120 zugänglich sind.
  • Wie gezeigt enthält der Speicher 230 einen Puffer 260. Obwohl der Puffer 260 als im Speicher befindlich gezeigt ist, kann sich der Puffer im Arbeitsspeicher 225 des Rechenknotens 130 oder in einer Kombination aus beidem befinden. Darüber hinaus kann der Speicher 230 Speicherplatz aufweisen, der sich außerhalb des Rechenknotens 130 befindet.
  • 3 ist eine ausführlichere Ansicht des Server-Verwaltungssystems 105 aus 1 gemäß einer hierin offenbarten Ausführungsform. Wie gezeigt weist das Server-Verwaltungssystem 105, ohne darauf beschränkt zu sein, eine CPU 305, eine Netzwerkschnittstelle 315, eine Verbindung 320, einen Arbeitsspeicher 325 und einen Speicher 330 auf. Das Client-System 130 kann außerdem eine E/A-Einheitenschnittstelle 310 zum Anschließen von E/A-Einheiten 312 (z.B. einer Tastatur-, Anzeige- und Mauseinheit) an das Server-Verwaltungssystem 105 aufweisen.
  • Wie die CPU 205 aus 2 ist die CPU 305 so konfiguriert, dass sie im Arbeitsspeicher 325 und im Speicher 330 gespeicherte Programmieranweisungen abruft und ausführt. Ebenso ist die CPU 305 so konfiguriert, dass sie im Arbeitsspeicher 325 und Speicher 330 befindliche Anwendungsdaten abruft und diese dort speichert. Die Verbindung 320 ist so konfiguriert, dass sie Daten wie zum Beispiel Programmieranweisungen und Anwendungsdaten zwischen der CPU 305, der E/A-Einheitenschnittstelle 310, der Speichereinheit 330, der Netzwerkschnittstelle 305 und dem Hauptspeicher 325 bewegt. Wie CPU 205 ist die CPU 305 stellvertretend für eine einzige CPU, mehrere CPUs, eine einzige CPU mit mehreren Verarbeitungskernen und dergleichen enthalten. Der Arbeitsspeicher 325 ist allgemein stellvertretend für einen Direktzugriffsspeicher enthalten. Die Netzwerkschnittstelle 315 ist so konfiguriert, dass sie Daten über das Datenaustauschnetzwerk 120 überträgt. Obwohl der Speicher 330 als eine einzige Einheit gezeigt ist, kann der Speicher eine Kombination aus festen und/oder auswechselbaren Speichereinheiten wie zum Beispiel Festplattenlaufwerken, entnehmbaren Speicherkarten, optischem Speicher, SSD- oder Flash-Speichereinheiten, netzgebundene Speichereinheiten (Network Attached Storage, NAS) oder Verbindungen zu SAN-Einheiten (SAN = Storage Area Network, Speichernetzwerk) sein.
  • Wie gezeigt ist ein Datenstrommanager 134 im Arbeitsspeicher 325 gespeichert. Außerdem weist der Speicher 330 einen primären Operatorgraphen 132 auf. Der Datenstrommanager 134 kann den primären Operatorgraphen 132 verwenden, um Tupel zur Verarbeitung zu VEs 235 zu leiten. Der Datenstrommanager 134 weist auch einen Puffermanager 333 auf, wobei der Puffermanager 333 so konfiguriert ist, dass er Tupel im Puffer 260 analysiert, um Kandidatentupel zu erkennen, wonach Operationen durchgeführt werden können um die Operatorverarbeitung zu optimieren. Bei einigen Ausführungsformen kann die Operation das Entfernen von Tupeln aus dem Puffer 260 aufweisen. Bei einigen Ausführungsformen kann die Operation das Neuordnen von Tupeln innerhalb des Puffers 260 aufweisen. Durch Entfernen aus dem und Neuordnen von Tupeln im Puffer 260 kann der Puffermanager 333 den Rückstand von Tupeln im Puffer 260 verringern und dazu beitragen, das Betriebsverhalten der Operatorverarbeitung zu verbessern.
  • 4 ist ein Ablaufplan, in dem ein Verfahren 404 zum Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist. Bei Schritt 401 werden Tupel im Puffer 260 eines Operators im Operatorgraphen empfangen. Während die Datenstromanwendung ausgeführt wird, treffen weiterhin Tupel im Puffer ein. Bei Schritt 420 erkennt der Puffermanager 333 einen Rückstand von Tupeln im Puffer 260. Ein Rückstand kann durch eine beliebige Anzahl von Mitteln erkannt werden, ist aber allgemein so festgelegt, dass er eintritt, wenn die Anzahl von Tupeln im Puffer 260 einen vorgegebenen Schwellenwert überschreitet. Zu Umständen, die anzeigen, dass ein Pufferrückstand bestehen kann, gehören, ohne darauf beschränkt zu sein: (i) wenn ein nachfolgender Operator Tupel mit einer Geschwindigkeit empfängt, die unterhalb eines vorgegebenen Schwellenwertes liegt; (ii) Verlaufsmuster, die bestimmte Zeiten aufweisen, zu denen ein Rückstand wiederholt auftritt, wie zum Beispiel ein wiederkehrender Rückstand um 2:00 Uhr an einem Freitag; (iii) Ressourcen, die durch das Verarbeitungselement bzw. den Verarbeitungsknoten verwendet werden, überschreiten einen vorgegebenen Schwellenwert wie zum Beispiel den mit einer Auslastung von 100 % laufenden Prozessor oder das Erreichen eines Grenzwertes der Arbeitsspeichernutzung; (iv) die Geschwindigkeit des Pufferdurchsatzes sinkt unter einen vorgegebenen Schwellenwert; und (v) wenn der aktuelle Operator Tupel mit einer Geschwindigkeit ausgibt, die unterhalb eines vorgegebenen Schwellenwertes liegt. Der Puffermanager 333 kann die Pufferoptimierung über andere Prozesse optimieren und Pufferrückstände erkennen, indem er langsamere Teile des Operatorgraphen untersucht, um zu ermitteln, welches Problem gelöst werden kann. Bei einigen Ausführungsformen kann auf der Ausgangsseite des Operators ein Puffer vorhanden sein, der sich von dem Puffer 260 auf der Eingangsseite des Operators unterscheidet. Bei diesen Ausführungsformen kann der Puffermanager 333 auf den Ausgangspuffer dieselben Überwachungs-, Entfernungs- und Neuordnungsmethoden wie auf den Eingangspuffer 260 anwenden. Zu Umständen, die anzeigen, dass am Ausgangspuffer ein Pufferrückstand bestehen kann, können, ohne darauf beschränkt zu sein, die oben beschriebenen Anzeichen gehören.
  • Bei Schritt 430 wählt der Puffermanager 333 aus dem Puffer 260 mindestens ein Tupel zur Untersuchung aus. Der Puffermanager 333 kann ein beliebiges Verfahren verwenden, um Tupel aus dem Puffer 260 auszuwählen, was ausführlicher unter Bezugnahme auf 5 beschrieben wird. Bei Schritt 440 untersucht der Puffermanager 333 Attribute der ausgewählten Tupel, um Kandidatentupel zu erkennen. Ein Kandidatentupel ist ein Tupel, das unter Umständen keine Verarbeitung benötigt oder zu einem späteren Zeitpunkt verarbeitet werden und daher aus dem Puffer entfernt oder innerhalb des Puffers neu geordnet werden kann. Bei einigen Ausführungsformen kann der Puffermanager 333 Operatoreigenschaften heranziehen, um zu ermitteln, welche Attribute untersucht werden sollen. Bei anderen Ausführungsformen kann der Puffermanager 333 innerhalb jedes Tupels Standardattribute untersuchen. Bei noch anderen Ausführungsformen kann der Puffermanager 333 alle Tupelattribute untersuchen. Bei Schritt 450 führt der Puffermanager 333 eine Operation an den Kandidatentupeln aus, um den Rückstand von Tupeln im Puffer 260 abzubauen. Wie oben erwähnt können Tupel aus dem Puffer 260 entfernt werden, oder sie können innerhalb des Puffers 260 neu geordnet werden, um den Rückstand abzubauen und die Operatorverarbeitung zu verbessern. Die zur Untersuchung des Puffers 260 benötigte zusätzliche Verarbeitung kann aus zusätzlichen Zyklen kommen, die an den Knoten zur Verfügung stehen, auf dem der Operator ausgeführt wird, oder aus einer anderen Quelle. Im Falle des Rückstaus ist es wahrscheinlich, dass Operatoren, die gezwungen sind, ihre Berechnung zu verlangsamen, Ressourcen zur Verfügung haben, um den Puffer 260 zu untersuchen. Durch Zuordnen von Berechnungsressourcen in einer derartigen Weise wird sich der Betrieb des Puffermanagers 333 auf den Betrieb der Datenstrom-Datenverarbeitungsanwendung wahrscheinlich nicht nachteilig auswirken.
  • 5 ist ein Ablaufplan, in dem ein dem Schritt 430 entsprechendes Verfahren 500 zum Auswählen von Tupeln in einem Operatorpuffer gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist. Ungeachtet der Darstellung als Ablaufplan kann der Puffermanager einen, mehrere oder alle der Schritte des Verfahrens 500 realisieren, um Tupel aus dem Operatorpuffer 260 auszuwählen. Darüber hinaus können die Schritte des Verfahrens 500 so oft ausgeführt werden, wie der Puffermanager 333 als notwendig ermittelt, um den Rückstand von Tupeln im Puffer 260 abzubauen. Zum Beispiel kann der Puffermanager 333 den Rückstand abbauen, indem er ein einziges Tupel bearbeitet, das beim ersten Durchlauf des Verfahrens 500 erkannt wurde. In anderen Fällen muss der Puffermanager 333 unter Umständen ein weiteres Tupel im Puffer 260 bearbeiten, um den Rückstand abzubauen, wodurch weitere Iterationen des Verfahrens 500 erforderlich sind, um Tupel auszuwählen.
  • Bei Schritt 510 wählt der Puffermanager 333 das Tupel aus, das zuletzt im Puffer 260 hinzugefügt wurde. Bei derartigen Ausführungsformen würde der Puffermanager 333 die neuesten Tupel im Puffer 360 auswählen, die mit der größten Wahrscheinlichkeit Attribute enthalten, die anzeigen, dass es sich bei dem Tupel um ein Kandidatentupel handelt. Nachfolgende Iterationen des Schrittes 510 würden bewirken, dass der Puffermanager 333 das im Puffer 260 hinzugefügte nächstjüngste Tupel auswählt, und so weiter. Als Beispiel wird eine Anwendung angenommen, die bei Benutzern einer webbasierten Anwendung Nutzungsmuster analysiert, um Echtzeitwerbung anzubieten, die für die Aktionen von Bedeutung ist, die sie in der Anwendung durchführen. Während eines Zeitraums intensiver Nutzung der Anwendung kann es bei Tupeln eines der Operatoren in der Anwendung zur Bildung eines Rückstaus kommen. Durch Untersuchen der Tupel in umgekehrter Reihenfolge kann der Puffermanager 333 feststellen, dass der Benutzer X seine Anwendungssitzung beendet hat, wodurch angezeigt würde, dass beliebige Tupel im Puffer, die mit dem Benutzer X zusammenhängen, als hinfällig angesehen und aus dem Puffer gelöscht werden können, wodurch der Rückstand verringert wird, den der Operator aufzuholen versucht. Da sich das Tupel, das anzeigt, dass der Benutzer seine Anwendungssitzung beendet hat, mit großer Wahrscheinlichkeit am Ende des Puffers befindet (und daher das zuletzt hinzugefügte Tupel ist), kann der Puffermanager 333 Tupel am Ende des Puffers auswählen.
  • Bei Schritt 520 kann der Puffermanager 333 ein Tupel nach dem Zufallsprinzip auswählen. Bei nachfolgenden Iterationen des Schrittes 520 kann der Puffermanager 333 Tupel weiterhin nach dem Zufallsprinzip auswählen. Bei Schritt 530 kann der Puffermanager 333 Tupel auf der Grundlage eines vordefinierten Auswahlalgorithmus auswählen. Zu Beispielen vordefinierter Auswahlalgorithmen gehören, ohne darauf beschränkt zu sein, das Auswählen jedes n-ten Tupels, jedes geraden Tupels, jedes ungeraden Tupels und so weiter. Bei nachfolgenden Iterationen des Schrittes 530 würde der Puffermanager 333 Tupel auf der Grundlage des vordefinierten Auswahlalgorithmus auswählen. Bei Schritt 540 wählt der Puffermanager 333 Tupel auf der Grundlage von Verlaufsmustern des Operators aus. Zum Beispiel können die Operatoreigenschaften ein Muster zum Auswählen von Tupeln angeben, die, nachdem sie bearbeitet wurden, zu einer Verkleinerung des Rückstands im Puffer 260 führten. Bei derartigen Ausführungsformen kann der Puffermanager 333 erfolgreiche und nicht erfolgreiche Muster in einer zum Operator gehörenden Datenstruktur speichern, was die Grundlage eines intelligenten Tupelauswahlmechanismus für den Puffermanager 333 bilden würde.
  • 6 ist ein Ablaufplan, in dem ein dem Schritt 440 entsprechendes Verfahren 600 zum Erkennen von Kandidatentupeln in einem Operatorpuffer gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist. Bei einigen Ausführungsformen untersucht der Puffermanager 333 Attribute von Tupeln, die bei Schritt 430 ausgewählt wurden, um zu ermitteln, ob hinsichtlich der ausgewählten Tupel eine vordefinierte Bedingung erfüllt ist, sodass die ausgewählten Tupel durch den Puffermanager 333 als Kandidatentupel gekennzeichnet und weiter verarbeitet werden können, um das Betriebsverhalten von Operatoren zu verbessern. Die maßgeblichen Werte der Attribute, die die vorgegebene Bedingung auslösen würden, können durch Operatoreigenschaften oder durch den Puffermanager 333 angegeben werden. Ungeachtet der Darstellung als Ablaufplan kann der Puffermanager 333 einen, mehrere oder alle der Schritte des Verfahrens 600 realisieren, um Kandidatentupel im Puffer 260 zu erkennen. Bei Schritt 610 stellt der Puffermanager 333 fest, dass die vordefinierte Bedingung erfüllt ist, nachdem er festgestellt hat, dass das Kandidatentupel ein Duplikat eines zweiten Datentupels in dem Puffer 260 ist. Diese Feststellung kann auf der Grundlage des Vergleichens von Tupelattributen getroffen werden, um doppelte Werte oder Werte zu finden, die nahe genug beieinander liegen, um sie als Duplikate zu betrachten. Doppelte Tupel müssen unter Umständen nicht zweimal (oder öfter, wenn viele Duplikate vorhanden sind) verarbeitet werden, und die Beseitigung oder das Neuordnen der Tupel würde den Rückstand im Puffer 260 verringern. Nachdem er eine derartige Feststellung getroffen hat, kann der Puffermanager 333 die verbleibenden Tupel im Puffer durchsuchen, um andere Tupel zu erkennen, die dasselbe Attribut wie das doppelte Tupel aufweisen.
  • Bei Schritt 620 stellt der Puffermanager 333 fest, dass die vordefinierte Bedingung erfüllt ist, nachdem er festgestellt hat, dass die Verarbeitung des Kandidatentupels nicht notwendig ist. Zu Faktoren, die anzeigen können, dass die Verarbeitung des Tupels nicht notwendig ist, gehören, ohne darauf beschränkt zu sein, Anwendungsinstanzen, die beendet wurden (z.B. hat ein bestimmter Nutzer eine Sitzung beendet, wie oben beschrieben). Ein Tupel, das ein Sitzungskennungsattribut aufweist, das der Kennung der beendeten Sitzung entspricht, könnte daher als Kandidatentupel zur weiteren Verarbeitung durch den Puffermanager 333 markiert werden. Darüber hinaus kann ein Tupel ein Attribut aufweisen, das eine Zeit angibt, wann das Tupel verarbeitet werden soll. Wenn das Tupel zum Beispiel einen Zeitstempel aufweist und das Tupel innerhalb eines bestimmten Zeitraums verarbeitet werden muss, könnte der Puffermanager 333 das Tupel entfernen, wenn es später als der Zeitschwellenwert ist. Bei Schritt 630 stellt der Puffermanager 333 fest, dass die vorgegebene Bedingung erfüllt ist, nachdem er festgestellt hat, dass die Verarbeitung des Kandidatentupels zu einem bekannten Ergebnis führt. Wenn das Tupel zum Beispiel ein Attribut enthält, das einen Wert von null oder eins aufweist, führt eine beliebige Multiplikation oder Division auf der Grundlage dieser Werte zu einem bekannten Ergebnis, und das Tupel muss nicht verarbeitet werden. Daher kann ein Tupel, das einen derartigen Wert aufweist, als Kandidatentupel markiert werden, um durch den Puffermanager 333 weiterverarbeitet zu werden. Bei Schritt 640 stellt der Puffermanager 333 fest, dass die vordefinierte Bedingung erfüllt ist, nachdem er festgestellt hat, dass die Verarbeitung des Kandidatentupels zu einem Ergebnis führt, das einen angegebenen Relevanzschwellenwert nicht überschreitet. Wenn das Tupel zum Beispiel ein Attribut aufweist, das einen Wert enthält, der bei der Verarbeitung durch den Operator kein aussagekräftiges Ergebnis erzeugt, kann das Tupel als Kandidatentupel markiert werden. Zu Beispielen eines derartigen Relevanzschwellenwertes gehören signifikante Stellen bei arithmetischen Berechnungen; wenn ein Attribut 5 signifikante Stellen enthält und die Berechnung nicht zu einer Änderung bei einer dieser Stellen führen würde, kann das Tupel als Kandidatentupel markiert werden. Der Relevanzschwellenwert kann durch die Operatoreigenschaften oder durch den Puffermanager 333 festgelegt werden.
  • 7 ist ein Ablaufplan, in dem ein dem Schritt 450 entsprechendes Verfahren 700 zum Durchführen einer Operation zur Optimierung der Operatorverarbeitung gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist. Bei einigen Ausführungsformen führt der Puffermanager 333 die Schritte des Verfahrens 700 durch. Bei Schritt 710 beginnt der Puffermanager 333 zu jedem Tupel, das in bei Schritt 440 als Kandidatentupel erkannt wurde, mit dem Ausführen einer Schleife, die die Schritte 720 bis 750 enthält. Bei Schritt 720 ermittelt der Puffermanager 333, ob das Neuordnen (anstelle des Entfernens) der gepufferten Tupel zu einer effizienteren Verarbeitung im Operator führen kann. In einigen Fällen kann der Puffermanager 333 feststellen, dass das Tupel nicht entfernt zu werden braucht, sondern neu geordnet werden kann, um das Betriebsverhalten zu verbessern. Der Puffermanager 333 kann diese Feststellung auf der Grundlage der Beobachtung treffen, dass das Zusammenfassen ähnlicher Tupel in Gruppen zu einer schnelleren Verarbeitung führen kann. Zum Beispiel kann das Neuordnen bei mathematischen Berechnungen von Vorteil sein, bei denen es effizienter ist, 5*5*1/3 anstelle von 1/3*5*5 zu multiplizieren. Darüber hinaus könnte es, wenn der Puffermanager 333 auf ein Beendigungstupel trifft, effizienter sein, zuerst das Beendigungstupel zu verarbeiten, anschließen können alle zugehörigen Tupel durch den Puffermanager 333 gelöscht werden, wodurch die Anzahl von Tupeln verringert wird, die eine Verarbeitung erfordern. Wenn der Puffermanager 333 feststellt, dass das Neuordnen nicht zu einer effizienteren Operatorverarbeitung führen würde, geht der Puffermanager zu Schritt 740 über. Anderenfalls geht der Puffermanager 333 zu Schritt 730 über, bei dem der Puffermanager 333 die Tupel im Puffer 260 neu ordnet. Der Puffermanager 333 kann die Tupel im Puffer 260 anhand beliebiger Kriterien neu ordnen, einschließlich und ohne darauf beschränkt zu sein, des Zusammenfassens von Tupeln mit doppelten oder ähnlichen Attributen zu Gruppen, des Neuordnens von Tupeln in der Weise, dass die einfachsten zuerst verarbeitet werden (währenddessen weniger Ressourcen zur Verfügung stehen), oder in Fällen, in denen bei nachfolgenden Operatoren ein Rückstau vorliegt, des Verarbeitens ressourcenintensiverer Tupel während des Wartens darauf, dass der Rückstau bei nachfolgenden Operatoren beseitigt wird. Wenn der Puffermanager 333 zum Beispiel erkennt, das Tupel zu einem Sitzungsattribut dieselben Werte aufweisen, kann der Puffermanager 333 feststellen, dass die Tupel zur Sitzung desselben Benutzers gehören, und sie zu einer Gruppe zusammenfassen, um die Verarbeitung zu beschleunigen. Darüber hinaus können, wenn der Rückstand das Ergebnis eines Rückstaus bei nachfolgenden Operatoren ist, mehrere Pfade für Ausgangsdaten bestehen, bei denen auf einigen ein Rückstand vorliegt und auf anderen nicht. Bei diesen Ausführungsformen könnten die Tupel in der Weise neu geordnet werden, dass Daten weiterhin zu den Pfaden gelangen, die nicht blockiert sind. Bei Schritt 740 entfernt der Puffermanager 333 das Kandidatentupel aus dem Puffer. Bei einigen Ausführungsformen kann der Puffermanager 333 Bezug auf Operatoreigenschaften nehmen, um zu ermitteln, ob das Tupel auf der Grundlage der Attribute, die zur Markierung des Tupels als Kandidatentupel verwendet wurden, entfernt werden kann.
  • 8 veranschaulicht eine Tabelle 800, in der der Inhalt eines Operatorpuffers gemäß einer hierin offenbarten Ausführungsform bildlich dargestellt ist. In der Tabelle ist allgemein der Inhalt eines Puffers bildlich dargestellt, bevor und nachdem der Puffermanager 333 die oben beschriebenen Verfahren durchführt. Wie gezeigt bezeichnet das Element 805 Tupel im Operatorpuffer vor und nach einer Operation, wobei das Element 820 den Inhalt des Operatorpuffers zeigt. Das Element 810 bezeichnet Tupel im Operatorpuffer nach einer Operation zum Entfernen von Tupeln, wobei das Element 825 den Inhalt des Operatorpuffers zeigt. Das Element 815 bezeichnet Tupel im Operatorpuffer nach einer Operation zum Entfernen von Tupeln, wobei das Element 830 den Inhalt des Operatorpuffers zeigt. In diesem Beispiel handelt es sich bei der Anwendung um ein Online-Spiel, und die Tupelattribute, die als „SID“ (Spielerkennung), „Tage“, „ErspieltePunkte“ und „Aktiv“ aufgeführt sind, entsprechen einer Spielerkennung, einer Anzahl gespielter Tage, einer Anzahl im Spiel erspielter Punkte und der Information, ob der Spieler aktiv ist.
  • Wie im Element 805 gezeigt, weisen die Tupel im Operatorpuffer vor der Operation {SID = 100, Tage = 10, ErspieltePunkte = 100,5, Aktiv = 1}, {SID = 101, Tage = 0, ErspieltePunkte = 0, Aktiv = 1}, {SID = 200, Tage = 92, ErspieltePunkte = 0,001, Aktiv = 1}, {SID = 102, Tage = 91, ErspieltePunkte = 2, Aktiv = 1}, {SID = 107, Tage = 15, ErspieltePunkte = 5, Aktiv = 0}, {SID = 104, Tage = 5, ErspieltePunkte = 3, Aktiv = 1} und {SID = 100, Tage = 10, ErspieltePunkte = 100,5, Aktiv = 1} auf. Zum Zweck dieses Beispiels wird angenommen, dass der Operator die Datentupelattribute untersucht, um Spielereinträge zu aktualisieren, sodass, gewichtet nach der Anzahl gespielter Tage, Belohnungen an Spieler vergeben werden. Ferner wird angenommen, dass erspielte Punkte auf ein Zehntel eines Punktes genau vergeben werden und dass der Operator nur Tupel aktiver Spieler verarbeitet. Das Element 825 bezeichnet den Inhalt des Operatorpuffers, nachdem der Puffermanager 333 Tupel aus dem Operatorpuffer entfernt hat. Ein doppeltes Tupel der SID = 100 wurde entfernt, da es der Puffermanager 333 als doppeltes Tupel erkannt hat und die Operatoreigenschaften angeben, dass die SID als Attribut verwendet werden kann, um zu ermitteln, ob eine Übereinstimmung besteht. Das Tupel der SID = 101 wurde entfernt, da die Attribute für Tage und erspielte Punkte gleich null sind und ein mit null multiplizierter beliebiger Gewichtungsfaktor (oder eine beliebige Gesamtpunktzahl, zu der null addiert wurde), zu einem unveränderten Wert führt. Das Tupel der SID = 107 wurde entfernt, da der Spieler nicht aktiv ist. Das Tupel der SID = 200 wurde entfernt, da der Spieler nur 0,001 Punkte erspielt hat, was im Punktesystem des Spielers unerheblich ist und nach Addition beim Punktewert des Spielers nicht zu einer Erhöhung führt.
  • Das Element 830 bezeichnet den Inhalt des Operatorpuffers, nachdem der Puffermanager 333 die Tupel anhand des Attributes SID sortiert hat. Alle im Element 820 gefundenen Tupel bleiben erhalten, wurden aber anhand der SID sortiert, nachdem der Puffermanager 333 festgestellt hat, dass das Sortieren zu einer schnelleren Verarbeitung als das Entfernen von Tupeln führen würde.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Dementsprechend kann jeder einzelne Block im Ablaufplan bzw. in den Blockschaltbildern ein Modul, ein Segment oder einen Teil des Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Außerdem sollte beachtet werden, dass bei einigen alternativen Realisierungsformen die im Block angegebenen Funktionen in einer anderen als der in den Figuren angegebenen Reihenfolge ausgeführt werden können. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der damit verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der dargestellten Blockschaltbilder und/oder des dargestellten Ablaufplans sowie Kombinationen von Blöcken in den dargestellten Blockschaltbildern und/oder im dargestellten Ablaufplan mithilfe von bestimmten Zwecken dienenden, hardwaregestützten Systemen zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus bestimmten Zwecken dienender Hardware und Computeranweisungen realisiert werden kann bzw. können.
  • Obwohl das Vorstehende auf Ausführungsformen der vorliegenden Erfindung gerichtet ist, können andere und weitere Ausführungsformen der Erfindung entwickelt werden, ohne von deren grundlegendem Schutzbereich abzuweichen, und deren Schutzbereich wird durch die nachfolgenden Ansprüche festgelegt.

Claims (8)

  1. Verfahren zum Überwachen einer Datenstrompufferung zur Optimierung einer Operatorverwaltung, aufweisend: Bereitstellen einer Mehrzahl von Verarbeitungselementen, die einen oder mehrere Operatoren aufweisen, wobei die Operatoren so konfiguriert sind, dass Datenstrom-Datentupel durch den Betrieb eines oder mehrerer Computerprozessoren verarbeitet werden; Einrichten eines Operatorgraphen aus einer Mehrzahl von Operatoren, wobei der Operatorgraph mindestens einen Ausführungspfad festlegt, in dem ein erster Operator der Mehrzahl von Operatoren so konfiguriert ist, dass Datentupel von mindestens einem vorhergehenden Operator empfangen und Datentupel an mindestens einen nachfolgenden Operator übertragen werden; für jeden der Mehrzahl von Operatoren Bereitstellen eines Puffers, der so konfiguriert ist, dass er Datentupel aufnimmt, die die Verarbeitung durch den betreffenden Operator erfordern, wobei es sich bei dem Puffer um einen First-In-First-Out-Puffer handelt. Empfangen einer Mehrzahl von Datentupeln in einem ersten Puffer, der zu einem ersten Operator gehört, wobei die Datentupel mindestens ein Attribut aufweisen; Feststellen, dass im ersten Puffer ein Rückstau von Datentupeln besteht, Auswählen mindestens eines Datentupels aus dem ersten Puffer; Untersuchen mindestens eines Attributes der ausgewählten Datentupel, um mindestens ein Kandidatentupel zu erkennen; und Durchführen einer vorherbestimmten Operation durch einen Puffermanager an dem mindestens einen Kandidatentupel, wobei das Durchführen der vorherbestimmten Operation aufweist: Neuordnen auf Grundlage eines Attributwertes der Mehrzahl von Tupeln aufweist, wobei sich die Mehrzahl von Datentupeln innerhalb des ersten Puffers befindet, - Entfernen des mindestens einen Kandidatentupels aus dem Puffer, und - falls bei nachfolgenden Operatoren ein Rückstau auftritt - Verarbeiten ressourcenintensiverer Tupel während des Wartens darauf, dass der Rückstau bei nachfolgenden Operatoren beseitigt wird.
  2. Verfahren nach Anspruch 1, bei dem das Durchführen einer Operation an dem mindestens einen Kandidatentupel auf mindestens Einem beruht von: Feststellen, dass ein erstes Kandidatentupel ein Duplikat eines zweiten Datentupels im ersten Puffer ist; Feststellen, dass das Verarbeiten des mindestens einen Kandidatentupels nicht notwendig ist; Feststellen, dass das Verarbeiten des mindestens einen Kandidatentupels zu einem bekannten Ergebnis führt; und Feststellen, dass das Verarbeiten des mindestens einen Tupels zu einem Ergebnis führt, das einen angegebenen Relevanzschwellenwert nicht überschreitet.
  3. Verfahren nach Anspruch 1, bei dem das Auswählen mindestens eines Datentupels Eines aufweist von: Auswählen von Datentupeln, die zuletzt zum ersten Puffer hinzugefügt wurden; nach dem Zufallsprinzip Abtasten von Datentupeln im ersten Puffer; Abtasten von Datentupeln im ersten Puffer auf Grundlage eines vordefinierten Algorithmus; und Auswählen von Datentupeln auf Grundlage von Verlaufsmustern des ersten Operators.
  4. Verfahren nach Anspruch 1, bei dem das Durchführen einer Operation an dem mindestens einen Kandidatentupel den Rückstau von Datentupeln im ersten Puffer verringert.
  5. Verfahren nach Anspruch 1, wobei das Neuordnen des mindestens einen Kandidatentupels ein Gruppieren von Kandidatentupeln mit ähnlichen Attributen zusammen aufweist.
  6. Verfahren nach Anspruch 1, wobei die vordefinierte Operation nach dem Bestimmen durchgeführt wird, dass das Neuordnen des mindestens einen Kandidatentupels zu einer effizienteren Verarbeitung der Mehrzahl von Datentupeln in dem ersten Puffer führt.
  7. Computerprogrammprodukt, aufweisend: ein computerlesbares Speichermedium mit einem darin verkörperten computerlesbaren Programmcode, wobei der computerlesbare Programmcode so gestaltet ist, dass das Verfahren gemäß einem der Ansprüche 1 bis 6 durchgeführt wird.
  8. System zum Überwachen einer Datenstrompufferung zur Optimierung einer Operatorverwaltung, aufweisend: einen oder mehrere Computerprozessoren; und einen Arbeitsspeicher, der ein Programm aufweist, das bei Ausführung durch einen oder mehrere Computerprozessoren so konfiguriert ist, dass das Verfahren gemäß einem der Ansprüche 1 bis 6 ausgeführt wird.
DE102013207049.7A 2012-04-25 2013-04-18 Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung Active DE102013207049B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/455,982 US9015339B2 (en) 2012-04-25 2012-04-25 Monitoring streams buffering to optimize operator procressing
US13/455,982 2012-04-25

Publications (2)

Publication Number Publication Date
DE102013207049A1 DE102013207049A1 (de) 2013-10-31
DE102013207049B4 true DE102013207049B4 (de) 2024-02-08

Family

ID=49323413

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013207049.7A Active DE102013207049B4 (de) 2012-04-25 2013-04-18 Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung

Country Status (2)

Country Link
US (2) US9015339B2 (de)
DE (1) DE102013207049B4 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015339B2 (en) * 2012-04-25 2015-04-21 International Business Machines Corporation Monitoring streams buffering to optimize operator procressing
US9235652B1 (en) * 2012-06-27 2016-01-12 Groupon, Inc. Optimizing a data integration process
US9654538B1 (en) * 2013-03-11 2017-05-16 DataTorrent, Inc. Dynamic partitioning of instances in distributed streaming platform for real-time applications
US9535734B2 (en) 2014-03-06 2017-01-03 International Business Machines Corporation Managing stream components based on virtual machine performance adjustments
US9703839B2 (en) * 2014-06-20 2017-07-11 International Busines Machines Corporation Managing streams of tuples
US10042891B2 (en) 2015-05-08 2018-08-07 International Business Machines Corporation Windowing across operators in a streaming environment
US10152516B2 (en) 2015-05-21 2018-12-11 International Business Machines Corporation Managing staleness latency among application bundles
US10389794B2 (en) * 2015-05-21 2019-08-20 International Business Machines Corporation Managing redundancy among application bundles
US10389850B2 (en) * 2015-05-21 2019-08-20 International Business Machines Corporation Managing redundancy among application bundles
US10530660B2 (en) 2015-05-21 2020-01-07 International Business Machines Corporation Application bundle preloading
US9853878B2 (en) * 2015-06-09 2017-12-26 International Business Machines Corporation Limiting data output from windowing operations
US9690800B2 (en) * 2015-06-12 2017-06-27 International Business Machines Corporation Tracking tuples to reduce redundancy in a graph
US9864779B2 (en) 2015-06-15 2018-01-09 International Business Machines Corporation Suppressing stream functionality to expedite preferred data
US9898321B2 (en) 2015-07-23 2018-02-20 At&T Intellectual Property I, L.P. Data-driven feedback control system for real-time application support in virtualized networks
US9965518B2 (en) * 2015-09-16 2018-05-08 International Business Machines Corporation Handling missing data tuples in a streaming environment
US10558670B2 (en) 2015-09-30 2020-02-11 International Business Machines Corporation Smart tuple condition-based operation performance
US10657135B2 (en) 2015-09-30 2020-05-19 International Business Machines Corporation Smart tuple resource estimation
US10733209B2 (en) 2015-09-30 2020-08-04 International Business Machines Corporation Smart tuple dynamic grouping of tuples
US10296620B2 (en) 2015-09-30 2019-05-21 International Business Machines Corporation Smart tuple stream alteration
US10216795B2 (en) 2015-12-02 2019-02-26 International Business Machines Corporation Field-programmable gate array cards in a streaming environment
US9946522B1 (en) * 2016-12-16 2018-04-17 International Business Machines Corporation Generating code for real-time stream processing
US20180248781A1 (en) * 2017-02-28 2018-08-30 International Business Machines Corporation Processing data tuples that have missing data in a streaming application
CN110474938B (zh) * 2018-05-09 2022-08-16 视联动力信息技术股份有限公司 信息查询方法和装置
WO2020041872A1 (en) * 2018-08-30 2020-03-05 Streamworx.Ai Inc. Systems, methods and computer program products for scalable, low-latency processing of streaming data
US11190456B2 (en) * 2018-11-30 2021-11-30 International Business Machines Corporation Real-time adjustment of packet size limit in virtual networks
US11687380B2 (en) 2020-09-10 2023-06-27 International Business Machines Corporation Optimizing resource allocation for distributed stream processing systems
US20220188149A1 (en) * 2020-12-15 2022-06-16 International Business Machines Corporation Distributed multi-environment stream computing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090178059A1 (en) 2008-01-07 2009-07-09 Christian Alexander Lang Method and system for providing consistency in processing data streams

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347094B1 (en) * 1998-07-21 2002-02-12 Microsoft Corporation Data rate smoothing
US6389587B1 (en) * 1999-02-04 2002-05-14 Sun Microsystems, Inc. User interface for developing and executing data flow programs and methods, apparatus, and articles of manufacture for optimizing the execution of data flow programs
US7234126B2 (en) * 2000-08-23 2007-06-19 Interuniversitair Microelektronica Centrum Task concurrency management design method
US7437397B1 (en) 2003-04-10 2008-10-14 At&T Intellectual Property Ii, L.P. Apparatus and method for correlating synchronous and asynchronous data streams
JP4723301B2 (ja) * 2005-07-21 2011-07-13 株式会社日立製作所 ストリームデータ処理システムおよびストリームデータ処理方法
US7512610B1 (en) * 2005-09-30 2009-03-31 Miosoft Corporation Processing data records
JP5198929B2 (ja) 2008-04-25 2013-05-15 株式会社日立製作所 ストリームデータ処理方法及び計算機システム
US8059546B2 (en) * 2008-09-05 2011-11-15 Cisco Technology, Inc. Traffic flow scheduling techniques implemented on bonded channels of a shared access cable network
US8949801B2 (en) * 2009-05-13 2015-02-03 International Business Machines Corporation Failure recovery for stream processing applications
US8180914B2 (en) 2009-07-17 2012-05-15 Sap Ag Deleting data stream overload
US9015339B2 (en) * 2012-04-25 2015-04-21 International Business Machines Corporation Monitoring streams buffering to optimize operator procressing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090178059A1 (en) 2008-01-07 2009-07-09 Christian Alexander Lang Method and system for providing consistency in processing data streams

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ABADI, Daniel J., et al.: The design of the borealis stream processing engine. In: Cidr. 2005. S. 277-289 bzw. S. 1 - 13.
Daniel J., et al.: The design of the borealis stream processing engine, in Cidr. 2005. S. 277-289 bzw. S. 1 - 13
TATBUL, Nesime, et al.: „Load shedding in a data stream manager" in Proceedings 2003 vldb conference, Morgan Kaufmann, 2003. S. 309-320
TATBUL, Nesime, et al.: Load shedding in a data stream manager. In: Proceedings 2003 vldb conference. Morgan Kaufmann, 2003. S. 309-320.

Also Published As

Publication number Publication date
US9015339B2 (en) 2015-04-21
US9021122B2 (en) 2015-04-28
US20130290394A1 (en) 2013-10-31
US20130290489A1 (en) 2013-10-31
DE102013207049A1 (de) 2013-10-31

Similar Documents

Publication Publication Date Title
DE102013207049B4 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE112013000752B4 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE102012216029B4 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE112012003540B4 (de) Leistungsüberwachungsmasszahlen für Datenstromanwendung
DE112012005639T5 (de) Auslösen von Fensterbedingungen bei Anwendungen des Stream-Computing
DE102013221057B4 (de) System und Verfahren für Batch-Auswertungs-Programme
DE112012005030T5 (de) Dynamisch konfigurierbare Platzierungs-Engine
DE112015003406B4 (de) Datenherkunftssummierung
DE112012004747B4 (de) Verborgenes automatisiertes Spiegeln von Daten für native Schnittstellen in verteilten virtuellen Maschinen
DE102012224492A1 (de) Auslösen von Fensterbedingungen unter Verwendung einer Ausnahmebehandlung
DE112016005536T5 (de) Bestimmen von reihenfolgen einer ausführung eines neuronalen netzes
DE102013221052A1 (de) System und Verfahren für Batch-Auswertungs-Programme
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
DE112015000347T5 (de) Verarbeiten von Datensätzen in einer Ablage für große Datenmengen
DE202014010940U1 (de) Dynamische Shuffle-Rekonfiguration
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE102017109239A1 (de) Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE202012013462U1 (de) Datenverarbeitung in einem Mapreduce-Framework
DE112011101200T5 (de) Spaltenorientierte Speicher-Darstellungen von Datensätzen
DE10039538A1 (de) Vorrichtung und Methode zum Analysieren der Leistung eines Computerprogramms
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE102013204420A1 (de) Zwischenspeichern von optimierten internen Befehlen in einem Schleifenpuffer
DE202014010924U1 (de) Nichtflüchtiges Shuffle-System
DE202017105367U1 (de) Abfrageneustartfähigkeit
DE112011103428T5 (de) Automatisierte Analyse zusammengesetzter Anwendungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence