KR102240137B1 - 데이터베이스 키 식별 - Google Patents
데이터베이스 키 식별 Download PDFInfo
- Publication number
- KR102240137B1 KR102240137B1 KR1020167018899A KR20167018899A KR102240137B1 KR 102240137 B1 KR102240137 B1 KR 102240137B1 KR 1020167018899 A KR1020167018899 A KR 1020167018899A KR 20167018899 A KR20167018899 A KR 20167018899A KR 102240137 B1 KR102240137 B1 KR 102240137B1
- Authority
- KR
- South Korea
- Prior art keywords
- filter
- fields
- data set
- values
- key
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
컴퓨터 저장 매체에 부호화되는 컴퓨터 프로그램을 포함하는, 데이터베이스 키 식별을 위한 방법, 시스템, 및 장치. 상기 방법 중 하나는 레코드를 포함하는 제1 데이터 세트 내 제1 필드의 식별을 수신하는 단계를 포함한다. 상기 방법은 값의 세트를 식별하는 단계를 포함하고, 상기 세트는 각각의 레코드에 대해 상기 필드와 연관된 값을 포함한다. 상기 방법은 상기 값의 세트에 기초하여 필터 마스크를 생성하는 단계를 포함하고, 상기 필터 마스크의 적용은 주어진 값이 상기 값의 세트 내에 있지 않다고 결정할 수 있다. 상기 방법은 제2 필드를 포함하는 제2 데이터 세트를 수신하는 단계를 포함하고, 상기 제2 데이터 세트는 레코드를 포함한다. 상기 방법은 상기 필터 마스크를 통과한 상기 제2 필드와 연관된 값을 가진 상기 제2 데이터 세트 내의 레코드의 개수의 카운트를 결정하는 단계를 포함한다. 상기 방법은 또한 상기 카운트를 프로파일로 저장하는 단계를 포함한다.
Description
본 발명은 데이터 품질에 관한 것이다.
많은 사업체들이 키에 의해 함께 링크되는 데이터 세트의 커다란 컬렉션을 가지고 있다. 이러한 데이터 세트는 관계형 데이터베이스 내의 테이블이거나 또는 디스크 스토리지 시스템 내의 플랫 파일(flat file)일 수 있다. 상기 컬렉션은 수십개 또는 그 이상의 키를 가진 수백 또는 수천개의 데이터 세트로 이루어질 수 있다. 시간이 흐르면서 복수의 소스로부터의 데이터의 축적으로 발생하는 이러한 구조는 설계되지 않은 상태일 수도 있다. 한때 설계가 이루어졌을지도 모르지만, 그러한 설계가 유실되었거나, 잊혀졌거나, 또는 시대에 뒤진 것으로 알려지게 된 것이다. 그러한 설계가 전문가들에게만 알려져 있을 수도 있으나, 문서화되지 않은 상태일 수 있다. 또는, 설계가 알려져 있고 최신일 수 있지만, 시행되지 않은 상태일 수 있다.
일반적으로, 본 명세서에서 설명되는 요지의 하나의 혁신적인 양태는 제1 데이터 세트 내 제1 필드의 식별을 수신하는 동작을 포함하는 방법에서 구현될 수 있고, 제1 데이터 세트는 복수의 레코드를 포함한다. 상기 방법은 값의 세트를 식별하는 동작을 포함하고, 상기 세트는 각각의 레코드에 대해 상기 필드와 연관된 각각의 레코드 내의 값을 포함한다. 상기 방법은 상기 값의 세트에 기초하여 필터 마스크를 생성하는 상기 동작을 포함하고, 상기 필터 마스크의 적용은 주어진 값이 상기 값의 세트 내에 있지 않다고 결정할 수 있다. 상기 방법은 제2 데이터 세트를 수신하는 동작을 포함하고, 상기 제2 데이터 세트는 제2 필드를 포함하며, 상기 제2 데이터 세트는 복수의 레코드를 포함한다. 상기 방법은 상기 필터 마스크를 통과한 상기 제2 필드와 연관된 값을 가진 상기 제2 데이터 세트 내의 레코드의 개수의 카운트를 결정하는 동작을 포함한다. 상기 방법은 또한 상기 카운트를 프로파일로 저장하는 동작을 포함한다.
이 양태의 다른 실시예는 대응하는 컴퓨터 시스템, 장치, 및 하나 이상의 컴퓨터 저장 장치에 기록된 컴퓨터 프로그램을 포함하고, 이들 각각은 상기 방법의 동작을 수행하도록 구성된다. 하나 이상의 컴퓨터의 시스템은, 동작에 있어서 시스템으로 하여금 또는 시스템으로 하여금 상기 동작을 수행하게 하는, 상기 시스템에 설치된 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 가진 것에 의해 특정 동작을 수행하도록 구성될 수 있다. 하나 이상의 컴퓨터 프로그램은, 데이터 프로세싱 장치에 의해 실행되는 경우, 상기 장치가 상기 동작을 수행하게 하는 명령을 포함한 것에 의해 특정 동작을 수행하도록 구성될 수 있다.
전술한 내용 및 다른 실시예는 각각 선택적으로 다음의 특징 중 하나 이상을 단독으로 또는 조합으로 포함할 수 있다. 상기 방법은 상기 제2 필드와 연관된 값을 가진 상기 제2 데이터 세트 내의 상기 레코드 및 상기 값의 세트의 소렌센-다이스 계수()를 결정하는 동작을 포함할 수 있다. 필터 마스크를 생성하는 단계는 상기 값의 세트 내의 각각의 값에 대해 대응하는 값에 대한 필터 키를 생성하는 단계를 포함할 수 있다. 상기 대응하는 값에 대한 필터 키를 생성하는 단계는, 상기 대응하는 값에 대한 해쉬 값을 생성하는 단계, 상기 해쉬 값을 미리 정해진 수의 정수로 세그먼트화하는 단계, 상기 정수에 기초하여 비트 벡터에서 비트를 설정함으로써 필터 키를 생성하는 단계를 포함할 수 있다. 상기 필터 마스크를 생성하는 단계는 각각의 생성된 상기 필터 키에 대해 2진 연산(binary operation)을 수행하는 단계를 포함할 수 있다. 상기 필터 마스크를 통과한 상기 제2 필드와 연관된 값을 가진 상기 제2 데이터 세트 내의 레코드의 개수의 카운트를 결정하는 단계는, 상기 제2 필드와 연관된 값에 대한 제2 필터 키를 계산하는 단계 및 상기 제2 필터 키를 상기 필터 마스크와 비교하는 단계를 포함할 수 있다.
본 발명의 추가적인 일 양태에 따르면 시스템이 제공되는데 이러한 시스템은, 복수의 레코드를 포함하는 제1 데이터 세트를 수신하기 위한 수단; 상기 제1 데이터 세트의 잠재적인 키 필드로서 하나 이상의 제1 필드의 세트를 식별하기 위한 수단; 상기 하나 이상의 제1 필드의 세트 내의 하나 이상의 값을 표현하는 하나 이상의 필터 키를 식별하기 위한 수단; 상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 비트의 세트를 저장하는 필터 마스크를 메모리에 저장하기 위한 수단; 하나 이상의 제2 필드를 갖는 복수의 레코드를 포함하는 제2 데이터 세트를 수신하기 위한 수단; 상기 잠재적인 키 필드로서 식별된 상기 하나 이상의 제1 필드의 세트 내의 값으로부터 생성되는 상기 필터 마스크를 통해 상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값을 표현하는 비트를 필터링하여, 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드의 값이 필터 마스크에서 표현됨으로써 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하기 위한 수단; 및 상기 하나 이상의 제2 필드의 하나 이상의 값이 상기 필터 마스크에서 표현된 값의 세트에 포함될 때, 상기 제1 데이터 세트의 상기 잠재적인 키 필드와 상기 제2 데이터 세트 내의 상기 하나 이상의 제2 필드 사이의 잠재적인 키 관계를 나타내기 위한 수단을 포함한다.
본 발명의 추가적인 일 양태에 따르면 시스템이 제공되는데 이러한 시스템은, 복수의 레코드를 포함하는 제1 데이터 세트를 수신하기 위한 수단; 상기 제1 데이터 세트의 잠재적인 키 필드로서 하나 이상의 제1 필드의 세트를 식별하기 위한 수단; 상기 하나 이상의 제1 필드의 세트 내의 하나 이상의 값을 표현하는 하나 이상의 필터 키를 식별하기 위한 수단; 상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 비트의 세트를 저장하는 필터 마스크를 메모리에 저장하기 위한 수단; 하나 이상의 제2 필드를 갖는 복수의 레코드를 포함하는 제2 데이터 세트를 수신하기 위한 수단; 상기 잠재적인 키 필드로서 식별된 상기 하나 이상의 제1 필드의 세트 내의 값으로부터 생성되는 상기 필터 마스크를 통해 상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값을 표현하는 비트를 필터링하여, 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드의 값이 필터 마스크에서 표현됨으로써 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하기 위한 수단; 및 상기 하나 이상의 제2 필드의 하나 이상의 값이 상기 필터 마스크에서 표현된 값의 세트에 포함될 때, 상기 제1 데이터 세트의 상기 잠재적인 키 필드와 상기 제2 데이터 세트 내의 상기 하나 이상의 제2 필드 사이의 잠재적인 키 관계를 나타내기 위한 수단을 포함한다.
양태들은 하나 이상의 다음의 장점을 포함할 수 있다. 데이터 품질 프로그램에 있어서 신뢰가 구축될 수 있다. 알려지지 않거나 뜻밖의 관계가 드러날 수 있다. 어느 필드가 공유된 값을 가진지에 대한 정보가 밝혀질 수 있다. 추정 관계와 식별된 관계 사이의 불일치가 밝혀질 수 있다. 추가적인 데이터 품질 분석이 기반하는 정확한 데이터 구조가 결정될 수 있다. 특히, 키 관계의 밝혀진 구조가 데이터 세트의 컬렉션의 참조 무결성을 정량화하는 시작점으로서 사용될 수 있다.
발명의 다른 특징과 장점은 다음의 설명과 청구항으로부터 명백해질 것이다.
도 1은 상기 데이터베이스 크롤링 기법(database crawling technique)이 사용될 수 있는 데이터 프로세싱 시스템의 예를 도시한 도면이다.
도 2는 예시적인 필터 마스크 생성 절차에 대한 흐름도이다.
도 3은 필터 키를 생성하는 예를 도시한 도면이다.
도 4는 필터 키로부터 필터 마스크를 생성하는 단계를 도시한 도면이다.
도 5는 필터 마스크에 기초하여 예시적인 프로파일링 절차에 대한 흐름도이다.
도 2는 예시적인 필터 마스크 생성 절차에 대한 흐름도이다.
도 3은 필터 키를 생성하는 예를 도시한 도면이다.
도 4는 필터 키로부터 필터 마스크를 생성하는 단계를 도시한 도면이다.
도 5는 필터 마스크에 기초하여 예시적인 프로파일링 절차에 대한 흐름도이다.
조직들은 많은 양의 데이터를 수집한다. 데이터는 상당 기간에 걸쳐 수집된다. 시간이 흐름에 따라, 새로운 데이터 세트가 생성되고 오래된 데이터 세트는 변경된다. 데이터 세트들 사이의 관계를 식별하기가 어려울 수 있다.
일반적으로, 데이터 세트는 구조화된 세트의 데이터이다. 데이터 세트는 별개의 레코드로 분할된다. 데이터 세트의 각각의 레코드는 공통 레코드 포맷을 공유한다. 예를 들어, 관계형 데이터베이스 테이블은 데이터의 행을 포함하고, 데이터의 각각의 레코드(예컨대, 행)는 테이블의 데이터베이스 스키마 정의에 따른다. 스키마는 테이블(또는 데이터 세트)의 정의를 포함할 수 있다. 일반적으로, 스키마는 데이터 세트 내에 존재하는 하나 이상의 필드를 정의한다. 이러한 레코드는 필드 중 하나 이상을 키로서 사용함으로써 식별될 수 있다. 일반적으로, "기본 키(primary key)"는 하나 이상의 필드이고, 그 필드의 값이 데이터 세트 내의 각각의 레코드를 고유하게 식별한다.
일부 구현에서, 기본 키가 레코드 내의 하나 이상의 필드를 포함한다. 키는 레코드 내에 포함되어 있는 사업 정보, 예를 들어, 이름 및 성(姓)으로부터 도출될 수 있고, 현재 주소는 고객(예컨대, "존", "스미스", "154 로크 레인")을 식별할 수 있다.
기본 키 중 한가지 타입이 "대체키(surrogate key)"이다. 대체키는 사업 정보로부터 도출되지 않은 고유한 식별자 또는 기본 키이다. 예를 들어, 대체키가 수치 시퀀스(numerical sequence)로부터 선택될 수 있다. 대체키는 각각의 데이터 세트에 대해 고유할 수 있거나 또는 특정 시스템 내부의 모든 데이터 세트에 걸쳐(예를 들어, 특정 회사에 대한 모든 데이터 세트에 걸쳐) 고유할 수 있다. 예를 들어, 번호 "10234"는 로크 레인 154의 존 스미스에 대한 레코드를 식별할 수 있다. 사업 정보는 변경될 수 있거나(예를 들어, 존 스미스는 로크 레인 154로부터 그린우드 Ave 275로 이사) 또는 고유하지 않을 수 있으므로(예를 들어, 로크 레인 154의 존 스미스 및 락 레인의 154 존 스미스 2세가 있을 수 있음), 대체키가 일반적으로 바람직하다. 본 명세서에서 사용된 바와 같이, 특정한 도메인 내의 모든 데이터 세트에 대해 고유한 대체키는 "시스템 차원 대체키(system-wide surrogate key)"라고 한다. 데이터 세트 내에서 고유한 대체키는 "데이터 세트 대체키"라고 한다.
데이터 세트는 또한 다른 데이터 세트와 관련이 있을 수 있고, 데이터 세트 내의 레코드는 다른 데이터 세트 내의 레코드와 관련이 있을 수 있다. 일반적으로, 데이터 세트와 레코드 간의 관계는 "외래 키(foreign key)"를 이용하여 설명된다. 외래 키는 데이터 세트의 데이터 포맷에 정의된 필드이고, 그 데이터 값의 세트가 다른 필드의 기본 키를 참조한다.
예를 들어, 사업이 고객에게 제품을 판매하기 위해 체계화될 수 있다. 고객이 하나 이상의 제품을 참조하는 주문을 한다. 비즈니스 모델을 지원하기 위해, 고객 레코드가 고객 데이터 세트 내에 저장될 수 있다. 고객이 주문하는 때, 주문 레코드가 주문 데이터 세트 내에 생성될 수 있다. 주문 레코드는 보통 고객 레코드의 기본 키를 참조함으로써 주문을 발주한 고객을 참조하는 필드를 포함한다. 보다 구체적으로, 주문 테이블은 존 스미스의 주문에 대한 레코드를 포함할 수 있다. 주문은 987,321의 수치 값을 가진 기본 키를 가질 수 있고, 수치 값 10,234(상술한 바와 같이, 이는 로크 레인 154의 존 스미스를 참조)를 담고 있는 "고객 식별자(customer identifier)" 필드를 포함할 수 있다. 이러한 예에서, 고객 데이터 세트는 1차 데이터 세트라고도 할 수 있고, 주문 데이터 세트(고객 데이터 세트를 참조)는 2차 데이터 세트라고도 할 수 있다.
일반적으로, 용어 "1차 데이터 세트" 및 "2차 데이터 세트"는 2개의 데이터 세트들 사이의 관계의 특성을 정의하고 절대적이지 않을 수 있다. 예를 들어, 주문은 복수의 라인 아이템(line item)을 포함할 수 있고, 각각의 라인 아이템은 서로 다른 제품을 참조한다. 이러한 예에서, 라인 아이템 레코드가 각각의 제품에 대해 생성될 수 있다. 라인 아이템 레코드는 주문 레코드를 참조하는 외래 키를 포함할 수 있다. 이러한 예에서, 라인 아이템 관계에 대한 주문에 따라, 주문은 1차 데이터 세트이고 라인 아이템은 2차 데이터 세트이다. 데이터 세트는 또한 복수의 관계 중 일부 관계일 수 있다. 예를 들어, 라인 아이템 레코드는 또한 제품 데이터 세트 내에 저장된 제품 레코드를 참조할 수 있다. 이러한 예에서, 제품 데이터 세트는 1차 데이터 세트이고 라인 아이템 데이터 세트는 2차 데이터 세트이다.
많은 데이터 스토어가 이러한 관계(참조 무결성(referential integrity)이라고 함)를 강제하기 위해 사용될 수 있는 메커니즘을 가지고 있다. 하지만, 빈번하게 이러한 메커니즘은 동작 또는 성능 이유 때문에 사용되지 않는다. 대신에, 시스템은 참조 무결성을 강제하기 위하여 프로그래밍 로직에 의존한다. 결과적으로, 시간이 지남에 따라, 시스템의 참조 무결성이 저하될 수 있다. 외톨이가 된(Orphaned) 레코드(1차 데이터 세트에 대해 외래 키 관계가 없는 2차 데이터 세트 내의 레코드)가 도입될 수 있다; 추정 관계가 생략될 수 있는다; 등등. 일부 경우에, 새로운 데이터 세트가 기존의 데이터 시스템으로 도입될 수 있다(예컨대, 병합 시도 중). 데이터베이스들 간의 등가의 기본 키 및 외래 키 관계가 정확히 알려지지 않을 수 있다.
스키마로부터가 아니라 데이터로부터 키 관계의 구조를 결정하는 것이, 데이터 세트의 컬렉션의 데이터 기반 데이터 품질 분석에 있어서 첫 단계 일 수 있다. 자신들의 데이터 내에 존재하는 실제 키 관계를 볼 수 있다는 것은, 그들이 데이터 품질 프로그램을 시작함에 따라 조직에 신뢰를 준다. 알려지지 않은 또는 예상치 못한 데이터 세트들 사이의 관계 드러낼 수 있고, 어느 필드가 공유된 값을 담고 있는지에 대한 정보가 밝혀질 수 있다. 추정 관계와 식별된 관계 사이의 불일치가 밝혀질 수 있다. 추가적인 데이터 품질 분석이 기반할 정확한 구조가 결정될 수 있다. 일반적으로, 기본 키-외래 키 관계의 밝혀진 구조는, 시스템 내에서 데이터 세트의 참조 무결성을 정량화하기 위한 시작점으로서 사용될 수 있다.
기본 키와 외래 키 관계를 리버스 엔지니어링(reverse engineering)하는 기존의 방법은 서로 다른 데이터 세트 내에서 잠재적인 외래 키 필드 및 잠재적인 기본 키 필드를 식별하는 것을 수반한다. 이는 잠재적인 외래 키 내의 각각의 값을 잠재적인 기본 키 내의 각각의 값과 비교하는 것을 필요로 한다.
본 명세서에서 설명되는 대안적 접근법은, 부정 오류(false negative)의 가능성(즉, 필터 마스크가 값이 세트의 구성원인 때 구성원이 아니라고 나타낼 것임)을 제거하면서 긍정 오류(false positive)(즉, 필터 마스크가 값이 세트의 구성원이 아닌 때 구성원이라고 나타낼 수 있음)를 허용하는 필터 마스크를 활용하는 것을 포함한다. 일반적으로, 필터 마스크는 잠재적인 기본 키의 필드(또는 필드들)의 레코드 내에 저장된 값으로부터 생성된다. 각각의 레코드의 잠재적인 외래 키 필드의 값은 그 다음에 필터 마스크와 비교된다.
예를 들어, 하나의 프로세스는 필드 및 데이터 세트의 지정된 컬렉션으로부터의 모든 데이터 세트의 각각의 필드 내의 값들의 분포를 특징짓기 위해 블룸 필터(Bloom filter )를 활용한다. 블룸 필터는 엘리먼트가 세트의 구성원인지 여부를 테스트하기 위해 사용될 수 있는 공간 효율적인 확률적인 데이터 구조이다.
도 1은 키 매칭 및 식별 기법 사용될 수 있는 데이터 프로세싱 시스템의 예(100)를 도시한 도면이다. 일반적으로, 키 매칭 및 식별은, 데이터 세트들 사이의 잠재적인 관계를 식별하기 위해, 하나 이상의 데이터 세트 관한 정보 및 정보를 모으는 프로세스 정보를 지칭한다. 시스템(100)은 저장 장치 또는 온라인 데이터 스트림으로의 연결과 같은 데이터의 하나 이상의 소스를 포함할 수 있는 데이터 소스(102)를 포함하는데, 각각의 하나 이상의 소스는 데이터를 다양한 포맷 중 임의의 포맷(예를 들어, 데이터베이스 테이블, 스프레드시트 파일, 플랫 텍스트 파일, 또는 컴퓨터에 의해 사용되는 네이티브 포맷) 저장하거나 제공할 수 있다. 실행 환경(104)은 필터 마스크 생성 모듈(106) 및 필터 마스크 적용 모듈(112)을 포함한다. 실행 환경(104)은, 예를 들어 UNIX 운영 체제의 버전과 같이 적합한 운영 체제의 제어 하에서 하나 이상의 범용 컴퓨터 상에 호스팅될 수 있다. 예를 들어, 실행 환경(104)은 다중 노드 병렬 컴퓨팅 환경을 포함할 수 있다. 이러한 다중 노드 병렬 컴퓨팅 환경은 복수의 중앙처리장치(CPU) 또는 프로세서 코어를 사용하는 컴퓨터 시스템의 구성을 포함할 수 있으며, 이러한 컴퓨터 시스템의 구성은 로컬에 있거나(예를 들어, 대칭형 다중 처리(SMP) 컴퓨터 등의 멀티프로세서 시스템), 또는 로컬에 분산되거나(예컨대, 클러스터로서 결합된 복수의 프로세서 또는 대규모 병렬 처리(MPP) 시스템), 또는 원격에 있거나, 또는 원격에 분산되어 있거나(예컨대, 근거리 통신망(LAN) 및/또는 광역 통신망(WAN))을 통해 결합된 복수의 프로세서), 또는 이들의 임의의 조합일 수 있다.
필터 마스크 생성 모듈(106)은 데이터 소스(102)로부터 데이터를 판독하고 데이터 소스(102) 내에 데이터 세트의 하나 이상의 필드에 대한 필터 마스크를 저장한다. 필터 마스크는 예를 들어, 블룸 필터일 수 있다.
기존의 블룸 필터는 많은 비트 및 하나 이상의 해시 함수를 포함한다. 각 해시 함수는 입력 값을 필터 키 내의 비트의 서브 세트에 매핑하기 위해 사용된다. 필터 키는 필터 마스크를 생성하기 위해 조합된다. 블룸 필터는 후술하는 바와 같이 단일 해시 함수를 사용하는 필터 키를 생성함으로써 생성될 수 있다.
필터 마스크는 잠재적인 키로서 식별되는 필드에 대해 생성될 수 있다. 필터 마스크는 후술하는 프로세스를 이용하여 생성될 수 있다. 데이터 소스(102)를 제공하는 저장 장치는 예를 들어, 실행 환경(104)을 호스팅하는 컴퓨터 상에 연결된 저장 매체(예컨대, 하드 드라이브(108))에 저장되어 실행 환경(104)에 대해 로컬일 수 있거나, 또는 예를 들어, 실행 환경(104)을 호스팅하는 컴퓨터와의 원격 연결(예컨대, 클라우드 컴퓨팅 인프라에 의해 제공되는)을 통해 원격 시스템(예를 들어, 메인 프레임(110)) 상에 호스팅되어 실행 환경(104)에 대해 원격일 수 있다.
필터 마스크 적용 모듈(112)은, 데이터 세트의 레코드 내의 값을 비교하기 위해 필터 마스크 생성 모듈(106)에 의해 생성된 필터 마스크를 사용한다. 필터 마스크 적용 모듈은, 데이터 세트의 특정 필드에 대해(다른 것들 중에서) 이하에서 설명되는 바와 같은 필터 마스크에 의해 지정되는 특성과 매칭되는 값의 개수의 카운트, 필터 마스크와 매칭되는 값의 개수의 퍼센트, 및/또는 필터 마스크의 값과의 유사성을 비교하는 통계, 예컨대, 소렌센-다이스 계수()를 결정할 수 있다. 데이터 세트 내의 필드가 식별되는 키 필드에 대한 양호한 매칭인지 여부를 판단하기 위해 사용될 수 있는 다른 통계가 또한 결정될 수 있다.
필터 마스크 적용 모듈(112)은 다른 데이터 프로파일링 모듈(data profiling module)과 함께 동작할 수 있다. 출력 데이터(114)는 데이터 소스(102) 또는 실행 환경(104)에 접근 가능한 데이터 스토리지 시스템(116) 내에 다시 저장될 수 있거나, 또는 그렇지 않으면 사용될 수 있다. 데이터 스토리지 시스템(116)은 개발자(120)가 잠재적인 키인, 데이터 세트 내의 하나 이상의 필드를 식별할 수 있는 개발 환경(118)에 또한 접근 가능하다.
개발 환경(118)은, 일부 구현에서, 꼭지점들 간의 방향성 링크(워크 엘리먼트의 플로우, 즉, 데이터를 나타냄)에 의해 연결된 꼭지점(데이터 프로세싱 컴포넌트 또는 데이터 세트를 나타냄)를 포함하는 애플리케이션을 데이터 플로우 그래프로서 개발하기 위한 시스템이다. 예를 들어, 이러한 환경은 본 명세서에 원용되어 있는, "Managing Parameters for Graph-Based Applications"라는 제목의 미국 공개 번호 제2007/0011668호에 더 상세하게 설명되어 있다. 이러한 그래프-기반 계산을 수행하기 위한 시스템이 본 명세서에 원용되어 포함된, "EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS"라는 제목의 미국 특허 5,966,072에서 설명된다. 이러한 시스템에 따라 만들어진 데이터 플로우 그래프는, 그래프 컴포넌트에 의해 대표되는 개별 프로세스로 정보를 입출력하고, 프로세스들 사이에 정보를 이동하며, 프로세스들을 위한 실행 순서를 정의하기 위한 방법을 제공한다. 이러한 시스템은 임의의 가용한 방법(예컨대, 그래프의 링크에 따른 통신 경로는 TCP/IP 또는 UNIX 도메인 소켓을 이용하거나 공유 메모리를 사용하여 프로세스 간의 데이터를 전달할 수 있음)으로부터 프로세스간 통신 방법을 선택하는 알고리즘을 포함한다.
필터 마스크 생성 모듈(106)은, 서로 다른 형태의 데이터베이스 시스템을 포함하는, 데이터 소스(102)를 구현하는 다양한 타입의 시스템으로부터 데이터를 수신할 수 있다. 데이터는 가능하게는 널 값을 포함하는, 각각의 필드("속성" 또는 "열"이라고도 함)에 대한 값을 가진 레코드로서 체계화될 수 있다. 데이터 소스로부터 데이터를 처음으로 판독할 때, 필터 마스크 생성 모듈(106)은 보통 그 데이터 소스 내의 레코드에 관한 일부 초기 포맷 정보로 시작한다. 어떤 환경에서, 데이터 소스의 레코드 구조는 초기에 알려지지 않을 수 있고, 대신에 데이터 소스나 데이터의 분석 후에 결정될 수 있다. 레코드에 관한 초기 정보는 예를 들어, 별개의 값을 나타내는 비트의 수, 레코드 내부의 필드의 순서, 및 비트로 나타내는 값(예컨대, 문자열, 부호 있는/부호 없는(signed/unsigned) 정수)의 타입을 포함할 수 있다.
도 2는 블룸 필터에 사용되는 예시적인 필터 마스크 생성 절차(200)에 대한 흐름도(200)이다. 절차는 예를 들어, 도 1의 필터 마스크 생성 모듈(106)에 의해 수행될 수 있다. 절차(200)는 데이터(202)를 수신하는 단계를 포함한다. 데이터는 데이터베이스 테이블 또는 플랫 파일과 같은 데이터 세트 내에 포함될 수 있다. 데이터는 하나 이상의 필드 및 하나 이상의 레코드를 포함할 수 있으며, 각각의 레코드는 필드의 적어도 일부에 대한 값을 포함한다. 일부 시나리오에서, 레코드는 널(NULL) 값 또는 값이 특정 필드에 대해 존재하지 않는다는 다른 표시를 포함할 수 있다.
절차(200)는 잠재적인 키(206)를 식별하는 단계를 포함한다. 잠재적인 키는 하나 이상의 필드로 구성될 수 있다. 잠재적인 키는 사용자에 의해 식별될 수 있거나 또는 데이터나 메타데이터(데이터를 설명하는 데이터)에 기초하여 결정될 수 있다. 예를 들어, 잠재적인 키는 관계형 데이터베이스 테이블 상에서 기본 키 제약에 의해 식별될 수 있다. 일반적으로, 제약은 관계형 데이터베이스 테이블과 같은 데이터 세트 내의 데이터에 대한 규칙을 명시한다. 특정 필드(또는 필드의 조합)가 데이터 세트 내의 레코드를 고유하게 식별할 수 있도록, 기본 키 제약은 특정 필드(또는 필드의 조합)가 기본 키라는 것을 나타낸다.
각각의 레코드에 대해, 절차(200)는 필터 키(208)를 생성한다. 일반적으로, 필터 키는 레코드의 필드 내에 저장된 값에 기초하여 생성될 수 있는 밀도가 듬성듬성 분포된 키이다. 부정 오류를 허용하지 않는 필터 마스크를 생성하기 위해, 필터 키가 필드 내의 각각의 고유한 값에 대해 생성되어야 한다. 일부 구현에서, 고유한 값은 키를 생성하기 전에 식별될 수 있고 키가 각각의 고유한 값에 대해 생성될 수 있다.
도 3은 필터 키(350)를 생성하는 예를 도시하고 있다. 기존의 블룸 필터에서, 일련의 해시 함수가 필터 키를 식별하기 위해 값에 대해 수행된다. 각각의 해시 함수는 일부 엘리먼트를 어레이 내에서의 하나 이상의 비트로 매핑한다. 대체 구현 예에서, 후술하는 바와 같이 다중-단계 해싱 함수(multi-step hashing function)가 사용될 수 있다.
이러한 예에서, 레코드에 대한 필드는 값(302), 이 예에서 "존 스미스"를 포함한다. 해슁 알고리즘(304)은 값(302)에 적용되어 해쉬 값(306)을 생성하고, 이 예에서 해쉬 값은 16진수 표현 6117323D2CABBC17D44C2B44587F682Chex을 가진다. 일반적으로, 해슁 알고리즘은 충돌에 대해 충분히 낮은 가능성을 가지는 임의의 해슁 알고리즘일 수 있다. 이러한 예에서, MD5(MD5 message-digest algorithm) 알고리즘이 사용된다. MD5 해쉬는 128-비트(16-바이트) 해쉬 값을 생성한다. 160-비트(20 바이트) 해쉬 값을 생성하는 SHA-1, 또는 224, 256, 384, 또는 512 비트 해쉬 값을 생성하는 SHA-2 같은 다른 해슁 알고리즘이 또한 사용될 수 있다. 일반적으로, 해슁 알고리즘은 바라는 성능 특성을 유지하면서 데이터 내에서 충돌의 가능성을 최소화하기 위해 선택된다. SHA-1은 5개의 부호가 없는 4 바이트 정수로서 해석될 수 있는 20 바이트 문자열을 반환한다. SHA-256은 8개의 부호가 없는 4 바이트 정수로서 해석될 수 있는 32 바이트 문자열을 반환한다. 일반적으로, 키의 크기 및 이에 따른 알고리즘은 분석될 데이터의 크기에 기초하여 선택된다. 키의 크기는 키 공간 내에서 충돌을 피하기 위하여 증가된다. 예를 들어, 64MB 키 및 2천 5백만개의 행 후보 키 테이블은 대략 0.0004의 긍정 오류 비율을 가지는 5개의 키(SHA-1)를 생성하고, 대략 0.0001의 긍정 오류 비율을 가지는 8개의 키(SHA-256)를 생성한다.
절차는 해쉬 값(306)을 수치 값으로 분할하고(308), 이러한 예에서 4개의 바이트 정수 값 310, 320, 328, 및 330으로 분할한다. 예를 들어, md5 해쉬 값 6117323D2CABBC17D44C2B44587F682Chex은, 정수 값 6117323Dhex, 2CABBC17hex, D44C2B44hex, 및 587F682Chex으로 분할된다. 다른 크기가 사용될 수 있다. 예를 들어, 해쉬 값은 8 바이트 정수 값으로 분할될 수 있다.
예시적인 목적을 위해, 도 3은 정수 값 310(6177323Dhex)이 또한 10진수 값 (1,628,910,141decimal)으로서 표현될 수 있다는 것을 나타낸다.
필터 키의 길이가 정수(예컨대, 부호가 없는 4개의 바이트 정수)의 최대값보다 작은 시나리오에서, 정수의 값은 모듈러 연산(modulo operation)을 사용하여 감소될 수 있다. 이러한 예에서, 필터 키(350)의 크기가 4096 비트인 경우, 각각의 정수 값 310, 320, 328, 및 330은 모듈로 4096에 의해 조절되어 값 316, 324, 332, 및 334를 생성한다.
필터 키의 크기는 시스템에 따라 변경될 수 있다. 예를 들어, 필터 키는 크기가 8 메가 바이트(MB), 또는 67,108,864 비트일 수 있다. 정확한 크기는 잘 이해되는 최적 성능 및 정밀도에 대한 블룸 필터의 통계에 기초하여 선택된다. 일반적으로, 블룸 필터의 크기는 필터 마스크가 듬성듬성 분포되는 것, 즉, 설정된 비트('1')에 대해 많은 수의 설정되지 않은 비트('0')를 가지는 것을 보장하기 위하여 선택된다.
절차는 각각의 정수 값을 필터 키(350) 내의 비트로 매핑한다. 일부 구현에서, 필터 키(350)는 1차원 어레이의 비트이다. 어레이 내의 위치는 인덱스라고 하는 어레이의 헤드로부터의 수치 오프셋에서 베이스 오프되어(based off) 결정될 수 있다. 프로그래밍 언어에 따라, 어레이 내의 제1 비트는 인덱스 '0' (제로-기반 넘버링) 또는 인덱스 '1'을 이용하여 참조될 수 있다. 이러한 예에서, 어레이는 제로-기반이다. 각각의 정수 값은 어레이 내에서 단일 비트를 설정하는 것을 야기한다. 비트는 인덱스 값 위치에서 '1'의 값으로 설정된다. 이러한 예에서, 인덱스 위치 573, 2092, 2884, 및 3095에서 비트는 '1'로 설정되고 나머지 비트는 '0'으로 설정된다(또는 0으로 남음).
다시 도 2를 참조하면, 절차는 필터 키를 조합하여 필터 마스크(212)를 생성한다. 도 4는 필터 키로부터 필터 마스크를 생성하는 것을 도시한 도면이다. 데이터 세트는 레코드를 포함하고, 각각의 레코드는 잠재적인 키로서 식별된 필드(402a 내지 402j) 내의 값을 포함한다. 절차는, 각각의 값(예컨대, 값 조나스 멀스(402a)은 필터 키(Key A, 404a)를 생성하기 위해 사용되고, 값 소피아 보토우(402b)는 필터 키(Key B, 404b)를 생성하기 위해 사용됨)에 대한 필터 키(404a 내지 404j)를 생성한다. 절차는 필터 마스크(406)를 생성하기 위해 필터 키(404a 내지 404j)를 조합한다. 필터 키(404a 내지 404j)는 예를 들어, 2진 연산을 이용하여 조합될 수 있다. OR 연산은 2개의 부울(Boolean) 값(부울 값은 참 또는 거짓을 포함)을 받아 들이고 2개의 값이 모두 참이거나 2개의 값이 모두 거짓이면 참을 반환한다. 통상적으로, 2진수 '1'은 참 값을 나타내고 2진 '0는 거짓 값을 나타낸다. 2진 연산은 동일 길이의 2개의 비트 패턴을 취하고 대응하는 비트의 각각의 페어에 대한 논리적인 포함적 논리합 연산(logical inclusive OR operation)을 수행한다. 제1 비트가 1이거나 또는 제2 비트가 1이거나 또는 양자 모두의 비트가 1이면 각각의 위치 내의 결과는 1이다. 그렇지 않으면, 결과는 0이다.
예를 들어, 숫자 10011B 및 숫자 00010B의 2진 OR은, 이하를 생성한다
10011B
00010B
10011B
결과적으로 발생하는 필터 마스크(406)는 데이터 세트에 대한 잠재적인 키의 컨텐츠의 "지문(fingerprint)"이다.
도 2를 참조하면, 절차는 데이터 세트와 연관된 메타-데이터, 또는 임의의 다른 저장 매체 내의 메타-데이터를 가지는 안정된 데이터 스토어(persistent data store) 내에 필터 마스크를 저장(214) 할 수 있다.
도 5는 필터 마스크에 기초하여 예시적인 프로파일링 절차(500)에 대한 흐름도를 도시한 도면이다. 절차(500)는 필터 마스크(501)를 수신한다. 필터 마스크는 상술한 프로세스를 이용하여 생성될 수 있다. 일부 구현에서, 절차(500)는 하나 이상의 필터 마스크를 수신할 수 있다. 예를 들어, 시스템이나 사용자는 2개의 데이터 세트 사이의 임의의 기본 키-외래 키 관계를 식별하기 위해, 비교될 2개의 데이터 세트의 식별을 시도할 수 있다. 또는, 데이터 세트는 시스템 내의 초기의 데이터 세트 및 모든 다른 데이터 세트 간의 임의의 키 관계를 식별하기 위해, 복수의 서로 다른 데이터 세트와 비교될 수 있다. 일부 구현에서, 필터 마스크는 데이터 세트 내의 각각의 필드에 생성될 수 있다. 각각의 필터 마스크는 다른 데이터 세트 내의 필드와 비교될 수 있다.
절차(500)는 프로파일링할 데이터(502)를 수신한다. 데이터는 각각의 데이터 세트가 하나 이상의 데이터 세트를 포함할 뿐만 아니라, 각각의 하나 이상의 레코드가 하나 이상의 필드에 대한 값을 포함한다. 일부 구현에서, 데이터 세트의 하나 이상의 필드는 선택적일 수 있다. 레코드는 선택적인 필드에 대한 값을 포함할 수 있거나 포함하지 않을 수 있다.
절차(500)는 데이터 세트를 순차적으로 또는 병렬로 분석할 수 있다. 각각의 병렬 프로세스에는 필터 마스크 자신의 복사본이 공급될 수 있다. 필터 마스크는 비교적 듬성듬성 분포될 만큼 충분히 큰 경우, 필터 마스크가 처리되는 데이터에 비교되는 때 비교적 작게 유지될 수 있다. 각각의 레코드에 대해, 절차는 필터 마스크를 필드에 대한 값에 적용한다. 일부 구현에서, 절차는 단일 필드, 예컨대, 데이터베이스 테이블 내의 미리 정해진 행을 처리할 수 있다. 다른 구현예에서, 시스템은 레코드 내의 각각의 값을 하나 이상의 필터 마스크와 비교할 수 있다.
일부 구현에서, 값을 필터 마스크와 비교하는 단계는 값(504)에 대한 필터 키를 생성하는 단계를 포함할 수 있다. 필터 키는 도 2 및 도 3에 대해 상술한 프로세스를 사용하여 생성될 수 있다. 일반적으로, 각각의 필터 키는 필터 마스크를 생성하기 위해 조합되는 키를 생성하기 위해 사용되는 동일한 프로세스를 이용하여 생성될 수 있다. 동일한 프로세스를 사용하는 것은 모든 키가 필터 마스크와 동일한 길이라는 것을 보장한다.
생성된 필터 키는 2진 AND 연산(506)을 수행함으로써 필터 마스크와 비교될 수 있다. 일반적으로, AND 연산은 2개의 값을 받아들이고, 값들 양자 모두가 참이면 긍정 반응을 생성하고, 그렇지 않으면 부정 반응을 생성한다. 통상적으로, 2진수 '1'은 참 값을 나타내고 2진수 '0'는 거짓 값을 나타낸다. 2진 AND 연산은 동일 길이의 2개의 비트 패턴을 받아들이고 대응하는 비트의 각각의 페어에 대한 AND 연산을 수행하는 함수이다. 제1 비트가 1이고 제2 비트가 1이면 각각의 위치 내의 결과는 1이다. 그렇지 않으면, 결과는 0이다.
예를 들어, 숫자 '10011B'와 숫자 '00010'B의 2진 AND는 이하를 생성한다:
10011B
00010B
00010B
2진 AND 연산의 결과는 필터 키(506)와 비교될 수 있다. 2진 AND 연산의 결과가 필터 키와 매칭되면, 그 다음에 값은 필터를 전달하고 값은 잠재적인 매치(match)이다. 2진 AND 연산의 결과가 필터 키와 일치하지 않으면, 그 다음에 값은 필터를 전달하지 않고, 값은 매치가 아니다.
예를 들어, 10011B의 필터 마스크가 00010B의 필터 키와 비교된다. 상술한 바와 같이, 2개의 2진수에 대해 2진 AND 연산을 수행한 결과는 00010B의 값이다. 결과 값(00010B)이 필터 키(00010B)와 같으므로, 필터 키는 필터를 전달한다.
반대되는 예로서, 필터 마스크 10011B는 필터 키 01001B와 비교된다. 마스크 상에 형성된 2진 AND 연산에 대해 아래에 나타냈다.
10011B
01001B
00001B
결과 때문에, 00001B는 필터 키 01001B와 일치하지 않고, 필터 키는 필터를 전달하지 않는다.
필터 키를 필터 마스크와 비교하는 것은 비교적 빠른 연산이다. 따라서, 많은 수의 레코드가 기존의 키 식별 방법을 통해 더 빠르고 효율적으로 처리될 수 있으며, 이러한 기존의 키 식별 방법은 일반적으로, 잠재적인 기본 키 필드 내의 각각의 값을 잠재적인 외래 키 필드 내의 각각의 값과 비교하는 단계를 포함한다.
상술한 바와 같이, 필터 마스킹 알고리즘은 엘리먼트가 필터 마스크을 생성하기 위해 사용되는 세트의 구성원이 아니라는 것을 확정적으로 결정하기 위해 선택될 수 있다. 비교의 결과는 안정적인 데이터 스토어, 예컨대, 관계형 데이터베이스 또는 플랫 파일 내에 저장될 수 있다.
일단 절차가 데이터 세트의 레코드에 대한 결정된 필드를 처리하였다면, 절차는 프로세스(508)에 대한 더 많은 데이터 세트가 있는지 여부를 판단할 수 있다. 프로세스에 대해 더 많은 데이터 세트가 있으면, 다음 데이터 세트가 수신된다(502).
일부 구현에서, 기본 테이블 내의 잠재적인 기본 키로부터 생성된 필터 마스크는 잠재적인 2차 테이블 내의 각각의 필드와 비교될 수 있다.
일부 구현에서, 서로 다른 데이터 세트로부터의 많은 필터 마스크가 절차(502)의 시작에서 생성될 수 있다. 후보 데이터 세트가 처리되면서, 모든 키 마스크가 컴퓨터 메모리로 로딩될 수 있다. 후보 데이터 세트 내의 각각의 필드의 값이 최소 추가적인 오버헤드를 가진 채로 각각의 이러한 블룸 필터에 대해 테스트될 수 있다.
일단 모든 값이 처리되면, 통계가 기록되고 분석된다(510). 통계가 필터 마스크와 비교된 값을 포함하는 각각의 필드에 대해 기록될 수 있다.
추가적인 통계가 계산될 수 있다. 예를 들어, 절차는 통계가 레코드의 개수, 필드 내의 값이 필드 내의 상이값(distinct value)의 개수인 필터 마스크 내에서 발견되는 레코드의 개수, 및 소렌센-다이스 계수(2개의 샘플의 유사성을 비교하기 위해 사용되는 통계)를 포함하는 각각의 동작에 대해 수집될 수 있는 것을 결정할 수 있다. 잠재적인 키 필드와 타겟 필드 간의 유사성을 비교하기 위해 사용되는 다른 통계가 결정될 수 있다. 예를 들어, 범위(고/저)는 기본 테이블의 수치 키 값의 기하학적 평균 및 표준 편차를 의미한다.
일부 구현에서, 비교 카운트, 상이값의 개수 및 퍼센트 인터섹션(즉, 테스트되는 필드 및 비교되는 필드 값의 백분율) 및 소렌센-다이스 계수가 연산된다. 수치 키에 대해 표준 편차가 계산될 수 있다.
일부 구현에서, 통계는 리포트로 포맷되고 사용자에 제시될 수 있다.
일부 구현에서, 리포트는 외래 키-기본 키 관계에 대해 매칭하는 하나 이상의 필드를 식별할 수 있다. 예를 들어, 필드 내의 값이 필터 마스크의 필드 내에서 발견되는 레코드의 백분율을 임계치, 예컨대, 60%와 비교하고, 소렌센-다이스 계수와 임계치, 예컨대, 80%를 비교하고, 퍼센트 인터섹션(percent intersection)을 임계치, 예컨대, 95%와 비교한다. 모든 임계치와 매칭되는 필드가 잠재적인 매칭으로서 사용자에게 제시된다.
데이터 세트가 시스템 차원 대체키를 사용하는 시나리오에서, 잠재적인 매칭이 자동적으로 결정될 수 있다.
일부 구현에서, 리포트가 사용자가 잠재적인 외래 키 매칭을 가능하게 하기 위해 사용자에게 제시될 수 있다.
상술한 데이터베이스 분석 접근법은 적합한 소프트웨어를 실행하는 컴퓨팅 시스템을 이용하여 구현될 수 있다. 예를 들어, 소프트웨어는 하나 이상의 프로그램되거나 프로그램 가능한 컴퓨팅 시스템 상에서 실행되는 하나 이상의 컴퓨터 프로그램(분산되거나, 클라이언트/서버이거나, 또는 그리드와 같은 다양한 아키텍쳐의 시스템일 수 있음) 내의 절차를 포함할 수 있다. 각각의 컴퓨팅 시스템은 적어도 하나의 프로세서, 적어도 하나 의 데이터 스토리지 시스템(휘발성 및/또는 비휘발성 메모리 및/또는 스토리지 엘리먼트를 포함), 및 하나 이상의 사용자 인터페이스(하나 이상의 입력 장치 또는 포트를 이용하여 입력을 수신하고 하나 이상의 출력 장치 또는 포트를 이용하여 출력을 제공하기 위함)를 포함한다. 소프트웨어는 예를 들어, 데이터 플로우 그래프의 디자인, 구성, 및 실행에 관련된 서비스를 제공하는 더 큰 프로그램의 하나 이상의 모듈을 포함할 수 있다. 프로그램의 모듈(예를 들어, 데이터 플로우 그래프의 엘리먼트)은 데이터 저장소에 저장된 데이터 모델에 순응하는 데이터 구조 또는 다른 조직화된 데이터로서 구현될 수 있다.
소프트웨어는 씨디롬(CD-ROM) 또는 다른 컴퓨터로 판독가능한 매체(예를 들어, 일반 또는 특수 목적 컴퓨팅 시스템 또는 장치에 의해 판독 가능함)와 같은 유형의(tangible) 비일시적인(non-transitory) 매체 상에 제공될 수 있거나, 또는 네트워크의 통신 매체를 통해 소프트웨어가 컴퓨팅 시스템의 유형의 비일시적인 매체에 전달될 수 있다(예를 들어, 전파되는 신호에 인코딩됨). 프로세싱의 일부 또는 전부는 특수 목적 컴퓨터, 예컨대, 코프로세서 또는 필드 프로그램 가능 게이트 어레이(FPGA) 또는 주문형 반도체(ASIC) 상에서 수행되거나 또는 특수 목적 하드웨어를 이용하여 수행될 수 있다. 프로세싱은 소프트웨어에 의해 지정된 연산의 서로 다른 부분이 서로 다른 컴퓨팅 엘리먼트에 의해 수행되는 분산된 방식으로 구현될 수 있다. 각각의 이러한 컴퓨터 프로그램은, 스토리지 장치 매체가 컴퓨터에 의해 판독되어 본 명세서에서 설명되는 프로세싱을 수행하는 경우 컴퓨터를 구성하고 동작시키기 위하여, 바람직하게는 일반 또는 특수 목적의 프로그램 가능한 컴퓨터에 의해 접근 가능한 스토리지 장치의 컴퓨터로 판독가능한 저장 매체(예를 들어, 솔리드 스테이트 메모리 또는 미디어, 또는 마그네틱 또는 광 미디어) 상에 저장되거나 컴퓨터로 판독가능한 저장 매체로 다운로드된다. 본 발명의 시스템은 또한 컴퓨터 프로그램으로 구성되는 유형의 비일시적인 매체로서 구현되도록 고려될 수 있다. 여기서, 이렇게 구성된 매체가 본 명세서에서 설명된 하나 이상의 프로세싱 단계를 수행하기 위하여 컴퓨터로 하여금 특정하고 미리 정의된 방식으로 동작하게 한다.
발명의 다수의 실시예에 대해 설명하였다. 그럼에도 불구하고, 전술한 설명이 다음의 청구항의 범위에 의해 규정되는 발명의 범위를 설명하기 위한 것이지 제한하기 위한 것은 아니라는 것을 이해할 것이다. 따라서, 다른 실시예는 또한 다음의 청구항의 보호 범위 내에 있다. 예를 들어, 발명의 범위를 벗어나지 않고도 다양한 변형이 이루어질 수 있다. 추가적으로, 전술한 단계의 일부는 순서에 있어서 독립적일 수 있으므로, 설명된 순서와는 다른 순서로 수행될 수 있다.
Claims (19)
- 컴퓨터에 의해 실행되는 방법으로서,
데이터 프로세싱 시스템에 의해 복수의 레코드를 포함하는 제1 데이터 세트를 수신하는 단계;
상기 제1 데이터 세트의 잠재적인 키 필드로서 하나 이상의 제1 필드의 세트를 식별하는 단계;
상기 하나 이상의 제1 필드의 세트 내의 하나 이상의 값을 표현하는 하나 이상의 필터 키를 식별하는 단계;
상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 비트의 세트를 저장하는 필터 마스크를 메모리에 저장하는 단계;
하나 이상의 제2 필드를 갖는 복수의 레코드를 포함하는 제2 데이터 세트를 수신하는 단계;
상기 데이터 프로세싱 시스템에 의해, 상기 잠재적인 키 필드로서 식별된 상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 상기 필터 마스크를 통해 상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값을 표현하는 비트를 필터링하여, 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드의 값이 필터 마스크에서 표현됨으로써 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하는 단계; 및
상기 하나 이상의 제2 필드의 하나 이상의 값이 상기 필터 마스크에서 표현된 값의 세트에 포함될 때, 상기 제1 데이터 세트의 상기 잠재적인 키 필드와 상기 제2 데이터 세트 내의 상기 하나 이상의 제2 필드 사이의 잠재적인 키 관계를 나타내는 단계
를 포함하는, 컴퓨터에 의해 실행되는 방법. - 제1항에 있어서,
주어진 레코드에 대하여, 상기 제1 데이터 세트 내에서 상기 주어진 레코드의 하나 이상의 제1 필드의 값에 기초하는 필터 키를 생성하는 단계; 및
부울(Boolean) 연산에 따라 필터 키를 조합함으로써 상기 제1 데이터 세트 내의 레코드에 대해 생성된 필터 키에 기초하여 필터 마스크를 생성하는 단계를 더 포함하는, 컴퓨터에 의해 실행되는 방법. - 제3항에 있어서,
대응하는 값에 대한 필터 키를 생성하는 것은,
상기 대응하는 값에 대한 해쉬 값을 생성하는 것;
상기 해쉬 값을 미리 정해진 개수의 정수로 세그먼트화하는 것; 및
상기 정수에 기초하여 비트 벡터 내의 비트를 설정함으로써 필터 키를 생성하는 것을 포함하는, 컴퓨터에 의해 실행되는 방법. - 제3항에 있어서,
상기 필터 마스크를 생성하는 것은, 생성된 복수의 필터 키 각각에 대해 2진 연산을 수행하는 것을 더 포함하는, 컴퓨터에 의해 실행되는 방법. - 제3항에 있어서,
상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값이 상기 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하는 단계를 더 포함하되, 결정은:
상기 제2 데이터 세트 내의 하나 이상의 제2 필드와 연관된 하나 이상의 값에 대해 하나 이상의 제2 필터 키를 생성하는 것; 및
상기 하나 이상의 제2 필터 키를 상기 필터 마스크와 비교하는 것을 포함하는, 컴퓨터에 의해 실행되는 방법. - 컴퓨터 프로그램 명령으로 인코딩된 비일시적인 컴퓨터 저장 매체로서,
상기 컴퓨터 프로그램 명령은 하나 이상의 컴퓨터에 의해 실행되는 경우 상기 하나 이상의 컴퓨터로 하여금:
복수의 레코드를 포함하는 제1 데이터 세트를 수신하는 동작;
상기 제1 데이터 세트의 잠재적인 키 필드로서 하나 이상의 제1 필드의 세트를 식별하는 동작;
상기 하나 이상의 제1 필드의 세트 내의 하나 이상의 값을 표현하는 하나 이상의 필터 키를 식별하는 동작;
상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 비트의 세트를 저장하는 필터 마스크를 메모리에 저장하는 동작;
하나 이상의 제2 필드를 갖는 복수의 레코드를 포함하는 제2 데이터 세트를 수신하는 동작;
상기 잠재적인 키 필드로서 식별된 상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 상기 필터 마스크를 통해 상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값을 표현하는 비트를 필터링하여, 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드의 값이 필터 마스크에서 표현됨으로써 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하는 동작; 및
상기 하나 이상의 제2 필드의 하나 이상의 값이 상기 필터 마스크에서 표현된 값의 세트에 포함될 때, 상기 제1 데이터 세트의 상기 잠재적인 키 필드와 상기 제2 데이터 세트 내의 상기 하나 이상의 제2 필드 사이의 잠재적인 키 관계를 나타내는 동작
을 수행하도록 하는 비일시적인 컴퓨터 저장 매체. - 제7항에 있어서,
컴퓨터에 의해 수행되는 동작은:
상기 필터 마스크를 통과하는 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드와 연관된 값을 각각 갖는 레코드들의 개수의 카운트를 결정하는 것;
상기 카운트를 프로파일로 저장하는 것; 및
상기 하나 이상의 제2 필드와 연관된 값을 갖는 상기 제2 데이터 세트 내의 레코드 및 필터 마스크에서 상기 값의 세트의 소렌센-다이스 계수를 결정하는 것을 더 포함하는, 비일시적인 컴퓨터 저장 매체. - 제7항에 있어서,
컴퓨터에 의해 수행되는 동작은:
주어진 레코드에 대하여, 상기 제1 데이터 세트 내에서 상기 주어진 레코드의 하나 이상의 제1 필드의 값에 기초하는 필터 키를 생성하는 것; 및
부울(Boolean) 연산에 따라 필터 키를 조합함으로써 상기 제1 데이터 세트 내의 레코드에 대해 생성된 필터 키에 기초하여 필터 마스크를 생성하는 것을 더 포함하는, 비일시적인 컴퓨터 저장 매체. - 제9항에 있어서,
대응하는 값에 대한 필터 키를 생성하는 것은,
상기 대응하는 값에 대한 해쉬 값을 생성하는 것;
상기 해쉬 값을 미리 정해진 개수의 정수로 세그먼트화하는 것; 및
상기 정수에 기초하여 비트 벡터 내의 비트를 설정함으로써 필터 키를 생성하는 것을 포함하는, 비일시적인 컴퓨터 저장 매체. - 제9항에 있어서,
상기 필터 마스크를 생성하는 것은, 생성된 복수의 필터 키 각각에 대해 2진 연산을 수행하는 것을 더 포함하는, 비일시적인 컴퓨터 저장 매체. - 제9항에 있어서,
컴퓨터에 의해 수행되는 동작은:
상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값이 상기 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하는 것을 더 포함하되, 결정은:
상기 제2 데이터 세트 내의 하나 이상의 제2 필드와 연관된 하나 이상의 값에 대해 하나 이상의 제2 필터 키를 생성하는 것; 및
상기 하나 이상의 제2 필터 키를 상기 필터 마스크와 비교하는 것을 포함하는, 비일시적인 컴퓨터 저장 매체. - 시스템으로서,
하나 이상의 컴퓨터 및 명령을 저장하는 하나 이상의 저장 장치를 포함하고,
상기 명령은 상기 하나 이상의 컴퓨터에 의해 실행되는 경우, 상기 하나 이상의 컴퓨터로 하여금:
복수의 레코드를 포함하는 제1 데이터 세트를 수신하는 동작;
상기 제1 데이터 세트의 잠재적인 키 필드로서 하나 이상의 제1 필드의 세트를 식별하는 동작;
상기 하나 이상의 제1 필드의 세트 내의 하나 이상의 값을 표현하는 하나 이상의 필터 키를 식별하는 동작;
상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 비트의 세트를 저장하는 필터 마스크를 메모리에 저장하는 동작;
하나 이상의 제2 필드를 갖는 복수의 레코드를 포함하는 제2 데이터 세트를 수신하는 동작;
상기 잠재적인 키 필드로서 식별된 상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 상기 필터 마스크를 통해 상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값을 표현하는 비트를 필터링하여, 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드의 값이 필터 마스크에서 표현됨으로써 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하는 동작; 및
상기 하나 이상의 제2 필드의 하나 이상의 값이 상기 필터 마스크에서 표현된 값의 세트에 포함될 때, 상기 제1 데이터 세트의 상기 잠재적인 키 필드와 상기 제2 데이터 세트 내의 상기 하나 이상의 제2 필드 사이의 잠재적인 키 관계를 나타내는 동작
을 수행하도록 동작가능한 시스템. - 제13항에 있어서,
컴퓨터에 의해 수행되는 동작은:
상기 필터 마스크를 통과하는 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드와 연관된 값을 각각 갖는 레코드들의 개수의 카운트를 결정하는 것;
상기 카운트를 프로파일로 저장하는 것; 및
상기 하나 이상의 제2 필드와 연관된 값을 갖는 상기 제2 데이터 세트 내의 레코드 및 필터 마스크에서 상기 값의 세트의 소렌센-다이스 계수를 결정하는 것을 더 포함하는, 시스템. - 제13항에 있어서,
컴퓨터에 의해 수행되는 동작은:
주어진 레코드에 대하여, 상기 제1 데이터 세트 내에서 상기 주어진 레코드의 하나 이상의 제1 필드의 값에 기초하는 필터 키를 생성하는 것; 및
부울(Boolean) 연산에 따라 필터 키를 조합함으로써 상기 제1 데이터 세트 내의 레코드에 대해 생성된 필터 키에 기초하여 필터 마스크를 생성하는 것을 더 포함하는, 시스템. - 제15항에 있어서,
대응하는 값에 대한 필터 키를 생성하는 것은,
상기 대응하는 값에 대한 해쉬 값을 생성하는 것;
상기 해쉬 값을 미리 정해진 개수의 정수로 세그먼트화하는 것; 및
상기 정수에 기초하여 비트 벡터 내의 비트를 설정함으로써 필터 키를 생성하는 것을 포함하는, 시스템. - 제15항에 있어서,
상기 필터 마스크를 생성하는 것은, 생성된 복수의 필터 키 각각에 대해 2진 연산을 수행하는 것을 더 포함하는, 시스템. - 제15항에 있어서,
컴퓨터에 의해 수행되는 동작은:
상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값이 상기 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하는 것을 더 포함하되, 결정은:
상기 제2 데이터 세트 내의 하나 이상의 제2 필드와 연관된 하나 이상의 값에 대해 하나 이상의 제2 필터 키를 생성하는 것; 및
상기 하나 이상의 제2 필터 키를 상기 필터 마스크와 비교하는 것을 포함하는, 시스템. - 시스템으로서,
복수의 레코드를 포함하는 제1 데이터 세트를 수신하기 위한 수단;
상기 제1 데이터 세트의 잠재적인 키 필드로서 하나 이상의 제1 필드의 세트를 식별하기 위한 수단;
상기 하나 이상의 제1 필드의 세트 내의 하나 이상의 값을 표현하는 하나 이상의 필터 키를 식별하기 위한 수단;
상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 비트의 세트를 저장하는 필터 마스크를 메모리에 저장하기 위한 수단;
하나 이상의 제2 필드를 갖는 복수의 레코드를 포함하는 제2 데이터 세트를 수신하기 위한 수단;
상기 잠재적인 키 필드로서 식별된 상기 하나 이상의 제1 필드의 세트 내의 상기 하나 이상의 값을 표현하는 상기 하나 이상의 필터 키로부터 생성되는 상기 필터 마스크를 통해 상기 제2 데이터 세트의 레코드 내의 하나 이상의 제2 필드의 값을 표현하는 비트를 필터링하여, 상기 제2 데이터 세트의 레코드 내의 상기 하나 이상의 제2 필드의 값이 필터 마스크에서 표현됨으로써 필터 마스크를 통과하는 하나 이상의 대응 값을 갖는지 여부를 결정하기 위한 수단; 및
상기 하나 이상의 제2 필드의 하나 이상의 값이 상기 필터 마스크에서 표현된 값의 세트에 포함될 때, 상기 제1 데이터 세트의 상기 잠재적인 키 필드와 상기 제2 데이터 세트 내의 상기 하나 이상의 제2 필드 사이의 잠재적인 키 관계를 나타내기 위한 수단
을 포함하는 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/156,544 | 2014-01-16 | ||
US14/156,544 US11487732B2 (en) | 2014-01-16 | 2014-01-16 | Database key identification |
PCT/US2015/011518 WO2015109047A1 (en) | 2014-01-16 | 2015-01-15 | Database key identification |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160107188A KR20160107188A (ko) | 2016-09-13 |
KR102240137B1 true KR102240137B1 (ko) | 2021-04-13 |
Family
ID=52432993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167018899A KR102240137B1 (ko) | 2014-01-16 | 2015-01-15 | 데이터베이스 키 식별 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11487732B2 (ko) |
EP (1) | EP3095047B1 (ko) |
JP (1) | JP6526684B2 (ko) |
KR (1) | KR102240137B1 (ko) |
CN (1) | CN105917336B (ko) |
AU (1) | AU2015206487B2 (ko) |
CA (1) | CA2934034C (ko) |
SG (1) | SG11201604859RA (ko) |
WO (1) | WO2015109047A1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9892026B2 (en) | 2013-02-01 | 2018-02-13 | Ab Initio Technology Llc | Data records selection |
US11227104B2 (en) * | 2014-05-11 | 2022-01-18 | Informatica Llc | Composite data creation with refinement suggestions |
US20160027123A1 (en) * | 2014-07-22 | 2016-01-28 | Gastke Inc. | Automatic tagging of trial balance |
US10891294B1 (en) | 2014-07-22 | 2021-01-12 | Auditfile, Inc. | Automatically migrating computer content |
US11232085B2 (en) * | 2016-01-07 | 2022-01-25 | Amazon Technologies, Inc. | Outlier detection for streaming data |
GB2566677A (en) * | 2017-09-12 | 2019-03-27 | Infosum Ltd | Grouping datasets |
CN107766570B (zh) * | 2017-11-10 | 2020-04-07 | 广东电网有限责任公司电力科学研究院 | 一种档案同源核查方法 |
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 |
US10846307B1 (en) * | 2020-04-03 | 2020-11-24 | Csg Systems, Inc. | System and method for managing interactions with a data lake |
KR102416517B1 (ko) * | 2020-11-13 | 2022-07-01 | 디비에프아이에스 주식회사 | Rpa를 이용하는 데이터베이스 중앙 관리 장치 및 그 방법 |
CN112800085B (zh) * | 2021-04-13 | 2021-09-14 | 成都四方伟业软件股份有限公司 | 一种基于布隆过滤器识别表间主外键字段的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050114369A1 (en) * | 2003-09-15 | 2005-05-26 | Joel Gould | Data profiling |
US20060074881A1 (en) | 2004-10-02 | 2006-04-06 | Adventnet, Inc. | Structure independent searching in disparate databases |
CN102203773A (zh) | 2008-09-19 | 2011-09-28 | 甲骨文国际公司 | 在具有卸载的布隆过滤器的智能存储器中利用协同并行过滤的哈希联接 |
US20120197887A1 (en) * | 2011-01-28 | 2012-08-02 | Ab Initio Technology Llc | Generating data pattern information |
US20130031367A1 (en) * | 2011-07-29 | 2013-01-31 | Qualcomm Incorporated | Facilitating access control in peer-to-peer overlay networks |
Family Cites Families (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | データベース処理方法 |
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. |
JP3079881B2 (ja) | 1993-08-10 | 2000-08-21 | 三菱自動車工業株式会社 | 道路交通状況推定方法および車両運転特性制御方法 |
JP3002938B2 (ja) | 1993-10-28 | 2000-01-24 | オークマ株式会社 | 自動工具交換装置及び工具交換方法 |
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 |
US6741995B1 (en) | 1999-03-23 | 2004-05-25 | Metaedge Corporation | Method for dynamically creating a profile |
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 |
US7039627B1 (en) | 2000-12-22 | 2006-05-02 | Nortel Networks Limited | Method and apparatus for performing a radix search by selecting one of a valid table and a transition table |
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 |
CA2349265A1 (en) | 2001-05-30 | 2002-11-30 | Andrew Emili | Protein expression profile database |
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 |
WO2003014867A2 (en) | 2001-08-03 | 2003-02-20 | 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 |
WO2003081391A2 (en) | 2002-03-19 | 2003-10-02 | 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 |
US7043476B2 (en) | 2002-10-11 | 2006-05-09 | International Business Machines Corporation | Method and apparatus for data mining to discover associations and covariances associated with data |
WO2004036461A2 (en) | 2002-10-14 | 2004-04-29 | 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 |
US7840664B2 (en) | 2003-05-21 | 2010-11-23 | Ixia | Automated characterization of network traffic |
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 |
US20050240354A1 (en) | 2003-08-27 | 2005-10-27 | Ascential Software Corporation | Service oriented architecture for an extract function in a data integration platform |
US20060069717A1 (en) | 2003-08-27 | 2006-03-30 | Ascential Software Corporation | Security service for a services oriented architecture in a data integration platform |
US7426520B2 (en) * | 2003-09-10 | 2008-09-16 | Exeros, Inc. | Method and apparatus for semantic discovery and mapping between data sources |
CN101271472B (zh) | 2003-09-15 | 2011-04-13 | 起元科技有限公司 | 数据处理方法和数据处理系统 |
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 |
US7698345B2 (en) | 2003-10-21 | 2010-04-13 | The Nielsen Company (Us), Llc | Methods and apparatus for fusing databases |
US7689542B2 (en) | 2004-01-13 | 2010-03-30 | Oracle International Corporation | Dynamic return type generation in a database system |
US7376656B2 (en) | 2004-02-10 | 2008-05-20 | Microsoft Corporation | System and method for providing user defined aggregates in a database system |
US20050177578A1 (en) | 2004-02-10 | 2005-08-11 | Chen Yao-Ching S. | Efficient type annontation of XML schema-validated XML documents without schema validation |
US8447743B2 (en) | 2004-08-17 | 2013-05-21 | International Business Machines Corporation | Techniques for processing database queries including user-defined functions |
US8145642B2 (en) * | 2004-11-30 | 2012-03-27 | Oracle International Corporation | Method and apparatus to support bitmap filtering in a parallel system |
US8572018B2 (en) | 2005-06-20 | 2013-10-29 | New York University | Method, system and software arrangement for reconstructing formal descriptive models of processes from functional/modal data using suitable ontology |
US7584205B2 (en) | 2005-06-27 | 2009-09-01 | Ab Initio Technology Llc | Aggregating data with complex operations |
US7716630B2 (en) | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
US7774346B2 (en) | 2005-08-26 | 2010-08-10 | Oracle International Corporation | Indexes that are based on bitmap values and that use summary bitmap values |
JP3962417B2 (ja) | 2005-08-31 | 2007-08-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データベースに対するアクセスを制御するシステム、およびその方法 |
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 |
US8260910B2 (en) | 2006-09-19 | 2012-09-04 | Oracle America, Inc. | Method and apparatus for monitoring a data stream to detect a pattern of data elements using bloom filters |
NO325864B1 (no) | 2006-11-07 | 2008-08-04 | Fast Search & Transfer Asa | Fremgangsmåte ved beregning av sammendragsinformasjon og en søkemotor for å støtte og implementere fremgangsmåten |
CN101191069B (zh) | 2006-11-21 | 2011-04-27 | 中国石油化工股份有限公司 | 石脑油催化裂解制乙烯和丙烯的方法 |
US8412713B2 (en) | 2007-03-06 | 2013-04-02 | Mcafee, Inc. | Set function calculation in a database |
US8069129B2 (en) | 2007-04-10 | 2011-11-29 | Ab Initio Technology Llc | Editing and compiling business rules |
US7958142B2 (en) | 2007-09-20 | 2011-06-07 | Microsoft Corporation | User profile aggregation |
US20090226916A1 (en) | 2008-02-01 | 2009-09-10 | Life Technologies Corporation | Automated Analysis of DNA Samples |
US7912867B2 (en) | 2008-02-25 | 2011-03-22 | United Parcel Services Of America, Inc. | Systems and methods of profiling data for integration |
US8463739B2 (en) | 2008-08-28 | 2013-06-11 | Red Hat, Inc. | Systems and methods for generating multi-population statistical measures using middleware |
US20100114976A1 (en) | 2008-10-21 | 2010-05-06 | Castellanos Maria G | Method For Database Design |
US9251212B2 (en) | 2009-03-27 | 2016-02-02 | Business Objects Software Ltd. | Profiling in a massive parallel processing environment |
US20110029478A1 (en) | 2009-05-20 | 2011-02-03 | Broeker Stephen A | Stream Star Schema and Nested Binary Tree for Data Stream Analysis |
KR101660348B1 (ko) | 2009-09-16 | 2016-09-27 | 아브 이니티오 테크놀로지 엘엘시 | 데이터세트 요소의 매핑 |
CN101661510A (zh) | 2009-09-29 | 2010-03-03 | 金蝶软件(中国)有限公司 | 一种数据匹配方法及装置 |
US8560575B2 (en) | 2009-11-12 | 2013-10-15 | Salesforce.Com, Inc. | Methods and apparatus for selecting updates to associated records to publish on an information feed in an on-demand database service environment |
US10445309B2 (en) | 2009-11-13 | 2019-10-15 | Ab Initio Technology Llc | Managing record format information |
US8396873B2 (en) | 2010-03-10 | 2013-03-12 | Emc Corporation | Index searching using a bloom filter |
KR101781416B1 (ko) | 2010-06-22 | 2017-09-25 | 아브 이니티오 테크놀로지 엘엘시 | 관련 데이터세트의 처리 |
US10558705B2 (en) | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
US8296274B2 (en) | 2011-01-27 | 2012-10-23 | Leppard Andrew | Considering multiple lookups in bloom filter decision making |
US9275367B2 (en) | 2011-05-05 | 2016-03-01 | Aegis Analytical Corporation | System for designating, displaying and selecting types of process parameters and product outcome parameters |
US8610605B2 (en) | 2011-06-17 | 2013-12-17 | Sap Ag | Method and system for data compression |
US8856085B2 (en) | 2011-07-19 | 2014-10-07 | International Business Machines Corporation | Automatic consistent sampling for data analysis |
US8666919B2 (en) | 2011-07-29 | 2014-03-04 | Accenture Global Services Limited | Data quality management for profiling, linking, cleansing and migrating data |
CN103176973B (zh) | 2011-12-20 | 2016-04-20 | 国际商业机器公司 | 用于生成数据库的测试工作负载的系统和方法 |
US8762396B2 (en) | 2011-12-22 | 2014-06-24 | Sap Ag | Dynamic, hierarchical bloom filters for network data routing |
US9336246B2 (en) | 2012-02-28 | 2016-05-10 | International Business Machines Corporation | Generating composite key relationships between database objects based on sampling |
CN102681946B (zh) | 2012-05-11 | 2015-03-11 | 龙芯中科技术有限公司 | 内存访问方法和装置 |
US11449952B2 (en) | 2012-10-01 | 2022-09-20 | Oracle International Corporation | Efficiently modeling database scenarios for later use on live data |
US9892026B2 (en) | 2013-02-01 | 2018-02-13 | Ab Initio Technology Llc | Data records selection |
-
2014
- 2014-01-16 US US14/156,544 patent/US11487732B2/en active Active
-
2015
- 2015-01-15 JP JP2016543564A patent/JP6526684B2/ja active Active
- 2015-01-15 SG SG11201604859RA patent/SG11201604859RA/en unknown
- 2015-01-15 WO PCT/US2015/011518 patent/WO2015109047A1/en active Application Filing
- 2015-01-15 CA CA2934034A patent/CA2934034C/en active Active
- 2015-01-15 AU AU2015206487A patent/AU2015206487B2/en active Active
- 2015-01-15 KR KR1020167018899A patent/KR102240137B1/ko active IP Right Grant
- 2015-01-15 EP EP15701659.3A patent/EP3095047B1/en active Active
- 2015-01-15 CN CN201580004845.0A patent/CN105917336B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050114369A1 (en) * | 2003-09-15 | 2005-05-26 | Joel Gould | Data profiling |
JP2010267289A (ja) | 2003-09-15 | 2010-11-25 | Ab Initio Technology Llc | データプロファイリング |
US20060074881A1 (en) | 2004-10-02 | 2006-04-06 | Adventnet, Inc. | Structure independent searching in disparate databases |
CN102203773A (zh) | 2008-09-19 | 2011-09-28 | 甲骨文国际公司 | 在具有卸载的布隆过滤器的智能存储器中利用协同并行过滤的哈希联接 |
JP2012503256A (ja) | 2008-09-19 | 2012-02-02 | オラクル・インターナショナル・コーポレイション | オフロードされたブルームフィルタを伴うインテリジェントストレージにおける協調並列フィルタ処理を用いるハッシュジョイン |
US20120197887A1 (en) * | 2011-01-28 | 2012-08-02 | Ab Initio Technology Llc | Generating data pattern information |
US20130031367A1 (en) * | 2011-07-29 | 2013-01-31 | Qualcomm Incorporated | Facilitating access control in peer-to-peer overlay networks |
Non-Patent Citations (1)
Title |
---|
https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient |
Also Published As
Publication number | Publication date |
---|---|
US20150199352A1 (en) | 2015-07-16 |
SG11201604859RA (en) | 2016-08-30 |
CA2934034C (en) | 2021-09-21 |
AU2015206487B2 (en) | 2020-07-02 |
AU2015206487A1 (en) | 2016-06-30 |
KR20160107188A (ko) | 2016-09-13 |
CN105917336B (zh) | 2021-06-29 |
JP6526684B2 (ja) | 2019-06-05 |
US11487732B2 (en) | 2022-11-01 |
JP2017507392A (ja) | 2017-03-16 |
CA2934034A1 (en) | 2015-07-23 |
EP3095047B1 (en) | 2021-06-23 |
WO2015109047A1 (en) | 2015-07-23 |
EP3095047A1 (en) | 2016-11-23 |
CN105917336A (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102240137B1 (ko) | 데이터베이스 키 식별 | |
US12056583B2 (en) | Target variable distribution-based acceptance of machine learning test data sets | |
US11210086B2 (en) | Managing parameter sets | |
JP6427592B2 (ja) | データ型に関連するデータプロファイリング操作の管理 | |
US9928281B2 (en) | Lightweight table comparison | |
US8719271B2 (en) | Accelerating data profiling process | |
US9411712B2 (en) | Generating test data | |
US10877995B2 (en) | Building a distributed dwarf cube using mapreduce technique | |
AU2018211280B2 (en) | Managing memory and storage space for a data operation | |
KR20130095250A (ko) | 관련 데이터세트의 처리 | |
US20210334292A1 (en) | System and method for reconciliation of data in multiple systems using permutation matching | |
Franke et al. | Parallel Privacy-preserving Record Linkage using LSH-based Blocking. | |
Papadakis et al. | Multi-core meta-blocking for big linked data | |
Janke et al. | On data placement strategies in distributed rdf stores | |
Brown et al. | Secure Record Linkage of Large Health Data Sets: Evaluation of a Hybrid Cloud Model | |
JP6631139B2 (ja) | 検索制御プログラム、検索制御方法および検索サーバ装置 | |
Pinto | Exploiting heterogeneous computing techniques to address probabilistic big data linkage | |
Pham et al. | ELODU: Entity Resolution in Big Data | |
JP2022522214A (ja) | 移動中のデータの処理技術 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |