KR20090039803A - 데이터 프로파일링 - Google Patents

데이터 프로파일링 Download PDF

Info

Publication number
KR20090039803A
KR20090039803A KR1020097003696A KR20097003696A KR20090039803A KR 20090039803 A KR20090039803 A KR 20090039803A KR 1020097003696 A KR1020097003696 A KR 1020097003696A KR 20097003696 A KR20097003696 A KR 20097003696A KR 20090039803 A KR20090039803 A KR 20090039803A
Authority
KR
South Korea
Prior art keywords
field
data
fields
record
value
Prior art date
Application number
KR1020097003696A
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 KR20090039803A publication Critical patent/KR20090039803A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2465Query processing support for facilitating data mining operations in structured databases
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • 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/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • 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/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24556Aggregation; Duplicate elimination
    • 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
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • 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
    • G06F16/258Data format conversion from or to a database
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging

Abstract

데이터를 처리하는 방법은, 데이터 소스의 데이터 레코드에 있는 필드의 복수 개의 서브세트를 식별하는 단계; 상기 복수 개의 서브세트의 각각에 대하여 동시발생 통계치를 판정하는 단계; 및 상기 복수 개의 서브세트 중 하나 이상을, 상기 식별된 서브세트의 필드 중에서 함수적 관계를 갖는 것으로 식별하는 단계를 포함한다.
프로파일링, 함수 종속성

Description

데이터 프로파일링{DATA PROFILING}
본 발명은 데이터 프로파일링에 관한 것이다.
관련 출원의 상호 참조
본 출원은 2003년 9월 15일 출원된 미국 가출원 제60/502/908호, 2003년 10월 20일 출원된 미국 가출원 제60/513,038호, 및 2003년 12월 22일 출원된 미국 가출원 제60/532,956호의 우선권을 주장한다. 상기 출원은 본 명세서에 참조로서 포함되는 것으로 한다.
저장되어 있는 데이터 세트 중에는, 미리 인식하고 있지 못한 다양한 특성을 갖는 데이터가 포함되는 경우가 있다. 예를 들어, 데이터 세트에 대한 값 또는 통상적인 값의 범위, 데이터 세트 내의 상이한 필드 사이의 관계, 또는 상이한 필드 내의 값들 사이에서의 함수 종속성(functional dependency)을 알지 못할 수 있다. 데이터 프로파일링에는, 이러한 특성을 판정하기 위하여 데이터 세트의 소스를 조사하는 과정이 포함될 수 있다. 데이터 프로파일링 시스템의 한가지 용도는, 추가의 처리를 수행하기 전에, 데이터 세트를 로딩하기 위한 스테이징 영역(staging area)을 지정하는데 이용되는 데이터 세트 관련 정보를 수집하는 것이다. 이 스테 이징 영역에서는, 데이터 프로파일링에서 수집된 정보에 기초하여, 데이터 세트를 원하는 타겟 포맷 및 위치에 매핑하는데 필요한 변환(transformation)이 수행될 수 있다. 이러한 변환은, 예컨대 기존의 데이터와 호환 가능한 제3자의 데이터를 저장하는데 필요하거나, 레거시(legacy) 컴퓨터 시스템으로부터의 데이터를 새로운 컴퓨터 시스템으로 변환하는데 필요할 수 있다.
하나의 특징으로서, 본 발명은 데이터 처리 방법 및 이에 대응하는 소프트웨어와 데이터 처리 시스템을 제공하는 것을 특징으로 한다.
데이터 소스로부터의 데이터를 프로파일링한다. 이러한 프로파일링에는, 데이터 소스로부터 데이터를 판독하는 단계, 데이터를 판독하는 동안 데이터를 특정하는 요약 데이터(summary data)를 산출하는 단계, 및 요약 데이터에 기초하는 프로파일 정보를 저장하는 단계가 포함된다. 이후, 데이터 소스로부터 데이터가 처리된다. 이 처리 과정에는 저장된 프로파일 정보를 액세스하는 단계와 액세스한 프로파일 정보(profile information)에 따라 데이터를 처리하는 단계가 포함된다.
다른 특징으로서, 본 발명은 데이터 처리 방법을 제공하는 것을 특징으로 한다. 이러한 프로파일링 방법은 데이터 소스로부터 데이터를 판독하는 단계, 데이터를 판독하는 동안 데이터를 특정하는 요약 데이터를 산출하는 단계, 및 요약 데이터에 기초하여 프로파일 정보를 저장하는 단계를 포함한다. 데이터를 프로파일링하는 단계는, 데이터를 병렬로 처리하는 단계를 포함하며, 데이터를 병렬로 처리하는 단계는, 데이터를 분할하는 단계와, 분할된 데이터를 제1 병렬 컴포넌트 세트의 개별 컴포넌트를 이용하여 처리하는 단계를 포함한다.
본 발명은 다음과 같은 하나 이상의 특징을 포함할 수 있다.
데이터 소스로부터의 데이터를 처리하는 과정은, 데이터 소스로부터 데이터 를 판독하는 단계를 포함한다.
데이터를 프로파일링하는 단계는 데이터 소스의 외부에 데이터의 카피를 유지하지 않고 수행된다. 예를 들어, 데이터는 조건부 필드 및/또는 가변 개수의 필드와 같은 가변 레코드 구조(variable record structure)의 레코드를 포함할 수 있다. 데이터를 판독하는 동안 데이터의 특성을 나타내는 요약 데이터를 산출하는 단계는, 데이터의 특성을 나타내는 요약 데이터를 산출하는 동안, 가변 레코드 구조의 레코드를 해석하는 단계를 포함한다.
데이터 소스는 데이터베이스 시스템이나 직렬 또는 병렬의 파일 시스템과 같은 데이터 저장 시스템을 포함한다.
요약 데이터를 산출하는 단계는, 필드에 대한 별개의 값들로 이루어진 세트의 각각에 대한 발생 횟수를 카운트하는 단계를 포함한다. 프로파일 정보는 필드에 대해 카운트한 발생 횟수에 기초하여, 필드에 대한 통계치를 포함할 수 있다.
데이터 소스에 관련된 메타데이터를 포함하는 메타데이터 저장부가 유지된다. 프로파일 정보를 저장하는 단계는, 데이터 소스에 관련된 메타데이터를 갱신하는 단계를 포함할 수 있다. 데이터를 프로파일링하는 단계와 데이터를 처리하는 단계는, 각각 데이터 소스에 대한 메타데이터를 이용할 수 있다.
데이터 소스로부터의 데이터를 프로파일링하는 단계는, 프로파일 정보에 기초하여 포맷 사양을 판정하는 단계를 더 포함한다. 데이터 소스로부터의 데이터를 프로파일링하는 단계는, 프로파일 정보에 기초하여 검증 사양을 판정하는 단계를 더 포함할 수 있다. 무효 레코드는 포맷 사양 및/또는 검증 사양에 기초하여 데이 터를 처리하는 동안 식별될 수 있다.
프로파일 정보에 기초하여 데이터 변환 명령이 특정된다. 데이터를 처리하는 단계는, 변환 명령을 데이터에 적용하는 단계를 포함할 수 있다.
데이터를 처리하는 단계는, 데이터를 데이터 저장 서브시스템에 반입(importing)하는 단계를 포함한다. 데이터를 처리하는 단계에서는, 데이터를 데이터 저장 서브시스템에 반입하기 전에, 데이터의 유효성을 검증할 수 있다. 데이터의 유효성을 검증하는 단계는, 데이터의 특성을, 데이터의 통계 속성과 비교하는 것과 같이 데이터에 대한 참조(reference) 특성과 비교하는 단계를 포함할 수 있다.
상기 데이터를 프로파일링하는 단계는 병렬로 수행될 수 있다. 데이터를 병렬로 프로파일링하는 단계는, 데이터를 분할하는 단계와, 분할된 데이터를, 제1 병렬 컴포넌트 세트의 개별 컴포넌트를 이용하여 처리하는 단계를 포함할 수 있다. 데이터의 상이한 필드에 대한 요약 데이터를 산출하는 단계는, 제2 병렬 컴포넌트 세트의 개별 컴포넌트를 이용하는 단계를 포함할 수 있다. 제1 병렬 컴포넌트 세트의 출력은 제2 병렬 컴포넌트 세트에 대한 입력을 형성하도록 재분할될 수 있다. 데이터는 병렬의 데이터 소스로부터 판독될 수 있으며, 병렬 데이터 소스의 각각의 부분은 제1 병렬 컴포넌트 세트의 각각에 의해 처리된다.
다른 특징으로서, 본 발명은 데이터를 처리하는 방법 및 이에 대응하는 소프트웨어와 데이터 처리 시스템을 제공하는 것을 특징으로 한다. 제1 데이터 소스의 레코드에 있는 제1 필드의 값의 특성을 나타내는 정보와, 제2 데이터 소스의 레코 드에 있는 제2 필드의 값의 특성을 나타내는 정보가 획득된다. 획득된 정보에 기초하여 제1 필드와 제2 필드 사이에 관계된 특성을 나타내는 퀀터티가 산출된다. 제1 필드 및 제2 필드와 관련된 정보가 제시된다.
본 발명은 다음과 같은 하나 이상의 특징을 포함할 수 있다.
제1 필드 및 제2 필드와 관련된 정보가 사용자에게 제시된다.
제1 데이터 소스 및 제2 데이터 소스는 동일한 데이터 소스이거나 개별의 데이터 소스일 수 있다. 데이터 소스들 중 하나 또는 모두는 데이터베이스 테이블 또는 파일이 될 수 있다.
제1 필드와 제2 필드 사이의 관계 특성을 나타내는 퀀터티(quantities)는, 제1 필드 및 제2 필드의 값에 대한 공동 특성(joint characteristics)을 나타내는 퀀터티를 포함한다.
제1 필드(또는 제2 필드에 대해서도 마찬가지)의 값의 특성을 나타내는 정보는 제1 필드의 값에 대한 분포 특성을 나타내는 정보를 포함한다. 이러한 정보는 "센서스"(census) 데이터 구조와 같은 데이터 구조에 저장될 수 있다. 제1 필드의 값에 대한 분포 특성을 나타내는 정보는 제1 데이터 소스의 제1 필드 내의 값에 대한 대응하는 발생 횟수와 상이한 값을 연관시키는 각각의 데이터 레코드를 복수 개 포함할 수 있다. 마찬가지로, 제2 필드의 값의 분포 특성을 나타내는 정보는 동일 또는 유사한 포맷의 복수 개의 레코드를 포함할 수 있다.
제1 필드 및 제2 필드의 값의 분포 특성을 나타내는 정보는 동시발생하는 값의 복수 개의 상이한 카테고리에 관련된 퀀터티를 산출하기 위하여 처리된다.
동시발생하는 값의 카테고리와 관련된 퀀터티는 복수 개의 데이터 레코드를 포함하며, 이들 레코드의 각각은 동시발생하는 카테고리 중 하나와 관련되며, 그 카테고리에서의 제1 필드 및 제2 필드에서의 복수 개의 상이한 값을 포함한다.
제1 필드 및 제2 필드에서의 제1 데이터 소스 및 제2 데이터 소스의 "결합"(join)에 의한 값의 분포의 특성을 나타내는 정보가 산출된다. 이 산출은 동시발생하는 값의 복수 개의 카테고리에 관련된 퀀터티를 산출하는 단계를 포함한다. 이러한 카테고리의 예로서, 제1 필드 및 제2 필드 중 하나의 필드에서 적어도 한번 발생하고 다른 필드에서는 발생하지 않는 값, 제1 필드 및 제2 필드의 각각에서 정확하게 한 번씩 발생하는 값, 제1 필드 및 제2 필드 중 하나의 필드에서 정확하게 한번 발생하고 다른 필드에서 한번 이상 발생하는 값, 제1 필드 및 제2 필드의 각각에서 한번 이상 발생하는 값을 포함한다. 값의 특성을 나타내는 정보를 획득하는 단계와, 값의 공동 특성을 나타내는 퀀터티를 산출하는 단계가, 제1 필드 및 상기 제2 필드로 된 복수 개의 쌍에 대해 반복된다. 제1 필드 및 제2 필드로 된 복수 개의 쌍의 하나 이상의 필드와 관련된 정보가 사용자에게 제시된다.
제1 필드 및 제2 필드로 된 복수 개의 쌍의 하나 이상의 필드와 관련된 정보를 제시하는 단계는, 필드의 관계를 나타내는 복수 개의 타입 중 하나의 후보자 필드로서 필드를 식별하는 단계를 포함한다. 필드의 관계에 대한 이러한 타입의 예로서, 기본 키(primary key) 및 외래 키(foreign key) 관계와, 공통 도메인 관계를 포함한다.
다른 특징으로서, 본 발명은 데이터를 처리하는 방법 및 이에 대응하는 소프 트웨어와 데이터 처리 시스템을 제공하는 것을 특징으로 한다.
데이터 소스의 데이터 레코드에 있는 필드의 복수 개의 서브세트가 식별된다. 동시발생 통계치는 복수 개의 서브세트의 각각에 대해 판정된다. 복수 개의 서브세트 중 하나 이상은 식별된 서브세트의 필드 중에서 함수적 관계를 갖는 것으로 식별된다.
본 발명은 다음과 같은 하나 이상의 특징을 포함할 수 있다.
필드의 세트세트 중 하나 이상은 2개의 필드로 된 서브세트이다.
식별된 서브세트의 필드 중에서 함수적 관계를 갖는 복수 개의 서브세트 중 하나 이상을 식별하는 단계는, 상기 복수 개의 서브세트 중 하나 이상을, 가능한 미리 정해진 복수 개의 함수적 관계 중 하나를 갖는 것으로 식별하는 단계를 포함한다.
동시발생 통계치를 판정하는 단계는, 한 쌍의 필드를 각각 식별하는 데이터 요소를 형성하는 단계와, 데이터 레코드 중 하나에 있는 한 쌍의 필드에서 발생하는 한 쌍의 값을 식별하는 단계를 포함한다.
동시발생 통계치를 판정하는 단계는, 제1 필드 및 제2 필드를 갖는 데이터 레코드를 분할하는 단계, 분할된 데이터 레코드의 제1 부분에 있는 하나 이상의 레코드의 제2 필드에서 발생하는 값에 대한 분포에 기초한 퀀터티를 판정하는 단계로서, 하나 이상이 레코드가 이 하나 이상의 레코드의 제1 필드에서 발생하는 공통의 값을 갖는, 판정 단계, 및 퀀터티를 분할된 데이터 레코드의 제2 부분에 있는 레코 드로부터 다른 퀀터티와 조합하여 총 퀀터티를 생성하는, 조합 단계를 포함한다.
복수 개의 서브세트 중 하나 이상을, 식별된 서브세트의 필드 중에서 함수적 관계를 갖는 것으로 식별하는 단계는, 총 퀀터티에 기초하여 제1 필드 및 제2 필드 사이의 함수적 관계를 식별하는 단계를 포함한다.
분할된 데이터 레코드는 제1 필드 및 제2 필드의 값에 기초한다.
분할된 데이터 레코드는, 병렬 컴포넌트 세트의 개별 컴포넌트를 이용하여 처리된다.
복수 개의 서브세트 중 하나 이상을, 식별된 서브세트의 필드 중에서 함수적 관계를 갖는 것으로 식별하는 단계는, 함수적 관계에 부합하는 정도를 판정하는 단계를 포함한다.
부합하는 정도는, 함수적 관계와 일치하지 않는 다수의 예외적인 레코드를 포함한다.
함수적 관계는, 제1 필드의 값 중 적어도 일부를 제2 필드의 값 중 적어도 일부에 매핑하는 단계를 포함한다.
이러한 매핑은, 예컨대 다대일(many-to-one) 매핑, 일대다(one-to-many) 매핑, 일대일(one-to-one) 매핑이 될 수 있다.
본 발명의 방법은, 복수 개의 서브세트의 필드 내의 값의 특성을 나타내는 정보에 기초하여 복수 개의 서브세트를 필터링하는 단계를 더 포함한다.
데이터 레코드는 데이터베이스 테이블의 레코드를 포함한다.
본 발명은 다음과 같은 하나 이상의 장점을 포함할 수 있다.
본 발명은 다양한 시나리오를 제공하는 장점을 갖는다. 예를 들어, 애플리케이션을 개발할 때에, 개발자는 애플리케이션을 테스트하기 위해 입력 데이터를 이용할 수 있다. 테스트용 데이터 세트를 이용하여 구동되는 애플리케이션의 출력을 예측되는 테스트 결과에 비교하거나, 수동으로 정밀 검사할 수 있다. 그러나, 애플리케이션이 실질적인 "프로덕션 데이터"(production data)를 이용하여 실행되는 경우, 그 결과는 일반적으로 너무 방대해서 정밀 검사에 의해 검증할 수 없다. 데이터 프로파일링은 애플리케이션의 작용을 검증하는데 이용될 수 있다. 프로덕션 데이터를 이용하는 애플리케이션의 실행에 의해 생성되는 모든 레코드를 정밀 검사하는 대신에, 출력의 프로파일을 정밀 검사한다. 데이터 프로파일링은 무효 값 또는 비예측 값을 검출할 수 있으며, 애플리케이션 설계 문제에 의해 생길 수 있는 출력에서의 비예측 패턴 또는 분포도 검출할 수 있다.
다른 시나리오로서, 데이터 프로파일링은 프로덕션 처리과정의 일부분으로서 이용될 수 있다. 예를 들어, 정상적인 프로덕트 실행(product run)의 일부분에 해당하는 입력 데이터가 프로파일링될 수 있다. 데이터 프로파일링을 완료한 후, 처리 모듈이 그 프로파일링 결과를 로딩하고, 입력 데이터가 소정의 품질 기준에 부합되는지를 검증할 수 있다. 입력 데이터가 불량하게 보이면, 프로덕트 실행을 취소하고 경고할 수 있다.
다른 시나리오로서, 데이터를 대량(예컨대, 다중 세트의 데이터에서의 수백 개의 데이터베이스 테이블)으로 수집하는 주기적인 심사가 데이터를 규칙적으로 프로파일링함으로써 수행될 수 있다. 예를 들어, 데이터 프로파일링이 데이터의 서 브세트에 대해 매일 밤 수행될 수 있다. 프로파일링되는 데이터는 모든 데이터가 프로파일링되도록, 예컨대 분기마다 순환됨으로써, 모든 데이터베이스 테이블이 1년에 4번 프로파일링되도록 할 수 있다. 이에 의하여, 차후에 참조될 수 있는 모든 데이터에 대해 시간에 따른 데이터 품질의 심사를, 필요에 따라 제공한다.
데이터 프로파일링은 자동으로 수행될 수 있다. 예를 들어, 데이터 프로파일링은 스크립트(예컨대, 셀 스크립트(shell script))로부터 수행되거나, 다른 형태의 처리와 통합될 수 있다. 데이터 프로파일링의 결과는, 예컨대 웹 브라우저에 표시될 수 있는 형태로, 자동으로 공개될 수 있기 때문에, 개별적인 보고 애플리케이션을 구동시키거나 그 결과를 수동으로 사후 처리시킬 필요가 없다.
데이터 소스의 레코드에 대해 반드시 직접 조작하는 것이 아니라 데이터 소스에 있는 레코드의 값의 특성을 나타내는 정보를 조작함으로써, 산출량을 크게 감소시킬 수 있다. 예를 들어, 원천 데이터 레코드(raw data record)가 아니라 센서스 데이터(census data)를 이용함으로써, 2개의 데이터 소스에서의 데이터 레코드의 개수의 곱의 차수가 되는 것으로부터 2개의 데이터 소스에서의 고유 값의 개수의 곱의 차수가 되는 것까지의 2개의 필드에 대한 결합의 산출 특성의 복잡도를 감소시킨다.
데이터 소스의 외부에 데이터의 카피를 유지하지 않고 데이터를 프로파일링하는 것은, 카피를 유지하는 것과 관련하여 오류가 생길 가능성을 배제할 수 있으며, 데이터의 복제에 필요한 저장 공간의 이용을 피할 수 있다.
데이터 값에 따라 동작이 병렬로 이루어질 수 있기 때문에, 효율적인 분산 처리가 가능하다.
필드 사이의 관계의 특성을 나타내는 퀀터티는 다른 타입의 관계에 의해 어떤 필드가 관련될 수 있는지를 나타낼 수 있다. 사용자는 필드가 그러한 타입의 관계를 정당하게 형성하는지 여부를 판정하기 위해 데이터를 더 밀접하게 조사할 수 있게 된다.
데이터 소스의 데이터 레코드에서의 필드의 복수 개의 서브세트의 각각에 대한 동시발생 통계치를 판정하는 것에 의하여, 필드 중에서의 잠재적인 함수적 관계의 식별이 효율적으로 이루어지게 된다.
본 발명은, 사용자가 친숙하지 않은 데이터 세트를 프로파일링하는데 유용한 특징을 갖는다. 자동으로 판정되거나 사용자의 조작에 의해 판정되는 정보는, 데이터 소스에 대한 메타데이터로서 차후의 처리에 이용될 수 있는 메타데이터를 파풀레이트(populate)하는데 이용될 수 있다.
본 발명의 다른 특징 및 장점은 청구범위와 이하의 상세한 설명으로부터 명백하게 알 수 있다.
1. 개요
도 1에서, 데이터 처리 시스템(10)은, 데이터 소스(data source)(30)로부터 데이터를 처리하고, 데이터 저장 서브시스템(40) 내의 메타데이터(metadata) 저장부(112) 및 데이터 저장부(124)를 갱신하는 프로파일링 및 처리 서브시스템(20)을 포함한다. 저장된 메타데이터 및 데이터는, 사용자가 인터페이스 서브시스템(50)을 이용하여 액세스할 수 있게 되어 있다.
데이터 소스(30)는 다양하고 개별적인 데이터 소스를 포함한다. 이러한 각각의 데이터 소스는 고유의 저장 포맷 및 인터페이스[예를 들어, 데이터베이스 테이블, 스프레드시트 파일, 플랫 텍스트 파일, 또는 메인프레임(110)에 의해 이용되는 네이티브 포맷]을 가질 수 있다. 각각의 데이터 소스는, 예컨대 동일한 컴퓨터 시스템[예를 들어, 파일(102)]에 대해 호스트가 되는 프로파일링 및 처리 서브시스템(20)에 대해 국부적으로 사용되거나, 협대역 데이터망이나 광대역 데이터망을 통해 액세스되는, 예컨대 원격 컴퓨터[예컨대, 메인프레임(110)]에 대해 호스트가 되는 프로파일링 및 처리 서브시스템(20)에 대해 원격적으로 사용될 수 있다.
데이터 저장 서브시스템(40)은 메타데이터 저장부(112)뿐만 아니라 데이터 저장부(124)도 포함한다. 메타데이터 저장부(112)는 데이터 저장부(124)에 있는 데이터 관련 정보뿐만 아니라 데이터 소스(30)에 있는 데이터 관련 정보도 포함한다. 이러한 정보에는, 레코드 포맷(record formats)과, 이러한 레코드에서의 필드 값의 검증을 판정하기 위한 사양(검증 사양)도 포함된다.
메타데이터 저장부(112)는, 프로파일링 처리의 대상이 되는 데이터 소스(30) 내의 데이터 세트에 관한 초기 정보와, 이러한 데이터 세트와 관련하여 획득된 정보뿐만 아니라, 프로파일링 처리 과정 동안, 데이터 저장부(124) 내의, 이러한 데이터 세트로부터 유도된 데이터 세트와 관련하여 획득된 정보를 저장하는데 이용될 수 있다. 데이터 저장부(124)는, 데이터 소스(30)로부터 판독되고, 데이터 프로파 일링으로부터 유도된 정보를 이용하여 선택적으로 변환된 데이터를 저장하는데 이용될 수 있다.
프로파일링 및 처리 서브시스템(20)은, 데이터 소스로부터 데이터를 직접 판독하는 프로파일링 모듈(100)을 포함하는데, 이 경우에는 개별 레코드 등의 이산적인(discrete) 작업 요소(work elements)의 단위로 프로파일링을 행하기 전에, 데이터 소스로부터의 데이터의 완전히 카피를, 반드시 저장 매체에 저장할 필요가 없다. 통상적으로, 레코드는 데이터 필드 세트와 관련되어 있으며, 각각의 필드는 각 레코드에 대한 특정 값(널 값을 포함할 수 있음)을 갖는다. 데이터 소스에 있는 레코드는, 각각의 레코드가 동일한 필드를 포함하는 고정적인 레코드 구조를 가질 수 있다. 이와 달리, 레코드는, 가변 길이 벡터(variable length vectors) 또는 조건부 필드(conditional field) 등을 포함하는 가변적인 레코드 구조를 가질 수 있다. 가변적인 레코드 구조의 경우에, 레코드는 프로파일링 이전에 데이터의 "플랫화된"(flattened)(즉, 고정적인 레코드 구조) 카피를 저장하지 않고도 처리될 수 있다.
우선, 데이터 소스로부터 데이터를 판독하면, 프로파일링 모듈(100)은, 통상적으로 그 데이터 소스에 있는 레코드와 관련된 몇 개의 초기 포맷 정보에 의해 시작된다(주의할 것은, 일부의 경우에는, 데이터 소스의 레코드 구조를 알지 못할 수도 있다). 레코드와 관련된 개시 정보에는, 구분이 명확한 값(예컨대, 16 비트 = 2 바이트)를 나타내는 비트의 수, 레코드 필드와 관련된 값 및 태그(tag)나 분할문자(delimiter)와 관련된 값을 포함하는 값의 차수, 비트로 표시되는 값의 종류(예 컨대, 스트링, 부호있는 정수/부호없는 정수)이 포함될 수 있다. 이 데이터 소스의 레코드 관련 정보는, 메타데이터 저장부(112)에 저장되어 있는 데이터 조작 언어(DML: data manipulation language) 파일로 특정된다. 프로파일링 모듈(100)은, 다양한 공통 데이터 시스템 포맷(예컨대, SQL 테이블, XML 파일, CSV 파일)으로부터 데이터를 자동으로 해석하기 위하여 미리 정해진 DML 파일을 이용하거나, 커스토마이즈 데이터 시스템 포맷(customized data system format)을 기술하는 메타데이터 저장부(112)로부터 획득한 DML 파일을 이용할 수 있다.
부분적으로는 정확하지 않을 수도 있지만, 데이터 소스의 레코드 관련 정보는, 프로파일링 모듈(100)이 데이터의 판독을 개시하기 전에, 프로파일링 및 처리 서브시스템(20)에 의해 이용될 수 있다. 예를 들어, 데이터 소스와 관련된 COBOL(코볼)의 카피북(copy book)이 저장된 데이터(114)로서 이용될 수 있거나, 사용자(118)에 의해 사용자 인터페이스(116)를 통해 입력될 수 있다. 이러한 기존 정보는 메타데이터 입력 모듈(115)에 의해 처리되고, 메타데이터 저장부(112)에 저장되며, 이에 추가로 또는 선택적으로 데이터 소스를 액세스하기 위해 이용되는 DML 파일을 정의하는데 이용된다.
프로파일링 모듈(100)은, 데이터 소스로부터 레코드를 판독하여, 데이터 세트의 내용을 반영하는 통계치(statistics) 및 그외 다른 기술 정보(descriptive information)를 연산한다. 이후, 프로파일링 모듈(100)은 이러한 통계치 및 기술 정보를 "프로파일"의 형태로 메타데이터 저장부(112)에 기록하고, 사용자 인터페이스(116) 또는 메타데이터 저장부(112)에 액세스할 수 있는 그외 다른 모듈을 이용 하여 메타데이터 저장부(112)를 조사할 수 있다. 프로파일에서의 통계치에는, 각 필드에서의 값들의 히스토그램, 최대값, 최소값 및 평균값, 최소 공통 값 및 최대 공통 값의 표본 값이 포함되는 것이 바람직하다.
데이터 소스로부터의 판독에 의해 획득되는 통계치는 다양한 용도로 이용될 수 있다. 이러한 용도에는, 잘 알지 못하는 데이터 세트의 내용을 알아내는 것, 데이터 세트와 관련된 메타데이터의 수집을 구축하는 것, 제3자 데이터를 구매 또는 이용하기 전에 조사하는 것, 및 수집된 데이터 품질 제어 기법을 구현하는 것이 포함될 수 있다. 이러한 작업을 수행하기 위하여 데이터 처리 시스템(10)을 이용하기 위한 과정에 대하여 이하 상세하게 설명한다.
메타데이터 저장부(112)는 각각의 프로파일링 처리된 필드와 관련되는 검증 정보(validation information)를, 예를 들어 검증 정보를 부호화(encode)하는 검증 사양으로서 저장할 수 있다. 이와 달리, 검증 정보가, 외부 저장 위치에 저장되어, 프로파일링 모듈(100)에 의해 검색될 수 있다. 데이터 세트가 프로파일링 처리되기 전에, 검증 정보는 각각의 필드에 대해 유효한 데이터 타입을 특정할 수 있다. 예를 들어, 필드가 개인의 "타이틀"인 경우, 디폴트 유효 값은 "문자열" 데이터 타입에 해당하는 임의의 값이 될 수 있다. 사용자는, 또한 데이터 소스를 프로파일링하기 전에, "Mr."(미스터), "Mrs."(미세스), 및 "Dr."(닥터) 등의 유효 값을 제공함으로써, 프로파일링 모듈(100)에 의해 판독된 임의의 다른 값들은 타당하지 않은 것으로 식별되도록 할 수 있다. 프로파일링 처리에 의해 획득된 정보는, 또한 특정 필드에 대한 유효 값을 특정하기 위해 사용자에 의해 이용될 수 있다. 예 를 들어, 사용자는 데이터 세트를 프로파일링한 후에 "Ms." 및 "Msr." 값이 공통 값으로 되는 것을 알아낼 수 있다. 사용자는 "미스터"를 유효 값으로 추가하고, "Msr." 값을 데이터 소거 옵션으로서 "Mrs." 값에 매핑할 수 있다. 따라서, 검증 정보에는, 유효 값과, 무효 값을 유효 값에 매핑함으로써 무효 값을 소거할 수 있도록 하는 매핑 정보가 포함될 수 있다. 데이터 소스의 프로파일링은, 연속적인 프로파일링 처리에 의해 데이터 소스와 관련된 정보가 더 많이 발견되기 때문에, 반복적인 방식으로 수행될 수 있다.
프로파일링 모듈(100)은, 실행가능한 코드(executable code)를 생성하여, 프로파일링 처리된 데이터 시스템을 액세스할 수 있는 다른 모듈을 구현할 수 있다. 예를 들어, 처리 모듈(120)은 프로파일링 모듈(100)에 의해 생성된 코드를 포함할 수 있다. 예컨대, 이러한 코드는 "Msr." 값을, 데이터 소스에 대한 액세스 과정의 일부로서 "Mrs."에 매핑시킬 수 있다. 처리 모듈(120)은 프로파일링 모듈(100)과 동일한 런타임 환경에서 실행될 수 있으며, 데이터 세트와 관련된 프로파일을 액세스하기 위해 메타데이터 저장부(112)와 통신을 할 수 있는 것이 바람직하다. 처리 모듈(120)은 프로파일링 모듈(100)과 동일한 데이터 포맷을 판독[예컨대, 메타데이터 저장부(112)로부터 동일한 DML 파일을 획득함에 의함]할 수 있다. 처리 모듈(120)은 입력되는 레코드를 데이터 저장부(124)에 저장하기 전에 검증 및 소거하는데 이용되는 값을 획득하기 위하여 데이터 세트 프로파일을 이용할 수 있다.
프로파일링 모듈(100)과 유사하게, 처리 모듈(120)은 이산적인 작업 요소의 단위로 데이터 시스템으로부터 직접 데이터를 판독한다. 이러한 작업 요소의 "데 이터 플로우"(data flow)는, 데이터를 국부적인 기억장치(예컨대, 디스크 드라이브)에 반드시 복제하지 않고도, 데이터 프로파일링이 대형의 데이터 세트에 대해 수행될 수 있는 이점을 갖는다. 이하 더 상세하게 설명하는 이러한 데이터 흐름의 모델에 의하면, 복잡한 데이터 변환이, 소스 데이터를 스테이징 영역(staging area)에 복제할 필요 없이, 처리 모듈에 의해 수행될 수 있다. 스테이징 영역은 기억 장소와 시간을 절약할 수 있다.
2. 메타데이터 저장 구성
프로파일링 모듈(100)은 메타데이터 저장부(112)를 이용하여 다양한 메타데이터, 프로파일링 선호도(profiling preferences), 및 결과적으로는 데이터 오브젝트(data objects)까지 구성 및 저장할 수 있다. 도 2를 참조하면, 메타데이터 저장부(112)는, 프로파일 설정 오브젝트(201)의 그룹, 데이터 세트 오브젝트(207)의 그룹, 및 DML 파일(211)의 그룹을 저장할 수 있으며, 프로파일 설정 오브젝트의 각각은 프로파일링 잡(profiling job)에 관련된 정보에 해당하며, 데이터 세트 오브젝트(data set object)의 각각은 데이터 세트에 관한 정보에 해당하고, DML 파일의 각각은 특정의 데이터 포맷을 기술하는 것이다. 프로파일 설정 오브젝트(profile setup object)는 프로파일링 모듈(100)에 의해 수행되는 프로파일링 실행을 위한 선호도를 포함한다. 사용자(118)는 새로운 프로파일 설정 오브젝트을 작성하거나 미리 저장된 프로파일 설정 오브젝트(200)를 선택하는데 이용되는 정보를 입력할 수 있다.
프로파일 설정 오브젝트(200)는 데이터 세트 오브젝트(206)에 대한 참 조(reference)(204)를 포함한다. 데이터 세트 설정 오브젝트(206)는, 프로파일링 모듈(100)이 프로파일링의 대상이 되는 데이터를 런타임 환경 내에서 액세스 가능한 하나 이상의 데이터 시스템에 위치시킬 수 있도록 하는 데이터 세트 로케이터(data set locator)(202)를 포함한다. 데이터 세트 로케이터(202)는, 통상적으로 경로/파일명, URL, 또는 여러 위치에 걸쳐 분포된 데이터 세트의 경로/파일명 및/또는 URL의 리스트이다. 데이터 세트 오브젝트(206)는 하나 이상의 DML 파일(210)에 대한 참조(208)를 선택적으로 포함할 수 있다.
DML 파일(210)은, 데이터 세트 내의 데이터의 포맷에 관한 인식에 기초하여 미리 선택될 수 있거나, 사용자에 의해 런타임에서 특정될 수 있다. 프로파일링 모듈(100)은 데이터 세트의 개시 부분을 획득하여, 디폴트 DML 파일에 기초한 개시 부분의 해석을 사용자 인터페이스(116)를 통해 사용자에게 제공할 수 있다. 사용자는 해석의 상호작용에 기초하여 디폴트 DML 파일 사양을 변경할 수 있다. 데이터 세트가 다중의 포맷을 가진 데이터를 포함하는 경우에는, 하나 이상의 DML 파일이 참조될 수 있다.
데이터 세트 오브젝트(206)는 필드 오브젝트(214)의 세트에 대한 참조(212)를 포함한다. 프로파일링의 대상이 되는 데이터 세트의 레코드 내에는 각각의 필드에 대해 하나의 필드 오브젝트가 존재한다. 프로파일링 모듈(100)에 의해 수행되는 프로파일링 실행이 완료되면, 데이터 세트 프로파일(216)은 프로파일링 처리된 데이터 세트에 대응하는 데이터 세트 오브젝트(206) 내에 포함된다. 데이터 세트 프로파일(216)은 레코드의 총 개수 및 유효/무효 레코드의 총 개수와 같은 데이 터 세트와 관련된 통계치를 포함한다.
필드 오브젝트(field objects)(218)는, 프로파일링 모듈(100)에 의해 이용될 수 있는 검증 정보(220)를 선택적으로 포함함으로써, 대응하는 필드에 대한 유효 값(valid values)을 판정하며, 무효 값(invalid values)을 소거하기 위한 규칙(예컨대, 무효 값을 유효 값에 매핑시킴)을 특정할 수 있다. 필드 오브젝트(218)는, 프로파일링 실행이 완료되면, 대응하는 필드에 관련된, 이산적인 값, 널 값(null values), 및 유효 값/무효 값 등과 같은 통계치를 포함하는 프로파일링 모듈(100)에 의해 저장되는 필드 프로파일(field profile)(222)을 포함한다. 필드 프로파일(222)은, 또한 최대값, 최소값, 최소 공통 값, 최대 공통 값 등과 같은 표본 값을 포함한다. 완료된 "프로파일"은 프로파일 처리된 모든 필드의 필드 프로파일과 데이터 세트 프로파일(216)을 포함한다.
프로파일러(profiler) 실행에 대한 다른 사용자 선호도를 수집하여, 프로파일 설정 오브젝트(200) 또는 데이터 세트 오브젝트(206) 내에 저장할 수 있다. 예를 들어, 사용자는 값들의 임의 표본(예컨대, 1%)에 대한 프로파일링을 포함하여, 프로파일링 처리된 값들의 수 또는 필드를 제한하는데 이용될 수 있는 필터식(filter expression)을 선택할 수 있다.
3. 런타임 환경
프로파일링 모듈(100)은 데이터 소스로부터 데이터를 이산적인 작업 요소의 플로우로서 판독 및 처리할 수 있는 런타임 환경에서 실행된다. 프로파일링 모듈(100)과 처리 모듈(120)에 의해 수행되는 연산은 방향성 그래프에 의한 데이터 플로우를 이용하여 표현될 수 있으며, 여기서 연산의 컴포넌트는, 그래프의 링크(아크, 에지)에 대응하는 컴포넌트들 사이의 데이터 플로우 및 그래프의 정점과 관련되어 있다. 이러한 그래프를 기반으로 하여 연산을 수행하는 시스템은 미국 특허 제5,966,072호(명칭: EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS)에 개시되어 있다. 이러한 시스템에 따라 만들어진 그래프는, 그래프 컴포넌트에 의해 표현되는 개별 프로세스에 정보를 입력하고 이러한 프로세스로부터 정보를 출력하는 방법, 이러한 프로세스들 사이에서 정보를 이동시키는 방법, 및 이러한 프로세스에 대한 실행 순서를 정하는 방법을 제공한다. 이 시스템은 프로세스간 통신 방법을 선택하는 알고리즘을 포함한다(예를 들어, 그래프의 링크에 따른 통신 경로는 TCP/IP 또는 UNIX 도메인 소켓(domain sockets)을 이용하거나, 프로세스 사이에서 데이터를 전달하기 위해 공유 메모리를 이용할 수 있다).
런타임 환경에 의하면, 프로파일링 모듈(100)이 병렬 프로세스로서 실행될 수 있다. 병렬 처리 시스템을 기술하기 위하여, 상기 설명한 것과 동일한 종류의 그래픽 표현이 이용될 수 있다. 이를 설명하기 위하여, 병렬 처리 시스템은, 국부적(예컨대, SMP 컴퓨터 등의 멀티프로세서 시스템) 또는 국부적으로 분산된(예컨대, 클러스터 또는 MPP로서 결합된 다중 프로세서), 또는 이와는 선택적으로, 원격적 또는 원격적으로 분산된(예컨대, LAN 또는 WAN 네트워크를 통해 결합된 다중 프로세서), 또는 이들을 임의로 조합한, 다중의 중앙 연산처리 장치(CPU)를 이용하는 것이면 어떤 컴퓨터 시스템의 구성이라도 이용이 가능하다. 그래프는 컴포넌트(그래프 정점) 및 플로우(그래프 링크)로 구성될 수 있다. 그래프의 요소(컴포넌트 및 플로우)를 명시적으로 또는 암시적으로 복제함으로써, 시스템에서 병렬 특성을 나타낼 수 있다.
컴포넌트를 입력하는 링크에 대한 입력 큐(input queue)를 이용하여, 플로우 제어 메커니즘이 구현된다. 이 플로우 제어 메커니즘에 의해, 통상적으로 대형이지만 속도가 느린 디스크 드라이드 등의 비휘발성 국부적인 기억장치에 데이터를 기입하지 않고도, 그래프의 컴포넌트들 사이에서 데이터를 전달할 수 있다. 입력 큐는 비휘발성 메모리보다 통상 소형이며 고속인 휘발성 메모리 내에 작업 요소를 유지할 정도로 소형으로 할 수 있다. 이에 의하면, 규모가 큰 데이터 세트인 경우에도, 기억 장소 및 시간을 절약할 수 있다. 컴포넌트는 입력 큐에 추가하여 또는 이를 대신하여 출력 버퍼를 이용할 수도 있다.
플로우에 의해 2개의 컴포넌트가 연결될 때, 업스트림 컴포넌트는, 다운스트림 컴포넌트가 작업 요소를 이용하고 있는 동안에는, 작업 요소를 다운스트림 컴포넌트로 전달한다. 만일 다운스트림 컴포넌트가 뒤쪽에 있는 경우에는, 업스트림 컴포넌트가 다운스트림 컴포넌트의 입력 큐를 채우고, 입력 큐가 다시 소거될 때까지 작업을 중단할 것이다.
연산 그래프는 다양한 레벨의 추상화(abstraction)에 의해 특정될 수 있다. 소위, 컴포넌트과 링크를 포함하는 "서브그래프"(sub-graph)는 그래프의 나머지에 연결되는 링크만을 나타내는, 단일 컴포넌트로서의 다른 그래프 내에서 표현될 수 있다.
4. 프로파일링 그래프
도 3을 참조하여, 바람직한 실시예로서, 프로파일링 그래프(400)는 프로파일링 모듈(10)에 대한 연산을 수행한다. 입력 데이터 세트(input data set) 컴포넌트(402)는 여러 타입의 데이터 시스템으로부터의 데이터를 나타낸다. 데이터 시스템은 상이한 물리적 매체 타입(예컨대, 자기, 광학, 광자기) 및/또는 상이한 데이터 포맷 타입(예컨대, 이진, 데이터베이스, 스프레드시트, ASCII 문자열, CSV 또는 XML)을 가질 수 있다. 이 "입력 데이터 세트" 컴포넌트(402)는 센서스 작성 컴포넌트(make census component)(406)에 데이터 플로우를 전달한다. 이 센서스 작성 컴포넌트(406)는 데이터 세트의 "센서스"(census)를 수행하고, 그 컴포넌트로 공급되는 레코드 내의 각각의 고유한 필드/값 쌍에 대한 개별 센서스 레코드를 작성한다. 각각의 센서스 레코드는 이 센서스 레코드에 대한 고유의 필드/값 쌍의 발생 횟수의 카운트를 포함한다.
센서스 작성 컴포넌트(406)는 대응하는 필드 오브젝트에 저장된 검증 정보에 따라 무효 값의 세트를 유효 값에 매핑시킬 수 있는 소거 옵션(cleaning option)을 갖는다. 이 소거 옵션은, 또한 무효 값을 포함하는 필드를 갖는 레코드를 무효 레코드 컴포넌트(408)에 의해 표현되는 위치에 저장할 수 있다. 이 무효 레코드는, 예컨대 무효 값의 소스를 판정하기 위해 대기하고 있는 사용자에 의해 조사될 수 있다.
본 실시예에서, 센서스 작성 컴포넌트(406)로부터 제공되는 센서스 레코드는 센서스 파일 컴포넌트(410)에 의해 표시되는 파일 내에 저장된다. 이러한 센서스 레코드의 중간 저장매체는, 일부 경우에 있어서, 센서스 레코드에 액세스하는 여러 개의 그래프 컴포넌트에 대한 효율성을 높인다. 이와 달리, 센서스 레코드는, 파일에 저장되지 않고, 센서스 작성 컴포넌트(406)로부터 센서스 분석 컴포넌트(412)로 직접 유입될 수 있다.
센서스 분석 컴포넌트(412)는, 각 필드에 대한 값의 히스토그램(histogram)을 작성하고, 센서스 레코드에 기초한 데이터 세트의 다른 분석 자료를 수행한다. 본 실시예에서, 필드 프로파일 컴포넌트(field profiles component)(414)는 필드 프로파일에 대한 중간 저장 위치를 나타낸다. 로드 메타데이터 저장 컴포넌트(load metadata store component)(416)는 필드 프로파일 및 다른 프로파일링 결과를 메타데이터 저장부(112) 내의 대응하는 오브젝트에 로딩한다.
사용자 인터페이스(116)에 의해, 사용자는 분석된 데이터를 검토하고, 예컨대 필드 내의 공통 값이나 히스토그램을 참조할 수 있다. 예컨대, 히스토그램 내의 바(bar)와 관련된 특정 레코드를 참조하기 위해, "드릴다운"(drill-down)" 성능이 제공된다. 사용자는, 프로파일링의 결과에 기초하여 사용자 인터페이스(116)를 통해 선호도(preference)를 갱신할 수 있다.
표본 작성 컴포넌트(418)는 사용자 인터페이스(116)(예컨대, 히스토그램에서 바와 관련된 것) 상에 도시된 값과 관련된 레코드의 샘플링을 나타내는 표본 레코드(sample records)(420)의 수집을 저장한다. 단계 분리 선(422)은 그래프(400)에서의 2개의 실행 단계를 나타내며, 라인의 오른쪽에 있는 컴포넌트는 라인의 왼쪽에 있는 모든 컴포넌트의 실행이 종료한 후에 실행을 시작한다. 따라서, 표본 작성 컴포넌트(418)는, 센서스 분석 컴포넌트(412)가 필드 프로파일 컴포넌트(414)에 결과의 저장을 완료한 후에 실행한다. 이와 다르게, 샘플 레코드는 "입력 데이터 세트"(402)에서의 기록된 위치로부터 검색이 가능하다.
프로파일링 모듈(100)은 사용자(118) 또는 자동화 스케쥴링 프로그램에 의해 개시될 수 있다. 프로파일링 모듈(100)이 개시될 때, 마스터 스크립트(도시 안됨)는 메타데이터 저장부(112)로부터 프로파일링 그래프(400)에 의해 이용되는 임의의 DML 파일 및 파라미터를 수집한다. 파라미터는 프로파일 설정 오브젝트(200), 데이터 세트 오브젝트(206), 및 필드 오브젝트(218) 등의 오브젝트로부터 획득될 수 있다. 필요하다면, 마스터 스트립트는 프로파일링 처리되는 데이터 세트에 대해 제공된 정보에 기초하여 새로운 DML 파일을 작성할 수 있다. 편의를 위하여, 마스터 스트립트는 파라미터를 잡 파일(job file)에 축적할 수 있다. 마스터 스크립트는 잡 파일로부터의 적절한 파라미터에 의해 프로파일링 그래프를 실행하고, 경과되는 시간을 추적하며 프로파일링 그래프(400)가 실행을 완료하기 전에 남은 시간을 추정하는 진행 디스플레이(progress display)를 제공한다. 추정된 잔여 시간은, 프로파일링 그래프(400)가 실행될 때 메타데이터 저장부(112)에 기록되는 데이터(예컨대, 작업 요소)에 기초하여 산출된다.
4.1 데이터 포맷 해석
반입 컴포넌트(import component)는 매우 다양한 데이터 시스템의 데이터 포맷을 해석할 수 있는 프로파일링 모듈(100)의 일부를 구현한다. 반입 컴포넌트는 DML 파일을 이용하지 않고, 일부 데이터 포맷을 직접 해석하도록 구성되어 있다. 예를 들어, 반입 컴포넌트는, 데이터베이스에 접근하여 조작하기 위한 ANSI 표준화 컴퓨터 언어에 해당하는 구조화 질의어(SQL: structured query language)를 이용하는 데이터 시스템으로부터 데이터를 판독할 수 있다. 예를 들어, DML 파일을 이용하지 않고 처리되는 다른 데이터 포맷으로는, XML 표준에 따라 또는 각 항목의 값들이 콤마에 의해 분리되는 값(CSV: comma-separated values)을 이용하여 포맷화된 텍스트 파일이 있다.
다른 데이터 포맷의 경우, 반입 컴포넌트는 프로파일 설정 오브젝트(200)에서 특정된 DML 파일을 이용한다. DML 파일은 데이터 세트 내의 데이터를 해석 및 조작하는 다양한 특징을 특정할 수 있다. 예를 들어, DML 파일은 데이터 세트에 대해 다음과 같이 특정할 수 있다.
"type object"(타입 오브젝트) - 원천 데이터(raw data)와 이 원천 데이터에 의해 표시되는 값 사이의 대응 관계를 정의함.
"key specifier"(키 특정자) - 레코드 사이의 순서, 분할, 그룹화를 정의함.
"expression"(표현(식)) - 상수, 데이터 레코드의 필드, 또는 새로운 값을 생성하기 위해 다른 표현의 결과로부터의 값을 이용하는 산출을 정의함.
"transform function"(변환 함수) - 제로 또는 그 이상의 입력 레코드로부터 하나 이상의 출력 레코드를 생성하는데 이용되는 규칙 및 다른 논리의 수집을 정의함.
"package"(패키지) - 다양한 태스크를 수행하기 위해 컴포넌트에 의해 이용될 수 있는 타입 오브젝트, 변환 함수, 및 변수를 그룹화하는 편리한 방법을 제공함.
타입 오브젝트는 데이터 시스템에서의 원천 데이터로부터 각각의 작업 요소(예컨대, 개별 레코드)를 판독하는데 이용되는 기본적인 메커니즘이다. 런타임 환경은 원천 데이터 비트열(예컨대, 파일 시스템 내에 장착된 또는 네트워크 연결을 통해 전달됨)로서, 컴퓨터로 판독 가능한 물리적인 저장매체(예컨대, 자기, 광, 또는 광자기 매체)에 대한 액세스를 제공한다. 반입 컴포넌트는 작업 요소의 플로우를 생성하기 위해 원천 데이터를 어떻게 판독하고 해석할 것인가를 판정하도록 DML 파일에 액세스할 수 있다.
도 4를 참조하면, 타입 오브젝트(502)는, 예컨대 기본 타입(504) 또는 복합 타입(506)이 될 수 있다. 기본 타입 오브젝트(504)는 단일 값으로서 비트열(소정의 길이를 가짐)을 해석하는 방식을 특정한다. 기본 타입 오브젝트(504)는 판독 및 파싱 처리하는 원천 데이터 비트를 수를 나타내는 길이 사양을 포함한다. 길이 사양은 바이트의 특정된 수와 같은 고정 길이, 데이터의 끝에서의 분할문자(예컨대, 특정의 문자나 문자열)을 특정하는 가변 길이, 또는 판독되는 문자의 개수(가변 길이라고도 할 수 있음)를 나타낼 수 있다.
보이드 타입(void type)(514)은 의미 또는 내부 구조를 해석할 필요가 없는 데이터(예컨대, 압축 해제가 수행될 때까지 해석할 필요가 없는 압축된 데이터) 블록을 나타낸다. 보이드 타입(514)의 길이는 바이트로 특정된다. 숫자 타입(516)은 수(number)를 나타내며, 이 수가 정수(524), 실수(526), 또는 십진수(528)인 경우, 특정의 CPU에 대해 표준 또는 전용인 다양한 부호화에 따라, 상이하게 해석된다. 문자열 타입(518)은 특정된 문자 세트로 된 텍스트를 해석하는데 이용된다. 데이트(날짜) 타입(520)과 데이트타임(날짜 및 시간) 타입(522)은 특정된 문자 세트 및 다른 포맷 정보로 달력 날짜 및/또는 시간을 해석하는데 이용된다.
*복합 타입(506)은 자체가 기본 타입 또는 복합 타입에 해당하는 다중의 서브 오브젝트(sub-objects)로 이루어지는 오브젝트이다. 벡터 타입(vector type)(508)은 동일한 타입(기본 타입 또는 복합 타입)의 오브젝트의 시퀀스를 포함하는 오브젝트이다. 벡터 내의 서브 오브젝트의 수(즉, 벡터의 길이)는 가변 길이를 가진 벡터의 프로파일링을 수행하기 위한 규칙(예컨대, 벡터의 끝을 나타내는 분할문자)에 의해 또는 DML 파일에서의 상수에 의해 표시될 수 있다. 레코드 타입(510)은 오브젝트의 시퀀스를 포함하는 오브젝트로서, 이 오브젝트의 시퀀스의 각각은 기본 타입 또는 복합 타입이 될 수 있다. 이 시퀀스에서의 각각의 오브젝트는 지명된 필드와 관련된 값에 대응한다. 레코드 타입(510)을 이용하면, 컴포넌트는 원천 데이터의 블록을 해석하여, 레코드의 모든 필드에 대해 값을 추출할 수 있게 된다. 유니온 타입(union type)(512)은, 상이한 필드에 대응하는 오브젝트가 상이한 값과 동일한 원천 데이터 비트를 해석할 수 있다는 것을 제외하고는, 레코드 타입(510)과 유사한 오브젝트이다. 유니온 타입(512)은 동일한 원천 데이터의 몇 개의 해석을 갖는 방법을 제공한다.
DML 파일은, 또한 커스톰 데이터 타입(custom data type)으로 데이터를 프로파일링할 수 있다. 사용자는 다른 DML 타입(기본 타입 또는 복합 타입) 오브젝트에 의하여 타입 정의를 제공함으로써 커스톰 타입 오브젝트를 정의할 수 있다. 커 스톰 타입 오브젝트는 비표준화 구조로 데이터를 해석하기 위하여 프로파일링 모듈(100)에 의해 이용될 수 있다.
DML 파일은, 또한 조건부 구조로 데이터를 프로파일링할 수 있다. 레코드는 다른 필드와 관련된 값에 기초한 일부 필드만을 포함할 수 있다. 예를 들어, 필드 "결혼한"에 해당하는 값이 "예"인 경우, 레코드는 필드 "배우자"만을 포함할 것이다. DML 파일은 주어진 레코드에 대해 조건부 필드가 존재하는지 여부를 판정하기 위한 규칙을 포함한다. 이 조건부 필드가 레코드에 존재하지 않는다면, 필드의 값은 DML 타입 오브젝트에 의해 해석될 수 있다.
다양한 타입의 레코드 구조를 효과적으로 처리하기 위하여, 반입 컴포넌트가 그래프에 의해 이용될 수 있다. 조건부 레코드 또는 가변 길이 벡터와 같은 가변 레코드 구조로 레코드를 해석하기 위한 반입(가져오기) 컴포넌트 성능에 의하여, 먼저 이러한 데이터를 고정 길이의 세그먼트로 플랫화할 필요없이 그래프에 의해 이러한 데이터를 처리할 수 있다. 반입 컴포넌트를 이용하는 그래프에 의해 수행될 수 있는 다른 타입의 처리는, 데이터들 사이(레코드, 테이블 또는 파일들 사이)의 관계를 찾는 것이다. 그래프는 하나의 테이블에서의 외래 키(foreign key) 또는 필드와 다른 테이블에서의 주요 키(primary key) 또는 필드 사이의 관계를 찾기 위하여, 또는 데이터의 부분에 대한 함수 종속성의 산출을 수행하기 위하여, 반입 컴포넌트 내의 규칙을 이용할 수 있다.
4.2 통계치
도 5a를 참조하면, 센서스 작성 컴포넌트(406)의 일실시예를 구현하는 서브 그래프(600)는 프로파일 설정 오브젝트(200)에 저장된 필터식에 기초하여 입력되는 레코드의 일부를 전달하는 필터 컴포넌트(602)를 포함한다. 필터식은 프로파일링되는 값의 필드 또는 수를 제한할 수 있다. 필터식의 예로서, 프로파일링을, 각각의 입력되는 레코드(예컨대, "타이틀")의 단일 필드로 제한하는 것이 있다. 필터 컴포넌트(602)의 다른 선택적 기능은, 무효 레코드의 표본을 무효 레코드 컴포넌트(408)에 전달하는, 상기 설명한 소거 옵션을 구현하는 것이다. 필터 컴포넌트(602)로부터 제공되는 레코드는 국부적인 롤업 시퀀스(rollup sequence) 통계 컴포넌트(604)와 라운드-로빈에 의한 분할 컴포넌트(612)에 제공된다.
다중의 프로세서 및/또는 컴퓨터상에서 병렬로 구동하기 위한 프로파일링 그래프(400)(및 다른 그래프 및 서브 그래프)의 성능, 및 다중의 위치에 걸쳐 저장된 병렬의 데이터 세트를 판독하는 프로파일링 그래프(400)의 성능은, 컴포넌트의 라인 두께와 컴포넌트들 사이의 링크상에서의 심볼에 의해 서브 그래프(600)에 암시적으로 표시된다. "입력 데이터 세트" 컴포넌트(402)와 같은 저장 위치를 나타내는 컴포넌트의 두꺼운 경계는, 이것이 선택적으로 병렬의 데이터 세트가 될 수 있다는 것을 나타낸다. 필터 컴포넌트(602)와 같은 처리 컴포넌트의 두꺼운 경계는 상이한 프로세서 또는 컴퓨터상에서 구동되는 각각의 분할을 가진 다중 분할에서 처리가 선택적으로 실행될 수 있다는 것을 나타낸다. 사용자는 선택적인 병렬 그래프 컴포넌트를 병렬로 실행시켜야 하는지 아니면 직렬로 실행시켜야 하는지를, 사용자 인터페이스(116)를 통해 나타낼 수 있다. 얇은 경계는 데이터 세트 또는 처리가 직렬이라는 것을 나타낸다.
국부적인 롤업 시퀀스 통계 컴포넌트(604)는 입력되는 레코드의 순차적인 특성에 관련된 통계치를 산출한다. 예를 들어, 컴포넌트(604)는 증가, 감소 또는 1만큼 증분하는 필드에 대한 값을 갖는 레코드의 순차적인 쌍의 개수를 카운트할 수 있다. 병렬 실행의 경우, 순차적인 통계치는 각각의 개별적인 분할에 대해 산출된다. 롤업 처리는, 다중의 입력 요소(이 컴포넌트(604)에 의해 수행되는 롤업 처리에 대한 순차적인 통계치)로부터 정보를 조합하는 과정과, 조합된 입력 요소의 대신에 단일의 출력 요소를 생성하는 과정을 포함한다. 수집 링크 심볼(606)은 병렬 컴포넌트의 임의의 다중 분할로부터 직렬 컴포넌트에 대한 단일의 데이터 플로우로의 데이터 플로우의 조합 또는 "수집"을 나타낸다. 전역적인 롤업 시퀀스 통계는 다중의 분할로부터의 "국부적인" 시퀀스 통계치를, 모든 분할로부터의 레코드를 나타내는 시퀀스 통계치의 단일의 "전역적인" 수집에 조합시킨다. 그 결과로서의 시퀀스 통계치는 임시 파일(610)에 저장될 수 있다.
도 6은 국부적인 롤업 시퀀스 통계 컴포넌트(604) 및 전역적인 롤업 시퀀스 통계 컴포넌트(608)에 의해 수행되는 롤업 처리를 포함하여, 롤업 처리를 수행하기 위한 처리(700)의 예에 대한 흐름도이다. 이 처리(700)는 입력 요소를 수신함으로써 개시한다(702). 이 처리(700)는 축적되는 정보를 갱신하고(704), 축적할 요소가 추가로 더 있는지 여부를 판정한다(706). 축적할 요소가 더 있다면, 처리(700)는 다음 요소를 수신하고(702), 정보를 갱신한다(704). 축적할 요소가 더 이상 없다면, 처리(700)는 축적된 롤업 정보에 기초하여 출력 요소를 완성한다(708). 롤업 처리는 요소의 그룹을 단일의 요소로 통합하고, 요소의 그룹에 대한 집합적인 특성(aggregate property)(예컨대, 이들 요소의 값들의 통계치)을 판정하는데 이용될 수 있다.
라운드-로빈(순환 할당)에 의한 분할 컴포넌트(612)는 "입력 데이터 세트" 컴포넌트(402)의 단일 또는 다중 분할로부터 레코드를 취하고, 다수의 병렬 프로세서 및/또는 컴퓨터(예컨대, 사용자에 의해 선택되는 것) 중의 레코드를 재분할하여, 프로세서 및/또는 컴퓨터 중에서의 작업 로드에 대한 균형을 맞출 수 있다. 교차 연결 링크 심볼(614)은 데이터 플로우(링크된 컴포넌트(612)에 의해 수행된 것)의 재분할을 나타낸다.
규격화(canonicalize) 컴포넌트(616)는, 레코드의 플로우를 받아들이고, 입력 레코드에서의 각각의 필드에 대한 값을 나타내는 필드/값의 쌍을 포함하는 센서스 요소의 플로우를 전달한다(10개의 필드를 가진 입력 레코드는 10개의 센서스 요소의 플로우를 제공함). 각각의 값은 사람이 읽을 수 있는 정규화된(즉, 미리 정해진 포맷에 따라) 문자열 표현으로 변환된다. 또한, 센서스 요소에는, 그 값이 유효한지 여부와 그 값이 널(null) 값인지 여부(즉, 미리 정해진 "널" 값에 대응함)를 나타내는 플래그가 포함된다. 센서스 요소는 동일한 필드에 대해 동일한 값의 발생을 (각각의 분할에 대해)받아들이고, 이들을 발생 횟수의 카운트를 포함하는 하나의 센서스 요소에 조합하는 국부적인 롤업 필드/값 컴포넌트에 제공된다. 규격화 컴포넌트(616)의 다른 출력은, 모든 분할에 대해 수집되고 롤업 총합 카운트 컴포넌트(618)에 조합된, 필드 및 값의 전체 개수의 카운트값이다. 전체 카운트는 데이터 세트 프로파일(216)에 로딩하기 위한 임시 파일(620)에 저장된다.
도 7은 필드/값의 쌍을 포함하는 센서스 요소의 플로우를 생성하기 위하여, 모두가 동일한 필드를 갖지 않아도 되는 조건부 레코드를 처리할 수 있는 규격화 컴포넌트에 의해 수행되는 처리(710)의 일례를 나타내는 흐름도이다. 이 처리(710)는 새로운 레코드를 획득(712)함으로써 개시하는 중첩 루프를 수행한다. 각각의 레코드에 대하여, 처리(710)는 그 레코드 내의 필드를 획득(714)하고, 그 필드가 조건부 필드인지 여부를 판정(716)한다. 필드가 조건부이면, 처리(710)는 그 필드가 그 레코드에 대해 존재하는지 여부를 판정(718)한다. 필드가 존재한다면, 처리(710)는 그 필드에 대한 레코드의 값을 규격화하고, 필드/값의 쌍을 포함하는 대응 출력 요소를 생성한다(720). 만일 필드가 존재하지 않는다면, 처리(710)는 다른 필드가 존재하는지 여부를 판정(722)하든지 또는 다른 레코드가 존재하는지 여부를 판정(722)하는 단계로 진행한다. 필드가 조건부가 아니라면, 처리(710)는 그 필드에 대한 레코드의 값(널 값을 포함할 수 있음)을 규격화(720)하고, 다음 필드 또는 레코드에 대한 처리를 수행한다.
필드/값 단위의 분할 컴포넌트(624)는 필드 및 값에 의한 센서스 요소를 재분할함으로써, 전역적인 필드/값 컴포넌트(626)에서 수행되는 롤업 처리가, 프로파일링된 레코드 내에 포함되는 각각의 고유한 필드/값의 쌍에 대해 단일의 센서스 요소에서의 전체 발생 카운트를 생성하기 위해 상이한 분할에서 산출된 발생을 가산할 수 있다. 전역적인 롤업 필드/값 컴포넌트(626)는, 이들 센서스 요소를, 센서스 파일 컴포넌트(410)에 의해 표시되는 병렬 파일에 대해 다중의 분할로 처리한다.
도 5b는 프로파일링 그래프(400)의 센서스 분석 컴포넌트(412)를 구현하는 서브 그래프(630)를 나타내는 도면이다. 필드 단위의 분할 컴포넌트(632)는 센서스 파일 컴포넌트(410)로부터 센서스 요소의 플로우를 판독하고, 동일한 필드(그러나 값은 상이함)를 가진 센서스 레코드가 동일한 분할에 있도록 하는 필드에 기초하는 해시 값(hash value)에 따라 센서스 요소를 재분할한다. 문자열, 숫자, 날짜 컴포넌트로의 분할 컴포넌트(634)는 센서스 요소의 값의 타입에 따라 센서스 요소를 추가로 분할한다. 문자열(롤업 문자열 컴포넌트(636)), 숫자(롤업 숫자 컴포넌트(638)), 또는 날짜/날짜 및 시간(롤업 날짜 컴포넌트(640))에 해당하는 값에 대해, 상이한 통계치가 산출된다(롤업 처리를 이용함). 예를 들어, 문자열에 대해서가 아니라 숫자에 대해 평균 및 표준 편차를 산출하는 것이 적절할 수 있다.
결과는 모든 분할로부터 수집되며, 연산 히스토그램/십분위수 정보 컴포넌트(642)는, 버킷 컴포넌트(654)을 산출하기 위하여 히스토그램(예컨대, 각각의 필드에 대한 최대값 및 최소값)을 구성하는데 유용한 정보와, 십분위수 컴포넌트(652)를 산출하기 위하여 십분위수 통계치(예컨대, 각 필드에 대한 값의 수)를 산출하는데 유용한 정보를 제공한다. 히스트그램 및 십분위수 통계치를 생성하는 서브 그래프(630)의 컴포넌트는, 연산 히스토그램/십분위수 정보 컴포넌트(642)(단계 분리 선(644)의 위쪽)가 실행을 완료한 후에 실행된다.
서브 그래프(630)는 십분위수 경계(예컨대, 10%, 20% 이상의 값 등)에서 값의 리스트를 구성하는데, 각각의 분할 내에서의 값에 의해 센서스 요소를 분류하고(분류 컴포넌트(646) 내에서); 분류된 값에 따라 센서스 요소를 재분할하며(값 단위의 분할 컴포넌트(648) 내에서); 및 분류된(직렬) 플로우로의 요소를 연산 십분위수 컴포넌트(652)에 병합함으로써 구성한다. 연산 십분위수 컴포넌트(652)은 십분위수 경계에서의 값을 찾기 위하여 그 필드에서의 값을 총합한 수의 10분의 1에 해당하는 그룹에서의 각각의 필드에 대해 분류된 값을 카운트한다.
서브 그래프(630)는 각각의 일괄 값(또는 "버킷"(bucket))을 정의하는 값을 산출하며, 동일한 버킷(국부적인 롤업 히스토그램 컴포넌트(656) 내)에 속하는 각각의 파티션 내의 값을 카운트하고, 모든 파티션(전역적인 롤업 히스토그램 컴포넌트(658) 내)로부터 각각의 버킷 내의 값을 카운트함으로써, 각각의 필드에 대해 히스토그램을 구성한다. 필드 프로파일 부분 조합 컴포넌트(660)는, 히스토그램, 십분위수 통계치, 및 임시 파일(610)로부터의 시퀀스 통계치를 포함하여, 각각의 필드 프로파일에 대한 모든 정보를, 필드 프로파일 컴포넌트(414)에 수집한다. 도 5c는 프로파일링 그래프(400)의 표본 작성 컴포넌트(418)를 구현하는 서브 그래프(662)를 나타내는 도면이다. 이 서브 그래프(600)에서, 라운드-로빈에 의한 분할 컴포넌트(664)는 입력 데이터 세트(402)의 단일 또는 다중의 파티션으로부터 레코드를 취하고, 프로세서 및/또는 컴퓨터 중에서 작업 부하의 균형을 맞추기 위하여 다수의 병렬 프로세서 및/또는 컴퓨터 중에서 레코드를 재분할한다.
검색 및 선택 컴포넌트(666)는, 필드 프로파일 컴포넌트(414)로부터의 정보를 이용하여, 드릴다운 탐색을 위해 사용자에 의해 선택될 수 있는 사용자 인터페이스(116)에 나타나는 값에 레코드가 대응하는지 여부를 판정할 수 있다. 사용자 인터페이스(116)에 나타나는 값의 각각의 타입은 상이한 "표본 타입"에 대응한다. 레코드에서의 값이 표본 타입에 대응한다면, 검색 및 선택 컴포넌트(666)는 표본 타입을 표현하기 위하여 레코드가 선택되었는지 여부를 판정하는 랜덤 선택 번호를 산출한다.
예를 들어, 특정의 표본 타입의 표본 레코드가 전부 5개인 경우, 선택 번호가 (단일 파티션 내의 특정의 표본 타입에 대해)지금까지 나타난 5개의 가장 큰 수 중 하나인 경우, 대응하는 레코드는 드릴다운 탐색에 대응하는 값을 나타내는 정보와 함께 출력으로서 전달된다. 이러한 구성에 의하면, 임의의 표본 타입 중 처음 5개의 레코드는 다음 컴포넌트와, 지금까지 나타난 5개의 가장 큰 선택 번호 중 하나를 갖는 임의의 다른 레코드로 자동으로 전달된다.
다음 컴포넌트는, 표본 타입에 따라 레코드를 재분할하는 표본 타입 컴포넌트(668)에 의한 파티션이 됨으로써, 분류 컴포넌트(670)가 각각의 표본 타입 내의 선택 번호에 의해 분류할 수 있게 된다. 스캔 컴포넌트(672)는 각각의 표본 타입에 대한 가장 큰 선택 번호(모든 파티션 중에서)로 5개의 레코드를 선택한다. 기록/링크 표본 컴포넌트(674)는 표본 레코드 파일(420)에 이들 표본 레코드를 기록하고, 이 레코드를 필드 프로파일 컴포넌트(414) 내의 대응하는 값에 링크시킨다.
로드 메타데이터 저장 컴포넌트(416)는 임시 파일 컴포넌트(620)로부터의 데이터 세트 프로파일을 메타데이터 저장부(112) 내의 데이터 세트 프로파일(216) 오브젝트에 로딩하고, 필드 프로파일 컴포넌트(414)로부터의 각각의 필드 프로파일을 메타데이터 저장부(112) 내의 필드 프로파일(222) 오브젝트에 로딩한다. 사용자 인터페이스는 데이터 세트에 대한 프로파일링 결과를 검색하여, 사용자 인터페이스(116)에 의해 생성되는 스크린상에 이 결과를 표시하여 사용자(118)에게 제시한다. 히스토그램에서의 바와 연관되는 특정의 레코드를 탐색하기 위하여, 예컨대 드릴다운 성능이 제공될 수 있다.
도 8a~8c는 프로파일링 결과를 나타내는 사용자 인터페이스 화면 출력의 예를 나타내는 도면이다. 도 8a는 데이터 세트 프로파일(216)로부터의 결과를 나타낸다. 프로파일링된 필드와 연관된 특성의 요약 자료(804)와 함께, 데이터 세트에 대해 다양한 총합(802)이 전체적으로 도시되어 있다. 도 8b 및 8c는 필드 프로파일(222)로부터의 결과를 나타낸다. 최대 공통 값(806), 최대 공통 무효 값(808)과 같은 값의 선택이 다양한 형태로 표시된다. 이러한 형태에는, 값을 사람이 판독할 수 있는 문자열로서의 그 자체의 값(810), 값이 발생하는 총 카운트(812), 값의 총수의 비율(814)로서의 발생, 및 바 차트(bar chart)(816)가 있다. 값의 히스토그램(818)은 제로 카운트를 갖는 버킷을 포함하여, 값의 범위에 걸치는 다중 버킷의 각각에 대한 바를 나타내는 것이다. 십분위수 경계(820)도 표시된다.
5. 예(examples)
5.1 데이터 발견
도 9는 데이터 세트를 프로파일링하는 과정(900)을 나타내는 것으로서, 데이터 세트를 다른 처리에 이용하기 전에 그 내용을 발견하기 위한 과정을 나타내는 흐름도이다. 이 과정(900)은 자동으로(예컨대, 스케줄링 스크립트에 의해) 또는 수동으로(예컨대, 단말기 사용자에 의해) 수행될 수 있다. 이 과정(900)은 제공되 는 정보 또는 기존의 메타데이터에 기초하여 레코드 포맷(904) 및 검증 설정 규칙(906)을 선택적으로 설정할 수 있다. 데이터베이스 테이블과 같은 몇몇 타입의 데이터의 경우에는, 디폴트 레코드 포맷과 검증 규칙이 이용될 수 있다. 이 과정(900)은, 레코드 포맷을 세분화(910)하거나, 개시 프로파일의 결과에 기초하여 검증 규칙을 세분화(912)할 수 있다. 프로파일링 옵션이 변경되었으면, 과정(900)은 새로운 옵션을 이용하는 데이터에 대해 다른 프로파일을 실행시켜야 하는지 여부를 판정(914)하고, 데이터 세트에 관한 정보를 프로파일링으로부터 충분히 획득(반복해서도 가능)한 경우에 데이터 세트를 처리(916)한다. 이 처리 과정은 프로파일링으로부터 획득된 정보를 이용하여 하나 이상의 데이터 시스템으로부터 직접 판독될 수 있다.
5.2 품질 테스트
도 10은 데이터 세트를 프로파일링하는 과정(1000)을 나타내는 것으로서, 데이터 세트를 변환해서 데이터 저장부에 로딩하기 전에 그 품질을 테스트하는 과정(1000)의 예를 나타내는 흐름도이다. 이 과정(1000)은 자동으로 또는 수동으로 수행될 수 있다. 데이터 세트의 품질을 테스트하기 위한 규칙은 데이터 세트의 사전 지식으로부터 및/또는 유사한 데이터 세트(예컨대, 테스트할 데이터 세트와 동일한 소스로부터의 데이터 세트)에서 수행되는 과정(900)과 같은 프로파일링 과정의 결과로부터 나온다. 이 과정(1000)은 데이터를 반입 또는 처리하기 전에 사업 상대로부터 제공된 주기적(예컨대, 월단위)인 데이터를 프로파일하는, 예컨대 사업자가 이용할 수 있다. 이에 의하면, 사업자는 "불량한" 데이터(예컨대,임계값보다 큰 무효 값의 퍼세트를 가진 데이터)를 검출할 수 있기 때문에, 원상태로 되돌리는 것이 어려울 수 있는 동작에 의해 기존의 데이터 저장을 "오염"시키지 않게 된다.
이 과정(1000)은, 먼저 런타임 환경 내의 액세스 가능한 하나 이상의 데이터 시스템에 대해 테스트되는 데이터 세트를 식별한다(1002). 이후, 과정(1000)은 데이터 세트(또는 데이터 세트의 서브세트)에 대해 프로파일을 실행(1004)하고, 프로파일의 결과에 기초하여 품질 테스트를 수행(1006)한다. 예를 들어, 데이터 세트에서의 특정의 공통 값이 발생하는 비율이, 이전 데이터 세트에서의 공통 값의 발생 비율(이전의 프로파일링 실행에 기초함)에 비교될 수 있으며, 만일 이 비율이 10% 이상 차이가 난다면, 품질 테스트는 실패한다. 이 품질 테스트는 일관성 있게 발생하는 것으로 알려진(예컨대, 10%) 일련의 데이터 세트에서의 값에 적용될 수 있다. 이 과정(1000)은 품질 테스트의 결과를 판정(1008)하고, 실패시에는 플래그(예컨대, 사용자 인터페이스 프롬프트 또는 로그 파일에서의 엔트리)를 생성(1010)한다. 품질 테스트가 통과되면, 과정(1000)은 하나 이상의 데이터 시스템으로부터 직접 판독되며(프로파일로부터의 정보를 이용할 수 있음),데이터 세트로부터의 데이터를 데이터 저장부에 로딩(1012)한다. 예를 들어, 이 과정은 다른 데이터 세트를 식별(1002)함으로써 반복될 수 있다.
5.3 코드 생성
프로파일링 모듈(100)은 데이터 세트로부터 레코드의 플로우를 처리하는데 이용될 수 있는 그래프 컴포넌트와 같은 실행가능한 코드를 생성할 수 있다. 생성된 컴포넌트는 프로파일링 그래프(400)의 소거 옵션과 유사하게, 유효 레코드만을 반출하도록 하는 입력 레코드를 필터링할 수 있다. 예를 들어, 사용자는 소거 컴포넌트가 프로파일링 실행의 완료시에 생성되어야 한다는 것을 나타내는 프로파일링 옵션을 선택할 수 있다. 컴포넌트를 구현하기 위한 코드는 파일 로케이션(사용자에 의해 지정됨)으로 제공된다. 생성된 소거 컴포넌트는, 프로파일링 실행 동안 메타데이터 저장부(112)에 저장된 정보를 이용하여 프로파일링 모듈(100)과 동일한 런타임 환경에서 실행된다.
6. 조인트 필드 분석
프로파일링 모듈(100)은 하나 이상의 필드 그룹 내의 관계에 대한 분석을 선택적으로 수행할 수 있다. 예를 들어, 프로파일링 모듈(100)은 한 쌍의 필드 중 2개의 필드 사이에서 분석을 수행할 수 있으며, 이 한 쌍의 필드는 동일한 또는 상이한 데이터 세트가 될 수 있다. 마찬가지로, 프로파일링 모듈은 다수의 필드 쌍에 대해 분석을 수행할 수 있으며, 다른 데이터 세트 내의 모든 필드로 하나의 데이터 세트에 있는 모든 필드를 분석하거나, 동일한 데이터 세트 내의 하나 거른 필드(every other field)로 하나의 데이터 세트 내의 모든 필드를 분석함으로써 수행될 수 있다. 상이한 데이터 세트에 있는 2개의 필드에 대한 분석은, 이들 필드에서의 2개의 필드에 대한 결합 연산(join operation)의 특성과 관련되어 있으며, 이에 대하여 더 상세하게 설명한다.
조인트 필드 분석에 대한 첫번째 방법으로서, 결합 연산은 2개의 데이터 세트(예컨대, 파일 또는 테이블)에 대해 수행된다. 이하의 섹션 6.1에서 설명하는 다른 방법에서는, 센서스 작성 컴포넌트(406)가 데이터 세트에 대해 센서스 파일을 생성한 후, 센서스 파일에 있는 정보가 프로파일링된 2개의 상이한 데이터 세트에서의 필드 사이에서, 또는 프로파일링된 동일한 데이터 세트(또는 센서스 파일이 존재하는 임의의 다른 데이터 세트)에서의 필드 사이에서 조인트 필드 분석을 수행하는데 이용될 수 있다.
발견되는 관계에 대한 3가지 타입은, "공통 도메인" 관계, "유효한 결합" 관계, 및 "외래 키" 관계이다. 필드 쌍은, 조인트 필드 분석의 결과가 이하 설명하는 바와 같이 소정의 기준에 부합하는 경우에 이들 3가지 타입의 관계 중 하나를 갖는 것으로 분류된다.
조인트 필드 분석은 키 필드(key field)로서 2개의 필드를 이용하여 수행되는 결합 연산으로부터 생성되는 레코드의 개수와 같은 컴파일 정보를 포함한다. 도 11a 및 11b는 2개의 데이터베이스 테이블로부터 레코드에 대해 수행되는 결합 연산의 예를 나타낸다. 테이블 A 및 테이블 B의 각각은 "필드 1" 및" 필드 2"의 2개의 필드와 4개의 레코드를 포함한다.
도 11a를 참조하면, 연결 컴포넌트(1100)는 테이블 A에 있는 레코드의 키 필드로부터의 값을, 테이블 B에 있는 레코드의 키 필드로부터의 값과 비교한다. 테이블 A의 경우, 키 필드는 필드 1이며, 테이블 B의 경우, 키 필드는 필드 2이다. 따라서, 연결 컴포넌트(1100)는 테이블 A로부터의 값(1102), 즉 필드 1(A 1)을 테이블 B로부터의 값(1104), 즉 필드 1(B 1)과 비교한다. 연결 컴포넌트(1100)는 테이블로부터 입력 레코드(1110)의 플로우를 받아들이고, 키 필드 값의 비교에 기초하여, 새롭게 연결된 테이블, 즉 테이블 C를 형성하는 연결 레코드(1112)의 플로우 를 형성한다. 연결 컴포넌트(1100)는 입력 플로우에서의 키 필드 값에 부합하는 각각의 쌍에 대한 키 필드 값과 매칭하는 레코드를 연쇄적으로 연결한 연결 레코드를 생성한다.
연결된 출력 포트(1114)에 존재하는 특정한 키 필드 값을 가진 연결 레코드의 개수는 각각의 입력에서의 키 필드 값을 가진 레코드의 수에 대한 데카르트 곱(Cartesian product)이다. 도시된 예에서, 레코드(1110)의 입력 플로우는 이들 각각의 입력 필드의 값으로 표시되어 있으며, 연결 레코드의 출력 플로우는 부합된 값으로 표시되어 있다. 2개의 "X" 값이 2개의 입력 플로우에 각각 표시되어 있기 때문에, 출력 플로우에는 4개의 "X" 값이 있다. 다른 입력 플로우에서의 임의의 레코드와 부합하지 않는 키 필드 값을 갖는 하나의 입력 플로우는, 테이블 A 및 테이블 B의 입력 플로우에 대해, "거부된" 출력 포트(1116A, 1116B)로 나간다. 이 예에서, "W" 값은 거부된 출력 포트(1116A)에 표시된다.
프로파일링 모듈(100)은 2개의 필드 사이의 관계를 분류하기 위한 결합 값 및 거부 값의 통계치를 컴파일(compile)한다. 이 통계치는 2개의 필드에서의 값의 발생을 분류하는 발생 차트(1118)에 요약된다. "발생 횟수"는 필드에서 출현하는 값의 횟수를 나타낸다. 차트의 열은, 제1 필드(본 예에서는 테이블 A로부터)에 대한 발생 횟수 0, 1, 및 N(여기서, N>1)에 대응하고, 차트의 행은 제2 필드(본 예에서는 테이블 B로부터)에 대한 발생 횟수 0, 1, 및 N(여기서, N>1)에 대응한다. 차트에 있는 박스는 대응하는 발생 패턴, 즉 "열 발생 횟수"×"행 발생 횟수"와 연관된 카운트를 포함한다. 각각의 박스는 2개의 카운트, 발생 패턴을 갖는 개별 값의 수와, 이들 값에 대해 개별적으로 연결된 레코드의 총수를 포함한다. 일부의 경우에, 값들이 2개의 필드에서 발생하고(1×1, 1×N, N×1, 또는 N×N의 발생 패턴을 가짐), 그 외의 경우에는, 값이 단지 하나의 필드에서 발생한다(1×0, 0×1, N×0, 또는 0×N의 발생 패턴을 가짐). 카운트는 콤마로 분리된다.
발생 차트(1118)는, 포트(1116A)에 연결 레코드(1112)와 거부 레코드에 대응하는 카운트를 포함한다. 거부 출력 포트(1116A)에 있는 값 "W"는 단일 값, 및 단일 레코드를 나타내는 발생 패턴 1×0에 해당하는 박스 내의 "1, 1" 카운트에 대응한다. 값 "X"는 발생 패턴 N×N에 해당하는 박스 내의 "1, 2" 카운트에 대응하는데, 이는 값 "X"가 각각의 입력 플로우에서 2번 나타나고 총 4개의 연결 레코드가 나타나기 때문이다. 값 "Y"는 발생 패턴 1×N에 해당하는 박스 내의 "1, 2" 카운트에 대응하는데, 이는 값 "X"가 제1 입력 플로우에서 한번 제2 입력 플로우에서 2번 나타나고 총 2개의 연결 레코드가 나타나기 때문이다.
도 11b는 도 11a와 유사하지만, 상이한 키 필드 쌍을 갖는 예를 나타낸다. 테이블 A의 경우 키 필드는 필드 1이고, 테이블 B의 경우 키 필드는 필드 2이다. 따라서, 연결 컴포넌트는 테이블 A로부터의 값(1102), 즉 필드 1(A 1)을 테이블 B로부터의 값(1120), 즉 필드 2(B2)와 비교한다. 이 예는 각각의 필드에 대해 입력 레코드(1124)의 플로우에 대응하는 카운트를 가진 발생 차트(1122)를 포함한다. 도 11a의 예와 유사하게, 발생 패턴 0×1에 해당하는 박스 내의 "1, 1" 카운트에 대응하는 단일의 거부된 값 "Z"가 존재한다. 그러나, 본 예에서는 2개의 값 "W" 및 "Y"가 있으며, 이 값들은 발생 패턴 1×1에 해당하는 박스 내의 "2, 2" 카운트 에 대응하는, 발생 패턴 1×1을 가지며, 이는 2개의 값과 2개의 연결 레코드가 존재하기 때문이다. 값 "X"는 하나의 값과 2개의 연결 레코드를 포함하며, 발생 패턴 M×1에 해당하는 박스 내의 "1, 2" 카운트에 대응한다.
발생 차트 내의 숫자들로부터 다양한 총합이 산출된다. 이들 총합의 일부는 테이블 A 및 테이블 B에서 발생하는 별개의 키 필드 값의 총합, 테이블 A에서 발생하는 별개의 키 필드 값의 총합, 테이블 B에서 발생하는 별개의 키 필드 값의 총합, 및 총수의 공 값(즉, 키 필드의 단일 레코드에서만 발생하는 값)을 포함한다. 이들 총합에 기초한 일부 통계치는, 필드 쌍이 상기 언급한 3가지 타입의 관계 중 하나를 갖는지 여부를 판정하는데 이용된다. 이 통계치는 별개의 또는 고유한 값을 갖는 필드에서의 총 레코드의 비율, 특정의 발생 패턴을 갖는 총 레코드의 비율, 및 각 필드에서의 "상대 값 중복"(relative value overlap)을 포함한다. 이 상대 값 중복은 다른 필드에서도 발생하는 하나의 필드에서 발생하는 별개의 값의 비율이다. 필드 쌍이 3가지 타입의 관계(반드시 상호 배타적일 필요는 없다) 중 하나를 갖는지 여부를 판정하기 위한 기준은 다음과 같다.
"외래 키" 관계 - 제1 필드는 높은 상대 값 중복(예컨대, 99% 초과)을 가지며, 제2 필드는 고유 값의 높은 비율(예컨대, 99% 초과)을 갖는다. 제2 필드는 주요 키가 될 수 있으며, 제2 필드는 잠재적으로 주요 키의 외래 키가 된다.
"유효한 결합" 관계 - 하나 이상의 필드는 거부 레코드의 낮은 비율(예컨대, 10% 미만)을 가지며, 발생 패턴 N×N을 갖는 개별적인 연결 레코드의 비율은 낮은 비율(예컨대, 1% 미만)이다.
"공통 도메인" 관계 - 하나 이상의 필드가 높은 상대 값 중복(예컨대, 95% 초과)을 갖는다.
필드 쌍이 외래 키 관계와 유효한 결합 관계 또는 공통 도메인 관계를 갖는다면, 외래 키 관계가 보고된다. 필드 쌍이 유효한 결합 관계 및 공통 도메인 관계를 갖지만 외래 키 관계를 갖지 않는다면, 유효한 결합 관계가 보고된다.
6.1 센서스 결합
도 12a를 참조하면, 테이블에 대해 결합 연산을 실질적으로 수행하기 위한 대안으로서, 센서스 결합 컴포넌트(1200)는 테이블 A 및 테이블 B로부터 필드를 분석하고, 테이블에 대한 센서스 데이터로부터 "센서스 결합" 연산을 수행함으로써, 발생 차트에 대한 통계치를 컴파일한다. 각각의 센서스 레코드는 그 필드에 있는 값의 발생 카운트와, 필드/값으로 된 쌍(이하 "필드/값 쌍"이라고 함)을 갖는다. 각각의 센서스 레코드는 고유한 필드/값 쌍을 갖기 때문에, 주어진 키 필드의 경우, 센서스 결합 컴포넌트(1200)의 입력 플로우에서의 값은 고유한 값이다. 도 12a의 예는 키 필드 A1, B1(도 11a에 도시됨)로 된 쌍에 대한 결합 연산에 대응한다. 결합 연산에서의 키 필드에 대응하는 센서스 레코드를 "필드 1"(A1)을 선택하는 필터(1202) 및 "필드 1"(B1)을 선택하는 필터(1204)와 비교함으로써, 센서스 결합 컴포넌트(1200)는 테이블 A 및 테이블 B로부터 개별적인 레코드의 키 필드를 비교하는 연결 컴포넌트(1100)보다 비교 횟수를 훨씬 작게 할 수 있다. 도 12b의 예는 키 필드 A1, B1(도 11b에 도시됨)로 된 쌍에 대한 결합 연산에 대응하고, 필터(1206)는 "필드 1"(A1)을 선택하며, 필터(1208)는 "필드 2"(B2)을 선택한다. 선 택된 센서스 레코드(1210-1218)는 필드/값 쌍에서의 각각의 필드에 대한 값과, 그 값에 대한 발생 카운트로 표시된다.
센서스 결합 컴포넌트(1200)가 2개의 입력 센서스 레코드(1210-1218) 내의 값들 사이에서의 부합 관계(matching)를 찾는다면, 출력 레코드는 부합된 값, 2개의 카운트에 기초한 대응하는 발생 패턴, 및 키 필드 쌍(2개의 카운트의 곱에 해당)에 대한 결합 연산에서 생성되는 레코드의 총수를 포함한다. 값에 대한 부합을 찾지 못한다면, 값은 대응하는 발생 패턴과 레코드의 총수(단일 입력 레코드에서의 단일 카운트에 해당)를 가진 출력이 된다. 센서스 결합 컴포넌트(1200)의 출력 레코드 내의 정보는 결합 연산에 대해 발생 차트 내의 모든 카운트를 컴파일하기에 충분하다.
도 12a의 예에서, 값 "W"는 발생 패턴이 1×0이고 총합이 1인 출력이 표시되며, 값 "X"는 발생 패턴이 N×N이고 총합이 4인 출력에 표시되고, 값 "Y"는 발생 패턴이 1×N이고 총합이 2인 출력에 표시된다. 이 정보는 도 11a의 발생 차트(1118)에 있는 정보에 대응한다. 도 12b의 예에서, 값 "W"는 발생 패턴이 1×1이고 총합이 1인 출력이 표시되며, 값 "X"는 발생 패턴이 N×1이고 총합이 2인 출력에 표시되고, 값 "Y"는 발생 패턴이 1×1이고 총합이 2인 출력에 표시되며, 값 "Z"는 발생 패턴이 0×1이고 총합이 1인 출력이 표시된다. 이 정보는 도 11b의 발생 차트(1122)에 있는 정보에 대응한다.
6.2 확장 레코드
단일 센서스 결합 연산에서의 다중의 필드 쌍에 대한 조인트 필드 분석은 센 서스 레코드에 기초하는 "확장 레코드"(extended records)의 생성을 포함한다. 도 13에 도시된 예에서, 센서스 결합 컴포넌트(1200)는 키 필드 A1, B1 및 A1, B2의 2개 쌍의 조인트 필드 분석에 대한 레코드를 비교하고, 도 12a, 12b에 도시된 조인트 필드 분석을 조합한다. 확장 레코드는 센서스 레코드에 있는 값과 연결되는 키 필드 쌍에 대한 고유 식별자를 연쇄 연결하고, 센서스 레코드와 동일한 발생 카운트를 유지함으로써 센서스 레코드로부터 생성된다. 조인트 필드 분석은 다수의 다른 필드와 연결되는 필드의 결과를 포함하고, 다수의 확장 레코드는 그 필드에서의 각각의 값에 대해 생성된다. 예를 들어, 센서스 레코드(1210)는 2개의 확장 레코드(1301, 1302)에 대응하며, 값 "W"는 식별자 "A1B1" 및 "A1B2"와 각각 연쇄 연결된다. 센서스 결합 컴포넌트(1200)는, 값 "WA1B1"로 센서스 레코드를 처리하는 것과 마찬가지로, 확장 레코드(1301)를 처리한다. 마찬가지로, 센서스 레코드(1211)는 2개의 확장 레코드(1303, 1304)에 대응하며, 센서스 레코드(1212)는 2개의 확장 레코드(1305, 1306)에 대응한다.
도 13의 조인트 필드 분석에 있어서, 필드 B1은 다른 하나의 필드(A1)에만 결합되기 때문에, 각각의 센서스 레코드(1213, 1214)는 단일의 확장 레코드(1307, 1308)에 각각 대응한다. 마찬가지로, 필드(B2)는 다른 하나의 필드(A1)에 결합되기 때문에, 각각의 센서스 레코드(1215-1218)는 단일의 확장 레코드(1309-1312)에 대응한다. 각각의 확장 레코드는 고유의 필드 식별자와 연쇄 연결된 최초의 값에 기초한 값을 포함한다.
도 14를 참조하면, 확장 컴포넌트(1400)는, 어느 필드가 조인트 필드 분석에 서의 어떤 다른 필드와 연결되는지를 나타내는 연결 정보(1401)에 기초하여, 확장 레코드를 생성하기 위하여 입력 센서스 레코드를 처리한다. 이 예에서, 연결 정보(1401)는 테이블 T1에 대한 센서스 데이터로부터의 필드 F1(4개의 센서스 레코드(1402)를 가짐)이 4개의 다른 필드, 즉 테이블 T2에 대한 센서스 데이터로부터의 필드 F1(2개의 센서스 레코드(1404)를 가짐), 테이블 T2에 대한 센서스 데이터로부터의 필드 F2(2개의 센서스 레코드(1406)를 가짐), 테이블 T3에 대한 센서스 데이터로부터의 필드 F1(2개의 센서스 레코드(1408)를 가짐), 테이블 T3에 대한 센서스 데이터로부터의 필드 F2(2개의 센서스 레코드(1410)를 가짐)와 연결되는 것을 나타낸다. 확장 컴포넌트(1400)로 제공되는 센서스 레코드(1412)는 필드 F1과 값 Vi를 갖는 테이블 T1에 대한 센서스 레코드로부터의 4개의 센서스 레코드(1402) 중 하나를 나타낸다. 여기서, i는 1, 2, 3, 또는 4이다. 확장 컴포넌트(1400)는 입력 센서스 레코드(1412)에 대해 4개의 확장 레코드(1413-1416)를 생성한다.
센서스 결합 컴포넌트(120)는 동일한 이름을 가진 상이한 테이블에서의 필드를 포함하는 필드에 대한 고유 식별자를 이용한다. 확장 레코드(1413)는 필드에 대한 센서스 데이터가 생성되는 테이블(또는 파일이나 다른 데이터 소스)과 연결되는 필드에 대한 식별자와 최초의 값 Vi의 연쇄 연결에 해당하는 값 c(T1, F1, T2, F1, Vi)를 갖는다. 테이블에 식별자를 포함함으로써, 확장 레코드(1413)의 값 c(T1, F1, T2, F1, Vi)로부터 구분가능한 값 c(T1, F1, T3, F1, Vi)를 가지며, 테이블 T2 및 T3은 동일한 필드명 F1을 갖는다. 이에 대한 대안으로서, 고유 번호가 각각의 필드에 할당될 수 있으며 필드명 대신에 사용될 수 있다.
6.3 조인트 필드 분석 그래프
도 15a, 15b는 데이터 소스(30) 내의 소스(예컨대, 테이블 또는 파일)에서 선택된 필드의 선택적인 조인트 필드 분석을 수행하기 위해 프로파일링 모듈(100)에 의해 이용되는 그래프를 나타낸다. 사용자(118)는 조인트 필드 분석 없이 프로파일링을 수행하는 옵션을 포함하는, 프로파일링 및 조인트 필드 분석에 대한 옵션을 선택한다. 사용자(118)는 서로 쌍으로 된 2개의 특정 필드, 즉 하나의 필드는 하나 거른 필드에 대해 쌍으로 되거나, 모든 필드가 하나 거른 필드에 대해 쌍으로 되는 필드를 포함하는 조인트 필드 분석에 대한 필드 쌍을 선택한다. 사용자(118)는 동일한 테이블 또는 파일 내의 필드 쌍을 허용하거나, 상이한 테이블 또는 파일로부터만 필드 쌍을 허용하는 옵션을 선택한다. 이들 옵션은 메타데이터 저장부(112)에 저장된다.
도 15a를 참조하면, 조인트 필드 분석 옵션에서 특정된 필드의 각각의 소스(예컨대, 테이블 또는 파일)에 대해, 그래프(1500)는 이들 특정된 필드에 대해 준비된 센서스 데이터(1510)를 갖는 파일을 생성한다. 그래프(1500)는 조인트 필드 분석에 포함되는 이러한 각각의 소스에 대해 한번 수행된다. 필터(1504)는 센서스 작성 컴포넌트(406)에 의해 생성되는 센서스 데이터(1502)로부터 레코드를 받아들 이고, 조인트 필드 분석을 위한 레코드를 준비한다. 필터(1504)는 이 분석에 포함되지 않는(메타데이터 저장부(112)에 저장된 사용자 옵션에 의해 결정되는 것으로) 필드에 대한 레코드를 폐기한다. 필터(1504)는 데이터 소스의 내용의 의미있는 분석(예컨대, 알고 있는 데이터 플래그)에 포함되지 않는 무효 값, 널 값, 및 그외 다른 값들을 폐기한다.
센서스 데이터(1502)에 있는 값은 센서스 작성 컴포넌트(406) 내의 규격화 컴포넌트(616)에 의해 규격화된다. 그러나, 이들 규격화된 값들은 값들의 논리적인 비교(예컨대, 리딩 또는 트레일링 스페이스를 가진 문자열이나, 리딩 또는 트레일링 제로를 갖는 숫자)에 이용되어서는 안 되는 부분을 가질 수 있다. 사용자(118)는 이들 값을 "리터럴" 또는 "논리적"으로 비교하여야 하는 옵션을 선택할 수 있다. 사용자(118)가 "리터럴" 비교를 선택하면, 센서스 레코드에 있는 값이 규격화된 형태를 유지한다. 사용자(118)가 "논리적" 비교를 선택하면, 필터(1504)는 리딩 및 트레일링 스페이스를 제거하는 것 및 숫자의 리딩 및 트레일링 제로를 제거하는 것과 같은 규칙에 따라 센서스 레코드에 있는 값을 변환시킨다.
값에 의한 분할 컴포넌트(1506)는 센서스 레코드에 있는 값에 기초하여 레코드를 재분할한다. 동일한 값을 갖는 임의의 센서스 레코드는 동일하게 분할된다. 이에 의하여, 임의의 개수의 파티션에 걸쳐 조인트 필드 분석이 병렬로 수행될 수 있다. 센서스 결합 컴포넌트(1200)는 부합 값을 갖는 입력 레코드에 대한 출력 레코드만을 생성하기 때문에, 상이한 파티션에 있는 센서스 레코드(또는 이들로부터 생성되는 임의의 확장 레코드)를 다른 것과 비교할 필요가 없게 된다.
롤업 논리 값 컴포넌트(1508)는 필터(1504)에 의해 수행되는 변환에 의한 필드/값 쌍을 부합하여야 하는 임의의 센서스 레코드를 조합한다. 이 조합된 레코드는, 조합된 모든 레코드에 대한 카운트의 합계에 해당하는 발생 카운트를 갖는다. 예를 들어, "amount, 01.00, 5"의 필드, 값, 카운트를 갖는 센서스 레코드가 "amount, 1, 5"로 변환되고, "amount, 1.0, 3"의 필드, 값, 카운트를 갖는 센서스 레코드가 "amount, 1, 3"으로 변환되면, 롤업 논리 값 컴포넌트(1508)는 이들 2개의 변환된 레코드를, "amount, 1, 8"의 필드, 값, 카운트를 갖는 단일의 레코드에 조합한다.
도 15b를 참조하면, 하나 이상의 필드가 비교될 각 쌍의 소스, 즉 소스 A 및 소스 B에 대해, 조인트 필드 분석 옵션에서 특정된 바와 같이, 그래프 1512는 각각 그래프 1500에 의해 작성된 센서스 데이터 A(1514) 및 센서스 데이터 B(1516)을 이용하여 실행한다. 2개의 확장 컴포넌트(1400)는, 소스 B의 특정 필드와 비교될 소스 A의 특정 필드를 특정한 정보(1515)와 함께, 3개 세트의 작성된 센서스 데이터로부터 레코드를 수신한다. 확장된 레코드는 비교될 필드에 대한 발생 차트에 대한 값, 발생의 패턴 및 카운트를 포함하는 레코드를 생성하는 센서스 결합 컴포넌트(1200)에 유입된다. 국부적인 롤업 결합 통계 컴포넌트(1518)는 각각의 파티션 내에서 이들 레코드의 정보를 컴파일한다. 그 후, 각종 파티션 내의 레코드가 수집되고, 전역적인 롤업 결합 통계 컴포넌트(1520)에 의해 컴파일되고, 전역적인 롤업 결합 통계 컴포넌트는 분석되는 모든 쌍의 소스 내의 필드에 대한 모든 조인트 필드 분석 통계치의 파일(1522)을 출력한다. 3가지 타입의 관계 중의 어느 것인가 가 다양한 필드 간에 잠재적으로 존재하는 조인트 필드 분석의 결과는 사용자(118)에게 제공될 수 있도록 메타데이터 저장부(112)에 로드된다. 예컨대, 사용자(118)는 이 잠재적인 관계를 이용하여 한 쌍의 필드에 대한 사용자 인터페이스(116) 상의 링크를 선택하고, 필드 쌍에 대한 발생 차트로부터의 카운트를 포함하는 상세한 분석 결과를 이용하여 사용자 인터페이스(116) 상의 페이지를 볼 수 있다.
도 15c를 참조하면, 동일한 소스(소스 C) 내의 2개의 필드에 대해 조인트 필드 분석이 수행될 때, 그래프 1524는 그래프 1500에 의해 작성된 센서 데이터 C(1526)를 이용하여 수행한다. 단일 확장 컴포넌트(1400)는, 비교될 소스 C의 특정 필드를 특정하는 정보(1528)와 함께, 작성된 센서스 데이터 C(1526)의 세트로부터 레코드를 수신한다. 확장된 레코드는 센서스 결합 컴포넌트(1200)의 양측 포트에 유입되고, 이 센서스 결합 컴포넌트(1200)는 비교될 필드에 대한 발생 차트에 대한 값, 발생의 패턴 및 카운트를 포함하는 레코드를 생성한다.
소스 C의 매 필드가 소스 C(4개의 필드 F1, F2, F3 F4를 가짐)의 하나 거른(every other) 필드와 비교될 것이라는 것을 나타내는 조인트 필드 분석 옵션의 경우에, 한 가지 방법은 조인트 정보(1528)가 12쌍의 필드(F1-F2, F1-F3, F1-F4, F2-F1, F2-F3, F2-F4, F3-F1, F3-F2, F3-F4, F4-F1, F4-F2, F4-F3)를 특정하도록 하는 것이다. 그러나, F1-F3 쌍과 F3-F1 쌍에 대하여 동일한 조작이 수행되므로, 일부 조작은 반복된다. 따라서, 다른 방법은 조인트 정보가 6개의 고유 쌍 F1-F2, F1-F3, F1-F4, F2-F3, F2-F4, F3-F4 만을 특정하도록 하는 것이다. 이 경우, 출력 파일(1530)에서의 결과치는 분석되는 6쌍에 대한 분석 결과치에서 필드의 순서를 반전시킴으로써 나머지 6개의 필드쌍에 대한 결과치를 포함하도록 증분된다.
7. 함수 종속성 분석
프로파일링 모듈(100)이 수행할 수 있는 또 다른 타입의 분석은 필드의 값 간의 함수적 관계에 대한 테스트이다. 테스트된 필드는 한 세트의 필드를 갖는 단일 테이블로부터, 또는 관련되는(예컨대, 7.3 절에서 상세하게 설명한 바와 같이 공통 키 필드를 이용한 필드 상의 연결 오퍼레이션을 통해) 복수의 소스로부터의 필드를 포함하는 "버츄얼 테이블"로부터 유래될 수 있다. 한 쌍의 필드 간의 한 가지 타입의 함수적 관계는 레코드의 한 필드에 연관된 값이 레코드의 또 다른 필드에 연관된 값에 의해 고유하게 결정될 수 있는 "함수 종속성"이다. 예컨대, 데이터베이스가 State(미국에서의 주) 필드 및 Zip Code(우편번호) 필드를 갖는다면, Zip Code 필드(예컨대, 90019)의 값은 State 필드(예컨대, CA)의 값을 결정한다. Zip Code 필드의 각각의 값은 State 필드의 고유값으로 매핑된다(즉, "다수 대 일(many-to-one)" 매핑). 함수 종속성 관계는 또한 레코드가 한 필드에 연관된 값이 레코드의 다른 필드에 연관된 값에 의해 고유하게 결정될 수 있는 서브세트의 필드 중에서도 존재할 수 있다. 예컨대, Zip Code 필드는 City(도시) 필드 및 Street(거리) 필드의 값에 의해 고유하게 결정될 수 있다.
함수 종속성은, 고유값으로 매핑되지 않는 어떠한 비율(백분율)의 예외를 갖고서, 한 필드에 연관된 값의 일부 또는 전부가 또 다른 필드의 고유값으로 매핑되는 "개략적인 함수 종속성"이 될 수도 있다. 예컨대, 일부 레코드는 특수한 값 00000에 의해 나타내지는 미지의 Zip Code를 가질 수도 있다. 이 경우, Zip Code 필드의 값 00000은 State 필드(예컨대, CA, FL 및 TX)의 둘 이상의 값으로 매핑될 수도 있다. 부정확한 값 또는 다른 오류를 갖는 레코드로 인해 예외가 발생할 수도 있다. 예외의 비율이 소정의(예컨대, 사용자에 의해 입력된) 임계치보다 더 작다면, 필드는 또 다른 필드에 함수적으로 종속되는 것으로 판정될 수도 있다.
도 16을 참조하면, 함수 종속성 또는 개략적인 함수 종속성에 대하여 테스트될 레코드(행) 및 필드(열)를 갖는 일례의 테이블(1600)이 도시되어 있다. Last Name(성) 필드는 12개의 레코드(행 1 내지 행 12)에 대응하는 12개의 값을 갖는다. 이 값들 중의 10개는 고유의 것이고, 레코드 중의 2개는 동일한 반복된 값 name_g를 갖는다. Citizenship(시티즌십) 필드는 2개의 고유값, 즉 11회 발생하는 US(미국)와 1회 발생하는 CANADA(캐나다)를 갖는다. Zip Code 필드는 State 필드에 대한 3개의 값, 즉 CA, FL 및 TX 중의 하나에 각각 대응하는 여러 값을 갖는다. Zip Code의 각각의 값은 한 레코드(행 10)에서는 FL에 대응하고 또 다른 레코드(행 12)에서는 TX에 대응하는 Zip Code 값 00000을 제외하고는 State의 값을 고유하게 결정한다.
7.1 함수 종속성 분석 그래프
도 17은 데이터 소스(30) 내의 하나 이상의 소스(예컨대, 단일 테이블 또는 파일)에서의 선택된 필드의 옵션의 함수 종속성 분석을 수행하기 위해 프로파일링 모듈(100)에 의해 사용된 그래프(1700)의 예를 도시한다. 사용자(118)는 함수 종속성 분석없이 프로파일링을 수행하는 옵션을 포함하여 프로파일링에 대한 옵션 및 함수 종속성 분석에 대한 옵션을 선택한다. 사용자(118)는 어느 쌍 또는 어느 쌍들의 필드가 함수적 관계에 대해 테스트될지를 선별할 수도 있을 것이다. 사용자(118)는 특정 필드의 데이터 소스(예컨대, 테이블 또는 파일)를 선택하며, 어느 쌍의 필드가 테스트될지를 결정하기 위해 예컨대 "전체 대 선택된 것" 또는 "선택된 것 대 선택된 것"을 선별하거나, 또는 데이터 소스 내의 모든 쌍의 필드를 테스트하기 위해 "전체 대 전체"를 선별한다. 사용자는 필드가 또 다른 필드에 관해 함수적으로 종속적인지의 여부를 결정하기 전에 함수 종속성의 정도를 결정하기 위한 임계치를 선택할 수도 있다. 예컨대, 사용자는 얼마나 많은 예외를 허용할지를 결정하기 위한 임계치(레코드의 비율로서)를 선택할 수도 있다. 이러한 옵션은 메타데이터 저장부(112)에 저장된다.
분석될 각 쌍의 필드(f1, f2)에 대해, 그래프(1700)는 함수 종속성 관계가 존재하는지의 여부를 결정하고, 함수 종속성 관계가 존재한다면, 필드 f1과 필드 f2간의 관계를 "f1이 f2를 결정함", "f2가 f1을 결정함", "일대일"(f1과 f2 간에 일대일 매핑이 존재함), 또는 "일치함"(f1이 레코드의 각각에서 f2와 동일값을 가져 일치함)으로 분류한다. 그래프(1700)는 프로파일링 모듈(100)에 의해 저장된 필드 정보(1702)를 판독하여 분석될 필드에 대한 고유 식별자를 결정한다. 쌍 형성 컴포넌트(1704)는 테스트될 필드 쌍의 각각에 대해 한 쌍의 고유 식별자를 이용하여 필드 쌍 (f1, f2)의 플로우를 생성한다. 쌍 (f1, f2)는 f1과 f2 간의 관계가 반드시 대칭인 것은 아니기 때문에 순서쌍(ordered pair)이 된다. 그러므로, 쌍 (f1, f2)와 (f2, f1) 양자는 플로우에 포함된다.
*쌍 선택 컴포넌트(1706)는 사용자에 의한 분석을 위해 선별된 필드 쌍을 선택함으로써 그래프(1700)의 나머지에 유입되는 필드 쌍을 제한한다. 쌍 선택 컴포넌트(1706)는 또한 다양한 최적화에 기초하여 그래프의 나머지에 유입되는 쌍을 제한한다. 예컨대, 필드는 이러한 쌍이 정의에 의해 "일치하는 것"으로서 분류되기 때문에 자기 자신과 쌍을 이루지 않는다. 그러므로, 쌍 (f1, f1), (f2, f2),..등은 플로우에 포함되지 않는다. 다른 최적화에 의해 하나 이상의 쌍이 플로우로부터 제거될 수도 있으며, 이에 대해서는 아래의 섹션 7.2에서 더 구체적으로 설명할 것이다.
브로드캐스트 컴포넌트(1708)는 필드 쌍의 직렬 플로우를 (가능하게는 병렬인)값 추가 컴포넌트(1718)의 파티션의 각각에 브로드캐스트 링크 심볼(1710)에 의해 표현된 바대로 브로드캐스트한다. 값 추가 컴포넌트(1718)의 각각의 파티션은 필드 쌍의 플로우(예컨대, (LastName, Citizenship), (Zip, State),...등) 및 필드/값 쌍의 플로우(예컨대, (LastName_a), (LastName, name_b), (LastName, name_c),...,(Citizenship, Canada), (Citizenship, US),...등)를 입력으로서 취한다.
필드/값 쌍을 획득하기 위해, 필터 컴포넌트(1712)는 입력 데이터 세트(input data set)(402)로부터 레코드를 추출하고, 옵션으로 필터식에 기초하여 레코드의 일부분을 제거한다. 필터 컴포넌트(1712)에서 유출되는 레코드는 라운드-로빈 컴포넌트(1714)에 의해 파티션 내로 유입된다. 라운드-로빈 컴포넌트(1714) 에 의한 파티션은 입력 데이터 세트(402)의 파티션으로부터 레코드를 취하고, 프로세서 및/또는 컴퓨터 간의 작업 부하의 균형을 맞추기 위해 다수의 병렬 프로세서 및/또는 컴퓨터 간의 레코드를 재분할한다. 규격화 컴포넌트(1716)(전술한 규격화 컴포넌트(616)와 유사함)는 레코드의 플로우를 취하고, 입력 레코드에서의 각각의 필드에 대한 값을 표현하는 필드/값 쌍의 플로우를 내보낸다. 전술한 바와 같이, 각각의 값은 규격화된, 사람이 판독 가능한 문자열 표현으로 변환된다.
값 추가 컴포넌트(1718)는 f1과 f2가 입력에서 수신된 필드 쌍 중의 하나에 대응하고, v1과 v2가 레코드 내의 이들 필드와 쌍을 이루는 값에 대응하는 f1/f2/v1/v2 4중의 플로우를 생성하기 위해 일련의 결합 연산을 수행한다. 테이블(1600)의 예에서, Last Name 필드가 FL에 대응하고, Citizenship 필드가 f2에 대응할 때, 값 추가 컴포넌트(1718)는 (LastName/Citizenship/name_a/Canada), (LastName/Citizenship/name_b/US),...,(LastName/Citizenship/name_k/US), (LastName/Citizenship/name_g/US)를 포함한 12개의 f1/f2/v1/v2 쿼드러플의 플로우를 생성한다. 값 추가 컴포넌트(1718)는 (Zip, State)에 대해 f1/f2/v1/v2 쿼드러플의 유사한 시리즈를 생성한다.
값 추가 컴포넌트(1718)는 f1/f2/v1/v2 쿼드러플의 플로우를 "국부적인 롤업 f1/f2/v1/v2" 컴포넌트(1720)에 출력하며, 이 컴포넌트(1720)는 복수의 쿼드러플을 동일한 필드 및 값 f1, f2, v1, v2로 축적하고(각각의 파티션에 대해), 이들을 입력 플로우에서의 쿼드러플의 발생의 수의 카운트를 가는 단일 쿼드러플로서 표현한다. "국부적인 롤업 f1/f2/v1/v2" 컴포넌트(1720)의 출력 플로우는 카운트를 갖는 쿼드러플(또는 "축적된 쿼드러플")로 구성된다.
"국부적인 롤업 f1/f2/v1/v2" 컴포넌트(1720)에서 발생하는 축적은 각각의 파티션 내에 있다. 그러므로, 동일한 값의 f1, f2, v1, v2를 갖는 일부 쿼드러플이 이 컴포넌트(1720)에 의해 축적되지 않을 수 있다. "f1/f2에 의한 파티션" 컴포넌트(1721)는 동일한 필드 f1, f2를 갖는 쿼드러플이 동일한 파티션에 있도록 축적된 쿼드러플의 플로우를 재분할한다. "전역적인 롤업 f1/f2/v1/v2" 컴포넌트(1722)는 고유한 축적된 쿼드러플로 구성된다. 테이블(1600)의 예에서, Zip 필드가 f1에 대응하고 State 필드가 f2에 대응할 때, 컴포넌트(1720∼1722)의 합성 효과는 다음의 6개의 축적된 쿼드러플을 생성한다: (Zip/State/90019/CA,4), (Zip/State/ 90212/CA,2), (Zip/State/33102/FL,3), (Zip/State/00000/FL,1), (Zip/State/ 77010/TX,1), (Zip/State/00000/TX,1). State 필드가 f1에 대응하고 Zip 필드가 f2에 대응할 때, 컴포넌트(1720∼1722)의 합성 효과는 다음의 6개의 축척된 쿼드러플을 생성한다: (Zip/State/CA/90019,4), (Zip/State/CA/90212,2), (Zip/State/FL/33102,3), (Zip/State/FL/00000,1), (Zip/State/TX/77010,1), (Zip/State/TX/00000,1).
한 쌍의 필드 간의 함수 종속성 관계에 대한 테스트를 작성하기 위해, "전역적인 롤업 f1/f2/v1" 컴포넌트(1724)는 공통적으로 필드 f1, f2 양자와 제1 값 v1을 갖는 축적된 쿼드러플을 합성한다. 출력 요소를 생성함에 있어서, 이 컴포넌트(1724)는 v1 값과 함께 진행하는 모든 값의 v2를 테스트하고, 그 v1 값에 연관시키기 위해 가장 빈번한 v2를 선택한다. 가장 빈번한 v2를 공유하는 쿼드러플의 수 는 "양호"로서 카운트되고, 쿼드러플의 나머지는 "예외"로서 카운트된다. 소정 v1에 대해 하나의 값의 v2 만이 존재한다면, 그 값을 갖는 축적된 쿼드러플은 양호로 되고, 예외는 존재하지 않는다. 가장 빈번한 값의 v2에 대해 타이(tie)가 존재한다면, 제1 값이 선택된다. 테이블(1600)의 예에서, Zip 필드가 f1에 대응하고 State 필드가 f2에 대응할 때, 컴포넌트(1724)는 다음을 생성한다: (Zip/State/90019/CA,4 양호), (Zip/State/90212/CA,2 양호), (Zip/State/33102/ FL,3 양호), (Zip/State/00000/FL,1 양호, 1 예외), (Zip/State/77010/TX,1 양호). State 필드가 f1에 대응하고 Zip 필드가 f2에 대응할 때, 컴포넌트(1724)는 다음을 생성한다: (State/Zip/CA/90019,4 양호, 2 예외), (State/Zip/FL/33102, 3 양호, 1 예외), (State/Zip/TX/77010, 1 양호, 1 예외).
"전역적인 롤업 f1/f2" 컴포넌트(1726)는 각각의 고유한 쌍의 필드 f1, f2에 대한 양호한 카운트와 예외를 추가한다. 테이블(1600)의 예에서, Zip 필드가 f1에 대응하고 State 필드가 f2에 대응할 때, 컴포넌트(1726)는 다음을 생성한다: (Zip/State, 11 양호, 1 예외). State 필드가 f1에 대응하고 Zip 필드가 f2에 대응할 때, 컴포넌트(1726)는 다음을 생성한다: (State/Zip, 8 양호, 4 예외).
종속 특성 탐색 컴포넌트(1728)는 "전역적인 롤업 f1/f2" 컴포넌트(1726)로부터 축적된 공통 발생 통계치(즉, 양호한 레코드와 예외 레코드의 수)를 이용하여 한 쌍의 필드가 "f1이 f2를 결정함"의 관계를 갖는지의 여부를 판정한다. 예외의 비율[예외의 수/(양호의 수+예외의 수)에 의해 주어짐]이 얼마나 많은 예외가 허용되는지에 대한 임계치 미만이라면, 그 쌍의 필드는 "f1이 f2를 결정함"의 관계를 갖는다. 테이블(1600)의 예에서, 10%의 임계치에 대해, Zip 필드가 f1에 대응하고 State 필드가 f2에 대응할 때, 예외의 비율은 8.3%이고, Zip 필드의 값이 State 필드의 값을 결정한다. State 필드가 f1에 대응하고 Zip 필드가 f2에 대응할 때, 예외의 비율은 33%이고, 그러므로, Zip 필드와 State 필드 간의 관계는 일대일 매핑이 되지 않는다. 이와 달리, 축적된 값의 수학적인 성질에 기초한 값이 사용되어 필드 f1이 필드 f2를 결정하는지의 여부를 판정한다(예컨대, 필드 f1의 값에 주어진 필드 f2의 값의 조건부 엔트로피, 또는 수치값의 표준 편차).
7.2 필드 쌍 선택 최적화
함수 종속성의 분석 속도를 증가시키기 위한 다양한 최적화가, 예컨대 선택 쌍 컴포넌트(1706)에서 필드 쌍을 필터링하거나, 필터 컴포넌트(1712)에서 레코드를 필터링함으로써 적용될 수 있다. 몇몇의 최적화는 상기 설명한 그래프(1700)에 의해 발견되는 몇몇의 함수적 종속 관계가 사용자에 대해 다른 것만큼 의미있는 것으로 되지 않는 인식에 기초한다. 주어진 필드 쌍에 대해, 이러한 몇몇 경우는, 프로파일링 모듈(100)에 의해 제공되는 통계치에 기초하는 선택 쌍 컴포넌트(1706)에 의해 검출 및 필터링되어, 산출 자원을 절약할 수 있게 된다. 예를 들어, 제1 필드 f1에서의 모든 값(단일의 레코드에서만 발생하는 각각의 값)이 고유하다면, 그 필드 f1의 값은 필드 f2에서 발생하는 값에 무관하게 제2 필드 f2의 값을 판정한다.
그래프(1700)는, 프로파일링 동안 획득한 센서스 데이터를 이용하여, 제1 필드 f1이 그 필드에서의 값의 랜덤한(예컨대, 균일한 확률 분포) 쌍 생성에 기초하 여 제2 필드 f2를 판정하는 확률을 산출할 수 있다. 랜덤 쌍 생성이 함수 종속성을 갖게 되는 확률이 높다면(예컨대, 10% 초과), 필드 쌍은 선택 쌍 컴포넌트(1706)에 의해 필터링 출력된다. 테이블 1600의 예에서, LastName(성) 필드가 f1에 대응하고 Citizenship 필드가 f2에 대응하면, Citizenship을 가진 LastName의 모든 랜덤 쌍 생성에 의해 모든 쿼드러플이 양호한 것으로 카운트되는데, name_g 값(행 7 또는 행 12) 중 하나가 값 Canada와 랜덤하게 쌍으로 되는 경우를 제외하고는 양호한 것으로 카운트된다. 이러한 랜덤 쌍 생성이 발생하는 경우(16.7%(12개의 쌍 중 2개)의 확률), 예외의 비율은 8.3%가 되며, 이 값은 임계값 이하가 된다. 따라서, 본 예에서, 선택 쌍 컴포넌트(1706)는 쌍(LastName, Citizenship)을 필터링한다.
다른 최적화는, 센서스 데이터로부터 프로파일링 모듈(100)에 의해 산출되는 값의 히스토그램에 기초한다. 선택 쌍 컴포넌트(1706)는 필드 f2를 판정하기 위해 필드 f1에 대해서는 가능하지 않은 때에 쌍을 필터링한다. 테이블 1600의 예에서, State(주)의 최다 빈도 값은 6번 발생하며, Zip(우편번호)의 최다 빈도 값은 4번만 발생한다. 따라서, Zip의 값을 판정하기 위하여 State(주)의 값에 대해서는 가능하지 않게 되는데, 이것은 값들의 적어도 절반부에 대해 6개의 예외 중 적어도 2개가 존재하여, 결과적으로 적어도 16.7%의 예외 비율이 되기 때문이다. 따라서, 본 예에서는, 선택 쌍 컴포넌트(1706)는 쌍(State, Zip)을 필터링한다.
대량의 레코드의 경우, 그래프(1700)는 모든 레코드를 처리하기 전에는 크게 함수적으로 관련이 있을 것 같지 않은 필드 쌍들(field pairs)을 제거하기 위해 소 규모 레코드 표본을 먼저 처리함으로써, 함수 의존성에 대한 시험 속도를 증가시킬 수 있다. 그래프(1700)는 필터 컴포넌트(filter component)(1712)를 사용하여 레코드의 일부분을 선택할 수 있다. 이와는 달리, 그래프(1700)는 규격화 컴포넌트(canonicalize component)(1716)을 사용하여 필드/값 쌍의 일부분을 선택할 수 있다.
레코드 또는 필드/값 쌍은 다양한 기준에 근거하여 표본화될 수 있다. 그래프(1700)는 프로파일링 모듈(100)에 의해 제공된 통계치에 근거하여 표본화할 수 있다. 예를 들어, 그래프(1700)는 제1 필드(f1)["결정자(determiner)"]의 최다 빈도 값(most frequent value)에 기초하여 함수 의존성을 시험할 수 있다. 예외인 결과의 횟수(resuling number)가 임계값보다 크면, 결정자의 나머지 값을 처리할 필요가 없다. 그래프(1700)는 또한 결정자 값의 랜덤 표본에 기초하여 함수 의존성을 시험할 수 있다. 충분한 수의 쿼드러플(quarduple)이 표본화된 값 중에서 양호할 때 계산되면, 다른 값들 중에서 예외인 실질적인 수의 발견 확률은 무시해도 좋은 것으로 가정된다. 다른 표본화 기준도 가능하다.
다른 선택적인 최적화는 공지된 함수의 라이브러리에 기초하여 필드들 사이에 미리 결정된 함수 관계를 시험하는 것이다. 이 시험은 레코드에 대해 도는 쿼드러플의 값에 대해 수행될 수 있다.
7.3 다중 소스 전체에 걸친 함수 의존성 분석
다중 소스(예를 들어, 데이터 베이스 테이블) 전체에 걸친 함수 의존성을 시험하는 한 가지 접근법에 있어, 프로파일링 모듈(100)은 다중 소스에서의 필드를 포함하는 "가상 테이블"을 생성한다. 가상 테이블은 예를 들어 소스에 공통되는 키 필드를 사용하여 소스에 대해 공동 연산(join operation)을 수행함으로써 생성될 수 있다.
가상 테이블을 사용하는 함수 의존성 분석의 한 예에 있어, 제1 데이터 소스는 차량 등록 정보[차량 등기(motor vehicle registry, MVR) 데이터베이스]의 데이터 베이스이고, 제2 데이터 소스는 발행된 과태료 납부 고지서의 데이터베이스(납부 교지서(traffic citation, TC) 데이터베이스)이다. MVR 데이터베이스는 make, model, color와 같은 필드를 포함하고, "주요 키" 필드로 지정된 license 필드를 포함한다. TC 데이터베이스는 name, date, location, violation, vehicle make, vehicle color를 포함하고, "외래 키(foreign key)" 필드로 지정되어 있는 vehicle license 필드를 포함한다. vehicle license 필드의 각 값은 license 필드에서의 값을 갖는 MVR 데이터베이스 내의 대응하는 레코드를 가지고 있다. TC 데이터베이스에는 vehicle license 필드와 동일한 값을 가지는 다수의 레코드가 있을 수 있다.
프로파일링 모듈(100)은 MVR 데이터베이스 및 TC 데이터베이스의 레코드를 결합하여 (예를 들어, 도 11a에 도시한 결합 컴포넌트(1100)와 관련하여 설명한 바와 같은) 가상 테이블을 형성한다. 가상 테이블의 레코드 각각은 MVR license 필드 및 TC vehicle license 필드와 일치된 값을 가지는 단일 license 필드를 포함하는 두 데이터베이스로부터 각각의 필드를 갖는다. 하지만 레코드는 TC 데이터베이스의 vehicle color 필드의 값과 다른, MVR 데이터베이스의 color 필드의 값을 가 질 수 있다. 예를 들어, MVR 데이터베이스는 "BLU" 코드를 사용하여 청색(color blue)를 나타낼 수 있고, TC 데이터베이스는 "BU" 코드를 사용하여 청색을 나타낸다. 이 경우에, 차량이 양쪽 데이터베이스에서 동일한 컬러를 가지면, color 필드는 vehicle color 필드와 "일대일" 함수 관계를 가질 것이다. 다르게는, 레코드는
차량을 등록하고서 과태료 납부 고지서를 받을 때까지의 사이에 다른 색으로 도색했다면, color 필드와 vehicle color 필드의 값을 다를 수 있다.
결합된 가상 테이블은 다수의 데이터 세트 각각으로부터의 필드를 포함하기 때문에, 프로파일링 모듈(100)은 이들 데이터 세트의 필드 사이에 존재할 있는 임의의 다양한 관계를 발견할 수 있다. 전술한 동일 또는 유사 의존성 분석은 결합된 가상 테이블 내의 필드에 대해 수행될 수 있다.
전술한 접근법은 컴퓨터에서의 실행을 위해 소프트웨어를 사용하여 구현될 수 있다. 예를 들어, 소프트웨어는 하나 이상의 프로그램된 또는 프로그램 가능한 컴퓨터 시스템(분산형, 클라이언트/서버, 또는 그리드와 같은 다양한 아키텍처를 갖는다)에서 실행되는 하나 이상의 컴퓨터 프로그램에서 처리 과정을 형성한다. 컴퓨터 시스템은 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(예를 들어, 휘발성 및 비휘발성 메모리 및/또는 저장 소자), 적어도 하나의 입력 기기나 포트, 및 적어도 하나의 출력 기기나 포트를 포함한다. 소프트웨어는 더 큰 프로그램, 예를 들어 그래프의 디자인 및 구성에 관련된 다른 서비스를 제공하는 프로그램을 이루는 하나 이상의 모듈을 형성할 수 있다.
소프트웨어는 범용 또는 특수용 프로그램 가능한 컴퓨터로 판독 가능한 매체 또는 기기로 제공되거나, 네트워크를 통해 소프트웨어가 실행될 컴퓨터로 배포(전파되는 신호로 부호화)될 수 있다. 함수 전부는 특수용 컴퓨터 또는 코프로세서와 같은 특수용 하드웨어를 사용하여 실행될 수 있다. 소프트웨어는 소프트웨어에 의해 명기된 계산의 다른 부분들이 다른 컴퓨터들에서 수행되는 분산형(distrubuted manner)으로 구현될 수 있다. 이러한 컴퓨터 프로그램 각각은, 여기에 기술된 절차를 수행하기 위해 컴퓨터 시스템에 의해 저장 매체나 기기가 판독될 때, 컴퓨터를 구성하거나 운영하기 위해, 범용 또는 특수용의 프로그램 가능한 컴퓨터에 의해 판독 가능한 저장 매체나 기기(예를 들어, 고체 상태의 메모리나 매체, 자기 또는 광학 매체)에 저장되거나, 그러한 저장 매체나 기기로 다운로드 되는 것이 바람직하다. 본 발명의 시스템은 또한 컴퓨터 프로그램으로 구성된 컴퓨터로 판독 가능한 저장 매체로 구현되는 것으로 간주할 수 있으며, 그래서 저장 매체는 컴퓨터 시스템으로 하여금 특정한 미리 정해진 방식으로 여기에 기술된 기능을 수행하기 위해 동작하도록 구성된다.
이상에서의 설명은 본 발명을 설명하기 위한 것이며, 첨부된 청구범위의 범위에 의해 규정되는, 본 발명의 범위를 한정하고자 하는 것이 아님은 명백하다. 다른 실시예들도 또한 다음의 청구범위 범위 내에 포함된다.
도 1은 데이터 프로파일링 모듈을 포함하는 시스템의 블록도.
도 2는 데이터 프로파일링에 사용되는 메타데이터 저장부에서의 오브젝트의 구성을 나타내는 블록도.
도 3은 프로파일링 모듈에 대한 프로파일링 그래프.
도 4는 데이터 포맷을 해석하는데 이용되는 타입 오브젝트의 계층을 나타내는 트리 도면.
도 5a~5c는 프로파일링 그래프의 센서스 작성 컴포넌트, 센서스 분석 컴포넌트, 및 표본 작성 컴포넌트를 나타내는 도면.
도 6은 롤업 과정을 나타내는 흐름도.
도 7은 규격화 과정을 나타내는 흐름도.
도 8a~8c는 프로파일링 결과를 나타내는 사용자 인터페이스 스크린 출력의 예를 나타내는 도면.
도 9는 프로파일링 과정의 예를 나타내는 흐름도.
도 10은 프로파일링 과정의 예를 나타내는 흐름도.
도 11a 및 11b는 2쌍의 필드로부터 레코드에 대해 수행되는 결합 연산의 예를 나타내는 도면.
도 12a 및 12b는 2쌍의 필드로부터 센서스 레코드에 대한 센서스 결합 연산의 예를 나타내는 도면.
도 13은 2쌍의 필드에 대해 단일의 센서스 결합 연산을 수행하는데 이용되는 확장 레코드의 예를 나타내는 도면.
도 14는 확장 레코드를 생성하는데 이용되는 확장 컴포넌트를 나타내는 도면.
도 15a~15c는 조인트 필드 분석을 수행하는데 이용되는 그래프를 나타내는 도면.
도 16은 함수 종속성 관계를 갖는 필드를 나타내는 테이블.
도 17은 함수 종속성 분석을 수행하는데 이용되는 그래프.

Claims (20)

  1. 데이터를 처리하는 방법에 있어서,
    데이터 소스의 데이터 레코드의 필드로 된 복수 개의 필드 서브세트를 수신하는 단계;
    복수 개의 상기 필드 서브세트의 각각에 대하여 동시발생 통계치를 판정하는 단계; 및
    상기 동시발생 통계치에 기초하여, 복수 개의 상기 필드 서브세트 중, 필드 사이에 함수적 관계를 갖는 필드 서브세트를 하나 이상 식별하는 단계
    를 포함하고,
    상기 함수적 관계는 함수 종속성(functional dependency)인, 데이터 처리 방법.
  2. 제1항에 있어서,
    상기 필드 서브세트 중 적어도 하나는 2개의 필드로 된 서브세트인 것을 특징으로 하는 데이터 처리 방법.
  3. 제1항에 있어서,
    상기 필드 서브세트를 하나 이상 식별하는 단계는, 복수의 상기 필드 서브세트 중, 가능한 미리 정해진 복수 개의 함수적 관계 중 하나를 갖는 필드 서브세트 를 하나 이상 식별하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  4. 제1항에 있어서,
    상기 동시발생 통계치를 판정하는 단계는, 한 쌍의 필드를 각각 식별하는 데이터 요소를 형성하는 단계와, 상기 데이터 레코드 중 하나에 있는 상기 한 쌍의 필드에서 발생하는 한 쌍의 값을 식별하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  5. 제1항에 있어서,
    상기 동시발생 통계치를 판정하는 단계는,
    제1 필드 및 제2 필드를 갖는 상기 데이터 레코드를 분할하는 단계;
    상기 분할된 데이터 레코드의 제1 부분에 있는 하나 이상의 레코드가 상기 제2 필드에서 발생하는 값의 분포에 기초하여, 축적된 퀀터티를 판정하는 단계로서, 상기 하나 이상의 레코드는 상기 하나 이상의 레코드의 제1 필드에서 발생하는 공통의 값을 갖는, 판정 단계; 및
    상기 축적된 퀀터티를, 상기 분할된 데이터 레코드의 제2 부분에 있는 레코드로부터 다른 축적된 퀀터티와 조합하여 축적된 총 퀀터티를 생성하는, 조합 단계
    를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  6. 제5항에 있어서,
    상기 필드 서브세트를 하나 이상 식별하는 단계는, 상기 축적된 총 퀀터티에 기초하여 상기 제1 필드 및 상기 제2 필드 사이의 함수적 관계를 식별하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  7. 제5항에 있어서,
    상기 분할된 데이터 레코드는, 상기 제1 필드 및 상기 제2 필드의 값에 기초하는 것을 특징으로 하는 데이터 처리 방법.
  8. 제5항에 있어서,
    상기 분할된 데이터 레코드는, 병렬 컴포넌트 세트의 개별 컴포넌트를 이용하여 처리되는 것을 특징으로 하는 데이터 처리 방법.
  9. 제1항에 있어서,
    상기 필드 서브세트를 하나 이상 식별하는 단계는, 하나의 필드가 다른 필드에 함수적으로 종속하는지 여부를 정하기 위한 함수 종속성의 정도를 판정하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  10. 제9항에 있어서,
    상기 함수 종속성의 정도를 판정하는 단계는, 상기 함수적 관계에 따라 다른 필드의 값에 매핑하지 않는 하나의 필드에 대한 값을 가지는 예외적인 레코드를 판 정하는 것에 의해 상기 함수적 관계와 일치하지 않는 다수의 예외적인 레코드를 판정하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  11. 제1항에 있어서,
    상기 함수적 관계는, 상기 제1 필드의 값 중 적어도 일부를 상기 제2 필드의 값 중 적어도 일부에 매핑하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  12. 제11항에 있어서,
    상기 매핑은 다대일(many-to-one) 매핑인 것을 특징으로 하는 데이터 처리 방법.
  13. 제11항에 있어서,
    상기 매핑은 일대다(one-to-many) 매핑인 것을 특징으로 하는 데이터 처리 방법.
  14. 제11항에 있어서,
    상기 매핑은 일대일(one-to-one) 매핑인 것을 특징으로 하는 데이터 처리 방법.
  15. 제1항에 있어서,
    복수 개의 상기 필드 서브세트의 필드 내의 값의 특성을 나타내는 필터식(filter expression)에 기초하여 상기 데이터 소스의 레코드의 일부를 제거하도록 복수 개의 상기 필드 서브세트를 필터링하는 단계를 더 포함하는 데이터 처리 방법.
  16. 제1항에 있어서,
    상기 데이터 레코드는 데이터베이스 테이블의 레코드를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  17. 제16항에 있어서,
    상기 데이터 레코드는, 복수 개의 데이터베이스 테이블의 레코드를 포함하는 것을 특징으로 하는 데이터 처리 방법.
  18. 제1항 내지 제17항 중 어느 한 항에 기재된 데이터 처리 방법을 실행시키기 위한 프로그램을 기록한,
    컴퓨터로 판독 가능한 기록 매체.
  19. 데이터를 처리하는 시스템에 있어서,
    데이터 소스의 데이터 레코드의 필드로 된 복수 개의 필드 서브세트를 수신 하는 식별 처리 모듈;
    복수 개의 상기 필드 서브세트의 각각에 대한 동시발생 통계치를 판정하는 통계치 처리 모듈; 및
    상기 동시 발생 통계치에 기초하여, 복수 개의 상기 필드 서브세트 중, 필드 사이에 함수적 관계를 갖는 필드 서브세트를 하나 이상 식별하는 함수적 관계 처리 모듈
    을 포함하고,
    상기 함수적 관계는 함수 종속성인, 데이터 처리 시스템.
  20. 데이터를 처리하는 시스템에 있어서,
    데이터 소스의 데이터 레코드의 필드로 된 복수 개의 필드 서브세트를 수신하는 수단;
    복수 개의 상기 필드 서브세트의 각각에 대한 동시발생 통계치를 판정하는 수단; 및
    상기 동시 발생 통계치에 기초하여, 복수 개의 상기 필드 서브세트 중, 필드 사이에 함수적 관계를 갖는 필드 서브세트를 하나 이상 식별하는 수단
    을 포함하고,
    상기 함수적 관계는 함수 종속성인, 데이터 처리 시스템.
KR1020097003696A 2003-09-15 2004-09-15 데이터 프로파일링 KR20090039803A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US50290803P 2003-09-15 2003-09-15
US60/502,908 2003-09-15
US51303803P 2003-10-20 2003-10-20
US60/513,038 2003-10-20
US53295603P 2003-12-22 2003-12-22
US60/532,956 2003-12-22

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020077021527A Division KR101033179B1 (ko) 2003-09-15 2004-09-15 데이터 프로파일링

Publications (1)

Publication Number Publication Date
KR20090039803A true KR20090039803A (ko) 2009-04-22

Family

ID=34381971

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020097003696A KR20090039803A (ko) 2003-09-15 2004-09-15 데이터 프로파일링
KR1020077021526A KR100922141B1 (ko) 2003-09-15 2004-09-15 데이터 프로파일링 방법 및 시스템
KR1020077021527A KR101033179B1 (ko) 2003-09-15 2004-09-15 데이터 프로파일링
KR1020067005255A KR100899850B1 (ko) 2003-09-15 2004-09-15 데이터 프로파일링

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020077021526A KR100922141B1 (ko) 2003-09-15 2004-09-15 데이터 프로파일링 방법 및 시스템
KR1020077021527A KR101033179B1 (ko) 2003-09-15 2004-09-15 데이터 프로파일링
KR1020067005255A KR100899850B1 (ko) 2003-09-15 2004-09-15 데이터 프로파일링

Country Status (10)

Country Link
US (5) US7849075B2 (ko)
EP (3) EP1676217B1 (ko)
JP (3) JP5328099B2 (ko)
KR (4) KR20090039803A (ko)
CN (1) CN102982065B (ko)
AT (1) ATE515746T1 (ko)
AU (3) AU2004275334B9 (ko)
CA (3) CA2655735C (ko)
HK (1) HK1093568A1 (ko)
WO (1) WO2005029369A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016195421A1 (ko) * 2015-06-04 2016-12-08 장원중 통계 분석 기반의 데이터 프로파일링을 제공하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능한 기록 매체
KR20210085886A (ko) * 2019-12-31 2021-07-08 가톨릭관동대학교산학협력단 속성 값 품질 지수를 이용한 데이터 프로파일링 방법 및 데이터 프로파일링 시스템

Families Citing this family (203)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1676217B1 (en) 2003-09-15 2011-07-06 Ab Initio Technology LLC Data profiling
US7653641B2 (en) * 2004-05-04 2010-01-26 Accruent, Inc. Abstraction control solution
US7349898B2 (en) * 2004-06-04 2008-03-25 Oracle International Corporation Approximate and exact unary inclusion dependency discovery
US7647293B2 (en) * 2004-06-10 2010-01-12 International Business Machines Corporation Detecting correlation from data
US7386566B2 (en) * 2004-07-15 2008-06-10 Microsoft Corporation External metadata processing
US8732004B1 (en) 2004-09-22 2014-05-20 Experian Information Solutions, Inc. Automated analysis of data to generate prospect notifications based on trigger events
US20060082581A1 (en) 2004-10-14 2006-04-20 Microsoft Corporation Encoding for remoting graphics to decoder device
US7852342B2 (en) 2004-10-14 2010-12-14 Microsoft Corporation Remote client graphics rendering
US7610264B2 (en) * 2005-02-28 2009-10-27 International Business Machines Corporation Method and system for providing a learning optimizer for federated database systems
CN102004950A (zh) * 2005-04-25 2011-04-06 因文西斯系统公司 在工业过程控制环境中记录和跟踪非趋势生产数据和事件
US7836104B2 (en) * 2005-06-03 2010-11-16 Sap Ag Demonstration tool for a business information enterprise system
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US20070006070A1 (en) * 2005-06-30 2007-01-04 International Business Machines Corporation Joining units of work based on complexity metrics
US8788464B1 (en) * 2005-07-25 2014-07-22 Lockheed Martin Corporation Fast ingest, archive and retrieval systems, method and computer programs
US20070033198A1 (en) * 2005-08-02 2007-02-08 Defries Anthony Data representation architecture for media access
US8527563B2 (en) 2005-09-12 2013-09-03 Microsoft Corporation Remoting redirection layer for graphics device interface
US20070073721A1 (en) * 2005-09-23 2007-03-29 Business Objects, S.A. Apparatus and method for serviced data profiling operations
US20070074176A1 (en) * 2005-09-23 2007-03-29 Business Objects, S.A. Apparatus and method for parallel processing of data profiling information
US8996586B2 (en) * 2006-02-16 2015-03-31 Callplex, Inc. Virtual storage of portable media files
US7873628B2 (en) * 2006-03-23 2011-01-18 Oracle International Corporation Discovering functional dependencies by sampling relations
US20070271259A1 (en) * 2006-05-17 2007-11-22 It Interactive Services Inc. System and method for geographically focused crawling
US7526486B2 (en) * 2006-05-22 2009-04-28 Initiate Systems, Inc. Method and system for indexing information about entities with respect to hierarchies
US8332366B2 (en) 2006-06-02 2012-12-11 International Business Machines Corporation System and method for automatic weight generation for probabilistic matching
US7711736B2 (en) * 2006-06-21 2010-05-04 Microsoft International Holdings B.V. Detection of attributes in unstructured data
US7698268B1 (en) 2006-09-15 2010-04-13 Initiate Systems, Inc. Method and system for filtering false positives
US8356009B2 (en) 2006-09-15 2013-01-15 International Business Machines Corporation Implementation defined segments for relational database systems
US7685093B1 (en) 2006-09-15 2010-03-23 Initiate Systems, Inc. Method and system for comparing attributes such as business names
WO2008034213A1 (en) * 2006-09-18 2008-03-27 Infobright Inc. A method and system for data compression in a relational database
US8266147B2 (en) * 2006-09-18 2012-09-11 Infobright, Inc. Methods and systems for database organization
US8762834B2 (en) * 2006-09-29 2014-06-24 Altova, Gmbh User interface for defining a text file transformation
US7809747B2 (en) * 2006-10-23 2010-10-05 Donald Martin Monro Fuzzy database matching
US9846739B2 (en) 2006-10-23 2017-12-19 Fotonation Limited Fast database matching
US20080097992A1 (en) * 2006-10-23 2008-04-24 Donald Martin Monro Fast database matching
US7613707B1 (en) * 2006-12-22 2009-11-03 Amazon Technologies, Inc. Traffic migration in a multilayered data service framework
US7774329B1 (en) 2006-12-22 2010-08-10 Amazon Technologies, Inc. Cross-region data access in partitioned framework
US8150870B1 (en) 2006-12-22 2012-04-03 Amazon Technologies, Inc. Scalable partitioning in a multilayered data service framework
CN101226523B (zh) * 2007-01-17 2012-09-05 国际商业机器公司 数据概况分析方法和系统
US8359339B2 (en) 2007-02-05 2013-01-22 International Business Machines Corporation Graphical user interface for configuration of an algorithm for the matching of data records
US20080195575A1 (en) * 2007-02-12 2008-08-14 Andreas Schiffler Electronic data display management system and method
US8515926B2 (en) * 2007-03-22 2013-08-20 International Business Machines Corporation Processing related data from information sources
WO2008121170A1 (en) 2007-03-29 2008-10-09 Initiate Systems, Inc. Method and system for parsing languages
US8370355B2 (en) 2007-03-29 2013-02-05 International Business Machines Corporation Managing entities within a database
US8423514B2 (en) 2007-03-29 2013-04-16 International Business Machines Corporation Service provisioning
WO2008121824A1 (en) 2007-03-29 2008-10-09 Initiate Systems, Inc. Method and system for data exchange among data sources
US20120164613A1 (en) * 2007-11-07 2012-06-28 Jung Edward K Y Determining a demographic characteristic based on computational user-health testing of a user interaction with advertiser-specified content
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US20090254588A1 (en) * 2007-06-19 2009-10-08 Zhong Li Multi-Dimensional Data Merge
US20110010214A1 (en) * 2007-06-29 2011-01-13 Carruth J Scott Method and system for project management
KR101526626B1 (ko) 2007-07-12 2015-06-05 아트멜 코포레이션 2차원 터치 패널
US20090055828A1 (en) * 2007-08-22 2009-02-26 Mclaren Iain Douglas Profile engine system and method
WO2009039352A1 (en) * 2007-09-20 2009-03-26 Ab Initio Technology Llc Managing data flows in graph-based computations
US9690820B1 (en) * 2007-09-27 2017-06-27 Experian Information Solutions, Inc. Database system for triggering event notifications based on updates to database records
AU2008304255B2 (en) 2007-09-28 2013-03-14 International Business Machines Corporation Method and system for associating data records in multiple languages
US8713434B2 (en) 2007-09-28 2014-04-29 International Business Machines Corporation Indexing, relating and managing information about entities
AU2008304265B2 (en) * 2007-09-28 2013-03-14 International Business Machines Corporation Method and system for analysis of a system for matching data records
US8321914B2 (en) 2008-01-21 2012-11-27 International Business Machines Corporation System and method for verifying an attribute in records for procurement application
US8224797B2 (en) * 2008-03-04 2012-07-17 International Business Machines Corporation System and method for validating data record
US8046385B2 (en) * 2008-06-20 2011-10-25 Ab Initio Technology Llc Data quality tracking
KR101499599B1 (ko) 2008-06-30 2015-03-18 아브 이니티오 테크놀로지 엘엘시 그래프 기반 계산에서의 데이터 로깅
US8239389B2 (en) * 2008-09-29 2012-08-07 International Business Machines Corporation Persisting external index data in a database
US8484215B2 (en) 2008-10-23 2013-07-09 Ab Initio Technology Llc Fuzzy data operations
EP2370892B1 (en) 2008-12-02 2020-11-04 Ab Initio Technology LLC Mapping instances of a dataset within a data management system
US20100174638A1 (en) 2009-01-06 2010-07-08 ConsumerInfo.com Report existence monitoring
EP2391938A4 (en) * 2009-01-30 2016-06-08 Ab Initio Technology Llc DATA PROCESSING WITH VECTOR FIELDS
CN105843684B (zh) 2009-02-13 2020-03-03 起元技术有限责任公司 管理任务执行
EP2399192A4 (en) * 2009-02-13 2016-09-07 Ab Initio Technology Llc COMMUNICATION WITH DATA STORAGE SYSTEMS
US8051060B1 (en) * 2009-02-13 2011-11-01 At&T Intellectual Property I, L.P. Automatic detection of separators for compression
US10102398B2 (en) 2009-06-01 2018-10-16 Ab Initio Technology Llc Generating obfuscated data
WO2010144608A1 (en) * 2009-06-10 2010-12-16 Ab Initio Technology Llc Generating test data
JP2011008560A (ja) * 2009-06-26 2011-01-13 Hitachi Ltd 情報管理システム
US8205113B2 (en) 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
KR101688555B1 (ko) * 2009-09-16 2016-12-21 아브 이니티오 테크놀로지 엘엘시 데이터세트 요소의 매핑
WO2011033773A1 (ja) * 2009-09-17 2011-03-24 パナソニック株式会社 情報処理装置、管理装置、不正モジュール検知システム、不正モジュール検知方法、不正モジュール検知プログラムを記録している記録媒体、管理方法、管理プログラムを記録している記録媒体および集積回路
US8700577B2 (en) * 2009-12-07 2014-04-15 Accenture Global Services Limited GmbH Method and system for accelerated data quality enhancement
CA2782414C (en) * 2009-12-14 2021-08-03 Ab Initio Technology Llc Specifying user interface elements
US9477369B2 (en) * 2010-03-08 2016-10-25 Salesforce.Com, Inc. System, method and computer program product for displaying a record as part of a selected grouping of data
US8205114B2 (en) 2010-04-07 2012-06-19 Verizon Patent And Licensing Inc. Method and system for partitioning data files for efficient processing
US8577094B2 (en) 2010-04-09 2013-11-05 Donald Martin Monro Image template masking
US8417727B2 (en) 2010-06-14 2013-04-09 Infobright Inc. System and method for storing data in a relational database
US8521748B2 (en) 2010-06-14 2013-08-27 Infobright Inc. System and method for managing metadata in a relational database
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
KR101781416B1 (ko) 2010-06-22 2017-09-25 아브 이니티오 테크놀로지 엘엘시 관련 데이터세트의 처리
WO2012008951A1 (en) * 2010-07-13 2012-01-19 Hewlett-Packard Development Company, L.P. Methods, apparatus and articles of manufacture to archive data
US8515863B1 (en) * 2010-09-01 2013-08-20 Federal Home Loan Mortgage Corporation Systems and methods for measuring data quality over time
JP5902185B2 (ja) 2010-10-25 2016-04-13 アビニシオ テクノロジー エルエルシー コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理
KR20120061308A (ko) * 2010-12-03 2012-06-13 삼성전자주식회사 휴대용 단말기에서 데이터 베이스를 제어하기 위한 장치 및 방법
WO2012097278A1 (en) 2011-01-14 2012-07-19 Ab Initio Technology Llc Managing changes to collections of data
AU2012211167B2 (en) 2011-01-28 2014-08-21 Ab Initio Technology Llc Generating data pattern information
US9021299B2 (en) 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US9116759B2 (en) 2011-02-18 2015-08-25 Ab Initio Technology Llc Restarting data processing systems
US9311487B2 (en) * 2011-03-15 2016-04-12 Panasonic Corporation Tampering monitoring system, management device, protection control module, and detection module
US9558519B1 (en) 2011-04-29 2017-01-31 Consumerinfo.Com, Inc. Exposing reporting cycle information
US20120330880A1 (en) * 2011-06-23 2012-12-27 Microsoft Corporation Synthetic data generation
US8782016B2 (en) * 2011-08-26 2014-07-15 Qatar Foundation Database record repair
US9116934B2 (en) * 2011-08-26 2015-08-25 Qatar Foundation Holistic database record repair
US8863082B2 (en) 2011-09-07 2014-10-14 Microsoft Corporation Transformational context-aware data source management
US8719271B2 (en) 2011-10-06 2014-05-06 International Business Machines Corporation Accelerating data profiling process
US9430117B2 (en) * 2012-01-11 2016-08-30 International Business Machines Corporation Triggering window conditions using exception handling
US9438656B2 (en) 2012-01-11 2016-09-06 International Business Machines Corporation Triggering window conditions by streaming features of an operator graph
US20130304712A1 (en) * 2012-05-11 2013-11-14 Theplatform For Media, Inc. System and method for validation
US9582553B2 (en) * 2012-06-26 2017-02-28 Sap Se Systems and methods for analyzing existing data models
US9633076B1 (en) * 2012-10-15 2017-04-25 Tableau Software Inc. Blending and visualizing data from multiple data sources
US10489360B2 (en) * 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
AU2013335231B2 (en) * 2012-10-22 2018-08-09 Ab Initio Technology Llc Profiling data with location information
WO2014065918A1 (en) * 2012-10-22 2014-05-01 Ab Initio Technology Llc Characterizing data sources in a data storage system
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9703822B2 (en) 2012-12-10 2017-07-11 Ab Initio Technology Llc System for transform generation
EP2757467A1 (en) * 2013-01-22 2014-07-23 Siemens Aktiengesellschaft Management apparatus and method for managing data elements of a version control system
US9892026B2 (en) 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US9135280B2 (en) * 2013-02-11 2015-09-15 Oracle International Corporation Grouping interdependent fields
US9471545B2 (en) 2013-02-11 2016-10-18 Oracle International Corporation Approximating value densities
US9110949B2 (en) 2013-02-11 2015-08-18 Oracle International Corporation Generating estimates for query optimization
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US10332010B2 (en) 2013-02-19 2019-06-25 Business Objects Software Ltd. System and method for automatically suggesting rules for data stored in a table
US9576036B2 (en) 2013-03-15 2017-02-21 International Business Machines Corporation Self-analyzing data processing job to determine data quality issues
KR101444249B1 (ko) * 2013-05-13 2014-09-26 (주) 아트리아트레이딩 대차 거래, 공매도 거래 또는 주식 스왑 거래에 관한 정보를 제공하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능 기록 매체
WO2014186673A2 (en) * 2013-05-17 2014-11-20 Ab Initio Technology Llc Managing memory and storage space for a data operation
US20150032907A1 (en) * 2013-07-26 2015-01-29 Alcatel-Lucent Canada, Inc. Universal adapter with context-bound translation for application adaptation layer
US10460830B2 (en) 2013-08-22 2019-10-29 Genomoncology, Llc Computer-based systems and methods for analyzing genomes based on discrete data structures corresponding to genetic variants therein
KR102349573B1 (ko) 2013-09-27 2022-01-10 아브 이니티오 테크놀로지 엘엘시 데이터에 적용되는 규칙 평가
US20150120224A1 (en) * 2013-10-29 2015-04-30 C3 Energy, Inc. Systems and methods for processing data relating to energy usage
EP3092557B1 (en) 2013-12-05 2024-03-27 AB Initio Technology LLC Managing interfaces for dataflow graphs composed of sub-graphs
EP3084611A1 (en) 2013-12-18 2016-10-26 AB Initio Technology LLC Data generation
US9529849B2 (en) 2013-12-31 2016-12-27 Sybase, Inc. Online hash based optimizer statistics gathering in a database
US11487732B2 (en) * 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
US9984173B2 (en) * 2014-02-24 2018-05-29 International Business Machines Corporation Automated value analysis in legacy data
CA2939915C (en) * 2014-03-07 2021-02-16 Ab Initio Technology Llc Managing data profiling operations related to data type
JP6307169B2 (ja) 2014-03-10 2018-04-04 インターナ, インコーポレイテッドInterana, Inc. 迅速なデータ解析のためのシステム及び方法
US9846567B2 (en) 2014-06-16 2017-12-19 International Business Machines Corporation Flash optimized columnar data layout and data access algorithms for big data query engines
US9633058B2 (en) 2014-06-16 2017-04-25 International Business Machines Corporation Predictive placement of columns during creation of a large database
SG11201700381XA (en) 2014-07-18 2017-02-27 Ab Initio Technology Llc Managing lineage information
CN112363712B (zh) * 2014-09-02 2024-03-12 起元科技有限公司 用于处理基于图的程序规范的方法
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US10055333B2 (en) 2014-11-05 2018-08-21 Ab Initio Technology Llc Debugging a graph
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
WO2016118979A2 (en) 2015-01-23 2016-07-28 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US10296507B2 (en) 2015-02-12 2019-05-21 Interana, Inc. Methods for enhancing rapid data analysis
US9952808B2 (en) 2015-03-26 2018-04-24 International Business Machines Corporation File system block-level tiering and co-allocation
CN104850590A (zh) * 2015-04-24 2015-08-19 百度在线网络技术(北京)有限公司 一种生成结构化数据的元数据的方法与装置
US11068647B2 (en) * 2015-05-28 2021-07-20 International Business Machines Corporation Measuring transitions between visualizations
US9384203B1 (en) * 2015-06-09 2016-07-05 Palantir Technologies Inc. Systems and methods for indexing and aggregating data records
US10409802B2 (en) 2015-06-12 2019-09-10 Ab Initio Technology Llc Data quality analysis
US10241979B2 (en) * 2015-07-21 2019-03-26 Oracle International Corporation Accelerated detection of matching patterns
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10127264B1 (en) 2015-09-17 2018-11-13 Ab Initio Technology Llc Techniques for automated data analysis
US10607139B2 (en) 2015-09-23 2020-03-31 International Business Machines Corporation Candidate visualization techniques for use with genetic algorithms
US10140337B2 (en) * 2015-10-30 2018-11-27 Sap Se Fuzzy join key
US10838919B2 (en) * 2015-10-30 2020-11-17 Acxiom Llc Automated interpretation for the layout of structured multi-field files
US11410230B1 (en) 2015-11-17 2022-08-09 Consumerinfo.Com, Inc. Realtime access and control of secure regulated data
US10757154B1 (en) 2015-11-24 2020-08-25 Experian Information Solutions, Inc. Real-time event-based notification system
US10459730B2 (en) * 2016-02-26 2019-10-29 Hitachi, Ltd. Analysis system and analysis method for executing analysis process with at least portions of time series data and analysis data as input data
US10685035B2 (en) 2016-06-30 2020-06-16 International Business Machines Corporation Determining a collection of data visualizations
US10146835B2 (en) 2016-08-23 2018-12-04 Interana, Inc. Methods for stratified sampling-based query execution
US10423387B2 (en) 2016-08-23 2019-09-24 Interana, Inc. Methods for highly efficient data sharding
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11093703B2 (en) * 2016-09-29 2021-08-17 Google Llc Generating charts from data in a data table
US9720961B1 (en) 2016-09-30 2017-08-01 Semmle Limited Algebraic data types for database query languages
US9633078B1 (en) 2016-09-30 2017-04-25 Semmle Limited Generating identifiers for tuples of recursively defined relations
CN110023925A (zh) 2016-12-01 2019-07-16 起元技术有限责任公司 生成、访问和显示沿袭元数据
US10650050B2 (en) 2016-12-06 2020-05-12 Microsoft Technology Licensing, Llc Synthesizing mapping relationships using table corpus
US10936555B2 (en) * 2016-12-22 2021-03-02 Sap Se Automated query compliance analysis
US10565173B2 (en) * 2017-02-10 2020-02-18 Wipro Limited Method and system for assessing quality of incremental heterogeneous data
US10002146B1 (en) * 2017-02-13 2018-06-19 Sas Institute Inc. Distributed data set indexing
US10514993B2 (en) * 2017-02-14 2019-12-24 Google Llc Analyzing large-scale data processing jobs
CN107220283B (zh) * 2017-04-21 2019-11-08 东软集团股份有限公司 数据处理方法、装置、存储介质及电子设备
US9934287B1 (en) * 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
US20200050612A1 (en) * 2017-07-31 2020-02-13 Splunk Inc. Supporting additional query languages through distributed execution of query engines
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US20200065303A1 (en) * 2017-07-31 2020-02-27 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
US11055074B2 (en) * 2017-11-13 2021-07-06 Ab Initio Technology Llc Key-based logging for processing of structured data items with executable logic
CN111971665B (zh) * 2018-01-25 2024-04-19 起元技术有限责任公司 将验证结果整合到数据归档中的技术以及相关系统和方法
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
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
EP3575980A3 (en) * 2018-05-29 2020-03-04 Accenture Global Solutions Limited Intelligent data quality
JP7464543B2 (ja) * 2018-07-19 2024-04-09 アビニシオ テクノロジー エルエルシー データウェアハウスへの発行
US11080266B2 (en) * 2018-07-30 2021-08-03 Futurewei Technologies, Inc. Graph functional dependency checking
US20200074100A1 (en) 2018-09-05 2020-03-05 Consumerinfo.Com, Inc. Estimating changes to user risk indicators based on modeling of similarly categorized users
US11227065B2 (en) 2018-11-06 2022-01-18 Microsoft Technology Licensing, Llc Static data masking
US11423009B2 (en) * 2019-05-29 2022-08-23 ThinkData Works, Inc. System and method to prevent formation of dark data
US11704494B2 (en) * 2019-05-31 2023-07-18 Ab Initio Technology Llc Discovering a semantic meaning of data fields from profile data of the data fields
US11153400B1 (en) 2019-06-04 2021-10-19 Thomas Layne Bascom Federation broker system and method for coordinating discovery, interoperability, connections and correspondence among networked resources
CN111143433A (zh) * 2019-12-10 2020-05-12 中国平安财产保险股份有限公司 一种统计数据仓数据的方法及装置
FR3105844A1 (fr) * 2019-12-31 2021-07-02 Bull Sas PROCEDE ET système D’IDENTIFICATION DE VARIABLES PERTINENTES
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11200215B2 (en) * 2020-01-30 2021-12-14 International Business Machines Corporation Data quality evaluation
US11321340B1 (en) 2020-03-31 2022-05-03 Wells Fargo Bank, N.A. Metadata extraction from big data sources
US11556563B2 (en) * 2020-06-12 2023-01-17 Oracle International Corporation Data stream processing
US11403268B2 (en) * 2020-08-06 2022-08-02 Sap Se Predicting types of records based on amount values of records
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
KR102265937B1 (ko) * 2020-12-21 2021-06-17 주식회사 모비젠 시퀀스데이터의 분석 방법 및 그 장치
US20220215243A1 (en) * 2021-01-05 2022-07-07 Capital One Services, Llc Risk-Reliability Framework for Evaluating Synthetic Data Models
US11847390B2 (en) 2021-01-05 2023-12-19 Capital One Services, Llc Generation of synthetic data using agent-based simulations
DE112022000886T5 (de) 2021-01-31 2023-12-21 Ab Initio Technology Llc Datenverarbeitungssystem mit manipulation logischer datensatzgruppen
US11537594B2 (en) 2021-02-05 2022-12-27 Oracle International Corporation Approximate estimation of number of distinct keys in a multiset using a sample
CN112925792B (zh) * 2021-03-26 2024-01-05 北京中经惠众科技有限公司 数据存储控制方法、装置、计算设备及介质
CN113656430B (zh) * 2021-08-12 2024-02-27 上海二三四五网络科技有限公司 一种批量表数据自动扩充的控制方法及装置
KR102437098B1 (ko) 2022-04-15 2022-08-25 이찬영 인공 지능 기반의 오류 데이터 판정 방법 및 그 장치
US11907051B1 (en) 2022-09-07 2024-02-20 International Business Machines Corporation Correcting invalid zero value for data monitoring

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2760794B2 (ja) * 1988-01-29 1998-06-04 株式会社日立製作所 データベース処理方法および装置
US5179643A (en) 1988-12-23 1993-01-12 Hitachi, Ltd. Method of multi-dimensional analysis and display for a large volume of record information items and a system therefor
JPH032938A (ja) * 1989-05-31 1991-01-09 Hitachi Ltd データベース処理方法
JPH04152440A (ja) * 1990-10-17 1992-05-26 Hitachi Ltd 知的問合せ処理方法
FR2698465B1 (fr) 1992-11-20 1995-01-13 Bull Sa Méthode d'extraction de profils de statistiques, utilisation des statistiques créées par la méthode.
US5742806A (en) 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
JP3519126B2 (ja) 1994-07-14 2004-04-12 株式会社リコー 自動レイアウトシステム
US5842200A (en) * 1995-03-31 1998-11-24 International Business Machines Corporation System and method for parallel mining of association rules in databases
US6601048B1 (en) * 1997-09-12 2003-07-29 Mci Communications Corporation System and method for detecting and managing fraud
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US5778373A (en) 1996-07-15 1998-07-07 At&T Corp Integration of an information server database schema by generating a translation map from exemplary files
US6138123A (en) * 1996-07-25 2000-10-24 Rathbun; Kyle R. Method for creating and using parallel data structures
JPH1055367A (ja) 1996-08-09 1998-02-24 Hitachi Ltd データ利用システム
US5845285A (en) 1997-01-07 1998-12-01 Klein; Laurence C. Computer system and method of data analysis
US5987453A (en) 1997-04-07 1999-11-16 Informix Software, Inc. Method and apparatus for performing a join query in a database system
US6134560A (en) 1997-12-16 2000-10-17 Kliebhan; Daniel F. Method and apparatus for merging telephone switching office databases
US6826556B1 (en) * 1998-10-02 2004-11-30 Ncr Corporation Techniques for deploying analytic models in a parallel
US6959300B1 (en) * 1998-12-10 2005-10-25 At&T Corp. Data compression method and apparatus
US6343294B1 (en) 1998-12-15 2002-01-29 International Business Machines Corporation Data file editor for multiple data subsets
JP4037001B2 (ja) * 1999-02-23 2008-01-23 三菱電機株式会社 データベース作成装置およびデータベース検索装置
US6741995B1 (en) 1999-03-23 2004-05-25 Metaedge Corporation Method for dynamically creating a profile
US6430539B1 (en) * 1999-05-06 2002-08-06 Hnc Software Predictive modeling of consumer financial behavior
US6163774A (en) 1999-05-24 2000-12-19 Platinum Technology Ip, Inc. Method and apparatus for simplified and flexible selection of aggregate and cross product levels for a data warehouse
CN100375088C (zh) 1999-06-18 2008-03-12 国际商业机器公司 利用事务语义法分段和处理连续数据流
US6801938B1 (en) 1999-06-18 2004-10-05 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
JP3318834B2 (ja) 1999-07-30 2002-08-26 三菱電機株式会社 データファイルシステム及びデータ検索方法
JP3567861B2 (ja) 2000-07-07 2004-09-22 日本電信電話株式会社 情報源所在推定方法及び装置及び情報源所在推定プログラムを格納した記憶媒体
JP4366845B2 (ja) * 2000-07-24 2009-11-18 ソニー株式会社 データ処理装置およびデータ処理方法、並びにプログラム提供媒体
US6788302B1 (en) 2000-08-03 2004-09-07 International Business Machines Corporation Partitioning and load balancing graphical shape data for parallel applications
US20020073138A1 (en) * 2000-12-08 2002-06-13 Gilbert Eric S. De-identification and linkage of data records
US6952693B2 (en) * 2001-02-23 2005-10-04 Ran Wolff Distributed mining of association rules
US20020161778A1 (en) * 2001-02-24 2002-10-31 Core Integration Partners, Inc. Method and system of data warehousing and building business intelligence using a data storage model
US20020120602A1 (en) * 2001-02-28 2002-08-29 Ross Overbeek System, method and computer program product for simultaneous analysis of multiple genomes
JP2002269114A (ja) * 2001-03-14 2002-09-20 Kousaku Ookubo 知識データベース及び知識データベースの構築方法
US20030033138A1 (en) * 2001-07-26 2003-02-13 Srinivas Bangalore Method for partitioning a data set into frequency vectors for clustering
US7130852B2 (en) * 2001-07-27 2006-10-31 Silicon Valley Bank Internal security system for a relational database system
US7013290B2 (en) * 2001-08-03 2006-03-14 John Allen Ananian Personalized interactive digital catalog profiling
US6801903B2 (en) 2001-10-12 2004-10-05 Ncr Corporation Collecting statistics in a database system
US20030140027A1 (en) 2001-12-12 2003-07-24 Jeffrey Huttel Universal Programming Interface to Knowledge Management (UPIKM) database system with integrated XML interface
US7813937B1 (en) * 2002-02-15 2010-10-12 Fair Isaac Corporation Consistency modeling of healthcare claims to detect fraud and abuse
US7031969B2 (en) 2002-02-20 2006-04-18 Lawrence Technologies, Llc System and method for identifying relationships between database records
US7386318B2 (en) * 2002-03-19 2008-06-10 Pitney Bowes Mapinfo Corporation Location based service provider
US20040083199A1 (en) * 2002-08-07 2004-04-29 Govindugari Diwakar R. Method and architecture for data transformation, normalization, profiling, cleansing and validation
US6657568B1 (en) 2002-08-27 2003-12-02 Fmr Corp. Data packing for real-time streaming
US7047230B2 (en) * 2002-09-09 2006-05-16 Lucent Technologies Inc. Distinct sampling system and a method of distinct sampling for optimizing distinct value query estimates
AU2003284118A1 (en) * 2002-10-14 2004-05-04 Battelle Memorial Institute Information reservoir
US7698163B2 (en) * 2002-11-22 2010-04-13 Accenture Global Services Gmbh Multi-dimensional segmentation for use in a customer interaction
US7403942B1 (en) * 2003-02-04 2008-07-22 Seisint, Inc. Method and system for processing data records
US7117222B2 (en) * 2003-03-13 2006-10-03 International Business Machines Corporation Pre-formatted column-level caching to improve client performance
US7433861B2 (en) * 2003-03-13 2008-10-07 International Business Machines Corporation Byte-code representations of actual data to reduce network traffic in database transactions
US20040249810A1 (en) * 2003-06-03 2004-12-09 Microsoft Corporation Small group sampling of data for use in query processing
GB0314591D0 (en) 2003-06-21 2003-07-30 Ibm Profiling data in a data store
US7426520B2 (en) 2003-09-10 2008-09-16 Exeros, Inc. Method and apparatus for semantic discovery and mapping between data sources
EP1676217B1 (en) 2003-09-15 2011-07-06 Ab Initio Technology LLC Data profiling
US7587394B2 (en) * 2003-09-23 2009-09-08 International Business Machines Corporation Methods and apparatus for query rewrite with auxiliary attributes in query processing operations
US7149736B2 (en) 2003-09-26 2006-12-12 Microsoft Corporation Maintaining time-sorted aggregation records representing aggregations of values from multiple database records using multiple partitions
AU2003279999A1 (en) 2003-10-21 2005-06-08 Nielsen Media Research, Inc. Methods and apparatus for fusing databases
US20050177578A1 (en) 2004-02-10 2005-08-11 Chen Yao-Ching S. Efficient type annontation of XML schema-validated XML documents without schema validation
US7376656B2 (en) * 2004-02-10 2008-05-20 Microsoft Corporation System and method for providing user defined aggregates in a database system
US8447743B2 (en) * 2004-08-17 2013-05-21 International Business Machines Corporation Techniques for processing database queries including user-defined functions
US7774346B2 (en) 2005-08-26 2010-08-10 Oracle International Corporation Indexes that are based on bitmap values and that use summary bitmap values
US20070073721A1 (en) 2005-09-23 2007-03-29 Business Objects, S.A. Apparatus and method for serviced data profiling operations
US8271452B2 (en) 2006-06-12 2012-09-18 Rainstor Limited Method, system, and database archive for enhancing database archiving
US8412713B2 (en) 2007-03-06 2013-04-02 Mcafee, Inc. Set function calculation in a database
US7912867B2 (en) * 2008-02-25 2011-03-22 United Parcel Services Of America, Inc. Systems and methods of profiling data for integration
US9251212B2 (en) 2009-03-27 2016-02-02 Business Objects Software Ltd. Profiling in a massive parallel processing environment
KR101688555B1 (ko) 2009-09-16 2016-12-21 아브 이니티오 테크놀로지 엘엘시 데이터세트 요소의 매핑
AU2010319344B2 (en) 2009-11-13 2014-10-09 Ab Initio Technology Llc Managing record format information
US8396873B2 (en) 2010-03-10 2013-03-12 Emc Corporation Index searching using a bloom filter
US8296274B2 (en) 2011-01-27 2012-10-23 Leppard Andrew Considering multiple lookups in bloom filter decision making
AU2012211167B2 (en) 2011-01-28 2014-08-21 Ab Initio Technology Llc Generating data pattern information
US8610605B2 (en) 2011-06-17 2013-12-17 Sap Ag Method and system for data compression
US8762396B2 (en) 2011-12-22 2014-06-24 Sap Ag Dynamic, hierarchical bloom filters for network data routing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016195421A1 (ko) * 2015-06-04 2016-12-08 장원중 통계 분석 기반의 데이터 프로파일링을 제공하기 위한 방법, 시스템 및 비일시성의 컴퓨터 판독 가능한 기록 매체
KR20210085886A (ko) * 2019-12-31 2021-07-08 가톨릭관동대학교산학협력단 속성 값 품질 지수를 이용한 데이터 프로파일링 방법 및 데이터 프로파일링 시스템

Also Published As

Publication number Publication date
EP2261820A3 (en) 2010-12-29
JP2010267288A (ja) 2010-11-25
CA2655735A1 (en) 2005-03-31
US20050114369A1 (en) 2005-05-26
JP5372850B2 (ja) 2013-12-18
ATE515746T1 (de) 2011-07-15
JP2007506191A (ja) 2007-03-15
US20050114368A1 (en) 2005-05-26
US20050102325A1 (en) 2005-05-12
JP2010267289A (ja) 2010-11-25
KR20080016532A (ko) 2008-02-21
CA2538568C (en) 2009-05-19
AU2009200293A1 (en) 2009-02-19
AU2009200294A1 (en) 2009-02-19
WO2005029369A9 (en) 2006-05-04
KR20060080588A (ko) 2006-07-10
AU2004275334B2 (en) 2011-02-10
US8868580B2 (en) 2014-10-21
EP2261820A2 (en) 2010-12-15
EP2261821A2 (en) 2010-12-15
AU2009200293B2 (en) 2011-07-07
EP1676217A2 (en) 2006-07-05
WO2005029369A2 (en) 2005-03-31
EP2261821B1 (en) 2022-12-07
CA2655731A1 (en) 2005-03-31
KR20070106574A (ko) 2007-11-01
EP1676217B1 (en) 2011-07-06
CA2655735C (en) 2011-01-18
US7849075B2 (en) 2010-12-07
CN102982065A (zh) 2013-03-20
KR100899850B1 (ko) 2009-05-27
US9323802B2 (en) 2016-04-26
JP5372851B2 (ja) 2013-12-18
HK1093568A1 (en) 2007-03-02
CN102982065B (zh) 2016-09-21
EP2261821A3 (en) 2010-12-29
AU2004275334B9 (en) 2011-06-16
AU2004275334A1 (en) 2005-03-31
JP5328099B2 (ja) 2013-10-30
KR100922141B1 (ko) 2009-10-19
KR101033179B1 (ko) 2011-05-11
CA2538568A1 (en) 2005-03-31
US7756873B2 (en) 2010-07-13
CA2655731C (en) 2012-04-10
US20160239532A1 (en) 2016-08-18
US20150106341A1 (en) 2015-04-16
WO2005029369A3 (en) 2005-08-25

Similar Documents

Publication Publication Date Title
KR101033179B1 (ko) 데이터 프로파일링
EP2951736B1 (en) Data records selection
EP1872229A2 (en) Method and system for handling large data sets in a statistical language
KR20130095250A (ko) 관련 데이터세트의 처리
Rizzi et al. Cubeload: A parametric generator of realistic OLAP workloads
CN101271471B (zh) 数据处理方法、软件和数据处理系统
AU2013200067B2 (en) Data profiling

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E601 Decision to refuse application