KR20150125012A - 저장된 데이터 유닛들의 동작 관리 - Google Patents

저장된 데이터 유닛들의 동작 관리 Download PDF

Info

Publication number
KR20150125012A
KR20150125012A KR1020157027796A KR20157027796A KR20150125012A KR 20150125012 A KR20150125012 A KR 20150125012A KR 1020157027796 A KR1020157027796 A KR 1020157027796A KR 20157027796 A KR20157027796 A KR 20157027796A KR 20150125012 A KR20150125012 A KR 20150125012A
Authority
KR
South Korea
Prior art keywords
data
data block
block
blocks
units
Prior art date
Application number
KR1020157027796A
Other languages
English (en)
Other versions
KR102319657B1 (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 KR20150125012A publication Critical patent/KR20150125012A/ko
Application granted granted Critical
Publication of KR102319657B1 publication Critical patent/KR102319657B1/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/064Management of blocks
    • 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/0608Saving storage space on storage systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

데이터 유닛들의 스토리지를 관리하는 시스템은 복수의 데이터 블록들(202A-202C)을 저장하도록 구성된 데이터 스토리지 시스템을 포함하고, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 되찾아오는 제1 판독 동작(340)을 지원한다. 상기 시스템은 데이터 유닛들에 관한 하나 또는 그 이상의 동작들을 수행하도록 구성된다. 상기 동작들은 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작(300)을 포함하되, 여기서 상기 제2 데이터 블록은 상기 제1 데이터 블록과 동일한 사이즈를 갖는다.

Description

저장된 데이터 유닛들의 동작 관리{MANAGING OPERATIONS ON STORED DATA UNITS}
본 출원은 2013년 3월 6일 출원된 미국 출원 번호 13/787,203에 대해 우선권을 주장하며, 문헌은 본원에 참조로 원용된다.
본 발명은 저장된 데이터 유닛들의 관리 동작들에 관한 것이다.
본 명세서는 저장된 데이터 유닛들의 관리 동작들에 관한 것이다.
데이터 스토리지 시스템은 데이터 유닛들을 저장, 인출 또는 삭제하는 다양한 동작을 제공한다. “데이터 유닛”은 인출될 수 있는 저장된 데이터로 대표되는 정보의 유닛을 의미한다(예를 들어, 하나의 데이터 유닛은 하나의 개별 레코드를 나타낼 수 있다). 서로 다른 시스템들은 동작을 수행하기 위한 서로 다른 저장 포맷 및 저장 기술을 사용할 수 있다. 예를 들어, 일부 시스템들에서, 데이터 유닛들을 삭제하는 것은 데이터 유닛들의 위치를 찾는 포인터(pointer) 또는 색인 등록들을 제거하는 것을 내포할 수 있다. 데이터 유닛들은 개별적으로 저장되거나, 또는 복수의 데이터 유닛들을 포함하는 “데이터 블록”(또는 “데이터의 블록들” 또는 “압축된 블록들) 내에 존재할 수 있다. 일부 시스템들은 동작의 수행에 영향을 주거나 심지어 동작이 지지될 수 있는 데이터 압축 또는 데이터 암호화와 같은 특징들을 제공한다. 예를 들어, 복수의 데이터 유닛들이 단일 블록의 데이터에 압축된 스토리지 포맷(storage format)은 압축된 블록들(예를 들어, 오래되거나 만료된 블록들)의 그룹에 대한 삭제를 지원할 수 있지만, 이러한 블록들 중에서 개별 데이터 유닛들을 삭제하는 것은 지원하지 않을 수 있다.
본 발명의 기술적 과제는 저장된 데이터 유닛들을 관리하는 장치 및 방법을 제공함에 있다.
일 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 시스템은 복수의 데이터 블록들을 저장하도록 구성된 데이터 스토리지 시스템을 포함하고, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원한다(예를 들어, 제1 판독 동작은 스토리지 인터페이스 모듈(104) 또는 데이터 스토리지 시스템에 대한 다른 인터페이스를 실행하도록 구성된 함수 또는 프로그램의 형태일 수 있다). 상기 시스템은 상기 데이터 스토리지 시스템에 연결되고 적어도 하나의 프로세서를 포함하는 인터페이스를 포함하되, 여기서 상기 인터페이스는 상기 데이터 유닛들에 관한 하나 또는 그 이상의 동작들을 수행하도록 구성됨, 상기 동작들은, 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함하되, 여기서 상기 제2 데이터 블록은 상기 제1 데이터 블록과 동일한 사이즈를 갖는다.
측면들은 아래 특징들 중 하나 이상을 포함할 수 있다.
상기 제2 데이터 블록은 상기 데이터 스토리지 시스템 내에서 상기 제1 데이터 블록에 인접하였던 데이터 블록에 인접한다.
상기 제2 데이터 블록은 상기 제1 데이터 블록과 동일한 스토리지 공간 내에 저장된다.
상기 삭제 동작은 상기 제1 데이터 블록을 제외한 다른 데이터 블록들을 상기 데이터 스토리지 시스템 내에서 상기 삭제 동작이 수행되기 이전의 동일한 저장 위치들에 유지시킨다.
상기 데이터 스토리지 시스템은, 상기 데이터 블록들의 적어도 일부에 대해, 각 데이터 블록으로부터 하나 또는 그 이상의 데이터 유닛들의 과거 제거에 관하여 대응하는 이력 정보를 저장하도록 구성되며, 상기 제거는 상기 데이터 블록 내의 데이터 유닛들의 적어도 일부 주소에 영향을 준다.
상기 동작들은 특정한 데이터 블록에 대응하는 소정의 저장된 이력 정보를 기반으로 해석된 상기 주소 정보에 따라 상기 특정한 데이터 블록에 저장된 적어도 제1 데이터 유닛을 액세스하는 제2 판독 동작을 포함하고, 상기 제2 판독 동작은 상기 제2 판독 동작과는 다른 것을 특징으로 한다.
상기 삭제 동작은 상기 제2 데이터 블록에 대응하는 이력 정보 내의 상기 삭제된 데이터 유닛에 관한 정보를 저장한다.
상기 이력 정보의 적어도 일부는 상기 데이터 스토리지 시스템 내에 저장된다.
상기 이력 정보의 적어도 일부분은 서로 다른 데이터 블록들 사이에 인터리브된다.
특정한 데이터 블록에 대응하는 이력 정보의 적어도 일부분은 상기 특정한 데이터 블록의 미리 결정된 부분에 저장된다.
상기 데이터 블록들의 적어도 일부는 압축된 데이터 블록이다.
상기 제2 판독 동작은 압축된 데이터 유닛들의 집합을 복원하기 위해 특정한 압축된 데이터 블록의 압축을 해제하고, 상기 특정한 압축된 데이터 블록에 대응하는 이력 정보에 적어도 부분적으로 기반하여, 기준 위치로부터의 특정 오프셋에서 판독될 데이터 유닛을 인출한다.
상기 제1 판독 동작은 복수의 압축된 데이터 블록들의 압축을 해제하고, 복수의 압축해제된 데이터 유닛들을 순차적으로 판독한다.
상기 삭제 동작은 제2 압축 데이터 블록의 저장된 사이즈를 확장시켜 상기 제2 압축 데이터 블록 및 제1 압축 데이터 블록간의 사이즈 차이를 채운다.
상기 제2 압축 데이터 블록의 저장된 사이즈는 상기 제2 압축 데이터 블록에 대응하는 이력 정보 뿐만 아니라 상기 제2 압축 데이터 블록에 관한 오버헤드 정보(overhead information)를 저장함으로써 확장된다.
상기 삭제 동작은 상기 제2 압축 데이터 블록에 연관된 새로운 에러검출 코드를 저장하여 상기 제1 압축 데이터 블록에 연관된 에러검출(error-detection) 코드를 대체한다.
상기 동작들은 최근에 추가된 데이터 유닛들의 집합과 연관되어 추가될 데이터 유닛을 저장하는 추가 동작을 포함한다.
상기 프로세서는 최근에 추가된 데이터 유닛들의 상기 집합을 상기 스토리지 매체 내에 저장된 압축된 데이터 블록으로써 압축하도록 더 구성된다.
상기 데이터 스토리지 시스템은 상기 그룹 내의 상기 데이터 블록들이 미리 결정된 스토리지 포맷에 합치하는 것임을 식별하는 오버헤드 정보를 저장하도록 구성된다.
상기 오버헤드 정보는 상기 그룹 내의 각각의 데이터 블록의 헤더 내에서, 상기 미리 결정된 스토리지 포맷을 식별하는 식별자를 포함한다.
상기 제1 판독 동작은 상기 미리 결정된 스토리지 포맷과 호환된다.
다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 시스템은, 복수의 복수의 데이터 블록들을 저장하는 수단, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원한다. 상기 시스템은 상기 데이터 유닛들에 관한 적어도 하나 또는 그 이상의 동작들을 수행하는 수단을 더 포함하고, 상기 동작들은, 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함하되, 여기서 상기 제2 데이터 블록은 상기 제1 데이터 블록과 동일한 사이즈를 갖는다.
다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 방법은 데이터 스토리지 시스템 내에 복수의 데이터 블록들을 저장하는 단계를 포함하고, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원한다. 상기 방법은 적어도 하나의 프로세서를 사용하여 데이터 유닛들에 관한 하나 또는 그 이상의 동작들을 수행하는 단계를 더 포함하고, 상기 동작들은, 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함하되, 여기서 상기 제2 데이터 블록은 상기 제1 데이터 블록과 동일한 사이즈를 갖는다.
다른 측면에서, 일반적으로, 소프트웨어는 데이터 유닛들의 스토리지를 관리하는 컴퓨터 판독가능한 매체 내에 저장된다. 상기 소프트웨어는 컴퓨팅 시스템에 상기 데이터 블록들의 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들은 적어도 하나의 그룹이 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출할 수 있는 제1 판독 동작이 지원되는, 데이터 스토리지 시스템 내에 복수의 데이터 블록들을 저장하고, 그리고 상기 데이터 유닛들에 관한 하나 또는 그 이상의 동작들을 수행하도록 하는 명령들을 포함하되, 상기 동작들은 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함하되, 여기서 상기 제2 데이터 블록은 상기 제1 데이터 블록과 동일한 사이즈를 갖는다.
다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 시스템은 복수의 데이터 블록들을 저장하도록 구성된 데이터 스토리지 시스템, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원함(예를 들어, 상기 제1 판독 동작은 스토리지 인터페이스 모듈(104) 또는 데이터 스토리지 시스템에 대한 다른 인터페이스 모듈이 실행되도록 구성된 함수 또는 프로그램의 타입일 수 있다). 또한, 상기 시스템은 상기 데이터 스토리지 시스템에 연결되고 적어도 하나의 프로세서를 포함하는 인터페이스를 포함하되, 여기서 상기 인터페이스는 상기 데이터 유닛들에 관한 적어도 두 개 이상의 동작들을 수행하도록 구성된다. 상기 동작들은, 제1 판독 동작과는 상이하며, 판독될 데이터 유닛을 포함하는 데이터 블록의 주소에 적어도 부분적으로 기반하여 판독될 데이터 유닛을 인출하는 제2 판독 동작, 및 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함한다.
측면들은 아래의 특징들 중 하나 또는 그 이상을 포함할 수 있다.
상기 데이터 스토리지 시스템은 상기 데이터 블록으로부터 하나 또는 그 이상의 데이터 유닛들의 과거 제거에 관한 이력 정보에 대응하는 데이터 블록들의 적어도 일부를 저장하도록 구성되고, 상기 제거는 상기 데이터 블록 내의 데이터 유닛들의 적어도 일부 주소에 영향을 준다.
제2 판독 동작은 특정한 데이터 블록에 대응하는 소정의 저장된 이력 정보를 기반으로 해석된 주소 정보에 따른 특정 데이터 블록 내에 저장된 적어도 하나의 제1 데이터 유닛을 액세스(access)한다.
삭제 동작은 새로운 데이터 블록에 대응하는 이력 정보 내에서 삭제된 데이터 유닛에 관한 정보를 저장한다.
이력 정보의 적어도 일부는 데이터 데이터 스토리지 시스템 내에 저장된다.
이력 정보의 적어도 일부분은 서로 상이한 데이터 블록들 사이에 인터리브(interleaved)된다.
특정한 데이터 블록에 대응하는 이력 정보의 적어도 일부는 상기 특정 데이터 블록 내의 미리 정의된 일부분에 저장된다.
데이터 블록들 중 적어도 일부는 압축된 데이터 블록들이다.
제2 판독 동작은 특정한 압축된 데이터 블록을 압축이 해제된 데이터 유닛들의 집합으로 복구시키기 위해 압축을 해제하고 상기 특정한 압축된 데이터 블록들에 대응하는 이력 정보의 적어도 일부분을 기반하여 기준 위치로부터 특정한 오프셋(offset)으로 판독하기 위한 데이터 유닛을 인출한다.
제1 판독 동작은 복수의 압축된 데이터 블록들의 압축을 해제하고 복수의 압축이 해제된 데이터 유닛들을 순차적으로 판독한다.
삭제 동작은 제2 압축 데이터 블록과 제1 압축 데이터 블록의 크기 차이를 보상하기 위하여 저장된 제2 압축 데이터 블록의 크기를 확장한다.
제2 압축 데이터 블록의 저장된 크기는 제2 압축 데이터 블록에 대응하는 이력 정보뿐만 아니라 제2 압축 데이터 블록과 연관된 저장 오버헤드(overhead) 정보에 의해 확장된다.
삭제 동작은 제1 압축 데이터 블록과 연관된 에러-검출(error-detecting) 코드를 대체하기 위한 제2 압축 데이터 블록에 연관된 새로운 에러-검출 코드를 저장한다.
상기 동작들은 최근에 추가된 데이터 유닛들의 집합과 연관된데이터 유닛을 저장하는 추가 동작을 포함한다.
상기 프로세서는 최근에 추가된 데이터 유닛들의 상기 집합을 스토리지 매체 내에 저장된 압축된 데이터 블록으로써더 압축하도록 더 구성될 수 있다.
제2 판독 동작은 하나의 압축 해제된 데이터 유닛들의 집합을 복원하기 위하여, 상기 데이터 블록이 특정한 식별자들을 갖는데이터 유닛들을 포함하는 것임을 지시하는 인덱스에 기반하여상기 판독될 데이터 유닛을 포함하는 데이터 블록의 위치를 알아내고, 상기 압축 해제된 데이터 유닛들 내에서 상기 판독될 데이터 유닛을 검색한다.
데이터 스토리지 시스템은 상기 그룹 내의 상기 데이터 블록들이 미리 결정된 스토리지 포맷에 합치하는 것임을 식별하는 오버헤드 정보를 저장하도록 구성된다.
상기 오버헤드 정보는 상기 그룹 내의 각각의 데이터 블록의 헤더 내에서, 상기 미리 결정된 스토리지 포맷을 식별하는 식별자를 포함한다.
제1 판독 동작은 미리 설정된 스토리지 포맷에 호환된다.
다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 시스템은 복수의 데이터 블록들을 저장하는 수단을 포함하며, 상기 복수의 데이터 블록들의 적어도 일부는 복수의 데이터 유닛들을 포함하며, 상기 데이터 블록들에 대한 적어도 하나의 그룹은 인접하여 저장되어, 상기 그룹 내에서 적어도 두개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원한다. 상기 시스템은 데이터 유닛들에 관한 둘 이상의 동작을 수행하는 수단을 더 포함한다. 상기 동작들은 제1 판독 동작과는 상이하며, 판독되 위한 데이터 유닛을 포함하는 데이터 블록의 주소를 적어도 부분적으로 기반으로 하여 판독되기 위한 데이터 유닛을 인출하는 제2 판독 동작, 및 삭제되기 위한 제1 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제되기 위한 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함한다.
또 다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 방법은 데이터 스토리지 시스템 내에서 복수의 데이터 블록들을 저장하되, 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하며, 상기 데이터 블록들에 대한 적어도 하나의 그룹은 인접하여 저장되어, 상기 그룹 내에서 적어도 두개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원하는 단계를 포함한다. 상기 방법은 적어도 하나의 프로세서를 이용하여, 데이터 유닛들에 관한 두개 이상의 동작들을 수행하는 단계를 더 포함한다. 상기 동작들은 제1 판독 동작과는 상이하며 판독하기 위한 데이터 유닛을 포함하는 데이터 블록의 주소의 적어도 일부를 기반으로 판독하기 위한 데이터 유닛을 인출하는 제2 판독 동작, 및 삭제할 데이터 유닛을 포함하는 제1 데이터 블록을 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함한다.
또 다른 측면에서, 일반적으로, 소프트웨어는 데이터 유닛들의 스토리지를 관리하기 위한 컴퓨터-가독(computer-readable) 매체 상에 저장된다. 상기 소프트웨어는 컴퓨팅 시스템(computing system)에 하나의 데이터 스토리지 시스템에 복수의 데이터 블록들을 저장하도록 하되, 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하며, 상기 데이터 블록들에 대한 적어도 하나의 그룹은 인접하여 저장되어, 상기 그룹 내에서 적어도 두개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원하는 명령; 및 데이터 유닛들에 관한 두개 이상의 동작을 수행하도록 하는 명령을 포함한다. 상기 동작들은 제1 판독 동작과는 상이하며 판독하기 위한 데이터 유닛을 포함하는 데이터 블록의 주소의 적어도 일부를 기반으로 판독하기 위한 데이터 유닛을 인출하는 제2 판독 동작, 및 삭제할 데이터 유닛을 포함하는 제1 데이터 블록을 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함한다.
또 다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 시스템은 복수의 데이터 블록들을 저장하는 단계를 포함하되, 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하도록 설정되고, 상기 데이터 블록들 중 적어도 일부는 데이터 블록으로부터 하나 이상의 데이터 유닛들을 이전에 제거한 이력 정보에 대응하고, 상기 제거는 상기 데이터 블록 내의 데이터 유닛들의 적어도 일부의 주소에 영향을 준다. 상기 시스템은 상기 데이터 스토리지 시스템에 연결되어 있으며, 제1 데이터 블록에 대응하는 소정의 저장된 이력 정보를 기반으로 해석된 주소 정보에 따른 제1 데이터 블록 내에 저장된 적어도 하나의 제1 데이터 유닛을 액세스(access)한다.
측면들은 아래의 특징들 중 하나 또는 그 이상을 포함할 수 있다.
제1 데이터 블록에 대응하는 이력 정보는 제1 데이터 블록으로부터 하나 또는 그 이상의 데이터 유닛들의 과거 제거에 관한 정보를 포함하며, 이는 제1 데이터 블록으로부터 압축이 해제된 데이터 유닛들의 상대적인 오프셋에 영향을 준다.
데이터 블록들 중 적어도 일부는 압축된 데이터 블록들이다.
상기 인터페이스는 데이터 유닛들에 관한 둘 또는 그 이상의 동작들을 수행하도록 구성되고, 상기 동작들은 기준 주소에 대하여 상대적인 데이터 유닛의 위치를 알아내는 주소 정보의 적어도 일부분을 기반으로 판독될 데이터 유닛을 인출하는 판독 동작, 및 삭제될 데이터 유닛을 제거하고 상기 삭제될 데이터 유닛의 제거로 인하여 기준 주소에 대한 다른 데이터 유닛들의 주소 정보의 상대적인 이동을 계산함으로써 다른 데이터 유닛들의 주소 정보를 해석하기 위한 삭제된 데이터 유닛에 대한 이력 정보를 저장하는 삭제 동작을 포함한다.
상기 인터페이스는 데이터 유닛에 관한 둘 또는 그 이상의 동작들을 수행하도록 설정되고, 상기 동작들은 압축된 데이터 블록에 대응하는 이력 정보의 적어도 일부분을 기반으로 판독될 데이터 유닛을 인출하는 제1 판독 동작, 및 삭제될 데이터 유닛을 포함하는 제1 압축 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 압축 데이터 블록으로 교체하고 상기 제2 압축 데이터 블록에 대응하는 이력 정보 내에 상기 삭제된 데이터 유닛에 관한 정보를 저장하는 삭제 동작을 포함한다.
상기 제1 판독 동작은 압축이 해제된 데이터 유닛들의 집합을 복원하기 위하여 특정한 압축된 데이터 블록의 압축을 해제하고, 상기 특정한 압축된 데이터 블록에 대응하는 이력 정보를 적어도 부분적으로 기반으로 한 참조 위치로부터 특정한 오프셋에서 판독될 데이터 유닛을 인출한다.
상기 제1 판독 동작은 상기 이력 정보가 하나 또는 그 이상의 이전에 삭제된 데이터 유닛들에 대한 정보를 포함하는지 아닌지 여부를 판단한다.
만약에, 상기 이력 정보가 하나 또는 그 이상의 이전에 삭제된 데이터 유닛들에 대한 정보를 포함하는 경우, 제1 판독 동작은 특정한 오프셋과 적어도 하나의 이전에 삭제된 데이터 유닛의 오프셋을 지시하는 이력 정보 내의 값의 비교를 기반하여 상기 특정한 오프셋을 조절할지 여부를 결정한다.
만약에, 상기 특정한 오프셋 값이 조절되어야 하는 경우, 상기 제1 판독 동작은 오프셋들 및 하나 또는 그 이상의 이전에 삭제된 데이터 유닛들의 사이즈를 기반으로 상기 특정한 오프셋을 조절한다.
상기 삭제 동작은 제2 압축 데이터 블록과 제1 압축 데이터 블록 간의 사이즈 차이를 보상하기 위하여 저장된 제2 압축 데이터 블록의 크기를 확장한다.
상기 제2 압축 데이터 블록의 저장된 사이즈는 상기 제2 압축 데이터 블록에 대응하는 이력 정보 뿐만 아니라 제2 압축 데이터 블록과 연관된 저장 오버헤드(storing overhead) 정보에 의하여 확장된다.
상기 삭제 동작은 제1 압축 데이터 블록과 연관된 에러검출(error-detecting) 코드를 대체하기 위하여 제2 압축 데이터 블록과 연관된 새로운 에러검출 코드를 저장한다.
상기 동작들은 최근에 추가된 데이터 유닛들의 집합과 연관된 추가될 데이터 유닛을 저장하는 추가 동작을 포함한다.
상기 프로세서는 스토리지 매체 내에 저장된 압축 데이터 블록으로써 최근에 추가된 데이터 유닛들의 집합을 압축하도록 더 구성된다.
상기 동작들은 제1 판독 동작과는 상이하며, 하나 또는 그 이상의 압축된 데이터 블록들의 압축을 해제하고, 복수의 압축이 해제된 데이터 블록들을 순차적으로 판독하는 제2 판독 동작을 포함한다.
상기 동작들은 상기 제1 및 제2 판독 동작과는 상이하며, 압축 해제된 데이터 유닛들의 집합을 복원하기 위하여, 특정한 식별자들을 갖는 데이터 유닛을 포함함이 인덱스에 의해 지시되는 특정한 압축된 데이터 블록의 압축을 해제하고, 상기 압축해제된 데이터 유닛들 내에서 상기 특정한 식별자를 갖는 데이터 유닛을 검색하는 제3 판독 동작을 포함한다.
이력 정보의 적어도 일부는 데이터 스토리지 시스템 내에 저장된다.
이력 정보의 적어도 일부분은 데이터 블록들 사이에 인터리브(interleaved)된다.
특정한 데이터 블록에 대응하는 이력 정보의 적어도 일부분은 상기 특정한 데이터 블록의 미리 결정된 부분에 저장된다.
다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 시스템은 복수의 데이터 블록들을 저장하는 수단을 포함하되, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원한다. 상기 시스템은 상기 데이터 유닛들에 관한 적어도 두 개 이상의 동작들을 수행한다. 상기 동작들은 상기 제1 판독 동작과는 상이하며, 판독될 데이터 유닛을 포함하는 데이터 블록의 주소 및 상기 데이터 블록으로부터 하나 또는 그 이상의 데이터 유닛들의 과제 제거에 관한 이력 정보를 기반하여 해석된 주소 정보에 적어도 부분적으로 기반하여 상기 판독될 데이터 유닛을 인출하는 제2 판독 동작을 포함한다.
다른 측면에서, 일반적으로, 데이터 유닛들의 스토리지를 관리하는 방법은 데이터 스토리지 시스템 내에 복수의 데이터 블록들을 저장하는 단계를 포함하되, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원한다 상기 방법은 적어도 하나의 프로세서를 사용하여 데이터 유닛들에 관한 적어도 두 개 이상의 동작들을 수행하는 단계를 포함한다. 상기 동작들은 상기 제1 판독 동작과는 상이하며, 판독될 데이터 유닛을 포함하는 데이터 블록의 주소 및 상기 데이터 블록으로부터 하나 또는 그 이상의 데이터 유닛들의 과거 제거에 관한 이력 정보를 기반으로 해석된 주소 정보에 적어도 부분적으로 기반으로 하여, 상기 판독될 데이터 유닛들을 인출하는 제2 판독 동작, 및 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함한다.
다른 측면에서, 일반적으로, 소프트웨어는 데이터 유닛들의 스토리지를 관리하는 컴퓨터 판독가능한(computer-readable) 매체 상에 저장된다. 상기 소프트웨어는 컴퓨팅 시스템(computing system)에 상기 데이터 블록들의 적어도 일부는 복소ㅜ의 데이터 유닛들을 포함하고, 상기 데이터 블록들은 적어도 하나의 그룹이 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출할 수 있는 제1 판독 동작이 지원되는, 데이터 스토리지 시스템 내에 복수의 데이터 블록들을 저장하고, 그리고, 상기 데이터 유닛들에 관한 적어도 두 개 이상의 동작들을 수행하도록 하는 명령들을 포함한다. 상기 동작들은 상기 제1 판독 동작과는 상이하며, 판독될 데이터 유닛을 포함하는 데이터 블록의 주소 및 상기 데이터 블록으로부터 하나 또는 그 이상의 데이터 유닛들의 과거 제거에 관한 이력 정보를 기반으로 해석된 주소 정보에 적어도 부분적으로 기반하여, 상기 판독될 데이터 유닛을 인출하는 제2 판독 동작, 및 삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하는 삭제 동작을 포함한다.
측면들은 아래의 장점들 중 하나 또는 그 이상을 포함할 수 있다.
삭제 동작은 압축된 데이터 저장소(store)로부터 하나의 데이터 유닛을 완전히 제거하도록 제공되고, 이것은 유용할 수 있다. 예를 들어, 프라이버시보호법을 준수하여 고객의 요청에 응답하여 데이터 유닛을 완전히 제거하도록 제공된다. 특정한 주소 또는 참조 주소로부터의 상대적인 오프셋에서 데이터 유닛의 위치를 알아내는 포인터(pointer)들은 상기 삭제된 데이터 유닛의 상기 제거에 의해 영향을 받을 수 있다. 하지만, 이러한 포인터들은 삭제 동작이 수행되었을 때 변경되거나 위치를 찾을 필요가 없다. 대신에, 포인터들은 필요하다면, 이후에 상기 데이터 유닛들이 실제로 액세스되었을 경우에 교정될 수 있다. 데이터 저장소의 많은 사용을 위하여, 이러한 온디맨드(on-demand) 포인터 교정은 삭제되었을 때 위치를 알아내고 포인터를 교정하는 방식에 비하여 더 효율적이다. 다중블록(multi-block) 압축된 데이터 저장소의 압축된 블록으로부터 삭제된 데이터 유닛들을 제거하는 것은 하나 이상의 압축 데이터 블록들로부터 복구된 복수의 데이터 유닛들을 스캐닝(scanning)함에 의한 데이터 유닛들을 판독하는 동작들을 삭제 동작과 호환성을 유지시키는 방법으로 수행될 수도 있다. 예를 들어, 상기 삭제 동작은, 알려진 압축 포맷(예를 들어, gzip) 내에 저장된 파일에 표준 압축해제 함수(예를 들어, gzcat)를 적용하고 인덱스 또는 다른 주소 정보에 의존하지 않고 데이터 유닛들에 대한 개별 레코드들을 순차적으로 복원하기 위해 압축 해제된 데이터(예를 들어, 레코드 포맷에 따라)를 해석하는, 스캐닝 판독 동작에 호환될 수 있다. 파일이 삭제 동작 후에 압축 데이터 블록들 사이에 빈공간을 갖지 않도록 함으로써, 스캐닝 판독 동작은 전체 파일의 이동 또는 재작성 없이도 여전히 압축 포맷을 정확하게 분석할 수 있다. 또한, 상기 삭제 동작은 이력 정보를 사용하여, 상기 판독 동작들이 압축된 데이터 저장소로부터 이전에 데이터 유닛들이 삭제되었는지 여부와는 무관하게 주소 정보에 의존하여 계속해서 함수를 적절하게 사용할 수 있도록 수행될 수 있다.
본 발명의 다른 특징들 및 장점들은 아래의 명세서 및 청구항으로부터 명확해질 것이다.
본 발명에 따르면 저장된 데이터 유닛들을 관리하는 장치 및 방법을 제공한다.
도 1은 데이터 스토리지 시스템의 블록 다이어그램이다.
도 2는 데이터 스토리지 포맷의 개략도이다.
도 3a 내지 3d는 데이터 동작들의 흐름도이다.
도 1은 데이터 스토리지 기술들이 사용될 수 있는 데이터 처리 시스템(100)의 일례를 도시한다. 실행 환경(102)은 데이터 스토리지 시스템(106) 내에 저장된 데이터 유닛에 관한 데이터 동작들을 수행하도록 설정된 스토리지 인터페이스 모듈(104)을 포함한다. 실행 환경(102)은 관리될 수 있고, 예를 들어, UNIX 운영 체제의 버전과 같은 적합한 운영 체제의 제어 하에 있는 하나 또는 그 이상의 범용(general-purpose) 컴퓨터일 수 있다. 예를 들어, 실행 환경(102)은 다중 중앙 처리 장치(CPUs) 또는 프로세서 코어, 로컬(예를 들어, 대칭 멀티프로세싱(SMP) 컴퓨터와 같은 멀티프로세서 시스템), 또는 위치상 분산된(예를 들어, 클러스터들로써 연결된 다중 프로세서들 또는 대량병렬처리(massively parallel processing(MPP)) 시스템, 또는 원격, 또는 원격 분산된(예를 들어, 근거리 통신망(LAN)을 통해 연결된 다중 프로세서들 및/또는 광역통신망(WAN)), 또는 이들의 조합을 사용한 컴퓨터 시스템의 설정을 포함한다. 데이터 스토리지 시스템(106)은 실행 환경(102)에 국한된 하나 이상의 스토리지 장치를 포함할 수 있고, 예를 들어, 실행 환경(102)을 관리하는 컴퓨터에 연결되고, 예를 들어, 원격 연결을 통하여 실행 환경(102)을 관리하는 컴퓨터와 통신할 수 있다. 하나 이상의 스토리지 장치는, 예를 들어, 랜덤 액세스 메모리(RAM)와 같은 소멸성 기억 장치(volatile memory) 및 자기 또는 SSD(solid-state drive)와 같은 비소멸성 기억 장치(non-volatile memory)를 포함할 수 있다. 데이터 처리 시스템(100)은 네트워크(110)에 연결된 통신 인터페이스(108)를 통하여 다른 시스템으로부터 데이터를 수신하거나 다른 시스템으로 데이터를 제공할 수 있다.
데이터 스토리지 시스템(106) 내에 저장을 위한 다양한 소스(source)로부터 수신된 개별적으로 액세스 가능한 데이터 유닛들은 가능한 한 널 값(null value)들을 포함하여 각각의 필드(“속성 또는 “컬럼”으로 정의될 수도 있음) 값을 갖는 레코드들로써 마련될 수 있다. 예를 들어, 신용카드 회사는 개인 거래를 나타내는 데이터를 다양한 소매 회사들로부터 수신할 수 있다. 각각의 거래는 고객 이름, 날짜, 구매 총액 등의 속성을 나타내는 값들과 연관된다. 스토리지 인터페이스 모듈(104)은 거래와 연관된 값들이 레코드 내에 저장될 수 있도록 데이터가 미리 결정된 레코드 포맷에 따르도록 할 수 있다. 일부의 경우, 소스로부터의 데이터를 레코드 포맷을 따르도록 변형하는 것을 포함할 수 있다. 그밖의 경우에, 하나 이상의 소스는 데이터가 이미 레코드 포맷에 따르도록 제공될 수 있다. 일부의 경우, 레코드 포맷은 최초에는 알려지지 않고 대신에 소스 또는 데이터가 분석된 이후에 결정될 수 있다.
스토리지 인터페이스 모듈(104)은 데이터 스토리지 시스템(106) 내에 저장된 데이터를 관리하는 데이터 동작들의 집합을 제공한다. 예를 들어, 프로세스는 개별적인 데이터 동작을 수행하도록 하는 요청에 대한 응답으로 상기 개별적인 데이터 동작을 위한 저장된 명령을 수행하도록 설정될 수 있다. 상기 데이터 동작들은 새로운 데이터 유닛을 추가하는 추가 동작, 저장된 데이터 유닛을 삭제하는 삭제 동작, 그리고 아래에서 더 자세히 설명될, 판독 요청된 데이터 유닛들을 서로 다른 판독 모드로 인출하고 인출된 데이터 유닛들을 반환하는 다중 판독 동작을 포함한다. 상기 데이터 동작들은 사용자로부터의 입력을 수신하는 사용자 인터페이스를 포함하여 다른 데이터 처리 시스템(100)의 일부분에 대한 응답에 의해 초기화될 수 있다.
일부의 실시예에서, 데이터 스토리지 시스템(106)은 압축된 데이터 블록들이 각각 복수의 데이터 유닛들을 압축함으로써 형성되는 스토리지 포맷 내에 데이터를 저장하는 압축된 데이터 저장소(112)를 포함한다. 상기 압축에 의해 도출된 데이터 블록은 보통 압축된 형식 내의 복수의 데이터 유닛들을 나타내는 압축된 데이터와 오버헤드 정보(overhead information)를 포함하고, 상기 오버헤드 정보는 상기 데이터 블록의 일부가 되는 다른 정보이지만 압축된 정보 자체는 아니며, 압축된 데이터의 앞에발생하면 “헤더(header)”로 정의될 수 있고, 압축된 데이터의 뒤에 발생하면 “푸터(footer)”로 정의될 수 있다. 일부의 실시예에서, 데이터 스토리지 시스템(106)은 필수적으로 압축되지 않았지만 서로 연관된, 예를 들어, 공동 참조 위치에 대하여 상대적 위치로 특정된 오프셋으로 저장된 데이터 유닛들의 집합을 저장한다. 일부 실시예에서, 스토리지 인터페이스 모듈(104)은, 데이터 유닛들을 일부 방법(즉, 블록이 레코드들의 집합에만 연관시키지 않는)으로 레코드들을 병합하는 다양한 기술들을 사용하여 데이터 블록들을 발생시키도록 데이터 유닛들을 처리할 수 있다. 그런 후에, 복수의 데이터 유닛들을 포함하는 데이터 블록은 개별적인 데이터 유닛들을 복구시키기 위하여 보완적인 함수(예를 들어, 압축 해제)를 사용하여 처리될 수 있다. 데이터 블록 내에 포함된 데이터 유닛은 원래의 형태로 저장되어야 필요는 없으며(예를 들어, 서로 다른 비트들로 표현될 수 있음), 데이터 블록 내의 각각의 데이터 유닛과 저장된 비트들 사이에 개별적으로 1 대 1로 대응되어 표현될 필요가 없다. 만약에 압축이 사용된다면, 압축은 요구되는 함수의 수행의 일부분일 수 있다. 예를 들어, 일부의 실시예에서, 상기 모듈(104)은 레코드들의 집합을 처리하여 암호화된 데이터 블록을 발생시키도록 한다. 일반적으로, 서로 다른 데이터 블록의 압축률(즉, 압축된 사이즈를 압축되지 않은 사이즈로 나눈 값)은 가변적이며, 일부의 경우, 일부의 데이터 블록들의 압축률은 1보다 클 수도 있다.
이러한 스토리지 포맷의 일 예는, 개별 저장된 데이터 유닛들의 위치를 찾는 선택적인 인덱스가 구비된 압축된 레코드 파일이며, 본원에 참조로 원용된 미국등록특허 7,885,932호에 구체적으로 서술되어 있다. 예를 들어, 압축된 레코드 파일을 발생시키기 위해, 스토리지 인터페이스 모듈(104)은 각각의 레코드를 식별하는 일차 키(primary key) 값(예를 들어, 단일 레코드를 식별하는 고유 키, 또는 레코드의 복수의 업데이트된 버전들을 식별하는 키)에 의하여 수신된 레코드들을 정렬하고, 일차 키 값들의 범위가 서로 겹치지 않는 범위에 대응하는 레코드들의 집합으로 상기 레코드들을 그룹화한다. 각각의 레코드들의 집합은 미리 결정된 레코드들의 수에 대응할 수 있다(예를 들어, 100개의 레코드). 상기 모듈(104)은 각각의 레코드들의 집합을 하나의 압축된 데이터 블록으로 압축한다. 상기 압축된 블록들은 압축된 데이터 저장소(112) 내에 저장된 압축된 레코드 파일을 형성하도록(예를 들어, 파일에 연속적인 블록들을 첨부함으로써) 함께 수집될 수 있다. 또한, 압축된 레코드 파일의 수는 혼성 압축 레코드 파일을 형성하도록 통합될 수도 있다. 일부의 실시예에서, 스토리지 인터페이스 모듈(104)은 각각의 블록들의 엔트리(entry)를 포함하는 인덱스를 관리한다. 상기 인덱스는 블록 내에 포함될 수 있는 레코드들의 일차 키의 범위를 나열함으로써 주어진 레코드를 포함할 수 있는 블록의 위치를 알아내기 위해 사용될 수 있고, 이는 미국등록특허 7,885,932에 보다 자세하게 서술되어 있다. 인덱스는 압축된 레코드 파일로써 동일한 스토리지 매체 내에 저장될 수 있지만, 일반적으로 압축된 레코드 파일에 비하여 크기가 매우 작기 때문에, 바람직하게는 상대적으로 더 빠른 메모리(예를 들어, DRAM(Dynamic Random Access Memory)과 같은 소멸성 기억 장치) 내에 저장될 수도 있다.
새로운 데이터 유닛들이 데이터 스토리지 시스템(106) 내에 저장되기 위하여 수신됨에 따라(추가 동작에 의해), 상기 데이터 유닛들은 초기에는 입력 버퍼(114) 내에 압축되지 않은 형태로 저장될 수 있다. 미리 결정된 임계값 이후에, 예를 들어, 소정의 수의 데이터 유닛들이 입력 버퍼(114) 내에 저장된 이후 또는 입력 버퍼(114)의 크기가 소정의 사이즈에 도달하거나, 또는 소정의 시간 간격이 지난 이후에, 복수의 데이터 유닛들은 다양한 압축 포맷(예를 들어, gzip 포맷)들을 사용하여 하나의 압축된 데이터 블록으로 집합적으로 압축된다. 다음으로, 상기 압축된 데이터 블록은 압축된 데이터 저장소(112) 내의 압축된 레코드 파일 중 하나에 추가될 수 있다.
일부 실시예에서, 데이터가 인출될 수 있는 유연한 방법을 제공하기 위하여 서로 다른 판독 모드의 서로 다른 판독 동작이 존재한다. 각각의 판독 모드에서, 판독 동작에 의해 식별되는 하나 이상의 압축된 데이터 블록들은 하나의 데이터 유닛들의 집합을 산출함으로써 압축이 해제될 수 있다. 그러나, 상기 서로 다른 판독 모드들은, 판독 동작에 대한 응답으로써 반환되며, 하나의 데이터 블록으로부터 복구된 데이터 유닛들의 집합으로부터 하나 이상의 데이터 유닛들을 인출하는 서로 다른 기술을 사용한다. 예를 들어, 제1 판독 모드(“직접 주소지정 모드(direct addressing mode)” 로 불리는)에서 특정 데이터 유닛(들)은, 하나의 데이터 유닛을 포함하는 데이터 블록, 데이터 유닛의 시작점으로부터의 오프셋(복구된 집합의 시작점으로부터의 상대적 위치), 및 데이터 유닛의 길이를 특정하는 주소 정보를 기반으로 인출된다. 일부의 경우, 상기 오프셋은 데이터 블록으로부터 이전의 제거에 의한 위치 변화를 교정하기에 충분한, 하나 이상의 데이터 유닛들의 과거 제거에 관한 정보를 포함하는 이력 정보를 기반으로 업데이트되어야 할 수 있다. 데이터 유닛의 길이에 대한 스펙(specification)은 데이터 유닛들의 다양한 길이 및/또는 특정되지 않은 길이를 지원한다. 다른 일부 실시예에서는, 만약 모든 데이터 유닛들이 동일하게 특정된 길이로 고정된다면, 길이에 대한 정보는 다이렉트 주소(direct address) 내에 포함될 필요가 없다. 일부 실시예에서, 다이렉트 주소는 보조 정보를 기반으로 데이터 유닛의 상대적인 오프셋을 내부적으로 한정할 수 있다. 예를 들어, 다이렉트 주소는 하나의 데이터 유닛을 포함하는 데이터 블록, 및 데이터 유닛 시작점의 오프셋에 맵핑되는 레코드 식별자(record identifier)를 한정할 수 있다.
제2 판독 모드(“스캐닝 모드”로 불리는)에서 데이터 유닛은 복구된 집합으로부터 연속적인 스트림으로써 순차적으로 판독된다. 복수의 압축된 데이터 블록들을 포함하는 압축된 레코드 파일에 대하여, 하나의 압축된 데이터 블록의 마지막에 도달할 때, 데이터 유닛들은, 파일의 마지막에 도달할 때까지 다음의 압축된 데이터 블록으로부터 압축이 해제되고 판독된다. 스캐닝 모드에서, 모든 판독된 데이터 유닛들이 판독 동작에 대한 응답으로써 반환될 수 있거나, 또는 판독된 데이터 유닛들의 소정의 부분집합이 반환될 수 있다(예를 들어, 선택된 필터를 기반으로). 시스템(100)의 일부 실시예에서, 스캐닝 모드 판독 동작은 스토리지 인터페이스 모듈(104)는 분리된 데이터 스토리지 시스템(106)에 의하여 (예를 들어, 실행 환경(102) 내에서 실행되는 제3의 프로그램에 의하여, 또는 외부 실행 환경(102)으로부터 데이터 스토리지 프로그램(106)에 액세스하는 시스템에 의하여) 수행되도록 설정된다.
제3 판독 모드(“키 룩업 모드(key lookup mode)”로 정의되는)에서, 특정 키(들)을 갖는 레코드(들)은 각각의 데이터 블록에 대응하는 범위의 가능한 키들을 식별하는 인덱스를 액세스함으로써 인출된다. 판독 동작에 의하여 식별되는 키는, 일차 키 또는 하나 이상의 인출될 데이터 유닛들의 일차 키들에 맵핑되는 이차 키일 수 있다. 특정한 일차 키를 포함하는 범위에 대응하는 인덱스에 의해 리스트되는 데이터 블록은 압축이 해제되고, 상기 일차 키는 복원된 데이터 유닛들의 집합에서 검색된다. 또한, 다른 판독 동작이 지원될 수도 있다. 예를 들어, 판독 동작은 일차 또는 이차 키를 한정할 수 있고, 상기 키는 일차 키-직접주소(primary key-to-direct address) 룩업 테이블을 사용하는 특정 데이터 유닛에 대한 주소 정보에 맵핑될 수 있다.
삭제 동작은 수정되기 위한 압축된 데이터 저장소(112)의 다른 부분들을 요구하지 않고, 데이터 유닛을 포함하는 압축된 데이터 저장소(112) 내의 압축된 데이터 블록으로부터 특정 데이터 유닛이 제거되도록 한다. 예를 들어, 일부 실시예들은 수정될 압축된 레코드 파일의 단일 데이터 블록 이상이 요구되지 않고, 수정될 데이터 블록 또는 파일의 인덱스가 요구되지 않는다. 이것은, 예를 들어, 만약 특정 데이터 유닛이 제거될 정보를 포함하고(예를 들어, 고객의 요청에 대한 응답으로써 프라이버시보호법에 의한 고객 정보의 제거가 요구되는 경우), 하지만 동일한 블록 또는 동일한 압축된 레코드 파일 내의 다른 데이터 유닛들은 여전히 유지될 필요가 있는 경우에 유용하다. 삭제 동작은 삭제될 데이터 유닛을 포함하는 압축된 데이터 블록을 삭제된 데이터 유닛을 포함하지 않는 데이터 블록으로 교체하고, 새로운 압축 데이터 블록에 연관된 이력 정보 내의 삭제된 데이터 블록에 대한 정보를 저장한다. 상기 이력 정보는 압축된 데이터 저장소(112) 내에(예를 들어, 헤더(header) 또는 푸터(footer)로터 압축된 데이터 블록의 미리 정해진 부분 내에, 또는 다른 오버헤드 정보 또는 서로 다른 압축된 데이터 블록들 사이에 인터리브된 사용가능한 공간 내에) 저장될 수 있다. 이력 정보는 예를 들어, 삭제된 데이터 유닛들에 대한 오프셋들의 리스트 및 그들의 길이를 포함할 수 있다.
이러한 이력 정보를 사용하여, 새로운 압축된 데이터 블록 내에 남아 있는 다른 데이터 유닛들은, 삭제된 데이터 유닛들로 인한 쉬프트를 계산하기 위해 이력 정보에 따라 해석된 존재하는 주소 정보를 이용하여, 여전히 액세스될 수 있다. 특히, 데이터 유닛이 삭제된 후의 데이터 블록으로부터 복구된 집합 내에 위치한 데이터 유닛들의 모든 존재하는 다이렉트 주소 오프셋들은 효율성을 지원하기 위하여 삭제 동작을 수행할 때 바로 업데이트될 필요가 없다. 저장된 데이터 유닛들의 수가 상대적으로 적은 경우는 직접 주소지정 모드로 판독 동작이 사용되어 판독될 가능성이 높고, 잠재적으로 많은 수의 저장된 직접 주소 오프셋들을 업데이트하는 것에 비하여 온디멘드(on-demand) 방식으로 오프셋들을 조정하는 것이 더 효율적이다. 또한, 일부 실시예에서, 스토리지 인터페이스 모듈(104)은 다이렉트 주소 오프셋들의 모든 저장된 주소를 액세스하지 않을 것이고, 따라서 모든 오프셋들을 업데이트할 수 없을 것이다.
도 2를 참조하면, 압축된 데이터 저장소(112)에 대한 데이터 스토리지 포맷의 일례는 압축된 레코드 파일(200)을 포함하고, 상기 레코드 파일(200)은 데이터 블록들(202A-202C)을 비롯하여 다수의 압축된 데이터 블록을 포함한다. 본 예시에서, 데이터 블록(202B)은 헤더(204) 및 풋터(206)를 포함한다. 헤더(204)는 데이터 블록(202B)의 압축 및 압축해제에 대한 정보 및 다른 관련된 정보를 저장하는 필드를 포함한다. 풋터(206)는 압축 및 압축해제 프로세스 내에서 에러를 검출 및/또는 교정하는 CRC(cyclic redundancy check) 또는 다른 체크섬(checksum)과 같은 에러검출 코드를 포함한다. 데이터 블록(202B) 내의 압축된 데이터(208) 섹션은 압축된 레코드 파일(200) 내에 저장된 레코드의 집합(210)을 복구하기 위하여 압축 해제될 수 있다. 일부 압축 포맷에 있어서, 헤더(204)는 다양한 길이를 갖고 따라서 헤더(204)가 끝나는 위치 및 압축된 데이터(208)가 시작되는 위치를 지시하는 정보를 포함한다.
예를 들어, gzip 압축 포맷 내에서, 헤더(204)는 아래 표에 열거된 필드들을 포함하고, 처음 10바이트 내에는 6개의 필수적인 필드와, 가변 길이 필드들을 포함하여 최대 6개의 선택적인 필드들을 포함한다.
길이(bytes) GZIP 헤더 필드 컨텐츠(contents)
2 파일의 고유 속성을 식별하는 “매직 헤더”(gzip:0x1f, 0x8b)
1 압축 방법(예를 들어, LZ77(Lempel-Ziv 1977)에 기반한 압축, 또는 LZH(Lempel-Ziv and Haruyasu) 등, 또는 압축하지 않음)
1 선택적인 필드들의 존재 또는 부존재 여부를 포함하는 파일의 값을 지시하는 8개의 1비트 플래그(flag)들
4 파일 수정 시간
1 특정 압축 방법에 의해 사용될 수 있는 추가 플래그
1 파일의 운영체제(OS) 타입(예를 들어, FAT 또는 Unix 등)
2 (선택적인)파일이 복수의 파트들의 일부일 경우, 파트 번호
2 (선택적인) 추가 필드의 길이(XLEN bytes)
XLEN (선택적인) 추가 필드(소정의 이진 데이터를 가질 수 있음 - 최대 65,535 bytes)
가변적(variable) (선택적인) 원본 파일명(널 바이트 0x00에 의해 종료됨)
가변적(variable) (선택적인) 코멘트(널 바이트 0x00에 의해 종료됨)
12 (선택적인) 파일이 암호화된 경우, 암호화 헤더
또한, gzip 압축 포맷은 4바이트의 CRC 코드와, 압축된 모듈로(modulo) 232 였던 원본 데이터의 압축되지 않은 사이즈를 제공하는 4바이트의 값을 포함하는 8바이트의 풋터(footer)를 갖는다. 각각이 자신의 gzip 헤더 및 풋터를 갖는 2개 이상의 압축된 데이터 블록들은 서로 인접하여 저장된다.
스토리지 인터페이스 모듈(104)이 데이터 블록(202B) 내에서 지시된(예를 들어, 인덱스에 의하여) 하나 이상의 레코드(예를 들어, 레코드 C 및 레코드 E)를 삭제하기 위한 삭제 동작을 수행할 때, 상기 모듈(104)은 레코드들의 집합(210)을 복구하기 위하여 압축된 데이터(208)의 압축을 해제하고, 삭제될 레코드들을 포함하지 않는 새로운 레코드들의 집합(212)을 발생시키고, 새로운 레코드들의 집합(212)을 수정된 압축 데이터(208')에 압축시킨다. 새로운 레코드들의 집합(212)은 원본 레코드들의 집합(210)에 비해 더 적은 정보를 포함하고 있기 때문에, 수정된 압축 데이터(208')는 원본 압축 데이터(208)에 비하여 작은 사이즈를 가질 것이다(주어진 레코드 내에서 소정의 최소한의 정보 내용물이 삭제된 것으로 추정됨). 그러면, 압축된 데이터(208)에 저장된 데이터 블록(202B) 섹션은 수정된 압축 데이터(208')로 교체되고, 원본 헤더(204) 및 풋터(206)는 수정된 데이터 블록(202B')에 함께 대응하는 수정된 헤더(204') 및 풋터(206')로 교체된다. 수정된 데이터(208')가 원본 데이터(208)보다 적은 스토리지 공간을 차지하기 때문에, 수정된 헤더(204)는 원본 헤더(204)보다 더 많은 스토리지 공간을 사용가능하다. 이러한 추가 스토리지 공간은 사용가능한 가변길이 필드(예를 들어, gzip 압축 포맷의 추가 필드) 내의 이력 정보(214)를 저장하도록 사용될 수 있다.
대부분의 레코드 포맷들에 대하여, 수정된 헤더(204') 내에 이력 정보(214)를 수용하기 위해 필요한 스토리지 공간은 하나의 레코드가 삭제된 이후라도 수정된 데이터(208')의 예상되는 사이즈의 축소보다는 더 작을 가능성이 크다. 이례적으로, 축소된 사이즈가 이력 정보(214)를 모두 수용하기에 충분하지 않은 경우, 연관된 삭제 동작은 취소되고, 에러 메시지가 반환될 수 있다. 수정된 데이터 블록(202B')이 원본 데이터 블록(202B)과 동일한 전체 사이즈를 확실하게 갖도록 하기 위하여, 헤더는 반복적인 바이트(byte) 패턴(예를 들어, 0xff를 포함하는 소정의 바이트들)과 같은 라이팅 패딩(writing padding, 218), 또는 서로 동일하거나 서로 다른 가변길이 필드(예를 들어, gzip 압축 포맷의 코멘트 필드)에 의하여 필요한 만큼 길이가 늘어날 수도 있다. 선택적으로, 레코드의 삭제가 이력 정보를 위하여 충분한 공간을 제공하지 않는 실시예에서(예를 들어, 특별히 컴팩트한 레코드 구조에서), 압축된 데이터 블록이 처음으로 발생하였을 때 패딩(padding)이 헤더 내에 포함될 수도 있다. 이러한 최초 패딩은 헤더에 이력 정보를 위한 추가적인 공간을 제공하기 위하여 축소될 수 있다.
위에서 서술된 바와 같이, 필요한 경우, 이력 정보(214)는 레코드들의 집합(210)으로부터 제거된 레코드들을 교정될 새로운 더 작은 집합(212) 내의 잔여 레코드들의 다이렉트 주소에 대한 충분한 정보로 요약하고, 필요하다면, 공동 참조 스토리지 위치에 대한 상대적인 주소(예를 들어, 복원된 레코드들의 새로운 집합(212) 내에 레코드들을 순차적으로 저장하는 주소 공간 내의 시작 주소)로 요약한다. 이력 정보(214)를 인코딩(encoding)하는데 사용될 수 있는 데이터 구조(215)의 예로는 각각이 원본 레코드들의 집합 내에서 제1 레코드의 시작점에 대하여 삭제된 레코드의 상대적인 오프셋을 포함하는 요소들(216)의 목록이 있다. 도 2에 도시된 예에서는 각각의 삭제된 레코드인 레코드 C 및 레코드 E의 두 개의 요소들(216)이 있다. 레코드의 인코딩 길이는 레코드들을 가변 길이 및/또는 불특정 길이로 지원한다. 다른 한편으로는, 다른 실시예들에서, 만일 모든 레코드들이 동일한 특정된 고정 길이를 갖는다면, 상기 길이는 요소들(216) 내에 저장될 필요가 없다. 요소들(216)은 그들의 오프셋 값들의 순서로 정렬된 리스트 내에서 발생한다. 추가적인 삭제 동작들이 추가적인 레코드들을 제거하기 위하여 수행됨에 따라서, 추가적인 요소들(216)은 리스트에 첨부되거나 삽입된다.
이러한 데이터 구조(215)를 저장하는 데에는 효율적인 방법으로 다양한 인코딩 기술들이 사용될 수 있다. 예를 들어, 두 개 이상의 인접한 삭제된 레코드들의 소정의 시퀀스는 시퀀스 내 제1 레코드의 오프셋 및 시퀀스 내 레코드들의 길이의 합과 동일한 길이를 포함하는 하나의 요소(216)로 축소될 수 있다. 따라서, 각각의 요소(216)는 소정의 수의 이전에 삭제된 레코드들이 저장된 이전에 삭제된 영역을 나타낼 수 있다. 일부의 경우, 상기 인접한 삭제된 레코드들은 서로 다른 동작에 의해 삭제되었을 수 있다. 각각의 요소(216)는 오프셋을 저장하기 위한 미리 정해진 수의 비트 및 길이를 저장하기 위한 미리 정해진 수의 비트를 사용하여 헤더(204')의 가변길이 필드 내 수 비트의 인접한 슬롯들 내에 저장될 수 있다. 오프셋들의 값을 저장하기 위하여 사용되는 스토리지 공간의 용량은 가능할 것으로 예상되는 가장 큰 오프셋을 저장하기에 충분한 비교적 작은 수의 비트로 한정될 수 있다. 길이들의 값을 저장하기 위해 사용되는 스토리지 공간의 용량 또한 제한될 수 있다(예를 들어, 오프셋을 저장하기 위한 비트와 동일한 수의 비트로, 축소된 요소에 허용된 비트로). 오프셋 및 길이의 값들은 가능한 값들에 대한 추정을 기반으로 압축될 수도 있다. 예를 들어, 만약 레코드가 항상 짝수개의 비트를 차지하는 것으로 알려진 경우, 오프셋 및 길이의 값들은 특정한 쌍의 비트수를 인코딩하는 것으로써 해석될 수 있다. 따라서, 8 비트는 최고 255 x 2 = 510 비트까지 인코딩할 수 있다. 이와 유사하게, 만약 레코드가 항상 일정한 수의 복수의 스토리지 공간을 차지하는 것으로 알려진 경우, 오프셋 및 길이의 값들은 실제 비트수와는 대조적으로 상기 복수의 배수의 비트를 인코딩하는 것으로 해석될 수 있다. 이러한 데이터 구조(215)는 선택적으로 더 압축될 수도 있다(예를 들어, run-length 인코딩을 사용하여).
도 3a는 하나 이상의 레코드들의 삭제를 수행하기 위한 삭제 동작(300)의 일례를 나타내는 흐름도이고, 각각의 다이렉트 주소는 3원소(블록, 오프셋, 길이)에 대응한다. (본 실시예에서는, 하나의 블록 내에 있는 하나 이상의 레코드들이 삭제되는 것을 예시하였지만, 삭제 동작에서 소정의 수의 블록들로부터 레코드들이 삭제될 수 있다.) 스토리지 인터페이스 모듈(104)은 압축된 데이터 저장소(112) 내의 START 주소로부터 시작되는 주소 공간으로 식별자 BLOCK과 함께 데이터 블록의 압축을 해제한다(S302). 상기 모듈(104)은 START + OFFSET 주소에서(LENGTH 길이를 갖는) 레코드를 삭제한다(304). 상기 모듈(104)은 OFFSET 및 LENGTH 값들을 인코딩하는 이력 정보를 계산한다(306). 상기 모듈(104)은 삭제할 레코드들이 더 있는지 여부를 판단하여(308), 그러한 경우 삭제(304) 및 계산(306) 단계를 반복한다. 레코드들이 삭제된 후, 상기 모듈(104)은 새로운 레코드들의 집합을 누락된 레코드들 사이의 갭(예를 들어, 임시 파일 내의) 없이 잔여 레코드들이 인접하도록 메모리 공간의 일부분에 기록하고, 새로운 레코드들의 집합을 압축한다(310). 상기 모듈(104)은 계산된 이력 정보 데이터 구조 및 소정의 필요한 패딩을 블록 BLOCK의 헤더에 기록한다(312). 상기 모듈(104)은 산출된 압축 데이터를 블록 BLOCK 내의 원본 압축 데이터와 동일한 위치에서 끝나도록 압축된 데이터 저장소(112) 내의 블록 BLOCK에 기록한다(314). 상기 모듈은 (이전의 풋터를 대체하는)새로운 풋터(footer)를 새로운 압축 데이터에 대한 에러검출 코드로 기록한다(316).
이러한 삭제될 레코드 내의 정보를 실질적으로 제거하는 “지우는(expunging)” 삭제 동작에 추가로, 스토리지 인터페이스 모듈(104)은 레코드 내의 정보를 실질적으로 제거하지 않고도 삭제될 레코드를 단순히 숨기거나 플래그(flag)하는 다른 삭제 동작을 제공하도록 설정될 수도 있다. 이러한 삭제 동작은 더 빠르지만 더 적은 삭제의 보안 형식을 제공하는데 유용할 수 있고, 이력 정보의 기록 또는 블록의 압축 해제조차 필요로 하지 않을 수 있다. 하지만, 예를 들어, 일부 프라이버시보호법에 의한 요구와 같이 복구되지 못하도록 하는 엄격한 요구를 충족시키기 위해, 정보를 완전히 지우는 삭제 동작 또한 가능하다.
도 3b는 하나 이상의 레코드들의 판독을 수행하기 위한 제1(직접 주소지정) 판독 동작(320)의 일례를 나타내는 흐름도이고, 각각의 다이렉트 주소는 3원소(블록, 오프셋, 길이)에 대응한다. (본 실시예에서는, 판독 동작에서, 하나의 블록 내에서 하나 또는 그 이상의 레코드들이 판독되는 것을 예시하였지만, 소정의 수의 블록들로부터 레코드들이 판독될 수도 있다.) 스토리지 인터페이스 모듈(104)은 압축된 데이터 저장소(112) 내의 START 주소로부터 시작되는 주소 공간에 식별자 BLOCK과 함께 데이터 블록의 압축을 해제한다(322). 상기 모듈(104)은 판독될 레코드의 주소를 START + OFFSET - CORRECTION 으로 계산하고(324), 이 때, CORRECTION은 블록 BLOCK에 대한 기존의 이력 정보를 기반으로 계산된다. 예를 들어, 상기 모듈(104)은 얼마나 많은 이전에 삭제된 영역들이 OFFSET 보다 작은 오프셋 값을 갖고 OFFSET 이전에 종료하는지를 계산한다. 만약, 존재하지 않는다면, 주소의 교정이 필요하지 않고, CORRECTION = 0의 값을 갖는다. 반대로 존재하는 경우, CORRECTION은 OFFSET 보다 작은 오프셋 값을 갖지 않는 각각의 이전에 삭제된 영역의 길이의 합과 같다. 따라서, 이전에 삭제된 영역을 보상하기 위한 교정은 판독하기 위한 특정 레코드와 레코드들의 집합의 시작점 사이에 얼마나 많은 이전에 삭제된 레코드들이 기존에 존재하는지에 의존한다. 주소를 계산하고 나서, 상기 모듈(104)은 계산된 주소에서 레코드를 판독한다(326). 만약, 이전에 삭제된 영역이 OFFSET 보다 작거나 같은 오프셋 값을 갖고 OFFSET 이전에 종료되지 않는다면, 계산된 주소는 이전에 삭제된 영역으로 나뉘고, 상기 모듈(104)은 판독 단계(326)를 건너뛰고, 다신에 상기 판독하려는 레코드가 이미 삭제되었다는 것을 보고한다. 상기 모듈(104)은 추가적으로 판독하기 위한 레코드가 존재하는지를 판단하고(328), 만약 그렇다면 상기 계산(324) 및 판독(326) 단계를 반복한다. 블록 내에 판독하기 위한 추가적인 레코드가 존재하지 않는 경우, 동작은 반환된다(330).
제1(직접 주소지정) 판독 동작의 다른 실시예들 또한 가능하다. 예를 들어, 각각의 판독될 레코드의 교정된 주소를 계산하는 대신에, 압축된 데이터 블록의 압축을 해제한 이후에 복원된 레코드들은 삭제된 레코드들이 존재하는 주소 공간에 적정한 갭으로 기록되는 것도 가능하다. 상기 갭들이 어디에 존재하는지를 판단하기 위해 필요한 정보들은 상기 서술된 동일한 이력 정보로부터 획득될 수 있다. 다음으로, 상기 판독 동작은 교정되지 않은 각각의 주소 START + OFFSET 에서 판독을 진행할 수 있다.
도 3c는 판독될 위한 레코드들이 있는 압축된 레코드 파일 내의 하나 이상의 블록을 스킨하는 제2(스캔) 판독 동작의 일례를 나타내는 흐름도(340)이다. 스토리지 인터페이스 모듈(104)은 압축된 데이터 저장소(112) 내의 제1 데이터 블록을 주소 공간 내로 압축해제한다(342). 상기 모듈(104)은 (예를 들어, 각각의 레코드들의 시작점 및/또는 종결점을 인지함으로써) 각각의 개별적인 레코드들을 판독하기 위해 주소 공간을 스캔한다(344). 상기 모듈(104)은 파일 내에 다른 데이터 블록이 존재하는지 여부를 판단한다(346). 파일 내에 판독하기 위한 추가적인 데이터 블록들이 존재하지 않을 때에는(예를 들어, 파일의 종결점을 검출함으로써), 상기 동작은 반환된다(348).
이력 정보를 저장하지 않고도 레코드를 완전히 지우는 방법으로 삭제 동작을 구현하는 것도 가능한 반면(예를 들어, 1 또는 0 과 같이 미리 정해진 패턴의 비트들로 갭이 채워진 삭제된 레코드들에 덮어쓰는 방식으로), 이러한 삭제 동작은 이러한 삭제된 레코드들을 인지하고 무시하기 위하여 스캐닝 모드 판독 동작이 필요할 것이다. 삭제된 레코드들이 있던 위치의 갭을 제거함으로써, 그리고 이력 정보 내부 대신 상기 정보를 보존함으로써, 스캐닝 모드 판독 동작은 압축된 데이터 저장소(112) 내의 정보를 판독하는데 사용될 수 있는 다양한 기술과 호환되는 유연한 방법으로 구현될 수 있다. 또한, 더 작은 수정된 압축 데이터(208')가 더 큰 원본 압축 데이터(208)를 대체하고 난 뒤에 남은 잔여 공간을 채움으로써(예를 들어, 수정된 헤더(204')의 필드를 채움으로써), 압축된 레코드 파일 내에 예상치 못한 갭들이 존재하지 않고, 제2(스캐닝) 판독 동작이 각각의 압축된 데이터 블록을 성공적으로 인식할 수 있게 된다. 예를 들어, gzip 포맷을 사용하는 실시예에서, 풋터(footer)의 뒤에, 상기 모듈(104)은 다른 압축된 데이터 블록의 시작점(즉, 다른 gzip 매직 헤더(magic header)) 또는 압축된 레코드 파일의 종결점의 식별자를 기대한다. 이러한 방법으로 삭제 동작에 의해 수정된 압축된 데이터 블록의 사이즈를 확장하는 것은 압축된 데이터 블록이 수정된 후에 발생하는 압축된 레코드 파일 내의 압축된 데이터 블록의 저장 공간을 이동해야할 필요없이 스캐닝 모드 호환성을 유지시켜 준다.
도 3d는 하나 이상의 레코드들의 판독을 수행하는 제3(키 룩업) 판독 동작의 일례를 나타내는 흐름도(360)이고, 각각의 판독 동작은 식별 키 값을 갖는다. 스토리지 인터페이스 모듈(104)은 압축된 데이터 저장소(112) 내의 식별자 BLOCK을 갖는 데이터 블록을 주소 공간으로 압축 해제한다(362).
스토리지 인터페이스 모듈(104) 또는 다른 모듈 또는 압축된 데이터 저장소(112)를 액세스하는 시스템들에 의해 동시에 복수의 데이터 동작 수행을 가능하도록 하기 위해, 두 가지 데이터 동작들 사이에 충돌을 피하기 위한 기술들이 사용될 수 있다. 상대적으로 삭제 동작들의 빈도가 적을 것으로 예상된다면, 압축된 데이터 블록의 풋터(footer) 내에 있는 에러검출 코드는 데이터 블록을 검출하기 위한 압축 해제 이후에 데이터 동작에 의하여 사용될 수 있고, 상기 압축 해제는 삭제 동작이 수행되는 동안에 압축된 데이터를 업데이트되도록 하는 과정 중에 있다. 예를 들어, 인식 불가능한 체크섬(checksum) 이후에, 데이터 동작은 에러 메시지를 출력하거나 삭제 동작이 완료되도록 허용되는 딜레이 이후에 재시도할 수 있다. 만약, 삭제 동작들의 빈도가 상대적으로 높을 것으로 예상된다면, 이러한 충돌을 예방하기 위해 락킹 메커니즘(locking mechanism)들이 사용될 수 있다.
상기 서술된 데이터 스토리지 기술들은 적절한 소프트웨어를 실행시키는 컴퓨터 시스템을 사용하여 구현될 수 있다. 예를 들어, 상기 소프트웨어는 하나 이상의 프로그램되거나 프로그램될수 있는 컴퓨팅 시스템(분산된 클라이언트/서버 또는 그리드와 같은 다양한 구조를 가질 수 있음)을 실행시키는 하나 이상의 컴퓨터 프로그램 내의 절차(procedure)들을 포함할 수 있고, 상기 각각의 컴퓨팅 시스템은 적어도 하나의 프로세서, 적어도 하나의 (소멸성 및/또는 비소멸성 메모르 및/또는 스토리지 요소를 포함하는) 데이터 스토리지 시스템, 적어도 하나의 (적어도 하나의 입력 장치 또는 입력 포트를 사용하여 입력을 수신하고, 적어도 하나의 출력 장치 또는 출력 포트를 사용하여 출력을 제공하는) 사용자 인터페이스를 포함한다. 상기 소프트웨어는 예를 들어, 디자인, 설정 및 데이터흐름 그래프의 실행에 관한 서비스를 제공하는 대형 프로그램의 하나 이상의 모듈을 포함할 수 있다. 상기 프로그램(예를 들어, 데이터 흐름 그래프의 요소)의 모듈은 데이터 구조 또는 데이터 저장소 내에 저장된 데이터 모델을 승인하는 다른 마련된 데이터로써 구현될 수 있다.
상기 소프트웨어는 CD-ROM 또는 다른 컴퓨터 판독가능한 매체 (예컨대, 범용 또는 특수 목적의 컴퓨팅 시스템 또는 장치에 의해 판독가능한)와 같은, 실체적인(tangible), 비일시적 매체에 제공되거나, 소프트웨어가 실행되는 컴퓨팅 시스템의 실체적인, 비일시적인 매체로 네트워크의 통신 매체를 거쳐 전달될 수 있다 (예컨대, 전파된 신호에 인코딩된다). 처리의 일부 또는 전부는 코프레서들(coprocessors) 또는 필드-프로그램가능한 게이트 어레이들(FPGAs) 또는 전용의, 응용 주문형 집적 회로(application-specific integrated circuits, ASICs)와 같은, 특수 목적의 하드웨어를 이용하여 수행되나, 특수 목적의 컴퓨터에서 수행될 수 있다. 상기 처리는 소프트웨어에 의해 지정된 컴퓨터의 상이한 부분들이 상이한 컴퓨팅 엘리먼트들(computing elements)에 의해 수행되는 배포된 방식으로 구현될 수 있다. 각각의 이러한 컴퓨터 프로그램은 바람직하게 저장 디바이시스 매체가 본 발명에서 설명된 처리를 수행하기 위해 컴퓨터에 의해 판독될때 상기 컴퓨터를 구성하고 동작하기 위하여, 범용 또는 특수 목적의 프로그램가능한 컴퓨터에 의해 액세스 가능한 저장 디바이스의 컴퓨터-판독가능한 저장 매체 (예컨대, 고체 상태 메모리(solid state memory) 또는 미디어, 또는 자기적 또는 광학적 미디어)에 저장되거나 다운로드될 수 있다. 본 발명의 시스템은 그렇게 구성되는 매체는 컴퓨터가 본 발명에서 설명된 적어도 하나의 처리 단계들을 수행하기 위하여 특정한 그리고 미리 정해진 방식으로 동작하도록하는, 컴퓨터 프로그램으로 구성된, 구체적이고(tangible), 비일시적인 매체로 구현되도록 역시 고려될 수 있다.
본 발명의 다수의 실시 예가 기술되었다. 그럼에도 불구하고, 전술한 설명은 예시를 위한 것이며 다음의 청구범위에의해 정의되는 본 발명의 범위를 한정하는 것이 아닌 것으로 이해되어야 한다. 따라서, 다른 실시예들 또한 다음 청구범위 내에 있다. 예를 들어, 다양한 변형이 본 발명의 범위를 벗어남 없이 만들어 질 수 있다. 부가적으로, 상기 기술된 스텝들의 일부는 순서 독립적이므로 기술된 것과 다른 순서로 수행될 수 있다.

Claims (24)

  1. 데이터 유닛들의 스토리지를 관리하는 시스템에 있어서,
    복수의 데이터 블록들을 저장하도록 구성된 데이터 스토리지 시스템, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원함; 및
    상기 데이터 스토리지 시스템에 연결되고 적어도 하나의 프로세서를 포함하는 인터페이스를 포함하되, 여기서 상기 인터페이스는 상기 데이터 유닛들에 관한 하나 또는 그 이상의 동작들을 수행하도록 구성됨,
    상기 동작들은,
    삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하고, 상기 제2 데이터 블록이 상기 제1 데이터 블록과 동일한 사이즈를 갖도록 상기 제2 데이터 블록에 연관된 오버헤드 정보를 저장하는 삭제 동작
    을 포함하는 것을 특징으로 하는 시스템.
  2. 제1항에 있어서, 상기 제2 데이터 블록은 상기 데이터 스토리지 시스템 내에서 상기 제1 데이터 블록에 인접하였던 데이터 블록에 인접한 것을 특징으로 하는 시스템
  3. 제1항 또는 제2항에 있어서, 상기 제2 데이터 블록은 상기 제1 데이터 블록과 동일한 스토리지 공간 내에 저장된 것을 특징으로 하는 시스템.
  4. 제1항, 제2항 또는 제3항에 있어서, 상기 삭제 동작은 상기 제1 데이터 블록을 제외한 다른 데이터 블록들을 상기 데이터 스토리지 시스템 내에서 상기 삭제 동작이 수행되기 이전의 동일한 저장 위치들에 유지시키는 것을 특징으로 하는 시스템.
  5. 제1항 내지 제4항에 있어서, 상기 데이터 스토리지 시스템은, 상기 데이터 블록들의 적어도 일부에 대해, 각 데이터 블록으로부터 하나 또는 그 이상의 데이터 유닛들의 과거 제거에 관하여 대응하는 이력 정보를 저장하도록 구성되며, 상기 제거는 상기 데이터 블록 내의 데이터 유닛들의 적어도 일부 주소에 영향을 주는 것을 특징으로 하는 시스템.
  6. 제5항에 있어서, 상기 동작들은 특정한 데이터 블록에 대응하는 소정의 저장된 이력 정보를 기반으로 해석된 상기 주소 정보에 따라 상기 특정한 데이터 블록에 저장된 적어도 제1 데이터 유닛을 액세스하는 제2 판독 동작을 포함하고, 상기 제2 판독 동작은 상기 제2 판독 동작과는 다른 것을 특징으로 하는 시스템.
  7. 제5항 또는 제6항에 있어서, 상기 삭제 동작은 상기 제2 데이터 블록에 대응하는 이력 정보 내의 상기 삭제된 데이터 유닛에 관한 정보를 저장하는 것을 특징으로 하는 시스템.
  8. 제5항, 제6항 또는 제7항에 있어서, 상기 이력 정보의 적어도 일부는 상기 데이터 스토리지 시스템 내에 저장되는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서, 상기 이력 정보의 적어도 일부분은 서로 다른 데이터 블록들 사이에 인터리브되는 것을 특징으로 하는 시스템.
  10. 제8항 또는 제9항에 있어서, 특정한 데이터 블록에 대응하는 이력 정보의 적어도 일부분은 상기 특정한 데이터 블록의 미리 결정된 부분에 저장되는 것을 특징으로 하는 시스템.
  11. 제1항에 있어서, 상기 데이터 블록들의 적어도 일부는 압축된 데이터 블록인 것을 특징으로 하는 시스템.
  12. 제11항에 있어서, 상기 제2 판독 동작은 압축된 데이터 유닛들의 집합을 복원하기 위해 특정한 압축된 데이터 블록의 압축을 해제하고, 상기 특정한 압축된 데이터 블록에 대응하는 이력 정보에 적어도 부분적으로 기반하여, 기준 위치로부터의 특정 오프셋에서 판독될 데이터 유닛을 인출하는 것을 특징으로 하는 시스템.
  13. 제11항 또는 제12항에 있어서, 상기 제1 판독 동작은 복수의 압축된 데이터 블록들의 압축을 해제하고, 복수의 압축해제된 데이터 유닛들을 순차적으로 판독하는 것을 특징으로 하는 시스템.
  14. 제11항 내지 제13항에 있어서, 상기 삭제 동작은 제2 압축 데이터 블록의 저장된 사이즈를 확장시켜 상기 제2 압축 데이터 블록 및 제1 압축 데이터 블록간의 사이즈 차이를 채우는 것을 특징으로 하는 시스템.
  15. 제14항에 있어서, 상기 제2 압축 데이터 블록의 저장된 사이즈는 상기 제2 압축 데이터 블록에 대응하는 이력 정보 뿐만 아니라 상기 제2 압축 데이터 블록에 관한 오버헤드 정보(overhead information)를 저장함으로써 확장되는 것을 특징으로 하는 시스템.
  16. 제11항 내지 제15항에 있어서, 상기 삭제 동작은 상기 제2 압축 데이터 블록에 연관된 새로운 에러검출 코드를 저장하여 상기 제1 압축 데이터 블록에 연관된 에러검출(error-detection) 코드를 대체하는 것을 특징으로 하는 시스템.
  17. 제11항 내지 제16항에 있어서, 상기 동작들은 최근에 추가된 데이터 유닛들의 집합과 연관되어 추가될 데이터 유닛을 저장하는 추가 동작을 포함하는 것을 특징으로 하는 시스템.
  18. 제17항에 있어서, 상기 프로세서는 최근에 추가된 데이터 유닛들의 상기 집합을 상기 스토리지 매체 내에 저장된 압축된 데이터 블록으로써 압축하도록 더 구성되는 것을 특징으로 하는 시스템.
  19. 제1항 내지 제18항에 있어서, 상기 데이터 스토리지 시스템은 상기 그룹 내의 상기 데이터 블록들이 미리 결정된 스토리지 포맷에 합치하는 것임을 식별하는 오버헤드 정보를 저장하도록 구성되는 것을 특징으로 하는 시스템.
  20. 제19항 또는 제20항에 있어서, 상기 오버헤드 정보는 상기 그룹 내의 각각의 데이터 블록의 헤더 내에서, 상기 미리 결정된 스토리지 포맷을 식별하는 식별자를 포함하는 것을 특징으로 하는 시스템.
  21. 제19항에 있어서, 상기 제1 판독 동작은 상기 미리 결정된 스토리지 포맷과 호환되는 것을 특징으로 하는 시스템.
  22. 데이터 유닛들의 스토리지를 관리하는 시스템에 있어서,
    복수의 복수의 데이터 블록들을 저장하는 수단, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원함; 및
    상기 데이터 유닛들에 관한 적어도 하나 또는 그 이상의 동작들을 수행하는 수단
    을 포함하되, 상기 동작들은,
    삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하고, 상기 제2 데이터 블록이 상기 제1 데이터 블록과 동일한 사이즈를 갖도록 상기 제2 데이터 블록에 연관된 오버헤드 정보를 저장하는 삭제 동작을 포함하는 것을 특징으로 하는 시스템.
  23. 데이터 유닛들의 스토리지를 관리하는 방법에 있어서,
    데이터 스토리지 시스템 내에 복수의 데이터 블록들을 저장하는 단계, 여기서 상기 데이터 블록들 중 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들의 적어도 하나의 그룹은 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출하는 제1 판독 동작을 지원함; 및
    적어도 하나의 프로세서를 사용하여 데이터 유닛들에 관한 하나 또는 그 이상의 동작들을 수행하는 단계
    를 포함하되, 상기 동작들은,
    삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하고,상기 제2 데이터 블록이 상기 제1 데이터 블록과 동일한 사이즈를 갖도록 상기 제2 데이터 블록과 연관된 오버헤드 정보를 저장하는 삭제 동작
    을 포함하는 것을 특징으로 하는 방법.
  24. 데이터 유닛들의 스토리지를 관리하는 컴퓨터 판독가능한 매체 내에 저장된 소프트웨어에 있어서, 상기 소프트웨어는 컴퓨팅 시스템에
    상기 데이터 블록들의 적어도 일부는 복수의 데이터 유닛들을 포함하고, 상기 데이터 블록들은 적어도 하나의 그룹이 연속적으로 저장되어 상기 그룹 내에서 적어도 두 개의 인접한 데이터 블록들로부터 데이터 유닛들을 인출할 수 있는 제1 판독 동작이 지원되는, 데이터 스토리지 시스템 내에 복수의 데이터 블록들을 저장하고, 그리고
    상기 데이터 유닛들에 관한 하나 또는 그 이상의 동작들을 수행하도록 하는 명령들을 포함하되, 상기 동작들은
    삭제될 데이터 유닛을 포함하는 제1 데이터 블록을 상기 삭제된 데이터 유닛을 포함하지 않는 제2 데이터 블록으로 교체하고, 상기 제2 데이터 블록이 상기 제1 데이터 블록과 동일한 사이즈를 갖도록 상기 제2 데이터 블록에 연관된 오버헤드 정보를 저장하는 삭제 동작
    을 포함하는 것을 특징으로 하는 소프트웨어.
KR1020157027796A 2013-03-06 2014-02-18 저장된 데이터 유닛들의 동작 관리 KR102319657B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/787,203 2013-03-06
US13/787,203 US9875054B2 (en) 2013-03-06 2013-03-06 Managing operations on stored data units
PCT/US2014/016858 WO2014137587A1 (en) 2013-03-06 2014-02-18 Managing operations on stored data units

Publications (2)

Publication Number Publication Date
KR20150125012A true KR20150125012A (ko) 2015-11-06
KR102319657B1 KR102319657B1 (ko) 2021-10-29

Family

ID=50280468

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157027796A KR102319657B1 (ko) 2013-03-06 2014-02-18 저장된 데이터 유닛들의 동작 관리

Country Status (9)

Country Link
US (1) US9875054B2 (ko)
EP (1) EP2965189B1 (ko)
JP (1) JP6457406B2 (ko)
KR (1) KR102319657B1 (ko)
CN (1) CN105009067B (ko)
AU (2) AU2014226448A1 (ko)
CA (1) CA2902873C (ko)
HK (1) HK1215974A1 (ko)
WO (1) WO2014137587A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2862334A1 (en) * 2012-06-13 2015-04-22 Telefonaktiebolaget L M Ericsson (Publ) Data compression in a communications network
US9959070B2 (en) 2013-03-06 2018-05-01 Ab Initio Technology Llc Managing operations on stored data units
US10133500B2 (en) 2013-03-06 2018-11-20 Ab Initio Technology Llc Managing operations on stored data units
US9286336B2 (en) * 2013-03-12 2016-03-15 Sap Se Unified architecture for hybrid database storage using fragments
US9277234B1 (en) * 2014-08-27 2016-03-01 Adobe Systems Incorporated Common copy compression
US10146820B2 (en) * 2015-09-24 2018-12-04 Nxp Usa, Inc. Systems and methods to access memory locations in exact match keyed lookup tables using auxiliary keys
US10210236B2 (en) 2015-11-23 2019-02-19 Ab Initio Technology Llc Storing and retrieving data of a data cube
KR101780652B1 (ko) * 2016-03-11 2017-09-21 주식회사 이디엄 열-지향 레이아웃 파일 생성 방법
US10853364B2 (en) * 2016-09-28 2020-12-01 Microsoft Technology Licensing, Llc Direct table association in in-memory databases
US11086843B2 (en) 2017-10-19 2021-08-10 Adobe Inc. Embedding codebooks for resource optimization
US11120363B2 (en) 2017-10-19 2021-09-14 Adobe Inc. Latency mitigation for encoding data
US10942914B2 (en) 2017-10-19 2021-03-09 Adobe Inc. Latency optimization for digital asset compression
CN108965295B (zh) * 2018-07-17 2021-09-17 郑州云海信息技术有限公司 一种文件压缩合并方法及相关装置
US10915503B2 (en) 2018-11-29 2021-02-09 International Business Machines Corporation Efficient detection of available space in a file system space map
US11704035B2 (en) 2020-03-30 2023-07-18 Pure Storage, Inc. Unified storage on block containers
US11740820B1 (en) * 2022-05-11 2023-08-29 Netapp, Inc. Block allocation methods and systems in a networked storage environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100278446A1 (en) * 2009-04-30 2010-11-04 Oracle International Corporation Structure of hierarchical compressed data structure for tabular data
US20100281004A1 (en) * 2009-04-30 2010-11-04 Oracle International Corporation Storing compression units in relational tables
US20110022779A1 (en) * 2009-07-24 2011-01-27 Lsi Corporation Skip Operations for Solid State Disks

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160439A (ja) * 1993-12-03 1995-06-23 Matsushita Electric Ind Co Ltd データ記憶装置及び主制御装置
EP0748504A1 (en) 1994-03-03 1996-12-18 Cirrus Logic, Inc. Defect management for automatic track processing without id field
US6604236B1 (en) 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
JP4288751B2 (ja) * 1999-05-25 2009-07-01 ソニー株式会社 記録媒体、データ処理装置
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7882081B2 (en) * 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US7890469B1 (en) 2002-12-30 2011-02-15 Symantec Operating Corporation File change log
JP2004258865A (ja) * 2003-02-25 2004-09-16 Canon Inc 情報処理方法
US7472254B2 (en) 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
US20050198062A1 (en) 2004-03-05 2005-09-08 Shapiro Richard B. Method and apparatus for accelerating data access operations in a database system
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US8090691B2 (en) 2004-08-13 2012-01-03 Computer Associates Think, Inc. System and method for variable block logging with log-ahead buffers
US20060184563A1 (en) 2005-02-14 2006-08-17 Potter David H Method and apparatus for temporal database
US9501492B2 (en) 2006-10-24 2016-11-22 Marvell World Trade Ltd. Combination journaling/non-journaling file system
US7885932B2 (en) 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units
US8229902B2 (en) 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
US8156241B1 (en) * 2007-05-17 2012-04-10 Netapp, Inc. System and method for compressing data transferred over a network for storage purposes
US7836099B2 (en) 2007-07-31 2010-11-16 Yahoo! Inc. Mail compression scheme with individual message decompressability
TW200910187A (en) 2007-08-21 2009-03-01 Sunplus Mmobile Inc Logged FAT file system and method of accessing the same
KR100926631B1 (ko) 2007-09-14 2009-11-11 (주)밀레니엄 포스 데이터 보안장치
US8045285B1 (en) 2008-03-25 2011-10-25 Marvell International Ltd. Data synchronization for bit insertion or deletion
US20090287986A1 (en) 2008-05-14 2009-11-19 Ab Initio Software Corporation Managing storage of individually accessible data units
CN101582067A (zh) 2008-05-15 2009-11-18 国际商业机器公司 解压压缩文件时减小存储需求的方法和系统
CN101320372B (zh) * 2008-05-22 2012-07-04 上海爱数软件有限公司 一种重复数据的压缩方法
JP2010015197A (ja) * 2008-06-30 2010-01-21 Toshiba Corp ストレージ制御装置、データ復元装置およびストレージシステム
US8555053B1 (en) * 2008-08-29 2013-10-08 Crossroads Systems, Inc. System and method for adjusting to drive specific criteria
US7987162B2 (en) 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
WO2010125574A1 (en) 2009-04-27 2010-11-04 Kamlesh Gandhi Description
US8990476B2 (en) 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
CN102043651B (zh) 2009-10-22 2013-07-03 鸿富锦精密工业(深圳)有限公司 Nand闪存及其数据更新管理方法
CN102929884B (zh) * 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
WO2013124896A1 (en) * 2012-02-23 2013-08-29 Hitachi, Ltd. Chunk- based deduplication system and method thereof
US8732403B1 (en) 2012-03-14 2014-05-20 Netapp, Inc. Deduplication of data blocks on storage devices
US8615500B1 (en) * 2012-03-29 2013-12-24 Emc Corporation Partial block allocation for file system block compression using virtual block metadata
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US10133500B2 (en) 2013-03-06 2018-11-20 Ab Initio Technology Llc Managing operations on stored data units
US9959070B2 (en) 2013-03-06 2018-05-01 Ab Initio Technology Llc Managing operations on stored data units

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100278446A1 (en) * 2009-04-30 2010-11-04 Oracle International Corporation Structure of hierarchical compressed data structure for tabular data
US20100281004A1 (en) * 2009-04-30 2010-11-04 Oracle International Corporation Storing compression units in relational tables
US20110022779A1 (en) * 2009-07-24 2011-01-27 Lsi Corporation Skip Operations for Solid State Disks

Also Published As

Publication number Publication date
JP2016517066A (ja) 2016-06-09
KR102319657B1 (ko) 2021-10-29
AU2019257524A1 (en) 2019-11-28
AU2014226448A1 (en) 2015-09-17
US9875054B2 (en) 2018-01-23
CA2902873A1 (en) 2014-09-12
AU2019257524B2 (en) 2021-02-25
EP2965189A1 (en) 2016-01-13
CN105009067B (zh) 2019-12-24
WO2014137587A1 (en) 2014-09-12
JP6457406B2 (ja) 2019-01-23
EP2965189B1 (en) 2019-04-10
CN105009067A (zh) 2015-10-28
CA2902873C (en) 2021-04-06
HK1215974A1 (zh) 2016-09-30
US20140258652A1 (en) 2014-09-11

Similar Documents

Publication Publication Date Title
AU2019257524B2 (en) Managing operations on stored data units
KR102275431B1 (ko) 저장된 데이터 유닛들의 동작 관리
US9195668B2 (en) Log access method storage control apparatus, archive system, and method of operation
US8214620B2 (en) Computer-readable recording medium storing data storage program, computer, and method thereof
KR102275240B1 (ko) 저장된 데이터 유닛들의 동작 관리
US11500590B2 (en) Method, device and computer program product for data writing

Legal Events

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