DE112020003431T5 - Automatisches umwandeln eines programms, das in einer prozeduralen programmiersprache geschrieben ist, in einen datenflussgraphen, sowie zugehörige systeme und verfahren - Google Patents

Automatisches umwandeln eines programms, das in einer prozeduralen programmiersprache geschrieben ist, in einen datenflussgraphen, sowie zugehörige systeme und verfahren Download PDF

Info

Publication number
DE112020003431T5
DE112020003431T5 DE112020003431.3T DE112020003431T DE112020003431T5 DE 112020003431 T5 DE112020003431 T5 DE 112020003431T5 DE 112020003431 T DE112020003431 T DE 112020003431T DE 112020003431 T5 DE112020003431 T5 DE 112020003431T5
Authority
DE
Germany
Prior art keywords
program
data
flow graph
data flow
components
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.)
Pending
Application number
DE112020003431.3T
Other languages
English (en)
Inventor
Yuri Gennady Rabinovitch
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.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
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 Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of DE112020003431T5 publication Critical patent/DE112020003431T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Es sind Techniken zum Erhöhen der Funktionalität eines Datenverarbeitungssystems mittels eines computerausgeführten Tools beschrieben, das Programme, die in einer prozeduralen Sprache geschrieben sind, in Komponenten umwandelt, die als ein Datenflussgraph ausgeführt werden können. Der Datenflussgraph, der aus einem Programm erzeugt wird, das in einer prozeduralen Programmiersprache geschrieben ist, kann verschiedene Formen von Parallelität unterstützen, wie etwa Pipeline-Parallelität und/oder Komponentenparallelität. In manchen Ausführungsformen kann Parallelität durch Parsen des Programms basierend auf einer Grammatik und Identifizieren von Steuerflussbeziehungen zwischen Datenoperationen, die durch das Programm durchgeführt werden, erreicht werden. Insbesondere können Typen von Datenflussgraphenkomponenten gemäß der Grammatik als speziellen Datenoperationen (oder Gruppen von Datenoperationen) des Programms entsprechend identifiziert werden. Ein Datenflussgraph kann so erzeugt werden, dass er die identifizierten Komponenten umfasst, die mit Flüssen in einer Reihenfolge gemäß den identifizierten Steuerflussbeziehungen zwischen Datenoperationen miteinander verbunden sein können.

Description

  • HINTERGRUND
  • Prozedurale Programmierung ist ein Paradigma, bei dem Programme als eine Reihe von expliziten Befehlen geschrieben sind, die ein Prozessor in Reihenfolge ausführt. Teilsequenzen von Befehlen können gruppiert und nach Bedarf von anderen Teilen des Programms aufgerufen werden, und erweitern dadurch den Umfang von Befehlen, die der Rest des Programms ausführen kann. Diese Teilsequenzen werden in Abhängigkeit von der speziellen eingesetzten Programmiersprache manchmal als Subroutinen, Funktionen oder Teilprogramme bezeichnet.
  • Datenflussprogrammierung legt im Gegensatz dazu den Wert auf den Fluss von Daten durch eine Sequenz von Operationen durch Programme, genannt Datenflussgraphen, die Operationen definieren und definieren, wie Daten zwischen den Operationen fließen. Datenflussgraphen sind allgemein dazu konfiguriert, Datensätze von einer oder mehreren Quellen zu erhalten, Operationen an den Datensätzen in einer Sequenz durchzuführen und eine Art Ausgabe zu erzeugen. Typischerweise werden die Teile des Datenflussgraphen, die Operationen an Datensätzen durchführen, Komponenten genannt, und die Verbindungen zwischen den Komponenten werden Flüsse genannt.
  • Ein Unterschied zwischen Programmen, die in prozeduralen Sprachen geschrieben sind, und Datenflussgraphen besteht darin, dass in einem Datenflussgraphen mehrere Operationen gleichzeitig durchgeführt werden können, da an Datensätzen, die frühere Komponenten in dem Datenflussgraphen („Upstream“-Komponenten) erreichen, Operationen durchgeführt werden können, während andere Datensätze schon zu späteren Komponenten im Datenflussgraphen („Downstream“-Komponenten) weitergeführt wurden. Dieses Phänomen ist eine Art von Parallelität, manchmal Pipeline-Parallelität genannt. Auf diese Weise kann ein Datenflussgraph als eine Reihe von Arbeitern in einer Fertigungslinie angesehen werden, wobei die Komponenten die Arbeiter repräsentieren, wohingegen ein Programm, das in einer prozeduralen Sprache geschrieben ist, mehr wie ein einzelner Arbeiter ist, der eine Reihe von Aufgaben erledigt, wobei jede Aufgabe abgeschlossen wird, bevor die nächste begonnen wird.
  • KURZDARSTELLUNG
  • Gemäß manchen Aspekten ist ein nichtflüchtiges computerlesbares Medium bereitgestellt, das Anweisungen umfasst, die bei Ausführung durch mindestens einen Prozessor ein Verfahren zum Umwandeln eines Programms in einen Datenflussgraphen durchführen, wobei das Programm Datenoperationen und einen Steuerfluss umfasst, der eine Ausführungssequenz der Datenoperationen angibt, wobei das Verfahren umfasst: Analysieren des Programms unter Verwendung des mindestens einen Prozessors und Verwenden einer durch das mindestens eine computerlesbare Medium gespeicherten Grammatik, wobei das Analysieren Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms umfasst, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst, Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert, für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen, und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden, und Erzeugen, unter Verwendung des mindestens einen Prozessors, eines Datenflussgraphen, der die mehreren konfigurierten Datenflussgraphenkomponenten umfasst, und eines oder mehrerer Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
  • Gemäß manchen Aspekten ist ein computerimplementiertes Verfahren bereitgestellt zum automatischen Umwandeln eines Programms in einen Datenflussgraphen, wobei das Programm Datenoperationen und einen Steuerfluss umfasst, der eine Ausführungssequenz der Datenoperationen angibt, wobei das Verfahren umfasst: Analysieren des Programms unter Verwendung des mindestens einen Prozessors und Verwenden einer durch das mindestens eine computerlesbare Medium gespeicherten Grammatik, wobei das Analysieren Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms umfasst, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst, Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert, für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen, und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden, und Erzeugen, unter Verwendung des mindestens einen Prozessors, eines Datenflussgraphen, der die mehreren konfigurierten Datenflussgraphenkomponenten umfasst, und eines oder mehrerer Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
  • Gemäß manchen Aspekten ist ein System zum automatischen Umwandeln eines Programms in einen Datenflussgraphen bereitgestellt, wobei das Programm Datenoperationen und einen Steuerfluss umfasst, der eine Ausführungssequenz der Datenoperationen angibt, wobei das System umfasst: Mittel zum Analysieren des Programms unter Verwendung des mindestens einen Prozessors und Verwenden einer durch das mindestens eine computerlesbare Medium gespeicherten Grammatik, wobei das Analysieren Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms umfasst, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst, Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert, für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen, und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden, und Mittel zum Erzeugen eines Datenflussgraphen, wobei der Datenflussgraph die mehreren konfigurierten Datenflussgraphenkomponenten umfasst, und eines oder mehrerer Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
  • Die vorstehenden Einrichtungs- und Verfahrensausführungsformen können mit einer beliebigen geeigneten Kombination von Aspekten, Merkmalen und Handlungen implementiert werden, die vorstehend oder ausführlicher nachstehend beschrieben sind. Diese und andere Aspekte, Ausführungsformen und Merkmale der vorliegenden Lehren können vollständig aus der folgenden Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden werden.
  • Figurenliste
  • Verschiedene Aspekte und Ausführungsformen werden unter Bezugnahme auf die folgenden Figuren beschrieben. Es versteht sich, dass die Figuren nicht notwendigerweise maßstabsgetreu sind. In den Zeichnungen wird jede identische oder fast identische Komponente, die in verschiedenen Figuren veranschaulicht ist, durch eine gleiche Ziffer repräsentiert. Für Verdeutlichungszwecke ist möglicherweise nicht jede Komponente in jeder Zeichnung bezeichnet.
    • 1 stellt einen veranschaulichenden Datenflussgraphen gemäß einigen Ausführungsformen dar;
    • 2 stellt ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen dar;
    • 3 ist ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen;
    • 4A ist ein veranschaulichendes SAS-Programm gemäß einigen Ausführungsformen;
    • 4B stellt einen veranschaulichenden Datenflussgraphen dar, der gemäß dem in 4A gezeigten Programm erzeugt wird, gemäß einigen Ausführungsformen;
    • 4C stellt den veranschaulichenden Datenflussgraphen von 4B dar, bei dem Datenflussgraphenkomponenten mit entsprechenden Schritten des SAS-Programms annotiert sind, gemäß einigen Ausführungsformen;
    • 4D veranschaulicht Einzelheiten des Umwandelns eines ersten Schritts des in 4A gezeigten Programms in eine erste Komponente des in 4B gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen;
    • 4E veranschaulicht ein Beispiel für das Parsen eines Schritts des in 4A gezeigten Programms mit einer Grammatik, um den Schritt und Steuerflussbeziehungen zwischen dem Schritt und anderen Schritten zu identifizieren, eine entsprechende Datenflussgraphenkomponente auszuwählen und die ausgewählte Datenflusskomponente zu konfigurieren, gemäß einigen Ausführungsformen;
    • 4F veranschaulicht Einzelheiten des Umwandelns eines zweiten Schritts des in 4A gezeigten Programms in eine zweite Komponente des in 4B gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen; und
    • 5 veranschaulicht ein Beispiel für eine Rechensystemumgebung, in der Aspekte der Erfindung implementiert werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Erfinder haben erkannt und verstanden, dass die Funktionalität eines Datenverarbeitungssystems mittels eines computerausgeführten Tools erhöht werden kann, das Programme, die in einer prozeduralen Sprache geschrieben sind, in Komponenten umwandelt, die als ein Datenflussgraph ausgeführt werden können. Insbesondere kann das computerausgeführte Tool Typen von Datenflussgraphenkomponenten als Teilen eines Programms entsprechend identifizieren, sodass das Verhalten jedes Teils durch einen geeigneten Teil eines Datenflussgraphen reproduziert werden kann. In manchen Ausführungsformen kann der Graph, der aus einem Programm erzeugt wird, das in einer prozeduralen Programmiersprache geschrieben ist, verschiedene Formen von Parallelität unterstützen, wie etwa Pipeline-Parallelität und/oder Komponentenparallelität, obwohl dem in der prozeduralen Sprache geschriebenen Programm eine solche Parallelität möglicherweise fehlte. In manchen Ausführungsformen kann Parallelität durch Parsen des Programms basierend auf einer Grammatik und Identifizieren von Steuerflussbeziehungen zwischen Datenoperationen, die durch das Programm durchgeführt werden, erreicht werden. Ferner können Typen von Datenflussgraphenkomponenten unter Verwendung der Grammatik als speziellen Datenoperationen (oder Gruppen von Datenoperationen) des Programms entsprechend identifiziert werden. Ein Datenflussgraph kann so erzeugt werden, dass er die identifizierten Komponenten umfasst, die mit Flüssen in einer Reihenfolge gemäß den identifizierten Steuerflussbeziehungen zwischen Datenoperationen miteinander verbunden sein können.
  • Es kann eine Anzahl von Vorteilen für das Verarbeiten von Daten unter Verwendung von Datenflussprogrammierung im Vergleich zu prozeduraler Programmierung geben. Insbesondere, wie oben besprochen, kann ein Datenflussgraph natürlich eine parallele Verarbeitung über Pipeline-Parallelität bereitstellen, was Datenflussprogrammierung eine natürliche Wahl für die Verarbeitung von Datensätzen macht, bei denen spezielle Operationen an vielen Datenstücken wiederholt werden, wie etwa Datensätzen einer Datenmenge. Ein zusätzlicher Typ von Parallelität, der durch Datenflussgraphen geboten wird, ist Komponentenparallelität, die erzeugt wird, wenn unterschiedliche Zweige des Datenflussgraphen zur gleichen Zeit arbeiten. Beispielsweise können Datensätze von einer einzelnen Datenquelle entlang unterschiedlicher Flüsse ausgegeben werden und unterschiedliche Operationen können entlang der unterschiedlichen Zweige zur gleichen Zeit durchgeführt werden.
  • Trotz der Vorteile, die durch Datenflussgraphen geboten werden können, können manche Organisationen (z. B. Unternehmen) nichtsdestotrotz für die Datenverarbeitung auf Programme angewiesen sein, die in einer prozeduralen Sprache geschrieben sind. In manchen Fällen kann eine Organisation Datenflussgraphen teilweise verwenden, während sie weiterhin Programme nutzt, die in einer prozeduralen Sprache geschrieben sind. Dieser Ansatz beinhaltet typischerweise das Ausführen von Datenflussgraphen anstelle der ehemaligen Programme, die in der prozeduralen Sprache geschrieben sind, während Komponenten in den Datenflussgraphen eingeschlossen werden, die extern zu dem Datenflussgraphen einen Teil des Codes des Programms ausführen, das in der prozeduralen Sprache geschrieben ist. Auf diese Weise wird der Datenflussgraph als eine Art „Wrapper“ ausgeführt, und obwohl der Datenflussgraph letztlich das Programm ist, das durch das System ausgeführt wird, kann ein großer Teil der Funktionalität des Programms weiterhin extern durch die prozedurale Sprache ausgeführt werden.
  • Ein Nachteil dieses Ansatzes kann darin bestehen, dass die Sprache des Datenflussgraphen möglicherweise keine Fähigkeit hat, zu verstehen, was innerhalb einer Komponente passiert, die externen Code ausführt, der in einer prozeduralen Sprache geschrieben ist. Ein anderes nützliches Merkmal von Datenflussgraphen ist die Fähigkeit, die Datenherkunft durch einen einzelnen Datenflussgraphen oder durch mehrere Datenflussgraphen zu verfolgen, um ein Verständnis dafür zu erlangen, woher die Daten kommen und wohin sie innerhalb der Operationen einer Organisation gehen. Eine Komponente, die externen Code ausführt, kann jedoch bezüglich der Datenherkunft einer „Blackbox“ zu der Datenflussgraphensoftware ähneln, da die Datenflussgraphensoftware möglicherweise nicht in der Lage ist, die Datenherkunft durch die Komponente zu verfolgen, da die Operationen, die die Komponente durchführt, der Software nicht bekannt sind. Darüber hinaus kann dieser Ansatz Pipeline-Parallelität verhindern, da der externe Code möglicherweise vollständig ausgeführt werden muss, bevor Downstream-Komponenten ausgeführt werden können.
  • Wie oben besprochen, hat der Erfinder erkannt und verstanden, dass die Funktionalität eines Datenverarbeitungssystems mittels eines computerausgeführten Tools erhöht werden kann, das Programme, die in einer prozeduralen Sprache geschrieben sind, in Komponenten umwandelt, die als ein Datenflussgraph ausgeführt werden können. Diese Techniken können angewendet werden, um nativen Datenflussgraphencode überall im erzeugten Datenflussgraphen zu erzeugen, sodass die Datenherkunft durch den Datenflussgraphen verfolgt werden kann. Die natürlichen Effizienzvorteile von Datenflussgraphen, wie etwa Komponentenparallelität und/oder Pipeline-Parallelität, wie oben besprochen, können in einem erzeugten Datenflussgraphen natürlich bereitgestellt werden. Der Erfinder hat ferner Techniken zum Implementieren eines solchen Tools basierend auf einer Grammatik erkannt und verstanden, wie ferner nachstehend besprochen.
  • Gemäß manchen Ausführungsformen kann ein System, das ein in einer prozeduralen Sprache geschriebenes Programm in einen Datenflussgraphen umwandelt, einen Parser zum Parsen des Textes des Programms ausführen. In manchen Ausführungsformen kann ein solches Parsen Operationen identifizieren, die durch das Programm an Daten durchgeführt werden, und kann ferner den Typ solcher Operationen identifizieren. Basierend auf dem Typ der durch das Programm durchgeführten Datenoperation kann ein spezieller Typ von Datenflussgraphenkomponente, die in der Lage ist, die gleiche Operation durchzuführen, identifiziert werden, indem eine Datenstruktur identifiziert wird, die konstruiert wurde, um spezielle Operationen mit speziellen Datenflussgraphenkomponenten zu assoziieren. Falls beispielsweise Sprache in dem Programm durch den Parser als ein Zusammenführen von Daten durchführend identifiziert wird, kann die Datenstruktur eine Datenflussgraphenkomponente identifizieren, die Flüsse von Datensätzen als einer Zusammenführungsoperation entsprechend vereint. Ein solcher Parser kann in manchen Ausführungsformen auch eine Ausführungsreihenfolge von Datenoperationen, wie durch das Programm ausgeführt, bestimmen. Wenn ein Datenflussgraph basierend auf dem Programm erzeugt wird, können Flüsse zwischen Komponenten, die Datenoperationen repräsentieren, erzeugt werden und die Komponenten über die Flüsse in einer Reihenfolge basierend auf der bestimmten Ausführungsreihenfolge miteinander verbunden werden.
  • Nachfolgend sind ausführlichere Beschreibungen verschiedener Konzepte bezüglich zu, und Ausführungsformen von, Techniken zum automatischen Umwandeln von Programmen, die in prozeduralen Sprachen geschrieben sind, in Datenflussgraphen beschrieben. Es versteht sich, dass die hierin beschriebenen verschiedenen Aspekte auf irgendeine von zahlreichen Weisen implementiert werden können. Beispiele für spezifische Implementierungen werden hierin rein zur Veranschaulichung bereitgestellt. Zusätzlich können die verschiedenen in den nachstehenden Ausführungsformen beschriebenen Aspekte alleine oder in einer beliebigen Kombination verwendet werden und sind nicht auf die ausdrücklich hierin beschriebenen Kombinationen beschränkt.
  • 1 stellt einen veranschaulichenden Datenflussgraphen gemäß einigen Ausführungsformen dar. Der Datenflussgraph 100 ist in 1 derart dargestellt, dass er manche der oben beschriebenen Merkmale eines Datenflussgraphen veranschaulicht. Ein Datenflussgraph ist ein Programm, das als ein visueller Fluss von Datensätzen durch Komponenten und Flüsse repräsentiert werden kann. Die Komponenten, wie hierin bezeichnet, sind Teile des Datenflussgraphen, die Operationen an Datensätzen durchführen, und die Verbindungen zwischen den Komponenten werden hierin als Flüsse bezeichnet.
  • Allgemein gesagt wird ein Datenflussgraph durch Anordnen von Komponenten und Flüssen in einer grafischen Benutzeroberfläche erzeugt. 1 veranschaulicht ein Beispiel für eine solche Ansicht eines Datenflussgraphen, wobei die rechteckigen Kästchen Komponenten sind und die Linien zwischen ihnen jeweils einen Fluss repräsentieren. Datenflussgraphen sind eine zweckdienliche Weise zum Schreiben von Programmen, die an einem Datensatz operieren, da der Fluss von Daten visualisiert werden kann, wenn der Datenflussgraph angesehen wird. Sobald ein Datenfluss zur Ausführung bereit ist, kann es durch ein geeignetes Rechensystem kompiliert und dann ausgeführt werden.
  • In dem Beispiel von 1 werden drei Dateneingaben 102, 104 und 106 auf eine Weise aufgerufen, manipuliert und kombiniert, die nachstehend beschrieben wird, um zwei Datenausgaben 122 und 124 zu erzeugen. Eine Dateneingabe kann von verschiedenen Quellen bereitgestellt werden, einschließlich von einer Datei, die in einem computerlesbaren Medium gespeichert ist, von einer Sammlung von Dateien oder von einer Datenbanktabelle. In dem Beispiel von 1 sind die Dateneingaben 102, 104 und 106 auf eine Weise dargestellt, die häufig verwendet wird, um einzelne Datendateien darzustellen, die in einem computerlesbaren Medium gespeichert sind.
  • In dem Beispiel von 1 werden Eingabedaten 102 gelesen und operiert eine Filterkomponente 108 an diesen, die Datensätze ausgibt, die einen speziellen logischen Ausdruck erfüllen. Falls beispielsweise die Eingabedaten 102 ein Datenfeld beinhalteten, das einen Ländercode spezifiziert, könnte das Filter 108 dazu konfiguriert sein, nur jene Datensätze auszugeben, die einen Wert dieses Datenfeldes von „US“ aufweisen. Datensätze, die vom Filter 108 ausgegeben werden, werden in eine Sortierungskomponente 110 eingegeben, die die Datensätze in eine Reihenfolge sortiert, die durch einen ausgewählten Sortier-„Schlüssel‟ angegeben wird, der ein oder mehrere Datenfelder identifiziert, gemäß denen die Datensätze geordnet werden sollen. Die sortierten Datensätze werden zu der Vereinigungskomponente 120 ausgegeben.
  • Zusätzlich werden die Eingabedaten 104 gelesen und operiert eine Transformationskomponente 112 an diesen, die die Eingabedatensätze gemäß einem Transformationscode manipuliert, der in der Transformationskomponente 112 gespeichert ist (oder diese anderweitig darauf zugreift). Eine Transformation kann zum Beispiel Datenfelder für jeden Datensatz hinzufügen oder entfernen und/oder kann Werte von Datenfeldern beim Erzeugen von Ausgabedaten manipulieren. Es ist anzumerken, dass im Beispiel von 1 die Filterkomponente 108 und die Transformationskomponente 112 Komponentenparallelität aufweisen. Das heißt, das Filter 108 kann an Datensätzen aus den Eingabedaten 102 zur gleichen Zeit operieren, während die Transformation 112 an Datensätzen aus den Eingabedaten 104 operiert. Die Komponentenparallelität kann in manchen Fällen ausgenutzt werden, indem die Filter- 108 und die Transformationskomponente 112 unter Verwendung unterschiedlicher Prozessoren und in manchen Fällen unter Verwendung unterschiedlicher Rechensysteme ausgeführt werden.
  • In dem Beispiel von 1 empfängt eine Vereinigungskomponente 116 Datensätze, die von der Transformation 112 und von der Filterkomponente 114 (die, wie oben besprochen, in Bezug auf das Filter 108 operiert) ausgegeben werden. Die Vereinigungskomponente kann dazu konfiguriert sein, eine einzelne Menge von Datensätzen aus zwei Mengen von Datensätzen zu erzeugen, indem sie Datensätze von jeder Menge gemäß einem Schlüssel abgleicht, der ein Datenfeld von jeder Menge von Eingabedatensätzen identifiziert. Transformationscode, der in der Vereinigungskomponente 116 gespeichert ist (oder diese anderweitig darauf zugreift), kann ferner vorgeben, wie ausgehende Datensätze von der Vereinigungskomponente basierend auf Datenfeldwerten zu konstruieren sind, die in übereinstimmenden Datensätzen von den beiden Mengen von Eingabedatensätzen enthalten sind.
  • Die Datensätze, die von der Vereinigungskomponente 116 ausgegeben werden, werden durch eine Replizierungskomponente 118 repliziert, um zwei identische Mengen von Datensätzen zu erzeugen. Eine dieser Mengen von Datensätzen wird als Ausgabedaten 124 gespeichert, wohingegen die andere Menge mit den Datensätzen vereint wird, die von der Sortierung 110 ausgegeben werden, und das Ergebnis wird als Ausgabedaten 122 gespeichert.
  • Allgemein sind Komponenten in einem Datenflussgraphen in gewissem Maße konfiguriert, ihre Funktion zu definieren. In dem Fall der Filter- und Transformationskomponenten in dem Beispiel von 1 werden die Komponenten beispielsweise durch Transformationscode konfiguriert, der vorgibt, wie die Datensätze ausgewählt bzw. transformiert werden. In manchen Fällen kann eine Transformationskomponente auch ein Ausgabedatensatzformat definieren, das sich vom Datensatzformat von Eingabedatensätzen unterscheidet. Die Sortierungskomponente kann durch Spezifizieren eines Sortierschlüssels und in manchen Fällen durch Spezifizieren, wie die Sortierung durchzuführen ist (z. B. aufsteigende gegenüber absteigender Werte), konfiguriert werden. In jedem dieser Fälle wird eine Art von Konfiguration angewendet, um zu beschreiben, wie die Komponente an Datensätzen operieren sollte. Die Daten, die eine solche Konfiguration beschreiben, können hierin kollektiv als „Konfigurationsdaten“ bezeichnet werden. Transformationscode, Schlüsselwerte, Datensatzformate usw. sind daher jeweils eine Art von Konfigurationsdaten. Die Replizierungskomponente in dem Beispiel von 1 kann, zumindest in manchen Fällen, ohne definierte Konfigurationsdaten funktionieren, da die Komponente dazu ausgebildet ist, nur einen Datenfluss zu replizieren, und ist möglicherweise nicht anderweitig konfigurierbar.
  • 2 stellt ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen dar. Wie oben besprochen, kann gemäß manchen Aspekten der vorliegenden Anmeldung die Funktionalität eines Datenverarbeitungssystems mittels eines computerausgeführten Tools erhöht werden, das Programme, die in einer prozeduralen Sprache geschrieben sind, in Komponenten umwandelt, die als ein Datenflussgraph ausgeführt werden können. Das Verfahren 200 veranschaulicht, wie ein solches Tool betrieben werden kann, um eine solche Umwandlung durch ein Umwandlungsprogramm 201 in einen Datenflussgraphen 208 durchzuführen.
  • In dem Beispiel von 2 ist ein Programm 201, das in einer prozeduralen Sprache geschrieben ist, als Eingabe in eine Umwandlungs-Engine 205 bereitgestellt, die eine oder mehrere Rechenvorrichtungen umfasst, die das oben besprochene Tool ausführen. Das Programm 201 kann in einer beliebigen prozeduralen Sprache geschrieben sein, da die hierin beschriebenen Techniken nicht auf irgendeine spezielle Sprache beschränkt sind. Beispiele für geeignete Sprachen beinhalten SAS (Statistical Analysis System), BASIC, Fortran, Java, Mathematica, MATLAB, Pascal, Perl, Python, R, Unix-Shell und Visual Basic.
  • Während der Ausführung durch die Umwandlungs-Engine kann das Tool eine vordefinierte Grammatik 206 nutzen. Die Grammatik 206 kann verschiedene Definitionen bereitstellen, auf die das durch die Umwandlungs-Engine 205 ausgeführte Tool angewiesen ist, die dem Tool ermöglichen, das Programm 201 zu parsen und den Datenflussgraphen 208 zu erzeugen. Diese durch die Grammatik 206 bereitgestellten Definitionen können dem Tool angeben, wie Wörter und Symbole im Programm 201 zu interpretieren sind, wie Datenoperationen (oder Gruppen von Datenoperationen) im Programm als Funktionalität entsprechend eines speziellen Typs von Datenflussgraphenkomponente aufweisend zu identifizieren sind, wie Datenflussgraphenkomponenten zu erzeugen sind, wie Datenoperationen (oder Gruppen von Datenoperationen) im Programm als bezüglich Konfigurationsdaten für einen identifizierten Typ von Datenflussgraphenkomponente zu identifizieren sind, wie Datenflussgraphenkomponenten, die Datenoperationen im Programm entsprechen, zu konfigurieren sind und/oder wie der Steuerfluss von Datenoperationen im Programm zu bestimmen ist.
  • Wie hierin verwendet, bezieht sich „Steuerfluss“ auf eine Reihenfolge, konsistent mit dem Programm, in der individuelle Datenoperationen durchgeführt werden. Beispielsweise kann ein Programm Operationen C, D und E durchführen und kann derart konfiguriert sein, dass die Operation C entweder vor Operation D oder Operation E durchgeführt wird. Diese Abhängigkeit von der relativen Reihenfolge der Operationen C, D und E ist ein Beispiel eines Steuerflusses.
  • In dem Beispiel von 2 können Daten, die durch das Tool erzeugt werden, das das Programm parst, in einem Katalog 207 gespeichert werden, der eine beliebige geeignete Datenstruktur umfassen kann, in der Aspekte, wie etwa bestimmte Steuerflussbeziehungen von Datenoperationen im Programm, gespeichert werden können. Die Umwandlungs-Engine kann während anschließender Parsing-Operationen auf den Katalog zugreifen, wie ferner nachstehend beschrieben.
  • Wie hierin darauf Bezug genommen, bezeichnet eine „Datenoperation“ für ein Programm einen Teil des Programms, der bei seiner Ausführung die Ausführungsumgebung des Programms modifiziert. Datenoperationen können beispielsweise die Modifikation des Werts einer oder mehrerer Variablen oder anderer Daten, die in der Ausführungsumgebung existieren, beinhalten. Es versteht sich, dass die Modifikation eines Werts selbst eine oder mehrere Datenoperationen umfassen kann. Wenn beispielsweise ein Befehl in einem prozeduralen Programm den Wert einer Variable auf einen Wert gleich dem Ergebnis einer Berechnung setzt, kann jeder Teil der Berechnung, sowie das Endergebnis des Speicherns des berechneten Werts in der Variable, eine separate Datenoperation repräsentieren. Demnach kann zumindest in manchen Fällen ein einzelner Befehl des Programms mehrere Datenoperationen repräsentieren, da verschiedene Änderungen an der Ausführungsumgebung während der Ausführung des Befehls auftreten.
  • Gemäß manchen Ausführungsformen kann die Umwandlungs-Engine 205 eine oder mehrere Komponenten und einen oder mehrere Flüsse eines Datenflussgraphen 208 als einer Sequenz von Datenoperationen im Programm 201 entsprechend erzeugen. In manchen Fällen kann das Erzeugen einer Komponente des Datenflussgraphen 208 Identifizieren eines Typs von Komponente aus mehreren verfügbaren Datenflussgraphenkomponenten beinhalten. In manchen Fällen kann das Erzeugen einer Komponente des Datenflussgraphen 208 auch Erzeugen von Konfigurationsdaten für eine identifizierte Komponente beinhalten, was Definieren eines Parameters oder anderer konfigurierbarer Aspekte der Komponente basierend auf Datenoperationen im Programm umfassen kann. Beispielsweise können Instanzen eines in 2 gezeigten veranschaulichenden Datenflussgraphen-Transformationscodes 209 durch das Tool erzeugt werden, das durch die Umwandlungs-Engine ausgeführt wird und mit der identifizierten Komponente assoziiert ist.
  • Gemäß manchen Ausführungsformen kann das durch die Umwandlungs-Engine 205 ausgeführte Tool Flüsse zwischen identifizierten Komponenten des Datenflussgraphen 208 basierend auf bestimmten Steuerflussbeziehungen von Datenoperationen im Programm erzeugen. Wenn das Tool beispielsweise eine erste und zweite Komponente für spezielle Datenoperationen (oder Mengen von Datenoperationen) identifiziert, kann das Tool auch identifizieren, dass die mit der ersten Komponente assoziierte(n) Datenoperation(en) früher im Steuerfluss auftreten als die mit der zweiten Komponente assoziierte(n) Datenoperation(en). Infolgedessen kann das Tool einen oder mehrere Flüsse erzeugen, die die erste und zweite Komponente verbinden, sodass die zweite Komponente downstream (nachgelagert) im Datenflussgraphen von der ersten Komponente ausgeführt wird (das heißt, Daten fließen aus der ersten Komponente früher in der Sequenz von Komponenten als Daten, die in die zweite Komponente fließen).
  • Das Nettoergebnis des Prozesses, der durch die Umwandlungs-Engine 205 basierend auf der Grammatik 206 durchgeführt wird, besteht darin, den Datenflussgraphen 208 zu erzeugen, der eine Datenflussgraphenrepräsentation des Programms 201 ist. Diese Beziehung zwischen einem Programm und einem äquivalenten Datenflussgraphen ist in 2 und in nachfolgenden Zeichnungen durch einen Zickzack-Pfeil veranschaulicht.
  • 3 ist ein Flussdiagramm eines Verfahrens zum automatischen Umwandeln eines Programms, das in einer prozeduralen Sprache geschrieben ist, in einen Datenflussgraphen gemäß einigen Ausführungsformen. Das Verfahren 300 ist ein veranschaulichender Prozess, bei dem ein Programm 301, das in einer prozeduralen Sprache geschrieben ist, automatisch in einen Datenflussgraphen umgewandelt wird. Das Verfahren 300 kann beispielsweise durch das Tool durchgeführt werden, das durch die in 2 gezeigte und vorstehend besprochene Umwandlungs-Engine 205 ausgeführt wird.
  • Das Verfahren 300 beginnt mit Handlung 302, bei der das Programm 301 basierend auf einer Grammatik 303 in Schritte aufgeteilt wird. Ein Tool, das das Verfahren 300 durchführt, kann, wie mit dem Beispiel der Grammatik 206 in 2, auf eine Grammatik 303 angewiesen sein, die unter anderem angibt, wie Wörter und Symbole in einem Programm zu interpretieren sind und wie Datenoperationen (oder Gruppen von Datenoperationen) im Programm als Funktionalität entsprechend einem speziellen Typ von Datenflussgraphenkomponente aufweisend zu identifizieren sind. Insbesondere kann das Tool das Programm 301 unter Verwendung der Grammatik 303 parsen, um eine oder mehrere Datenoperationen bei Handlung 302 zu identifizieren. Jede Gruppe einer oder mehrerer Datenoperationen kann als ein „Schritt“ bezeichnet werden, sodass die Datenoperationen des Programms in eine Sequenz von Schritten aufgeteilt sind, wobei jeder Schritt eine oder mehrere durch das Programm durchgeführte Datenoperationen enthält.
  • Bei Handlung 304 kann das Tool, das das Verfahren 300 ausführt, Informationen, die die erkannten Schritte identifizieren, in einem Katalog 305 speichern oder anderweitig aufzeichnen. Der bei Handlung 304 erzeugte Katalog kann Schritte des Programms und die Steuerflussbeziehungen der Schritte identifizieren und kann ferner die eine oder die mehreren Datenoperationen des Programms 301, die jedem Schritt entsprechen, identifizieren.
  • Bei Handlung 306 wählt das Tool, das das Verfahren 300 ausführt, Typen von Datenflussgraphenkomponenten aus, die den identifizierten Schritten des Programms entsprechen (und die möglicherweise bei Handlung 304 im Katalog gespeichert wurden). Der ausgewählte Typ von Datenflussgraphenkomponente kann aus Parsen der Datenoperationen eines identifizierten Schritts unter Verwendung der Grammatik 303 und Bestimmen, basierend auf dem Parsen, welcher Typ von Datenflussgraphenkomponente den Datenoperationen des Schritts entspricht, basieren. Wie oben besprochen, kann die Grammatik 303 dazu konfiguriert sein, spezielle Typen von Datenflussgraphenkomponenten mit spezieller Sprache im Programm in Beziehung zu setzen, sodass eine Datenflussgraphenkomponente, die die gleiche Funktion wie ein Schritt durchführt, in dem die Sprache erscheint, zweckmäßig erzeugt werden kann.
  • In manchen Ausführungsformen kann eine vorkonfigurierte Bibliothek von Datenflussgraphenkomponententypen dem Tool zur Verfügung stehen, sodass das Identifizieren einer Datenflussgraphenkomponente Auswählen eines der Komponententypen aus der Bibliothek umfasst (z. B. eine Komponente des Typs „Sortieren“ oder des Typs „Filtern“, wie mit Bezug auf 1 besprochen). In manchen Ausführungsformen kann eine Instanz einer Datenflussgraphenkomponente des ausgewählten Komponententyps erzeugt werden, die eine entsprechende Funktion wie ein Schritt des Programms aufweist.
  • Bei Handlung 308 kann das Tool, das das Verfahren 300 ausführt, bei Handlung 306 ausgewählte Datenflussgraphenkomponenten konfigurieren. Handlung 308 kann dementsprechend Erzeugen von Konfigurationsdaten für eine oder mehrere der bei Handlung 306 ausgewählten Komponenten umfassen. Das Tool kann auf eine Grammatik zugreifen, um zu bestimmen, wie eine gegebene Datenflussgraphenkomponente basierend auf den Datenoperationen zu konfigurieren ist, die in dem entsprechenden Schritt des Programms vorhanden sind. Wie oben besprochen, werden Daten, die die Konfiguration einer Datenflussgraphenkomponente beschreiben, hierin als „Konfigurationsdaten“ bezeichnet. Handlung 308 kann dadurch Erzeugen von Werten für Betriebsparameter einer Komponente und/oder Erzeugen eines Transformationscodes für eine Komponente umfassen. Es versteht sich, dass manche der bei Handlung 306 identifizierten Komponenten möglicherweise keine Konfigurationsdaten erfordern, und infolgedessen werden Konfigurationsdaten möglicherweise nicht für alle der identifizierten Komponenten erzeugt.
  • Bei Handlung 310 kann das Tool, das das Verfahren 300 ausführt, einen Datenflussgraphen erzeugen, der die identifizierten Komponenten umfasst, die, wenn zutreffend, durch die Handlung 308 konfiguriert werden (z. B. die erzeugten Konfigurationsdaten umfassend), und mit Flüssen, die die Komponenten in einer Sequenz gemäß den identifizierten Steuerflussbeziehungen der Schritte des Programms verbinden. In manchen Ausführungsformen kann Handlung 310 Aufzeichnen der schon identifizierten und konfigurierten Komponenten zusammen mit erzeugten Flüssen, die die Komponenten verbinden, in ein geeignetes computerlesbares Speicherungsmedium umfassen. Beispielsweise kann ein Datenflussgraph als eine Datendatei gespeichert werden, die Daten beinhaltet, die Datenflussgraphenkomponenten, Flüsse und Konfigurationsdaten für die Komponenten beschreiben oder anderweitig identifizieren, und Handlung 310 kann Aufzeichnen der Datendatei umfassen. In manchen Ausführungsformen kann eine solche Datendatei so angeordnet sein, dass sie durch ein anderes Programm vor der Ausführung kompiliert wird. In manchen Ausführungsformen kann der erzeugte Datenflussgraph als eine ausführbare Datendatei erzeugt werden, in welchem Fall die Handlung 310 einen Schritt des Kompilierens des Datenflussgraphen gemäß den identifizierten Datenflussgraphenkomponenten, Flüssen und Konfigurationsdaten für die Komponenten umfassen kann. Handlung 310 kann Erzeugen von Flüssen umfassen, sodass diese die Datenflussgraphenkomponenten in einer Reihenfolge gemäß den durch den Katalog identifizierten Steuerflussbeziehungen verbinden.
  • Gemäß manchen Ausführungsformen kann das Programm 301 eine oder mehrere Prozeduren umfassen (die auch als Routinen, Funktionen, Subroutinen oder Makros bezeichnet werden können) und das Tool, das das Verfahren 300 ausführt, kann solche Prozeduren beim Parsen des Programms unter Verwendung einer Grammatik identifizieren. Beispielsweise kann das Tool einen oder mehrere Prozeduraufrufe identifizieren und/oder kann Prozedurdefinitionen erkennen. In manchen Ausführungsformen kann das Tool, das das Verfahren 300 ausführt, eine wiederverwendbare Gruppe von Datenflussgraphenkomponenten erzeugen, manchmal als ein „Teilgraph“ bezeichnet, um die Datenoperationen einer identifizierten Prozedur zu repräsentieren. In manchen Fällen kann dieser Teilgraph in einer Datendatei gespeichert sein, auf die der erzeugte Datenflussgraph zugreifen kann. Dies kann dem erzeugten Datenflussgraphen ermöglichen, die gleiche Menge von Komponenten auf eine ähnliche Weise wiederzuverwenden, wie das Programm 301 wiederholte Prozeduraufrufe machen und dadurch den gleichen Codeabschnitt wiederverwenden kann. Der Teilgraph kann einen gesamten identifizierten Schritt des Programms repräsentieren oder kann stattdessen einen Teil eines identifizierten Schritts des Programms repräsentieren.
  • In Fällen, bei denen das Tool, das das Verfahren 300 ausführt, einen Teilgraph erzeugt, um eine Prozedur des Programms 301 zu repräsentieren, kann die Prozedur einen oder mehrere Werte als Eingaben in die Prozedur nutzen. In solchen Fällen kann der erzeugte Teilgraph parametrisiert sein, sodass sich das Verhalten der Datenflussgraphenkomponenten im Teilgraphen basierend auf dem Wert der Teilgraphenparameter anders verhält. Beispielsweise können Zweige von Komponenten im Teilgraphen basierend auf dem Wert einer Komponente aktiviert oder deaktiviert sein.
  • Gemäß manchen Ausführungsformen kann das Programm 301 eine oder mehrere globale Variablen umfassen oder anderweitig basierend auf diesen arbeiten, die Werte sind, die in der Ausführungsumgebung definiert sind und die die Weise ändern können, mit der Datenoperationen im Programm durchgeführt werden. In solchen Fällen kann das Tool, das das Verfahren 300 ausführt, einen oder mehrere Datenflussgraphenparameter erzeugen, die Parameter sind, die auf der Datenflussgraphenebene gesetzt sind und auf deren Werte eine oder mehrere Komponenten des Datenflussgraphen zugreifen können, um das Verhalten der Komponente vorzugeben. Als ein veranschaulichendes Beispiel kann das Programm 301 derart geschrieben sein, eine globale Variable mit einem Wert eines Ländercodes zu initialisieren und eine anschließende Verarbeitung von Daten in Abhängigkeit von dem Wert durchzuführen. Ein erzeugter Datenflussgraph kann mit einem Graphenparameter zum Definieren des Ländercodes definiert sein und Komponenten des Datenflussgraphen können diese Parameterdefinition in Transformationscode oder anderweitig nutzen.
  • Gemäß manchen Ausführungsformen kann das Tool, das das Verfahren 300 ausführt, Kommentare im Programm 301 identifizieren. Kommentare sind Abschnitte eines Programms, die nicht ausgeführt werden, und werden typischerweise unter Verwendung eines Trennzeichens am Anfang oder am Anfang und am Ende des Kommentarabschnitts identifiziert. In manchen Fällen kann das Tool, das das Verfahren 300 ausführt, solche Kommentare im Programm identifizieren und diese Kommentare an relevante Stellen im erzeugten Datenflussgraphen kopieren. Kommentare können beispielsweise durch das Tool als mit speziellen Datenoperationen im Programm basierend auf der Nähe des Kommentartexts zu den Datenoperationen in Beziehung stehend identifiziert werden. Solche Kommentare können in Transformationscode einer Komponente entsprechend diesen Datenoperationen platziert werden, sodass jegliche Informationen in diesen Kommentaren in dem resultierenden Datenflussgraphen bewahrt werden.
  • Gemäß manchen Ausführungsformen kann das Tool, das das Verfahren 300 ausführt, Leerraum im Programm 301 identifizieren und beim Erzeugen des Datenflussgraphen bewahren. Wie hierin darauf Bezug genommen, bezieht sich „Leerraum“ auf irgendein Zeichen oder Reihe von Zeichen, das/die horizontalen oder vertikalen Raum in der Typographie im Programm repräsentiert, wobei das üblichste Beispiel ein „Leerzeichen“-Zeichen ist. In manchen Fällen kann das Tool, das das Verfahren 300 ausführt, solchen Leerraum in einer Datenoperation des Programms identifizieren und das Vorhandensein des Leerraums beim Erzeugen von Transformationscode (oder anderer Konfigurationsdaten) für die Datenoperation in einer Komponente des Datenflussgraphen bewahren.
  • 4A-4F stellen ein veranschaulichendes Beispiel zum Umwandeln eines Programms, das in der prozeduralen Sprache SAS geschrieben ist, in einen Datenflussgraphen bereit, gemäß einigen Ausführungsformen. 4A stellt ein veranschaulichendes SAS-Programm dar, das eine Reihe von Operationen an zwei Eingabedatendateien durchführt und eine Ausgabedatendatei erzeugt. Wie oben besprochen, kann ein computerausgeführtes Tool ausgeführt werden, um das veranschaulichte Programm in Komponenten umzuwandeln, die als ein Datenflussgraph ausgeführt werden können.
  • Gemäß manchen Ausführungsformen, wenn ausgeführt und ein Programm 400 als Eingabe bereitgestellt, kann das Tool vier Schritte des Programms identifizieren, mit 401a, 401b, 401c und 401d bezeichnet. Wie oben mit Bezug auf Handlung 302 von 3 besprochen, kann ein Tool auf eine Grammatik zugreifen, um Datenoperationen oder Gruppen von Datenoperationen zu identifizieren, die Schritten des Programms entsprechen. In dem veranschaulichenden Programm 400 sind diese Schritte dazu konfiguriert, die folgenden Aktionen durchzuführen. Schritt 401a liest eine Datendatei mit dem Namen „DATEI A“, parst ihren Inhalt in drei Datenfelder und erzeugt ein zusätzliches Datenfeld (AUFTRAG_VOLLER _NAME) aus den Inhalten der drei Datenfelder. Schritt 401b liest eine Datendatei mit dem Namen „DATEI_B“, parst ihren Inhalt in drei Datenfelder und erzeugt ein zusätzliches Datenfeld (AUFTRAG_VOLLER_NAME) aus den Inhalten der drei Datenfelder. Schritt 401c führt die Ergebnisse der Schritte 401a und 401b zusammen. Schritt 401d filtert jegliche Datensätze heraus, die keinen speziellen Wert („US“) in den ersten beiden Zeichen der Datenfeldes „AUFTRAG_VOLLER_NAME“ aufweisen.
  • Gemäß manchen Ausführungsformen kann das ausgeführte Tool die Inhalte dieser Teile des Programms 400 als Operationen, die durch Komponenten eines Datenflussgraphen durchgeführt werden können, entsprechend identifizieren. Insbesondere kann das Tool die Inhalte der Teile des Codes bezeichnet mit 401a und 401b als jeweils eine Transformation einer gelesenen Datendatei durchführend erkennen. Ferner kann das Tool die Inhalte des Teils des Codes bezeichnet mit 401c als eine Vereinigungsoperation durchführend erkennen, und die Inhalte des Teils des Codes bezeichnet mit 401d als eine Filteroperation durchführend erkennen. Darüber hinaus kann das Tool Steuerflussbeziehungen dieser Schritte identifizieren, indem es erkennt, dass Schritt 401c das Ergebnis der Schritte 401a und 401b nutzt („MERGE DATENMENGE_A DATENMENGE_B“) und dass Schritt 401d das Ergebnis des Schritts 401c nutzt („SET DATENMENGE C“). Infolgedessen können die in 4B gezeigten Komponenten und Flüsse identifiziert werden. Das Tool kann auch geeignete Konfigurationsdaten für die Komponenten 406, 408, 410 und 412 erzeugen. Als ein finaler Schritt kann das Tool dann einen Datenflussgraphen erzeugen, der wie in 4B gezeigt angeordnet ist und der die erzeugten Konfigurationsdaten beinhaltet.
  • 4C veranschaulicht 4B mit Annotationen, die mit den Komponenten 406, 408, 410 und 412 assoziiert sind und jeweilige Schritte des in 4A gezeigten Programms 400 zeigen. Code in einer prozeduralen Sprache, der einer Komponente des Datenflussgraphen 450 äquivalent ist, ist mit der Komponente in 4C mit einem grauen Zickzack-Pfeil verbunden gezeigt. Es versteht sich daher, dass die annotierten Abschnitte des Programms 400 nicht wortwörtlich durch jeweilige Komponenten im Datenflussgraphen 450 gespeichert oder anderweitig ausgeführt werden. Stattdessen führen die Komponenten des Datenflussgraphen 450 Funktionalität durch, die zu den assoziierten Abschnitten des Programms äquivalent sind.
  • 4D veranschaulicht Einzelheiten des Umwandelns eines ersten Schritts des in 4A gezeigten Programms in eine erste Komponente des in den 4B-4C gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen. Um den Prozess des Konfigurierens einer Komponente durch Erzeugen von Konfigurationsdaten für die Komponente durch das Tool zusätzlich zu veranschaulichen, zeigt 4D Schritt 401a von 4A und veranschaulicht, wie der resultierende Abschnitt eines Datenflussgraphen erzeugt werden kann.
  • In dem Beispiel von 4D wird ein Fluss 405 erzeugt, um die identifizierte Transformationskomponente 406 mit der Eingabedatei DATEI_A zu verbinden, infolge der Datenoperation „INFILE DATEI_A“ im Abschnitt 401a des Programms, der angibt, dass das Programm DATEI_A lesen soll. Zusätzlich ist die Transformationskomponente 406 dazu konfiguriert, eine Sequenz von Bytes aus der Eingabedatei zu lesen, wie durch die Datenoperation „INPUT AUFTRAG_NAME $10 EXT $4 ÄNDERUNGS_FLAG $1“ des Programms vorgegeben, die angibt, dass zehn Bytes als ein Wert für das Datenfeld AUFTRAG_NAME zu lesen sind, die nächsten vier Bytes als ein Wert für das Datenfeld EXT zu lesen sind und das nächste Byte als ein Wert für das Datenfeld ÄNDERUNGS_FLAG zu lesen ist. Die Komponente 406 kann dazu konfiguriert sein, damit fortzufahren, Bytes aus der Eingabe DATEI A zu lesen, unter der Annahme, dass es zusätzliche Bytes gibt; auf diese Weise wird jeder Block von 15 Bytes in der Eingabedatei ein Teil sukzessiver Datensätze.
  • Zusätzlich ist die Komponente 406 mit dem Transformationscode 451 konfiguriert, ein zusätzliches Ausgabedatenfeld durch Verketten der drei Feldwerte, die aus der Eingabedatei gelesen werden, mit Unterstrich-Zeichen zu erzeugen, wie durch die Datenoperation vorgegeben, die AUFTRAG_VOLLER_NAME im Programmabschnitt 401a definiert. Die Komponente 406 kann dazu konfiguriert sein, Datensätze auf dem Fluss 407 gemäß dem veranschaulichten Ausgabedatensatzformat 452 zu erzeugen. Das Tool, das den Datenflussgraphen erzeugt, kann das Datensatzformat 452 durch Interpretieren des Programmabschnitts 401a unter Verwendung einer Grammatik erzeugen, um die Typen und Längen der Datenfelder zu identifizieren, die durch diesen Schritt des Programms erzeugt werden. In diesem Fall können die Längen der Felder „AUFTRAG NAME“, „EXT“ und „ÄNDERUNGS_FLAG“ aus der Weise gefolgert werden, mit der sie aus der Eingabedatei gelesen werden, und die Länge des Feldes „AUFTRAG_VOLLER _NAME‟ kann infolge des Verkettens der insgesamt 15 Zeichen der drei anderen Felder mit zwei Unterstrich-Zeichen gefolgert werden.
  • 4E-4F veranschaulichen Einzelheiten des Umwandelns eines zweiten Schritts des in 4A gezeigten Programms in eine zweite Komponente des in den 4B-4C gezeigten Datenflussgraphen, gemäß einigen Ausführungsformen. 4E reproduziert den Inhalt des Schritts 401c von 4A und stellt drei unterschiedliche Parsing-Operationen des Schritts unter Verwendung einer Grammatik 480 dar.
  • In einer ersten Instanz in 4E werden die veranschaulichten Datenoperationen des Programms 481 unter Verwendung der Grammatik 480 geparst, um diese Datenoperationen als einen Schritt zu identifizieren, nämlich den oben beschriebenen Schritt 401c. Das Tool kann unter Verwendung der Grammatik 480 die Datenoperationen 481 als dem Schritt entsprechend basierend auf der hervorgehobenen Sprache erkennen, die a) die Datenoperationen, die mit „DATA..“ beginnen und mit „...RUN;‟ enden, als einen Schritt definierend identifiziert; und b) erkennt, dass der Schritt von „DATENMENGE_A“ und „DATENMENGE_B“ abhängt und dass dies daher eine spezielle Steuerflussbeziehung zwischen diesem Schritt und anderen Teilen des Programms impliziert.
  • In einer zweiten Instanz in 4E kann das Tool die veranschaulichten Datenoperationen des Programms 482 (das jetzt möglicherweise als einem Schritt 401c entsprechend identifiziert wurde) unter Verwendung der Grammatik 480 parsen, um einen Typ von Datenflussgraphenkomponente zu bestimmen, die der Funktion des Schritts im Programm entspricht. In dem Beispiel von 4E kann das hervorgehobene Schlüsselwort „MERGE“ unter Verwendung der Grammatik als einer Datenflussgraphenkomponente des Typs „VEREINEN“ entsprechend identifiziert werden.
  • In einer dritten Instanz in 4E kann das Tool die veranschaulichten Datenoperationen des Programms 482 (das jetzt möglicherweise als einem Schritt 401c entsprechend identifiziert wurde) unter Verwendung der Grammatik 480 parsen, um zu bestimmen, wie eine Instanz des Typs von Datenflusskomponente, die in der oben beschriebenen zweiten Instanz zum Parsen ausgewählt wird, zu konfigurieren ist. In dem Beispiel von 4E kann die hervorgehobene Sprache „BY AUFTRAG_NAME;“ unter Verwendung der Grammatik als angebend identifiziert werden, dass die Instanz der Datenflussgraphenkomponente „VEREINEN“ konfiguriert sein sollte, ein Feld namens „AUFTRAG_NAME“ als ein Schlüsselfeld für die Vereinigungsoperation zu verwenden.
  • Dementsprechend stellt 4E ein Beispiel bereit, wie eine Grammatik 480 diese drei unterschiedlichen Typen von Informationen bezüglich eines Teils eines Programms durch Parsen dieses Teils erzeugen kann. Obwohl das Parsen oben hinsichtlich drei separater Instanzen des Parsens beschrieben ist, ist zu verstehen, dass das Tool die Grammatik 480 nutzen kann, um den Teil des Programms in einer beliebigen Anzahl von Weisen zu parsen, die jeweils beliebige geeignete Teile des Teils des Programms in einer beliebigen Reihenfolge parsen, und dass das Obenstehende lediglich als ein veranschaulichender Prozess bereitgestellt ist.
  • Angesichts des oben beschriebenen Parsens von Schritt 401c veranschaulicht 4F, wie der resultierende Abschnitt eines Datenflussgraphen erzeugt werden kann. In dem Beispiel von 4F stellen Flüsse 407 und 409 Datensätze mit den veranschaulichten Eingabedatensatzformaten von den beiden Upstream-Transformationskomponenten 406 und 408 bereit. Beim Parsen des Schritts 401c des Programms kann das Tool identifizieren, dass eine Vereinigungskomponente als ein Ergebnis des Befehls „MERGE“ im Programm zweckmäßig ist, und kann ferner Konfigurationsdaten für die Vereinigungskomponente erzeugen, die einen Vereinigungsschlüssel 462 von AUFTRAG NAME als ein Feld zum Verwenden für das Abgleichen eingehender Datensätze für die Vereinigung spezifizieren. Infolge der Vereinigung können die einzigen Datensätze, die von der Komponente 410 entlang des Flusses 411 ausgegeben werden, jene sein, für die Datensätze mit dem gleichen Wert für AUFTRAG NAME in beiden eingehenden Mengen von Datensätzen von den Transformationskomponenten vorhanden waren.
  • 5 veranschaulicht ein Beispiel für eine geeignete Rechensystemumgebung 500, in der die hierin beschriebene Technologie implementiert werden kann. Die Rechensystemumgebung 500 ist nur ein Beispiel für eine geeignete Rechenumgebung und soll keinerlei Beschränkung des Verwendungsbereichs oder der Funktionalität der hierin beschriebenen Technologie suggerieren. Auch soll die Rechenumgebung 500 nicht so interpretiert werden, dass sie irgendeine Abhängigkeit von oder Anforderung in Bezug auf irgendeine oder eine Kombination von Komponenten aufweist, die in der beispielhaften Betriebsumgebung 500 veranschaulicht wird.
  • Die hierin beschriebene Technologie ist mit zahlreichen anderen Allzweck- oder Spezial-Rechensystemumgebungen oder -konfigurationen betriebsfähig. Zu Beispielen für allgemein bekannte Rechensysteme, Umgebungen und/oder Konfigurationen, die zur Verwendung mit der hierin beschriebenen Technologie geeignet sein können, zählen, ohne darauf beschränkt zu sein, Personal Computer, Server-Computer, Handheld- oder Laptop-Vorrichtungen, Multiprozessorsysteme, Systeme auf Mikroprozessorbasis, Set-Top-Boxen, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputer, Mainframe-Computer, verteilte Rechenumgebungen, die beliebige der oben genannten Systeme oder Vorrichtungen enthalten, und dergleichen.
  • Die Rechenumgebung kann computerausführbare Anweisungen, wie etwa Programmmodule, ausführen. Im Allgemeinen enthalten Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die spezielle Aufgaben durchführen oder spezielle abstrakte Datentypen implementieren. Die hierin beschriebene Technologie kann ebenfalls in verteilten Rechenumgebungen umgesetzt werden, wobei Aufgaben durch entfernte Verarbeitungsvorrichtungen durchgeführt werden, die über ein Kommunikationsnetzwerk verknüpft sind. In einer verteilten Rechenumgebung können sich Programmmodule sowohl in lokalen als auch in entfernten Computerspeicherungsmedien, einschließlich Speicher-Speicherungsvorrichtungen, befinden.
  • Unter Bezugnahme auf 5 beinhaltet ein beispielhaftes System zum Implementieren der hierin beschriebenen Technologie eine Allzweck-Rechenvorrichtung in Form eines Computers 510. Zu den Komponenten des Computers 510 können, aber ohne darauf beschränkt zu sein, eine Verarbeitungseinheit 520, ein Systemspeicher 530 und ein Systembus 521 zählen, der verschiedene Systemkomponenten, einschließlich des Systemspeichers, mit der Verarbeitungseinheit 520 koppelt. Der Systembus 521 kann ein beliebiger von mehreren Typen von Busstrukturen sein, einschließlich eines Speicherbusses oder einer Speichersteuerung, eines Peripheriebusses und eines lokalen Busses, die eine beliebige von einer Vielfalt von Busarchitekturen verwenden. Beispielhaft und nicht beschränkend enthalten solche Architekturen einen ISA(Industry Standard Architecture)-Bus, einen MCA(Micro Channel Architecture)-Bus, einen EISA(Enhanced ISA)-Bus, einen lokalen VESA(Video Electronics Standards Association)-Bus und einen PCI(Peripheral Component Interconnect)-Bus, der auch als Mezzanin-Bus bekannt ist.
  • Der Computer 510 enthält typischerweise eine Vielfalt von computerlesbaren Medien. Die computerlesbaren Medien können beliebige verfügbare Medien sein, auf die vom Computer 510 zugegriffen werden kann, und zu ihnen zählen sowohl flüchtige als auch nichtflüchtige Medien, auswechselbare als auch nicht auswechselbare Medien. Beispielhaft und nicht beschränkend können computerlesbare Medien Computerspeicherungsmedien und Kommunikationsmedien umfassen. Zu Computerspeicherungsmedien zählen flüchtige und nichtflüchtige, auswechselbare und nicht auswechselbare Medien, die in einem beliebigen Verfahren oder einer beliebigen Technologie zum Speichern von Informationen implementiert sind, wie etwa computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen oder anderen Daten. Zu Computerspeicherungsmedien zählen unter anderem RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, DVD (Digital Versatile Disk) oder eine andere optische Plattenspeicherung, Magnetkassetten, Magnetband, Magnetplattenspeicherung oder andere magnetische Speicherungsvorrichtungen oder ein beliebiges anderes Medium, das verwendet werden kann, um die gewünschten Informationen zu speichern und auf das vom Computer 510 zugegriffen werden kann. Kommunikationsmedien verkörpern typischerweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten auf einem modulierten Datensignal, wie etwa einer Trägerwelle oder einem anderen Transportmechanismus, und beinhalten beliebige Informationsübermittlungsmedien. Mit dem Begriff „moduliertes Datensignal“ ist ein Signal gemeint, bei dem eine oder mehrere seiner Charakteristiken auf solch eine Art und Weise gesetzt oder geändert sind, um Informationen im Signal zu codieren. Beispielhaft und nicht beschränkend beinhalten Kommunikationsmedien drahtgebundene Medien, wie etwa ein drahtgebundenes Netzwerk oder eine direkt verdrahtete Verbindung, und drahtlose Medien, wie etwa Akustik-, HF-, Infrarot- oder andere drahtlose Medien. Kombinationen beliebiger der oben Genannten sollten ebenfalls im Umfang der computerlesbaren Medien eingeschlossen sein.
  • Das Systemspeicher 530 beinhaltet Computerspeicherungsmedien in Form von flüchtigem und/oder nichtflüchtigem Speicher, wie etwa Nurlesespeicher (ROM) 531 und Direktzugriffsspeicher (RAM) 532. Ein BIOS (Basic Input/Output System) 533, das die Basisroutinen enthält, die das Transferieren von Informationen zwischen Elementen innerhalb des Computers 510 unterstützen, wie etwa während des Hochfahrens, wird typischerweise im ROM 531 gespeichert. Der RAM 532 enthält typischerweise Daten und/oder Programmmodule, auf die unmittelbar von der Verarbeitungseinheit 520 zugegriffen werden kann und/oder die gerade von ihr betrieben werden. Beispielhaft und nicht beschränkend veranschaulicht die 5 ein Betriebssystem 534, Anwendungsprogramme 535, andere Programmmodule 536 und Programmdaten 537.
  • Der Computer 510 kann auch andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computerspeicherungsmedien enthalten. Nur beispielhaft veranschaulicht 5 ein Festplattenlaufwerk 541, das aus nicht auswechselbaren, nichtflüchtigen magnetischen Medien liest bzw. darauf schreibt, ein Flash-Laufwerk 551, das aus einem auswechselbaren, nichtflüchtigen Speicher 552, wie etwa Flash-Speicher, liest bzw. darauf schreibt, und ein optisches Plattenlaufwerk 555, das auf eine auswechselbare, nichtflüchtige optische Platte 556, wie etwa eine CD-ROM oder andere optische Medien, liest bzw. darauf schreibt. Andere auswechselbare/nicht auswechselbare, flüchtige/nichtflüchtige Computerspeicherungsmedien, die in der beispielhaften Betriebsumgebung verwendet werden können, beinhalten unter anderem Magnetbandkassetten, Flash-Speicher-Karten, Digital Versatile Disks, digitale Videobänder, Solid-State-RAM, Solid-State-ROM und dergleichen. Das Festplattenlaufwerk 541 ist typischerweise über eine nicht auswechselbare Speicherschnittstelle, wie etwa eine Schnittstelle 540, mit dem Systembus 521 verbunden, und das Magnetplattenlaufwerk 551 und das optische Plattenlaufwerk 555 sind typischerweise über eine auswechselbare Speicherschnittstelle, wie etwa eine Schnittstelle 550, mit dem Systembus 521 verbunden.
  • Die oben besprochenen und in 5 veranschaulichten Laufwerke und ihre assoziierten Computerspeicherungsmedien stellen Speicherung für computerlesbare Anweisungen, Datenstrukturen, Programmmodule und andere Daten für den Computer 510 bereit. In 5 wird zum Beispiel das Festplattenlaufwerk 541 so veranschaulicht, dass es das Betriebssystem 544, die Anwendungsprogramme 545, die anderen Programmmodule 546 und die Programmdaten 547 speichert. Es sei angemerkt, dass diese Komponenten entweder die gleichen wie das Betriebssystem 534, die Anwendungsprogramme 535, die anderen Programmmodule 536 und die Programmdaten 537 sein oder sich von ihnen unterscheiden können. Das Betriebssystem 544, die Anwendungsprogramme 545, die anderen Programmmodule 546 und die Programmdaten 547 sind hier mit anderen Nummerierungen versehen, um zu veranschaulichen, dass sie wenigstens unterschiedliche Kopien sind. Ein Benutzer kann über Eingabevorrichtungen, wie etwa eine Tastatur 562 und eine Zeigevorrichtung 561, die üblicherweise als eine Maus, ein Trackball oder ein Touchpad bezeichnet wird, Befehle und Informationen in den Computer 510 eingeben. Andere Eingabevorrichtungen (nicht gezeigt) können ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel, einen Scanner oder dergleichen beinhalten. Diese und andere Eingabevorrichtungen sind mit der Verarbeitungseinheit 520 häufig über eine Benutzereingabeschnittstelle 560 verbunden, die mit dem Systembus gekoppelt ist, können jedoch über andere Schnittstellen und Busstrukturen verbunden sein, wie etwa einen Parallelport, einen Game-Port oder einen Universal Serial Bus (USB). Ein Monitor 591 oder ein anderer Typ von Anzeigevorrichtung ist ebenfalls mit dem Systembus 521 über eine Schnittstelle, wie etwa eine Videoschnittstelle 590, verbunden. Zusätzlich zum Monitor können Computer auch andere periphere Ausgabevorrichtungen enthalten, wie etwa Lautsprecher 597 und einen Drucker 596, die über eine periphere Ausgabeschnittstelle 595 verbunden sein können.
  • Der Computer 510 kann in einer vernetzten Umgebung unter Verwendung logischer Verbindungen mit einem oder mehreren entfernten Computern betrieben werden, wie etwa einem entfernten Computer 580. Der entfernte Computer 580 kann ein Personal Computer, ein Server, ein Router, ein Netzwerk-PC, eine Peer-Vorrichtung oder ein anderer üblicher Netzwerkknoten sein und enthält typischerweise viele oder alle der oben in Bezug auf den Computer 510 beschriebenen Elemente, obwohl in der 5 nur eine Speicher-Speicherungsvorrichtung 581 veranschaulicht worden ist. Die logischen Verbindungen, die in der 5 dargestellt sind, beinhalten ein Lokalnetzwerk (LAN) 571 und ein Weitbereichsnetzwerk (WAN) 573, können jedoch auch andere Netzwerke beinhalten. Solche Networking-Umgebungen sind in Büros, unternehmensweiten Computernetzwerken, Intranets und dem Internet allgemein üblich.
  • Bei Verwendung in einer LAN-Networking-Umgebung ist der Computer 510 mit dem LAN 571 über eine Netzwerkschnittstelle oder einen Netzwerkadapter 570 verbunden. Bei Verwendung in einer WAN-Networking-Umgebung enthält der Computer 510 typischerweise ein Modem 572 oder andere Mittel zum Aufbau von Kommunikationen über das WAN 573, wie etwa das Internet. Das Modem 572, das intern oder extern sein kann, kann mit dem Systembus 521 über die Benutzereingabeschnittstelle 560 oder einen anderen zweckmäßigen Mechanismus verbunden sein. In einer vernetzten Umgebung können Programmmodule, die in Bezug auf den Computer 510 dargestellt sind, oder Teile davon, in der entfernten Speicher-Speicherungsvorrichtung gespeichert sein. Beispielhaft und nicht beschränkend veranschaulicht 5 entfernte Anwendungsprogramme 585 als in der Speichervorrichtung 581 befindlich. Es versteht sich, dass die Netzwerkverbindungen beispielhaft gezeigt sind und andere Mittel zum Aufbau eines Kommunikationslinks zwischen den Computern verwendet werden können.
  • Nachdem somit mehrere Aspekte mindestens einer Ausführungsform dieser Erfindung beschrieben worden sind, versteht es sich, dass Fachleuten verschiedene Abänderungen, Modifikationen und Verbesserungen in den Sinn kommen werden.
  • Solche Abänderungen, Modifikationen und Verbesserungen sollen Teil dieser Offenbarung sein und sollen innerhalb des Gedankens und des Schutzbereichs der Erfindung liegen. Obgleich Vorteile der vorliegenden Erfindung angegeben werden, versteht es sich des Weiteren, dass nicht jede Ausführungsform der hierin beschriebenen Technologie jeden beschriebenen Vorteil beinhalten wird. Einige Ausführungsformen implementieren möglicherweise nicht alle Merkmale, die hier als vorteilhaft beschrieben sind, und in einigen Beispielen können eines oder mehrere der beschriebenen Merkmale implementiert sein, um weitere Ausführungsformen zu erreichen. Dementsprechend sind die vorhergehende Beschreibung und die Zeichnungen lediglich beispielhaft.
  • Die oben beschriebenen Ausführungsformen der hier beschriebenen Technologie können auf irgendeine von zahlreichen Weisen implementiert sein. Zum Beispiel können die Ausführungsformen unter Verwendung von Hardware, Software oder einer Kombination daraus implementiert sein. Wenn sie als Software implementiert sind, kann der Softwarecode auf einem beliebigen geeigneten Prozessor oder einer Sammlung von Prozessoren ausgeführt werden, egal ob sie in einem einzelnen Computer oder verteilt auf mehrere Computer bereitgestellt werden. Solche Prozessoren können als integrierte Schaltungen implementiert sein, mit einem oder mehreren Prozessoren in einer integrierten Schaltungskomponente, einschließlich handelsüblichen integrierten Schaltungskomponenten, die im Fachgebiet durch Benennungen bekannt sind, wie zum Beispiel CPU-Chips, GPU-Chips, Mikroprozessor, Mikrocontroller oder Coprozessor. Alternativ kann ein Prozessor in einer kundenspezifischen Schaltungsanordnung implementiert sein, wie etwa einer ASIC, oder einer teilweise kundenspezifischen Schaltungsanordnung, die sich aus dem Konfigurieren einer programmierbaren Logikvorrichtung ergibt. Als noch eine weitere Alternative kann ein Prozessor ein Abschnitt einer größeren Schaltung oder einer Halbleitervorrichtung sein, sei er handelsüblich, teilweise kundenspezifisch oder kundenspezifisch. Als ein spezifisches Beispiel weisen einige handelsübliche Mikroprozessoren mehrere Kerne auf, sodass einer oder eine Teilmenge dieser Kerne einen Prozessor bilden kann. Allerdings kann ein Prozessor unter Verwendung von Schaltungsanordnungen in einem beliebigen geeigneten Format implementiert sein.
  • Des Weiteren versteht es sich, dass ein Computer in einer beliebigen einer Anzahl von Formen umgesetzt sein kann, wie etwa als ein Rack-Computer, ein Desktop-Computer, ein Laptop-Computer oder ein Tablet-Computer. Zusätzlich kann ein Computer in einer Vorrichtung eingebettet sein, die im Allgemeinen nicht als ein Computer betrachtet wird, jedoch geeignete Verarbeitungsfähigkeiten aufweist, einschließlich eines Personal Digital Assistant (PDA), eines Smartphones oder einer beliebigen anderen geeigneten portablen oder festen elektronischen Vorrichtung.
  • Auch kann ein Computer eine oder mehrere Eingabe- und Ausgabevorrichtungen aufweisen. Diese Vorrichtungen können unter anderem dazu verwendet werden, eine Benutzerschnittstelle darzustellen. Zu Beispielen für Ausgabevorrichtungen, die verwendet werden können, um eine Benutzerschnittstelle bereitzustellen, zählen Drucker oder Anzeigebildschirme für eine visuelle Darstellung der Ausgabe und Lautsprecher oder andere tonerzeugende Vorrichtungen für die hörbare Darstellung der Ausgabe. Zu Beispielen für Eingabevorrichtungen, die für eine Benutzerschnittstelle verwendet werden können, zählen Tastaturen und Zeigevorrichtungen, wie etwa Mäuse, Touchpads und Digitalisiertablets. Als ein anderes Beispiel kann ein Computer Eingangsinformationen über Spracherkennung oder in einem anderen hörbaren Format empfangen.
  • Solche Computer können durch ein oder mehrere Netzwerke in einer beliebigen geeigneten Form miteinander verbunden sein, einschließlich als ein Lokalnetzwerk oder ein Weitbereichsnetzwerk, wie etwa ein Unternehmensnetzwerk oder das Internet. Solche Netzwerke können auf einer beliebigen geeigneten Technologie basieren und können gemäß einem beliebigen geeigneten Protokoll arbeiten und können drahtlose Netzwerke, drahtgebundene Netzwerke oder Glasfasernetzwerke enthalten.
  • Die verschiedenen Verfahren und Prozesse, die hierin umrissen werden, können ebenfalls als Software codiert sein, die auf einem oder mehreren Prozessoren ausführbar ist, die ein beliebiges einer Vielfalt von Betriebssystemen oder Plattformen einsetzen. Zusätzlich kann solche Software unter Verwendung einer beliebigen aus einer Anzahl geeigneter Programmiersprachen und/oder Programmier- oder Scripting-Tools geschrieben werden, und kann auch als ausführbarer Maschinensprachencode oder Zwischencode kompiliert werden, der auf einem Framework oder einer virtuellen Maschine ausgeführt wird.
  • In dieser Hinsicht kann die Erfindung als ein computerlesbares Speicherungsmedium (oder mehrere computerlesbare Medien) (z. B. ein Computerspeicher, eine oder mehrere Disketten, Compact Disks (CDs), optische Platten, Digital Video Disks (DVDs), Magnetbänder, Flash-Speicher, Schaltungskonfigurationen in feldprogrammierbaren Gate-Arrays oder anderen Halbleitervorrichtungen oder einem anderen greifbaren Computerspeicherungsmedium) umgesetzt werden, das mit einem oder mehreren Programmen codiert wird, die, wenn sie auf einem oder mehreren Computern oder anderen Prozessoren ausgeführt werden, die Verfahren durchführen, die die verschiedenen Ausführungsformen der oben besprochenen Erfindung implementieren. Wie sich aus den vorher genannten Beispielen ergibt, kann ein computerlesbares Speicherungsmedium Informationen für eine ausreichende Zeit halten, um computerausführbare Anweisungen in einer nichtflüchtigen Form bereitzustellen. Solch ein computerlesbares Speicherungsmedium oder solche computerlesbaren Speicherungsmedien können transportierbar sein, sodass das Programm oder die Programme, die darauf gespeichert sind, auf einen oder mehrere unterschiedliche Computer oder andere Prozessoren geladen werden können, um verschiedene Aspekte der vorliegenden Erfindung zu implementieren, wie oben besprochen. Wie er hierin verwendet wird, umfasst der Begriff „computerlesbares Speicherungsmedium“ nur ein nichtflüchtiges computerlesbares Medium, das als ein Fabrikat (d. h. ein Herstellungsartikel) oder eine Maschine angesehen werden kann. Alternativ oder zusätzlich kann die Erfindung als ein anderes computerlesbares Medium als ein computerlesbares Speicherungsmedium umgesetzt werden, wie etwa als ein Propagationssignal.
  • Die Begriffe „Programm“ oder „Software“, wenn hierin verwendet, werden im generischen Sinne verwendet, um sich auf irgendeinen Typ von Computercode oder einen Satz von computerausführbaren Anweisungen zu beziehen, die dazu eingesetzt werden können, einen Computer oder einen anderen Prozessor dazu zu programmieren, verschiedene Aspekte der vorliegenden Erfindung zu implementieren, wie oben besprochen. Zusätzlich versteht es sich, dass gemäß einem Aspekt dieser Ausführungsform sich ein oder mehrere Computerprogramme, die, wenn sie ausgeführt werden, Verfahren der vorliegenden Erfindung durchführen, nicht auf einem einzelnen Computer oder Prozessor befinden müssen, sondern auf eine modulare Weise auf einer Anzahl von unterschiedlichen Computern oder Prozessoren verteilt sein können, um verschiedene Aspekte der vorliegenden Erfindung zu implementieren.
  • Computerausführbare Anweisungen können in vielen Formen vorliegen, wie etwa Programmmodule, die durch einen oder mehrere Computer oder andere Vorrichtungen ausgeführt werden. Im Allgemeinen enthalten Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die spezielle Aufgaben durchführen oder spezielle abstrakte Datentypen implementieren. Typischerweise kann die Funktionalität der Programmmodule kombiniert oder verteilt werden, wie es in verschiedenen Ausführungsformen erwünscht ist.
  • Datenstrukturen können ebenfalls in einer beliebigen geeigneten Form in computerlesbaren Medien gespeichert werden. Der Einfachheit der Veranschaulichung halber können Datenstrukturen so gezeigt werden, dass sie Felder aufweisen, die über die Position in der Datenstruktur in Beziehung stehen. Solche Beziehungen können gleichermaßen erreicht werden, indem Speicherung für die Felder mit Positionen in einem computerlesbaren Medium zugeordnet wird, die die Beziehung zwischen den Feldern vermittelt. Allerdings kann ein beliebiger geeigneter Mechanismus verwendet werden, um eine Beziehung zwischen Informationen in Feldern einer Datenstruktur festzulegen, einschließlich durch Verwendung von Zeigern, Tags oder anderen Mechanismen, die die Beziehung zwischen Datenelementen festlegen.
  • Verschiedene Aspekte der vorliegenden Erfindung können allein, in Kombination oder in einer Vielfalt von Anordnungen, die in den vorher beschriebenen Ausführungsformen nicht besonders besprochen werden, verwendet werden, und daher ist sie in ihrer Anwendung nicht auf die Details und die Anordnung von Komponenten beschränkt, die in der vorherigen Beschreibung dargelegt oder in den Zeichnungen veranschaulicht werden. Zum Beispiel können in einer Ausführungsform beschriebene Aspekte auf eine beliebige Art und Weise mit Aspekten kombiniert werden, die in anderen Ausführungsformen beschrieben werden.
  • Die Erfindung kann auch als ein Verfahren umgesetzt werden, für das ein Beispiel bereitgestellt worden ist. Die als Teil des Verfahrens durchgeführten Handlungen können in einer beliebigen geeigneten Weise geordnet sein. Dementsprechend können Ausführungsformen aufgebaut werden, in denen Handlungen in einer anderen Reihenfolge als veranschaulicht durchgeführt werden, was beinhalten kann, einige Handlungen zeitgleich durchzuführen, auch wenn sie in den veranschaulichenden Ausführungsformen als sequenzielle Handlungen gezeigt werden.
  • Des Weiteren werden einige Handlungen als von einem „Benutzer“ durchgeführt beschrieben. Es versteht sich, dass ein „Benutzer“ nicht ein einzelnes Individuum sein muss und dass in einigen Ausführungsformen Handlungen, die einem „Benutzer“ zugeschrieben werden können, von einem Team von Individuen und/oder einem Individuum in Kombination mit computergestützten Werkzeugen oder anderen Mechanismen durchgeführt werden können.
  • Die Verwendung von Ordnungsbegriffen wie „erster“, „zweiter“, „dritter“ usw. in den Ansprüchen, um ein Anspruchselement zu modifizieren, bedeutet nicht von selbst irgendeine Priorität, einen Vorrang oder eine Reihenfolge eines Anspruchselements vor einem anderen oder die zeitliche Reihenfolge, in der Handlungen eines Verfahrens durchgeführt werden, sondern sie werden lediglich als Bezeichner verwendet, um ein Anspruchselement mit einem bestimmten Namen von einem anderen Element mit einem gleichen Namen (mit Ausnahme der Verwendung des Ordnungsbegriffs) zu unterscheiden, um die Anspruchselemente zu unterscheiden.
  • Auch dient die hier verwendete Phraseologie und Terminologie der Beschreibung und sollte nicht als einschränkend betrachtet werden. Die Verwendung hierin von „einschließlich“, „umfassend“ oder „aufweisend“, „enthaltend“, „beinhaltend“ und Varianten davon soll die danach aufgeführten Elemente und ihre Äquivalente ebenso wie zusätzliche Elemente einschließen.

