KR101169296B1 - 그래프 기반 계산을 위한 파라미터의 관리 - Google Patents

그래프 기반 계산을 위한 파라미터의 관리 Download PDF

Info

Publication number
KR101169296B1
KR101169296B1 KR1020077030527A KR20077030527A KR101169296B1 KR 101169296 B1 KR101169296 B1 KR 101169296B1 KR 1020077030527 A KR1020077030527 A KR 1020077030527A KR 20077030527 A KR20077030527 A KR 20077030527A KR 101169296 B1 KR101169296 B1 KR 101169296B1
Authority
KR
South Korea
Prior art keywords
ordering
parameters
parameter
graph
determining
Prior art date
Application number
KR1020077030527A
Other languages
English (en)
Other versions
KR20080020642A (ko
Inventor
제이 스케핑턴 홀리
브론드 라손
Original Assignee
아브 이니티오 테크놀로지 엘엘시
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아브 이니티오 테크놀로지 엘엘시 filed Critical 아브 이니티오 테크놀로지 엘엘시
Publication of KR20080020642A publication Critical patent/KR20080020642A/ko
Application granted granted Critical
Publication of KR101169296B1 publication Critical patent/KR101169296B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • General Factory Administration (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

그래프 기반의 계산(graph-based computation)에서의 파라미터 오더링 방법은, 계산 그래프 내의 그래프 요소(element)와 관련된 파라미터의 세트의 요구된 제1 오더링(ordering)(2602)을 결정하는 단계, 파라미터의 세트에 대한 오더링 제약 조건(ordering constraint)(2604)을 결정하는 단계, 및 요구된 제1 오더링에 따라 오더링 제약 조건을 충족시키는 파라미터의 세트의 제2 오더링(2606)을 결정하는 단계를 포함한다.
롤업 성분, 파라미터, 독립변수, 링크, 웹 인터페이스, 그래픽 대화창

Description

그래프 기반 계산을 위한 파라미터의 관리{MANAGING PARAMETERS FOR GRAPH-BASED COMPUTATIONS}
본 발명은 데이터 처리 시스템에서의 계산에 대한 제어에 관한 것으로, 구체적으로는 그래프 기반 계산을 위한 파라미터의 관리에 관한 것이다.
복합 비지니스 시스템은 통상적으로 데이터를 한 스테이지에 의해 발생된 결과를 다음 스테이지에 제공하는 다수의 스테이지로 처리한다. 이러한 시스템을 통한 정보의 전체적인 흐름은, 그래프 내의 정점(vertex)이 성분(component)(데이터 파일 또는 프로세스 중 하나)를 나타내고, 그래프 내의 링크 또는 "에지"가 성분 간의 데이터의 흐름을 나타내는, 방향성을 갖는 데이터 흐름 그래프(directed data flow graph)로 설명될 수 있을 것이다.
병렬 처리 시스템을 설명하기 위해 동일한 유형의 그래픽 표현이 사용될 수 있다. 이러한 설명을 위해, 병렬 처리 시스템은, 로컬(예컨대, SMP 컴퓨터 등의 멀티프로세서 시스템) 또는 로컬하게 분포된 중앙 처리 장치(예컨대, 클러스터 또는 MPP로서 결합된 복수의 프로세서), 또는 원격으로 혹은 원격적으로 분포된 중앙 처리 장치(예컨대, LAN 또는 WAN 네트워크를 통해 결합된 복수의 프로세서), 또는 이들을 조합한 형태의 복수의 중앙 처리 장치(CPU)를 이용하는 컴퓨터 시스템의 어 떠한 구성도 포함하는 것으로 한다. 또한, 그래프는 성분(데이터 파일 또는 프로세스) 및 흐름(그래프 에지 또는 링크)으로 구성될 것이다. 그래프(성분 및 흐름)의 요소를 명시적으로 또는 암묵적으로(explicitly or implicitly) 증가시킴으로써, 시스템에서의 병렬 처리를 나타낼 수 있다.
그래프는 또한 계산을 직접적으로 실시하기 위해 사용될 수 있다. 미국 렉싱턴에 소재하는 Ab Initio Software Corporation에서 개발한 그래픽 개발 환경(GDE)의 "CO>OPERATING SYSTEM®"은 이러한 시스템을 구현한다. 이 시스템에 따라 구성된 그래프는, 그래프 성분에 의해 표현된 개별 프로세스에 정보를 제공하고 개별 프로세스로부터 정보를 얻으며, 프로세스들 간에 정보를 이동시키고, 프로세스를 위한 실행 순서를 정하는 방법을 제공한다. 이 시스템은 프로세스간 통신 방법을 선택하는 알고리즘과, 프로세스 실행을 스케쥴링하는 알고리즘을 포함하며, 또한 그래프의 실행에 대한 모니터링을 제공한다.
개발자들은, "런타임"으로(즉, 그래프가 실행될 때에) 그래프 컴파일러에 의해 실행 가능한 명령으로 변환되는 명령(예컨대, 셀 스크립트)의 생성을 가능하게 하는 환경 변수 또는 명령어-라인 독립변수(argument)의 사용을 통해 한 방향 또는 다른 방향으로 제어되는 그래프를 구축하곤 한다. 그러므로, 환경 변수 및 명령어-라인 독립변수는, 파일 명칭, 데이터 선택 표현식 및 키(예컨대, 단축키) 등의 정보를 특정하여 어플리케이션을 더욱 유연하게 만드는 "ad hoc" 파라미터가 된다. 그러나, 사용자는 생성된 셀 스크립트를 판독하고, 환경 변수 및 명령어-라인 독립변수에 대한 레퍼런스를 검색하여 특정 그래프의 실행을 제어하는 파라미터의 세트 를 찾아내어야 한다.
전반적인 양태에서, 본 발명은 그래프 기반 계산(graph-based computation)에서의 파라미터를 오더링(ordering)하는 방법, 해당 소프트웨어 및 시스템을 특징으로 한다. 파라미터 오더링 방법은, 계산 그래프 내의 그래프 요소와 관련된 파라미터의 세트의 요구된 제1 오더링을 결정하는 단계, 상기 파라미터의 세트에 대한 오더링 제약 조건(ordering constraint)을 결정하는 단계, 및 요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 상기 파라미터의 세트의 제2 오더링(2606)을 결정하는 단계를 포함한다.
이러한 양태는 다음의 특징 중 하나 이상을 포함할 수 있다:
상기 파라미터 오더링 방법은 계산 그래프의 스페시피케이션(specification)을 수신하는 단계를 더 포함하며, 요구된 상기 제1 오더링은, 상기 그래프 요소가 상기 스페시피케이션에서 나타나는 순서를 기반으로 한다.
상기 그래프는 상기 오더링 제약 조건을 부과(impose)한다.
상기 파라미터 오더링 방법은, 상기 제2 오더링에 따라 상기 파라미터의 값을 결정하는 단계를 더 포함한다.
상기 파라미터의 값을 결정하는 단계는 사용자 입력을 프롬프트(prompt)하는 단계를 포함한다.
상기 파라미터 오더링 방법은, 상기 사용자 입력을 프롬프트하는 단계에 대한 사용자 입력에 기초하여, 상기 파라미터 중 제1 파라미터에 대한 파라미터 값을 결정하는 단계, 및 상기 파라미터 값을 결정하는 단계에서 결정된 파라미터 값을 상기 제1 파라미터에 대한 값으로서 사용하여 상기 그래프를 실행하는 단계를 더 포함한다.
상기 오더링 제약 조건을 결정하는 단계는, 상기 파라미터의 값들 간의 종속성(dependency)을 결정하는 단계를 포함한다.
상기 오더링 제약 조건은, 상기 제1 파라미터가 제2 파라미터에 종속되는 경우, 상기 제1 파라미터를 상기 제2 파라미터의 뒤에 오더링하는 것을 포함한다.
상기 오더링 제약 조건은, 하나 이상의 방향성 비순환 그래프(directed acyclic graph)의 각각의 정점(vertex)이 상기 파라미터의 세트 내의 파라미터에 대응하고 있는, 하나 이상의 상기 방향성 비순환 그래프에 대응한다.
상기 제2 오더링을 결정하는 단계는, 상기 오더링 제약 조건에 기초하여 상기 파라미터의 세트 내의 파라미터의 토폴로지컬 분류(topological sort)를 수행하는 단계를 포함한다.
요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 것은, 상기 오더링 제약 조건을 충족시키기 위해 리오더링되도록 요구되지 않는 파라미터의 일부 또는 전부에 대한 상기 제1 오더링을 상기 제2 오더링 내에 보존하는 것을 포함한다.
본 발명의 양상은 다음 장점 중 하나 이상을 포함할 수 있다:
런타임 파라미터를 통한 그래프의 인터페이스가 정규화(formalization)된다. 그래프에 대한 인터페이스는, 어떠한 파라미터가 제공되도록 요구되는지와, 이들이 프롬프트(prompt)되어야 하는 방식을, 시스템이 이해하기에 충분한 정도로 양호하게 정의된다.
성분을 제어하는 메타데이터는 런타임 파라미터에 의해 직접적으로 또는 간접적으로 특정되거나 계산될 수 있다.
그래프의 구조는 조건부 파라미터를 제어하는 런타임 파라미터의 값에 기초하여 수정될 수 있으며, 이로써 성분의 존재 여부가 사용자 선택에 따라 결정된다.
그래프의 런타임 파라미터화(runtime parameterization)의 이점은, 어플리케이션이 비지니스 분석가 및 통계 모델링 실행자 등의 최종 사용자로 하여금 그들의 요구를 총족하는 데이터를 요청할 수 있도록 하기에 매우 충분한 정도로 파라미터화될 수 있다는 점이다. 현대의 기업 데이터 환경의 복잡성으로 인해, 데이터 수집 및 사전 분석 변환의 프로세스에서 일반적으로 사람의 직접적인 참여가 상당히 많이 요구되는 상태에 이르게 되었다. 본 발명은, 각각의 질의 유형에 대한 중요한 과정에서 전문 데이터 분석가를 필요로 하지 않고서도 최종 사용자가 원하는 데이터를 최종 사용자가 정의하여 검색할 수 있도록 하는 강력한 툴을 제공한다.
그래프 내에서 전파되는 메타데이터는, 다른 메타데이터를 함수로 하여 정의되는 메타데이터와 같은 함수적으로 변환되는 메타데이터를 포함할 수 있다. 메타데이터의 전파는, 예컨대 그래프가 실행되기 전의 편집 시에 발생할 수 있다. 변환된 메타데이터의 전파를 가능하게 함으로써, 그래프가 실행되기 전에도 메타데이터를 보거나 및/또는 조작할 수 있도록 사용자의 능력을 향상시킨다.
런타임 파라미터를 갖는 재사용 가능한(서로 연결 가능한(inter-connectable)) 성분의 라이브러리가 존재할 수 있다. 그래프는 그래프 내의 런타임 파라미터의 전부에 대한 자동 결정된 프롬프트 순서를 갖는 이들 성분으로부터 구축될 수 있다. 일부 경우에, 파라미터는 특정 제약 조건(certain constraint)을 충족시키기 위해 리오더링될 필요가 있을 수도 있다. 요구된 오더링(예컨대, 개발자에 의해 특정된 오더링)에 따라 이들 제약 조건을 충족시키도록 파라미터를 리오더링하는 것은, 파라미터를 요구된 오더링과는 현저하게 벗어난 순서로 사용자에게 프롬프트하는 것을 감소시킨다.
본 발명의 다른 특징 및 장점은, 다음의 상세한 설명 및 청구범위로부터 명확하게 될 것이다.
도 1a는 주요 요소(element)의 상호관계를 나타내는 본 발명의 일시예에 대한 블록도이다.
도 1b는 데이터 흐름 그래프의 블록도이다.
도 2는 지정된 런타임 파라미터를 갖는 롤업 성분 및 분류 성분(204)을 포함하는 대표적인 그래프의 블록도이다.
도 3은 그래프와 관련될 런타임 파라미터 그리드(runtime parameter grid)를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다.
도 4는 런타임 파라미터를 이용하는 처리를 요약한 흐름도이다.
도 5는 "key" 프롬프트에 의해 생성된 그래픽 대화창의 일실시예의 다이아그램이다.
도 6은 "filter" 프롬프트에 의해 생성된 그래픽 대화창의 일실시예의 다이아그램이다.
도 7은 "rollup" 프롬프트에 의해 생성된 그래픽 대화창의 일실시예의 다이아그램이다.
도 8은 "reformat" 프롬프트에 의해 생성된 그래픽 대화창의 일실시예의 다이아그램이다.
도 9a는 병합-결합(MergeJoin) 성분이 파일 A와 파일 B로부터의 데이터를 결합하여 그 결과를 출력 파일에 출력하는 제1 그래프의 블록도이다.
도 9b는 롤업 성분이 파일 A로부터의 데이터를 통합하여 그 결과를 출력 파일에 출력하는 제2 그래프의 블록도이다.
도 9c는 병합-결합 성분이 파일 A와 파일 B로부터의 데이터를 결합하고, 롤업 성분이 그 결과의 데이터를 통합하여 최종 결과를 출력 파일에 출력하는 그래프의 블록도이다.
도 10은 상태-해석(Condition-interpretation) 제어를 갖는 상태를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다.
도 11은 오용(poisoning)이 발생하는 상황을 나타내는 그래프의 다이아그램이다.
도 12는 "Remove Completely" 조건부 성분을 포함하는 그래프의 런타임 준비의 프로세스를 요약하는 흐름도이다.
도 13은 본 발명의 특정 실시예에 대한 "Replace With Flow" 조건부 성분을 포함하는 그래프의 런타임 준비의 프로세스를 요약하는 흐름도이다.
도 14는 런타임 파라미터없이 롤업 어플리케이션을 나타내는 그래프의 다이아그램이다.
도 15는 도 14의 롤업 어플리케이션의 런타임 파라미터화된 버젼을 나타내는 그래프의 다이아그램이다.
도 16은 도 15의 일례의 어플리케이션에 대한 런타임 파라미터 그리드를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다.
도 17a는 도 16의 파라미터 그리드 내의 정보로부터 웹 인터페이스에 의해 생성된 폼(form)을 나타내는 그래픽 대화창의 일실시예의 다이아그램이다.
도 17b는 사용자에 의해 파라미터 값으로 채워진 도 17a의 폼의 다이아그램이다.
도 18은 런타임 파라미터화된 롤업 및 결합 어플리케이션을 나타내는 그래프의 다이아그램이다.
도 19는 도 18의 일례의 어플리케이션에 대한 런타임 파라미터 그리드를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다.
도 20은 도 19의 파라미터 그리드 내의 정보로부터 웹 인터페이스에 의해 생성된 폼을 나타내는 그래픽 대화창의 일실시예의 다이아그램이다.
도 21은 런타임 파라미터화된 롤업-결합-분류 어플리케이션을 나타내는 그래프의 다이아그램이다.
도 22는 도 21에 도시된 일례의 어플리케이션에 대한 런타임 파라미터 그리 드를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다.
도 23a는 메타데이터가 전파되는 그래프의 다이아그램이다.
도 23b는 도 23a의 그래프 내의 성분에 대한 서브-그래프의 다이아그램이다.
도 24는 메타데이터 전파 프로세스에 대한 흐름도이다.
도 25a는 성분내(intra-component) 및 성분간(inter-component) 종속성을 갖는 파라미터를 포함하는 그래프이다.
도 25b 및 도 25c는 도 25a 내의 그래프의 파라미터 사이의 종속성을 나타내는 종속성 그래프이다.
도 26은 수정된 토폴로지 분류 프로세스의 다이아그램이다.
개론
도 1a는 주요 구성요소의 상호관계를 나타내는 본 발명의 일실시예의 블록도이다. 그래픽 개발 환경(GDE)(102)은, 실행 가능한 그래프를 작성하고 그래프 성분에 대한 파라미터를 정하는 사용자 인터페이스를 제공한다. GDE로는 본 발명의 출원인으로부터 이용 가능한 "CO>OPERATING SYSTEM® GDE"이 가능하다. GDE(102)는 보관 장치(104) 및 병렬 연산 시스템(106)과 통신한다. 또한, 보관 장치(104) 및 병렬 연산 시스템(106)에는 웹 인터페이스(108) 및 실행부(110)가 접속된다.
보관 장치(104)는, 그래프 기반 어플리케이션의 개발 및 실행과, 그래프 기반 어플리케이션과 다른 시스템(예컨대, 다른 연산 시스템) 간의 메타데이터의 교환을 지원하도록 설계된 조정 가능한 객체 지향 데이터베이스 시스템(scalable object-oriented system)인 것이 바람직하다. 보관 장치(104)는 도큐멘테이션(documentation), 레코드 포맷, 변환 함수, 그래프, 업무(jobs) 및 모니터링 정보를 포함하는(그러나 이러한 것으로만 제한되지는 않음) 모든 종류의 메타데이터에 대한 저장 시스템이다. 보관 장치는 본 기술 분야에 이미 공지되어 있으며, 이에 대해서는 예컨대 미국 특허 번호 5,930,794, 6,032,158, 6,038,558 및 6,044,374를 참조하기 바란다.
병렬 연산 시스템(106)은 GDE(102)에서 생성된 데이터 흐름 그래프의 표현을 수신하고, 그래프에 의해 정해진 처리 로직 및 자원에 대응하는 컴퓨터 명령어를 생성한다. 병렬 연산 시스템(106)은 통상적으로 이들 명령어를 복수의 프로세서(서로 동질의 것일 필요는 없음) 상에서 실행된다. 적합한 병렬 연산 시스템으로는 본 발명의 출원인으로부터 이용 가능한 "CO>OPERATING SYSTEM®"이 있다.
웹 인터페이스(108)는 보관 장치(104)의 컨텐츠에 대한 웹 브라우저 기반의 화면을 제공한다. 웹 인터페이스(108)를 이용하면, 사용자는 객체를 브라우징하고, 새로운 객체를 생성하며, 기존의 객체를 변경하고, 어플리케이션 파라미터를 특정하며, 업무를 계획하는 등을 행할 수 있다. 웹 인터페이스(108)는, 파라미터화된 그래프에 대한 폼 기반 사용자 인터페이스(form-based user interface)를, 그래프의 런타임 파라미터를 위해 저장 장치(104)에 저장된 정보에 기초하여 자동적으로 생성한다.
실행부(110)는 웹 인터페이스(108)를 통해 액세스되는 옵션의 저장 장치 기반 업무 스케쥴링 시스템이다. 실행부(110)는 업무 및 업무 큐(job queue)를 보관 장치(104) 내에 유지하며, 웹 인터페이스(108)는 업무 및 업무 큐의 화면을 제공하여 업무 및 업무 큐의 조작을 용이하게 한다.
도 1b는 입력 데이터세트(122)가 흐름(124)을 통해 필터 성분(126)에 연결되는 간략한 데이터 흐름 그래프(120)를 도시하고 있다. 필터 성분(126)은 흐름(128)에 의해 출력 데이터세트(130)에 연결된다. 데이터세트는, 예컨대 데이터 흐름 그래프에 의해 수행되는 계산을 위해 데이터(예컨대, 입력 데이터세트)를 제공하거나 데이터(예컨대, 출력 데이터세트)를 수신하는 파일 또는 데이터베이스 테이블을 포함할 수 있다.
데이터 흐름 그래프에서의 "흐름"에 의해 표현된 데이터의 흐름은 별개의 데이터 요소로 조직화될 수 있다. 예컨대, 성분은 레코드(또는 행) 및 필드(또는 열)로 조직화되는 데이터세트로부터의 레코드를 포함할 수 있다. 레코드 내의 값에 대응하는 필드의 시퀀스 및 데이터 유형을 기술하는 메타데이터는 "레코드 포맷"으로 지칭된다.
그래프 내의 수단 및 데이터세트는, 흐름에 연결하기 위한 입력 및/또는 출력 포트를 갖는다. 흐름(124, 128)의 "인입단(source end)"은 각각 입력 데이터세트(122)의 출력 포트와 필터 성분(126)의 출력 포트와 인터페이스한다. 흐름(124, 128)의 "인출단(sink end)"은 각각 필터 성분(126)의 입력 포트와 출력 데이터 세트(130)의 입력 포트와 인터페이스한다. 데이터세트 또는 성분의 입력 또는 출력 포트는 포트 내로 또는 포트 밖으로 흐르는 데이터에 대한 레코드 포맷과 같은 메타데이터에 연관된다.
수단과 관련된 포트 또는 다른 메타데이터에 대한 레코드 포맷을 포함하는 파라미터는 파라미터 스코핑(parameter scoping)을 위한 규칙에 따른 값에 바인딩(binding)된다. 파라미터는 설계시 또는 런타임시(즉, 하술되는 바와 같은 "런타임 파라미터")의 값에 바인딩될 수도 있다. 파라미터의 값은 예컨대 사용자 인터페이스를 통해(예컨대, 프롬프트에 응답하여) 사용자에 의해 정의되거나, 파일로부터 정의되거나, 또는 동일한 콘텍스트 또는 상이한 콘텍스트 내의 또 다른 파라미터를 통해 정의될 수 있다. 예컨대, 파라미터는 파라미터를 또 다른 파라미터에 대해 "동일한" 관계를 갖도록 지정함으로써 상이한 콘텍스트(예컨대, 상이한 성분의 콘텍스트에서 평가된 파라미터)로부터 반출(export)될 수 있다.
그래프에서 사용된 성분은 "서브-그래프"를 형성하는 흐름과 서로 연결되는 다른 성분을 이용하여 구현될 수 있다. 서브-그래프가 또 다른 그래프에서 성분으로서 사용되기 전에, 수단의 입력 및/또는 출력 포트와 같은 성분의 여러 특징부가 정해진다. 일부 경우에, 서브-그래프의 성분 간의 관계를 처리해야 하는 성분의 특징은, 성분이 그래프에 사용되기 전에 특정되어야 한다. 예컨대, 서브-그래프 성분의 런타임 파라미터에 대한 프롬프트 순서(prompting order)는 선택될 필요가 있을 것이다. 그래프 내의 성분의 런타임 파라미터에 대한 프롬프트 순서를 선택하기 위한 방식은 아래에 보다 구체적으로 설명되어 있다.
메타데이터 전파( Metadata Propagation )
레코드 포맷 파라미터 등의 포트와 관련된 메타데이터의 값은 "전파"에 의해 획득될 수 있다. 메타데이터 전파는 "외부적으로" 또는 "내부적으로" 발생할 수 있다. 외부 메타데이터 전파에 대해, 제1 성분의 포트에 대한 레코드 포맷 파라미터의 값은 흐름에 의해 제1 성분에 연결되는 제2 성분의 포트에 대한 레코드 포맷 값을 전파함으로써 획득할 수 있다. 그 값은 흐름의 인입단으로부터 인출단으로의 다운스트림 또는 흐름의 인출단으로부터의 인입단으로의 업스트림 중 하나로 전파할 수 있다. 메타데이터는 메타데이터를 정한 포트로부터 메타데이터를 정하지 못한 포트로 전파한다.
내부 메타데이터 전파를 위해, 성분의 한 포트에 대해 정해진 메타데이터는 성분을 구현하는 서브-그래프에 기초하여 그 성분의 또 다른 포트에 전파한다. 일부 경우, 내부 메타데이터 전파는 "비-변환" 내부 데이터 경로를 통해 발생한다. 예컨대, 사용자는 분류 성분 내로 흐르는 레코드의 데이터 유형을 특정하는 분류 성분의 입력 포트에 메타데이터를 제공할 수도 있다. 분류 성분이 레코드의 순서를 바꾸기는 하지만 변환하지는 않기 때문에, 분류 성분에 의해 데이터 유형이 변경되지 않고, 이 데이터 유형은 분류 성분의 외부로 흐르는 레코드의 데이터 유형을 정확하게 기술하는 분류 성분의 출력 포트에 변화되지 않은 상태로 전파한다.
일부 수단은 이들을 통해 흐르는 데이터를 변환(또는 선택적으로 변환)하지 않는다. 예컨대, 사용자는 필터 성분 내로 흐르는 레코드의 필드를 특정하는 필터 성분의 입력 포트에 메타데이터를 제공할 수도 있다. 필터 성분은 각각의 레코드로부터 소정의 필드의 값을 제거할 수도 있다. 메타데이터 정의는, 필터 성분의 출력 포트에 대한 메타데이터가 수단의 필터 동작에 따라 입력 포트의 메타데이터에 관련된다는 것을 특정하기 위해 사용될 수 있다. 예컨대, 필터링된 필드는 레 코드 필드를 특정하는 메타데이터로부터 제거될 수도 있다. 이러한 메타데이터 정의는 입력 포트 메타데이터가 알려지기 전에도 공급될 수 있다. 따라서, 메타데이터는, 메타데이터가 아래에 상세하게 설명되는 바와 같이 또 다른 포트에 대한 메타데이터를 포함하는 하나 이상의 파라미터의 함수로서 특정될 포트와 관련되도록 함으로써, 변환 내부 데이터 경로를 통해서도 전파할 수 있다.
내부 및 외부 메타데이터 전파는, 설계 시에, 그래프가 구축되고 있고, 사용자가 그래프 내의 일부 수단의 일부 포트에 메타데이터를 공급하는 동안 발생하도록 구성될 수도 있다. 이와 달리, 메타데이터 전파는 그래프가 구축된 후, 런타임 시에 또는 런타임 직전에 발생할 수도 있다.
런타임 파라미터( Runtime Parameters )
런타임 파라미터는 어플리케이션 구축자(builder)로 하여금 파라미터 설정치(예컨대, 분류 함수의 키 파라미터, 파일명, 레코드 포맷, 변환 함수 등)의 값을 런타임(예컨대, 프로그램이 실행되는 시점, 또는 프로그램이 컴퓨터 시스템 상에서 실행되기 직전)으로 미룰 수 있도록 한다. 런타임 파라미터의 값은 최종 사용자에 의해 제공될 수도 있고, 또는 다른 런타임 파라미터와 객체 보관 장치에 저장된 객체의 조합으로부터 구해질 수도 있다.
런타임 파라미터는 어플리케이션에 소정량의 유연성을 부가한다. 부가되는 유연성은 메타데이터(데이터 포맷 또는 타입, 및 프로그램 로직 또는 트랜스폼)를 요구에 따라 계산하기 위해 이들 파라미터를 이용함으로써 달성된다. 로직 및 트랜스폼은 다른 타입 및 트랜스폼, 사용자 공급 파라미터 값, 및 저장된 객체(예컨 대, 보관 장치로부터)와 합성될 수도 있다. 이로써, 어떠한 유형의 입력 데이터와도 작동하거나, 또는 런타임 파라미터 값을 통해 직접적으로 또는 간접적으로 구성이 제어되는 일련의 트랜스폼을 통해 데이터를 생성하는 "범용의" 어플리케이션을 구축할 수 있다.
일부 구현예에서, 런타임 파라미터를 작성 또는 편집할 때, 개발자는 각각의 파라미터에 대한 프롬프트 및 그 프롬프트를 디스플레이하기 위한 조건을 특정할 수 있을 것이다. 시스템은, 조건이 충족되는 경우, 파라미터 값을 수신하기 위해 그래픽 사용자 인터페이스(GUI)를 제공하기 위해 프롬프팅 디렉티브(prompting directive)를 해석한다.
런타임 파라미터의 지정( Designation of Runtime Parameters )
런타임 파라미터는 그래픽 실행 시에(즉, 런타임) 외부 입력에 기초하여 그래프의 동작을 수정하기 위한 메카니즘을 개발자에게 제공한다. 바람직한 실시예에서, 이들 외부 값은 직접 사용자 입력에 의해 제공된다. 그러나, 이들 외부 값은 환경 변수 및 명령어 라인 파라미터를 포함하는 다수의 상이한 소스로부터 유입될 수도 있다. GDE(102)는, 그래프가 GDE로부터 직접 실행될 때에 테스트 값을 개발자에게 프롬프트할뿐만 아니라 이러한 상황의 전부를 처리하도록 정확한 코드를 생성한다. 런타임 파라미터를 사용하면, 개발자는 예컨대 입력 파일의 경로가 특정 명칭을 갖는 환경 변수에 의해 제공될 것이라는 것을 명확하게 선언(declare)할 수 있으며, 그 환경 변수는 그 후 그래프의 인터페이스의 공지의 부분이 된다. 그러므로, 이러한 파라미터에 대해 양호하게 정의된 인터페이스가 존재한다. 특정 그래프의 실행을 제어하는 파라미터의 세트를 찾기 위해, 예컨대, 생성된 셀 스크립트를 판독하고, 그 환경 변수 및 명령어-라인 독립변수(command-line argument)에 대한 레퍼런스를 검색할 필요가 없다.
도 2는 지정된 런타임 파라미터를 갖는 롤업 성분(202) 및 분류 성분(204)을 포함하는 대표적인 그래프(200)의 블록도이다. 런타임 파라미터(분류 성분(204)을 위한 키 및 롤업 성분(202)을 위한 규칙)는 입력을 위한 인터페이스(206)에서 사용자에게 제공될 것이다. 아래의 섹션은, 런타임 파라미터를 지정하고, 사용자 입력을 프롬프트하는 런타임 파라미터의 제공을 위해 통합된 사용자 인터페이스를 작성하는 방법을 설명한다.
런타임 파라미터는 다수의 방식으로 지정되거나 정의될 것이다. 한 가지 방식은 GDE(102)에서 디스플레이된 런타임 파라미터 그리드(runtime parameter grid)를 사용하는 것이다. 도 3은 그래프와 관련될 런타임 파라미터 그리드(300)를 표현하는 그래프 대화창의 일실시예의 다이아그램이다. 신규의 런타임 파라미터는 단순히 적합한 필드에 채움으로써 생성된다. 각각의 런타임 파라미터와 관련된 객체는, 보관 장치(104)에서 생성되며, 파라미터를 활용하는 모든 그래프 성분에 링크된다. 예컨대, 그래프 분류 성분에 대한 단축키가 런타임 파라미터로서 정의된다면, 그 단축키 파라미터를 나타내는 객체가 보관 장치(104)에 저장되고, 관련된 분류 성분에 링크된다. 런타임 파라미터를 정의하는 다른 방식은 그래프 성분의 기존의 파라미터를 특별하게 플래그로 나타내고, 그것을 다른 성분에 대해 "볼수 있도록(visible)" 하는(반출하는) 것이다. 이러한 방법의 조합 또한 이용될 수 있 다. 예컨대, 수단을 생성할 때, 개발자는 그 수단의 특정 파라미터를 런타임 파라미터로서 지정할 수도 있다. 그 후, 개발자는 그래프에 대한 런타임 파라미터의 전부에 대한 디폴트 값 및 다른 특징을 설정하기 위해 파라미터 그리드를 사용하고, 새로운 런타임 파라미터를 정의할 수 있을 것이다.
그래프가 실행될 때, 파라미터는 사용자 입력으로부터 또는 외브 프로그램 소스(예컨대, 명령어 라인 파라미터 또는 환경 변수)로부터 각각의 파라미터에 대한 값을 획득하도록 처리된다. 예시된 실시예에서, 런타임 파라미터 그리드(300)는 다음의 필드를 포함한다:
Name(302) - 이 필드는 런타임 파라미터의 명칭을 포함한다. "Score_threshold"는 명칭에 대해 나타낸 예이다.
Type(304) - 이 필드는 런타임 파라미터에서 허용될 값의 유형을 포함한다. "Integer"는 유형에 대해 나타낸 예이다. 예시된 실시예에서 지원되는 유형은 다음과 같다:
ㆍ boolean - 값이 참 또는 거짓 중 하나가 될 수 있다;
ㆍ choice - 값이 리스트의 값 중 하나이다;
ㆍ collator - 키 파라미터 값;
ㆍ dataset - 외부 데이터 파일명 및 위치;
ㆍ date - 날자 값
ㆍ expression - 대수, 논리, 및/또는 조건부 표현식(예컨대, select 표현식)
ㆍ float - 부동 소수점 번호(floating point number)
ㆍ integer - 정수 번호
ㆍ layout - 병렬 또는 직렬 레이아웃 정의
ㆍ record format - 레코드 디스크립션 또는 레코드 디스크립션을 포함하는 파일
ㆍ string - 임의 문자 스트링
ㆍ transform - 트랜스폼 디스크립션 또는 트랜스폼 디스크립션을 포함하는 파일
Locattion(Loc)(306) - 이 필드는 레코드 포맷 및 트랜스폼 타입과 사용된다. 이 필드는 타입 필드(304)가 파일 위치를 설명하는지 또는 이 필드가 이식된 디스크립션을 포함하는지를 특정한다. 지원되는 위치는 다음과 같다:
ㆍ Embedded - 파라미터가 레코드 또는 트랜스폼 디스크립션을 포함할 것이다;
ㆍ Host - 파라미터가 호스트 기기 상의 파일에 대한 레퍼런스를 포함할 것이다;
ㆍ Local - 파라미터가 로컬 기기 상의 파일에 대한 레퍼런스를 포함할 것이다;
ㆍ Repository - 파라미터가 보관 장치 트랜스폼 또는 레코드 포맷에 대한 레퍼런스를 포함할 것이다.
Default Value(308) - 이 필드는, (1) 다른 값이 외부 프로그램 소스로부터 제공되지 않는 경우에 사용될 런타임 파라미터에 대한 디폴트값, 또는 (2) 사용자 입력으로부터 런타임 값을 구하는 방법 또는 그래프를 실행하는 사용자로부터 대화식으로 그 정보를 획득하는 방법을 기술하는 규칙 또는 표현식 중 하나를 포함한다. 후자의 경우, 제2 디폴트 값 필드(도시하지 않음)는, 사용자가 입력값을 제공하지 못하는 경우 런타임 파라미터에 대한 값을 제공하기 위해 사용될 수도 있다. "boolean" 및 "choice"의 타입에 대해, 이 필드는 사용자가 유용한 선택을 하도록 한다. "layout" 필드에 대해, 이 필드는 바람직하게는 사용자가 유용한 스트링을 입력할 수도 있는 간략한 텍스트 편집기이다.
Edit(310) - 파라미터 행 내의 편집 스페이스(310)(또는 아이콘, 예컨대, 연필 아이콘)를 클릭함으로써, 디폴트 값 필드(308)를 편집하기 위한 다양한 옵션을 통해 사용자가 진행할 수 있는 더욱 진보된 편집 윈도우가 뜨게 될 것이다. 예시된 실시예에서, 다음 편집기가 이들 편집기에 관련된 타입에 대해 이용 가능하다:
ㆍ Single line edit - 정수, 소수, 날자, 및 스트링 타입용
ㆍ Choice dialog - 부울리안 및 초이스 타입용
ㆍ Key Editor - 콜레이터 타입용
ㆍ File Brower - 데이터세트 타입용, 및 위치가 이식되지 않은 레코드 포맷 및 트랜스폼 타입용;
ㆍ Transform Editor - Embedded의 위치를 갖는 트랜스폼 타입용
ㆍ Record Format Editor - Embedded의 위치를 갖는 레코드 포맷 타입용
ㆍ Expression Editor - 표현식 타입용
ㆍ Layout Editor - 레이아웃 타입용
전술한 편집기는, "Kind" 필드 값(아래를 참조)이 "PL"(Parameter Language)이 아닌 경우에 시행된다. 이 경우, 사용자는 그래프 실행 시에 파라미터 값에 대해 구하거나 프롬프트할 규칙을 정의하기 위한 편집기가 제공된다.
Description(312) - 이것은 사용자가 런타임 파라미터의 예측 값을 기술하는 프리 포맷 필드이다. 이것은 디폴트 값이 입력 값을 사용자에게 요청하기 위한 규칙을 포함한다면 런타임에서 프롬프트로서 사용된다.
Kind(314) - 이 필드는 그래프 실행 시에 관련 파라미터에 대한 값을 그래프가 어디에서 획득할지를 정한다. 지원되는 "kind" 필드(314) 값은 다음과 같다:
ㆍ Environment - 런타임 파라미터에 대한 값이 동일한 명칭의 환경 변수에서 발견될 것으로 예측된다. 환경 변수가 정의되지 않았다면, 디폴트 값 필드(308) 내의 값이 사용된다. 파라미터가 요구되고(즉, 반출된 파라미터), 디폴트 값 필드(308)가 비어있다면, 런타임 에러가 발생될 것이며, 그래프 실행이 중지될 것이다.
ㆍ Positional - 런타임 파라미터의 값이 어플리케이션을 호출하는 명령어 라인 상의 그 상대적인 위치로서 예상된다. 예컨대, 런타임 파라미터가 제3 위치 런타임 파라미터로 정해진다면, 그것의 파라미터 값은 실행 스크립트 내의 제3 위치 명령어 라인 독립변수로서 예상될 것이다. 임의의 특정된 위치 파라미터가 제공되어야 하며, 특정된 위치 파라미터가 없다면, 런타임 에러가 발생될 것이다.
ㆍ Keyword - 런타임 파라미터의 값이 키워드 명령어 라인 파라미터로서 예 상된다. 예시된 실시예에서, 키워드 파라미터는 다음의 형태로 된다:
Figure 112007093805871-pct00001
키워드 파라미터는 옵션이며, 키워드 파라미터가 제공되지 않고 디폴트 값 필드(308)가 비어 있다면, 런타임 에러가 발생될 것이며, 대응하는 반출된 파라미터가 요구된다.
ㆍ Fixed - 파라미터에 대한 런타임 값이 항상 디폴트 값이다. 이것은 2개 이상의 런타임 파라미터 사이에서 일정한 값을 공유하는데 유용하다.
ㆍ PL - 런타임 파라미터의 디폴트 값은, 다른 파라미터로부터 런타임 파라미터의 값을 구하거나 또는 사용자에게 추가 입력을 프롬프트하기 위해 그래프 실행 시에 해석될 PL 표현식을 포함한다. 본 발명의 임의의 특정 실시예와 함께 사용하기 위해 선택되는 성분 디스크립션 랭귀지로는, 대중적으로 이용 가능한 객체 지향 스크립팅 랭귀지 "Python" 등의 어떠한 적합한 스크립팅 랭귀지도 가능하다. 이러한 스크립트는 프로그램 제어 하에 메타데이터(타입 및 트랜스폼)를 구축하며, 사용자 입력, 외부에서 프로그램적으로 제공된 입력, 및 기타 런타임 파라미터에 대해, 조건부 테스트, 비교, 데이터 변환, 대수 및 논리 연산, 스트링 및 리스트 조작, 및 기타 기능을 수행하여, 임의의 런타임 파라미터에 대해 최종 값을 발생할 수 있다.
예시된 실시예에서, 런타임 파라미터 그리드(300)에 대해 직접 생성될 수 있는 런타임 파라미터를 참조하기 위한 유용한 관행은, 단순히 달러 기호 "$"가 선행 되는 파라미터 명칭을 입력하는 것이다. 예컨대,
Figure 112007093805871-pct00002
Figure 112007093805871-pct00003
라는 명칭의 런타임 변수를 참조한다. 예시된 실시예에서, 새로운 런타임 파라미터는, 디폴트 런타임 종류(디폴트 런타임 종류는 "환경"임)에 대해 진보된 옵션 대화창 내의 값에 기초한 디폴트 종류 및 "스트링"의 유형을 디폴트로 한다.
런타임 파라미터 값이 런타임에서 결정되고, PL 스크립트가 조건부 테스트를 제공할 수 있기 때문에, "조건부" 런타임 파라미터가 생성될 수 있다. 조건부 런타임 파라미터는, 런타임에서 결정된 파라미터에 대한 조건의 전부가 인에이블할 때에만 사용자 입력을 위해 프롬프트가 생성되도록 한다. 그러므로, 예컨대, 데이터 세트가 저장될지를 요청하는 제1 프롬프트에 대해 사용자가 "아니오"로 응답하면, 분류 키를 요청하는 제2 조건부 프롬프트가 디스플레이되지 않는다.
그러므로, 설계 단계 동안("설계 시에"), 개발자는 그래프 수단의 특정 파라미터를 "런타임" 파라미터로서 지정한다. 그 후, 그래프 수단과 관련된 객체가 관련 파라미터 데이터(예컨대, 도 2의 파라미터 그리드(300)로부터의 정보의 타입)와 함께 저장된다.
도 4는 런타임 파라미터를 이용하는 처리를 요약하는 흐름도이다. 런타임 동안, 실행될 어플리케이션에 대응하는 파라미터 객체가 복원된다(예컨대, 보관 장치로부터)(단계 400). 사용자 입력이 지시되어 있는지에 관해 이러한 객체의 각각에 대한 판정이 이루어진다(단계 402). 사용자 입력이 지시되어 있다면, 프롬프트 이전에 사용자 입력의 평가를 포함할 수도 있는, 프롬프트의 디스플레이를 위한 어 떠한 조건이 충족되었는지에 관해 판정이 이루어진다(단계 403). 사용자 입력이 지시되지 않았다면, 디폴트 값이 사용된다(단계 408). 이와 달리, 파라미터 값이 요구되지 않을 수도 있으며(예컨대, 사용자가 분류 함수를 작동시키도록 선택하지 못한다면, 분류 키가 요구되지 않을 것이다), 이로써 파라미터 값이 무시될 것이다. 한편, 사용자 입력을 위해 프롬프트가 생성된다(단계 404).
사용자가 특정 파라미터에 대한 값을 입력하지 못하면(단계 406), 문자에 대한 디폴트 값이 선택될 것이다(단계 408). 이와 달리, 사용자 입력이 없다는 것을 나타내기 위해 에러 상태가 발생될 수도 있다. 어떠한 상황에서도(사용자 입력의 결여 때문에 에러 상태가 발생하지 않는 것으로 간주), 입력의 변환과, 다른 파라미터에 기초한 종속성 및 조건을 고려하여 파라미터에 대한 최종 값에 대해 판단이 이루어진다(단계 410).
사용자 입력이 특정 파라미터에 대해 지시되지 않았는지에 대한 판단이 이루어지면(단계 402), 특정 변수가 환경 변수 또는 명령어 라인 파라미터에 의해서와 같이, 파라미터 값이 외부에서 프로그램적으로 공급되는지에 관한 판단이 이루어진다(412). 사용자 입력이 특정 파라미터에 대해 지시되었다면, 파라미터에 대한 디폴트 값이 선택된다(단계 414). 이와 달리, 특정 유형의 이용 가능한 입력의 결여를 나타내기 위해 에러 상태가 발생할 수도 있다. 어떠한 상황에서도(외부 입력의 결여 때문에 에러 상태가 발생하지 않는 것으로 간주), 입력의 변환과, 다른 파라미터에 기초한 종속성 및 조건을 고려하여, 파라미터에 대한 최종 값에 대해 판단이 이루어진다(단계 410).
최종 파라미터 값이 결정된 후, 옵션 단계로서, 모든 조건부 성분(하술되는)은 앞에서 개략 설명한 특정 조건 및 규칙에 따라 완전히 제거되거나 또는 흐름(즉, 그래프 링크 또는 에지)에 의해 대체될 수 있다(단계 416). 연산 그래프 구조가 마무리되고 최종 파라미터 값이 결정된 후, 그래프는 통상의 양상으로 실행된다(단계 418).
테스트 값( Test Values )
런타임 파라미터를 갖는 그래프의 생성 및 테스트 동안 개발자를 지원하기 위해, GED(102)의 바람직한 실시예 또한 런타임 파라미터의 테스트 값을 지원한다. 개발자가 런타임 파라미터를 갖는 그래프를 실행하거나 그래프 성분에 영향을 주는 언더라잉 코드(underlying code)를 보고자 원할 때, GDE(102)는 사용자가 하나 이상의 런타임 파라미터에 대한 새로운 테스트 값을 입력할 수 있는 관련 테스트 파라미터 그리드를 디스플레이한다. 사용되는 테스트 값의 마지막 세트가 기억되어, 그래프와 함께 저장되는 것이 바람직하다.
각각의 런타임 파라미터에 대해, 개발자는 요구된 테스트 값을 테스트 값 열(test value column)에 입력한다. 편집 필드는 각각의 테스트 값 열과 관련될 수도 있다. 테스트 값 필드 및 편집 필드는, 파라미터 종류가 PL일 때를 제외하고는 런타임 파라미터 그리드(200) 내의 디폴트 값 필드 및 편집 필드와 동일하게 동작한다.
PL 표현식이 특정 런타임 파라미터에 대한 값에 대해 사용자가 프롬프트되는 것으로 나타내면, 테스트 값 필드 및 편집 동작은 관련된 PL 표현식의 해석을 기반 으로 한다. PL 표현식이 단순히 다른 입력에 기초하여 값을 구하면, 정상 모드에서는, 런타임 파라미터가 테스트 값 그리드에서는 보여지지 않을 것이다.
런타임 파라미터 자신의 값을 취하는 방법을 특정( Specifying How Runtime Parameters Get Their Values )
파라미터가 런타임 파라미터로서 설계된 후, 대응하는 객체가 보관 장치(104)에서 생성된다. 런타임 파라미터가 "PL"의 종류 필드(214) 값을 갖는다면, 파라미터에 대한 디폴트 값 필드(308)는 다음의 바람직한 폼을 갖는 "promt_for" 의사 함수(pseudo-function)를 포함한다:
Figure 112007093805871-pct00004
전술한 바와 같이, "promt_for" 의사 함수는, 프롬프트가 이전의 입력에 기초하여 디스플레이되는지를 판단하는 조건부 표현식의 일부가 될 것이다.
이러한 객체에 대해, 직접 엔트리 런타임 파라미터를 사용자에게 제공하기 위해 사용자 인터페이스가 사용된다. 바람직한 실시예에서, 웹 인터페이스(108)는 이 기능을 제공한다. 구체적으로, 런타임 동안, 각각의 런타임 파라미터 객체의 각각의 "promt_for" 의사 함수는 웹 인터페이스(108)에 의해 분석되어, 대응하는 사용자 프롬프트를 갖는 웹 페이지(예컨대, HTML로 작성된)를 제공한다(이와 달리, 이러한 웹 페이지는 런타임 전에 생성되어 런타임 시에 간편하게 제공될 수 있다. 그러나, 이러한 웹 페이지의 런타임 생성은 더 큰 유연성을 제공한다. 구체적으로, 페이지의 콘텐츠가 이전의 사용자 입력에 좌우될 수 있다). 웹 인터페이 스(108)는 이러한 웹 페이지를 디스플레이하고 사용자 입력을 수신할 수 있는 통상의 웹 브라우저와 함께 사용된다.
"promt_for" 의사 함수는 파라미터 값을 프롬프트하는 방법을 웹 인터페이스(108)에게 지시한다. 구체적으로, 스트링 상수인 "promt_kind" 파라미터는 어떠한 종류의 사용자 인터페이스(UI) 요소(텍스트 박스, 드롭다운 리스트(dropdown list), 등)를 제공할지를 지시한다. 키워드의 콤마-분리 리스트(a comma-seperated list of keyword)인 모디파이어(modifiers) 파트의 스트링은 다양한 종류의 프롬프트에 대해 공통되는 여러 옵션을 제공한다. 예시된 실시예에서, 모디파이어 스트링 내의 여백은 중요하지 않다. 모디파이어 키워드는 다음과 같이 해석된다:
ㆍ 키워드 "in place" 는, 요소가 어플리케이션에 대한 개요 수준의 사용자 인터페이스로 직접 나타내어져, 값이 "드릴링 인(drilling in)"없이 더 낮은 레벨로 제공되도록 선언한다. "in place"가 지정되지 않는다면, 간략한 "편집" 버튼이 개요 수준의 인터페이스로 나타내어져, 사용자를 파라미터 값을 제공하기 위한 또 다른 페이지로 진행하게 할 것이다.
ㆍ 키워드 "blank ok" 는 사용자가 값을 제공할 필요가 없다는 것을 선언하며, 어플리케이션이 디폴트 값을 합리적인 방식으로 처리할 것이다. "blank ok"가 지정되지 않는다면, 사용자는 일부 값을 제공하지 않고서는 어플리케이션을 실행할 수 없게 될 것이다.
다음은 상이한 종류의 모디파이어를 갖는 "promt_for" 호출의 몇몇 예이다:
Figure 112007093805871-pct00005
이 섹션의 나머지 부분에서는 다양한 "promt_kinds" 및 이들의 대응하는 "options"을 나열하고 있으며, 이들 각각이 웹 인터페이스(108)에 의해 생성된 웹 페이지에서 어떻게 나타나는지를 설명한다.
Figure 112007093805871-pct00006
: 통상의 싱글-라인 텍스트 박스 size 문자 폭을 나타냄(size가 제공되지 않으면, 텍스트 박스에 대한 브라우저의 디폴트 크기를 디폴트로 한다).
Figure 112007093805871-pct00007
: 통상의 "choose one" 프롬프트를, "choice-list"의 각각의 요소에 대해 버튼이 하나씩 지정되는, 라디오 버튼 세트(a set of radio button)의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다.
Figure 112007093805871-pct00008
: "radio"와 유사하지만, 사용자가 "choice-list"에 있지 않은 "write-in" 값을 선택할 수 있도록 텍스트 박스 다음에 추가 버튼을 나타냄.
Figure 112007093805871-pct00009
: 통상의 "choose zero or more" 프롬프트를, "choice-list"의 각각의 요소에 대해 버튼이 하나씩 지정되는 체크박스의 세트의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다.
Figure 112007093805871-pct00010
: 통상의 "choose one" 프롬프트를, "choice-list"의 요소에 대한 드롭다운 리스트의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다. "size"가 제공되면, 그 다수의 선택이 동시에 보여질 수 있으며, 그렇지 않은 경우에는 하나만이 보여질 것이다.
Figure 112007093805871-pct00011
: 통상의 "choose zero or more" 프롬프트를, "choice-list"의 요소에 대한 드롭다운 리스트의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다. "size"가 제공되면, 그 다수의 선택이 동시에 보여질 수 있으며, 그렇지 않은 경우에는 브라우저의 디폴트 개수의 항목이 보여진다.
Figure 112007093805871-pct00012
: 주어진 "type-obj"로부터의 필드로 구성된 키(또는 콜레이터(collator)로서 알려진)에 대한 프롬프트를 나타냄. 키는 "size" 파트만큼의 다수 개를 가질 수 있으며, "type-obj" 내의 필드의 개수를 디폴트로 한다. 도 5는 key 프롬프트에 의해 생성된 그래프 대화창(500)의 일실시예에 대한 다이아그램이다. 이하는, 3-엔트리 "key" 프롬프트에 대한 스크립트 텍스트의 예이며, 여기서 파일 "/datasets/fixed"는 드롭다운 박스(502) 내에 나타내진 이용 가능한 키의 컨텐츠를 정의한다:
Figure 112007093805871-pct00013
예시된 실시예에서, 정상적인 콜레이션 순서는 올림차순이지만, 사용자는 관련된 체크박스(504)를 체크함으로써 키에 대한 내림차순의 콜레이션 순서를 선택할 수 있다.
Figure 112007093805871-pct00014
: 주어진 "type-obj"의 각각의 필드에 대한 조건으로 구성되는 필터 표현식에 대한 프롬프트를 나타냄. "blank ok" 모디파이어는 필터에 대한 영향을 갖지 못하며, 블랭크 필터는 "True" 표현식을 산출한다. 도 6은 "filter" 프롬프트에 의해 생성된 그래프 대화창(600)의 일실시예에 대한 다이아그램이다. 각각의 표현식 텍스트 편집 박스(604)와 관련된 이용 가능한 필드 명칭(602)이 "type-obj"에 의해 정의된다. 비교값이 텍스트 편집 박스(604) 내에 입력되며, 비교 연산자(예컨대, =, >, ≤ 등)가 대응하는 드롭다운 리스트 컨트롤(606)로부터 선택된다.
Figure 112007093805871-pct00015
: "filter" 프롬프트와 유사하지만, 주어진 "type-obj"의 각각의 필드에 대한 조건으로 구성된 필터 표현식에 대한 프롬프트를 나타내며, 여기서 각각의 라인 상의 필드 명칭은 드롭다운 리스트로부터 선택 가능하다. 이것은 다수의 조건에 대해 동일한 필드를 사용하는 것을 허용한다(예컨대,
Figure 112007093805871-pct00016
Figure 112007093805871-pct00017
).
Figure 112007093805871-pct00018
: 소정의 키에 의해 롤업되는 주어진 "type-obj"의 필드에 기초한 롤업 계산에 대한 프롬프트를 나타냄. 롤업은 "size" 규칙만큼의 다수 개를 가질 수 있으며, "type-obj" 내의 필드의 개수를 디폴트로 한다. "blank ok" 모디파이어가 롤업에 대한 영향을 갖지 않으며, 블랭크 롤업은 각각의 그룹에 대한 키 값을 제공하는 패키지를 산출한다. 도 7은 "rollup" 프롬프트에 의해 생성된 그래프 대화창(700)의 일실시예의 다이아그램이다. 예시된 실시예에서, 드롭다운 박스(902)의 열은 이용 가능한 롤업 계산 함수(예컨대, sum, minimum, maximum)를 정의한다. 각각의 계산과 관련된 이용 가능한 필드 명칭(704)은 "type-obj"에 의해 정의된다. 각각의 롤업 규칙은, 요구된 표현식의 사용자 정의를 위한 관련된 텍스트 편집 박스(706)와, 계산 시에 소스값이 참여하게 되는 기준을 정의(부울리안 표현식을 통해)하기 위한 "위치(where)" 텍스트 편집 박스(708)와, 계산 결과를 수신할 필드를 지정하기 위한 출력 필드 텍스트 편집 박스(710)를 갖는다. 명료하게 구해질 수 있는 곳의 경우에는, 출력 필드의 명칭이 특정될 필요가 없다.
Figure 112007093805871-pct00019
: 주언진 "type-obj"의 필드에 기초하여 리포맷 계산에 대한 프롬프트를 나타냄. 리포맷은 규칙만큼의 다수 개를 가질 수 있으며, "type-obj" 내의 필드의 개수를 디폴트로 한다. 도 8은 "reformat" 프롬프트에 의해 생성된 그래프 대화창(800)의 일실시예의 다이아그램이다. 예시된 실시예에서, "reformat" 프롬프트는 입력 필드를 유사한 명칭의 출력 필드에 단순히 카피하기 위한 섹션(802)을 포함한다(체크박스 컨트롤을 개별적으로, 또는 "Select All" 또는 "Select None" 버튼을 이용하여 일괄적으로 선택/비선택함으로써 이루어짐). 프롬프트의 제2 섹션은 리포맷팅 표현의 정의(예컨대, total = revenue_1 - revenue_2)를 허용하는 텍스트 편집 박스(804)의 열을 포함한다. 각각의 규칙은 리포맷된 결과를 수신할 필드를 지정하기 위한 관련된 출력 필드 텍스트 편집 박스(806)를 갖는다.
Figure 112007093805871-pct00020
: 출력 데이터세트 스페시피케이션에 대한 프롬프트를 나타냄. 디스플레이된 컨트롤은, 이용 가능한 포맷 옵션을 나타내기 위한 드롭다운 컨트롤과, 출력 데이터세트의 특정 인스턴스(specific instance)의 명칭을 입력하기 위한 텍스트 편집 박스를 포함한다. "blank ok" 모디파이어는 출력 데이터세트 스페시피케이션에 대한 영향을 갖지 못한다.
Figure 112007093805871-pct00021
: 파일 경로에 대한 프롬프트를 나타냄. 프롬프트는 텍스트 박스이어야 하지만, 그 다음에는 파일 경로를 브라우징하기 위한 팝업 윈도우가 나타날 "Browse" 버튼을 갖는다. 텍스트 박스가 블랭크가 아니면, 그 텍스트 박스는 브라우징 동작을 위한 개시 지점으로서 사용될 것이며, 텍스 트 박스가 블랭크라면, "starting-point" 독립변수가 사용된다.
Figure 112007093805871-pct00022
: 보관 장치 경로에 대한 프롬프트를 나타냄. 이 프롬프트는 텍스트 박스이어야 하지만, 그 다음에는 파일 경로를 브라우징하기 위한 팝업 윈도우가 나타날 "Browse" 버튼을 갖는다. 텍스트 박스가 블랭크가 아니면, 그 텍스트 박스는 브라우징 동작을 위한 개시 지점으로서 사용될 것이며, 텍스트 박스가 블랭크라면, "starting-point" 독립변수가 사용된다.
Figure 112007093805871-pct00023
: "radioplus"와 마찬가지이지만, "write-in" 슬롯 내의 fpath-스타일 박스-플러스-브라우즈-버튼을 나타냄.
Figure 112007093805871-pct00024
: radioplus와 마찬가지이지만, "write-in" 슬롯 내의 rpath-스타일 박스-플러스-브라우즈-버튼을 나타냄.
조건부 성분( Conditional Componets )
일부 구현예는, 파라미터 값 및 계산된 메타데이터에 기초하여 그래프의 성분 및 흐름의 구조에 대한 변경을 허용하는 조건부 성분 메카니즘을 포함한다. 그래프의 각각의 성분은 그 성분이 런타임에서 그래프에 나타날지의 여부를 제어하는 조건을 갖는다. 조건은 런타임 파라미터를 통해 직접적으로 또는 간접적으로 계산될 수 있다. 조건부 성분은 그래프를 최적화하거나 전문화(specialization)하는 등의 다양한 목적을 위해 사용될 수 있다. 최적화를 위해서는, 어플리케이션은, 어떤 테이터세트로부터의 값이 사용되지 않을 것이라면 그 특정 데이터세트의 처리 를 생략하여, 그래프를 더욱 효율적으로 실행할 수 있도록 할 것이다. 전문화를 위해서는, 어플리케이션은, 여러 개의 상이한 출력 데이터세트의 발생을 요구된 구체적인 레벨로 컨디셔닝하거나, 또는 그래프의 여러 개의 옵션의 부분 중 하나의 부분의 실행을 가능하게 할 것이다.
도 9a는, 병합-결합(MergeJoin) 성분(900)이 파일 A와 파일 B로부터의 데이터를 결합하여 그 결과를 출력 파일(902)에 출력하는 제1 그래프의 블록도이다. 도 9b는, 롤업 성분(904)이 파일 A로부터의 데이터를 집계(aggregation)하여 그 결과를 출력 파일(902)에 출력하는 제2 그래프의 블록도이다. 도 9c는, 병합-결합 수단(906)이 파일 A 및 B로부터의 데이터를 결합하고, 롤업 성분(908)이 그 결과의 데이터를 집계하여 최종 결과를 출력 파일(902)에 출력하는 그래프의 블록도이다. 조건부 성분을 이용하면, 이들 3개의 그래프는, 처음 볼 때에는 도 9c의 그래프처럼 보이지만 그 정확한 구조가 런타임 때까지 결정되지 않는 하나의 그래프로 합성될 수 있다. 적합한 조건을 설정함으로써, 롤업 성분(908)은 연결부(흐름)에 의해 대체될 수 있으며, 도 9a의 그래프와 유사한 런타임 그래프가 된다. 마찬가지로, 적합한 조건을 설정함으로써, 병합-결합 성분(906)은 파일 A에 대한 연결부(흐름)에 의해 대체될 수 있으며, 도 9b의 그래프와 유사한 런타임 그래프가 된다.
예시된 실시예에서, 조건부 성분은 정점(즉, 입력/출력 파일 등의 데이터세트 성분, 리포맷 또는 분류 성분 등의 처리 성분, 또는 서브그래프로 알려진 기타 그래프)을 정하는 임의의 그래프 성분이 될 수 있다. 바람직한 실시예에서, 조건부 성분은 2개의 특수 파라미터, 조건(Condition) 및 조건-해석(Condition- interpretation)에 의해 제어된다. 조건(Condition)은 런타임 때까지 평가가 미루어지는 부울리안 표현식 또는 값이다. 예시된 실시에에서, 값 "false" 및 "0"는 거짓 조건(a false condition)을 나타내고, 다른 모든 값(공백을 포함)은 참 조건(a true condition)을 나타낸다. 조건-해석(Condition-interpretation) 파라미터는 2개의 허용된 상호 배타적인 값, "Remove Completely" 및 "Replace With Flow"를 갖는다.
도 10은 조건-해석(Condition-interpretation) 컨트롤(1004)을 갖는 조건(Condition)(1002)을 나타내는 그래프 대화창(1000)의 일실시예의 다이아그램이다. 조건-해석 컨트롤(1004)은 "Remove Completely" 해석(1006) 또는 "Replace With Flow" 해석(1008) 중의 하나에 대한 선택을 허용한다.
Remove Completely : 이 해석으로, 조건(Condition)이 충족되면, 성분 및 그와 연결된 흐름(즉, 그래프 링크 또는 에지)의 전부가 그래프로부터 제거될 것이다. 액티브한 "Remove Completely" 조건은 성분 및 성분의 직접 연결된 흐름을 그래프로부터 기능적으로 제거한다. "Remove Completely" 조건은 어떠한 성분에 대해서도 이용될 수 있다.
그래프로부터 제거되는 조건부 성분은 조건부 성분의 존재에 의존하는 연결된 다른 성분을 "오용(poisoning)"할 수 있어, 이들이 제거되도록 한다. 도 11은 이러한 오용이 발생하는 상황을 나타내는 그래프(1100)의 다이아그램이다. 입력 파일 성분(1102)에 대한 조건이 제거(removal)를 나타내고, 그것의 대응하는 조건-해석이 "Remove Completely" 이라면, 입력 파일 성분(1102) 및 그것의 연결된 흐름 이 그래프(1100)로부터 제거된다. 이것은, 그 다음에, 분류 성분(1104)을 오용하여, 분류 성분의 입력단이 요구된 입력 포트이지만 더 이상의 데이터 흐름이 접속되어 있지 않기 때문에, 분류 성분이 제거된다. 이것은, 그 다음에, 롤업 성분(1106)을 요용하여, 오용 수단의 입력단이 요구된 입력 포트이지만 더 이상의 데이터 흐름이 접속되어 있지 않기 때문에, 롤업 성분이 제거된다. 이러한 "소멸 오용(poison of disappearance)"을 중지시키는 유일한 것은 다운스트림 성분의 옵션 포트 또는 반대 포트(counted port)에 대한 연결이다. 그러므로, 전체적인 분류-롤업 그래프 브랜지(1108)는, 입력 파일 성분(1102)에 대한 조건이 제거를 나타낼 때에 그래프(1100)로부터 효과적으로 제거된다. 도 11 내의 결과는, 정상적으로는 원래 그래프 구조의 3-입력 결합 성분(1110)이 런타임에서 2-입력 결합 성분이 된다.
일구현예에서, 오용의 상세한 시맨틱(semantic)(또한 "암시된 조건"으로도 알려진)은 다음과 같다:
ㆍ 성분이 요구된 포트를 갖고, 그 포트에 연결된 살아있는 흐름이 없다면, 그 성분 및 그 성분에 연결된 모든 흐름이 그래프로부터 제거된다.
ㆍ 성분이 그래프로부터 완전히 제거된다. 그 성분의 포트에 연결된 모든 흐름이 그래프로부터 제겅된다.
ㆍ 성분이 흐름으로 교체되면, 그 성분의 지정된 입력 포트 및 지정된 출력 포트가 아닌 모든 다른 포트에 연결된 흐름 전부가 그래프로부터 제거된다.
ㆍ 요구된 인덱스된 포트가 그 포트에 연결된 살아있는 흐름을 갖지 않는다 면, 동일한 인덱스를 갖는 각각의 대응하는 옵션의 인덱스된 포트에 대해, 그 대응하는 포트에 연결된 모든 흐름이 그래프로부터 제거된다.
이들 규칙에 대한 일부 현저한 결과가 발생한다. 예컨대, 옵션 포트만을 갖는 성분은 오용 때문에 결코 제거될 수 없다. 따라서, 옵션 포트만을 갖는 성분은 필요 시에 명시적으로 제거되어야 한다.
도 12는 "Remove Completely" 조건부 성분을 포함하는 그래프의 런타임 준비의 프로세스를 요약한 흐름도이다. 조건-해석이 "Remove Completely" 이고, 조건이 충족되지 않는다면(단계 1200), 조건부 성분은 그래프로부터 제거되지 않는다(단계 1202). 조건이 충족되면(단계 1200), 조건부 성분은 그 성분에 연결된 모든 흐름과 함께 그래프로부터 제거된다(단계 1204). 그 후, 모든 "오용된" 성분 및 흐름이 전술한 바와 같은 규칙에 따라 그래프로부터 제거된다(단계 1206).
Replace With Flow : 이 해석에서는, 조건이 충족되면, 성분이 흐름(즉, 그래프 에지)으로 대체될 것이다. "Replace With Flow" 조건-해석은 추가의 정보를 필요로 한다. 도 10을 참조하면, 사용자는, 그래프로부터 성분이 제거될 때에 접속부를 형성하는 입력 포트(1010)(또는 반대측 포트의 집단) 및 출력 포트(1012)(또는 반대측 포트의 집단)를 지정한다. 디폴트에 의해, 정확하게 하나의 요구된 입력 포트 또는 반대측 포트가 존재하고, 정확하게 하나의 요구된 출력 포트 또는 반대측 포트가 존재하면, 이들은 지정된 흐름을 통하는 접속 포트(각각 "지정된 입력 포트" 및 "지정된 출력 포트"로도 지칭됨)가 된다. 요구된 포트는 적어도 하나의 흐름이 연결되도록 요구하는 포트이다.
도 13은 본 발명의 특정 실시예에 대한 "Replace With Flow" 조건부 성분을 포함하는 그래프의 런타임 준비의 프로세스를 요약한 흐름도이다. 예시된 실시예(CO>OPERATING SYSTEM®에서 이용 가능한 성분을 기반으로 하는)에서의 특정의 이용 가능한 입력 및 출력에 대한 일부 성분의 종속성 때문에, 몇몇 규칙이 이 구현예 및 "Replace With Flow" 조건의 사용예에 적용된다:
ㆍ 조건-해석이 "Replace With Flow" 이고, 조건이 충족되지 않는다면(단계 1300), 조건부 성분은 그래프로부터 제거되지 않는다(단계 1302).
ㆍ 지정된 입력 포트 및 지정된 출력 포트를 갖는 성분은, 지정된 입력 포트에 연결된 정확하게 하나의 살아있는 직선 흐름과, 지정된 출력 포트에 연결된 정확하게 하나의 살아있는 직선 흐름이 존재하는 경우에만 흐름으로 교체될 수 있다("살아있는" 흐름이란, 런타임에서 제거되지 않은 흐름을 뜻한다)(단계 1304). 그 경우, 성분 자체가 그래프로부터 제거되며, 그 지정된 입력 포트에 연결된 살아있는 직선 흐름 및 그 지정된 출력 포트에 연결된 살아있는 직선 흐름은 서로 링크된다(단계 1306). 제거된 성분의 다른 포트에 직접 연결된 다른 흐름(즉, 특별하게 지정된 입력 및 출력 포트 이외의 임의의 포트)은 그래프로부터 제거된다. 제거된 성분에 연결된 어떠한 "오용된" 성분 및 흐름도 전술한 바와 같이 제거된다(단계 1308).
ㆍ Replace With Flow 조건을 갖는 성분이 반대측의 입력의 집단 내의 하나 이상의 지정된 입력 포트에 연결된 살아있는 흐름을 갖는다면(단계 1310), 그 성분은 그래프를 유효 상태로 하기 위해 필요한 것이기 때문에 그래프로부터 제거되지 않는다(단계 1312).
ㆍ 요구된 입력에 대한 살아있는 팬-인-흐름(live fan-in-flow)을 갖는 성분은 특별한 취급을 요구한다. "살아있는 팬-인-흐름"은, 성분이 요구된 입력 포트에 연결된 살아있는 팬-인 또는 올-투-올(all-to-all) 흐름을 갖거나, 또는 하나의 요구된 입력 포트에 연결된 하나 이상의 살아있는 직선 흐름을 갖는다는 것을 의미한다. 이러한 성분에 대해, "Replace With Flow" 조건을 해석하는 것은, 조건부 성분을, 살아있는 입력 흐름의 전부를 집합시키는 집합 성분(gather component)로 대체하여야 한다(단계 1314). 그러므로, 교체된 성분에 연결되었던 어떠한 "오용된" 흐름 및 성분도 전술한 바와 같이 제거된다(단계 1316).
메타데이터 전파의 양상( Aspect of Metadata Propagation )
그래프에 대한 메타데이터는 예컨대 그래프 개발자에 의해, 그래프 사용자에 의해, 또는 그래프의 또 다른 부분으로부터의 전파에 의해 제공될 수 있다. 데이터에 관련된 메타데이터, 또는 포트에 대한 레코드 포맷(에컨대, 포트 내로 또는 포트 외부로 흐르는 레코드의 데이터 타입 및 필드의 시퀀스), 정렬도(sortedness), 압축 방법, 문자 세트, 이진 표현(빅-엔디안(big-endian), 리틀-엔디안(little-endian)), 파티셔닝, 성분이 사용할 수도 있는 리소스를 계산하는 것(예컨대, 프로세서, 임시 디스크 공간), 데이터 변환, 및 성분이 사용할 수도 있는 메모리의 양 등과 같은 데이터에 대한 계산에 관련된 메타데이터를 포함하는 다양한 종류의 메타데이터가 전파될 수 있다.
성분 제거 후의 전파( Propagation After Component Removal )
일부 구현예에서, 그래프 성분의 제거 후에 흐름이 생성될 때, 이러한 흐름 에서 데이터를 정의하는 메타데이터가 수정된 그래프에서 어떻게 전파하여야 하는지에 관한 선택이 이루어져야 한다. 메타데이터는 흐름의 양쪽 끝단으로부터 이용 가능하게 될 것이다. 일부 구현예에서는, 흐름의 상류측 끝단으로부터의 메타데이터가 선호된다.
흐름의 상류측 끝단이 제거된 성분(또는 집합 성분에 의해 대체된 성분)이라면, GDE(102)는, 제거되지 않은 성분을 발견할 때까지, 그래프에서 상류측을 "워킹(walking)"함으로써 흐름에 대한 메타데이터를 탐색한다. 그 상류측 성분에 의해 노출된 메타데이터는 생성된 흐름에 대한 데이터의 특징을 정의하기 위해 사용된다.
변환된 메타데이터의 전파( Propagation of Transformed Metadata )
전술한 바와 같이, 메타데이터는, 하나의 포트에 관련된 메타데이터가 또 다른 포트에 대한 메타데이터를 포함한 하나 이상의 파라미터의 함수로서 특정될 수 있도록 함으로써 변환 내부 데이터 경로(tranforming internal data path)를 통해서도 전파할 수 있다. 예컨대, 도 23a는 데이터 세트(2302) 및 데이터 세트(2304)로부터의 데이터에 대한 결합 연산(join operation)을 계산하는 그래프(2300)를 도시하고 있다. 이 예에서, 그래프 개발자는 데이터 세트의 출력 포트에서의 메타데이터를 제공한다. 이 메타데이터는 그 후 "스마트 결합(smart join)" 성분(2306)에 전파되며, 스마트 결합 성분은 입력 데이터 세트의 레크드에 대해 결합 연산을 계산한다. 예컨대, 메타데이터는 출력 포트(2308)로부터 입력 포트(2310)로 전파 한다. 그 후, 메타데이터는 "스마트 결합" 성분(2306)에 의해 변환되고, "스마트 결합" 성분(2306)의 출력 포트(2316)로부터 필터 성분(2318)의 입력 포트(2317)로 전파된다.
도 23b는 "스마트 결합" 성분(2306)를 구현하는 서브-그래프를 도시하고 있다. "스마트 결합" 성분(2306)은 결합 성분(2350)에 의해 수행된 결합 연산의 키 필드를 표현하는 값을 갖는 "key_field" 파라미터를 이용한다. "스마트 결합" 성분(2306)는 또한 조건부 분류 성분(2354, 2356)을 포함하기 위한 조건으로서 "key_field" 파라미터를 사용한다. 입력 포트(2310) 내로 흐르는 레코드가 이미 "key_field"에 대해 분류되었다면, 분류 성분(2356)는 컨디셔닝 아웃(conditioned out)된다. 마찬가지로, 입력 포트(2314) 내로 흐르는 레코드가 이미 "key_field"에 대해 분류되었다면, 분류 성분(2356)은 컨디셔닝 아웃된다. 입력 레코드의 양측 모두의 흐름이 아직 "key_field"에 대해 분류되지 않았다면, 분류 성분(2354, 2356)은 이들 레코드를 결합 성분(2350) 내로 흐르기 전에 분류한다.
이러한 "스마트 결합" 성분을 통한 변환된 메타데이터의 전파를 가능하게 하기 위해, 그래프 개발자는, 제1 입력 포트(2310)에 대한 메타데이터 "input0.metadata", 제2 입력 포트(2310)에 대한 메타데이터 "input1.metadata", 및 키 필드 파라미터 "key_field"를 함수로 하여, "스마트 결합" 성분(2306)의 출력 포트(2316)에 대한 메타데이터(예컨대, 필드를 기술하는 메타데이터)를 정의한다:
Figure 112007093805871-pct00025
출력 포트 메타데이터는, 함수 독립변수를 값(적합한 콘텍스트에 대해)에 바인딩하고, 그 결과에 대해 함수 "metadata_join"를 수행함으로써 결정된다. 이 예에서, 포트(2310, 2314)에 대한 메타데이터가 정의되지 않기 때문에, 전파된 메타데이터는 메타데이터 파라미터 "input0.metadata" 및 "input1.metadata"에 바인딩된다. 사용자는 포트(2308)로부터 "스마트 결합" 성분(2306)의 입력 포트(2310)로 흐르는 레코드에 대해 필드 "A" 및 "B"를 특정하는 출력 포트(2308)에 대한 메타데이터를 제공한다. 사용자는 또한 포트(2312)로부터 "스마트 결합" 성분(2306)의 입력 포트(2314)로 흐르는 레코드에 대해 필드 "A" 및 "C"를 특정하는 출력 포트(2312)에 대한 메타데이터를 제공한다. 이러한 사용자에 의해 공급된 메타데이터는 포트(2310, 2314)에 전파한다. 결합 연산을 위한 키 필드는 필드 A이므로, "정규 파라미터(formal parameter)" key_field는 값 "A"에 바인딩된다.
함수 metadata_join 은, key_field 파라미터의 값이 input0.metadata 및 input1.metadata 에 의해 특정된 필드의 양쪽 세트의 일원(member)인지를 제일 먼저 판단함으로써 출력 메타데이터를 결정한다. key_field 파라미터의 값이 input0.metadata 및 input1.metadata 에 의해 특정된 필드의 양쪽 세트의 일원이라면, 출력 메타데이터는 2개 세트의 필드의 통합체(union)이다. key_field 파라미터의 값이 input0.metadata 및 input1.metadata 에 의해 특정된 필드의 양쪽 세트의 일원이 아니라면, 출력 메타데이터는 비어 있는 상태의 필드 세트를 나타낸다.
메타데이터가 "스마트 결합" 성분(2306)의 입력 포트에 전파한 후(또는 예컨대 사용자에 의해 공급된 후), "스마트 결합" 성분(2306)의 출력 포트에 대한 변환된 메타데이터는 필드 A, B 및 C를 포함한다. 이 변환된 메타데이터는 다른 성분에 전파될 수 있다. 이 예에서, 변환된 메타데이터는 필터 성분(2318)에 전파된다.
메타데이터는, 사용자에 의해 제공된 것이던 아니면 포트 간에 전파된 것이던 간에, 사용자에게 디스플레이될 수 있다. 예컨대, 사용자는 볼려고 하는 메타데이터 값에 대한 성분의 부분을 선택하기 위해 입력 장치(예컨대, 마우스)를 사용할 수 있다. 메타데이터 전파는 또한 이러한 사용자 선택에 응답하여 트리거될 수 있다.
일례의 메타데이터 전파 프로세스( Exemplary metadata propagation precess )
도 24는 일례의 메타데이터 전파 프로세스(2400)에 대한 흐름도를 도시하고 있다. 프로세스(2400)는 예컨대 사용자 동작에 응답하여 그래프에 변화가 있을 때마다, 및/또는 그래프가 실행되기 직전에 수행될 수 있다. 프로세스(2400)는 그래프 내의 각각의 성분이 흐름에 의해 결정된 부분 오더링(partial ordering)에 따라 순서가 정해져 있는 워크리스트(worklist)를 생성한다(2402)(예컨대, 성분 A에서 성분 B로의 흐름이 존재한다면, 성분 A는 성분 B 앞에 온다). 흐름이 2개의 성분 간의 고유한 순서를 결정하지 못하는 곳에서는, 성분 라벨의 알파벳 순서가 타이-브레이커(tie-breaker)로서 사용될 것이다. 이로써, 워크리스트 내의 성분에 대한 안정한 오더링이 제공된다(성분 라벨이 고유한 것으로 가정). 전파 프로세 스(2400)가 그래프에 대해 반복되면(예컨대, 새로운 성분의 추가 후), 새로운 워크리스트는 워크리스트 내의 이전의 성분 간에 동일한 순서를 보존한다.
프로세스(2400)는 워크리스트의 개시점에서 개시하며, 워크리스트 내의 각각의 성분에 대해, 프로세스(2400)는 성분을 구현하는 서브-그래프의 스페시피케이션(예컨대, 서브-그래프 내의 데이터 흐름)에 기초하여 성분 내에서 메타데이터를 내부적으로(예컨대, 입력 포트에서 출력 포트로 또는 출력 포트에서 입력 포트로) 전파한다(2404). 이 내부 메타데이터 전파는 비변환 데이터 경로의 양쪽 끝단 상의 포트 간에 메타데이터를 변환되지 않은 채로 전달하는 것을 포함한다. 내부 메타데이터 전파는 또한 그래프의 파라미터를 참조하는 메타데이터 정의를 갖는 포트에 대한 메타데이터 및/또는 전술한 바와 같은 다른 포트에 대한 메타데이터를 구하는 것을 포함한다. 프로세스(2400)가 이러한 메타데이터 정의를 만나게 될 때, 프로세스(2400)는 메타데이터를 구하기 위해 요구되는 값을 갖는 파라미터를 평가한다.
워크리스트 상의 성분에 대한 내부 메타데이터 전파를 수행한 후, 프로세스(2400)는, 메타데이터를, 메타데이터를 갖는 성분의 각각의 포트로부터 메타데이터를 갖지 못하는 관련된 성분의 포트로 외부적으로 전파한다(2406). 이 외부 전파에 의한 메타데이터를 획득하는 성분은 워크리스트의 끝으로 이동된다(2408). 프로세스(2400)는 워크리스트 상의 최종 성분이 처리된 후에 종료한다(2410).
이러한 유형의 외부 메타데이터 전파를 지원하는 성분 간의 한 가지 유형의 관계는 2개의 성분의 포트 사이의 데이터 흐름 링크이다(예컨대, 입력 포트에서 출 력 포트로, 또는 출력 포트에서 입력 포트로).
이러한 유형의 외부 메타데이터 전파를 지원하는 성분 간의 다른 유형의 관계는, 하나의 포트에 대한 메타데이터가 또 다른 포트에 대해서도 사용될 수 있다는 것을 나타내는 링크이다. 이러한 유형의 "메타데이터 링크"는 데이터 흐름 링크에 반드시 대응하지는 않는다. 예컨대, 포트는 구체적으로 어떠한 포트와 관련되지 않는 그래프 내의 메타데이터에 대한 메타데이터 링크를 가질 수 있다.
성분화된 서브-그래프 내의 런타임 파라미터( Runtime Parameters in Componentized Sub - Graph )
서브-그래프가 또 다른 그래프에서의 계산에 사용되도록 "컴포넌트화"되기 전에, 성분의 입력 및/또는 출력 포트와 같은 성분의 다양한 특징이 정해진다. 런타임 파라미터를 갖는 성분을 포함하는 서브-그래프에 대해, 런타임 파라미터에 대한 프롬프팅 순서가 선택되어야 한다. 그래프 내의 성분이 반드시 순차적으로 순서가 정해지지는 않기 때문에, 사용자에게 프롬프트하기 위한 런타임 파라미터의 다수의 가능한 글로벌 오더링(global ordering)이 존재할 수 있다. 글로벌 오더링의 일부는 각각의 성분와 관련된 원래의 오더링과 일치하지 않는다. 종속성을 고려하는 것이 적합할 때에는 리오더링하면서, 각각의 성분 내의 파라미터의 오더링을 가능한 한 많이 보존하도록 프롬프트하기 위한 글로벌 오더링을 생성하는 것이 유용하다. 예컨대, 성분은, "어떤 데이터를 처리하기를 원합니까?"라고 질문하는 프롬프트가 "처리된 데이터를 어디에 저장할까요?"라고 질문하는 프롬프트 앞쪽에 있도록 순서를 정할 수도 있다. 프롬프트를 둘 중의 하나의 순서로 제공하는 것이 가능할 수도 있지만, 프롬프트를 이 순서대로 제공하는 것이 바람직할 것이다.
프롬프트된 런타임 파라미터를 평가하는 프로세스에서 프롬프트되지 않은 런타임 파라미터를 평가하는 것이 필요할 수도 있기 때문에, 프롬프트하는 순서는 런타임 파라미터의 전부에 대한 평가 순서로부터 획득된다. 그래프의 런타임 파라미터(어떠한 성분와 관련되지 않은 그래프에 대한 파라미터를 포함)에 대한 평가 순서를 결정하기 위한 한 가지 방식은, 파라미터 간의 종속성을 나타내는 하나 이상의 방향성 비순환 그래프에 기초하여 토폴로지컬 분류를 수행하는 것을 포함한다. 그러나, 일부 토폴로지컬 분류 알고리즘은 파라미터를 불필요하게 리오더링할 수도 있으며, 그 결과 런타임 파라미터에 대한 바람직하지 않은 프롬프트 순서를 초래한다.
분류 예 1( Sorting Example 1)
제1 예에서, 파라미터 분류 프로세스는 2개의 그래프 성분, 즉 Component Ⅰ 및 Component Ⅰ에 연결된 Component Ⅱ의 파라미터에 대한 파라미터의 초기 리스트를 제공한다. 이 예에서, 파라미터는 "성분간(intra-componenet)" 종속성만을 갖는다. 즉, 성분의 파라미터는 동일한 성분 내의 다른 파라미터에만 종속된다. 파라미터는 다음과 같이 정의된다.
Component Ⅰ은 다음의 파라미터를 포함한다:
Figure 112007093805871-pct00026
Component Ⅱ는 다음의 파라미터를 포함한다:
Figure 112007093805871-pct00027
파라미터가 나열되는 순서는 사용자에게 값을 프롬프트하는 바람직한 순서로 정해진다. 파라미터의 초기 리스트는 각각의 성분에 대한 이러한 "초기 오더링"을 유지한다. 초기 오더링에서의 그 파라미터의 위치를 나타내기 위해 각각의 파라미터에 "서수(ordinal)"가 할당된다. 아래의 테이블은 이 초기 오더링 내의 파라미터를 나열한다.
Figure 112007093805871-pct00028
"종속성" 열은 나열된 파라미터가 종속되는 다른 파라미터를 나타낸다. 종 속성은, 파라미터의 평가 시에, 파라미터가 다른 파라미터에 의해 사용되기(예컨대, 참조되기) 전에 정의될 필요가 있다는 오더링 제약 조건을 부과한다.
"공통 토폴로지컬 분류" 알고리즘은 제로 종속성을 갖는 리스트 전달 파라미터를 오더링된 출력 리스트 내에 매번 통과시킨다. 각각의 통과 후, 어떠한 전달 파라미터가 종속성 열로부터 제거된다. 이 프로세스는 모든 파라미터가 전달될 때까지 반복된다. 출력 리스트 내의 파라미터의 순서는 다른 파라미터에 좌우되는 파라미터가 이들 다른 파라미터가 평가된 후에 평가되도록 "최종 오더링"을 나타낸다.
이 예에서, 최초의 통과 시, 파라미터 x, q, a 및 c가 출력 리스트 내로 전달된다. 두 번째 통과 시, 파라미터 y 및 b가 출력 리스트 내로 전달된다. 세 번째 및 최종 통과 시, 파라미터 z가 출력 리스트 내로 전달된다. 그러므로, 파라미터에 대한 최종 오더링은 x, q, a, c, y, b, z가 된다. 이러한 오더링이 파라미터 종속성에 의해 부과된 오더링 제약 조건을 충족하지 못하더라도, 파라미터를 반드시 리오더링할 필요는 없다. 이 예에서, 초기 오더링은 파라미터 종속성에 의해 부과된 오더링 제약 조건을 충족한다.
오더링 제약 조건을 충족하는 그래프의 파라미터에 대한 평가 순서를 결정하기 위한 다른 방식은 초기 오더링을 고려하는 것이다. 예컨대, 일부 방식은 초기 오더링에 기초하는 기준에 따라 오더링을 선택하여 오더링 제약 조건을 충족하도록 파라미터를 오더링한다. 이 기준은 초기 오더링에 근접한 순서를 유지(예컨대, 초기 오더링에 대한 변경을 기초로 측정 기준(metric)을 최소화)하는 것에 우선 권(preference)을 주는 다양한 기준을 포함한다. 일부 경우, 다수의 오더링이 동일하게 소정의 기준을 기준에 맞도록 양호하게 충족할 수도 있기 때문에, "베스트" 오더링이 단독의 것이 아닐 수도 있다.
초기 오더링을 고려하는 방식의 예는 "수정된 토폴로지컬 분류" 방식이 있다. 이 방식에서, 초기 오더링에 기초하는 기준은, 어떠한 전달되지 않은 파라미터에 종속되지 못하는 그 앞의 파라미터가 전달되기 전에 초기 리스트로부터 전달되는 파라미터의 수를 최소로 하는 것이다. 즉, "수정된 토폴로지컬 분류"는, 전달된 파라미터를, 제로 종속성을 갖는 다음 파라미터를 전달하기 전에 종속성 열로부터 제거한다. 전술한 예에 대해, "수정된 토폴로지컬 분류" 방식은 초기 오더링 x, y, z, q, a, b, c와 동일한 최종 오더링을 발생한다.
초기 오더링을 고려한 수정된 토폴로지컬 분류 프로세스(Modified Topological Sort Process Respecting Initial Ordering)
각각의 파라미터에 대해 할당된 서수에 의해 결정된 바와 같은 초기 오더링을 고려하는 2가지 예의 "수정된 토폴로지컬 분류" 프로세스에 대해, 아래에서는 의사 코드(pseudocode)가 제공된다. 제2 프로세스는 일부 경우에 대해 시간 효율을 향상시키기 위해 최적화를 포함한다. 프로세스는 파라미터에 대한 입력 데이터로부터 생성된 데이터 구조를 조작(manipulate)한다.
오더링될 N개의 파라미터가 있는 것으로 가정하면, 입력 데이터는 고유 파라미터 명칭, 명명된 파라미터가 종속되는 파라미터의 세트("종속성 세트"로 지칭됨), 및 명명된 파라미터에 관련된 정보를 저장하는 옵션의 속성 데이터 객체로 이루 어진 M 3제곱의 리스트를 포함한다.
이 입력 데이터에는, "종속성 그래프"로 지칭되는, 파라미터 간의 종속을 나타내는 하나 이상의 방향성 비순환 그래프가 관련된다. 각각의 고유한 파라미터 명칭은 종속성 그래프 내의 노드에 대응하며, 관련된 종속성 세트는 다른 노드에서부터 그 노드까지의 링크의 세트에 대응한다. 그러므로, 링크는 제1 파라미터에 대한 제1 노드로부터 제1 파라미터에 종속되는 제2 파라미터에 대한 제2 노드를 가리킨다. 이와 달리, 링크 방향과 파라미터 종속성 간의 대응이 반대로 될 수 있다.
출력 데이터 구조 result _ list는, 초기 오더링에 근접한 순서를 유지하는 것에 우선권을 주면서 파라미터가 또 다른 파라미터를 평가하는 데 사용되기 전에 평가되도록 리오더링된(필요에 따라) 입력 데이터로부터 N개 파라미터의 리스트를 포함한다. 출력 데이터 구조 result _ list를 생성하기 위해, 프로세스는 파라미터를 한 번에 하나씩 작업 데이터 구조 param _ list로부터 출력 데이터 구조 result _ list로 전달함으로써 파라미터를 "제거"한다. 출력 데이터 구조는 모든 파라미터가 제거된 후에 완성된다.
제1의 "수정된 토폴로지컬 분류" 프로세스는 2가지 단계를 포함한다. 제1 단계에서, 프로세스는 분류된 출력 데이터 구조를 생성하는데 사용하기 위한 입력 데이터에 기초하여 작업 데이터 구조를 구축한다. 제2 단계에서, 프로세스는 이들 작업 데이터 구조에 의해 나타내진 종속성 제약 조건에 따라 파라미터의 분류 및 제거를 반복적으로 행한다.
제1 단계에서 프로세스가 구축하는 작업 데이터 구조의 일부는, 해싱(hashing)에 기초하는 데이터 구결합 딕셔너리(dictionary)이다. 딕셔너리 내의 항목은 O(logN) 시간에서 효율적으로 액세스될 수 있다. 다음 예의 데이터 구조가 제1 단계에서 구축된다:
param _ list [ index ] : 숫자 index에 의해 인덱싱된, 제거되지 않은 파라미터 명칭의 오더링된 리스트(여기서, index=0가 리스트 내의 최초의 항목에 대응함). 이 데이터 구조는 "동적"이다(즉, 프로세스의 실행 동안 변경된다). 리스트는, 항목이 리스트의 중간으로부터 제거된다면, 제거된 항목 뒤의 항목의 인덱스가 그에 따라 시프트되도록, 위치에 의해 인덱스된다.
n_ dependencies _ dict [ name ] : 잠겨진 파라미터(keyed parameter)가 종속되는 파라미터의 번호를 포함하는 엔트리를 갖는, 파라미터 명칭(name)에 의해 잠겨진 딕셔너리. 이 딕셔너리는 동적이다.
dependers _ dict [ name ] : 잠겨진 파라미터에 종속되는 파라미터의 세트를 나타내는, 그 엔트리가 딕셔너리(또한 파라미터 명칭에 의해 잠겨진)인, 파라미터 명칭(name)에 의해 잠겨진 딕셔너리. 이 딕셔너리는 "정적"이다(즉, 프로세스의 실행 동안 변경되지 못한다).
order _ dict [ name ] : 초기 오더링에서의 파라미터의, 0 내지 N-1 범위의 정수인, 서수 위치를 저장하는, 파라미터 명칭(name)에 의해 잠겨진 딕셔너리. 이 딕셔너리는 정적이다.
attribute _ dict [ name ] : 잠겨진 파라미터에 대한 옵션의 속성 데이터 객체를 저장하는, 파라미터 명칭(name)에 의해 잠겨진 딕셔너리. 이 딕셔너리는 정적이다.
result _ list [ name ] : 숫자 index에 의해 인덱싱된, 프로세스의 출력을 나타내는 파라미터 명칭 및 속성의 오더링된 리스트. 이 데이터 구조는 최초에는 비어 있는 상태이다. 이 데이터 구조는 동적이다.
프로세스의 시간 효율을 분석하기 위해, 종속성 그래프의 평균적인 "정도(degree)"(또는 노드로부터 링크의 개수)를 z인 것으로 가정한다. 이러한 데이터 구조를 구축하는 것은, O(N*z) 시간을 취하는 n_ dependencies _ dictdependers_dict을 제외하고는 O(N) 시간을 취한다.
제2 단계에서, 프로세스는, 파라미터를, 먼저 이들 파라미터가 종속되는 제거되지 않은 파라미터의 번호에 의해 가장 낮은 것에서부터 가장 높은 것으로 오더링하고, 그 다음에 이들 파라미터의 서수에 의해(즉, order _ dict의 이들 파라미터의 값에 의해) 가잔 낮은 것에서부터 가장 높은 것으로 오더링하는, by _n_ deps _ and _ order에 의한 분류 기준에 따른 param _ list 데이터 구조로 분류한다. 그 후, 프로세스는 분류된 param_list 내의 최초의 파라미터를 제거한다. 이 파라미터에 대한 n_dependencies_dict의 값은 제로가 되어야 한다(분류된 param _ list 내의 최초의 파라미터에 대한 n_ dependencies _ dict의 값이 제로가 이니면, 에러가 플래그된다).
파라미터를 제거하기 위해, 프로세스는 그 파라미터를 result _ list에 부가하고(어떠한 대응하는 속성과 함께), 그 파라미터의 종속자(즉, dependers _ dict 내의 파라미터)의 전부의 종속성 카운트(즉, n_dependencies_dict의 값)을 1씩 감소시킨다. 최종적으로, 그 파라미터는 param _ list로부터 삭제된다. 그 결과의 제1 파라미터의 이러한 분류 및 제거는 모든 파라미터가 제거될 때까지 반복된다:
다음은 eliminate 프로시져에 대한 의사코드 정의이다:
Figure 112007093805871-pct00029
eliminate 프로시져의 독립변수는 list(그 값이 예컨대, param _ list) 및 index 이다. 함수 result _ list . append는 위치 index에서의 지시된 list 항목을 그것의 관련 속성과 함께 result _ list에 부가한다. 그 후, 프로시져는, 제거되고 있는 파라미터에 대해 잠겨진, dependers _ dict 데이터 구조의 멤버인 각각의 파라미터 dependers 에 대한 n_ dependencies _ dict의 값을 감소시킨다. 그 후, 프로시져는 list로부터 파라미터를 삭제한다. eliminate 프로시져에 대한 런타임은 O(zlogN)이다.
다음은 제1의 "수정된 토폴로지컬 분류" 프로세스에 대한 분류/제거 루프에 대한 의사코드이다:
Figure 112007093805871-pct00030
프로세스는 먼저 전술한 by _n_ deps _ and _ order에 의한 분류 기준에 따라 param_list의 파라미터를 오더링하는 함수 param _ list . sort(by _n_ deps _ and _ order)를 이용하여 param _ list의 초기 분류를 수행한다. 프로세스는 그 후 param _ list가 빈 상태가 될 때까지 param _ list의 또 다른 분류가 후속되는 eliminate 프로시져를 수행한다. 프로세스는 param _ list 내의 제1 파라미터(index=0)에 대한 종속성의 번호가 0이 되는지를 체크한다. 그렇지 않다면, 프로세스는 그 파라미터를 제거하고, 순환성 에러(circularity error)를 기록하며, 계속하여 진행한다. 분류가 O(NlogN)을 취하고, 루프 범위가 N이어서, 루프에 대한 전체 런타임에 대한 근사치는 O(N2logN)이 된다.
제2의 "수정된 토폴로지컬 분류" 프로세스는 종속성 그래프가 드문드문한(sparse) 경우의 장점을 취하며, 이로써 z?N이 된다. 한 번의 초기 분류 후, 프로세스는 다른 파라미터에 종속되지 못하는 파라미터의 리스트 candidates의 정렬도(sortedness)를 유지할 수 있다. 이로써, 아래에 설명된 바와 같이 예상 런타 임이 감소된다.
다음은 제2의 "수정된 토폴로지컬 분류"에 대한 의사코드이다:
Figure 112007093805871-pct00031
프로세스는, 먼저 전술한 분류 기준 by _n_ deps _ and _ order에 따라 param _ list의 파라미터를 오더링하는 함수 param _ list . sort(by _n_ deps _ and _ order)를 이용하여 param_list의 초기 분류를 수행한다. 그 후, 프로세스는 3개의 섹션("#섹션 1", "#섹션 2" 및 "#섹션 3"으로 라벨링된)을 갖는 루프를 수행한다.
섹션 1에서, 프로세스는 제로 종속성을 갖는 파라미터만을 포함하는 candidates 리스트를 구축한다. 프로세스는 param _ list 내의 파라미터의 전부를 스캔하고, 이들을 상대적인 오더링을 보존하면서 candidates에 부가한다.
섹션 2에서, 프로세스는 candidates로부터의 파라미터가 제거되고, 새로운 파라미터가 candidates에 병합되는 루프를 수행한다. this _ parm로서 저장되는 candidates 내의 제1 파라미터가 candidates로부터 제거되고, param _ list로부터 삭제된다. 함수 get _ new(this _ parm)는, 신규로 제거된 this _ parm에 대한 dependers _ dict의 멤버이고 제로 종속성이 남겨진, 파라미터의 명칭의 리스트를 리턴한다. 그 후, 자신의 최종 종속성이 제거된 파라미터를 나타내는 이들 파라미터는, by _n_ deps _ and _ order에 따라 분류되고(그 파라미터들이 자신의 각각의 서수에 따라 오더링되도록 하기 위해), candidates에 병합된다. 그러므로, candidates 리스트는 서수에 의해 분류된 제로-종속성 파라미터의 리스트를 유지한다.
섹션 3은, 예컨대 2개의 파라미터가 서로를 통해 정의될 때와 같이 "순환성 에러"가 야기되는 경우에만 진입된다. 이 경우, 프로세스는 재차 param _ list를 분류하며, param _ list 내의 제1 파라미터가 넌-제로 종속성을 갖는 경우에는 삭제되고, 루프가 섹션 1을 반복한다.
순환성 에러가 없는 것으로 가정하면, 개시 시에만 N-파라미터 리스트 param_list가 분류되어, O(NlogN)의 분류 시간이 된다. 그 후, candidates 리스트 의 헤드에서 파라미터를 제거한 결과에 의해 신규로 생성된 제로-종속성 파라미터의 훨씬 더 적은 리스트에 대해 분류가 수행된다. 이 리스트의 크기는 z 미만이며(평균적으로), 그 결과 O(zlogz)의 분류 시간과 O(z)의 병합 시간이 발생한다. 그러므로, 루프의 1회의 반복은 O(zlogz)이고, 전체 시간은 O(Nzlogz + NlogN)이 된다. z가 N의 증가에 따라 커지지 못하는 경우에 대하여, 이 시간은 효과적으로 O(NlogN)이 된다.
분류 예 2
또 다른 예에서, 파라미터 분류 프로세스(예컨대, 제1의 또는 제2의 "수정된 토폴로지컬 분류" 프로세스)는, 도 25a에 도시된 바와 같이, 그래프 성분(2502, 2504, 2506)을 갖는 그래프(2500)에 대한 런타임 파라미터의 초기 리스트를 결정한다. 그래프(2500)는 또한 입력 데이터 세트(2510)의 출력 포트(2508) 및 출력 데이터 세트(2514)의 입력 포트(2512)와 관련된 런타임 파라미터 를 갖는다. 이 예에서, 파라미터는 "성분간(inter-component)" 종속성 및 "성분내(inter-component)" 종속성을 갖는다. 즉, 성분의 파라미터는 동일한 성분 내의 파라미터 및 다른 성분 내의 파라미터에 종속된다. 이 에에서, 성분내 종속성은 일부 파라미터가 종속되는 메타데이터의 전파를 가능하게 하는 성분들 간의 흐름으로 인해 발생한다.
종속성은 도 25a에서 제1 파라미터 또는 포트로부터 제2 파라미터 또는 포트로의 점선 화살표에 의해 나타내어져 있다. 포트를 향하는 화살표는 링크된 파라미터의 값이 그 포트에서 다운스트림 포트로 전파하는 것을 나타낸다. 포트로부터 출발하는 화살표는 값이 업스트림 포트로부터 링크된 파라미터로 전파되는 것을 나타낸다. 제1 파라미터로부터 제2 파라미터로의 화살표는 제2 파라미터의 값이 제1 파라미터의 값에 종속된다는(예컨대, 참조한다는) 것을 나타낸다.
도 25b는 그래프(2500)에 기초하여 파라미터 p0, p1, p2, p4, p5 및 p6 간의 오더링 제약 조건을 나타내는 종속성 그래프(2550)를 도시한다. 도 25c는 그래프(2500)에 기초하여 파라미터 p3, p7, p8 및 p9 간의 오더링 제약 조건을 나타내는 종속성 그래프(2552)를 도시한다.
파라미터 분류 프로세는, 그래프(2500) 내의 요소의 배치의 순서에 따라 다양한 그래프 요소에 대해 10개의 파라미터 p0, p1,...,p9의 각각에 서수를 할당한다. 도 25a에서, 그래프(2500)에 추가된(예컨대, GDE(102)를 사용하는 사용자에 의해) 제1 그래프 요소는 파라미터 p0, p1 및 p2를 갖는 성분(2502)이다. 그래프에 추가된 제2 요소는 파라미터 p3, p4 및 p5를 갖는 성분(2506)이다. 그래프에 추가된 제3 요소는 파라미터 p6를 갖는 데이터세트(2510)이다. 그래프에 추가된 제4 요소는 파라미터 p7를 갖는 데이터세트(2514)이다. 그래프에 추가된 최종 요소는 런타임 파라미터를 갖지 않는 데이터세트(2516)이다. 다음 테이블은 할당된 서수에 의해 정해진 초기 오더링 내의 파라미터를 나열한다.
Figure 112007093805871-pct00032
여러 처리 스테이지에서의 param _ listresult _ list 내의 파라미터의 다음의 나열은 전술한 제1의 "수정된 토폴로지컬 분류" 프로세스에 대응한다. param_list는 각각의 스테이지에서의 분류 기준 by _n_ deps _ and _ order에 따라 분류되어 나타내어져 있다.
Figure 112007093805871-pct00033
여러 처리 스테이지에서의 candidatesresult _ list 내의 파라미터의 다음의 나열은 전술한 제2의 "수정된 토폴로지컬 분류" 프로세스에 대응한다. 파라미터가 각각의 스테이지에서 동일한 순서로 유지하고 있기 때문에 스테이지들 간에 candidates를 분류할 필요는 없다.
Figure 112007093805871-pct00034
그러므로, 도 26을 참조하면, "수정된 토폴로지컬 분류" 프로세스(2600)는, 런타임 파라미터의 값에 대해 사용자에게 프롬프트하는 요구된 제1 오더링(2602) 및 파라미터에 대한 오더링 제약 조건(2604)(예컨대, 종속성 그래프 2550 및 2552)을 입력으로서 취한다. 프로세스(2600)는 요구된 제1 오더링(2602)에 따라 오더링 제약 조건을 총족시키는 파라미터의 세트의 새로운 오더링(2606)을 제공한다.
대표적인 용도
통상적으로, 사용자는 웹 인터페이스(108)의 앞에 자리잡고, 실행하고자 원 하는 어플리케이션의 그래프를 보관 장치(104)에서 검색한다. 어플리케이션 그래프와 관련된 객체의 전부를 스캔함으로써, 웹 인터페이스(108)는 사용자로 하여금 어플리케이션의 런타임 파라미터에 대한 값을 특정할 수 있도록 하는 웹 페이지 형태를 생성한다. 모든 러타임 파라미터가 특정된 후, 어플리케이션 및 파라미터 설정의 조합이 함께 업무(job)가 되고, 이것이 실행부(110)에 의한 실행을 위해 스케쥴링된다. 업무를 실행할 때가 되었을 때, 실행부(110)는 공지의 양상으로 병렬 연산 시스템(106) 하의 실행을 위해 어플리케이션을 큐잉(queueing)한다. 병렬 연산 시스템(106)은 트래킹 정보 및 업무 상태를 수집하고, 이 정보를 보관 장치(104)에 저장하여, 사용자 및 관리자가 프로세스 및 업무의 성능을 추적할 수 있도록 한다.
예( Examples )
도 14는 런타임 파라미터가 없이 롤업 어플리케이션을 나타내는 그래프(1400)의 다이아그램이다. 이 그래프는 각각의 종류의 어카운트(account)의 개수를 게산하고, 그 결과를 출력 파일에 기입한다. 이 어플리케이션의 모든 양태, 즉 입력 파일 성분(1402)의 명칭, 입력 데이터의 포맷, HashRollup 성분(1404) 내의 데이터를 롤업하기 위해 사용되는 키 및 변환 규칙, 출력 포맷, 및 출력 파일 성분(1406)의 명칭은 그래프를 작성한 개발자에 의해 결정된다. 사용자는 이 그래프를 정의된 바대로 정확하게 실행할 수 있을뿐이다.
도 15는 도 15의 일례의 어플리케이션에 대한 런타임 파라미터 그리드(1600)를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다. 이 도면은 도 2에 도시 된 파라미터 그리드의 버젼으로 채워진다. 다수의 디폴트 파라미터가 전술한 바와 같이 prompt_for 의사-함수를 이용하여 정의되며, 이로써 웹 인터페이스(108)를 통한 사용자 입력을 필요로 한다. 이 그래프의 외형이 넌-런타임 파라미터화된 어플리케이션 그래프와는 다소 상이하지만, 하나 이상의 파라미터 그리드(또는 다른 적합한 컨트롤)가 사용자로 하여금 그래프의 실행을 제어하는 모든 파라미터를 완전하게 추적할 수 있도록 한다.
도 17a는 도 16의 파라미터 그리드(1600) 내의 정보로부터 웹 인터페이스(108)에 의해 생성된 폼(1700)을 나타내는 그래픽 대화창의 일실시예의 다이아그램이다. 이 예에서, 폼(1700)은 사용자 입력을 위한 4개의 런타임 파라미터, 즉 입력 데이터세트 보관 장치 경로(1702), 롤업 키(1704), 롤업 규칙(1706), 및 출력 경로(1708)를 제공한다. 도 17b는 파라미터 값을 갖는 사용자에 의해 채원진 도 17a의 폼(1700)의 다이아그램이다. 런타임 파라미터(1702~1708)와 관련된 직접 엔트리 및/도는 편집 혹은 브라우저 컨트롤 버튼을 이용하여, 사용자는 관련된 그래프를 실행하기 위해 대응하는 파라미터 값(1710~1716)을 제공한다.
도 18은 런타임 파라미터화된 롤업 및 결합 어플리케이션을 나타내는 그래프(1800)의 다이아그램이다. 도 19는 도 18의 일례의 어플리케이션에 대한 런타임 파라미터 그리드(1900)를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다. 여기서, 어플리케이션의 일부 양태는 파라미터화되었지만, 결합 키 및 입력 데이터세트를 포함한 대부분은 불변되어 유지되고 있다. 도 20은 도 19의 파라미터 그리드(1900) 내의 정보로부터 웹 인터페이스(108)에 의해 생성된 폼(2000)을 나타내는 그래픽 대화창의 일실시예의 다이아그램이다. 롤업에 대한 입력 유형이 탑-레벨 폼이 디스플레이될 때에 알려지므로, 롤업 규칙(2002)은 적소에서 프롬프트될 수 있다.
도 21은 런타임 파라미터화된 롤업-결합-분류 어플리케이션을 나타내는 그래프(2100)의 다이아그램이다. 도 18에서의 예와 유사하지만, 조건부 분류 성분(2102)이 그래프(2100)에 추가되어 있다. 도 22는 도 21에 도시된 일례의 어플리케이션에 대한 런타임 파라미터 그리드(2200)를 나타내는 그래픽 대화창의 일실시예의 다이아그램이다. "sort_key" 런타임 파라미터(2202)는 분류가 요구된다는 것을 사용자가 나타내는 경우에만 프롬프트된다. 이러한 효과를 취하기 위해, 개발자는 "sort_key" 런타임 파라미터(2202)의 디폴트 값(2204)에 대한 "if" 조건부 테스트 내에 "prompt_for" 의사-함수를 위치시킨다. "if" 조건부 테스트는 제2 런타임 파라미터 "do_sort"(2206)를 참조한다. "do_sort" 파라미터(2206)의 디폴트 값 필드(2208) 및 디스크립션 필드(2210)는 사용자에게 "데이터가 저장되어야 합니까?"라는 텍스트 프롬프트에 대한 참/거짓 또는 예/아니오 대답을 요청하는 "radio" 프롬프트를 생성하도록 정의된다. "do_sort" 파라미터(2206)에 대해 제공된 값이 "참"이면, 분류 성분(2102)은 런타임 시에 그래프의 일부로서 포함될 것이다. 그렇지 않은 경우에는, 분류 성분(2102)은 그 성분의 특정된 조건 해석에 따라, 그래프로부터 완전히 제거되거나, 또는 흐름으로 대체될 것이다.
스크립트 구현예( Script Implementation )
GDE(102)가 파라미터화된 그래프의 구축을 용이하게 하지만, 간혹 폼을 기반 으로 하는 인터페이스를 제공하고자 하는 넌-그래프 프로그램이 존재한다. 어플리케이션-레벨 PL 및 보관 장치(104)를 이용하여, 임의의 셀 스크립트를 파라미터화할 수 있다. 예컨대, 어플리케이션의 디스크립션은 다음과 유사한 구조로 파일에 기입될 수 있다:
Figure 112007093805871-pct00035
일반적인 컴퓨터 구현예( General Computer Implementation )
본 발명은 하드웨어, 소프트웨어 또는 이들의 조합(예컨대, 프로그래머블 로직 어레이)으로 구현될 수도 있다. 반대의 경우로 특정되지 않는다면, 본 발명의 일부로서 포함된 알고리즘은 어떠한 특정 컴퓨터 또는 기타 장치에 고유한 것으로 되지 않는다. 구체적으로, 다양한 범용 머신이 본 명세서 내의 교시에 따라 작성된 프로그램과 함께 사용될 수도 있고, 또는 요구된 방법 단계를 수행하기 위해 더욱 특수화된 장치를 구성하는 것이 보다 편리할 수도 있다. 그러나, 바람직하게는, 본 발명은, 각각 하나 이상의 프로세서, 하나 이상의 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 장치를 포함), 하나 이상의 입력 장치 또는 포트, 및 하나 이상의 출력 장치 또는 포트를 포함하는 하나 이상의 프로그래밍 가능한 컴퓨터 시스템 상에서 실행하는 하나 이상의 컴퓨터 프로그램으로 구현된다. 프로그램 코드는 그 안에 기술된 기능을 수행하기 위해 프로세서 상에서 실행된다.
각각의 이러한 프로그램은 컴퓨터 시스템과의 통신을 위해 임의의 요구된 컴퓨터 랭귀지(머신, 어셈블리, 또는 하이 레벨의 프로시져, 로직, 또는 객체 지향 프로그래밍 랭귀지)로 구현될 수도 있다. 어떠한 경우, 랭귀지는 컴파일되거나 인터프리트된 랭귀지일 수도 있다.
각각의 이러한 컴퓨터 프로그램은, 범용 또는 특수 용도의 프로그래밍 가능한 컴퓨터에 의해 판독 가능한 기억 매체 또는 장치(예컨대, 솔리드 스테이트 메모리 또는 매체, 또는 자기 또는 광학 매체) 상에 저장되거나 다운로드되어, 그 프로그램 내에 기술되어 있는 프로시져를 수행하기 위해 저장 매체 또는 장치가 컴퓨터 시스템에 의해 판독될 때에 컴퓨터를 구성 및 작동하는 것이 바람직하다. 본 발명의 시스템은, 컴퓨터 프로그램으로 구성된 컴퓨터 판독 가능한 기억 매체로서 실시되도록 고려되어, 이와 같이 구성된 기억 매체가 컴퓨터 시스템을 특정의 사전에 정해진 방식으로 작동하도록 함으로써 그 프로그램 내에 기술된 기능을 수행하도록 할 수도 있다.
본 발명은 다수의 실시예를 참조하여 설명되었지만, 본 발명의 기술 사상에서 벗어남이 없이 다양한 수정이 이루어질 수 있다. 예컨대, 전술한 다수의 기능 단계는 전체적인 처리에 실질적으로 영향을 주지않고서도 다른 순서로 실행될 수도 있다. 예컨대, 도 4 내의 단계 402 및 단계 412는 반대 순서로 수행될 수도 있다. 따라서, 다른 실시예 또한 이하의 청구범위에 한정된 바와 같은 본 발명의 사상 내에 포함되는 것이다.

Claims (36)

  1. 그래프 기반의 계산(graph-based computation)에서의 파라미터 오더링 방법에 있어서,
    계산 그래프 내의 그래프 요소(element)와 관련된 파라미터의 세트의 요구된 제1 오더링(ordering)(2602)을 결정하는 단계;
    상기 파라미터의 세트에 대한 오더링 제약 조건(ordering constraint)(2604)을 결정하는 단계; 및
    요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 상기 파라미터의 세트의 제2 오더링(2606)을 결정하는 단계
    를 포함하는 파라미터 오더링 방법.
  2. 제1항에 있어서,
    상기 계산 그래프의 스페시피케이션(specification)을 수신하는 단계를 더 포함하며,
    요구된 상기 제1 오더링은, 상기 그래프 요소가 상기 스페시피케이션에서 나타나는 순서를 기반으로 하는,
    파라미터 오더링 방법.
  3. 제1항에 있어서,
    상기 그래프가 상기 오더링 제약 조건을 부과(impose)하는, 파라미터 오더링 방법.
  4. 제1항에 있어서,
    상기 제2 오더링에 따라 상기 파라미터의 값을 결정하는 단계를 더 포함하는, 파라미터 오더링 방법.
  5. 제4항에 있어서,
    상기 파라미터의 값을 결정하는 단계는 사용자 입력을 프롬프트(prompt)하는 단계를 포함하는, 파라미터 오더링 방법.
  6. 제5항에 있어서,
    상기 사용자 입력을 프롬프트하는 단계에 대한 사용자 입력에 기초하여, 상기 파라미터 중 제1 파라미터에 대한 파라미터 값을 결정하는 단계; 및
    상기 파라미터 값을 결정하는 단계에서 결정된 파라미터 값을 상기 제1 파라미터에 대한 값으로서 사용하여 상기 그래프를 실행하는 단계
    를 더 포함하는, 파라미터 오더링 방법.
  7. 제1항에 있어서,
    상기 오더링 제약 조건을 결정하는 단계는, 상기 파라미터의 값들 간의 종속 성(dependency)을 결정하는 단계를 포함하는, 파라미터 오더링 방법.
  8. 제7항에 있어서,
    상기 오더링 제약 조건은, 상기 제1 파라미터가 제2 파라미터에 종속되는 경우, 상기 제1 파라미터를 상기 제2 파라미터의 뒤에 오더링하는 것을 포함하는, 파라미터 오더링 방법.
  9. 제1항에 있어서,
    상기 오더링 제약 조건은, 하나 이상의 방향성 비순환 그래프(directed acyclic graph)의 각각의 정점(vertex)이 상기 파라미터의 세트 내의 파라미터에 대응하고 있는, 하나 이상의 상기 방향성 비순환 그래프에 대응하는, 파라미터 오더링 방법.
  10. 제1항에 있어서,
    상기 제2 오더링을 결정하는 단계는, 상기 오더링 제약 조건에 기초하여 상기 파라미터의 세트 내의 파라미터의 토폴로지컬 분류(topological sort)를 수행하는 단계를 포함하는, 파라미터 오더링 방법.
  11. 제1항에 있어서,
    요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 것은, 상기 오더링 제약 조건을 충족시키기 위해 리오더링되도록 요구되지 않는 파라미터의 일부 또는 전부에 대한 상기 제1 오더링을 상기 제2 오더링 내에 보존하는 것을 포함하는, 파라미터 오더링 방법.
  12. 컴퓨터 판독 가능한 매체에 저장되고, 그래프 기반의 계산에서 파라미터를 오더링하며, 명령어를 포함하는 소프트웨어로서,
    상기 명령어는, 컴퓨터 시스템이,
    계산 그래프 내의 그래프 요소와 관련된 파라미터의 세트의 요구된 제1 오더링(ordering)(2602)을 결정하는 단계;
    상기 파라미터의 세트에 대한 오더링 제약 조건(ordering constraint)(2604)을 결정하는 단계; 및
    요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 상기 파라미터의 세트의 제2 오더링(2606)을 결정하는 단계
    를 행하도록 하는, 소프트웨어.
  13. 그래프 기반의 계산에서의 파라미터 오더링 시스템에 있어서,
    계산 그래프 내의 그래프 요소와 관련된 파라미터의 세트의 요구된 제1 오더링(ordering)(2602)을 결정하는 수단;
    상기 파라미터의 세트에 대한 오더링 제약 조건(ordering constraint)(2604)을 결정하는 수단; 및
    요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 상기 파라미터의 세트의 제2 오더링(2606)을 결정하는 수단
    를 포함하는 파라미터 오더링 시스템.
  14. 제1항에 있어서,
    상기 제2 오더링을 결정하는 단계가,
    상기 세트 내의 다수의 제약된 파라미터들(constrained parameters) 각각에 대하여, 상기 오더링 제약 조건에 따라 상기 제2 오더링 내의 상기 제약된 파라미터의 순서를 제약하는 하나 이상의 다른 파라미터들과 관련시키는 단계; 및
    다수의 반복(iteration)에서의 매 반복마다, 상기 제2 오더링 내의 위치에 배치될 하나 이상의 파라미터로 된 서로 다른 서브세트를 선택하는 단계로서, 상기 서브세트 내에 주어진 파라미터와 연관된 다른 파라미터의 수에 적어도 부분적으로 기초하여 상기 서브세트를 선택하는 단계
    를 더 포함하는, 파라미터 오더링 방법.
  15. 제1항에 있어서,
    상기 오더링 제약 조건에 따라 상기 제2 오더링 내의 제약된 파라미터의 순서를 제약하는 상기 하나 이상의 다른 파라미터들이, 상기 제약된 파라미터가 종속하는 파라미터들을 포함하는, 파라미터 오더링 방법.
  16. 제1항에 있어서,
    상기 제2 오더링 내의 위치로 배치될, 상기 세트 내의 하나 이상의 파라미터로부터 선택된 제1 서브세트가 적어도 하나의 제약되지 않은 파라미터를 포함하는, 파라미터 오더링 방법.
  17. 제16항에 있어서,
    상기 제2 오더링 내의 위치로 배치될, 상기 세트 내의 하나 이상의 파라미터로부터 선택된 제2 서브세트가, 적어도 하나의 제약된 파라미터를 포함하는, 파라미터 오더링 방법.
  18. 제17항에 있어서,
    상기 제2 서브세트 내의 각 파라미터가 상기 제2 오더링 내에서 상기 제1 서브세트 내의 모든 파라미터들 이후의 위치에 배치되는, 파라미터 오더링 방법.
  19. 제18항에 있어서,
    상기 제2 오더링 내의 위치에 배치될, 상기 세트 내의 하나 이상의 파라미터들로부터 선택된 제3 서브세트가, 적어도 하나의 제약되지 않은 파라미터를 포함하는 파라미터 오더링 방법.
  20. 제19항에 있어서,
    상기 제3 서브세트 내의 각 파라미터가 상기 제2 오더링 내에서 상기 제2 서브세트 내의 모든 파라미터들 이후의 위치에 배치되는, 파라미터 오더링 방법.
  21. 제1항에 있어서,
    상이한 반복에서 선택된 서브세트들은 중복되지 않는, 파라미터 오더링 방법.
  22. 제21항에 있어서,
    이전 서브세트가 선택된 이전 반복의 다음의 반복에서 선택된 서브세트 내의 각 파라미터는, 상기 제2 오더링 내에서, 상기 이전 서브세트 내의 모든 파라미터들 이후의 위치에 배치되는, 파라미터 오더링 방법.
  23. 제22항에 있어서,
    상기 제2 오더링을 결정하는 단계는,
    각각의 반복에 대해,
    모든 이전 서브세트 내에는 없었던 제약된 파라미터들과 이전 서브세트 내에 있었던 제약된 파라미터들의 순서를 제약하는 모든 관련된 파라미터들 간의 관련성을 제거하는 단계; 및
    상기 관련성들을 제거한 이후에, 먼저 주어진 파라미터와 연관된 다른 파라미터의 수에 의해, 다음으로는 상기 주어진 파라미터의 제1 오더링 내에서의 위치에 의해, 모든 이전 서브세트 내에는 없었던 모든 파라미터들을 정렬하는 단계
    를 포함하는, 파라미터 오더링 방법.
  24. 제1항에 있어서,
    상기 오더링 제약 조건에 따라 상기 제2 오더링 내의 제약된 파라미터의 순서를 제약하는 하나 이상의 다른 파라미터들과 상기 제약된 파라미터를 관련시키는 단계가, 상기 제약된 파라미터와 관련된 데이터 구조 내에서 상기 제약된 파라미터가 종속하는 다른 파라미터들을 식별하는 단계를 포함하는, 파라미터 오더링 방법.
  25. 제24항에 있어서,
    상기 서브세트들을 선택하는 단계가,
    제거되지 않은 파라미터들의 리스트 내에서 파라미터들을 반복적으로 정렬하는 단계와,
    상기 데이터 구조에 의해 표현되는 종속성 제약 조건들(dependency constrains)에 따라 파라미터들을 제거하는 단계
    를 포함하는, 파라미터 오더링 방법.
  26. 제25항에 있어서,
    상기 파라미터들을 정렬하는 단계가,
    먼저, 상기 파라미터들이 종속하는 제거되지 않은 파라미터들의 수에 의해 가장 낮은 것에서 가장 높은 것으로 파라미터들의 순서를 정하고,
    다음으로, 상기 제1 오더링 내의 파라미터들의 위치에 의해 가장 낮은 것에서 가장 높은 것으로 파라미터들의 순서를 정하는 단계를 포함하는, 파라미터 오더링 방법.
  27. 제12항에 있어서,
    상기 컴퓨터 시스템이,
    상기 계산 그래프의 스페시피케이션(specification)을 수신하도록 하는 명령어들을 더 포함하고,
    요구된 상기 제1 오더링은, 상기 그래프 요소가 상기 스페시피케이션에서 나타나는 순서를 기반으로 하는, 소프트웨어.
  28. 제12항에 있어서,
    상기 제2 오더링에 따라 상기 파라미터의 값을 결정하는 단계를 더 포함하는, 소프트웨어.
  29. 제12항에 있어서,
    상기 오더링 제약 조건을 결정하는 단계는, 상기 파라미터의 값들 간의 종속성(dependency)을 결정하는 단계를 포함하는, 소프트웨어.
  30. 제12항 있어서,
    요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 것은, 상기 오더링 제약 조건을 충족시키기 위해 리오더링되도록 요구되지 않는 파라미터의 일부 또는 전부에 대한 상기 제1 오더링을 상기 제2 오더링 내에 보존하는 단계를 포함하는, 소프트웨어.
  31. 제12항에 있어서,
    상기 제2 오더링을 결정하는 단계가,
    상기 세트 내의 다수의 제약된 파라미터들(constrained parameters) 각각에 대하여, 상기 오더링 제약 조건에 따라 상기 제2 오더링 내의 상기 제약된 파라미터의 순서를 제약하는 하나 이상의 다른 파라미터들과 관련시키는 단계; 및
    다수의 반복(iteration)에서의 매 반복마다, 상기 제2 오더링 내의 위치에 배치될 하나 이상의 파라미터로 된 서로 다른 서브세트를 선택하는 단계로서, 상기 서브세트 내에 주어진 파라미터와 연관된 다른 파라미터의 수에 적어도 부분적으로 기초하여 상기 서브 세트를 선택하는 단계
    를 더 포함하는, 소프트웨어.
  32. 제13항에 있어서,
    상기 컴퓨터 시스템이,
    상기 계산 그래프의 스페시피케이션(specification)을 수신하도록 하는 수단을 더 포함하고,
    요구된 상기 제1 오더링은, 상기 그래프 요소가 상기 스페시피케이션에서 나타나는 순서를 기반으로 하는, 파라미터 오더링 시스템.
  33. 제13항에 있어서,
    상기 제2 오더링에 따라 상기 파라미터의 값을 결정하는 수단을 더 포함하는, 파라미터 오더링 시스템.
  34. 제13항에 있어서,
    상기 오더링 제약 조건을 결정하는 수단은, 상기 파라미터의 값들 간의 종속성(dependency)을 결정하는 수단을 포함하는, 파라미터 오더링 시스템.
  35. 제13항에 있어서,
    요구된 상기 제1 오더링에 따라 상기 오더링 제약 조건을 충족시키는 것은, 상기 오더링 제약 조건을 충족시키기 위해 리오더링되도록 요구되지 않는 파라미터의 일부 또는 전부에 대한 상기 제1 오더링을 상기 제2 오더링 내에 보존하는 단계를 포함하는, 파라미터 오더링 시스템.
  36. 제13항에 있어서,
    상기 제2 오더링을 결정하는 수단이,
    상기 세트 내의 다수의 제약된 파라미터들(constrained parameters) 각각에 대하여, 상기 오더링 제약 조건에 따라 상기 제2 오더링 내의 상기 제약된 파라미터의 순서를 제약하는 하나 이상의 다른 파라미터들과 관련시키는 수단; 및
    다수의 반복(iteration)에서의 매 반복마다, 상기 제2 오더링 내의 위치에 배치될 하나 이상의 파라미터로 된 서로 다른 서브세트를 선택하는 단계로서, 상기 서브세트 내에 주어진 파라미터와 연관된 다른 파라미터의 수에 적어도 부분적으로 기초하여 상기 서브 세트를 선택하는 수단
    을 더 포함하는, 파라미터 오더링 시스템.
KR1020077030527A 2005-06-27 2006-06-27 그래프 기반 계산을 위한 파라미터의 관리 KR101169296B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/169,014 US7716630B2 (en) 2005-06-27 2005-06-27 Managing parameters for graph-based computations
US11/169,014 2005-06-27
PCT/US2006/024957 WO2007002658A2 (en) 2005-06-27 2006-06-27 Managing parameters for graph-based computations

Publications (2)

Publication Number Publication Date
KR20080020642A KR20080020642A (ko) 2008-03-05
KR101169296B1 true KR101169296B1 (ko) 2012-08-03

Family

ID=37595975

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077030527A KR101169296B1 (ko) 2005-06-27 2006-06-27 그래프 기반 계산을 위한 파라미터의 관리

Country Status (8)

Country Link
US (1) US7716630B2 (ko)
EP (1) EP1899808A4 (ko)
JP (1) JP5235663B2 (ko)
KR (1) KR101169296B1 (ko)
CN (1) CN101535955B (ko)
AU (1) AU2006261760B2 (ko)
CA (1) CA2611774C (ko)
WO (1) WO2007002658A2 (ko)

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US8903810B2 (en) 2005-12-05 2014-12-02 Collarity, Inc. Techniques for ranking search results
US20070250500A1 (en) * 2005-12-05 2007-10-25 Collarity, Inc. Multi-directional and auto-adaptive relevance and search system and methods thereof
US8429184B2 (en) 2005-12-05 2013-04-23 Collarity Inc. Generation of refinement terms for search queries
US7756855B2 (en) 2006-10-11 2010-07-13 Collarity, Inc. Search phrase refinement by search term replacement
US8266609B2 (en) 2005-12-07 2012-09-11 Microsoft Corporation Efficient placement of software transactional memory operations around procedure calls
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US7873946B2 (en) * 2006-03-23 2011-01-18 Oracle America, Inc. Scalable vector graphics, tree and tab as drag and drop objects
CN101501678B (zh) * 2006-08-10 2013-10-16 起元科技有限公司 在基于图的计算中分配服务
US7962977B1 (en) * 2006-09-25 2011-06-21 Amdocs Software Systems Limited System, method, and computer program product for determining a price utilizing a pattern oriented rule implemented table
US8442972B2 (en) 2006-10-11 2013-05-14 Collarity, Inc. Negative associations for search results ranking and refinement
US20080216072A1 (en) * 2006-10-16 2008-09-04 Sap Ag Transition between process steps
US20080155479A1 (en) * 2006-12-22 2008-06-26 Mark Long Method and Apparatus for Building Interactive Software Applications
US20130139125A1 (en) * 2007-04-05 2013-05-30 Perception Labs Method and system for data modeling according to object perspectives
WO2009015342A1 (en) 2007-07-26 2009-01-29 Ab Initio Technology Llc Transactional graph-based computation with error handling
US8789031B2 (en) * 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
US20090228296A1 (en) * 2008-03-04 2009-09-10 Collarity, Inc. Optimization of social distribution networks
US8438178B2 (en) * 2008-06-26 2013-05-07 Collarity Inc. Interactions among online digital identities
JP2010073062A (ja) * 2008-09-19 2010-04-02 Ricoh Co Ltd 画像処理装置、画像処理方法及びプログラム
WO2010065511A1 (en) * 2008-12-02 2010-06-10 Ab Initio Software Llc Mapping instances of a dataset within a data management system
KR20150038757A (ko) * 2009-02-13 2015-04-08 아브 이니티오 테크놀로지 엘엘시 데이터 저장 시스템과의 통신
CA2750279C (en) 2009-02-13 2019-03-26 Ab Initio Technology Llc Managing task execution
EP2224358A1 (en) * 2009-02-27 2010-09-01 AMADEUS sas Graphical user interface for search request management
KR101656813B1 (ko) 2009-09-16 2016-09-12 아브 이니티오 테크놀로지 엘엘시 데이터세트 요소의 매핑
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
CN102754072B (zh) 2009-12-14 2016-10-19 起元技术有限责任公司 规定用户界面元素
US8782429B2 (en) 2009-12-23 2014-07-15 Ab Initio Technology Llc Securing execution of computational resources
US9031895B2 (en) 2010-01-13 2015-05-12 Ab Initio Technology Llc Matching metadata sources using rules for characterizing matches
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US8875038B2 (en) 2010-01-19 2014-10-28 Collarity, Inc. Anchoring for content synchronization
US8555265B2 (en) * 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
AU2011268459B2 (en) 2010-06-15 2014-09-18 Ab Initio Technology Llc Dynamically loading graph-based computations
EP2585949B1 (en) 2010-06-22 2015-03-25 Ab Initio Technology LLC Processing related datasets
US8819652B2 (en) * 2010-07-30 2014-08-26 General Electric Company System and method for parametric system evaluation
CN103069394B (zh) 2010-08-25 2016-06-22 起元技术有限责任公司 评估数据流图的特征
CA2814835C (en) * 2010-10-25 2019-01-08 Ab Initio Technology Llc Managing data set objects in a dataflow graph that represents a computer program
US9213528B2 (en) 2010-11-11 2015-12-15 Sap Se Dialog generation
US8549464B2 (en) 2010-11-22 2013-10-01 Microsoft Corporation Reusing expression graphs in computer programming languages
JP5940560B2 (ja) 2011-01-14 2016-06-29 アビニシオ テクノロジー エルエルシー データの集合体に対する変更の管理
KR101889120B1 (ko) 2011-01-28 2018-08-16 아브 이니티오 테크놀로지 엘엘시 데이터 패턴 정보 생성
US8935660B2 (en) 2011-03-31 2015-01-13 Accenture Global Services Limited Expression editor system
US8782595B1 (en) * 2011-10-06 2014-07-15 Google Inc. Systems and methods for rule based meta-programming of actions for rule based build systems
US8739124B2 (en) 2012-06-27 2014-05-27 Sap Ag Configuring integration capabilities for system integration
US9092573B2 (en) * 2012-07-06 2015-07-28 Nvidia Corporation System, method, and computer program product for testing device parameters
US9852153B2 (en) 2012-09-28 2017-12-26 Ab Initio Technology Llc Graphically representing programming attributes
US10489360B2 (en) 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9703822B2 (en) 2012-12-10 2017-07-11 Ab Initio Technology Llc System for transform generation
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
WO2014107318A1 (en) 2013-01-03 2014-07-10 Ab Initio Technology Llc Configurable testing of computer programs
US9892026B2 (en) 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US9995844B2 (en) * 2013-03-15 2018-06-12 Exxonmobil Upstream Research Company Method and system for geophysical modeling of subsurface volumes
AU2014265246B2 (en) * 2013-05-17 2018-05-17 Ab Initio Technology Llc Managing memory and storage space for a data operation
US9984482B2 (en) * 2013-08-23 2018-05-29 Ab Initio Technology Llc Graphical user interface having enhanced tool for connecting components
US10776325B2 (en) * 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system
CA2932763C (en) * 2013-12-05 2022-07-12 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
AU2014362192B2 (en) 2013-12-13 2020-01-30 Ab Initio Technology Llc Dynamically determining a mode of a data processing application
US11487732B2 (en) 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
US9575639B2 (en) 2014-02-27 2017-02-21 Ab Initio Technology Llc Compound controls
KR102361153B1 (ko) 2014-03-07 2022-02-09 아브 이니티오 테크놀로지 엘엘시 데이터 유형에 관련된 데이터 프로파일링 동작 관리
EP4280135A3 (en) 2014-03-14 2024-02-21 AB Initio Technology LLC Mapping attributes of keyed entities
KR101595062B1 (ko) * 2014-03-25 2016-02-18 고려대학교 산학협력단 그래프 극대 매칭 방법
US9607073B2 (en) 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
SG11201607312YA (en) 2014-04-17 2016-10-28 Ab Initio Technology Llc Integrated monitoring and control of processing environment
US9772828B2 (en) * 2014-04-22 2017-09-26 Oracle International Corporation Structural identification of dynamically generated, pattern-instantiation, generated classes
US10705877B2 (en) 2014-05-29 2020-07-07 Ab Initio Technology Llc Workload automation and data lineage analysis
SG11201700381XA (en) 2014-07-18 2017-02-27 Ab Initio Technology Llc Managing lineage information
KR102410723B1 (ko) 2014-07-24 2022-06-17 아브 이니티오 테크놀로지 엘엘시 데이터 계통 요약
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US11531775B2 (en) 2014-11-05 2022-12-20 Ab Initio Technology Llc Database security
US9880818B2 (en) 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US11126598B1 (en) 2014-11-06 2021-09-21 Ab Initio Technology Llc Techniques for performing lifecycle operations on a data store
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
KR102054568B1 (ko) 2015-02-11 2020-01-22 아브 이니티오 테크놀로지 엘엘시 필터링 데이터 계통 다이어그램
JP6469878B2 (ja) 2015-02-11 2019-02-13 アビニシオ テクノロジー エルエルシー データ系統図のフィルタリング
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
US9985843B2 (en) 2015-02-27 2018-05-29 International Business Machines Corporation Efficient parallel processing of a network with conflict constraints between nodes
US9684526B2 (en) 2015-05-15 2017-06-20 Ab Initio Technology Llc Techniques for configuring a generic program using controls
US10409802B2 (en) 2015-06-12 2019-09-10 Ab Initio Technology Llc Data quality analysis
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10210236B2 (en) 2015-11-23 2019-02-19 Ab Initio Technology Llc Storing and retrieving data of a data cube
AU2016371481B2 (en) 2015-12-17 2019-09-19 Ab Initio Technology Llc Processing data using dynamic partitioning
SG11201803929YA (en) 2015-12-21 2018-06-28 Ab Initio Technology Llc Sub-graph interface generation
US10936289B2 (en) 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
WO2018089633A1 (en) 2016-11-09 2018-05-17 Ab Initio Technology Llc Systems and methods for determining relationships among data elements
US10802945B2 (en) 2016-12-07 2020-10-13 Ab Initio Technology Llc Differencing of executable dataflow graphs
WO2018106772A1 (en) 2016-12-08 2018-06-14 Ab Initio Technology Llc Computational resource allocation
US11947978B2 (en) 2017-02-23 2024-04-02 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
US10831509B2 (en) 2017-02-23 2020-11-10 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
CN110612513B (zh) 2017-03-29 2024-01-30 起元技术有限责任公司 用于使用可变级并行执行数据处理操作的系统和方法
US10379825B2 (en) 2017-05-22 2019-08-13 Ab Initio Technology Llc Automated dependency analyzer for heterogeneously programmed data processing system
US11194551B2 (en) * 2017-06-07 2021-12-07 Ab Initio Technology Llc Dataflow graph configuration
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
KR102402150B1 (ko) 2017-10-31 2022-05-25 아브 이니티오 테크놀로지 엘엘시 시간 간격 카운터를 사용하는 컴퓨팅 클러스터 관리
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods
US11334469B2 (en) * 2018-04-13 2022-05-17 Microsoft Technology Licensing, Llc Compound conditional reordering for faster short-circuiting
DE102018206762A1 (de) * 2018-05-02 2019-11-07 Robert Bosch Gmbh Feature-Development-Framework und Feature-Integration-Framework zum Implementieren physikalischer Funktionsfeatures in einem Zielgerät
CN108769154B (zh) * 2018-05-15 2021-01-01 北京工业大学 基于有向无环图和分布式账本的数据存储方法
US12032631B2 (en) 2018-05-30 2024-07-09 Ab Initio Technology Llc Systems and methods for dataflow graph optimization
US10990364B2 (en) 2018-06-06 2021-04-27 Ab Initio Technology Llc Updating executable graphs
WO2020006571A1 (en) 2018-06-29 2020-01-02 pulseData Inc. Machine learning systems and methods for predicting risk of renal function decline
CN112654977A (zh) 2018-07-19 2021-04-13 起元技术有限责任公司 发布到数据仓库
CN109634596B (zh) * 2018-12-11 2021-10-22 清华大学 基于流程图的可视化编程工具
JP7427677B2 (ja) 2019-01-22 2024-02-05 アビニシオ テクノロジー エルエルシー データ処理システムによって管理されるデータオブジェクトのワークフローを実施するための有限状態機械
US11836505B2 (en) 2019-05-07 2023-12-05 Ab Initio Technology Llc Dynamic distribution of container images
US10996946B2 (en) 2019-05-22 2021-05-04 Ab Initio Technology Llc Static and runtime analysis of computer program ecosystems
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
US20210073287A1 (en) * 2019-09-06 2021-03-11 Digital Asset Capital, Inc. Dimensional reduction of categorized directed graphs
US10990879B2 (en) 2019-09-06 2021-04-27 Digital Asset Capital, Inc. Graph expansion and outcome determination for graph-defined program states
US11199955B2 (en) * 2019-10-02 2021-12-14 Palantir Technologies Inc. Enhanced techniques for building user interfaces
US20210191845A1 (en) 2019-12-23 2021-06-24 Ab Initio Technology Llc Unit testing of components of dataflow graphs
US12019601B2 (en) * 2019-12-26 2024-06-25 Yahoo Assets Llc Horizontal skimming of composite datasets
US11507554B2 (en) * 2019-12-26 2022-11-22 Yahoo Assets Llc Tree-like metadata structure for composite datasets
EP4154478A1 (en) 2020-05-19 2023-03-29 Ab Initio Technology LLC Optimizing communication in distributed computing network
US20220245154A1 (en) 2021-01-31 2022-08-04 Ab Initio Technology Llc. Techniques for managing data in a data processing system using data entities and inheritance
JP2024505238A (ja) 2021-01-31 2024-02-05 アビニシオ テクノロジー エルエルシー 論理データセットグループの操作を伴うデータ処理システム
CN116917882A (zh) 2021-01-31 2023-10-20 起元技术有限责任公司 用于访问由数据处理系统管理的数据实体的系统和方法
DE112022000878T5 (de) 2021-01-31 2024-02-15 Ab Initio Technology Llc Datensatzmultiplexer für datenverarbeitungssystem
WO2022177904A1 (en) 2021-02-16 2022-08-25 Ab Initio Technology Llc Dynamic execution of parameterized applications for the processing of keyed network data streams
AU2022226637A1 (en) 2021-02-24 2023-09-07 Ab Initio Technology Llc Systems and methods for managing privileges in a data processing system
CA3217116A1 (en) 2021-06-04 2022-12-08 Ab Initio Technology Llc Dynamic computational resource allocation
WO2023056003A1 (en) 2021-09-30 2023-04-06 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
WO2023060170A2 (en) 2021-10-08 2023-04-13 Ab Initio Technology Llc Automated modification of computer programs
US11477301B1 (en) * 2022-01-27 2022-10-18 Dell Products L.P. Dynamic measurement analysis and optimization of micro-service architecture for edge computing
US20230359668A1 (en) 2022-05-05 2023-11-09 Ab Initio Technology Llc Dataflow graph datasets

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050034112A1 (en) * 2003-06-25 2005-02-10 Stanfill Craig W. Computer-aided parallelizing of computation graphs
US20050059046A1 (en) * 2003-06-18 2005-03-17 Applera Corporation Methods and systems for the analysis of biological sequence data

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04348431A (ja) * 1991-05-27 1992-12-03 Meidensha Corp 質問応答システムのデータ管理方法
US6400996B1 (en) * 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
JP3177105B2 (ja) * 1994-10-03 2001-06-18 株式会社東芝 プログラム作成方法及びプログラムを用いた制御装置
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
US6006242A (en) * 1996-04-05 1999-12-21 Bankers Systems, Inc. Apparatus and method for dynamically creating a document
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6088716A (en) * 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US6173276B1 (en) * 1997-08-21 2001-01-09 Scicomp, Inc. System and method for financial instrument modeling and valuation
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US7911483B1 (en) * 1998-11-09 2011-03-22 Broadcom Corporation Graphics display system with window soft horizontal scrolling mechanism
US6538651B1 (en) * 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6816825B1 (en) * 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
JP2001060202A (ja) * 1999-08-23 2001-03-06 Fujitsu Ltd 文書閲覧システム及びそのシステムでの処理をコンピュータに行わせるためのプログラムを格納した記憶媒体
WO2001046798A2 (en) * 1999-12-20 2001-06-28 Headway Research Limited System and method for computer-aided graph-based dependency analysis
US7164422B1 (en) * 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
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
US7188091B2 (en) * 2001-03-21 2007-03-06 Resolutionebs, Inc. Rule processing system
US20040041838A1 (en) * 2002-09-04 2004-03-04 Adusumilli Venkata J.R.B. Method and system for graphing data
US7430747B2 (en) * 2002-12-04 2008-09-30 Microsoft Corporation Peer-to peer graphing interfaces and methods
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
US7444595B2 (en) * 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
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
US7761863B2 (en) * 2004-06-08 2010-07-20 Covia Labs, Inc. Method system and data structure for content renditioning adaptation and interoperability segmentation model
US7620947B2 (en) * 2005-03-11 2009-11-17 Autodesk, Inc. Enhanced directed graph representation for dependency systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050059046A1 (en) * 2003-06-18 2005-03-17 Applera Corporation Methods and systems for the analysis of biological sequence data
US20050034112A1 (en) * 2003-06-25 2005-02-10 Stanfill Craig W. Computer-aided parallelizing of computation graphs

Also Published As

Publication number Publication date
WO2007002658A9 (en) 2007-04-12
AU2006261760B2 (en) 2013-05-02
CA2611774A1 (en) 2007-01-04
US7716630B2 (en) 2010-05-11
KR20080020642A (ko) 2008-03-05
EP1899808A4 (en) 2013-01-16
WO2007002658A2 (en) 2007-01-04
CA2611774C (en) 2016-09-20
AU2006261760A1 (en) 2007-01-04
JP5235663B2 (ja) 2013-07-10
JP2008547134A (ja) 2008-12-25
CN101535955B (zh) 2019-05-17
US20070011668A1 (en) 2007-01-11
EP1899808A2 (en) 2008-03-19
CN101535955A (zh) 2009-09-16
WO2007002658A3 (en) 2009-02-26

Similar Documents

Publication Publication Date Title
KR101169296B1 (ko) 그래프 기반 계산을 위한 파라미터의 관리
KR101278078B1 (ko) 그래프 기반 계산을 위한 파라미터의 관리
CA2966541C (en) Impact analysis
JP6073838B2 (ja) 条件成分を有するパラメータ化図形
AU2013228010A1 (en) Managing metadata for graph-based computations

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150707

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160712

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170712

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180712

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190711

Year of fee payment: 8