KR20150042872A - 관련 데이터세트의 처리 - Google Patents

관련 데이터세트의 처리 Download PDF

Info

Publication number
KR20150042872A
KR20150042872A KR20157008140A KR20157008140A KR20150042872A KR 20150042872 A KR20150042872 A KR 20150042872A KR 20157008140 A KR20157008140 A KR 20157008140A KR 20157008140 A KR20157008140 A KR 20157008140A KR 20150042872 A KR20150042872 A KR 20150042872A
Authority
KR
South Korea
Prior art keywords
data
data set
record
processing
records
Prior art date
Application number
KR20157008140A
Other languages
English (en)
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 KR20150042872A publication Critical patent/KR20150042872A/ko

Links

Images

Classifications

    • G06F17/3051
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • G06F16/61Indexing; Data structures therefor; Storage structures
    • 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/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/71Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F17/30371
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16CCOMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
    • G16C20/00Chemoinformatics, i.e. ICT specially adapted for the handling of physicochemical or structural data of chemical particles, elements, compounds or mixtures
    • G16C20/40Searching chemical structures or physicochemical data
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16CCOMPUTATIONAL CHEMISTRY; CHEMOINFORMATICS; COMPUTATIONAL MATERIALS SCIENCE
    • G16C20/00Chemoinformatics, i.e. ICT specially adapted for the handling of physicochemical or structural data of chemical particles, elements, compounds or mixtures
    • G16C20/90Programming languages; Computing architectures; Database systems; Data warehousing
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H70/00ICT specially adapted for the handling or processing of medical references
    • G16H70/40ICT specially adapted for the handling or processing of medical references relating to drugs, e.g. their side effects or intended usage

Abstract

관련 데이터세트의 처리는, 다수의 데이터세트(308, 314, 320)로부터 레코드를 수신하는 것(202), 데이터 처리 시스템(100)에서 다수의 각 데이터세트로부터의 레코드를 처리하는 것을 포함한다. 처리는, 데이터 저장 시스템(116)에 기억된 적어도 하나의 제약조건 명세(302, 312)를 분석(206)해서, 다수의 데이터세트에 대한 처리 순서를 결정하는 것을 포함한다. 제약조건 명세는 다수의 데이터세트를 포함하는 관련 데이터세트의 그룹 중에서 참조 무결성 또는 통계적 일관성을 유지하기 위한 하나 이상의 제약조건을 특정하며, 처리는, 또한 정해진 처리 순서대로 다수의 데이터세트의 각각으로부터의 레코드에 하나 이상의 변환을 적용(208)하는 것과 다수의 데이터세트의 각각으로부터의 레코드에 변환의 결과를 저장(212) 또는 출력하는 것을 포함한다.

Description

관련 데이터세트의 처리{PROCESSING RELATED DATASETS}
본 개시는 관련 데이터세트의 처리에 관한 것이다.
데이터세트는, 예를 들어 임의의 개수의 물리적 저장 매체에 호스트된 데이터 저장 시스템 내에 기억되는(예를 들어, 하나 이상의 서버에 호스트된 데이터베이스 내에 기억된) 데이터의 집합이다. 구조 및 기억 위치 등의 데이터세트의 특성은, 파일 또는 다른 형태의 오브젝트(예를 들어, 객체 지향 데이터베이스 내에 기억된 오브젝트) 등의 엔티티에 의해 기술될 수 있다. 일부의 경우, 특정의 데이터세트(예를 들어, 파일)을 기술하는 엔티티도 데이터를 해당 데이터세트 내에 기억한다. 일부의 경우, 특정의 데이터세트(예를 들어, 데이터베이스 테이블을 지시하는 오브젝트)를 기술하는 엔티티는 반드시 모든 데이터를 해당 데이터세트 내에 기억하고 있을 필요는 없으며, 데이터 저장 시스템 내의 하나 이상의 위치에 데이터를 위치시키는 데에 사용될 수 있다.
데이터세트 내의 데이터는 널 값(null value)(예를 들어, 필드가 비어 있다는 것을 나타내는)을 포함하는 각각의 필드("속성" 또는 "컬럼"이라고도 함)에 대한 값을 가진 각각의 레토드를 제공하는 레코드 구조를 포함하는 임의의 다양한 구조를 사용하여 구성될 수 있다. 예를 들어, 레코드는 데이터베이스 시스템의 데이터베이스 테이블 내의 열(row) 또는 스프레드시트 또는 다른 플랫 파일 내의 열에 대응할 수 있다. 소정의 포맷으로 기억된 레코드에 액세스하기 위해, 데이터 처리 시스템은 통상적으로 필드명, 레코드 내의 필드의 순서, 필드 값을 나타내는 비트의 수, 필드 값의 타입(예를 들어, 문자열, 부호있는/부호없는 정수) 등의 특징을 기술하는 일부 개시 포맷 정보로 시작한다. 일부의 환경에서, 데이터 세트의 레코드 포맷 또는 다른 구조적 정보는 처음에는 알 수 없을 수 있으며, 데이터를 분석한 후에 판정될 수 있다.
데이터세트는 다양한 임의의 방식으로 서로 관련될 수 있다. 예를 들어, 데이터베이스 내의 제1 테이블에 대응하는 제1 데이터세트는 데이터베이스 내의 제2 테이블의 필드에 대하여 기본 키(primary key)/외래 키(foreign key) 관계를 갖는 필드를 포함할 수 있다. 제1 테이블 내의 기본 키는 제1 테이블 내의 열을 고유하게 식별하는 값(예를 들어, 여러 고객에 대응하는 열을 고유하게 식별하는 고객 ID 값)을 포함할 수 있으며, 제1 테이블 내의 기본 키 필드에 대응하는 외래 키 필드를 포함하는 제2 테이블 내의 행(예를 들어, 소정의 고객에 의해 만들어진 트랜잭션에 대응하는 열)은 이들 고유 값을 사용하여 소정의 고객에 의해 만들어진 트랜잭션을 표현하는 제2 테이블 내의 하나 이상의 열의 각각을 식별할 수 있다. 다수의 데이터세트 중에서의 참조 무결성을 보존하는 것은 외래 키/기본 키 관계, 또는 하나의 데이터세트의 필드 내의 값이 다른 데이터세트의 필드 내의 값에 의존하는 관계를 포함하는 여러 필드 사이에서의 관계를 보존하는 것을 포함할 수 있다.
하나의 관점에서, 일반적으로, 관련 데이터세트를 처리하는 방법은, 입력 장치 또는 포트를 통해 다수의 데이터세트(dataset)로부터, 하나 이상의 각각의 필드(field)에 대한 하나 이상의 값을 갖는 레코드(record)를 수신하는 단계; 데이터 처리 시스템에서 상기 다수의 각 데이터세트로부터의 레코드를 처리하는 단계를 포함하며, 상기 처리는, 데이터 저장 시스템에 기억된 적어도 하나의 제약조건 명세(constraint specification)를 분석(analyze)해서, 상기 다수의 데이터세트에 대한 처리 순서를 결정하는 것을 포함하는데, 상기 제약조건 명세가 상기 다수의 데이터세트를 포함하는 관련 데이터세트의 그룹 중에서 참조 무결성(referenctial integrity) 또는 통계적 일관성(statistical consistency)을 유지하기 위한 하나 이상의 제약조건을 특정하며, 상기 처리는, 또한 상기 정해진 처리 순서대로 상기 다수의 데이터세트의 각각으로부터의 레코드에 하나 이상의 변환(transformation)을 적용하는 것을 포함하는데, 상기 변환은 상기 다수의 데이터세트 중의 제1 데이터세트로부터의 레코드에 적용된 후에 다수의 데이터세트 중의 제2 데이터세트로부터의 레코드에 적용되며, 제2 데이터세트로부터의 레코드에 적용되는 변환은 상기 제약조건 명세에 의해 특정된 제1 데이터세트 및 제2 데이터세트 간의 적어도 하나의 제약조건과 상기 제1 데이터세트로부터의 레코드에 변환을 적용하는 결과에 적어도 부분적으로 기초하여 적용되며, 상기 처리는, 또한 상기 다수의 데이터세트의 각각으로부터의 상기 레코드에 상기 변환의 결과를 저장 또는 출력하는 것을 포함한다.
관점은 이하의 특징들 중 하나 이상을 포함할 수 있다.
상기 제약조건 명세에 의해 특정된 참조 무결성을 유지하기 위한 적어도 하나의 제약조건은, 상기 제2 데이터세트의 필드에서의 값에 대한 상기 제1 데이터세트의 필드에서의 값의 종속성(dependence)에 기초한다.
상기 제1 데이터세트의 필드는 기본 키(primary key)이며, 상기 제2 데이터세트의 필드는 상기 기본 키를 참조하는 외래 키(foreign key)이다.
상기 제약조건 명세는 제2 데이터세트의 필드와 제1 데이터세트의 필드 사이에서의 기본 키와 외래 키의 관계를 나타내는 표현(representation)을 포함한다.
상기 다수의 데이터세트에 대한 처리 순서를 결정하는 것은, 상기 제2 데이터세트의 필드에서의 값에 대한 상기 제1 데이터세트의 필드에서의 값의 종속성(dependence)에 기초하여 상기 처리 순서대로 상기 제2 데이터세트보다 앞서 상기 제1 데이터세트가 처리되는 것을 판정하는 것을 포함한다.
상기 변환은, 상기 변환이 상기 제2 데이터세트로부터의 레코드에 적용되기 전에 그리고 상기 변환이 상기 제1 데이터세트로부터의 레코드에 적용된 후에, 상기 다수의 데이터세트 중의 제3 데이터세트로부터의 레코드에 적용된다.
상기 제약조건 명세에 의해 특정된 통계적 일관성을 유지하기 위한 적어도 하나의 제약조건은, 상기 제2 데이터세트의 필드와 제1 데이터세트의 필드 사이의 등가성(equivalence)에 기초한다.
상기 제1 데이터세트의 필드와 상기 제2 데이터세트의 필드는 결합 연산(join operation) 내에서의 키(key)에 해당한다.
상기 제약조건 명세는 결합 연산의 표현을 포함한다.
본 방법은, 상기 제1 데이터세트의 필드와 등가인 것으로서 상기 제약조건 명세에 의해 지시되는, 상기 제1 데이터세트의 적어도 하나의 필드와 상기 제2 데이터세트의 적어도 하나의 필드를 포함하는, 다수의 필드와 연관된 통계를 판정하기 위해 관련 데이터세트의 그룹 내에 데이터세트를 프로파일링하는 단계를 더 포함한다.
상기 제2 데이터세트로부터의 레코드에 적용되는 하나 이상의 변환은, 상기 판정된 통계와 상기 제1 데이터세트로부터의 레코드에 상기 변환을 적용한 결과에 따라, 상기 제1 데이터세트의 필드에서의 값의 분산과 상기 제2 데이터세트의 필드에서의 값의 분산 간의 통계적 일관성을 유지하는 것에 적어도 부분적으로 기초하여 적용된다.
상기 하나 이상의 변환은 데이터 처리 성분 사이에서의 레코드의 흐름을 나타내는 링크에 의해 연결된 데이터 처리 성분을 나타내는 노드를 포함하는 적어도 하나의 데이터플로우 그래프에 의해 적용되며, 상기 변환이 적용되는 각각의 데이터세트는 상기 데이터플로우 그래프에 입력되는 레코드의 흐름을 제공한다.
상기 데이터플로우 그래프는 입력되는 레코드의 흐름을 상기 다수의 데이터세트에 대해 정해진 처리 순서대로 상기 다수의 데이터세트의 각각을 사용하여 여러 번 반복해서 연속적으로 실행된다.
소정의 데이터세트의 레코드에 적용되는 상기 하나 이상의 변환은, 상기 소정의 데이터세트 중의 적어도 하나의 필드 내의 값에 기초하여, 상기 소정의 데이터세트 내의 레코드의 수를 감소시키는 서브세팅 변환(subsetting transformation)을 포함한다.
소정의 데이터세트의 레코드에 적용되는 상기 하나 이상의 변환은, 상기 데이터세트의 적어도 하나의 필드 내의 값을 변경(modify)하는 변경 변환(modification transformation)을 포함한다.
소정의 데이터세트의 레코드에 적용되는 상기 하나 이상의 변환은, 상기 소정의 데이터세트의 적어도 하나의 필드 내의 값의 복제(duplication)에 기초하여 상기 소정의 데이터세트 내의 레코드의 수를 증가시키는 확장 변환(expansion transformation)을 포함한다.
본 방법은, 상기 데이터 저장 시스템에 기억된 적어도 하나의 제약조건 명세를 분석해서, 상기 다수의 데이터세트의 각각으로부터의 레코드에 변환을 적용한 결과인 결과 데이터세트에 대한 처리 순서를 결정하는 것을 더 포함하는데, 상기 제약조건 명세는 상기 결과 데이터세트를 포함하는 관련 데이터세트의 그룹 중에서 참조 무결성 또는 통계적 일관성을 유지하기 위한 하나 이상의 제약조건을 특정하며, 본 방법은, 또한 상기 정해진 처리 순서대로 상기 결과 데이터세트의 각각으로부터의 레코드에 하나 이상의 변환을 적용하는 것을 더 포함하는데, 상기 변환은 상기 결과 데이터세트 중의 제1 데이터세트로부터의 레코드에 적용된 후에 상기 결과 데이터세트 중의 제2 데이터세트로부터의 레코드에 적용되며, 상기 제2 데이터세트로부터의 레코드에 적용되는 변환은 상기 제약조건 명세에 의해 특정된 제1 데이터세트 및 제2 데이터세트 간의 적어도 하나의 제약조건과 상기 제1 데이터세트로부터의 레코드에 변환을 적용하는 결과에 적어도 부분적으로 기초하여 적용되며, 본 방법은, 또한 상기 결과 데이터세트의 각각으로부터의 상기 레코드에 상기 변환의 결과를 저장 또는 출력하는 것을 더 포함한다.
다른 관점으로서, 일반적으로, 관련 데이터세트를 처리하기 위한 컴퓨터 프로그램을 저장하는, 컴퓨터로 판독가능한 매체로서, 컴퓨터 프로그램은, 컴퓨터로 하여금, 입력 장치 또는 포트를 통해 다수의 데이터세트(dataset)로부터, 하나 이상의 각각의 필드(field)에 대한 하나 이상의 값을 갖는 레코드(record)를 수신하도록 하고; 데이터 처리 시스템에서 상기 다수의 각 데이터세트로부터의 레코드를 처리하도록 하는 명령어를 포함하며, 상기 처리는, 데이터 저장 시스템에 기억된 적어도 하나의 제약조건 명세(constraint specification)를 분석(analyze)해서, 상기 다수의 데이터세트에 대한 처리 순서를 결정하는 것을 포함하는데, 상기 제약조건 명세가 상기 다수의 데이터세트를 포함하는 관련 데이터세트의 그룹 중에서 참조 무결성(referenctial integrity) 또는 통계적 일관성(statistical consistency)을 유지하기 위한 하나 이상의 제약조건을 특정하며, 상기 처리는, 또한 상기 정해진 처리 순서대로 상기 다수의 데이터세트의 각각으로부터의 레코드에 하나 이상의 변환(transformation)을 적용하는 것을 포함하는데, 상기 변환은 상기 다수의 데이터세트 중의 제1 데이터세트로부터의 레코드에 적용된 후에 상기 다수의 데이터세트 중의 제2 데이터세트로부터의 레코드에 적용되며, 상기 제2 데이터세트로부터의 레코드에 적용되는 변환은 상기 제약조건 명세에 의해 특정된 제1 데이터세트 및 제2 데이터세트 간의 적어도 하나의 제약조건과 상기 제1 데이터세트로부터의 레코드에 변환을 적용하는 결과에 적어도 부분적으로 기초하여 적용되며, 상기 처리는, 또한 상기 다수의 데이터세트의 각각으로부터의 상기 레코드에 상기 변환의 결과를 저장 또는 출력하는 것을 포함한다.
다른 관점으로서, 일반적으로, 관련 데이터세트를 처리하기 위한 데이터 처리 시스템은, 데이터 저장 시스템; 다수의 데이터세트(dataset)로부터, 하나 이상의 각각의 필드(field)에 대한 하나 이상의 값을 갖는 소정의 데이터세트의 레코드(record)를 수신하는 입력 장치 또는 포트; 및 상기 입력 장치 또는 포트와 상기 데이터 저장 시스템과 통신하여, 다수의 각 데이터세트로부터의 레코드를 처리하는 적어도 하나의 프로세서를 포함하며, 상기 처리는, 데이터 저장 시스템에 기억된 적어도 하나의 제약조건 명세(constraint specification)를 분석(analyze)해서, 상기 다수의 데이터세트에 대한 처리 순서를 결정하는 것을 포함하는데, 상기 제약조건 명세가 상기 다수의 데이터세트를 포함하는 관련 데이터세트의 그룹 중에서 참조 무결성(referenctial integrity) 또는 통계적 일관성(statistical consistency)을 유지하기 위한 하나 이상의 제약조건을 특정하며, 상기 처리는, 또한 상기 정해진 처리 순서대로 상기 다수의 데이터세트의 각각으로부터의 레코드에 하나 이상의 변환(transformation)을 적용하는 것을 포함하는데, 상기 변환은 상기 다수의 데이터세트 중의 제1 데이터세트로부터의 레코드에 적용된 후에 상기 다수의 데이터세트 중의 제2 데이터세트로부터의 레코드에 적용되며, 상기 제2 데이터세트로부터의 레코드에 적용되는 변환은 상기 제약조건 명세에 의해 특정된 제1 데이터세트 및 제2 데이터세트 간의 적어도 하나의 제약조건과 상기 제1 데이터세트로부터의 레코드에 변환을 적용하는 결과에 적어도 부분적으로 기초하여 적용되며, 상기 처리는, 또한 상기 다수의 데이터세트의 각각으로부터의 상기 레코드에 상기 변환의 결과를 저장 또는 출력하는 것을 포함한다.
다른 관점으로서, 일반적으로, 관련 데이터세트를 처리하기 위한 데이터 처리 시스템은, 다수의 데이터세트(dataset)로부터, 하나 이상의 각각의 필드(field)에 대한 하나 이상의 값을 갖는 소정의 데이터세트의 레코드(record)를 수신하기 위한 수단; 및 상기 다수의 데이터세트의 각각으로부터의 레코드를 처리하기 위한 수단을 포함하며, 상기 처리는, 데이터 저장 시스템에 기억된 적어도 하나의 제약조건 명세(constraint specification)를 분석(analyze)해서, 상기 다수의 데이터세트에 대한 처리 순서를 결정하는 것을 포함하는데, 상기 제약조건 명세가 상기 다수의 데이터세트를 포함하는 관련 데이터세트의 그룹 중에서 참조 무결성(referenctial integrity) 또는 통계적 일관성(statistical consistency)을 유지하기 위한 하나 이상의 제약조건을 특정하며, 상기 처리는, 또한 상기 정해진 처리 순서대로 상기 다수의 데이터세트의 각각으로부터의 레코드에 하나 이상의 변환(transformation)을 적용하는 것을 포함하는데, 상기 변환은 상기 다수의 데이터세트 중의 제1 데이터세트로부터의 레코드에 적용된 후에 상기 다수의 데이터세트 중의 제2 데이터세트로부터의 레코드에 적용되며, 상기 제2 데이터세트로부터의 레코드에 적용되는 변환은 상기 제약조건 명세에 의해 특정된 제1 데이터세트 및 제2 데이터세트 간의 적어도 하나의 제약조건과 상기 제1 데이터세트로부터의 레코드에 변환을 적용하는 결과에 적어도 부분적으로 기초하여 적용되며, 상기 처리는, 또한 상기 다수의 데이터세트의 각각으로부터의 상기 레코드에 상기 변환의 결과를 저장 또는 출력하는 것을 포함한다.
관점은 이하의 장점들 중 하나 이상을 포함할 수 있다.
본 시스템은 참조 무결성, 등가 필드(예를 들어, 결합 특성에 의해 관련된 필드)의 통계적 일관성, 및 다른 제약조건 등의 제약조건을 유지하면서 관련 데이터세트의 집합을 처리할 수 있다. 일례로, 본 시스템에 의하면, 데이터플로우 그래프를 사용하여 데이터 처리 애플리케이션을 구축하는 개발자는 개별 데이터세트로부터 발생하는 레코드 흐름에 대해 동작하는 흐름을 생성하기 위해 개별적으로 성분을 연결할 필요 없이, 관련 데이터세트를 처리하는 애플리케이션을 구축할 수 있다. 다수의 관련 데이터세트를 처리해야 되는 경우, 개발자는 여러 데이터세트의 필드 사이에서의 기본 키 및 외래 키 관계와 같은, 시스템이 제약조건을 인식할 수 있도록, 데이터세트에 적용될 데이터세트와 데이터 처리 변환의 그룹에 대한 제약조건 명세를 제공할 수 있으며, 이러한 제약조건에 기초하는 참조 무결성 및 통계적 일관성 등의 특성이 실질적으로 유지되도록(예를 들어, 미리 정해진 허용범위 내)하는 것을 보장하는 방식으로 변환을 수행할 수 있다.
본 시스템은, 개발자로 하여금, "컨스펙(conspec)"이라고 하는 데이터 구조에 의해 표현되는 제약조건 명세 내의 데이터세트의 집합 중에서 제약조건을 선언하고, 그룹으로서 컨스펙에 의해 참조되는 데이터세트에 대해 동작하는 일련의 처리 작업을 설정 및 배치할 수 있도록 하는 방법을 제공한다. 이것은 관련 데이터세트의 전체 집합에 적용되는 처리 작업의 이전 단계의 결과에 대해 각각 동작될 수 있는 처리 작업(예를 들어, 각 단계를 나타내는 처리 모듈을 "연결"(wiring up)함으로써)의 다수의 단계를 서로 연계시키는 것이 용이하게 된다. 소정의 데이터세트의 특정 상태를 "데이터세트 인스턴스"(dataset instance)라고 한다. 컨스펙은 상이한 데이터세트의 요소들(예를 들어, 필드 또는 필드의 조합) 사이에서의 종속성 관계 및 등가성 관계 등의 제약조건을 식별한다.
필드가 컨스펙에 의해 참조되는 특정 데이터세트 인스턴스는 참조된 필드가 기존의 데이터세트 인스턴스의 필드에 대응할 것을 보장하도록 식별될 수 있지만, 특정 데이터세트 인스턴스는 반드시 식별되지 않아도 되는데, 이것은 참조되는 필드가 나중에 기존의 데이터세트 인스턴스의 필드에 매핑될 수 있기 때문이다. 컨스펙은, 데이터세트의 필드의 적어도 일부를 논리적으로 나타내는 필드 식별자를 가진 필드를 참조하는 데이터세트 기술자(dataset descriptor)를 이용하여, 그리고 참조되는 필드 중 상이한 제약조건을 나타내기 위한 여러 상이한 방식으로 필드 식별자를 연관시키는 데이터 구조의 링크를 사용해서 구현될 수 있다. 데이터세트 기술자는 반드시 현재 기존의 데이터세트 인스턴스에 대응하지 않아도 된다. 따라서, 소정의 컨스펙은 제약조건에 의해 참조되는 필드가 이들 데이터세트 인스턴스 내에 존재하는 한, 임의의 대수의 데이터세트 인스턴스에 적용할 수 있다. 제1 상태에서 소정의 데이터세트를 나타내는 입력 데이터세트 인스턴스는 제2 상태에서 소정의 데이터세트를 나타내는 대응하는 출력 데이터세트 인스턴스를 제공하기 위해 그룹 내의 다른 데이터세트와 함께 변환될 수 있다. 출력 데이터세트 인스턴스는 변환이 원본 데이터세트에 대해 이루어지는 경우에 입력 데이터세트 인스턴스를 교체하거나, 또는 출력 데이터세트 인스턴스는 원본 데이터세트의 복제물에 대해 변환이 이루어지는 경우에 입력 데이터세트 인스턴스와 함께 존재할 수 있다.
전형적인 사용의 예는 다수의 데이터세트의 그룹으로부터의 레코드의 필터링, 새로운 레코드를 생성하기 위한 레코드의 확장 또는 복제를 포함하는 테스트 데이터의 생성에 관한 것이며, 이 모두가 상이한 데이터세트 중에서 참조 무결성을 유지한다. 컨스펙은 시스템이 이 작업을 데이터세트의 그룹에 적용되는 필터 동작으로서 수행하고, 데이터세트의 그룹에 적용되는 확장 동작으로서 수행할 수 있도록 하기 위해 데이터세트들 사이의 관계에 관한 충분한 정보를 제공한다. 제1 동작으로부터 출력되는 다수의 출력 데이터세트 인스턴스는 제2 동작에 제공되고, 그 결과가 출력 데이터세트 인스턴스의 제2 세트가 된다. "데이터세트"라는 용어는 컨스펙이 레코드 포맷 및 요소(기본 키 및 외래 키 요소)들 사이의 다른 구조적 관계를 포함하는 데이터세트의 소정의 특징의 정의를 참조할 때에 사용되며, "데이터세트 인스턴스"라는 용어는 소정 상태에서의 데이터세트의 레코드를 나타내는(컨스펙에 의해 규정된 포맷으로) 바이트의 물리적 집합을 의미한다.
일례로, 2개의 데이터세트가 컨스펙, 즉 "고객" 데이터세트와 "트랜잭션" 데이터세트에 의해 참조된다고 가정해본다. 또한, 트랜잭션 데이터세트는 고객 데이터세트 내의 필드에 대한 외래 키를 참조하는 커스트아이디(custid) 필드를 갖는다. 필터링 작업은 고객을 필터링하고 트랜잭션을 필터링하는 것을 포함하지만, 컨스펙에서 정의된 키 관계 때문에, 시스템 필터는 트랜잭션이 이미 포함되어 있는 고객만을 참조하는 것을 포함하도록 트랜잭션을 행한다. 본 시스템은 데이터세트 간의 관계를 유지하면서, 각 데이터세트에 대해 커스트마이즈드 필터링 동작을 수행할 수 있다.
레코드를 확장하는 제2 동작에 대하여, 작업은 "전개"(fan out)된 값을 갖는 새로운 레코드를 생성하기 위해 트랜잭션 레코드의 복제를 포함하는데, 새로운 트랜잭션이 유연하도록 해서 이들이 새로운 고객을 참조하는 것이 가능하도록 한다. 다시 말해서, 컨스펙은 고객과 트랜잭션 간의 부호/자식 관계를 규정하기 때문에, 새로운 트랜잭션이 새로운 고객을 참조하는 것이 가능할 것이 요구될 수 있다. 본 시스템은 특정 레코드의 복제, 및 필드 변경 동작을 수행하면서 이들 관계를 유지할 수 있다.
본 발명의 다른 특징과 장점에 대해서는 청구범위와 이하의 상세한 설명으로부터 명백할 것이다.
도 1은 관련 데이터세트를 처리하기 위한 시스템의 블록도이다.
도 2는 데이터 처리 과정의 예를 나타내는 플로차트이다.
도 3a 및 3b는 데이터 처리 시스템에 의해 사용되는 여러 엔티티 사이에서의 관계를 나타내는 개략도면이다.
도 4a, 4b, 및 4c는 제약조건 명세(컨스펙) 데이터 구조의 개략도면이다.
도 5는 데이터세트에 적용되는 변환을 나타내는 도면이다.
도 6은 생성 프로세서의 동작을 나타내는 블록도이다.
도 7은 데이터 처리를 수행하기 위해 작업을 스케줄링하기 위한 플랜의 개략도면이다.
도 8은 데이터플로우 그래프의 개략도면이다.
도 9a는 데이터세트 처리 순서의 선택을 나타내는 블록도이다.
도 9b는 제약조건 명세(consepc) 데이터 구조의 개략도면이다.
도 10은 데이터플로우 그래프의 개략도면이다.
도 11은 히스토그램을 나타내는 도면이다.
도 12a-12g는 데이터플로우 그래프의 개략도면이다.
도 13은 도수 분포를 나타내는 도면이다.
도 14는 확장 동작을 나타내는 개략도면이다.
도 15는 인덱스 값의 범위를 나타내는 차트이다.
도 16 및 도 17a-17j는 패키지 파일의 리스트를 나타낸다.
도 18a-18d는 논리 예를 나타낸다.
도 1은 데이터세트 처리 기술이 사용될 수 있는 데이터 처리 시스템(100)의 예를 나타낸다. 이 시스템(100)은 데이터 소스(102)를 포함하며, 데이터 소스(102)는 기억 장치 등의 데이터의 하나 이상의 소스와 온라인 데이터 스트림에의 접속을 포함할 수 있으며, 이들 각각은 다양한 기억 포맷(예를 들어, 데이터베이스 테이블, 스프레드시트 파일, 플랫 텍스트 파일, 또는 메인 프레임에 의해 사용되는 네이티브 포맷)으로 데이터세트를 기억할 수 있다. 실행 환경(execution environment)(104)은 전처리 모듈(pre-processing module)(106)과 처리 모듈(112)을 포함한다. 실행 환경(104)은 UNIX 운영체제 등의 적당한 운영체제하에서 하나 이상의 범용 컴퓨터에서 호스트될 수 있다. 예를 들어, 실행 환경(104)은, 로컬(예를 들어, SMP 컴퓨터 등의 다중 프로세서 시스템) 또는 로컬 분산된(예를 들어, 클러스터 또는 MPP로서 연결된 다중 프로세서), 또는 원격이나 원격 분산된(예를 들어, 근거리 통신망(LAN) 및/또는 원거리 통신망(WAN)에 의해 연결된 다중 프로세서), 또는 이들이 임의로 조합된 다수의 중앙처리장치(CPU)를 이용하는 컴퓨터 시스템의 구성을 포함하는 다중 노드 병렬 컴퓨팅 환경을 포함할 수 있다.
전처리 모듈(106)은 실행 환경(104)에 액세스 가능한 데이터 저장 시스템(116) 내에 기억된, 데이터 구조로 표현되는 제약조건 명세(constraint specification)(컨스펙)(114), 및 데이터 구조로 표현되는 데이터세트 그룹의 레코드에 트랜잭션을 적용하기 위한 규칙으로서, 데이터 저장 시스템(116) 내에 기억된 규칙(115)을 판독한다. 전처리 모듈(106)은 처리 모듈(112)에 의해 사용되는 정보를 출력해서, 그 변환(transformation)을 레코드에 적절한 방식(예를 들어, 특정의 순서로)으로 적용하고, 그 결과를 기억 또는 출력한다. 처리 모듈(112)에 의해 처리되는 레코드는 데이터 소스(102)에 의해 공급된다. 데이터 소스(102)를 제공하는 기억 장치는 실행 환경(104)에 대해 로컬이 될 수 있는데, 예를 들어, 실행 환경(104)을 구동하는 컴퓨터에 접속된 기억 매체(예를 들어, 하드 드라이브(108))에 기억될 수 있다. 또한, 기억 장치는 실행 환경(104)에 대해 원격이 될 수 있는데, 예를 들어, 원격 접속을 통해 실행 환경(104)을 구동하는 컴퓨터와 통신하는 원격 시스템(예를 들어, 메인프레임(110))에서 호스트된다.
데이터 저장 시스템(116)은 또한 개발자(120)가 제약조건 명세(컨스펙)(114)와 규칙(115)을 생성할 수 있는 개발 환경(118)에 액세스할 수 있다. 개발 환경(118) 및 실행 환경(104)은, 일부 구현 예에서, 데이터플로우 그래프로서 애플리케이션을 개발 및 실행하도록 구성된다. 다양한 계산이 유향 그래프(direct graph)("데이터플로우 그래프"라고 함)를 이용한 데이터 플로우로서 표현될 수 있다. 계산의 성분은 그래프의 정점(vertex)과 관련되어 있고, 성분 간의 작업 요소(예를 들어, 레코드)의 데이터 흐름은 그래프의 링크(아크, 에지)에 대응한다. 정점은 데이터 처리 성분 또는 데이터세트를 나타낼 수 있다. 데이터 처리 성분은 하나 이상의 입력 포트에서 데이터를 수신하고, 해당 데이터를 처리하며, 하나 이상의 출력 포트로부터 데이터를 제공하며, 데이터세트는 작업 요소의 소스 또는 싱크로서 작용한다. 이러한 그래프 기반의 계산(graph-based computation)을 구현하는 시스템이, 본원에서 참조에 의해 원용하는, "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"란 명칭의 미국특허 5,966,072호에 개시되어 있다. 그래프 기반의 애플리케이션을 개발하기 위한 개발의 예에 대해서는, 본원에서 참조에 의해 원용하는, "Managing Parameters for Graph-Based Applications"란 명칭의 미국출원 공개번호 2007/0011668호에 상세하게 개시되어 있다.
도 2는 데이터세트 처리 과정(200)에 대한 플로차트를 나타낸다. 본 과정(200)은, 예를 들어 전처리 모듈(106) 및 처리 모듈(112)에 의해 수행된다. 전처리 모듈(106)은 다수의 데이터세트로부터 레코드를 수신(시스템의 입력 장치 또는 포트를 통해)한다(200). 전처리 모듈(106)은 데이터 저장 시스템(116)에 기억된 제약조건 명세(컨스펙)(114) 및 하나 이상의 변환(규칙)(115)을 수신한다(204). 전처리 모듈(106)은 다수의 데이터세트를 위한 처리 순서를 판정하기 위해 제약조건 명세를 분석한다(206). 전처리 모듈(106)로부터의 입력에 기초하여, 처리 모듈(112)은 규칙(115)에서 정의된 하나 이상의 변환을 다수의 데이터세트의 각각으로부터의 레코드에 결정된 처리 순서로 적용한다. 변환은 다수의 데이터세트의 각각의 데이터세트로부터의 레코드에 각각 반복적으로 적용된다(208). 소정의 데이터세트로부터의 레코드에 적용되는 변환은, 변환을, 이전에 처리된 데이터세트로부터의 레코드와, 이전에 처리한 데이터세트와 제약조건 명세에 의해 특정된 소정의 데이터세트 간의 하나 이상의 제약조건에 적용한 결과에 적어도 부분적으로 기초하여 적용된다. 본 과정(200)은 더 많은 세트의 변환이 적용되어야 하는지를 판정(예를 들어, 추가의 규칙 세트에 기초하여)하고(210), 더 많은 세트의 변환이 적용되어야 한다고 판정되면, 본 과정은 변환의 다음 세트에 대한 입력 데이터세트 인스턴스로서 이전의 변환 세트로부터 생성된 출력 데이터세트 인스턴스를 사용하여 반복된다. 변환이 완료되면, 시스템은 변환의 결과를 기억 또는 출력한다(212). 데이터 처리 과정의 다른 예로서, 다른 단계(예를 들어, 이하에 더 상세하게 설명하는 바와 같이, 데이터세트의 프로파일링)를 포함하도록, 또는 상이한 순서(예를 들어, 다수의 데이터세트에 대한 처리 순서는 데이터세트가 수신되지 전의 제약조건 명세에 기초하여 판정될 수 있다)로 수행되도록 본 과정의 단계가 변경될 수 있다.
하나의 관점에서, 시스템의 데이터세트의 집합으로부터의 레코드에 대해 동작하는 계산 모듈을 제공한다. 이 계산 모듈은, 제약조건 명세(컨스펙)(114)에 의해 특정된 제약조건과 규칙(115)에 기초하여, 컨스펙(114)에서 참조되는 다수의 데이터세트를 포함하는 변환을 정의하는 입력 파라미터를 사용하여 구성되는 데이터플로우 그래프를 사용하여 구현될 수 있다. 데이터플로우 그래프 중의 일부는 "전처리 그래프"라고 하는 전처리 모듈(106)의 전처리에 사용되고, 데이터플로우 그래프 중의 일부는 전처리 그래프에 의해 제공되는 파라미터에 따라 구성되는 전처리 모듈(112)의 처리를 위해 사용된다. 데이터플로우 그래프는, 예를 들어 작업 스케줄링 환경을 사용하여 제어될 수 있는데, 이러한 작업 스케줄링 환경은 데이터플로우 그래프의 실행을 제어하며, 데이터플로우 그래프를 반복해서 실행하여, 이하에 더 상세하게 설명하는 바와 같이, 입력 파라미터에 의해 식별되는 일련의 데이터세트 인스턴스 내의 레코드를 처리할 수 있다.
다른 관점에서, 시스템은 전처리 그래프에 의해 관계를 설정하고 변환 로직 및 컨스펙 내의 개별 데이터세트에 대한 처리 순서 등의 다른 정보를 기록할 수 있는 "메모리 내" 표현(예를 들어, 실행 환경(104)에 액세스 가능한 로컬 메모리 내에 기억됨)으로 직렬화 및 판독될 수 있는 컨스펙의 표준 표현을 제공한다. 예를 들어, 데이터플로우 그래프 내에서 실행될 수 있는 형태로 데이터를 조작하기 위한 동작의 정의를 가능하게 하는 데이터 조작 언어(DML: Data Manipulation Language)를 사용하는 표현에 의해, 전처리 그래프 내의 변환이 컨스펙 내에 정의된 모든 데이터세트를 조사할 수 있으며, 다중 데이터세트 결합 동작과 함께 기본 키 및 외래 키 관계에 기초하여, 데이터세트의 부호-자식 처리 순서를 판정할 수 있는데, 이들의 부모 레코드와 관련해서 자식 레코드를 처리하는 데에 요구되는 결합 키 요소(결합 동작 내의 키로서 사용되는 요소)와 함께 판정한다.
다른 관점으로서, 시스템은 컨스펙에 의해 참조되는 데이터세트의 레코드에 적용될 수 있는 변환 규칙의 표준 표현을 제공한다. 이러한 변환 규칙의 표현을 "생성"(production)이라고 한다. 생성은 컨스펙 내에 정의되는 제약조건으로부터 특정의 변환과 연관될 수 있는 규칙을 분해한다. 예를 들어, 컨스펙 내의 기본 키 및 외래 키와 키-요소 멤버의 집합이 정의될 수 있으며, 생성에서의 기본 키 필드에 적용되는 스크램블링 또는 마스킹 규칙이 정의될 수 있다. 컨스펙으로부터 규칙을 분리시킴으로써, 많은 상이한 생성 규칙이 정의될 수 있다. 생성 규칙은 컨스펙과는 모두 독립적이며, 또한, 임의의 특정의 생성이 적용되는 경우, 시스템은 기본 키 필드가 스크램블되는 것과 컨스펙 내에 정의된 제약조건에 의해, 다른 데이터세트 내의 외래 키 참조를 보장할 것이다. 생성 규칙은 생성 변환(production transform) 등의 다양한 방식 중의 하나로 구현될 수 있다.
도 3a는 컨스펙(302), 생성(304), 및 이들을 판독하고 처리 단계를 입력 데이터세트의 인스턴스의 레코드에 적용하는 "생성 프로세서"(306)(예를 들어, 데이터플로우 그래프를 사용하여 구현됨) 간의 관계의 예를 나타낸다. 생성은 각 입력 데이터세트 인스턴스(308)의 위치를 식별하고, 각 출력 데이터세트 인스턴스(310)의 위치와 타겟 아이덴티티를 식별한다.
도 3b는 데이지 체인 방식으로 연결된(daisy chained) 일련의 생성을 나타내는데, 하나의 생성(314)의 출력 데이터세트 인스턴스는 다음 생성(2316)에 대한 입력으로서 기능한다. 포함된 데이터세트 인스턴스(315, 320, 324)는 생성마다 동일하지만(각각의 생성을 공급하는 컨스펙(312)이 동일하기 때문에), 각 단계에서의 생성 프로세서(318, 322)는 생성 규칙의 특성에 따라, 선행하는 생성과는 상이한 처리 순서를 적용할 수 있다.
컨스펙은 단일 데이터세트(데이터의 특정의 집합을 나타냄)에 대한 추출의 레벨보다 컨스펙에 의해 참조되는 데이터세트의 집합에 대해 "높은 수준"의 추출을 제공하고, 필터링, 마스킹, 및 데이터 확장 등의 다중의 컨스펙 수준의 동작(특정된 제약조건에 따른 데이터세트의 집합에 대해 수행되는 동작)의 연쇄를 포함하는 데이터플로우 애플리케이션의 개발을 단순화한다. 시스템은 미리 구축된 타입의 생성 규칙의 집합을 포함할 수 있지만, 개발자로 하여금 추가의 타입의 변환을 정의하도록 하는 확장 포인트(extension point)를 제공할 수 있다. 예를 들어, 차트를 작성하고 개별 데이터세트에 대해 보고하고자 하는 생성의 데이터 보고 타입을 구축하고자 할 수 있지만, 컨스펙 내의 다수의 데이터세트 중의 수집된 결과를 제공하게 된다. 이러한 새로운 타입의 생성은 모든 생성 규칙에 대해 기본 프로세서에 제공된 기본 순서의 횡단 메커니즘을 이용할 수 있지만, 처리된 데이터세트의 각각의 대한 데이터 병합(data aggregation) 및 차트 작성 기능을 추가할 수 있다.
도 4a는 ab_conspec이라 불리는 컨스펙(400)을 나타내며, 이것은 컨스펙과 연관된 대응하는 데이터세트 인스턴스(예를 들어, 컨스펙에 의해 참조되는 데이터세트와 동일한 필드를 갖는 데이터세트 인스턴스)의 레코드에 적용될 수 있는 전형적인 생성 동작에 대한 관련 데이터세트의 집합 중의 제약조건의 예이다. 컨스펙(400)은 2개의 고객 데이터세트(a_customers, b_customers), 이들의 자식 트랜잭션 데이터세트(a_transactions, b_transactions), 및 consumer_info 데이터세트를 나타내며, 가정용 정보를 제공한다. 3-way 결합 연관은 고객 및 customer_info 데이터세트로부터의 키 중에서 "등가"(equivalence) 특성을 정의하며, 2개의 관계는 고객과 트랜잭션 간의 부모-자식 "종속성" 특성을 기술한다.
도 4b 및 4c는 컨스펙에 의해 참조되는 다중 데이터세트 중의 관계를 정의하는 conspce(450)의 예를 나타낸다. 이것은 컨스펙을 위한 컨스펙으로서 해석될 수 있다.
생성에 적합한 하나의 전형적인 동작은 각 데이터세트의 요소들 간의 종속성(예를 들어, 외래 키/기본 키 관계) 및 등가(예를 들어, 동일한 엔티티를 나타내는 필드 간의 연관성) 등의 고유 특성을 파괴하지 않으면서, 데이터세트 인스턴스의 집합의 크기를 감소시키는 것이다. 예를 들어, 도 4a의 ab_conspec을 참조하면, 특정 인스턴스의 a_customers의 수를 절반으로 감축할 수 있으며, 다른 인스턴스의 a_transactions의 수를 절반으로 감축할 수 있다. 그러나, 각각의 데이터세트 인스턴스를 처음 50% 또는 레코드를 임의로 제거하는 것에 의해 감소시키는 경우, 처리완료된 고객 데이터세트 인스턴스 내에 존재하지 않는 고객을 참조하는 트랜잭션에 의해 종료할 것이다. 도 5는 참조 무결성(referential integrity)을 유지하는 것과 관련없이, 데이터세트 인스턴스를 임의로 감소시키는 효과를 나타낸다.
도 4a에 나타낸 컨스펙 내에 정의된 특성(예를 들어, 데이터세트 요소 중의 종속성 및 데이터세트 요소 중의 등가)을 보존하는 방식으로 데이터세트 인스턴스를 처리하기 위해, 다중 데이터세트 인스턴스에 대해 순차적으로 동작하는 포괄적 세트의 처리 그래프를 포함하는 생성 프로세서를 이용하면, 각 데이터세트 인스턴스가 처리되는 동안 이들 특성을 보존할 수 있다.
본 예에서, a_customer 및 a_transactions을 감소시키는 바람직한 방식은 고객이 처음에 처리되어야 한다고 판정될 수 있는데, 이는 트랜잭션이 이들을 참조하기 때문이다. 또한, 일단 고객이 50% 감소되었다면, 트랜잭션은 이미 처리된 고객과 내부적으로 결합되어야, 남아 있는 고객에 부합하는 트랜잭션만을 선택할 수 있다. 트랜잭션이 참조 무결성을 유지하기 위해 필터링되었으면, 생성 규칙에서 정의된, 가능할 수 있는, 원래의 수의 50% 또는 이미 감소된 수의 50%를 유지하기 위해 추가로 트랜잭션을 필터링할 수 있다. 참조 무결성 필터에 의하면, 모든 트랜잭션이 제거될 수 있으며, 이에 의해 원래의 수의 50%까지 필터링에 의해 감소시키는 것이 불가능하게 된다.
도 5는 컨스펙 ab_conspec에 정의된 바와 같이, 데이터세트 인스턴스 중의 참조 무결성을 유지하면서 a_customers 및 a_transactions를 감소시키는 효과를 나타낸다. 본 예에서, 사용자는 "레코드를 50%만큼 감소"와 같은 규칙을 지정할 수 있으며, 생성 프로세서가 참조된 컨스펙 내에 선언된 다양한 특성을 유지하는 것을 예상할 수 있다. 이것은 다수의 관련된 데이터세트 인스턴스에 적용되는 변환(50% 감소)을 취급하는 2개의 상이한 방식의 비교이며, 첫 번째 방식은 참조 무결성을 유지하는 데에 실패하고, 두 번째 방식은 참조 무결성을 유지한다. 원래의 데이터세트 인스턴스(502, 504)에 적용된 한가지 결과(510)는 각 데이터세트 인스턴스를 50%만큼 임의로 감소시킨 후의 결과를 나타낸다. 굵은 트랜잭션은 존재하지 않는 고객에 대한 잘못된 참조를 강조표시한다. 다른 결과(520)는 고객을 50% 감소하고, 참조 무결성을 유지하기 위해 트랜잭션을 필터링하며, 원래의 50%를 유지하기 위해 이 세트를 필터링한 후의 결과를 나타낸다.
도 6은 생성 프로세서(600)가 컨스펙(602)을 식별하는 생성에서 판독하고, 식별된 컨스펙을 판독하며, 식별된 고유 이름의 세트에 따라 데이터세트 인스턴스(604, 606)의 집합을 판독하고, 생성(608) 내에 정의된 규칙에 따라 데이터세트 인스턴스를 처리하며, 생성 내에 정의된 타겟 이름에 따라 새로운 세트의 데이터세트 인스턴스(610, 612)를 기입하는 방법을 나타낸다. 일반적으로, 도 6은 특정 이름 접미사(name suffix)를 가진 데이터세트 인스턴스를 판독하고, 생성 규칙에 따라 레코드를 감소시키며, 컨스펙 특성(즉, 참조 무결성)을 유지하고, 소정의 이름 접미사를 사용하여 타겟 데이터베이스 인스턴스에 결과를 기입하는 생성 프로세서의 동작을 나타낸다.
생성 프로세서의 역할은 생성에서 특정된 규칙을, 충분한 "부모 참여" 및 "필터" 변환을 포함하는 하나 이상의 포괄적이고 설정가능한 그래프에 투입하는 것이며, 데이터세트는 생성 규칙에 따라 처리되며, 참조 무결성 및 컨스펙 내에 선언된 다른 특징을 유지하기 위해 사용자가 전용 그래프를 코드화할 필요가 없다.
포괄적 생성 실행 그래프(즉, prod_run)의 기본 원리는 처리되는 각 데이터세트 인스턴스가 생성 프로세서의 실행에서 이미 처리된 모든 선행하는 데이터세트 인스턴스에 대한 액세스를 갖도록 하는 것이다. prod_run 그래프는 이전에 처리된 다른 데이터세트 인스턴스와 데이터세트 인스턴스를 연계하는 포괄적 결합을 포함할 수 있다. 생성 프로세서의 잡(job)은 전체적으로 포함된 데이터세트 인스턴스에 대한 처리 순서를 결정하고, prod_run 그래프를 설정하는 각 데이터세트에 대한 파라미터를 기입하는 것이다.
본 예에서, 생성 프로세서는 처음에, a_customers는 처리될 필요가 있으며 이들은 부모가 없으며, 그리고 a_transactions는 처리될 필요가 있으며 부호 또는 선행하는 데이터세트는 a_customers라고 판정할 수 있다. 일부의 경우에, 프로세서는 외래-기본 키 관점으로부터 부모가 되지 않을 수 있지만, 먼저 처리되었던 데이터세트가 될 것이기 때문에, 선행자의 필드와 그 필드 중의 하나 이상을 관련시키는 등가 특성을 가질 수 있는 후속 데이터세트에 일부 사용될 수 있다.
기본적인 경우에, 생성 프로세서는 처리 순서가 [vector a_customers, a_transactions] 형식의 데이터세트 이름의 벡터라고 판정할 수 있으며, a_customers 데이터세트 인스턴스를 처리하기 위한 파라미터는 dataset_name:a_customers, parents:[vector]라고 판정할 수 있으며, a_transactions를 처리하기 위한 파라미터는 dataset_name:a_transactions, parents:[vector a_customers]라고 판정할 수 있다.
다음의 예는 각 데이터세트 인스턴스를 처리하기 위해 prod_run 그래프에 의해 수행되는 다수의 작업과 함께, 생성 실행 그래프에 의해 사용되는 다양한 파라미터 및 처리 순서를 유도하는 작업을 설명한다.
컨스펙 데이터 구조는 일련의 데이터세트와 이들의 제약조건을, 이들의 필드 사이의 다양한 타입의 관계에 기초하여 기술하는 메타데이터의 독립형 표현이다. 일부 구현에서, 컨스펙에 의해, 전처리 그래프는 일련의 공통 DML 함수를 사용하여 표준 방식으로 일련의 데이터세트 중에서 제약조건을 판독 및 네비게이트할 수 있다. 전처리 그래프는 다운스트림 데이터플로우 그래프의 동작을 유도하는 설정 파라미터를 생성할 수 있다. 이와 같이, 전처리 그래프는 통상적으로 레코드 세트가 아닌 명령 정보에서 판독하며, 다운스트림 그래프 및 플랜에 공급하는 "파라미터 세트"(즉, "psets")라고 불리는 파라미터 세트를 생성한다. 파라미터 세트 내의 파라미터는 데이터플로우 그래프 내의 성분에 메타데이터를 제공하며, 그 기능을 설정하는 데에 사용된다.
컨스펙이 전처리 그래프와 관련하여 사용될 수 있는 방법을 얻기 위해, 주요 및 외래 키 중에 참조 무결성을 유지하면서 데이터세트의 집합을 필터링하는 예를 든다.
본 예에서, 고객 및 트랜잭션을 나타내는 2개의 데이터세트가 있다고 가정한다. 트랜잭션 데이터세트에서, 필드 중의 하나는 고객 데이터세트 내의 기본 키에 해당하는 고객 id를 참조하는 외래 키라고 가정한다. 필터링 동작의 목적은 고객 및 트랜잭션 데이터세트로부터 레코드를 제거하면서, 이들 간에 참조 무결성을 유지함으로써, 필터링된 고객 레코드의 고객 식별자(ID)를 참조하는 트랜잭션 레코드가 없게 된다.
이러한 필터링 동작을 정확하게 수행하기 위하여, 시스템은 처리 순서를 판정하고, 해당 순서의 함수에 해당하는 소정의 제약조건을 유지할 수 있다. 예를 들어, 프로세서는 먼저 고객을 처리하고 트랜잭션을 필터링하는 것으로 결정함으로써, 이미 제거된 고객을 참조하는 트랜잭션이 포함되지 않는다. 이와 달리, 프로세서는 먼저 트랜잭션을 필터링하고 고객을 처리하는 것으로 결정함으로써, 선택된 트랜잭션에 의해 참조되는 고객이 제거되지 않는다.
본 예에서의 전처리 그래프의 잡은 데이터세트의 처리 순서를 결정하고, 각 데이터세트를 처리하는 그래프의 행동을 통제하는 것이다. 컨스펙은 이들 생성 작업을 수행하기 위해 필요한 정보를 가진 전처리 그래프를 제공한다.
컨스펙의 내용은 단일의 데이터세트 내에 포함된 필드를 설명하는 DML 레코드 포맷의 내용을 초과한다. 여기서, 관련이 있지만 별개의 데이터세트 내의 필드의 집합 중의 관련성 및 연관성에 대하여 설명한다. 이것은 주요-외래 키 관계 등의 키들 간의 관계뿐만 아니라, 필드의 순서화 그룹(즉, 키)의 정의를 포함하며, N개의 데이터세트 중의 키를 분류하는 것을 포함한다.
컨스펙은 일련의 레코드 기반의 파일(record-based file)로서 구현될 수 있다. 이러한 형식에서, 그래프는 이들 파일을 판독할 수 있으며, DML 함수에서의 사용을 위한 컨스펙의 메모리 내 벡터 기반의 표현을 예시할 수 있다. 다른 표현으로서, 컨스펙은 주석이 붙은 DML 패키지 파일의 형식을 가질 수 있다. 파일은, 키, 키 요소 멤버, 관계 및 연관성을 정의하기 위한 일련의 코멘트와 함께, 각각의 데이터세트에 대해 DML 레코드 포맷을 포함할 것이다. 이러한 종류의 표현은 사용자가 판독가능하고 편집가능한 것이다.
시스템은 직렬화된 컨스펙을 판독하고 벡터의 집합을 예시하는 DML 함수 라이브러리를 포함한다. 이 라이브러리는 컨스펙에의 기입 뿐만 아니라 컨스펙 내의 관계를 횡단하기 위한 일련의 함수를 포함한다. 전처리 그래프로부터의 이하의 DML 변환 코드는 파일, 컨스펙 및 데이터 이름을 인수로서 취하는 함수로부터 컨스펙을 로딩하기 위한 호출을 나타내며, 기본 키 요소의 Max 및 Min 키 값을 조사하기 위한 SQL 선택 스테이트먼트를 생성한다. 컨스펙 DML 라이브러리는 특정된 데이터세트의 기본 키와 연관된 요소를 취득하기 위한 함수를 제공한다. DML 함수의 예를 도 16 및 도 17a-17j에 나타낸다.
도 4a를 다시 참조하면, 일련 다중 필드 분류 키 중에서, 5개의 데이터세트, 2개의 주요-외래 키 관계 및 하나의 3-웨이 결합 관계를 포함하는 컨스펙을 나타낸다. 본 도면은 컨스펙의 메모리 내 표현을 판독하고, ".svg" 파일로서 렌더링하기에 적합한 "graphviz" 도트 파일을 기입하는 일련의 DML 함수에 의해 생성되었다. 화살표는 2가지 목적을 갖는데, 이들은 외래 키와 기본 키 사이에서 주고 받는 관계를 나타내며, 이들은 결합 연관 내의 키 멤버십을 나타낸다.
컨스펙이 일련의 레코드 기반 데이터베이스로서 구현되는 경우에, 이들 데이터세트 중의 관계를 나타내는 컨스펙을 생성할 수 있다. 이것은 실질적으로 컨스펙을 표현하기 위한 컨스펙이다.
도 4b를 참조하면, 5개의 데이터세트의 집합과 관련된 컨스펙이 도시되어 있다. 왼쪽의 "dml_dataset"라는 이름의 데이터세트는 일련의 데이터세트를 정의하는 데에 사용된다. 상단 중앙의 "dml_dataelement"는 이들 데이터세트 각각의 요소를 정의하는 데에 사용된다. "dml_datakey" 데이터세트는 각 데이터세트 내의 키를 정의한다. "dml_datakeyelement" 데이터세트는 요소 멤버십에 대한 키를 정의한다. 남은 데이터세트는 키들 중의 관계 및 연관성을 정의한다.
컨스펙은 사용자가 판독가능한 방식으로 표현될 수 있다. 도 16 및 도 17a-17j는, a-customers, b-customers, 이들의 트랜잭션 및 관련 고객 정보를 포함하는, 도 4a에 나타낸 컨스펙을 기술하는 주석붙은 DML 패키지 파일의 리스트(실행가능한 코드의 일부)를 나타낸다. 도 16은 컨스펙과 함께 사용될 수 있는 데이터베이스 쿼리(예를 들어, SQL을 지원하는 데이터베이스와 함께 사용되는 SQL 쿼리)를 설정하는 DML 함수의 리스트(1600)를 나타낸다. 도 17a에 나타낸 리스트(1702)에서, 키 및 필드-키 멤버십은 DML 타입 정의 내의 필드의 오른쪽에 주석이 붙어 있다. 상단의 코멘트의 블록은 키 중의 관계 및 연관성을 부호화한다. 도 17b 및 17c에 나타낸 리스트(1704)는 컨스펙에 대한 컨스펙의 예를 나타낸다.
컨스펙은 다양한 방식으로 표현될 수 있다. 이하의 예는 컨스펙의 표현을 기술하는 소정의 용어를 사용한다. 컨스펙은 일련의 데이터세트 중의 구조 및 관계의 기술이다. 컨스펙 인스턴스는 컨스펙 내에서 참조되는 데이터세트의 데이터세트 인스턴스의 집합이다. 데이터세트 인스턴스는 특정 데이터세트(예를 들어, 데이터베이스 테이블 또는 파일 내에 일반적으로 공급되는, 레코드의 집합)이다.
컨스펙은 주석붙은 패키지 파일 또는 다수의 상이한 레코드 포맷에 이어지는 레코드의 집합으로서 저장될 수 있다. 일부 구현에 있어서, 컨스펙은 조사 파일(lookup file)의 집합으로서 저장된다. 이들 조사 파일 중의 구조 및 관계는, 도 4b 및 4c의 컨스펙에 대한 컨스펙에 의해 나타낸 바와 같이, 컨스펙을 사용하여 기술될 수 있다.
컨스펙의 이들 2개의 직렬화가능한 표현(예를 들어, 주석붙은 패키지 파일, 또는 조사 파일의 집합(즉, 컨스펙 인스턴스))의 경우, DML 함수의 집합에 의해 네비게이트 및 변경될 수 있는 컨스펙의 메모리 내 DML 표현이 구현될 수 있다. 이러한 메모리 내 표현은 도 17d에 나타낸 리스트(1706)의 형식을 가질 수 있다.
이에 의하면, 도 17e에 나타낸 리스트(1708)로 나타낸 바와 같이, 컨스펙의 DML 패키지 파일 표현을 파싱할 수 있으며, 이름에 의해 데이터세트를 찾을 수 있고, 해당 데이터세트에 대해 외래 키를 검색할 수 있는 DML 함수 라이브러리를 개발할 수 있다.
서브세팅, 마스킹, 및 확장의 동작은 모두 데이터세트의 집합 및 이들의 연관된 컨스펙에 적용될 수 있는 모든 프로세스이다. 이들 동작은 컨스펙 생성으로서 간주될 수 있다. 생성은 소스 데이터세트 인스턴스의 위치 및 식별자와 타겟 데이터세트 인스턴스의 원하는 위치 및 식별자를 포함하는 컨스펙과 연관된 규칙의 집합이다. 여기서, 데이터세트 인스턴스는 컨스펙 내에 기술된 데이터세트의 실제 데이터를 의미한다.
일련의 데이터세트 중의 구조 및 관계를 정의하는 컨스펙과 달리, 생성은 필드가 일부 컨스펙에 의해 정의된 제약조건을 따르는 데이터세트 인스턴스(예를 들어, 파일, db 테이블 등)의 집합에 대한 일련의 규칙을 정의한다.
컨스펙은 데이터세트 내의 레코드 중의 종속성 등의 제약조건을 정의하기 때문에, 데이터세트 인스턴스의 집합 내의 데이터를 처리하는 임의의 종류의 생성은 컨스펙을 사용하여 종속성을 준수하는 순서로 이루어진다. 예를 들어, 고객을 필터링하기 위한 호출을 하는 생성이 먼저 이 동작을 행하고, 의존하는 데이터세트 인스턴스(트랜잭션 등)로부터 레코드를 필터링한다. 이와 달리, 새로운 고객 및 트랜잭션을 생성한 생성이 있는 경우, 시스템은 먼저 고객 데이터세트 인스턴스 내에 새로운 레코드를 생성하고, 새로운 고객을 참조하기 위한 트랜잭션 데이터세트 인스턴스 내에 새로운 레코드를 연결한다. 이미 고객이 존재하는 경우, 시스템은 새로운 고객을 생성하지 않고 기존의 고객에 새로운 트랜잭션을 가정적으로 연결할 수 있다. 어느 경우든, 컨스펙 내의 종속성은, 생성 규칙의 특성에 따라, 참조 무결성을 실질적으로 유지하기 위해 준수될 수 있는 자식에 대한 부모의 처리 순서를 암시한다.
생성의 연결을 지원하기 위해, 포괄적 프로세서는 생성에 고유한 시그너처(signature)를 사용하여 새로운 레코드에 ID를 할당한다. 이에 의하면, 하나의 생성에 의해 할당된 ID는 다음 생성에서 할당된 ID와 충돌하지 않을 것이다. 이에 대한 더 구체적인 설명은 기본 키 할당에 대한 내용에서 한다.
도 7은 생성 프로세서의 작업을 수행할 수 있는 플랜(700)을 나타낸다. 플랜은 유향 그래프이다. 유향 그래프의 노드는 수행할 작업을 나타내며, 링크는 작업이 호출되는 순서를 나타낸다. 플랜(700)은 prod_setup 그래프를 호출하고, prod_profile, 및 처리 순서에서 각 데이터 세트에 대한 prod_run psets, 및 컨스펙 내에 정의된 각 종속성에 대한 prod_analyze psets 및 등가 특성의 실행을 통한 루프에 의해 동작한다.
플랜은 prod_setup이라고 하는 그래프(702)를 실행함으로써 시작하고, 이 그래프(702)는 생성의 규칙에 따른 처리 순서 내에 이름이 붙은 각각의 데이터세트 인스턴스를 프로파일, 분석 및 처리하는 데에 요구되는 파라미터 세트와 함께, 컨스펙 내의 데이터 인스턴스의 처리 순서를 생성한다. prod_setup 그래프(702)는 도 8에 더 상세하게 나타낸 prod_profile, prod_analysis, 및 prod_run psets의 처리 순서를 생성한다.
도 7에 나타낸 플랜(700)에 의해 나타낸 생성 프로세서의 제2 단계(704)는 처리 순서에서 데이터세트의 각각의 프로파일에 사용되는 데이터플로우 그래프(psets에 의해 설정됨)의 실행을 통한 루프이다. 데이터플로우 그래프를 이용하여 데이터세트를 프로파일링하기 위해 임의의 다양한 기술이 사용될 수 있다(예를 들어, 본 명세서에서 참조에 의해 원용하는 미국특허출원 공개번호 2005/0114369에 개시된 것). 프로파일링은 생성이 레코드의 데이터베이스에의 언로딩 및 갱신을 위해 호출을 할 수 있으며, 임의의 업로드를 행하기 전에 데이터베이스 내의 기본 키의 개시 및 종료 인덱스 값을 아는 것이 중요한 경우에 요구될 수 있다. 이것은 생성이 레코드를 확장 또는 복제하기 위해 호출할 수 있는 경우와 관련된다. 레코드가 복제되면, 각각의 기본 키 멤버에 대해 새로운 기본 키 값을 할당하는 것이 필요하며, 따라서 생성 프로세서는 데이터베이스 내에 이미 존재하는 값과 간섭하지 않는 새로운 값이 선택되는 것을 보장하기 위해 데이터베이스에 의해 사용되는 기존의 키 값을 알고 있을 수 있다. 처리의 프로파일링 단계는 처리 순서 내에 이름이 붙은 각 데이터세트에 대해 기본 키 인덱스의 각각에 대해 최소(Min) 및 최대(Max) 값을 생성할 수 있다. 프로파일링 그래프는 각각의 데이터세트를 처리하기 위해 사용되는 후속하는 그래프에 의한 사용을 위한 파일에 각 데이터세트 인스턴스에 대한 Min 및 Max 값을 기입할 수 있다. 간단한 경우로서, prod_run 그래프는 N개의 새로운 레코드를 생성하기 위해 레코드를 복제할 수 있으며, Max 값과 Min 값 간의 차의 범위를 갖는 블록 범위에서 새로운 기본 키 값을 할당할 수 있으며, 이에 따라서, 데이터베이스에 업로딩되는 새로운 레코드가 데이터베이스 내의 이미 존재하는 값과 충돌하지 않게 된다.
도 7에 나타낸 플랜(700)에서 나타낸 생성 프로세서의 제3 단계(706)는 컨스펙 내에 정의된 종속성 및 등가 특성의 각각을 분석하는 것이다. 도 4a에 나타낸 ab_conspec의 예에서, 결합 연관은 3개의 데이터세트 a_customers, b_customers, 및 consumer_info 중의 등가 특성을 정의한다. 이 단계에서, 생성 프로세서는 데이터세트 인스턴스의 각각을 판독하고 외부 결합(outer join)을 수행함으로써, 이 특성을 분석한다. 외부 결합의 오버랩 결과는 집계되어, 필터링을 수행하기 위해 prod_run 그래프에 의해 사용하기 위한 분산 분석 파일에 기입된다. 이 단계의 상세는 도 10 및 도 11의 설명에서 다룬다.
도 7에 나타낸 플랜(700)에서 나타낸 생성 프로세서의 제4 단계(708)는 각각의 데이터세트 인스턴스를 처리하기 위해 사용되는 데이터플로우 그래프(psets에 의해 설정됨)의 실행을 통한 루프이다. 이 단계는 후속하는 도 12b-12g에 나타낸 서브 단계와 함께, 도 12a에 나타낸 그래프 prod_run의 호출을 포함한다.
도 18a 및 도 18b는 부모에서 자식으로의 처리 순서를 생성하기 위해 생성 프로세서에 의해 사용될 수 있는 로직(1802, 1804)의 예를 나타낸다. 여기서, 데이터세트의 초기 시트 세트를 고려하고, 데이터세트의 세트는 횡단 및 포함으로부터 배제된다. 시드 및 배제 데이터세트는 생성의 일부로서 규칙에서와 같이 통과될 수 있다. 컨스펙은 처리 순서에 대한 포함에 고려될 모든 데이터세트의 수퍼세트를 정의할 수 있다.
a_customers, b_customers, a_transactions 등을 포함하는 ab_conspec을 참조하면, a_transactions를 배제하기로 선택할 수 있다. 이 경우, 처리 순서는 a_customers로 시작하지만, a_transactions을 포함하지 않는다. 마찬가지로, 사용자는 소스의 리스트에 a_customers를 포함하지 않는 것으로 선택한 경우, a_customers 및 a_transactions 모두 처리 순서에 포함될 것이다.
도 18a 및 도 18b는 프로그래밍 함수처럼 보이도록 하기 위해 의사 코드의 형태로 된 로직(1802, 1804)을 제시한다. 로직(1802)의 주요 기능은 비어 있는 processing_order 벡터를 초기화하고, processing_order를 수집하기 위한 함수를 호출함으로써 개시한다. 이 함수는 작업이 완료될 때까지 processing_order 벡터에 기입한다.
이 주요 기능은 이름이 붙은 소스 내의 각 데이터세트를 통한 루프에 대해 gen_processing_order 함수를 사용하고, 각각에 대해, 데이터세트의 벡터와 그 모든 자식을 재귀적으로 유도한다. 이후, 그 결과를 all_results 벡터에 추가해서, 복제 값이 없다는 것을 확실하게 한다. 이 시점에서는 순서는 중요하지 않으며, 모든 자식의 포함을 재귀해서 할 뿐이다.
gen_processing_order가 모든 참가 데이터베이스의 리스트를 유도하면, 가장 높은 레벨의 부모(즉, all_results의 세트 내에도 포함되는 부모가 없는 것)를 판정하도록 진행한다. 이것을 판정하는 함수는 update_processing_order이다. 이 함수는 가장 높은 레벨의 부모가 all_results의 세트에 도달할 때까지 부모를 찾아 오름으로써 재귀적으로 동작하고, 이후 이 가장 높은 부모 데이터세트를 processing_order vector에 위치시킨다. 이후, 남아 있는 데이터세트가 처리되는데, 다시 가장 높은 남아 있는 부모를 찾기 위해 재귀해서 올라가는데, 차례대로 다음 processing_order 에 위치시킬 때까지 행한다.
함수 get_dataset_and_its_children_recursively는 중간 자식에 대해 동작하도록 재귀 함수를 호출하고 이후 자신을 호출하는 리드오프 함수로서 작용한다. 여기서 최상위 레벨의 함수는 재귀적으로 모든 자식의 리스트가 되는, 처음에는 비어 있는 벡터를 가진 get_dataset_and_its_children을 호출한다. 이 함수 get_dataset_and_its_children은 소스 데이터세트의 중간 자식에 대해 작업하고 자신을 호출하고, 그 재귀적 호출에서 데이터세트를 하향방향으로 축적하는 벡터를 통과한다.
전체적인 프로세스는 처음에 모든 all_results의 세트를 취득하기 위해 자식을 재귀적으로 취득하는 과정을 포함한다. 그러나, 프로세스는 all_sources의 세트로부터 재귀적으로 부모를 취득함으로써 종료한다.
도 9a 및 도 9b는 이러한 로직을 사용하여 순서를 처리하는 예와 이 순서를 유도하는 데에 사용되는 동반 컨스펙을 나타낸다. 도 9a는 자식이 처리되기 전에 모든 부모가 처리되는 것을 보장하는 처리 순서(902)의 예이다. 나타낸 처리 순서는 A, C, F, E, D, B이다. 도 9b는 자식이 처리되기 전에 모든 부호가 처리되는 것을 보장하는 처리 순서를 나타내는 복잡한 컨스펙(904)이다. 나타낸 처리 순서는, OpJobDefinition, JobDefinitionPropertyValue, OpTimeConstraint, OpDay, OpJobDefinitionDependency, OpFileAndEventConstraint, OpJobDefinitionAction, OpJobDefinitionActionArgument이다. 처리 순서를 생성하기 위한 로직의 다른 실시예는 자식부터 부모까지의 순서를 판정하는 것을 포함할 수 있다.
도 7의 prod_analyze 단계(706)는 컨스펙 내의 각각의 종속성 및 등가 특성이 생성 내에서 식별된 데이터세트 인스턴스의 세트에 대하여 분석될 수 있다. 컨스펙과 연관된 데이터세트 인스턴스의 각각의 집합이 각 특성에 대해 오버랩의 상이한 분포를 나타낼 수 있다. 예를 들어, a_customers와 a_transactions 사이의 것과 같은 종속성 특성에 의해, 소정 세트의 인스턴스에 대한 비교적 적은 수의 고객과 연관된 많은 수의 트랜잭션이 있을 수 있다. 그러나, 다른 세트의 인스턴스에는, 각각의 고객에 대해 비교적 적은 수의 트랜잭션이 있을 수 있으며, 모든 고객에 대해 훨씬 많은 분포가 있을 수 있다. 이러한 종속성 특성의 특징을 아는 것은 이미 필터링된 선행 데이터세트 인스터스와 비교해서, 소스 데이터세트 인스턴스에서 어떤 레코드를 유지하는지를 판정하는 데에 유용할 수 있다.
종속성 특성과 마찬가지로, 등가 특성은 데이터세트 간의 키-키 등가(key-to-key equivalence)를 정의한다. 그러나, 종속성 특성과 달리, 등가 특성은 어디서부터 어디로(from-to)와 반대로 다자간 관계(many-to-many)가 고려될 수 있다. 예를 들어, ab_conspec(도 4a)에서, join1 등가는 3개의 데이터세트를 포함하는 것으로 정의된다. 이들 데이터세트의 각각은 다른 데이터세트 내의 키와 등가인 것으로 가준될 수 있는 키를 갖는다. 등가는, 종속성 특성에서와 같이, 하나의 데이터세트 내의 레코드의 존재가 반드시 다른 데이터세트 내의 레코드의 존재를 나타낸다는 것을 의미하지는 않으며, 그 대신에, 참여하는 데이터세트 중의 2개의 레코드가 동일한 키 값을 공유하는 경우, 이들은 동일한 의미를 가지며, 등가이다.
도 10 및 도 11은 등가 특성(예를 들어, 도 7에 나타낸 플랜(700)에 의해 나타낸 생성 프로세서의 제3 단계(706)의 일부로서 수행되는 것)을 분석하기 위한 처리 단계 및 결과를 나타낸다. 도 10은 "최대 3-웨이"(up-to-3-way) 결합 분석기의 구성을 나타낸다. 특히, 이것은 컨스펙 내에서 정의된 결합 종속성 및 등가 특성을 분석하는 데에 사용되는 prod_analyze 그래프(100)이다. 결과는 참여하는 데이터세트 인스턴스에 대한 외부 결합 오버랩 데이터, 및 분포 히스토그램이다.
다른 실시예에서, 이러한 메커니즘은 최대 N개의 유사한 결합을 지원할 수 있으며, 컨스펙 내의 등가 특성에 대해 정의된 바와 같이, 가변 개수의 데이터세트 인스턴스를 지원하도록 설정가능하다.
프로세스에서의 외부 결합(1002)은 각각의 키 요소 멤버에 대해 각각의 입력 데이터세트를 분류하도록 설정될 수 있다. prod_setup 그래프는, 또한, 데이터세트 인스턴스의 각각에 대해 분류 키의 각각을 나타내는 prod_analyze 그래프를 제공하는 pset에 파라미터를 이미 기입해 두고 있어도 된다. ab_conspec, a_customers, b_customers, 및 consumer_info의 예에서, 데이터세트는 모두 멤버가 {place; building_num}인 키를 가지지만, 키 멤버는 각각의 데이터세트 인스턴스마다 다를 수 있다.
외부 결합(1002)은 각각의 데이터세트 인스턴스로부터 레코드 히트(record hit)를 연결하고, 키 값에 대한 해시 값(hash value)을 산출한다. 해시 값은 참여한 데이터세트 인스턴스의 히트 상태와 키 값의 조합의 출현을 고유하게 식별할 수 있다. 예를 들어, 하나의 키 값 조합이 place="foo"이고 building_num="bar"이면, 이것은 "12345"의 aggregate_value 해시를 생성하고, 출력 레코드는 각 데이터세트의 히트 상태를 포함할 것이다. 즉, source_dataset_1은 해당 값을 가질 것이다.
도 17f에 나타낸 리스트(1710)는 참여한 데이터세트 인스턴스에 대한 집계 해시 값과 히트 상태를 합산하는 데에 사용될 수 있는 함수의 예이다.
prod_setup 그래프(702)는 이러한 변환을 생성하고, prod_analyze 그래프(예를 들어, 도 7에 나타낸 단계(706))를 표적으로 삼은 파라미터세트(pset) 내의 파라미터 값인 것처럼 통과할 수 있다. 이 파라미터 값은 참가한 데이터세트의 각각에 대한 생성된 키 파라미터 값의 세트를 수반할 수 있다.
생성 분석 히스토그램 단계(1004)는 외부 결합(1002)의 출력을 받아서, 히트 결과의 집계를 수행한다. 출력 레코드의 스트림은 외부 결합으로부터의 고유한 aggregate_values(즉, 외부 결합으로부터 키 값의 고유한 결합)을 나타낸다. 이러한 레코드의 스트림은 히트 필드 source_1_hit...source_N_hit에 의해 분류될 수 있으며, 스캔 및 롤업 성분(scan and rollup component)에 공급된다. 이 시점에서, 각각의 레코드는, 참여한 각 데이터세트 소스가 해당 키 값 조합을 가지고 있는지 여부의 히트 상태에 추가로, 외부 결합 내의 키에 대한 고유한 집계 값을 나타낸다. 히트 필드에 의해 레코드를 분류하고, 이들을 스캔 및 롤업 함으로써, 시스템은 각 레코드 내에 있는 히트 상태의 조합에 대한 실행 카운트 및 총 카운트를 판정할 수 있다. 그래서, 예를 들어, 제1 레코드가 place="foo" 및 building_num="bar"의 집계 값을 가졌다면, 스캔/롤업은 조합 히트 (1,0,1)을 찾는데, 이것은 참여한 참가한 데이터세트 1 및 3이 키 값의 조합을 갖는 것을 나타낸다. 성분은 이것이 이러한 히트의 조합의 첫 번째 출현이라는 것을 알기 위해 보는 것이며, 1의 실행 카운트와 1의 총 카운트를 이 레코드에 할당할 것이다. 제2 집계 값 레코드가 상이한 히트 조합과 함께라면, 1의 실행 카운트와 1의 총 카운트가 할당될 것이다. 제3 집계 값 레코드가 제1 레코드와 동일한 히트의 조합과 함께라면, 2의 실행 카운트와 2의 총 카운트가 할당될 것이다.
이러한 프로세스의 결과는 외부 결합(1002)에 대한 고유의 키 값 조합을 나타내는 일련의 레코드(결합 분석 레코드라고 함)이다. 각각의 레코드에 대하여, 시스템은 어느 소스 데이터세트 인스턴스가 해당 결합에 참여했는지, 이러한 히트 조합을 가지고 나타낸 각 레코드의 실행 카운트, 및 이러한 히트 조합으로 발생한 레코드의 총 카운트를 알 수 있다. 이 정보는 prod_run 그래프 내에서 실행되는 다운스트림 동작에 유용할 수 있다. 예를 들어, prod_run 그래프는 이 결합 분석, 결합 결과에 연관된 데이터세트 인스턴스 중의 하나와 결합하도록 구성될 수 있다. 결합은 분석 결과로부터 집계 값 키를 사용하여 수행될 수 있으며, 소스 데이터세트 인스턴스 내의 참여한 키 요소 값을 사용하여 대응하는 산출된 값과 결합될 수 있다. 결합은 소스 데이터세트의 각 레코드에 대하여, 유사한 키 값을 가진 레코드가 컨스펙 내에 정의된 등가 특성(예를 들어, 연관성)에서 참여하는 다른 데이터세트 인스턴스에서 출현했는지 여부를 나타낼 것이다.
도 11은 ab_conspec과 연관된 생성에서 정의된 데이터세트 인스턴스의 집합에 대한 차트로 된 히스토그램 결과(1100)를 나타낸다. 이것은 오버랩된 의존성 또는 등가 결합에서 정의된 참여한 데이터세트 인스턴스로부터 레코드의 수를 나타내는 prod_analyze 분포 히스토그램이다. "1"은 해당 그룹 내에서 데이터세트 인스턴스가 레코드를 가진 것을 나타낸다. 그룹은 결합 키에 대해 부합하는 값을 가진 레코드의 집합이다. 이 예는 도 4a로부터 ab_conspec에서 정의된 a_customers, b_customers, consumer_info로부터의 결과를 나타낸다.
이들 결과(1100)는 ab_conspec에서 정의된 join1 연관에 적용되는 생성 분석 프로세스(예를 들어, 도 7의 prod_analyze 단계(706))의 결과이다. 3개의 데이터세트는 다른 데이터세트로부터 임의의 대응하는 레코드와 부합하지 않는 다수의 레코드를 갖는 것을 알 수 있다. 소수의 키 값 조합만이 데이터세트 인스턴스 중의 2개 또는 총 3개로부터 레코드를 갖는다. 따라서, 이들 결과로부터, a_customers 데이터세트 인스턴스로부터 레코드를 필터링한 경우, 그리고, 생성/컨스펙과 연관된 다른 2개의 데이터세트 인스턴스를 가진 히트 조합의 분포를 유지하고자 하는 경우, 1-0-1 및 1-1-0 그룹에 속하는 키 값을 가진 레코드를 포함시키는 것에 주의하여야 할 것이다. 다시 말해서, 이들 결과를 사용하지 않고 a_customers로부터 레코드를 주의해서 선택한다면, b_customers 및 consumer_info 내에 부합하는 레코드를 가진 레코드의 대부분 또는 모두를 빠트리기 쉬울 것이다. 이처럼 a_customers로부터 레코드를 주의해서 선택하는 것은, 컨스펙에서 정의된 결합 특성에 의해 나타낸 외부 결합 분포 특성과 생성에서 식별된 데이터세트 인스턴스에 의해 나타낸 특정 값을 깰 것이다.
prod_analyze 그래프(예를 들어, 도 7의 prod_analyze 단계(706))가 컨스펙에서 정의된 등가 특성(예를 들어, 등가 의미를 가진 값을 포함하는 필드 간의 연관성)의 각각에 대한 분석 결과를 생성하면, 도 7에 나타낸 생성 프로세서 플랜(700)은 처리 순서에서 식별된 각각의 데이터세트 인스턴스와 연관된 각각의 pset에 대한 prod_run 그래프(예를 들어, 단계(708))를 호출할 수 있다. 도 12a는 pset에 의해 제공되는 입력 값의 집합을 이용하여 데이터세트 인스턴스를 처리하는 데에 포함되는 단계를 나타낸다. 단계는 처리 순서 내의 각각의 데이터세트 인스턴스에 대해 실행되는 prod_run 그래프(1200)의 성분으로 나타낸다.
도 12a의 예에 나타낸 제1 단계(1202)는 생성에서 각 데이터세트 인스턴스에 대해 제공되는 네이밍 규칙(naming convention)에 따른 입력 "소스" 데이터세트 인스턴스를 로딩하는 것이다. 데이터세트 인스턴스의 이름 및 기원(origination)은 pset 파리미터의 하나로서 prod_run 그래프에 제공될 수 있다. 데이터세트 인스턴스는 파일 내에서 생긴 것일 필요는 없다. 이와 달리, 데이터세트 인스턴스는 생성에서 입력으로서 제공되는 SQL 스테이트먼트를 사용하는 데이터베이스 테이블로부터 언로딩될 수 있다. 임의의 가능한 데이터 소스는 웹 서비스, 연속 플로우로부터 데이터의 스냅샷, 데이터베이스, 플랫 파일, 또는 다른 데이터 소스 등의 데이터세트 인스턴스로서 작용할 수 있다. 생성은 생성으로부터 판독되고 prod_run pset에 기입되는 파라미터를 통해 상이한 타입의 데이터세트 인스턴스의 각각을 위치시키고 로딩하기 위해 생성 프로세서에 충분한 정보를 제공한다. prod_run 그래프는 생성으로부터 각 데이터세트 인스턴스의 위치에 대한 정보를 추출하고, prod_run 그래프를 제공하는 pset에 입력 파라미터로서 이 데이터를 기입한다.
도 12b는 prod_run 그래프(1200)의 판독 데이터 단계(1202)의 상세를 나타낸다. 본 예는 데이터베이스 테이블 또는 플랫 파일을 포함하는 로딩 흐름이다. 더 경쟁적인 로드 성분에 의해 데이터세트 인스턴스가 다른 유형의 소스로부터 로딩될 수 있다. 또한, 제약조건 명세 내에 식별된 각각의 데이터세트 인스턴스는 다른 것과 상이한 표현 및 위치를 가질 수 있다. 다시 말해서, 생성은 생성 프로세서로 하여금, 플랫 파일로부터 제1 데이터세트 인스턴스를, 그리고 데이터베이스 테이블로부터 제2 데이터세트 인스턴스를 로딩하라고 지시할 수 있다. 또한, 컨스펙 A와 연관된 제1 생성은 하나의 파일로부터 데이터세트 1의 인스턴스의 로딩을 호출할 수 있으며, 상기 컨스펙 A와 연관된 제2 생성은 데이터베이스 테이블 등의 다른 소스로부터 데이터세트 1의 상이한 인스턴스의 로딩을 호출할 수 있다.
도 12a를 다시 참조하면, 데이터세트 인스턴스가 prod_run 그래프(1200)에 의해 로딩되었다면, 제2 처리 단계(1204)는 prod_analyze 그래프에 의해 산출된 종속 결합 및 등가 결합 결과의 각각에 대한 하나 이상이 결합 동작을 수행한다(예를 들어, 도 7의 단계 706). a_customers의 경우(예를 들어, 도 4a에 나타낸 바와 같이), 본원에 개시된 join1 분석 결과에 대해 수행되는 결합이 존재할 수 있기 때문에, prod_run 그래프(1200)는 b_customers 및 customer_info 내의 등가 레코드를 공유하는 a_customers로부터 레코드를 식별할 수 있다. prod_run 그래프(1200)는 앞서 처리된 b_customers 또는 customer_info 데이터세트 인스턴스로부터의 레코드와의 동일 중첩을 유지하기 위해, a_customers 데이터세트 인스턴스로부터 원하는 퍼센트의 레코드를 포함 및 배제할 수 있다.
prod_analyze 프로세스로부터 설정된 하나 이상의 결합 분석 결과와 소스 데이터세트 인스턴스를 결합시키는 것에 대한 대안으로서, prod_run 그래프(1200)는 이미 처리된 부모 데이터세트 인스턴스와 직접 결합할 수 있다. 이후, prod_run 그래프(1200)는 내적 결합(inner joins)을 수행할 수 있으며, 대응하는 매칭이 없는 소스 데이터세트 레코드를 간단히 제거(예를 들어, 컨스펙 내에 정의된 종속 특성에 기초하여)할 수 있다.
생성 프로세서(예를 들어, 도 6에 나타낸 생성 프로세서(600))의 기능들 중 하나는, 각 데이터세트에 대해 처리된 데이터세트 인스턴스를 처리 순서대로 기입하고, 이들 처리된 인스턴스를, 이들이 처리될 때에 후속하는 데이터세트 인스턴스와 결합될 수 있도록 "연결"(wire up)한다. 또한, 생성 프로세서의 다른 기능은 컨스펙에서 식별된 종속 및 등가 특성을 분석하고, 대상 데이터세트 인스턴스의 내적 및 외적 결합 특징을 기술하는 이들 히스토그램 결과를 기입하는 것이다. 또한, 생성 프로세서의 또 다른 기능은 이들 히스토그램 결과와 각 소스 데이터세트 인스턴스 사이의 결합을 "연결"하는 것인데, prod_run 그래프(1200)가 이미 처리된 데이터세트 인스턴스 내의 등가 또는 종속 레코드를 공유할 수 있는 레코드를 식별할 수 있도록 하기 위한 것이다.
"연결"(wire up)이란 용어는 각 데이터세트에 대한 prod_run psets에 특정 파라미터 값을 처리 순서대로 기입하는 prod_setup 그래프(예를 들어, 도 7에 나타낸 그래프(702))의 실행을 의미한다. 이들 특정 값은 처리된 데이터세트 인스턴스의 이름을 식별하고, 컨스펙의 종속 및 등가 특성에 의해 정의된 기본 키 값을 포함한다. 이들 값에 의해, prod_run 등의 포괄적 그래프가 이미 처리된 데이터세트 인스턴스에 대해 로딩 및 결합하도록 동적으로 구성될 수 있다.
종속 결합을 수행하는 단계(예를 들어, 단계 1204) 중에, prod_run 그래프(1200)는 prod_run 그래프의 이전 실행으로부터 제로 또는 그 이상의 출력 데이터세트 인스턴스를 로딩한다. prod_setup 그래프(702)(도 7)는 N개의 선행하는 데이터세트 인스턴스(즉, 일실시예에서 부모)가 특정 소스 데이터세트에 대해 로딩될 필요가 있다고 판정할 수 있다. prod_setup 그래프(702)는 prod_run 그래프(1200)에 대한 소스 데이터세트의 입력 pset 내의 파라미터로서 대응하는 출력 데이터세트 인스턴스의 위치를 기입할 수 있다. 또한, prod_setup 그래프(702)는 prod_run 그래프(1200)에 대한 소스 데이터세트의 입력 pset 내의 파라미터로서 대응하는 출력 데이터세트 인스턴스의 위치를 기입할 수 있다. 또한, prod_setup 그래프(702)는 얼마나 많은 선행 데이터세트 인스턴스를 로딩해야 하는지를 나타내도록 파라미터를 기입할 수 있다.
도 12a의 제2 단계(1204)는 종속 및 등가 결합으로서, 선행자 데이터세트 인스턴스의 변수 번호를 로딩할 수 있는 결합 메커니즘의 실시예를 나타낸다. 이 단계(1204)의 상세를 도 12c에 나타낸다. 입력 pset에 공급된 파라미터에 따라, 이 메커니즘은 각 선행자 데이터세트 인스턴스에 대해 하나의 결합 소스를 활성화할 수 있다. 이 프로세스에 의해, 소스 레코드가, 성공적으로 "내적 결합"하거나 하나 이상의 대응하는 선행자 데이터세트 인스턴스로부터의 레코드와 매칭하는 경우에 선택될 수 있다. 각각의 선행자(predecessor)에 대하여 이러한 결합을 수행하기 위하여, prod_run 그래프는 소스 데이터세트 내의 외래 키 분류 요소와 각 선행자 데이터세트 내의 대응하는 기본 키 소스 요소의 인식이 주어진다. 이 정보는 prod_run 그래프에 의해 계산되며, prod_run 그래프에 대해 추가적인 pset 파라미터로서 통과된다.
이 결합 단계는 컨스펙 내에 정의된, 종속(즉, 관계) 및 등가(즉, 연관) 특성을 공유하는 다른 데이터세트 인스턴스와 매칭되는 또는 매칭되지 않는 레코드의 분산을 유지하기 위한 소스 데이터세트 인스턴스에 대해 동작한다. 본 예에서, a_transactions을 소스 데이터세트로서 고려하는 경우, 이러한 결합 메커니즘은 prod_run 그래프의 선행 동작에서 이미 필터링된 a_transactions 데이터세트 인스턴스로부터의 레코드가 제거되는 것을 보장할 수 있다. 이것을 "내적 결합"(inner-join) 특성을 유지하는 것이라고 한다. 본 예에서, 이것은 a_customers로부터의 소정의 참조된 레코드가 이미 제거되어 있는 경우에 유효하지 않을 수 있는 a_transactions로부터 레코드를 제거하는 것이 중요하다는 것을 의미한다.
종속 특성에 대한 필터링에 추가로, 이러한 결합 메커니즘은 등가 특성도 필터링할 수 있다. 도 4a의 ab_conspec(400)에서의 등가 특성의 예는 a_customers, b_customers, 및 customer_info 중에서 정의된 join1 등가이다. 도 11에 나타낸 히스토그램 결과(1100)를 생성하는 분산 분석이, 이 결합 단계에 의해 사용되어 a_customers 및 b_customers 등의 이미 처리된 데이터세트 인스턴스에 관련된 customer_info 등의 소스에 대한 레코드의 분산도 유지할 수 있다. 다시 말해서, 이 결합 메커니즘은 일련의 동등 관련된(peer-related) 데이터세트 인스턴스 중에서의 "외적 결합"(outer join) 특징이 유지되는 것을 보장할 수 있다. 따라서, 원래의 a_customers 및 customer_info로부터의 레코드 중에서 높은 정도의 중첩이 있지만, 원래의 a_customers 및 b_customers로부터의 레코드 중에서는 낮은 정도의 중첩이 있는 경우에, 이 결합은 b_customers 및 customer_info의 2개의 이미 처리된 집합을 평가하고, 그 결과가 원본과 유사한 분산을 유지하도록 일련의 a_customers를 필터링할 수 있다. 일반적으로, 이것은 처리된 데이터세트가 원본이 했던 것처럼 이들 중의 동일한 종류의 중첩을 가질 필요가 있을 때에 중요하다.
생성 프로세서의 작업들 중 하나는 컨스펙에 개시된 등가 및 종속 특성에 의해 표현되는 분산 패턴을 유지하는 것이며, 그동안 생성에서 정의된 규칙의 집합에 의해 규정된 바와 같이, 다양한 데이터세트 인스턴스 내의 레코드에 대한 변환을 수행한다.
도 4a에 나타낸 ab_conspec(400)으로부터 a_customers 및 a_transactions의 예를 참조하면, 소스 데이터세트가 a_transactions이고 prod_setup 그래프(702)가 a_transactions에 대한 하나의 선행자, 즉 a_customers가 존재한다고 미리 판정한 경우를 고려할 수 있다. prod_setup 그래프는 a_transactions에 대한 외래 키 요소, 즉 a_customers를 참조하는 것을 분류 키 {custid}의 형식으로 기입할 수 있다. 또한, prod_setup 그래프는 a_customers 데이터세트에 대한 기본 키 요소를 분류 키 {custid}의 형식으로 기입할 수 있다. 이들 상이한 분류 키는 상이한 값을 가질 수 있는데, 이들이 이들의 대응하는 데이터세트로부터 상이한 이름이 붙은 요소를 참조하기 때문이다. 주의할 것으로서, 특정의 선행자 데이터세트에 대한 외래 키 요소와 대응하는 기본 키 요소를 판정하기 위해 prod_setup 그래프가 요구하는 정보는 생성 프로세서의 셋업 프로세스의 일부로서 판독될 수 있는 컨스펙 내에서 구할 수 있다.
하나 이상의 선행자 데이터세트 인스턴스에 대해 소스 데이터세트 인스턴스의 결합 및 필터 동작을 수행하기 위하여, prod_setup 그래프(1200)는 각각에 대해 분류 키를 필요로 할 수 있다. 도 18c 및 18d는 컨스펙에 개략적으로 정해진 것과 같이, 외래 키 대 기본 키 종속성(foreign to primary key dependency)을 공유하는 소스 데이터세트 및 그 N개의 선행자 데이터세트 사이의 결합 링크로서 기능하도록 분류 키를 생성하는 데에 사용되는 로직(1806, 1808)의 예를 나타낸다. 이들 함수는 생성 프로세서(예를 들어, 도 7에 나타낸 계획(700)에 의해 나타낸 생성 프로세서)의 prod_setup 그래프(702) 내에서 구현될 수 있으며, 소스 데이터세트에 대한 prod_setup 그래프(1200)용의 pset 값을 생성하는 프로세스의 일부가 될 수 있다.
이들 예에서의 로직은 소스 데이터세트와 그 선행자 데이터세트 중의 하나 사이의 N번째 종속 관계를 식별하기 위해 제공된 인덱스 번호를 사용할 수 있다. a_customers 및 a_transactions의 예에서, a_transactions으로부터 a_customers까지 단지 하나의 종속 관계가 존재하기 때문에, 이러한 인덱스는 하나의 값, 즉 0만을 가질 것이다.
get_fkey_sort_elements라고 하는 제1 함수는 prod_setup에 의해 도출된 처리 순서 벡터(processing order vector) 내에 포함되었던 부모 데이터세트를 구하는 것으로 시작한다. 다음으로, 이 함수는 이들 데이터세트를 사용해서 이들 부모를 참조하는 소스 데이터세트 내의 외래 키를 구한다. 키의 세트로부터, 이 함수는 N번째 키를 취득하고, 소스 데이터세트 내의 키 요소를 추출한다. 이들 키의 시퀀스 순서를 판독해서, 다중부분 분류 키(multi-part sort key)를 기입하는 데에 사용될 수 있다.
마찬가지로, get_pkey_sort_elements 함수는 부모 데이터세트 중의 하나 내의 기본 키 분류 요소를 생성하기 위해 호출될 수 있다. 도 18d에 나타낸 로직(1808)은 처리 순서에서 동시에 발생하는 부모 데이터세트(이들 부모 데이터세트는 미리 처리되어 있을 수 있다)를 검색하기 위해 소스 데이터세트를 사용하는 예이다. 부모의 경우, 함수는 소스 데이터세트 내에서 외래 키를 검색해서 소스 부모를 지시하는 외래 키를 선택할 수 있다. 이러한 외래 키 세트의 경우, 함수는 N번째 키를 선택한 후, 소스 부모 내에서 대응하는 기본 키를 구할 수 있다. 이 기본 키로부터, 함수는 키 요소 멤버의 시퀀스를 구하고, 다중부분 분류 키를 기입할 수 있다.
이들 2개의 함수에 의해, prod_setup 그래프(1200)는 소스 테이터세트의 외래 키를 통해 순환하고, 각 소스 및 부호 데이터세트 쌍에 대한 분류 키의 그룹을 생성한다. 이후, prod 셋업 그래프는 이들 키 값을 각 소스 데이터세트에 대한 prod_run pset의 파라미터로서 기입할 수 있다.
prod_setup 그래프(1200)의 제3, 제4 및 제5 처리 단계(1206, 1208, 1210)는 생성에 의해 공급되는 고객 변환 규칙(custom transform rules)을 적용하는 데에 사용된다. 데이터세트 인스턴스에 적용될 수 있는 변환식은 기본적으로 3개가 있다. 서브세팅하는 단계(1206)는 소스 데이터세트 인스턴스로부터의 레코드가 제거되어야 하는지를 판정하는 과정을 포함한다. 변경 단계(1208)는 동일한 상기 인스턴스로부터의 레코드가 변경되어야 하는지를 판정하는 과정을 포함한다. 변경은 요소를 추가하거나 제거하는 것 및/또는 요소의 값을 수정하는 것을 포함할 수 있다. 확장 단계(1210)는 동일한 상기 인스턴스로부터의 레코드가 N개의 신규 레코드에 복제되어야 하고, 각각의 신규 레코드에 대해, 새로운 값이 무엇이 되어야 하는지를 판정하는 과정을 포함한다.
단일 생성은 이들 종류의 변환식 중의 임의의 것을 호출할 수 있다. 이들 변환식은 생성 프로세서에 의해 연속으로 적용될 수 있다. 예를 들어, 생성은 prodid 및 가격 요소에 대해 도수 분포(frequency distribution)의 특성에 의해 특징화되는 통계적 일관성(statistical consistency)을 유지하기 위해 a_transactions의 세트의 제1 서브세팅을 호출하고, 남은 레코드를 복제하기 위해 서브세팅한 결과를 확장하고, 여러 트랜잭션 날짜를 갖도록 신규 값을 "전개"(fan out)할 수 있다. "전개"라는 용어는 신규 값을 어느 범위에 걸쳐 분산하는 공식을 사용하여 N개의 새롭게 복제된 레코드 내의 요소의 값을 수정하는 실행을 의미한다. 따라서, 트랜잭션 날짜 등의 날짜를 전개하는 경우, 생성은 M 날짜에 날을 가산해서 날짜를 전개하도록 규정할 수 있는데, 여기서 M은 N개의 복제된 신규 레코드의 인덱스이다.
생성 프로세서의 기능은, 생성에 의해 규정된 것과 같이, 서브세트의 임의의 조합을 적용하기 위한 범용 메커니즘을 제공하고, 변환식을 수정 및 확장하는 것이다. 이들 변환식의 각각은 생성에 의해 제공되는 로직에 포함될 수 있지만, 앞서 처리된 데이터세트 인스턴스의 결과를 사용하는 과정을 각각 포함할 수도 있다.
생성 프로세서는 앞서 처리된 데이터세트 인스턴스의 결과를 생성 규칙에 포함시킬 수 있다. 예를 들어, 생성은 a_transactions의 복제를 요청하고, 트랜잭션 날짜 필드를 전개할 수 있다. 본 예에서, 생성은 도 4a에 나타낸 ab_conspec(400)과 연관될 수 있다.
a_transactions의 확장은 다수의 요인에 의해 달라질 수 있다. 예를 들어, 생성은 a_transactions 뿐만 아니라 a_customers의 변환을 요구할 수 있다. 일례로, a_customers가 먼저 확장되는데, 각각의 고객에 대해, 그들의 기본 키에 대한 대응하는 신규하고 고유한 custid 값으로 확장된다. a_transactions가 확장되면, 새로운 a_transaction을 취급하는 적어도 2가지 방법이 가능할 수 있다. 그 한가지는, 새로운 a_customer 레코드 중의 하나를 참조하기 위해 새로운 a_transaction custid 값의 각각을 수정하는 과정을 포함하며, 다른 방법은 각각의 새로운 a_transaction 레코드를, 원본 a_transaction 레코드가 지시하는 동일 a_customer 레코드를 지시하도록 하는 것을 포함한다. 이와 달리, a_customers가 확장되지 않았고, 더욱이 감소되었다면, 포함된 a_customer 레코드만을 참조할 수 있도록, 확장할 a_transaction 레코드가 먼저 서브세팅되어야 하며, 이후 a_transaction 레코드가 확장될 수 있으며, 포함된 a_customers만을 참조하도록 custid 값은 변화시키기 않는다.
생성 프로세서는 컨스펙에서 규정된 종속 및 등가 특성에 따라 참조 무결성(referential integrity)의 유지를 취급한다.
일례로, 서브세팅 생성은 자식을 통해 재귀적으로 레코드를 필터링할 수 있다. 예를 들어, 간단한 생성은 컨스펙 내의 데이터세트 중의 하나에 적용될 단일 필터링 규칙을 포함할 수 있다. 또한, 생성이 다른 데이터세트 인스턴스로부터 레코드를 제거하고, 모든 데이터세트 인스턴스 중에서 참조 무결성을 유지하는 최소 레코드 세트만을 남긴 묵시 규칙이 있을 수 있다.
일례로, 도 4a에 나타낸 컨스펙(400)을 참조하면, 사용자는 고객 장소 필드가 "Atlantic"의 값을 가진 고객 및 트랜잭션만을 유지하고자할 수 있다. 사용자는 새로운 생성을 정의하고, 그것을 ab_demo 컨스펙과 연관시키며, a-customers 데이터세트 및 b-customers 데이터세트에 관한 2개의 필터 규칙을 표현할 것이다. 규칙은 필드-레벨 제한이 되며, 장소=="Atlantic"인 것을 나타낸다.
필터 규칙을 제공하는 것에 추가로, 사용자는 참조 무결성을 유지하기 위해 모든 데이터세트 인스턴스 중에서 최대의 레코드 세트를 유지하기를 요청하는 "전역 규칙"(global rule)을 특정할 수 있다.
마지막으로, 사용자는 데이터세트 인스턴스 파일, 데이터베이스 테이블, 또는 컨스펙에 정의된 데이터세트의 각각에 대한 데이터의 다른 소스의 아이덴티티 및 위치를 특정할 수 있다.
이러한 생성에 대하여, 범용의 생성 프로세서는 컨스펙 및 생성 규칙 모두를 중단하고, 먼저 데이터세트 인스턴스에 대한 처리 순서를 결정할 것이다. 필터 규칙은 이러한 규칙에 종속하는 자식 데이터세트를 갖는 데이터세트에 적용되기 때문에, 프로세서는 먼저 처리 순서를 도출하고, 고객 데이터세트 인스턴스로 시작할 것이다.
범용 프로세서가 수행할 필요가 있는 작업의 제1 부분은 각각의 데이터세트 처리 작업에 의해 필요하게 되는 임의의 변환, 결합 또는 다른 메타데이터와 함께, 전체 처리 순서의 생성이다. 본 예에서, 프로세서는 먼저 고객에 대해 동작할 필요가 있는데, 이 고객은 결합할 부모가 없는 고객이다. 그러나, 고객 처리의 출력은 보존되어야 하고, 트랜잭션 처리 단계에서 이용가능해야 하는데, 각 트랜잭션 레코드가 대응하는 선택된 고객과 내적 결합될 필요가 있기 때문이며, 선택된 고객에 정확하게 정합하는 최대 세트의 트랜잭션을 만들기 위해서이다.
상기 처리의 제1 부분이 데이터세트 처리 순서 및 모든 결합 로직, 변환 등을 생성하였으며, 프로세서는 루핑 서브-플랜(looping sub-plan) 내의 그래프에 의해 각 데이터세트 인스턴스의 처리를 핸드오프할 수 있다.
도 12e는 prod_setup 그래프(702)에 의해 파라미터로서 제공되는 변환 함수를 적용하는 서브세팅 변환 단계(1206)의 일실시예를 나타낸다. 필터는 많은 타입의 단일 레코드 및 도수 분포형이 될 수 있지만, 이에 한정되는 것은 아니다.
단일 레코드 필터에 의하면, 각 레코드 내의 값들만 레코드를 선택하거나 제거하는 데에 사용될 수 있다. 이러한 타입의 레코드의 예를, 생성의 일부로서 제공되는, 도 17f에 나타낸 리스트(1712)에 기재한 변환 함수에 나타내고 있다. 본 예에서, a_customers 데이터세트로부터의 레코드는 모두 선택되고, b_customer 데이터세트로부터의 레코드는 "장소" 요소가 글자 "M"으로 시작하는 경우에만 선택된다. prod_setup 그래프(702)는 이 함수를 생성으로부터 판독할 수 있으며, 각 데이터세트에 대한 서브세팅 필터의 값을 얻기 위해 각 데이터세트에 대한 함수를 호출할 수 있다.
두 번째 타입의 필터인 도수 분포는 통계적 일관성을 보존하기 위한 제약에 기초하는 변환의 예이며, 데이터세트 인스턴스 내의 이름이 붙은 몇 개의 요소에 대한 값의 도수 분포를 분석하는 과정을 포함한다. 도수에 기초한 필터링의 목적은 소스 데이터세트 인스턴스로부터 레코드를 제거하고, 요소 값 조합의 세트에서 값의 분포를 계속 유지하는 것이다. 예를 들어, a_transactions를 필터링하는 것에 관심이 있지만, 가격, prodid 및 원본 데이터세트 인스턴스 내의 값의 도수 분포와 동일한 트랜스타입(transtype) 필드에 대한 도수 분포를 유지하는 방식으로 행한다. 생성의 일부로서 제공되는, 도 17g에 나타낸 리스트(1714)에 기재한 변환 함수는 도수 분포 필터링에 대해 고려되어야 하는 데이터세트로부터 요소의 이름을 취득하기 위해 prod_setup 그래프에 의해 사용될 수 있다. 또한, 이 변환은
연속 요소(데이터세트 인스턴스가 무제한 값을 가질 수 있는 것을 의미함)를 값의 열거(enumeration)로 "버킷화"(bucketize)하는 식(expression)을 제공할 수 있다. 이에 의하면, prod_setup 그래프 서브세팅 변환 단계(1206)는 하나 이상의 이름이 붙은 도수 분포 요소에 대한 이산적인 값의 세트에 의한 레코드를 그룹화할 수 있다. 값들이 이러한 방식으로 버킷화되었으면, 시스템은 각각의 버킷 그룹 내에 속하는 레코드의 카운트에 기초하여 서브세팅을 수행할 수 있다. 본 예에서, 생성은 a_transactions 및 b_transactions에 대한 가격을 버킷화하고, customer_infor의 est_income 요소를 버킷화하는 식을 제공한다. 이 식이 요소의 값을 되돌리는 경우에, 이것은 값의 세트가 이미 적합한 크기를 갖는 열거가 된다고 고려되는 것을 의미한다.
도 12e에 나타낸 단계는 생성 내에서 이름이 붙은 도수 분포 필터링 요소에 대한 값의 고유의 조합을 갖는 레코드의 카운트를 평가 및 롤업(roll up)하는 작업을 수행한다. 스캔 및 롤업이 수행되었으면, 레코드는 단일 레코드 및 도수 분포 규칙에 따라 필터링된다. 이어서, 서브세팅된 레코드의 원본 레코드에의 정합을 나타내기 위해 그 결과의 레코드에 대해 다른 도수 분석이 수행된다. 이 데이터는 히스토그램 차트(예를 들어, 도 13에 나타낸 것)에 기입될 수 있다.
일례로, 생성 프로세서의 기능은 생성 내에 이름이 붙은 데이터세트 인스턴스의 각각에 대해 신규의 처리된 데이터세트 인스턴스를 기입하는 것이 아니라, 처리 단계의 각각으로부터 도출된 보고 정보를 기입하는 것이다.
도 13은 장소 및 est_income 요소에 대해 도수 분포에 의해 특징화되는 통계적 일관성을 유지하면서, 5의 계수만큼의 감소를 요구하는 생성 규칙을 이용하여 서브세팅 변환을 적용한 결과의 생성된 히스토그램(1300)을 나타낸다. 이 히스토그램(1300)은 customer_info 데이터세트에 적용된 서브세팅 동작으로부터의 도수 분포 결과를 나타낸다.
도 12f는 소스 데이터세트 인스턴스 내의 N개의 복제된 레코드의 각각에 커스톰 전개 규칙(custom fan-out rules)을 적용할 수 있는 확장 변환 프로세스 단계(1210)의 일실시예를 나타낸다.
확장(expansion)은 하나 이상의 데이터세트 인스턴스 내에 새로운 레코드를 생성하는 과정이다. 레코드는 스크래치(scratch)에 의해 또는 기존의 레코드를 복제함으로써 생성될 수 있다. 복제되는 레코드가 다른 데이터세트 내의 레코드에 대해 종속성(컨스펙에 정의된 것과 같은)을 가진다면, 생성은 자식 데이터세트 인스턴스 내의 신규 레코드를 부모 데이터세트 인스턴스 내의 레코드에 "연결"(wire up)할 것인지 여부를 결정한다. 이와 달리, 생성은 부모 레코드도 복제할 수 있으며, 신규 자식을 신규 부모를 지시하도록 연결할 수 있다. 이에 의하면, 관련 레코드의 집합이, 참조 무결성을 유지하면서, 복제될 수 있다.
도 12e는 prod_run 그래프(1200)의 최종 단계(1212)인 기입 데이터 함수 단계를 나타낸다.
도 14는 컨스펙(본 예에서는, 데이터플로우 그래프에 의해 수행되는 작의 런타임 실행의 모니터링을 가능하게 하는 애플리케이션과 연관된 컨스펙) 내의 다수의 데이터세트 내의 레코드가 확장되는 확장(1400)을 나타낸다. 이 경우, 실행은 잡 정의 및 애플리케이션을 복제하고, 이후 잡을 복제한다. 각각의 새로운 잡은 각각의 새로운 잡 정의 및 애플리케이션을 참조하기 위해 연결된다. 각각의 데이터세트 인스턴스 내의 레코드를 확장하는 잡을 처리하기 전에, 생성은 데이터세트의 모든 처리 순서를 판정한다. 이 경우, 모든 독립적인 부모가 처리되기 전에 처리되어야 하는 자식은 없으며, 자식은 부모 데이터세트 내의 기본 키에 대한 외래 키 참조를 갖는 데이터세트이다.
대부분의 기본적인 확장에서, 생성 프로세서는 템플릿으로서 각각의 원본 레코드를 이용하여 N개의 새로운 레코드를 복제할 수 있다. 각각의 새로운 레코드의 각각의 필드는 기본 키, 외래 키 및/또는 고유의 키를 포함할 때에 새로운 값을 취득하는 것을 보장하도록 처리된다. 기본 키의 경우, 새로운 값은 기존의 키 값과 충돌하지 않도록 선택된다. 외래 키의 경우, 값은 새롭게 확장된 부모 레코드의 대응하는 새로운 기본 키 값을 지시하도록 변경된다. 고유 키의 경우, 값은 해당 타입의 모든 레코드의 공간 내에서의 고유성을 보장하도록 원본으로부터 변경된다. 예를 들어, GUID 필드는 고유하게 만들어질 수 있다.
이들 필드 확장 규칙을 수행하는 것에 추가로, 확장 생성 프로세서는 타입별로 사용자가 정의한 필드 확장 규칙의 입력을 지원한다. 여기서의 목적은 프로세서로 하여금 다수 차원에 걸쳐 필드 값을 확장하고 동시에 "확대"(spread out)하도록 하는 것이다. 예를 들어, 사용자는 일련의 잡 정의를 확장하기를 원할 수 있다. 그러나, 각각의 새로운 잡 정의는 스케줄링된 원본 시작 시간으로부터 어느 정의의 양만큼 증분될 그 스케줄링된 시작 시간을 요구할 수 있다.
필드 확장 규칙을 특정하는 한가지 방법은 생성 내에 DML 함수를 삽입하는 것이다. 도 17i에 나타낸 리스트(1716) 내에 기재된 DML 함수의 예는 잡에 대한 스케줄링된 시작 시간을 제외한 모든 경우에 대한 디폴트 규칙과 잡 정의 종속성에 대한 GUID 필드를 출력하는 커스톰 확장 규칙 생성기를 나타낸다. 첫 번째 경우로서, 함수는 현재의 확장 인덱스 값에 대응하는 몇 초를 새로운 레코드의 스케줄링된 시작 시간에 추가하는 규칙을 구성한다. 이 규칙에 의하면, 새로운 잡은 확장의 크기에 대응하는 몇 초 동안 균일하게 분산되는 증분된 시작 시간을 얻는다. GUID의 경우, 함수는 생성 프로세서의 키 생성 함수를 호출하는데, 이것은 GUID가 마치 외래 키 참조인 것처럼 행동할 것으로 예상되기 때문이다. 이 함수를 호출하는 결과로서, 규칙은 확장된 소스 테이블 내의 GUID에 할당되었던 것과 같이 동일한 확장된 키 값을 GUID 값에 할당할 것이다. 함수 "getExpandedKeyRule()"는 확장 생성 프로세서에 의해 지원되는 시스템 함수 중의 하나이다.
소정의 자식 데이터세트 타입은 소스로서 내포(inclusion)로부터명시적으로 차단될 수 있다. 일부 확장은 사용자가 확장 처리로부터 배제하기 위해 자식을 특정할 수 있는 것을 요구한다. 예를 들어, 잡 스케줄링 애플리케이션에 연관된 컨스펙에 대하여, 사용자는 이전 날짜에 실행되었던 잡의 집합을 이미 가질 수 있는 잡 정의를 확장하길 원할 수 있다. 사용자는 잡 정의를 확장하길 원할 수 있지만, 잡을 확장하길 원하지 않을 수 있다. 자식 오브젝트의 선택적 배제를 지원하기 위해, 툴(tool)은 배제할 자식의 리스트를 선언하기 위한 입력 파라미터를 수용할 수 있다.
소스는 확장되는 것으로부터 명시적으로 배제될 수 있으며, 자식을 재귀적으로 횡단(traverse)하는 데에 계속 사용될 수 있다. 일부 확장은 테이블이 소스로서 선택되는 것을 요구할 수 있으며, 또한 이 테이블로부터의 오브젝트가 필터링되는 것을 요구할 수 있다. 또한, 확장은 필터링된 선택이 자식 오브젝트의 선택을 좁히는 데에 사용된다. 이와 동시에, 사용자는 소스 부모 오브젝트를 확장하길 원하지 않을 수 있으며, 대신에 자식 오브젝트의 선택된 세트만을 확장하길 원할 수 있다. 이 경우, 사용자는 자식의 선택을 좁히는 수단으로서 소스를 특정하고, 확장으로부터 소스를 배제한다(즉, 선택된 오브젝트를 복제한다).
예를 들어, 잡 스케줄링 애플리케이션과 연관된 컨스펙에 대하여, 사용자는 "Canada"로 시작하는 이름을 가진 잡 정의와 연관된 잡을 확장하길 원할 수 있다. 사용자는 소스가 될 잡 정의를 특정하고, 소스 선택으로부터 그 자식 모두를 명시적으로 배제할 것이다(잡 제외). 사용자는 잡 정의를 위한 선택 필터를 특정할 것이다. 마지막으로, 사용자는 확장으로부터 잡 정의를 배제할 것을 특정한다.
이러한 방식에 의하면, 타입들이 필터링 및 자식 검출을 ?나 소스로서 참여할 수 있게 되고, 확장 프로세스로부터 배제될 것이다.
변경("마스킹"이라고도 함)은 레코드의 하나 이상의 필드 내의 값을 교체하는 프로세스이다. 일례로, 필드의 그룹은 레코드 내의 일관성 제약조건을 유지하기 위해 통일(도시 및 우편코드 등)될 때에 동작한다. 반면에, 다른 경우로서, 데이터세트 중의 필드 값은 참조 무결성을 유지하기 위해 통일될 때에 동작한다. 다음에 설명하는 부분은 범용 마스킹 생성 프로세서에 의해 지원될 수 있는 여러 종류의 생성 규칙의 개요를 나타낸다.
서플링 알고리즘(shuffling algorithm)은 데이터세트 내의 다른 레코드로부터의 값을 이용하여 하나 이상의 필드 내의 값을 교체한다. 새로운 값의 선택은 중요 또는 룩업 기반의 매핑 함수(이하 참조)에 의해 이루어질 수 있다. 이 알고리즘은 원본 데이터 내의 값의 도수 분포를 유지하거나, 마스크된 값의 플랫 분포를 생성할 수 있다.
마스킹 생성 프로세서는 다중 필드 서플링을 지원하는데, 하나의 레코드로부터의 필드 값의 블록이 다른 레코드로부터 대응하는 값들 사이에서 셔플된다. 이것은 특히 남성 및 여성 이름이 논리적 타이틀 및 성별과 연관되고, 우편코드가 유효한 도시 및 주와 연관되는 것을 보장하는 데에 유용하다.
치환 알고리즘(substitution algorithm)은 허구의 값의 외부 공급으로부터 값을 선택한다. 셔플링과 달리, 원본 값은 사용되지 않으며, 이에 의해 특정 값이 원본 데이터에 존재하는지 여부(레코드와 무관하게)를 은닉하는 것이 가능하다.
생성 알고리즘은 특정 타입의 필드에 대해 설계된 도메인 특정 공식을 사용한다. 표준 공식은 신용카드, 사회보장, 전화번호, 날짜, 이메일의 필드에 대해 존재한다. 추가로, 공식은 랜덤화가 값의 일부에 사용되는 경우에 체크섬을 도출하는 데에 사용될 수 있다.
암호화는 원본 값으로 다시 복호화하는 능력으로 마스킹하는 직송 수단(straight forward means)을 제공한다. 암호화된 값은 애플리케이션을 통과할 수 있지만, 소정 타입의 필드에 대한 유효한 데이터로서 통과하지는 않는다.
랜덤화 알고리즘은 글자 및/또는 숫자의 랜덤한 스트링을 생성한다. 이것은 반복적인 또는 반복적이지 않은 방식으로 이루어질 수 있는데, 다시 말해서 동일한 소스 스트링이 항상 동일한 마스킹된 스트링인지 아닌지를 선택할 수 있다.
오프셋 알고리즘은 허용가능한 출력의 범위 내에서 입력 값을 변환한다. 이 방식은 날짜, 수량, 통화 등의 필드를, 원하는 전역적 특징을 유지하는 소량만큼 변경하는 데에 사용될 수 있다. 예를 들어, 고객 중 크고 작은 트랜잭션 값의 패턴을 유지할 수 있지만, 값을 소량만큼 변경할 수 있다. 다른 예로서, 전체 연령 분포를 유지하면서 연령을 변경할 수 있다.
스크러빙 알고리즘(scrubbing algorithm)은 공통 또는 널 값을 가진 콘텐츠의 일부 또는 필드를 지운다.
커스톰 함수는 특정 필드와 연관될 수 있으며, 이들 함수는 마스킹을 하는 레코드로부터 하나 이상의 필드를 액세스할 수 있다.
마스킹 생성 프로세서는 룩업 인덱스를 도출하기 위해 암호적으로 보안된 해싱 알고리즘 또는 의사랜덤 순열 함수를 사용할 수 있다. 인덱스를 마스킹된 값에 매핑하는 룩업 테이블은 보호되지 않아도 되는데, 인덱스를 도출하기 위해 사용되는 키가 보안되기 때문이다. 암호화 해싱은 무한 도메인 데이터, 또는 이름과 주소 등의 동일하지 않은 분포를 가진 데이터에 잘 적용된다. 의사랜덤 순열은 ID 등의 동일한 분포를 가진 데이터 또는 유한 도메인 데이터에 잘 적용된다.
마스킹 생성 프로세서는 각각의 입력 값에 대해 마스킹된 값을 도출하기 위해 해싱 또는 순열 함수를 사용하고, 보안된 룩업 테이블 내의 마스킹된 값에 대한 원본의 매핑을 저장한다. 테이블은 마스킹된 값과 마스킹되지 않은 값 사이의 매핑을 명시적으로 유지하기 때문에, 보안된 환경에서 유지될 필요가 있다.
다른 생성 프로세서 함수는, 예를 들어 부모가 자식에게 또는 자식이 부모에게 등과 같은 처리 방향을 포함할 수 있다. 컨스펙은 많은 상호의존 데이터세트를 포함하기 때문에, 생성의 핵심 함수 중의 하나는 데이터세트 인스턴스를 처리하기 위한 순서를 정하는 것이다.
생성에서 특정된 규칙에 따라, 생성 프로세서는 부모를 먼저 처리하고 뒤이어 자식을 재귀적으로 처리하거나, 이와 달리 자식을 먼저 처리하고 뒤이어 부모를 재귀적으로 처리할 필요가 있다. 앞서 설명한 부분에서, 먼저 고객을 선택하기 위해 필요한 생성은 선택된 부모에 의존하는 자식으로만 종료한다. 다른 구성으로서, 사용자는 값 X보다 큰 높은 달러 양 트랜잭션만을 선택하도록 특정할 수 있으며, 이들 트랜잭션을 백업하기 위해 필요한 고객으로 종료한다. 이 경우, 프로세서는 자식을 먼저 처리하고 뒤이어 부모를 처리하여야 한다. 프로세서는 정확한 처리 순서를 검출하고 필요에 따라 그것을 적용하는 능력을 가진다.
때때로, 사용자는 데이터세트의 서브세트를 소스로서 특정함으로써 처리의 범위를 좁히길 원할 수 있다. 또한, 사용자는 부모 또는 자식으로서 내포하기 위한 소정의 데이터세트를 명시적으로 배제하길 원할 수 있다. 처리 순서를 판정하기 위한 일반 함수는 이들 파라미터를 인수로서 허용하여야 한다.
기본 키 할당은 생성 중의 식별자(ID) 충돌을 피하기 위한 기술이다. 생성은 스크래치에 의해 또는 복제에 의해 데이터세트 인스턴스 내에 새로운 레코드를 생성할 수 있다. 이들 새로운 레코드는 새로운 ID를 필요로 하는 경우가 있으며, 따라서 생성은 새로운 ID 값이 기존의 ID 값과 충돌하지 않는 것을 보장한다. 또한, 생성은 하나의 실행 내에 생성하는 ID 값이 후속하는 실행 내에 생성될 수 있는 ID 값과 충돌하지 않도록 보장한다.
ID가 생성의 각 실행에 고유한 명칭공간 내에 속하는 것을 보장하는 방법이 많이 있다. 이하는, 실행 중 또는 실행 내의 충돌없는 수치적 ID를 생성하는 방식의 예이다.
수치적 기본 키에 대하여, 생성은 데이터세트 인스턴스 내의 기본 키 필드의 현재의 최소(Min) 및 최대(Max) 값을 계산하는 것으로 시작할 수 있다. 도 15에서, 현재의 범위(1502)를 음영으로 나타내고 있다. 예를 들어, 생성이 기존 레코드의 각각을 N번 복제하는 규칙을 갖는 경우가 있다. 임의의 레코드를 복제하기 전에, 생성은 먼저 논리적으로 편성되거나 새로운 레코드를 유지하기 위해 사용되지 않은 ID의 N개의 새로운 범위의 세트를 별도로 설정할 필요가 있다. 이어서, 기존 레코드의 각각에 대한 N개의 새로운 레코드의 각각은 N개의 범위 중의 하나로부터 ID 값이 할당될 수 있다. 그래서, 예를 들어, 키에 대한 기존 인덱스 값이 321이면, 생성은 321에 대해 N개의 새로운 레코드를 생성하고, 이들은 1205, 2089,..., 321+884*N의 주어진 ID 값이 될 것이다. 다시 말해서, 각각의 새로운 레코드는 이하에 나타낸 청색 범위 버킷 중의 하나에 덤핑될 것이다. 마찬가지로, ID 322를 가진 제2 레코드에 대해, 생성은 1206, 2090,..., 322+884*N의 값을 가진 N개의 새로운 오브젝트를 생성할 것이다.
GUID 등의 비수치적 키 필드의 경우, 생성은 먼저 실행 초기에 고유의 RANDOM_RUN_SEED를 생성하고, 이 키 및 확장 인덱스 번호를 각각의 GUID에 첨부한다. 생성이 다시 실행되면, 상이한 랜덤 시드를 사용하게 되는데, 생성의 다수의 계층화된 실행 중에 키가 고유하다는 것을 보장하기 때문이다.
도 17j에 나타낸 리스트(1718)는 잡 스케줄링 애플리케이션과 연관된 컨스펙에 대하여 확장된 잡 레코드에 새로운 GUID를 할당하기 위한 생성된 변환 규칙의 예이다. "pN"은 RANDOM_RUN_SEED의 값이다.
확장된 키 생성에 대한 이들 방식은 생성의 실행 중의 고유성을 보장한다. 이에 의하면, 사용자는 생성을 여러 번 실행하거나 상이한 타입의 생성을 연계할 수 있다.
*상기 설명한 데이터세트 처리 기술은 컴퓨터에서 실행되는 소프트웨어를 사용해서 구현될 수 있다. 예를 들어, 소프트웨어는 하나 이상의 프로세서, 하나 이상의 데이터 기억 시스템(휘발성, 비휘발성, 비일시적 메모리 및/또는 기억 요소를 포함), 하나 이상의 입력 장치 또는 포트, 및 하나 이상의 출력 장치 또는 포트를 포함하는, 하나 이상의 프로그램된 또는 프로그램가능한 컴퓨터 시스템(분산, 클라이언트/서버, 또는 그리드 등의 다양한 구조를 가짐)에서 실행되는 하나 이상의 컴퓨터 프로그램의 절차를 구성한다. 소프트웨어는 계산 그래프의 설계 및 구성에 관련된 다른 서비스를 제공하는 더 큰 프로그램의 하나 이상의 모듈을 형성할 수 있다. 그래프의 노드 및 요소는 컴퓨터로 판독가능한 매체에 기억된 데이터 구조 또는 데이터 레포지토리 내에 기억된 데이터 모델에 부합하는 다른 조직화된 데이터로서 구현될 수 있다.
소프트에어는 범용 또는 전용의 프로그램가능한 컴퓨터로 판독가능한 CD-ROM과 같은 기억 매체에 제공되거나, 네트워크와 같은 통신 매체를 통해 실행가능한 컴퓨터로 전달(전파 신호로 부호화되는)될 수 있다. 모든 기능은, 전용의 컴퓨터상에서, 또는 코프로세서와 같은 전용의 하드웨어를 사용해서 수행될 수 있다. 소프트웨어는, 해당 소프트웨어에 의해 특정된 연산의 상이한 부분이 여러 컴퓨터에서 수행되는 분산 방식으로 구현되어도 된다. 이러한 각각의 컴퓨터 프로그램은, 본 명세서에서 설명하는 절차를 수행하도록 기억 매체 또는 디바이스가 컴퓨터 시스템에 의해 판독될 때에 컴퓨터를 구성 및 운영하기 위한, 범용 또는 전용의 프로그램가능한 컴퓨터에 의해 판독가능한 기억 매체 또는 디바이스(예를 들어, 고체 메모리 또는 매체, 자기 또는 광학 매체)에 기억되거나 다운로드되도록 하는 것이 바람직하다. 본 발명의 시스템은 컴퓨터 프로그램에 맞게 구성된, 컴퓨터로 판독가능한 기억 매체로서 구현될 수도 있는데, 이러한 기억 매체는 컴퓨터 시스템으로 하여금, 본 명세서에서 설명한 기능의 수행을 위해 특정되고 미리 정해진 방식으로 동작할 수 있도록 구성된다.
본 발명에 대하여 많은 실시예를 설명하였다. 그렇지만, 본 발명의 범위를 벗어남이 없이 다양한 변형이 가능하다는 것을 알 수 있을 것이다. 예를 들어, 상기 설명한 단계들 중 몇몇은 반드시 그 순서대로 수행되지 않아도 되며, 설명된 것과 다른 순서대로 수행되어도 된다.
이상의 설명은 청구범위에 의해 정해지는 본 발명의 범위를 제한하기 위한 것이 아니라 예시일 뿐이다. 예를 들어, 앞서 설명한 많은 기능적 단계들은 전체적인 과정에 실질적인 영향을 미치지 않으면서, 다른 순서로 수행되어도 된다. 다른 실시예는 이하의 청구범위에 포함된다.
본 출원은 2010년 6월 22일에 출원된 미국출원 61/357,376에 대하여 우선권을 주장하며, 그 내용을 본원에 참조에 의해 원용한다.

Claims (1)

  1. 발명의 상세한 설명에 기재된, 또는 도면에 도시된 바와 같은 장치
KR20157008140A 2010-06-22 2011-06-22 관련 데이터세트의 처리 KR20150042872A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US35737610P 2010-06-22 2010-06-22
US61/357,376 2010-06-22
PCT/US2011/041452 WO2011163363A1 (en) 2010-06-22 2011-06-22 Processing related datasets

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137001439A Division KR101781416B1 (ko) 2010-06-22 2011-06-22 관련 데이터세트의 처리

Publications (1)

Publication Number Publication Date
KR20150042872A true KR20150042872A (ko) 2015-04-21

Family

ID=44533077

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137001439A KR101781416B1 (ko) 2010-06-22 2011-06-22 관련 데이터세트의 처리
KR20157008140A KR20150042872A (ko) 2010-06-22 2011-06-22 관련 데이터세트의 처리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137001439A KR101781416B1 (ko) 2010-06-22 2011-06-22 관련 데이터세트의 처리

Country Status (9)

Country Link
US (1) US8775447B2 (ko)
EP (1) EP2585949B1 (ko)
JP (1) JP5826260B2 (ko)
KR (2) KR101781416B1 (ko)
CN (2) CN106294853B (ko)
AU (1) AU2011271002B2 (ko)
CA (1) CA2801079C (ko)
HK (1) HK1179006A1 (ko)
WO (1) WO2011163363A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016190482A1 (ko) * 2015-05-27 2016-12-01 삼성에스디에스 주식회사 리버스 데이터 모델링 관계선 설정 방법 및 그 장치

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6066927B2 (ja) 2011-01-28 2017-01-25 アビニシオ テクノロジー エルエルシー データパターン情報の生成
US20130006961A1 (en) * 2011-06-29 2013-01-03 Microsoft Corporation Data driven natural interface for automated relational queries
JP6357162B2 (ja) 2012-10-22 2018-07-11 アビニシオ テクノロジー エルエルシー 位置情報を用いたデータのプロファイリング
US9087138B2 (en) * 2013-01-15 2015-07-21 Xiaofan Zhou Method for representing and storing hierarchical data in a columnar format
US9892026B2 (en) 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US9195470B2 (en) 2013-07-22 2015-11-24 Globalfoundries Inc. Dynamic data dimensioning by partial reconfiguration of single or multiple field-programmable gate arrays using bootstraps
EP3025247B1 (en) * 2013-07-26 2018-10-24 Hewlett-Packard Enterprise Development LP Data view based on context
US9535936B2 (en) * 2013-09-05 2017-01-03 The Boeing Company Correlation of maximum configuration data sets
EP3055786A4 (en) * 2013-10-09 2017-05-17 Google, Inc. Automatic definition of entity collections
US11487732B2 (en) * 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
AU2015225694B2 (en) 2014-03-07 2019-06-27 Ab Initio Technology Llc Managing data profiling operations related to data type
US9317558B2 (en) * 2014-05-13 2016-04-19 Sap Se Intelligent unmasking in an in-memory database
KR102375350B1 (ko) 2014-09-02 2022-03-16 아브 이니티오 테크놀로지 엘엘시 그래프 기반 프로그램 명세의 컴파일링
AU2015312010B2 (en) 2014-09-02 2019-10-03 Ab Initio Technology Llc. Visually specifying subsets of components in graph-based programs through user interactions
SG11201701822RA (en) 2014-09-08 2017-04-27 Ab Initio Technology Llc Data-driven testing framework
WO2016054491A1 (en) 2014-10-03 2016-04-07 Infinity Pharmaceuticals, Inc. Heterocyclic compounds and uses thereof
US10176234B2 (en) * 2014-11-05 2019-01-08 Ab Initio Technology Llc Impact analysis
US10360520B2 (en) * 2015-01-06 2019-07-23 International Business Machines Corporation Operational data rationalization
US10762074B2 (en) * 2015-10-20 2020-09-01 Sanjay JAYARAM System for managing data
US20170177446A1 (en) * 2015-12-21 2017-06-22 Ab Initio Technology Llc Search and retrieval data processing system for computing near real-time data aggregations
US10169364B2 (en) * 2016-01-13 2019-01-01 International Business Machines Corporation Gauging accuracy of sampling-based distinct element estimation
US20170242876A1 (en) * 2016-02-22 2017-08-24 Ca, Inc. Maintaining Database Referential Integrity Using Different Primary and Foreign Key Values
CN107330796B (zh) * 2016-04-29 2021-01-29 泰康保险集团股份有限公司 组件化生成表单的数据处理方法及系统
US11243938B2 (en) * 2016-05-31 2022-02-08 Micro Focus Llc Identifying data constraints in applications and databases
WO2017214269A1 (en) 2016-06-08 2017-12-14 Infinity Pharmaceuticals, Inc. Heterocyclic compounds and uses thereof
US10311057B2 (en) 2016-08-08 2019-06-04 International Business Machines Corporation Attribute value information for a data extent
US10360240B2 (en) 2016-08-08 2019-07-23 International Business Machines Corporation Providing multidimensional attribute value information
US10657120B2 (en) * 2016-10-03 2020-05-19 Bank Of America Corporation Cross-platform digital data movement control utility and method of use thereof
US10593080B2 (en) * 2017-04-27 2020-03-17 Daegu Gyeongbuk Institute Of Science And Technology Graph generating method and apparatus
US10176217B1 (en) 2017-07-06 2019-01-08 Palantir Technologies, Inc. Dynamically performing data processing in a data pipeline system
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
US10838915B2 (en) * 2018-09-06 2020-11-17 International Business Machines Corporation Data-centric approach to analysis
JP2024505236A (ja) * 2021-01-31 2024-02-05 アビニシオ テクノロジー エルエルシー データ処理システム用のデータセットマルチプレクサ
US20230403218A1 (en) * 2022-06-08 2023-12-14 Vmware, Inc. State consistency monitoring for plane-separation architectures

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204727A (ja) * 1992-01-27 1993-08-13 Hitachi Ltd デ−タベ−ス管理方法およびそのシステム
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
WO2002079993A1 (en) * 2001-03-29 2002-10-10 Reallegal.Com Methods for synchronizing on-line and off-line transcript projects
CA2409079A1 (en) * 2002-10-21 2004-04-21 Ibm Canada Limited-Ibm Canada Limitee Creating multiple and cascading business interpretations from raw application data using transformation layering
WO2004063943A2 (en) * 2003-01-15 2004-07-29 Luke Leonard Martin Porter Time in databases and applications of databases
US20050004918A1 (en) * 2003-07-02 2005-01-06 International Business Machines Corporation Populating a database using inferred dependencies
JP5328099B2 (ja) 2003-09-15 2013-10-30 アビニシオ テクノロジー エルエルシー データプロファイリング
US7181472B2 (en) * 2003-10-23 2007-02-20 Microsoft Corporation Method and system for synchronizing identity information
JP4343752B2 (ja) * 2004-03-31 2009-10-14 キヤノン株式会社 色処理装置およびその方法
GB2414337B (en) * 2004-05-19 2008-10-29 Macrovision Europ Ltd The copy protection of optical discs
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
CN101141754B (zh) * 2006-09-05 2010-05-12 中兴通讯股份有限公司 一种增值业务分析系统及其方法
CN101911859B (zh) * 2008-01-11 2012-12-05 富士机械制造株式会社 部件安装系统及部件安装方法
JP4870700B2 (ja) * 2008-03-11 2012-02-08 株式会社リコー 通信システム
CN101452072B (zh) * 2008-12-26 2011-07-27 东南大学 一种用于土地监测的电子信息化系统及其方法
CN102098175B (zh) * 2011-01-26 2015-07-01 浪潮通信信息系统有限公司 一种移动互联网告警关联规则获取方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016190482A1 (ko) * 2015-05-27 2016-12-01 삼성에스디에스 주식회사 리버스 데이터 모델링 관계선 설정 방법 및 그 장치

Also Published As

Publication number Publication date
AU2011271002A1 (en) 2012-12-13
AU2011271002B2 (en) 2015-08-20
CN106294853B (zh) 2019-10-11
WO2011163363A1 (en) 2011-12-29
CN106294853A (zh) 2017-01-04
EP2585949A1 (en) 2013-05-01
JP2013529814A (ja) 2013-07-22
CN103080932A (zh) 2013-05-01
US20110313979A1 (en) 2011-12-22
KR101781416B1 (ko) 2017-09-25
CA2801079C (en) 2016-05-03
KR20130095250A (ko) 2013-08-27
JP5826260B2 (ja) 2015-12-02
HK1179006A1 (en) 2013-09-19
US8775447B2 (en) 2014-07-08
CA2801079A1 (en) 2011-12-29
CN103080932B (zh) 2016-08-31
EP2585949B1 (en) 2015-03-25

Similar Documents

Publication Publication Date Title
KR101781416B1 (ko) 관련 데이터세트의 처리
US11281596B2 (en) Mapping attributes of keyed entities
Dallachiesa et al. NADEEF: a commodity data cleaning system
US10521427B2 (en) Managing data queries
KR102031402B1 (ko) 데이터 모델에서의 엔티티 매핑
Chapman et al. Efficient provenance storage
JP5372850B2 (ja) データプロファイリング
Junghanns et al. Analyzing extended property graphs with Apache Flink
US20140114924A1 (en) Data loading tool
JP2018536909A (ja) 表形式データから、多次元データベース環境に使用されるキューブスキーマを自動的に推論するためのシステムおよび方法
US20200372026A1 (en) Retroreflective clustered join graph generation for relational database queries
Tseng Mining frequent itemsets in large databases: The hierarchical partitioning approach
Zou et al. Lachesis: automatic partitioning for UDF-centric analytics
Kulkarni et al. A Survey on Apriori algorithm using MapReduce
Das et al. Lachesis: Automatic Partitioning for UDF-Centric Analytics

Legal Events

Date Code Title Description
A107 Divisional application of patent
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid