KR20150038220A - 데이터 모델에서의 엔티티 매핑 - Google Patents

데이터 모델에서의 엔티티 매핑 Download PDF

Info

Publication number
KR20150038220A
KR20150038220A KR20157004521A KR20157004521A KR20150038220A KR 20150038220 A KR20150038220 A KR 20150038220A KR 20157004521 A KR20157004521 A KR 20157004521A KR 20157004521 A KR20157004521 A KR 20157004521A KR 20150038220 A KR20150038220 A KR 20150038220A
Authority
KR
South Korea
Prior art keywords
entity
node
attribute
expression
data
Prior art date
Application number
KR20157004521A
Other languages
English (en)
Other versions
KR102031402B1 (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 KR20150038220A publication Critical patent/KR20150038220A/ko
Application granted granted Critical
Publication of KR102031402B1 publication Critical patent/KR102031402B1/ko

Links

Images

Classifications

    • 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/25Integrating or interfacing systems involving database management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

소스 엔티티들(304-306)의 속성들 측면에서 목적지 엔티티(308)의 속성들을 명시하는 매핑 정보가 수신된다(402). 적어도 일부 소스 엔티티는 하나 이상의 데이터 저장 시스템들에서 각각의 레코드 세트에 대응한다(104,112). 상기 매핑 정보는 목적지 엔티티 속성들에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하도록 처리된다(120). 노드 컬렉션(600)들이 생성되고(404), 각각은 명시된 속성과 연관된 제1 관계 표현식을 나타내는 제1노드(602)를 포함한다. 적어도 일부 컬렉션들은 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식들을 나타내는 하나 이상의 다른 노드들(604-608)에 대한 링크를 포함하는 방향성 비순환 그래프를 형성한다. 적어도 두 개의 상기 컬렉션들은 병합되는 노드들의 관계 표현식들의 비교에 기초하여 제3 컬렉션을 형성하도록 서로 병합된다(406).

Description

데이터 모델에서의 엔티티 매핑{Mapping entities in data models}
본 발명은 데이터 모델에서 엔티티들을 매핑하는 방법, 매체 및 시스템에 관한 것이다.
관련출원의 상호 참조
본 출원은 2012년 7월 24일 출원된 미국 출원 번호 61/675,053 에 대해 우선권을 주장하며, 상기 문헌은 본원에 참조로 인용된다.
본 기술은 데이터 모델에서 엔티티들을 매핑하는 것에 관련된다.
정보 시스템에서, 데이터 모델들은 예를 들어, 데이터베이스에서 처리되거나 저장되는 데이터 요구사항들, 데이터 타입들 및 데이터 계산들을 기술하기 위해 사용된다. 데이터 모델들은 하나 이상의 스키마들에 의해 정의되는 엔티티들과 상기 엔티티들간의 관계들을 포함한다. 일반적으로, 엔티티들은 독립적 존재가 가능하거나 고유하게 확인되는 정보 도메인에서 아이템들을 추출한 것이다. 관계들은 둘 이상의 엔티티들이 서로 관련될 수 있는 방법을 포착한다. 예를 들어, 관계들은 동사인 것으로 생각될 수 있는 반면, 엔티티들은 명사로 생각될 수 있다. 스키마는 그들 중 엔티티들과 관계들의 특정 컬렉션을 나타낸다.
데이터 모델들과 관련된 데이터를 포함하는 복잡한 계산들은 조인(join) 또는 집계(aggregation)(또는 롤업(rollup))연산들 같은 다양한 데이터베이스 연산들을 사용하여 수행될 수 있다. 이러한 계산들은 그래프 정점들과 연관된 계산 컴포넌트들 및 그래프 링크들(아크, 에지)에 상응하는 상기 컴포넌트들 간의 데이터 흐름과 함께, 방향성 그래프를 통한 데이터 흐름으로 표현될 수 있다. 이러한 그래프 기반 계산들을 구현하기 위한 시스템은 미국 특허 5,966,072, 그래프로 표현된 계산들을 실행하는 방법에 기술되어 있다.
본 발명은 자동적으로 문제 기술(problem statement)을 예를 들어, 생성된 그래프들 또는 표현식들의 일부인 조인(joins), 롤업(rollups) 및 다른 데이터 변환 세트로, 분해하기 위한 시스템들과 방법들을 제공한다.
일 측면에서, 일반적으로, 적어도 하나의 저장 시스템에서 데이터를 처리하는 방법에 있어서, 상기 방법은: 적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하는 단계- 상기 적어도 하나의 소스 엔티티의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 레코드들의 각각의 세트에 대응함- ; 및 적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하도록 상기 매핑 정보를 처리하는 단계를 포함한다. 상기 처리하는 단계는, 복수의 노드 컬렉션들을 생성하는 단계 -각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제1 관계 표현식을 나타내는 제1노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함- 를 포함한다. 상기 처리하는 단계는 또한 병합되는 노드들의 관계 표현식들의 비교에 기초한 제3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함한다.
측면들은 하나 이상의 다음 특징들을 포함한다.
상기 매핑 정보가 제1 소스 엔티티의 속성값 및 제 2소스 엔티티의 속성값 측면에서 목적지 엔티티의 속성 값을 정의하는 제1 매핑 규칙을 포함한다.
상기 제1 매핑 규칙과 연관된 노드들의 제1컬렉션이 상기 제1의 소스 엔티티와 상기 제2의 소스 엔티티를 참조하는 관계 대수 연산을 포함하는 제1 관계 표현식을 표현하는 제1노드, 상기 제1 소스 엔티티를 포함하는 관계 표현식을 나타내는 상기 제1노드에 연결되는 제2노드, 및 상기 제2 소스 엔티티를 포함하는 관계 표현식을 나타내는 상기 제1노드에 연결되는 제3노드를 포함한다.
상기 매핑 정보는 상기 제1 소스 엔티티의 속성값 측면에서 목적지 엔티티의 속성값을 정의하는 제2 매핑 규칙을 포함한다.
상기 병합하는 단계가, 상기 제1 소스 엔티티를 포함하는 관계 표현식을 표현하는 상기 제2 컬렉션의 노드와 상기 제2 노드를 병합하는, 상기 제2 매핑 규칙과 연관된 적어도 하나의 노드의 제2 컬렉션과 상기 제1 컬렉션을 병합하는 단계를 포함하는 것을 포함한다.
상기 관계 대수 연산이 조인(join) 연산이다.
상기 관계 대수 연산이 집계(aggregation) 연산이다.
상기 제1 소스 엔티티 및 상기 제2 소스 엔티티가 스키마에서 정의된 관계에 따라 관련된다.
상기 스키마가 여러 엔티티들을 포함하고, 상기 엔티티들간의 관계는 적어도 하나의 일대일 관계, 일대다 관계 또는 다대다 관계를 포함한다.
상기 절차적 사양을 생성하는 단계가 상기 제 3 컬렉션으로부터 데이터흐름 그래프를 생성하는 단계를 포함하고, 상기 데이터흐름 그래프는 상기 제3 컬렉션의 각각의 노드들에서 관계 표현식에 대응하는 연산들을 수행하도록 구성된 컴포넌트들, 및 컴포넌트들의 출력 및 입력포트들 간의 상기 레코드들의 흐름을 표현하는 링크들을 포함한다.
상기 절차적 사양을 생성하는 단계가 질의어 사양(query language specification)을 상기 제3 컬렉션으로부터 생성하는 단계를 포함하고, 상기 질의어 사양(query language specification)은 상기 제3 컬렉션의 각각의 노드에서의 관계 표현식에 대응하는 연산을 수행하기 위한 질의 표현식들(query expressions)을 포함한다.
상기 절차적 사양을 생성하는 단계가 상기 제3 컬렉션으로부터 컴퓨터 프로그램을 생성하는 단계를 포함하고, 상기 컴퓨터 프로그램은 상기 제3 컬렉션의 각각의 노드에서의 관계 표현식에 대응하는 연산들을 수행하기 위한 함수들 또는 표현식들을 포함한다.
상기 컴퓨터 프로그램이 자바, C, C++ 중에서 적어도 하나의 프로그래밍 언어로 구체화된다.
상기 방법은 적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 상기 절차적 사양에 따라 상기 데이터 저장 시스템에서 상기 레코드들을 처리하는 단계를 더 포함한다.
또 다른 측면에서, 일반적으로, 컴퓨터 판독 가능한 저장 매체가 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하기 위한 컴퓨터 프로그램을 저장한다. 상기 컴퓨터 프로그램은 컴퓨팅 시스템이: 적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하고 - 상기 적어도 하나의 소스 엔티티의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 각각의 레코드 세트에 대응함-; 및 적어도 하나의 목적지 엔티티의 적어도 하나의 속성의 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하도록 상기 매핑 정보를 처리하게 하는 명령들을 포함한다. 상기 처리는, 복수의 노드 컬렉션들을 생성하는 단계-각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제1 관계 표현식을 나타내는 제1 노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함- 를 포함한다. 상기 처리는 또한 병합되는 노드들의 관계 표현식들의 비교에 기초한 제3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함한다.
또 다른 측면에서, 일반적으로, 적어도 하나의 데이터 저장 시스템: 적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하는 - 상기 적어도 하나의 소스 엔티티의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 각각의 레코드 세트에 대응함 - 입력 디바이스 또는 포트; 및 적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하기 위해 상기 매핑 정보를 처리하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 처리는, 복수의 노드 컬렉션들을 생성하는 단계 - 각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제 1 관계 표현식을 나타내는 제 1 노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함 - 를 포함한다. 상기 처리는 또한 병합되는 노드들의 관계 표현식들의 비교에 기초한 제 3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함한다.
또 다른 측면에서, 일반적으로, 컴퓨팅 시스템이 적어도 하나의 데이터 저장 시스템; 적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하는 수단들- 상기 적어도 하나의 소스 엔티티의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 각각의 레코드 세트에 대응함 -; 및 적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하기 위해 상기 매핑 정보를 처리하는 수단들을 포함한다. 상기 처리는, 복수의 노드 컬렉션들을 생성하는 단계 - 각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제 1 관계 표현식을 나타내는 제 1 노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함 - 를 포함한다. 상기 처리는 또한 병합되는 노드들의 관계 표현식들의 비교에 기초한 제 3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함한다.
측면들은 하나 이상의 다음 장점들을 가질 수 있다.
절차적 사양을 생성하는 기술들은, 예를 들어, 실행 가능한 모듈의 형태(예를 들어, 데이터 흐름 그래프)에서, 데이터 관련 문제들이 소스 스키마와 목적지 스키마 간 매핑에 기초하여 표현될 수 있게 한다. 사용자 입력은 원하는 목적지 스키마의 엔티티 속성들이 기존 소스 스키마의 엔티티 속성들에 기초하여 표현될 수 있게 함으로서 높은 추상화 수준에서 명시될 수 있다. 예를 들어, 사용자는 그러한 소스들로부터 보조정보를 추출하기 위한 데이터흐름 그래프를 수동으로 구축할 필요 없이 다른 소스들로부터 보조 정보를 또한 참조하는 데이터 세트로부터의 데이터에 기초한 규칙을 표현할 수 있다. 상기 사용자 입력은 하나 이상의 소스 스키마의 임의의 엔티티로부터 필요한 모든 정보를 추출하기 위한 절차적 사양을 제공하도록 처리되는, 목적지 스키마를 정의한다.
본 발명의 다른 특징들 및 장점들은 다음 기술, 및 청구범위로부터 명백해 질 것이다.
절차적 사양을 생성하는 기술들은, 예를 들어, 실행 가능한 모듈의 형태(예를 들어, 데이터 흐름 그래프)에서, 데이터 관련 문제들이 소스 스키마와 목적지 스키마 간 매핑에 기초하여 표현될 수 있게 한다. 사용자 입력은 원하는 목적지 스키마의 엔티티 속성들이 기존 소스 스키마의 엔티티 속성들에 기초하여 표현될 수 있게 함으로서 높은 추상화 수준에서 명시될 수 있다. 예를 들어, 사용자는 그러한 소스들로부터 보조정보(auxiliary information)를 추출하기 위한 데이터흐름 그래프를 수동으로 구축할 필요 없이 또한 다른 소스들로부터 보조 정보(auxiliary information)를 참조하는 데이터 세트로부터의 데이터에 기초한 규칙을 표현할 수 있다. 사용자 입력은 하나 이상의 소스 스키마의 임의의 엔티티로부터 필요한 모든 정보를 추출하기 위한 절차적 사양을 제공하도록 처리되는, 목적지 스키마를 정의한다.
도 1a는 그래프 기반의 계산들을 관리하는 예시 컴퓨팅 시스템의 블록 다이어그램이다.
도 1b는 데이터 흐름 그래프의 예를 도시한다.
도 2a 및 도 2b는 엔티티-관계 다이어그램들로 표현되는 예시 스키마이다.
도 3은 소스 스키마로부터 목적지 엔티티로의 예시 매핑을 도시한다.
도 4는 소스 스키마를 변환하고 정보를 그래프 컴포넌트에 매핑하기 위한 예시 프로세스를 도시한다.
도 5는 소스 스키마로부터 목적지 엔티티로의 매핑의 더 복잡한 예를 도시한다.
도 6은 예시 표현식 노드들을 도시한다.
도 7 및 도 8은 소스 스키마로부터 하나 이상의 목적지 엔티티들로의 예시 매핑을 도시한다.
도 9a 및 도 9b는 예시 스키마들을 도시한다.
도 10a 내지 도 10d는 표현식 노드들로부터 데이터흐름 그래프를 생성하기 위한 진행을 도시한다.
도 11a 내지 도 11c는 생성된 데이터흐름 그래프의 구성의 예들을 도시한다.
도 12a 및 도 12b는 데이터 모델의 예들이다.
정보 시스템에서, 데이터 및 데이터에 대한 계산들을 사용하여 해결되기 위한 문제의 기술(a statement of a problem)은 다양한 형태로 수신될 수 있다. 상기 데이터 및 계산들은 엔티티들 및 엔티티들 간의 관계들(ER 다이어그램 같은)에 해당할 수 있다. 일반적으로, 상기 문제 기술(problem statement)은 예를 들어, 복잡한 질의어(query language)를 사용하여 데이터 및 표현식들의 원시적 형태(primitive forms)로 사용자들에 의해 분해되거나 변환된다. 일부 실시 예에서는, 시스템이 데이터 흐름 그래프 또는 질의어(query language) 표현식을 상기 원 문제 기술(problem statement)로부터 직접 생성할 수 있다. 이와 관련하여, 자동적으로 문제 기술(problem statement)을 예를 들어, 상기 생성된 그래프들 또는 표현식들의 일부인 조인(joins), 롤업(rollups) 및 다른 데이터 변환 세트로 분해하기 위한 시스템들과 방법들이 기술된다. 추가적으로, 상기 시스템들과 방법들은 예를 들어, 외부 데이터베이스들 또는 파일들에 저장된 보조 정보(auxiliary information)를 참조할 수 있다.
도 1a는 그래프-기반 계산들을 개발, 실행 및 관리하기 위한 컴퓨팅 시스템 100의 부분들의 상호관계를 도시한 블록 다이어그램이다. 그래프-기반 계산은 컴포넌트들을 나타내는 그래프에서의 정점들(예를 들어, 데이터세트 같은 소스 또는 싱크(sink) 연산자 타입 중 하나를 가지는 컴포넌트들을 나타내는 정점들, 또는 명시된 연산자 유형에 따른 데이터에 대한 연산을 수행하는 컴포넌트들을 나타내는 정점들), 및 컴포넌트들간의 데이터 흐름을 표현하는 그래프에서 방향성 링크들 또는 "에지들(edges)"로, 방향성 그래프에 의해 표현되는 데이터흐름 그래프를 사용하여 구현된다. 그래픽 개발 환경(GDE) 102는 실행 가능한 데이터흐름 그래프들을 명시하고 상기 데이터흐름 그래프 컴포넌트들에 대한 파라미터들을 정의하기 위한 사용자 인터페이스를 제공한다. 상기 GDE 102는 저장소(repository) 104 및 병렬 운영 환경 106과 통신한다. 또한 사용자 인터페이스 모듈 108 및 실행부(executive) 210은 상기 저장소(repository) 104 및 병렬 운영 환경 106에 결합된다. 상기 실행부 210은 병렬 운영 환경 106에서 데이터 흐름 그래프들의 실행을 제어한다. 데이터 흐름 그래프들은 또한, GDE 102와 상호작용의 요구 없이, 소프트웨어 어플리케이션 프로그래밍 인터페이스들(APIs)을 사용하여 생성될 수 있다.
저장소(repository) 104는 그래프-기반 어플리케이션들의 개발과 실행, 및 상기 그래프-기반 어플리케이션들과 다른 시스템들(예를 들어, 다른 운영 시스템들)간의 메타데이터의 상호교환을 지원하도록 디자인된 확장 가능한 객체-지향 데이터베이스 시스템이다. 상기 저장소(repository) 104는 문서, 레코드 포맷들(예를 들어, 테이블에서 레코드의 데이터 유형 및 필드), 변환 함수들, 데이터흐름 그래프 사양들, 및 모니터링 정보를 포함하는 모든 종류의 메타데이터를 위한 저장 시스템이다. 상기 저장소(repository) 104는 또한 외부 데이터 스토어 112에 저장된 데이터를 포함하는 상기 컴퓨팅 시스템 100에 의해 처리되기 위한 실제 데이터를 표현하는 데이터 객체들 및 엔티티들을 저장한다.
상기 병렬 운영 환경 106은 상기 GDE 102에서 생성되는 데이터흐름 그래프의 사양을 수용하고 상기 데이터흐름 그래프에 의해 정의된 처리 로직 및 리소스들에 대응하는 컴퓨터 명령들(instructions)을 실행한다. 상기 운영 환경 106은 UNIX 운영 시스템 같은, 적당한 운영 시스템 제어하의 하나 이상의 범용 컴퓨터에서 호스팅될 수 있다. 예를 들어, 상기 운영 환경 106은 다수의 중앙 처리 장치들(CPUs), 로컬(예를 들어, SMP 컴퓨터들과 같은 멀티프로세서 시스템들), 또는 로컬 분산(예를 들어, 클러스터들 또는 MPP들로 결합된 다수의 프로세서들) 중 하나, 또는 원격, 또는 원격 분산(예를 들어, LAN 또는 WAN 네트워크를 통해 결합된 다수의 프로세서들) 중 하나, 또는 이들의 임의의 조합을 사용하는 컴퓨터 시스템들의 구성을 포함하는 다수 노드 병렬 컴퓨팅 시스템에서 실행할 수 있다.
상기 사용자 인터페이스 모듈 108은 상기 저장소(repository) 104의 컨텐츠의 웹 브라우저 기반 뷰(view)를 제공한다. 상기 사용자 인터페이스 모듈 108을 사용하여, 사용자는, 다른 것들 중에서, 객체들을 브라우즈(browse)하고, 새로운 객체들을 생성하고, 기존 객체들을 변경할 수 있다. 사용자는 상기 사용자 인터페이스 모듈 108을 통해 저장된 데이터 객체들에 포함된 및/ 또는 연관된 정보를 볼 수 있고 추가적으로, 편집할 수 있다.
상기 실행부 110은 상기 사용자 인터페이스 모듈 108을 통해 액세스되는 선택적 저장소(repository) 기반 작업 스케줄링 시스템이다. 상기 실행부 110은 작업들 및 작업 큐(queue)들을 상기 저장소(repository) 104 내의 객체들로 유지하고, 상기 사용자 인터페이스 모듈 108은 작업들과 작업 큐(queue)들을 조작하기 위한 기능의 뷰(a view of facilities) 를 제공한다.
데이터흐름 그래프들을 생성하고 실행하기 위한 상기 시스템 100의 한 예는 다음의 특징들을 가진다. (시스템의 다른 예들은 또한 이러한 특징들 모두보다 더 적은 것으로도 가능하다.)
●데이터흐름 그래프에서 각각의 정점은 특정 연산자를 데이터에 적용시키는 컴포넌트를 표현하고, 상기 정점들은 컴포넌트들간 데이터의 흐름(소위 "데이터흐름")을 내타내는 방향성 링크들에 의해 연결된다.
●각각의 컴포넌트는, "포트"라 불리는, 접속점이라 명명된 것을 적어도 하나 가지고, 컴포넌트의 연산자는 하나 이상의 "입력 포트들"로 유입되는 입력 데이터를 조작하고, 및/또는 하나 이상의 출력 포트들로부터 유출되는 출력 데이터를 제공한다.
●각각의 포트는 그 포트로 유입되거나 유출되는 데이터 아이템들(예를 들어, 레코드 흐름을 위해, 상기 데이터 포맷은 개별 데이터 아이템으로 레코드들의 포맷을 정의하는 레코드 포맷을 포함할 수 있다.)의 포맷을 정의하는 데이터 포맷과 연관된다.
●각각의 포트는 허용된 카디널리티(cardinality)를 가지는데, 이는 상기 포트에 연결될 수 있는 데이터 흐름 수에 대한 제한이다. 예를 들어, 포트에 허용된 카디널리티(cardinality)가 단지 단일 데이터 흐름만이 포트에 연결되도록 허용하거나, 또는 다수의 데이터 흐름이 포트에 연결되도록 허용할 수 있다.
●그래프에서 각각의 데이터 흐름은 한 컴포넌트의 출력 포트를 또 다른 구성요소의 입력 포트로 연결한다. 그러한 두 포트들은 동일한 데이터 포맷과 연관된다.
●상기 시스템 100은 데이터흐름 그래프에서 사이클을 방지할 수 있다. 만약 데이터흐름 그래프의 한 정점으로부터 다시 그 자체로 돌아오는 경로를 데이터 흐름을 통과하여 추적하는 것이 가능하다면, 그 특정 데이터 흐름 그래프가 사이클을 가지는 것으로 지정될 수 있고 실행이 금지될 수 있다.
●컴포넌트의 연산자는 그 컴포넌트에 의해 적용되는 연산자의 유형(예를 들어, "입력 파일(Input File) 연산자 유형은 입력 파일을 읽는 연산자에 사용되고, "롤업(Rollup)" 연산자 유형은 롤업 연산자를 적용하는 컴포넌트에 사용된다)을 명시하는 연산자 유형을 가진다.
●상기 연산자는 또한 상기 연산자를 구성하도록 사용되는 파라미터들과 관련될 수 있다. 예를 들어, 입력 파일(Input File) 연산자는 읽히기 위한 입력파일의 이름을 제공하는 파라미터를 가질 수 있다. 지원되는 파라미터들 세트는 상기 연산자 유형에 따라 달라진다.
●컴포넌트에 의해 지원되는 입력 및 출력 포트들 세트는 그 컴포넌트의 연산자 유형에 의해 결정된다. 상기 연산자 유형은 또한 상기 지원된 포트들에 대한 허용된 카디널리티(cardinality)를 결정한다.
● 컴포넌트는 컴포넌트를 식별하기 위해 맞춤형 라벨을 가질 수 있고, 데이터흐름 그래프의 시각적 표현에서 그 컴포넌트를 나타내는 정점 상에 나타날 수 있다. 상기 라벨은 연산자 유형과 다를 수 있고, 데이터흐름 그래프 내의 컴포넌트들을 고유하게 식별하는데 사용될 수 있다.
●포트는 상기 포트를 식별하기 위해 맞춤형 라벨을 가질수 있고, 그 컴포넌트의 시각적 표현에서 상기 포트의 시각적 표현에 나타날 수 있다. 상기 라벨은 컴포넌트 내에서 포트를 고유하게 식별하는데 사용될 수 있다.
도 1b를 참조하면, 데이터흐름 그래프 120의 시각적 표현의 예는 "입력 파일(Input File)" 연산자 유형을 가진 두 개의 컴포넌트를 포함하고, 각각 "제1 입력파일(First Input File)" 및 "제2 입력파일(Second Input File)"이라 라벨 붙인다. 각각의 컴포넌트는 "리드(read)"라고 라벨 붙여진 단 하나의 출력 포트를 가진다. 데이터흐름 그래프 120은 "리포맷(Reformat)"연산자 유형을 가진 두 개의 컴포넌트 인스턴스를 포함하고, 각각 "제1 리포맷(First Reformat)" 및 "제2 리포맷(Second Reformat)"으로 라벨 붙인다. 각각의 리포맷(Reformat) 컴포넌트는 "인(in)" 이라 라벨 붙여진 단 하나의 입력 포트 및 "아웃(out)" 이라 라벨 붙여진 단 하나의 출력 포트를 가진다. 상기 데이터흐름 그래프 120은 "조인(Join)" 연산자 유형 및 "A 조인(A Join)" 라벨을 가진 컴포넌트의 단일 인스턴스를 포함한다. 상기 조인(Join) 컴포넌트는 각각 "인0(in0)" 및 "인1(in1)"이라 라벨 붙여진 두 개의 입력 포트 및 "아웃(out)"이라 라벨 붙여진 단 하나의 출력 포트를 가진다. 상기 데이터흐름 그래프 120은 "출력 파일" 연산자 유형 및 "출력 파일" 라벨과 컴포넌트 인스턴스를 포함한다. 상기 데이터흐름 그래프 120은 다양한 포트들을 연결하는 다섯 개의 데이터 흐름을 포함한다. 상기 컴포넌트들의 다양한 외관(예를 들어, 상기 연산자 유형에 기반한)은 개발자 또는 사용자의 이익을 위한 것이다.
데이터흐름 그래프들을 실행할 때, 상기 시스템 100은 데이터흐름 그래프의 시맨틱스(semantics)와 관련된 특정 동작들을 수행한다. 예를 들어, 데이터 흐름은 상기 데이터흐름이 연결하는 포트들과 연관된 데이터 포맷을 확인하는 각각의 데이터 아이템과, 데이터 아이템들의 순서화된 세트를 나타낸다. 컴포넌트(예를 들어, 프로세스 또는 스레드(thread)에 의해 실행되는)는 그 입력 포트(들)(있는 경우)로부터 데이터 아이템들을 읽고, 그 연산자를 적용하는 것과 연관된 계산을 수행하며, 데이터를 그 출력 포트(들)(있는 경우)에 기록한다. 일부 경우에, 컴포넌트는 또한 외부 데이터를 액세스한다(예를 들어, 데이터베이스의 파일을 판독하거나 기록하는 또는 데이터를 액세스하는). 연산자를 적용하는 것과 관련된 계산은 임의의 입력 포트(들)로부터 읽히는 데이터 아이템들(있는 경우), 상기 연산자와 관련된 파라미터들, 및/또는 상기 컴포넌트에 의해 액세스되는 임의의 외부 데이터(예를 들어, 파일들 또는 데이터베이스 테이블들) 상태에 의해 결정될 수 있다. 컴포넌트가 데이터 아이템들을 출력 포트에 기록한다면, 이러한 데이터 아이템들은 그에 연결된 임의의 입력 포트들로 전달될 것이므로, 다운스트림(downstream) 컴포넌트들의 연산자들에 대한 입력으로 사용될 것이다. 데이터 흐름에 의해 표현되는 상기 데이터 아이템들의 연관된 순서는 상기 데이터 아이템들이 출력 포트와 입력 포트 간에 전달되는 순서, 및 아마도(반드시는 아니지만) 데이터 아이템들이 계산되는 순서에 대응할 수 있다.
포트에 대한 데이터 포맷의 예는 레코드 포맷이고, 이는 주어진 레코드 내의 개별적인 값들의 데이터 유형을 정의하고, 각각의 값들은 일부 식별자에 의해 식별된다. 레코드 포맷의 구문(syntax) 은 특정 언어를 따를 수 있다. 다음은 데이터 조작 언어(DML)에서 레코드 포맷의 구문(syntax)의 예이다.
Figure pct00001

데이터 유형의 예는 원시 이진 형식의 정수로 그를 따르는 식별자에 의해 식별되는 값을 정의하는 "int"이다. 상기 시스템 100은 다양한 데이터 유형들을 지원할 수 있으나, 예시의 목적을 위해 상기 "int" 데이터 유형이 본원의 예에서 사용될 것이다. 이러한 DML 구문(syntax)를 사용하는 레코드 포맷의 예는 다음과 같다.
Figure pct00002

이러한 레코드 포맷은 a1, a2, 및 a3로 식별된, 세 개의 연속 할당된 이진 정수로 구성된 레코드에 대응한다.
상기 시스템 100은 또한 컴포넌트들을 위한 다양한 연산자 유형들을 지원한다. 예시 목적을 위해, 다음의 연산자 유형들이 기술된다: 입력 파일(Input File), 출력 파일(Output File), 입력 테이블(Input Table), 출력 테이블(Output Table), 리포맷(Reformat), 복제(Replicate), 조인(Join) 및 롤업(Rollup).
입력 파일 컴포넌트는 (디폴트로(by default)) "리드(read)"로 라벨 붙여진 단 하나의 출력 포트와 판독할 파일을 식별하는 단 하나의 파라미터(예를 들어, "파일네임(Filename)"파라미터)를 가진다. 상기 리드(read) 포트는 하나 이상의 데이터 흐름들에 연결될 수 있다. 상기 리드(read) 포트와 연관된 레코드 포맷(예를 들어, read.format)이 식별된 파일에서 레코드들의 실제 레코드 포맷에 대응하도록 선택된다 (예를 들어, 개발자에 의해 또는 자동적으로 결정된다). 상기 입력 파일 컴포넌트에 의해 적용되는 연산자는 상기 식별된 파일의 연속적인 레코드들(예를 들어, 상기 리드(read) 포트와 연관된 레코드 포맷을 가지는 레코드들)을 판독하고, 그것들을 상기 리드(read) 포트에 제공한다(예를 들어, 그것들을 특정 버퍼에 기록함에 의해, 또는 어떤 다른 통신 메커니즘에 의해).
예를 들어, 입력 파일 컴포넌트는 다음과 같이 구성될 수 있다.
Figure pct00003

입력 파일 컴포넌트가 성공적으로 식별된 파일을 판독하고 상기 파일에 포함된 레코드들을 리드(read) 포트에 제공할 수 있는 것을 보장하기 위해, 파일 A.dat에서 레코드들에 의해 실제로 사용되는 물리적 레코드 포맷이 제공되는 레코드 포맷 read.format 과 일치해야 한다.
출력 파일 컴포넌트는 (디폴트로(by default)) "라이트(write)"라고 라벨 붙여진 단 하나의 입력 포트와 기록되기 위한 파일을 식별하는 단 하나의 파라미터(예를 들어, "파일네임(Filename)" 파라미터)를 가진다. 상기 라이트(write)포트는 하나 이하의 데이터 흐름과 연결될 수 없다. 상기 라이트(write) 포트와 연관된 상기 레코드 포맷(예를 들어, read.format)이 상기 식별된 파일에서의 레코드들의 실제 레코드 포맷에 대응하도록 선택된다(예를 들어, 개발자에 의해 또는 자동적으로 정해진다). 상기 출력 파일 컴포넌트에 의해 적용되는 연산자는 (예를 들어, 그것들을 특정 버퍼로부터 판독함에 의해, 또는 어떤 다른 통신 메커니즘에 의해), 상기 라이트(write) 포트에 제공되는 연속적인 레코드들을 수신하고 그것들을 상기 식별된 파일에 기록한다.
"입력 테이블(Input Table)" 및 "출력 테이블(Output Table)" 연산자 유형들 같은, 파일 이외의 다른 미디어에 저장된 데이터를 액세스 하기 위한 다른 연산자 유형들이 있고, 이는 예를 들어, 관계형 데이터베이스의 테이블들에 저장된 데이터를 액세스하기 위해 사용될 수 있다. 이러한 다른 연산자 유형들을 위한 구성 및 연산자 기능은 상기 입력 파일 및 출력 파일 연산자 유형들에 대해 상기 기술된 것과 유사하다.
리포맷(Reformat) 컴포넌트는 (디폴트로(by default)) "인(in)"이라 라벨 붙여진 단일 입력 포트와 (디폴트로(by default)) "아웃(out)" 이라 라벨 붙여진 단일 출력 포트 및 단일 파라미터를 가지고, 이 컴포넌트는 상기 출력 포트에 제공되는 출력 레코드를 산출하면서 인(in) 포트에서 수신되는 각각의 입력 레코드에서 수행되기 위한 변환 함수로서 상기 컴포넌트의 연산자를 정의한다.
상기 변환 함수는 다음의 구문(syntax)를 사용하는 리포맷(Reformat) 컴포넌트의 파라미터에 의해 정의될 수 있고, 이는 다수의 출력 필드 각각을 위한 표현식들을 정의하기 위한 다수의 엔트리들(entries)을 사용한다.
Figure pct00004

각각의 필드는 상기 출력 포트의 레코드 포맷에서 필드 이름이다. 각각의 표현식은 상수(literal)(예를 들어, 1, 2, 3 같은 숫자들), 입력 필드(예를 들어, in.a1), 및 덧셈(+)과 곱셈(*)에 대한 연산자 같은 다양한 대수 연산자들 중 임의의 것으로 구성된 표현식이다. 표현식들은 상기 입력 레코드 포맷에서 존재하는 필드들을 참조하는 것만 허용된다. 변환 함수는 일반적으로 출력 레코드 포맷에서 각각의 필드를 위한 단 하나의 표현식을 제공하나, 상기 변환 함수에 포함되지 않은 출력 레코드 포맷에 존재하는 필드들을 위한 디폴트(default) 값을 결정하는 절차들이 있을 수 있다.
예를 들어, 리포맷(Reformat) 컴포넌트는 다음과 같이 구성될 수 있다.
Figure pct00005

복제(Replicate) 컴포넌트는 각각의 입력 레코드의 다수의 카피를 생성할 수 있고, (디폴트로(by default)) "인(in)"이라 라벨 붙여진 단 하나의 입력 포트와 (디폴트로(by default)) "아웃(out)"이라 라벨 붙여진 단 하나의 출력 포트를 가진다. 다수의 데이터 흐름들이 상기 출력 포트에 연결될 수 있다.
조인(join) 연산자를 적용하는, 조인(Join) 컴포넌트는 (디폴트로(by default)) "인0(in0)" 및 "인1(in1)"로 라벨 붙여진 두 개의 입력 포트들과 (디폴트로(by default))) "아웃(out)"이라 라벨 붙여진 하나의 출력 포트를 가진다. 조인(Join) 컴포넌트는 key0 및 key1 두 개의 파라미터를 가지며, 이는 필드들이 상기 조인(join) 연산자의 키(key) 필드로 사용되도록 명시한다. 상기 조인(join) 연산자는 상기 출력 포트의 레코드들에서의 필드들에 상기 입력 포트 in0 및 in1의 레코드들에서의 필드들을 매핑하는 변환 함수와 관련된다. 리포맷(Reformat) 컴포넌트를 위한 변환 함수가 단일 인수를 가지는 반면, 조인(Join) 컴포넌트를 위한 변환함수는 두 개의 인수를 갖는다. 그 외에는, 조인(Join) 컴포넌트를 위한 변환함수의 구문(syntax)는 리포맷(Reformat) 컴포넌트를 위한 변환 함수의 것과 유사하다.
상기 조인(join) 연산자는 상기 두 개의 입력 레코드의 관계 내부 조인(relational inner join)을 수행함으로써 조인(Join) 컴포넌트에 의해 적용된다. 예를 들어, 키(key) 필드 R0.key0 및 R1.key1의 값들이 같은, in0 포트와 in1 포트로부터 각각, 오는 레코드 R0과 R1 의 모든 쌍에 대해, 상기 조인(Join) 컴포넌트가 R0와 R1에 변환함수를 호출하고 그 결과를 상기 출력포트에 제공할 것이다.
예를 들어, 조인(Join) 컴포넌트는 다음과 같이 구성될 수 있다.
Figure pct00006
Figure pct00007

이러한 조인(Join) 컴포넌트는, in0 및 in1로부터 각각, R0.a3 = R1.b3 인, 레코드 R0 및 R1의 모든 쌍을 찾을 수 있고, 그 레코드 쌍을 상기 변환 함수로 전달하고, 상기 출력 포트에 상기 변환함수의 결과를 제공할 수 있다.
롤업(Rollup) 컴포넌트는 (디폴트(default)로) "인(in)"이라 라벨 붙여진 단일 입력 포트와 "아웃(out)"이라 라벨 붙여진 단일 출력 포트를 가진다. 롤업(Rollup) 컴포넌트는 레코드를 집계하기 위한 롤업(rollup) 연산자에 의해 사용되도록 키(key)필드를 명시하는 파라미터, 키(key), 및 집계된 레코드들의 집계 결과 계산을 위해 롤업(rollup) 연산자에 의해 사용되기 위한 변환함수를 가진다. 상기 롤업(rollup) 연산자는 각 서브 세트가 상기 키(key) 필드에 대해 같은 값을 가지도록 상기 입력 레코드들을 서브 세트들로 나누어, 변환함수를 각 서브세트에 적용하고, 상기 출력 포트에 상기 결과를 제공함으로써 롤업(Rollup) 컴포넌트에 의해 적용된다. 그러므로 상기 롤업(Rollup) 컴포넌트는 상기 키(key) 필드에 나타나는 각각 별개의 값에 대해 하나의 출력 레코드를 제공할 것이다.
롤업(Rollup) 컴포넌트를 위한 상기 변환 함수는, 집계된 세트에서 입력 레코드들의 값에 대한 누적 합계, 최소값 등을 계산하도록 표현식들에서 사용되는, 합계, 최소, 및 최대 같은 집계기능들을 포함할 수 있다는 것을 제외하고, 리포맷(Reformat) 컴포넌트에 대한 것과 유사하다. 예를 들어, 입력 레코드가 필드 in.a1을 가진다면, 상기 변환함수에서 sum(in.a1)의 표현식은 롤업(Rollup) 컴포넌트가 상기 키(key) 필드에 대해 동일한 값을 가지는 모든 레코드들에 걸쳐 in.a1에 나타나는 값들의 합을 계산하도록 한다. 변환함수 엔트리(entry) 표현식이 집계 함수가 아니라면, 그 엔트리(entry) 표현식은 키(key) 필드에 대해 동일한 값을 가지는 레코드의 각각의 집계된 세트 내의 임의의 입력 레코드에서 평가될 것이다.
예를 들어, 롤업(Rollup) 컴포넌트는 다음과 같이 구성될 수 있다.
Figure pct00008

이는 인(in)포트로부터 데이터를 상기 키(key) 필드 a3에 대해 동일한 값을 가지는 집계된 세트들로 나누도록 롤업(Rollup) 컴포넌트를 구성할 것이다. 각각의 세트 내, 상기 롤업(Rollup) 컴포넌트는 a1 최소값, 임의의 레코드로부터 a3에 대한 값(이 경우, 사용할 값의 선택은 a3가 상기 키(key) 필드의 값이므로, 상기 세트 내의 각각의 레코드에 대해 동일 값을 가지기 때문에 중요치 않다), 및 상기 a2 값들의 합계를 취할 것이다. 하나의 출력 레코드는 각각 별개의 키(key)필드 값에 대해 산출될 것이다.
상기 GDE 102, 상기 API들, 또는 둘의 조합은 그것의 포트들, 연산자 유형, 및 파라미터들을 포함하는 컴포넌트, 상기 포트들 및 상기 파라미터들에 대한 값들과 연관된 데이터 포맷들, 및 출력 포트를 입력 포트에 연결하는 흐름들을 포함하는, 임의의 데이터흐름 그래프 요소들에 대응하는 데이터 구조들을 산출하도록 사용될 수 있다. 상기 API 함수들에 대한 반복되는 호출들은 반드시 상기 GDE 102와 사용자 상호작용을 요구함 없이, 프로그램적으로 데이터흐름 그래프를 생성하도록 사용될 수 있다.
엔티티들과 상기 저장소(repository) 104에 저장된 엔티티들 간의 관계들에 대응하는 데이터 객체들과 메타데이터는 엔티티-관계(ER)다이어그램들을 통해 표현될 수 있다. 도 2는 예시 ER 다이어그램 200을 도시한다. ER 다이어그램 200은 엔티티들간의 상호관계를 도시한다. ER 다이어그램에서 엔티티들은 독립적이고 고유한 정체성을 가질수 있는, 건강관리, 무역, 또는 회계 같은, 도메인에서의 아이템들을 나타낼 수 있다. 상기 엔티티들은 상기 도메인으로부터 실제 측면들을 포함할 수 있다. 예를 들어, 엔티티 202는 사람을 나타내고, 사람 이름("사람_이름(person_name)"이라 불리는 속성을 가진) 및 사람 나이("사람_나이(person_age)"라 불리는 속성을 가진) 같은, 사람에 관련한 "속성들"을 포함한다. 유사하게, 엔티티 204는 도시를 나타내고, 도시이름("도시_이름(city_name)"이라 불리는 속성을 가진) 및 도시 인구("도시_인구(city_population)"이라 불리는 속성을 가진) 같은, 속성들을 포함한다. 일부 예들에서, 엔티티는 빌딩 또는 차와 같은 물리적 객체를 나타낼 수 있다. 일부 예들에서는, 엔티티가 모기지 거래에서 세일, 또는 서비스 계약에서 제공의 만료 같은 사건을 나타낼 수 있다. 현실의 예들에서, 상기 각각의 엔티티 202, 204는 아마도 몇 가지 속성들을 가질 것이다.
일부 실시 예에서, "엔티티들"에 대한 참조는 엔티티 유형 "카테고리들"과 연관될 수 있다. 상기 저장소(repository) 104에 저장된 데이터 객체는 주어진 엔티티 유형 카테고리와 연관된 엔티티의 인스턴스(instance)로서 간주될 수 있다. 예를 들어, 엔티티 유형 카테고리는 "사람(person)"엔티티 유형 카테고리일 수 있고, 상기 사람 엔티티 유형 카테고리와 연관된 특정 인스턴스(instance), 예를 들어 데이터 객체, 는 32살인 "Wade"란 사람이 될 수 있다. 따라서, 스키마 200에서 각각의 엔티티 202, 204는 각각의 객체들이 상기 엔티티 202, 204의 특정 인스턴스(instance)들에 관한 상세 내용을 가지는, 데이터 객체들의 클래스를 나타낸다. 스키마 200에서, 상기 엔티티들 202, 204는 "거주(lives in)" 관계 206을 통해 연관된다. 예를 들어, 엔티티 유형 "사람(person)"의 객체들은 상기 엔티티 유형 "도시(city)"의 객체에 대해 "거주(lives in)" 관계를 가진다.
관계들은 다음에 더 상세히 기술된다. 도 2a을 참조하면, 스키마 210에서, 엔티티들 212, 214, 216, 218은 관계들 213a-e 를 통해 서로 연관된다. 일부 예들에서, 두 엔티티들, 예를 들어 엔티티 212 및 218, 간의 관계를 구현하는 한 가지 방법은, "기본키/외래키 (primary-key/foreign-key)" 관계 213a를 통한다. 엔티티 212에 대한 "기본키(primary-key)"는 그 값이 주어진 엔티티 유형 카테고리의 엔티티 212의 각각의 인스턴스(instance)를 고유하게 식별하는 속성이다. 예를 들어, "종업원 ID(Employee ID)"는 "종업원(Employee)"엔티티 212에 대한 기본 키(primary key) 속성이 될 것이다. 두 번째 엔티티 218이 첫 번째 엔티티 212의 기본 키(primary key) 속성을 참조하는 속성을 가질 때 첫 번째 엔티티 212는 두 번째 엔티티 218에 대해 상기 기본 키/ 외래 키(primary-key/foreign-key) 관계 213a를 가질 수 있다. 이러한 두 번째 엔티티 218의 속성은 "외래키(foreign-key)" 라 불린다. 예를 들어, "프로젝트(Project)"엔티티 218에서 프로젝트의 인스턴스들은 외래키 속성(foreign-key)으로 제공될 수 있는 "Employee ID"와 각각 연관될 수 있다.
스키마 210은 엔티티 212, 214, 216, 218 간의 다른 종류의 관계들 213b-e를 묘사할 수 있다. 일 실시 예에서, 관계들 213a-d 은 엔티티들을 연결하는 선들로 표현된다. 예를 들어, 엔티티 212와 214 간, 엔티티 212와 218 간, 엔티티 212와 216간, 및 그 자체에 대한 엔티티 212 의 관계들,은 스키마 210에 도시된 것처럼 표현될 수 있고, 엔티티 302, 304, 306, 308 간의 "연결(connectivity)" 관계들의 다음의 기본적 유형들을 포함할 수 있다: 일대일, 일대다, 및 다대다.
일 실시 예에서, 일대일 연결 관계 213b는 예를 들어, "종업원(Employee)" 엔티티 212에서 최대 하나의 데이터 객체가 예를 들어, "사무실(Office)" 엔티티 214의 하나의 데이터 객체에 연관될 때 존재한다. 상기 "종업원(Employee)" 엔티티 212 는 회사에서 종업원들을 나타낸다. 예를 들어, 엔티티 212에서 각각의 데이터 객체는 종업원을 나타낸다. "사무실(office)" 엔티티 214는 빌딩 내에 있는 사무실들을 나타낸다. 예를 들어, 엔티티 214내의 각각의 데이터 객체는 사무실을 나타낸다. 각각의 종업원이 그들 자신의 사무실에 지정된다면, 대응하는 데이터 오브젝트들은 일대일 외래키(foreign-key) 관계를 가질 것이다. 일대일 연결은 스키마 210에서 선으로 묘사된다.
일 실시 예에서, 예를 들어, "종업원(Employee)" 엔티티 212에서 하나의 데이터 객체에 대해, 예를 들어 "부서(Department)" 엔티티 216에서 영, 하나, 또는 많은 관련된 데이터 객체들이 있고, 예를 들어, "부서(Department)" 엔티티 216에서 하나의 데이터 객체에 대해, 예를 들어 "종업원(Employee)" 엔티티 212에서 하나의 관련된 데이터 객체가 있을 때, 일대다 연결 관계 213d가 존재한다. 상기 기술된 바와 같이, 상기 "종업원(Employee)" 엔티티 212는 회사의 종업원들을 나타낸다. 상기 "부서(Department)" 엔티티 216은 회사에서 부서들을 나타낸다. 예를 들어 상기 엔티티 216의 각각의 데이터 객체는 부서를 나타낸다. 각각의 종업원들은 한 부서에 관련되어 있고, 각각의 부서는 많은 종업원들에 관련되어 있다. 그러므로 "종업원(Employee)" 엔티티 212 및 "부서(Department)" 엔티티 216은 일대다 외래키(foreign-key) 관계를 가진다. 일대다 연결은 스키마 210에서 까마귀 발 모양으로 끝나는 선으로 묘사된다.
일 실시 예에서, 예를 들어, "종업원(Employee)" 엔티티 212에서 하나의 데이터 객체에 대해 예를 들어, "프로젝트(Project)" 엔티티 218에서 영, 하나, 또는 많은 관련된 데이터 객체들이 있고, 예를 들어, "프로젝트(Project)" 엔티티 218에서 하나의 데이터 객체에 대해, 예를 들어, "종업원(Employee)" 엔티티 212에서 영, 하나, 또는 많은 관련된 데이터 객체가 있을 때, 다대다 연결 관계 213e가 존재한다. 이러한 예시 목적을 위해, 종업원들이 임의의 수의 프로젝트들에 동시에 지정될 수 있고, 프로젝트(예를 들어, "프로젝트(Project)" 엔티티 218 에서 데이터 객체)는 그 프로젝트에 지정된 임의의 수의 종업원들을 가질 수 있다. 따라서, 상기 "종업원(Employee)" 엔티티 212 및 "프로젝트(Project)" 엔티티 218은 다대다 외래키(foreign-key) 관계를 가질 것이다. 다대다 연결은 스키마 210에서 까마귀 발 모양으로 시작되고 끝나는 선으로 묘사된다.
일부 예에서, 동일한 엔티티 212에서 데이터 객체들 간 관계 213c가 있을 수 있다. 예를 들어, "종업원(Employee)" 엔티티 212에서 데이터 객체들은 "종업원(Employee)" 엔티티 212에서 다른 데이터 객체들과 일대다 관계를 가질 수 있다. 한 종업원은 일대다 외래키(foreign-key) 관계에 의해 표현되는 또 다른 종업원과 "감독(supervised by)" 관계를 가질 수 있다.
일부 예에서, 엔티티들 212, 214, 216, 218은 테이블 형태로 표현될 수 있다. 상기 엔티티들 212, 214, 216, 218의 데이터 객체 인스턴스(instance)들은 상기 테이블에서 레코드로서 표현될 수 있다. 일부 실시 예에서, 하나 이상의 테이블들은 소정의 방식으로 결합 또는 "조인(join)" 될 수 있다. 예를 들어, 두 엔티티 테이블들의 내부 조인(inner join) 은 두 엔티티 테이블에서 각각의 레코드가 일치하는 레코드를 가질 것을 요구한다. 상기 내부 조인(inner join)은 주어진 조인-술어(join-predicate)(예를 들어, 조인키(join key))에 기초하여 상기 두 테이블로부터 레코드들을 결합한다. 상기 조인-술어(join-predicate)는 조인(join) 조건을 명시한다. 예를 들어, 조인키(join key)는 제1 엔티티 테이블로부터 레코드의 제1 속성값이 제2 엔티티 테이블로부터 레코드의 제2 속성값과 동일하도록 명시한다. 외부 조인(outer join)은 두 조인된(joined) 엔티티 테이블에서 각각의 레코드가 일치하는 레코드를 가질 것을 필요로 하지 않는다. 따라서, 조인된(joined) 테이블은 두 엔티티 테이블에 일치하는 레코드가 존재하지 않더라도 각각의 레코드를 유지한다.
엔티티들 212, 214, 216, 218의 속성들은 데이터 단위(granularity) 면에서 특성화될 수 있다. 예를 들어, 사람의 계정을 나타내는 엔티티가, 더 조악한 단위 수준(a coarser level of granularity)에서, 상기 사람의 주소에 관련된 정보를 나타내기 위한 단 하나의 속성을 포함할 수 있다. 데이터의 단위는 그 데이터 필드가 세분화되는 적절성을 참조할 수 있다. 이와 같이, 일부 예에서는, 엔티티가 문 번호, 거리 이름, 도시 또는 마을 이름, 및 주 이름 같은 다수의 속성들을 사용함으로써 더 정밀한 단위 수준에서 동일한 주소정보를 나타낼 수 있다.
예를 들어, 엔티티에서 더 조악한 속성은 가정 내의 많은 고객들을 나타내는 가정 정보가 될 수 있다. 더 정밀한 속성은 구매 주문에서 품목들이 될 수 있다. 더 조악한 속성으로, 제품 식별자(또는 다른 제품 수준 정보)가 다수의 연관된 품목들을 가질 수 있다.
일부 상황에서는, 더 조악한 엔티티로부터 더 상세한 정보를 유도하는 것이 바람직할 수 있다. 유사하게, 요약된, 덜 상세한 방식으로 더 정밀한 엔티티에 포함되는 정보를 나타내는 것이 바람직할 수 있다. 이와 관련하여, 소스 엔티티들은 소정의 단위 수준을 가지는 것으로 정의될 수 있다. 하나 이상의 소스 스키마에서 소스 엔티티들은 하나 이상의 목적지 스키마의 목적지 엔티티들에 매핑될 수 있고, 거기서 사전 구성된 표현식들이 상기 목적지 엔티티들의 결과 속성들에 대해 소정의 단위 데이터를 관련시킨다. 예를 들어, 더 정밀한 단위 수준에서 소스 데이터는 목적지 엔티티에서 결과적으로 단일 속성이 되도록 집계될 수 있다(예를 들어, 집계(aggregation) 연산자를 포함하는 표현식을 통해).
일부 예에서, 데이터 세트 또는 데이터흐름 그래프로부터 데이터에 기반한 사용자에 의해 생성된 규칙은 외부 데이터베이스 또는 파일들에 포함된 보조 정보(auxiliary information)를 참조하는 것을 필요로 할 수 있다. 예를 들어, 이러한 보조 정보는 더 조악한 또는 더 정밀한 단위 수준에서 존재할 수 있다. 이와 같이, 이러한 보조 정보는 사전 구성된 표현식들을 사용하여 어플리케이션들에서 사용을 위한 속성들의 바람직한 형태가 되도록 처리될 수 있다.
예시 시나리오에서, 소스 엔티티들은 목적지 엔티티들에 다음과 같이 사전 구성된 표현식들을 사용하여 매핑될 수 있다. 도 3을 참조하면, 소스 스키마 300은 각각이 속성들 a1, ab, 및 ac, 속성들 b1, 및 ba, 그리고 속성들 c1, 및 ca를 각각 포함하는, 세 개의 소스 엔티티들 302, 304, 306, 예를 들어 엔티티 A, 엔티티 B, 및 엔티티 C를 포함한다. 이 설명을 위해, 속성의 첫 번째 글자가 소유하는 엔티티의 이름과 일치하게 하는 규정(convention)이 채용된다. 예를 들어, 엔티티 A 속성들 각각은 "a"로 시작한다. 더 나아가, 엔티티에서 속성의 두 번째 글자는 그 속성이 기본키(primary key) 속성임을 나타내기 위해 "1"로 설정된다. 엔티티간의 관계들은 다음과 같이 표현된다: 엔티티 A로부터 엔티티 B로 n :1(다대일), 및 엔티티 A로부터 엔티티 C로 1:n(일대다).
각각의 관계들과 연관된 조인(join) 키들이 관계 상에 도시된다. 예를 들어, 엔티티 B에 대한 엔티티 A의 조인을 위한 ba/ab, 및 엔티티 C에 대한 엔티티 A의 조인을 위한 ca/ac. 이러한 기술에서, 조인 키에서 사용되는 속성의 두 번째 글자가 제휴(partnered) 엔티티의 이름과 일치하도록 하는 규정(convention)이 채용된다.
도시된 바와 같이, 엔티티 A(예를 들어 중간/소스 엔티티)는 엔티티 308, 예를 들어 엔티티 D(예를 들어, 목적지 엔티티)에 1:1(일대일) 매핑의 원인이 된다. 상기 매핑은 엔티티 A로부터 엔티티 D방향의 "화살표"로 도시된다.
엔티티 D에 대한 엔티티 A의 매핑 정의는 상기 엔티티들의 속성들을 포함하는 개별적, 사전 구성된 논리 표현식들에 의해 제공된다. 예를 들어, 엔티티 D에 대한 엔티티 A의 매핑, 제1부분에서, 정의하는 속성 d1은 속성 a1의 값이 할당된다. 일부 예에서, 속성 a1의 값이 속성 d1에 직접 복사될 수 있다.
엔티티 D에 대한 엔티티 A의 매핑, 제2부분에서, 정의하는 속성 d2는 속성 b1 값이 할당된다. 그러나, b1은 소스 엔티티 A에 없으나, 엔티티 B에서 발견된다. 따라서, 엔티티 A 및 B는 속성 d2의 값 계산에서 속성 b1에 도달하도록 조인될(joined) 필요가 있을 것이다.
엔티티 D에 대한 엔티티 A의 매핑, 제3부분에서, 정의하는 속성 d3는 속성 c1의 집계 표현식 "합산(summation)"의 값이 할당된다. 이와 같이, 속성 d3값의 계산에서 집계 표현식 속성 c1의 "합산(summation)" 의 값에 도달하도록 엔티티 C가 엔티티 A와 조인(join)되기 전에, 엔티티 C는 먼저 속성 c1에 롤업(rollup)될 필요가 있다.
일 실시 예에서, 상기 기술된 조인들(joins) 및 롤업들(rollups)은 소스 속성에서 목적지 속성으로의 경로를 정의한다. 따라서, 상기 조인들(joins) 및 롤업들(rollups)은 루트(root) 또는 중간(immediate) 엔티티(예를 들어, 상기 예에서 엔티티 A)를 통해 소스 속성(예를 들어, a1, b1, c1)이 저장된 곳의 엔티티로의 경로에 기초하여 목적지 엔티티에서의 속성을 매핑하도록 사용된다. 일부 예에서, 루트 엔티티로부터 소스 속성들을 포함하는 엔티티들로의 경로는 트리 형태로 구조화된 스키마를 정의한다.
일부 예에서, 제1 엔티티에서 제2 엔티티로의 "단순(simple)" 매핑은 고유하게 지정된 루트 엔티티 및 루트 엔티티에 연관된 또는 서로 연관된 임의의 개수의 다른 엔티티들을 가진 "트리"형 소스 스키마와 소스 스키마의 부분이 아니나, 목적지 스키마를 형성할 수 있는 하나 이상의 목적지 엔티티들로 구성된다. 예를 들어, 도 3에서, 소스 스키마 300은 엔티티들 302, 304, 및 306을 포함한다. 목적지 엔티티 308은 상기 소스 스키마 300의 부분이 아니다.
이제 도 4를 참조하면, 소스 스키마를 변환하고 질의어(query language) 표현식들, 데이터흐름 그래프, 또는 컴퓨터 프로그램 같은, 매핑된 목적지 엔티티들의 속성들을 계산하기 위한 절차적 사양으로 정보를 매핑하기 위한 프로세스 400이 도시된다. 예를 들어, 상기 소스 스키마와 매핑 정보는 아마도 상기 절차적 사양에서 절차들에 대응할 표현식의 일부 구성요소(element)들을 포함하는, 다양한 연산자들 또는 함수들을 사용하는 소스 엔티티 속성면에서, 목적지 엔티티의 속성을 정의하는 표현식 형태로 소스 스키마의 하나 이상의 소스 엔티티들로부터 목적지 엔티티로의 매핑을 포함한다. 일부 예에서, 초기 정보는 방향성 비순환 그래프 구조(도 4에서 도시된 바와 같이, 이것 또한 상기 그래프의 관계 링크들이 무방향적이고 그러므로 어떤 노드라도 상기 트리의 루트로 간주될 수 있기 때문에 트리구조를 가지는 것으로 분류될 수 있는)를 갖는 소스 스키마와 목적지 스키마의 하나 이상의 목적지 엔티티의 속성들이 생성되는(스텝 402) 방법을 명시하는 매핑 규칙 세트를 포함한다. 상기 매핑 규칙들과 소스 스키마는 표현식 노드 세트를 생성하도록 사용될 수 있다(스텝 404). 상기 표현식 노드들은, 아래 상세히 기술된 바와 같이, 중간 데이터 구조들에서 표현된다. 목적지 엔티티의 각각의 속성은 스칼라 연산자들(예를 들어, +, -, 함수 호출 등) 및 집계 연산자들(예를 들어, sum, min, max, 등)의 임의의 컬렉션과 함께 소스 스키마에서 엔티티들의 속성으로부터 구성된 표현식을 정의하는 매핑 규칙에 의해 정의될 수 있다. 다양한 언어 중 어느 것이라도 상기 매핑 규칙들에서의 표현식을 위해 사용될 수 있다. 예를 들어, 표현식들은 사용자에 의해 데이터 조작 언어(DML)로 기록될 수 있고, 사용자 입력으로 제공될 수 있다. 다양한 입력 인터페이스들은, 예를 들어, 비즈니스 규칙 인터페이스(예를 들어, 본원에 참조로 인용된 미국 특허 번호 8,069,129에서 기술된 바와 같은 인터페이스)를 포함하는, 상기 매핑 규칙들을 수신하도록 사용될 수 있다. 상기 초기 정보는 또한 상기 엔티티들에 대응하는 데이터의 물리적 표현(예를 들어, 데이터 세트 파일 이름 및 레코드 포맷)을 기술하는 메타데이터를 포함할 수 있다.
일부 실시 예에서는, 매핑 모듈(예를 들어, 운영 환경 106에서 그를 실행하는)은 매핑 규칙들을 통해 소스 스키마에 관련된 속성들과 함께 소스 스키마로부터 목적지 스키마로의 스키마 대 스키마 매핑을 표현식(예를 들어, 관계 대수 면에서 및 표현식 노드들로 정리된 관계 표현식들) 컬렉션으로 변환한다. 일부 예에서, 데이터 구조들을 저장하기 위한 임의의 공지 방법은 하나 이상의 "질의 계획들(query plans)"의 형태로 표현식 노드들을 저장하도록 사용될 수 있으며, 여기서 각각의 질의 계획(query plan)은 질의에 의해 명시될 수 있는 값을 제공하도록 사용될 수 있는 방향성 링크들에 의해 연관된 표현식 노드들의 컬렉션이고 방향성 비순환 그래프 구조를 가진다. 상기 질의 계획(query plan)에서 방향성 링크들은 아래에 더 상세히 기술된 바와 같이, 종속 관계들(예를 들어, 또 다른 표현식 노드에 의해 참조되는 하나의 표현식 노드의 식별자)을 표현한다. 질의 계획(query plan)의 상기 표현식 노드들에 의해 표현되는 관계 표현식들은 특정 알고리즘 면에서 다양한 구체적 실시 예들을 가질 수 있는 "조인(join)" 또는 "롤업(rollup)"같은 추상적 관계 연산자들의 측면에서 정의될 수 있다. 별개의 질의 계획(query plan)은 목적지 스키마에서 목적지 엔티티 각각의 출력 속성에 대해 생성된다. 소스 스키마의 하나 이상 엔티티로부터 데이터를 요구하지 않는 매핑 표현식에 의해 정의되는 출력 속성은 단일의 표현식 노드를 가진 질의 계획(query plan)에 해당할 수 있다. 소스 스키마에서 다수의 엔티티들로부터 데이터를 필요로 하는 매핑 표현식에 의해 정의되는 출력 속성은 그 루트 표현식 노드에 의해 표현되는 출력 속성의 값과 트리 토폴로지(topology)를 갖는 질의 계획(query plan)에 해당할 수 있다. 질의 계획(query plan)으로부터, 매핑 모듈은 목적지 스키마의 속성들 값을 계산하는데 사용될 일부 또는 모든 절차들을 명시하는 절차적 사양의 다른 형태 또는 데이터 흐름 그래프를 생성할 수 있다.
일부 예에서는, 상기 질의 계획(query plan)들이 하나 이상의 표현식들을 결합하도록 병합될 수 있으므로, 그 결과 새로운 노드 구조를 가진 새로운 질의 계획(query plan)이 될 수 있다(스텝 406). 질의 계획(query plan)들의 병합은 중간 데이터 구조들의 더 복잡한 구성을 초래할 수 있다. 예를 들어, 표현식 노드들의 병합된 세트는 더 이상 트리 형태가 아닐 수 있다(예를 들어, 단일 루트보다 더 많이 있을 수 있고, 또는 단일 노드로부터 링크들은 또 다른 노드에서 다시 병합할 수 있으나, 그래프는 여전히 비순환적일 수 있다). 상기 결과로 초래된 표현식 노드들의 병합된 세트는 아래 기술된 바와 같이 대응하는 절차적 사양을 생성하도록 처리될 수 있다(스텝 408). 이러한 방식으로, 원본 소스 스키마 및 매핑된 목적지 스키마는 아래 더 자세히 기술된 바와 같이, 데이터 흐름 그래프로 변환될 수 있다. 일부 실시 예에서, 추가적인 기술들은 질의 계획(query plan)들로부터 데이터흐름 그래프들을 생성하기 위해 사용될 수 있다(예를 들어, 본원에 참조로 인용된 미국 공개 번호 2011/0179014에 기술된 바와 같이).
이제 도 5를 참조하면, 소스 스키마 500은 엔티티들 엔티티A, 엔티티B, 엔티티C, 엔티티D, 엔티티F, 및 엔티티G 를 포함하는 ER 다이어그램으로 표현된다. 이 예에서, 목적지 스키마는 목적지 엔티티로서 단일 엔티티 엔티티Z를 포함한다. 상기 기술된 바와 같이, 일 실시 예에서, 소스 스키마에서 엔티티들과 관계들에 의해 형성된 그래프는 단일 루트 엔티티 엔티티A를 갖는 트리이다. 두 엔티티들 간 각각의 관계는 각각의 엔티티에 대한 조인키(join key), 예를 들어 조인키(join key) "ab"는 엔티티A 측에서 사용되고, 조인키(join key) "ba"는 엔티티B 측에서 사용되는, 와 연관된다.
목적지 엔티티 엔티티Z에서 속성들을 정의하는 매핑 규칙들에서 표현식들은 속성들이 되는 파스 트리(parse tree)의 잎들 및 표현식과 집계 연산자들이 되는 파스 트리의 내부 노드들과, 파스 트리(parse tree)로 변환될 수 있다. 일부 예에서, 표현식은 어떤 집계 연산자들도 포함하지 않는 파스 트리를 가지는 "원시" 표현식이 될 수 있다.
일부 예에서, 매핑 규칙들에서 표현식들이 관계 대수를 사용하여 표현된다. 상기 관계 대수는 관계, 예를 들어 테이블, 및 변환을 포함할 수 있다. 일부 예들에서는, 상기 관계가 열과 행을 가지는 테이블(예를 들어, 각각이 테이블 형태로 표현되는 엔티티, 조인(join), 또는 롤업(rollup))이 될 수 있다. 상기 변환은 출력 관계에서 열들을 명시할 수 있다.
일 실시 예에서, 상기 기술된 규정(convention)을 사용하여, 변환에 대한 표기가 다음에 의해 주어진다:
<transform> ::= <element>[, <element>]*
<element> ::= <identifier> || <identifier>=<expression
다음의 예시 변환 표현식들은 변환 표현식에 대응하여 보여지는 바와 같이 영어로 번역된다:
a1 a1 통해 출력에 전달
a1, b1 a1 및 b1을 통해 출력에 전달
t1=a1+b1 임시변수 t1 = a1+b1 만들기
t1=a1+b1, b2 임시변수 t1 = a1+b1 만들기, 및 b2를 통해 전달
일 실시 예에서, 투웨이 조인(2-way join)을 위한 구문(syntax)은 다음과 같이 주어진다:
join(<rel1>/<k12>, <rel2>/k21>)
여기서 rel1 및 rel2은 두 관계들이고 k12 및 k21은 조인키(join key)들이다.
멀티웨이 조인(multi-way join)에 대해, 제1관계는 "중앙(central)" 관계이다. 제2 및 후속 관계들은 상기 중앙 관계와 조인한다(join). 구문은 아래와 같이 주어진다:
join(<rel1>/<k12>/<k22>...,<rel2>/<k21>, <rel3>/<k31>...)
예로서, 엔티티들 A, B, 및 D의 쓰리 웨이 조인(3-way join)은 다음과 같이 설명될 것이다:
join(A/ab/ad, B/ba, D/da)
일부 실시 예에서, 상기 표현식은 다음 연속 투 웨이 조인(2-way join)들 중 하나와 동일하다:
join(A/ab, join(A/ad, D/da)/ba)
join(A/ad, join(A/ab, B/ba)/da)
롤업(rollup)에 대한 구문 표기법(Syntactical notation)은 아래와 같이 주어진다:
rollup(<rel>/<key>)
예로서, 속성 da에 D의 롤업(rollup)은 아래와 같이 설명될 것이다:
rollup(d/da)
일부 예에서, 매핑 규칙의 표현식들은 표현식 노드들을 사용하여 표현된다. 일 실시 예에서, 표현식 노드는 (1) 상기 표현식 노드가 다른 표현식 노드들에 의해 참조되는 것을 허용하는, 식별자; (2) 상기 노드에 대응하는 표현식을 식별하는, 표현식; (3) 표현식이 평가되는 컨텍스트(context) 및 상기 표현식을 평가한 결과 값이 참여할 수 있는 조인/롤업들(joins/rolls)을 식별하는, 컨텍스트 엔티티(context entity); (4) 출력 관계에서 열들을 명시하는, 변환; (5) 상기 기술된 바와 같이, 관계들과 변환들을 가지는, 관계 표현식(또한 노드의 관계 속성이라 불리는); 및 (6) 노드의 입력 관계들에 대응하는 자식 노드들(child nodes) 세트를 포함한다.
매핑 규칙에서 표현식에 해당하는 표현식 노드들을 포함하는 질의 계획(query plan)의 예가 이제 소개될 것이다. 도 6을 참조하면, 질의 계획(query plan) 600은 정의된 매핑 규칙에서 표현식 "sum(d1)"에 해당하는 예시 표현식 노드들 602, 604, 606, 608 세트를 포함한다. 노드 #1, 예를 들어 노드 602, 에서 명시된 상기 표현식 "sum(d1)"는 키 "da"에서 관계 D(노드 #3, 예를 들어 노드 608, 에서 명시된)의 롤업(rollup)(노드 #2, 예를 들어 노드 604, 에서 명시된)을 수행함으로써 평가될 수 있다. 노드 #1에서 명시된 바와 같이, 노드 #2에서 명시된 상기 롤업(rollup)의 결과들은 조인키(join key) da 및 ad로 관계 A(노드 #4, 예를 들어 노드 606, 에서 명시된)와 조인된다(joined).
도 6의 질의 계획(query plan) 600의 표현식 노드들은 아래 표 1에서 보여지는 바와 같이 테이블 형태로 표현될 수 있다. "표현식" 열에서 표현식들의 들여 쓴 자리(indentation)는 노드들 간 부모/자식 관계(parent/child relationship)를 나타낸다. 노드 #2의 "컨텍스트 엔티티(Context Entity)" 필드에서 "-" 기호는 아래 더 자세히 논의된다.
Figure pct00009
일 예에서, 표현식 sum(c1)*a1*b1은 다음과 같이 표현식 노드들을 구성하여 평가될 수 있다. 집계(aggregate) 표현식은 표현식 노드들(예를 위해, 표현식 "sum(d1)"에 대응하는, 도 6 참조)의 트리로 컴파일 될 수 있다. 집계(aggregate) 표현식에 대한 표현식 노드가 생성될 때, 상기 노드에 대한 평가 컨텍스트는 더 나중의 처리때까지 알지 못한다. 예를 들어, "표현식" 열 이외, 표 1에서 열들은 아직 채워질 수 없다. 아래 보이는 바와 같이, 표 2는 초기 표현식 노드를 나타낸다:
Figure pct00010
표현식에서 각각의 집계(aggregate) 연산자에 대한 분리된 표현식 노드는 아래 표 3에서 보여지는 바와 같이 표현식 "sum(c1)"에 대해 생성된다:
Figure pct00011
상기 집계(aggregate) 표현식은 표 4에서 보여지는 바와 같이 집계되는 표현식의 속성들을 포함하여 자식 노드(child node)에 할당된다. 일 실시 예에서, 집계(aggregate) 표현식이 예를 들어 "sum(c1, c2 != 0)" 이라면, 자식 노드(child node)는 (c1, c2)를 포함할 수 있다.
Figure pct00012
상기 표현식들에 대한 컨텍스트 엔티티들(context entities)은 다음과 같이 평가된다. 표 4를 참조하면, 자식 노드(child node) #3은 표현식 c1만 포함하고 집계(aggregation) 연산들은 포함하지 않는다. 따라서, 표현식 c1은 원시 표현식이다. 원시 표현식을 표현식 노드들 트리로 컴파일 하는 알고리즘은 표현식 c1에서 실행될 수 있다. 일 실시 예에서, 상기 알고리즘은 상기 표현식 c1에서 각각의 엔티티에 대한 "집계 세트(aggregation set)"의 결정으로 시작한다. 일반적으로, 집계 세트(aggregation set)는 스키마의 루트 엔티티에 대해 주어진 속성을 집계하는데 필요한 롤업들(rollups)을 판단(measure)한다. 상기 집계 세트(aggregation set)를 결정하기 위해, 매핑 모듈이 각각의 엔티티 e에 대해, e를 스키마의 루트에 연결하는 관계 r을 결정한다. 관계의 다른 쪽은 e'으로 표시된다. 상기 집계 세트(aggregation set)
Figure pct00013
는 r이 다대일 이라면
Figure pct00014
로, 다른 경우라면
Figure pct00015
로 정의된다. 루트 엔티티의 집계 세트(aggregation set) 는 {}이다.
도 5를 참조하면, 소스 스키마 500에서 엔티티들에 대한 예시 집계 세트들(aggregation sets)은 아래와 같다:
Entity A {} 엔티티 A는 루트 엔티티이다.
Entity B {} B에서 A로의 관계는 일대다이다.
Entity C {C} C에서 B로의 관계는 다대일이다.
Entity D {D} D에서 A로의 관계는 다대일이다.
Entity E {E} E에서 A로의 관계는 다대일이다.
Entity F {E} F에서 E로의 관계는 일대다이다.
Entity G {E,G} G에서 E로의 관계는 다대일이다.
주어진 표현식에서, 최대 집계 세트(maximum aggregation set) (MAS)는 그 표현식에서 언급된 임의의 엔티티의 가장 큰 집계 세트 (aggregation set) 이다. 일부 예에서, 상기 MAS는 고유할 수 있다. 예를 들어, 표현식 b1+e1+g1를 고려해 보자. 이 표현식은 엔티티 B, E, 및 G를 참조한다. 각각 대응하는 집계 세트 (aggregation set)는 {}, {E}, 및 {E,G} 이다. 표현식에 대한 상기 MAS는 그러므로 {E,G}이다.
일부 예에서, 고유하지 않은 MAS는 허용되지 않는다. 예를 들어, 상기 표현식 c1*e1은 각각 집계 세트 (aggregation set) {C}및 {E}와 엔티티 C 및 E를 언급한다. 이 경우, 표현식 c1*e1에 대한 고유한 MAS가 없다. 표현식 e1*f1은 각각 집계 세트(aggregation set) {E} 및 {E}와 엔티티 E 및 F를 언급한다. 동일한 집계 세트 (aggregation set)를 가지는 다수의 엔티티들이 있음에도 불구하고, {E}의 MAS는 이 경우에 고유하다.
표현식에 대한 평가 컨텍스트는 MAS를 가진 엔티티이고, 이는 스키마의 루트 엔티티에 가장 가까운 것이다. 일반적으로, 최상위 표현식에 대한 평가 컨텍스트는 루트 엔티티이다. 예를 들어, 표현식 a1+b1을 고려해 보자. MAS는 {}이다. 엔티티 A 및 B 둘 다 {}를 집계 세트 (aggregation set) 로 갖는다. 그러나, A가 루트에 가장 가까우므로, 결과적으로 평가 컨텍스트로 사용된다. 또 다른 예에서, 표현식 e1+g1을 고려해 보자. MAS는 {E, G}이다. 결과적으로, 평가 컨텍스트는 G가 된다.
표현식 노드에 대한 평가 컨텍스트가 선택되면, 표현식 노드는 선택된 평가 컨텍스트에 관한 정보로 채워진다. 다시 표 4를 참조하면, c1에 대한 평가 컨텍스트는 C이다. 따라서, 업데이트된 표현식 노드는 아래 표 5에서 보여지는 바와 같다.
Figure pct00016
일 실시 예에서, 표현식 노드에 대한 "집계 관계(aggregation relationship)"가 계산된다. 집계(aggregation)에 관한 집계 관계(aggregation relationship) 는 평가 컨텍스트를 루트 엔티티에 연결하는 속성이다. 현재 예에서, 표현식 c1에 대해, 평가 컨텍스트는 C이고, 집계 관계(aggregation relationship)는 cb이다. 일 예에서, 표현식 e1*g1에 대해, 평가 컨텍스트는 G이고 집계 관계(aggregation relationship)는 ge이다. 일 예에서, 표현식 f1에 대해, 평가 컨텍스트는 E이고 집계 관계(aggregation relationship)는 ea이다.
상기 계산된 집계 관계(aggregation relationship)에 중간 결과를 롤업(rollup)하기 위해, 집계 관계(aggregation relationship)에 대한 키(key)가 표현식 노드에 부가된다. 전술한 바와 같이, C1에 대한 집계 관계(aggregation relationship)는 cb이다. 따라서, 상기 표현식 노드는 아래 표6에서 보여지는 바와 같이 업데이트된다.
Figure pct00017
자식 노드(child node), 예를 들어 노드 #3이 이제 컴파일 될 수 있다. 자식 노드(child node)가 중첩 집계들(nested aggregates)을 포함한다면, 아래에 기술된 바와 같이, 중첩 집계(nested aggregate) 컴파일 알고리즘이 재귀적으로 호출될 수 있다. 따라서 상기 표현식 노드는 아래 표 7에 보여지는 바와 같이 업데이트 된다.
Figure pct00018
표 1 - 8과 연관된 상기 기술된 계산들에 기초하여, 상기 표현식 노드는 아래 표 8에 보여지는 바와 같이 채워질 수 있다.
Figure pct00019
상기 컨텍스트 엔티티(context entity)는 "-"기호가 따르는 표현식의 평가 컨텍스트이다. 노드 #2에서 "-" 기호는 집계(aggregation) 수준이 소실된 것을 의미한다. 예를 들어, C-에 대한 집계 세트(aggregation set)가 {}인 반면, C에 대한 집계 세트(aggregation set)는 {C}이다. 이러한 조정 없이는, b1+ sum(c1) 에 대한 MAS는 {C}가 될 것이고 표현식에 대한 평가 컨텍스트는 B대신 C가 될 것이다.
관계는 롤업 관계(rollup relation)의 발신키(outgoing key), cb, 상에 자식 노드(child node)의 롤업(rollup)이다. 변환은 임시 변수 t1(임시 변수들은 이러한 예들에서 다른 임시 변수들을 구별하는 숫자가 따르는 문자 "t"를 사용하여 소개된다.)에 집계된 값을 할당하고 롤업 키(rollup key), cb를 통해 전달한다.
원 노드, 예를 들어 표 2의 노드 #1, 는 이제 다음과 같이 컴파일 된다. 변수 t1은 집계 노드를 대체한다. 따라서, 원 표현식 sum(c1) * a1 * b1 은 t1 * a1 * b1 인 것처럼 취급된다. 이러한 항들(terms)은 각각 컨텍스트 엔티티들(context entities) C-, A, 및 B 와 연관된다. 이러한 엔티티들 각각에 대한 집계 세트(aggregation set)는 {} 이어서, MAS가 {}이고 평가 컨텍스트가 A이다. 업데이트된 표는 아래 표9에 보여지는 바와 같다.
Figure pct00020
속성들 sum(c1) 및 b1 둘로의 경로들은 ba 관계를 교차한다. 결과적으로, 아래 표 10에서 보여지는 바와 같이 자식 노드(child node)는 B를 위해 생성되고 조인(join)이 삽입된다.
Figure pct00021
B 및 C에서 오는 속성들과, 자식 노드(child node)에 의해 참조되는 표현식 (sum(c1), b1)에 대한 평가 컨텍스트는 B이다. 그러므로 노드는 b1에 대해 생성된다. 따라서, 표현식 노드들은 아래 표11에 보여지는 바와 같이 업데이트된다.
Figure pct00022
상기 간단히 언급된 바와 같이, 집계들(aggregates)은 명시적 또는 암시적으로, 중첩될(nested)수 있다. 일반적으로, 중첩되는 정도는 집계되는 값들의 집계 세트(aggregation set)의 카디널리티(cardinality)와 일치한다. 예를 들어, g1은 집계 세트{E, G}를 가진다. 따라서, g1을 포함하는 집계들(aggregates)은 두 수준의 집계(aggregation), 예를 들어 max(sum(g1)),을 갖는다.
일부 예에서, 중첩 집계 컴파일 알고리즘(nested aggregate compilation algorithm)은 컴파일 시에 중첩되지 않은 집계들(un-nested aggregates)을 중첩된 집계들(nested aggregates)로 변환할 수 있다. 예를 들어, sum(g1)은 sum(sum(g1))이 되고, count(g1)은 sum(count(g1))이 된다. 이러한 방식에 있어, 일 실시 예에서, 직접 중첩 집계(nested aggregate)를 입력하는 것이 금지될 수 있다.
일부 예에서, 중첩 집계들(nested aggregates)이 위임될 수 있다. 이러한 방식에 있어, max(sum(g1)) 및 sum(sum(g1) * e1))같은 집계들(aggregates)이 명시될 수 있다.
일부 예에서, 중첩 집계 컴파일 알고리즘(nested aggregate compilation algorithm)은 단순히 중첩 집계들을 통과하는 동안 컴파일 시에 중첩되지 않은 집계들(un-nested aggregates)을 중첩된 집계들(nested aggregates)로 변환할 수 있다. 예를 들어, max(sum(g1))가 변경되지 않고 중첩 집계 컴파일 알고리즘을 통해 전달되는 동안, sum(g1)은 컴파일 시 sum(sum(g1)) 로 변환된다.
예시 중첩 집계(nested aggregate) 표현식 max(sum(g1))을 고려해 보자. 위에서 설명된 표현식 노드 기술들을 사용하여 다음의 표들 12 - 15가 작성될 수 있다.
Figure pct00023
이전과 마찬가지로, 분리된 노드가 생성된다:
Figure pct00024
분리된 노드들의 제2 수준이 생성된다:
Figure pct00025
노드 #7 및 노드 #6이 직접 컴파일 될 수 있다:
Figure pct00026
표 12 - 15에 기초하여, 노드 #3이 컴파일 될 수 있다:
Figure pct00027
마지막으로, 표 15에 기초하여, 노드 #1이 컴파일 될 수 있다:
Figure pct00028
일부 예에서는, 하나 이상의 엔티티가 동시에 매핑될 수 있다. 도 7을 참조하면, 두 목적지 엔티티들 X 및 Z를 포함하는 목적지 스키마(destination schema)가 소개된다. 엔티티 X에 대한 매핑 규칙에서 표현식들은 루트 엔티티로서 엔티티 E와 함께 해석될 수 있다. 엔티티 Z에 대한 매핑 규칙에서 표현식들은 루트 엔티티로서 엔티티 A와 함께 해석될 수 있다. 일부 예에서, 상기 매핑 규칙들은 속성들에 대한 매핑들, 예를 들어 ae는 zx에 매핑 및 ea는 xz에 매핑, 을 포함한다.
일부 예에서, 매핑 규칙들은 선택들(selections) 및 롤업들(rollups) 같은 관계 연산들을 포함한다. 도 8을 참조하면, 선택(selection), 예를 들어 a1>0, 및 롤업(rollup), 예를 들어 rollup(e1), 을 포함하는 매핑 규칙들은 도 7에서와 같이 동일한 소스 스키마와 목적지 스키마에 대해 도시된다. 롤업들(rollups)로 매핑 규칙을 컴파일 함에 있어, 엔티티 E로부터 나와 루트로 간주될 의사 엔티티(pseudo-entity) E'으로 진행되는 다대일 관계가 가정될 수 있다.
일부 예에서, 소스 스키마는 트리 형태로 존재할 수 없다. 예를 들어, 소스 스키마는 순환적일 수 있다. 도 9a를 참조하면, 순환 스키마가 도시된다. 여기서, "고객(Customer)"와 "상점(Store)" 엔티티 둘 다 동일한 엔티티 "우편번호(Zipcodes)" 로부터의 출력을 사용한다. 상기 순환 스키마는 에일리어싱 알고리즘(aliasing algorithm)에 의해 깨질 수 있다. 예를 들어, 도 9b에 도시된 바와 같이, 에일리어싱 알고리즘(aliasing algorithm)은 우편번호와 "고객(Customer)" 및 "상점(Store)" 간의 관계의 두 개의 에일리어스 카피(aliased copies)가 각각 생성되도록 유발할 수 있다. 이러한 방식으로, 상기 순환은 제거될 수 있다. 도 9b의 스키마는 이제 최종 사용자가 "우편번호(Zipcodes)" 엔티티에서 더 정확하게 속성들(예를 들어 고객의 주 또는 상점의 주)을 명시하는 것을 허용한다.
한번 표현식들이 질의 계획(query plan)들로 변환되면, 트리들은 데이터 흐름 그래프들로 변환될 수 있다. 일 실시 예에서, 데이터흐름 그래프를 생성하기 위한 절차는 1) 불필요한 조인들(joins), 불필요한 집계들(aggregates), 또는 동일 엔티티에 대응하는 데이터의 불필요한 스캐닝을 피하도록 표현식들을 병합하는 단계; 2) 선택적으로, 관계 연산자들 세트를 최적화하는 단계; 및 3) 병합 또는 최적화로부터의 결과를 데이터 흐름 그래프로 옮기는 단계를 포함한다.
시스템의 모든 표현식들이 질의 계획(query plan)으로 컴파일 되면, 축적된 표현식들은 모든 표현식 노드들의 관계 표현식 필드상 공통 서브 표현식들(subexpressions)의 제거를 수행하여 병합된다. 이러한 병합의 예를 아래 보이고 있다. 표 18에서 두 개의 노드가 소개된다:
Figure pct00029
표 18의 두 개의 노드들은 아래 표 19에서 보이는 바와 같이 단일 노드 #3으로 병합될 수 있다:
Figure pct00030
새로운 표현식 노드는 동일한 관계 표현식을 가지고, 그것의 변환 필드는 병합된 노드들의 변환의 결합 리스트이다. 병합된 질의 계획(query plan)들은 병렬 운영 환경 106에서 실행되는 매핑 모듈에 의해 하나 이상의 데이터 흐름 그래프들로 변환될 수 있다. 예를 들어, 적합한 그래프 컴포넌트들이 삽입될 수 있으며, 표현식 노드들에 기초한 컴포넌트들에 변환들이 추가될 수 있고, DML 코드가 중간 결과들에 대해 생성될 수 있다. 그래프 컴포넌트들의 특정 유형들은 특정 유형 표현식 노드들의 연산들을 수행하는데 사용된다. 특정 엔티티에서 데이터를 스캔하는 표현식 노드는 그 엔티티에 대응하는 데이터세트의 레코드들(예를 들어, 데이터베이스에서의 파일 또는 테이블)을 스캔하는 컴포넌트로 구현될 수 있다. 컴포넌트는 예를 들어, 데이터베이스에서 레코드들을 저장하는 파일을 읽거나 테이블을 질의하여 레코드들에 액세스할 수 있다. 표현식 노드에 의해 명시된 엔티티의 속성은 테이블에서 레코드들의 필드에 해당할 수 있다. 표현식 노드에서 집계(aggregation)는 롤업(rollup) 연산을 수행하는 컴포넌트를 사용하여 구현될 수 있다. 표현식 노드에서 조인(join)은 조인(join) 연산을 수행하는 컴포넌트를 사용하여 구현될 수 있다.
다음은 다른 매핑 규칙들에 대한 질의 계획(query plan)들의 생성, 질의 계획(query plan)들의 병합, 및 병합된 질의 계획(query plan)들로부터 데이터흐름 그래프 생성의 예이다. 이 예에서, 각각이 소스 스키마에서 엔티티들의 속성들(a1, b1, 및 e1)을 참조하는 단일 출력 속성(각각 x0 및 x1)에 대한 단일 표현식을 포함하는, 두 매핑 규칙들이 수신된다.
x0 = a1 * b1
x1 = sum(b1 * e1)
이러한 표현식들 각각은 표현식 노드들의 표현식 트리에 상응한다. 속성 값 x0에 대한 입력 표현식을 위한 표현식 트리가 다음과 같다.
Figure pct00031

속성값 x1에 대한 입력 표현식을 위한 표현식 트리가 다음과 같다.
Figure pct00032

두 트리들로부터 표현식 노드들은 매핑 규칙들의 결합된 결과들을 나타내도록 부가된 부가적 표현식 노드("끝(END)"라고 라벨 붙여진)로, 아래 보여지는 바와 같이 결합된다. 부가적 표현식 노드는 A에 대한 기본 키(primary key)(예를 들어, aa)상에 두 최상위 표현식들(#1 및 #4)을 함께 조인(join)하는 것에 해당한다.
Figure pct00033

엔티티 A를 식별하는 관계 표현식의 세 개의 인스턴스가 있어, 매핑 모듈이 그것들을 병합하고 노드 식별자들에 대한 참조를 업데이트한다. 표현식 노드 #2, #5,및 #10이 제거되고 이전 식별자들 중 하나(이 예에서, 식별자 #2)에 병합된 단일의 새로운 병합 노드로 대체된다. 새로운 노드는 병합된 노드들 각각과 동일한 컨텍스트와 관계 표현식들을 가지고, 변환 값은 병합된 노드들의 변환 값의 결합 리스트이다.
Figure pct00034

표현식 노드 #3 및 #11은 엔티티 B를 리스팅하는 두 관계 표현식이 있기 때문에 병합된다. 이러한 경우에, 상기 표현식 노드들은 동일하므로(그것들의 원 트리에서 계층 구조 수준들을 제외하고) 노드 #11이 제거되고 노드 #3은 새로운 병합된 노드를 나타낸다.
Figure pct00035

노드 ID들에 대한 참조가 업데이트되면, 관계 표현식 join(#2/ab, #3/ba)을 리스팅하는 두 개의 노드가 있어서, 매핑 모듈이 노드 #1 및 #9를 아래와 같이 병합한다.
Figure pct00036

매핑 모듈은 다음과 같이 결합된 표현식 노드들(결합된 질의 계획(query plan))로부터 데이터흐름 그래프를 생성할 수 있다. 질의 계획(query plan)에서 모든 표현식 노드에 대해, 매핑 모듈은 상기 표현식 노드들로 명시된 연산들을 수행하도록 구성된 컴포넌트들을 생성할 수 있다. 컴포넌트들의 구성은: 컴포넌트 유형의 선택, 변환 함수의 생성, 조인(join) 또는 롤업(rollup)에 대한 키 필드의 선택, 및 출력 포맷의 생성 중 임의의 것을 포함한다. 예를 들어, 출력 포맷은 노드에 의해 생성되는 모든 속성에 대해 대응하는 필드를 가지는 레코드 구조를 포함할 수 있다.
질의 계획(query plan)에서 표현식 노드들 간 종속 링크들은 데이터 흐름 그래프에서 데이터 흐름 링크들에 대응한다. 이와 관련하여, 컴포넌트는 대응하는 표현식 노드의 자식 노드(child node)들의 출력을 입력으로 수신할 수 있다. 예를 들어, 표현식 노드 E0의 관계 속성이 표현식 노드 E1 및 입력을 명시한다면, 매핑 모듈은 E1에 대응하는 컴포넌트의 출력 포트로부터 E0에 대응하는 컴포넌트의 적절한 입력 포트로의 데이터 흐름을 생성한다. 다수 표현식 노드들이 동일한 자식 노드(child node)의 출력을 사용하는 상황에서는, 복제 컴포넌트(또는 동등한)는 자식 노드(child node)로부터 다수 출력들에 제공되는 데이터의 카피로 데이터 흐름 그래프에 삽입될 수 있다. 그 뒤에, 복제(replicate) 노드의 각각의 출력은 다수 표현식 노드들 중 하나에 입력으로 사용될 수 있다. 상기 예에서 끝(END) 표현식 노드의 출력은 액세스 가능한 위치(예를 들어, 저장소(repository) 104 또는 외부 데이터 스토어 112에 저장된 파일에서)에서 계산 결과 값들을 저장하는 컴포넌트에 데이터 흐름을 경유하여 연결될 것이다.
표현식 노드들의 질의 계획(query plan)에 대응하는 데이터 흐름 그래프를 생성하기 위한 절차의 예는 세 개의 별개 단계를 가질 것이다: 컴포넌트들의 생성, 데이터 흐름들의 생성, 및 데이터 포맷들의 생성. 그러나 다른 예들에서 세 단계에 포함된 다양한 스텝들이 필요에 따라, 동일한 결과를 산출하면서 혼합될 수 있다. 상기 절차는 구축되는 데이터 흐름 그래프에서 포트들과 표현식 노드들에서의 입력들 및 출력들 간 대응관계를 저장하고, 이러한 포트들과 연관된 데이터 포맷들을 저장하기 위한 작업 스토리지(working storage)를 사용한다. 작업 스토리지(working storage)에 저장된 이러한 정보는 임의의 다양한 방식으로 구조화될 수 있다. 예를 들어, 레코드들의 컬렉션은 다음 속성들을 가지며 저장될 수 있다.
표현식 노드 ID: 표현식 노드의 식별자.
출력 포트: 식별된 표현식 노드(있다면)에 의해 생성된 값에 대응하는 출력 포트. 상기 출력 포트는 <구성요소-라벨>.<포트-이름> 형태의 문자열에 의해 식별될 수 있다.
입력 포트들: 식별된 표현식 노드(있다면)의 관계 속성에 의해 참조되는 각각의 표현식 노드에 대응하는 입력 포트들. 일부 실시 예에서, 입력 포트들의 수는 표현식 노드의 유형에 따른다(예를 들어, 다음 예에서 0, 1, 또는 2 입력 포트들)
상기 컴포넌트 생성 단계는 질의 계획(query plan)에서 표현식 노드들 각각에 대응하는 관련된 연산자와 컴포넌트들을 생성한다. 이러한 단계는 질의 계획(query plan)에서 표현식 노드들의 리스트를 가로지르고 생성된 데이터 흐름 그래프의 대응하는 컴포넌트들(예를 들어, 그러한 컴포넌트들을 구현하는 데이터 구조 내 저장된) 각각에 대한 관련된 정보를 전송하는 매핑 모듈을 포함한다.
일부 표현식 노드들은 단일 엔티티로 구성된, "원시 관계(primitive relation)"로 분류되는, 관계 표현식을 포함한다. 예를 들어, 그러한 엔티티에 대한 데이터가 입력 파일에 저장되면, 매핑 모듈은 메타데이터 저장소(repository) 같은 소스로부터 그러한 파일 이름과 그러한 파일과 관련된 레코드 포맷을 결정한다. 원시 관계(primitive relation)를 가지는 표현식 노드들에 대한 컴포넌트들을 생성하는 두 가지 다른 경우들이 있다.
원시 관계(primitive relation)를 가지는 표현식 노드들에 대한 컴포넌트들을 생성하는 제 1 경우에서, 표현식 노드에 대한 변환은 어떠한 임시 변수도 정의하지 않는다. 이러한 경우에, 표현식 노드는 데이터 흐름 그래프에서 입력 파일 컴포넌트(예를 들어, "입력 파일(Input File)" 연산자 유형을 갖는 컴포넌트)에 의해 표현된다. 파일이름(Filename) 파라미터는 메타데이터 저장소(repository)로부터 그 값으로 입력 파일 이름이 할당된다. 컴포넌트 라벨은 그 값으로 <표현식 노드 ID>가 할당된다. 리드(read) 포트의 레코드 포맷은 메타데이터 저장소(repository)로부터 레코드 포맷이 할당된다. 레코드는 <표현식 노드 ID>와 동일한 표현식 노드 ID와 작업 스토리지(working storage)에 저장되고, 입력 파일 컴포넌트의 리드(read) 포트를 출력 포트로 식별한다.
원시 관계(primitive relation)을 가지는 표현식 노드들에 대한 컴포넌트들을 생성하기 위한 제 2 경우에서, 표현식 노드에 대한 변환은 하나 이상의 임시 변수들을 정의한다. 이러한 경우에, 표현식 노드는 데이터 흐름 그래프에서 입력 파일(Input File) 컴포넌트와 리포맷(Reformat) 컴포넌트에 의해 표현된다. 리포맷(Reformat) 컴포넌트의 라벨은 <표현식 노드 ID>.Reformat이고, 리포맷(Reformat) 컴포넌트의 변환 함수는 표현식 노드의 변환에 기초하여 생성된다. 데이터 흐름은 입력 파일(Input File) 컴포넌트의 리드(read) 포트를 리포맷(Reformat) 컴포넌트의 인(in) 포트로 연결한다. 레코드는 <표현식 노드 ID>와 동일한 표현식 노드 ID와 작업 스토리지(working storage)에 저장되고, 리포맷(Reformat) 컴포넌트의 출력 포트를 출력 포트로 식별한다.
상기 예에서 질의 계획(query plan)은 병합된 표현식 노드들의 다음의 최종 세트를 가진다.
Figure pct00037

제1 경우의 예로서, 이 예에서 표현식 노드 #2는 단일 엔티티 A와 원시 관계(primitive relation)를 가진다. 엔티티 A에 대해, 메타데이터 저장소(repository)는 다음 파일 이름과 레코드 포맷을 제공한다.
Figure pct00038

이러한 표현식 노드 #2에 대해 매핑 모듈에 의해 생성되는 입력 파일(Input File) 컴포넌트는 다음과 같이 구성될 것이다.
Figure pct00039

작업 스토리지(working storage)에 저장되는 레코드는 다음 정보를 포함할 것이다.
Figure pct00040

제2 경우의 예로서, 다음은 (상기 예에서 없었던) 대체 가능한 표현식 노드이다.
Figure pct00041

엔티티 A에 대해 동일한 파일 이름과 레코드 포맷이 이 예에서 가정된다. 이러한 표현식 노드에 대해 매핑 모듈에 의해 생성되는 입력 파일(Input File) 컴포넌트와 리포맷(Reformat) 컴포넌트는 다음과 같이 구성될 것이다.
Figure pct00042
Figure pct00043

작업 스토리지(working storage)에 저장된 레코드는 다음 정보를 포함할 것이다.
Figure pct00044

리포맷(Reformat) 컴포넌트의 입력과 출력들에 대한 레코드 포맷들은 아래 기술된, 데이터 포맷 생성 단계에서 제공될 것이다.
어떤 표현식 노드들은 조인(join) 연산 또는 롤업(rollup)연산으로 구성되는 관계 표현식을 포함한다. 이러한 표현식 노드들에 대해, 매핑 모듈은 조인(Join) 컴포넌트 또는 롤업(Rollup) 컴포넌트를 각각 생성한다. 각각 유형의 컴포넌트의 라벨은 <표현식 노드 ID>이다. 조인(join) 연산자의 키 필드 또는 롤업(rollup)연산자의 키 필드는 관계 표현식에서 연산들에 대한 인수로부터 결정된다. 각각 유형의 컴포넌트의 변환 함수는 표현식 노드의 변환에 기초해 생성된다. 조인(Join) 컴포넌트에 대해, 매핑 모듈은 조인(join) 연산에 대한 인수 가운데 어느 것에서 표현식 노드의 변환에서 주어진 항이 비롯되는지를 결정한다. 레코드는 <표현식 노드 ID>와 동일한 표현식 노드 ID로 작업 스토리지(working storage)에 저장되고, 조인(join) 또는 롤업(rollup) 연산의 입력들과 출력을 레코드의 입력 포트들과 출력 포트로 식별한다.
조인(Join) 컴포넌트를 생성하는 예는 상기 예에서 표현식 노드 #1에 대해 아래 보여지고, 롤업(Rollup) 컴포넌트를 생성하는 예는 상기 예의 표현식 노드 #6에 대해 아래 보여진다.
조인(Join) 예에서, 표현식 노드 #1에 대한 최종 병합된 변환은 a1, b1, aa, 및 ae에 대한 값들을 필요로 한다. 이러한 값들은 표현식 노드 #2 또는 표현식 노드 #3 중 하나로부터 제공된다. 표현식 노드 #2의 병합된 변환은 a1, aa, 및 ae에 대한 값을 제공하고, 표현식 노드 #3의 병합된 변환은 b1에 대한 값을 제공한다. 표현식 노드 #1의 관계 속성에서 조인(join) 연산 내 인수들의 위치에 기초하여, 표현식 노드 #2는 생성된 조인(Join) 컴포넌트의 in0 포트에 대응하고, 표현식 노드 #3은 생성된 조인(Join) 컴포넌트의 in1 포트에 대응한다. 이러한 포트 할당은 조인(Join) 컴포넌트의 변환 함수를 구성하도록 사용될 수 있는, 다음 식별자들에 대응한다.
Figure pct00045

표현식 노드 #1에 대해, 매핑 모듈에 의해 생성되는 조인(Join) 컴포넌트는 다음과 같이 구성될 것이다.
Figure pct00046

작업 스토리지(working storage)에 저장된 레코드는 다음 정보를 포함할 것이다.
Figure pct00047

롤업(Rollup) 예에서, 표현식 노드 #6에 대한 최종 병합된 변환은 t3 및 ea 값들을 요구한다. 이러한 값들은 표현식 노드 #7의 병합된 변환으로부터 제공된다. 인(in)이라 라벨 붙은 단일 입력 포트, 및 아웃(out)이라 라벨 붙은 단일 출력 포트가 있다. 표현식 노드 #6에 대해, 매핑 규칙에 의해 생성되는 롤업(Rollup) 컴포넌트는 다음과 같이 구성될 것이다.
Figure pct00048

작업 스토리지(working storage)에 저장된 레코드는 다음 정보를 포함할 것이다.
Figure pct00049

표현식 노드 #2에 대한 입력 파일(Input File) 컴포넌트, 표현식 노드 #1에 대한 조인(Join) 컴포넌트, 및 표현식 노드 #6에 대한 롤업(Rollup)컴포넌트에 부가하여, 나머지 표현식 노드들에 대한 컴포넌트들은 상기 기술된 바와 유사한 방식으로, 다음 연산자 유형들로 생성된다.
Figure pct00050

이러한 컴포넌트들 각각이 생성되면, 작업 스토리지(working storage)는 다음 레코드들을 포함할 것이다.
Figure pct00051

병합된 질의 계획(query plan)의 남은 표현식 노드들 각각에 대응하는 컴포넌트들(예를 들어, 식별자가 붙은 노드들: #1, #2, #3, #4, #6, #7, #8, 끝(END))의 시각적 표현은 그것들이 데이터 흐름에 의해 서로 연결되기 전에, 도 10a에 도시된다.
데이터 흐름 생성 단계는 매핑 모듈에 의해 수행되는 두 절차를 포함한다. 첫 번째 절차에서, 매핑 모듈은 필요하다면, 복제(Replicate) 컴포넌트들을 특정 위치에 삽입한다. 특정 표현식 노드의 식별자가 하나 이상의 표현식 노드의 관계 속성에서 참조된다면, 매핑 모듈은 복제(Replicate) 컴포넌트를 그 컴포넌트로부터 나오는 데이터의 대응하는 카피 수를 제공하도록 특정 표현식 노드에 대응하는 컴포넌트의 출력 포트에 연결한다. 예를 들어, 표현식 노드 E가 하나 이상의 다른 표현식 노드에 의해 참조된다면, E.Replicate 라고 라벨 붙은 복제(Replicate) 컴포넌트가 부가되고 데이터 흐름이 작업 스토리지(working storage) 레코드에서 명시된 E의 출력 포트로부터 E.Replicate.in이라 라벨 붙은 새로운 복제(Replicate) 컴포넌트의 입력 포트로 연결된다. 매핑 모듈은 또한 작업 스토리지(working storage) 레코드에서 E.Replicate.out이라 라벨 붙은 새로운 복제(Replicate) 컴포넌트의 출력 포트를 표현식 노드 E의 출력 포트의 새로운 값으로 저장한다. 상기 예에서, 두 개의 표현식 노드(#1 및 #2)는 하나 이상의 다른 표현식 노드에 의해 참조된다. 그러므로 매핑 모듈은 이 절차를 이러한 두 개의 표현식 노드들에 적용한다. 이는 도 10b에 도시된 바와 같이 대응하는 컴포넌트(#1 및 #2)에 연결된 두 개의 복제(Replicate) 컴포넌트(#1.Replicate 및 #2.Replicate)의 데이터 흐름 그래프에 대한 부가를 초래한다. 이러한 절차 후, 작업 스토리지(working storage)는 다음 레코드들을 포함할 것이다.
Figure pct00052

데이터 흐름 생성 단계의 두 번째 절차에서, 매핑 모듈은 포트들을 표현식 노드들 세트를 가로질러 데이터 흐름들로 연결한다. 표현식 노드 E1의 관계 속성이 또 다른 표현식 노드 E2의 식별자를 참조한다면, 매핑 모듈은 E2에 대한 작업 스토리지(working storage) 레코드에 기록된 바와 같이, E2의 출력 포트로부터, E1에 대한 작업 스토리지(working storage) 레코드에 기록된 바와 같이, E1의 대응하는 입력포트로의 데이터 흐름을 생성한다. 예를 들어, 표현식 노드 #4의 관계 속성은 표현식 노드 #2 및 #6의 조인(join) 연산을 가진다. 그러므로, 노드 #4의 첫 번째 입력 포트(#4.in0)는 노드 #2(#2.Replicate.out)의 출력 포트에 연결되고, 노드 #4의 두 번째 입력(#4.in1)은 노드 #6(#6.out)의 출력에 연결된다. 매핑 모듈은 도 10c에서 도시된 데이터 흐름 그래프가 되도록, 이 프로세스를 지속한다. 데이터 흐름 그래프의 시각적 표현이 사용자에 대해 명확성을 제공하도록 배열된 컴포넌트들로 제공될 수 있는 반면, 데이터 흐름 그래프의 기능성은 컴포넌트들의 시각적 배열이 아니라, 그 연결성에 의해 결정된다.
데이터 흐름 생성 단계의 두 번째 절차 후, 매핑 모듈은 데이터 흐름들에 의해 임의의 기존 컴포넌트들이 연결되기 위한 임의의 부가적 컴포넌트들이 있는지 결정한다. 예를 들어, 일부 실시 예에서, 매핑 모듈은 데이터 흐름 그래프에 의해 생성되는 최종 출력을 희망하는 목적지(예를 들어 저장 매체)에 제공하기 위해 컴포넌트를 부가한다. 도 10d는 데이터 흐름 그래프를 END.out이라 라벨 붙은, 끝(END) 컴포넌트의 출력 포트에 링크로 연결된 출력 파일 컴포넌트와 함께 도시한다. 출력 파일 컴포넌트에 의해 기록되기 위한 파일의 이름은 사용자 또는 메타 데이터 저장소(repository) 같은 외부 소스로부터 얻어질 수 있다.
레코드 포맷 생성 단계에서, 매핑 모듈은 레코드 포맷이 아직 제공되지 않은 임의의 포트에 대한 레코드 포맷들을 생성한다. 이 예에서, 입력 파일(Input File) 컴포넌트들(표현식 노드 #2, #3, 및 #8에 대한)의 레코드 포맷은 이미 다음과 같이, 메타데이터 저장소(repository)로부터 획득된다.
Figure pct00053

하기 더 자세히 기술된 바와 같이, 매핑 모듈은 소스 컴포넌트들(예를 들어, 어떤 입력 포트도 없는 컴포넌트들)로부터 목적지 컴포넌트들(예를 들어, 어떤 출력 포트도 없는 컴포넌트들)로 데이터 흐름 그래프를 가로지름에 의해, 및 각각의 컴포넌트에 대해, 그 컴포넌트의 출력 포트에 대한 적절한 레코드 포맷을 생성하여 다른 컴포넌트들의 레코드 포맷들을 생성한다. 그런 다음 각각의 컴포넌트의 출력 포트들에서 레코드 포맷은 데이터 흐름에 의해 그 출력 포트에 연결된 입력 포트에 전파(예를 들어, 카피)된다. 예를 들어, 조인(Join) 컴포넌트 #1에 대해, 그 입력 포트 in0 및 in1에 대한 레코드 포맷들은 두 연결된 입력 파일(Input File) 컴포넌트로부터 각각 전파된 레코드 포맷들과 동일하다: in0.format = #2.read 및 in1.format = #3.read.
복제(Replicate) 컴포넌트의 출력 포트의 레코드 포맷은 그 복제(Replicate) 컴포넌트에 연결된 컴포넌트의 출력 포트의 레코드 포맷과 동일한, 그것의 입력 포트의 레코드 포맷과 동일하다. 그래서, 이러한 예에서, component #2.Replicate의 출력 포트에 대한 레코드 포맷은 다음과 같다.
Figure pct00054

조인(Join) 컴포넌트, 리포맷(Reformat) 컴포넌트, 또는 롤업(Rollup)컴포넌트의 출력 포트에 대한 레코드 포맷은 그 컴포넌트의 변환 함수 검사로 결정된다. 변환 함수가 입력 필드를 출력 필드에 복사한다면, 레코드 포맷은 상기 입력 필드의 유형과 동일한 그 출력 필드에 대한 유형을 포함할 것이다. 변환 함수가 표현식에 기초한 출력 필드를 결정한다면 레코드 포맷은 그 표현식에 의해 반환되는 값을 저장하기에 적합한 출력 필드를 포함할 것이다. 예를 들어, 상기 제시된 조인(Join) 컴포넌트, #1의 변환 함수에 대해, 출력 필드 out.aa, out.b1 및 out.ae가 각각의 입력 필드 in0.aa, in1.b2, 및 in0.ae로부터 복사되어서, 출력 필드의 유형들이 각각의 입력 필드의 유형들과 같다. 나머지 출력 필드 out.t1은 표현식 in0.a1 * in1.b1로 정의된다. 두 정수의 곱은 정수이므로, 출력필드 out.t1의 유형도 정수다. 이러한 입력 및 출력 포트들에 대해 결정된 레코드 포맷들은 조인(Join) 컴포넌트 #1에 대한 다음의 완료된 구성 정보를 낳는다.
Figure pct00055
Figure pct00056

이 프로세스는 컴포넌트 별로, 입력들로부터 출력들로, 모든 레코드 포맷들이 결정될 때까지 반복된다. 이 예에서, 레코드 포맷 생성 단계는 조인(Join)컴포넌트 끝(END)의 출력 포트에 대한 레코드 포맷을 결정하는 것으로 끝난다. 일부 실시 예에서, 본원에서 참조된 미국 특허 번호 7,877,350에 더 상세히 기술된 기술들을 사용하여, 레코드 포맷 생성 단계는 레코드 포맷들, 또는 컴포넌트에 대한 다른 메타데이터의 도출(derivation)을 포함할 수 있다.
생성된 데이터 흐름 그래프의 구체적 특성들은 엔티티들에 의해 표시되는 데이터가 저장되는 위치를 포함하는, 시스템 100의 다양한 특성들에 달려 있을 수 있다. 예를 들어, 엔티티 B 및 E에 의해 표현되는 데이터가 관계형 데이터베이스에 저장되고, 최종 출력이 관계형 데이터베이스에 저장된다면, 소스 컴포넌트 #3 및 #8의 연산자 유형들은 입력 테이블일 것이고, 목적지 컴포넌트 끝(END)의 연산자 유형은 출력 테이블일 것이다. 결과 데이터 흐름 그래프는 도 11a에 도시된 바와 같이, 파일들과 테이블들을 나타내는 컴포넌트들의 혼합을 포함할 것이다.
또 다른 예에서, 소스에서 목적지로의 매핑은 또 다른 데이터흐름 그래프 내 컴포넌트들에 입력과 출력 포트들로 연결되는 "서브 그래프"로 나타날 수 있다. 질의 계획(query plan)으로부터 이러한 서브 그래프를 생성할 때, 소스 및 목적지 컴포넌트들로서 파일들 또는 테이블들 대신, 소스들과 목적지들이 서브 그래프 경계(또한 "경계 포트"라 불리는)에서 데이터 흐름에 의해 다른 컴포넌트들에 의해 연결된, 입력과 출력 포트로 제공될 것이다. 상기 예에 따라, 컴포넌트 생성 단계 전에, 원시 관계(primitive relation)(예를 들어 #2, #3, 및 #8)를 가지는 표현식 노드들은 도 11b에서 도시된 바와 같이 다른 컴포넌트들에 연결된, "in_2", "in_3", 및 "in_8"이라 라벨 붙은 입력 경계 포트들이 된다. 이러한 입력 경계 포트들에 대한 레코드 포맷은 앞의 예처럼, 외부 소스로부터 획득될 것이나, 대응하는 엔티티에 대한 데이터가 저장되는 위치를 획득할 필요는 없다. 유사하게, 출력 컴포넌트 또는 출력 테이블 컴포넌트를 부가하는 대신에, 매핑 모듈은 끝(END) 컴포넌트의 출력 포트에 링크로 연결된 출력 경계 포트(도 11b에서 "아웃(out)"이라 라벨 붙은)를 생성한다. 표현식 노드들의 질의 계획(query plan)에 대응하는 서브그래프를 생성하는 절차의 다른 측면들은 상기 기술된 단계들에서와 동일하다. 다음으로 이러한 매핑 서브그래프는 도 11c에 도시된 바와 같이, 특정 데이터 소스 및 목적지 컴포넌트들에 전체 데이터 흐름 그래프를 형성하도록 연결된다. 이러한 서브 그래프 접근법의 장점은 추가적인 유연성을 제공하면서, 개발자가 수동으로 데이터 소스들을 구성할 수 있다는 것이다. 추가적으로, 매핑 서브그래프는 몇몇 다른 포함하는 데이터 흐름 그래프들의 맥락에서 재사용될 수 있다.
일부 실시 예에서, 선택적인 최적화 스텝은 결과 데이터 흐름 그래프 또는 서브그래프에서 사용되는 컴포넌트들의 수를 줄일 수 있다. 예를 들어, 일부 최적화는 동일한 데이터 세트(예를 들어, 동일한 파일에서 레코드들의 두 다른 필드들)으로부터 데이터를 읽는 연산들을 포함하는 컴포넌트들을 병합하는 것을 포함할 수 있다.
도 12a는 계정(Accounts), 거래(Transactions), 제품(Products), 청구서(Bills), 품목(LineItem), 및 제품 업데이트(ProductUpdates) 엔티티들을 포함하는 부분 데이터 모델 1200의 예를 도시하고, 그들의 관계는 개발자에 의해 제공되는 소스 스키마, 목적지 스키마, 및 소스 스키마와 목적지 스키마 간의 매핑 규칙들에 따라 정의될 것이다. 데이터 모델 1200에서 엔티티들에 대해 리스트된 속성들은 정의된 레코드 포맷에 따라 포맷된 레코드의 필드들에 대응한다. 계정(Accounts), 거래(Transactions), 제품(Products), 청구서(Bills), 및 품목(LineItem) 엔티티들에 대한 레코드 포맷의 예들은 아래 제시된 바와 같다. 일부 실시 예에서, 개발자는 다음의 레코드 포맷들을 제공하고, 시스템 100은 그 레코드 포맷들로부터 부분 데이터 모델 1200을 자동적으로 생성한다.
Figure pct00057

Figure pct00058

Figure pct00059

Figure pct00060

Figure pct00061

이러한 레코드 포맷들에 기초하여, 청구서(Bills) 엔티티는 품목(LineItem) 엔티티에 대한 기본 키/외래 키(primary-key/foreign-key) 관계를 가진다. 품목(LineItem) 엔티티는 청구서(Bills) 엔티티의 인스턴스인 청구서 레코드에 품목으로 나타나는 구매에 대한 상세 내용을 포함하는 서브 레코드들의 벡터를 나타낸다. 각각의 청구서 레코드는 품목 인스턴스와 대응하는 청구서 간 조인 키(join key)로 사용될 수 있는 부모청구서(ParentBill)라 불리는 고유한 일련번호가 할당된다.
도 12b는 개발자가 부가적인 관계들을 정의하고, 소스 엔티티와 목적지 엔티티 간 매핑 규칙을 제공한 후의 예시 데이터 모델 1220을 도시한다. 특히, 개발자는 계정(Accounts) 엔티티의 기본 키 필드 계정번호(acctnum)를 참조하는 거래(Transactions) 엔티티에서의 외래 키 필드 계정번호(acctnum)를 통해, 거래(Transactions) 엔티티와 계정(Accounts) 엔티티 간 기본 키/외래 키(primary-key/foreign-key) 관계 1222를 정의하였다. 개발자는 제품(Products) 엔티티의 기본 키 필드 SKU를 참조하는 거래(Transactions) 엔티티에서의 외래 키 필드 SKU를 통해, 거래(Transactions) 엔티티와 제품(Products) 엔티티 간 기본 키/외래 키(primary-key/foreign-key) 관계 1224를 정의했다. 계정(Accounts) 엔티티, 거래(Transactions) 엔티티, 및 제품(Products) 엔티티는 함께 목적지 스키마들에서 목적지 엔티티의 속성들을 정의하는데 사용될 수 있는 소스 스키마를 나타낸다. 다음의 데이터 모델 1220의 목적지 엔티티의 속성들(예를 들어, 필드) 정의는 매핑 규칙들에서 정의된 바와 같이 정보를 저장하는 매핑된 엔티티와 연관된 레코드들을 생성할 수 있는, 데이터 흐름 그래프 같은, 절차적 사양을 생성하기 위한 매핑 규칙으로 매핑모듈에 의해 해석된다.
Figure pct00062

Figure pct00063

Figure pct00064

청구서(Bills)- 계정(Accounts) 매핑 규칙 1226은 계정(Accounts) 소스 엔티티의 필드 측면에서 청구서(Bills) 목적지 엔티티의 필드에 대한 표현식을 제공한다. 청구서(Bills) 엔티티의 계정 필드는 계정(Accounts) 엔티티의 계정번호(acctnum) 필드의 값이 할당된다. 디폴트로(by default), 표현식에서 필드 이름은 소스 엔티티에서 필드 이름을 참조하므로, 이름(Name), 주소(Address), 및 잔고(Balance) 필드 또한 계정(Accounts) 엔티티 필드를 참조한다. 표현식에서 필드 이름이 소스 엔티티에서 나타나지 않을 때, 그것은 목적지 엔티티에서 필드 이름을 참조하거나, 목적지 엔티티에 관련된 엔티티를 참조한다. 그래서, 옛잔고(OldBalance), 총요금(TotalCharges), 및 새잔고(NewBalance) 필드는 청구서(Bills) 엔티티의 필드를 참조하고, 수량(Quantity) 및 가격(Price) 필드는 품목(LineItem) 엔티티의 필드들을 참조한다. 집계 함수 sum()은, 청구서(Bills) 엔티티의 특정 레코드에 대하여, 그 부모청구서(ParentBill) 외래키(foreign key) 값이 청구서(Bills) 엔티티의 그 특정 레코드의 것과 일치하는 모든 서브 레코드들의 합을 계산한다.
품목(LineItem)-거래(Transactions) 매핑 규칙 1228은 거래(Transactions) 소스 엔티티의 필드 측면에서 품목(LineItem) 목적지 엔티티의 필드에 대한 표현식들을 제공한다. 특정 품목 서브 레코드에 대한 날짜(Date), 수량(Quantity) 및 가격(Price) 필드는 거래(Transactions) 엔티티의 대응하는 거래 레코드에서 대응하는 필드의 값들이 할당된다. 특정 품목에 대한 총액(Amount) 필드는 수량에 대응하는 거래의 가격을 곱한 값이 할당된다.
제품업데이트(ProductUpdates)-제품(Products) 매핑 규칙 1230은 제품(Products) 소스 엔티티의 필드 측면에서 제품업데이트(ProductUpdates) 목적지 엔티티의 필드에 대한 표현식들을 제공한다. 제품업데이트(ProductUpdates) 엔티티의 레코드에 대한 (기본키(primary key)) SKU 필드는 제품(Products) 엔티티의 대응하는 레코드에 대한 (기본키(primary key)) SKU의 값이 할당된다. 새목록(NewInventory) 필드는 제품(Products) 엔티티의 목록(Inventory) 필드 및 제품(Products) 엔티티에 관련된, 거래(Transactions) 엔티티의 수량(Quantity) 필드에 따라 달라지는 표현식이 할당된다.
이러한 매핑 규칙들에 기초하여, 매핑 모듈은 상기 기술된 바와 같이 생성된 병합된 질의 계획(query plan)에 기초하여, 정의된 매핑 규칙에 대응하는 레코드들을 생성하기 위한 데이터 흐름 그래프를 생성할 수 있다. 매핑 모듈은 또한 병합된 질의 계획(query plan)으로부터 절차적 사양들의 다른 형태를 생성할 수 있다. 예를 들어, 질의 계획(query plan)의 표현식 노드에서 관계 표현식들은 질의 표현식들(예를 들어, SQL 질의 표현식)을 생성하는데 사용될 수 있다. 표현식 노드의 관계 표현식 결과는 뷰(view) 정의에 대응할 수 있고, 결과가 다수의 표현식 노드들에 연결된다면, 임시 테이블이 그 결과에 대응하여 생성될 수 있다. 일부 실시 예에서, 질의 표현식들 및 데이터 흐름 그래프 컴포넌트들의 조합은 다른 각각의 표현식 노드들에 대해 생성될 수 있다.
상기 기술된 기술들은 적합한 소프트웨어를 실행하는 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 소프트웨어는 각각이 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및/또는 비 휘발성 메모리 및/또는 저장 구성요소들을 포함하는), 적어도 하나의 사용자 인터페이스(적어도 하나의 입력 디바이스 또는 포트를 사용하여 입력을 수신하기 위한, 및 적어도 하나의 출력 디바이스 또는 포트를 사용하여 출력을 제공하기 위한)를 포함하는 하나 이상의 프로그램된 또는 프로그램 가능한 컴퓨팅 시스템(분산, 클라이언트/서버, 또는 그리드 같은 다양한 아키텍처들이 될 수 있다)상에서 실행하는 하나 이상의 컴퓨터 프로그램의 절차들을 포함할 수 있다. 소프트웨어는 예를 들어, 데이터 흐름 그래프의 디자인, 구성, 및 실행에 관련된 서비스들을 제공하는, 더 큰 프로그램의 하나 이상의 모듈들을 포함할 수 있다. 프로그램의 모듈들(예를 들어, 데이터 흐름 그래프의 구성요소들)은 데이터 구조들 또는 데이터 저장소(repository)에 저장된 데이터 모델에 준하는 다른 구조화된 데이터로 구현될 수 있다.
소프트웨어는 CD-ROM, 또는 다른 컴퓨터 판독 가능 매체(예를 들어 범용 또는 특별 목적 컴퓨팅 시스템 또는 디바이스에 의해 판독 가능한)같은, 실질적, 비일시적 매체상에 제공될 수 있고, 또는 그것이 실행되는 컴퓨팅 시스템의 실질적, 비일시적 매체로 네트워크의 통신 매체를 통해 전달(예를 들어, 전파 신호로 부호화되는)될 수 있다. 일부 또는 모든 처리는 특별 목적 컴퓨터 상, 또는 코프로세서(coprocessors) 또는 필드 프로그래머블 어레이(field-programmable array, FPGA), 또는 전용, 주문형 집적회로(application-specific integrated circuit,ASIC) 같은 특별 목적 하드웨어를 사용하여 수행될 수 있다. 상기 처리는 소프트웨어에 의해 명시된 계산의 다른 부분들이 다른 컴퓨팅 구성요소들에 의해 수행되는 분산 방식으로 구현될 수 있다. 각각 이러한 컴퓨터 프로그램은 저장 디바이스가 본원에서 기술된 처리를 수행하도록 컴퓨터에 의해 판독될 때 컴퓨터를 구성 및 운영하기 위해, 바람직하게는 범용 또는 특별 목적 프로그램 가능한 컴퓨터에 의해 액세스 가능한 저장 디바이스의 컴퓨터 판독가능 저장 매체(예를 들어, 솔리드 스테이트 메모리(solid state memory) 또는 매체, 또는 자기 또는 광 매체)상에 저장되거나 다운로드 된다. 본 발명 시스템은 또한 컴퓨터 프로그램으로 구성되는, 실질적, 비 일시적 매체로서 구현될 수 있고, 그렇게 구성된 매체는 컴퓨터가 본원에서 기술된 하나 이상의 처리 스텝들을 수행하도록 특정한 또는 미리 정의된 방식으로 동작하게 한다.
본 발명의 다수의 실시 예를 설명하였다. 그럼에도 불구하고, 전술한 설명은 예시를 위한 것이며 다음의 청구항들에 의해 정의되는 본 발명의 범위를 한정하는 것이 아니다. 따라서, 다른 실시 예들 또한 이하 청구항들의 범위 내에 있다. 예를 들어, 다양한 변형이 본 발명의 범위를 벗어남 없이 만들어 질 수 있다. 부가적으로, 상기 기술된 스텝들의 일부는 순서 독립적이므로, 기술된 것과 다른 순서로 수행될 수 있다.

Claims (17)

  1. 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법에 있어서, 상기 방법은:
    적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하는 단계 - 상기 적어도 하나의 소스 엔티티의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 레코드들의 각각의 세트에 대응함-; 및
    적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하도록 상기 매핑 정보를 처리하는 단계를 포함하며, 상기 처리하는 단계는,
    복수의 노드 컬렉션들을 생성하는 단계, - 각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제 1 관계 표현식을 나타내는 제 1 노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함- 및
    병합되는 노드들의 관계 표현식들의 비교에 기초한 제 3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함하는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  2. 제 1항에서 있어서,
    상기 매핑 정보가 제 1 소스 엔티티의 속성값 및 제 2 소스 엔티티의 속성값 측면에서 목적지 엔티티의 속성 값을 정의하는 제 1 매핑 규칙을 포함하는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  3. 제 2항에 있어서,
    상기 제1 매핑 규칙과 연관된 노드들의 제1 컬렉션이 상기 제1의 소스 엔티티와 상기 제2의 소스 엔티티를 참조하는 관계 대수 연산을 포함하는 제1 관계 표현식을 표현하는 제1노드, 상기 제1 소스 엔티티를 포함하는 관계 표현식을 나타내는 상기 제1노드에 연결되는 제2노드, 및 상기 제2 소스 엔티티를 포함하는 관계 표현식을 나타내는 상기 제1노드에 연결되는 제3노드를 포함하는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  4. 제 3항에 있어서,
    상기 매핑 정보가 상기 제1 소스 엔티티의 속성값 측면에서 목적지 엔티티의 속성값을 정의하는 제2 매핑 규칙을 포함하는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  5. 제4항에 있어서,
    상기 병합하는 단계가, 상기 제1 소스 엔티티를 포함하는 관계 표현식을 표현하는 상기 제2 컬렉션의 노드와 상기 제2 노드를 병합하는 것을 포함하는, 상기 제2 매핑 규칙과 연관된 적어도 하나의 노드의 제2 컬렉션과 상기 제1 컬렉션을 병합하는 단계를 포함하는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  6. 제3항에 있어서,
    상기 관계 대수 연산이 조인(join) 연산인 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  7. 제3항에 있어서,
    상기 관계 대수 연산이 집계(aggregation) 연산인 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  8. 제2항에 있어서,
    상기 제1 소스 엔티티 및 상기 제2 소스 엔티티가 스키마에서 정의된 관계에 따라 관련되는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  9. 제8항에 있어서,
    상기 스키마가 다수 엔티티들을 포함하고, 상기 엔티티들간의 관계는 적어도 하나의 일대일 관계, 일대다 관계 또는 다대다 관계를 포함하는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 방법.
  10. 제1항에 있어서,
    상기 절차적 사양을 생성하는 단계가 상기 제 3 컬렉션으로부터 데이터흐름 그래프를 생성하는 단계를 포함하고, 상기 데이터흐름 그래프는 상기 제3 컬렉션의 각각의 노드들에서 관계 표현식에 대응하는 연산들을 수행하도록 구성된 컴포넌트들, 및 컴포넌트들의 출력 및 입력포트들 간의 상기 레코드들의 흐름을 표현하는 링크들을 포함하는 적어도 하나의 저장 시스템에서 데이터를 처리하는 방법.
  11. 제1항에 있어서,
    상기 절차적 사양을 생성하는 단계가 질의어 사양(query language specification) 을 상기 제3 컬렉션으로부터 생성하는 단계를 포함하고, 상기 질의어 사양(query language specification) 은 상기 제3 컬렉션의 각각의 노드에서의 관계 표현식에 대응하는 연산을 수행하기 위한 질의 표현식들(query expressions)을 포함하는 적어도 하나의 저장 시스템에서 데이터를 처리하는 방법.
  12. 제1항에 있어서,
    상기 절차적 사양을 생성하는 단계가 상기 제3 컬렉션으로부터 컴퓨터 프로그램을 생성하는 단계를 포함하고, 상기 컴퓨터 프로그램은 상기 제3 컬렉션의 각각의 노드에서의 관계 표현식에 대응하는 연산들을 수행하기 위한 함수들 또는 표현식들을 포함하는 적어도 하나의 저장 시스템에서 데이터를 처리하는 방법.
  13. 제12항에 있어서,
    상기 컴퓨터 프로그램이 자바, C, C++ 중에서 적어도 하나의 프로그래밍 언어로 구체화되는 적어도 하나의 저장 시스템에서 데이터를 처리하는 방법.
  14. 제 1항에 있어서,
    적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 상기 절차적 사양에 따라 상기 데이터 저장 시스템에서 상기 레코드들을 처리하는 단계를 더 포함하는 적어도 하나의 저장 시스템에서 데이터를 처리하는 방법.
  15. 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하기 위한 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체에서, 상기 컴퓨터 프로그램은 컴퓨팅 시스템이:
    적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하고 - 상기 적어도 하나의 소스 엔티티들의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 각각의 레코드 세트들에 대응함- ; 및
    적어도 하나의 목적지 엔티티의 적어도 하나의 속성의 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하기 위해 상기 매핑 정보를 처리하도록 하는 명령들을 포함하고, 상기 처리는,
    복수의 노드 컬렉션들을 생성하는 단계 -각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제 1 관계 표현식을 나타내는 제 1 노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함 -, 및
    병합되는 노드들의 관계 표현식들의 비교에 기초한 제3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함하는 적어도 하나의 데이터 저장 시스템에서 데이터를 처리하는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체.
  16. 적어도 하나의 데이터 저장 시스템;
    적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하는 입력 디바이스 또는 포트 - 상기 적어도 하나의 소스 엔티티의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 각각의 레코드 세트들에 대응함 - ; 및
    적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하기 위해 상기 매핑 정보를 처리하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 처리는,
    복수의 노드 컬렉션들을 생성하는 단계 -각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제 1 관계 표현식을 나타내는 제 1 노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함 -, 및
    병합되는 노드들의 관계 표현식들의 비교에 기초한 제 3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함하는 컴퓨팅 시스템.
  17. 적어도 하나의 데이터 저장 시스템;
    적어도 하나의 소스 엔티티의 적어도 하나의 속성 측면에서 적어도 하나의 목적지 엔티티의 적어도 하나의 속성을 명시하는 매핑 정보를 수신하는 수단들- 상기 적어도 하나의 소스 엔티티의 적어도 일부는 상기 적어도 하나의 데이터 저장 시스템에서 각각의 레코드 세트들에 대응함 - ; 및
    적어도 하나의 목적지 엔티티의 적어도 하나의 속성 중 적어도 일부에 대응하는 값들을 계산하기 위한 절차적 사양을 생성하기 위해 상기 매핑 정보를 처리하는 수단들을 포함하고, 상기 처리는,
    복수의 노드 컬렉션들을 생성하는 단계 - 각각의 컬렉션이 상기 매핑 정보에 의해 명시된 속성과 연관된 제 1 관계 표현식을 나타내는 제 1 노드를 포함하고, 적어도 일부 컬렉션들이 방향성 비순환 그래프에서 노드의 관계 표현식에 의해 참조되는 적어도 하나의 소스 엔티티의 적어도 하나의 속성과 연관된 각각의 관계 표현식을 나타내는 적어도 하나의 다른 노드에 대한 링크들을 포함하는 방향성 비순환 그래프를 형성함 -, 및
    병합되는 노드들의 관계 표현식들의 비교에 기초한 제 3의 컬렉션을 형성하도록 적어도 둘의 상기 컬렉션들을 서로 병합하는 단계를 포함하는 컴퓨팅 시스템.




KR1020157004521A 2012-07-24 2013-07-24 데이터 모델에서의 엔티티 매핑 KR102031402B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261675053P 2012-07-24 2012-07-24
US61/675,053 2012-07-24
PCT/US2013/051837 WO2014018641A2 (en) 2012-07-24 2013-07-24 Mapping entities in data models

Publications (2)

Publication Number Publication Date
KR20150038220A true KR20150038220A (ko) 2015-04-08
KR102031402B1 KR102031402B1 (ko) 2019-10-11

Family

ID=48980273

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157004521A KR102031402B1 (ko) 2012-07-24 2013-07-24 데이터 모델에서의 엔티티 매핑

Country Status (9)

Country Link
US (1) US9251225B2 (ko)
EP (1) EP2877943B1 (ko)
JP (1) JP6338579B2 (ko)
KR (1) KR102031402B1 (ko)
CN (1) CN104662535B (ko)
AU (1) AU2013295864B2 (ko)
CA (1) CA2879668C (ko)
HK (1) HK1210295A1 (ko)
WO (1) WO2014018641A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016190482A1 (ko) * 2015-05-27 2016-12-01 삼성에스디에스 주식회사 리버스 데이터 모델링 관계선 설정 방법 및 그 장치
WO2018074906A1 (ko) * 2016-10-20 2018-04-26 영남대학교 산학협력단 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
KR20180043754A (ko) * 2016-10-20 2018-04-30 영남대학교 산학협력단 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
KR20210090955A (ko) * 2020-01-13 2021-07-21 주식회사 그라운드컨트롤 부동산 통합 데이터베이스 구축 장치 및 방법

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9195769B2 (en) * 2011-07-20 2015-11-24 Opentable, Inc. Method and apparatus for quickly evaluating entities
US9424233B2 (en) 2012-07-20 2016-08-23 Veveo, Inc. Method of and system for inferring user intent in search input in a conversational interaction system
US9465833B2 (en) 2012-07-31 2016-10-11 Veveo, Inc. Disambiguating user intent in conversational interaction system for large corpus information retrieval
US20140059498A1 (en) * 2012-08-27 2014-02-27 Microsoft Corporation User interface display of anchor tiles for related entities
US10121493B2 (en) 2013-05-07 2018-11-06 Veveo, Inc. Method of and system for real time feedback in an incremental speech input interface
US9576071B2 (en) * 2013-09-12 2017-02-21 Dropbox, Inc. Graph-based data models for partitioned data
US9524331B2 (en) * 2013-11-18 2016-12-20 Nuwafin Holdings Ltd Method and system for representing OLAP queries using directed acyclic graph structures in a datagrid to support real-time analytical operations
AU2014360106B2 (en) 2013-12-06 2019-05-23 Ab Initio Technology Llc Source code translation
WO2015139048A1 (en) * 2014-03-14 2015-09-17 Concurrent, Inc. Cluster (sub) graph isomorphism logical data flow mapping rules
JP6488317B2 (ja) * 2014-03-14 2019-03-20 アビニシオ テクノロジー エルエルシー キー指定される実体の属性のマッピング
US9690546B2 (en) * 2014-03-26 2017-06-27 Software Ag Method and system for transitive traversal service discovery
US9607073B2 (en) * 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
US10635645B1 (en) * 2014-05-04 2020-04-28 Veritas Technologies Llc Systems and methods for maintaining aggregate tables in databases
US10290126B2 (en) * 2014-07-01 2019-05-14 Oath Inc. Computerized systems and methods for graph data modeling
US9928310B2 (en) * 2014-08-15 2018-03-27 Oracle International Corporation In-memory graph pattern matching
JP6567043B2 (ja) 2014-09-03 2019-08-28 アビニシオ テクノロジー エルエルシー 階層的なエンティティのための計算の管理
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US9852136B2 (en) * 2014-12-23 2017-12-26 Rovi Guides, Inc. Systems and methods for determining whether a negation statement applies to a current or past query
CN104484478B (zh) * 2014-12-31 2018-05-29 中国农业银行股份有限公司 一种关联聚类数据瘦身方法及系统
US9854049B2 (en) 2015-01-30 2017-12-26 Rovi Guides, Inc. Systems and methods for resolving ambiguous terms in social chatter based on a user profile
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
IN2015CH01601A (ko) 2015-03-28 2015-05-01 Wipro Ltd
KR101636455B1 (ko) * 2015-04-21 2016-07-06 주식회사 씨와줄기 데이터 기반 프로그래밍 모델을 이용하는 소프트웨어 개발 장치 및 방법
US9384203B1 (en) * 2015-06-09 2016-07-05 Palantir Technologies Inc. Systems and methods for indexing and aggregating data records
WO2017027652A1 (en) * 2015-08-11 2017-02-16 Ab Initio Technology Llc Data processing graph compilation
US10025846B2 (en) 2015-09-14 2018-07-17 International Business Machines Corporation Identifying entity mappings across data assets
US11157260B2 (en) * 2015-09-18 2021-10-26 ReactiveCore LLC Efficient information storage and retrieval using subgraphs
US10360236B2 (en) * 2015-09-25 2019-07-23 International Business Machines Corporation Replicating structured query language (SQL) in a heterogeneous replication environment
CN106909570B (zh) * 2015-12-23 2020-12-15 创新先进技术有限公司 一种数据转换方法及装置
US10001976B2 (en) * 2015-12-28 2018-06-19 Microsoft Technology Licensing, Llc Generation of a device application
US10742667B1 (en) * 2016-01-20 2020-08-11 Cyarx Technologies Ltd. System and method for dynamical modeling multi-dimensional security event data into a graph representation
CN107239459B (zh) * 2016-03-28 2020-10-02 阿里巴巴集团控股有限公司 实体联系图展示方法及装置
US10698954B2 (en) * 2016-06-30 2020-06-30 Facebook, Inc. Computation platform agnostic data classification workflows
US10692015B2 (en) 2016-07-15 2020-06-23 Io-Tahoe Llc Primary key-foreign key relationship determination through machine learning
US10101995B2 (en) 2016-07-15 2018-10-16 Microsoft Technology Licensing, Llc Transforming data manipulation code into data workflow
US10331667B2 (en) * 2016-07-29 2019-06-25 Hart, Inc. Systems and methods for bi-directional database application programming interface, extract transform and load system, and user computing device
EP3475886A1 (en) 2016-08-22 2019-05-01 Oracle International Corporation System and method for metadata-driven external interface generation of application programming interfaces
GB201615745D0 (en) * 2016-09-15 2016-11-02 Gb Gas Holdings Ltd System for analysing data relationships to support query execution
GB201615747D0 (en) 2016-09-15 2016-11-02 Gb Gas Holdings Ltd System for data management in a large scale data repository
US20180232458A1 (en) * 2017-02-10 2018-08-16 Microsoft Technology Licensing, Llc Storing parseable entity combinations
US10635789B1 (en) * 2017-06-21 2020-04-28 Amazon Technologies, Inc. Request authorization using recipe-based service coordination
US20200327116A1 (en) * 2017-10-03 2020-10-15 Lyconos, Inc. Systems and methods for document automation
US20190138920A1 (en) * 2017-11-03 2019-05-09 Paypal, Inc. Self-adaptive system and method for large scale online machine learning computations
CN109960571B (zh) 2017-12-14 2022-03-25 北京图森智途科技有限公司 一种多模块调度方法、装置及系统
CN109960570B (zh) * 2017-12-14 2021-09-03 北京图森智途科技有限公司 一种多模块调度方法、装置及系统
US11630690B2 (en) * 2017-12-19 2023-04-18 International Business Machines Corporation Simplifying data mapping in complex flows by defining schemas at convergence points in a workflow
CN108596824A (zh) * 2018-03-21 2018-09-28 华中科技大学 一种基于gpu优化富元数据管理的方法和系统
WO2019192710A1 (de) * 2018-04-05 2019-10-10 Products Up GmbH Verfahren zum darstellen und verändern von datenverknüpfungen mittels einer graphischen benutzeroberfläche
US11003636B2 (en) 2018-06-18 2021-05-11 Tamr, Inc. Generating and reusing transformations for evolving schema mapping
CN109656947B (zh) * 2018-11-09 2020-12-29 金蝶软件(中国)有限公司 数据查询方法、装置、计算机设备和存储介质
CN109508412B (zh) * 2018-11-20 2019-12-20 中科驭数(北京)科技有限公司 一种时间序列处理的计算流图构建方法和装置
CN109828972B (zh) * 2019-01-18 2022-03-22 深圳易嘉恩科技有限公司 一种基于有向图结构的数据集成方法
US10684966B1 (en) 2019-02-21 2020-06-16 Amazon Technologies, Inc. Orchestrating dataflows with inferred data store interactions
CN110263224A (zh) * 2019-05-07 2019-09-20 南京智慧图谱信息技术有限公司 一种基于elp模型的事件型链接数据压缩方法
CN112131288B (zh) * 2019-06-25 2024-04-05 北京沃东天骏信息技术有限公司 数据源接入处理方法和装置
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
US11144550B2 (en) * 2019-09-25 2021-10-12 Snowflake Inc. Pipeline level optimization of aggregation operators in a query plan during runtime
CN110688433B (zh) * 2019-12-10 2020-04-21 银联数据服务有限公司 一种基于路径的特征生成方法及装置
US11556508B1 (en) * 2020-06-08 2023-01-17 Cigna Intellectual Property, Inc. Machine learning system for automated attribute name mapping between source data models and destination data models
US11941413B2 (en) 2020-06-29 2024-03-26 Amazon Technologies, Inc. Managed control plane service
US11948005B2 (en) 2020-06-29 2024-04-02 Amazon Technologies, Inc. Managed integration of constituent services of multi-service applications
US11989178B2 (en) 2020-10-26 2024-05-21 Oracle International Corporation Efficient compilation of graph queries including complex expressions on top of sql based relational engine
US20220147568A1 (en) * 2020-11-10 2022-05-12 Sap Se Mapping expression generator
US11803865B2 (en) * 2020-11-12 2023-10-31 Capital One Services, Llc Graph based processing of multidimensional hierarchical data
CN113157978B (zh) * 2021-01-15 2023-03-28 浪潮云信息技术股份公司 数据的标签建立方法和装置
KR102350941B1 (ko) * 2021-05-25 2022-01-14 주식회사 바움디자인시스템즈 집적 회로 설계 방법 및 이를 수행하는 집적 회로 설계 시스템
CN113326031B (zh) * 2021-05-28 2023-08-22 网易(杭州)网络有限公司 属性获取方法和装置
CN113723797A (zh) * 2021-08-26 2021-11-30 上海飞机制造有限公司 一种工业操作中的管理系统及方法
CN113722345A (zh) * 2021-09-14 2021-11-30 上海明略人工智能(集团)有限公司 映射关系的展示方法和装置、电子设备、存储介质
US11921785B2 (en) 2022-01-25 2024-03-05 Oracle International Corporation Inline graph algorithm execution with a relational SQL engine
US20230267120A1 (en) * 2022-01-26 2023-08-24 Oracle International Corporation Using temporary tables to store graph algorithm results for a relational database management system
US11875446B2 (en) * 2022-05-06 2024-01-16 Adobe, Inc. Procedural media generation
WO2023249627A1 (en) * 2022-06-23 2023-12-28 Rakuten Mobile, Inc. Dynamic application of schema framework for inventory management
CN116028653B (zh) * 2023-03-29 2023-06-06 鹏城实验室 一种可视化配置多源异构数据构建图谱的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007002647A2 (en) * 2005-06-27 2007-01-04 Ab Initio Software Corporation Managing metadata for graph-based computations
WO2008124319A1 (en) * 2007-04-10 2008-10-16 Ab Initio Technology Llc Editing and compiling business rules

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2696853B1 (fr) * 1992-10-12 1994-12-23 Bull Sa Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant.
US6035300A (en) 1995-12-15 2000-03-07 International Business Machines Corporation Method and apparatus for generating a user interface from the entity/attribute/relationship model of a database
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
SG77163A1 (en) * 1998-03-06 2000-12-19 John Francis Chong A method of implementing an acyclic directed graph structure using a relational database
CN1324464A (zh) * 1998-08-26 2001-11-28 西姆泰克有限公司 映射数据文件的方法和设备
JP3492246B2 (ja) * 1999-07-16 2004-02-03 富士通株式会社 Xmlデータ検索処理方法および検索処理システム
US7096216B2 (en) * 2002-07-20 2006-08-22 Microsoft Corporation Performing operations on a set of objects in a database system
US7149733B2 (en) * 2002-07-20 2006-12-12 Microsoft Corporation Translation of object queries involving inheritence
US7146352B2 (en) * 2003-06-23 2006-12-05 Microsoft Corporation Query optimizer system and method
US7739223B2 (en) * 2003-08-29 2010-06-15 Microsoft Corporation Mapping architecture for arbitrary data models
US7899833B2 (en) * 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
CA2593233A1 (en) 2007-07-06 2009-01-06 Cognos Incorporated System and method for federated member-based data integration and reporting
JP5453273B2 (ja) 2007-09-20 2014-03-26 アビニシオ テクノロジー エルエルシー グラフベース計算におけるデータフロー管理
KR20150042866A (ko) 2008-12-02 2015-04-21 아브 이니티오 테크놀로지 엘엘시 데이터 관리 시스템 내의 데이터 집합의 맵핑 인스턴스
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
JP5098120B2 (ja) * 2011-10-12 2012-12-12 株式会社日立製作所 計算機システム及びデータベース管理システムプログラム
US10241961B2 (en) 2012-04-26 2019-03-26 Sap Se Augmented query optimization by data flow graph model optimizer
US8838579B2 (en) 2012-04-26 2014-09-16 Sap Ag Data flow graph optimization using adaptive rule chaining

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007002647A2 (en) * 2005-06-27 2007-01-04 Ab Initio Software Corporation Managing metadata for graph-based computations
WO2008124319A1 (en) * 2007-04-10 2008-10-16 Ab Initio Technology Llc Editing and compiling business rules

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016190482A1 (ko) * 2015-05-27 2016-12-01 삼성에스디에스 주식회사 리버스 데이터 모델링 관계선 설정 방법 및 그 장치
KR20160139307A (ko) * 2015-05-27 2016-12-07 삼성에스디에스 주식회사 리버스 데이터 모델링 관계선 설정 방법 및 그 장치
WO2018074906A1 (ko) * 2016-10-20 2018-04-26 영남대학교 산학협력단 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
KR20180043754A (ko) * 2016-10-20 2018-04-30 영남대학교 산학협력단 조인 방법, 이를 실행시키는 컴퓨터 프로그램 및 기록매체
US11188541B2 (en) 2016-10-20 2021-11-30 Industry Academic Cooperation Foundation Of Yeungnam University Join method, computer program and recording medium thereof
KR20210090955A (ko) * 2020-01-13 2021-07-21 주식회사 그라운드컨트롤 부동산 통합 데이터베이스 구축 장치 및 방법

Also Published As

Publication number Publication date
AU2013295864B2 (en) 2017-09-14
KR102031402B1 (ko) 2019-10-11
WO2014018641A3 (en) 2014-07-17
CN104662535A (zh) 2015-05-27
CA2879668A1 (en) 2014-01-30
WO2014018641A2 (en) 2014-01-30
JP2015527655A (ja) 2015-09-17
JP6338579B2 (ja) 2018-06-06
CA2879668C (en) 2020-07-07
US20140032617A1 (en) 2014-01-30
AU2013295864A1 (en) 2015-02-05
EP2877943A2 (en) 2015-06-03
CN104662535B (zh) 2018-05-18
HK1210295A1 (en) 2016-04-15
US9251225B2 (en) 2016-02-02
EP2877943B1 (en) 2021-03-03

Similar Documents

Publication Publication Date Title
KR102031402B1 (ko) 데이터 모델에서의 엔티티 매핑
JP6609262B2 (ja) キー指定される実体の属性のマッピング
US11544284B2 (en) Aggregation framework system architecture and method
US11403317B2 (en) Aggregation framework system architecture and method
US10366100B2 (en) Aggregation framework system architecture and method
JP5826260B2 (ja) 関連データセットの処理
JP5940560B2 (ja) データの集合体に対する変更の管理
EP2386965A1 (en) Performing complex operations in a database using a semantic layer
AU2015346525C1 (en) Processing queries containing a union-type operation
US20100131565A1 (en) Method for creating a self-configuring database system using a reusable custom-defined nestable compound data type
Polák et al. Data and query adaptation using DaemonX
US20120254248A1 (en) System and Method for Storing and Computing Business Data and Logic

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right