KR102361153B1 - 데이터 유형에 관련된 데이터 프로파일링 동작 관리 - Google Patents

데이터 유형에 관련된 데이터 프로파일링 동작 관리 Download PDF

Info

Publication number
KR102361153B1
KR102361153B1 KR1020167027062A KR20167027062A KR102361153B1 KR 102361153 B1 KR102361153 B1 KR 102361153B1 KR 1020167027062 A KR1020167027062 A KR 1020167027062A KR 20167027062 A KR20167027062 A KR 20167027062A KR 102361153 B1 KR102361153 B1 KR 102361153B1
Authority
KR
South Korea
Prior art keywords
data
data type
field
binary
information
Prior art date
Application number
KR1020167027062A
Other languages
English (en)
Other versions
KR20160130256A (ko
Inventor
무함마드 아르샤드 칸
Original Assignee
아브 이니티오 테크놀로지 엘엘시
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아브 이니티오 테크놀로지 엘엘시 filed Critical 아브 이니티오 테크놀로지 엘엘시
Publication of KR20160130256A publication Critical patent/KR20160130256A/ko
Application granted granted Critical
Publication of KR102361153B1 publication Critical patent/KR102361153B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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

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

데이터 유형 정보(208)는 하나 이상의 데이터 유형들 각각을 식별자와 연관짓는다. 레코드들의 필드들의 데이터 값들을 처리하는 것은 데이터 유닛들(203)을 생성하는 것 - 각각은 필드 식별자와 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출된 상기 레코드들 중 하나로부터의 이진값을 포함함 -; 여러 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것; 상기 필드들(205) 중 하나 이상의 각각에 대한 엔트리들의 목록을 생성하는 것 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 여러 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -; 상기 데이터 유형 정보로부터 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 것; 및 상기 집계 후에 필드에서 나타나는 특정 이진값의 검색된 데이터 유형에 기반하여 프로파일 정보(114)를 생성하는 것을 포함한다.

Description

데이터 유형에 관련된 데이터 프로파일링 동작 관리{MANAGING DATA PROFILING OPERATIONS RELATED TO DATA TYPE}
본 출원은 2014년 3월 7일에 출원된 미국 출원 번호 61/949,477에 대해 우선권을 주장한다.
본 설명은 데이터 유형에 관련된 데이터 프로파일링 동작들의 관리에 관한 것이다.
데이터베이스들 또는 다른 정보 관리 시스템들은 종종 다양한 특성들이 알려질 수 없는 데이터세트들을 포함한다. 예를 들어, 데이터세트에 대한 값들의 범위 또는 전형적인 값들, 데이터세트 내 상이한 필드들 사이의 관계들, 또는 상이한 필드들의 값들 간 기능적 종속성들이 알려지지 않을 수 있다. 데이터 프로파일링은 이러한 특성들을 결정하기 위해 데이터세트를 검사하는 것을 포함할 수 있다. 데이터 프로파일링을 위한 일부 기술들은 데이터 프로파일링 작업에 관한 정보를 수신하는 것, 데이터 프로파일링 작업을 실행하는 것, 그런 다음 데이터 프로파일링과 연관된 다양한 처리 단계들을 수행하는 것이 얼마나 오래 걸리는지에 기반한 지연 후에 결과를 반환하는 것을 포함한다. 상당한 처리 시간을 포함할 수 있는 단계들 중 하나는 추가 처리를 용이하게 하기 위해 소정의 또는 "정규의(canonical)" 데이터 유형으로 데이터세트의 레코드들 내에서 나타나는 값들의 데이터 유형들을 변경하는 것을 포함하는 "정규화(canonicalization)"이다. 예를 들어, 정규화는 값들을 인간이 판독가능한 문자열 표현으로 변환하는 것을 포함할 수 있다.
미국 공개특허공보 US 2011/0029478 A1 (2011.02.03.)
본 발명의 목적은 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법, 컴퓨터 판독가능한 매체상에 저장되는 소프트웨어, 및 컴퓨팅 시스템을 제공하는 것이다.
일 측면에서, 일반적으로, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법은 상기 컴퓨팅 시스템의 입력 디바이스 또는 포트를 통해, 각각이 복수의 필드들의 각각의 필드들에 대해 하나 이상의 값을 가지는 복수의 레코드들을 수신하는 단계를 포함한다. 상기 방법은 상기 컴퓨팅 시스템의 저장 매체에, 하나 이상의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하는 단계를 포함한다. 상기 방법은 상기 컴퓨팅 시스템의 적어도 하나의 프로세서를 이용하여, 상기 레코드들로부터의 복수의 데이터 값들을 처리하는 단계를 포함한다. 상기 처리하는 단계는 상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 단계 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-; 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 단계; 상기 필드들 중 하나 이상의 각각에 대한 엔트리들의 목록을 생성하는 단계 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -; 상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 단계; 및 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 단계 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 단계를 포함한다.
측면들은 다음 특징들 중 하나 이상을 포함할 수 있다.
상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출된 상기 이진값은 유형별로 분류되지 않은(un-typed) 비트들의 시퀀스로 추출된다. 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 단계는 상기 검색된 데이터 유형을 가지는 유형별로 분류된(typed) 데이터 값으로 상기 유형별로 분류되지 않은(un-typed) 비트들의 시퀀스를 재해석하는 단계를 포함한다.
상기 프로파일 정보는 상기 레코드들로부터의 상기 복수의 데이터 값들의 원래 데이터 유형들에 의존하는 유형-종속적 프로파일링(type-dependent profiling) 결과들을 포함한다.
복수의 상기 데이터 유닛들로부터의 이진값들에 관한 정보들을 집계하는 단계는 상기 이진값들 간 매치(match)가 있는지를 결정하기 위해 상기 엔트리들의 목록의 이진값들과 상기 복수의 데이터 유닛들로부터의 이진값들을 비교하는 단계를 포함한다.
복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 상기 정보는 상기 이진값들을 비교할 때 매치가 결정될 때마다 증가되는 매치된 이진값들의 전체 총계를 포함한다.
제1 이진값과 제2 이진값 사이의 매치가 상기 제2 이진값을 포함하는 비트들의 시퀀스와 동일한 상기 제1 이진값을 포함하는 비트들의 시퀀스에 대응한다.
상기 데이터 유형 정보는 하나 이상의 데이터 유형들 각각을 상기 필드 식별자들 중 적어도 하나와 연관짓는다.
상기 데이터 유형 정보로부터 상기 제1 식별자와 관련된 데이터 유형을 검색하는 것은 제1 필드 식별자와 관련된 데이터 유형을 검색하는 단계를 포함한다.
각각의 데이터 유닛은 상기 필드 식별자들 중 하나, 상기 레코드들 중 하나로부터의 이진값, 및 상기 데이터 유형들 중 하나를 고유하게 식별하는 데이터 유형 식별자를 포함한다.
상기 데이터 유형 정보는 적어도 하나의 데이터 유형들 각각을 상기 데이터 유형 식별자들 중 적어도 하나와 연관짓는다.
상기 데이터 유형 정보로부터의 상기 제1 식별자와 관련된 데이터 유형을 검색하는 것은 제1 데이터 유형 식별자와 관련된 데이터 유형을 검색하는 단계를 포함한다.
상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 단계는 상기 검색된 데이터 유형을 가지는 로컬 변수를 인스턴스화하는 단계와 상기 인스턴스화된 변수(instantiated variable)를 상기 엔트리에 포함된 상기 이진값에 기반한 값으로 초기화하는 단계를 포함한다.
상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 단계는 상기 검색된 데이터 유형과 관련된 포인터를 상기 엔트리에 포함된 상기 이진값이 저장된 메모리 위치로 설정하는 단계를 포함한다.
각각의 데이터 유닛은 상기 필드 식별자들 중 하나, 상기 레코드들 중 하나로부터의 이진값, 및 상기 이진값의 길이의 표시자(indicator)를 포함한다.
상기 길이 표시자는 상기 이진값에 대한 접두부(prefix)로 저장된다.
상기 방법은 상기 컴퓨팅 시스템의 입력 디바이스 또는 포트를 통해, 상기 복수의 레코드들과 관련된 레코드 포맷 정보를 수신하는 단계를 더 포함한다.
상기 데이터 유형 정보는 상기 수신된 레코드 포맷 정보에 적어도 부분적으로 기반하여 생성된다.
상기 처리하는 단계는 상기 이진값들과 관련된 검색된 데이터 유형으로부터 제1 필드에 대한 상기 목록들 중 제1의 상이한 각각의 엔트리들로부터의 이진값들을 타깃 데이터 유형(target data type)으로 변환하는 단계, 및 상기 이진값들과 관련된 검색된 데이터 유형으로부터 제2 필드에 대한 상기 목록들 중 제2의 상이한 각각의 엔트리들로부터의 이진값들을 동일한 타깃 데이터 유형으로 변환하는 단계를 더 포함한다.
또 다른 측면에서, 일반적으로, 컴퓨터 판독가능한 매체상에 저장되는 소프트웨어는 컴퓨팅 시스템이 상기 컴퓨팅 시스템의 입력 디바이스 또는 포트를 통해, 각각이 복수의 필드들의 각각의 필드들에 대해 하나 이상의 값을 가지는 복수의 레코드들을 수신하도록 하고; 상기 컴퓨팅 시스템의 저장 매체에, 하나 이상의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하도록 하고; 그리고 상기 컴퓨팅 시스템의 적어도 하나의 프로세서를 이용하여, 상기 레코드들로부터의 복수의 데이터 값들을 처리하도록 하는 명령들을 포함한다. 상기 처리는 상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 것 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-; 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것; 상기 필드들 중 하나 이상의 각각에 대한 엔트리들의 목록을 생성하는 것 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -; 상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 것; 및 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 것을 포함한다.
또 다른 측면에서, 일반적으로, 컴퓨팅 시스템은 각각이 복수의 필드들의 각각의 필드들에 대해 하나 이상의 값을 가지는 복수의 레코드들을 수신하도록 구성된 상기 컴퓨팅 시스템의 입력 디바이스 또는 포트; 하나 이상의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하도록 구성된 상기 컴퓨팅 시스템의 저장 매체; 및 상기 레코드들로부터의 복수의 데이터 값들을 처리하도록 구성된 상기 컴퓨팅 시스템의 적어도 하나의 프로세서를 포함한다. 상기 처리는 상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 것 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-; 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것; 상기 필드들 중 하나 이상의 각각에 대한 엔트리들의 목록을 생성하는 것 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -; 상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 것; 및 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 것을 포함한다.
또 다른 측면에서, 일반적으로, 컴퓨팅 시스템은 각각이 복수의 필드들의 각각의 필드들에 대해 하나 이상의 값을 가지는 복수의 레코드들을 수신하기 위한 수단; 하나 이상의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하기 위한 수단; 및 상기 레코드들로부터의 복수의 데이터 값들을 처리하기 위한 수단을 포함한다. 상기 처리는 상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 것 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-; 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것; 상기 필드들 중 하나 이상의 각각에 대한 엔트리들의 목록을 생성하는 것 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -; 상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 것; 및 복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 것을 포함한다.
측면들은 다음 장점들 중 하나 이상을 가질 수 있다.
데이터 프로파일링은 때때로 데이터 프로파일링 절차들의 관리 목적 전용의 사용자 인터페이스를 제공하는 프로그램에 의해 수행된다. 이러한 상황의 경우, 사용자는 대량의 데이터(예를 들어, 대규모 데이터세트들 및/또는 상당수의 데이터세트들)를 프로파일링할 때 상대적으로 긴 지연을 예상할 수 있다. 일부 경우에, 데이터 처리 프로그램들을 개발하기 위한 사용자 인터페이스(예를 들어, 데이터플로 그래프들(dataflow graphs)로 표현됨) 같은 또 다른 사용자 인터페이스 내에 데이터 프로파일링 기능을 통합하는 것이 유용할 수 있다. 그러나 사용자가 데이터를 처리하기 위한 프로그램을 개발하는 프로세스에 있다면, 그 개발 사용자 인터페이스 내에서 특정 데이터세트에 대한 데이터 프로파일링 결과들을 요청하는 것이 유용할 수 있을지라도, 사용자가 그 결과들을 획득하기 전에 긴 지연을 견디게 하는 것이 적절하지 않을 수 있다.
본원에서 설명된 기술들을 사용하여, 특정 데이터 프로파일링 절차들(예를 들어, 특히 필드-레벨 데이터 프로파일링)에 대해 일부 지연들을 단축하는 것이 가능하다. 예를 들어, 데이터 프로파일링 결과들에 대해 3분을 기다려야만 하는 대신, 사용자는 30초만 기다릴 필요가 있을 수 있다. 속도 향상(speed-up) 중 적어도 일부를 제공하는 데 사용되는 기술들 중 하나는 정규화 및 다른 유형-종속적 처리(type-dependent processing)가 지연될 수 있고 정규화될 데이터 값들을 모으는 다른 데이터 프로파일링 절차 후에 훨씬 더 효율적으로 수행될 수 있다는 인식에 기반한다. 필드의 모든 개별 값들(distinct values)에 수행되나, 각각의 개별 값의 모든 발생들에 반드시 수행되는 것이 아니기 때문에 처리는 더 효율적이고, (상기 필드가 아주 고유 값들(unique values)로 채워지지 않는 한) 일반적으로 훨씬 더 적은 동작들로 이어진다. 이 기술은 레코드들의 대규모 컬렉션에 대해, 잠재적으로 많은 시간이 걸릴 수 있는 중복 처리를 방지할 수 있다. 이 기술의 중요성들(consequences) 중 하나는 하기에 더 상세히 설명된 바와 같이 정규화와 유형 종속적 검증(type-dependent validation)에 대해 추후에 사용될 데이터 유형 정보를 적절히 관리할 필요이다.
이러한 감소된 처리 지연으로, 데이터 프로파일링이 개발 사용자 인터페이스 내에서 수행될 수 있게 하는 것이 적절할 수 있다. 사용자 인터페이스 요소(예를 들어, 컨텍스트 메뉴(context menu))는 사용자가 예를 들어, 데이터세트를 나타내는 아이콘 또는 데이터 플로(data flow)를 나타내는 링크와 상호작용할 때(예를 들어, 오른쪽 클릭 동작을 이용함) 디스플레이되도록 개발 사용자 인터페이스로 통합될 수 있다. 사용자 인터페이스 요소는 연관된 데이터세트 또는 데이터 플로에 수행되는 하나 이상의 데이터 프로파일링 절차들을 개시하기 위한 옵션들(options)을 사용자에게 제시할 수 있다. 상대적으로 짧은 지연 후에, 결과들이 사용자 인터페이스의 윈도우에 디스플레이될 수 있다. 지연 동안 기다림이 상대적으로 짧을 것을 사용자에게 나타내기 위해 진행 바가 디스플레이될 수 있다. 일 예시 시나리오에서, 사용자가 단지 값들의 고정된 세트를 가지는 데이터 세트의 특정 필드를 예상하고 있다면, 데이터 프로파일링 결과들은 임의의 예상치 않은 값들이 데이터세트에 존재하는지 여부를 사용자에게 보여줄 수 있다. 또 다른 예시 시나리오에서, 사용자는 꽉 채워질 것으로 예상되는 필드가 어떤 블랭크(blank)나 널(null) 값들을 가지는지 알기 위해 체크할 수 있다. 사용자는 그때 임의의 관찰된 예상치 않은 경우들을 적절하게 처리하기 위해 "방어 로직(defensive logic)"을 프로그램에 통합시킬 수 있다. 또 다른 예시 시나리오에서, 사용자는 데이터플로 그래프의 마지막 실행에서 특정 데이터 플로를 통해 흐른 모든 데이터의 요약을 보길 원할 수 있다.
본 발명의 다른 특징들과 장점들은 다음 설명으로부터, 그리고 청구범위로부터 명백해질 것이다.
도 1은 데이터 처리 시스템의 블록도이다.
도 2는 데이터 프로파일링 절차의 개략도이다.
도 3은 필드-값 쌍들과 데이터 유형 정보 추출의 개략도이다.
도 4는 데이터 프로파일링 절차의 흐름도이다.
도 1은 효율적인 데이터 프로파일링을 위해 데이터 유형 정보를 관리하는 기술들이 사용될 수 있는 데이터 처리 시스템(100)의 일 예를 도시한다. 상기 시스템(100)은 저장 디바이스들 또는 온라인 데이터 스트림들로의 연결들 같은 하나 이상의 데이터 소스들 - 그것들 각각은 다양한 포맷들(예를 들어, 데이터베이스 테이블들, 스프레드시트 파일들, 플랫 텍스트 파일들(flat text files), 또는 메인프레임에 의해 사용되는 원시 포맷) 중 임의의 것으로 데이터를 저장하거나 제공함 - 을 포함할 수 있는 데이터 소스(102)를 포함한다. 실행 환경(104)은 프로파일링 모듈(106)과 실행 모듈(112)을 포함한다. 상기 프로파일링 모듈(106)은 데이터 소스(102)로부터의 데이터, 또는 상기 실행 모듈(112)에 의해 실행되는 데이터 처리 프로그램에 의해 생성되는 중간 데이터 또는 출력 데이터에 데이터 프로파일링 절차들을 수행한다. 상기 데이터 소스(102)를 제공하는 저장 디바이스들은 예를 들어, 상기 실행 환경(104)을 호스팅하는 컴퓨터에 연결된 저장 매체(예를 들어, 하드 드라이브(108))에 저장되어, 상기 실행 환경(104)에 로컬일 수 있거나, 예를 들어, 원격 연결(예를 들어, 클라우드 컴퓨팅 인프라스트럭처(cloud computing infrastructure)에 의해 제공됨)을 통해 상기 실행 환경(104)을 호스팅하는 컴퓨터와 통신하는 원격 시스템(예를 들어, 메인프레임(110))에 호스팅되어, 상기 실행 환경(104)에 원격일 수 있다.
상기 실행 환경(104)은 예를 들어, UNIX 운영 시스템의 버전 같은 적절한 운영 시스템의 제어 하에 하나 이상의 범용 컴퓨터들 상에 호스팅될 수 있다. 예를 들어, 상기 실행 환경(104)은 로컬이거나(예를 들어, 대칭적 다중처리(SMP) 컴퓨터들같은 멀티프로세서 시스템들) 지역적으로 분산된(예를 들어, 클러스터들 또는 대규모 병렬 처리(MPP) 시스템들로 결합된 다중 프로세서들) 것 중 하나, 또는 원격, 또는 원격으로 분산된(예를 들어, 지역 네트워크(LAN) 및/또는 광역 네트워크(WAN)를 통해 결합된 다중 프로세서들), 또는 그것들의 임의의 조합인, 다중 중앙 처리 유닛들(CPUs) 또는 프로세서 코어들(processor cores)을 사용하는 컴퓨터 시스템들의 구성을 포함하는 다중 노드 병렬 컴퓨팅 환경을 포함할 수 있다.
상기 프로파일링 모듈(106)은 상기 데이터 소스(102)로부터 데이터를 판독하고 상기 프로파일링 모듈(106)에 의해 수행되는 데이터 프로파일링 절차들에 의해 생성되는 프로파일 정보(114)를 저장한다. 상기 프로파일링 모듈(106)은 상기 실행 환경(104) 내에서 상기 실행 모듈(112)과 동일한 호스트(들)에서 실행할 수 있거나, 상기 실행 환경(104)과 통신하는 전용 데이터 프로파일링 서버 같은 추가적인 자원들을 사용할 수 있다. 상기 프로파일 정보(114)는 데이터 프로파일링 절차들의 결과와 하기에 더 상세히 설명되는 센서스 데이터(census data) 같은 상기 결과들을 생성하는 프로세스에서 컴파일된 중간 데이터를 포함한다. 상기 프로파일 정보(114)는 상기 실행 환경(104)에 접속 가능한 상기 데이터 소스(102)에 또는 데이터 저장 시스템(116)에 다시 저장되거나 그렇지 않으면 사용될 수 있다.
상기 실행 환경(104)은 또한 개발자(120)가 데이터 처리 프로그램들을 개발하고 데이터 프로파일링 절차들을 개시할 수 있는 개발 사용자 인터페이스(118)를 제공한다. 일부 구현에서, 상기 개발 사용자 인터페이스(118)는 정점들 사이의 방향성 링크들(작업 요소들, 즉 데이터의 흐름을 나타냄)에 의해 연결된 정점들(데이터 처리 컴포넌트들(components) 또는 데이터세트들을 나타냄)을 포함하는 데이터플로 그래프들 같은 데이터 처리 프로그램들의 개발을 용이하게 한다. 예를 들어, 이러한 사용자 인터페이스는 본원에서 참조로 원용된 "그래프 기반 어플리케이션들에 대한 파라미터들 관리(Managing Parameters for Graph-Based Applications)"라는 타이틀의 미국 공보 번호 2007/0011668에서 더 상세히 설명된다. 이러한 그래프 기반 계산들을 실행하기 위한 시스템은 본원에서 참조로 원용된 "그래프로 표현된 계산 실행(EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS)"이라는 타이틀의 미국 특허 5,966,072에서 설명된다. 이 시스템에 따라 만들어진 데이터플로 그래프들은 프로세스들 사이에서 정보를 이동하기 위해 그리고 프로세스들에 대한 실행 순서를 정의하기 위해 그래프 컴포넌트들에 의해 표현되는 개별 프로세스들로 정보를 보내고 개별 프로세스들로부터 정보를 얻기 위한 방법들을 제공한다. 이 시스템은 임의의 유용한 방법들로부터 프로세스 간 통신 방법들을 선택하는 알고리즘들을 포함한다(예를 들어, 그래프의 링크들에 따른 통신 경로들이 TCP/IP 또는 UNIX 도메인 소켓들을 사용할 수 있거나 프로세스들 사이에 데이터를 전달하는 공유 메모리를 사용할 수 있다). 상기 개발 사용자 인터페이스(118) 내에서 개시될 데이터 프로파일링 절차들에 부가하여, 데이터 프로파일링 절차들은 또한 입력 데이터세트로 데이터플로 링크에 의해 연결된 입력 포트와 데이터 프로파일링의 결과를 이용하여 작업을 수행하도록 구성된 다운스트림 컴포넌트(downstream component)로 데이터플로 링크에 의해 연결된 출력 포트를 가지는 데이터플로 그래프의 프로파일러 컴포넌트(profiler component)에 의해 수행될 수 있다.
상기 프로파일링 모듈(106)은 데이터베이스 시스템의 상이한 형태들을 포함하여 상기 데이터 소스(102)를 구현할 수 있는 다양한 유형의 시스템들로부터 데이터를 수신할 수 있다. 상기 데이터는 아마도 널 값을 포함하여, 각각의 필드들("속성들(attributes)" 또는 "열들(columns)"이라고도 함)에 대해 값들을 가지는 레코드들의 컬렉션을 나타내는 데이터세트들로 구성될 수 있다. 먼저, 데이터 소스로부터 데이터를 판독할 때, 상기 프로파일링 모듈(106)은 일반적으로 그 데이터 소스의 레코드들에 관해 일부 초기 포맷 정보로 시작한다. 일부 상황에서, 데이터 소스의 레코드 구조는 초기에 알려지지 않을 수 있고 대신에 데이터 소스 또는 데이터의 분석 후에 결정될 수 있다. 레코드들에 관한 초기 정보는 예를 들어, 개별 값을 저장하는 데 사용되는 비트들의 수, 레코드 내의 필드들의 순서, 및 특정 필드 내에서 나타나는 값의 데이터 유형(예를 들어, 문자열, 부호있는/부호없는 정수(signed/unsigned integer))를 포함할 수 있다.
일반적으로, 특정 데이터세트의 레코드들 모두 동일한 레코드 포맷을 가지고, 특정 필드 내의 모든 값들은 동일한 데이터 유형을 가진다(즉, 레코드 포맷이 "정적(static)"이다). 레코드들의 각각의 서브세트가 상이한 포맷을 가질 수 있고/있거나 하나 이상의 필드들이 상이한 데이터 유형들을 가질 수 있는 "동적(dynamic)" 레코드 포맷을 가지는 데이터세트들이 있을 수 있다. 본 출원에서 설명된 일부 예들은 정적 레코드 포맷을 가정하나, 동적 레코드 포맷을 지원하기 위해 다양한 변형들이 만들어질 수 있다. 예를 들어, 처리는 레코드 포맷에서 변화를 가지는 데이터세트의 레코드들의 각각의 서브세트의 시작시 다시 초기화될 수 있다. 대안적으로, 동일한 레코드 포맷을 가지는 레코드들의 각각의 서브세트는 정적 레코드 포맷을 가지는 상이한 가상 데이터세트로 취급될 수 있고, 그 가상 레코드 포맷들에 대한 결과들이 필요하다면 후에 병합될 수 있다.
데이터 프로파일링을 수행할 때, 상기 프로파일링 모듈(106)은 상기 데이터 소스(102)로부터 데이터를 판독하고 상이한 데이터세트들과 상이한 데이터세트들 내의 상이한 필드들을 특성화하는 다양한 유형들의 분석을 수행하는 데 사용될 수 있는 프로파일 정보(114)를 저장한다. 일부 구현에서, 상기 프로파일 정보(114)는 특정 필드들(예를 들어, 선택된 데이터세트들의 선택된 필드들, 또는 모든 데이터세트들의 모든 필드들) 내에서 나타나는 값들의 센서스(census)를 포함한다. 상기 센서스는 필드 내 별개 값들 모두의 리스트를 작성하고 각 별개 값이 나타나는 횟수를 정량화한다. 일부 구현에서는, 상기 센서스 데이터가 선택적으로 필드에 의해 인덱스된 단일 데이터 구조로 저장되고, 다른 구현에서는 상기 센서스 데이터가 예를 들어, 각각의 필드에 대해 하나씩, 다중 데이터 구조들로 저장된다.
프로파일될 특정 필드에 대한 센서스 데이터는 엔트리들의 목록으로 구성될 수 있고, 각각의 엔트리는 필드에 대한 식별자, 필드 내에서 나타나는 값, 및 데이터세트 내에서 그 필드에 값이 나타나는 횟수의 총계를 포함한다. 일부 데이터세트들에 대해, 상기 총계는 값이 그 필드에 나타나는 레코드들의 수와 같을 수 있다. 다른 데이터세트들(예를 들어, 일부 필드들에 대한 값들로서 네스트된 벡터들(nested vectors)을 포함하는 계층적 데이터세트들)에 대해, 상기 총계는 레코드들의 수와 다를 수 있다. 일부 구현에서, 상기 센서스 엔트리는 또한 그 값이 널인지 아닌지를 표시할 수 있다. 각각의 별개 값에 대해 엔트리가 있어서, 엔트리의 각각의 값은 다른 엔트리들의 값들과 다르고, 엔트리들의 수는 필드 내에 나타나는 별개 값들의 수와 동일하다. 필드에 대한 식별자는 프로파일될 필드를 고유하게 식별하는 임의의 값일 수 있다. 예를 들어, 프로파일될 필드들은 1로부터 프로파일될 필드들의 수까지의 범위에 있는 정수 인덱스를 각각의 필드에 할당하여 열거될 수 있다. 이러한 인덱스는 센서스 데이터 구조 내에 콤팩트 하게(compactly) 저장될 수 있다. 상이한 필드들에 대한 센서스 데이터가 별도 데이터 구조들에 저장될지라도, (예를 들어, 상이한 데이터 구조들로부터 엔트리들을 구별하기 위해) 상기 데이터 구조의 각각의 엔트리 내의 필드에 대한 특정 필드 식별자를 포함하는 것이 여전히 유용할 수 있다. 대안적으로, 일부 구현에서, 상이한 필드들에 대한 센서스 데이터가 별도 데이터 구조들에 저장된다면, 상기 필드는 그 데이터 구조에 대해 한번 저장되어야만 하고, 각각의 엔트리는 내재적으로 그 필드와 관련되고 상기 값과 상기 총계를 포함할 뿐이다.
도 2는 상기 프로파일링 모듈(106)에 의해 수행되는 센서스 기반 데이터 프로파일링 절차의 예를 도시한다. 추출 모듈(200)은 테이블(201) 같은, 프로파일될 데이터세트로부터의 추출된 필드-값 쌍들(field-value pairs)의 스트림(203)을 생성하기 위한 추출 절차를 수행한다. 이 예에서, 상기 테이블(201)은 FIELD1, FIELD2, 및 FIELD3로 명명된 세 개의 필드들을 가지고, 상기 테이블(201)의 처음 몇 개의 데이터 레코드들(즉, 처음 세 개의 행들)은 상기 세 개의 필드들 각각에 대해 각각의 값들로 보여진다. 센서스 생성 모듈(202)은 각각의 필드들에 대해 하나 이상의 센서스 파일들(205)을 생성하기 위한 필드-값 쌍들의 스트림(203)을 처리한다. 유형 종속적 처리 모듈(204)은 유형 종속적 프로파일링 결과들이 상기 프로파일 정보(114)에 포함될 수 있도록 저장된 데이터 유형 정보(208)로부터 다양한 데이터 유형들을 각각의 필드들과 연관짓는다. 유형-독립적 처리 모듈(206)은 원 데이터 유형에 의존하지 않는 추가 처리를 용이하게 하기 위해 소정 유형의 데이터 값들을 제공하는 상기 유형 종속적 처리 모듈(204)에 의해 복원된 상기 유형으로 분류된 데이터 값들(the typed data values)을 정규화한다. 센서스 생성 후까지 상기 유형 종속적 처리와 정규화를 지연함으로써, 별도로 대신에 동일한 데이터 값의 여러 인스턴스들이 함께 처리될 수 있기 때문에(즉 공통 데이터 값에 대해 한 번) 잠재적으로 큰 속도 향상이 실현된다.
상기 추출 모듈(200)은 특정 데이터 레코드들을 일련의 필드-값 쌍들 - 각각은 필드 인덱스, 및 이진 데이터 값을 포함함 - 로 쪼개어 필드-값 쌍들을 생성한다. 상기 필드 인덱스는 고유하게(그리고 효율적으로) 그 필드를 식별하기 위해 특정 필드에 할당되었던 인덱스 값이고(예를 들어, 1=FIELD1, 2=FIELD2, 3=FIELD3), 상기 이진 데이터 값은 그 필드에 대한 데이터 레코드에 포함된 대응하는 데이터 값을 나타내는 유형별로 분류되지 않은(un-typed)(또는 원시) 비트들의 시퀀스(sequence)이다. 이 예에서, 상기 테이블(201)의 첫 번째 데이터 레코드는 다음 필드-값(즉, 필드 인덱스, 이진 데이터 값) 쌍들을 산출할 것이다: (1, bin(A)), (2, bin(M)), (3, bin(X))(여기서, 설명을 위해, 이 예에서 "bin(A)"는 데이터 값 "A"를 나타내는 이진 데이터 값(즉, 비트들의 시퀀스)를 나타낸다).
상기 센서스 생성 모듈(202)은 센서스 파일들(205)을 생산하도록 상기 스트림(203)의 필드-값 쌍들로부터 이진 데이터 값들을 집계한다. 센서스 생성의 일부인 상기 집계를 수행하기 위해 필요로 되는 모든 것은 특정 데이터 값이 또 다른 데이터 값과 동일한지 여부를 알기에 충분한 정보를 가지는 것이다. 이 매칭(matching)은 원시 이진 데이터 값을 사용하여 수행될 수 있어서, 어떠한 귀중한 처리 시간도 데이터 유형들을 상기 센서스 생성 모듈(202)로 제공하는 데 소비될 필요가 없다. (도 2에서, 상기 센서스 파일들(205)의 엔트리들에서 보여진 값들은 상기 테이블(201)의 처음 세 개의 데이터 레코드들에 대응하고, 그것은 상기 테이블(201)의 추가 데이터 레코드들로부터 필드-값 쌍들이 상기 센서스 생성 모듈(202)에 의해 처리되었을 때 업데이트될 것이다.)
특정 데이터세트에 대해, 필드-값 쌍들은 임의의 순서로 스트림(203)으로 삽입될 수 있다. 이 예에서, 상기 스트림(203)은 데이터 레코드들이 상기 테이블(201)에 나타날 때 다음 데이터 레코드에 대한 필드-값 쌍들 모두가 뒤따르는 특정 데이터 레코드에 대한 필드-값 쌍들 모두를 포함한다. 대안적으로, 상기 테이블(201)은 필드에 의해 처리될 수 있어서, 상기 스트림은 필드들이 상기 테이블(201)에 나타날 때 다음 필드에 대한 필드-값 쌍들 모두가 뒤따르는 특정 필드에 대한 필드-값 쌍 모두를 포함한다. 더 고차원 데이터세트들은 또한 예를 들어, 데이터세트를 판독하는 데 또는 결과 스트림(203)으로부터 센서스 파일들을 생성하는 데 가장 효율적일 순서에 기반하여 상기 스트림(203)에 추가되는 필드-값 쌍들로 이러한 방식으로 처리될 수 있다. 필드-값 쌍들의 스트림(203)은 모든 필드-값 쌍들이 생성된 후에 다운스트림 센서스 생성 모듈(202)에 의해 처리되는 파일로 기록될 수 있거나, 필드-값 쌍들의 스트림(203)은 (예를 들어, 그 결과 파이프라인 병렬 처리(pipeline parallelism)의 장점을 취하기 위해) 그것들이 생성될 때 다운스트림 센서스 생성 모듈(202)에 제공될 수 있다.
상기 센서스 생성 모듈(202)은 상기 스트림(203)의 끝에 도달할 때까지 (예를 들어, 스트림이 데이터 레코드들의 유한 배치(finite batch)에 해당하는 경우 스트림의 끝 레코드, 또는 스트림이 데이터 레코드들의 연속적인 스트림에 해당하는 경우 작업 단위를 구분하는 마커에 의해 표시된 때) 필드-값 쌍들을 처리한다. 상기 모듈(202)은 그 필드-값 쌍의 이진 데이터 값이 이전에 처리된 필드-값 쌍으로부터의 이전 이진 데이터 값과 매치(match)하는지를 결정하기 위해 "센서스 매칭 연산(census matching operation)"이라 불리는 필드-값 쌍들에 대한 데이터 연산을 수행한다. 상기 모듈(202)은 상기 스트림(203) 내의 각각의 필드-값 쌍에 대해 적어도 한번 센서스 매칭 연산을 수행한다. 상기 모듈(202)은 메모리 디바이스의 작업 메모리 공간에 저장되는 데이터 구조로 상기 센서스 매칭 연산의 결과를 저장한다. 상기 센서스 매칭 연산이 이전 데이터 값에 대한 매치(match)를 찾았다면, 그 데이터 값과 관련된 저장된 총계가 증가된다. 그렇지 않으면, 센서스 매칭 연산이 이전 데이터 값에 대한 매치를 찾지 못했다면, 새로운 엔트리가 상기 데이터 구조에 저장된다.
예를 들어, 상기 데이터 구조는 배열 내 관련 값들을 탐색하는데 사용되는 고유 키들로 키-값 쌍들을 저장할 수 있는 연관 배열(associative array)일 수 있다. 이 예에서, 상기 키는 필드-값 쌍들로부터의 이진 데이터 값이고, 상기 값은 상기 센서스 데이터에 대한 전체 총계까지 증가될 총계이다. 상기 총계는 상기 키-값 쌍이 상기 연관 배열에 이미 존재하는 임의의 키에 매치(match)하지 않는 키로 특정 이진 데이터 값을 가지는 필드-값 쌍에 대해 생성된 때 1에서 시작하고, 또 다른 필드 -값 쌍이 기존 키에 매치하는 이진 데이터 값을 가질 때마다 1씩 증가된다. 상기 모듈(202)은 프로파일링될 필드들 각각에 할당된 하나의 연관 배열로, 상이한 연관 배열들 내의 (각 필드-값 쌍 내의 상기 필드 인덱스에 의해 결정된 바와 같이) 상이한 필드들에 대한 필드-값 쌍들의 이진 데이터 값들을 탐색한다. 일부 구현에서는, 프로파일링될 필드들의 수가 미리 알려지고, 빈 연관 배열(저장 공간의 최소 양만 사용함)이 상기 프로파일링 절차의 시작시 각 필드에 할당된다.
상기 연관 배열은 예를 들어, 키들의 효율적인 탐색 및 연관 값들의 수정을 제공하는 해시 테이블(hash table) 또는 다른 데이터 구조를 이용하여 구현될 수 있다. 키-값 쌍의 키로 사용되는 상기 이진 데이터 값은 이진 데이터 값 자체의 복사본 또는 상이한 위치에 저장된 이진 데이터 값에 대한 포인터를 작업 메모리에 저장한다(예를 들어, 필드-값 쌍의 복사본으로 저장됨). 상기 필드-값 쌍, 또는 심지어 전체 필드-값 쌍 자체로부터의 이진 데이터 값의 저장된 복사본과 함께 상기 연관 배열은 이때 일괄적으로 센서스 매칭 결과들을 저장하는 데이터 구조로 간주될 수 있다. 필드-값 쌍들의 이진 데이터 값들에 대한 포인터들이 상기 연관 배열에 저장되는 구현에서, 특정 키를 포함하는 첫 번째 필드-값 쌍만 상기 작업 메모리에 저장될 필요가 있고, 특정 키를 포함하는 후속 필드-값 쌍들이 상기 센서스 매칭 연산 후에 작업 메모리로부터 제거될 수 있다.
하기 예에서, 프로파일링될 필드들에 대한 이러한 연관 배열들은 "센서스 배열들"이라고 하며 상기 키-값 쌍들은 센서스 배열 내 "센서스 엔트리들"이라고 한다. 센서스 생성의 종료시, 상기 센서스 생성 모듈(202)에 의해 생성된 센서스 배열은 별도 센서스 엔트리들 내의 상기 테이블(201) 내에서 나타나는 모든 별개 이진 데이터 값들, 및 이진 데이터 값이 상기 테이블(201)의 행들 내에서 나타나는 횟수의 전체 총계를 저장할 것이고, 그것은 프로파일링될 데이터 레코드들을 나타낸다. 선택적으로, 아마도 유형 종속적 처리의 일부로, 상기 센서스 배열들은 원시 이진 데이터 값들뿐만 아니라 그 이진 데이터 값들과 연관된 유형들을 저장하도록 업데이트될 수 있어서, 상기 센서스 엔트리들은 상기 테이블(201)에 나타나는 모든 별개 유형별로 분류된 데이터 값들(typed data values)을 저장한다. 정적 레코드 포맷들에 대해, 필드의 모든 데이터 값들이 동일한 데이터 유형을 가지는 곳에서, 유형별로 분류되기 전에 별개인 데이터 값들은 유형별로 분류된 다음에도 여전히 별개일 것이다.
상기 유형 종속적 처리 모듈(204)은 데이터 프로파일링 절차들이 특정 데이터 값이 그 원래 데이터 유형에 대해 유효한지를 결정할 수 있게 한다. 예를 들어, 특정 필드 내에서 나타나는 값들의 원래 데이터 유형이 '날짜' 데이터 유형을 가지는 것으로 (레코드 포맷에서) 정의되면 그 필드에 대한 유효 데이터 값이 특정 문자열 포맷과 그 문자열의 상이한 부분들에 대해 허용되는 값들의 범위를 가질 수 있다. 예를 들어, 상기 문자열 포맷은 YYYY-MM-DD로 지정될 수 있고, 여기서 YYYY는 연도를 나타내는 임의의 4자리 정수이고, MM은 달을 나타내는 1과 12 사이의 임의의 2자리 정수이며, DD는 일을 나타내는 1과 31 사이의 임의의 2자리 정수이다. '날짜' 유형의 유효한 값들에 추가적인 제한사항들은 예를 들어, 특정 달들은 1과 30사이의 일들만 허용하도록 더 지정할 수 있다. 또 다른 예에서, 'UTF-8' 데이터 유형을 가지는 필드의 데이터 값들을 검증하는 것은 유효 UTF-8 문자에서 허용되지 않는 특정 비트들의 시퀀스에 대한 데이터 값의 각각의 UTF-8 문자에 나타나는 바이트들을 체크하는 것을 포함할 수 있다. 또 다른 예에서, 특정 메인프레임 포맷의 데이터 유형을 가지는 필드의 데이터 값들을 검증하는 것은 그 메인프레임 포맷에 의해 정의된 특정 특성들을 체크하는 것을 포함할 수 있다. 상기 유형-종속적 검증은 데이터 값의 원래 데이터 유형에 의존하는 사용자 정의 검증 규칙들의 응용을 또한 포함할 수 있다. 데이터 값이 그 데이터 유형에 대해 유효하지 않은 것이 발견되면, 상기 유형-종속적 처리 모듈(204)은 상기 유형-종속적 처리 모듈(206)에 의해 수행될 수 있었던 그 데이터 값에 대한 추가 처리를 수행할 필요를 피할 수 있는 무효(invalid)로 플래그(flag)를 달 수 있다. 이러한 검증 체크들을 수행하기 전에, 상기 유형-종속적 처리 모듈(204)은 저장된 데이터 유형 정보(208)로부터 데이터 유형들을 검색하고, 그 검색된 데이터 유형들을 하기에 더 상세히 설명된 바와 같이 주어진 필드에 대한 센서스에 포함된 각각의 이진값들과 연관짓는다.
이진 데이터 값들을 추출하고 추후 사용을 위해 데이터 유형 정보(208)를 별도로 저장하는 기술의 일 예가 도 3에서 도시된다. 테이블(201)은 상기 테이블(201)의 세 개의 필드들과 함께 나타나는 값들의 데이터 유형들을 기술하는 레코드 포맷(300)과 관련된다. 이 예에서, 상기 레코드 포맷(300)은 여기서 보여지는 바와 같이 필드 선언들의 목록을 이용하여 정의된다:
Figure 112016094598927-pct00001
상기 레코드 포맷(300)은 상기 테이블(201)의 세 개의 필드들 FIELD1, FIELD2, FIELD3 각각에 대한 필드 선언을 포함한다. FIELDi에 대해, 필드 선언은 상기 필드의 데이터 값들의 데이터 유형의 식별자 Ti, 상기 필드의 데이터 값들의 길이의 식별자 Li, 및 상기 필드 이름을 포함한다. 상기 데이터 유형과 길이 식별자들(Ti 및 Li)은 (i = 1에서부터 필드들의 개수까지 대해) 이 예에서 기호적으로 표현되나, 실제 레코드 포맷들은 상기 데이터 유형과 길이를 식별하기 위해 다양한 키워드들, 구두점(punctuation), 및 다른 구문 요소들(syntax elements) 중 임의의 것을 사용할 수 있다.
어떻게 데이터 유형과 길이 식별자들이 구문의 특정 유형(즉, 데이터 조작 언어(DML) 구문)을 이용하여 지정될 수 있는지를 보이는 일 예가 "레코드" 및 "끝;" 용어들에 의해 구분되는 필드 선언들과 함께 여기서 제공되고, 각각은 세미 콜론으로 끝난다.
Figure 112016094598927-pct00002
이 예에서, 세 개의 상이한 데이터 유형들이 있다: 키워드 "string"에 의해 식별되는 문자열 데이터 유형, 키워드 "int"에 의해 식별되는 정수 데이터 유형, 및 키워드"decimal"에 의해 식별되는 부동 소수점 10진수 데이터 유형. 이 예는 또한 데이터 유형 키워드 뒤의 (바이트들의 통합으로) 길이 식별자들을 괄호 안에 포함한다.
레코드 포맷들의 다른 유형들 또한 사용될 수 있다. 예를 들어, 일부 레코드 포맷들에서, 데이터 값의 길이가 그 필드 선언에서 명백하게 지정되지 않는다(예를 들어, 가변 길이 데이터 값들 또는 구분된 데이터 값들에 대해). 일부 레코드 포맷들은 예를 들어, 조건적 레코드 포맷 또는 특정 유형의 저장 시스템(예를 들어, COBOL 카피북)에 대한 레코드 포맷을 지정하는 데 사용될 수 있는 잠재적으로 복잡한 구조(예를 들어, 계층적 또는 네스트된 구조(nested structure))를 가진다. 이 복잡한 구조는 파싱될(또는 "워크될(walked)") 수 있고, 각각의 필드는 고유 필드 식별자가 할당될 수 있다.
상기 추출 모듈(200)은 레코드 포맷(300)으로 정의된 바와 같이, 그 필드들의 원래 데이터 유형들에 관한 충분한 정보를 포함하는 데이터 유형 정보(208)를 저장하여 상기 유형-종속적 처리 모듈(204)이 유형-종속적 처리를 위한 원래 데이터 유형들을 복원할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 데이터 유형 식별자들 Ti와 길이 식별자들 Li는 데이터 유형 식별자들과 길이 식별자들을 그 각각의 필드들에 대한 대응하는 필드 식별자들과 연관짓는 연관 배열에 저장될 수 있다. 선택적으로, 필드의 이름 같은, 추가적인 정보가 또한 데이터 유형 정보(208)에 저장될 수 있다. 상기 데이터 식별자들 Ti는 그 원래 형태로, 또는 원래 데이터 유형을 복원하기에 충분한 정보를 저장하는 상이한 형태로 저장될 수 있다. 상기 데이터 유형 정보(208)의 이러한 생성은 데이터세트당 한번 수행될 필요가 있을 뿐이고, 센서스 생성을 위한 필드-값 쌍들을 생성할 때 데이터 값들과 함께 데이터 유형들을 추출하는 시스템들에 의해 행해지는 잠재적으로 대량의 작업을 방지한다. 상기 데이터 유형 정보(208)의 생성이 여러 번(예를 들어, 상기 추출 모듈(200)에 의해 한번 그리고 상기 유형-종속적 처리 모듈(204)에 의해 다시) 반복됨에도 불구하고, 데이터세트의 레코드들의 개수 정도의 횟수 대신에 일정 횟수로 이 데이터 유형 추출을 제한하여 잠재적으로 대량의 작업이 여전히 방지될 수 있다.
상기 데이터 유형 정보(208)가 상기 추출 모듈(200)에 의해 한번 생성되면, 상기 유형-종속적 처리 모듈(204)에 의한(또는 그렇지 않으면 통신되는) 검색을 위해 저장된다. 대신에 상기 데이터 유형 정보(208)가 상기 추출 모듈(200)에 의해 그리고 별도로 상기 유형-종속적 처리 모듈(204)에 의해 생성된다면(예를 들어, 필요로 되기 직전에), 상기 레코드 포맷에 의해 정의된 필드들에 인덱스 값들을 할당하기 위한 절차가 둘 다에 대해 동일한 동안에는, 상기 동일한 데이터 유형 정보(208)가 획득될 것이다. 어떤 모듈이 상기 데이터 유형 정보(208)를 생성하든지 간에, 그것은 필드 인덱스 값들을 필드-값 쌍들로 삽입하기 위해 상기 추출 모듈(200)에 의해 사용될 때 특정 필드들로 매핑된 동일한 필드 인덱스 값들(302)을 또한 사용할 것이다.
상기 추출 모듈(200)의 출력은 선택적으로 필드 인덱스와 이진 데이터 값으로 구성되는 쌍에 부가하여 다른 정보를 포함할 수 있는 요소들(elements)의 스트림이다. 여전히 도 3을 참조하면, 상기 추출 모듈(200)에 의해 테이블(201)로부터 추출된 필드-값 쌍들의 대체 스트림(203')은 각각의 이진 데이터 값에 대한 길이와 레코드 인덱스를 또한, 포함하는 요소들로 만들어진다. 상기 스트림(203')의 일 요소(306)는 "2"의 필드 인덱스 값(FIELD2에 대응함), 길이 값 len(M), 이진 데이터 값 bin(M), 및 "1"의 레코드 인덱스 값(테이블(201)의 첫 번째 레코드에 대응함)을 포함한다. 상기 필드 인덱스와 이진 데이터 값은 상기에 설명된 바와 같이 센서스 엔트리들을 컴파일하는 데 사용된다. 상기 레코드 인덱스는 하기에 설명된 바와 같이 위치 정보를 컴파일하는 데 사용될 수 있다. 상기 길이 값 len(M)은 예를 들어, 다음 이진 데이터 값 bin(M)에 대한 4바이트의 길이를 나타내는 값 4(예를 들어, 고정 길이 정수로 인코딩됨)일 수 있다. 상기 길이들을 갖지 않는 도 2의 스트림(203)은 그 길이(Li)가 레코드 포맷에 지정되고 상기 스트림(203)의 요소들을 판독할 때 상기 센서스 생성 모듈(202)에 액세스 가능한 데이터 값들의 고정 길이 필드에 대해 충분할 수 있다. 그러나 상기 레코드 포맷이 고정 길이를 지정하지 않고 대신에 데이터 값의 길이가 가변적인 것을 허용한다면, 길이 접두부가 상기 스트림(203')에서와 같이 각각의 요소에 포함될 수 있다. 빈 데이터 값에 대해서는, 어떠한 대응하는 이진 데이터 값도 뒤따르지 않는 0의 길이 접두부가 사용될 수 있다.
상기 센서스 생성은 일반적으로 프로파일 정보가 필드들에 나타나는 값들을 특성화하는 "필드-레벨" 프로파일링이 가능하도록 수행된다. 일부 구현에서, 상기 센서스 생성 모듈(202)은 또한 그 데이터 값이 나타나는 데이터 세트의 모든 레코드들을 식별하는 각각의 센서스 엔트리 위치 정보를 더하고, 그것은 각각의 별개 데이터 값에 대해 "레코드-레벨" 프로파일링에 유용하다. 이 예에서, 상기 위치 정보는 상기 테이블(201) 내 특정 레코드들로 매핑되는 레코드 인덱스 값들(304)에 기반하여 컴파일될 수 있다. 예를 들어, 특정 필드의 특정 데이터 값에 대한 센서스 엔트리의 생성 동안, 비트 벡터는 그 필드의 데이터 값을 가지는 모든 레코드의 레코드 인덱스의 정수 값들에 대응하는 비트 위치들 세트를 가진다. 상기 비트 벡터는 필요한 저장 공간을 줄이기 위해 압축될 수 있다. 상기 레코드 인덱스 값들(304)은 예를 들어, 각각의 레코드에 연속적인 정수들의 시퀀스를 할당하여 생성될 수 있다. 상기 위치 정보는 이때 레코드-레벨 통계를 컴파일하고 상기 데이터 프로파일링에 의해 발견된 특정 특성들을 가지는 레코드들(예를 들어, 특정 필드에서 발생하는 것이 예상되지 않았던 특정 데이터 값을 가지는 모든 레코드들)의 정확한 위치를 찾아내는(또는 "드릴 다운(drill down)" 하는) 상기 모듈들(204 및 206) 또는 다른 데이터 프로파일링 절차들에 의해 사용될 수 있다. 위치 정보를 컴파일하는 것은 추가적인 처리 시간이 걸릴 수 있으나, 센서스 생성 전에 모든 레코드들을 직접 처리하여 레코드-레벨 통계를 컴파일하는 것만큼 비용이 들지 않을 수 있다.
다양한 기술들이 원래 데이터 유형들을 유형-종속적 처리와 최종 정규화를 위해 센서스 배열들의 대응하는 이진 데이터 값들과 연관짓는 상기 유형-종속적 처리 모듈(204)에 의해 사용될 수 있다. 일부 구현에서, 센서스 엔트리로부터의 이진 데이터 값은 그 센서스 엔트리로부터의 필드 인덱스를 이용하여 데이터 유형 정보(208)로부터 검색된 데이터 유형을 가지는 로컬 변수(local variable)를 인스턴스화하여(instantiate) 복원된 데이터 유형을 가진다. 상기 로컬 변수는 (예를 들어, 로컬 변수의 데이터 유형에 따라 이진 데이터 값을 파싱하여) 상기 센서스 엔트리에 포함된 이진 데이터 값에 대응하는 값으로 초기화된다. 예를 들어, 상기 로컬 변수는 상기 유형-종속적 처리 모듈(204)이 구현되는 프로그래밍 언어의 변수(예를 들어, C 또는 C++ 변수)일 수 있다. 그 인스턴스화되고 초기화된 로컬 변수는 그런 다음 상기 유형-종속적 처리 모듈(204)에 의해 수행되는 처리를 위해 사용될 수 있다. 대안적으로, 일부 구현에서, 새로운 로컬 변수를 인스턴스화하는 대신에, 검색된 데이터 유형과 관련된 포인터가 이진 데이터 값이 (예를 들어, 센서스 엔트리에) 저장된 메모리 위치로 설정될 수 있다. 원래 데이터 유형의 복원은 또한 상기 이진 데이터 값들을 유형별로 분류된 데이터 값들로 재해석하기 위한 코드의 라인들을 생성하는 처리 모듈(예를 들어, DML 코드를 해석하기 위한 전용 엔진)을 호출하는 함수 호출을 이용하여 수행될 수 있다. 예를 들어, 상기 함수 호출은 다음과 같이 표현될 수 있다.
reinterpret_as(<data type identifier>,<binary data value>)
함수 "reinterpret_as"는 두 번째"이진 데이터 값" 인수를 첫 번째 "데이터 유형 식별자" 인수에 대응하는 데이터 유형을 가지는 유형별로 분류된 데이터 값으로 재해석하는데 필요한 처리를 호출한다.
상기 설명된 바와 같이, 수행되는 상기 유형-종속적 처리 중 일부는 상기 데이터 값이 그 유형에 대해 유효한지를 결정하기 위해 체크하는 것을 포함할 수 있다. 데이터 값이 그 유형에 대해 유효하거나 무효한지 여부를 결정하기 전에, 상기 데이터 값이 널(null)이거나 누락되었는지(상기 필드가 적어도 하나의 레코드에 대해 비었는지를 표시함)를 결정하는 체크가 있을 수 있다. 레코드 포맷에서 정의될 수 있는 소정의 널 값(또는 임의의 수의 '공간(space)' 문자들 같은 값들)이 있을 수 있다. 누락된 값은 예를 들어, 상기 이진 데이터 값에 대해 제로 길이를 표시하는 길이 접두부에 의해 표시될 수 있다. 일부 경우에서, 누락된 값은 널 값과 다르게 처리될 수 있다. 어떤 데이터 값들이 널 값들로 간주되는지가 데이터 유형에 의존할 수 있다.
정규화가 상기 유형-독립적 처리(상기 모듈(206)에 의함)의 시작시 또는 상기 유형-종속적 처리(상기 모듈(204)에 의함)의 종료시에 수행될 수 있다. 정규화는 예를 들어, 모든 데이터 값들을 '문자열(string)'의 타깃(target) 데이터 유형을 가지는 데이터 값으로 변환하는 것을 포함할 수 있다. 상기 데이터 값이 이미 '문자열'의 (복원된) 데이터 유형을 가진다면, 상기 정규화 절차는 그 데이터 값에 어떠한 연산들도 수행할 수 없다. 일부 구현에서, 상기 정규화 절차는 상기 데이터 값이 타깃 데이터 유형을 가질지라도 일부 연산들을 여전히 수행할 수 있다(예를 들어, 선행 또는 후행 '공간(space)' 문자들을 제거함). 정규화는 두 개의 상이한 데이터 값들을 동일한 정규화된 데이터 값으로 매핑할 수 있다. 예를 들어, (제1 필드로부터) '문자열'의 데이터 유형을 가지는 "3.14"의 데이터 값은 "3.14"의 '문자열' 값을 산출하기 위해 제거되는 후행 '공간(space)' 문자를 가질 수 있고, (제2 필드로부터) '십진수(decimal)'의 데이터 유형을 가지는 "3.14"의 데이터 값은 동일한 "3.14"의 '문자열' 값으로 변환될 수 있다. 동일한 필드(그리고 따라서 동일한 원래 데이터 유형을 가짐)로부터의 두 개의 상이한 데이터 값들이 동일한 정규화된 데이터 값으로 변환되면, 일부 구현에서, 상기 유형-독립적 처리 모듈(206)은 그 두 데이터 값들에 대해 센서스 엔트리들을 집계하기 위해 적절한 센서스 배열을 선택적으로 업데이트할 수 있어서 상기 새로운 값에 대한 총계가 예전 값들의 개별 총계들의 합이 된다.
도 4는 지연된 유형-종속적 처리와 정규화에 대한 데이터 유형 관리 기술들을 이용하는 절차 데이터 프로파일링의 일 예의 흐름도(400)를 도시한다. 이 흐름도는 데이터 프로파일링을 위한 가능한 알고리즘을 나타내나, 특정 단계들이 수행될 수 있는 어떤 순서를 제한하는 것을 의미하진 않는다(예를 들어, 병렬 처리의 다른 형태들을 허용함). 외부 루프에서, 상기 시스템(100)은 프로파일링될 데이터세트를 수신하고(402), 데이터 유형을 프로파일링될 각각의 필드에 대한 대응하는 필드 식별자와 연관짓는 대응하는 데이터 유형 정보를 저장한다(404). 내부 루프에서, 상기 시스템(100)은 각각이 필드들 중 하나를 고유하게 식별하는 필드 식별자와 레코드들 중 하나로부터의 이진값을 포함하는 데이터 유닛들(즉, 필드-값 쌍들)을 생성한다(406). 상기 이진값은 상기 필드 식별자에 의해 식별되는 레코드의 필드로부터 추출된다. 상기 시스템(100)은 상기 내부 루프를 종료하기 위한 조건으로 처리할 임의의 추가적인 레코드들이 있는지를 결정하기 위해 체크하고(408), 상기 외부 루프를 종료하기 위한 조건으로 처리할 임의의 추가적인 데이터세트들이 있는지를 결정하기 위해 체크한다(410).
잠재적으로 내부 또는 외부 루프들과 병렬로(예를 들어, 도 2의 모듈들의 파이프라인 병렬 처리를 이용하여), 상기 시스템(100)은 데이터 유닛들(예를 들어, 필드 식별자들에 기반한 특정 필드에 대한 데이터 유닛들)의 그룹으로부터 이진값들에 관한 정보를 집계한다(412). 일부 구현에서, 이 집계는 엔트리들의 목록이 프로파일링될 각각의 필드에 대해 생성되는(414) 센서스 절차의 형태이다. 각각의 센서스 엔트리는 이진값들 중 별개의 하나와 여러 데이터 유닛들로부터 집계되었던 그 이진값에 관한 정보(예를 들어, 전체 총계)를 포함한다. 유형-종속적 처리 단계에서, 상기 시스템(100)은 데이터 유형 정보로부터의 각각의 필드 식별자들과 관련된 데이터 유형들을 검색하고(416), 각각의 검색된 데이터 유형을 (필드 식별자에 기반하여) 목록들 중 적절한 하나의 엔트리들에 포함된 이진값들과 연관짓는다. 이는 상기 시스템(100)이 여러 데이터 유닛들로부터의 이진값들에 관한 정보들을 집계한 후에, 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 필드들 중 하나 이상에 관한 프로파일 정보를 효율적으로 생성할(418) 수 있게 한다.
센서스 기반 집계 후까지 유형-종속적 처리 및 정규화를 지연시키는 것과 함께, 다른 기술들이 추가로 데이터 프로파일링의 효율성을 증가시키기 위해(잠재적 지연들을 감소시킴) 조합되어 사용될 수 있다. 예를 들어, 기술들이 저장 공간을 오버플로우(overflow)하도록 작업 메모리 공간을 효율적으로 흘리는데(spill) 사용될 수 있다. 일부 구현에서, 상기 데이터 프로파일링 절차를 수행하는 프로그램, 또는 상기 프로그램의 일부(예를 들어, 상기 센서스 생성 모듈(202))는 상기 프로그램이 사용되도록 허용되는 메모리 디바이스 내에서 작업 메모리 공간의 최대량을 설정하는 메모리 제한이 주어질 수 있다. 상기 프로그램은 센서스 배열들을 저장하기 위해 허용되는 작업 메모리 공간의 대부분을 요구할 수 있고, 다른 임시 값들을 저장하기 위해 센서스 배열들보다 상당히 더 적은 공간을 요구할 수 있는 작업 메모리 공간을 사용할 수 있다. 상기 작업 메모리 공간의 오버플로우 조건은 상기 모듈(202)이 추가 엔트리를 상기 센서스 배열에 부가하는 데 불충분한 가용 작업 메모리 공간일 가능성이 있다거나, (예를 들어, 추가된 마지막 엔트리에 기인하여) 추가 엔트리들을 부가하는 더 이상의 임의의 가용한 작업 메모리 공간이 없다고 결정될 때 만족된다. 상기 모듈(202)은 상기 센서스 배열들(상기 센서스 배열 내 포인터들에 의해 참조되는 임의의 데이터 값들 또는 필드-값 쌍들을 포함함)의 총 크기를 측정하고 이 크기를 메모리 제한(또는 다른 임계치)에 비교하여, 또는 상기 센서스 배열들의 전체 크기를 직접 측정하지 않고 남겨진 가용 작업 메모리 공간의 양(예를 들어, 할당된 메모리 주소들의 블록으로부터 남아있는 메모리 주소들의 범위)을 결정하여 이 결정을 할 수 있다.
일부 구현에서, 상기 프로그램은 상기 센서스 배열들의 전체 크기가 상기 메모리 제한에 근접할 때를 검출하기 위해 오버플로우 임계치를 설정한다. 상기 센서스 배열들의 전체 크기는 예를 들어, 개별 센서스 배열들의 크기의 합을 계산하여 직접 측정될 수 있고, 여기서 개별 센서스 배열의 크기는 그 센서스 배열에 의해 점유되는 작업 메모리 공간 내의 비트들의 수로 측정된다. 대안적으로, 상기 센서스 배열들의 전체 크기는 예를 들어, 작업 메모리 공간 내에 남겨진 가용한 공간의 양을 계산하여 간접적으로 측정될 수 있다. 일부 구현에서, 상기 프로그램은 다른 값들에 대한 일부 공간을 보존하기 위해 메모리 제한 바로 아래로 오버플로우 임계치를 설정한다. 일부 구현에서, 상기 오버플로우 임계치는 예를 들어, 나머지 값들에 대해 필요한 공간이 무시될 수 있고/있거나 상기 프로파일링 모듈(106)이 엄격한 메모리 제한들을 부과하지 않는다면 메모리 제한과 동일할 수 있고, 상대적으로 짧은 시간 동안 메모리 제한이 적은 양들에 의해 초과되는 것을 허용한다.
오버플로우 조건이 트리거된(triggered) 후에, 상기 프로그램은 저장 디바이스(예를 들어, 데이터 저장 시스템(116)) 내 완성된 센서스 배열 오버플로우 저장 공간을 생성하는 데 필요한 일부 데이터를 저장하기 위해 오버플로우 처리 절차를 이용한다. 상기 오버플로우 저장 공간에 정확히 무엇이 저장되는지는 이용되는 오버플로우 처리 절차의 유형에 따른다. 본원에서 참조로 원용된 "데이터 연산을 위한 메모리와 저장 공간 관리(MANAGING MEMORY AND STORAGE SPACE FOR A DATA OPERATION)"라는 타이틀의 미국 공보 번호 2014/0344508는 상기 프로그램이 오버플로우 조건이 트리거된 후에 처리되는 각각의 필드-값 쌍들에 대해 센서스 매칭 연산을 수행하는 것을 지속하고, 데이터 연산의 결과(즉, 센서스 엔트리의 증가된 총계, 또는 새로운 센서스 엔트리)와 관련된 정보를 작업 메모리의 센서스 배열들의 동일한 세트 또는 작업 메모리의 센서스 배열들의 새로운 세트 중 하나에 저장하는 오버플로우 처리 절차들의 예들을 기술한다. 오버플로우 조건이 스트림(203)의 필드-값 쌍들의 처리 동안 어느 시점에서 트리거되었다면, 어떤 데이터는 작업 메모리 공간에 저장될 것이고, 어떤 데이터는 오버플로우 저장 공간에 저장될 것이다. 일부 경우에, 두 위치들의 데이터가 완성된 센서스 배열들을 생성하는 어떤 방식으로 결합된다. 각각의 센서스 배열은 유형-종속적 처리 모듈(204)에 의한 처리에 대해 그 자체 센서스 파일(205) 내에서 출력된다. 각각의 이진 데이터 값이 추출되어 그 데이터 유형을 표시하는 관련된 메타데이터 없이 센서스 배열에 저장될 수 있기 때문에, 상기 센서스 데이터의 저장 크기가 작게 유지될 수 있고, 그것은 또한 오버플로우가 발생할 기회를 감소시킨다.
상기 설명된 기술들은 예를 들어, 적절한 소프트웨어 명령들을 실행하는 프로그래머블 컴퓨팅 시스템을 이용하여 구현될 수 있거나 필드 프로그래머블 게이터 어레이(FPGA) 같은 적절한 하드웨어, 또는 어떤 하이브리드 형태로 구현될 수 있다. 예를 들어, 프로그램된 방법에서 상기 소프트웨어는 하나 이상의 프로그램되거나 프로그램가능한 컴퓨팅 시스템(분산, 클라이언트/서버, 또는 그리드같은 다양한 아키텍처를 가질 수 있음) - 각각은 적어도 하나의 프로세서, 적어도 하나의 저장 시스템(휘발성 및/또는 비휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 사용자 인터페이스(적어도 하나의 입력 디바이스 또는 포트를 이용하여 입력을 수신하고, 적어도 하나의 출력 디바이스 또는 포트를 이용하여 출력을 제공하기 위함)를 포함함 - 상에서 실행하는 하나 이상의 컴퓨터 프로그램들에서의 절차들을 포함할 수 있다. 상기 소프트웨어는 예를 들어, 데이터플로(dataflow) 그래프들의 디자인, 구성, 및 실행과 관련된 서비스들을 제공하는 더 큰 프로그램의 하나 이상의 모듈들을 포함할 수 있다. 상기 프로그램의 모듈들(예를 들어, 데이터플로 그래프의 요소들)은 데이터 저장소에 저장된 데이터 모델에 부합하는 데이터 구조들 또는 다른 조직화된 데이터로 구현될 수 있다.
상기 소프트웨어는 (예를 들어 범용 또는 특별 목적 컴퓨팅 시스템 또는 디바이스에 의해 판독 가능한) CD-ROM 또는 다른 컴퓨터 판독 가능 매체 같은 유형의, 비 일시적인 매체상에 제공될 수 있거나 또는 그것이 실행되는 컴퓨팅 시스템의 유형의, 비 일시적 매체에 네트워크 통신 매체를 통해 (예를 들어, 전파 신호에 인코딩되어) 전달될 수 있다. 상기 처리의 일부 또는 전부는 특별 목적 컴퓨터상에서 또는 코프로세서(coprocessors) 또는 필드 프로그래머블 게이트 어레이(field-programmable gate array, FPGA), 또는 전용, 주문형 반도체(dedicated, application-specific integrated circuit, ASIC) 같은 특별 목적 하드웨어를 사용하여 수행될 수 있다. 상기 처리는 소프트웨어에 의해 명시된 계산의 상이한 부분들이 상이한 컴퓨팅 요소들에 의해 수행되는 분산 방식으로 실행될 수 있다. 각각의 이러한 컴퓨터 프로그램은 저장 장치 매체가 본 출원에서 기술된 처리를 수행하도록 컴퓨터에 의해 판독될 때 컴퓨터를 구성하고 작동하기 위해, 바람직하게는 범용 또는 특별 목적 프로그래머블 컴퓨터에 의해 액세스 가능한 저장 장치의 컴퓨터 판독 가능 저장 매체(예를 들어, 솔리드 스테이트 메모리(solid state memory) 또는 매체, 또는 자기 또는 광 매체)에 저장되거나 다운로드된다. 본 발명 시스템은 또한, 컴퓨터 프로그램으로 구성되는, 유형의, 비 일시적 매체로서 구현되는 것으로 간주될 수 있고, 그렇게 구성된 매체는 컴퓨터가 본 출원에서 기술된 처리 단계들 중 하나 이상을 수행하도록 구체적이고 미리 정의된 방식으로 동작하게 한다.
본 발명의 다수의 실시 예가 기술되었다. 그럼에도 불구하고, 전술한 설명은 예시를 위한 것이며 다음의 청구항들의 범위에 의해 정의되는 본 발명의 범위를 한정하는 것이 아닌 것으로 이해되어야 한다. 따라서 다른 실시 예들이 또한 다음 청구항들의 범위 내에 있다. 예를 들어, 다양한 변형이 본 발명의 범위를 벗어남 없이 만들어질 수 있다. 부가적으로, 전술된 단계들의 일부는 순서 독립적이므로 기술된 것과 다른 순서로 수행될 수 있다.

Claims (21)

  1. 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법에 있어서, 상기 방법은
    상기 컴퓨팅 시스템의 입력 디바이스 또는 포트를 통해, 각각이 복수의 필드들의 각각의 필드들에 대해 적어도 하나의 값을 가지는 복수의 레코드들을 수신하는 단계;
    상기 컴퓨팅 시스템의 저장 매체에, 적어도 하나의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하는 단계; 및
    상기 컴퓨팅 시스템의 적어도 하나의 프로세서를 이용하여, 상기 레코드들로부터의 복수의 데이터 값들을 처리하는 단계를 포함하고, 상기 처리하는 단계는
    상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 단계 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-;
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 단계;
    상기 필드들 중 적어도 하나의 각각에 대한 엔트리들의 목록을 생성하는 단계 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -;
    상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 단계; 및
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 단계 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 단계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  2. 제1항에 있어서,
    상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출된 상기 이진값은 유형별로 분류되지 않은(un-typed) 비트들의 시퀀스로 추출되고, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 단계는 상기 검색된 데이터 유형을 가지는 유형별로 분류된(typed) 데이터 값으로 상기 유형별로 분류되지 않은(un-typed) 비트들의 시퀀스를 재해석하는 단계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  3. 제2항에 있어서,
    상기 프로파일 정보는 상기 레코드들로부터의 상기 복수의 데이터 값들의 원래 데이터 유형들에 의존하는 유형-종속적 프로파일링(type-dependent profiling) 결과들을 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  4. 제1항에 있어서,
    복수의 상기 데이터 유닛들로부터의 이진값들에 관한 정보들을 집계하는 단계는 상기 이진값들 간 매치(match)가 있는지를 결정하기 위해 상기 엔트리들의 목록의 이진값들과 상기 복수의 데이터 유닛들로부터의 이진값들을 비교하는 단계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  5. 제4항에 있어서,
    복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 상기 정보는 상기 이진값들을 비교할 때 매치가 결정될 때마다 증가되는 매치된 이진값들의 전체 총계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  6. 제4항에 있어서,
    제1 이진값과 제2 이진값 사이의 매치가 상기 제2 이진값을 포함하는 비트들의 시퀀스와 동일한 상기 제1 이진값을 포함하는 비트들의 시퀀스에 대응하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  7. 제1항에 있어서,
    상기 데이터 유형 정보는 적어도 하나의 데이터 유형들 각각을 상기 필드 식별자들 중 적어도 하나와 연관짓는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  8. 제7항에 있어서,
    상기 데이터 유형 정보로부터 상기 제1 식별자와 관련된 데이터 유형을 검색하는 것은 제1 필드 식별자와 관련된 데이터 유형을 검색하는 단계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  9. 제1항에 있어서,
    각각의 데이터 유닛은 상기 필드 식별자들 중 하나, 상기 레코드들 중 하나로부터의 이진값, 및 상기 데이터 유형들 중 하나를 고유하게 식별하는 데이터 유형 식별자를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  10. 제9항에 있어서,
    상기 데이터 유형 정보는 적어도 하나의 데이터 유형들 각각을 상기 데이터 유형 식별자들 중 적어도 하나와 연관짓는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  11. 제10항에 있어서,
    상기 데이터 유형 정보로부터의 상기 제1 식별자와 관련된 데이터 유형을 검색하는 것은 제1 데이터 유형 식별자와 관련된 데이터 유형을 검색하는 단계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  12. 제1항에 있어서,
    상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 단계는 상기 검색된 데이터 유형을 가지는 로컬 변수를 인스턴스화하는 단계와 상기 인스턴스화된 변수(instantiated variable)를 상기 엔트리에 포함된 상기 이진값에 기반한 값으로 초기화하는 단계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  13. 제1항에 있어서,
    상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 단계는 상기 검색된 데이터 유형과 관련된 포인터를 상기 엔트리에 포함된 상기 이진값이 저장된 메모리 위치로 설정하는 단계를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  14. 제1항에 있어서,
    각각의 데이터 유닛은 상기 필드 식별자들 중 하나, 상기 레코드들 중 하나로부터의 이진값, 및 상기 이진값의 길이의 표시자(indicator)를 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  15. 제14항에 있어서,
    상기 길이 표시자는 상기 이진값에 대한 접두부(prefix)로 저장되는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  16. 제1항에 있어서,
    상기 컴퓨팅 시스템의 입력 디바이스 또는 포트를 통해, 상기 복수의 레코드들과 관련된 레코드 포맷 정보를 수신하는 단계를 더 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  17. 제16항에 있어서,
    상기 데이터 유형 정보는 상기 수신된 레코드 포맷 정보에 적어도 부분적으로 기반하여 생성되는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  18. 제1항에 있어서,
    상기 처리하는 단계는 상기 이진값들과 관련된 검색된 데이터 유형으로부터 제1 필드에 대한 상기 목록들 중 제1의 상이한 각각의 엔트리들로부터의 이진값들을 타깃 데이터 유형(target data type)으로 변환하는 단계, 및 상기 이진값들과 관련된 검색된 데이터 유형으로부터 제2 필드에 대한 상기 목록들 중 제2의 상이한 각각의 엔트리들로부터의 이진값들을 동일한 타깃 데이터 유형으로 변환하는 단계를 더 포함하는, 컴퓨팅 시스템에서 데이터를 처리하기 위한 방법.
  19. 소프트웨어를 비 일시적 형태로 저장한 컴퓨터 판독가능한 매체에 있어서, 상기 소프트웨어는 컴퓨팅 시스템이
    상기 컴퓨팅 시스템의 입력 디바이스 또는 포트를 통해, 각각이 복수의 필드들의 각각의 필드들에 대해 적어도 하나의 값을 가지는 복수의 레코드들을 수신하도록 하고;
    상기 컴퓨팅 시스템의 저장 매체에, 적어도 하나의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하도록 하고; 그리고
    상기 컴퓨팅 시스템의 적어도 하나의 프로세서를 이용하여, 상기 레코드들로부터의 복수의 데이터 값들을 처리하도록 하는 명령들을 포함하고, 상기 처리는
    상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 것 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-;
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것;
    상기 필드들 중 적어도 하나의 각각에 대한 엔트리들의 목록을 생성하는 것 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -;
    상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 것; 및
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 것을 포함하는, 컴퓨터 판독가능한 매체.
  20. 컴퓨팅 시스템으로서, 상기 컴퓨팅 시스템은
    각각이 복수의 필드들의 각각의 필드들에 대해 적어도 하나의 값을 가지는 복수의 레코드들을 수신하도록 구성된 상기 컴퓨팅 시스템의 입력 디바이스 또는 포트;
    적어도 하나의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하도록 구성된 상기 컴퓨팅 시스템의 저장 매체; 및
    상기 레코드들로부터의 복수의 데이터 값들을 처리하도록 구성된 상기 컴퓨팅 시스템의 적어도 하나의 프로세서를 포함하고, 상기 처리는
    상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 것 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-;
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것;
    상기 필드들 중 적어도 하나의 각각에 대한 엔트리들의 목록을 생성하는 것 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -;
    상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 것; 및
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 것을 포함하는, 컴퓨팅 시스템.
  21. 컴퓨팅 시스템으로서, 상기 컴퓨팅 시스템은
    각각이 복수의 필드들의 각각의 필드들에 대해 적어도 하나의 값을 가지는 복수의 레코드들을 수신하기 위한 수단;
    적어도 하나의 데이터 유형들 각각을 적어도 하나의 식별자와 연관짓는 데이터 유형 정보를 저장하기 위한 수단; 및
    상기 레코드들로부터의 복수의 데이터 값들을 처리하기 위한 수단을 포함하고, 상기 처리는
    상기 레코드들로부터 복수의 데이터 유닛들을 생성하는 것 - 각각의 데이터 유닛은 상기 필드들 중 하나를 고유하게 식별하는 필드 식별자와 상기 레코드들 중 하나로부터의 이진값을 포함하고, 상기 이진값은 상기 필드 식별자에 의해 식별된 레코드의 필드로부터 추출됨-;
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것;
    상기 필드들 중 적어도 하나의 각각에 대한 엔트리들의 목록을 생성하는 것 - 상기 엔트리들 중 적어도 일부 각각은 상기 이진값들 중 하나와 복수의 상기 데이터 유닛들로부터 집계된 이진값에 관한 정보를 포함함 -;
    상기 데이터 유형 정보로부터 제1 식별자와 관련된 데이터 유형을 검색하고, 상기 검색된 데이터 유형을 상기 목록들 중 하나의 엔트리에 포함된 적어도 하나의 이진값과 연관짓는 것; 및
    복수의 상기 데이터 유닛들로부터 이진값들에 관한 정보를 집계하는 것 후에, 상기 필드에 나타나는 특정 이진값의 검색된 데이터 유형에 적어도 부분적으로 기반하여 상기 필드들 중 적어도 하나에 대한 프로파일 정보를 생성하는 것을 포함하는, 컴퓨팅 시스템.
KR1020167027062A 2014-03-07 2015-02-19 데이터 유형에 관련된 데이터 프로파일링 동작 관리 KR102361153B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461949477P 2014-03-07 2014-03-07
US61/949,477 2014-03-07
PCT/US2015/016517 WO2015134193A1 (en) 2014-03-07 2015-02-19 Managing data profiling operations related to data type

Publications (2)

Publication Number Publication Date
KR20160130256A KR20160130256A (ko) 2016-11-10
KR102361153B1 true KR102361153B1 (ko) 2022-02-09

Family

ID=52633633

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027062A KR102361153B1 (ko) 2014-03-07 2015-02-19 데이터 유형에 관련된 데이터 프로파일링 동작 관리

Country Status (8)

Country Link
US (1) US9971798B2 (ko)
EP (2) EP3594821B1 (ko)
JP (1) JP6427592B2 (ko)
KR (1) KR102361153B1 (ko)
CN (1) CN106062751B (ko)
AU (1) AU2015225694B2 (ko)
CA (1) CA2939915C (ko)
WO (1) WO2015134193A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3379415B1 (en) * 2013-05-17 2019-11-06 Ab Initio Technology LLC Managing memory and storage space for a data operation
US9986260B2 (en) * 2014-11-14 2018-05-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Census transform data compression methods and systems
EP3262532A4 (en) * 2015-12-18 2018-07-18 Hewlett-Packard Enterprise Development LP Data type management
MX2019005034A (es) * 2016-11-03 2019-08-22 Visa Int Service Ass Sistemas y metodos para crear un registro universal.
JP6977177B2 (ja) * 2018-01-25 2021-12-08 アビニシオ テクノロジー エルエルシー データプロファイリングにおいて妥当性確認結果を統合するための技術並びに関連するシステム及び方法
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
CN110750563A (zh) * 2018-07-20 2020-02-04 北京京东尚科信息技术有限公司 多模型数据处理方法、系统、装置、电子设备及存储介质
JP7105982B2 (ja) * 2018-07-25 2022-07-25 アビニシオ テクノロジー エルエルシー 構造化レコード取得
EP3641275A1 (de) * 2018-10-18 2020-04-22 Siemens Aktiengesellschaft Verfahren, vorrichtung und computerprogramm zur automatischen verarbeitung von datenbezeichnern
KR102185980B1 (ko) * 2018-10-29 2020-12-02 주식회사 뉴스젤리 테이블 처리 방법 및 장치
US11556563B2 (en) * 2020-06-12 2023-01-17 Oracle International Corporation Data stream processing
JP2022059247A (ja) * 2020-10-01 2022-04-13 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
CN113204706B (zh) * 2021-05-24 2024-01-12 北京明略软件系统有限公司 基于MapReduce的数据筛选抽取方法及系统
CN113407599A (zh) * 2021-06-30 2021-09-17 上海万物新生环保科技集团有限公司 一种基于文本数据的标准化处理方法及设备
US20230325372A1 (en) * 2022-04-11 2023-10-12 United Parcel Service Of America, Inc. Hierarchical to matrix data management

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215216A (ja) 1999-01-27 2000-08-04 Toshiba Corp デ―タ集計機とデ―タ集計システム
WO2005029369A2 (en) 2003-09-15 2005-03-31 Ab Initio Software Corporation Data profiling
US20050091648A1 (en) 2003-10-22 2005-04-28 International Business Machines Corporation Validating a variable data item in a software routine
US20110029478A1 (en) 2009-05-20 2011-02-03 Broeker Stephen A Stream Star Schema and Nested Binary Tree for Data Stream Analysis

Family Cites Families (108)

* Cited by examiner, † Cited by third party
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 データベース処理方法
US5604899A (en) * 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
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
US7031843B1 (en) 1997-09-23 2006-04-18 Gene Logic Inc. Computer methods and systems for displaying information relating to gene expression data
US6134560A (en) 1997-12-16 2000-10-17 Kliebhan; Daniel F. Method and apparatus for merging telephone switching office databases
USRE41901E1 (en) 1998-08-11 2010-10-26 Turbo Data Laboratories, Inc. Method and apparatus for retrieving accumulating and sorting table formatted data
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
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
WO2000079415A2 (en) 1999-06-18 2000-12-28 Torrent Systems, Inc. Segmentation and processing of continuous data streams using transactional semantics
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 三菱電機株式会社 データファイルシステム及びデータ検索方法
JP3363120B2 (ja) 1999-08-30 2003-01-08 ファンクルシステム株式会社 コンテンツ収集・貼付方法及び装置並びにコンテンツ収集・貼付のためのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2001331362A (ja) 2000-03-17 2001-11-30 Sony Corp ファイル変換方法、データ変換装置及びファイル表示システム
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
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
US7359847B2 (en) 2001-11-30 2008-04-15 International Business Machines Corporation Tracking converage results in a batch simulation farm network
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
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
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
WO2005050482A1 (en) 2003-10-21 2005-06-02 Nielsen Media Research, Inc. 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
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
KR100619064B1 (ko) * 2004-07-30 2006-08-31 삼성전자주식회사 메타 데이터를 포함하는 저장 매체, 그 재생 장치 및 방법
US8447743B2 (en) 2004-08-17 2013-05-21 International Business Machines Corporation Techniques for processing database queries including user-defined functions
CN1314634C (zh) 2004-09-17 2007-05-09 南京理工大学 单质炸药降静电处理方法
US7392169B2 (en) 2004-10-21 2008-06-24 International Business Machines Corporation Method, system and program product for defining and recording minimum and maximum event counts of a simulation utilizing a high level language
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
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
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
US7926043B2 (en) * 2006-06-20 2011-04-12 Microsoft Corporation Data structure path profiling
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
US8412713B2 (en) 2007-03-06 2013-04-02 Mcafee, Inc. Set function calculation in a database
US7958142B2 (en) * 2007-09-20 2011-06-07 Microsoft Corporation User profile aggregation
JP5241738B2 (ja) 2008-01-28 2013-07-17 株式会社ターボデータラボラトリー 表からツリー構造データを構築する方法及び装置
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
US7904464B2 (en) 2008-08-27 2011-03-08 International Business Machines Corporation Virtual list view support in a distributed directory
US8463739B2 (en) 2008-08-28 2013-06-11 Red Hat, Inc. Systems and methods for generating multi-population statistical measures using middleware
JP5287071B2 (ja) 2008-09-17 2013-09-11 株式会社リコー データベース管理システムおよびプログラム
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
KR101660348B1 (ko) 2009-09-16 2016-09-27 아브 이니티오 테크놀로지 엘엘시 데이터세트 요소의 매핑
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
WO2011060257A1 (en) 2009-11-13 2011-05-19 Ab Initio Technology Llc Managing record format information
US8396873B2 (en) 2010-03-10 2013-03-12 Emc Corporation Index searching using a bloom filter
US8326824B2 (en) 2010-05-28 2012-12-04 International Business Machines Corporation Methods to estimate existing cache contents for better query optimization
EP2585949B1 (en) 2010-06-22 2015-03-25 Ab Initio Technology LLC Processing related datasets
JP5398663B2 (ja) 2010-08-06 2014-01-29 三菱電機株式会社 データ処理装置及びデータ処理方法及びプログラム
WO2012051216A1 (en) 2010-10-11 2012-04-19 The Regents Of The University Of Colorado, A Body Corporate Direct echo particle image velocimetry flow vector mapping on ultrasound dicom images
US8296274B2 (en) 2011-01-27 2012-10-23 Leppard Andrew Considering multiple lookups in bloom filter decision making
KR101889120B1 (ko) 2011-01-28 2018-08-16 아브 이니티오 테크놀로지 엘엘시 데이터 패턴 정보 생성
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
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
JP6320999B2 (ja) 2012-06-21 2018-05-09 フィリップ モリス プロダクツ エス アー ネットワークベースのバイオマーカシグネチャに関連するシステムおよび方法
JP6357162B2 (ja) 2012-10-22 2018-07-11 アビニシオ テクノロジー エルエルシー 位置情報を用いたデータのプロファイリング
EP3379415B1 (en) 2013-05-17 2019-11-06 Ab Initio Technology LLC Managing memory and storage space for a data operation
US9348773B2 (en) 2013-05-28 2016-05-24 Dell Products, L.P. Systems and methods for adaptive interrupt coalescing in a converged network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215216A (ja) 1999-01-27 2000-08-04 Toshiba Corp デ―タ集計機とデ―タ集計システム
WO2005029369A2 (en) 2003-09-15 2005-03-31 Ab Initio Software Corporation Data profiling
US20050091648A1 (en) 2003-10-22 2005-04-28 International Business Machines Corporation Validating a variable data item in a software routine
US20110029478A1 (en) 2009-05-20 2011-02-03 Broeker Stephen A Stream Star Schema and Nested Binary Tree for Data Stream Analysis

Also Published As

Publication number Publication date
JP6427592B2 (ja) 2018-11-21
KR20160130256A (ko) 2016-11-10
EP3594821A1 (en) 2020-01-15
WO2015134193A1 (en) 2015-09-11
CN106062751B (zh) 2020-08-11
CA2939915A1 (en) 2015-09-11
JP2017515183A (ja) 2017-06-08
EP3594821B1 (en) 2023-08-16
EP3114578A1 (en) 2017-01-11
AU2015225694B2 (en) 2019-06-27
US9971798B2 (en) 2018-05-15
AU2015225694A1 (en) 2016-09-01
CN106062751A (zh) 2016-10-26
US20150254292A1 (en) 2015-09-10
CA2939915C (en) 2021-02-16

Similar Documents

Publication Publication Date Title
KR102361153B1 (ko) 데이터 유형에 관련된 데이터 프로파일링 동작 관리
CA3003756C (en) Storing and retrieving data of a data cube
US8326821B2 (en) Transforming relational queries into stream processing
CN114365115A (zh) 用于大容量数据处理的sql分析查询的异构硬件执行的技术
AU2018211280B2 (en) Managing memory and storage space for a data operation
US20140351239A1 (en) Hardware acceleration for query operators
Fegaras Incremental query processing on big data streams
CN108431766B (zh) 用于访问数据库的方法和系统
US20190213007A1 (en) Method and device for executing the distributed computation task
CN107818125B (zh) 通过simd处理器寄存器对数据进行迭代评估
US11074260B2 (en) Space-efficient methodology for representing label information in large graph data for fast distributed graph query
US11188594B2 (en) Wildcard searches using numeric string hash
Li Comparison of Single-Machine and Distributed Calculation of Temporal Degree Metrics
CN111159218A (zh) 数据处理方法、装置及可读存储介质

Legal Events

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