Claims (21)

  1. Nichtflüchtiges computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung durch mindestens einen Prozessor ein Verfahren zum Umwandeln eines Programms in einen Datenflussgraphen durchführen, wobei das Programm Datenoperationen und einen Steuerfluss, der eine Ausführungssequenz der Datenoperationen angibt, umfasst, wobei das Verfahren Folgendes umfasst: Analysieren des Programms unter Verwendung des mindestens einen Prozessors und unter Verwendung einer Grammatik, die durch das mindestens eine computerlesbare Medium gespeichert wird, wobei das Analysieren Folgendes umfasst: Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst; Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert; für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen; und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden; und Erzeugen, unter Verwendung des mindestens einen Prozessors, eines Datenflussgraphen, der Folgendes umfasst: die mehreren konfigurierten Datenflussgraphenkomponenten; und einen oder mehrere Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
  2. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei es sich bei dem Programm um ein SAS(Statistical Analysis System)-Programm handelt.
  3. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei das Analysieren des Programms ferner Identifizieren eines im Programm definierten Makros umfasst, und wobei das Konfigurieren der mehreren Datenflussgraphenkomponenten ferner Erzeugen mindestens eines Parameters, der basierend auf der Makrodefinition gesetzt wird, umfasst.
  4. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei das Programm Kommentare umfasst und wobei das Konfigurieren der mehreren Datenflussgraphenkomponenten derartiges Konfigurieren zumindest mancher der mehreren Datenflussgraphenkomponenten, dass sie die Kommentare enthalten, umfasst.
  5. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei der erzeugte Datenflussgraph eine erste und zweite Gruppe von Datenflussgraphenkomponenten umfasst, die konfiguriert sind, parallel zueinander ausgeführt zu werden.
  6. Nichtflüchtiges computerlesbares Medium nach Anspruch 5, wobei: das Programm eine erste Gruppe einer oder mehrerer der mehreren Datenoperationen und eine zweite Gruppe einer oder mehrerer der mehreren Datenoperationen umfasst, die erste Gruppe von Datenoperationen und die zweite Gruppe von Datenoperationen nicht voneinander abhängig sind, die erste Gruppe von Datenflussgraphenkomponenten die erste Gruppe von Datenoperationen durchführt, und die zweite Gruppe von Datenflussgraphenkomponenten die zweite Gruppe von Datenoperationen durchführt.
  7. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei das Programm Leerraum zwischen Symbolen des Programms umfasst und wobei das Konfigurieren der mehreren Datenflussgraphenkomponenten Leerraum zwischen Teilen erzeugter Anweisungen entsprechend den Symbolen bewahrt.
  8. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei das Analysieren des Programms ferner Identifizieren einer im Programm definierten Subroutine umfasst, und wobei das Verfahren ferner Erzeugen mindestens eines Teilgraphen basierend auf der Subroutinendefinition umfasst.
  9. Nichtflüchtiges computerlesbares Medium nach Anspruch 8, wobei die Subroutine mit einem oder mehreren Eingabewerten definiert ist, deren Werte das ausführbare Verhalten der Subroutine ändern, und wobei der erzeugte mindestens eine Teilgraph mit mindestens einem Teilgraphenparameter erzeugt wird, der dem einen oder den mehreren Eingabewerten der Subroutine entspricht.
  10. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei jeder Schritt der mehreren Schritte mehrere Datenoperationen des Programms umfasst.
  11. Computerimplementiertes Verfahren zum automatischen Umwandeln eines Programms in einen Datenflussgraphen, wobei das Programm Datenoperationen und einen Steuerfluss, der eine Ausführungssequenz der Datenoperationen angibt, umfasst, wobei das Verfahren Folgendes umfasst: Analysieren des Programms unter Verwendung des mindestens einen Prozessors und unter Verwendung einer Grammatik, die durch das mindestens eine computerlesbare Medium gespeichert wird, wobei das Analysieren Folgendes umfasst: Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst; Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert; für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen; und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden; und Erzeugen, unter Verwendung des mindestens einen Prozessors, eines Datenflussgraphen, der Folgendes umfasst: die mehreren konfigurierten Datenflussgraphenkomponenten; und einen oder mehrere Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
  12. Verfahren nach Anspruch 11, wobei es sich bei dem Programm um ein SAS(Statistical Analysis System)-Programm handelt.
  13. Verfahren nach Anspruch 11, wobei das Analysieren des Programms ferner Identifizieren eines im Programm definierten Makros umfasst, und wobei das Konfigurieren der mehreren Datenflussgraphenkomponenten ferner Erzeugen mindestens eines Parameters, der basierend auf der Makrodefinition gesetzt wird, umfasst.
  14. Verfahren nach Anspruch 11, wobei das Programm Kommentare umfasst und wobei das Konfigurieren der mehreren Datenflussgraphenkomponenten derartiges Konfigurieren zumindest mancher der mehreren Datenflussgraphenkomponenten, dass sie die Kommentare enthalten, umfasst.
  15. Verfahren nach Anspruch 11, wobei der erzeugte Datenflussgraph eine erste und zweite Gruppe von Datenflussgraphenkomponenten umfasst, die konfiguriert sind, parallel zueinander ausgeführt zu werden.
  16. Verfahren nach Anspruch 15, wobei: das Programm eine erste Gruppe einer oder mehrerer der mehreren Datenoperationen und eine zweite Gruppe einer oder mehrerer der mehreren Datenoperationen umfasst, die erste Gruppe von Datenoperationen und die zweite Gruppe von Datenoperationen nicht voneinander abhängig sind, die erste Gruppe von Datenflussgraphenkomponenten die erste Gruppe von Datenoperationen durchführt, und die zweite Gruppe von Datenflussgraphenkomponenten die zweite Gruppe von Datenoperationen durchführt.
  17. Verfahren nach Anspruch 11, wobei das Programm Leerraum zwischen Symbolen des Programms umfasst und wobei das Konfigurieren der mehreren Datenflussgraphenkomponenten Leerraum zwischen Teilen erzeugter Anweisungen entsprechend den Symbolen bewahrt.
  18. Verfahren nach Anspruch 11, wobei das Analysieren des Programms ferner Identifizieren einer im Programm definierten Subroutine umfasst, und wobei das Verfahren ferner Erzeugen mindestens eines Teilgraphen basierend auf der Subroutinendefinition umfasst.
  19. Verfahren nach Anspruch 18, wobei die Subroutine mit einem oder mehreren Eingabewerten definiert ist, deren Werte das ausführbare Verhalten der Subroutine ändern, und wobei der erzeugte mindestens eine Teilgraph mit mindestens einem Teilgraphenparameter erzeugt wird, der dem einen oder den mehreren Eingabewerten der Subroutine entspricht.
  20. Verfahren nach Anspruch 11, wobei jeder Schritt der mehreren Schritte mehrere Datenoperationen des Programms umfasst.
  21. System zum automatischen Umwandeln eines Programms in einen Datenflussgraphen, wobei das Programm Datenoperationen und einen Steuerfluss, der eine Ausführungssequenz der Datenoperationen angibt, umfasst, wobei das System Folgendes umfasst: Mittel zum Analysieren des Programms unter Verwendung des mindestens einen Prozessors und unter Verwendung einer Grammatik, die durch das mindestens eine computerlesbare Medium gespeichert wird, wobei das Analysieren Folgendes umfasst: Identifizieren, basierend auf der Grammatik, mehrerer sequenzieller Schritte des Programms, wobei jeder Schritt der mehreren Schritte eine oder mehrere Datenoperationen des Programms umfasst; Erzeugen eines Katalogs, der Steuerflussbeziehungen zwischen Schritten der mehreren identifizierten Schritte des Programms speichert; für jeden der identifizierten mehreren Schritte des Programms, basierend auf Datenoperationen des Schritts und basierend auf der Grammatik, Identifizieren eines mehrerer Datenflussgraphenkomponententypen als dem Schritt entsprechend, wodurch mehrere Datenflussgraphenkomponenten identifiziert werden, die jeweils einem jeweiligen Schritt der mehreren Schritte des Programms entsprechen; und Konfigurieren der mehreren Datenflussgraphenkomponenten basierend auf jeweiligen entsprechenden Schritten der mehreren Schritte des Programms und basierend auf der Grammatik, wodurch mehrere konfigurierte Datenflussgraphenkomponenten erzeugt werden; und Mittel zum Erzeugen eines Datenflussgraphen, wobei der Datenflussgraph Folgendes umfasst: die mehreren konfigurierten Datenflussgraphenkomponenten; und einen oder mehrere Flüsse, die Flüsse von Datensätzen zwischen der einen oder den mehreren Datenflussgraphenkomponenten repräsentieren, wobei die eine oder die mehreren Datenflussgraphenkomponenten über den einen oder die mehreren Flüsse in einer Reihenfolge gemäß dem erzeugten Katalog verbunden sind.
DE112020003431.3T 2019-07-18 2020-07-17 Automatisches umwandeln eines programms, das in einer prozeduralen programmiersprache geschrieben ist, in einen datenflussgraphen, sowie zugehörige systeme und verfahren Pending DE112020003431T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/515,995 US11093223B2 (en) 2019-07-18 2019-07-18 Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US16/515,995 2019-07-18
PCT/US2020/042574 WO2021011886A1 (en) 2019-07-18 2020-07-17 Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods

Publications (1)

Publication Number Publication Date
DE112020003431T5 true DE112020003431T5 (de) 2022-04-21

Family

ID=72047005

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020003431.3T Pending DE112020003431T5 (de) 2019-07-18 2020-07-17 Automatisches umwandeln eines programms, das in einer prozeduralen programmiersprache geschrieben ist, in einen datenflussgraphen, sowie zugehörige systeme und verfahren

Country Status (9)

Country Link
US (1) US11093223B2 (de)
EP (1) EP3999950B1 (de)
JP (1) JP2022540713A (de)
CN (1) CN114503073A (de)
AU (1) AU2020315655A1 (de)
BR (1) BR112022000810A2 (de)
CA (1) CA3147633A1 (de)
DE (1) DE112020003431T5 (de)
WO (1) WO2021011886A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11440190B1 (en) * 2020-02-26 2022-09-13 Trend Micro Incorporated Detecting unsecure data flow in automation task programs
CN113419740B (zh) * 2021-06-22 2024-08-02 中国工商银行股份有限公司 程序数据流的分析方法、装置、电子设备及可读存储介质
US20220414070A1 (en) * 2021-06-23 2022-12-29 Microsoft Technology Licensing, Llc Tracking data lineage and applying data removal to enforce data removal policies
CN117558381B (zh) * 2024-01-12 2024-03-22 四川大学 一种金属材料温度与应变速率相关塑性硬化模型计算方法

Family Cites Families (192)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4586137A (en) 1982-10-18 1986-04-29 Dresser Industries, Inc. Method for generating variable well logging data composites
JPH01108638A (ja) 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JP2738692B2 (ja) 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
JPH0267682A (ja) 1988-09-02 1990-03-07 Hitachi Ltd データベースシステム
US5072371A (en) 1989-03-01 1991-12-10 The United States Of America As Represented By The United States Department Of Energy Method for simultaneous overlapped communications between neighboring processors in a multiple
US5121494A (en) 1989-10-05 1992-06-09 Ibm Corporation Joining two database relations on a common field in a parallel relational database field
US5367619A (en) 1990-04-27 1994-11-22 Eaton Corporation Electronic data entry system employing an expert system to facilitate generation of electronic data forms with complex interrelationships between fields and subforms
US5210030A (en) 1990-06-25 1993-05-11 Merck & Co., Inc. Process for selectively acylating immunomycin
US5347639A (en) 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5632022A (en) 1991-11-13 1997-05-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Encyclopedia of software components
US5313584A (en) 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
FR2696853B1 (fr) 1992-10-12 1994-12-23 Bull Sa Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant.
JPH05217007A (ja) * 1992-02-04 1993-08-27 Sharp Corp データフロープログラムの実行制御方法
JPH05257709A (ja) 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
US5432940A (en) 1992-11-02 1995-07-11 Borland International, Inc. System and methods for improved computer-based training
US5574898A (en) 1993-01-08 1996-11-12 Atria Software, Inc. Dynamic software version auditor which monitors a process to provide a list of objects that are accessed
US5446915A (en) 1993-05-25 1995-08-29 Intel Corporation Parallel processing system virtual connection method and apparatus with protection and flow control
US5475842A (en) 1993-08-11 1995-12-12 Xerox Corporation Method of compilation optimization using an N-dimensional template for relocated and replicated alignment of arrays in data-parallel programs for reduced data communication during execution
JPH0765032A (ja) 1993-08-27 1995-03-10 Toshiba Corp データベース言語変換機能を持つ情報処理システム
US5600833A (en) 1993-09-17 1997-02-04 Digital Equipment Corp. Attribute portion based document retrieval system with system query language interface
JP4050339B2 (ja) 1994-04-28 2008-02-20 株式会社東芝 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置
US5860009A (en) 1994-04-28 1999-01-12 Kabushiki Kaisha Toshiba Programming method for concurrent programs and program supporting apparatus thereof
US5588150A (en) 1994-09-29 1996-12-24 International Business Machines Corporation Push down optimization in a distributed, multi-database system
US5768564A (en) 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
FI98690C (fi) 1994-10-18 1997-07-25 Nokia Telecommunications Oy Menetelmä alueryhmäpuhelun muodostamiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5734886A (en) 1994-11-16 1998-03-31 Lucent Technologies Inc. Database dependency resolution method and system for identifying related data files
FI98973C (fi) 1994-11-22 1997-09-10 Nokia Telecommunications Oy Menetelmä ryhmätietojen ylläpitämiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5546576A (en) 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
US5619692A (en) 1995-02-17 1997-04-08 International Business Machines Corporation Semantic optimization of query order requirements using order detection by normalization in a query compiler system
FI100215B (fi) 1995-03-17 1997-10-15 Nokia Telecommunications Oy Matkaviestijärjestelmän tilaajatietojen päivittäminen
US5706509A (en) 1995-04-28 1998-01-06 Intel Corporation Application independent record level synchronization
US5678044A (en) 1995-06-02 1997-10-14 Electronic Data Systems Corporation System and method for improved rehosting of software systems
US5682537A (en) 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5819021A (en) 1995-12-11 1998-10-06 Ab Initio Software Corporation Overpartitioning system and method for increasing checkpoints in component-based parallel applications
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
KR100200095B1 (ko) 1995-12-30 1999-06-15 윤종용 디지탈 컨버젼스를 이용한 화면 이펙트 방법 및회로
US5959704A (en) 1996-02-08 1999-09-28 Fujitsu Limited Display device having diffraction grating
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
JPH09319757A (ja) 1996-05-29 1997-12-12 N T T Data Tsushin Kk 情報検索システム
US5799149A (en) 1996-06-17 1998-08-25 International Business Machines Corporation System partitioning for massively parallel processors
US5870743A (en) 1996-06-24 1999-02-09 Oracle Corporation Method and apparatus for parallelizing operations that create a table
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JP4533974B2 (ja) 1996-08-01 2010-09-01 康 清木 異種データベース統合システム
JPH1091494A (ja) 1996-09-19 1998-04-10 Hitachi Ltd データベース操作プログラムの変換方法および変換装置
JPH10232875A (ja) 1997-02-19 1998-09-02 Hitachi Ltd データベース管理方法および並列データベース管理システム
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US5956074A (en) 1997-03-11 1999-09-21 Sclafani; Peter J. Cable television return display unit
JP3155991B2 (ja) 1997-04-09 2001-04-16 日本アイ・ビー・エム株式会社 集約演算実行方法及びコンピュータ・システム
US6092062A (en) 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
US6077313A (en) 1997-10-22 2000-06-20 Microsoft Corporation Type partitioned dataflow analyses
US6295518B1 (en) 1997-12-09 2001-09-25 Mci Communications Corporation System and method for emulating telecommunications network devices
US6266804B1 (en) 1997-12-23 2001-07-24 Ab Initio Software Corporation Method for analyzing capacity of parallel processing systems
US6625593B1 (en) 1998-06-29 2003-09-23 International Business Machines Corporation Parallel query optimization strategies for replicated and partitioned tables
US6205465B1 (en) 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6453464B1 (en) 1998-09-03 2002-09-17 Legacyj. Corp., Inc. Method and apparatus for converting COBOL to Java
US6339769B1 (en) 1998-09-14 2002-01-15 International Business Machines Corporation Query optimization by transparently altering properties of relational tables using materialized views
US6378126B2 (en) 1998-09-29 2002-04-23 International Business Machines Corporation Compilation of embedded language statements in a source code program
JP2000148699A (ja) 1998-11-06 2000-05-30 Nec Corp ネットワークマネージメントシステム
JP4406944B2 (ja) 1998-11-11 2010-02-03 株式会社日立製作所 計算機システム及び問合せに対する処理分散システム
US7047232B1 (en) * 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US7080062B1 (en) 1999-05-18 2006-07-18 International Business Machines Corporation Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries
US6560593B1 (en) 1999-07-20 2003-05-06 Computer Associates Think, Inc. Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query
JP4552242B2 (ja) 1999-10-06 2010-09-29 株式会社日立製作所 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
AU2261501A (en) 1999-12-16 2001-06-25 Debit.Net, Inc. Secure networked transaction system
US6615203B1 (en) 1999-12-17 2003-09-02 International Business Machines Corporation Method, computer program product, and system for pushdown analysis during query plan generation
JP3795289B2 (ja) 2000-02-07 2006-07-12 日本電信電話株式会社 データベースの実行制御装置
US6947934B1 (en) 2000-02-16 2005-09-20 International Business Machines Corporation Aggregate predicates and search in a database management system
JP4483034B2 (ja) 2000-06-06 2010-06-16 株式会社日立製作所 異種データソース統合アクセス方法
US6836883B1 (en) 2000-06-21 2004-12-28 Microsoft Corporation Method and system for compiling multiple languages
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US6785668B1 (en) 2000-11-28 2004-08-31 Sas Institute Inc. System and method for data flow analysis of complex data filters
US7418441B2 (en) 2001-02-28 2008-08-26 International Business Machines Corporation Data loading from a remote data source record by record
JP4543563B2 (ja) 2001-02-28 2010-09-15 株式会社日立製作所 統合データベースシステムにおける問合せ最適化方法
US8412746B2 (en) 2001-05-25 2013-04-02 International Business Machines Corporation Method and system for federated querying of data sources
US6877000B2 (en) 2001-08-22 2005-04-05 International Business Machines Corporation Tool for converting SQL queries into portable ODBC
US6725212B2 (en) 2001-08-31 2004-04-20 International Business Machines Corporation Platform-independent method and system for graphically presenting the evaluation of a query in a database management system
JP2003099441A (ja) 2001-09-21 2003-04-04 Hitachi Ltd データ検索手順探索方法
US6915290B2 (en) 2001-12-11 2005-07-05 International Business Machines Corporation Database query optimization apparatus and method that represents queries as graphs
US7409474B2 (en) 2002-06-27 2008-08-05 Broadcom Corporation Method and system for rate adaptation
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7076772B2 (en) 2003-02-26 2006-07-11 Bea Systems, Inc. System and method for multi-language extensible compiler framework
US7953891B2 (en) 2003-03-18 2011-05-31 Microsoft Corporation Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow
CA2429910A1 (en) 2003-05-27 2004-11-27 Cognos Incorporated System and method of query transformation
US7249120B2 (en) 2003-06-27 2007-07-24 Microsoft Corporation Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables
US20050038788A1 (en) 2003-08-14 2005-02-17 International Business Machines Corporation Annotation security to prevent the divulgence of sensitive information
US7739263B2 (en) 2003-09-06 2010-06-15 Oracle International Corporation Global hints
WO2005028627A2 (en) 2003-09-19 2005-03-31 Netezza Corporation Performing sequence analysis as a relational join
US7165063B2 (en) 2003-11-19 2007-01-16 International Business Machines Corporation Context quantifier transformation in XML query rewrite
US7133861B2 (en) 2003-12-04 2006-11-07 International Business Machines Corporation Query access plan rebuilds
US7930432B2 (en) 2004-05-24 2011-04-19 Microsoft Corporation Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow
US20060047696A1 (en) 2004-08-24 2006-03-02 Microsoft Corporation Partially materialized views
US7941794B2 (en) * 2004-08-30 2011-05-10 Sanyo Electric Co., Ltd. Data flow graph processing method and processing apparatus provided with reconfigurable circuit
CN100518079C (zh) 2004-09-30 2009-07-22 北京航空航天大学 分布式性能数据采集方法
US7899833B2 (en) 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
US7461052B2 (en) 2004-12-06 2008-12-02 International Business Machines Corporation Abstract query plan
US7890532B2 (en) 2004-12-15 2011-02-15 Microsoft Corporation Complex data access
US7359922B2 (en) 2004-12-22 2008-04-15 Ianywhere Solutions, Inc. Database system and methodology for generalized order optimization
US20060265362A1 (en) 2005-05-18 2006-11-23 Content Analyst Company, Llc Federated queries and combined text and relational data
US7856523B2 (en) 2005-06-01 2010-12-21 Microsoft Corporation Random Access Memory (RAM) based Content Addressable Memory (CAM) management
CA2519604C (en) 2005-06-23 2011-07-12 Cognos Incorporated Master-detail provider and method of providing master-detail functionality
US8935273B2 (en) 2005-06-23 2015-01-13 International Business Machines Corporation Method of processing and decomposing a multidimensional query against a relational data source
US7584205B2 (en) 2005-06-27 2009-09-01 Ab Initio Technology Llc Aggregating data with complex operations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
JP2007012182A (ja) 2005-06-30 2007-01-18 Sanyo Electric Co Ltd 光ディスク装置
CA2519010A1 (en) 2005-09-13 2007-03-13 Cognos Incorporated Query framework system and method
CA2519001A1 (en) 2005-09-13 2007-03-13 Cognos Incorporated System and method of data agnostic business intelligence query
US20070067274A1 (en) 2005-09-16 2007-03-22 International Business Machines Corporation Hybrid push-down/pull-up of unions with expensive operations in a federated query processor
WO2007061430A1 (en) 2005-11-22 2007-05-31 Bea Systems, Inc. System and method for translating sql queries into xml query language
US20070214179A1 (en) 2006-03-10 2007-09-13 Khanh Hoang Searching, filtering, creating, displaying, and managing entity relationships across multiple data hierarchies through a user interface
US7464084B2 (en) 2006-01-30 2008-12-09 International Business Machines Corporation Method for performing an inexact query transformation in a heterogeneous environment
US7945562B2 (en) 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
EP2021951B1 (de) 2006-06-01 2010-09-01 mediareif Möstl & Reif Kommunikations- und Informationstechnologien OEG Verfahren zum steuern eines relationalen datenbanksystems
CN103729330B (zh) 2006-08-10 2017-04-19 起元科技有限公司 在基于图的计算中分配服务
JP4872529B2 (ja) 2006-08-22 2012-02-08 株式会社日立製作所 リバースエンジニアリング支援方法
US7979453B2 (en) 2006-08-23 2011-07-12 Innovative Solutions, Inc. Efficient search result update mechanism
TWI348139B (en) 2006-08-24 2011-09-01 Wintek Corp A lcd scan lines driving method
JP2008084028A (ja) 2006-09-27 2008-04-10 Toshiba Corp データベース検索システムおよびデータベース検索方法
JP2008158664A (ja) 2006-12-21 2008-07-10 Sony Corp 通信システム、サーバ、通信端末及び通信方法
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8122088B2 (en) 2007-06-28 2012-02-21 International Business Machines Corporation Adding personal note capabilities to text exchange clients
EP2026479A1 (de) 2007-08-17 2009-02-18 Leica Geosystems AG Transimpedanzverstärkerschaltung für einen Photodetektor
US20100005077A1 (en) 2008-07-07 2010-01-07 Kickfire, Inc. Methods and systems for generating query plans that are compatible for execution in hardware
US9424315B2 (en) 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
AU2008302144B2 (en) 2007-09-20 2014-09-11 Ab Initio Technology Llc Managing data flows in graph-based computations
US8495602B2 (en) 2007-09-28 2013-07-23 Qualcomm Incorporated Shader compile system and method
US7673065B2 (en) 2007-10-20 2010-03-02 Oracle International Corporation Support for sharing computation between aggregations in a data stream management system
US10452768B2 (en) * 2007-11-03 2019-10-22 International Business Machines Corporation Managing source annotation metadata
US8527976B2 (en) 2007-11-14 2013-09-03 Nec Laboratories America, Inc. System and method for generating error traces for concurrency bugs
CN101436192B (zh) 2007-11-16 2011-03-16 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备
US9165032B2 (en) 2007-11-21 2015-10-20 Hewlett-Packard Development Company, L.P. Allocation of resources for concurrent query execution via adaptive segmentation
US8429601B2 (en) 2007-11-29 2013-04-23 Red Hat, Inc. Code completion for object relational mapping query language (OQL) queries
US20090198703A1 (en) 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
AU2009219299B2 (en) 2008-02-26 2015-05-07 Ab Initio Technology Llc Graphic representations of data relationships
US7933916B2 (en) 2008-02-28 2011-04-26 Microsoft Corporation Querying nonSQL data stores with a SQL-style language
US8537160B2 (en) 2008-03-05 2013-09-17 Microsoft Corporation Generating distributed dataflow graphs
JP2009217405A (ja) 2008-03-07 2009-09-24 Nec Corp ジョブネットワーク自動生成方式及びプログラム
US8538985B2 (en) 2008-03-11 2013-09-17 International Business Machines Corporation Efficient processing of queries in federated database systems
CN101933079B (zh) 2008-04-11 2012-11-28 夏普株式会社 显示装置和显示装置的驱动方法
US7974967B2 (en) 2008-04-15 2011-07-05 Sap Ag Hybrid database system using runtime reconfigurable hardware
JP5349581B2 (ja) 2008-04-16 2013-11-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 照会処理視覚化システム、照会処理を視覚化する方法及びコンピュータ・プログラム
US20100057695A1 (en) 2008-08-28 2010-03-04 Microsoft Corporation Post-processing search results on a client computer
US20100088674A1 (en) * 2008-10-06 2010-04-08 Microsoft Corporation System and method for recognizing structure in text
US7917463B2 (en) 2008-10-10 2011-03-29 Business.Com, Inc. System and method for data warehousing and analytics on a distributed file system
US20100121868A1 (en) 2008-11-07 2010-05-13 Yann Le Biannic Converting a database query to a multi-dimensional expression query
US9218209B2 (en) 2008-12-31 2015-12-22 Pivotal Software, Inc. Apparatus and method for parallel processing of a query
US8666966B2 (en) 2009-01-30 2014-03-04 Hewlett-Packard Development Company, L.P. Providing parallel result streams for database queries
JP4659888B2 (ja) 2009-02-13 2011-03-30 株式会社日立製作所 データベース処理システム、計算機及びデータベース処理方法
AU2010213618B9 (en) 2009-02-13 2015-07-30 Ab Initio Technology Llc Managing task execution
US20100241893A1 (en) 2009-03-18 2010-09-23 Eric Friedman Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment
US8392398B2 (en) 2009-07-29 2013-03-05 International Business Machines Corporation Query optimization over graph data streams
US9477778B2 (en) 2009-08-21 2016-10-25 Oracle International Corporation XML query optimization with order analysis of XML schema
CN101645074A (zh) 2009-09-07 2010-02-10 浪潮集团山东通用软件有限公司 一种访问不同类型关系型数据库的方法
US9064047B2 (en) 2009-09-24 2015-06-23 International Business Machines Corporation Parallel processing of ETL jobs involving extensible markup language documents
US8620903B2 (en) 2009-11-04 2013-12-31 Nec Laboratories America, Inc. Database distribution system and methods for scale-out applications
US8688683B2 (en) 2009-11-30 2014-04-01 Business Objects Software Ltd. Query plan reformulation
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US8555263B2 (en) 2010-01-20 2013-10-08 Aetna Inc. System and method for code automation
US8204903B2 (en) 2010-02-16 2012-06-19 Microsoft Corporation Expressing and executing semantic queries within a relational database
US9286370B2 (en) 2010-02-24 2016-03-15 International Business Machines Corporation Viewing a dimensional cube as a virtual data source
US8555265B2 (en) 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US9495427B2 (en) 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
US9760853B2 (en) 2010-06-21 2017-09-12 Mark D. Rose Low-power wirelessly-linked RFID tracking system
JP5536568B2 (ja) 2010-07-01 2014-07-02 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションを集約して処理する方法、システム、およびプログラム
US8326821B2 (en) 2010-08-25 2012-12-04 International Business Machines Corporation Transforming relational queries into stream processing
JP5199317B2 (ja) 2010-08-25 2013-05-15 株式会社日立製作所 データベース処理方法、データベース処理システム及びデータベースサーバ
US9128983B2 (en) 2010-10-13 2015-09-08 Aol Inc. Systems and methods for query optimization
US8850574B1 (en) 2011-02-28 2014-09-30 Google Inc. Safe self-modifying code
US20120246158A1 (en) 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
KR101088834B1 (ko) 2011-04-12 2011-12-06 디에스알 주식회사 크레인용 합성섬유 로프 및 이의 제조방법
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US8782081B2 (en) 2011-05-11 2014-07-15 Google Inc. Query template definition and transformation
US8898145B2 (en) 2011-06-15 2014-11-25 Microsoft Corporation Query optimization techniques for business intelligence systems
US9449030B2 (en) 2011-06-30 2016-09-20 International Business Machines Corporation Method for native program to inherit same transaction content when invoked by primary program running in separate environment
US8635206B2 (en) 2011-06-30 2014-01-21 International Business Machines Corporation Database query optimization
JP5357286B2 (ja) 2011-09-21 2013-12-04 前田建設工業株式会社 情報処理装置、情報処理方法、およびプログラム
US9177022B2 (en) 2011-11-02 2015-11-03 Microsoft Technology Licensing, Llc User pipeline configuration for rule-based query transformation, generation and result display
US9098547B1 (en) 2012-03-23 2015-08-04 The Mathworks, Inc. Generation of results to a search query with a technical computing environment (TCE)-based search engine
JP5835084B2 (ja) 2012-05-02 2015-12-24 富士通株式会社 クエリ統合方法、クエリ統合プログラム、および統合コンポーネント生成装置
US9182957B2 (en) 2012-07-10 2015-11-10 Loring Craymer Method and system for automated improvement of parallelism in program compilation
AU2013295864B2 (en) 2012-07-24 2017-09-14 Ab Initio Technology Llc Mapping entities in data models
FR2999301B1 (fr) 2012-12-12 2015-01-09 Thales Sa Guide optique d'images collimatees a dedoubleur de faisceaux optiques et dispositif optique associe
EP2950211B1 (de) * 2013-01-23 2021-07-07 Waseda University Parallelitätsextraktionsverfahren und verfahren zur programmherstellung
US9135301B2 (en) 2013-03-14 2015-09-15 Oracle International Corporation Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system
US9633104B2 (en) 2013-05-03 2017-04-25 Sas Institute Inc. Methods and systems to operate on group-by sets with high cardinality
JP6454706B2 (ja) 2013-12-06 2019-01-16 アビニシオ テクノロジー エルエルシー ソースコード変換
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network

Also Published As

Publication number Publication date
US20210019126A1 (en) 2021-01-21
US11093223B2 (en) 2021-08-17
JP2022540713A (ja) 2022-09-16
AU2020315655A1 (en) 2022-02-03
WO2021011886A1 (en) 2021-01-21
CA3147633A1 (en) 2021-01-21
EP3999950A1 (de) 2022-05-25
EP3999950B1 (de) 2024-05-15
CN114503073A (zh) 2022-05-13
BR112022000810A2 (pt) 2022-07-19

Similar Documents

Publication Publication Date Title
DE112020003431T5 (de) Automatisches umwandeln eines programms, das in einer prozeduralen programmiersprache geschrieben ist, in einen datenflussgraphen, sowie zugehörige systeme und verfahren
DE69710458T2 (de) Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen
DE69712411T2 (de) Verfahren und System um Datenstrukturen zu vereinigen
DE69331209T2 (de) Umformung von verwandten Wortformen für Textindexierung und Wiederauffindung mittels endlicher Automaten
DE112017005638T5 (de) Systeme und Verfahren zur Bestimmung der Beziehung zwischen Datenelementen
DE102017111438A1 (de) Api-lernen
DE69710309T2 (de) System für betriebliche veröffentlichung und speicherung
DE112013000987T5 (de) Erzeugen von Visualisierungen einer Anzeigegruppe von Tags, die Inhaltsinstanzen in Suchkriterien erfüllenden Objekten darstellen
DE112018001789T5 (de) Systeme und verfahren zum durchführen von datenverarbeitungsoperationen unter verwendung von parallelität variabler grade
DE112010004246T5 (de) Verfahren und Vorrichtung zum Managen von vielfachen Dokumentversionen in einem großen Dokumentendepotspeicher
DE102011007903A1 (de) Computergestütztes Verfahren und System zum Erzeugen maßgeschneiderter dynamischer Vorlagen
DE102020211679A1 (de) Computer-implementiertes system und verfahren mit einem digitalen zwilling und einer graphen-basierten struktur
EP2977888B1 (de) Verfahren und System zur Speicherung und zur Versionsverwaltung von Computerprogrammen
DE102018214541A1 (de) Verfahren und vorrichtung zum abbilden von single-static-assignment-anweisungen auf einen datenflussgraphen in einer datenflussarchitektur
DE202018006901U1 (de) Techniken zur dynamischen Definition eines Datensatzformats
DE112020003888T5 (de) De-identifizierungscode für organisationsübergreifendes fehlerbehebungswissen
DE112012004300T5 (de) Verfahren, Programm und System zum Erstellen eines Arbeitsablaufs von einer Arbeitsspezifikation
DE112022004468T5 (de) Metadaten-gesteuerte Datenaufnahme
WO2012017056A1 (de) Verfahren und vorrichtung zur automatischen verarbeitung von daten in einem zellen-format
DE2249852A1 (de) Computersystem
EP1387260A1 (de) Verfahren und Vorrichtung zur Erzeugung von Software
EP2264626B1 (de) Verfahren und Vorrichtung zum speichereffizienten Suchen mindestens eines Anfragedatenelementes
DE112020000536T5 (de) Erweiterbares überspringen von daten
DE69329007T2 (de) Kompilierungsmechanismus für Simulationsmodelle
DE112004001955T5 (de) Benutzeroberflächensoftware-Entwurfssystem