KR20130100261A - 동적으로 로딩하는 그래프 기반 계산 - Google Patents

동적으로 로딩하는 그래프 기반 계산 Download PDF

Info

Publication number
KR20130100261A
KR20130100261A KR1020137001038A KR20137001038A KR20130100261A KR 20130100261 A KR20130100261 A KR 20130100261A KR 1020137001038 A KR1020137001038 A KR 1020137001038A KR 20137001038 A KR20137001038 A KR 20137001038A KR 20130100261 A KR20130100261 A KR 20130100261A
Authority
KR
South Korea
Prior art keywords
work
dataflow graph
compiled
unit
dataflow
Prior art date
Application number
KR1020137001038A
Other languages
English (en)
Other versions
KR101687213B1 (ko
Inventor
매튜 달시 애터버리
에이치. 마크 브롬리
웨인 메쟈드
아르카디 포포브
스티븐 슈미트
크레이그 더블유. 스탠필
3 요셉 스케핑튼 홀리
Original Assignee
아브 이니티오 테크놀로지 엘엘시
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 아브 이니티오 테크놀로지 엘엘시 filed Critical 아브 이니티오 테크놀로지 엘엘시
Publication of KR20130100261A publication Critical patent/KR20130100261A/ko
Application granted granted Critical
Publication of KR101687213B1 publication Critical patent/KR101687213B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

데이터의 처리는, 하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하는 것과, 제1 작업 단위의 수신에 의해 데이터 처리 시스템(100)에 로딩된 컴파일된 제1 데이터플로우 그래프(160)를 사용하여 제1 작업 단위를 처리하는 것을 포함한다. 이러한 처리는, 제1 작업 단위의 특징을 판정하기 위해 해석하는 것과,
판정된 특징을 갖는 작업 단위를 처리하기 위해 컴파일된 적어도 몇몇을 포함하는 데이터 기억 시스템(107) 내에 기억된 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 것과, 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 컴파일된 제1 데이터플로우 그래프(160)로서 데이터 처리 시스템(100)에 로딩하는 것과, 제1 작업 단위 내에서 하나 이상의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함한다.

Description

동적으로 로딩하는 그래프 기반 계산{DYNAMICALLY LOADING GRAPH-BASED COMPUTATIONS}
본 개시는 동적으로 로딩하는 그래프 기반 계산에 관한 것이다.
복잡한 계산은 방향성 그래프(directed graph)(이하, "데이터플로우 그래프"라고 함)를 통한 데이터 흐름(data flow)으로 표현할 수 있는데, 여기서 계산의 각 성분(component)은 그래프의 정점(vertex)과 연관되며, 성분 간의 데이터 흐름은 그래프의 링크(아크, 에지)에 대응한다. 성분은 하나 이상의 입력 포트에서 데이터를 수신하고, 그 데이터를 처리하며, 하나 이상의 출력 포트로부터 해당 데이터를 제공하는 데이터 처리 성분과, 데이터 흐름의 소스 또는 싱크로서 작용하는 데이터세트 성분을 포함할 수 있다. 이러한 그래프 기반의 계산을 구현하는 시스템은 "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"란 명칭의 미국특허 5,966,072호에 개시되어 있다.
일반적인 관점으로서, 데이터 기억 시스템에 기억된 컴파일된 데이터플로우 그래프(compiled dataflow graph)를 사용하여 데이터 처리 시스템에서 데이터를 처리하는 방법은, 하나 이상의 작업 요소(work element)를 각각 포함하는 다수의 작업 단위를 수신하는 단계와, 제1 작업 단위의 수신에 의해 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 제1 작업 단위를 처리하는 단계를 포함한다. 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분(data processign component) 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일된다. 상기 작업 단위를 처리하는 단계는, 제1 작업 단위를 해석(analyze)하여, 제1 작업 단위의 특징을 판정하는 단계; 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하는 단계; 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하는 단계; 및 제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 단계를 포함한다.
관점은 이하의 특징들 중 하나 이상을 포함할 수 있다.
다수의 작업 단위는 수신된 작업 요소의 흐름 내에의 하나 이상의 작업 요소로 이루어진 여러 상이한 인접한 세트에 대응한다.
다수의 작업 단위는 상이한 각각의 수신된 파일 내의 하나 이상의 작업 요소로 된 상이한 배치(batch)에 대응한다.
상기 로딩은, 컴파일된 제1 데이터플로우 그래프로부터 제1 데이터플로우 그래프를 나타내는 데이터 구조를 검색하고, 검색된 데이터 구조를 제2 데이터플로우 그래프에 로딩하는 단계를 더 포함한다.
제2 데이터플로우 그래프는 상기 제1 작업 단위가 수신되기 전에 실행되고 있었던 것이다.
검색된 데이터 구조를 제2 데이터플로우 그래프에 로딩하는 단계는, 제1 데이터플로우 그래프 내에서 데이터 처리 성분을 실행하는 제1 프로세스를 제공하도록 구성된 제2 데이터플로우 그래프의 내포 성분(containing component) 내에 제1 데이터플로우 그래프를 삽입(embed)하는 단계를 포함한다.
제2 데이터플로우 그래프의 내포 성분은 제1 데이터플로우 그래프 내에서 데이터 처리 성분의 실행을 모니터링하는 제2 프로세스를 제공하도록 구성된다.
제2 프로세스는, 소정의 작업 요소를 정확하게 처리하기 위해 제1 데이터플로우 그래프 내의 하나 이상의 데이터 처리 성분의 실패(failure)를 검출하면, 제2 데이터플로우 그래프의 실행을 중단하지 않고, 제1 데이터플로우 그래프의 실행을 중단한다.
제2 프로세스는, 제1 작업 요소의 처리에서 제1 데이터플로우 그래프 내에서 하나 이상의 데이터 처리 성분의 지연을 검출하게 되면, 제2 데이터플로우 그래프의 실행을 중단하지 않고 제1 데이터플로우 그래프의 실행을 연기(suspend)하고, 제1 작업 단위 이후에 수신된 제2 작업 단위를 처리하기 위해 제2 데이터플로우 그래프의 내포 성분 내에 제3 데이터플로우 그래프를 삽입한다.
제2 데이터플로우 그래프의 내포 성분은, 제1 프로세스가 사용하는 제1 애플리케이션 프로그래밍 인터페이스를 제공하여, 제1 원격 데이터베이스에 대한 라이브러리에 액세스하는 제2 프로세스와 통신하도록 구성된다.
제2 데이터플로우 그래프의 내포 성분은 제1 프로세스가 사용되는 제2 애플리케이션 프로그래밍 인터페이스를 제공하여, 제1 원격 데이터베이스에 대한 라이브러리와 상이한 제2 원격 데이터베이스에 대한 라이브러리에 액세스하는 제3 프로세스와 통신하도록 구성된다.
제2 데이터플로우 그래프의 내포 성분은 제2 데이터플로우 그래프의 다수의 성분과 호환가능한 제3 애플리케이션 프로그래밍 인터페이스를 제공하도록 구성된다.
제2 데이터플로우 그래프의 내포 성분은, 제3 애플리케이션 프로그래밍 인터페이스를 사용하는 애플리케이션 호출을, 제1 원격 데이터베이스 및 제2 원격 데이터베이스 중의 어느 것이 액세스되는지에 따라, 제1 애플리케이션 프로그래밍 인터페이스 및 제2 애플리케이션 프로그래밍 인터페이스 중의 선택된 하나를 사용하는 애플리케이션 호출로 해석하도록 구성된다.
검색된 데이터 구조를 제2 데이터플로우 그래프로 로딩하는 단계는, 제2 데이터플로우 그래프의 내포 성분 내에 제1 데이터플로우 그래프를 삽입하는 단계를 포함하며, 데이터플로우 그래프를 삽입하는 단계는, 내포 성분의 입력에 연결된 링크로부터 수신된 제1 입력 작업 요소를 제1 데이터플로우 그래프의 입력에 연결하는 단계; 및 생성된 하나 이상의 출력 작업 요소를, 내포 성분의 출력에 연결된 링크에 연결하는 단계를 포함한다.
제1 데이터플로우 그래프는, 제2 성분의 입력에 연결된 하나 이상의 출력 링크를 포함하는 제1 성분, 제1 데이터플로우 그래프가 내포 성분에 삽입될 때에 입력 작업 요소를 제2 성분에 제공하도록 하는 명령어(instructions), 및 제1 데이터플로우 그래프가 내포 성분 내에 삽입되지 않은 때에 기억 위치로부터의 작업 요소를 제2 성분에 제공하도록 하는 명령어를 포함한다.
제1 데이터플로우 그래프는, 제4 성분의 출력에 연결된 하나 이상의 입력 링크를 포함하는 제3 성분, 제1 데이터플로우 그래프가 내포 성분에 삽입될 때에 제4 성분의 출력으로부터의 생성된 하나 이상의 출력 작업 요소를 내포 성분의 출력에 제공하도록 하는 명령어, 및 제1 데이터플로우 그래프가 내포 성분 내에 삽입되지 않은 때에 제4 성분의 출력으로부터의 생성된 하나 이상의 출력 작업 요소를 기억 위치에 제공하도록 하는 명령어를 포함한다.
제1 데이터플로우 그래프는, 제1 데이터플로우 그래프가 내포 성분 내에 삽입될 때에, 제1 데이터플로우 그래프와 내포 성분 사이에서 작업 요소를 전송하기 위한 명령어와, 제1 데이터플로우 그래프가 내포 성분 내에 삽입되지 않을 때에 제1 데이터플로우 그래프와 기억 위치 사이에서 작업 요소를 전송하기 위한 명령어를 각각 포함하는 다수의 인터페이스 성분을 포함한다.
인터페이스 성분의 각각은, 제1 데이터플로우 그래프가 내포 성분 내에 삽입될 때에 제1 데이터플로우 그래프가 연결되는 내포 성분의 대응하는 여러 입력 또는 출력 포트를 식별한다.
본 방법은, 하나 이상의 출력 작업 요소를 생성한 후에, 제2 데이터플로우 그래프로부터 제1 데이터플로우 그래프를 나타내는 검색된 데이터 구조를 언로딩(unload)하는 단계를 더 포함한다.
본 방법은, 제1 작업 단위가 도달한 후에 그리고 제1 데이터플로우 그래프를 나타내는 검색된 데이터 구조의 언로딩 이전에 도달하는 작업 단위인 작업 요소를 버퍼링하는 단계를 더 포함한다.
본 방법은, 데이터 처리 시스템에 컴파일된 제2 데이터플로우 그래프를 로딩하는 단계를 더 포함하며, 컴파일된 제2 데이터플로우 그래프는 제2 데이터플로우 그래프를 나타내는 데이터 구조에 컴파일된다.
식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하는 단계는, 제1 데이터플로우 그래프를 제3 데이터플로우 그래프의 제1 내포 성분 내에 삽입하는 단계를 포함하며, 컴파일된 제2 데이터플로우 그래프를 데이터 처리 시스템에 로딩하는 단계는, 제3 데이터플로우 그래프의 제2 내포 성분 내에 제2 데이터플로우 그래프를 삽입하는 단계를 포함한다.
컴파일된 제2 데이터플로우 그래프는 제1 작업 단위를 수신하게 되면 데이터 처리 시스템에 로딩된다.
컴파일된 제2 데이터플로우 그래프는 제1 작업 단위 이후에 제2 작업 단위를 수신하게 되면, 데이터 처리 시스템에 로딩된다.
본 방법은, 제1 작업 단위의 처리 이후에 제2 작업 단위를 처리하는 단계로서, 제2 작업 단위를 수신하게 되면 데이터 처리 시스템에 로딩되는 컴파일된 제2 데이터플로우 그래프를 이용하는 단계를 더 포함하며, 컴파일된 제2 데이터플로우 그래프는 제2 데이터플로우 그래프를 나타내는 데이터 구조에 컴파일되며, 작업 단위를 처리하는 단계는, 제2 작업 단위의 특징을 판정하기 위해 제2 작업 단위를 해석하는 단계; 제2 작업 단위가 수신되기 전에 컴파일되었던, 데이터 기억 시스템 내에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별하고, 제2 작업 단위의 판정된 특징을 갖는 작업 단위를 처리하는 단계; 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를, 컴파일된 제2 데이터플로우 그래프로서 데이터 처리 시스템에 로딩하는 단계; 및 제2 데이터플로우 그래프를 사용하여 제2 작업 단위 내에서 하나 이상의 작업 요소로부터 하나 이상의 작업 요소를 생성하는 단계를 포함한다.
식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를 컴파일된 제1 데이터플로우 그래프로서 데이터 처리 시스템에 로딩하는 단계는, 제1 데이터플로우 그래프를 제3 데이터플로우 그래프의 내포 성분 내에 삽입하는 단계를 포함하며, 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를 컴파일된 제2 데이터플로우 그래프로서 데이터 처리 시스템에 로딩하는 단계는, 제2 데이터플로우 그래프를 제3 데이터플로우 그래프의 내포 성분 내에 삽입하는 단계를 포함한다.
제1 작업 단위를 해석하는 단계는, 제1 작업 단위의 작업 요소 내에 포함된 컴파일된 데이터플로우 그래프에 대한 식별자를 판독하는 단계를 포함한다.
하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 식별자를 상기 하나 이상의 컴파일된 데이터플로우 그래프와 연관된 식별자와 매칭하는 단계를 포함한다.
제1 작업 단위를 해석하는 단계는, 제1 작업 단위의 작업 요소를 특징화하는 다수의 미리 정해진 타입 중의 하나를 식별하는 단계를 포함한다.
하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 하나 이상의 컴파일된 데이터플로우 그래프에 대응하는 데이터플로우 그래프가 식별된 타입에 의해 특징화된 작업 요소를 처리하도록 구성되어 있는지를 판정하는 단계를 포함한다.
제1 작업 단위를 해석하는 단계는, 제1 작업 단위의 작업 요소 내에 포함된 콘텐츠의 특성을 식별하는 단계를 포함한다.
하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 하나 이상의 컴파일된 데이터플로우 그래프에 대응하는 데이터플로우 그래프가 식별된 특성을 갖는 콘텐츠를 포함하는 작업 요소를 처리하도록 구성되어 있는지를 판정하는 단계를 포함한다.
제1 작업 단위를 해석하는 단계는, 제1 작업 단위와 연관된 하나 이상의 값이 제1 데이터플로우 그래프의 하나 이상의 파라미터로 이루어진 제1 세트에 대한 값으로서 지정되어 있는지를 판정하는 단계를 포함한다.
하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 식별된 하나 이상의 컴파일된 데이터플로우 그래프가 제1 작업 단위와 연관된 판정된 하나 이상의 값과 매칭되는 각각의 값에 결합된 하나 이상의 파라미터로 된 제1 세트를 가진 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일되어 있는지를 판정하는 단계를 포함한다.
식별된 하나 이상의 컴파일된 데이터플로우 그래프를 컴파일된 제1 데이터플로우 그래프로서 데이터 처리 시스템에 로딩하는 단계는, 하나 이상의 파라미터로 이루어진 제2 세트를, 제1 작업 단위에 적어도 부분적으로 기초하여 판정된 각각의 값에 결합하는 단계를 포함한다.
하나 이상의 파라미터로 된 제2 세트는, 입력 작업 요소를 제공하기 위한 입력 소스 또는 출력 작업 요소를 수신하기 위한 출력 소스의 이름을 포함하는 값을 갖는 하나 이상의 파라미터를 포함한다.
하나 이상의 파라미터로 된 제1 세트는, 데이터 구조가 컴파일된 제1 데이터플로우 그래프로 컴파일될 때에, 하나 이상의 성분이 제1 데이터플로우 그래프를 나타내는 데이터 구조 내에 포함되어야 하는지 여부를 판정하는 값을 갖는 하나 이상의 파라미터를 포함한다.
하나 이상의 파라미터로 된 제1 세트는, 데이터 구조가 컴파일된 제1 데이터플로우 그래프로 컴파일될 때에 제1 데이터플로우 그래프를 나타내는 데이터 구조 내에 포함되는 성분에 의해 처리되는 작업 요소에 적용될 변환을 판정하는 값을 갖는 하나 이상의 파라미터를 포함한다.
본 방법은, 제1 작업 단위가 수신되기 전에, 제1 데이터플로우 그래프를 나타내는 데이터 구조로부터 컴파일된 제1 데이터플로우 그래프를 각각의 값에 결합된 하나 이상의 파라미터로 된 제1 세트로 컴파일하는 단계를 더 포함한다.
본 방법은, 컴파일된 제1 데이터플로우 그래프를 데이터 기억 시스템에 기억시키고, 기억된 컴파일된 제1 데이터플로우 그래프를 하나 이상의 파라미터로 된 제1 세트에 결합된 각각의 값을 나타내는 정보와 연관시키는 단계를 더 포함한다.
다른 관점으로서, 일반적으로, 데이터 기억 시스템에 기억된 컴파일된 데이터플로우 그래프를 사용하여 데이터를 처리하기 위한 데이터 처리 시스템은, 하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하도록 구성된 입력 장치 또는 포트와, 제1 작업 단위를 수신하면, 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 제1 작업 단위를 처리하도록 구성된 하나 이상의 프로세서를 포함한다. 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일된다. 작업 단위의 처리는, 제1 작업 단위를 해석하여, 제1 작업 단위의 특징을 판정하고; 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하며; 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하고; 및 제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함한다.
하나의 관점으로서, 일반적으로, 데이터 기억 시스템 내에 기억된 컴파일된 데이터플로우 그래프를 사용하여 데이터를 처리하기 위한 데이터 처리 시스템은, 하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하는 수단; 및 제1 작업 단위를 수신하면, 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 상기 제1 작업 단위를 처리하는 수단을 포함한다. 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일된다. 작업 단위의 처리는, 제1 작업 단위를 해석하여, 제1 작업 단위의 특징을 판정하고; 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하며; 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하고; 및 제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함한다.
다른 관점으로서, 일반적으로, 컴퓨터로 판독가능한 매체는 데이터 기억 시스템에 기억된 컴파일된 데이터플로우 그래프를 사용하여 데이터를 처리하기 위한 컴퓨터 프로그램을 기억한다. 컴퓨터 프로그램은, 컴퓨터로 하여금, 하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하고, 제1 작업 단위를 수신하면, 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 제1 작업 단위를 처리하도록 하기 위한 명령어를 포함한다. 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일된다. 작업 단위의 처리는, 제1 작업 단위를 해석하여, 상기 제1 작업 단위의 특징을 판정하고; 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하며; 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하고; 및 제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함한다.
본 발명의 관점은 이하의 장점들 중 하나 이상을 포함할 수 있다.
데이터플로우 그래프를 사용하는 데이터 처리 시스템은 각각의 작업 요소로 이루어진 데이터의 입력 흐름을 처리하는 여러 방법으로 구성될 수 있다. 각각의 작업 요소는 별개의 작업 단위를 나타낼 수 있으며, 또는 일련의 다수의 작업 요소가 작업 단위를 나타낼 수 있다. 본원에 개시된 기술은 이러한 시스템의 다양한 구성에 사용될 수 있다. 일부 구성은 소정의 특징을 갖는 데이터 흐름 내의 작업 단위에 더 적절할 수 있다. 일례로, 작업 단위 내의 하나 이상의 작업 요소는, 배치(예를 들어, 동일한 입력 파일 내의 레코드로 구성된 작업 요소의 배치)로서 처리하기 위한 데이터플로우 그래프에 제공되며, 데이터플로우 그래프는 작업 요소의 데이터 흐름을 하나 이상의 입력 포트로부터 하나 이상의 출력 포트로 한번에 단일의 배치로 전달한다. 다운스트림 성분의 출력 포트로부터 제공되는(또는 데이터세트 성분에 기억된) 일련의 "출력 작업 요소"는 입력 포트에 제공되는 일련의 "입력 작업 요소"를 처리한 결과를 나타낸다. 배치 처리의 일례로서, 데이터플로우 그래프는, 배치의 제1 입력 작업 요소가 준비가 되면 개시하고, 마지막 출력 작업 요소가 제공된 후에 종료한다. 배치 처리의 다른 예로서, 데이터플로우 그래프는, 다음 배치로부터의 입력 작업 요소가 제1 입력 작업이 처리되기 전에, 이전 매치로부터의 마지막 출력 작업 요소가 출력되는 것을 보장하면서 하나의 배치로부터 다음 배치로의 실행을 계속한다. 상기 배치 처리에서, 배치를 나타내는 하나 이상의 작업 요소로 구성되는 작업 단위로 분할된 작업 요소의 연속하는 스트림이 존재할 수 있다. 본원에 개시된 기술 중의 일부는 수신된 작업 단위와 연관된 미리 정해진 특징을 검출하는 것에 의해 소정의 데이터플로우 그래프를 동적으로 로딩하는 방법을 나타낸다. 일례로, 이 특징은 작업 단위의 콘텐츠(예를 들어, 파일 포맷)에 기초하고, 일부의 예에서는, 특징은 작업 단위와 연관된 파라미터 값(예를 들어, 특정의 조건부 성분이 포함되어야 하는지 여부를 판정하는 파라미터)에 기초하는데, 이에 대해서는 나중에 자세히 설명한다.
일부 구성에서, 데이터 처리 시스템은, 데이터플로우 그래프가 비교적 짧은 기간(예를 들어, 초 단위) 동안 실행되어 소정의 데이터 배치를 처리하도록, 데이터플로우 그래프를 실행하여, 데이터의 배치를 처리할 수 있다. 많은 작은 배치가 선택된 데이터플로우 그래프에 의해 처리되면(예를 들어, 데이터플로우 그래프의 집합으로부터 선택), 선택된 데이터플로우 그래프의 실행 시간이 "기동 시간"(startup time)(그래프를 로딩하는 데에 필요한 시간, 그래프의 개시부터 데이터의 배치의 처리를 시작하기 위해 준비하는 시간)에 의해 제한을 받지 않는 경우에 특히 성능이 향상될 수 있다. 예를 들어, 데이터플로우 그래프의 기동 시간이 대략 5초이고, 데이터의 배치를 처리하기 위해 대략 5초가 걸린다고 하면, 실행 시간 중의 절반만이 유용한 데이터 처리에 사용되는 것이다. 일례로, 이처럼 실행 시간에 대한 처리 시간의 낮은 비율은 배치가 빈번하게 도달하지 않는 경우에(예를 들어, 본 예에서는 5분마다), 전체 효율에 영향을 미치지 않을 것이다. 그러나, 배치가 비교적 빈번하게(예를 들어, 본 예에서는 5초마다) 도달하는 경우에는, 기동 시간은 전체 효율에 큰 영향을 미칠 수 있다. 본원에 설명하는 바와 같이, 기동 시간 동안 수행되어야 하는 작업의 일부를 초기 컴파일 단계로 이동시킴으로써, 성능이 향상될 수 있다.
일부 구성에서, 데이터 처리 시스템은, 데이터플로우 그래프가 데이터의 흐름에서 일련의 작업 요소를 연속해서 처리하는 방식으로 데이터의 연속하는 흐름을 처리하도록 데이터플로우 그래프를 실행할 수 있다. 작업 요소는 하나 이상이 작업 요소로 이루어지는 작업 단위로 분할될 수 있으며, 각각의 작업 단위는 배치로서 상이한 데이터플로우 그래프에 의해 처리되지 않아도 된다.
상이한 데이터플로우 그래프가 실행되는 컨테이너 그래프에 필요에 따라 동적으로 로딩되는 경우에 성능이 크게 향상될 수 있다(예를 들어, 상이한 데이터플로우 그래프 모두를 독립적으로 실행되도록 하거나, 이들을 단일의 더 큰 데이터플로우 그래프에 조합하는 것과 비교해서). 예를 들어, 작업 단위는 소정 타입의 단일 메시지로 이루어질 수 있다. 일부 타입의 메시지는 다른 것보다 더 많을 수 있다. 그래서, 소정 타입의 메시지를 처리하기 위해 적절한 데이터플로우 그래프를 로딩함으로써(여러 타입의 메시지 모두에 대하여 모든 데이터플로우 그래프를 동시에 실행하는 대신에), 더 드물게 사용되는 데이터플로우 그래프가 실행되도록 하는 데에 사용되는 리소스가 다른 목적에도 제공될 수 있다. 또한, 데이터플로우 그래프를 더 큰 데이터플로우 그래프에 조합하지 않고 분리된 상태를 유지하는 것은, 여러 타입의 메시지에 대한 주문형(custom) 데이터플로우 그래프의 설계를 더 용이하게 할 수 있으며, 개발자가 컨테이너 그래프를 검사할 때에 전체 시스템을 더 용이하게 이해할 수 있도록 하는 모듈성(modularity)을 제공한다. 개발자는 대응하는 데이터플로우 그래프를 변경함으로써 일부 타입의 메시지가 취급되는 방법을 용이하게 변경할 수 있으며, 메시지 타입이 추가되거나 제거됨에 따라 데이터플로우 그래프를 용이하게 추가 또는 제거할 수 있다.
본원에 개시된 기술은 수신된 데이터 배치를 처리하기 위한 적절한 파라미터 값으로 실행 시간에 동적으로 로딩될 수 있는 여러 상이한 주문형의 데이터플로우 그래프 버전을 컴파일하는 데에 사용될 수 있다. 일례로, 컴파일된 데이터플로우 그래프는 내포하는 데이터플로우 그래프(containing dataflow graph)가 실행되는 동안, 내포하는 데이터플로우 그래프에 동적으로 로딩되거나 내포하는 데이터플로우 그래프로부터 동적으로 언로딩될 수 있는 "마이크로그래프"(micrograph)로서 사용될 수 있다. 마이크로그래프는, 데이터의 연속하는 흐름이 데이터플로우 그래프에 의해 처리되는 동안, 데이터의 연속하는 흐름 내에서 여러 상이한 작업 단위를 배치로서 처리하는 효율적인 방법을 제공한다. 일례로, 마이크로그래프는 마이크로그래프를 로딩하기 위한 특화 성분(specialized component)을 사용하여 내포하는 데이터플로우 그래프 내에 서브그래프로서 로딩되는데, 이에 대해서는 나중에 더 상세하게 설명한다. 데이터플로우 그래프(마이크로그래프를 포함)를 컴파일하는 기술에 의하면, 기동 과정 중의 일부가 미리 수행될 수 있으며, 수신된 데이터의 배치(데이터의 흐름 내에서의 작업 단위를 포함)에 의해 데이터플로우 그래프의 여러 상이한 컴파일된 버전 중에서 선택함으로써 실행 시간에서 유연성을 제공한다.
이상 설명한 것 외의 본 발명의 다른 특징이나 장점은 이하의 상세한 설명과 청구범위로부터 명백하게 알 수 있을 것이다.
도 1은 데이터플로우 그래프가 실행되는 시스템의 구성예를 나타내는 블록도이다.
도 2는 마이크로그래프를 포함하는 데이터플로우 그래프의 예를 나타낸다.
도 3a는 특화 성분의 예를 나타낸다.
도 3b는 마이크로그래프의 예를 나타낸다.
도 4는 메모리에 다수의 마이크로그래프를 가진 특화 성분의 예를 나타낸다.
도 5a는 다수의 마이크로그래프 처리 데이터 흐름을 가진 특화 성분의 예를 나타낸다.
도 5b는 다수의 특화 성분을 가진 데이터플로우 그래프의 예를 나타낸다.
도 6은 사전처리 및 후처리 성분을 포함하는 특화 성분의 예를 나타내는 블록도이다.
도 7은 단일 데이터베이스와 상호작용하는 다수의 데이터 흐름 성분의 예를 나타낸다.
도 8은 다수의 데이터베이스와 상호작용하는 데이터 흐름 성분의 예를 나타낸다.
도 9a는 다수의 데이터베이스와 상호작용하는 데이터 흐름 성분의 예를 나타낸다.
도 9b는 공통 프로토콜 층을 사용하여 다수의 데이터베이스와 상호작용하는 데이터 흐름 성분의 예를 나타낸다.
도 10은 데이터플로우 그래프가 실행 시간에 앞서 컴파일되는 시스템의 구성 예를 나타내는 블록도이다.
1. 개요
도 1은 동적 로딩 기술이 사용될 수 있는 데이터 처리 시스템(100)의 예를 나타낸다. 데이터 처리 시스템(100)은 다양한 기억 포맷(예를 들어, 데이터베이스 테이블, 스프레드시트 파일, 플랫 텍스트 파일 또는 메인프레임에 의해 사용되는 네이티브 포맷 등) 중의 임의의 형태로 데이터를 기억시킬 수 있는 기억 장치 또는 온라인 데이터 스트림에의 기억 장치 또는 접속 등의 하나 이상의 데이터 소스를 포함할 수 있는 데이터 소스(101)를 구비한다. 실행 환경(execution environment)(104)은 사전실행 모듈(pre-execution module)(105) 및 실행 모듈(106)을 포함한다. 실행 환경(104)은 UNIX 운영체제 등의 적당한 운영체제의 제어하에서 하나 이상의 범용 컴퓨터 상에 호스트될 수 있다. 예를 들어, 실행 환경(104)은 로컬(예를 들어, SMP 컴퓨터 등의 다중 프로세서 시스템) 또는 로컬 분산된(예를 들어, 클러스터 또는 MPP로서 연결된 다중 프로세서), 또는 원격이나 원격 분산된(예를 들어, 근거리 통신망(LAN) 및/또는 원거리 통신망(WAN)에 의해 연결된 다중 프로세서), 또는 이들이 임의로 조합된 다수의 중앙처리장치(CPU)를 이용하는 컴퓨터 시스템의 구성을 포함하는 다중 노드 병렬 컴퓨팅 환경을 포함할 수 있다.
사전실행 모듈(105)은 데이터플로우 그래프 등의 실행가능한 프로그램을 실행하기 위해 준비하는 다양한 작업을 수행하도록 구성되는데, 그 예로는, 데이터플로우 그래프를 컴파일하고, 컴파일된 데이터플로우 그래프를 실행 환경(104)에 액세스가능한 데이터 기억 시스템(107)에 기억시키거나 로딩하며, 파라미터 값을 분해(resolve)하고, 분해한 값을 파라미터에 결합하는 것 등이 있다. 어떤 경우에, 사전실행 모듈(105)은 데이터 소스(101)로부터의 데이터에 따라 작업(예를 들어, 컴파일된 데이터플로우 그래프를 로딩하는 것)을 수행한다. 데이터 소스(101)를 제공하는 기억 장치는, 실행 환경(104)을 실행하는 컴퓨터에 접속된 기억 매체(예를 들어, 하드 드라이브(102))에 기억되는 실행 환경(104)에 대하여 로컬이 되거나, 원격 접속을 통해 실행 환경을 실행하는 컴퓨터와 통신에 의해 원격 시스템(예를 들어, 메인프레임(103))에 호스트되는, 실행 환경(104) 대하여 원격이 될 수도 있다.
실행 모듈(106)은 사전실행 모듈(105)에 의해 생성된 컴파일된 데이터플로우 그래프를 사용하여 출력 데이터를 생성할 수 있는데, 이 출력 데이터는 데이터 소스(101)에 다시 제공되거나 데이터 기억 시스템(107)에 기억될 수 있다. 데이터 기억 시스템(107)은 개발 환경(development environment)(108)에 액세스 가능하며, 개발 환경의 개발자(109)는 데이터플로우 그래프를 설계할 수 있다. 데이터플로우 그래프를 나타내는 데이터 구조는 직렬화되어 데이터 기억 시스템(107) 내에 기억될 수 있다.
실행 모듈(106)은 여러 유형의 데이터베이스 시스템 등의 데이터 소스(101)의 다양한 타입의 시스템으로부터 데이터를 수신할 수 있다. 데이터는 널(null) 값 등과 같이 각각의 필드에 대한 값("속성" 또는 "컬럼"이라고도 함)을 갖는 레코드로서 구성될 수 있다. 데이터 소스로부터 데이터를 판독하는 경우, 실행되는 데이터플로우 그래프는 해당 데이터 소스 내의 레코드와 관련된 초기 포맷 정보를 취급하는 성분을 포함할 수 있다. 어떤 경우에, 데이터 소스의 레코드 구조는 처음에는 알지 못할 수 있으며, 대신에 데이터 소스의 분석 이후에 정해질 수 있다. 레코드 관련 초기 정보는 개별 값을 나타내는 비트의 수, 레코드 내의 필드의 순서, 및 비트로 나타내는 값의 타입(예를 들어, 문자열, 부호있는 정수, 부호없는 정수)를 포함할 수 있다.
도 2를 참조하면, 실행 모듈(106)에 의해 실행되는 데이터플로우 그래프(155)에 의해 입력 데이터 소스(110)로부터의 데이터가 이산적인 작업 요소의 흐름으로서 판독 및 처리될 수 있는 예를 나타내고 있다. 작업 요소를 처리하는 것과 관련된 여러 계산 부분이 그래프의 정점(또는 노드)으로서 나타낸 성분(120, 130)에서 수행되고, 성분 간의 데이터 흐름은 그래프의 링크(아크, 에지)로 나타내고 있고, 그 예로는 성분(120)과 성분(130)을 연결하는 링크(125)가 있다. 이러한 그래프 기반의 계산을 구현하는 시스템이 "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"란 명칭의 미국특허 5,966,072호에 개시되어 있는데, 본원에서 참조에 의해 원용한다. 이 시스템에 의해 이루어진 데이터플로우 그래프는 그래프 성분에 의해 나타낸 개별 프로세스에 대해 정보를 취득하고, 프로세스 사이에서 정보를 이동시키며, 프로세스에 대한 실행 순서를 정하는 방법을 제공한다. 본 시스템은 프로세스간 통신 방법(interprocess communication method)(예를 들어, 그래프의 링크에 따른 통신 경로는 TCP/IP 또는 UNIX 도메인 소켓을 이용하거나, 프로세스 사이에서 데이터를 전달하기 위해 공유 메모리를 사용할 수 있음)을 선택하는 알고리즘을 포함한다.
실행을 위한 컴파일되지 않은 데이터플로우 그래프를 준비하는 프로세스는 다양한 단계를 포함한다. 컴파일되지 않은 데이터플로우 그래프의 표시는 컴파일 프로세서에서 사용되는 값을 제공하는 데이터플로우 그래프와 연관된 임의의 파라미터와 함께 검색된다. 정적 파라미터 분해(static parameter resolution) 단계 동안, 정적 파라미터(실행 시간 이전의 분해를 위해 설계된 값을 가짐)가 분해되고, 분해된 값이 정적 파라미터에 결합된다. 일례로, 정적 파라미터의 값을 분해하기 위해, 소정의 값(예를 들어, 본원에 참조에 의해 원용되는 "Managing Metadata for Graph-based Computations"란 명칭의 미국출원 공개번호 2006/0294150에 개시된 것과 같은 메타데이터 값)을 유도하기 위한 계산이 수행된다. 일부 파라미터는 나중에 또는 실행 시간 직전에 분해할 타겟으로서 아직 분해되지 않은 동적 파라미터로서 설계될 수 있다. 조건부 성분(conditional component)으로서 설계된 성분이 그래프로부터 제거(예를 들어, 데이터플로우 링크로 대체하는 것에 의해)되는데, 예를 들어 정적 파라미터 값에 기초하여 제거되며, 소정의 조건을 만족하는 경우(만족하지 않는 경우에) 제거된다. 컴파일 단계 동안, 데이터플로우 그래프를 나타내는 데이터 구조는 그 성분 및 링크를 포함하며, 실행이 생성되는 동안 사용될 것이다. 컴파일에는 스크립트 언어로 삽입된 스크립트를 바이트코드 또는 기계어 코드로 컴파일하는 과정이 포함될 수 있다. 실행 시간에, 데이터플로우 그래프와 연관된 임의의 동적 파라미터는 분해된 값과 결합되고, 컴파일된 데이터플로우 그래프의 데이터 구조는 하나 이상의 프로세스를 개시하고, 임의의 필요한 파일(예를 들어, 동적 파라미터에 의해 식별된 파일)을 링크하고, 및/또는 임의의 동적 라이브러리에 링크함으로써 시작된다. 이 프로세스는 링크에 의해 표시된 데이터 흐름을 설정(예를 들어, 공유 메모리의 할당, TCP/IP 스트림의 개방)하기 위한 작업도 수행한다. 일례로, 데이터 구조는, 본원에서 참조에 의해 원용하는 "MANAGING COMPUTING RESOURCES IN GRAPH-BASED COMPUTATIONS"란 명칭의 미국출원 공개번호 US2007/0271381호에 개시된 것과 같이, 단일 프로세스 내에서 다수의 성분을 실행하도록 구성된다.
데이터플로우 그래프는 다양한 레벨의 추출(abstraction)에 의해 특정될 수 있다. 성분 및 링크를 포함하는 데이터플로우 그래프인 "서브그래프"(subgraph)는 단일의 성분으로서 다른 타겟 데이터플로우 그래프 내에 표현될 수 있는 것으로서, 타겟 데이터플로우 그래프에 서브그래프를 연결하는 링크만 도시하고 있다. 일례로, 서브그래프는 개발 환경(108) 내에 포함된 데이터플로우 그래프의 성분 및 링크를 은닉(hide)하는 데에 사용되지만, 성분 및 링크를 나타내는 데이터는 타겟 데이터플로우 그래프 내에 이미 통합되어 있다. 일례로, 서브그래프는 초기에는 타겟 데이터플로우 그래프 내에 포함되어 있지 않지만, 나중에 "마이크로그래프"(micrograph)로부터 유도되는데, 이 마이크로그래프는 타겟 데이터플로우 그래프에 로딩할 성분 및 링크를 나타내는 데이터 구조를 포함하는 컴파일된 데이터플로우 그래프로서 시작한다. 이에 대해서는, 나중에 상세하게 설명한다.
도 2를 참조하면, 데이터플로우 그래프(155)는, 본 예에서는 데이터세트 성분(110)에 의해 표현되는, 데이터 소스로부터의 입력 데이터의 연속 흐름을 수신할 수 있다. 데이터의 흐름은, 데이터플로우 그래프(155)의 동작 동안 많아지거나 적어진다고 해도, 데이터의 흐름, 예를 들어 엔트리 시스템에 수신된 신용카드 거래 또는 주문의 흐름이 반드시 구분가능한 시작 또는 종료를 가질 필요가 없는 것의 관점에서는 연속적이다. 또한, 데이터플로우 그래프(155)는, 본 예에서는 데이터세트 성분(140)으로 나타내는 출력 데이터 레포지토리에 대한 출력 데이터의 연속 흐름을 제공할 수 있다. 일부 데이터플로우 그래프는 무기한의 기간 동안 데이터의 연속 흐름을 처리하는 연속 데이터플로우 그래프로서 실행하도록 설계되고, 일부 데이터플로우 그래프는 이산적인 데이터 배치를 처리하기 위해 실행을 시작하는 배치 데이터플로우 그래프(batch dataflow graph)로서 실행하고 배치가 처리된 후에 실행을 종료하도록 설계된다. 데이터플로우 그래프의 데이터 처리 성분(120, 130)은 일련의 명령, 서브그래프, 또는 이들의 임의의 조합을 포함할 수 있다.
일례로, 특화 성분(specialized component)(130)은, 타겟 데이터플로우 그래프 내에 포함되고 동적으로 검색되도록 구성된 특화의 서브그래프인 마이크로그래프(micrograph)(160)를 로딩할 수 있다. 마이크로그래프는 특화 성분(130) 등의 타겟 데이터플로우 그래프의 타겟 성분으로 동적으로 삽입될 수 있다. 일례로, 마이크로그래프(160)는 컴파일되어 데이터 기억 시스템(107)에 기억된 데이터플로우 그래프로부터 유도된다. 일례로, 마이크로그래프(160)는 데이터 기억 시스템(107)으로부터 로딩될 때에는 컴파일되지 않은 형태를 유지한다. 예를 들어, 컴파일된 데이터플로우 그래프를 로딩하는 대신에, 특화 성분(130)은 특화 성분(130)을 포함하는 데이터플로우 그래프가 사용 직전에 컴파일되었던 마이크로그래프를 실행할 수 있도록, 그래프 컴파일 절차를 개시할 수 있다. 그래프 컴파일 절차는 특화 성분(130)의 외부에서 수행되거나 그 내부에서 실행될 수 있다. 일례로, 마이크로그래프(160)는 데이터 기억 시스템(107)에 기억되기 전에 직렬화(serialize)된다. 일반적으로, 직렬화는 컴파일된 또는 컴파일되지 않은 표현에서의 데이터플로우 그래프가 0과 1의 이진 스트림으로 변환되어, 데이터플로우 그래프가 지속 메모리 또는 메모리 버퍼 내에 용이하게 기억될 수 있는 형태가 되는 프로세스이다. 마이크로그래프의 고속 로딩이 요구되는 예에 있어서, 통상적으로 데이터플로우 그래프는 데이터 구조를 가진 컴파일된 표현으로 직렬화되어, 데이터 기억 시스템(107) 내에 기억되고, 이에 의해 직렬화된 컴파일된 데이터플로우 그래프는 용이하게 검색될 수 있으며, 데이터 구조가 비직렬화(de-serialize)되고 실행 시간에 동적으로 로딩된다. 컴파일은 데이터플로우 그래프로서 표현된 프로그램을 포함하는 컴퓨터 프로그램이 컴퓨터에 의한 실행을 위해 준비되는 프로세스이다. 컴파일은 컴퓨터에서 바로 실행될 수 있는 머신 코드 또는 명령어, 또는 자바 바이트 코드(Java byte code) 등과 같이 컴퓨터에서 실행되는 가상 머신에 의해 실행되는 중간 코드를 생성할 수 있다. 데이터플로우 그래프의 경우, 컴파일은 데이터플로우 그래프의 성분 및 링크를 컴퓨터에서 바로 실행될 수 있는 형태로 표현하는 데이터 구조의 생성을 포함한다.
특화 성분(130)의 인커밍 링크(incoming link)(125)에 따른 데이터플로우 그래프(155)를 통한 데이터 흐름은, 특화 성분(130)이 마이크로그래프(160)를 로딩하고 마이크로그래프(160)를 데이터플로우 그래프(155)에 통합하는 동안 버퍼 내에 일시적으로 기억된다. 마찬가지로, 데이터 흐름에 의해, 마이크로그래프가 데이터플로우 그래프(155)로부터 분리되어 언로딩되는 동안 버퍼에 축적될 수 있다. 일례로, 분리된 마이크로그래프는 나중에 액세스할 메모리 내에 로딩된 상태를 유지(예를 들어, 캐시 저장 메커니즘을 이용하여)할 수 있다.
버퍼링은 작업 요소의 입력 흐름을 성분에 제공하는 링크에 대한 입력 큐(input queue)를 사용하여 구현되는 흐름 제어 메커니즘을 사용하도록 구성될 수 있다. 이러한 흐름 제어 메커니즘에 의해, 통상적으로 대형이지만 속도는 느린 디스크 드라이브 등의 비휘발성 로컬 기억장치에 반드시 기입할 필요없이, 데이터플로우 그래프의 성분들 사이에서 데이터가 전달될 수 있도록 한다. 입력 큐는 통상 비휘발성 메모리보다 소형이고 속도가 빠른 휘발성 메모리 내에 작업 요소를 유지하기에 충분히 소형으로 될 수 있다. 매우 큰 데이터세트인 경우에도 기억 공간과 시간이 절약된다. 성분은 입력 큐 대신에 또는 이에 추가로 출력 버퍼를 사용할 수 있다. 2개의 성분이 흐름에 의해 연결되면, 다운스트림 성분이 작업 요소를 계속해서 소비하는 동안, 업스크림 성분은 작업 요소를 다운스트림 성분에 전송한다. 다운스트림 성분이 뒤처지면, 업스트림 성분은 다운스트림 성분의 입력 큐를 채우고 입력 큐가 다시 클리어될 때까지 작업을 중단한다.
일례로, 마이크로그래프(160)는 배치 데이터플로우 그래프의 일부로서 또는 커맨드 라인으로부터 스케줄링 프로세스에 의한 스케줄에 기초하여 실행되고, 반드시 타겟 데이터플로우 그래프의 특화 성분에 로딩할 필요는 없다. 대안으로서, 스케줄러는 큐로부터의 메시지에 응답하여 적절한 마이크로그래프를 로딩할 특화 성분을 포함하는, 실행중인 데이터플로우 그래프에 연속 메시지 흐름을 제공하는 큐에 메시지를 전송함으로써 배치 처리를 위한 마이크로그래프를 개시하도록 특화 성분을 사용할 수 있다.
2. 특화 성분
도 3a를 참조하면, 일례로, 특화 성분(200)은 다수의 입력(205, 210, 215)을 받고 다수의 출력(220, 225, 230, 235)을 전달하도록 구성된다. 입력은 데이터 입력(205, 210), 및 제어 입력(215)을 포함한다. 출력은, 데이터 출력(220. 225, 230) 및 상태 출력(235)을 포함한다. 제어 입력(215)은 실행할 마이크로그래프(240)의 식별자(예를 들어, 수신된 제어 요소 내에서), 및 선택적으로 마이크로그래프(240)를 실행하기 위해 사용된 일련의 파라미터를 받아들인다. 일반적으로, 특화 성분(200)은 데이터 입력(205, 210) 등의 각각의 데이터 입력 포트를 통해 입력 작업 요소의 제로 또는 그 이상의 흐름을 받아들일 수 있다. 상태 출력(235)은 마이크로그래프(240)의 실행으로부터 출구 상태 및 추적 정보를 포함하는 상태 레코드(status record)를 생성한다. 또한, 특화 성분은 데이터 출력(220, 225, 230) 등의 각각의 데이터 출력 포트를 통해 출력 작업 요소의 제로 또는 그 이상의 흐름을 생성한다. 일례로, 특화 성분(200)은 정상적인 실행 동안 하나의 상태 레코드를 생성하고 하나의 제어 레코드를 받아들인다.
제어 입력(215)은 로딩할 대응하는 마이크로그래프를 각각 식별하는 일련의 다수의 제어 요소를 수신할 수 있다. 각각의 제어 입력 요소는 식별된 마이크로그래프에 의해 처리될 작업 단위를 나타내는 데이터 입력을 통해 수신된 작업 요소의 흐름에서 작업 요소의 여러 서브세트와 연관된다. 일례로, 마이크로그래프를 식별하는 제어 요소는 해당 작업 단위를 처리하기에 적절한 마이크로그래프를 선택하기 위해 작업 단위로 하나 이상의 작업 요소를 해석하는 것에 기초하여 생성된다. 일례로, 마이크로그래프를 식별하는 제어 요소와 식별된 마이크로그래프에 의해 처리될 작업 단위를 나타내는 작업 요소는 독립적으로 수신되며, 여러 기술 중의 임의의 것을 사용하여 서로 매칭된다. 예를 들어, 마이크로그래프를 식별하는 제어 요소가 먼저 수신되고, 식별된 마이크로그래프에 의해 처리될 작업 단위를 나타내는 작업 요소가, 작업 단위 중의 하나 이상의 작업 요소를 나타내는 핵심 값(key value)을 대응하는 제어 요소(예를 들어, 작업 단위 내의 제1 작업 요소, 또는 작업 단위 중의 모든 작업 요소)에 매칭함으로써 결정된다. 이와 달리, "구분문자 작업 요소"(delimiter work element)라고 하는 작업 요소는 동일 작업 단위에 속하는 작업 요소의 상이한 시퀀스를 구분하는 구분문자로서 기능할 수 있다. 이와 달리, 특화 성분(200)은 각각의 제어 요소와 연관되는 연속하는 작업 단위에 속하도록 미리 정해진 개수의 작업 요소를 수신하도록 구성된다.
마이크로그래프(240)는 특화 성분(200)과 호환가능하도록 설계된 마이크로그래프의 집합 중에서 선택될 수 있다. 예를 들어, 마이크로그래프(240)의 입력 포트 및 출력 포트의 수는 특화 성분(200)의 입력 포트 및 출력 포트의 수와 매칭될 수 있다. 본 예에서, 마이크로그래프(240)는 2개의 입력 포트와 3개의 출력 포트를 가지며, 이들은 입력 흐름을 수신하도록 구성된 마이크로그래프(240)의 2개의 상이한 성분과 출력 흐름을 제공하도록 구성된 마이크로그래프(240)의 3개의 상이한 성분에 위치될 수 있다. 이와 달리, 마이크로그래프(240)의 다수의 입력 또는 출력 포트는 동일한 성분에 위치될 수 있다.
일례로, 특화 성분(200)은 미리 정해진 조건에 대하여 마이크로그래프(240)를 모니터링하고, 이들 조건에 응답할 수 있다. 예를 들어, 특화 성분(200)은 마이크로그래프(240)의 실행 동안의 대기 시간, 즉 레이턴시(latency)가 최대 임계값을 초과했는지 또는 타임아웃 동안인지를 판정하기 위해 개별의 프로세스를 사용해서 마이크로그래프(240)의 성분을 실행하는 프로세스를 모니터링할 수 있다. 이에 따라, 특화 성분(200)은, 예를 들어 마이크로그래프(240)의 제2 인스턴스를 로딩함으로써 조건에 응답할 수 있다. 마찬가지로, 에러 조건이 모니터링된다. 에러 조건을 검출하는 것에 따라, 특화 성분(200)은 에러를 로그할 수 있으며, 에러 조건에 기초하여 작업 단위를 리다이렉트하고, 필요하다면, 마이크로그래프(240)를 다시 시작하고, 에러를 상태 출력(235)을 통해 보고할 수 있다. 마이크로그래프(240)의 재시작은 특화 성분(200)이 포함되는 내포 데이터플로우 그래프의 임의의 다른 성분을 중단시키지 않아도 된다.
일례로, 특화 성분(200)은 실행할 마이크로그래프(240)를 판정하기 전에 입력 포트의 데이터 흐름을 해석한다. 일례로, 실행할 마이크로그래프(240)의 이름 등의 식별 정보가 데이터 흐름의 일부로서 특화 성분(200)에 제공되다. 또 다른 예로서, 마이크로그래프(240)를 식별하는 정보가 특화 성분(200)의 제어 입력(215)을 통해 제공된다.
특화 성분(200)은 데이터 기억 시스템(107)으로부터 마이크로그래프(240)를 로딩하고, 마이크로그래프(240)를 특화 성분(200)을 포함하는 데이터플로우 그래프에 삽입하는데, 이에 대해서는 나중에 더 구체적으로 설명하고, 이에 의해 마이크로그래프(240)가 데이터 흐름을 처리할 수 있게 된다.
동작이 완료되면, 특화 성분(200)은 마이크로그래프(240)를 제거한다. 일례로, 특화 성분(200)은 나중에 액세스하기 위해 데이터 기억 시스템(107)으로부터 상대적으로 더 용이하게 액세스 가능한 저장 위치에 기억되는 마이크로그래프 캐시 내에 마이크로그래프(240)를 기억시킬 수 있다.
3. 마이크로그래프 구조
도 3b를 참조하면, 마이크로그래프(240)의 예는, 업스트림 성분에 링크된 하나 이상의 입력 포트에 도달하는 데이터 흐름에서의 입력 작업 요소에 대한 동작을 수행하고, 다운스트림 성분에 링크된 하나 이상의 출력 포트를 떠나는 데이터 흐름에서의 출력 작업 요소를 생성하는, 데이터 처리 성분(305, 310, 315, 320)을 포함한다. 마이크로그래프(240)는 "인터페이스 성분"(interface component)이라고 하는, 특화 성분(200)에 마이크로그래프(240)를 삽입하는 프로세스가 가능하도록 구성된 성분(300A, 300B, 302A, 302B, 302C)을 포함한다. 인터페이스 성분은 마이크로그래프가 실행할 특화 성분에 삽입될 필요가 없는 독립된 데이터플로우 그래프로서 실행되도록 한다.
인터페이스 성분은 내포 특화 성분의 포트에 마이크로그래프를 연결하는 데에 사용된다. 마이크로그래프를 특화 성분에 삽입하는 것은, 각 인터페이스 성분을 특화 성분의 정확한 포트와 어떻게 짝을 지을 것인가를 판정하는 과정을 포함한다. 입력 인터페이스 성분(300A, 300B)은 출력 포트를 가지며, 출력 인터페이스 성분(302A, 302B, 302C)은 입력 포트를 가진다. 입력 인터페이스 성분이 특화 성분의 입력 포트와 짝을 이루면, 데이터플로우 링크가, 입력 인터페이스 성분의 출력 포트가 링크되는 포트와 해당 입력 포트 사이에 생성된다. 마찬가지로, 출력 인터페이스 성분이 특화 성분의 출력 포트와 짝을 이루면, 데이터플로우 링크가, 해당 출력 포트와 출력 인터페이스 성분의 입력 포트가 링크되는 포트 사이에 생성된다. 인터페이스 성분과 이들 각각의 특화 성분의 입력 및 출력 포트의 정확한 짝을 이룸은 다음과 같이 정해질 수 있다. 인터페이스 성분 및 특화 성분의 포트에는 식별자가 표시될 수 있다. 특화 성분의 입력/출력 포트에 할당된 식별자와 입력/출력 인터페이스 성분에 할당된 식별자 사이에 매칭이 있으면, 해당 포트와 해당 인터페이스 성분이 짝을 이룬 것이다. 식별자들 사이의 매칭은 정확할 수도 있고 정확하지 않을 수도 있다(예를 들어, 식별자의 일부 프리픽스 또는 포스트픽스 사이의 매칭을 찾는 것). 하나의 짝을 이룸 과정에서, 정확한 매칭이 정해지면, 수치적 서픽스(numeric suffix)가 붙은 인터페이스 성분이 대응하는 수치적 서픽스가 붙은 포트와 매칭된다(예를 들어, 특화 성분의 "out1" 포트는 인터페이스 성분 "Micrograph Output-1"과 짝을 이룰 것이다).
마이크로그래프가 특화 성분의 외부에서 실행되는 경우(예를 들어, 테스트를 위해 개발 환경(108)으로부터의 커맨드에 따라), 인터페이스 성분은 데이터세트 성분의 기능성을 제공하고, 인터페이스 성분의 출력 또는 입력 포트에 접속된 링크를 통해 데이터 흐름으로 작업 요소의 소스 또는 싱크를 제공한다. 적절한 기능성은 마이크로그래프가 특화 성분 내에 삽입되었는지 여부에 기초하여 정해진다. 인터페이스 성분은, 마이크로그래프가 특화 성분 내에 삽입될 때에 특화 성분과 마이크로그래프 사이에서 작업 요소를 전송하기 위한 명령, 및 마이크로그래프가 특화 성분 내에 삽입되지 않은 경우에 마이크로그래프와 저장 위치 사이에서 작업 요소를 전송하기 위한 명령을 각각 포함한다. 저장 위치는 입력 작업 요소를 제공하기 위해 판독되거나 출력 작업 요소를 수신하기 위해 기입되는 파일이 될 수 있다.
일례로, 마이크로그래프(240)는 마이크로그래프 내에 포함될 수 있는 데이터 처리 성분(예를 들어, 성분(305, 310, 315, 320))의 기능성에 제한을 가하는 것으로 구성된다. 예를 들어, 일례로, 마이크로그래프(240)의 데이터 처리 성분(305, 310, 315, 320)은 단일의 프로세스에서 실행될 수 있는 것이 요구될 수 있다(예를 들어, 본원에서 참조에 의해 원용하는 미국출원 공개번호 2007/0271381에 상세하게 개시된 것과 같이, 단일의 프로세서에서 중복시키는 것에 의해). 일례로, 마이크로그래프는 가입된 소스(예를 들어, 큐)로부터 데이터를 수신하는 가입자 성분(subscriber component)을 지원하지 않는다. 일례로, 마이크로그래프는 배치 데이터플로우 그래프로서 구성될 것이 요구될 수 있다. 일례로, 마이크로그래프(240)에 의해 실행되는 임의의 트랜잭션 동작이 단일 트랜잭션과 부합하여야 한다. 다른 예로서, 마이크로그래프(240)의 트랜잭션 특징, 예를 들어 체크포인트, 트랜잭션 콘텍스트, 다상 코미트(multi-phase commit)가 제어 입력(215)을 통해 제어된다.
데이터플로우 그래프 처리에서, 데이터의 연속 흐름은 통상적인 트랜잭션 시멘틱스에 영향을 줄 수 있다. 체크포인트 동작에는, 데이터 흐름 중의 임의의 시점에서, 데이터플로우 그래프가 데이터 흐름 중의 상기 시점으로부터 재시작할 수 있도록 충분한 상태 정보를 기억하는 과정이 포함된다. 체크포인트는 너무 빈번하게 행하면, 성능이 열화한다. 체크포인트를 너무 드물게 행하면, 트랜잭션이 실패한 경우의 회복 과정이 복잡해지고 리소스가 집중된다. 트랜잭션 콘텍스트는 그 동작이 더 큰 트랜잭션의 일부가 된다는 것을 마이크로그래프에게 알리는 데에 사용될 수 있다. 이러한 트랜잭션은 단일의 데이터 소스에 대하여 작용하는 다수의 성분을 포함하는 더 큰 트랜잭션이 되거나, 다수의 데이터 소스에 걸쳐, 예를 들어 2상 코미트 동작에서 트랜잭션을 조정하기 위해 필요한 정보를 포함할 수 있다.
4. 마이크로그래프 관리
도 4를 참조하면, 일례로, 특화 성분(405)은 특화 성분에 액세스 가능한 캐시에 일시에 로딩된(예를 들어, 로컬 메모리에 기억된) 하나 이상의 마이크로그래프를 가질 수 있다. 본 예에서, 하나의 마이크로그래프(430)는 특화 성분(405)을 포함하는 데이터플로우 그래프에 연결된다. 특화 성분(405)의 입력(440)은 마이크로그래프(430)의 입력(445)에 링크에 의해 연결되고, 마이크로그래프(430)의 출력(450)은 특화 성분(405)의 출력(455)에 링크에 의해 연결된다. 마이크로그래프(430)의 입력(440) 및 출력(450)은 입력 및 출력 인터페이스 성분, 또는 마이크로그래프를 특화 성분에 삽입하기 위한 임의의 다른 메커니즘을 나타낸다.
다른 마이크로그래프(410, 415, 420, 425)를 기억하는 캐시는 연결된 마이크로그래프(430)를 기억하는 동일 메모리에 위치될 수 있다. 일례로, 마이크로그래프(410, 415, 420, 425, 430)는, 특화 성분(405)을 수행하는 동일 프로세스 내에서 쓰레드로서, 또는 해당 프로세스의 자식 프로세스(child process)로서 실행될 수 있다. 이와 달리, 마이크로그래프(410, 415, 420, 425, 430)는 해당 프로세서의 동일한 메인 쓰레드 내에서 실행될 수 있다. 일례로, 특화 성분(405)은 마이크로그래프(410, 415, 420, 425, 430)의 다수의 복제를 수행한다. 일례로, 특화 성분(405)은 데이터 기억 시스템(107)에 기억된 원본 마이크로그래프를 액세스하기 전에 캐시에 기억된 선택된 마이크로그래프의 복제물을 사용하는데, 해당 복제물이 "부정한 것"(dirty)(원본 마이크로그래프에 변경이 있었다는 것을 나타냄)으로 표시되지 않는 한, 복제물을 사용한다. 선택된 마이크로그래프의 복제물이 캐시 내에 없으면, 특화 성분(405)은 데이터 기억 시스템(107)으로부터 마이크로그래프를 로딩한다. 일례로, 선택된 마이크로그래프가 "오프라인" 상태, 즉 선택된 마이크로그래프가 현재 이용할 수 없다(예를 들어, 마이크로그래프가 개발자에 의해 수정되는 과정에 있다)는 것을 나타내는 상태로 되는 것을 나타낼 수 있다(예를 들어, 캐시 내의 엔트리에 의해). 이에 따라, 특화 성분은 선택된 마이크로그래프를 로딩하는 데에 에러가 있다는 것을 나타낼 수 있으며, 또는 대체 마이크로그래프(예를 들어, 유사한 성능을 가진 상이한 마이크로그래프)를 로딩할 수 있다.
도 5a를 참조하면, 단일의 특화 성분(505)이 데이터 흐름에 동일 시간에 통합된 다수의 마이크로그래프(510, 515, 520)를 갖는 경우가 있다. 특화 성분(505)의 입력 포트(525)는 입력 데이터 흐름으로부터의 작업 요소를 다수의 데이터 흐름으로 분할하는 분할 성분(partition component)(557)을 사용하여 마이크로그래프(520, 515, 510)의 입력(530, 545, 555)에 연결된다. 마이크로그래프의 출력(535, 550, 560)은 다수의 데이터 흐름으로부터 작업 요소를 수집하고, 이들을 단일의 출력 데이터 흐름에 병합하는 성분(562)("수집 성분"이라고 함)을 사용하여, 특화 성분(505)의 출력(540) 포트에 연결된다. 이러한 구성에서, 특화 성분(505)은 인커밍 데이터의 마이크로그래프(510, 515, 520)로의 경로설정을 할 수 있다. 예를 들어, 성분이 동일한 마이크로그래프의 개별 복제물인 경우, 특화 성분(505)은 분할을 수행할 때에, 부하 균형 알고리즘(load balancing algorithm)(예를 들어, 라운드 로빈, 최소 사용 등)을 사용할 수 있다.
도 5b를 참조하면, 데이터플로우 그래프(565)는 커스터마이즈 성능이 높이 컨테이너 데이터플로우 그래프 내에 배치할 마이크로그래프의 유연한 조합을 가능하게 하는, 다수의 특화 성분을 포함하는 경우가 있다. 본 예에서, 데이터세트 성분(570)으로부터의 작업 요소(입력 데이터의 연속 스트림 또는 입력 데이터의 배치를 표현할 수 있음)가 데이터 처리 성분(572)에 의해 먼저 처리되고(예를 들어, 작업 요소를 리포맷함), 이어서 링크(574)를 통해 제1 특화 성분(576)에 전송된다. 특정 타입의 작업 요소를 검출하는 것에 의해, 성분(576)은 검출된 타입의 작업 요소를 처리하도록 구성된 마이크로그래프를 로딩한다. 제1 특화 성분(576)으로부터의 처리된 출력 작업 요소는 마이크로그래프(582)를 로딩하는 제2 특화 성분(580)에 전송된다. 본 구성에서, 제2 특화 성분(580)으로의 로딩을 위해 선택되는 마이크로그래프(582)는 선택된 제1 마이크로그래프(578)의 결과에 따라 달라질 수 있다. 작업 요소의 결과 출력은 데이터세트 성분(584)에 전송된다. 상이한 마이크로그래프의 많은 조합이 데이터플로우 그래프 내의 전략적 위치 내의 특화된 성분을 사용하여 동적으로 로딩될 수 있다. 이러한 간단한 예에서, 특화된 제1 성분(576)에 로딩될 수 있는 10개의 여러 가능한 마이크로그래프가 있고, 특화된 제2 성분(580)에 로딩될 수 있는 10개의 여러 가능한 마이크로그래프가 있다면, 데이터 흐름이 처리되는 동안 필요에 따라 동적으로 구성될 수 있는 100개의 상이한 데이터플로우 그래프가 존재하며, 데이터플로우를 100개의 상이한 실행하는 데이터플로우 그래프를 분할하는 것에 비해 필요한 리소스의 수가 훨씬 적어지며, 각 작업 단위에 대한 100개의 상이한 데이터플로우 그래프 중의 하나를 개시하는 것에 비해 대기시간이 훨씬 짧아지게 된다.
5. 전처리 및 후처리
특화 성분은 로딩된 마이크로그래프 내의 성분에 추가로 다른 성분을 포함할 수 있다. 도 6을 참조하면, 예를 들어, 특화 성분(605)은 마이크로그래프가 실행되기 전의 전처리와 마이크로그래프가 실행된 이후의 후처리를 포함한다(도면에서는, 마이크로그래프(615) 주변의 전처리 성분(610) 및 후처리 성분(620)으로 표현됨). 전처리 및 후처리 동작은, 예를 들어 트랜잭션 관리에 관련될 수 있다. 일례로, 각각의 마이크로그래프(615)는 전처리가 트랜잭션을 시작하고 후처리가 트랜잭션을 종료할 수 있는 경우의 별개의 트랜잭션을 나타낸다. 다른 예에서, 마이크로그래프(615)는 더 긴 트랜잭션에서 체크포인트를 나타낼 수 있다. 예를 들어, 마이크로그래프(615)는 2상 코미트 프로토콜을 사용하여 더 긴 트랜잭션의 일부가 될 수 있다. 이러한 트랜잭션은, 예를 들어 동일한 마이크로그래프의 다수의 실행이나 다수의 상이한 마이크로그래프를 사용하여 처리될 수 있다.
전처리 성분(610)은 데이터 기억부(도시 안 됨)로부터 마이크로그래프(615)를 로딩하고, 로딩한 마이크로그래프를 데이터 캐시에 저장할 수 있는데, 이는 나중에 액세스하거나 메모리 캐시(도시 안 됨)로부터 마이크로그래프의 로딩한 버전을 액세스하기 위한 것이며, 특화 성분(605)에 통합시킬 수 있다. 후처리 성분(620)은 특화 성분(605)의 데이터 흐름과의 통합으로부터 로딩된 마이크로그래프(615)를 제거할 수 있다. 다양한 다른 전처리 및 후처리 기능이 수행될 수 있는데, 마이크로그래프(615)에 의한 처리를 위한 데이터 흐름 내에 레코드를 준비하는 것에 의한 전처리(예를 들어, 레코드의 재포맷), 및 특화 성분(605)의 출력에 연결된 성분에 의한 처리를 위한 마이크로그래프(615)로부터 수신된 레코드를 준비하는 것에 의한 후처리를 포함한다.
6. 데이터베이스 연결 관리
도 7을 참조하면, 상이한 성분이 여러 타입의 데이터베이스를 액세스 가능하도록 하는 것이 요구되는 경우가 있다. 예를 들어, 성분(702)은 어느 판매자에 의해 제공되는 데이터베이스(706)를 액세스할 수 있어야 하고, 다른 성분(704)은 다른 판매자에 의해 제공되는 데이터베이스(704)를 액세스할 수 있어야 한다. 일반적으로, 성분(702)은 해당 성분에 통합된 라이브러리(710), 예를 들어, 데이터베이스(706)의 판매자에 의해 공급되는 라이브러리를 액세스함으로써, 데이터베이스(706)를 액세스할 것이다. 마찬가지로, 성분(704)은 해당 성분에 통합된 다른 라이브러리(712), 예를 들어, 데이터베이스(708)에 의해 제공되는 라이브러리를 액세스함으로써 데이터베이스(708)를 액세스할 것이다. 라이브러리는 특정 성분에 컴파일되거나, 특정 성분에 동적으로 연계될 수 있다.
도 8을 참조하면, 특화 성분(802)은 다수의 상이한 마이크로그래프(804, 806, 808)를 포함할 수 있다. 일례로, 마이크로그래프(808)는 특화 성분(802) 내에 삽입되며, 마이크로그래프(804, 806)는 필요에 따라 동적으로 삽입될 액세스 가능한 캐시에 로딩된다. 마이크로그래프 중의 일부는 하나의 데이터베이스(706)를 액세스할 수 있고, 나머지 마이크로그래프는 다른 데이터베이스(708)를 액세스할 수 있다. 통상적으로, 2개의 데이터베이스를 액세스하기 위해서는, 제1 데이터베이스(706)를 지원하는 라이브러리(710)와 특화 성분(802)과 통합될 다른 데이터베이스(708)를 지원할 다른 라이브러리(712)를 필요로 할 수 있다. 다수의 여러 데이터베이스 라이브러리를 통합하는 것에 의해, 특화 성분(802)과 연관된 바이너리의 크기가 증가하고, 하나의 판매자에 의해 공급되는 어느 라이브러리(710)가 다른 판매자에 의해 공급되는 다른 라이브러리(712)와 호환가능한 경우에는 동작을 예측할 수 있다. 예를 들어, 부호 이름이 충돌하거나 컴파일 모델이 달라질 수 있다.
이러한 비호환을 피하고 및/또는 바이너리의 크기를 감소시키는 한가지 방법은 특화 성분으로부터 라이브러리를 제거하고, 대신에 특화 성분을 실행하는 프로세스로부터 별개의 컴퓨터 프로세스에 의해 액세스되도록 하는 것이다. 도 9a를 참조하면, 데이터베이스 라이브러리(710, 712)는 특화 성분(902)으로부터 제거된다(예를 들어, 컴파일되지 않거나 성분((02)에 동적으로 연계되지 않음). 마이크로그래프 성분(904, 906, 908)은 클라이언트/서버 인터페이스를 통해 라이브러리(710, 712)를 액세스함으로써 데이터베이스(706, 708)를 액세스한다. 라이브러리(710, 712)를 액세스하기 위해, 특화 성분(902)은 프로세스간 통신을 사용하여 외부 처리에서 실행되는 쌍을 이루는 서버 스터브(server stub)(912)와 통신하는 통합된 클라이언트 스터브(910)를 사용한다. 예를 들어, 외부 프로세스 및 특화 성분(902)은 공유 메모리 세그먼트를 액세스함으로써 데이터를 교환해도 된다. 마찬가지로, 서버 스터브(920)를 실행하는 외부 프로세스를 액세스하기 위해, 특화 성분(902)은 프로세스간 통신을 사용하여 외부 프로세스에서 구동되는 서버 스터브(920)와 통신하는 다른 통합된 클라이언트 스터브(918)를 사용한다.
서버 스터브(912)는 데이터베이스(706)에 대한 액세스를 제공하기 위해 데이터베이스 라이브러리(710)와 통합한다. 마찬가지로, 서버 스터브(920)는 데이터베이스(708)에 대한 액세스를 제공하기 위해 데이터베이스 라이브러리(712)와 통합한다. 일반적으로, 클라이언트 스터브(910, 918)는 데이터베이스 라이브러리(710, 712)보다 작은 메모리 풋프린트(memory footprint)를 가지며, 따라서 특화 성분이 메모리 리소스를 덜 사용하게 된다. 또한, 데이터베이스 라이브러리는 특화 성분(902)으로부터 제거되었기 때문에, 데이터베이스 라이브러리(710, 712) 사이의 비호환성(incompatibility)의 위험이 없다.
도 9b를 참조하면, 일례로, 클라이언트 스터브(client stub)(910, 918) 및 서버 스터브(912, 920)는 데이터베이스 라이브러리(710, 712)의 각각의 애플리케이션 프로그래밍 인터페이스(API)를 밀접하게 반영하도록 구성된다. 마이크로그래프(904, 906, 908)를 라이브러리 API의 차이로부터 분리시키기 위해, 추출 층(930)이 특화 성분(902)에 통합된다. 추출 층(930)은 여러 데이터베이스에 대한 데이터베이스 라이브러리들 사이의 차이에 상관없이 표준 데이터베이스 작용을 수행하는 단일의 API를, 여러 데이터베이스에 액세스하기 위해 필요할 수 있는 마이크로그래프 내의 다수의 상이한 성분에 제공한다. 일례로, 추출 층(930)은 마이크로그래프의 성분으로부터의 요청을, 클라이언트 스터브(910, 918)의 라이브러리 특정 API 전용 호출로 변환한다. 일례로, 추출 층(930)은 마이크로그래프 성분으로부터의 요청을 일반 호출로서 전달하고, 각각의 클라이언트 스터브를 일반 호출로부터 각각의 서브 스터브의 API에 대한 라이브러리 특정 호출로의 변환을 수행하도록 구성된다.
7. 컴파일 및 파라미터
도 10을 참조하면, 일례로, 데이터플로우 그래프 컴파일 및 실행 시스템(1000)은 데이터플로우 그래프 컴파일러(1015), 파라미터 해석기(1030), 데이터플로우 그래프 로더(1035), 및 데이터플로우 그래프 실행 엔진(1040)을 포함한다. 컴파일러(1015)는 파라미터 세트 데이터 기억부(1005)로부터 파라미터 세트 중의 파라미터에 기초하여, 컴파일되지 않은(un-compiled) 데이터플로우 그래프 데이터 기억부(1010)로부터, 마이크로그래프를 포함하는 컴파일되지 않은 데이터플로우 그래프를 처리한다. 소정의 파라미터와 연관된 값은 데이터플로우 그래프의 다양한 특징을 판정할 수 있다. 컴파일러(1015)는 파라미터 세트로부터의 값을 사용하여 데이터플로우 그래프를 컴파일하여 컴파일된 데이터플로우 그래프를 생성한다. 컴파일된 데이터플로우 그래프는 컴파일된 데이터플로우 그래프 데이터 기억부(1020)에 기억된다. 데이터 기억부(1010, 1020)는, 예를 들어 데이터 기억 시스템(107) 내에서 호스트될 수 있다. 컴파일러(1015), 파라미터 해석기(1030), 및 로더(1035)는, 예를 들어 사전실행 모듈(105)의 일부로서 구현될 수 있다. 실행 엔진(1040)은 실행 모듈(106)의 일부로서 구현될 수 있다.
파라미터 세트 데이터 기억부(1005)는 파라미터 세트를 포함하며, 각각의 파라미터 세트는 데이터플로우 그래프와 연관될 수 있다. 파라미터 세트는 파라미터 요소 그룹을 포함한다. 이들 요소는 파라미터 및 표현식(expression)을 포함하는데, 표현식은 평가될 때(예를 들어, 계산을 수행함으로써, 일부의 경우에는, 다른 기준 파라미터의 값을 구해서) 파라미터에 대한 한계가 되는 값으로 분해된다. 각각의 컴파일되지 않은 파일 데이터플로우 그래프는 하나 이상의 파라미터 세트와 연관될 수 있다. 일부 파라미터는 컴파일 프로세스에 영향을 미칠 수 있다. 예를 들어, 일부 파라미터는 소정의 조건부 성분이 데이터플로우 그래프의 컴파일된 버전에 포함되는지 여부에 영향을 줄 수 있다. 일부 파라미터는 컴파일된 데이터플로우 그래프의 로딩 및 런칭에 영향을 줄 수 있다. 예를 들어, 파라미터의 값은 컴퓨터에 기억된 파일, 또는 입력 데이터를 포함하거나 출력 데이터에 대한 타겟이 되는 데이터세트 성분과 연관된 기억 위치(예를 들어, 데이터베이스 내의 테이블을 나타내는 기억 위치)의 이름에 대한 경로가 될 수 있다. 파라미터의 값은 소정의 성분과 병렬로 얼마나 많은 방법을 구동시킬 필요가 있는지를 판정할 수 있다. 파라미터의 값은 성분들 간의 링크의 데이터 흐름이, 연계된 성분을 실행하는 여러 컴퓨터 및/또는 프로세서 사이의 경계를 가로지르는지 여부를 판정하여, 공유 메모리 흐름이 아니라 TCP/IP 흐름이 할당될 수 있다. 파라미터의 값은 다른 파라미터에 의존하는 경우도 있다. 예를 들어, 현재 변환 조사 파일의 이름은 날짜를 특정하는 파라미터에 의존할 수 있다.
일반적으로, 파라미터는 콘텍스트에 기초하여 파라미터 검사(parameter scoping)에 의한 값에 결합된다. 소정의 파라미터는 제1 콘텍스트 내의 하나의 값과 다른 콘텍스트 내의 상이한 값을 가질 수 있다. 파라미터는 컴파일이 행해지는 동안의 값(예를 들어, 파라미터가 컴파일 프로세스에 영향을 줄 수 있는 경우에, 컴파일러(1015)에 의해), 실행 시간 중에(예를 들어, 로더(1035)가 컴파일된 데이터플로우 그래프 데이터 구조를 실행 엔진(1040)을 위한 메모리에 로딩하는 경우), 데이터플로우 그래프가 실행되는 동안(예를 들어, 파일이 판독 또는 기입되기 직전까지 분해되는 파일 이름을 제공하는 파라미터를 지연시키는 경우), 또는 일부의 경우에, 여러 시간의 조합에 결합될 수 있다. 파라미터의 값은, 예를 들어 데이터 소스 내에 포함된 파일로부터 정의된, 또는 파라미터가 다른 파라미터와 "동일한" 관계를 갖도록 설정함으로써, 동일 콘텍스트 또는 상이한 콘텍스트 내의 다른 파라미터와 관련해서 정의된, 사용자 인터페이스를 통해 사용자에 의해(예를 들어, 프롬프트에 응답하여) 정의될 수 있다.
데이터플로우 그래프용의 파라미터는 컴파일 동안(예를 들어, 컴파일러(1015)에 의해) 등과 같이 임의의 입력 데이터가 수신되기 전에 결합될 수 있다. 데이터플로우 그래프의 컴파일 이전 또는 동안에 결합되는 이러한 파라미터를 "정적 파라미터"(static parameter)라고 한다. 데이터플로우 그래프용의 파라미터는 실행 직전(예를 들어, 새로운 데이터 배치 또는 데이터 흐름 내의 초기 작업 단위의 수신에 응답하여 로더(1035)에 의해), 또는 실행 시간 동안(예를 들어, 데이터 흐름 내의 새로운 작업 단위를 취급하도록 데이터의 새로운 배치를 취급하도록 새로운 마이크로그래프를 로딩하는 것에 응답하여 실행 엔진(1040)에 의해) 등의 새로운 입력 데이터를 수신하는 것에 따라 결합될 수 있다. 데이터플로우 그래프의 컴파일 이후 및 실행 시간에 근접하는 것에 결합되는 이러한 파라미터를 "동적 파라미터"라고 한다. 어떤 경우, 동적 파라미터는 데이터 흐름 내의 작업 단위 또는 데이터의 새로운 배치에 대해 재평가를 할 필요는 없다. 정적 파라미터는 그래프가 컴파일되는 동안에 평가되는 것이 일반적이며, 컴파일된 데이터플로우 그래프에 영향을 줄 수 있다. 그러나, 정적 파라미터는 예를 들어 컴파일이 실행 시간까지 이루어지지 않은 경우에 실행 시간에 평가될 수 있다. 동적 파라미터는 실행 시간에 평가되고 데이터플로우 그래프를 개시하는 전체 레이턴시에 기여할 수 있기 때문에, 동적 파리머터 평가는, 일부의 경우에, 동적 파라미터의 성능을 제한하는 것에 의해 최적화될 수 있다. 예를 들어, 동적 파라미터는 특정 데이터 타입(예를 들어, 문자열)에 결합될 수 있으며, 소정의 표현식 내에서 참조되지 않을 수 있으며, 더 제한된 결합(예를 들어, "동일한" 결합에 의해 직접적으로 또는 간접적으로 참조되지 않는)을 가질 수 있다. 그러나, 다른 예에서는, 동적 파라미터가 이들의 기능이 제한되지 않을 수 있으며, 마치 다른 파라미터처럼 사용된다.
컴파일러(1015)를 컴파일 프로세스 동안 정적 파라미터와 동적 파라미터를 구분하도록 하는 방법이 많이 있다. 그중 하나는, 동적 파라미터가 결합되지 않은 상태를 가져야 하는 컴파일러에 신호를 보내는, 파라미터 세트 내의 동적 파라미터를 위한 플래그 또는 특별한 신택스를 사용하는 것이다. 다른 방법은, 파라미터 세트의 정적 및 동적 파라미터를 여러 상이한 서브세트로 분리하고, 컴파일러(1015)에 정적 파라미터 서브세트만을 제공하는 것이다. 동적 파라미터의 서브세트는 실행 시간에 로더(135)에 제공된다. 컴파일러(1015)가 동적 파라미터를 분해된 값에 결합하지 않아도, 컴파일러(1015)는 컴파일 동안 동적 파라미터를 체크(예를 들어, 타당하지 않은 신택스 또는 다른 오류를 발견하기 위해)하도록 구성될 수 있다. 소정의 표현식은 정적 및 동적 파라미터 참조를 모두 포함할 수 있다. 예를 들어, 정적 디렉토리 이름 파라미터는 컴파일러(1015)에 의해 분해될 수 있지만, 동적 파일 이름 파라미터는 분해되지 않을 수 있으며, 컴파일러(1015)는 컴파일 프로세스 동안 분해되지 않은 동적 파라미터 참조를 보존할 수 있는데, 동적 파라미터로서 인식되기 때문이다.
파라미터의 존재 또는 값은 데이터플로우 그래프 내의 성분의 토폴로지 및/또는 접속성에 영향을 줄 수 있다. 파라미터는 하나 이상의 성분에 의해 수행되는 동작이 그래프의 특정 실행 동안 실행되지 않는 것을 나타낼 수 있다. 이것은 특히 동일한 데이터플로우 그래프가 2개의 상이한 데이터 소스에서 사용되는 경우와 관련될 수 있다. 예를 들어, 하나의 데이터 소스가 제1 포맷(예를 들어, UTF-8)이고, 다른 소스가 적어도 일부 문자를 위한 상이한 인코딩을 사용하는 제2 포맷의 텍스트를 포함할 수 있다. 이들 데이터 소스를 처리하는 데이터플로우 그래프는 제2 포맷 내의 텍스트를 UTF-8 포맷으로 변환할 필요가 있을 수 있다. 그러나, UTF-8 데이터 소스에 액세스할 때에, 변환은 필요하지 않을 것이다. 파라미터는 데이터플로우 그래프에, 데이터가 이미 UTF-8 포맷으로 되어 있고 변환 성분이 바이패스될 수 있다는 것을 통보하는 데에 사용될 수 있다. 일례로, 파라미터 값에 기초한 조건부 성분의 배제에 의해 조건부 성분이 제거되고 컴파일된 데이터플로우 그래프 내의 데이터플로우와 교체된다. 조건부 성분에 대한 추가의 설명은, 본원에서 참조에 의해 원용하는 미국특허 7,164,422에 개시되어 있다.
도 10을 다시 참조하면, 컴파일러(1015)는 컴파일되지 않은 데이터플로우 그래프 데이터 기억부(1010)로부터 컴파일되지 않은 데이터플로우 그래프를 취득한다. 컴파일러(1015)는 파라미터 세트 데이터 기억부(1005)로부터 데이터플로우 그래프를 컴파일하는 데에 사용되는 파라미터 세트를 취득한다. 일례로, 다수의 상이한 파라미터 세트는 소정의 데이터플로우 그래프, 각각의 파라미터 세트에 사용될 수 있으며, 그래프 컴파일러(1015)는 컴파일되지 않은 데이터플로우 그래프의 대응하는 버전을 컴파일할 수 있다. 데이터플로우 그래프의 각각의 컴파일된 버전은 파라미터 세트 내의 파라미터의 값에 기초하여 일부 성분 또는 다른 실행가능한 문(executable statement)을 포함하거나 배제할 수 있다. 컴파일된 데이터플로우 그래프는, 예를 들어, 컴파일된 데이터플로우 그래프가 직렬화된 경우에, 컴파일된 데이터플로우 그래프를 생성하기 위해 사용된 파라미터 세트로부터 결합된 파라미터 값과 연관될 수 있다. 컴파일된 데이터플로우 그래프는 다수의 상이한 메커니즘(예를 들어, 조사 테이블, 데이터베이스 내의 외래 키와 주요 키의 관계 등)을 사용하여 연관된 파라미터 세트로부터 파라미터 값과 연관된다. 컴파일된 데이터플로우 그래프 데이터 기억부(1020)는, 예를 들어 판독 및 기입 동작을 할 수 있는 임의의 파일 시스템 또는 데이터베이스를 사용하여 구현될 수 있다.
데이터플로우 그래프 실행 동안("실행 시간"에), 데이터는 입력 데이터 소스(1025)로부터 시스템에 입력된다. 입력 데이터 소스(1025)는 고유의 기억 포맷과 인터페이스(예를 들어, 데이터베이스 테이블, 스프레드시트 파일, 플랫 텍스트 파일, 또는 메인프레임에 의해 사용되는 네이티브 포맷)를 가질 수 있는 다양한 개별의 데이터 소스를 포함할 수 있다. 각각의 데이터 소스는 동일 컴퓨터 시스템(예를 들어, 파일)에 호스트되는 시스템(1000)에 대해 로컬이 되거나, 근거리 또는 광대역 데이터 네트워크를 통해 액세스되는 원격 컴퓨터에 호스트되는 시스템(1000)에 대해 원격이 될 수 있다.
파라미터 해석기(1030) 및 로더(1035)는 데이터플로우 그래프가 기억된 컴파일된 데이터플로우 그래프로부터 신속하게 로딩되도록 하고, 부담이 되는 컴파일 프로세스를 피하도록 하며, 수신된 입력 데이터에 따라 데이터플로우 그래프의 여러 컴파일된 버전 중에서 선택하는 것에 의해 실행 시간에 유연성을 허용하도록 한다. 파라미터 해석기(1030)는, 입력 데이터 소스(1025)로부터 수신하는 입력 데이터에 따라, 해당 입력 데이터와 실행 시간까지 알지 못한 다른 값을 해석하여, 타겟 데이터플로우 그래프와 함께 사용될 하나 이상의 파라미터(정적 파라미터 및 동적 파라미터를 포함)에 대한 값을 정한다. 타겟 데이터플로우 그래프는 상이한 각각의 파라미터 세트를 사용하여 컴파일된 데이터플로우 그래프 데이터 기억부(1020) 내에 기억된 여러 버전으로 컴파일되었던 컴파일되지 않은 데이터플로우 그래프이다. 로더(1035)는 파라미터 해석기(1030)에 의해 제공되는 정적 파라미터의 임의의 값을 매칭을 구하기 위해 타겟 데이터플로우 그래프의 컴파일된 버전 중의 임의의 것을 생성하는 데에 사용될 수 있었던 이들 동일 파라미터의 임의의 값과 비교한다. 로더(1035)가 정적 파라미터 내에 매칭을 찾는다면, 로더(1035)는 동적 파라미터를 분해 및 결합할 수 있으며, 실행 엔진(1040)에 의해 런칭될 데이터플로우 그래프를 로딩할 수 있다. 로더(1035)가 정적 파라미터에서 매칭을 찾지 못하면, 로더(1035)는 입력 데이터를 에러 프로세스(도시 안 됨)로 보내거나, 여러 상이한 파라미터 값을 최적화되지 않은 디폴트로서 취급할 수 있는 이용가능한 타겟 데이터플로우 그래프의 버전을 가질 수 있다. 이와 달리, 로더는 새로운 버전의 타겟 데이터플로우 그래프를 적절한 정적 파라미터 값과 비교하도록 컴파일러(1015)를 개시할 수 있다. 이들 경우에, 컴파일은 필요에 따라 행해질 수 있다. 타겟 데이터플로우 그래프가 실행되는 경우, 컴파일은 실행 시간에 행해지며, 결합된 정적 파라미터를 갖는 결과의 컴파일된 데이터플로우 그래프가 보존된다. 이어서, 타겟 데이터플로우 그래프가 실행되는 경우, 바람직한 정적 파라미터 값을 갖는 컴파일된 버전이 발견되지 않은 경우에는 다시 컴파일한다.
예를 들어, 파라미터 A, B, C(A와 B는 정적 파라미터, C는 동적 파라미터)를 포함하는 파라미터 세트의 경우, A=True, B=False를 사용하여 컴파일한 타겟 데이터플로우 그래프의 컴파일된 제1 버전과, A=True, B=True를 사용하여 컴파일한 동일 타겟 데이터플로우 그래프의 컴파일된 제2 버전을 고려한다. 파라미터 해석기(1030)에 의해, 수신된 작업 단위는 A=True, B=True, 및 C=True를 가진 타겟 데이터플로우 그래프를 사용하여 처리되어야 한다고 판정하면, 컴파일된 제2 버전이 로딩될 수 있으며, 동적 파라미터 C가 로더(1035)에 의해 결합된다. 파라미터 해석기(1030)에 의해 A=False, B=True, 및 C=True를 가진 타겟 데이터플로우 그래프를 사용해서 수신된 작업된 단위가 처리되어야 한다고 판정되면, 새로운 버전의 타겟 데이터플로우 그래프가 A=False 및 B=True를 가진 컴파일러(1015)에 의해 컴파일되고, 동적 파라미터 C는 로더(1035)에 의해 결합된다. 새롭게 컴파일된 버전은 나중에 사용하기 위해 컴파일된 데이터플로우 그래프 데이터 기억부(1020)에 기억시켜도 된다.
로더(1035)는 입력 데이터 소스(1025)로부터 입력 데이터의 흐름을 처리하기 위해 실행될 그래프 실행 엔진(1040)에 액세스 가능한 메모리에, 선택된 컴파일된 데이터플로우 그래프를 로딩한다. 일례로, 로더(1035)의 기능은 실행되는 데이터플로우 그래프 내의 특화 성분에 의해 수행되며, 로딩된 데이터플로우 그래프는 특화 성분 내에 삽입된 마이크로그래프이다. 로더(1035)는 컴파일된 데이터플로우 그래프 데이터 기억부(1020)를 반드시 액세스하지 않고도, 메모리 내에 캐시 저장된(적절한 정적 파라미터 값이 사용되었다고 판정된 후) 선택된 컴파일된 데이터플로우 그래프의 사전 로딩된 버전에 액세스할 수 있다. 로딩된 데이터플로우 그래프는 실행 엔진(1040)에 의해 실행된다. 입력 데이터가 타겟 데이터플로우 그래프에 의해 처리되면, 데이터플로우 그래프는 시스템으로부터 언로딩되거나, 나중에 액세스하기 위해 캐시 저장될 수 있다.
일반적으로, 데이터플로우 그래프의 컴파일은 그래프가 실행가능한 포맷으로 변환되는 프로세스이다. 실행가능 포맷은 플랫폼 특정 형식(예를 들어, 머신 코드) 또는 중간 형식(예를 들어, 바이트 코드)이 될 수 있다. 예를 들어, 컴파일러(1015)는 정적 파라미터를 분해하고, 데이터플로우 그래프를 횡단하며, 이것을 실행할 준비가 된 일련의 데이터 구조로 감축한다. 정점과 링크로서 표현되는 데이터플로우 그래프로부터 머신 코드로의 변환은 다수의 단계를 포함할 수 있다. 이들 단계 중 하나는 데이터플로우 그래프가 3세대 프로그래밍 언어(예를 들어, C, C#, C++, Java)로 변환되는 동적 코드 생성을 포함할 수 있다. 3세대 언어로부터, 기계로 판독가능한 코드 또는 바이트 코드는 표준 컴파일러를 사용해서 생성될 수 있다.
일례로, 파라미터가 정적 파라미터로서 처리되는지 동적 파라미터로서 처리되는지 여부는 컴파일까지 정해지지 않는다. 평가되는 파라미터 및 이들의 값은 정적 파라미터로서 처리되는 컴파일된 데이터플로우 그래프로 하드 코딩된다. 반면에, 동적 파라미터는 일반적으로 컴파일할 때에는 평가되지 않고, 그래프를 로딩하거나 실행할 때에 평가된다. 앞서 설명한 바와 같이, 파라미터 세트에 의해 정해지는 값은 실행 시간에 신속한 로딩 및 실행을 위해 여러 컴파일된 버전의 데이터플로우 그래프를 제시하기 위해 사용된다. 파라미터 세트로부터 파라미터 값이 컴파일된 그래프에 대해 유효한 값만을 확정적으로 정의하는 경우에, 해당 값은 컴파일된 데이터플로우 그래프로 부호화되며, 파라미터는 정적 파라미터로서 취급된다. 다른 경우로서, 파라미터 세트로부터의 파라미터 값이 가능한 값의 범위에 있으면, 파라미터는 정적 파라미터로서 컴파일할 때에 평가되지 않고, 로딩할 때나 실행 시간에 동적 파라미터로서 평가될 수 있다.
컴파일 프로세스 동안, 컴파일러는, 예를 들어 불필요한 실행가능 문을 제거함으로써, 데이터플로우 그래프를 최적화할 수 있다. 예를 들어, 데이터플로우 그래프는 조건부 성분을 포함할 수 있다. 조건부 성분은 하나 이상의 파라미터의 값에 따라 컴파일된 데이터플로우 그래프로에 포함되거나 이로부터 배제되는 일련의 실행가능 문을 포함할 수 있다. 조건부 성분은 그래프 최적화 또는 특화 등의 다양한 목적에 사용될 수 있다. 그래프 최적화에 대하여, 애플리케이션은 이들로부터의 값이 사용되지 않는 경우에 데이터세트의 생성 또는 프로세스를 생략함으로써, 그래프가 더 효율적으로 실행되도록 한다. 그래프 특화의 경우, 애플리케이션은 구체적인 원하는 레벨에 따라 여러 상이한 출력 데이터세트의 생성을 조건화하거나 그래프의 몇 가지 선택적인 부분 중의 하나를 실행할 수 있다.
상기 설명한 방법들은 컴퓨터에서 소프트웨어에 의해 구현될 수 있다. 예를 들어, 소프트웨어는 하나 이상의 프로세서, 하나 이상의 데이터 기억 시스템(휘발성, 비휘발성, 비일시적 메모리 및/또는 기억 요소를 포함), 하나 이상의 입력 장치 또는 포트, 및 하나 이상의 출력 장치 또는 포트를 포함하는, 하나 이상의 프로그램된 또는 프로그램가능한 컴퓨터 시스템(분산, 클라이언트/서버, 또는 그리드 등의 다양한 구조를 가짐)에서 실행되는 하나 이상의 컴퓨터 프로그램의 절차를 구성한다. 소프트웨어는 계산 그래프의 설계 및 구성에 관련된 다른 서비스를 제공하는 더 큰 프로그램의 하나 이상의 모듈을 형성할 수 있다. 그래프의 노드 및 요소는 컴퓨터로 판독가능한 매체에 기억된 데이터 구조 또는 데이터 레포지토리 내에 기억된 데이터 모델에 부합하는 다른 조직화된 데이터로서 구현될 수 있다.
소프트에어는 범용 또는 전용의 프로그램가능한 컴퓨터로 판독가능한 CD-ROM과 같은 기억 매체에 제공되거나, 네트워크와 같은 통신 매체를 통해 실행가능한 컴퓨터로 전달(전파 신호로 부호화되는)될 수 있다. 모든 기능은, 전용의 컴퓨터상에서, 또는 코프로세서와 같은 전용의 하드웨어를 사용해서 수행될 수 있다. 소프트웨어는, 해당 소프트웨어에 의해 특정된 연산의 상이한 부분이 여러 컴퓨터에서 수행되는 분산 방식으로 구현되어도 된다. 이러한 각각의 컴퓨터 프로그램은, 본 명세서에서 설명하는 절차를 수행하도록 기억 매체 또는 디바이스가 컴퓨터 시스템에 의해 판독될 때에 컴퓨터를 구성 및 운영하기 위한, 범용 또는 전용의 프로그램가능한 컴퓨터에 의해 판독가능한 기억 매체 또는 디바이스(예를 들어, 고체 메모리 또는 매체, 자기 또는 광학 매체)에 기억되거나 다운로드되도록 하는 것이 바람직하다. 본 발명의 시스템은 컴퓨터 프로그램에 맞게 구성된, 컴퓨터로 판독가능한 기억 매체로서 구현될 수도 있는데, 이러한 기억 매체는 컴퓨터 시스템으로 하여금, 본 명세서에서 설명한 기능의 수행을 위해 특정되고 미리 정해진 방식으로 동작할 수 있도록 구성된다.
본 발명에 대하여 많은 실시예를 설명하였다. 그렇지만, 본 발명의 범위를 벗어남이 없이 다양한 변형이 가능하다는 것을 알 수 있을 것이다. 예를 들어, 상기 설명한 단계들 중 몇몇은 반드시 그 순서대로 수행되지 않아도 되며, 설명된 것과 다른 순서대로 수행되어도 된다.
이상의 설명은 청구범위에 의해 정해지는 본 발명의 범위를 제한하기 위한 것이 아니라 예시일 뿐이다. 예를 들어, 앞서 설명한 많은 기능적 단계들은 전체적인 과정에 실질적인 영향을 미치지 않으면서, 다른 순서로 수행되어도 된다. 다른 실시예는 이하의 청구범위에 포함된다.
본 출원은 2010년 6월 15일에 제출된 미국출원 61/355,129호에 대하여 우선권을 주장하며, 그 내용을 본원에 참조에 의해 원용한다.

Claims (43)

  1. 데이터 기억 시스템에 기억된 컴파일된 데이터플로우 그래프(compiled dataflow graph)를 사용하여 데이터 처리 시스템에서 데이터를 처리하는 방법으로서,
    하나 이상의 작업 요소(work element)를 각각 포함하는 다수의 작업 단위를 수신하는 단계; 및
    제1 작업 단위의 수신에 의해 상기 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 상기 제1 작업 단위를 처리하는 단계
    를 포함하며,
    상기 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분(data processign component) 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일되고,
    상기 작업 단위를 처리하는 단계는,
    상기 제1 작업 단위를 해석(analyze)하여, 상기 제1 작업 단위의 특징을 판정하는 단계;
    상기 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 상기 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 상기 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하는 단계;
    식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하는 단계; 및
    제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 다수의 작업 단위는 수신된 작업 요소의 흐름 내에의 하나 이상의 작업 요소로 이루어진 여러 상이한 인접한 세트에 대응하는, 방법.
  3. 제1항에 있어서,
    상기 다수의 작업 단위는 상이한 각각의 수신된 파일 내의 하나 이상의 작업 요소로 된 상이한 배치(batch)에 대응하는, 방법.
  4. 제1항에 있어서,
    상기 로딩하는 단계는, 상기 컴파일된 제1 데이터플로우 그래프로부터 제1 데이터플로우 그래프를 나타내는 데이터 구조를 검색하고, 검색된 데이터 구조를 제2 데이터플로우 그래프에 로딩하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서,
    상기 제2 데이터플로우 그래프는 상기 제1 작업 단위가 수신되기 전에 실행되고 있었던 것인, 방법.
  6. 제4항에 있어서,
    상기 검색된 데이터 구조를 제2 데이터플로우 그래프에 로딩하는 단계는, 상기 제1 데이터플로우 그래프 내에서 데이터 처리 성분을 실행하는 제1 프로세스를 제공하도록 구성된 제2 데이터플로우 그래프의 내포 성분(containing component) 내에 제1 데이터플로우 그래프를 삽입(embed)하는 단계를 포함하는, 방법.
  7. 제6항에 있어서,
    상기 제2 데이터플로우 그래프의 내포 성분은 상기 제1 데이터플로우 그래프 내에서 데이터 처리 성분의 실행을 모니터링하는 제2 프로세스를 제공하도록 구성된, 방법.
  8. 제7항에 있어서,
    상기 제2 프로세스는, 소정의 작업 요소를 정확하게 처리하기 위해 상기 제1 데이터플로우 그래프 내의 하나 이상의 데이터 처리 성분의 실패(failure)를 검출하면, 상기 제2 데이터플로우 그래프의 실행을 중단하지 않고, 상기 제1 데이터플로우 그래프의 실행을 중단하는, 방법.
  9. 제7항에 있어서,
    상기 제2 프로세스는, 상기 제1 작업 요소의 처리에서 제1 데이터플로우 그래프 내에서 하나 이상의 데이터 처리 성분의 지연을 검출하게 되면, 상기 제2 데이터플로우 그래프의 실행을 중단하지 않고 제1 데이터플로우 그래프의 실행을 연기(suspend)하고, 상기 제1 작업 단위 이후에 수신된 제2 작업 단위를 처리하기 위해 제2 데이터플로우 그래프의 내포 성분 내에 제3 데이터플로우 그래프를 삽입하는, 방법.
  10. 제6항에 있어서,
    상기 제2 데이터플로우 그래프의 내포 성분은, 상기 제1 프로세스가 사용하는 제1 애플리케이션 프로그래밍 인터페이스를 제공하여, 제1 원격 데이터베이스에 대한 라이브러리에 액세스하는 제2 프로세스와 통신하도록 구성된 것인, 방법.
  11. 제10항에 있어서,
    상기 제2 데이터플로우 그래프의 내포 성분은 상기 제1 프로세스가 사용되는 제2 애플리케이션 프로그래밍 인터페이스를 제공하여, 상기 제1 원격 데이터베이스에 대한 라이브러리와 상이한 제2 원격 데이터베이스에 대한 라이브러리에 액세스하는 제3 프로세스와 통신하도록 구성된 것인, 방법.
  12. 제11항에 있어서,
    상기 제2 데이터플로우 그래프의 내포 성분은 상기 제2 데이터플로우 그래프의 다수의 성분과 호환가능한 제3 애플리케이션 프로그래밍 인터페이스를 제공하도록 구성된 것인, 방법.
  13. 제12항에 있어서,
    상기 제2 데이터플로우 그래프의 내포 성분은, 제3 애플리케이션 프로그래밍 인터페이스를 사용하는 애플리케이션 호출을, 상기 제1 원격 데이터베이스 및 제2 원격 데이터베이스 중의 어느 것이 액세스되는지에 따라, 상기 제1 애플리케이션 프로그래밍 인터페이스 및 제2 애플리케이션 프로그래밍 인터페이스 중의 선택된 하나를 사용하는 애플리케이션 호출로 해석하도록 구성된, 방법.
  14. 제4항에 있어서,
    상기 검색된 데이터 구조를 제2 데이터플로우 그래프로 로딩하는 단계는, 상기 제2 데이터플로우 그래프의 내포 성분 내에 제1 데이터플로우 그래프를 삽입하는 단계를 포함하며,
    상기 데이터플로우 그래프를 삽입하는 단계는,
    상기 내포 성분의 입력에 연결된 링크로부터 수신된 입력 작업 요소의 흐름을 상기 제1 데이터플로우 그래프의 입력에 연결하는 단계; 및
    상기 생성된 하나 이상의 출력 작업 요소를, 상기 내포 성분의 출력에 연결된 링크에 연결하는 단계를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 제1 데이터플로우 그래프는, 제2 성분의 입력에 연결된 하나 이상의 출력 링크를 포함하는 제1 성분, 상기 제1 데이터플로우 그래프가 상기 내포 성분에 삽입될 때에 입력 작업 요소를 제2 성분에 제공하도록 하는 명령어(instructions), 및 상기 제1 데이터플로우 그래프가 상기 내포 성분 내에 삽입되지 않은 때에 기억 위치로부터의 작업 요소를 상기 제2 성분에 제공하도록 하는 명령어를 포함하는 것인, 방법.
  16. 제15항에 있어서,
    상기 제1 데이터플로우 그래프는, 제4 성분의 출력에 연결된 하나 이상의 입력 링크를 포함하는 제3 성분, 상기 제1 데이터플로우 그래프가 상기 내포 성분에 삽입될 때에 제4 성분의 출력으로부터의 생성된 하나 이상의 출력 작업 요소를 상기 내포 성분의 출력에 제공하도록 하는 명령어, 및 상기 제1 데이터플로우 그래프가 상기 내포 성분 내에 삽입되지 않은 때에 상기 제4 성분의 출력으로부터의 생성된 하나 이상의 출력 작업 요소를 기억 위치에 제공하도록 하는 명령어를 포함하는 것인, 방법.
  17. 제14항에 있어서,
    상기 제1 데이터플로우 그래프는, 상기 제1 데이터플로우 그래프가 상기 내포 성분 내에 삽입될 때에, 상기 제1 데이터플로우 그래프와 상기 내포 성분 사이에서 작업 요소를 전송하기 위한 명령어와, 상기 제1 데이터플로우 그래프가 상기 내포 성분 내에 삽입되지 않을 때에 상기 제1 데이터플로우 그래프와 기억 위치 사이에서 작업 요소를 전송하기 위한 명령어를 각각 포함하는 다수의 인터페이스 성분을 포함하는, 방법.
  18. 제17항에 있어서,
    상기 인터페이스 성분의 각각은, 상기 제1 데이터플로우 그래프가 상기 내포 성분 내에 삽입될 때에 상기 제1 데이터플로우 그래프가 연결되는 상기 내포 성분의 대응하는 여러 입력 또는 출력 포트를 식별하는, 방법.
  19. 제4항에 있어서,
    상기 하나 이상의 출력 작업 요소를 생성한 후에, 상기 제2 데이터플로우 그래프로부터 상기 제1 데이터플로우 그래프를 나타내는 상기 검색된 데이터 구조를 언로딩(unload)하는 단계를 더 포함하는 방법.
  20. 제19항에 있어서,
    상기 제1 작업 단위가 도달한 후에 그리고 상기 제1 데이터플로우 그래프를 나타내는 상기 검색된 데이터 구조의 언로딩 이전에 도달하는 작업 단위인 작업 요소를 버퍼링하는 단계를 더 포함하는 방법.
  21. 제1항에 있어서,
    상기 데이터 처리 시스템에 컴파일된 제2 데이터플로우 그래프를 로딩하는 단계를 더 포함하며,
    상기 컴파일된 제2 데이터플로우 그래프는 제2 데이터플로우 그래프를 나타내는 데이터 구조에 컴파일되는 것인, 방법.
  22. 제21항에 있어서,
    상기 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를 상기 데이터 처리 시스템에, 컴파일된 제1 데이터플로우 그래프로서 로딩하는 단계는, 상기 제1 데이터플로우 그래프를 제3 데이터플로우 그래프의 제1 내포 성분 내에 삽입하는 단계를 포함하며,
    상기 컴파일된 제2 데이터플로우 그래프를 상기 데이터 처리 시스템에 로딩하는 단계는, 상기 제3 데이터플로우 그래프의 제2 내포 성분 내에 제2 데이터플로우 그래프를 삽입하는 단계를 포함하는, 방법.
  23. 제22항에 있어서,
    상기 컴파일된 제2 데이터플로우 그래프는 상기 제1 작업 단위를 수신하게 되면 상기 데이터 처리 시스템에 로딩되는 것인, 방법.
  24. 제22항에 있어서,
    상기 컴파일된 제2 데이터플로우 그래프는 상기 제1 작업 단위 이후에 제2 작업 단위를 수신하게 되면, 상기 데이터 처리 시스템에 로딩되는 것인, 방법.
  25. 제1항에 있어서,
    상기 제1 작업 단위의 처리 이후에 제2 작업 단위를 처리하는 단계로서, 상기 제2 작업 단위를 수신하게 되면 상기 데이터 처리 시스템에 로딩되는 컴파일된 제2 데이터플로우 그래프를 이용하는 단계를 더 포함하며, 상기 컴파일된 제2 데이터플로우 그래프는 제2 데이터플로우 그래프를 나타내는 데이터 구조에 컴파일되며,
    상기 작업 단위를 처리하는 단계는,
    상기 제2 작업 단위의 특징을 판정하기 위해 상기 제2 작업 단위를 해석하는 단계;
    상기 제2 작업 단위가 수신되기 전에 컴파일되었던, 상기 데이터 기억 시스템 내에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별하고, 상기 제2 작업 단위의 판정된 특징을 갖는 작업 단위를 처리하는 단계;
    상기 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를, 컴파일된 제2 데이터플로우 그래프로서 상기 데이터 처리 시스템에 로딩하는 단계; 및
    상기 제2 데이터플로우 그래프를 사용하여 상기 제2 작업 단위 내에서 하나 이상의 작업 요소로부터 하나 이상의 작업 요소를 생성하는 단계를 포함하는, 방법.
  26. 제25항에 있어서,
    상기 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를 컴파일된 제1 데이터플로우 그래프로서 상기 데이터 처리 시스템에 로딩하는 단계는, 상기 제1 데이터플로우 그래프를 제3 데이터플로우 그래프의 내포 성분 내에 삽입하는 단계를 포함하며,
    상기 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나를, 컴파일된 제2 데이터플로우 그래프로서 상기 데이터 처리 시스템에 로딩하는 단계는, 상기 제2 데이터플로우 그래프를 상기 제3 데이터플로우 그래프의 내포 성분 내에 삽입하는 단계를 포함하는, 방법.
  27. 제1항에 있어서,
    상기 제1 작업 단위를 해석하는 단계는, 상기 제1 작업 단위의 작업 요소 내에 포함된 컴파일된 데이터플로우 그래프에 대한 식별자를 판독하는 단계를 포함하는, 방법.
  28. 제26항에 있어서,
    상기 하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 상기 식별자를 상기 하나 이상의 컴파일된 데이터플로우 그래프와 연관된 식별자와 매칭하는 단계를 포함하는, 방법.
  29. 제1항에 있어서,
    상기 제1 작업 단위를 해석하는 단계는, 상기 제1 작업 단위의 작업 요소를 특징화하는 다수의 미리 정해진 타입 중의 하나를 식별하는 단계를 포함하는, 방법.
  30. 제29항에 있어서,
    상기 하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 상기 하나 이상의 컴파일된 데이터플로우 그래프에 대응하는 데이터플로우 그래프가 상기 식별된 타입에 의해 특징화된 작업 요소를 처리하도록 구성되어 있는지를 판정하는 단계를 포함하는, 방법.
  31. 제1항에 있어서,
    상기 제1 작업 단위를 해석하는 단계는, 상기 제1 작업 단위의 작업 요소 내에 포함된 콘텐츠의 특성을 식별하는 단계를 포함하는, 방법.
  32. 제31항에 있어서,
    상기 하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 상기 하나 이상의 컴파일된 데이터플로우 그래프에 대응하는 데이터플로우 그래프가 상기 식별된 특성을 갖는 콘텐츠를 포함하는 작업 요소를 처리하도록 구성되어 있는지를 판정하는 단계를 포함하는, 방법.
  33. 제1항에 있어서,
    상기 제1 작업 단위를 해석하는 단계는, 상기 제1 작업 단위와 연관된 하나 이상의 값이 상기 제1 데이터플로우 그래프의 하나 이상의 파라미터로 이루어진 제1 세트에 대한 값으로서 지정되어 있는지를 판정하는 단계를 포함하는, 방법.
  34. 제33항에 있어서,
    상기 하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 단계는, 상기 식별된 하나 이상의 컴파일된 데이터플로우 그래프가 상기 제1 작업 단위와 연관된 판정된 하나 이상의 값과 매칭되는 각각의 값에 결합된 하나 이상의 파라미터로 된 제1 세트를 가진 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일되어 있는지를 판정하는 단계를 포함하는, 방법.
  35. 제34항에 있어서,
    상기 식별된 하나 이상의 컴파일된 데이터플로우 그래프를 컴파일된 제1 데이터플로우 그래프로서 데이터 처리 시스템에 로딩하는 단계는, 하나 이상의 파라미터로 이루어진 제2 세트를, 상기 제1 작업 단위에 적어도 부분적으로 기초하여 판정된 각각의 값에 결합하는 단계를 포함하는, 방법.
  36. 제35항에 있어서,
    상기 하나 이상의 파라미터로 된 제2 세트는, 입력 작업 요소를 제공하기 위한 입력 소스 또는 출력 작업 요소를 수신하기 위한 출력 소스의 이름을 포함하는 값을 갖는 하나 이상의 파라미터를 포함하는, 방법.
  37. 제34항에 있어서,
    상기 하나 이상의 파라미터로 된 제1 세트는, 상기 데이터 구조가 상기 컴파일된 제1 데이터플로우 그래프로 컴파일될 때에, 하나 이상의 성분이 상기 제1 데이터플로우 그래프를 나타내는 데이터 구조 내에 포함되어야 하는지 여부를 판정하는 값을 갖는 하나 이상의 파라미터를 포함하는, 방법.
  38. 제34항에 있어서,
    상기 하나 이상의 파라미터로 된 제1 세트는
    상기 데이터 구조가 상기 컴파일된 제1 데이터플로우 그래프로 컴파일될 때에 상기 제1 데이터플로우 그래프를 나타내는 데이터 구조 내에 포함되는 성분에 의해 처리되는 작업 요소에 적용될 변환을 판정하는 값을 갖는 하나 이상의 파라미터를 포함하는, 방법.
  39. 제33항에 있어서,
    상기 제1 작업 단위가 수신되기 전에, 상기 제1 데이터플로우 그래프를 나타내는 데이터 구조로부터 컴파일된 제1 데이터플로우 그래프를 각각의 값에 결합된 하나 이상의 파라미터로 된 제1 세트로 컴파일하는 단계를 더 포함하는 방법.
  40. 제39항에 있어서,
    상기 컴파일된 제1 데이터플로우 그래프를 상기 데이터 기억 시스템에 기억시키고, 상기 기억된 컴파일된 제1 데이터플로우 그래프를 상기 하나 이상의 파라미터로 된 제1 세트에 결합된 각각의 값을 나타내는 정보와 연관시키는 단계를 더 포함하는 방법.
  41. 데이터 기억 시스템에 기억된 컴파일된 데이터플로우 그래프를 사용하여 데이터를 처리하기 위한 데이터 처리 시스템으로서,
    하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하도록 구성된 입력 장치 또는 포트; 및
    제1 작업 단위를 수신하면, 상기 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 상기 제1 작업 단위를 처리하도록 구성된 하나 이상의 프로세서
    를 포함하며,
    상기 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분(data processign component) 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일되고,
    상기 작업 단위의 처리는,
    상기 제1 작업 단위를 해석(analyze)하여, 상기 제1 작업 단위의 특징을 판정하고;
    상기 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 상기 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 상기 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하며;
    식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하고; 및
    제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  42. 데이터 기억 시스템 내에 기억된 컴파일된 데이터플로우 그래프를 사용하여 데이터를 처리하기 위한 데이터 처리 시스템으로서,
    하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하는 수단; 및
    제1 작업 단위를 수신하면, 상기 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 상기 제1 작업 단위를 처리하는 수단
    을 포함하며,
    상기 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분(data processign component) 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일되고,
    상기 작업 단위의 처리는,
    상기 제1 작업 단위를 해석(analyze)하여, 상기 제1 작업 단위의 특징을 판정하고;
    상기 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 상기 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 상기 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하며;
    식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하고; 및
    제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  43. 데이터 기억 시스템에 기억된 컴파일된 데이터플로우 그래프를 사용하여 데이터를 처리하기 위한 컴퓨터 프로그램을 기억하는, 컴퓨터로 판독가능한 매체로서,
    상기 컴퓨터 프로그램은, 컴퓨터로 하여금,
    하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하고,
    제1 작업 단위를 수신하면, 상기 데이터 처리 시스템에 로딩된 컴파일된 제1 데이터플로우 그래프를 사용하여 상기 제1 작업 단위를 처리하도록 하기 위한 명령어를 포함하며,
    상기 컴파일된 제1 데이터플로우 그래프는 데이터 처리 성분 사이에서 작업 요소의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 제1 데이터플로우 그래프를 나타내는 데이터 구조로 컴파일되고,
    상기 작업 단위의 처리는,
    상기 제1 작업 단위를 해석하여, 상기 제1 작업 단위의 특징을 판정하고;
    상기 제1 작업 단위가 수신되기 전에, 적어도 컴파일이 이루어진 몇몇 컴파일된 데이터플로우 그래프를 포함하는 상기 데이터 기억 시스템에 기억된 다수의 컴파일된 데이터플로우 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별해서, 상기 제1 작업 단위의 정해진 특징을 갖는 작업 단위를 처리하며;
    식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 데이터 처리 시스템에 컴파일된 제1 데이터플로우 그래프로서 로딩하고; 및
    제1 데이터플로우 그래프를 사용하여 제1 작업 단위 내의 적어도 하나의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함하는 것을 특징으로 하는 컴퓨터로 판독가능한 매체.
KR1020137001038A 2010-06-15 2011-06-15 동적으로 로딩하는 그래프 기반 계산 KR101687213B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US35512910P 2010-06-15 2010-06-15
US61/355,129 2010-06-15
PCT/US2011/040440 WO2011159759A1 (en) 2010-06-15 2011-06-15 Dynamically loading graph-based computations

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR20157008265A Division KR20150042297A (ko) 2010-06-15 2011-06-15 동적으로 로딩하는 그래프 기반 계산

Publications (2)

Publication Number Publication Date
KR20130100261A true KR20130100261A (ko) 2013-09-10
KR101687213B1 KR101687213B1 (ko) 2016-12-16

Family

ID=44627481

Family Applications (2)

Application Number Title Priority Date Filing Date
KR20157008265A KR20150042297A (ko) 2010-06-15 2011-06-15 동적으로 로딩하는 그래프 기반 계산
KR1020137001038A KR101687213B1 (ko) 2010-06-15 2011-06-15 동적으로 로딩하는 그래프 기반 계산

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR20157008265A KR20150042297A (ko) 2010-06-15 2011-06-15 동적으로 로딩하는 그래프 기반 계산

Country Status (9)

Country Link
US (2) US8875145B2 (ko)
EP (2) EP3287896B1 (ko)
JP (2) JP5898188B2 (ko)
KR (2) KR20150042297A (ko)
CN (2) CN103069385B (ko)
AU (1) AU2011268459B2 (ko)
CA (1) CA2801573C (ko)
HK (1) HK1249218A1 (ko)
WO (1) WO2011159759A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170046778A (ko) * 2014-09-02 2017-05-02 아브 이니티오 테크놀로지 엘엘시 그래프 기반 프로그램 명세의 실행

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
KR101730513B1 (ko) 2009-02-13 2017-04-26 아브 이니티오 테크놀로지 엘엘시 태스크 실행 관리
US10845962B2 (en) 2009-12-14 2020-11-24 Ab Initio Technology Llc Specifying user interface elements
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9424010B2 (en) 2010-08-30 2016-08-23 International Business Machines Corporation Extraction of functional semantics and isolated dataflow from imperative object oriented languages
US8464153B2 (en) * 2011-03-01 2013-06-11 Lucasfilm Entertainment Company Ltd. Copying an object in an animation creation application
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
TW201322022A (zh) * 2011-11-24 2013-06-01 Alibaba Group Holding Ltd 分散式資料流處理方法及其系統
US9489184B2 (en) * 2011-12-30 2016-11-08 Oracle International Corporation Adaptive selection of programming language versions for compilation of software programs
JP5971334B2 (ja) * 2012-04-18 2016-08-17 日本電気株式会社 タスク配置装置、タスク配置方法、および、コンピュータ・プログラム
US9032362B2 (en) * 2012-09-10 2015-05-12 Sap Se System and method for generating high performance calculators for calculation graphs
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9507682B2 (en) * 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) * 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US9189622B2 (en) * 2013-04-30 2015-11-17 Vmware, Inc. Static redirection for objective C
US9104432B2 (en) * 2013-06-24 2015-08-11 International Business Machines Corporation Extracting stream graph structure in a computer language by pre-executing a deterministic subset
CA2932763C (en) * 2013-12-05 2022-07-12 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
AU2014360106B2 (en) * 2013-12-06 2019-05-23 Ab Initio Technology Llc Source code translation
US10261801B2 (en) 2013-12-13 2019-04-16 Ab Initio Technology Llc Dynamically determining a mode of a data processing application
US10331740B2 (en) 2014-02-10 2019-06-25 Apple Inc. Systems and methods for operating a server-side data abstraction layer
US9098377B1 (en) 2014-05-30 2015-08-04 Semmle Limited Aggregating source code metric values
US10928970B2 (en) 2014-07-18 2021-02-23 Apple Inc. User-interface for developing applications that apply machine learning
US9330199B2 (en) * 2014-07-21 2016-05-03 Facebook, Inc. Striping of directed graphs and nodes with improved functionality
CN104216766B (zh) * 2014-08-26 2017-08-29 华为技术有限公司 对流数据进行处理的方法及装置
CN106687920B (zh) 2014-09-02 2020-07-03 起元科技有限公司 管理任务的调用
US9933918B2 (en) 2014-09-02 2018-04-03 Ab Initio Technology Llc Specifying control and data connections in graph-based programs
CA2959389A1 (en) 2014-09-02 2016-03-10 Ab Initio Technology Llc Compilation of graph-based program specifications with automated clustering of graph components based on the identification of particular data port connections
US9760406B2 (en) * 2014-09-02 2017-09-12 Ab Initio Technology Llc Controlling data processing tasks
SG11201701651SA (en) 2014-09-02 2017-04-27 Ab Initio Technology Llc Managing execution state of components in a graph-based program specification for controlling their associated tasks
SG11201701605XA (en) * 2014-09-02 2017-03-30 Ab Initio Technology Llc Controlling data processing tasks
US9916187B2 (en) 2014-10-27 2018-03-13 Oracle International Corporation Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programming language
US10055333B2 (en) * 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US9921859B2 (en) * 2014-12-12 2018-03-20 The Regents Of The University Of Michigan Runtime compiler environment with dynamic co-located code execution
US9817930B1 (en) * 2014-12-31 2017-11-14 Cadence Design Systems Inc. Method, system, and computer program product for verifying an electronic circuit design with a graph-based proof flow
GB2535230B (en) * 2015-02-13 2019-05-08 Raptor Oil Ltd Dynamically adjustable data flow graph for digital signal processing
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US20160364794A1 (en) * 2015-06-09 2016-12-15 International Business Machines Corporation Scoring transactional fraud using features of transaction payment relationship graphs
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9910685B2 (en) 2015-08-13 2018-03-06 Samsung Electronics Co., Ltd. System and method for identifying, indexing, and navigating to deep states of mobile applications
US9983892B2 (en) * 2015-11-06 2018-05-29 Samsung Electronics Co., Ltd. Deep linking to mobile application states through programmatic replay of user interface events
US9858094B2 (en) 2015-11-10 2018-01-02 Samsung Electronics Co., Ltd. Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
US10506016B2 (en) 2016-05-19 2019-12-10 Oracle International Corporation Graph analytic engine that implements efficient transparent remote access over representational state transfer
US10936289B2 (en) * 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10318355B2 (en) * 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US11194551B2 (en) 2017-06-07 2021-12-07 Ab Initio Technology Llc Dataflow graph configuration
CN107632890B (zh) * 2017-08-10 2021-03-02 北京中科睿芯科技集团有限公司 一种数据流体系结构中动态节点分配方法和系统
CN109426574B (zh) * 2017-08-31 2022-04-05 华为技术有限公司 分布式计算系统,分布式计算系统中数据传输方法和装置
US10817310B2 (en) * 2017-09-01 2020-10-27 Ab Initio Technology Llc Executing graph-based program specifications
US10685034B2 (en) * 2017-10-17 2020-06-16 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing concurrent dataflow execution with write conflict protection within a cloud based computing environment
US11055074B2 (en) 2017-11-13 2021-07-06 Ab Initio Technology Llc Key-based logging for processing of structured data items with executable logic
US10726072B2 (en) * 2017-11-15 2020-07-28 Sap Se Internet of things search and discovery graph engine construction
US10642908B2 (en) 2017-11-15 2020-05-05 Sap Se Internet of things search and discovery dynamic alteration of results
US10853131B2 (en) * 2017-11-20 2020-12-01 Salesforce.Com, Inc. Dataflow life cycles
US10790662B2 (en) 2018-04-03 2020-09-29 Katerra, Inc. DC bus-based electrical power router utilizing multiple configurable bidirectional AC/DC converters
US10897138B2 (en) 2018-04-12 2021-01-19 Katerra, Inc. Method and apparatus for dynamic electrical load sensing and line to load switching
US10666744B2 (en) 2018-06-01 2020-05-26 The Mathworks, Inc. Managing discovery and selection of service interface specifications
CN109343833B (zh) * 2018-09-20 2022-12-16 鼎富智能科技有限公司 数据处理平台以及数据处理方法
US10733191B2 (en) * 2018-09-28 2020-08-04 Microsoft Technology Licensing, Llc Static streaming job startup sequence
US11580444B2 (en) 2019-04-16 2023-02-14 Apple Inc. Data visualization machine learning model performance
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US20210149734A1 (en) * 2019-11-15 2021-05-20 Nvidia Corporation Techniques for modifying an executable graph to perform a workload associated with a new task graph
US20210248115A1 (en) * 2020-02-10 2021-08-12 Nvidia Corporation Compute graph optimization
JP7391739B2 (ja) 2020-03-19 2023-12-05 Ckd株式会社 把持装置
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
US11815943B1 (en) 2020-06-05 2023-11-14 State Farm Mutual Automobile Insurance Company Systems and methods for processing using directed acyclic graphs
US11720424B2 (en) * 2021-03-12 2023-08-08 Salesforce, Inc. Single flow execution
US11461297B1 (en) 2021-06-09 2022-10-04 T-Mobile Usa, Inc. Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider
WO2023056003A1 (en) 2021-09-30 2023-04-06 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US11907194B2 (en) 2021-11-03 2024-02-20 Capital One Services, Llc Systems and methods for executing and hashing modeling flows
CN114911630B (zh) * 2022-07-14 2022-11-04 小米汽车科技有限公司 数据处理方法、装置、车辆、存储介质及芯片

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832369B1 (en) * 2000-08-01 2004-12-14 International Business Machines Corporation Object oriented method and apparatus for class variable initialization
US20040260590A1 (en) * 2003-06-17 2004-12-23 International Business Machines Corporation, Armonk, New York Automatic generation of process models
US20070022077A1 (en) * 2002-10-10 2007-01-25 Ab Inition Software Company, A Delaware Corporation Startup and Control of Graph-Based Computation

Family Cites Families (227)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3662343A (en) 1970-07-29 1972-05-09 Docutel Corp Credit card automatic currency dispenser
US3662401A (en) 1970-09-23 1972-05-09 Collins Radio Co Method of program execution
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4814979A (en) 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4720780A (en) 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4914568A (en) 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5127104A (en) 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JPS63231613A (ja) 1987-03-20 1988-09-27 Matsushita Giken Kk コマンド設定方法
JPS6413189A (en) 1987-07-06 1989-01-18 Nec Corp Character signal generation circuit
JPH0526792Y2 (ko) 1987-07-14 1993-07-07
JPH0194431A (ja) 1987-10-06 1989-04-13 Matsushita Electric Ind Co Ltd ソフトウェア部品合成装置
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5357632A (en) 1990-01-09 1994-10-18 Hughes Aircraft Company Dynamic task allocation in a multi-processor system employing distributed control processors and distributed arithmetic processors
US5280619A (en) 1990-05-17 1994-01-18 Texas Instruments Incorporated System for accessing shared data using a serialization graph constructed from a history file showing completed locking dependencies between transactions
US5323452A (en) 1990-12-18 1994-06-21 Bell Communications Research, Inc. Visual programming of telephone network call processing logic
JPH05197604A (ja) 1991-05-21 1993-08-06 Digital Equip Corp <Dec> マルチプロセッサ・コンピュータ及びその動作方法
EP0529303A3 (en) 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US6400996B1 (en) 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US5333319A (en) 1992-03-02 1994-07-26 International Business Machines Corporation Virtual storage data processor with enhanced dispatching priority allocation of CPU resources
JP3223933B2 (ja) 1993-02-10 2001-10-29 日本電信電話株式会社 知識ベース推論方法およびその装置
JP3079881B2 (ja) 1993-08-10 2000-08-21 三菱自動車工業株式会社 道路交通状況推定方法および車両運転特性制御方法
US5745778A (en) 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US6044211A (en) 1994-03-14 2000-03-28 C.A.E. Plus, Inc. Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
JPH08106540A (ja) 1994-10-06 1996-04-23 Toshiba Corp 編集装置
US5692168A (en) 1994-10-18 1997-11-25 Cyrix Corporation Prefetch buffer using flow control bit to identify changes of flow within the code stream
JPH08305576A (ja) 1995-01-12 1996-11-22 Internatl Business Mach Corp <Ibm> コンピュータ・ユーザとの対話を行うためのエキスパート・システム及びその方法
US5673369A (en) 1995-03-02 1997-09-30 International Business Machines Corporation Authoring knowledge-based systems using interactive directed graphs
US5701400A (en) 1995-03-08 1997-12-23 Amado; Carlos Armando Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data
US5805462A (en) 1995-08-18 1998-09-08 Vlsi Technology, Inc. Automatic synthesis of integrated circuits employing boolean decomposition
JP3154942B2 (ja) 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
US5630047A (en) 1995-09-12 1997-05-13 Lucent Technologies Inc. Method for software error recovery using consistent global checkpoints
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
JP3258228B2 (ja) 1996-03-15 2002-02-18 株式会社東芝 チェックポイント生成方法
US7415466B2 (en) 1996-03-19 2008-08-19 Oracle International Corporation Parallel transaction recovery
US6006242A (en) 1996-04-05 1999-12-21 Bankers Systems, Inc. Apparatus and method for dynamically creating a document
US5857204A (en) 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JP3672208B2 (ja) 1996-07-02 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層化トランザクション処理方法
US6016516A (en) 1996-08-07 2000-01-18 Fuji Xerox Co. Ltd. Remote procedure processing device used by at least two linked computer systems
US6760903B1 (en) 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US5799266A (en) 1996-09-19 1998-08-25 Sun Microsystems, Inc. Automatic generation of test drivers
US5930794A (en) 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
US6038558A (en) 1996-10-18 2000-03-14 Sagent Technology, Inc. Extensible database retrieval and viewing architecture
US6151531A (en) 1996-12-12 2000-11-21 Charles Frankel Et Al System and method for managing the alteration of garments
US5924095A (en) 1997-02-05 1999-07-13 Oracle Corporation Processing distributed transactions in heterogeneous computing environments using two-phase commit
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5933640A (en) 1997-02-26 1999-08-03 Digital Equipment Corporation Method for analyzing and presenting test execution flows of programs
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US5950212A (en) 1997-04-11 1999-09-07 Oracle Corporation Method and system for workload based group committing for improved performance
US6088716A (en) 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US6032158A (en) 1997-05-02 2000-02-29 Informatica Corporation Apparatus and method for capturing and propagating changes from an operational database to data marts
US6044394A (en) 1997-07-21 2000-03-28 International Business Machines Corporation Managing independently executing computer tasks that are interrelated by dataflow
US6145017A (en) 1997-08-05 2000-11-07 Adaptec, Inc. Data alignment system for a hardware accelerated command interpreter engine
US6173276B1 (en) 1997-08-21 2001-01-09 Scicomp, Inc. System and method for financial instrument modeling and valuation
US6574661B1 (en) 1997-09-26 2003-06-03 Mci Communications Corporation Integrated proxy interface for web based telecommunication toll-free network management using a network manager for downloading a call routing tree to client
US6332212B1 (en) 1997-10-02 2001-12-18 Ltx Corporation Capturing and displaying computer program execution timing
US5958004A (en) 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
US6014670A (en) 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6339775B1 (en) 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
JPH11184766A (ja) 1997-12-18 1999-07-09 Nippon Telegr & Teleph Corp <Ntt> ビジネスイベントサーバ
US6272650B1 (en) 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6437796B2 (en) 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
US6208345B1 (en) 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6256637B1 (en) 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6480876B2 (en) 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6675189B2 (en) 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6314114B1 (en) 1998-06-23 2001-11-06 Oracle Corporation Distributed resource management
JP2000010788A (ja) 1998-06-25 2000-01-14 Sharp Corp 緊急動作処理機能を有するコンピュータ装置
US6259988B1 (en) 1998-07-20 2001-07-10 Lockheed Martin Corporation Real-time mission adaptable route planner
JP2000099317A (ja) 1998-09-18 2000-04-07 Toshiba Corp ユーザインタフェース設計装置及び方法
US6401216B1 (en) 1998-10-29 2002-06-04 International Business Machines Corporation System of performing checkpoint/restart of a parallel program
US6608628B1 (en) 1998-11-06 2003-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration (Nasa) Method and apparatus for virtual interactive medical imaging by multiple remotely-located users
US6380945B1 (en) 1998-11-09 2002-04-30 Broadcom Corporation Graphics display system with color look-up table loading mechanism
US6449711B1 (en) 1999-02-04 2002-09-10 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs
US6538651B1 (en) 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6728879B1 (en) 1999-06-02 2004-04-27 Microsoft Corporation Transactional log with multi-sector log block validation
US6816825B1 (en) 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
JP2001022571A (ja) 1999-07-09 2001-01-26 Riso Kagaku Corp 電子機器及び該電子機器の制御プログラム書き換え方法
US6647408B1 (en) 1999-07-16 2003-11-11 Novell, Inc. Task distribution
US6715145B1 (en) 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US20020129340A1 (en) 1999-10-28 2002-09-12 Tuttle Douglas D. Reconfigurable isomorphic software representations
US7137116B2 (en) 1999-11-09 2006-11-14 Microsoft Corporation Method and system for performing a task on a computer
US6879946B2 (en) 1999-11-30 2005-04-12 Pattern Discovery Software Systems Ltd. Intelligent modeling, transformation and manipulation system
US6584581B1 (en) 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
IES20010131A2 (en) 1999-12-20 2001-05-30 Headway Res Ltd System and method for computer-aided graph-based dependency analysis
DE50101827D1 (de) 2000-03-31 2004-05-06 Sanochemia Pharmazeutika Ag Wi Neue derivate und analoga von galanthamin
US6848100B1 (en) 2000-03-31 2005-01-25 Intel Corporation Hierarchical software path profiling
US7062483B2 (en) 2000-05-18 2006-06-13 Endeca Technologies, Inc. Hierarchical data-driven search and navigation system and method for information retrieval
US6922685B2 (en) 2000-05-22 2005-07-26 Mci, Inc. Method and system for managing partitioned data resources
US6813761B1 (en) 2000-06-30 2004-11-02 Microsoft Corporation Methods for enhancing flow analysis
US7164422B1 (en) * 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US6496961B2 (en) 2000-10-27 2002-12-17 Nec Usa, Inc. Dynamic detection and removal of inactive clauses in SAT with application in image computation
US20020152244A1 (en) 2000-12-22 2002-10-17 International Business Machines Corporation Method and apparatus to dynamically create a customized user interface based on a document type definition
US6975628B2 (en) * 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US6804800B2 (en) 2000-12-29 2004-10-12 Intel Corporation Method and apparatus for detecting and recovering from errors in a source synchronous bus
JP4294879B2 (ja) 2001-02-05 2009-07-15 株式会社日立製作所 サービスレベル制御機構を有するトランザクション処理システム及びそのためのプログラム
US20020111876A1 (en) 2001-02-09 2002-08-15 Rudraraju Panduranga R. Transaction aggregation system and method
US7082386B2 (en) 2001-02-21 2006-07-25 International Business Machines Corporation Generalized software modeling tool
US7188091B2 (en) 2001-03-21 2007-03-06 Resolutionebs, Inc. Rule processing system
US6651234B2 (en) 2001-04-06 2003-11-18 Nec Corporation Partition-based decision heuristics for SAT and image computation using SAT and BDDs
US20020147745A1 (en) 2001-04-09 2002-10-10 Robert Houben Method and apparatus for document markup language driven server
US7082604B2 (en) 2001-04-20 2006-07-25 Mobile Agent Technologies, Incorporated Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents
US20040093559A1 (en) 2001-05-25 2004-05-13 Ruth Amaru Web client for viewing and interrogating enterprise data semantically
GB2376094A (en) 2001-05-30 2002-12-04 Ibm Flexible navigation of a workflow graph in a data processing system
US7069536B2 (en) * 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US20030033432A1 (en) * 2001-08-08 2003-02-13 Simpson Shell S. Web based imaging service that converts web pages into content on behalf of another web site
US7594220B2 (en) 2001-08-14 2009-09-22 National Instruments Corporation Configuration diagram with context sensitive connectivity
US20040006745A1 (en) 2001-08-31 2004-01-08 Van Helden Wico Methods, apparatuses, system, and articles for associating metadata with datastream
US7165030B2 (en) 2001-09-17 2007-01-16 Massachusetts Institute Of Technology Concatenative speech synthesis using a finite-state transducer
US7130484B2 (en) 2001-10-15 2006-10-31 Jonas August Biased curve indicator random field filters for enhancement of contours in images
US7085426B2 (en) 2001-10-15 2006-08-01 Jonas August Volterra filters for enhancement of contours in images
DE10152213B4 (de) 2001-10-23 2006-04-27 Onespin Solutions Gmbh Verfahren zur Verifikation digitaler arithmetischer Schaltungen mittels eines Äquivalenzvergleiches
US7092401B2 (en) 2001-11-15 2006-08-15 International Business Machines Corporation Apparatus and method for managing work and completion queues using head and tail pointers with end-to-end context error cache for reliable datagram
DE60106467T2 (de) 2001-12-14 2006-02-23 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Installieren Überwachungsagenten, System und Computerprogramm von Objekten in einem IT-Netz Überwachung
US7240247B2 (en) 2002-04-29 2007-07-03 Intel Corporation Providing a chain of tokenized error and state information for a call stack
US20040041838A1 (en) 2002-09-04 2004-03-04 Adusumilli Venkata J.R.B. Method and system for graphing data
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7694272B2 (en) 2002-10-21 2010-04-06 Sungard (Israel) Ltd Method, a language and a system for the definition and implementation of software solutions by using a visualizable computer executable modeling language
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7711772B2 (en) 2002-11-15 2010-05-04 Schlumberger Technology Corporation Web-based system and method for electronic data delivery
US7430747B2 (en) 2002-12-04 2008-09-30 Microsoft Corporation Peer-to peer graphing interfaces and methods
US7441008B2 (en) 2002-12-18 2008-10-21 International Business Machines Corporation Method for correlating transactions and messages
US20050193056A1 (en) 2002-12-26 2005-09-01 Schaefer Diane E. Message transfer using multiplexed connections in an open system interconnection transaction processing environment
US20040148373A1 (en) 2003-01-23 2004-07-29 International Business Machines Corporation Service level agreement compliance measurement
WO2004072796A2 (en) 2003-02-05 2004-08-26 Arizona Board Of Regents Reconfigurable processing
US7707564B2 (en) 2003-02-26 2010-04-27 Bea Systems, Inc. Systems and methods for creating network-based software services using source code annotations
US7417645B2 (en) 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7669129B2 (en) 2003-04-04 2010-02-23 Avid Technology, Inc. Graphical user interface for providing editing of transform hierarchies within an effects tree
US7665025B2 (en) 2003-04-16 2010-02-16 The Mathworks, Inc. Signal navigation and label propagation in block diagrams
US20040225657A1 (en) 2003-05-07 2004-11-11 Panacea Corporation Web services method and system
EP1636730A2 (en) 2003-06-18 2006-03-22 Applera Corporation Methods and systems for the analysis of biological sequence data
EP1639510A1 (en) 2003-06-24 2006-03-29 BAE Systems PLC A method, tool and system for increasing the efficiency of a design process
WO2005001687A2 (en) 2003-06-25 2005-01-06 Ab Initio Software Corporation Computer-aided parallelizing of computation graphs
WO2005008414A2 (en) 2003-07-11 2005-01-27 Computer Associates Think, Inc. Method and apparatus for parallel action processing
GB0318196D0 (en) 2003-08-02 2003-09-03 Ibm A method apparatus and computer program for processing a queue of messages
US7243088B2 (en) 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7444595B2 (en) 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
US8307109B2 (en) 2003-08-27 2012-11-06 International Business Machines Corporation Methods and systems for real time integration services
US7174479B2 (en) 2003-09-10 2007-02-06 Microsoft Corporation Method and system for rollback-free failure recovery of multi-step procedures
US7849075B2 (en) 2003-09-15 2010-12-07 Ab Initio Technology Llc Joint field profiling
US20050102670A1 (en) 2003-10-21 2005-05-12 Bretl Robert F. Shared object memory with object management for multiple virtual machines
US20050097515A1 (en) 2003-10-31 2005-05-05 Honeywell International, Inc. Data empowered laborsaving test architecture
US7743382B2 (en) 2003-11-03 2010-06-22 Ramal Acquisition Corp. System for deadlock condition detection and correction by allowing a queue limit of a number of data tokens on the queue to increase
US7480863B2 (en) 2003-11-26 2009-01-20 International Business Machines Corporation Dynamic and intelligent hover assistance
US7296072B2 (en) 2003-12-12 2007-11-13 International Business Machines Corporation Enhanced port type agnostic proxy support for web services intermediaries
US7404189B2 (en) 2003-12-30 2008-07-22 International Business Machines Corporation Scheduler supporting web service invocation
US7543275B2 (en) 2004-01-29 2009-06-02 Sun Microsystems, Inc. Mechanism for executing test suites written for different harnesses under one test execution harness
US7467383B2 (en) 2004-03-08 2008-12-16 Ab Initio Software Llc System for controlling task execution using a graphical representation of task dependency
US7594227B2 (en) * 2004-03-08 2009-09-22 Ab Initio Technology Llc Dependency graph parameter scoping
CA2563478A1 (en) 2004-04-16 2005-10-27 James A. Aman Automatic event videoing, tracking and content generation system
US20050256818A1 (en) 2004-04-30 2005-11-17 Xerox Corporation Workflow auto generation from user constraints and hierarchical dependence graphs for workflows
JP2007536634A (ja) 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US7614037B2 (en) 2004-05-21 2009-11-03 Microsoft Corporation Method and system for graph analysis and synchronization
US7316001B2 (en) 2004-06-05 2008-01-01 Graphlogic Inc. Object process graph system
WO2005121959A2 (en) 2004-06-08 2005-12-22 Dartdevices Corporation Architecture, apparatus and method for device team recruitment and content renditioning for universal device interoperability platform
US7398514B2 (en) 2004-09-29 2008-07-08 Microsoft Corporation Test automation stack layering
US7343482B2 (en) 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
JP4759983B2 (ja) 2004-11-04 2011-08-31 船井電機株式会社 ディスク装置のファームウェア書き換え方法、及びファームウェア書き換えプログラム
US7598953B2 (en) 2004-11-05 2009-10-06 Microsoft Corporation Interpreter for simplified programming of graphics processor units in general purpose programming languages
US8082541B2 (en) 2004-12-09 2011-12-20 Advantest Corporation Method and system for performing installation and configuration management of tester instrument modules
WO2006078751A2 (en) 2005-01-18 2006-07-27 Everypoint, Inc. Systems and methods for processing changing data
US8396886B1 (en) 2005-02-03 2013-03-12 Sybase Inc. Continuous processing language for real-time data streams
US7620947B2 (en) 2005-03-11 2009-11-17 Autodesk, Inc. Enhanced directed graph representation for dependency systems
US7505975B2 (en) 2005-04-14 2009-03-17 Bea Systems, Inc. Use of transaction context to select single database instance for global transaction
JP4246176B2 (ja) 2005-04-25 2009-04-02 株式会社日立製作所 トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
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
US20070118839A1 (en) 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
JP2007128343A (ja) * 2005-11-04 2007-05-24 Sharp Corp 情報処理装置、情報処理方法、プログラムおよびコンピュータ読取り可能な記録媒体
US7747565B2 (en) 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory
US8073671B2 (en) 2006-03-31 2011-12-06 Microsoft Corporation Dynamic software performance models
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
WO2008021953A2 (en) 2006-08-10 2008-02-21 Ab Initio Software Llc Distributing services in graph-based computations
US7844946B2 (en) 2006-09-26 2010-11-30 Intel Corporation Methods and apparatus to form a transactional objective instruction construct from lock-based critical sections
JP5042315B2 (ja) 2006-10-19 2012-10-03 チェックマークス リミテッド ソースコード内のセキュリティ脆弱性の検出
US8191052B2 (en) 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US20080244524A1 (en) 2007-03-27 2008-10-02 Tim Kelso Program Test System
US7805635B2 (en) 2007-04-09 2010-09-28 International Business Machines Corporation Constraint programming for reduction of system test-configuration-matrix complexity
US8069129B2 (en) * 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
WO2008131106A1 (en) 2007-04-17 2008-10-30 Earl Industries Llc Digital system for organizing diverse information
JP4073033B1 (ja) 2007-04-27 2008-04-09 透 降矢 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
CN101821721B (zh) 2007-07-26 2017-04-12 起元技术有限责任公司 具有误差处理的事务型基于图的计算
US8347292B2 (en) 2007-08-30 2013-01-01 International Business Machines Corporation Transaction aggregation to increase transaction processing throughout
JP5453273B2 (ja) 2007-09-20 2014-03-26 アビニシオ テクノロジー エルエルシー グラフベース計算におけるデータフロー管理
US7886141B2 (en) 2007-10-27 2011-02-08 Asix Electronics Corporation Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
US8775441B2 (en) 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US20090193417A1 (en) 2008-01-24 2009-07-30 Nec Laboratories America, Inc. Tractable dataflow analysis for concurrent programs via bounded languages
US8225288B2 (en) 2008-01-29 2012-07-17 Intuit Inc. Model-based testing using branches, decisions, and options
US8797178B2 (en) 2008-03-10 2014-08-05 Microsoft Corporation Efficient stream sharing for multi-user sensor data collection
US20090235267A1 (en) 2008-03-13 2009-09-17 International Business Machines Corporation Consolidated display of resource performance trends
US9184874B2 (en) 2008-03-31 2015-11-10 Qualcomm Incorporated Storing log likelihood ratios in interleaved form to reduce hardware memory
US8336052B2 (en) 2008-06-16 2012-12-18 International Business Machines Corporation Management, control, and monitoring of workload including unrelated processes of different containers
WO2010002919A1 (en) 2008-06-30 2010-01-07 Ab Initio Software Llc Data logging in graph-based computations
US20100070955A1 (en) 2008-07-08 2010-03-18 Nec Laboratories America Alias analysis for concurrent software programs
US8782613B2 (en) 2008-08-12 2014-07-15 Hewlett-Packard Development Company, L.P. Optimizing applications using source code patterns and performance analysis
US8286176B1 (en) 2008-09-29 2012-10-09 Amazon Technologies, Inc. Optimizing resource configurations
US20100169137A1 (en) 2008-12-31 2010-07-01 Ebay Inc. Methods and systems to analyze data using a graph
US7979479B2 (en) 2009-01-08 2011-07-12 International Business Machines Corporation Transaction-controlled graph processing and management
US8635694B2 (en) * 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
KR101730513B1 (ko) 2009-02-13 2017-04-26 아브 이니티오 테크놀로지 엘엘시 태스크 실행 관리
US7992040B2 (en) 2009-02-20 2011-08-02 International Business Machines Corporation Root cause analysis by correlating symptoms with asynchronous changes
US8327377B2 (en) 2009-04-30 2012-12-04 Ca, Inc. Detecting, logging and tracking component dependencies in web service transactions
US8332811B2 (en) 2009-04-30 2012-12-11 United Parcel Service Of America, Inc. Systems and methods for generating source code for workflow platform
US8473901B1 (en) 2009-06-12 2013-06-25 The Mathworks, Inc. Non-literal representation of programming language code
US8205113B2 (en) 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US8667329B2 (en) 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
AU2014262225A1 (en) 2010-06-15 2014-12-04 Ab Initio Technology Llc Dynamically loading graph-based computations
US8458729B2 (en) 2010-07-20 2013-06-04 International Business Machines Corporation Managing and optimizing workflows among computer applications
US9158650B2 (en) 2010-08-04 2015-10-13 BoxTone, Inc. Mobile application performance management
EP2609507B1 (en) 2010-08-25 2019-05-15 Ab Initio Technology LLC Evaluating dataflow graph characteristics
CN103180826B (zh) 2010-10-25 2017-04-05 起元技术有限责任公司 在代表计算机程序的数据流图中管理数据集对象
CN102012862A (zh) * 2010-11-09 2011-04-13 北京神舟航天软件技术有限公司 基于控制流图逻辑结构对比的编译器验证方法
US8997024B2 (en) 2010-12-09 2015-03-31 Microsoft Technology Licensing, Llc Navigating between views of a graph using placemarkers
AU2012100128A4 (en) 2011-02-22 2012-03-08 Zensar Technologies Ltd A computer implemented system and method for indexing and optionally annotating use cases and generating test scenarios therefrom
US8863089B2 (en) 2011-02-25 2014-10-14 Nintendo Co., Ltd. Method and apparatus for visualizing computer program execution
US8732669B2 (en) 2011-03-11 2014-05-20 Oracle International Corporation Efficient model checking technique for finding software defects
US9165029B2 (en) 2011-04-12 2015-10-20 Microsoft Technology Licensing, Llc Navigating performance data from different subsystems
US8775299B2 (en) 2011-07-12 2014-07-08 Experian Information Solutions, Inc. Systems and methods for large-scale credit data processing
US9607045B2 (en) 2012-07-12 2017-03-28 Microsoft Technology Licensing, Llc Progressive query computation using streaming architectures
US9875094B2 (en) 2012-08-29 2018-01-23 International Business Machines Corporation Microcode upgrade in a storage system
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
CA2932763C (en) 2013-12-05 2022-07-12 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832369B1 (en) * 2000-08-01 2004-12-14 International Business Machines Corporation Object oriented method and apparatus for class variable initialization
US20070022077A1 (en) * 2002-10-10 2007-01-25 Ab Inition Software Company, A Delaware Corporation Startup and Control of Graph-Based Computation
US20040260590A1 (en) * 2003-06-17 2004-12-23 International Business Machines Corporation, Armonk, New York Automatic generation of process models

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170046778A (ko) * 2014-09-02 2017-05-02 아브 이니티오 테크놀로지 엘엘시 그래프 기반 프로그램 명세의 실행

Also Published As

Publication number Publication date
US20150106818A1 (en) 2015-04-16
WO2011159759A4 (en) 2012-03-01
CN107066241B (zh) 2021-03-09
CN107066241A (zh) 2017-08-18
CN103069385A (zh) 2013-04-24
US8875145B2 (en) 2014-10-28
KR20150042297A (ko) 2015-04-20
JP2013528884A (ja) 2013-07-11
CA2801573A1 (en) 2011-12-22
HK1249218A1 (zh) 2018-10-26
JP6116721B2 (ja) 2017-04-19
EP2583168B1 (en) 2017-11-08
US9753751B2 (en) 2017-09-05
AU2011268459B2 (en) 2014-09-18
US20110307897A1 (en) 2011-12-15
EP3287896A1 (en) 2018-02-28
EP2583168A1 (en) 2013-04-24
JP5898188B2 (ja) 2016-04-06
EP3287896B1 (en) 2023-04-26
JP2016129059A (ja) 2016-07-14
KR101687213B1 (ko) 2016-12-16
AU2011268459A1 (en) 2012-12-13
CN103069385B (zh) 2016-12-28
WO2011159759A1 (en) 2011-12-22
CA2801573C (en) 2018-08-14

Similar Documents

Publication Publication Date Title
KR101687213B1 (ko) 동적으로 로딩하는 그래프 기반 계산
US8726255B2 (en) Recompiling with generic to specific replacement
US9766867B2 (en) Systems and methods for improving performance of mobile applications
US9720708B2 (en) Data layout transformation for workload distribution
EP2523108B1 (en) Processing method
Griebler et al. High-level and productive stream parallelism for Dedup, Ferret, and Bzip2
US20130152088A1 (en) Generating Filters Automatically From Data Processing Jobs
JP2015084251A (ja) ソフトウェア・アプリケーションの性能向上
US7320121B2 (en) Computer-implemented system and method for generating embedded code to add functionality to a user application
US9684493B2 (en) R-language integration with a declarative machine learning language
AU2014262225A1 (en) Dynamically loading graph-based computations
US10318261B2 (en) Execution of complex recursive algorithms
US9430196B2 (en) Message inlining
AU2016200107B2 (en) Dynamically loading graph-based computations
Ap et al. FITTCHOOSER: A dynamic feedback based fittest optimization chooser
Song et al. Apache Nemo: A Framework for Optimizing Distributed Data Processing
Hai et al. Multi-threaded on-the-fly model generation of malware with hash compaction
CN115248686A (zh) 编译器生成的代码的分析和优化

Legal Events

Date Code Title Description
A201 Request for examination
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant