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

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

Info

Publication number
KR101278078B1
KR101278078B1 KR1020077030528A KR20077030528A KR101278078B1 KR 101278078 B1 KR101278078 B1 KR 101278078B1 KR 1020077030528 A KR1020077030528 A KR 1020077030528A KR 20077030528 A KR20077030528 A KR 20077030528A KR 101278078 B1 KR101278078 B1 KR 101278078B1
Authority
KR
South Korea
Prior art keywords
component
metadata
graph
parameter
parameters
Prior art date
Application number
KR1020077030528A
Other languages
English (en)
Other versions
KR20080040641A (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 KR20080040641A publication Critical patent/KR20080040641A/ko
Application granted granted Critical
Publication of KR101278078B1 publication Critical patent/KR101278078B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24526Internal representations for queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

그래프 기반의 계산(graph-based computation)과 관련된 메타데이터를 결정하는 방법은, 그래프의 제1 부분(2310)과 관련된 메타데이터를 함수적으로 변환하여, 그래프의 제2 부분(2316)과 관련된 변환된 메타데이터를 생성하는 단계, 그래프의 제2 부분과 연결되는 그래프의 제3 부분(2317)을 결정하는 단계, 및 변환된 메타데이터를 그래프의 제2 부분에서 그래프의 제3 부분으로 전파하는 단계를 포함한다.
롤업 성분, 파라미터, 독립변수, 링크, 웹 인터페이스, 그래픽 대화창

Description

그래프 기반 계산을 위한 파라미터의 관리{MANAGING METADATA 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)과 관련된 메다데이터를 결정하는 방법, 해당 소프트웨어 및 시스템을 특징으로 한다. 본 발명의 메타데이터 결정 방법은, 그래프의 제1 부분과 관련된 메타데이터를 함수적으로 변환하여, 상기 그래프의 제2 부분과 관련된 변환된 메타데이터를 생성하는 단계, 상기 그래프의 제2 부분과 연결되는 상기 그래프의 제3 부분을 결정하는 단계, 및 변환된 상기 메타데이터를 상기 그래프의 제2 부분에서 상기 그래프의 제3 부분으로 전파하는 단계를 포함한다.
이러한 양태는 다음의 특징 중 하나 이상을 포함할 수 있다.
상기 그래프의 제3 부분은 데이터 흐름에 의해 상기 그래프의 제2 부분과 연결된다.
상기 데이터 흐름은 2개의 서로 연결된 그래프 요소의 포트들 간의 데이터 흐름을 포함한다.
상기 데이터 흐름은 그래프 요소의 2개의 흐름 간의 내부 데이터 흐름을 포함한다.
상기 그래프의 제3 부분은, 상기 그래프의 제2 부분과 관련된 상기 메타데이터가 또한 상기 그래프의 제3 부분과도 관련되어야 한다는 것을 나타내는 링크에 의해 상기 그래프의 제2 부분과 연결된다.
상기 그래프의 제1 부분은 제1 그래프 요소의 제1 포트를 포함하며, 상기 그래프의 제2 부분은 상기 제1 그래프 요소의 제2 포트를 포함한다.
상기 함수적인 변환은 상기 제1 포트와 관련된 상기 메타데이터에 대한 하나 이상의 레퍼런스를 포함하는 메타데이터 정의를 포함한다.
상기 메타데이터 정의는 상기 제2 포트에 대한 메타데이터를 참조된 메타데이터의 함수로서 정의한다.
상기 제1 포트는 입력 포트이고, 상기 제2 포트는 출력 포트이다.
함수적으로 변환되는 상기 메타데이터는 사용자에 의해 제공된다.
함수적으로 변환되는 상기 메타데이터는, 상기 그래프의 제4 부분으로부터 전파된다.
상기 메타데이터 결정 방법은 변환된 상기 메타데이터를 상기 그래프의 연결 가능성(connectivity)의 변경에 응답하여 전파하는 단계를 더 포함한다.
상기 메타데이터 결정 방법은 변환된 상기 메타데이터를 사용자 동작에 응답하여 전파하는 단계를 더 포함한다.
상기 메타데이터 결정 방법은, 사용자로부터의 요청을 수신하는 단계, 및 상기 요청에 응답하여 그래프 요소와 관련된 상기 메타데이터를 사용자에게 디스플레이하는 단계를 더 포함한다.
상기 사용자로부터의 요청은, 어느 메타데이터가 디스플레이될지에 대하여 그래프 요소를 선택하는 사용자로부터의 입력을 포함한다.
상기 사용자로부터의 입력은, 온-스크린 포인터(on-screen pointer)를, 선택된 그래프 요소의 그래픽 표현 가까이에 소정의 시간 동안 위치시키는 것을 포함한다.
디스플레이된 상기 메타데이터는 또 다른 그래프 요소로부터 전파된 메타데이터를 포함한다.
디스플레이된 상기 메타데이터는, 그래프가 실행되기 전에 디스플레이된다.
런타임 파라미터를 통한 그래프의 인터페이스가 정규화(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 112007093806119-pct00001
키워드 파라미터는 옵션이며, 키워드 파라미터가 제공되지 않고 디폴트 값 필드(308)가 비어 있다면, 런타임 에러가 발생될 것이며, 대응하는 반출된 파라미터가 요구된다.
ㆍ Fixed - 파라미터에 대한 런타임 값이 항상 디폴트 값이다. 이것은 2개 이상의 런타임 파라미터 사이에서 일정한 값을 공유하는데 유용하다.
ㆍ PL - 런타임 파라미터의 디폴트 값은, 다른 파라미터로부터 런타임 파라미터의 값을 구하거나 또는 사용자에게 추가 입력을 프롬프트하기 위해 그래프 실행 시에 해석될 PL 표현식을 포함한다. 본 발명의 임의의 특정 실시예와 함께 사용하기 위해 선택되는 성분 디스크립션 랭귀지로는, 대중적으로 이용 가능한 객체 지향 스크립팅 랭귀지 "Python" 등의 어떠한 적합한 스크립팅 랭귀지도 가능하다. 이러한 스크립트는 프로그램 제어 하에 메타데이터(타입 및 트랜스폼)를 구축하며, 사용자 입력, 외부에서 프로그램적으로 제공된 입력, 및 기타 런타임 파라미터에 대해, 조건부 테스트, 비교, 데이터 변환, 대수 및 논리 연산, 스트링 및 리스트 조작, 및 기타 기능을 수행하여, 임의의 런타임 파라미터에 대해 최종 값을 발생할 수 있다.
예시된 실시예에서, 런타임 파라미터 그리드(300)에 대해 직접 생성될 수 있는 런타임 파라미터를 참조하기 위한 유용한 관행은, 단순히 달러 기호 "$"가 선행되는 파라미터 명칭을 입력하는 것이다. 예컨대,
Figure 112007093806119-pct00002
Figure 112007093806119-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 112007093806119-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 112007093806119-pct00005
이 섹션의 나머지 부분에서는 다양한 "promt_kinds" 및 이들의 대응하는 "options"을 나열하고 있으며, 이들 각각이 웹 인터페이스(108)에 의해 생성된 웹 페이지에서 어떻게 나타나는지를 설명한다.
Figure 112007093806119-pct00006
: 통상의 싱글-라인 텍스트 박스 size 문자 폭을 나타냄(size가 제공되지 않으면, 텍스트 박스에 대한 브라우저의 디폴트 크기를 디폴트로 한다).
Figure 112007093806119-pct00007
: 통상의 "choose one" 프롬프트를, "choice-list"의 각각의 요소에 대해 버튼이 하나씩 지정되는, 라디오 버튼 세트(a set of radio button)의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다.
: "radio"와 유사하지만, 사용자가 "choice-list"에 있지 않은 "write-in" 값을 선택할 수 있도록 텍스트 박스 다음에 추가 버튼을 나타냄.
Figure 112007093806119-pct00009
: 통상의 "choose zero or more" 프롬프트를, "choice-list"의 각각의 요소에 대해 버튼이 하나씩 지정되는 체크박스의 세트의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다.
Figure 112007093806119-pct00010
: 통상의 "choose one" 프롬프트를, "choice-list"의 요소에 대한 드롭다운 리스트의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다. "size"가 제공되면, 그 다수의 선택이 동시에 보여질 수 있으며, 그렇지 않은 경우에는 하나만이 보여질 것이다.
Figure 112007093806119-pct00011
: 통상의 "choose zero or more" 프롬프트를, "choice-list"의 요소에 대한 드롭다운 리스트의 형태로 나타냄. "description-list"가 제공되면, 각각의 선택은 대응하는 디스크립션으로 라벨링되며, 그렇지 않은 경우에는 선택이 "choice-list"로부터의 대응하는 항목의 스트링 형태로 라벨링된다. "size"가 제공되면, 그 다수의 선택이 동 시에 보여질 수 있으며, 그렇지 않은 경우에는 브라우저의 디폴트 개수의 항목이 보여진다.
Figure 112007093806119-pct00012
: 주어진 "type-obj"로부터의 필드로 구성된 키(또는 콜레이터(collator)로서 알려진)에 대한 프롬프트를 나타냄. 키는 "size" 파트만큼의 다수 개를 가질 수 있으며, "type-obj" 내의 필드의 개수를 디폴트로 한다. 도 5는 key 프롬프트에 의해 생성된 그래프 대화창(500)의 일실시예에 대한 다이아그램이다. 이하는, 3-엔트리 "key" 프롬프트에 대한 스크립트 텍스트의 예이며, 여기서 파일 "/datasets/fixed"는 드롭다운 박스(502) 내에 나타내진 이용 가능한 키의 컨텐츠를 정의한다:
Figure 112007093806119-pct00013
예시된 실시예에서, 정상적인 콜레이션 순서는 올림차순이지만, 사용자는 관련된 체크박스(504)를 체크함으로써 키에 대한 내림차순의 콜레이션 순서를 선택할 수 있다.
Figure 112007093806119-pct00014
: 주어진 "type-obj"의 각각의 필드에 대한 조건으로 구성되는 필터 표현식에 대한 프롬프트를 나타냄. "blank ok" 모디파이어는 필터에 대한 영향을 갖지 못하며, 블랭크 필터는 "True" 표현식을 산출한다. 도 6은 "filter" 프롬프트에 의해 생성된 그래프 대화창(600)의 일실시예에 대한 다이아그램이다. 각각의 표현식 텍스트 편집 박스(604)와 관련된 이용 가능한 필드 명칭(602)이 "type-obj"에 의해 정의된다. 비교값이 텍스트 편집 박스(604) 내에 입 력되며, 비교 연산자(예컨대, =, >, ≤ 등)가 대응하는 드롭다운 리스트 컨트롤(606)로부터 선택된다.
Figure 112007093806119-pct00015
: "filter" 프롬프트와 유사하지만, 주어진 "type-obj"의 각각의 필드에 대한 조건으로 구성된 필터 표현식에 대한 프롬프트를 나타내며, 여기서 각각의 라인 상의 필드 명칭은 드롭다운 리스트로부터 선택 가능하다. 이것은 다수의 조건에 대해 동일한 필드를 사용하는 것을 허용한다(예컨대,
Figure 112007093806119-pct00016
Figure 112007093806119-pct00017
).
Figure 112007093806119-pct00018
: 소정의 키에 의해 롤업되는 주어진 "type-obj"의 필드에 기초한 롤업 계산에 대한 프롬프트를 나타냄. 롤업은 "size" 규칙만큼의 다수 개를 가질 수 있으며, "type-obj" 내의 필드의 개수를 디폴트로 한다. "blank ok" 모디파이어가 롤업에 대한 영향을 갖지 않으며, 블랭크 롤업은 각각의 그룹에 대한 키 값을 제공하는 패키지를 산출한다. 도 7은 "rollup" 프롬프트에 의해 생성된 그래프 대화창(700)의 일실시예의 다이아그램이다. 예시된 실시예에서, 드롭다운 박스(902)의 열은 이용 가능한 롤업 계산 함수(예컨대, sum, minimum, maximum)를 정의한다. 각각의 계산과 관련된 이용 가능한 필드 명칭(704)은 "type-obj"에 의해 정의된다. 각각의 롤업 규칙은, 요구된 표현식의 사용자 정의를 위한 관련된 텍스트 편집 박스(706)와, 계산 시에 소스값이 참여하게 되는 기준을 정의(부울리안 표현식을 통해)하기 위한 "위치(where)" 텍스트 편집 박스(708)와, 계산 결과를 수신할 필드를 지정하기 위한 출력 필드 텍스트 편집 박 스(710)를 갖는다. 명료하게 구해질 수 있는 곳의 경우에는, 출력 필드의 명칭이 특정될 필요가 없다.
Figure 112007093806119-pct00019
: 주언진 "type-obj"의 필드에 기초하여 리포맷 계산에 대한 프롬프트를 나타냄. 리포맷은 규칙만큼의 다수 개를 가질 수 있으며, "type-obj" 내의 필드의 개수를 디폴트로 한다. 도 8은 "reformat" 프롬프트에 의해 생성된 그래프 대화창(800)의 일실시예의 다이아그램이다. 예시된 실시예에서, "reformat" 프롬프트는 입력 필드를 유사한 명칭의 출력 필드에 단순히 카피하기 위한 섹션(802)을 포함한다(체크박스 컨트롤을 개별적으로, 또는 "Select All" 또는 "Select None" 버튼을 이용하여 일괄적으로 선택/비선택함으로써 이루어짐). 프롬프트의 제2 섹션은 리포맷팅 표현의 정의(예컨대, total = revenue_1 - revenue_2)를 허용하는 텍스트 편집 박스(804)의 열을 포함한다. 각각의 규칙은 리포맷된 결과를 수신할 필드를 지정하기 위한 관련된 출력 필드 텍스트 편집 박스(806)를 갖는다.
Figure 112007093806119-pct00020
: 출력 데이터세트 스페시피케이션에 대한 프롬프트를 나타냄. 디스플레이된 컨트롤은, 이용 가능한 포맷 옵션을 나타내기 위한 드롭다운 컨트롤과, 출력 데이터세트의 특정 인스턴스(specific instance)의 명칭을 입력하기 위한 텍스트 편집 박스를 포함한다. "blank ok" 모디파이어는 출력 데이터세트 스페시피케이션에 대한 영향을 갖지 못한다.
Figure 112007093806119-pct00021
: 파일 경로에 대한 프롬프트를 나타냄. 프롬프트는 텍스트 박스이어야 하지만, 그 다음에는 파일 경로를 브라우징하기 위한 팝업 윈도우가 나타날 "Browse" 버튼을 갖는다. 텍스트 박스가 블랭크가 아니면, 그 텍스트 박스는 브라우징 동작을 위한 개시 지점으로서 사용될 것이며, 텍스트 박스가 블랭크라면, "starting-point" 독립변수가 사용된다.
Figure 112007093806119-pct00022
: 보관 장치 경로에 대한 프롬프트를 나타냄. 이 프롬프트는 텍스트 박스이어야 하지만, 그 다음에는 파일 경로를 브라우징하기 위한 팝업 윈도우가 나타날 "Browse" 버튼을 갖는다. 텍스트 박스가 블랭크가 아니면, 그 텍스트 박스는 브라우징 동작을 위한 개시 지점으로서 사용될 것이며, 텍스트 박스가 블랭크라면, "starting-point" 독립변수가 사용된다.
Figure 112007093806119-pct00023
: "radioplus"와 마찬가지이지만, "write-in" 슬롯 내의 fpath-스타일 박스-플러스-브라우즈-버튼을 나타냄.
Figure 112007093806119-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 112007093806119-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 112007093806119-pct00026
Component Ⅱ는 다음의 파라미터를 포함한다:
Figure 112007093806119-pct00027
파라미터가 나열되는 순서는 사용자에게 값을 프롬프트하는 바람직한 순서로 정해진다. 파라미터의 초기 리스트는 각각의 성분에 대한 이러한 "초기 오더링"을 유지한다. 초기 오더링에서의 그 파라미터의 위치를 나타내기 위해 각각의 파라미터에 "서수(ordinal)"가 할당된다. 아래의 테이블은 이 초기 오더링 내의 파라미터를 나열한다.
Figure 112007093806119-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 112007093806119-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 112007093806119-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 112007093806119-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 112007093806119-pct00032
여러 처리 스테이지에서의 param _ listresult _ list 내의 파라미터의 다음의 나열은 전술한 제1의 "수정된 토폴로지컬 분류" 프로세스에 대응한다. param_list는 각각의 스테이지에서의 분류 기준 by _n_ deps _ and _ order에 따라 분류되어 나타내어져 있다.
Figure 112007093806119-pct00033
여러 처리 스테이지에서의 candidatesresult _ list 내의 파라미터의 다음의 나열은 전술한 제2의 "수정된 토폴로지컬 분류" 프로세스에 대응한다. 파라미터가 각각의 스테이지에서 동일한 순서로 유지하고 있기 때문에 스테이지들 간에 candidates를 분류할 필요는 없다.
Figure 112007093806119-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 112007093806119-pct00035
일반적인 컴퓨터 구현예( General Computer Implementation )
본 발명은 하드웨어, 소프트웨어 또는 이들의 조합(예컨대, 프로그래머블 로직 어레이)으로 구현될 수도 있다. 반대의 경우로 특정되지 않는다면, 본 발명의 일부로서 포함된 알고리즘은 어떠한 특정 컴퓨터 또는 기타 장치에 고유한 것으로 되지 않는다. 구체적으로, 다양한 범용 머신이 본 명세서 내의 교시에 따라 작성된 프로그램과 함께 사용될 수도 있고, 또는 요구된 방법 단계를 수행하기 위해 더욱 특수화된 장치를 구성하는 것이 보다 편리할 수도 있다. 그러나, 바람직하게는, 본 발명은, 각각 하나 이상의 프로세서, 하나 이상의 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 장치를 포함), 하나 이상의 입력 장치 또는 포트, 및 하나 이상의 출력 장치 또는 포트를 포함하는 하나 이상의 프로그래밍 가능한 컴퓨터 시스템 상에서 실행하는 하나 이상의 컴퓨터 프로그램으로 구현된다. 프로그램 코드는 그 안에 기술된 기능을 수행하기 위해 프로세서 상에서 실행된다.
각각의 이러한 프로그램은 컴퓨터 시스템과의 통신을 위해 임의의 요구된 컴퓨터 랭귀지(머신, 어셈블리, 또는 하이 레벨의 프로시져, 로직, 또는 객체 지향 프로그래밍 랭귀지)로 구현될 수도 있다. 어떠한 경우, 랭귀지는 컴파일되거나 인터프리트된 랭귀지일 수도 있다.
각각의 이러한 컴퓨터 프로그램은, 범용 또는 특수 용도의 프로그래밍 가능한 컴퓨터에 의해 판독 가능한 기억 매체 또는 장치(예컨대, 솔리드 스테이트 메모리 또는 매체, 또는 자기 또는 광학 매체) 상에 저장되거나 다운로드되어, 그 프로그램 내에 기술되어 있는 프로시져를 수행하기 위해 저장 매체 또는 장치가 컴퓨터 시스템에 의해 판독될 때에 컴퓨터를 구성 및 작동하는 것이 바람직하다. 본 발명의 시스템은, 컴퓨터 프로그램으로 구성된 컴퓨터 판독 가능한 기억 매체로서 실시되도록 고려되어, 이와 같이 구성된 기억 매체가 컴퓨터 시스템을 특정의 사전에 정해진 방식으로 작동하도록 함으로써 그 프로그램 내에 기술된 기능을 수행하도록 할 수도 있다.
본 발명은 다수의 실시예를 참조하여 설명되었지만, 본 발명의 기술 사상에서 벗어남이 없이 다양한 수정이 이루어질 수 있다. 예컨대, 전술한 다수의 기능 단계는 전체적인 처리에 실질적으로 영향을 주지않고서도 다른 순서로 실행될 수도 있다. 예컨대, 도 4 내의 단계 402 및 단계 412는 반대 순서로 수행될 수도 있다. 따라서, 다른 실시예 또한 이하의 청구범위에 한정된 바와 같은 본 발명의 사상 내에 포함되는 것이다.

Claims (20)

  1. 그래프 기반의 계산(graph-based computation)과 관련된 메타데이터를 결정하는 방법에 있어서,
    제1 성분 및 제2 성분을 적어도 포함하는 그래프 내의 성분의 부분 오더링(partial ordering)을 생성하는 단계 - 여기서, 상기 그래프의 상기 성분의 포트에 대한 메타데이터는 상기 부분 오더링에 따른 시퀀스(sequence)에서 결정됨 -;
    상기 제1 성분의 제1 부분과 관련된 메타데이터를 변환하여, 상기 제1 성분의 제2 부분과 관련된 변환된 메타데이터를 생성하는 단계;
    변환된 상기 메타데이터를 상기 제1 성분의 제2 부분에서 상기 제2 성분의 제3 부분으로 전파하는 단계; 및
    변환된 상기 메타데이터를 상기 그래프의 상기 제2 성분의 제3 부분으로 전파한 후, 상기 제2 성분을 상기 부분 오더링의 끝으로 이동시키는 단계
    를 포함하는,
    메타데이터 결정 방법.
  2. 제1항에 있어서,
    상기 제2 성분의 제3 부분은, 상기 제2 부분과 상기 제3 부분 간의 데이터 흐름 링크에 의해 상기 제1 성분의 제2 부분과 연결되는, 메타데이터 결정 방법.
  3. 제2항에 있어서,
    상기 데이터 흐름은 상기 그래프의 2개의 서로 연결된 성분의 포트들 간의 데이터 흐름을 포함하는, 메타데이터 결정 방법.
  4. 제2항에 있어서,
    상기 데이터 흐름은 상기 그래프의 성분의 2개의 포트들 간의 내부 데이터 흐름을 포함하는, 메타데이터 결정 방법.
  5. 제1항에 있어서,
    상기 제2 성분의 제3 부분은, 상기 제2 부분과 관련된 상기 메타데이터가 또한 상기 제3 부분과도 관련되어야 한다는 것을 나타내는 링크에 의해 상기 제1 성분의 제2 부분과 연결되는, 메타데이터 결정 방법.
  6. 제1항에 있어서,
    상기 제1 부분은 상기 제1 성분의 제1 포트를 포함하며,
    상기 제2 부분은 상기 제1 성분의 제2 포트를 포함하는,
    메타데이터 결정 방법.
  7. 제6항에 있어서,
    상기 변환은 상기 제1 포트와 관련된 상기 메타데이터에 대한 하나 이상의 레퍼런스를 포함하는 메타데이터 정의를 포함하는, 메타데이터 결정 방법.
  8. 제7항에 있어서,
    상기 메타데이터 정의는 상기 제2 포트에 대한 메타데이터를 참조된 메타데 이터의 함수로서 정의하는, 메타데이터 결정 방법.
  9. 제6항에 있어서,
    상기 제1 포트는 입력 포트이고, 상기 제2 포트는 출력 포트인, 메타데이터 결정 방법.
  10. 제1항에 있어서,
    변환되는 상기 메타데이터는 사용자에 의해 제공되는, 메타데이터 결정 방법.
  11. 제1항에 있어서,
    변환되는 상기 메타데이터는, 상기 그래프의 제4 부분으로부터 상기 제1 성분의 제1 부분으로 전파되는, 메타데이터 결정 방법.
  12. 제1항에 있어서,
    변환된 상기 메타데이터를 상기 그래프의 연결성(connectivity)의 변경에 응답하여 전파하는 단계를 더 포함하는, 메타데이터 결정 방법.
  13. 제1항에 있어서,
    변환된 상기 메타데이터를 사용자 동작에 응답하여 전파하는 단계를 더 포함 하는, 메타데이터 결정 방법.
  14. 제1항에 있어서,
    사용자로부터의 요청을 수신하는 단계; 및
    상기 요청에 응답하여 그래프 요소와 관련된 상기 메타데이터를 사용자에게 디스플레이하는 단계
    를 더 포함하는, 메타데이터 결정 방법.
  15. 제14항에 있어서,
    상기 사용자로부터의 요청은, 어느 메타데이터가 디스플레이될지에 대하여 그래프 요소를 선택하는 사용자로부터의 입력을 포함하는, 메타데이터 결정 방법.
  16. 제15항에 있어서,
    상기 사용자로부터의 입력은, 온-스크린 포인터(on-screen pointer)를, 선택된 그래프 요소의 그래픽 표현 가까이에 소정의 시간 동안 위치시키는 것을 포함하는, 메타데이터 결정 방법.
  17. 제14항에 있어서,
    디스플레이된 상기 메타데이터는 또 다른 그래프 요소로부터 전파된 메타데이터를 포함하는, 메타데이터 결정 방법.
  18. 제14항에 있어서,
    디스플레이된 상기 메타데이터는, 그래프가 실행되기 전에 디스플레이되는, 메타데이터 결정 방법.
  19. 그래프 기반의 계산과 관련된 메타데이터를 결정하기 위한 소프트웨어를 저장하는 컴퓨터에 의해 판독 가능한 매체로서,
    상기 소프트웨어는 컴퓨터 시스템으로 하여금,
    제1 성분 및 제2 성분을 적어도 포함하는 그래프 내의 성분의 부분 오더링(partial ordering)을 생성하고 - 여기서, 상기 그래프의 상기 성분의 포트에 대한 메타데이터는 상기 부분 오더링에 따른 시퀀스(sequence)에서 결정됨 -;
    상기 제1 성분의 제1 부분과 관련된 메타데이터를 변환하여, 상기 제1 성분의 제2 부분과 관련된 변환된 메타데이터를 생성하고;
    변환된 상기 메타데이터를 상기 제1 성분의 제2 부분에서 상기 제2 성분의 제3 부분으로 전파하고;
    변환된 상기 메타데이터를 상기 그래프의 상기 제2 성분의 제3 부분으로 전파한 후, 상기 제2 성분을 상기 부분 오더링의 끝으로 이동시키도록 하는
    명령어를 포함하는,
    컴퓨터에 의해 판독 가능한 매체
  20. 그래프 기반의 계산과 관련된 메타데이터를 결정하는 시스템에 있어서,
    제1 성분 및 제2 성분을 적어도 포함하는 그래프 내의 성분의 부분 오더링(partial ordering)을 생성하는 수단 - 여기서, 상기 그래프의 상기 성분의 포트에 대한 메타데이터는 상기 부분 오더링에 따른 시퀀스(sequence)에서 결정됨 -;
    상기 제1 성분의 제1 부분과 관련된 메타데이터를 변환하여, 상기 제1 성분의 제2 부분과 관련된 변환된 메타데이터를 생성하는 수단;
    변환된 상기 메타데이터를 상기 제1 성분의 제2 부분에서 상기 제2 성분의 제3 부분으로 전파하는 수단; 및
    변환된 상기 메타데이터를 상기 그래프의 상기 제2 성분의 제3 부분으로 전파한 후, 상기 제2 성분을 상기 부분 오더링의 끝으로 이동시키는 수단
    을 포함하는,
    메타데이터 결정 시스템.
KR1020077030528A 2005-06-27 2006-06-27 그래프 기반 계산을 위한 파라미터의 관리 KR101278078B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/167,902 2005-06-27
US11/167,902 US7877350B2 (en) 2005-06-27 2005-06-27 Managing metadata for graph-based computations
PCT/US2006/024933 WO2007002647A2 (en) 2005-06-27 2006-06-27 Managing metadata for graph-based computations

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
KR20080040641A KR20080040641A (ko) 2008-05-08
KR101278078B1 true KR101278078B1 (ko) 2013-06-25

Family

ID=37568863

Family Applications (2)

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

Family Applications Before (1)

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

Country Status (8)

Country Link
US (3) US7877350B2 (ko)
EP (1) EP1899873A4 (ko)
JP (1) JP5297802B2 (ko)
KR (2) KR101372971B1 (ko)
CN (1) CN101208695B (ko)
AU (1) AU2006261749B2 (ko)
CA (1) CA2610989C (ko)
WO (1) WO2007002647A2 (ko)

Families Citing this family (116)

* 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
CN103729330B (zh) 2006-08-10 2017-04-19 起元科技有限公司 在基于图的计算中分配服务
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8706667B2 (en) * 2007-07-26 2014-04-22 Ab Initio Technology Llc Transactional graph-based computation with error handling
KR101552188B1 (ko) * 2007-09-07 2015-09-10 삼성전자 주식회사 콤포넌트 모델 및 아키텍쳐 설계를 위한 내제된 가변성규칙을 제공하는 방법 및 장치
WO2010002919A1 (en) * 2008-06-30 2010-01-07 Ab Initio Software Llc Data logging in graph-based computations
CN102239458B (zh) * 2008-12-02 2015-07-15 起元技术有限责任公司 可视化数据元素之间的关系
AU2009322602B2 (en) * 2008-12-02 2015-06-25 Ab Initio Technology Llc Mapping instances of a dataset within a data management system
CA2749538A1 (en) * 2009-01-30 2010-08-05 Ab Initio Technology Llc Processing data using vector fields
CN102317911B (zh) 2009-02-13 2016-04-06 起元技术有限责任公司 管理任务执行
KR101660348B1 (ko) * 2009-09-16 2016-09-27 아브 이니티오 테크놀로지 엘엘시 데이터세트 요소의 매핑
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
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
US8875145B2 (en) 2010-06-15 2014-10-28 Ab Initio Technology Llc Dynamically loading graph-based computations
US9396283B2 (en) 2010-10-22 2016-07-19 Daniel Paul Miranker System for accessing a relational database using semantic queries
US8510288B2 (en) * 2010-10-22 2013-08-13 Microsoft Corporation Applying analytic patterns to data
JP5902185B2 (ja) * 2010-10-25 2016-04-13 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理
US9418095B2 (en) 2011-01-14 2016-08-16 Ab Initio Technology Llc Managing changes to collections of data
US9003084B2 (en) * 2011-02-18 2015-04-07 Ab Initio Technology Llc Sorting
US9116955B2 (en) * 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9038033B1 (en) * 2011-12-09 2015-05-19 Sencha, Inc. Techniques and mechanisms for web application minification
US20150082314A1 (en) * 2012-04-18 2015-03-19 Nec Corporation Task placement device, task placement method and computer program
EP2877943B1 (en) * 2012-07-24 2021-03-03 AB Initio Technology LLC Mapping entities in data models
US9032362B2 (en) * 2012-09-10 2015-05-12 Sap Se System and method for generating high performance calculators for calculation graphs
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
CN110096494B (zh) 2012-10-22 2024-04-26 起元科技有限公司 使用源跟踪剖析数据
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
US9116603B2 (en) 2012-12-26 2015-08-25 Ab Initio Technology Llc Managing interactions with data having membership in multiple groupings
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
JP6526632B2 (ja) 2013-09-27 2019-06-05 アビニシオ テクノロジー エルエルシー データに適用される規則の評価
AU2014360308B2 (en) 2013-12-05 2018-11-29 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
WO2015085291A1 (en) 2013-12-06 2015-06-11 Ab Initio Technology Llc Source code translation
WO2015139016A1 (en) 2014-03-14 2015-09-17 Ab Initio Technology Llc Mapping attributes of keyed entities
US9626407B2 (en) 2014-06-17 2017-04-18 Google Inc. Real-time saved-query updates for a large graph
JP6636009B2 (ja) 2014-07-18 2020-01-29 アビニシオ テクノロジー エルエルシー 系統情報の管理
CN104182528B (zh) * 2014-08-27 2017-07-07 广西教育学院 基于偏序模式的教育信息化课程关联模式发现方法及***
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US10176234B2 (en) * 2014-11-05 2019-01-08 Ab Initio Technology Llc Impact analysis
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
CA2983080C (en) * 2015-02-11 2021-01-19 Ab Initio Technology Llc Filtering data lineage diagrams
US10417281B2 (en) * 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US20160246574A1 (en) * 2015-02-23 2016-08-25 Eddie Jakobitz Task sequencer
US10521209B2 (en) * 2015-05-12 2019-12-31 Phase Change Software Llc Machine-based normalization of machine instructions
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10127264B1 (en) 2015-09-17 2018-11-13 Ab Initio Technology Llc Techniques for automated data analysis
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
CN105843660B (zh) * 2016-03-21 2019-04-02 同济大学 一种编译器的代码优化调度方法
USD881907S1 (en) * 2016-04-22 2020-04-21 Aetna Inc. Display screen with a graphical user interface
US10936289B2 (en) 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10747774B2 (en) 2016-06-19 2020-08-18 Data.World, Inc. Interactive interfaces to present data arrangement overviews and summarized dataset attributes for collaborative datasets
US10691710B2 (en) 2016-06-19 2020-06-23 Data.World, Inc. Interactive interfaces as computerized tools to present summarization data of dataset attributes for collaborative datasets
US11675808B2 (en) 2016-06-19 2023-06-13 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US11468049B2 (en) 2016-06-19 2022-10-11 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US11068847B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to facilitate data project development via data access layering logic in a networked computing platform including collaborative datasets
US10353911B2 (en) 2016-06-19 2019-07-16 Data.World, Inc. Computerized tools to discover, form, and analyze dataset interrelations among a system of networked collaborative datasets
US10699027B2 (en) 2016-06-19 2020-06-30 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US11068475B2 (en) 2016-06-19 2021-07-20 Data.World, Inc. Computerized tools to develop and manage data-driven projects collaboratively via a networked computing platform and collaborative datasets
US11941140B2 (en) 2016-06-19 2024-03-26 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US10853376B2 (en) 2016-06-19 2020-12-01 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US11755602B2 (en) 2016-06-19 2023-09-12 Data.World, Inc. Correlating parallelized data from disparate data sources to aggregate graph data portions to predictively identify entity data
US11947554B2 (en) 2016-06-19 2024-04-02 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US11023104B2 (en) 2016-06-19 2021-06-01 data.world,Inc. Interactive interfaces as computerized tools to present summarization data of dataset attributes for collaborative datasets
US11016931B2 (en) 2016-06-19 2021-05-25 Data.World, Inc. Data ingestion to generate layered dataset interrelations to form a system of networked collaborative datasets
US10346429B2 (en) 2016-06-19 2019-07-09 Data.World, Inc. Management of collaborative datasets via distributed computer networks
US10645548B2 (en) 2016-06-19 2020-05-05 Data.World, Inc. Computerized tool implementation of layered data files to discover, form, or analyze dataset interrelations of networked collaborative datasets
US11036716B2 (en) 2016-06-19 2021-06-15 Data World, Inc. Layered data generation and data remediation to facilitate formation of interrelated data in a system of networked collaborative datasets
US11036697B2 (en) 2016-06-19 2021-06-15 Data.World, Inc. Transmuting data associations among data arrangements to facilitate data operations in a system of networked collaborative datasets
US11042560B2 (en) 2016-06-19 2021-06-22 data. world, Inc. Extended computerized query language syntax for analyzing multiple tabular data arrangements in data-driven collaborative projects
US10438013B2 (en) 2016-06-19 2019-10-08 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US11042556B2 (en) 2016-06-19 2021-06-22 Data.World, Inc. Localized link formation to perform implicitly federated queries using extended computerized query language syntax
US10824637B2 (en) 2017-03-09 2020-11-03 Data.World, Inc. Matching subsets of tabular data arrangements to subsets of graphical data arrangements at ingestion into data driven collaborative datasets
US10452677B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Dataset analysis and dataset attribute inferencing to form collaborative datasets
US11334625B2 (en) 2016-06-19 2022-05-17 Data.World, Inc. Loading collaborative datasets into data stores for queries via distributed computer networks
US10452975B2 (en) 2016-06-19 2019-10-22 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
US10515085B2 (en) 2016-06-19 2019-12-24 Data.World, Inc. Consolidator platform to implement collaborative datasets via distributed computer networks
US11042537B2 (en) 2016-06-19 2021-06-22 Data.World, Inc. Link-formative auxiliary queries applied at data ingestion to facilitate data operations in a system of networked collaborative datasets
US11086896B2 (en) 2016-06-19 2021-08-10 Data.World, Inc. Dynamic composite data dictionary to facilitate data operations via computerized tools configured to access collaborative datasets in a networked computing platform
US10984008B2 (en) 2016-06-19 2021-04-20 Data.World, Inc. Collaborative dataset consolidation via distributed computer networks
US11042548B2 (en) 2016-06-19 2021-06-22 Data World, Inc. Aggregation of ancillary data associated with source data in a system of networked collaborative datasets
US10324925B2 (en) 2016-06-19 2019-06-18 Data.World, Inc. Query generation for collaborative datasets
US10162354B2 (en) * 2016-07-21 2018-12-25 Baidu Usa Llc Controlling error corrected planning methods for operating autonomous vehicles
CN110023925A (zh) 2016-12-01 2019-07-16 起元技术有限责任公司 生成、访问和显示沿袭元数据
CN109982584B (zh) * 2017-01-11 2023-05-02 雀巢产品有限公司 具有包含乳清蛋白质胶束的乳清蛋白质和酪蛋白源的热灭菌高蛋白质勺舀型营养组合物
US12008050B2 (en) 2017-03-09 2024-06-11 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
US11238109B2 (en) 2017-03-09 2022-02-01 Data.World, Inc. Computerized tools configured to determine subsets of graph data arrangements for linking relevant data to enrich datasets associated with a data-driven collaborative dataset platform
US11068453B2 (en) 2017-03-09 2021-07-20 data.world, Inc Determining a degree of similarity of a subset of tabular data arrangements to subsets of graph data arrangements at ingestion into a data-driven collaborative dataset platform
US11113051B2 (en) * 2017-04-28 2021-09-07 Tenstorrent Inc. Processing core with metadata actuated conditional graph execution
EP3662384A4 (en) 2017-08-03 2021-05-05 Next Silicon Ltd RUN TIME OPTIMIZATION OF CONFIGURABLE HARDWARE
US10817344B2 (en) 2017-09-13 2020-10-27 Next Silicon Ltd Directed and interconnected grid dataflow architecture
GB201716304D0 (en) * 2017-10-05 2017-11-22 Palantir Technologies Inc Data analysis system and method
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
US11055074B2 (en) 2017-11-13 2021-07-06 Ab Initio Technology Llc Key-based logging for processing of structured data items with executable logic
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
US10922308B2 (en) 2018-03-20 2021-02-16 Data.World, Inc. Predictive determination of constraint data for application with linked data in graph-based datasets associated with a data-driven collaborative dataset platform
US11243960B2 (en) 2018-03-20 2022-02-08 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures
USD940732S1 (en) 2018-05-22 2022-01-11 Data.World, Inc. Display screen or portion thereof with a graphical user interface
US11947529B2 (en) 2018-05-22 2024-04-02 Data.World, Inc. Generating and analyzing a data model to identify relevant data catalog data derived from graph-based data arrangements to perform an action
USD920353S1 (en) 2018-05-22 2021-05-25 Data.World, Inc. Display screen or portion thereof with graphical user interface
USD940169S1 (en) 2018-05-22 2022-01-04 Data.World, Inc. Display screen or portion thereof with a graphical user interface
US11537990B2 (en) 2018-05-22 2022-12-27 Data.World, Inc. Computerized tools to collaboratively generate queries to access in-situ predictive data models in a networked computing platform
US11327991B2 (en) 2018-05-22 2022-05-10 Data.World, Inc. Auxiliary query commands to deploy predictive data models for queries in a networked computing platform
US11442988B2 (en) 2018-06-07 2022-09-13 Data.World, Inc. Method and system for editing and maintaining a graph schema
CN113168362A (zh) 2018-09-25 2021-07-23 起元技术有限责任公司 用于实施输出审核数据的可恢复性的专用审核端口
CN110968709B (zh) * 2018-09-30 2023-04-07 北京国双科技有限公司 数据传输方法及相关***
WO2020079681A1 (en) * 2018-10-15 2020-04-23 Netz Forecasts Ltd. Systems and methods for network stabilization prediction
US11175914B2 (en) * 2019-06-28 2021-11-16 Aras Corporation Calculation engine for performing calculations based on dependencies in a self-describing data system
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
US11269526B2 (en) 2020-04-23 2022-03-08 Next Silicon Ltd Interconnected memory grid with bypassable units
US20220091908A1 (en) * 2020-09-24 2022-03-24 UiPath, Inc. Filter instantiation for process graphs of rpa workflows
DE112022000886T5 (de) 2021-01-31 2023-12-21 Ab Initio Technology Llc Datenverarbeitungssystem mit manipulation logischer datensatzgruppen
US11947600B2 (en) 2021-11-30 2024-04-02 Data.World, Inc. Content addressable caching and federation in linked data projects in a data-driven collaborative dataset platform using disparate database architectures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004516529A (ja) 2000-07-28 2004-06-03 エービー イニティオ ソフトウェア コーポレーション 条件成分を有するパラメータ化図形
US20050086360A1 (en) * 2003-08-27 2005-04-21 Ascential Software Corporation Methods and systems for real time integration services

Family Cites Families (201)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3662343A (en) * 1970-07-29 1972-05-09 Docutel Corp Credit card automatic currency dispenser
US3662401A (en) * 1970-09-23 1972-05-09 Collins Radio Co Method of program execution
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4814979A (en) * 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
US5127104A (en) * 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JPS63231613A (ja) 1987-03-20 1988-09-27 Matsushita Giken Kk コマンド設定方法
JPH0526792Y2 (ko) 1987-07-14 1993-07-07
JPH01258122A (ja) * 1988-04-08 1989-10-16 Nec Corp データ形式変換方式
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
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 日本電信電話株式会社 知識ベース推論方法およびその装置
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
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
JP3672208B2 (ja) * 1996-07-02 2005-07-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層化トランザクション処理方法
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US5857204A (en) * 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US6016516A (en) * 1996-08-07 2000-01-18 Fuji Xerox Co. Ltd. Remote procedure processing device used by at least two linked computer systems
US6760903B1 (en) 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US5799266A (en) 1996-09-19 1998-08-25 Sun Microsystems, Inc. Automatic generation of test drivers
US5930794A (en) 1996-10-18 1999-07-27 Sagent Technologies, Inc. Database repository with deferred transactions
US6038558A (en) 1996-10-18 2000-03-14 Sagent Technology, Inc. Extensible database retrieval and viewing architecture
US6151531A (en) 1996-12-12 2000-11-21 Charles Frankel Et Al System and method for managing the alteration of garments
US5924095A (en) * 1997-02-05 1999-07-13 Oracle Corporation Processing distributed transactions in heterogeneous computing environments using two-phase commit
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5933640A (en) 1997-02-26 1999-08-03 Digital Equipment Corporation Method for analyzing and presenting test execution flows of programs
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
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
JPH1124904A (ja) * 1997-07-01 1999-01-29 Mitsubishi Electric Corp プログラム作成装置及びプログラム作成プログラムを記憶した記憶媒体
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
US6615258B1 (en) 1997-09-26 2003-09-02 Worldcom, Inc. Integrated customer interface for web based data 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
US6014670A (en) * 1997-11-07 2000-01-11 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6339775B1 (en) * 1997-11-07 2002-01-15 Informatica Corporation Apparatus and method for performing data transformations in data warehousing
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
JPH11184766A (ja) 1997-12-18 1999-07-09 Nippon Telegr & Teleph Corp <Ntt> ビジネスイベントサーバ
US6272650B1 (en) 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6437796B2 (en) 1998-02-17 2002-08-20 Sun Microsystems, Inc. Multiple processor visibility search system and method
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6256637B1 (en) * 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6480876B2 (en) * 1998-05-28 2002-11-12 Compaq Information Technologies Group, L.P. System for integrating task and data parallelism in dynamic applications
US6675189B2 (en) * 1998-05-28 2004-01-06 Hewlett-Packard Development Company, L.P. System for learning and applying integrated task and data parallel strategies in dynamic applications
US6314114B1 (en) 1998-06-23 2001-11-06 Oracle Corporation Distributed resource management
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
US6744472B1 (en) 1998-11-09 2004-06-01 Broadcom Corporation Graphics display system with video synchronization feature
US6449711B1 (en) 1999-02-04 2002-09-10 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs
JP2000244749A (ja) * 1999-02-24 2000-09-08 Sony Corp データ演算装置及び方法並びにデータ演算プログラムを供給するプログラム供給媒体
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
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
US7409679B2 (en) 1999-12-20 2008-08-05 Headway Research Limited System and method for computer-aided graph-based dependency analysis
US6848100B1 (en) * 2000-03-31 2005-01-25 Intel Corporation Hierarchical software path profiling
SI1181294T1 (en) * 2000-03-31 2004-08-31 Sanochemia Pharmazeutica Aktiengesellschaft Novel derivatives and analogues of galanthamin
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
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
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
US20030004773A1 (en) * 2001-03-15 2003-01-02 Objectsoft, Inc. Scheduling system with methods for polling to determine best date and time
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
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
EP1320217B1 (en) * 2001-12-14 2004-10-13 Hewlett-Packard Company, A Delaware Corporation Method of installing monitoring agents, system and computer program for monitoring objects in an IT network
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
US7707564B2 (en) * 2003-02-26 2010-04-27 Bea Systems, Inc. Systems and methods for creating network-based software services using source code annotations
US7417645B2 (en) 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7669129B2 (en) * 2003-04-04 2010-02-23 Avid Technology, Inc. Graphical user interface for providing editing of transform hierarchies within an effects tree
US7665025B2 (en) 2003-04-16 2010-02-16 The Mathworks, Inc. Signal navigation and label propagation in block diagrams
US20040225657A1 (en) 2003-05-07 2004-11-11 Panacea Corporation Web services method and system
US8265979B2 (en) 2003-06-17 2012-09-11 International Business Machines Corporation Automatic generation of process models
WO2004113557A2 (en) * 2003-06-18 2004-12-29 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
CA2891196C (en) * 2003-06-25 2018-03-20 Ab Initio Technology Llc Computer-aided parallelizing of computation graphs
US7185322B2 (en) * 2003-07-11 2007-02-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
US7444595B2 (en) * 2003-08-13 2008-10-28 National Instruments Corporation Graphical programming system and method for creating and managing a scene graph
US7174479B2 (en) 2003-09-10 2007-02-06 Microsoft Corporation Method and system for rollback-free failure recovery of multi-step procedures
CA2538568C (en) * 2003-09-15 2009-05-19 Ab Initio Software Corporation Data profiling
US20050102670A1 (en) * 2003-10-21 2005-05-12 Bretl Robert F. Shared object memory with object management for multiple virtual machines
US20050097515A1 (en) 2003-10-31 2005-05-05 Honeywell International, Inc. Data empowered laborsaving test architecture
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
US9094615B2 (en) * 2004-04-16 2015-07-28 Intheplay, Inc. Automatic event videoing, tracking and content generation
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
US20050289559A1 (en) 2004-06-08 2005-12-29 Daniel Illowsky Method and system for vertical layering between levels in a processing unit facilitating direct event-structures and event-queues level-to-level communication without translation
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
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
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 株式会社日立製作所 トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体
US7716630B2 (en) * 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US20070118839A1 (en) * 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
US7555619B2 (en) * 2005-12-07 2009-06-30 Microsoft Corporation Efficient per-object operations in software transactional memory
US8073671B2 (en) 2006-03-31 2011-12-06 Microsoft Corporation Dynamic software performance models
US7870556B2 (en) * 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
CN103729330B (zh) * 2006-08-10 2017-04-19 起元科技有限公司 在基于图的计算中分配服务
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
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
JP4073033B1 (ja) 2007-04-27 2008-04-09 透 降矢 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム
US8706667B2 (en) * 2007-07-26 2014-04-22 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
JP5453273B2 (ja) 2007-09-20 2014-03-26 アビニシオ テクノロジー エルエルシー グラフベース計算におけるデータフロー管理
US7886141B2 (en) 2007-10-27 2011-02-08 Asix Electronics Corporation Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems
US8775441B2 (en) * 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US20090193417A1 (en) * 2008-01-24 2009-07-30 Nec Laboratories America, Inc. Tractable dataflow analysis for concurrent programs via bounded languages
US8225288B2 (en) * 2008-01-29 2012-07-17 Intuit Inc. Model-based testing using branches, decisions, and options
US8797178B2 (en) 2008-03-10 2014-08-05 Microsoft Corporation Efficient stream sharing for multi-user sensor data collection
US20090235267A1 (en) 2008-03-13 2009-09-17 International Business Machines Corporation Consolidated display of resource performance trends
US9184874B2 (en) 2008-03-31 2015-11-10 Qualcomm Incorporated Storing log likelihood ratios in interleaved form to reduce hardware memory
WO2010002919A1 (en) 2008-06-30 2010-01-07 Ab Initio Software Llc Data logging in graph-based computations
US20100070955A1 (en) * 2008-07-08 2010-03-18 Nec Laboratories America Alias analysis for concurrent software programs
US8782613B2 (en) 2008-08-12 2014-07-15 Hewlett-Packard Development Company, L.P. Optimizing applications using source code patterns and performance analysis
US8286176B1 (en) 2008-09-29 2012-10-09 Amazon Technologies, Inc. Optimizing resource configurations
US20100169137A1 (en) * 2008-12-31 2010-07-01 Ebay Inc. Methods and systems to analyze data using a graph
US7979479B2 (en) * 2009-01-08 2011-07-12 International Business Machines Corporation Transaction-controlled graph processing and management
US8635694B2 (en) 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
CN102317911B (zh) 2009-02-13 2016-04-06 起元技术有限责任公司 管理任务执行
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
US8875145B2 (en) * 2010-06-15 2014-10-28 Ab Initio Technology Llc Dynamically loading graph-based computations
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
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
US8732669B2 (en) 2011-03-11 2014-05-20 Oracle International Corporation Efficient model checking technique for finding software defects
US9875094B2 (en) 2012-08-29 2018-01-23 International Business Machines Corporation Microcode upgrade in a storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004516529A (ja) 2000-07-28 2004-06-03 エービー イニティオ ソフトウェア コーポレーション 条件成分を有するパラメータ化図形
US20050086360A1 (en) * 2003-08-27 2005-04-21 Ascential Software Corporation Methods and systems for real time integration services

Also Published As

Publication number Publication date
EP1899873A2 (en) 2008-03-19
CN101208695A (zh) 2008-06-25
KR20130009859A (ko) 2013-01-23
US20130297562A1 (en) 2013-11-07
CA2610989C (en) 2015-06-16
AU2006261749A1 (en) 2007-01-04
US8484159B2 (en) 2013-07-09
JP5297802B2 (ja) 2013-09-25
KR101372971B1 (ko) 2014-03-13
CN101208695B (zh) 2013-04-24
US7877350B2 (en) 2011-01-25
EP1899873A4 (en) 2008-12-24
US9158797B2 (en) 2015-10-13
US20110093433A1 (en) 2011-04-21
AU2006261749B2 (en) 2013-06-13
WO2007002647A2 (en) 2007-01-04
US20060294150A1 (en) 2006-12-28
CA2610989A1 (en) 2007-01-04
WO2007002647A3 (en) 2007-05-03
JP2008544423A (ja) 2008-12-04
KR20080040641A (ko) 2008-05-08

Similar Documents

Publication Publication Date Title
KR101278078B1 (ko) 그래프 기반 계산을 위한 파라미터의 관리
KR101169296B1 (ko) 그래프 기반 계산을 위한 파라미터의 관리
AU2020210281B2 (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
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160608

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170612

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190611

Year of fee payment: 7