KR20160011212A - 데이터 운영을 위한 메모리 및 스토리지 공간 관리 - Google Patents

데이터 운영을 위한 메모리 및 스토리지 공간 관리 Download PDF

Info

Publication number
KR20160011212A
KR20160011212A KR1020157035823A KR20157035823A KR20160011212A KR 20160011212 A KR20160011212 A KR 20160011212A KR 1020157035823 A KR1020157035823 A KR 1020157035823A KR 20157035823 A KR20157035823 A KR 20157035823A KR 20160011212 A KR20160011212 A KR 20160011212A
Authority
KR
South Korea
Prior art keywords
data
memory space
information
overflow
units
Prior art date
Application number
KR1020157035823A
Other languages
English (en)
Other versions
KR102201510B1 (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 KR20160011212A publication Critical patent/KR20160011212A/ko
Application granted granted Critical
Publication of KR102201510B1 publication Critical patent/KR102201510B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 처리 방법은, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 메모리 장치(108) 내의 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 상기 작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 정보를 스토리지 장치(110)의 상기 오버플로우 스토리지 공간 내에 저장하고, 복수의 데이터 유닛들을 처리하는 동안 오버플로우 처리 절차를 여러 번 반복하는 단계를 포함하고, 상기 오버플로우 처리 절차는 오버플로우 스토리지 공간 내에 저장된 적어도 일부 정보를 사용하여 작업 메모리 공ㅇ간 내에 저장된 하나 또는 그 이상의 데이터 구조체들을 업데이트하는 단계를 포함한다.

Description

데이터 운영을 위한 메모리 및 스토리지 공간 관리{MANAGING MEMORY AND STORAGE SPACE FOR A DATA OPERATION}
본 출원은 2013년 5월 17일에 출원된 미국 출원 번호 61/824,686 에 대해 우선권을 주장한다.
본 명세서는 데이터 운영을 위한 메모리 및 스토리지 공간 관리에 관한 것이다.
몇몇 컴퓨팅 시스템(computing system)들은 메모리 장치를 관리하기 위해 운영 체제 내에서 실행되는 프로그램들에 의해 사용되는 가상 메모리 스킴(scheme)를 사용한다. 예를 들어, 운영 체제는 메모리 장치(“메인 메모리(main memory)”로 지칭되기도 함)의 큰 가상 주소 공간 및 작은 실제 주소 공간 간의 번역을 처리할 수 있으며, 상기 메모리의 페이지들은 메모리 장치보다 더 큰 용량으로 저장 지원의 역할을 하는 스토리지(storage) 장치로부터 옮겨 넣거나 비워진다. 따라서, 프로그램에 액세스 가능한(accessible) 작업 메모리의 용량은 메인 메모리의 크기에 한정되지 않는다. 가상 메모리 스킴에서, 메모리 장치 및 저장 지원 간에 프로그램이 왔다갔다하는 작업 메모리 내의 주소 페이지 이동은 일반적으로 작업 메모리를 사용하는 프로그램에 투명하다. 몇몇 컴퓨팅 시스템들은 MMU(memory management unit)가 CPU(central processing unit) 내에 들어가 있는 것과 같이 가상 메모리에 대한 하드웨어 지원을 구비할 수 있다. 몇몇 컴퓨팅 시스템들은 또한 메모리 주소들의 반복적인 접근을 빠르게 하기 위한 상대적으로 더 빠른 캐쉬 메모리(cache memory) 내에 메인 메모리 주소들의 한정된 수의 사본들을 저장하기 위해 하나 또는 그 이상의 레벨(level)들을 갖는 캐시 시스템(caching system)을 사용할 수도 있다.
본 발명의 기술적 과제는 데이터 운영을 위한 메모리 및 스토리지 공간을 효율적으로 관리함에 있다.
일 측면에서, 일반적으로, 컴퓨팅 시스템은 작업 메모리 공간을 제공하는 메모리 장치; 오버플로우(overflow) 스토리지(storage) 공간을 제공하는 스토리지 장치; 및 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 처리는 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 상기 작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하는 단계; 및 상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 결과 정보를 생성하는 단계를 포함한다. 상기 데이터 동작의 결과와 연관된 정보를 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 단계는, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합을 위해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 포함한다.
측면들은 아래의 특징들 중 하나 또는 그 이상을 포함할 수 있다.
상기 작업 메모리 공간에 관한 오버플로우 조건은 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 위해 사용되는 작업 메모리 공간의 양이 미리 결정된 임계값보다 크거나 이와 같은 경우 충족된다.
상기 처리는, 작업 메모리 공간에 관한 오버플로우 조건이 충족되고 난 이후 및 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하기 전에, 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 상기 오버플로우 스토리지 공간 내에 저장하는 단계, 및 상기 작업 메모리 공간으로부터 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 제거하는 단계를 더 포함한다.
상기 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하는 단계는 상기 제1 집합으로부터의 적어도 하나의 데이터 구조체와 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체를 병합하는 단계를 포함한다.
상기 제1 집합으로부터의 적어도 하나의 데이터 구조체와 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체를 병합하는 단계는 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합으로부터의 데이터 구조체 내의 제1 키(key)를 상기 하나 또는 그 이상의 데이터 구조체들의 제2 집합으로부터의 데이터 구조체 내의 제2 키와 매칭시키는 단계, 및 상기 제1 키와 연관된 값과 상기 제2 키와 연관된 값의 집성 동작을 수행하는 단계를 포함한다.
상기 처리는, 상기 오버플로우 조건이 충족되고 난 이후 및 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들에 대한 동작을 수행하기 전에, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제3 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하는 단계, 및 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계를 더 포함한다.
상기 데이터 유닛들의 제2 부분집합은 상기 데이터 유닛들의 제3 부분집합이다.
상기 처리는, 상기 데이터 유닛들의 제3 부분집합의 제1 데이터에 대한 데이터 동작을 수행하고 난 후, 데이터 동작의 결과와 연관된 정보를 (1) 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체의 제1 집합 내, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계를 더 포함한다.
상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작은 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함한다.
상기 데이터 동작의 결과와 연관된 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계는 상기 제1 데이터 유닛의 적어도 일부 콘텐츠(content)를 상기 오버플로우 스토리지 공간 내에 저장하는 단계를 포함한다.
상기 제1 데이터 유닛에 대한 데이터 동작을 수행하는 단계는 상기 제1 데이터 유닛 내의 키를 하나 또는 그 이상의 데이터 구조체들의 상기 제1 집합 내의 하나 또는 그 이상의 키들과 비교하는 단계를 더 포함하고, 상기 비교 결과가 매칭인 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장되고, 상기 비교 결과가 매칭이 아닌 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 오버플로우 스토리지 공간 내에 저장된다.
상기 처리는 데이터 소스(source)로부터 상기 복수의 데이터 유닛들을 생성하는 단계를 더 포함하되, 상기 각각의 데이터 유닛들은 상기 데이터 소스의 필드(field)에 대한 식별자 및 상기 데이터 소스의 레코드(record) 내에 있는 상기 필드내에서 나타나는(appearing) 값을 포함한다.
상기 데이터 동작은 정보가 집성되는데 기초가 되는 매칭 데이터 유닛들을 선택하기 위한 키로써 상기 데이터 유닛들 내에 포함된 값들을 사용하여 복수의 데이터 유닛들로부터의 정보의 집성을 포함한다.
상기 메모리 장치는 비휘발성(non-volatile) 메모리 장치를 포함한다.
상기 스토리지 장치는 비휘발성(non-volatile) 스토리지 장치를 포함한다.
다른 측면에서, 일반적으로, 컴퓨팅 시스템은 작업 메모리 공간을 제공하는 수단; 오버플로우(overflow) 스토리지 공간을 제공하는 수단; 및 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 수단을 포함한다. 여기서 상기 처리는 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하는 단계; 및 상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 결과 정보를 생성하는 단계를 포함한다. 상기 데이터 동작의 결과와 연관된 정보를 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 단계는, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합에 의해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 포함한다.
다른 측면에서, 일반적으로, 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 방법은 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하는 단계; 및 상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 상기 결과 정보를 생성하기는 단계를 포함한다. 상기 데이터 동작의 결과와 연관된 정보를 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 단계는, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합에 의해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 포함한다.
다른 측면에서, 일반적으로, 소프트웨어는 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 컴퓨터 판독가능한 매체 내에 저장된다. 상기 소프트웨어는 컴퓨팅 시스템에 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하고; 작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 스토리지 장치의 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하고; 그리고 상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 결과 정보를 생성하는 명령들을 포함한다. 상기 데이터 동작의 결과와 연관된 정보를 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 것은, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합에 의해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 포함한다.
다른 측면에서, 일반적으로 컴퓨팅 시스템은, 작업 메모리 공간을 제공하는 메모리 장치; 오버플로우(overflow) 스토리지(storage) 공간을 제공하는 스토리지 장치; 및 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 처리는 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 및 작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 복수의 데이터 유닛들로부터 데이터 유닛들에 대한 제2 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 데이터 동작의 결과와 연관된 정보를 (1) 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계를 포함한다.
측면들은 아래 특징들 중 하나 또는 그 이상을 포함할 수 있다.
상기 작업 메모리 공간에 관한 오버플로우 조건은 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합에 의해 사용되는 작업 메모리 공간의 양이 미리 결정된 임계값보다 크거나 이와 같은 경우 충족된다.
상기 데이터 동작은 각각의 데이터 유닛 내의 키(key) 값에 적어도 부분적으로 기반하고, 상기 결정하는 단계는 (1) 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 데이터 구조체 내의 상기 키 값과 연관된 정보를 업데이트할지, 또는 (2) 상기 키 값과 연관된 정보를 상기 상기 오버플로우 스토리지 내에 저장할지 여부를 결정하기 위하여 상기 제1 집합의 데이터 구조체들 중 적어도 하나 내에서 적어도 하나의 키 값을 찾는 단계를 포함한다.
상기 데이터 동작은 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함한다.
상기 데이터 동작의 결과와 연관된 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계는 상기 데이터 동작이 수행된 상기 데이터 유닛의 적어도 일부 콘텐츠(content)를 상기 오버플로우 스토리지 공간 내에 저장하는 단계를 포함한다.
상기 제1 데이터 유닛에 대한 데이터 동작을 수행하는 단계는 상기 제1 데이터 유닛 내의 키와 하나 또는 그 이상의 데이터 구조체들의 상기 제1 집합 내의 하나 또는 그 이상의 키들을 비교하는 단계를 더 포함하고, 상기 비교 결과가 매칭되는 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장되고, 상기 비교 결과가 매칭되지 않는 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 오버플로우 스토리지 공간 내에 저장된다.
상기 처리는 데이터 소스(source)로부터 상기 복수의 데이터 유닛들을 생성하는 단계에 있어서, 상기 각각의 데이터 유닛들은 상기 데이터 소스의 필드(field)에 대한 식별자 및 상기 데이터 소스의 레코드(record) 내에 있는 상기 필드에서 나타나는(appearing) 값을 포함한다.
상기 데이터 동작은 집성된 정보로부터 매칭하는 데이터 유닛을 선택하기 위한 키로써 데이터 유닛들 내에 포함된 값들을 사용하여 복수의 데이터 유닛들로부터의 정보의 집성을 포함한다.
상기 복수의 데이터 유닛들을 생성하는 단계는 데이터 소스(source)의 적어도 제1 필드에 대한 데이터 유닛들 및 상기 데이터 소스의 적어도 제2 필드에 대한 데이터 유닛들을 생성하는 단계를 포함한다.
상기 제2 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계는 제1 데이터 유닛 상에서 수행되는 데이터 동작의 결과와 연관된 정보를 상기 하나 또는 그 이상의 데이터 구조체의 제1 집합 내에 저장하는 단계, 및 상기 제2 데이터 유닛 상에서 수행되는 데이터 동작의 결과와 연관된 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계를 포함한다.
상기 제1 데이터 유닛 및 제2 데이터 유닛은 데이터 소스(source)의 동일한 필드에 대한 식별자들을 각각 포함한다
상기 메모리 장치는 휘발성(volatile) 메모리 장치를 포함한다.
상기 메모리 장치는 비휘발성(non-volatile) 메모리 장치를 포함한다.
다른 측면에서, 일반적으로, 컴퓨팅 시스템은, 작업 메모리 공간을 제공하는 수단; 오버플로우 스토리지 공간을 제공하는 수단; 및 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 수단을 포함한다. 상기 처리는 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과에 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 및 상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고, 상기 데이터 동작의 결과와 연관된 정보를 (1) 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계를 포함한다.
다른 측면에서, 일반적으로, 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 방법은, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 메모리 장치의 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체의 제1 집합 내에 저장하는 단계; 및 상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고, 상기 데이터 동작의 결과와 연관된 정보를 (1) 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계를 포함한다.
다른 측면에서, 일반적으로, 소프트웨어는 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 컴퓨터 판독가능한 매체(computer-readable medium) 상에 저장된다. 상기 소프트웨어는 컴퓨팅 시스템에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 메모리 장치의 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하고, 상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 (1) 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 집합, 또는 (2) 스토리지 장치의 오버플로우 스토리지 공간 내에 저장하도록 하는 명령들을 포함한다.
다른 측면에서, 일반적으로, 컴퓨팅 시스템은, 작업 메모리 공간을 제공하는 메모리 장치; 및 오버플로우(overflow)스토리지 공간을 제공하는 스토리지(storage) 장치; 및 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 처리는 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계, 여기서 상기 데이터 동작은 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 데이터 유닛 내의 값을 서치(search)하고, 만약 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고, 만약 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가함; 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 오버플로우 스토리지 공간 내에 정보를 조장하고 상기 작업 메모리 공간의 적어도 일부를 기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 적업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 데이터 유닛 내의 값을 서치하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계; 및 상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 집합들을 결합시켜 결과 정보를 생성하는 단계를 포함한다.
측면들은 아래의 하나 또는 그 이상의 특징들을 포함할 수 있다.
상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합에 사용되는 상기 작업 메모리 공간의 양이 미리 설정된 임계값보다 크거나 이와 같은 경우 상기 작업 메모리 공간의 오버플로우 조건이 충족된다.
상기 처리는, 상기 오버플로우 조건이 충족된 이후에 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들을 서치하기 전에, 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 상기 오버플로우 스토리지 공간 내에 저장하는 단계, 및 상기 작업 메모리 공간으로부터 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 제거하는 단계를 더 포함한다.
상기 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하는 단계는 상기 제1 집합으로부터의 적어도 하나의 데이터 구조체를 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체와 병합하는 단계를 포함한다.
상기 제1 집합으로부터의 적어도 하나의 데이터 구조체를 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체와 병합하는 단계는 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합으로부터의 데이터 구조체 내의 제1 키(key)를 상기 하나 또는 그 이상의 데이터 구조체들의 제2 집합으로부터의 데이터 구조체 내의 제2 키와 매칭시키는 단계, 및 상기 제1 키와 연관된 값과 상기 제2 키와 연관된 값의 집성 동작을 수행하는 단계를 포함한다.
상기 처리는, 상기 오버플로우 조건이 충족되고 난 뒤 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들에 대한 동작을 수행하기 전에, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제3 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하는 단계, 및 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계를 더 포함한다.
상기 데이터 유닛들의 제2 부분집합은 상기 데이터 유닛들의 제3 부분집합이다.
상기 정보를 수정하는 단계는 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함한다.
상기 처리는 데이터 소스(source)로부터 상기 복수의 데이터 유닛들을 생성하는 단계에 있어서, 상기 각각의 데이터 유닛들은 상기 데이터 소스의 필드(field)에 대한 식별자 및 상기 데이터 소스의 레코드(record) 내에 있는 상기 필드에서 나타나는(appearing) 값을 포함한다.
상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합은 키-값 쌍 엔트리들(key-value pair entries)의 복수의 연관 어레이(associative array)들을 포함한다.
상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 데이터 유닛 내의 값을 서치(search)하는 단계는 상기 키-값 쌍 엔트리들의 연관 어레이들 중 선택된 하나의 연관 어레이 내에서 엔트리에 대한 키로써의 값을 찾는 단계를 포함한다.
상기 키-값 쌍 엔트리들의 연관 어레이들 중 선택된 하나의 연관 어레이는 상기 데이터 유닛 내의 식별자에 대응한다.
상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계는 상기 발견된 키-값 쌍 엔트리의 값을 증가시키는(imcrementing) 단계를 포함한다.
상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계는 상기 데이터 유닛 내의 값으로써 키를 포함하고 하나의 카운트 값을 포함하는 선택된 어레이에 새로운 키-값 쌍 엔트리를 추가하는 단계를 포함한다.
상기 메모리 장치는 휘발성(volatile) 메모리 장치를 포함한다.
상기 스토리지 장치는 비휘발성(non-volatile) 스토리지 장치를 포함한다.
다른 측면에서, 일반적으로, 컴퓨팅 시스템은, 작업 메모리 공간을 제공하는 수단; 오버플로우(overflow) 스토리지(storage) 공간을 제공하는 수단; 및
결과 정보를 생성하기 위하여 복수의 데이터 유닛들을 처리하는 수단을 포함한다. 상기 처리는 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계, 여기서 상기 데이터 동작은 상기 작동 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체드의 제1 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 서치(search)하는 단계, 및 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계를 포함하고, 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계를 포함함; 상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 오버플로우 스토리지 공간 내에 정보를 저장하고, 상기 작업 메모리 공간의 적어도 일부 및 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛을 해방시키고, 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 찾는 단계를 포함하는 데이터 동작을 수행하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 값을 수정하는 단계; 및 상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합을 결합하여 결과 정보를 생성하는 단계를 포함한다.
다른 측면에서, 일반적으로, 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 방법은, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계, 여기서 상기 데이터 동작은 동작 메모리 장치의 동작 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 서치(search) 하는 단계, 및 만약 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고, 만약 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계를 포함함; 상기 작업 메모리 공간의 오버플로우(overflow) 조건이 충족된 이후에, 스토리지(storage) 장치의 오버플로우 스토리지 공간 내에 정보를 저장하고 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터의 데이터 유닛의 제2 부분집합의 각각의 데이터 유닛에 대하여, 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛의 값을 서치하는 단계를 포함하는 데이터 동작을 수행하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계; 및 상기 결과 정보를 생성하기 위하여, 상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합을 결합하는 단계를 포함한다.
다른 측면에서, 일반적으로, 소프트웨어는 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하기 위한 컴퓨터 판독가능한 매체(computer-readable medium) 상에 저장된다. 상기 소프트웨어는 컴퓨팅 시스템에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고, 여기서 상기 데이터 동작은 동작 메모리 장치의 동작 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 서치(search) 하는 단계, 및 만약 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고, 만약 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계를 포함함; 상기 작업 메모리 공간의 오버플로우(overflow) 조건이 충족된 이후에, 스토리지(storage) 장치의 오버플로우 스토리지 공간 내에 정보를 저장하고 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터의 데이터 유닛의 제2 부분집합의 각각의 데이터 유닛에 대하여, 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛의 값을 서치하는 단계를 포함하는 데이터 동작을 수행하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고; 상기 결과 정보를 생성하기 위하여, 상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합을 결합하도록 하는 명령들을 포함한다.
다른 측면에서, 일반적으로, 컴퓨팅 시스템은, 작업 메모리 공간을 제공하는 메모리 장치; 오버플로우(overflow) 스토리지(storage) 공간을 제공하는 스토리지 장치; 및 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 처리는 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계; 및 상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하는 단계를 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함한다.
측면들은 아래 특징들 중 하나 또는 그 이상을 포함할 수 있다.
만약 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합에 의해 사용되는 작업 메모리 공간의 양이 미리 결정된 임계값보다 크거나 이와 동일한 경우 상기 작업 메모리 공간에 대한 오버플로우 조건이 충족된다.
상기 처리는, 상기 오버플로우 조건이 충족된 이후 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하기 전에, 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 상기 오버플로우 스토리지 공간 내에 이동된 집합으로써 저장하는 단계, 및 상기 작업 메모리 공간으로부터 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 제거하는 단계를 포함한다.
상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들을 업데이트하는 단계는 상기 오버플로우 스토리지 공간에 저장된 하나 또는 그 이상의 데이터 구조체들의 이동된 집합으로부터의 적어도 하나의 데이터 구조로부터의 정보를 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합으로부터의 적어도 하나의 데이터 구조체와 병합하는 단계를 포함한다.
상기 병합하는 단계는 하나 또는 그 이상의 데이터 구조체들의 이동된 집합으로부터의 데이터 구조체 내의 제1 키를 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합으로부터의 데이터 구조체 내의 제2 키와 매칭시키는 단계, 및 상기 제1 키와 연관된 값과 상기 제2 키와 연관된 값의 집성(aggregation)을 수행하는 단계를 포함한다.
상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 사용하여 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트하는 단계는 상기 오버플로우 스토리지 공간 내에 저장된 데이터 유닛 내의 제1 키를 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합으로부터의 데이터 구조체 내의 제2키와 매칭시키는 단계, 및 상기 제2 키와 연관된 값을 증가시키는(incrementing) 단계를 포함한다.
상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 사용하여 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트하는 단계는 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함한다.
상기 처리는 데이터 소스(source)로부터 복수의 데이터 유닛을 생성하는 단계를 더 포함하되, 각각의 데이터 유닛은 상기 데이터 소스의 필드에 대한 식별자(identifier) 및 상기 데이터 소스의 레코드(record) 내에서의 상기 필드를 나타내는 값을 포함한다.
상기 데이터 동작은 집성된 정보로부터의 매칭하는 데이터 유닛들을 선택하는 키로써 데이터 유닛들 내에 포함된 값들을 사용하여 복수의 데이터 유닛들로부터의 정보의 집성을 포함한다.
상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합은 키-값 쌍 엔트리(key-value pair entry)들의 복수의 연관 어레이(array)들을 포함한다.
상기 제1 데이터 유닛에 대한 데이터 동작은 상기 키-값 엔트리들의 복수의 연관 어레이들 중 선택된 하나 내에서 서치하기 위한 키로써 상기 제1 데이터 유닛 내의 값을 사용하는 단계를 포함한다.
상기 키-값 쌍 엔트리들의 연관 어레이들 중 선택된 하나는 상기 제1 데이터 유닛 내의 식별자에 대응한다.
상기 메모리 장치는 휘발성(volatile) 메모리 장치를 포함한다.
상기 스토리지 장치는 비휘발성(non-volatile) 스토리지 장치를 포함한다.
다른 측면에서, 일반적으로, 컴퓨팅 시스템은, 작업 메모리 공간을 제공하는 수단; 오버플로우(overflow) 스토리지(storage) 공간을 제공하는 수단; 및 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 수단을 포함한다. 상기 처리는, 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계; 및 상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하는 단계를 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함한다.
다른 측면에서 결과 정보를 생성하기 위하여 복수의 데이터 유닛들을 처리하는 방법은, 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계; 및 상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하는 단계를 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함한다.
다른 측면에서, 일반적으로, 소프트웨어는 복수의 유닛들을 처리하기 위한 컴퓨터 판독가능한 매체(computer-readable medium) 상에 저장된다. 상기 소프트웨어는 컴퓨팅 시스템에 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하고; 동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하고; 상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하도록 하는 명령들을 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함한다.
측면들은 아래의 하나 또는 그 이상의 장점들을 가질 수 있다.
일부 컴퓨팅 시스템들(예를 들어, 일부 데이터베이스 관리 시스템들)은 작업 메모리를 관리함에 있어서 가상 메모리에만 의존하지 않을 수 있지만, 처리되는 데이터를 메인 메모리 또는 스토리지 장치 내의 스토리지 공간에 저장할지에 대한 처리 여부를 직접적으로 제어할 수 있다. 예를 들어, 일부 시스템들은 프로그램이 사용가능한 작업 메모리의 명확한 한계를 도입하고, 상기 작업 메모리 한계는 메인 메모리의 사이즈보다 작다(예를 들어, 프로그램은 다른 프로그램들과 작업 메모리를 공유하기 때문에). 만약에 프로그램이 작업 메모리 한계에 접근한다면, 프로그램은 “디스크에 유출” 기술을 선택적으로 사용하여 임시로 일부 데이터를 오버플로우 스토리지 공간 내에 저장하고, 작업 메모리리가 사용가능해진 이후, 나중에 데이터를 처리한다. 일부의 경우, 데이터를 디스크에 유출하는 것, 또는 메모리 페이지들을 교체하기 위한 운영 체제에 의존하는 것은 데이터 동작의 수행에 큰 효과를 가져올 수 있다.
아래에서 상세히 서술되는 데이터 프로파일링과 같은 데이터 처리 시스템들의 일부 어플리케이션에서, 데이터 동작이 잠재적으로 큰 데이터(예를 들어, 큰 데이터세트 및/또는 많은 수의 데이터세트) 상에서 수행하려고 하는 경우, 시스템은 작업 메모리 및 오버플로우 스토리지 공간을 효율적인 방법으로 관리하도록 구성되어 상기 데이터 처리 어플리케이션은 적절한 성능을 제공할 수 있다. 작업 메모리 및 오버플로우 스토리지 공간을 관리하는 하나의 접근은 일부 데이터 동작들을 인지하고, 유입되는 데이터를 처리하지 않고 디스크로 유출하는 대신에, 시스템은 적어도 부분적으로 유입되는 데이터 동작들을 수행하고, 일부의 경우, 유입되는 데이터가 디스크로 유출되는 것을 피할 수 있다.
예를 들어, 일부의 데이터 동작은 키값과 연관된 유입되는 레코드들의 스트림, 및 키 값이 이전 키 값과 매치하는 레코드드을 처리하고, 데이터 동작은 메모리 내의 데이터 구조체 내에 저장된 결과를 업데이트한다. 일부 구현에서, 여기서 서술되는 컴퓨팅 시스템은, “오버플로우 처리” 절차를 사용하여, 동작 메모리 한계에 도달한 이후에도 계속해서 키를 갖는 새로운 레코드들을 처리할 수 있다. 두 가지 예시의 오버플로우 처리 절차가 서술된다. 두 가지 절차들은 일부 레코드들이 매치되고 레코드들에 유출하지 않고 결과 데이터 구조체를 업데이트할 수 있다. 일부 매치된 레코드들에 대해, 결과 데이터 구조체는 더 많은 메모리를 사용하지 않고 가동중인 메모리를 업데이트할 수 있다. 하나의 오버플로우 처리 절차는 결과 데이터 구조체를 오버플로우 스토리지로 이동시키고 계속해서 새로운 레코드들(이동된 결과 데이터 구조체와 병합될 새로운 결과 데이터 구조체)을 처리하고, 다른 오버플로우 처리 절차는 매칭하지 않는 레코드들을 오버플로우 수토리지로 이동시키고 모든 세로운 레코드들(동일한 결과 데이터 구조체)을 계속해서 처리한다.
여기에서 서술되는 기술들을 사용하여 수행되는 데이터 동작의 일 예는 데이터세트를 프로파일링하기 위한 큰 데이터세트 내의 데이터 값들의 센서스를 생성하는데 사용되는 센서스 동작이다. 데이터 프로파일링 동작은 센서스 동작과 같은 데이터 프로파일링 처리를 실행하는 동안 처리되는 데이터 상에서 수행되는 소정의 동작들을 포함한다. 센서스 동작은 데이터 오버타임의 특정을 추적하는 데이터 퀄리티 시스템과 같은 다른 맥락 내에서 처리되는 데이터 상에서 수행될 수 있다. 다른 기술들이 사용된 다른 데이터 동작들은 불완전한 결과들을 병합하도록 허용하는 데이터 동작, 아래에서 서술되는 메모리 내의 데이터 구조체 내의 일부의 경우들을 처리할 수 있는 동작들을 포함한다. 기술들은 여기에서 서술되는 정규화된 레코드들과 같은 데이터 유닛들, 또는 데이터 스트림 내의 데이터의 개별적인 부분을 나타내는 일부의 다른 데이터 유닛들을 처리하는데 사용될 수 있다.
본 발명의 다른 특징들 및 장점들은 아래의 상세한 설명 및 청구항들로부터 명확해질 것이다.
도 1은 데이터 처리 시스템의 블록 다이어그램을 나타낸다.
도 2는 데이터 프로파일링(data profiling) 절차를 나타내는 구성도이다.
도 3 및 도 5는 센서스(census) 생성 절차를 나타내는 구성도이다.
도 4A 내지 도 4C 및 도 6은 센서스 생성 절차를 나타내는 흐름도이다.
도 1은 동작 메모리 및 오버플로우(overflow) 스토리지(storage) 공간을 관리하는 기술이 사용될 수 있는 데이터 처리 시스템(100)의 일례를 도시한다. 데이터 처리 시스템(100)은 스토리지 장치들 또는 온라인 데이터 스트림(stream)들에 대한 연결들과 같은 하나 또는 그 이상의 소스(source)들을 포함할 수 있고, 이들 각각은 소정의 다양한 포맷들(예를 들어, 데이터베이스 테이블들, 스프레드시트 파일들, 플랫(flat) 텍스트 파일들, 또는 중앙컴퓨터(mainframe)에 사용되는 내티브(native) 포맷들)의 데이터를 저장하거나 제공할 수 있다. 데이터 처리 시스템(100)은 적어도 하나의 프로세서(106), 상기 프로세서(106)에 연결된 적어도 하나의 메모리 장치(108)(예를 들어, DRAM(Dynamic Random Access Memory)와 같은 휘발성(volatile) 메모리), 및 상기 프로세서(106)에 연결된 적어도 하나의 스토리지 장치(110)(예를 들어, 자기 하드 디스크 드라이브와 같은 비휘발성(non-volatile)스토리지)를 포함하는 컴퓨팅 시스템(104)을 포함한다. 컴퓨팅 시스템(100)이 데이터 소스(102)로부터의 데이터를 처리하고 난 뒤, 상기 처리의 결과들은 데이터 소스(102)에 만연한 상태 또는 데이터 소스(102)로부터 데이터를 수신하고 처리하는 목적지에 만연할 상태에 관하여 자동으로 사용자에게 제공하는 시각적 지시자들을 포함하는 사용자 인터페이스(UI)(102)에 제공될 수 있다.
데이터 처리 시스템(100)의 서로 다른 컴포넌트(component)들의 다양한 설정이 가능하다. 프로세서(106)는 예를 들어, UNIX 운영 체제의 버전(version)과 같은 적절한 운영 체제에 의해 제어되어 실행 환경을 호스트(host)하도록 구성될 수 있다. 일부 구현들에서, 컴퓨팅 시스템(104)은 복수의 CPU(central processing unit)들 또는 프로세서 코어들, 둘 중 하나의 내부(예를 들어, SMP(symmetric multi-processing) 컴퓨터들과 같은 멀티프로세서 시스템들), 또는 내부적으로 분산된(예를 들어, 클러스터들로써 연결된 복수의 프로세서들 또는 MPP(massively parallel processing) 시스템들, 또는 원격, 또는 원격 분산(예를 들어, LAN(local area network)에 연결된 복수의 프로세서들) 및/또는 WAN(wide-area network)), 또는 이들의 조합의 구성을 포함하는 멀티노드(multi-node) 병렬 컴퓨팅 환경의 일부분일 수 있다. 데이터 소스(102)를 제공하는 스토리지 장치는, 예를 들어, 컴퓨팅 시스템(104)에 연결된 스토리지 매체 상에 저장되어, 컴퓨팅 시스템(104)에 로컬(local)일 수 있고, 또는 예를 들어, (예를 들어, 클라우드 컴퓨팅 기반 시설(infrastruction)에 의해 제공된) 원격 연결을 통하여 컴퓨팅 시스템(104)과 통신하는 원격 시스템(예를 들어, 중앙컴퓨터(mainframe)) 상에서 호스트되어, 컴퓨팅 시스템(104)에 원격일 수도 있다.
일부 구현들에서, 컴퓨팅 시스템(104)은 노드들 사이의 (작업 컴포넌트들, 즉, 데이터의 흐름을 나타내는) 직접 링크들에 의해 연결되는 (데이터 처리 컴포넌트들 또는 데이터세트(dataset)들을 나타내는) 노드들을 포함하는 데이터흐름 그래프로써 어플리케이션들을 실행하도록 구성될 수 있다. 예를 들어, 이러한 환경은 본 명세서에서 참조로 통합된 미국공개특허 제2007/0011668호, “그래프-기반 어플리케이션들을 위한 파라미터들의 관리”에 보다 자세히 서술되어 있다. 이러한 그래프-기반 연산을 실행하기 위한 시스템은 본 명세서에서 참조로써 통합된 미국등록특허 제5,966,072호, “그래프로써 표현된 연산의 실행”에 자세히 서술되어 있다. 이 시스템에 따라 만들어진 데이터흐름 그래프들은 그래프 컴포넌트들에 의해 표현된 개별적인 프로세스들로부터 정보를 얻거나 제공하고, 프로세스들 사이에서 정보를 이동시키고, 프로세스들에 대한 수행 명령을 정의하는 방법을 제공한다. 이 시스템은 이용 가능한 방법들(예를 들어, 그래프가 사용할 수 있는 TCP/IP 또는 UNIX 도메인 소켓들, 또는 프로세스들 사이에서 데이터를 통과시키기 위해 수용 가능한 공유 메모리의 링크들에 따른 통신 경로들)로부터 인터프로세스 통신 방법들을 선택하는 알고리즘들을 포함한다.
컴퓨팅 시스템(104)은 서로 다른 데이터베이스 시스템들의 유형들을 포함하는 데이터 소스(102)를 포함할 수 있는 다양한 타입의 시스템들로부터 데이터를 수신할 수 있다. 상기 데이터는, 널 값들을 포함할 수 있는, 각각의 필드들(“속성들” 또는 “컬럼들”로 불리기도 함)의 갓들을 갖는 레코드들의 모음들을 나타내는 데이터세트(dataset)들로써 마련될 수 있다. 데이터 소스로부터 처음으로 데이터를 판독할 때, 컴퓨팅 시스템(104)은 통상적으로 상기 데이터 소스 내의 레코드들에 관한 일부의 최초 포맷 정보에서 시작한다. 일부의 경우, 데이터 소스의 레코드 구조는 처음에는 알려지지 않고 대신에 상기 데이터 소스 또는 데이터를 분석한 이후에 판단된다. 레코드들에 관한 최초 정보는, 예를 들어, 별개의 값을 나타내는 비트의 수, 레코드 내의 필드들의 순서, 및 상기 비트들에 의해 표현되는 값들의 타입(예를 들어, 스트링(string), 부호있는(signed)/부호없는(unsigned) 정수)를 포함할 수 있다.
데이터 처리 시스템(100)이 데이터 소스(102) 내의 데이터 상에서 수행할 수 있는 처리의 일례로는 데이터 프로파일링(profiling)이 있다. 저장된 데이터세트들은 사전에 알려지지 않은 다양한 특성들의 데이터를 포함할 수 있다. 예를 들어, 데이터세트들의 값들의 범위 또는 일반적인 값들, 데이터세트 내의 서로 다른 필드들간의 관계, 또는 서로 다른 필드들 내의 값들 간의 기능적인 의존도 등이 알려지지 않을 수 있다. 데이터 프로파일링은 이러한 특성들을 판단하기 위하여 소정의 잠재적으로 연관된 데이터세트들에 대한 조사를 포함할 수 있다. 컴퓨팅 시스템(104)은 또한 데이터 소스(102) 내의 데이터의 청소 또는 데이터 소스(102) 내에 저장된 데이터세트들에 대한 메타데이터의 관리와 같은 다양한 업무들을 수행할 수 있다. 컴퓨팅 시스템(104)이 데이터흐름 그래프들 대로 어플리케이션들을 실행하도록 설정된 구현예들에서, 데이터 프로파일링은 예를 들어, 데이터흐름 링크에 의해 입력 데이터세트로 연결된 입력 포트 및 데이터흐름 링크에 의해 데이터 프로파일링의 결과들을 사용하여 업무를 수행하도록 구성된 다운스트림(downstream) 컴포넌트에 연결된 출력 포트를 갖는 데이터 흐름 그래프 내의 프로파일러 컴포넌트에 의해, 수행될 수 있다.
데이터 프로파일링을 수행할 때, 컴퓨팅 시스템(104)는 데이터 소스(102)로부터 데이터를 판독하고, 서로 다른 데이터세트 및 서로 다른 데이터세트들 내의 서로 다른 필드들을 특성화하기 위한 다양한 타입의 분석들을 수행하는데 사용될 수 있는 프로파일링 요약 정보를 저장한다. 일부 구현들에서, 상기 프로파일링 요약 정보는 특정 필드들(즉, 선택된 데이터세트들의 선택된 필드들, 또는 모든 데이터세트들의 모든 필드들) 내에서 나타나는 값들의 센서스(census)를 포함한다. 상기 센서스는 필드 내의 모든 구별되는 값들을 리스트(list)하고 각각의 기별 값들이 나타내는 횟수를 제한한다. 일부 구현들에서, 센서스 데이터는 단일 데이터 구조체 내에 서장되고, 선택적으로 필드에 의해 인덱스되고, 그리고 다른 구현들에서, 센서스 데이터는, 예를 들어, 각각의 필드 당 하나의, 복수의 데이터 구조체들 내에 저장될 수 있다.
특정 필드에 대하여 프로파일되는 센서스 데이터는 엔트리들의 리스트로써 마련될 수 있고, 각각의 엔트리는 필드에 대한 식별자,필드 내에 나타나는 값, 및 필드 내에 나타나는 값 내의 레코드들의 수에 대한 카운트를 포함한다. 각각의 구별되는 값에 대해서는 엔트리가 존재하고, 엔트리 내의 각각의 값은 다른 엔트리 내의 값과는 다르고, 엔트리들의 수는 필드 내에 나타나는 구별되는 값들의 수와 동일하다. 필드에 대한 식별자는 프로파일되는 필드를 유일하게 식별하는 소정의 값일 수 있다. 예를 들어, 프로파일되는 필드들은 1부터 프로파일되는 필드의 수까지의 범위 내의 정수 인덱스로 열거될 수 있다. 이러한 인덱스들은 센서스 데이터 구조체 내에 간결하게 저장될 수 있다. 만약 서로 다른 필드들에 대한 센서스 데이터들이 분리된 데이터 구조체들 내에 저장된다 할지라도, 데이터 구조체의 각각의 엔트리들 내에 필드에 대한 개별적인 필드 식별자를 포함시키는 것은 여전히 유용할 수 있다(예를 들어, 처리 모듈 내로 스트리밍되는 서로 다른 데이터 구조체들부터 엔트리들을 구별하기 위하여). 대안으로, 일부 구현들에서, 서로 다른 필드들에 대한 센서스 데이터들이 분리된 데이터 구조체들 내에 저장된 경우, 필드는 단지 데이터 구조체에 대하여 한번만 저장되고, 각각의 엔트리들은 필드와는 내재적으로 연관되고 오직 값과 카운트만을 포함한다.
도 2는 정규화된 레코드들의 스트림(208)을 생성하는 정규화 모듈(200), 정규화된 레코드들의 스트림(208)을 센서스 파일들(210) 내로 처리하는 센서스 생성 모듈(202), 및 프로파일 결과들을 계산하기 위해 센서스 파일들(210)을 분석하는 센서스 처리 모듈(204)을 포함하는 컴퓨팅 시스템(104) 상에서 실행되는 프로그램에 의해 수행되는 센서스 기반 데이터 프로파일링 절차를 나타낸다. 정규화 모듈(200)은 프로파일되기 위한 하나 또는 그 이상의 데이터세트들을 판독한다. 테이블(206)은 FIELD1, FIELD2, 및 FIELD3으로 명명된 세 개의 필드들을 포함하고, 테이블(206) 내의 처음 몇 개의 데이터들이 각각의 세 필드들에 대한 값으로 도시되어 있다. 정규화 모듈(200)은 특정 데이터 레코드를 각각 필드 인덱스, 및 데이터 값을 포함하는 일련의 정규화된 레코드들로 쪼갬으로써 정규화된 레코드들을 생성한다. 필드 인덱스는 필드를 유일하게(그리고 효율적으로) 식별하기 위하여 개별적인 필드에 할당되는 인덱스 값이고(예를 들어, 1=FIELD, 2=FIELD2, 3=FIELD3), 데이터 값은 필드에 대한 데이터 레코드들 내에 포함된 값에 대응하는 값이다. 예를 들어, 테이블(206) 내의 제1 데이터 레코드는 다음의 세 개의 각각의 정규화된 레코드들 (1, A), (2, M), (3, X)의 (필드 인덱스, 데이터 값) 쌍을 산출할 수 있다. 센서스 발생 모듈(202)은 센서스 파일들(210)을 만들기 위하여 스트림(208) 내의 정규화된 레코드들로부터의 데이터 값들을 집성한다. (도 2에서, 센서스 파일들(210)의 엔트리들 내에 도시된 값들은 테이블(206) 내의 처음 3개의 데이터 레코드들에 대응하고, 상기 레코드들은 센서스 발생 모듈(202)에 의해 처리된 테이블(206) 내의 추가적인 데이터 레코드들로부터 정규화된 레코드들로써 업데이트될 수 있다.)
개별적인 데이터세트에 대하여, 정규화된 레코드들은 소정의 순서로 스트림(208) 내로 삽입될 수 있다. 이 예에서, 스트림(208)은 테이블(206)에 나타나는 데이터 레코드들로써 모든 정규화된 레코드들에 뒤따르는 다음 데이터 레코드를 위한 개별 데이터 레코드에 대한 모든 정규화된 레코드들을 포함한다. 대체적으로, 테이블(206)은 필드에 의해 처리될 수 있어, 스트림은 테이블(206) 내에 나타나는 필드들로써 다음 필드에 대한 모든 정규화된 레코드들이 뒤따르는 기별적인 필드들에 대하여 모든 정규화된 레코드들을 포함한다. 더 높은 차원의 데이터 세트들은 또한 정규화된 레코드들이, 예를 들어, 데이터세트를 판독하기에, 또는 결과 스트림으로부터 센서스 파일들을 생산하기에 가장 효율적인 순서를 기반으로 한 출력 스트림에 추가되는 이러한 방법으로 정규화될 수 있다. 정규화된 레코드들의 스트림(208)은 모든 정규화된 레코드들이 생성된 이후에 다운스트림 센서스 생성 모듈(202)에 의해 처리되기 위해 파일로 기록될 수 있거나, 또는 정규화된 레코드들의 스트림(208)은 생성되는 대로 다운트림 센서스 생성 모듈(202)에 제공될 수 있다(예를 들어, 결과 파이프라인 유사성을 장점을 얻기 위해).
센서서 생성 모듈(202)은 스트림(208)이 끝에 도달할 때(예를 들어, 엔드오브스트림(end-of-stream) 레코드가 지시될 때)까지 정규화된 레코드들을 처리한다. 상기 모듈(202)은 정규화된 레크드 내의 데이터 값이 이전에 처리된 정규화된 레코드로부터의 이전 데이터에 매칭하는지 여부를 판단하기 위해, 정규화된 레코드 상에서, “센서스 매칭 동작”이라 불리는”, 하나의 타입의 센서스 동작을 수행한다. 상기 모듈(202)은 스트림(208) 내의 각각의 정규화된 레코드에 대하여 적어도 한번의 센서스 매칭 동작을 수행한다. 상기 모듈(202)은 센서스 매칭 동작의 결과와 연관된 정보를 메모리 장치(108) 내의 작업 메모리 공간 내에 저장된 적어도 하나의 데이터 구조체 내에 저장한다. 상기 데이터 구조체를 위하여 사용되는 작업 메모리 공간은 데이터 구조체의 소정의 오버헤드를 위한 메모리 및 포인터들에 의해 참조되는 데이터를 위한 소정의 메모리를 포함하는 데이터 구조체 내의 모든 정보를 포함한다. 만약 상기 센서스 매칭 동작이 이전 데이터 값에 대한 매칭을 발견하면, 상기 데이터 값과 연관된 저장된 카운트는 증가한다. 반대로, 만약 센서스 매칭 동작이 아전 데이터 값에 대한 매칭을 발견하지 못하면, 데이터 구조체 내에 새로운 엔트리가 저장된다.
예를 들어, 데이터 구조체는 어레이(array) 내의 연관된 값들을 찾아보기 위해 사용되는 유일한 키들을 구비한 키-값 쌍들을 저장할 수 있는 연관 어레이(array)일 수 있다. 이 예에서, 상기 키는 정규화된 레코드들로부터의 데이터 값이고, 상기 값은 센서스 데이터에 대한 총 카운트까지 증가할 것이다. 키-값 쌍이 연관된 어레이 내에서 이미 존재하는 어떠한 키와도 매칭되지 않는 키값으로써 개별적인 데이터 값으로 정규화된 레코드에 대해서 만들어질 때 상기 카운터는 1에서 시작하고, 다른 정규화된 레코드가 존재하는 키와 매칭되는 데이터 값을 가질 때마다 1씩 증가한다. 상기 모듈(202)은 서로 다른 연관 어레이들 내의 서로 다른 필드들에 대한 정규화된 레코드들을 찾아내고, 상기 하나의 연관 어레이는 프로파일링되는 각각의 필드들에 할당된다. 일부 구현들에서, 프로파일링되는 필드들의 수는 미리 알려지고, 빈 연관 어레이(스토리지 공간의 최소 용량만을 사용함)는 프로파일링 절차의 시작점에서 각각의 필드에 할당된다.
연관 어레이는, 예를 들어, 해쉬 테이블(hash table) 또는 키들의 효율적인 찾기 및 연관된 값들의 수정을 제공하는 다른 데이터 구조체들을 사용하여, 구현될 수 있다. 키-값 쌍의 키로써 사용되는 데이터 값은 데이터 값의 사본 또는 동작 메모리 내의 서로 다른 위치에 저장된(예를 들어, 정규화된 레코드의 사본 내에 저장된) 데이터 값에 대한 포인터를 저장할 수 있다. 다음으로, 정규화된 레코드로부터의 저장된 데이터 값의 사본과 마찬가지로 연관 어레이, 또는 정규화된 레코드 전체는, 센서스 매칭 결과들을 저장하는 데이터 구조체들로써 집합적으로 고려될 수 있다. 정규화된 레코드들 내의 데이터 값들에 대한 포인터들이 연관 어레이 내에 저장되는 구현들에서, 개별적인 키를 포함하는 처음으로 정규화된 레코드만이 작업 메모리 내에 저장될 필요가 있고, 개별적인 키를 포함하는 다음으로 정규화된 레코드들은 센서스 매칭 동작 이후에 작업 메모리로부터 제거될 수 있다.
아래의 예들어서, 프로파일링되는 필드들에 대한 연관 어레이들은 “센서스 어레이들”로 불리고 키-값 쌍들은 센서스 어레이 내의 “센서스 엔트리들”로 불린다. 데이터 프로파일링 절차의 마지막에, 센서스 생성 모듈(202)에 의해 생성된 센서스 어레이들은 개별적인 센서스 엔트리들 내의 테이블(206) 내에 나타나는 모든 구별되는 데이터값들을 저장하고, 데이터 값이 테이블(206)의 열 내에 나타나는 횟수의 총 카운트는 프로파일되는 데이터 레코드들을 나타낸다.
데이터 프로파일링 절차를 수행하는 프로그램, 또는 상기 프로그램의 일부(예를 들어, 센서스 생성 모듈(202))는, 상기 프로그램이 사용되도록 허락된 메모리 장치(108) 내의 동작 메모리 공간의 최대 용량을 구성하는 메모리 한계가 주어질 수 있다. 상기 프로그램은 동작 메모리의 대부분이 사용되도록 허락될 수 있는 센서스 어레이들을 저장하기 위하여, 그리고 상기 센서스 어레이들에 비하여 현저히 적은 메모리 공간을 필요로 하는 다른 일시적인 값들을 저장하기 위하여 동작 메모리 공간을 사용할 수 있다. 상기 모듈(202)이 센서스 어레이에 추가적인 엔트리를 추가할 이용가능한 동작 메모리 공간이 부족하거나, 추가적인 엔트리를 추가할 이용가능한 동작 메모리 공간이 더 이상 없다고 판단할 때(예를 들어, 마지막 엔트리가 추가되어) 동작 메모리 공간에 대한 오버플로우(overflow) 조건이 충족된다. 상기 모듈(202)은 센서스 어레이들의 메모리 사이즈를 측정함으로써 이러한 판단을 내릴 수 있다. 상기 메모리 사이즈는 센서스 어레이들에 의해 사용되는 동작 메모리 공간의 양을 나타내고, 이는 센서스 어레이들을 나타나는 데이터 구조체들에 의해 사용되는 소정의 오버헤드가 차지하는 전체 메모리 공간 및 상기 데이터 구조체들내의 모든 정보(소정의 데이터 값들 및 센서스 어레의 내의 포인터들에 의해 참조되는 정규화된 레코드들을 포함함)를 포함한다. 다음으로, 상기 모듈(202)은 메모리 한계(또는 다른 임계값)에 대한 상기 메모리 사이즈를 비교한다.
일부 구현에서, 센서스 어레이들의 메모리 사이즈가 메모리 한계치에 근접할 때, 상기 프로그램은 탐색을 위한 오버플로우(overflow) 임계값을 설정한다. 센서스 어레이들의 메모리 사이즈는, 예를 들어, 개벼적인 센서스 어레이들의 사이즈들의 합을 계산함으로써 직접적으로 측정될 수 있고, 여기서 개별적인 센서스 어레이의 사이즈는 센서스 어레이가 차지하는 작업 메모리 공간 내의 비트들의 수로써 측정된다. 다른 한편으로는 센서스 어레이의 메모리 사이즈는 센서스 어레이들의 메모리 사이즈를 직접적으로 측정하지 않고, 예를 들어, 작업 메모리 공간 내의 이용가능한 남은 공간의 총량을 계산함으로써 간접적으로 측정할 수 있다(예를 들어, 메모리 주소들의 할당된 블록으로부터 남은 메모리 주소의 범위). 일부 구현들에서, 상기 프로그램은 다른 값들을 위한 일부 공간을 예약하기 위해 메모리 한계의 바로 아래에 오버플로우 임계값을 설정할 수 있다. 일부 구현에서, 예를 들어, 만약 다른 값들을 위한 필요한 공간의 크기가 작고 그리고/또는 컴퓨팅 시스템(104)이 엄격한 메모리 제한들을 도입하지 않고, 상대적으로 작은 기간의 작은 양에 의해 메모리 제한이 초과되는 것을 허용한다면, 상기 오버플로우 임계값은 메모리 한계와 동일할 수 있다.
오버플로우 조건이 트리거된(triggered) 후에, 상기 프로그램은 스토리지 장치(100) 내에 완성된 센서스 어레이들의 오버플로우 스토리지 공간을 생성하는데 필요한 일부 데이터를 저장하기 위하여 오버플로우 처리 절차를 사용한다. 오버플로우 스토리지 공간에 정확히 무엇이 저장되는지는 사용되는 오버프로우 처리 절차의 타입에 의해 결정된다. 아래에서 서술되는 오버플로우 처리 절차의 예에서는, 상기 프로그램은 오버플로우 조건이 트리거된 후에 각각의 처리된 정규화된 레코드들에 대한 센서스 매칭 동작의 수행을 계속하고, 센서스 매칭 동작의 결과(즉, 센서스 엔트리 내의 증가한 카운트, 또는 새로운 센서스 엔트리)와 연관된 정보를, 아래에서 서술되는, 동작 메모리 내의 센서스 어레이들의 동일한 집합 또는 동작 메모리 내의 센서스 어레이들의 새로운 집합 내에 저장한다. 만약 스트림(208) 내의 정규화된 레코드들을 처리하는 동안 일부 지점에서 오버플로우 조건이 충족된다면, 일부 데이터는 동작 메모리 공간 내에 저장되고, 일부 데이터는 오버플로우 스토리지 공간 내에 저장될 것이다. 아래에서 서술되는 오버플로우 처리 절차의 예에서는, 양 위치의 데이터는 완성된 센서스 어레이들을 생성하기 위한 일부 방법으로 결합된다. 각각의 센서스 어레이는 센서스 처리 모듈(204)에 의해 처리되기 위한 센서스 파일(210) 내의 출력이다. 다시 말해, 사용된 정확한 결합 절차는 사용된 오버플로우 처리 절차의 타입에 의해 결정된다. 센서스 파일(210)은 선택적으로 센서스 어레이들 또는 센서스 어레이 엔트리들의 집합이 상기 절차가 완료됨으로써 출력 포트로 전송되는 과정에서 센서스 생성 모듈(202)로부터의 출력일 수 있다.
아래에서 서술되는 오버플로우 처리 절차의 두 가지 예시들은 모두 동일한 센서스 생성 모듈(202)에 의해 사용될 수 있다. 하나의 모드에서, 하나의 절차가 사용될 수 있고, 다른 모드에서, 다른 절차가 사용될 수 있다. 상기 모드는 사용자에 의해 또는, 예를 들어, 어떠한 절차가 가장 효율적인지를 추정하는 소정의 최초 분석(예를 들어, 프로파일링된ㄷ 데이터세트의 부분집합 상에서, 또는 동일하거나 유사한 데이터세트에 대한 과거 프로파일 정보 상에서 수행됨)에 의해 결정될 수 있다. 상기 오버플로우 처리 절차들은 또한 센서스 매칭 동작 뿐만 아니라 다른 데이터 동작들에도 적용될 수 있다. 불완전한 결과들의 병합을 허용하는 데이터 동작은 작업 메모리 공간 내에 저장된 결과들 및 아래에서 서술되는 오버플로우 처리 절차들 내에서 수행된 오버플로우 스토리지 공간 내에 저장된 결과들의 조합과 호환될 것이다. 적어도 일부의 경우들에 가동중인 것으로 처리될 수 있는 데이터 동작은 아래에서 서술되는 오버플로우 처리 동작 내에서 수행되는 메모리 내의 데이터 구조체 내의 가동 중인 데이터 구조체의 업데이트와 호환될 것이다. 오버플로우 처리 동작의 효율성은, 오버플로우 스토리지 공간 내에 소정의 데이터를 저장하는데 걸리는 시간을 회피함으로써, 사용자가 처리 결과들을 열람하거나 처리에 종속적인 추가적인 상호작용을 수행하는 것을 허용함에 앞서 잠재적으로 큰 양의 유입되는 데이터를 처리하는데 사용되는 센서스 동작 또는 다른 데이터 프로파일링 동작에 특히 유용하다.
도 3은 센서스 어레이들을 생성하는 센서스 생성 모듈(202)의 맥락 내에서 사용되는 제1 오버플로우 처리 절차의 센서스 생성을 도시한다. 도 4A 내지 도 4C는 센서스 생성에 대응하는 제1 오버플로우 처리 절차의 흐름도를 도시한다. 도 3 및 도 4A를 참조하면, 센서스 생성 모듈(202)은 정규화된 레코드들의 스트림(300)을 수신하고, 오버플로우의 처리 절차가 완료에 의해, 각각의 필드는 프로파일되고, 완성된 센서스 어레이(302)를 생성한다. 상기 모듈(202)은 루프 내에서 반복적으로 스트림(300) 내의 정규화된 레코드들의 각각의 다음 정규화된 레코드를 판독한다(400)(반복의 첫번째에서 제1 정규화된 레코드로부터 시작). 상기 모듈(202)은 작업 메모리 공간(306) 내에서 생성된 센서스 어레이들(304)의 메모리 사이즈를 측정함으로써 오버플로우 임계값에 도달하였는지 여부를 판단한다(402).
만약 오버플로우 임계값에 도달하지 않은 경우, 상기 모듈(202)은 상기 정규화된 레코드 상에서 센서스 매칭 동작(404)을 수행한다. 상기 센서스 매칭 동작(404)은 정규화된 레코드들 내의 데이터 값에 매칭하는 센서스 어레이들(304) 중 적합한 하나의 어레이(정규화된 레코드 내의 필드 인덱스에 대한 센서스 어레이)의 키들을 찾는 단계(406)를 포함한다. 만약 키에 대한 매칭(정규화된 레코드 내의 데이터 값)이 존재하면, 상기 키에 대응하는 카운트는 증가한다(408). 만약 키에 대한 매칭이 존재하지 않으면, 상기 데이터 값으로 설정된 키를 포함하는 센서스 어레이들(304) 중 적합한 하나의 어레이에 새로운 엔트리가 추가되고 카운트는 1로 설정된다(409).
만약 오버플로우 임계값이 도달되면, 상기 모듈(202)은 센서스 어레이들(304) 및 오버플로우 스토리지 공간(310) 내에 저장된 이전의 일부 센서스 어레이들(308)(이전 사이클 동안의)에 대한 합병 동작(412)을 수행한다. 병합 동작(412)의 결과(아래에 더 자세히 서술됨)는 부분 센서스 어레이들(308)의 새로운 집합이고, 각각의 포함하는 엔트리들은 각각의 키에 대한 카운트들의 합과 마찬가지로 주어진 필드에 대한 병합된 센서스 어레이들 내의 키들의 조합(즉, 데이터 값들)에 대응한다. 따라서, 동작 메모리 공간(306) 내에 있던 부분 센서스 어레이들(304) 내의 정보는 오버플로우 저장 공간(310) 내에 안전하게 저장되고, 다음 정규화된 레코드 상의 센서스 매칭 동작(404)을 수행하기 위해 더 많은 동작 메모리 공간(306)을 해방시켜, 부분 센서스 어레이(304)는 동작 메모리 공간(306)으로부터 제거될 수 있다(414).
반복의 마지막에, 상기 모듈(202)은 스트림(300)의 마지막(스트림 내의 각각의 레코드에 대한 반복 루프의 끝)에 도달하였는지 여부를 판단한다(416). 만약 마지막에 도달하지 못하였다면, 다음 정규화된 레코드를 판독함으로써(400) 다른 반복이 시작한다. 만약 마지막에 도달하였다면, 상기 모듈(202)은 반복의 일부에서 오버플로우가 발생하였는지 판단한다. 만약 오버플로우가 발생하지 않았다면, 상기 모듈(202)은 작업 메모리 공간(306) 내의 각각의 완성된 센서스 어레이들(304)을 출력 포트에 전송한다(419). 만약 오버플로우가 발생하였다면, 상기 모듈(202)은 작업 메모리 공간(306)에 저장된 일부 센서스 어레이들(304)과 오버플로우 스토리지 공간(310)에 저장된 부분 센서스 어레이들(308)에 대한 수정된 버전의 병합 동작(412')을 수행하여 병합된 센서스 어레이들을 출력 포트에 전송한다. 병합 동작(412)은 도 4B를 참조로 보다 자세히 서술되고, 병합 동작(412')은 도 4C를 참조로 보다 자세히 서술된다.
도 4B를 참조하면, 작업 메모리 공간(306) 내의 부분 센서스 어레이들(“메모리 어레이들”로 지칭됨)의 집합을 오버플로우 스토리지 공간(310) 내의 부분 센서스 어레이들(“저장된 어레이들”로 지칭됨)의 집합과 병합하는 병합 동작(412)의 일례가 도시된다. 상기 병합 동작(412)은 필드들을 거쳐 반복 수행하는 외부 루프(즉, 1부터 필드의 번호로 가는 “현재 필드”를 참조하는 루프 카운터가 구비된), 및 현재 필드 반복에 대하여 저장된 어레이 내의 엔트리들 을 거쳐 반복 수행하는 내부 루프(즉, 1부터 엔트리의 번호로 가는 “현재 엔트리”를 참조하는 루프 카운터가 구비된)를 포함한다. 상기 내부 루프는 현재 필드 반복에 대한 메모리 어레이 내에 저장된 어레이 내의 현재 엔트리의 데이터 값을 서치함(420)으로써 시작한다. 만약 매치가 발견되면, 내부 루프는 저장된 어레이 내의 현재 엔트리로부터의 카운트와 메모리 어레이 내의 매칭된 엔트리로부터의 카운트를 합산하고(422), 전체 카운트의 결과를 메모리 어레이 내의 매칭된 엔트리 내에 저장한다(이전 카운트에 덮어씀). 새로운 전체 카운트는 동작 메모리 내에 추가적인 공간을 필요로 하지 않고, 이 동작은 사용되는 동작 메모리 공간의 양을 증가시키지 않는다. 다른 구현들에서, 메모리 어레이와 저장된 어레이는 둘 다 발견될 수 있고 전체 카운트들을 축적하는데 사용될 수 있지만, 저장된 어레이 를 거쳐 반복과 메모리 어레이의 서치에 의해, 서치는 보다 효율적으로 수행될 수 있다(왜냐하면 메모리 장치(108)는 스토리지 장치(110)에 비해 보다 효율적으로 접근될 수 있기 때문에). 만약 매치가 발견되지 않는다면, 내부 루프는 오버플로우 스터리지 공간(310) 내의 새로운 센서스 어레이에 저장된 어레이 내의 현재 엔트리를 추가하고(424), 상기 새로운 센서스 어레이의 집합의 일부는 병합 동작(412) 이후에 이전에 저장된 어레이들을 교체하고, 메모리 어레이 내에 저장된 어레이 내에서 다음 엔트리의 데이터 값을 서치함으로써(420) 새로운 루터 반복이 시작된다. 내부 루프는 저장된 어레이 내에서 마지막 엔트리에 도달함으로써 종료한다(426). 외부 루프는 새로운 센서스 어레이에 업데이트된 메모리 어레이를 추가하여(428) 새로운 센서스 어레이들의 전체 집합은 병합 동작(412)으로부터의 매치되고 매치되지 않은 엔트리들을 모두 나타낸다. 외부 루프는 마지막 필드에 도달하고 나서 종료한다(430).
도 4C는 메모리 어레이들의 마지막 집합과 저장된 어레이들의 병합을 수행하는 수정된 버전의 병합 동작(412')의 일례를 도시한다. 본 예시에서의 차이점들은 아래와 같다. 어레이 내에 저장된 현재 엔트리를 오버플로우 스토리지 공간(310) 내의 새로운 센서스 어레이에 추가하는(424) 대신, 동작(412')은 저장된 어레이 내의 현재 엔트리를 모듈(202)의 출력 포트로 출력한다(424')(예를 들어, 오버플로우 스토리지 공간(310) 내에 저장될 수도 있는 출력 센서스 파일을 기록함으로써). 업데이트된 메모리 어레이를 저장된 어레이에 첨부하는(428) 대신, 동작(412')은 업데이트된 메모리 어레이를 모듈(202)의 출력 포트에 전송한다(418')(예를 들어, 오버플로우 스토리지 공간(310) 내에 저장될 수도 있는 출력 센서스 파일을 기록함으로써).
요약하면, 제1 오버플로우 처리 절차는 부분 센서스 어레이들을 오버플로우 메모리로 이동시킴으로써 그리고 (오버플로우 스토리지로 이동된 부분 센서스 어레이들과 병합될 작업 메모리 내의 새로운 부분 센서스 어레이들 내의) 새로운 모든 레코드들을 처리함으로써 동작 메모리의 오버플로우 조건을 처리한다. 제2 오버플로우 처리 절차는 모든 새로운 레코드들을 처리하는 동안에 유사하게 오버플로우 조건을 처리하지만, 부분 센서스 어레이들 대신에 오버플로우 스토리지에 매칭하지 않는 레코드들이 유출되는 것을 효율적으로 관리하도록 구성될 것이다.
도 5는 센서스 어레이들을 생성하는 센서스 생성 모듈(202)의 맥락 내에서 사용되는 제2 오버플로우 처리 절차의 센서스 생성을 도시한다. 도 6은 센서스 생성에 대응하는 제2 오버플로우 처리 절차의 흐름도를 도시한다. 도 5 및 도 6을 참조하면, 센서스 생성 모듈(202)은 정규화된 레코드들의 스트림(500)을 수신하고, 오버플로우의 처리 절차가 완료에 의해, 각각의 필드는 프로파일되고, 완성된 센서스 어레이(502)를 생성한다. 상기 모듈(202)은 첫번째 통과할 때 스트림(500) 내의 각각의 정규화된 레코드들을 거쳐 루프를 반복함으로써 다음 정규화된 레코드를 판독하거나(600), 또는 하나 또는 그 이상 추가적으로 통과할 때, 오버플로우 스토리지 공간(504) 내의 임시 레코드 저장소(503) 내에 일시적으로 저장된 각각의 정규화된 레코드들을 거쳐 루프를 반복한다. 하나 또는 그 이상의 경로에서 수행되는 단계들은 아래에서 더 자세히 서술되지만, 필수적으로, 각각의 경로는 임계값 조건이 충족될 때까지 작업 메모리 공간(306)을 채우고 가동중인 모든 매칭하는 레코드들을 처리하고 임계값 조건이 충족된 후에 매칭하지 않는 모든 레코드들을 유출한다. 모듈(202)은 상기 정규화된 레코드에 대하여 센서스 매칭 동작(602)을 수행한다.
상기 센서스 매칭 동작(602)은 정규화된 레코드 내의 데이터 값에 매치(605)를 위하여 작업 메모리 공간(508) 내에 생성된 센서스 어레이들(506)(정규화된 레코드 내의 필드 인덱스에 대한 센서스 어레이) 중 적절한 하나에서 키들을 서칭하는 단계(604)를 포함한다. 만약 키(이전의 정규화된 레코드로부터의 데이터 값)에 대한 매치가 발견되면, 상기 키에 대응하는 카운트는 증가한다(606). 상기 증가(606)는 더 많은 동작 메모리 공간(508)을 사용하지 않고 발생하고, 따라서 오버플로우 임계값에 도달했는지 여부와는 무관하다. 만약 키에 대한 매치가 없다면, 오버플로우 임계치에 도달하였는지 여부를 판단하기 위한 다음의 활동은 센서스 어레이들(506)의 메모리 사이즈에 대한 체크(607)의 결과에 의해 결정된다. 만약 오버플로우 임계값에 도달하지 못하였다면, 센서스 어레이들(506) 중 적절한 하나에 새로운 엔트리가 추가되고(608) 키는 데이터 값으로 설정되고 카운트는 1로 설정된다. 만약 오버플로우 임계값에 도달하였다면, 모듈(202)은 정규화된 레코드를 새로운 임시 레코드 저장소(503)에 저장한다. 상기 임시 레코드 저장소(503)는 정규화된 레코드들을 저장하는 하나의 파일(또는 다른 데이터 구조체)이거나, 필드 인덱스(또는 다른 특성)에 의해 정규화된 레코드들로의 접근을 제공하는 복수의 파일(또는 다른 구조체)일 수 있다. 서로 다른 임시 레코드 저장소(503)는 서로 다른 단계에 대하여 서로 다른 정규화된 레코드들의 집합이다.
상기 모듈(202)은 스트림(500)을 통하여 제1 단계의 마지막에 도달하였는지 여부, 또는 임시 레코드 저장소(503) 중 하나에 대한 단계의 마지막에 도달하였는지 여부를 판단한다(610). 만약, 단계의 마지막에 도달하지 못하였다면, 다음의 정규화된 레코드를 판독함(600)으로써 새로운 반복을 시작한다. 만약 단계의 마지막에 도달하였다면, 모듈(202)은 현재 단계에 대한 어떠한 이전 반복 동안 오버플로우가 발생하였는지 여부를 판단한다(611). 만약 오버플로우가 발생하지 않았다면, 모듈(202)은 작업 메모리 공간(508) 내의 각각의 완성된 센서스 어레이들(506)을 출력 포트로 전송한다(613). 만약 오버플로우가 발생하였다면, 모듈(202)은 잔여 임시 레코드 저장소(503)가 존재하는지 여부를 체크한다(612).
만약 적어도 하나의 임시 레코드 저장소(503)가 남아있다면, 모듈(202)은 작업 메모리 내의 공간의 해방을 시작하여 필드들(즉, 1부터 필드들의 수까지 가면서 “현재 필드”를 참조하는 루프 카운터로)을 거쳐 반복하여 저장소(503) 내의 정규화된 레코드들을 처리하고, 오버플로우 저장 공간(504) 내에 저장되는 부분 센서스 어레이(510)의 (필드 인덱스가 동일한) 대응하는 하나에 부분 센서스 어레이들(506) 중 적절한 하나를 첨부함으로써(614)(이전 반복 동안에) 저장소(503) 내의 정규화된 레코드들을 처리한다. 상기 루프는 마지막 필드가 도달한 후에 종료한다(615). 따라서, 작업 메모리 공간(508) 내의 부분 센서스 어레이(506) 내의 정보는 오버플로우 스토리지 공간(504) 내에 안전하게 저장되고, 부분 센서스 어레이들(506)은 부분 센서스 어레이들(506)로부터 제거될 수 있고, 잔여 임시 레코드 저장소(503)로부터 다음 정규화된 레코드를 판독(600)하기 위해 더 많은 작업 메모리 공간(503)을 해방시키고, 정규화된 레코드 상에서 센서스 매칭 동작(602)를 수행한다.
부분 센서스 어레이들(510)이 동작 메모리 공간(508) 내에서 생성될 때 키와 매치되었을 데이터 값과 함께 소정의 정규화된 레코드가 처리될 것이기 때문에 부분 센서스 어레이들(506) 및 부분 센서스 어레이들(510)은 병합 동작의 수행을 요구하지 않고도 단순하게 첨부될 수 있고, 따라서 현재에는 어떠한 데이터 값도 동작 메모리 공간(508)의 센서스 어레이들(506) 내에 존재할 수 없다. 부분 센서스 어레이(506) 및 부분 센서스 어레이(510)는 도움이 되는 경우 선택적으로 정렬되거나 하나 또는 그 이상의 다른 데이터 구조체들로 재정렬될 수 있지만, 개별적인 엔트리들은 각각의 데이터 값에 대하여 통합 정보로 병합될 필요가 없다.
모듈(202)이 어떻게 통과하는지에 대한 일례는 스트림(500)으로부터의 레코드들을 처리하고, 스트림(500)으로부터의 정규화된 레코드들의 제1 부분집합(512)이 센서스 어레이들(506)의 메모리 크기를 오버플로우 임계값까지 확장시키도록 처리된 후에, 정규화된 레코드들의 제2 부분집합(514)은 (빈 박스에 도시된 레코드들로부터의) 키를 매치하는 데이터 값에 대하여, 계속해서 센서스 어레이들(506)의 카운트들을 증가시키거나, 또는 정규화된 레코드들의 (빗금친 박스로 도시된) 제3 부분집합(516)을 임시 레코드 저장소(503)에 저장하기 위해 처리된다. 제3 부분집합(516)은 제2 부분집합(514)의 부분집합이기도 하다. 이러한 프로세스가 계속되면서 스트림(500)은 임시 레코드 저장소(503) 및 현재 임시 레코드 저장소(503)를 반복하는 동안 생성된 잠재적 새로운 임시 레코드 저장소(503')에 의해 교체된다.
만약 체크(612)결과 임시 레코드 저장소(503)가 남아 있지 않다면, 모듈(202)은 필드들을(즉, 1부터 필드들의 수까지) 반복하고, 오버플로우 스토리지 공간(504)으로부터의 센서스 어레이들(510) 중 적절한 하나를 출력 포트로 전송한다(620). 마지막 필드에 도달하면 루프를 종료한다(622). 센서스 생성의 이 부분 내에 있는 출력 포트에 센서스 어레이들(506, 510)을 전송하는 것은 센서스 어레이들을 필드 인덱스 순서로(서로 다른 필드들에 대한 부분 센서스 어레이들이 준비되는 대로 반대로) 출력하는 것을 가능하게 한다. 이것은, 예를 들어, 만약 센서스 처리 모듈(204)이 센서스 어레이들을 이러한 순서로 제공한 이후에 다운스트림(downstream) 계산이 존재한다면, 유용할 수 있다. 대체적으로, 정렬된 출력이 필수적으로 요구되지 않는 센서스 생성의 다른 구현들은 오버플로우 저장 공간(504) 내의 작업 메모리 공간(508)으로부터 부분적인 센서스 어레이들(506)을 저장하는 것을 피할 수 있고, 대신에 작업 메모리 공간(508)으로부터 출력 포트에 직접적으로 부분 센서스 어레이들(506)을 단순하게 출력할 수 있다(동일한 이유로 이들이 첨부될 때 병합 동작이 수행될 필요가 없다).
요컨대, 제2 오버플로우 처리 절차는 매칭하지 않는 레코드들을 오버플로우 스토리지로 이동시키고 모든 새로운 레코드들을 처리함으로써(매칭하는 레코드들에 대해 센서스 이미 작업 메모리 내에 존재하는 센서스 어레이들을 업데이트함) 작업 메모리에 대한 오버플로우 조건을 처리한다. 제2 오버플로우 처리 절차는 매칭하지 않는 레코드들이 오버플로우 스토리지로 유출하는 것을 효율적으로 관리한다.
제1 및 제2 오버플로우 처리 절차 간에는 약간의 차이점이 존재하여, 어떠한 경우에는 하나 또는 다른 그 이상으로 적절하게(즉, 더 효율적으로) 사용될 수 있다. 제1 오버플로우 처리 절차는 레코드들을 오버플로우 스토리지로 유출할 필요가 없는 반면, 제2 오버플로우 처리 절차는 그럴 필요가 있다. 하지만, 제2 오버플로우 처리 절차는 센서스 어레이들을 병합할 필요가 없는 반면, 제1 오버플로우 처리 절차는 그럴 필요가 있다. 또한, 오버플로우 상태 이후 입력 스트림 내의 레코드들의 전체를 판독할 때까지 제2 오버플로우 처리 절차는 작업 메모리 내에 동일한 센서스 어레이들을 유지시키기 때문에, 최초 분산 값들은 나중의 어떠한 값들이 매칭되거나 매칭되지 않는지 판단한다. 따라서, 제2 오버플로우 처리 절차는 (존재하는 경우) 주어진 필드 내에서 반복되는 값들의 분산이 입력 스트림 내의 모든 레코드들에 비해 상대적으로 높은 상황에서 유출을 효율적으로 가능하게 하는 경향이 있을 수 있다. 제1 오버플로우 처리 절차는 센서스 어레이들이 오버플로우 스토리지로 넘칠 때마다 값들의 완전히 새로운 집합이 매치되는 것을 가능하게 한다. 따라서, 제1 오버플로우 처리 절차는 출력 스트림 내에서 모든 레코드들을 포괄하는 하나 또는 그 이상의 필드들 내의 반복되는 값들의 분산의 변화가 큰 상황에서 유출을 효율적으로 관리하는 경향이 있다.
다른 오버플로우 처리 절차 또한 가능하다. 예를 들어, 상기 서술된 제1 및 제2 절차들 사이의 융합은 오버플로우 스토리지 공간 내에서 센서스 어레이가 매치하지 않는 정규화된 레코드들을 저장함으로써 오버플로우 조건들을 처리할 수 있다(즉, 제2 절차에 따라서). 다음으로, 만약 매치하지 않는 저장된 정규화된 레코드들의 조각이 측정 임계치보다 높아지면, 절차는 작업 메모리 공간 내의 부분 센서스 어레이들을 오버플로우 저장 공간으로 이동시키고(이전에 저장된 부분 센서스 어레이들과 병합), 그리고 현재 단계(즉, 제1 절차에 따라) 내의 정규화된 레코드들을 계속해서 처리한다. 제1 절차의 단계들이 완료된 후에, 절차들은 동일한 융합 처리를 사용하여, 오버플로우 스토리지 공간 내에 저장된 정규화된 레코들을 처리함으로써 절차를 계속할 것이다(즉, 오버플로우 조건이 도달하면 임계치에 도달할 때까지 매칭하지 않는 정규화된 레코드들을 저장하기 시작함).
상기 서술된 기술은 적절한 소프트웨어를 실행하는 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 소프트웨어는 각각이 적어도 하나의 프로세서, 적어도 하나의 데이터 스토리지 시스템(휘발성 및/또는 비휘발성 메모리 및/또는 스토리지 요소들), 적어도 하나의 사용자 인터페이스(적어도 하나의 이벽 장치 또는 포트를 통해 입력을 수신하고, 적어도 하나의 출력 장치 또는 포트를 사용하여 출력을 제공하는)를 포함하는 하나 또는 그 이상의 프로그램되었거나 프로그램될 수 있는 컴퓨팅 시스템(분산 클라이언트/서버, 또는 그리드와 같은 다양한 아키텍쳐의) 상에서 시행되는 하나 이상의 컴퓨터 프로그램들을 포함하는 소프트웨어일 수 있다. 상기 소프트웨어는, 예를 들어, 데이터흐름 그래프의 디자인, 구성, 및 실행과 관련된 더 큰 프로그램의 하나 또는 그 이상의 모듈들을 포함할 수 있다. 상기 프로그램의 모듈들(예를 들어, 데이터흐름 그래프의 성분들)은 데이터 보관소 내에 저장된 데이터 모델들에 합치하는 데이터 구조체 또는 다른 조직으로써 구현될 수 있다. 상기 프로그램의 모듈들은 선택적으로 인덱스되고 그리고/또는 압축될 수 있는 해쉬 테이블들(hash tables), 또는 플랫 파일들(flat files)와 같은 소정의 다양한 데이터 구조체들 내에 어레이 데이터를 저장할 수 있다.
상기 소프트웨어는 CD-ROM 또는 다른 컴퓨터 판독가능한 매체 (예컨대, 범용 또는 특수 목적의 컴퓨팅 시스템 또는 장치에 의해 판독가능한)와 같은, 실체적인(tangible), 비일시적 매체에 제공되거나, 소프트웨어가 실행되는 컴퓨팅 시스템의 실체적인, 비일시적인 매체로 네트워크의 통신 매체를 거쳐 전달될 수 있다 (예컨대, 전파된 신호에 인코딩된다). 처리의 일부 또는 전부는 코프레서들(coprocessors) 또는 필드-프로그램가능한 게이트 어레이들(FPGAs) 또는 전용의, 응용 주문형 집적 회로(application-specific integrated circuits, ASICs)와 같은, 특수 목적의 하드웨어를 이용하여 수행되나, 특수 목적의 컴퓨터에서 수행될 수 있다. 상기 처리는 소프트웨어에 의해 지정된 컴퓨터의 상이한 부분들이 상이한 컴퓨팅 엘리먼트들(computing elements)에 의해 수행되는 배포된 방식으로 구현될 수 있다. 각각의 이러한 컴퓨터 프로그램은 바람직하게 저장 디바이시스 매체가 본 발명에서 설명된 처리를 수행하기 위해 컴퓨터에 의해 판독될때 상기 컴퓨터를 구성하고 동작하기 위하여, 범용 또는 특수 목적의 프로그램가능한 컴퓨터에 의해 액세스 가능한 저장 디바이스의 컴퓨터-판독가능한 저장 매체 (예컨대, 고체 상태 메모리(solid state memory) 또는 미디어, 또는 자기적 또는 광학적 미디어)에 저장되거나 다운로드될 수 있다. 본 발명의 시스템은 그렇게 구성되는 매체는 컴퓨터가 본 발명에서 설명된 적어도 하나의 처리 단계들을 수행하기 위하여 특정한 그리고 미리 정해진 방식으로 동작하도록하는, 컴퓨터 프로그램으로 구성된, 구체적이고(tangible), 비일시적인 매체로 구현되도록 역시 고려될 수 있다.
본 발명의 다수의 실시 예가 기술되었다. 그럼에도 불구하고, 전술한 설명은 예시를 위한 것이며 다음의 청구범위에의해 정의되는 본 발명의 범위를 한정하는 것이 아닌 것으로 이해되어야 한다. 따라서, 다른 실시예들 또한 다음 청구범위 내에 있다. 예를 들어, 다양한 변형이 본 발명의 범위를 벗어남 없이 만들어 질 수 있다. 부가적으로, 상기 기술된 스텝들의 일부는 순서 독립적이므로 기술된 것과 다른 순서로 수행될 수 있다.

Claims (70)

  1. 컴퓨팅 시스템(computing system)에 있어서,
    작업 메모리 공간을 제공하는 메모리 장치;
    오버플로우(overflow) 스토리지(storage) 공간을 제공하는 스토리지 장치; 및
    복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함하되, 여기서 상기 처리는
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계;
    상기 작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하는 단계; 및
    상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 결과 정보를 생성하는 단계
    를 포함하되, 상기 데이터 동작의 결과와 연관된 정보를 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 단계는, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합을 위해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  2. 제1항에 있어서, 상기 작업 메모리 공간에 관한 오버플로우 조건은 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 위해 사용되는 작업 메모리 공간의 양이 미리 결정된 임계값보다 크거나 이와 같은 경우 충족되는 것을 특징으로 하는 컴퓨팅 시스템.
  3. 제1항에 있어서, 상기 처리는,
    작업 메모리 공간에 관한 오버플로우 조건이 충족되고 난 이후 및 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하기 전에, 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 상기 오버플로우 스토리지 공간 내에 저장하는 단계, 및 상기 작업 메모리 공간으로부터 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 제거하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  4. 제1항에 있어서, 상기 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하는 단계는 상기 제1 집합으로부터의 적어도 하나의 데이터 구조체와 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체를 병합하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  5. 제4항에 있어서, 상기 제1 집합으로부터의 적어도 하나의 데이터 구조체와 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체를 병합하는 단계는 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합으로부터의 데이터 구조체 내의 제1 키(key)를 상기 하나 또는 그 이상의 데이터 구조체들의 제2 집합으로부터의 데이터 구조체 내의 제2 키와 매칭시키는 단계, 및 상기 제1 키와 연관된 값과 상기 제2 키와 연관된 값의 집성 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  6. 제1항에 있어서, 상기 처리는,
    상기 오버플로우 조건이 충족되고 난 이후 및 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들에 대한 동작을 수행하기 전에, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제3 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하는 단계, 및 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  7. 제6항에 있어서, 상기 데이터 유닛들의 제2 부분집합은 상기 데이터 유닛들의 제3 부분집합인 것을 특징으로 하는 컴퓨팅 시스템.
  8. 제6항에 있어서, 상기 처리는,
    상기 데이터 유닛들의 제3 부분집합의 제1 데이터에 대한 데이터 동작을 수행하고 난 후, 데이터 동작의 결과와 연관된 정보를 (1) 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체의 제1 집합 내, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  9. 제8항에 있어서, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작은 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  10. 제8항에 있어서, 상기 데이터 동작의 결과와 연관된 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계는 상기 제1 데이터 유닛의 적어도 일부 콘텐츠(content)를 상기 오버플로우 스토리지 공간 내에 저장하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  11. 제8항에 있어서, 상기 제1 데이터 유닛에 대한 데이터 동작을 수행하는 단계는 상기 제1 데이터 유닛 내의 키를 하나 또는 그 이상의 데이터 구조체들의 상기 제1 집합 내의 하나 또는 그 이상의 키들과 비교하는 단계를 더 포함하고, 상기 비교 결과가 매칭인 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장되고, 상기 비교 결과가 매칭이 아닌 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 오버플로우 스토리지 공간 내에 저장되는 것을 특징으로 하는 컴퓨팅 시스템.
  12. 제1항에 있어서, 상기 처리는 데이터 소스(source)로부터 상기 복수의 데이터 유닛들을 생성하는 단계를 더 포함하되, 상기 각각의 데이터 유닛들은 상기 데이터 소스의 필드(field)에 대한 식별자 및 상기 데이터 소스의 레코드(record) 내에 있는 상기 필드내에서 나타나는(appearing) 값을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  13. 제12항에 있어서, 상기 데이터 동작은 정보가 집성되는데 기초가 되는 매칭 데이터 유닛들을 선택하기 위한 키로써 상기 데이터 유닛들 내에 포함된 값들을 사용하여 복수의 데이터 유닛들로부터의 정보의 집성을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  14. 제1항에 있어서, 상기 메모리 장치는 비휘발성(non-volatile) 메모리 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  15. 제1항에 있어서, 상기 스토리지 장치는 비휘발성(non-volatile) 스토리지 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  16. 컴퓨팅 시스템에 있어서,
    작업 메모리 공간을 제공하는 수단;
    오버플로우(overflow) 스토리지 공간을 제공하는 수단; 및
    복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 수단을 포함하되, 여기서 상기 처리는
    상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계;
    작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하는 단계; 및
    상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 결과 정보를 생성하는 단계
    를 포함하되, 상기 데이터 동작의 결과와 연관된 정보를 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 단계는, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합에 의해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  17. 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 방법에 있어서,
    상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계;
    작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하는 단계; 및
    상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 상기 결과 정보를 생성하기는 단계
    를 포함하되, 상기 데이터 동작의 결과와 연관된 정보를 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 단계는, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합에 의해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 를 포함하는 것을 특징으로 하는 복수의 데이터 유닛들을 처리하는 방법.
  18. 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 컴퓨터 판독가능한 매체 내에 저장된 소프트웨어에 있어서, 상기 소프트웨어는 컴퓨팅 시스템에
    상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하고;
    작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 정보를 스토리지 장치의 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합 내에 저장하고; 그리고
    상기 제1 및 제2 집합을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하여 결과 정보를 생성하는 명령들을 포함하되, 상기 데이터 동작의 결과와 연관된 정보를 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내에 저장하는 것은, 적어도 하나의 데이터 유닛에 대하여, 상기 하나 또는 그 이상의 데이터 구조체들의 집합에 의해 사용되는 상기 작업 메모리 공간의 양을 증가시키지 않고, 상기 하나 또는 그 이상의 데이터 구조체들의 집합 내의 정보를 변화시키는 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 소프트웨어.
  19. 컴퓨팅 시스템에 있어서,
    작업 메모리 공간을 제공하는 메모리 장치;
    오버플로우(overflow) 스토리지(storage) 공간을 제공하는 스토리지 장치; 및
    복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함하되, 상기 처리는
    상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 및
    작업 메모리 공간에 관한 오버플로우 조건이 충족된 후에, 상기 복수의 데이터 유닛들로부터 데이터 유닛들에 대한 제2 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 데이터 동작의 결과와 연관된 정보를 (1) 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  20. 제19항에 있어서, 상기 작업 메모리 공간에 관한 오버플로우 조건은 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합에 의해 사용되는 작업 메모리 공간의 양이 미리 결정된 임계값보다 크거나 이와 같은 경우 충족되는 것을 특징으로 하는 컴퓨팅 시스템.
  21. 제19항에 있어서, 상기 데이터 동작은 각각의 데이터 유닛 내의 키(key) 값에 적어도 부분적으로 기반하고, 상기 결정하는 단계는 (1) 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 데이터 구조체 내의 상기 키 값과 연관된 정보를 업데이트할지, 또는 (2) 상기 키 값과 연관된 정보를 상기 상기 오버플로우 스토리지 내에 저장할지 여부를 결정하기 위하여 상기 제1 집합의 데이터 구조체들 중 적어도 하나 내에서 적어도 하나의 키 값을 찾는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  22. 제19항에 있어서, 상기 데이터 동작은 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  23. 제19항에 있어서, 상기 데이터 동작의 결과와 연관된 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계는 상기 데이터 동작이 수행된 상기 데이터 유닛의 적어도 일부 콘텐츠(content)를 상기 오버플로우 스토리지 공간 내에 저장하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  24. 제19항에 있어서, 상기 제1 데이터 유닛에 대한 데이터 동작을 수행하는 단계는 상기 제1 데이터 유닛 내의 키와 하나 또는 그 이상의 데이터 구조체들의 상기 제1 집합 내의 하나 또는 그 이상의 키들을 비교하는 단계를 더 포함하고, 상기 비교 결과가 매칭되는 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장되고, 상기 비교 결과가 매칭되지 않는 경우 상기 데이터 동작의 결과와 연관된 정보는 상기 오버플로우 스토리지 공간 내에 저장되는 것을 특징으로 하는 컴퓨팅 시스템.
  25. 제19항에 있어서, 상기 처리는 데이터 소스(source)로부터 상기 복수의 데이터 유닛들을 생성하는 단계에 있어서, 상기 각각의 데이터 유닛들은 상기 데이터 소스의 필드(field)에 대한 식별자 및 상기 데이터 소스의 레코드(record) 내에 있는 상기 필드에서 나타나는(appearing) 값을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  26. 제25항에 있어서, 상기 데이터 동작은 집성된 정보로부터 매칭하는 데이터 유닛을 선택하기 위한 키로써 데이터 유닛들 내에 포함된 값들을 사용하여 복수의 데이터 유닛들로부터의 정보의 집성을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  27. 제25항에 있어서, 상기 복수의 데이터 유닛들을 생성하는 단계는 데이터 소스(source)의 적어도 제1 필드에 대한 데이터 유닛들 및 상기 데이터 소스의 적어도 제2 필드에 대한 데이터 유닛들을 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  28. 제27항에 있어서, 상기 제2 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계는 제1 데이터 유닛 상에서 수행되는 데이터 동작의 결과와 연관된 정보를 상기 하나 또는 그 이상의 데이터 구조체의 제1 집합 내에 저장하는 단계, 및 상기 제2 데이터 유닛 상에서 수행되는 데이터 동작의 결과와 연관된 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  29. 제28항에 있어서, 상기 제1 데이터 유닛 및 제2 데이터 유닛은 데이터 소스(source)의 동일한 필드에 대한 식별자들을 각각 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  30. 제19항에 있어서, 상기 메모리 장치는 휘발성(volatile) 메모리 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  31. 제19항에 있어서, 상기 메모리 장치는 비휘발성(non-volatile) 메모리 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  32. 컴퓨팅 시스템에 있어서,
    작업 메모리 공간을 제공하는 수단;
    오버플로우 스토리지 공간을 제공하는 수단; 및
    복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 수단을 포함하되, 상기 처리는
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과에 연관된 정보를 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계; 및
    상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고, 상기 데이터 동작의 결과와 연관된 정보를 (1) 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  33. 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 방법에 있어서,
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 메모리 장치의 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체의 제1 집합 내에 저장하는 단계; 및
    상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 동작을 수행하고, 상기 데이터 동작의 결과와 연관된 정보를 (1) 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합, 또는 (2) 상기 오버플로우 스토리지 공간 내에 저장할지 여부를 결정하는 단계
    를 포함하는 것을 특징으로 하는 복수의 데이터 유닛들을 처리하는 방법.
  34. 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 컴퓨터 판독가능한 매체(computer-readable medium) 상에 저장된 소프트웨어에 있어서, 상기 소프트웨어는 컴퓨팅 시스템에,
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 메모리 장치의 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하고,
    상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고 상기 데이터 동작의 결과와 연관된 정보를 (1) 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 집합, 또는 (2) 스토리지 장치의 오버플로우 스토리지 공간 내에 저장하도록 하는 명령들을 포함하는 것을 특징으로 하는 소프트웨어.
  35. 컴퓨팅 시스템에 있어서,
    작업 메모리 공간을 제공하는 메모리 장치; 및
    오버플로우(overflow)스토리지 공간을 제공하는 스토리지(storage) 장치; 및
    복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함하되, 상기 처리는
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계, 여기서 상기 데이터 동작은 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 데이터 유닛 내의 값을 서치(search)하고, 만약 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고, 만약 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가함;
    작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 오버플로우 스토리지 공간 내에 정보를 조장하고 상기 작업 메모리 공간의 적어도 일부를 기 정보를 상기 오버플로우 스토리지 공간 내에 저장하고, 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 적업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 데이터 유닛 내의 값을 서치하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계; 및
    상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 집합들을 결합시켜 결과 정보를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  36. 제35항에 있어서, 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합에 사용되는 상기 작업 메모리 공간의 양이 미리 설정된 임계값보다 크거나 이와 같은 경우 상기 작업 메모리 공간의 오버플로우 조건이 충족되는 것을 특징으로 하는 컴퓨팅 시스템.
  37. 제35항에 있어서, 상기 처리는, 상기 오버플로우 조건이 충족된 이후에 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들을 서치하기 전에, 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 상기 오버플로우 스토리지 공간 내에 저장하는 단계, 및 상기 작업 메모리 공간으로부터 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 제거하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  38. 제35항에 있어서, 상기 하나 또는 그 이상의 데이터 구조체들의 복수의 집합들을 결합하는 단계는 상기 제1 집합으로부터의 적어도 하나의 데이터 구조체를 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체와 병합하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  39. 제38항에 있어서, 상기 제1 집합으로부터의 적어도 하나의 데이터 구조체를 상기 제2 집합으로부터의 적어도 하나의 데이터 구조체와 병합하는 단계는 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합으로부터의 데이터 구조체 내의 제1 키(key)를 상기 하나 또는 그 이상의 데이터 구조체들의 제2 집합으로부터의 데이터 구조체 내의 제2 키와 매칭시키는 단계, 및 상기 제1 키와 연관된 값과 상기 제2 키와 연관된 값의 집성 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  40. 제35항에 있어서, 상기 처리는,
    상기 오버플로우 조건이 충족되고 난 뒤 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛들에 대한 동작을 수행하기 전에, 상기 복수의 데이터 유닛들로부터 데이터 유닛들의 제3 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하는 단계, 및 상기 데이터 동작의 결과와 연관된 정보를 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  41. 제40항에 있어서, 상기 데이터 유닛들의 제2 부분집합은 상기 데이터 유닛들의 제3 부분집합인 것을 특징으로 하는 컴퓨팅 시스템.
  42. 제35항에 있어서, 상기 정보를 수정하는 단계는 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  43. 제35항에 있어서, 상기 처리는 데이터 소스(source)로부터 상기 복수의 데이터 유닛들을 생성하는 단계에 있어서, 상기 각각의 데이터 유닛들은 상기 데이터 소스의 필드(field)에 대한 식별자 및 상기 데이터 소스의 레코드(record) 내에 있는 상기 필드에서 나타나는(appearing) 값을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  44. 제43항에 있어서, 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합은 키-값 쌍 엔트리들(key-value pair entries)의 복수의 연관 어레이(associative array)들을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  45. 제44항에 있어서, 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 데이터 유닛 내의 값을 서치(search)하는 단계는 상기 키-값 쌍 엔트리들의 연관 어레이들 중 선택된 하나의 연관 어레이 내에서 엔트리에 대한 키로써의 값을 찾는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  46. 제45항에 있어서, 상기 키-값 쌍 엔트리들의 연관 어레이들 중 선택된 하나의 연관 어레이는 상기 데이터 유닛 내의 식별자에 대응하는 것을 특징으로 하는 컴퓨팅 시스템.
  47. 제45항에 있어서, 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계는 상기 발견된 키-값 쌍 엔트리의 값을 증가시키는(imcrementing) 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  48. 제45항에 있어서, 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계는 상기 데이터 유닛 내의 값으로써 키를 포함하고 하나의 카운트 값을 포함하는 선택된 어레이에 새로운 키-값 쌍 엔트리를 추가하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  49. 제35항에 있어서, 상기 메모리 장치는 휘발성(volatile) 메모리 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  50. 제35항에 있어서, 상기 스토리지 장치는 비휘발성(non-volatile) 스토리지 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  51. 컴퓨팅 시스템에 있어서,
    작업 메모리 공간을 제공하는 수단;
    오버플로우(overflow) 스토리지(storage) 공간을 제공하는 수단; 및
    결과 정보를 생성하기 위하여 복수의 데이터 유닛들을 처리하는 수단을 포함하되, 상기 처리는
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계, 여기서 상기 데이터 동작은 상기 작동 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체드의 제1 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 서치(search)하는 단계, 및 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계를 포함하고, 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계를 포함함;
    상기 작업 메모리 공간의 오버플로우 조건이 충족된 이후에, 상기 오버플로우 스토리지 공간 내에 정보를 저장하고, 상기 작업 메모리 공간의 적어도 일부 및 상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛을 해방시키고, 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 찾는 단계를 포함하는 데이터 동작을 수행하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 값을 수정하는 단계; 및
    상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합을 결합하여 결과 정보를 생성하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  52. 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 방법에 있어서,
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하는 단계, 여기서 상기 데이터 동작은 동작 메모리 장치의 동작 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 서치(search) 하는 단계, 및 만약 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고, 만약 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계를 포함함;
    상기 작업 메모리 공간의 오버플로우(overflow) 조건이 충족된 이후에, 스토리지(storage) 장치의 오버플로우 스토리지 공간 내에 정보를 저장하고 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터의 데이터 유닛의 제2 부분집합의 각각의 데이터 유닛에 대하여, 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛의 값을 서치하는 단계를 포함하는 데이터 동작을 수행하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하는 단계; 및
    상기 결과 정보를 생성하기 위하여, 상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합을 결합하는 단계
    를 포함하는 복수의 데이터 유닛들을 처리하는 방법.
  53. 복수의 데이터 유닛들을 처리하여 결과 정보를 생성하기 위한 컴퓨터 판독가능한 매체(computer-readable medium) 상에 저장된 소프트웨어에 있어서, 상기 소프트웨어는 컴퓨팅 시스템에
    상기 복수의 데이터 유닛들로부터의 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하고, 여기서 상기 데이터 동작은 동작 메모리 장치의 동작 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛 내의 값을 서치(search) 하는 단계, 및 만약 상기 값이 발견된 경우 상기 제1 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고, 만약 상기 값이 발견되지 않은 경우 상기 제1 집합의 적어도 하나의 데이터 구조체에 정보를 추가하는 단계를 포함함;
    상기 작업 메모리 공간의 오버플로우(overflow) 조건이 충족된 이후에, 스토리지(storage) 장치의 오버플로우 스토리지 공간 내에 정보를 저장하고 상기 작업 메모리 공간의 적어도 일부를 해방시키고, 상기 복수의 데이터 유닛들로부터의 데이터 유닛의 제2 부분집합의 각각의 데이터 유닛에 대하여, 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제2 집합의 적어도 하나의 데이터 구조체 내에서 상기 데이터 유닛의 값을 서치하는 단계를 포함하는 데이터 동작을 수행하고, 만약 상기 값이 발견된 경우 상기 제2 집합의 적어도 하나의 데이터 구조체 내의 정보를 수정하고;
    상기 결과 정보를 생성하기 위하여, 상기 제1 및 제2 집합들을 포함하는 하나 또는 그 이상의 데이터 구조체들의 복수의 집합을 결합하도록 하는 명령들을 포함하는 것을 특징으로 하는 소프트웨어.
  54. 컴퓨팅 시스템에 있어서,
    작업 메모리 공간을 제공하는 메모리 장치;
    오버플로우(overflow) 스토리지(storage) 공간을 제공하는 스토리지 장치; 및
    복수의 데이터 유닛들을 처리하여 결과 정보를 생성하도록 구성된 적어도 하나의 프로세서를 포함하되, 상기 처리는
    복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계;
    동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계; 및
    상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하는 단계를 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  55. 제54항에 있어서, 만약 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합에 의해 사용되는 작업 메모리 공간의 양이 미리 결정된 임계값보다 크거나 이와 동일한 경우 상기 작업 메모리 공간에 대한 오버플로우 조건이 충족되는 것을 특징으로 하는 컴퓨팅 시스템.
  56. 제54항에 있어서, 상기 처리는, 상기 오버플로우 조건이 충족된 이후 상기 데이터 유닛들의 제2 부분집합의 각각의 데이터 유닛에 대한 데이터 동작을 수행하기 전에, 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 상기 오버플로우 스토리지 공간 내에 이동된 집합으로써 저장하는 단계, 및 상기 작업 메모리 공간으로부터 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합을 제거하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  57. 제56항에 있어서, 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들을 업데이트하는 단계는 상기 오버플로우 스토리지 공간에 저장된 하나 또는 그 이상의 데이터 구조체들의 이동된 집합으로부터의 적어도 하나의 데이터 구조로부터의 정보를 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합으로부터의 적어도 하나의 데이터 구조체와 병합하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  58. 제57항에 있어서, 상기 병합하는 단계는 하나 또는 그 이상의 데이터 구조체들의 이동된 집합으로부터의 데이터 구조체 내의 제1 키를 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합으로부터의 데이터 구조체 내의 제2 키와 매칭시키는 단계, 및 상기 제1 키와 연관된 값과 상기 제2 키와 연관된 값의 집성(aggregation)을 수행하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  59. 제54항에 있어서, 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 사용하여 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트하는 단계는 상기 오버플로우 스토리지 공간 내에 저장된 데이터 유닛 내의 제1 키를 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합으로부터의 데이터 구조체 내의 제2키와 매칭시키는 단계, 및 상기 제2 키와 연관된 값을 증가시키는(incrementing) 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  60. 제54항에 있어서, 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 사용하여 상기 작업 메모리 공간 내에 저장된 상기 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트하는 단계는 상기 작업 메모리 공간 내의 위치에 저장된 값을 상기 작업 메모리 공간 내의 동일한 위치에 저장된 다른 값으로 덮어쓰는 인플레이스(in-place) 메모리 동작을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  61. 제54항에 있어서, 상기 처리는 데이터 소스(source)로부터 복수의 데이터 유닛을 생성하는 단계를 더 포함하되, 각각의 데이터 유닛은 상기 데이터 소스의 필드에 대한 식별자(identifier) 및 상기 데이터 소스의 레코드(record) 내에서의 상기 필드를 나타내는 값을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  62. 제61항에 있어서, 상기 데이터 동작은 집성된 정보로부터의 매칭하는 데이터 유닛들을 선택하는 키로써 데이터 유닛들 내에 포함된 값들을 사용하여 복수의 데이터 유닛들로부터의 정보의 집성을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  63. 제61항에 있어서, 상기 하나 또는 그 이상의 데이터 구조체들의 제1 집합은 키-값 쌍 엔트리(key-value pair entry)들의 복수의 연관 어레이(array)들을 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  64. 제63항에 있어서, 상기 제1 데이터 유닛에 대한 데이터 동작은 상기 키-값 엔트리들의 복수의 연관 어레이들 중 선택된 하나 내에서 서치하기 위한 키로써 상기 제1 데이터 유닛 내의 값을 사용하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  65. 제64항에 있어서, 상기 키-값 쌍 엔트리들의 연관 어레이들 중 선택된 하나는 상기 제1 데이터 유닛 내의 식별자에 대응하는 것을 특징으로 하는 컴퓨팅 시스템.
  66. 제54항에 있어서, 상기 메모리 장치는 휘발성(volatile) 메모리 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  67. 제54항에 있어서, 상기 스토리지 장치는 비휘발성(non-volatile) 스토리지 장치를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  68. 컴퓨팅 시스템에 있어서,
    작업 메모리 공간을 제공하는 수단;
    오버플로우(overflow) 스토리지(storage) 공간을 제공하는 수단; 및
    복수의 데이터 유닛들을 처리하여 결과 정보를 생성하는 수단을 포함하되, 상기 처리는
    복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계;
    동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계; 및
    상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하는 단계를 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  69. 결과 정보를 생성하기 위하여 복수의 데이터 유닛들을 처리하는 방법에 있어서,
    복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하는 단계;
    동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하는 단계; 및
    상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하는 단계를 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함하는 것을 특징으로 하는 복수의 데이터 유닛들을 처리하는 방법.
  70. 결과 정보를 생성하기 위하여 복수의 데이터 유닛들을 처리하기 위한 컴퓨터 판독가능한 매체(computer-readable medium) 상에 저장된 소프트웨어에 있어서, 상기 소프트웨어는 컴퓨팅 시스템에
    복수의 데이터 유닛들로부터 데이터 유닛들의 제1 부분집합의 각각의 데이터 유닛들에 대한 데이터 동작을 수행하고, 상기 동작의 결과와 연관된 정보를 작업 메모리 공간 내에 저장된 하나 또는 그 이상의 데이터 구조체들의 제1 집합 내에 저장하고;
    동작 메모리 공간에 대한 오버플로우 조건이 충족된 후에, 정보를 상기 오버플로우 스토리지 공간 내에 저장하고;
    상기 복수의 데이터 유닛들을 처리하는 동안에 오버플로우 처리 절차를 반복하도록 하는 명령들을 포함하되, 상기 오버플로우 처리 절차는 상기 오버플로우 스토리지 공간 내에 저장된 적어도 일부의 정보를 이용하여 상기 작업 메모리 공간 내의 하나 또는 그 이상의 데이터 구조체들의 새로운 집합을 업데이트(update)하는 단계를 포함하는 것을 특징으로 하는 소프트웨어.
KR1020157035823A 2013-05-17 2014-05-16 데이터 운영을 위한 메모리 및 스토리지 공간 관리 KR102201510B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361824686P 2013-05-17 2013-05-17
US61/824,686 2013-05-17
PCT/US2014/038345 WO2014186673A2 (en) 2013-05-17 2014-05-16 Managing memory and storage space for a data operation

Publications (2)

Publication Number Publication Date
KR20160011212A true KR20160011212A (ko) 2016-01-29
KR102201510B1 KR102201510B1 (ko) 2021-01-11

Family

ID=50977109

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157035823A KR102201510B1 (ko) 2013-05-17 2014-05-16 데이터 운영을 위한 메모리 및 스토리지 공간 관리

Country Status (9)

Country Link
US (2) US9235505B2 (ko)
EP (2) EP2997472B1 (ko)
JP (1) JP6387399B2 (ko)
KR (1) KR102201510B1 (ko)
CN (1) CN105556474B (ko)
AU (2) AU2014265246B2 (ko)
CA (1) CA2912420C (ko)
HK (1) HK1224050A1 (ko)
WO (1) WO2014186673A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023033584A1 (ko) * 2021-09-03 2023-03-09 삼성전자(주) 전자장치 및 그 제어방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9230371B2 (en) * 2013-09-19 2016-01-05 GM Global Technology Operations LLC Fuel control diagnostic systems and methods
JP6427592B2 (ja) 2014-03-07 2018-11-21 アビニシオ テクノロジー エルエルシー データ型に関連するデータプロファイリング操作の管理
US9805080B2 (en) * 2014-08-22 2017-10-31 Xcalar, Inc. Data driven relational algorithm formation for execution against big data
US9361937B2 (en) * 2014-08-26 2016-06-07 Seagate Technology Llc Shingled magnetic recording data store
CN106468560B (zh) * 2016-09-13 2019-05-28 Oppo广东移动通信有限公司 基于计步器消息的数据输出方法及装置
US10209913B2 (en) 2017-01-31 2019-02-19 International Business Machines Corporation System, method and computer program product for accelerating iterative graph algorithms by memory layout optimization
AU2018359380B2 (en) * 2017-10-31 2021-03-11 Ab Initio Technology Llc Managing a computing cluster interface
US11210018B2 (en) * 2019-05-20 2021-12-28 Honeywell International Inc. Holistic linking of data across data sources

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090075885A (ko) * 2006-11-01 2009-07-09 아브 이니티오 소프트웨어 엘엘시 개별적으로 액세스 가능한 데이터 유닛의 기억 관리 방법 및 시스템
JP2012155561A (ja) * 2011-01-26 2012-08-16 Toshiba Corp 情報処理装置及び書き込み制御方法
US20120324197A1 (en) * 2011-06-20 2012-12-20 Microsoft Corporation Memory management model and interface for unmodified applications
KR20130036094A (ko) * 2010-03-10 2013-04-10 아브 이니티오 테크놀로지 엘엘시 개별적으로 액세스 가능한 데이터 유닛의 스토리지 관리 방법
WO2013051129A1 (ja) * 2011-10-06 2013-04-11 株式会社 日立製作所 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH1063576A (ja) * 1996-08-27 1998-03-06 Hitachi Ltd 階層ディスク装置およびその制御方法
US7849075B2 (en) 2003-09-15 2010-12-07 Ab Initio Technology Llc Joint field profiling
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US8762333B2 (en) * 2009-07-08 2014-06-24 Pivotal Software, Inc. Apparatus and method for read optimized bulk data storage
JP6427592B2 (ja) * 2014-03-07 2018-11-21 アビニシオ テクノロジー エルエルシー データ型に関連するデータプロファイリング操作の管理

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090075885A (ko) * 2006-11-01 2009-07-09 아브 이니티오 소프트웨어 엘엘시 개별적으로 액세스 가능한 데이터 유닛의 기억 관리 방법 및 시스템
KR20130036094A (ko) * 2010-03-10 2013-04-10 아브 이니티오 테크놀로지 엘엘시 개별적으로 액세스 가능한 데이터 유닛의 스토리지 관리 방법
JP2012155561A (ja) * 2011-01-26 2012-08-16 Toshiba Corp 情報処理装置及び書き込み制御方法
US20120324197A1 (en) * 2011-06-20 2012-12-20 Microsoft Corporation Memory management model and interface for unmodified applications
WO2013051129A1 (ja) * 2011-10-06 2013-04-11 株式会社 日立製作所 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023033584A1 (ko) * 2021-09-03 2023-03-09 삼성전자(주) 전자장치 및 그 제어방법

Also Published As

Publication number Publication date
AU2014265246A1 (en) 2015-11-26
EP3379415A1 (en) 2018-09-26
EP2997472B1 (en) 2018-07-11
AU2014265246B2 (en) 2018-05-17
CN105556474A (zh) 2016-05-04
US9235505B2 (en) 2016-01-12
CA2912420C (en) 2020-09-15
CN105556474B (zh) 2019-04-30
US9411531B2 (en) 2016-08-09
JP6387399B2 (ja) 2018-09-05
AU2018211280B2 (en) 2018-11-29
US20140344508A1 (en) 2014-11-20
CA2912420A1 (en) 2014-11-20
EP2997472A2 (en) 2016-03-23
EP3379415B1 (en) 2019-11-06
JP2016530584A (ja) 2016-09-29
HK1224050A1 (zh) 2017-08-11
WO2014186673A2 (en) 2014-11-20
AU2018211280A1 (en) 2018-08-23
KR102201510B1 (ko) 2021-01-11
US20160092139A1 (en) 2016-03-31

Similar Documents

Publication Publication Date Title
KR102201510B1 (ko) 데이터 운영을 위한 메모리 및 스토리지 공간 관리
JP6427592B2 (ja) データ型に関連するデータプロファイリング操作の管理
US20160321294A1 (en) Distributed, Scalable Key-Value Store
US10127283B2 (en) Projecting effect of in-flight streamed data on a relational database
US10885050B2 (en) Altering in-flight streamed data from a relational database
CN107038161B (zh) 一种用于过滤数据的设备及方法
US10025826B2 (en) Querying in-flight streamed data from a relational database
JP2009537906A (ja) データの記憶及び検索を行うためのシステム及び方法
Kim et al. Robust and efficient memory management in Apache AsterixDB
WO2015168988A1 (zh) 一种数据索引创建方法、装置及计算机存储介质
US8548980B2 (en) Accelerating queries based on exact knowledge of specific rows satisfying local conditions
US20170031909A1 (en) Locality-sensitive hashing for algebraic expressions
WO2017019889A1 (en) Maintaining performance in the presence of insertions, deletions, and streaming queries
Macko Llama: A persistent, mutable representation for graphs
CN111159218B (zh) 数据处理方法、装置及可读存储介质
WO2017019562A1 (en) Structural equivalence
Li Comparison of Single-Machine and Distributed Calculation of Temporal Degree Metrics
CN115455031A (zh) 一种Doris的数据查询方法、装置、存储介质及设备
Amur Storage and aggregation for fast analytics systems

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