KR20150042297A - 동적으로 로딩하는 그래프 기반 계산 - Google Patents
동적으로 로딩하는 그래프 기반 계산 Download PDFInfo
- Publication number
- KR20150042297A KR20150042297A KR20157008265A KR20157008265A KR20150042297A KR 20150042297 A KR20150042297 A KR 20150042297A KR 20157008265 A KR20157008265 A KR 20157008265A KR 20157008265 A KR20157008265 A KR 20157008265A KR 20150042297 A KR20150042297 A KR 20150042297A
- Authority
- KR
- South Korea
- Prior art keywords
- data flow
- data
- flow graph
- work
- graph
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G06F9/4436—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution 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)
- Devices For Executing Special Programs (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
데이터의 처리는, 하나 이상의 작업 요소를 각각 포함하는 다수의 작업 단위를 수신하는 것과, 제1 작업 단위의 수신에 의해 데이터 처리 시스템(100)에 로딩된 컴파일된 제1 데이터플로우 그래프(160)를 사용하여 제1 작업 단위를 처리하는 것을 포함한다. 이러한 처리는, 제1 작업 단위의 특징을 판정하기 위해 해석하는 것과,
판정된 특징을 갖는 작업 단위를 처리하기 위해 컴파일된 적어도 몇몇을 포함하는 데이터 기억 시스템(107) 내에 기억된 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 것과, 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 컴파일된 제1 데이터플로우 그래프(160)로서 데이터 처리 시스템(100)에 로딩하는 것과, 제1 작업 단위 내에서 하나 이상의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함한다.
판정된 특징을 갖는 작업 단위를 처리하기 위해 컴파일된 적어도 몇몇을 포함하는 데이터 기억 시스템(107) 내에 기억된 그래프로부터 하나 이상의 컴파일된 데이터플로우 그래프를 식별하는 것과, 식별된 하나 이상의 컴파일된 데이터플로우 그래프 중의 하나의 그래프를 컴파일된 제1 데이터플로우 그래프(160)로서 데이터 처리 시스템(100)에 로딩하는 것과, 제1 작업 단위 내에서 하나 이상의 작업 요소로부터 하나 이상의 출력 작업 요소를 생성하는 것을 포함한다.
Description
본 개시는 동적으로 로딩하는 그래프 기반 계산에 관한 것이다.
복잡한 계산은 방향성 그래프(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은 데이터플로우 그래프가 실행 시간에 앞서 컴파일되는 시스템의 구성 예를 나타내는 블록도이다.
도 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 (1)
- 발명의 상세한 설명에 기재된, 또는 도면에 도시된 바와 같은 장치.
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 Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137001038A Division KR101687213B1 (ko) | 2010-06-15 | 2011-06-15 | 동적으로 로딩하는 그래프 기반 계산 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150042297A true KR20150042297A (ko) | 2015-04-20 |
Family
ID=44627481
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137001038A KR101687213B1 (ko) | 2010-06-15 | 2011-06-15 | 동적으로 로딩하는 그래프 기반 계산 |
KR20157008265A KR20150042297A (ko) | 2010-06-15 | 2011-06-15 | 동적으로 로딩하는 그래프 기반 계산 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137001038A KR101687213B1 (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) | KR101687213B1 (ko) |
CN (2) | CN103069385B (ko) |
AU (1) | AU2011268459B2 (ko) |
CA (1) | CA2801573C (ko) |
HK (1) | HK1249218A1 (ko) |
WO (1) | WO2011159759A1 (ko) |
Families Citing this family (79)
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 |
WO2010093879A1 (en) | 2009-02-13 | 2010-08-19 | Ab Initio Technology Llc | Managing task execution |
AU2010337218B2 (en) | 2009-12-14 | 2015-09-24 | Ab Initio Technology Llc | Specifying user interface elements |
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
CN103069385B (zh) | 2010-06-15 | 2016-12-28 | 起元技术有限责任公司 | 用于动态加载基于图的计算的***和方法 |
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 |
US20150082314A1 (en) * | 2012-04-18 | 2015-03-19 | Nec Corporation | Task placement device, task placement method and computer program |
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 |
US10108521B2 (en) * | 2012-11-16 | 2018-10-23 | Ab Initio Technology Llc | Dynamic component performance monitoring |
US9507682B2 (en) * | 2012-11-16 | 2016-11-29 | Ab Initio Technology Llc | Dynamic graph 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 |
EP4375833A3 (en) * | 2013-12-05 | 2024-07-31 | AB Initio Technology LLC | Managing interfaces for dataflow graphs composed of sub-graphs |
CA3092699C (en) * | 2013-12-06 | 2023-07-25 | Ab Initio Technology Llc | Source code translation |
CA2931335C (en) * | 2013-12-13 | 2022-08-23 | Ab Initio Technology Llc | Dynamically determing a mode of a data processing application |
US10262078B2 (en) * | 2014-02-10 | 2019-04-16 | Apple Inc. | Systems and methods for optimizing performance of graph operations |
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 | 华为技术有限公司 | 对流数据进行处理的方法及装置 |
SG11201701652QA (en) | 2014-09-02 | 2017-04-27 | 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 |
CA2959392C (en) | 2014-09-02 | 2021-08-10 | Ab Initio Technology Llc | Managing invocation of tasks |
KR102375349B1 (ko) | 2014-09-02 | 2022-03-16 | 아브 이니티오 테크놀로지 엘엘시 | 연관된 태스크들을 제어하기 위한 그래프 기반 프로그램 명세의 구성요소들의 실행 상태 관리 |
US9760406B2 (en) | 2014-09-02 | 2017-09-12 | Ab Initio Technology Llc | Controlling data processing tasks |
US9933918B2 (en) | 2014-09-02 | 2018-04-03 | Ab Initio Technology Llc | Specifying control and data connections in graph-based programs |
WO2016036813A2 (en) * | 2014-09-02 | 2016-03-10 | Ab Initio Technology Llc | Controlling data processing tasks |
EP3189422A1 (en) * | 2014-09-02 | 2017-07-12 | AB Initio Technology LLC | Executing graph-based program specifications |
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 |
US9880818B2 (en) | 2014-11-05 | 2018-01-30 | Ab Initio Technology Llc | Application testing |
US10055333B2 (en) * | 2014-11-05 | 2018-08-21 | Ab Initio Technology Llc | Debugging a graph |
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 |
CA3114779C (en) | 2015-12-21 | 2023-03-07 | 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 | 北京中科睿芯科技集团有限公司 | 一种数据流体系结构中动态节点分配方法和*** |
CN114880133A (zh) * | 2017-08-31 | 2022-08-09 | 华为技术有限公司 | 分布式计算***,分布式计算***中数据传输方法和装置 |
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 |
US10540410B2 (en) | 2017-11-15 | 2020-01-21 | Sap Se | Internet of things structured query language query formation |
US10726072B2 (en) * | 2017-11-15 | 2020-07-28 | Sap Se | Internet of things search and discovery graph engine construction |
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 |
US12032631B2 (en) | 2018-05-30 | 2024-07-09 | Ab Initio Technology Llc | Systems and methods for dataflow graph optimization |
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 |
US20240211784A1 (en) | 2020-06-05 | 2024-06-27 | 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 | 小米汽车科技有限公司 | 数据处理方法、装置、车辆、存储介质及芯片 |
Family Cites Families (230)
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 |
US6038558A (en) | 1996-10-18 | 2000-03-14 | Sagent Technology, Inc. | Extensible database retrieval and viewing architecture |
US5930794A (en) | 1996-10-18 | 1999-07-27 | Sagent Technologies, Inc. | Database repository with deferred transactions |
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 |
US6385644B1 (en) | 1997-09-26 | 2002-05-07 | Mci Worldcom, Inc. | Multi-threaded web based user inbox for report management |
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 |
US6339775B1 (en) | 1997-11-07 | 2002-01-15 | Informatica Corporation | Apparatus and method for performing data transformations in data warehousing |
US6014670A (en) | 1997-11-07 | 2000-01-11 | 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 |
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 |
US6480876B2 (en) | 1998-05-28 | 2002-11-12 | Compaq Information Technologies Group, L.P. | System for integrating task and data parallelism 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 |
US6661427B1 (en) | 1998-11-09 | 2003-12-09 | Broadcom Corporation | Graphics display system with video scaler |
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 |
EP1181294B1 (de) | 2000-03-31 | 2004-03-31 | Sanochemia Pharmazeutika Aktiengesellschaft | 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 |
US6832369B1 (en) * | 2000-08-01 | 2004-12-14 | International Business Machines Corporation | Object oriented method and apparatus for class variable initialization |
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 |
US7167850B2 (en) | 2002-10-10 | 2007-01-23 | Ab Initio Software Corporation | Startup and control of graph-based computation |
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 |
US8281297B2 (en) | 2003-02-05 | 2012-10-02 | 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 |
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 |
US7417645B2 (en) | 2003-03-27 | 2008-08-26 | Microsoft Corporation | Markup language and object model for vector graphics |
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 |
US8265979B2 (en) * | 2003-06-17 | 2012-09-11 | International Business Machines Corporation | Automatic generation of process models |
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 |
ATE515746T1 (de) | 2003-09-15 | 2011-07-15 | Ab Initio Technology Llc | Datenprofilierung |
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 |
US7840949B2 (en) | 2003-11-03 | 2010-11-23 | Ramal Acquisition Corp. | System and method for data transformation using dataflow graphs |
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 |
US20050289558A1 (en) | 2004-06-08 | 2005-12-29 | Daniel Illowsky | Device interoperability runtime establishing event serialization and synchronization amongst a plurality of separate processing units and method for coordinating control data and operations |
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 |
US20060282474A1 (en) | 2005-01-18 | 2006-12-14 | Mackinnon Allan S Jr | 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 | 情報処理装置、情報処理方法、プログラムおよびコンピュータ読取り可能な記録媒体 |
US8266609B2 (en) | 2005-12-07 | 2012-09-11 | Microsoft Corporation | Efficient placement of software transactional memory operations around procedure calls |
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 |
CN101501678B (zh) * | 2006-08-10 | 2013-10-16 | 起元科技有限公司 | 在基于图的计算中分配服务 |
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 |
WO2008047351A2 (en) | 2006-10-19 | 2008-04-24 | Checkmarx Ltd. | Locating security vulnerabilities in source code |
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 |
US8751918B2 (en) | 2007-04-17 | 2014-06-10 | Earl Industries, Llc | Digital system for organizing diverse information |
JP4073033B1 (ja) | 2007-04-27 | 2008-04-09 | 透 降矢 | 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム |
CA2965896C (en) | 2007-07-26 | 2020-01-07 | Ab Initio Technology Llc | Transactional graph-based computation with error handling |
US8347292B2 (en) | 2007-08-30 | 2013-01-01 | International Business Machines Corporation | Transaction aggregation to increase transaction processing throughout |
CN101884024B (zh) | 2007-09-20 | 2016-03-30 | 起元技术有限责任公司 | 在基于图的计算中管理数据流 |
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 |
US20090193416A1 (en) | 2008-01-24 | 2009-07-30 | Nec Laboratories America, Inc. | Decidability of reachability for threads communicating via locks |
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 |
CN104679807B (zh) | 2008-06-30 | 2018-06-05 | 起元技术有限责任公司 | 基于图的计算中的数据日志记录 |
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 |
WO2010093879A1 (en) | 2009-02-13 | 2010-08-19 | Ab Initio Technology Llc | Managing task execution |
US7992040B2 (en) | 2009-02-20 | 2011-08-02 | International Business Machines Corporation | Root cause analysis by correlating symptoms with asynchronous changes |
US8332811B2 (en) | 2009-04-30 | 2012-12-11 | United Parcel Service Of America, Inc. | Systems and methods for generating source code for workflow platform |
US8327377B2 (en) | 2009-04-30 | 2012-12-04 | Ca, Inc. | Detecting, logging and tracking component dependencies in web service transactions |
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 |
CN103069385B (zh) | 2010-06-15 | 2016-12-28 | 起元技术有限责任公司 | 用于动态加载基于图的计算的***和方法 |
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 |
WO2012027560A1 (en) | 2010-08-25 | 2012-03-01 | Ab Initio Technology Llc | Evaluating dataflow graph characteristics |
EP2633398B1 (en) | 2010-10-25 | 2020-05-27 | Ab Initio Technology LLC | Managing data set objects in a dataflow graph that represents a computer program |
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 |
AU2012281182B2 (en) | 2011-07-12 | 2015-07-09 | Experian Information Solutions, Inc. | Systems and methods for a large-scale credit data processing architecture |
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 |
EP4375833A3 (en) | 2013-12-05 | 2024-07-31 | AB Initio Technology LLC | Managing interfaces for dataflow graphs composed of sub-graphs |
-
2011
- 2011-06-15 CN CN201180039226.7A patent/CN103069385B/zh active Active
- 2011-06-15 AU AU2011268459A patent/AU2011268459B2/en active Active
- 2011-06-15 EP EP17195578.4A patent/EP3287896B1/en active Active
- 2011-06-15 JP JP2013515468A patent/JP5898188B2/ja active Active
- 2011-06-15 CN CN201611082453.9A patent/CN107066241B/zh active Active
- 2011-06-15 CA CA2801573A patent/CA2801573C/en active Active
- 2011-06-15 WO PCT/US2011/040440 patent/WO2011159759A1/en active Application Filing
- 2011-06-15 EP EP11727883.8A patent/EP2583168B1/en active Active
- 2011-06-15 KR KR1020137001038A patent/KR101687213B1/ko active IP Right Grant
- 2011-06-15 US US13/161,010 patent/US8875145B2/en active Active
- 2011-06-15 KR KR20157008265A patent/KR20150042297A/ko not_active Application Discontinuation
-
2014
- 2014-10-22 US US14/520,588 patent/US9753751B2/en active Active
-
2016
- 2016-03-03 JP JP2016040815A patent/JP6116721B2/ja active Active
-
2018
- 2018-07-03 HK HK18108544.4A patent/HK1249218A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CA2801573A1 (en) | 2011-12-22 |
KR101687213B1 (ko) | 2016-12-16 |
EP2583168B1 (en) | 2017-11-08 |
US8875145B2 (en) | 2014-10-28 |
KR20130100261A (ko) | 2013-09-10 |
HK1249218A1 (zh) | 2018-10-26 |
JP2016129059A (ja) | 2016-07-14 |
AU2011268459A1 (en) | 2012-12-13 |
WO2011159759A1 (en) | 2011-12-22 |
CA2801573C (en) | 2018-08-14 |
CN103069385A (zh) | 2013-04-24 |
US20150106818A1 (en) | 2015-04-16 |
WO2011159759A4 (en) | 2012-03-01 |
US20110307897A1 (en) | 2011-12-15 |
CN103069385B (zh) | 2016-12-28 |
CN107066241A (zh) | 2017-08-18 |
EP3287896B1 (en) | 2023-04-26 |
CN107066241B (zh) | 2021-03-09 |
AU2011268459B2 (en) | 2014-09-18 |
EP3287896A1 (en) | 2018-02-28 |
US9753751B2 (en) | 2017-09-05 |
EP2583168A1 (en) | 2013-04-24 |
JP6116721B2 (ja) | 2017-04-19 |
JP2013528884A (ja) | 2013-07-11 |
JP5898188B2 (ja) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101687213B1 (ko) | 동적으로 로딩하는 그래프 기반 계산 | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
Dukic et al. | Photons: Lambdas on a diet | |
Griebler et al. | High-level and productive stream parallelism for Dedup, Ferret, and Bzip2 | |
US20150363195A1 (en) | Software package management | |
US7320121B2 (en) | Computer-implemented system and method for generating embedded code to add functionality to a user application | |
Cingolani et al. | BigDataScript: a scripting language for data pipelines | |
Dullien et al. | A Framework for Automated {Architecture-Independent} Gadget Search | |
US10409567B2 (en) | Trimming unused dependencies using package graph and module graph | |
AU2014262225A1 (en) | Dynamically loading graph-based computations | |
US7219341B2 (en) | Code analysis for selective runtime data processing | |
Katagiri et al. | Early experiences for adaptation of auto-tuning by ppOpen-AT to an explicit method | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
US7823141B1 (en) | Using a concurrent partial inspector loop with speculative parallelism | |
US20160110170A1 (en) | Message inlining | |
Ap et al. | FITTCHOOSER: A dynamic feedback based fittest optimization chooser | |
AU2016200107B2 (en) | Dynamically loading graph-based computations | |
Hai et al. | Multi-threaded on-the-fly model generation of malware with hash compaction | |
US20120117546A1 (en) | Run-time Module Interdependency Verification | |
Polito et al. | Extended results of Tornado: A Run-Fail-Grow approach for Dynamic Application Tayloring | |
Kao et al. | Kernel Assisted Container Virtualization and Its Application for Containerized CUDA Environment | |
JP2013080281A (ja) | 実行制御プログラム、コンパイラ、実行制御装置および実行制御方法 | |
Driscoll et al. | Enabling Inter-Machine Parallelism in High-Level Languages with SEJITS and MapReduce | |
POLITO et al. | Tornado |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |