KR101825905B1 - 아카이벌 데이터 저장 시스템 - Google Patents

아카이벌 데이터 저장 시스템 Download PDF

Info

Publication number
KR101825905B1
KR101825905B1 KR1020177021593A KR20177021593A KR101825905B1 KR 101825905 B1 KR101825905 B1 KR 101825905B1 KR 1020177021593 A KR1020177021593 A KR 1020177021593A KR 20177021593 A KR20177021593 A KR 20177021593A KR 101825905 B1 KR101825905 B1 KR 101825905B1
Authority
KR
South Korea
Prior art keywords
data
storage
request
data object
job
Prior art date
Application number
KR1020177021593A
Other languages
English (en)
Other versions
KR20170092712A (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
Priority claimed from US13/570,151 external-priority patent/US8805793B2/en
Priority claimed from US13/570,088 external-priority patent/US9767098B2/en
Priority claimed from US13/569,591 external-priority patent/US9354683B2/en
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20170092712A publication Critical patent/KR20170092712A/ko
Application granted granted Critical
Publication of KR101825905B1 publication Critical patent/KR101825905B1/ko

Links

Images

Classifications

    • G06F17/30067
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F17/30073
    • G06F17/301
    • G06F17/30153
    • G06F17/30221
    • G06F17/30442
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명의 실시예는, 다른 것 중에서 특히, 수신된 및/또는 저장된 데이터 페이로드의 무결성을 검증하는 것에 관한 것이다. 일부 예에서, 저장 서비스는 제 1 동작에 적어도 부분적으로 기초하여 데이터 객체를 제 1 파티션들로 제 1 파티셔닝을 수행한다. 상기 저장 서비스는 확인 알고리즘을 사용하여 제 1 확인 값을 생성하기 위해 상기 데이터 객체를 확인한다. 일부 예에서, 상기 저장 서비스는 제 2 동작에 적어도 부분적으로 기초하여 상기 데이터 객체를 제 2 파티션들로 제 2 파티셔닝을 추가적으로 수행한다. 상기 제 2 파티셔들은 상기 제 1 파티션들과 상이하다. 추가적으로, 아카이벌 데이터 저장 서비스는 제 2 확인 값을 생성하기 위해 상기 확인 알고리즘을 이용하여 상기 데이터 객체를 확인한다. 또한, 저장 서비스는 상기 제 2 확인 값이 상기 제 1 확인 값과 동일한지 여부를 결정한다.

Description

아카이벌 데이터 저장 시스템{ARCHIVAL DATA STORAGE SYSTEM}
관련 출원에 대한 상호 참조
본 출원은, 미국 특허 출원 제13/569,591호(발명의 명칭: "DATA STORAGE POWER MANAGEMENT", 출원일: 2013년 8월 8일, 대리인 관리 번호 90204-841816(054900US)); 미국 특허 출원 제13/570,151호(발명의 명칭: "DATA STORAGE INTEGRITY VALIDATION", 출원일: 2013년 8월 8일, 대리인 관리 번호 90204-841810(054600US)) 및 미국 출원 제13/570,088호(발명의 명칭: "ARCHIVAL DATA STORAGE SYSTEM", 출원일: 2013년 8월 8일, 대리인 관리 번호 90204-841806 (054000US))의 우선권과 이들의 유익을 주장한다. 본 출원은 공동 계류 중인 미국 특허 출원 제13/569,984호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "LOG-BASED DATA STORAGE ON SEQUENTIALLY WRITTEN MEDIA", 대리인 관리 번호 90204-841804(054800US)), 공동 계류 중인 미국 특허 출원 제13/570,057호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "DATA STORAGE MANAGEMENT FOR SEQUENTIALLY WRITTEN MEDIA", 대리인 관리 번호 90204-841817(055300US)), 공동 계류 중인 미국 특허 출원 제13/570,005호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "DATA WRITE CACHING FOR SEQUENTIALLY WRITTEN MEDIA", 대리인 관리 번호 90204-841812(055000US)), 공동 계류 중인 미국 특허 출원 제13/570,030호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "PROGRAMMABLE CHECKSUM CALCULATIONS ON DATA STORAGE DEVICES", 대리인 관리 번호 90204-841813(055200US)), 공동 계류 중인 미국 특허 출원 제13/569,994호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "ARCHIVAL DATA IDENTIFICATION", 대리인 관리 번호 90204-841807(054300US)), 공동 계류 중인 미국 특허 출원 제13/570,029호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "ARCHIVAL DATA ORGANIZATION AND MANAGEMENT", 대리인 관리 번호 90204-841808(054400US)), 공동 계류 중인 미국 특허 출원 제13/570,092호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "ARCHIVAL DATA FLOW MANAGEMENT", 대리인 관리 번호 90204-841809(054500US)), 공동 계류 중인 미국 특허 출원 제13/569,665호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "DATA STORAGE INVENTORY INDEXING", 대리인 관리 번호 90204-841811(054700US)), 공동 계류 중인 미국 특허 출원 제13/569,714호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "DATA STORAGE SPACE MANAGEMENT", 대리인 관리 번호 90204-846202(056100US)), 공동 계류 중인 미국 특허 출원 제13/570,074호(출원일: 상기 출원과 동일자에 출원, 발명의 명칭: "DATA STORAGE APPLICATION PROGRAMMING INTERFACE", 대리인 관리 번호 90204-846378(056200US))의 전체 내용을 모든 목적을 위하여 본 명세서에 포함한다.
정보의 디지털화의 증가로, 내구적이고 신뢰성 있는 아카이벌 데이터 저장 서비스(archival data storage service)의 요구가 또한 증가하고 있다. 아카이벌 데이터는 정부, 사업체, 도서관 등에서 유지되는 아카이브 레코드, 백업 파일, 매체 파일 등을 포함할 수 있다. 아카이벌 데이터 저장은 일부 문제를 야기하였다. 예를 들어, 잠재적으로 대량의 저장 데이터는 많은 종래의 기술을 사용하여 비용이 엄청나게 비싸게 될 수 있다. 또한, 아카이벌 데이터를 저장하는 매체의 내구성과 신뢰성이 상대적으로 높은 것이 종종 요구되는데, 이는 데이터를 저장하는데 필요한 자원의 양을 더 증가시켜서 비용을 증가시킨다. 자기 테이프와 같은 종래의 기술은 전통적으로 낮은 비용으로 인해 데이터 백업 시스템에 사용되었다. 그러나, 테이프-기반 및 다른 저장 시스템은 종종 데이터 저장 시스템의 보안, 신뢰성 및 확장성(scalability)을 개선시키는 데이터 압축, 에러 정정 등과 같은 진보된 저장 기술을 완전히 이용하지 못하고 있다.
본 발명의 배경이 되는 기술은 AWS Import/Export Developer Guide(API Version 2010-06-03)에 개시되어 있다.
본 발명에 따른 각종 실시예가 도면을 참조하여 설명된다.
도 1은 적어도 하나의 실시예에 따라 고객과 아카이벌 데이터 저장 서비스 사이에 예시적인 일련의 통신을 도시한 도면;
도 2는 적어도 하나의 실시예에 따라 아카이벌 데이터 저장 서비스를 구현할 수 있는 예시적인 환경을 도시한 도면;
도 3은 적어도 일 실시예에 따라 아카이벌 데이터 저장 시스템의 컴포넌트(component)들을 연결할 수 있는 상호 연결 네트워크를 도시한 도면;
도 4는 적어도 하나의 실시예에 따라 아카이벌 데이터 저장 시스템의 컴포넌트들을 연결할 수 있는 상호 연결 네트워크를 도시한 도면;
도 5는 적어도 하나의 실시예에 따라 데이터를 저장하는 예시적인 공정을 도시한 도면;
도 6은 적어도 하나의 실시예에 따라 데이터를 검색하는 예시적인 공정을 도시한 도면;
도 7은 적어도 하나의 실시예에 따라 데이터를 삭제하는 예시적인 공정을 도시한 도면;
도 8은 적어도 하나의 예에 따라 본 명세서에 설명된 데이터 무결성을 검증하는 구현예를 설명하는 예시적인 흐름을 도시한 도면;
도 9 내지 도 10은 적어도 일부 예에 따라 본 명세서에 설명된 데이터 무결성을 검증하는 적어도 일부 특징을 설명하는 블록도;
도 11 내지 도 13은 적어도 일부 예에 따라 본 명세서에 설명된 데이터 무결성을 검증하는 적어도 일부 특징을 구현하는 하나 이상의 공정의 예시적인 흐름도;
도 14는 하드 드라이브의 동작을 관리하도록 구성된 아카이벌 데이터 저장 시스템을 포함하는 데이터 저장 전력을 관리하는 예시적인 아키텍처를 도시한 도면;
도 15는 하드 드라이브의 동작을 관리하도록 구성된 아카이벌 데이터 저장 시스템을 포함하는 데이터 저장 전력을 관리하는 추가적인 예시적인 아키텍처를 도시한 도면;
도 16 내지 도 18은 적어도 일부 예에 따라 본 명세서에 설명된 데이터 저장 드라이브 전력 관리의 적어도 일부 특징을 구현하는 공정의 예시적인 흐름도;
도 19는 각종 실시예를 구현할 수 있는 환경을 도시한 도면.
이하 상세한 설명에는 각종 실시예들이 설명된다. 설명을 위하여 특정 구성과 상세를 본 실시예의 철저한 이해를 제공하기 위하여 제시한다. 그러나, 이 기술 분야에 통상의 지식을 가진 자라면 이 특정 상세 없이 본 실시예를 실시할 수 있다는 것을 이해할 수 있을 것이다. 나아가, 잘 알려진 특징은 설명되는 실시예를 불명확하게 하지 않게 하기 위하여 생략되거나 단순화될 수 있다.
본 명세서에 설명되고 제안된 기술은 비용-효율적이고, 신뢰성 있으며 확장성 있는 아카이벌 데이터 저장 서비스를 제공하는 방법 및 시스템을 포함한다. 일 실시예에서, 아카이벌 데이터 저장 시스템을 통해 고객은 프로그램 사용자-인터페이스를 사용하여 메타데이터 및 구성 동작을 수행함은 물론 아카이벌 데이터 객체를 저장, 검색 및 삭제할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 서비스는 서비스의 사용자(인적 사용자 또는 자동화된 사용자) 관점으로부터 데이터 저장 및 삭제 동작이 동기적인 방식으로 처리되는 것으로 보이는 반면, 데이터 검색 및 특정 메타데이터 동작이 완료하는데 더 긴 시간이 드는 것으로 보이도록 동작한다. 일 실시예에서, 고객이 데이터 객체가 아카이벌 데이터 저장 시스템에 저장될 것을 요청할 때, 시스템은 고객 요청에 응답하여 데이터 객체 식별자를 고객에 제공한다. 데이터 객체 식별자를 후속 요청에 사용하여 저장된 데이터 객체를 검색하거나 삭제하거나 참조할 수 있다. 일부 실시예에서, 데이터 객체는 본 명세서에 설명된 아카이벌 데이터 저장소에 바로 저장된다. 다른 실시예에서, 데이터 객체는 임시 데이터 저장소에 저장된다. 본 명세서에 사용된 바와 같이, 임시 데이터 저장소는, 본 명세서에 설명된 아카이벌 데이터 저장소에 저장되기 전에 데이터 객체를 저장하거나 또는 아카이벌 데이터 저장소로부터 검색된 데이터 객체를 저장하는데 사용되는 데이터 저장소를 말하는 것으로 임시 또는 준비(staging) 데이터 저장소와 상호교환가능하게 사용된다. 임시 데이터 저장소는 휘발성 또는 비-휘발성(내구성) 저장소를 제공할 수 있다. 대부분의 실시예에서, 데이터를 지속적으로 저장하는데 잠재적으로 사용가능하지만, 임시 데이터 저장소는 아카이벌 데이터 저장 시스템보다 더 짧은 시간 기간 동안 데이터를 저장하도록 의도되고, 본 명세서에 설명된 데이터 아카이벌 저장 시스템보다 덜 비용 효율적일 수 있다. 데이터가 임시 데이터 저장소에 저장된 경우, 데이터 저장 작업(data storage job)은 데이터 객체를 아카이벌 데이터 저장 시스템에 최종적으로 저장하도록 생성될 수 있다. 데이터 저장 작업의 적어도 일부는 데이터 객체 식별자가 고객에 제공된 후 처리될 수 있다. 본 명세서에 사용된 바와 같이, "작업(job)"은 요청이 처리되거나 또는 응답이 제공된 후 수행될 수 있는 고객 요청에 대응하는 데이터 관련된 활동을 말한다.
일 실시예에서, 고객이 데이터 객체가 아카이벌 데이터 저장 시스템으로부터 검색될 것을 요청하면, 시스템은 고객 요청과 연관된 데이터 검색 작업을 생성하고 작업 식별자를 고객에 제공한다. 일 실시예에서, 요청은 전술한 데이터 객체가 이전에 저장될 때 시스템에 의해 발행된 것과 같이 검색될 데이터 객체에 대한 데이터 객체 식별자를 지정한다. 작업 식별자를 제공한 후에, 시스템은 배취 처리 기술(batch processing technique)의 효율과 다른 장점으로부터 이익을 얻기 위하여 시스템에 다른 작업과 함께 데이터 검색 작업을 처리할 수 있다. 고객은 시스템으로부터 통지를 수신하는 것, 작업 식별자 등을 시스템에 질문(query)하는 것, 및 작업이 완료되면 지정된 임시 데이터 저장소로부터 검색된 데이터를 다운로드하는 것에 의해 작업의 상태를 학습할 수 있다. 일 실시예에서, 특정 메타데이터 동작은 유사한 방식으로 처리된다.
일 실시예에서, 고객이 데이터 객체가 아카이벌 데이터 저장 시스템으로부터 삭제될 것을 요청하면, 시스템은 삭제의 수신확인을 고객에 제공한다. 일부 실시예에서, 데이터 객체는 바로 삭제된다. 다른 실시예에서, 시스템은 고객 요청과 연관된 데이터 삭제 작업을 생성하고, 수신확인을 제공한 후 아마도 수일 또는 심지어 더 긴 기간 후에 삭제의 수신확인을 제공한 후 데이터 삭제 작업을 처리한다. 일부 실시예에서, 시스템은 고객이 데이터 객체를 삭제, 실행 취소 또는 복구하는 유예 기간을 허용한다.
일 실시예에서, 아카이벌 데이터 저장 시스템은 고객 요청을 처리하고, 인증, 허가 허가, 사용 계측(usage metering), 어카운팅(accounting) 및 빌링(billing) 등과 같은 기능을 수행하는 프런트 엔드 서브시스템(front end subsystem)을 포함한다. 추가적으로, 프런트 엔드 서브시스템은 아카이벌 데이터 저장 시스템으로 및 이 저장 시스템으로부터 벌크 데이터 전송(bulk data transfer)을 더 처리할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템은 페이로드 데이터를 (데이터 저장을 위해) 입력되거나 (데이터 검색을 위해) 출력되는 임시 내구성 저장 또는 준비 영역을 제공하는 직접 I/O를 위한 제어 플랜을 포함한다. 추가적으로, 직접 I/O를 위한 제어 플랜은 고객 요청과 연관된 작업 실행을 생성하고, 제출하고 모니터링하는 서비스를 제공할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템은 다른 것 중에서 특히 아카이벌 데이터 저장 시스템에 입력되는 평균 부하로 피크(peak)를 감쇠(dampen)시키는 큐-기반 부하 레벨링 서비스((queue-based load leveling servie)를 제공하는 공통 제어 플랜(common control plane)을 포함한다. 일 실시예에서, 공통 제어 플랜은 작업 플래닝 최적화(job planning optimization), 체크 포인트(check pointing), 복구 등을 수행하는 데이터 플랜(data plane)(후술됨)의 서비스에 의해 사용될 수 있는 작업을 실행할 내구성이고 높은-효율의 임시 저장소를 더 제공한다.
일 실시예에서, 아카이벌 데이터 저장 시스템은 장기간(long-term) 아카이벌 데이터 저장, 검색 및 삭제, 데이터 관리 및 배치, 반-엔트로피(anti-entropy) 동작 등과 관련된 서비스를 제공하는 데이터 플랜을 포함한다. 일 실시예에서, 데이터 플랜은 저장 디바이스(예를 들어, 하드 디스크 드라이브), 저장 노드, 서버 등을 포함하는 복수의 저장 개체를 포함한다. 각종 실시예에서, 저장 개체는 높은 저장 용량 및 낮은 동작 비용을 제공하도록 설계된다. 예를 들어, 데이터 플랜은 증가된 하드 드라이브 용량을 제공하는 기와식 자기 레코드(Shingled Magnetic Recording: SMR) 기술을 갖는 하드 드라이브를 포함할 수 있다. 또 다른 예로서, 전력 관리 스케줄은 하드 드라이브 중에서 주어진 시간에 활성화하는 하드 드라이브를 제어하여 하드웨어 디바이스와 연관된 전력 및 냉각 비용을 보존하는데 사용될 수 있다. 추가적으로, 데이터 플랜은 엔트로피 효과(entropic effect)(예를 들어, 하드웨어 고장, 데이터 손실)를 검출하고 반-엔트로피 루틴을 개시하는 반-엔트로피 동작을 더 제공할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템은, 재고 및 어카운팅 목적, 고객 메타데이터 문의(inquiry), 반-엔트로피 처리 등을 위한 시스템에 저장된 데이터 객체에 관한 정보를 제공하는 메타데이터 플랜을 포함한다. 특히, 메타데이터 플랜은 작업 완료 레코드에 기초하여 한랭 지수(cold index)(즉, 덜 자주 업데이트되는 지수)를 생성할 수 있다. 각종 실시예에서, 메타데이터 플랜 서비스는 배취 처리와 같은 기술을 사용하여 최소 비용 오버헤드를 부과하도록 설계된다.
각종 실시예에서, 본 명세서에 설명된 아카이벌 데이터 저장 시스템은 효율적이고 확장성 있도록 구현된다. 예를 들어, 일 실시예에서, 배취 처리 및 요청 융합(coalescing)이 여러 단계(예를 들어, 프런트 엔드 요청 처리, 제어 플랜 작업 요청 처리, 데이터 플랜 데이터 요청 처리)에서 사용하여 효율을 개선시킨다. 또 다른 예로서, 일 실시예에서, 작업, 요청 등과 같은 메타데이터를 처리하는 동작은 다수의 서비스 인스턴스(instance of service)에 의하여 파티션(partition)의 병렬 처리를 촉진하도록 파티션된다.
일 실시예에서, 아카이벌 데이터 저장 시스템에 저장된 데이터 요소(예를 들어, 후술하는 데이터 성분, 볼륨)는 글로벌 지수 데이터 구조에 대한 필요를 회피하기 위하여 자체 설명적(self-describing)이다. 예를 들어, 일 실시예에서, 시스템에 저장된 데이터 객체는 저장 위치 정보를 인코딩하는 데이터 객체 식별자에 의해 어드레스될 수 있다. 또 다른 예로서, 일 실시예에서, 볼륨은 데이터 객체 중에서 볼륨 및 저장 노드에 저장된 데이터 객체에 관한 정보를 저장할 수 있고 이러한 볼륨을 저장하는 디바이스는 시스템에 저장된 데이터의 글로벌 관점을 제공하기 위해 재고 및 하드웨어 정보를 집합적으로 리포트할 수 있다. 이러한 실시예에서, 글로벌 관점은 단지 효율을 위해 제공된 것일 뿐 시스템에 저장된 데이터를 위치를 찾는데 요구되지 않는다.
각종 실시예에서, 본 명세서에 설명된 아카이벌 데이터 저장 시스템은 데이터 신뢰성 및 내구성을 개선시키도록 구현된다. 예를 들어, 일 실시예에서, 데이터 객체는 복수의 데이터 성분으로 리던던트하게 인코딩되고, 상이한 데이터 저장 개체에 걸쳐 저장되어 결함 공차(fault tolerance)를 제공한다. 또 다른 예로서, 일 실시예에서, 데이터 요소는 다수의 무결성 체크 레벨을 구비한다. 일 실시예에서, 부모/자녀 관계는 전체 참조 무결성(full referential integrity)을 보장하기 위해 항상 추가적인 정보를 구비한다. 예를 들어, 일 실시예에서, 벌크 데이터 송신 및 저장 경로는 개시자(initiator)가 송신 전에 데이터에 다이제스트(digest)를 미리-계산하고 이후 데이터를 갖는 다이제스트를 수신기에 공급하게 하는 것에 의해 보호된다. 데이터 송신의 수신기는 재계산하고 비교하고 이 재계산된 다이제스트를 포함하는 수신확인을 송신기에 제공하는 일을 담당한다. 이러한 데이터 무결성 체크는, 예를 들어, 도 2와 관련하여 후술하는 프런트 엔드 서비스, 임시 데이터 저장 서비스, 데이터 플랜 저장 개체 등에 의해 구현될 수 있다.
본 발명의 실시예는, 다른 것 중에서 특히, 저장하도록 의도된 데이터 페이로드 또는 데이터 페이로드의 일부의 무결성을 검증(validate)하거나 확인(verify)하는 것에 관한 것이다. 일부 예에서, 아카이벌 데이터 저장 서비스는 종종 상대적으로 긴 시간 기간 동안 변하는 논리적 데이터 컨테이너(logical data container) 또는 다른 아카이벌 저장 디바이스에, 데이터를, 일부 경우에 다량의 데이터를 저장하는 요청을 수신하도록 구성될 수 있다. 일부 예에서, 아카이벌 데이터 저장 서비스는 많은 상이한 저장 디바이스를 동작시키거나 사용할 수 있다. 예를 들어, 아카이벌 저장 서비스는, 동작 시, 스핀 자기 매체를 사용하는 하나 이상의 디스크 드라이브를 포함할 수 있다. 추가적으로, 아카이벌 데이터 저장 서비스는 (예를 들어, 잠재적으로 상이한 우편 번호(postal code)와 연관된) 하나 이상의 지리적 위치에 위치된 하나 이상의 랙(rack)을 포함할 수 있다. 각 랙은 디스크 드라이브 등을 포함하나 이들로 제한되지 않는 하나 이상의 또는 심지어 수 백 개의 하드 드라이브를 더 포함할 수 있다.
일부 측면에서, 아카이벌 데이터 저장 서비스는 웹 서비스, 원격 프로그램 실행 서비스 또는 다른 네트워크-기반 데이터 관리 서비스를 포함하나 이들로 제한되지 않는 서비스를 통해 하나 이상의 컴퓨팅 자원을 저장하거나 액세스하고/하거나 배치할 수 있다. 예를 들어, 사용자, 클라이언트 개체, 컴퓨팅 자원 또는 다른 컴퓨팅 디바이스는 액세스 메커니즘이 사용자 또는 컴퓨팅 디바이스에 구현되고/되거나 제공될 수 있도록 아카이벌 데이터 저장 서비스를 통해, 데이터 저장 및/또는 관리에 액세스될 수 있다. 일부 예에서, 컴퓨팅 자원 서비스, 예를 들어, 아카이벌 데이터 저장 서비스에 의해 제공된 서비스는, 하나 이상의 컴퓨팅 자원이 원하는 대로 확장성 있고/있거나 확장가능할 수 있는 사용자 인터페이스(UI), 애플리케이션 프로그래밍 인터페이스(API) 및/또는 다른 인터페이스를 통해 하나 이상의 네트워크를 통해 액세스 가능한 하나 이상의 컴퓨팅 자원을 포함할 수 있다.
일부 예에서, 아카이벌 데이터 저장 서비스는 아카이벌 데이터 저장 서비스와 연관된 아카이벌 데이터 저장 서비스 또는 다른 웹 서비스를 사용하는 제3자 서비스를 포함하나 이들로 제한되지 않는 사용자 또는 클라이언트 개체가 잠재적으로 길고 지속적인 저장을 위해 데이터를 업로드하게 할 수 있다. 문맥에 의해 명시적으로 또는 명확히 모순되지 않는 한, "사용자"라는 용어는 본 명세서에서 아카이벌 데이터 저장 서비스를 사용하는 임의의 개체를 기술하는데 사용된다. 아카이벌 데이터 저장 서비스는 아카이브된 데이터의 무결성을 보장하고/하거나 아카이브된 데이터의 무결성을 보장하기를 더 원할 수 있다. 이들 목표를 달성하기 위하여, 일부 예에서, 아카이벌 데이터 저장 서비스는 업로드되면 데이터를 식별하는 데이터 객체 식별자를 제공할 수 있다. 일부 경우에, 데이터 객체 식별자는 일부 확장된 시간 기간 후에도 아카이브된 데이터를 검증하기 위해 상위 레벨 트리 다이제스트(tree digest)를 더 포함할 수 있다. 추가적으로, 데이터 객체 식별자는 그 무결성이 더 검증될 수 있는 방식으로 더 구성될 수 있다.
아카이벌 데이터 저장 서비스는 데이터가 파트(part), 부분(portion) 또는 다른 구별된 그룹으로 분할되도록 저장되는 데이터에 동작을 수행하도록 구성될 수 있다. 파트로 분리되면, 아카이벌 데이터 저장 서비스는 다이제스트(해쉬 값, 해쉬 코드, 체크썸 등이라고도 지칭됨)를 생성하는 해쉬 함수 또는 다른 암호 또는 다른 방법을 포함하나 이들로 제한되지 않는 파트에 하나 이상의 암호화 기능 및/또는 알고리즘을 수행할 수 있다. 일부 예에서, 데이터는 저장되는 데이터가 데이터 수신된 데이터와 일치하는 것을 아카이벌 저장 서비스가 보장하도록 검증될 수 있다. 이런 방식으로, 데이터 무결성이 검증될 수 있다. 추가적으로, 데이터의 송신기는 데이터 청크 사이즈(data chunk size)(즉, 페이로드의 파트의 사이즈)를 독립적으로 결정할 수 있고, 이 정보를 유지하거나 지속할 것이 요청되지 않을 수 있다. 예를 들어, 사용자 또는 클라이언트 개체는 2 메가바이트(megabyte: MB) 부분(청크)으로 1 기가바이트(gigabyte: GB) 파일을 업로드할 것을 요청할 수 있다. 2MB 청크를 사용한 것을 저장하거나 지속함이 없이, 데이터 페이로드가 여전히 검증될 수 있다. 즉, 청크에 대한 하나 이상의 다이제스트, 체크썸, 해쉬 코드 등과, 페이로드의 적어도 다이제스트를 생성하는 것에 적어도 부분적으로 기초하여(일부 예에서 다이제스트의 조합에 적어도 부분적으로 기초하여), 데이터는 검증될 능력을 상실함이 없이 상이한 사이즈의 청크로 차후에 파티션될 수 있다.
일부 측면에서, 이것은 데이터를 파티션하고/하거나 해쉬하는 방식을 지시하는 사용자 또는 클라이언트 개체에 명령 또는 알고리즘을 제공하는 것에 의해 달성될 수 있다. 추가적으로, 일부 경우에, 아카이벌 저장 서비스는 사용자로 하여금 청크 단위로 데이터를 적절히 업로드하고 요청된 동작 순서를 제공하고/하거나 적절한 체크썸 정보를 포함할 수 있게 하는 하나 이상의 API 방법 호출(call) 및/또는 소프트웨어 개발 키트(software development kit: SDK)를 노출시키거나 제공할 수 있다. 예를 들어, 사용자는 데이터를 업로드하는데 적어도 1MB의 청크 사이즈 또는 일부 다른 미리 한정된 사이즈를 선택하도록 요청될 수 있다. 본 명세서에 사용된 바와 같이, 사용자 또는 클라이언트 개체에 의해 업로드되고/되거나 아카이벌 데이터 저장 서비스에 의해 저장된 데이터는 페이로드로 지칭될 수 있다. 추가적으로, 사용자는 페이로드가 1MB의 2의 멱수를 포함하는 사이즈(예를 들어, 1MB, 2MB, 4MB, 8MB, 16MB 등)로 파티션되는 것을 아카이벌 데이터 저장 서비스에 명령하거나 선택할 수 있다. 다른 예에서, 페이로드는 미리 한정된 사이즈 (예를 들어, 1MB)의 다른 배수를 포함하는 사이즈로 파티션될 수 있다. 다른 배수는 데이터를 나타내는데 사용되는 트리의 자녀(children)의 정도에 적어도 부분적으로 기초할 수 있다. 예를 들어, 이진 트리(binary tree)가 사용된 경우, 정수 배수는 2의 정수 멱수를 포함할 수 있고, 삼진 트리가 사용된 경우, 정수 배수는 3의 정수 멱수일 수 있고, 4차 트리(즉, 각 노드는 4자녀를 구비할 수 있음)가 사용된 경우, 정수 배수는 4의 정수 멱수를 포함할 수 있고, 이와 같이 계속된다. 사용자는 하나 이상의 해쉬 트리(hash tree)(예를 들어, 페이로드가 파티션될 때 파트당 하나의 해쉬 트리) 및/또는 각 파티션에 대해 하나 이상의 해쉬 값을 생성하는 알고리즘을 따를 수 있다. 추가적으로, 사용자는 선택된 파티션 사이즈와는 독립적으로 각 1MB 청크에 대해 해쉬 값(또는 다이제스트)을 생성할 수 있다. 일부 예에서, 파티션의 1MB 청크에 대응하는 이들 다이제스트는 파티션에 해쉬 트리에 포함될 수 있다. 나아가, 일부 예에서, 각 파티션의 해쉬 트리의 루트 노드(root node)는 파티션의 각 1MB 서브-파트에 대한 다이제스트와 함께 아카이벌 데이터 저장 서비스에 제공될 수 있다. 이런 방식으로, 각 서브-파트는 1MB 다이제스트에 적어도 부분적으로 기초하여 아카이벌 데이터 저장 서비스에 의해 검증될 수 있고, 각 파티션은 각 파트에 대한 루트 다이제스트에 적어도 부분적으로 기초하여 아카이벌 데이터 저장 서비스에 의해 검증될 수 있다. 추가적으로, 파트에 각 루트 해쉬의 해쉬와 연관된 최종 루트 해쉬는 수신된 최종 루트 해쉬 및 아카이벌 데이터 저장 서비스에 의해 결정된 상위 레벨 해쉬 값을 비교한 것에 적어도 부분적으로 기초하여 아카이벌 데이터 저장 서비스에 의해 사용될 수 있다.
적어도 하나의 예에서, 해쉬 트리 또는 다른 계층적인 데이터 구조(예를 들어, B-트리를 포함하나 이들로 제한되지 않는 다른 유형의 이진 트리 및/또는 어레이, 레코드 등을 포함하나 이들로 제한되지 않는 다른 유형의 데이터 구조)를 생성하는 것은 다이제스트를 연쇄(concatenating)하는 동작, 및 연쇄된 다이제스트에 해쉬 함수를 실행하는 동작을 포함할 수 있다. 예를 들어, 이진 해쉬 트리에서, 루트 노드는 하나의 해쉬 값 각각으로 표현된 두 자녀를 구비할 수 있다. 일부 경우에, 루트 해쉬 값을 생성하는 것은 2개의 자녀 해쉬 값을 연쇄하여 새로운 데이터 부분을 형성하고 이 새로운 데이터 부분에 해쉬 함수를 더 실행하는 것에 적어도 부분적으로 기초할 수 있다. 최종 해쉬 값은 루트 해쉬를 나타낼 수 있다. 그리하여, 페이로드의 각 파티션은 자체 루트 해쉬를 구비할 수 있으나, 그 루트 해쉬는 페이로드에 대한 상위 레벨 해쉬를 계산하는데 사용될 수 있다. 일부 예에서, 사용자에 의해 선택된 파티션 사이즈를 상기하거나 지속함이 없이 페이로드 및/또는 페이로드의 일부를 검증하는 것이 더 가능할 수 있다.
본 발명의 실시예는, 다른 것 중에서 특히, 저장 서비스의 하나 이상의 저장 디바이스를 인에이블하거나 동작시키거나 이 저장 디바이스에 전력을 제공하거나 이 저장 디바이스를 제어하는 하나 이상의 스케줄을 결정하고/하거나 구현하는 것에 관한 것이다. 일부 예에서, 저장 서비스는 많은 상이한 컴퓨팅 디바이스 및/또는 저장 디바이스를 동작시키거나 사용하는 아카이벌 데이터 저장 서비스일 수 있다. 예를 들어, 아카이벌 저장 서비스는, 동작 시, 스핀 자기 매체를 사용하는 하나 이상의 디스크 드라이브를 포함할 수 있다. 추가적으로 아카이벌 데이터 저장 서비스는 (예를 들어, 잠재적으로 상이한 우편 번호와 연관된) 하나 이상의 지리적 위치에 위치된 하나 이상의 랙을 포함할 수 있다. 각 랙은 디스크 드라이브 등을 포함하나 이들로 제한되지 않는 하나 이상의 또는 심지어 수 백 개의 하드 드라이브를 더 포함할 수 있다. 추가적으로, 하드 드라이브의 매체를 회전시키거나 드라이브 제어기 및/또는 프로세서 등을 동작시키는 것은 일반적으로 상대적은 많은 전력을 소비하고 값비쌀 수 있다.
일부 측면에서, 아카이벌 데이터 저장 서비스는 하드 드라이브 전력 소비를 변화 및/또는 관리하는 것에 의해 저장 디바이스와 연관된 전력 및/또는 냉각 비용을 최소화하도록 구성될 수 있다. 단지 예로서, 아카이벌 데이터 저장 서비스는 주어진 시간에 능동적으로 회전하는 매체를 구비할 수 있는 하드 드라이브의 수를 제어하도록 구성될 수 있다. 추가적으로, 일부 예에서, 아카이벌 데이터 저장 서비스는 드라이브를 셧온(shut on) 또는 셧오프(shut off)하여 전력을 절감하는 대신 회전 속도를 변화시키도록 구성될 수 있다. 예를 들어, 일부 드라이브는 감속될 수 있고, 회전 스케줄은 드라이브 중에서 감속시킬 드라이브와, 정상 속도로 동작시킬 드라이브를 구동할 수 있다. 추가적으로, 일부 경우에, 하드 드라이브와 같은 데이터 저장 디바이스를 제어하도록 구성될 수 있는 데이터 저장 노드는, 하드 드라이브 중에서 활성인 하드 드라이브와, 비활성인 하드 드라이브를 결정하고/하거나 제어할 수 있다. 하드 드라이브는 그 매체를 회전시키거나, 전력 업(power up)하고/하거나 전력 다운(power down)하는 경우 활성으로 고려될 수 있다. 예를 들어, 스핀 하드 드라이브는 디스크가 회전하는 것 및 헤드가 드라이브의 위치를 자화시켜 회전시키는 동안 드라이브로부터 데이터를 기록하거나 판독하거나 삭제할 수 있는 것을 포함할 수 있다. 그러나, 다른 예에서, 드라이브는 활성화되었을 수 있으나; 이 드라이브는 아직 최대로 회전하지 않을 수 있다. 이 예에서, 드라이브는 전력 업될 수 있다. 대안적으로, 드라이브가 활성화된 경우, 데이터 저장 노드 또는 다른 제어기는 드라이브를 비활성화할 수 있으나; 이 드라이브는 드라이브가 더 이상 회전하지 않기 전에 일부 시간을 소비할 수 있다. 이것은 전력 다운으로 고려될 수 있다. 그리하여, 드라이브가 동작하지만 활성이지 않는 시간이 있을 수 있다. 나아가, 일부 예에서, 데이터 저장 디바이스를 활성화하는 것은 전력을 현재 수신하고 있지 않는 디바이스에 전력을 제공하거나 전력을 수신하고 있으나 슬립 모드(sleep mode)에 있는 디바이스를 활성화시키는 것을 포함할 수 있다. 그리하여, 데이터 저장 디바이스는 오프, 온, 슬립, 전력 다운 또는 전력 업을 포함하나 이들로 제한하지 않는 많은 상태에 있을 수 있다.
일부 측면에서, 데이터 저장 노드는 회전 스케줄을 결정하거나, 회전 스케줄을 제공하고/하거나 저장 디바이스를 활성화 및 비활성화하도록 구성될 수 있다. 추가적으로, 저장 노드는 이 정보를 저장 노드 레지스트라(registrar), 큐 또는 다른 라이브러리(library)에 리포트하여 실행할 작업을 기록하거나 판독하거나 삭제하는 것을 하나 이상의 저장 노드 관리자에게 통지할 수 있다. 일반적으로 입력되는 기록 요청을 처리하고, 이 기록 요청을 어느 드라이브가 활성이든지 간에 이 드라이브에 배치할 만큼 충분한 용량이 있을 수 있다는 가정에 적어도 부분적으로 기초하여 임의의 시간에 기록 작업을 실행하는 것이 가능할 수 있다. 그러나, 일부 예에서, 특정 드라이브가 활성에 있을 때에 적어도 부분적으로 기초하여 저장 노드 관리자는 특정 드라이브에서 기록 작업을 실행하도록 요청하거나 명령될 수 있다. 이 경우에, 저장 노드 관리자는 제일 먼저 회전 스케줄을 요청하거나, 또는 작업을 실행하기 전에 저장 노드로부터 어느 드라이브가 활성인지에 대한 지시를 적어도 요청할 수 있다. 일부 개수의 드라이브가 활성이지 못할 수 있더라도 원하는 속도로 기록 요청을 처리할 만큼 충분히 활성인 하드 드라이브가 일반적으로 있을 수 있다는 가정에 적어도 부분적으로 기초하여 임의의 시간에 기록 작업을 실행하는 것이 더 가능할 수 있다.
적어도 하나의 예에서, 회전 스케줄은 동시에 활성인 드라이브의 퍼센트 또는 개수에 적어도 부분적으로 기초할 수 있다. 예를 들어, 아카이벌 저장 서비스는 드라이브의 미리 한정된 퍼센트만이 임의의 주어진 시간에 활성이어야 하는 것을 결정할 수 있다. 그리하여, 모든 다른 드라이브는 슬립 또는 다른 저전력 상태 모드에 있을 수 있는 반면, 미리 한정된 퍼센트는 활성일 수 있다. 추가적으로, 총 개수의 드라이브는 결정된 퍼센트에 적어도 부분적으로 기초하여 그룹으로 분할될 수 있다. 예를 들어, 비 제한적으로, 아카이벌 저장 서비스가 드라이브의 20%가 활성이어야 하는 것으로 결정하면, 제어될 드라이브의 세트는 5개의 그룹으로 분할될 수 있다. 이런 방식으로, 드라이브의 각 그룹이 활성일 때, 드라이브의 미리 한정된 20%는 활성일 것이다. 드라이브의 다른 80%는 슬립 또는 다른 저전력 모드에 있을 수 있다. 대안적으로, 임의의 다른 퍼센트를 사용하여 원하는 대로 대응하는 개수의 드라이브 그룹을 계산할 수 있다(예를 들어, 25%는 4개의 그룹을 만들 수 있고, 10%는 10개의 그룹을 만들 수 있고, 50%는 2개의 그룹을 만들 수 있다 등). 나아가, 일부 측면에서, 그룹들이 동일(equality)하지 않을 수 있는 퍼센트를 수용할 수 있도록 그룹은 반드시 동일하여야 하는 것은 아니다(예를 들어, 11%는 9개의 동일한 그룹과 하나의 더 작은 그룹을 만들 수 있다). 대안적으로, 퍼센트는 그룹들이 동일한 것을 수용하도록 라운드 업(round up) 또는 라운드 다운(round down)될 수 있다. 추가적으로, 일부 예에서, 1시간은 그룹의 최종 개수로 분할되어 각 그룹이 활성이어야 하는 길이를 결정할 수 있다. 예를 들어, 단지 예시적인 목적을 위하여 20%의 예를 사용하면, 각 그룹은 시간당 적어도 한번 활성인 각 그룹을 수용하도록 12분 동안 활성화되도록 스케줄링될 수 있다. 나아가, 전력 스파이크(apike) 또는 번아웃(burnout)을 회피하기 위하여, 일부 예에서, 그룹 내 드라이브는 순차적으로 전력 업되거나 또는 적어도 모두 동시에 전력 업되는 것은 아닐 수 있다. 대안적으로 또는 추가적으로, 활성인 그룹의 각 드라이브는 활성화될 그 다음 그룹의 드라이브가 순차적으로 전력 업되는 동안 순차적으로 전력 다운될 수 있다.
다른 예에서, 회전 스케줄은 퍼센트와는 달리 주어진 시간에 활성인 드라이브의 미리 한정된 개수에 적어도 부분적으로 기초할 수 있다. 추가적으로, 회전 스케줄은 드라이브의 이론적 또는 실제 어레이를 따라 일정 속도로 또는 간격으로 이동하는 슬라이딩 윈도우를 포함할 수 있다. 윈도우 내에 위치된 드라이브는 활성화될 수 있는 반면, 윈도우 외에 위치된 드라이브는 저전력 상태(오프 또는 비활성화된 것을 포함할 수 있음)에 있을 수 있다. 원하는 대로, 드라이브는 실제 위치에 적어도 부분적으로 기초하여 및/또는 일부 논리적 맵핑(logical mapping)에 적어도 부분적으로 기초하여 시간 라인에서 분류될 수 있다. 윈도우는 시간라인을 횡단하도록 구성될 수 있다. 대안적으로, 슬라이딩 윈도우 내 드라이브를 활성화하는 다른 예가 고려될 수 있다. 회전 스케줄은 피크 전력 소비 시간(예를 들어, 공익 기업(utility company)의 수수료(fee) 및/또는 예측값(estimate)에 적어도 부분적으로 기초하여), 고객 요구, 펜딩 작업(pending job) 등을 포함하지만 이들로 제한되지 않는 요구에 적어도 부분적으로 더 기초할 수 있다. 단지 예로서, 하나의 시나리오는 다수의 저장 노드 관리자로부터 펜딩 판독 요청에 적어도 부분적으로 기초하여 활성화될 드라이브를 스케줄링하는 것을 포함할 수 있다. 이 예에서, 저장 노드 레지스트라는 요구를 충족하기 위하여 회전되어야 되는 드라이브의 개수 또는 퍼센트를 선택하도록 구성될 수 있다. 저장 노드 레지스트라는 드라이브가 회전하도록 선택되면 드라이브가 회전을 위해 스케줄링된 저장 노드에 메시지를 더 송신할 수 있다. 대안적으로 또는 추가적으로, 저장 노드 관리자는 레지스트라가 회전하는 적절한 드라이브를 포함하면 저장 노드에 통지할 수 있다.
도 1은 적어도 하나의 실시예에 따라 고객(102)과 아카이벌 데이터 저장 시스템(104) 사이에 예시적인 일련의 통신을 도시한다. 예시적인 통신은, 예를 들어, 아카이벌 데이터 객체를 아카이벌 데이터 저장 시스템에 저장하고 이 이 시스템으로부터 검색하는데 사용될 수 있는 일련의 요청과 응답을 도시한다. 각종 실시예에서, 도시된 일련의 통신은 후술하는 도 2에 도시된 바와 같이 환경(200)에서 발생할 수 있다.
각종 실시예에서, 아카이벌 데이터 저장 시스템(104)은 고객과 같은 개체가 아카이벌 데이터 저장 시스템(104)과 통신하는 사용자 인터페이스를 제공할 수 있다. 각종 실시예에서, 이러한 사용자 인터페이스는 그래픽 사용자 인터페이스(graphical user inferface: GUI), 웹 기반 인터페이스, 프로그램 인터페이스, 예를 들어, 애플리케이션 프로그래밍 인터페이스(application programming interface: API) 및/또는 인터페이스 요소에 대응하는 원격 프로시저 호출(remote procedure call: RPC) 세트, 인터페이스 요소들이 통신 프로토콜의 메시지에 대응하는 메시징 인터페이스 및/또는 이들의 적절한 조합을 포함할 수 있다. 예를 들어, 고객은 사용자 인터페이스를 사용하여 데이터를 저장하거나 검색하거나 삭제함은 물론 메타데이터 정보를 획득하고, 여러 동작 파라미터 등을 구성할 수 있다. 각종 실시예에서, 아카이벌 데이터 저장 시스템(104)은 고객 요청을 처리하기 위해 아래 도 2에 설명된 바와 같이 프런트 엔드 서비스를 포함할 수 있다.
일 실시예에서, 고객 디바이스(102)(단순히 "고객"이라고 지칭됨)는, 예를 들어, 전술한 바와 같은 API를 사용하여 데이터를 저장하는 요청(106)을 개시한다. 저장 요청(106)은 아카이벌 파일과 같은 페이로드 데이터 및 페이로드 데이터의 사이즈와 다이제스트와 같은 메타데이터, 사용자 식별 정보(예를 들어, 고객 계좌 식별자), 논리적 저장 컨테이너의 식별자(도 2와 관련하여 설명된) 등을 포함할 수 있다. 일부 실시예에서, 다수의 저장 요청(106)은 대형 페이로드 데이터의 업로드를 요청하는데 사용될 수 있고, 여기서 다수의 저장 요청 각각은 페이로드 데이터의 일부를 포함할 수 있다. 다른 실시예에서, 저장 요청(106)은 업로드될 다수의 데이터 객체를 포함할 수 있다.
일 실시예에서, 저장 요청(106)을 수신할 때, 아카이벌 데이터 저장 시스템(104)은 데이터를 준비 저장소에 저장(108)할 수 있다. 일부 실시예에서, 페이로드 데이터만이 준비 저장소에 저장된다. 다른 실시예에서, 추가적인 데이터, 예를 들어, 데이터 객체 식별자는 페이로드 데이터와 함께 저장될 수 있다. 일 실시예에서, 준비 저장소에 저장된 데이터를 본 명세서에 설명된 바와 같이 아카이벌 데이터 저장소로 이동시키는 작업이 생성된다. 본 명세서에 사용된 바와 같이, "작업"은 요청이 수신된 시간과는 시간적으로 독립적으로 수행될 수 있는 고객 요청에 대응하는 데이터 관련된 활동을 말한다. 예를 들어, 작업은 데이터를 검색하고 저장하고 삭제하고, 메타데이터를 검색하는 것 등을 포함할 수 있다. 각종 실시예에서, 작업은, 예를 들어, 데이터 센터 등에 있는 특정 고객에 대한 모든 작업 중에서 고유한 것일 수 있는 작업 식별자에 의해 식별될 수 있다. 이러한 작업은 데이터 객체를 아카이벌 데이터 저장소에 저장(114)하도록 처리될 수 있다. 일 실시예에서, 이 작업은 다른 작업(예를 들어, 후술하는 다른 데이터 저장 작업 또는 검색 작업)과 관련하여 실행되어 시스템의 비용, 응답 시간, 효율, 동작 성능 및 다른 메트릭을 최적화할 수 있다. 예를 들어, 작업은 저장 위치별로 분류되거나, 융합되거나, 배취-처리되거나 또는 최적화되어 처리량을 개선시키고, 전력 소비 등을 감소시킬 수 있다. 또 다른 예로서, 작업은 (예를 들어, 고객, 시간 등으로) 파티션될 수 있고 각 파티션은 상이한 서비스 인스턴스에 의해 병렬로 처리될 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템(104)은 (데이터가 준비 저장소에 저장만 되었는지 여부에 상관없이) 데이터의 저장을 수신확인하는 응답(110)을 고객(102)에 송신한다. 따라서, 고객의 관점으로부터, 저장 요청이 동기적인 방식으로 처리된다. 일 실시예에서, 응답은 후속 고객 요청에 의해 사용되어 데이터를 검색하거나 삭제하거나 관리할 수 있는 데이터 객체 식별자를 포함한다. 일부 실시예에서, 고객(102)은 고객-측 데이터 저장소, 데이터 저장 서비스 등에 데이터 객체 식별자를 저장(112)할 수 있다. 예를 들어, 고객(102)은 데이터 객체 식별자를, 대응하는 사용자-친화적인 이름 또는 글로벌 고유한 식별자(global unique identifier: GUID)와 연관시키는 맵핑을 유지할 수 있다. 다른 실시예에서, 저장 요청은 검색 요청과 관련하여 후술하는 것과 유사한 방식으로 비동기적인 방식으로 처리되는 것으로 고객에 의해 인식될 수 있다.
일부 실시예에서, 데이터 객체 식별자는 저장된 데이터 객체, 페이로드 검증 정보, 예를 들어, 페이로드 데이터의 무결성을 검증하는데 사용될 수 있는 사이즈, 시간스탬프, 다이제스트 등, 메타데이터 검증 정보, 예를 들어, 예를 들어, 데이터 객체 식별자 그 자체와 같은 메타데이터의 무결성을 검증하는데 사용될 수 있는 에러-검출 코드, 요청된 액세스를 검증하는데 사용될 수 있는 정책 정보 등을 찾는데 사용될 수 있는 (예를 들어, 암호화를 통해) 저장 위치 정보를 인코딩할 수 있다. 다른 실시예에서, 데이터 객체 식별자는 암호화와 같은 임의의 인코딩 없이 상기 정보를 포함할 수 있다.
일 실시예에서, 고객(102)은, 예를 들어, 전술한 API를 사용하여 아카이벌 데이터 저장 시스템(104)에 저장된 데이터를 검색하는 요청(116)을 개시한다. 검색 요청(116)은 전술한, 응답(110)에 제공된 것과 같은, 검색될 데이터와 연관된 데이터 객체 식별자를 지정할 수 있다. 검색 요청(116)을 수신할 때, 일 실시예에서, 아카이벌 데이터 저장 시스템(104)은 본 명세서에 설명된 아카이벌 데이터 저장소로부터 데이터를 검색하는 검색 작업을 생성(118)한다. 시스템은 상기 저장 작업과 연관하여 설명된 것과 유사한 방식으로 이러한 검색 작업을 생성할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템(104)은 검색 작업을 위한 작업 식별자를 갖는 응답(120)을 제공한다. 따라서, 고객의 관점으로부터, 검색 요청이 비동기적인 방식으로 처리된다. 일부 실시예에서, 고객(102)은 고객-측 저장소에 작업 식별자를 저장(122)하고, 선택적으로 작업 식별자 질문을 사용하거나 또는 검색 작업의 상태에 대해 아카이벌 데이터 저장 시스템을 폴링(poll)할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템(104)은 비용을 최적화하기 위해 배취 처리와 같은 기술을 사용하여 다른 작업(예를 들어, 저장 작업, 검색 작업, 삭제 작업 등)과 관련하여 검색 작업을 처리(124)한다. 검색 작업의 처리 후에, 아카이벌 데이터 저장 시스템(104)은 전술한 저장 요청과 연관된 데이터를 저장하기 위해 준비 저장소와 유사한 준비 저장소에 검색된 데이터를 저장(126) 한다.
일 실시예에서, 아카이벌 데이터 저장 시스템(104)은 요청된 데이터를 예를 들어 준비 저장소에서 검색한 후, 통지(128)를 고객(102)에 제공한다. 이러한 통지는 고객에 의해 구성될 수 있고, 검색 요청과 연관된 작업 식별자, 데이터 객체 식별자, 다운로드 위치 경로, 고객의 신원 또는 구현되는 실시예에 따라 검색된 데이터를 다운로드하는데 사용된 임의의 다른 정보를 포함할 수 있다. 각종 실시예에서, 이러한 통지는 아카이벌 데이터 저장 시스템의 일부이거나 일부이지 않을 수 있는 통지 서비스에 의해 제공될 수 있다. 다른 실시예에서, 고객(102)은 작업의 상태에 관한 검색 작업 식별자로 아카이벌 데이터 저장 시스템에 질문하거나 폴링할 수 있다.
일 실시예에서, 검색 작업의 완료를 학습할 때, 고객(102)은 준비된 데이터를 다운로드하는 다운로드 요청(130)을 송신한다. 각종 실시예에서, 다운로드 요청(130)은 통지에 포함된 정보, 예를 들어, 작업 식별자, 데이터 객체 식별자 및 다른 식별 정보, 예를 들어, 구현된 실시예에서 준비된 데이터를 다운로드하는데 사용될 수 있는 고객 계좌 식별자 등을 제공할 수 있다. 다운로드 요청(130)에 응답하여, 아카이벌 데이터 저장 시스템(104)은 준비 저장소로부터 준비 데이터를 검색(132)할 수 있고, 응답(134)으로 검색된 데이터를 고객(102)에 제공할 수 있다.
도 2는 적어도 하나의 실시예에 따라 아카이벌 데이터 저장 시스템을 구현할 수 있는 예시적인 환경(200)을 도시한다. 하나 이상의 고객(202)은, 네트워크(204)를 통해, 아카이벌 데이터 저장 시스템(206)에 연결된다. 앞서 암시된 바와 같이, 문맥으로부터 명백하지 않는 한, "고객"이라는 용어는 본 명세서에 설명된 데이터 저장 서비스를 사용하는 고객 개체(예를 들어, 개인, 회사 또는 다른 조직)의 시스템(들)을 말한다. 이러한 시스템은 데이터센터, 메인프레임, 개별 컴퓨팅 디바이스, 분산 컴퓨팅 환경 및 고객-액세스 가능한 인스턴스 또는 아카이벌 데이터 저장 시스템과 통신할 수 있는 임의의 다른 시스템을 포함할 수 있다. 일부 실시예에서, 고객은 아카이벌 데이터 저장 시스템을 더 제공하는 컴퓨팅 자원 제공자에 의해 제공된 분배된 컴퓨팅 시스템의 기계 인스턴스(예를 들어, 직접 하드웨어 액세스로) 또는 가상 인스턴스를 말할 수 있다. 일부 실시예에서, 아카이벌 데이터 저장 시스템은 분배된 컴퓨팅 시스템과 일체일 수 있고, 분배된 컴퓨팅 시스템의 인스턴스, 가상 또는 기계를 포함하거나 이에 의해 구현될 수 있다. 각종 실시예에서, 네트워크(204)는 인터넷, 근거리 네트워크(local area network: "LAN"), 광역 네트워크(wide area network: "WAN"), 셀룰러 데이터 네트워크 및/또는 다른 데이터 네트워크를 포함할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템(206)은 각 태넌트(tenant) 또는 고객이 고객에 할당된 데이터 저장 공간에 데이터를 저장하거나 검색하거나 삭제하거나 관리할 수 있는 다중 태넌트 또는 다중-고객 환경을 제공한다. 일부 실시예에서, 아카이벌 데이터 저장 시스템(206)은 특정 서비스 또는 기능 세트를 각각 제공하는 다수의 서브시스템 또는 "플랜(plane)"을 포함한다. 예를 들어, 도 2에 도시된 바와 같이, 아카이벌 데이터 저장 시스템(206)은 프런트 엔드(208), 직접 I/O(210)를 위한 제어 플랜, 공통 제어 플랜(212), 데이터 플랜(214) 및 메타데이터 플랜(216)을 포함한다. 각 서브시스템 또는 플랜은 특정 기능 세트를 집합적으로 제공하는 하나 이상의 성분을 포함할 수 있다. 각 성분은 하나 이상의 물리적 및/또는 논리적 컴퓨팅 디바이스, 예를 들어, 컴퓨터, 데이터 저장 디바이스 등에 의해 구현될 수 있다. 각 서브시스템 내 성분은 동일한 서브시스템 내 성분, 다른 서브시스템 내 성분 또는 고객과 같은 외부 개체와 통신할 수 있다. 이 상호작용의 적어도 일부는 도 2에서 화살표로 지시된다. 특히, 아카이벌 데이터 저장 시스템(206)으로 및 이 저장 시스템으로부터 메인 벌크 데이터 전송 경로는 굵은 화살표로 표시된다. 이 기술 분야에 통상의 지식을 가진 자라면 각종 실시예에서 도 2에 도시된 것보다 더 적거나 더 많은 개수의 시스템, 서브시스템 및/또는 서브 컴포넌트를 구비할 수 있다는 것을 이해할 수 있을 것이다. 따라서, 도 2에 도시된 환경(200)은 특성상 예시를 위한 것일 뿐 본 발명의 범위를 제한하는 것으로 이해되어서는 안 된다.
예시적인 실시예에서, 프런트 엔드(208)는 아카이벌 데이터 저장 시스템(206)과 외부 개체, 예를 들어, 본 명세서에 설명된 하나 이상의 고객(202) 사이에 인터페이스를 제공하는 서비스 그룹을 구현한다. 각종 실시예에서, 프런트 엔드(208)는 사용자가 아카이벌 데이터 저장 시스템의 여러 특징, 성분 및 능력과 프로그램적으로 인터페이스할 수 있게 하는 애플리케이션 프로그래밍 인터페이스 ("API")를 제공한다. 이러한 API는 그래픽 사용자 인터페이스(GUI), 웹 기반 인터페이스, 프로그램 인터페이스, 예를 들어, 애플리케이션 프로그래밍 인터페이스(API) 및/또는 인터페이스 요소에 대응하는 원격 프로시저 호출(RPC) 세트, 인터페이스 요소가 통신 프로토콜의 메시지에 대응하는 메시징 인터페이스 및/또는 이들의 적절한 조합을 포함할 수 있는 사용자 인터페이스의 일부일 수 있다.
아카이벌 데이터 저장 시스템(206)에 의해 제공된 능력은 데이터 저장, 데이터 검색, 데이터 삭제, 메타데이터 동작, 여러 동작 파라미터의 구성 등을 포함할 수 있다. 메타데이터 동작은 특정 고객, 데이터 복구 요청, 작업 문의 등을 위해 저장된 데이터 카탈로그를 검색하는 요청을 포함할 수 있다. 구성 API를 통해 고객은 계좌 정보, 감사 로그(audit log), 정책, 통지 설정 등을 구성할 수 있다. 고객은 API 요청을 아카이벌 데이터 저장 시스템에 송신하는 것에 의해 상기 동작들 중 어느 동작의 수행을 요청할 수 있다. 유사하게, 아카이벌 데이터 저장 시스템은 고객 요청에 응답을 제공할 수 있다. 이러한 요청 및 응답은 "REST"(REpresentational State Transfer), "SOAP"(Simple Object Access Protocol) 등과 같은 임의의 적절한 포맷으로 임의의 적절한 통신 프로토콜, 예를 들어, "HTTP"(Hypertext Transfer Protocol), "FTP"(File Transfer Protocol) 등을 통해 제출될 수 있다. 요청 및 응답은, 예를 들어, 암호화 키 등으로 암호화된 베이스64 인코딩(Base64 encoding)을 사용하여 인코딩될 수 있다.
일부 실시예에서, 아카이벌 데이터 저장 시스템(206)을 통해 고객은 하나 이상의 아카이벌 데이터 객체를 저장하는 논리적 데이터 컨테이너와 같은 하나 이상의 논리적 구조를 생성할 수 있다. 본 명세서에 사용된 바와 같이, 데이터 객체는 폭넓게 사용되고, 임의의 특정 구조 또는 다른 데이터와의 관계를 반드시 암시하는 것은 아니다. 데이터 객체는, 예를 들어, 간단히 비트 시퀀스일 수 있다. 일반적으로, 이러한 논리적 데이터 구조는 고객의 특정 업무 요구조건을 충족하도록 생성될 수 있고, 아카이벌 데이터 저장 시스템에 저장된 데이터의 물리적 조직에 독립적이다. 본 명세서에 사용된 바와 같이, "논리적 데이터 컨테이너(logical container name)"라는 용어는 데이터 객체의 그룹화를 말한다. 예를 들어, 특정 시간 기간 동안 또는 특정 목적을 위해 생성된 데이터 객체는 동일한 논리적 데이터 컨테이너에 저장될 수 있다. 각 논리적 데이터 컨테이너는 내포된 데이터 컨테이너 또는 데이터 객체를 포함할 수 있고, 컨테이너의 사이즈 제한, 컨테이너에 저장될 수 있는 데이터 객체의 최대 개수, 만료일, 액세스 제어 리스트 등과 같은 정책 세트와 연관될 수 있다. 각종 실시예에서, 논리적 데이터 컨테이너는, 예를 들어, 구성가능한 정보에 기초하여 데이터 저장 시스템에 의해 또는 시스템 관리자에 의해 API 요청을 통해 고객에 의해 생성되거나 삭제되거나 변경될 수 있다. 예를 들어, 일 실시예에서, 다음 HTTP PUT 요청을 사용하여, 계좌 식별자 "accountId"에 의해 식별된 고객과 연관된 이름 "logical-container-name"을 갖는 논리적 데이터 컨테이너를 생성할 수 있다.
PUT /{accountId}/logical-container-name HTTP/1.1
일 실시예에서, 아카이벌 데이터 저장 시스템(206)은 고객이 데이터 객체를 논리적 데이터 컨테이너로 저장하는 API를 제공한다. 예를 들어, 대안적인 실시예에서 다음 HTTP POST 요청을 사용하여 데이터 객체를 주어진 논리적 컨테이너에 저장할 수 있다. 일 실시예에서, 요청은 저장 위치의 논리적 경로, 데이터 길이, 데이터 페이로드에 대한 참조, 데이터 페이로드의 디지털 다이제스트 및 다른 정보를 지정할 수 있다. 일 실시예에서, API를 통해 고객은 다수의 데이터 객체를 하나의 요청에서 하나 이상의 논리적 데이터 컨테이너에 업로드할 수 있다. 다른 실시예에서, 데이터 객체가 큰 경우 API를 통해 고객은 다수의 파트로 데이터 객체를 업로드할 수 있고, 각 파트는 데이터 객체의 일부를 구비한다.
POST /{accountId}/logical-container-name/data HTTP/1.1
Content-Length: 1128192
x-ABC-data-description : "annual-result-2012.xls"
x-ABC-md5-tree-hash: 634d9a0688aff95c
데이터 저장 요청에 응답하여, 일 실시예에서, 아카이벌 데이터 저장 시스템(206)은 데이터 객체가 성공적으로 저장된 경우 데이터 객체 식별자를 제공한다. 이러한 데이터 객체 식별자를 사용하여 후속 요청에서 저장된 데이터 객체를 검색하거나 삭제하거나 참조할 수 있다. 일부 실시예에서, 이러한 데이터 객체 식별자는 아카이벌 데이터 저장 시스템에 의해 사용되어 글로벌 이름 공간 키 맵핑과 같은 추가적인 데이터 구조 없이 데이터 객체를 찾을 수 있는 (예를 들어, 암호화되었거나 암호화 없이) 저장 위치 정보를 포함한다는 점에서 "자체-설명적"인 것일 수 있다. 추가적으로, 일부 실시예에서, 데이터 객체 식별자는 페이로드 다이제스트, 에러-검출 코드, 액세스 제어 데이터 및 후속 요청 및 데이터 무결성을 검증하는데 사용될 수 있는 다른 정보를 더 인코딩할 수 있다. 일부 실시예에서, 아카이벌 데이터 저장 시스템은 입력되는 데이터를 아카이벌 데이터 저장소로 이동하기 전에 임시 내구성 데이터 저장소에 입력되는 데이터를 저장한다. 따라서, 고객이 업로드 요청이 완료된 순간에 데이터를 내구적으로 지속하는 것을 인식할 수 있으나, 장기간 지속되는 데이터 저장소에 실제 저장하는 것은 종종 차후(예를 들어, 12시간 후)까지 시작하지 않을 수 있다. 일부 실시예에서, 실제 저장의 타이밍은 데이터 객체의 사이즈, 주간 사이클(diurnal cycle) 동안 시스템 부하, 고객과 저장 서비스 제공자 사이에 서비스 레벨 합의와 같은 구성가능한 정보 및 다른 인자에 종속될 수 있다.
일부 실시예에서, 아카이벌 데이터 저장 시스템(206)은 고객이 아카이벌 데이터 저장 시스템에 저장된 데이터를 검색하는 API를 제공한다. 이러한 실시예에서, 고객은 데이터 검색을 수행하는 작업을 개시할 수 있고, 작업의 상태에 대해 시스템을 폴링하거나 통지에 의해 작업의 완료를 학습할 수 있다. 본 명세서에 사용된 바와 같이, "작업"은 요청이 수신된 시간으로부터 시간적으로 독립적으로 수행될 수 있는 고객 요청에 대응하는 데이터 관련 활동을 말한다. 예를 들어, 작업은 데이터를 검색하고 저장하며 삭제하고, 메타데이터를 검색하는 것 등을 포함할 수 있다. 작업은, 예를 들어, 특정 고객에 대한 모든 작업 중에서 고유한 것일 수 있는 작업 식별자에 의해 식별될 수 있다. 예를 들어, 예시적인 실시예에서, 다음 HTTP POST 요청을 사용하여, 데이터 객체 식별자 "dataObjectId"에 의해 식별된 데이터 객체를 검색하는 작업을 개시할 수 있다. 다른 실시예에서, 데이터 검색 요청은 다수의 데이터 객체의 검색, 논리적 데이터 컨테이너와 연관된 데이터 객체 등을 요청할 수 있다.
POST/{accountId}/logical-data-container-name/data/{dataObjectId} HTTP/1.1
일 실시예에서, 요청에 응답하여, 아카이벌 데이터 저장 시스템(206)은 다음 응답으로 작업에 할당된 작업 식별자 작업-id"를 제공한다. 응답은, 이 예에서, 검색된 데이터가 저장될 수 있는 저장 위치로 경로를 제공한다.
HTTP/1.1 202 ACCEPTED
Location:/{accountId}/logical-data-container-name/jobs/{job-id}
임의의 주어진 시점에서, 아카이벌 데이터 저장 시스템은 여러 데이터 동작을 위해 많은 작업을 펜딩할 수 있다. 일부 실시예에서, 아카이벌 데이터 저장 시스템은 작업 플래닝 및 최적화 기술, 예를 들어, 배취 처리, 부하 밸런싱, 작업 융합 등을 사용하여, 비용, 성능, 확장성 등과 같은 시스템 메트릭을 최적화할 수 있다. 일부 실시예에서, 실제 데이터 검색 타이밍은 검색된 데이터의 사이즈, 시스템 부하 및 용량, 저장 디바이스의 활성 상태 등과 같은 인자에 의존한다. 예를 들어, 일부 실시예에서, 아카이벌 데이터 저장 시스템에서 적어도 일부 데이터 저장 디바이스는 전력 관리 스케줄에 따라 활성화 또는 비활성화되어, 예를 들어, 동작 비용을 감소시킬 수 있다. 따라서, 현재 활성인 저장 디바이스(예를 들어, 회전 하드 드라이브)에 저장된 데이터의 검색은 현재 비활성인 저장 디바이스(예를 들어, 스핀-다운된 하드 드라이브)에 저장된 데이터의 검색보다 더 빠를 수 있다.
일 실시예에서, 데이터 검색 작업이 완료되면, 검색된 데이터는 준비 데이터 저장소에 저장되고, 고객이 다운로드하는데 이입가능하게 만들어진다. 일부 실시예에서, 고객에는 구성가능한 통지 서비스에 의해 작업 상태의 변화가 통지된다. 다른 실시예에서, 고객은 작업 식별자를 사용하여 시스템을 폴링하는 것에 의해 작업 상태를 학습할 수 있다. 일 실시예에서, 다음 HTTP GET 요청을 사용하여, 이전에 제공된 다운로드 경로를 사용하여 "작업-id"에 의해 식별된 작업에 의해 검색된 데이터를 다운로드할 수 있다.
GET/{accountId}/logical-data-container-name/jobs/{job-id}/output HTTP/1.1
예시적인 실시예에서, GET 요청에 응답하여, 아카이벌 데이터 저장 시스템(206)은 확인을 위하여 데이터의 트리-해쉬로 다음 HTTP 응답에 검색된 데이터를 제공할 수 있다.
HTTP/1.1 200 OK
Content-Length: 1128192
x-ABC-archive-description : "retrieved stuff"
x-ABC-md5-tree-hash: 693d9a7838aff95c
[1112192 바이트의 사용자 데이터가 따라온다]
일 실시예에서, 고객은 데이터 객체와 연관된 데이터 객체 식별자를 지정하는 것에 의해 아카이벌 데이터 저장 시스템에 저장된 데이터 객체의 삭제를 요청할 수 있다. 예를 들어, 예시적인 실시예에서, 데이터 객체 식별자 "dataObjectId"를 갖는 데이터 객체는 다음 HTTP 요청을 사용하여 삭제될 수 있다. 또 다른 실시예에서, 고객은 특정 논리적 데이터 컨테이너와 연관된 것과 같은 다수의 데이터 객체의 삭제를 요청할 수 있다.
DELETE/{accountId}/logical-data-container-name/data/{dataObjectId} HTTP/1.1
각종 실시예에서, 데이터 객체는 고객 요청에 응답하여 삭제되거나 또는 사용자-지정된 또는 디폴트 만료일에 따라 자동적으로 삭제될 수 있다. 일부 실시예에서, 데이터 객체는 만료 시간에 고객에 액세스 가능하지 않게 될 수 있지만 만료 시간을 지나 유예 기간 동안 복구가능하게 유지될 수 있다. 각종 실시예에서, 유예 기간은 고객 구성, 서비스-레벨 합의 기간 등과 같은 구성가능한 정보에 기초할 수 있다. 일부 실시예에서, 고객에는 펜딩 데이터 삭제를 위한 통지를 질문하거나 수신하고/하거나 펜딩 데이터 삭제들 중 하나 이상을 취소하는 능력이 제공될 수 있다. 예를 들어, 일 실시예에서, 고객은 논리적 데이터 컨테이너와 연관된 통지 구성을 설정하여 고객은 논리적 데이터 컨테이너에 속하는 특정 이벤트의 통지를 수신할 수 있다. 이러한 이벤트는 데이터 검색 작업 요청의 완료, 메타데이터 요청의 완료, 데이터 객체 또는 논리적 데이터 컨테이너의 삭제 등을 포함할 수 있다.
일 실시예에서, 아카이벌 데이터 저장 시스템(206)은 논리적 데이터 컨테이너와 연관된 메타데이터와 같은 메타데이터를 검색하고 관리하는 메타데이터 API를 더 제공한다. 각종 실시예에서, 이러한 요청은 비동기적으로(결과가 차후에 리턴됨) 또는 동기적으로(결과가 즉시 리턴됨) 처리될 수 있다.
도 2를 더 참조하면, 일 실시예에서, 전술한 API 요청의 적어도 일부는 프런트 엔드(208)의 일부로 API 요청 핸들러(request handler)(218)에 의해 처리된다. 예를 들어, API 요청 핸들러(218)는 입력되는 API 요청을 디코딩하고/하거나 파싱(parsing)하여 "URI" (uniform resource identifier), 요청된 액션 및 연관된 파라미터, 신원 정보, 데이터 객체 식별자 등과 같은 정보를 추출할 수 있다. 추가적으로, API 요청 핸들러(218)는 필요한 경우 다른 서비스(후술됨)를 호출하여, API 요청을 더 처리할 수 있다.
일 실시예에서, 프런트 엔드(208)는, 예를 들어, API 핸들러(218)에 의해 호출되어, API 요청을 인증할 수 있는 인증 서비스(220)를 포함한다. 예를 들어, 일부 실시예에서, 인증 서비스(220)는 API 요청시 제출된 신원 정보, 예를 들어, 사용자이름 및 패스워드 인터넷 프로토콜("IP) 어드레스, 쿠키, 디지털 증명서(digital certificate), 디지털 서명(digital signature) 등을 확인할 수 있다. 다른 실시예에서, 인증 서비스(220)는 시도-응답 인증 프로토콜 등 하에서 다중인자 인증 구조에서 요구되는 것과 같은, 요청을 인증하는 추가적인 정보를 제공하거나 또는 추가적인 단계를 제공할 것을 고객에 요구할 수 있다.
일 실시예에서, 프런트 엔드(208)는, 예를 들어, API 핸들러(218)에 의해 호출되어, 요청과 관련되도록 결정된 하나 이상의 정책에 따라 요청된 액세스가 허가되는지 여부를 결정할 수 있는 허가 서비스(222)를 포함한다. 예를 들어, 일 실시예에서, 허가 서비스(222)는 요청된 액세스가 요청자의 자체 논리적 데이터 컨테이너에 포함된 데이터 객체에 관한 것인지 또는 어느 요청자가 액세스 허가되었는지 여부를 확인한다. 일부 실시예에서, 허가 서비스(222) 또는 프런트 엔드(208)의 다른 서비스는 데이터 객체 식별자에 의해 인코딩된 검증 정보와 같은, 요청에 인코딩된 정보에 적어도 부분적으로 기초하여 데이터 요청의 유효성과 무결성을 체크할 수 있다.
일 실시예에서, 프런트 엔드(208)는 사용된 데이터 저장 공간, 저장된 데이터 객체의 개수, 처리된 데이터 요청 등과 같은 각 고객에 대한 서비스 사용 정보를 모니터링하는 계측 서비스(metering service)(224)를 포함한다. 일 실시예에서, 프런트 엔드(208)는, 예를 들어, 계측 서비스(224)에 의해 수집된 계측 정보, 고객 계좌 정보 등에 기초하여 어카운팅 및 빌링 관련된 기능을 수행하는 어카운팅 서비스(226)를 더 포함한다. 예를 들어, 고객에는 고객이 사용한 저장 공간, 데이터 객체의 사이즈와 개수, 제출된 요청의 유형과 개수, 고객 계좌 유형, 서비스 레벨 합의 등에 기초하여 수수료가 부과될 수 있다.
일 실시예에서, 프런트 엔드(208)는 일부 또는 모든 입력되는 요청을 배취 처리한다. 예를 들어, 프런트 엔드(208)는 (예를 들어, 인증, 허가, 어카운팅 등) 요청을 처리하기 전에 특정 개수의 요청이 수신될 때까지 대기할 수 있다. 입력되는 요청의 이러한 배취 처리를 사용하면 효율적이다.
일부 실시예에서, 프런트 엔드(208)는 아카이벌 데이터 저장 시스템의 다른 서브시스템에 의해 제공된 서비스를 호출하여 API 요청을 더 처리할 수 있다. 예를 들어, 프런트 엔드(208)는 메타데이터 요청을 충족하기 위해 메타데이터 플랜(216)에 있는 서비스를 호출할 수 있다. 다른 예로서, 프런트 엔드(208)는 각각 데이터 저장 및 검색 요청을 위한 직접 I/O(210)를 위한 제어 플랜으로 및 이 제어 플랜으로부터 데이터를 스트리밍할 수 있다.
이제 도 2에 도시된 직접 I/O(210)를 위한 제어 플랜을 참조하면, 각종 실시예에서, 직접 I/O(210)를 위한 제어 플랜은 고객 요청 결과로 생성된 작업을 생성하고 추적하고 관리하는 서비스를 제공한다. 전술한 바와 같이, 작업은 개시 요청, 예를 들어, 데이터 검색, 저장, 메타데이터 질문 등과 비동기적으로 수행될 수 있는 고객-개시된 활동을 말한다. 일 실시예에서, 직접 I/O(210)를 위한 제어 플랜은, 예를 들어, API 요청 핸들러(218)로부터 수신된 것과 같은 고객 요청에 대응하는 작업 레코드 또는 엔트리를 생성하고, 작업의 실행을 모니터링하도록 구성된 작업 추적기(230)를 포함한다. 각종 실시예에서, 작업 레코드는 고객 계좌 식별자, 작업 식별자, 데이터 객체 식별자, 페이로드 데이터 캐시(228)의 참조(후술됨), 작업 상태, 데이터 검증 정보 등과 같은 작업의 실행과 관련된 정보를 포함할 수 있다. 일부 실시예에서, 작업 추적기(230)는 다수의 요청으로부터 작업 레코드를 구성하는데 필요한 정보를 수집할 수 있다. 예를 들어, 다량의 데이터가 저장되도록 요청될 때, 데이터 업로드는 다수의 요청으로 분할될 수 있고, 각 요청은 데이터의 일부를 업로드하는 것일 수 있다. 이러한 경우에, 작업 추적기(230)는 작업 레코드가 생성되기 전에 모든 데이터 파트가 수신되는 것을 보장하기 위해 업로드 상태를 추적하는 정보를 유지할 수 있다. 일부 실시예에서, 작업 추적기(230)는 저장될 데이터와 연관된 데이터 객체 식별자를 더 획득하고, 데이터 객체 식별자를, 예를 들어, 고객에 리턴하기 위해 프런트 엔드 서비스에 제공할 수 있다. 일 실시예에서, 이러한 데이터 객체 식별자는 후술하는 저장 노드 관리자(244), 저장 노드 레지스트라(248) 등과 같은 데이터 플랜(214) 서비스로부터 획득될 수 있다.
일부 실시예에서, 직접 I/O(210)를 제어 플랜은 작업 엔트리 또는 레코드를 저장하는 작업 추적기 저장소(232)를 포함한다. 각종 실시예에서, 작업 추적기 저장소(232)는 NoSQL 데이터 관리 시스템, 예를 들어, 키-값 데이터 저장소, 관계 데이터베이스 관리 시스템(relational database management system: "RDBMS") 또는 임의의 다른 데이터 저장 시스템에 의해 구현될 수 있다. 일부 실시예에서, 작업 추적기 저장소(232)에 저장된 데이터는, 특정 고객에 속하는 작업을 고속으로 수행하여, 효율적인 벌크 레코드 삭제를 제공하고, 별개의 서비스 인스턴스에 의해 병렬 처리 등을 제공하도록 파티션될 수 있다. 예를 들어, 작업 추적기 저장소(232)는, 고객 계좌 식별자에 따라 파티션되고 범위 키로 작업 식별자를 사용하는 테이블을 구현할 수 있다. 일 실시예에서, 작업 추적기 저장소(232)는 시간(예를 들어, 작업 만료 시간)에 기초하여 더 서브-파티션되어 작업 만료 및 클린업(cleanup) 동작을 제공할 수 있다. 일 실시예에서, 작업 추적기 저장소(232)에 대한 거래를 취합하여 총 거래 개수를 감소시킬 수 있다. 예를 들어, 일부 실시예에서, 작업 추적기(230)는 다수의 요청에 대응하는 다수의 작업을 작업 추적기 저장소(232)에 삽입하기 전에 하나의 단일 취합 작업으로 취합할 수 있다.
일 실시예에서, 작업 추적기(230)는, 예를 들어, 공통 제어 플랜(212)에 있는 서비스에 의해 추가적인 작업 스케줄 및 플래닝을 위한 작업을 제출하도록 구성된다. 추가적으로, 작업 추적기(230)는 작업의 실행을 모니터링하고 작업이 완료될 때 작업 추적기 저장소(232)에서 대응하는 작업 레코드를 업데이트하도록 구성될 수 있다. 일부 실시예에서, 작업 추적기(230)는 작업 상태 질문과 같은 고객 질문을 처리하도록 더 구성될 수 있다. 일부 실시예에서, 작업 추적기(230)는 작업 상태 변화의 통지를 아카이벌 데이터 저장 시스템의 고객 또는 다른 서비스에 더 제공한다. 예를 들어, 데이터 검색 작업이 완료될 때, 작업 추적기(230)는 (예를 들어, 통지 서비스를 사용하여) 데이터가 다운로드에 이용가능하다는 것을 고객에 통지할 수 있다. 또 다른 예로서, 데이터 저장 작업이 완료될 때, 작업 추적기(230)는 클린업 에이전트(234)에 통지하여 후술하는 임시 페이로드 데이터 캐시(228)로부터 데이터 저장 작업과 연관된 페이로드 데이터를 제거할 수 있다.
일 실시예에서, 직접 I/O(210)를 위한 제어 플랜은 페이로드 데이터가 데이터 플랜(214)과 프런트 엔드(208) 사이에 전이하는데 임시 데이터 저장 서비스를 제공하는 페이로드 데이터 캐시(228)를 포함한다. 이러한 데이터는 입력되는 데이터 펜딩 저장 및 출력되는 데이터 펜딩 고객 다운로드를 포함한다. 본 명세서에 사용된 바와 같이, 임시 데이터 저장소는 본 명세서에 설명된 아카이벌 데이터 저장소에 저장되기 전에 데이터 객체를 저장하거나 또는 아카이벌 데이터 저장소로부터 검색된 데이터 객체를 저장하는데 사용되는 데이터 저장소를 말하는 것으로 임시 또는 준비 데이터 저장소와 교환가능하게 사용된다. 임시 데이터 저장소는 휘발성 또는 비-휘발성(내구성) 저장소를 제공할 수 있다. 대부분의 실시예에서, 데이터를 지속적으로 저장하는데 잠재적으로 사용가능하지만, 임시 데이터 저장소는 아카이벌 데이터 저장 시스템보다 더 짧은 시간 기간 동안 데이터를 저장하도록 의도되고, 본 명세서에 설명된 데이터 아카이벌 저장 시스템보다 덜 비용-효율적일 수 있다. 일 실시예에서, 입력되는 및 출력되는 데이터에 제공되는 임시 데이터 저장 서비스들은 구별될 수 있다. 예를 들어, 아카이벌 데이터 저장소에 아직 지속되지 않는 입력 데이터를 위한 데이터 저장소는 아카이벌 데이터 저장소에 이미 지속된 출력 (검색된) 데이터를 위한 데이터 저장소보다 더 높은 신뢰성 및 내구성을 제공할 수 있다. 또 다른 실시예에서, 임시 저장소는 입력되는 데이터에 대해 선택될 수 있고, 즉, 입력되는 데이터는, 예를 들어, 시스템이 이렇게 하는데 충분한 대역폭 및/또는 용량을 가지고 있을 때, 페이로드 데이터 캐시(228)와 같은 임시 데이터 저장소에 저장됨이 없이 아카이벌 데이터 저장소에 직접 저장될 수 있다.
일 실시예에서, 직접 I/O(210)를 위한 제어 플랜은, 작업 추적기 저장소(232) 및/또는 페이로드 데이터 캐시(228)를 모니터링하고 더 이상 요구되지 않는 데이터를 제거하는 클린업 에이전트(234)를 더 포함한다. 예를 들어, 데이터 저장 요청과 연관된 페이로드 데이터는 데이터가 영구 저장소(예를 들어, 데이터 플랜(214))에 지속된 후 페이로드 데이터 캐시(228)로부터 안전하게 제거될 수 있다. 역 경로에서, 구성가능한 시간 기간(예를 들어, 데이터가 준비된 후 30일) 또는 고객에 준비된 데이터가 더 이상 요구되지 않는 것을 나타낸 후 고객이 다운로드하는데 준비된 데이터는 페이로드 데이터 캐시(228)로부터 제거될 수 있다.
일부 실시예에서, 클린 에이전트(234)는 작업 상태가 작업이 완료되거나 중지된 것을 나타낼 때 작업 추적기 저장소(232)로부터 작업 레코드를 제거한다. 전술한 바와 같이, 일부 실시예에서, 작업 추적기 저장소(232)는 더 빠른 클린업을 수행할 수 있도록 파티션될 수 있다. 일 실시예에서 데이터가 고객 계좌 식별자에 의해 파티션되는 경우, 클린업 에이전트(234)는 한번에 하나씩 개별 작업을 삭제하는 대신 작업이 완료될 때 특정 고객 계좌에 대한 작업을 저장하는 전체 테이블을 제거할 수 있다. 데이터가 작업 만료 시간에 기초하여 더 서브-파티션되는 다른 실시예에서 클린업 에이전트(234)가 파티션에서 모든 작업이 만료된 후 작업 전체 파티션 또는 테이블을 벌크 삭제할 수 있다. 다른 실시예에서, 클린업 에이전트(234)는 클린업 에이전트(234)가 작업 추적기 저장소(232) 및/또는 페이로드 데이터 캐시(228)로부터 작업 레코드를 제거하게 하는 작업 추적기(230)와 같은 다른 서비스로부터 (작업이 완료된 것을 나타내는 것과 같은) 명령 또는 제어 메시지를 수신할 수 있다.
이제 도 2에 도시된 공통 제어 플랜(212)을 참조하면, 각종 실시예에서, 공통 제어 플랜(212)은, I/O(210)를 위한 제어 플랜으로부터 입력되는 평균 부하 레벨(작업)로 피크를 감쇠하고 관리가능한 작업 부하를 데이터 플랜(214)에 전달하는 큐-기반 부하 레벨 서비스를 제공한다. 일 실시예에서, 공통 제어 플랜(212)은 작업 추적기(230)에 의해 생성된 작업을 전술한 직접 I/O(210)를 위한 제어 플랜에 수신하는 작업 요청 큐(236), 데이터 플랜(214)(예를 들어, 저장 노드 관리자(244))로부터 서비스가 실행할 작업을 픽업하는 저장 노드 관리자 작업 저장소(240) 및 작업 요청 큐(236)로부터 작업 항목을 지능적인 방식으로 저장 노드 관리자 작업 저장소(240)에 전송하는 요청 밸런서(request balancer)(238)를 포함한다.
일 실시예에서, 작업 요청 큐(236)는 항목을 큐에 삽입하고 이 큐로부터 항목을 제거하는 서비스(예를 들어, 선입선출(first-in-first-out: FIFO) 또는 선입후출(first-in-last-out: FILO)), 세트 또는 임의의 다른 적절한 데이터 구조를 제공한다. 작업 요청 큐(236)에 작업 엔트리는 전술한 작업 추적기 저장소(232)에 저장된 작업 레코드와 유사하거나 이 작업 레코드와 상이할 수 있다.
일 실시예에서, 공통 제어 플랜(212)은 내구적인 높은 효율 작업 저장소, 데이터 플랜(214)(예를 들어, 저장 노드 관리자(244), 반-엔트로피 감시자(watcher)(252))로부터 서비스가 작업 플래닝 최적화, 체크 포인팅 및 복구를 수행하게 하는 저장 노드 관리자 작업 저장소(240)를 더 제공한다. 예를 들어, 일 실시예에서, 저장 노드 관리자 작업 저장소(240)는 저장 노드 관리자 작업 저장소(240)에 저장된 작업 항목을 스캐닝, 질문, 분류(sorting) 또는 조작(manipulating) 및 관리하는 것을 지원하는 것에 의해 배취 처리, 동작 융합 등과 같은 작업 최적화를 허용한다. 일 실시예에서, 저장 노드 관리자(244)는 입력되는 작업을 스캔하고 데이터 동작(예를 들어, 판독, 기록 또는 삭제), 저장 위치(예를 들어, 볼륨, 디스크), 고객 계좌 식별자 등의 유형에 의해 작업을 분류한다. 저장 노드 관리자(244)는 처리할 작업을 재정렬하거나, 융합하거나, 배취로 그룹화하거나 또는 조작하고 스케줄링할 수 있다. 예를 들어, 일 실시예에서, 저장 노드 관리자(244)는 모든 판독 및 삭제 동작 전에 모든 기록 동작을 배취 처리할 수 있다. 다른 실시예에서, 저장 노드 관리자(244)는 동작 융합을 수행할 수 있다. 또 다른 예로서, 저장 노드 관리자(244)는 동일한 객체에 대한 다수의 검색 작업을 하나의 작업으로 융합하거나 또는 저장 작업 후에 삭제 작업이 오는 경우 동일한 데이터 객체에 대한 저장 작업 및 삭제 작업을 취소할 수 있다.
일 실시예에서, 저장 노드 관리자 작업 저장소(240)는, 예를 들어, 작업 식별자에 기초하여 파티션되어, 다수의 저장 노드 관리자(244)의 독립적인 처리를 허용하고 입력되는 작업 부하를 모든 참가하는 저장 노드 관리자(244)에 균일하게 분배한다. 각종 실시예에서, 저장 노드 관리자 작업 저장소(240)는 NoSQL 데이터 관리 시스템, 예를 들어, 키-값 데이터 저장소, RDBMS 또는 임의의 다른 데이터 저장 시스템에 의해 구현될 수 있다.
일 실시예에서, 요청 밸런서(238)는 작업 부하에서 변동을 평활화하고 시스템 이용가능성을 증가시키기 위하여 작업 요청 큐(236)로부터 작업 항목을 저장 노드 관리자 작업 저장소(240)에 전송하는 서비스를 제공한다. 예를 들어, 요청 밸런서(238)는 작업 요청 큐(236)로부터 작업 항목을 작업 요청 큐(236)에 들어오는 작업 요청이 급변할 때 더 낮은 속도 또는 더 작은 입도로 전송할 수 있고 저장 노드 관리자 저장소(240)에서 상대적으로 지속가능한 작업 부하 레벨을 유지하기 위하여 입력되는 작업 요청이 진정될 때에는 더 높은 속도로 더 높은 입도로 전송할 수 있다. 일부 실시예에서, 이러한 지속가능한 작업 부하 레벨이 시스템의 평균 작업 부하와 대략 동일하거나 이보다 더 작다.
일 실시예에서, 완료된 작업 항목이 저장 노드 관리자 작업 저장소(240)로부터 제거되고 작업 결과 큐(242)에 추가된다. 일 실시예에서, 데이터 플랜(214) 서비스(예를 들어, 저장 노드 관리자(244))는 저장 노드 관리자 작업 저장소(240)로부터 작업 항목을 제거하고 이 작업 항목을 작업 결과 큐(242)에 추가하는 일을 담당한다. 일부 실시예에서, 작업 요청 큐(242)는 전술한 작업 요청 큐(236)와 유사한 방식으로 구현된다.
이제 도 2에 도시된 데이터 플랜(214)을 참조하면, 각종 실시예에서, 데이터 플랜(214)은 장기간 아카이벌 데이터 저장, 검색 및 삭제, 데이터 관리 및 배치, 반-엔트로피 동작 등과 관련된 서비스를 제공한다. 각종 실시예에서, 데이터 플랜(214)은 데이터 저장 디바이스(예를 들어, 테이프 드라이브, 하드 디스크 드라이브, 솔리드 스테이트 디바이스 등), 저장 노드 또는 서버, 데이터센터 등과 같은 임의의 개수 및 유형의 저장 개체를 포함할 수 있다. 이러한 저장 개체는 물리적, 가상 또는 임의의 추상적 개체(abstraction)(예를 들어, 분배된 저장 및/또는 컴퓨팅 시스템의 인스턴스)일 수 있고, 계층적인 또는 층상화된 형태를 포함하는 임의의 형태로 구성될 수 있다. 유사하게, 데이터 플랜의 성분은 분산되어 있거나, 국부적으로 있거나 이들의 임의의 조합으로 있을 수 있다. 예를 들어, 여러 컴퓨팅 또는 저장 성분은 임의의 개수의 데이터센터, 서버 또는 데이터 저장 디바이스에 국부적으로 있거나 원격으로 있을 수 있고, 이 디바이스는 서로에 대해 국부적으로 있거나 원격으로 있을 수 있다. 각종 실시예에서, 물리적 저장 개체는 활성인 물리적 하드웨어의 일부분을 제어하는 것에 의해 전력 및 냉각 비용(예를 들어, 활성으로 회전하고 있는 하드 드라이브의 개수)을 최소화하도록 설계될 수 있다. 일 실시예에서, 물리적 저장 개체는 기와식 자기 레코드(SMR)와 같은 기술을 구현하여, 저장 용량을 증가시킨다.
도 2에 도시된 환경에서, 하나 이상의 저장 노드 관리자(244)는 각각 데이터 및 제어 메시지를 송신하고 수신하는 것에 의해 하나 이상의 저장 노드(246)를 제어한다. 각 저장 노드(246)는 하드 디스크 드라이브와 같은 데이터 저장 디바이스의 (잠재적으로 큰) 콜렉션(collection)을 제어한다. 각종 실시예에서, 저장 노드 관리자(244)는 하나 이상의 저장 노드(246)와 통신할 수 있고 저장 노드(246)는 하나 이상의 저장 노드 관리자(244)와 통신할 수 있다. 일 실시예에서, 저장 노드 관리자(244)는 다이제스트 연산, 데이터 인코딩 및 디코딩, 작업 플래닝 및 최적화 등과 같은 상대적으로 복잡한 연산을 수행할 수 있는 하나 이상의 컴퓨팅 디바이스에 의해 구현된다. 일부 실시예에서, 저장 노드(246)는 저장 노드 관리자(244)보다 덜 강력한 연산 능력을 갖는 하나 이상의 컴퓨팅 디바이스에 의해 구현된다. 나아가, 일부 실시예에서 저장 노드 관리자(244)는 데이터 경로에 포함되지 않을 수 있다. 예를 들어, 데이터는 페이로드 데이터 캐시(228)로부터 직접 저장 노드(246)로 또는 하나 이상의 저장 노드(246)로부터 페이로드 데이터 캐시(228)로 송신될 수 있다. 이런 방식으로, 저장 노드 관리자(244)는 페이로드 데이터 캐시(228) 및/또는 저장 노드(246)로부터 페이로드를 직접 수신함이 없이 명령을 페이로드 데이터 캐시(228) 및/또는 저장 노드(246)에 전송할 수 있다. 각종 실시예에서, 저장 노드 관리자(244)는 명령 또는 제어 메시지를 본 명세서에 설명된 아카이벌 데이터 저장 시스템(206)의 임의의 다른 성분으로 송신하여 데이터를 흐르게 할 수 있다.
일 실시예에서, 저장 노드 관리자(244)는 공통 제어 플랜(212)(예를 들어, 저장 노드 관리자 작업 저장소(240))으로부터 작업 항목을 픽업하는 것, 페이로드 데이터 캐시(228)로부터 준비된 데이터를 검색하는 것, 및 데이터 저장 작업에 필요한 데이터 인코딩을 수행하고 적절한 저장 노드(246)에 데이터를 저장, 검색 또는 삭제할 것을 요청하는 것에 의해 데이터 플랜(214)으로 입력되고 출력되는 작업에 대한 엔트리 포인트로 기능한다. 저장 노드(246)가 요청된 데이터 동작을 수행하기를 종료하면, 저장 노드 관리자(244)는 데이터를 디코딩하고 검색된 데이터를 데이터 검색 작업을 위한 페이로드 데이터 캐시(228)에 저장하는 것과 같은 추가적인 처리를 수행하고, 공통 제어 플랜(212)에 있는 작업 레코드를 업데이트(예를 들어, 저장 노드 관리자 작업 저장소(240)로부터 종료된 작업을 제거하는 것 및 이 작업을 작업 결과 큐(242)에 추가하는 것)할 수 있다.
일 실시예에서, 저장 노드 관리자(244)는 데이터 리던던시, 보안 등을 제공하는 데이터 저장 전에 하나 이상의 데이터 인코딩 구조에 따라 데이터 인코딩을 수행한다. 이러한 데이터 인코딩 구조는 암호화 구조, 리던던시 인코딩 구조, 예를 들어, 소거 인코딩, 독립적인 디스크의 리던던트 어레이(redundant array of independent disk: RAID)의 인코딩 구조, 복제(replication) 등을 포함할 수 있다. 또한, 일 실시예에서, 저장 노드 관리자(244)는 원래의 데이터를 복구하는 데이터 검색 후에, 예를 들어, 복호화, 소거-디코딩 등과 같은 대응하는 데이터 디코딩 구조를 수행한다.
저장 노드 관리자 작업 저장소(240)와 관련하여 전술한 바와 같이, 저장 노드 관리자(244)는 배취 처리, 동작 융합 등과 같은 작업 플래닝 및 최적화를 구현하여 효율을 증가시킬 수 있다. 일부 실시예에서, 작업은 저장 노드 관리자들 중에서 파티션되어 파티션들 사이에 중복(overlap)이 없거나 거의 없다. 이러한 실시예는 예를 들어, 레이싱(racing)이나 록킹(locking)할 확률을 감소시키는 것에 의해 다수의 저장 노드 관리자에 의해 병렬 처리를 제공한다.
각종 실시예에서, 데이터 플랜(214)은 데이터 무결성을 제공하도록 구현된다. 예를 들어, 저장 노드 관리자(244) 및/또는 저장 노드(246)와 같은 벌크 데이터 흐름을 처리하는 저장 개체는 저장된 또는 검색된 데이터의 다이제스트를 검증하고, 에러-검출 코드를 체크하여 메타데이터의 무결성 등을 보장할 수 있다.
각종 실시예에서, 데이터 플랜(214)은 아카이벌 데이터 저장 시스템의 확장성 및 신뢰성을 제공하도록 구현된다. 예를 들어, 일 실시예에서, 저장 노드 관리자(244)는 거의 악영향이 없이 추가되거나 제거되거나 대체될 수 있도록 내부 상태를 유지하지 않거나 거의 유지하지 않는다. 일 실시예에서, 각 저장 디바이스는 저장된 데이터에 관한 정보를 제공할 수 있는 독립적(self-contained)이고 자체 설명적인 저장 유닛이다. 이러한 정보는 데이터 손실의 경우에 데이터 복구를 제공하는데 사용될 수 있다. 나아가, 일 실시예에서, 각 저장 노드(246)는 저장 노드의 네트워크 위치를 포함하는 저장 노드에 관한 정보 및 연결된 저장 디바이스의 저장 정보를 수집하고 이 정보를 하나 이상의 저장 노드 레지스트라(248) 및/또는 저장 노드 레지스트라 저장소(250)에 리포트할 수 있다. 일부 실시예에서, 저장 노드(246)는 시스템 시작 시간에 이러한 자체 리포트를 수행하고 주기적으로 업데이트된 정보를 제공한다. 각종 실시예에서, 이러한 자체 리포트 접근법은 다량의 데이터 객체가 아카이벌 데이터 시스템에 저장될 때 실질적으로 성장할 수 있는 글로벌 이름 공간 키 맵핑 또는 지수(index)를 유지할 필요 없이 동적 및 최신 디렉토리 정보를 제공한다.
일 실시예에서, 데이터 플랜(214)은 저장 개체에 대한 디렉토리 정보 및 이 저장 개체에 저장된 데이터, 데이터 배치 서비스 등을 제공하는 하나 이상의 저장 노드 레지스트라(248)를 더 포함할 수 있다. 저장 노드 레지스트라(248)는 하나 이상의 저장 노드 레지스트라 저장소(250)와 통신하고 이에 프런트 엔드 서비스로 동작할 수 있고, 이 저장소는 저장 노드 레지스트라(248)에 저장을 제공한다. 각종 실시예에서, 저장 노드 레지스트라 저장소(250)는 NoSQL 데이터 관리 시스템, 예를 들어, 키-값 데이터 저장소, RDBMS 또는 임의의 다른 데이터 저장 시스템에 의해 구현될 수 있다. 일부 실시예에서, 저장 노드 레지스트라 저장소(250)는 다수늬 서비스 인스턴스에 의해 병렬 처리를 가능하도록 파티션될 수 있다. 전술한 바와 같이, 일 실시예에서, 저장 노드 레지스트라 저장소(250)에 저장된 정보는 저장 노드(246) 자체에 의해 리포트된 정보에 적어도 부분적으로 기초한다.
일부 실시예에서, 저장 노드 레지스트라(248)는, 예를 들어, 데이터 저장, 검색 및 삭제 동작을 위해 컨택할 저장 노드(246)가 어느 것인지를 결정하기를 원하는 저장 노드 관리자(244)에 디렉토리 서비스를 제공한다. 예를 들어, 저장 노드 관리자(244)에 의해 제공된 볼륨 식별자가 주어지면, 저장 노드 레지스트라(248)는, 저장 노드 레지스트라 저장소(250)에 유지된 맵핑에 기초하여, 볼륨 식별자에 대응하는 볼륨 성분을 호스트하는 저장 노드의 리스트를 제공할 수 있다. 구체적으로, 일 실시예에서, 저장 노드 레지스트라 저장소(250)는, 볼륨 또는 볼륨 성분의 식별자의 리스트와 볼륨 또는 볼륨 성분을 호스트하는 저장 노드의 종단점(endpoint), 예를 들어, 도메인 이름 시스템(DNS) 이름 사이에 맵핑을 저장한다.
본 명세서에 사용된 바와 같이, "볼륨"은 데이터 객체가 저장될 수 있는 데이터 저장 시스템 내 논리적 저장 공간을 말한다. 볼륨은 볼륨 식별자에 의해 식별될 수 있다. 볼륨은 하나의 물리적 저장 디바이스(예를 들어, 하드 디스크)에 존재하거나 또는 다수의 저장 디바이스에 걸쳐 있을 수 있다. 후자의 경우에, 볼륨은 상이한 저장 디바이스에 각각 존재하는 복수의 볼륨 성분을 포함한다. 본 명세서에 사용된 바와 같이, "볼륨 성분"은 저장 디바이스와 같은 저장 개체에 물리적으로 저장된 볼륨의 일부를 말한다. 동일한 볼륨을 위한 볼륨 성분은 상이한 저장 개체에 저장될 수 있다. 일 실시예에서, 데이터가 리던던시 인코딩 구조(예를 들어, 소거 코딩 구조, RAID, 복제)에 의해 인코딩될 때, 각 인코딩된 데이터 성분 또는 "조각(shard)"은 상이한 볼륨 성분에 저장되어 결함 공차 및 분리(isolation)를 제공할 수 있다. 일부 실시예에서, 볼륨 성분은 볼륨 식별자 및 조각 슬롯(shard slot) 식별자를 포함하는 볼륨 성분 식별자에 의해 식별된다. 본 명세서에 사용된 바와 같이, 조각 슬롯은 리던던시 인코딩 구조에서 데이터의 특정 조각, 행 또는 스트라이프(stripe)를 식별한다. 예를 들어, 일 실시예에서, 조각 슬롯은 소거 코딩 매트릭스 행에 대응한다. 일부 실시예에서, 저장 노드 레지스트라 저장소(250)는 총 공간, 사용된 공간 및 자유 공간, 저장된 데이터 객체의 개수 등과 같은 볼륨 또는 볼륨 성분에 관한 정보를 더 저장한다.
일부 실시예에서, 데이터 플랜(214)은, 저장 노드 레지스트라 저장소(250)에 의해 유지되는 정보에 적어도 부분적으로 기초하여 새로운 데이터 객체를 저장하고, 데이터 분리 및 결함 공차 제약을 만족시키기 위해 저장 노드에 저장 공간(예를 들어, 볼륨)을 할당하는 저장 할당기(256)를 더 포함한다. 일부 실시예에서, 저장 할당기(256)는 수동 개입을 요구한다.
일부 실시예에서, 데이터 플랜(214)은 엔트로픽 효과(entropic effect)를 검출하고 반-엔트로피 정정 루틴(correction routine)을 개시하는 반-엔트로피 감시자(252)를 더 포함한다. 예를 들어, 반-엔트로피 감시자(252)는 저장 노드와 같은 모든 저장 개체의 활동과 상태를 모니터링하고, 유지된 데이터 등을 갖는 라이브 또는 실제 데이터를 조화시키는 일 등을 담당할 수 있다. 각종 실시예에서, 엔트로픽 효과는 반복된 기록 및 재기록 사이클, 하드웨어 마모(예를 들어, 자기 매체), 데이터 이용가능성 없음 및/또는 하드웨어/소프트웨어 오기능으로 인한 데이터 손실, 환경 인자, 하드웨어의 물리적 파괴, 랜덤 기회 또는 다른 요인으로부터 데이터 단편화(fragmentation)로 인한 성능 저하를 포함하지만 이들로 제한되지 않는다. 반-엔트로피 감시자(252)는 이러한 효과를 검출할 수 있고 일부 실시예에서 반-엔트로피 정정 루틴 및/또는 정책을 선매적으로 및/또는 반응적으로 실시할 수 있다.
일 실시예에서, 반-엔트로피 감시자(252)는 저장 노드(246)가 저장 노드에 연결된 저장 디바이스에 주기적인 반-엔트로피 스캔을 수행하게 한다. 반-엔트로피 감시자(252)는 작업 요청 큐(236)(및 이후 작업 결과 큐(242))에 요청을 주입하여 정보를 수집하고, 데이터를 복구하는 등을 더 수행할 수 있다. 일부 실시예에서, 반-엔트로피 감시자(252)는, 예를 들어, 후술하는 한랭 지수 저장소(262) 및 저장 노드(246)에 스캔을 수행하여, 참조 무결성을 보장할 수 있다.
일 실시예에서, 저장 노드 레지스트라 저장소(250)에 저장된 정보는 저장 노드 레지스트라(248), 저장 할당기(256), 반-엔트로피 감시자(252) 등과 같은 여러 서비스에 의해 사용된다. 예를 들어, 저장 노드 레지스트라(248)는 데이터 저장, 검색 및 삭제 동안 데이터 위치 및 배치 서비스를 (예를 들어, 저장 노드 관리자(244)에) 제공할 수 있다. 예를 들어, 저장될 데이터 객체의 사이즈 및 저장 노드 레지스트라 저장소(250)에 의해 유지되는 정보가 주어지면, 저장 노드 레지스트라(248)는 데이터 객체를 저장하는 곳(예를 들어, 볼륨)을 결정하고, 데이터 객체와 연관된 데이터 객체 식별자를 생성하는데 사용될 수 있는 데이터 객체의 저장 위치의 지시를 제공할 수 있다. 또 다른 예로서, 일 실시예에서, 저장 할당기(256)는 저장 노드 레지스트라 저장소(250)에 저장된 정보를 사용하여 특정 저장 노드에서 새로운 볼륨이 분리 및 결함 공차 제약을 만족시키는 볼륨 성분을 생성하고 배치할 수 있다. 또 다른 예로서, 일 실시예에서, 반-엔트로피 감시자(252)는 저장 노드 레지스트라 저장소(250)에 저장된 정보를 사용하여 데이터 손실, 하드웨어 고장 등과 같은 엔트로픽 효과를 검출할 수 있다.
일부 실시예에서, 데이터 플랜(214)은 저장 시스템에서 고아(orphan)를 추적하는데 사용되는 고아 클린업 데이터 저장소(254)를 더 포함한다. 본 명세서에 사용된 바와 같이, 고아는 임의의 외부 개체에 의해 참조되지 않는 저장된 데이터 객체이다. 각종 실시예에서, 고아 클린업 데이터 저장소(254)는 NoSQL 데이터 관리 시스템, 예를 들어, 키-값 데이터 저장소, RDBMS 또는 임의의 다른 데이터 저장 시스템에 의해 구현될 수 있다. 일부 실시예에서, 저장 노드 레지스트라(248)는 고아 클린업 데이터 저장소(254)에 객체 배치 정보를 저장한다. 이후, 고아 클린업 데이터 저장소(254)에 저장된 정보는, 예를 들어, 반-엔트로피 감시자(252)에 의해, 메타데이터 플랜(216)에 유지된 정보와 비교될 수 있다. 고아가 검출되면, 일부 실시예에서, 요청이 공통 제어 플랜(212)에 삽입되어 고아를 삭제한다.
이제 도 2에 도시된 메타데이터 플랜(216)을 참조하면, 각종 실시예에서, 메타데이터 플랜(216)은 재고 및 어카운팅 목적을 위하여 시스템에 저장된 데이터 객체에 관한 정보를 제공하여, 고객 메타데이터 문의 등을 만족시킨다. 도시된 실시예에서, 메타데이터 플랜(216)은 공통 제어 플랜(212)에서 작업 결과 큐(242)로부터 엔트리에 기초하여 실행된 거래에 관한 정보를 저장하는 메타데이터 관리자 작업 저장소(258)를 포함한다. 각종 실시예에서, 메타데이터 관리자 작업 저장소(258)는 NoSQL 데이터 관리 시스템, 예를 들어, 키-값 데이터 저장소, RDBMS 또는 임의의 다른 데이터 저장 시스템에 의해 구현될 수 있다. 일부 실시예에서, 메타데이터 관리자 작업 저장소(258)는, 예를 들어, 논리적 데이터 컨테이너에 기초하여, 파티션되고 서브-파티션되어 메타데이터 관리자(260)와 같은 다수의 서비스 인스턴스에 의해 병렬 처리를 제공한다.
예시적인 실시예에서, 메타데이터 플랜(216)은 메타데이터 관리자 작업 저장소(258)에 레코드에 기초하여 (예를 들어, 한랭 지수 저장소(262)에 저장된) 데이터 객체의 한랭 지수를 생성하기 위한 하나 이상의 메타데이터 관리자(260)를 더 포함한다. 본 명세서에 사용된 바와 같이, "한랭" 지수는 덜 업데이트되는 지수를 말한다. 각종 실시예에서, 한랭 지수는 비용 오버헤드를 감소시키도록 유지된다. 일부 실시예에서, 다수의 메타데이터 관리자(260)는 메타데이터 관리자 작업 저장소(258)에서 상이한 파티션으로부터 레코드를 주기적으로 병렬로 판독하고 처리하며 한랭 지수 저장소(262)에 결과를 저장할 수 있다.
일부 실시예에서 한랭 지수 저장소(262)는 신뢰성 있고 내구적인 데이터 저장 서비스에 의해 구현될 수 있다. 일부 실시예에서, 한랭 지수 저장소(262)는 고객에 의해 개시된 메타데이터 요청을 처리하도록 구성된다. 예를 들어, 고객은 주어진 논리적 데이터 컨테이너에 포함된 모든 데이터 객체를 리스트하는 요청을 발행할 수 있다. 이러한 요청에 응답하여, 한랭 지수 저장소(262)는 한랭 지수(262)에 의해 유지되는 정보에 기초하여 논리적 데이터 컨테이너에 포함된 모든 데이터 객체의 식별자 리스트를 제공할 수 있다. 일부 실시예에서, 동작은 상대적으로 긴 시간 기간이 소요될 수 있고 고객에는 작업이 수행될 때 결과를 검색하는 작업 식별자가 제공될 수 있다. 다른 실시예에서, 한랭 지수 저장소(262)는 다른 서비스로부터, 예를 들어, 프런트 엔드(208)로부터 재고, 어카운팅 및 빌링을 위해 문의를 처리하도록 구성된다.
일부 실시예에서, 메타데이터 플랜(216)은 컨테이너 소유권, 정책, 사용 등과 같은 논리적 데이터 컨테이너에 관한 정보를 저장하는 컨테이너 메타데이터 저장소(264)를 더 포함할 수 있다. 이러한 정보는, 예를 들어, 프런트 엔드(208) 서비스에 의해 사용되어, 허가, 계측, 어카운팅 등을 수행할 수 있다. 각종 실시예에서, 컨테이너 메타데이터 저장소(264)는 NoSQL 데이터 관리 시스템, 예를 들어, 키-값 데이터 저장소, RDBMS 또는 임의의 다른 데이터 저장 시스템에 의해 구현될 수 있다.
본 명세서에 설명된 바와 같이, 각종 실시예에서, 본 명세서에 설명된 아카이벌 데이터 저장 시스템(206)은 효율적이고 확장성 있도록 구현된다. 예를 들어, 일 실시예에서, 배취 처리 및 요청 융합은 여러 단계(예를 들어, 프런트 엔드 요청 처리, 제어 플랜 작업 요청 처리, 데이터 플랜 데이터 요청 처리)에서 사용되어 효율을 개선시킨다. 또 다른 예로서, 일 실시예에서, 작업, 요청 등과 같은 메타데이터의 처리는 다수의 서비스 인스턴스에 의해 파티션의 병렬 처리를 제공하도록 파티션된다.
일 실시예에서, 아카이벌 데이터 저장 시스템에 저장된 데이터 요소(예를 들어, 후술하는 데이터 성분, 볼륨)는 글로벌 지수 데이터 구조에의 필요성을 회피하도록 자체 설명적이다. 예를 들어, 일 실시예에서, 시스템에 저장된 데이터 객체는 저장 위치 정보를 인코딩하는 데이터 객체 식별자에 의해 어드레스될 수 있다. 또 다른 예로서, 일 실시예에서, 볼륨은 데이터 객체가 볼륨에 저장되는 것에 관한 정보를 저장할 수 있고 이러한 볼륨을 저장하는 저장 노드 및 디바이스는 재고 및 하드웨어 정보를 집합적으로 리포트하여 (예를 들어, 저장 노드 레지스트라 저장소(250)에 저장된 정보에 의해 증명된 바와 같이) 시스템에 저장된 데이터의 글로벌 관점을 제공할 수 있다. 이러한 실시예에서, 글로벌 관점은 단지 효율을 위해 제공된 것일 뿐 시스템에 저장된 데이터를 찾는데 요구되지 않는다.
각종 실시예에서, 본 명세서에 설명된 아카이벌 데이터 저장 시스템은 데이터 신뢰성과 내구성을 개선시키도록 구현된다. 예를 들어, 일 실시예에서, 데이터 객체는 복수의 데이터 성분으로 리던던트하게 인코딩되고 상이한 데이터 저장 개체에 걸쳐 저장되어 결함 공차를 제공한다. 또 다른 예로서, 일 실시예에서, 데이터 요소는 다수의 무결성 체크 레벨을 구비한다. 일 실시예에서, 부모/자녀 관계는 완전한 참조 무결성을 보장하기 위해 항상 추가적인 정보를 구비한다. 예를 들어, 일 실시예에서, 벌크 데이터 송신 및 저장 경로는 송신 전에 개시자에 데이터에 다이제스트를 미리-계산하게 하고 이 데이터와 다이제스트를 수신기에 공급하게 하는 것에 의해 보호된다. 데이터 송신의 수신기는 재계산하는 동작, 비교하는 동작 및 재계산된 다이제스트를 포함하는 수신확인을 송신기에 제공하는 동작을 담당한다. 이러한 데이터 무결성 체크는, 예를 들어, 전술한 프런트 엔드 서비스, 임시 데이터 저장 서비스, 데이터 플랜 저장 개체 등에 의해 구현될 수 있다.
도 3은 적어도 하나의 실시예에 따라 아카이벌 데이터 저장 시스템의 컴포넌트들을 연결할 수 있는 상호 연결 네트워크(300)를 도시한다. 구체적으로, 도시된 예는 데이터 플랜 성분들이 상호 연결 네트워크(300)에 연결된 방식을 도시한다. 일부 실시예에서, 상호 연결 네트워크(300)는 링크 대역폭이 트리의 루트 쪽으로 더 높이 또는 "더 비만(fat)하게" 성장하는 비만 트리 상호 연결 네트워크를 포함할 수 있다. 도시된 예에서, 데이터 플랜은 하나 이상의 데이터센터(301)를 포함한다. 각 데이터센터(301)는 하나 이상의 저장 노드 관리자 서버 랙(302)을 포함할 수 있는데, 여기서 각 서버 랙은 도 2와 관련하여 설명된 것과 같이 저장 노드 관리자의 기능을 집합적으로 제공하는 하나 이상의 서버를 호스트한다. 다른 실시예에서, 각 저장 노드 관리자 서버 랙은 하나를 초과하는 저장 노드 관리자를 호스트할 수 있다. 랙당 저장 노드 관리자의 개수, 저장 노드 관리자 랙의 개수 등과 같은 구성 파라미터는 비용, 확장성, 리던던시 및 성능 요구조건, 하드웨어 및 소프트웨어 자원 등과 같은 인자에 기초하여 결정될 수 있다.
각 저장 노드 관리자 서버 랙(302)은 상호 연결 네트워크(300)에 연결하는데 사용되는 상호 연결부(308)에 저장 노드 관리자 랙 연결(314)을 구비할 수 있다. 일부 실시예에서, 연결(314)은 랙 상위 이더넷 스위치 또는 임의의 다른 유형의 네트워크 스위치를 포함할 수 있는 네트워크 스위치(303)를 사용하여 구현된다. 각종 실시예에서, 상호 연결부(308)를 사용하여 높은-대역폭 및 낮은 레이턴시 벌크 데이터 전송을 가능하게 한다. 예를 들어, 상호 연결은 클로스(Clos) 네트워크, 비만 트리 상호 연결, 비동기 전송 모드(Asynchronous Transfer Mode: ATM) 네트워크, 고속 또는 기가비트 이더넷 등을 포함할 수 있다.
각종 실시예에서, 저장 노드 관리자 랙 연결(314)의 대역폭은 동일한 또는 상이한 데이터 센터 내에 위치된 저장 노드와 저장 노드 관리자 사이에 높은 대역폭과 낮은 레이턴시 통신을 가능하게 하도록 구성될 수 있다. 예를 들어, 일 실시예에서, 저장 노드 관리자 랙 연결(314)은 초당 10 기가비트(Gbps)의 대역폭을 구비한다.
일부 실시예에서, 각 데이터센터(301)는 하나 이상의 저장 노드 서버 랙(304)을 더 포함할 수 있고 여기서 각 서버 랙은 도 2와 관련하여 설명된 것과 같이 다수의 저장 노드의 기능을 집합적으로 제공하는 하나 이상의 서버를 호스트한다. 랙당 저장 노드의 개수, 저장 노드 랙의 개수, 저장 노드 관리자와 저장 노드 등 사이의 비율과 같은 구성 파라미터는 비용, 확장성, 리던던시 및 성능 요구조건, 하드웨어 및 소프트웨어 자원 등과 같은 인자에 기초하여 결정될 수 있다. 예를 들어, 일 실시예에서, 저장 노드 서버 랙당 3개의 저장 노드가 있고, 데이터 센터당 30 내지 80개의 랙이 있고 10 내지 1의 저장 노드/저장 노드 관리자의 비율이 있다.
각 저장 노드 서버 랙(304)은 상호 연결 네트워크(300)에 연결하는데 사용되는 상호 연결 네트워크 스위치(308)에 저장 노드 랙 연결(316)을 구비할 수 있다. 일부 실시예에서, 연결(316)은 랙 상위 이더넷 스위치 또는 임의의 다른 유형의 네트워크 스위치를 포함할 수 있는 네트워크 스위치(305)를 사용하여 구현된다. 각종 실시예에서, 저장 노드 랙 연결(316)의 대역폭은 동일한 또는 상이한 데이터 센터 내에 위치된 저장 노드 관리자와 저장 노드 사이에 높은 대역폭과 낮은 레이턴시 통신을 가능하게 하도록 구성될 수 있다. 일부 실시예에서, 저장 노드 랙 연결(316)은 저장 노드 관리자 랙 연결(314)보다 더 높은 대역폭을 구비한다. 예를 들어, 일 실시예에서, 저장 노드 랙 연결(316)은 20 Gbps의 대역폭을 구비하는 반면, 저장 노드 관리자 랙 연결(314)은 10 Gbps의 대역폭을 구비한다.
일부 실시예에서, 데이터센터(301)(저장 노드 관리자 및 저장 노드를 포함함)는, 연결(310)을 통해, 도 2와 관련하여 설명된 바와 같이 다른 컴퓨팅 자원 서비스(306), 예를 들어, 페이로드 데이터 캐시(228), 저장 노드 관리자 작업 저장소(240), 저장 노드 레지스트라(248), 저장 노드 레지스트라 저장소(350), 고아 클린업 데이터 저장소(254), 메타데이터 관리자 작업 저장소(258) 등과 통신한다.
일부 실시예에서, 하나 이상의 데이터센터(301)는 데이터센터간 연결(312)을 통해 연결될 수 있다. 일부 실시예에서, 연결(310 및 312)은 효과적인 동작을 달성하고 하드웨어 자원을 사용하도록 구성될 수 있다. 예를 들어, 일 실시예에서, 연결(310)은 데이터센터당 30 내지 100 Gbps의 대역폭을 구비하고 데이터센터간 연결(312)은 100 내지 250 Gbps의 대역폭을 구비한다.
도 4는 적어도 하나의 실시예에 따라 아카이벌 데이터 저장 시스템의 컴포넌트들을 연결할 수 있는 상호 연결 네트워크(400)를 도시한다. 특히, 도시된 예는 비-데이터 플랜 성분들이 상호 연결 네트워크(300)에 연결된 방식을 도시한다. 도시된 바와 같이, 도 2와 관련하여 설명된 바와 같은 프런트 엔드 서비스는 하나 이상의 프런트 엔드 서버 랙(402)에 의해 호스팅될 수 있다. 예를 들어, 각 프런트 엔드 서버 랙(402)은 하나 이상의 웹 서버를 호스트할 수 있다. 프런트 엔드 서버 랙(402)은 네트워크 스위치(408)를 통해 상호 연결 네트워크(400)에 연결될 수 있다. 일 실시예에서, 프런트 엔드 서비스의 개수, 랙당 서비스의 개수, 프런트 엔드 서버 랙 연결(314)의 대역폭 등과 같은 구성 파라미터는 도 3과 관련하여 설명된 바와 같이 저장 노드 관리자에 대한 것에 대략 대응할 수 있다.
일부 실시예에서, 도 2와 관련하여 설명된 제어 플랜 서비스 및 메타데이터 플랜 서비스는 하나 이상의 서버 랙(404)에 의해 호스트될 수 있다. 이러한 서비스는 작업 추적기(230), 메타데이터 관리자(260), 클린업 에이전트(232), 작업 요청 밸런서(238) 및 다른 서비스를 포함할 수 있다. 일부 실시예에서, 이러한 서비스는 빈번한 벌크 데이터 전송을 처리하지 않는 서비스를 포함한다. 마지막으로, 본 명세서에 설명된 성분들은 연결(410)을 통해, 도 2와 관련하여 설명된 바와 같이 다른 컴퓨팅 자원 서비스(406), 예를 들어, 페이로드 데이터 캐시(228), 작업 추적기 저장소(232), 메타데이터 관리자 작업 저장소(258) 등과 통신할 수 있다.
도 5는 적어도 하나의 실시예에 따라 데이터를 저장하는 예시적인 공정(500)을 도시한다. 공정(500)의 일부나 전부(또는 본 명세서에 설명된 임의의 다른 공정 또는 이들의 변형 및/또는 조합)는 실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에 수행될 수 있고, 하드웨어 또는 이들의 조합에 의하여 하나 이상의 프로세서에 집합적으로 실행되는 코드(예를 들어, 실행가능한 명령, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로 구현될 수 있다. 이 코드는, 예를 들어, 하나 이상의 프로세서에 의해 실행가능한 복수의 명령을 포함하는 컴퓨터 프로그램 형태의 컴퓨터-판독가능한 저장 매체에 저장될 수 있다. 컴퓨터-판독가능한 저장 매체는 비-일시적인 것일 수 있다. 일 실시예에서, 도 2와 관련하여 설명된 아카이벌 데이터 저장 시스템(206)의 하나 이상의 성분은 공정(500)을 수행할 수 있다.
일 실시예에서, 공정(500)은 문서, 비디오 또는 오디오 파일 등과 같은 아카이벌 데이터를 저장하는 데이터 저장 요청을 수신하는 단계(502)를 포함한다. 이러한 데이터 저장 요청은 페이로드 데이터의 사이즈 및 다이제스트와 같은 페이로드 데이터 및 메타데이터, 사용자 식별 정보(예를 들어, 사용자 이름, 계좌 식별자 등), 논리적 데이터 컨테이너 식별자 등을 포함할 수 있다. 일부 실시예에서, 공정(500)은 더 큰 페이로드 데이터의 일부를 각각 포함하는 다수의 저장 요청을 수신하는 단계(502)를 포함할 수 있다. 다른 실시예에서, 저장 요청은 업로드될 다수의 데이터 객체를 포함할 수 있다. 일 실시예에서, 공정(500)의 단계(502)는 도 2와 관련하여 설명된 바와 같이 프런트 엔드(208)의 API 요청 핸들러(218)와 같은 서비스에 의해 구현된다.
일 실시예에서, 공정(500)은 요청을 수신(502)할 때 저장 요청을 처리하는 단계(504)를 포함한다. 이러한 처리는, 예를 들어, 수신된 데이터의 무결성을 확인하는 것, 고객을 인증하는 것, 액세스 제어 정책에 대해 요청된 액세스를 허가하는 것, 계측- 및 어카운팅-관련된 활동을 수행하는 것 등을 포함할 수 있다. 일 실시예에서, 이러한 처리는 도 2와 관련하여 설명된 바와 같이 프런트 엔드(208)의 서비스에 의해 수행될 수 있다. 일 실시예에서, 이러한 요청은, 예를 들어, 배취 모드에서 다른 요청과 관련하여 처리될 수 있다.
일 실시예에서, 공정(500)은 저장 요청과 연관된 데이터를 준비 데이터 저장소에 저장하는 단계(506)를 포함한다. 이러한 준비 데이터 저장소는 도 2와 관련하여 설명된 바와 같이 페이로드 데이터 캐시(228)에 의해 제공된 바와 같이 임시 데이터 저장소를 포함할 수 있다. 일부 실시예에서, 페이로드 데이터는 준비 저장소에만 저장된다. 다른 실시예에서, 페이로드 데이터와 관련된 메타 데이터는 준비 저장소에 더 저장될 수 있다. 일 실시예에서, 데이터 무결성은 준비 데이터 저장소에 저장되기 전에 (예를 들어, 다이제스트에 기초하여) 검증된다.
일 실시예에서, 공정(500)은, 예를 들어, 저장 요청에 응답하여 저장될 데이터와 연관된 데이터 객체 식별자를 제공하는 단계(508)를 포함한다. 전술한 바와 같이, 데이터 객체 식별자는 후속 요청에 의해 사용되어 저장된 데이터를 검색하거나 삭제하거나 참조할 수 있다. 일 실시예에서, 데이터 객체 식별자는 저장된 데이터 객체를 찾는데 사용될 수 있는 저장 위치 정보, 페이로드 데이터의 무결성을 검증하는데 사용될 수 있는 사이즈, 다이제스트, 시간스탬프 등과 같은 페이로드 검증 정보, 데이터 객체 식별자 자체와 같은 메타데이터의 무결성을 검증하는데 사용될 수 있는 에러-검출 코드와 같은 메타데이터 검증 정보 및 데이터 객체 식별자에 인코딩된 정보 등을 인코딩할 수 있다. 일 실시예에서, 데이터 객체 식별자는 후속 고객 요청을 검증하거나 허가하는데 사용된 정보를 더 인코딩할 수 있다. 예를 들어, 데이터 객체 식별자는 데이터 객체가 저장된 논리적 데이터 컨테이너의 식별자를 인코딩할 수 있다. 이 데이터 객체를 검색하는 후속 요청에서, 논리적 데이터 컨테이너 식별자를 사용하여 요청 개체가 논리적 데이터 컨테이너에 액세스하여 내부에 포함된 데이터 객체에 액세스하였는지 여부를 결정할 수 있다. 일부 실시예에서, 데이터 객체 식별자는 고객이 공급한 정보(예를 들어, 데이터 객체에 대한 글로벌 고유 식별자(GUID) 등) 및/또는 공정(500)을 수행하는 시스템에 의해 수집되거나 계산된 정보(예를 들어, 저장 위치 정보)에 기초하여 정보를 인코딩할 수 있다. 일부 실시예에서, 데이터 객체 식별자를 생성하는 것은 암호 개인 키를 사용하여 전술한 정보의 일부나 전부를 암호화하는 것을 포함할 수 있다. 일부 실시예에서, 암호 개인 키는 주기적으로 회전될 수 있다. 일부 실시예에서, 데이터 객체 식별자는 전술한 것과는 상이한 시간에서 생성되고/되거나 제공될 수 있다. 예를 들어, 데이터 객체 식별자는 저장 작업(후술됨)이 생성되고/되거나 완료된 후 생성되고/되거나 제공될 수 있다.
일 실시예에서, 데이터 객체 식별자를 제공(508)하는 것은 데이터가 실제로 거기에 저장되기 전에 저장 위치를 결정하는 것을 포함할 수 있다. 예를 들어, 이러한 결정은 동작 상태(예를 들어, 활성 또는 비활성), 이용가능한 저장 공간, 데이터 분리 요구조건 등과 같은 기존의 데이터 저장 개체에 관한 재고 정보에 적어도 부분적으로 기초할 수 있다. 도 2에 도시된 환경(200)과 같은 환경에서, 이러한 결정은 도 2와 관련하여 전술한 바와 같이 저장 노드 레지스트라(248)와 같은 서비스에 의해 구현될 수 있다. 일부 실시예에서, 이러한 결정은 도 2와 관련된 바와 같이 저장 할당기(256)와 같은 서비스에 의해 하나 이상의 물리적 저장 디바이스에 새로운 저장 공간(예를 들어, 볼륨)을 할당하는 것을 포함할 수 있다.
일 실시예에서, 저장 위치 식별자는 위에서 결정된 저장 위치를 나타나도록 생성될 수 있다. 이러한 저장 위치 식별자는, 예를 들어, 볼륨 식별자 성분 및 데이터 객체 식별자 성분을 포함하는 볼륨 참조 객체를 포함할 수 있다. 볼륨 참조 성분은 데이터가 저장된 볼륨을 식별할 수 있고 데이터 객체 식별자 성분은 데이터가 저장된 볼륨 내 위치를 식별할 수 있다. 일반적으로, 저장 위치 식별자는 데이터를 구성하는 논리적 또는 물리적 데이터 저장 형태(예를 들어, 계층) 내 여러 레벨을 식별하는 성분을 포함할 수 있다. 일부 실시예에서, 저장 위치 식별자는 실제 페이로드 데이터가 저장된 곳 또는 데이터가 저장된 곳을 참조하는 체인(chain)을 나타낼 수 있다.
일 실시예에서, 데이터 객체 식별자는 다이제스트 페이로드 데이터와 같은 저장될 데이터의 적어도 일부의 다이제스트(예를 들어, 해쉬)를 인코딩한다. 일부 실시예에서, 다이제스트는 적어도 부분적으로 고객-제공된 다이제스트에 기초할 수 있다. 다른 실시예에서, 다이제스트는 페이로드 데이터에 기초하여 스크래치로부터 계산될 수 있다.
일 실시예에서, 공정(500)은 데이터를 장기간 데이터 저장소에 지속시키기 위한 저장 작업을 생성하는 단계(510) 및 실행할 저장 작업을 스케줄링하는 단계(512)를 포함한다. 도 2와 관련하여 설명된 바와 같은 환경(200)에서, 단계(508, 510 및 512)는 전술한 바와 같이 직접 I/O(210)를 위한 제어 플랜 및 공통 제어 플랜(212)의 성분에 의해 적어도 부분적으로 구현될 수 있다. 구체적으로, 일 실시예에서, 작업 추적기(230)는 작업 레코드를 생성하고 작업 레코드를 작업 추적기 저장소(232)에 저장한다. 전술한 바와 같이, 작업 추적기(230)는 배취 처리를 수행하여 작업 추적기 저장소(232)에 대한 총 거래 수를 감소시킬 수 있다. 추가적으로, 작업 추적기 저장소(232)는 병렬 처리, 클린업 동작 등을 제공하도록 파티션되거나 최적화될 수 있다. 전술한 바와 같이 작업 레코드는, 고객 계좌 식별자, 작업 식별자, 저장 위치 식별자, 페이로드 데이터 캐시(228)에 저장된 데이터에 관한 참조, 작업 상태, 작업 생성 및/또는 만료 시간 등과 같은 작업-관련된 데이터를 포함할 수 있다. 일부 실시예에서, 저장 작업은 데이터 객체 식별자가 생성되고/되거나 제공되기 전에 생성될 수 있다. 예를 들어, 데이터 객체 식별자 대신에 또는 이에 추가하여 저장 작업 식별자는 전술한 단계(508)에서 저장 요청에 응답하여 제공될 수 있다.
일 실시예에서, 실행할 저장 작업을 스케줄링하는 단계(512)는 도 2의 공통 제어 플랜(212)과 관련하여 설명된 바와 같이, 큐-기반 부하 레벨링 또는 밸런싱, 작업 파티셔닝 등과 같은 작업 플래닝 및 최적화를 수행하는 것을 포함한다. 예를 들어, 일 실시예에서, 작업 요청 밸런서(238)는 스케줄 알고리즘에 따라 작업 요청 큐(236)로부터 작업 항목을 저장 노드 관리자 작업 저장소(240)에 전송하여 I/O(210)를 위한 제어 플랜으로부터 입력되는 평균 부하 레벨(작업)로 피크를 감쇠시켜 관리가능한 작업 부하를 데이터 플랜(214)에 전달할 수 있다. 또 다른 예로서, 저장 노드 관리자 작업 저장소(240)는 저장 노드 관리자(244)와 같은 다수의 작업자에 의해 작업의 병렬 처리를 제공하도록 파티션될 수 있다. 또 다른 예로서, 저장 노드 관리자 작업 저장소(240)는 배취 처리 및 다른 작업 최적화를 제공하는 질문, 분류 및 다른 기능을 제공할 수 있다.
일 실시예에서, 공정(500)은, 예를 들어, 도 2와 관련된 바와 같이 저장(240)된 저장 노드 관리자 작업으로부터 저장 노드 관리자(244)에 의해 실행할 저장 작업을 선택하는 단계(514)를 포함한다. 저장 작업은 배취 처리를 위해 다른 작업과 함께 선택(514)되거나 또는 전술한 작업 플래닝 및 최적화의 결과로 선택될 수 있다.
일 실시예에서, 공정(500)은 도 2와 관련하여 전술한 페이로드 데이터 캐시(228)와 같은 준비 저장소로부터 데이터를 획득하는 단계(516)를 포함한다. 일부 실시예에서, 데이터의 무결성은, 예를 들어, 사이즈, 다이제스트, 에러-검출 코드 등을 확인하는 것에 의해 체크될 수 있다.
일 실시예에서, 공정(500)은 암호화 구조와 같은 하나 이상의 데이터 인코딩 구조, 소거 인코딩과 같은 리던던시 인코딩 구조, 독립적인 디스크의 리던던트 어레이(RAID)의 인코딩 구조, 복제 등을 획득하는 단계(518)를 포함한다. 일부 실시예에서, 이러한 인코딩 구조는 상이한 요구조건에 적응하도록 진보된다. 예를 들어, 암호화 키는 주기적으로 회전될 수 있고, 소거 코딩 구조의 스트레치 인자(stretch factor)는 상이한 하드웨어 구성, 리던던시 요구조건 등에 시간에 따라 조절될 수 있다.
일 실시예에서, 공정(500)은 획득된 인코딩 구조로 인코딩하는 단계(520)를 포함한다. 예를 들어, 일 실시예에서, 데이터는 암호화되고 암호화된 데이터는 소거-인코딩된다. 일 실시예에서, 도 2와 관련하여 설명된 저장 노드 관리자(244)는 본 명세서에 설명된 데이터 인코딩을 수행하도록 구성될 수 있다. 일 실시예에서, 이러한 인코딩 구조를 적용하면 복수의 인코딩된 데이터 성분 또는 조각을 생성하는데, 이들 조각은 저장 디바이스, 저장 노드, 데이터센터 등과 같은 상이한 저장 개체에 걸쳐 저장되어 결함 공차를 제공할 수 있다. 데이터가 (예를 들어, 다중-파트 업로드의 경우에) 다수의 파트를 포함할 수 있는 일 실시예에서, 각 파트는 본 명세서에 설명된 바와 같이 인코딩되고 저장될 수 있다.
일 실시예에서, 공정(500)은 이러한 인코딩된 데이터 성분을 위한 저장 개체를 결정하는 단계(522)를 포함한다. 예를 들어, 도 2에 도시된 환경(200)에서, 저장 노드 관리자(244)는 볼륨 식별자를 사용하여 저장 노드 레지스트라(248)에 질문하는 것에 의해 인코딩된 데이터 성분을 저장할 복수의 저장 노드(246)를 결정할 수 있다. 이러한 볼륨 식별자는 저장될 데이터와 연관된 저장 위치 식별자의 일부일 수 있다. 주어진 볼륨 식별자를 갖는 질문에 응답하여, 일 실시예에서, 저장 노드 레지스트라(248)는 인코딩된 데이터 성분을 저장하는 저장 노드(246)의 네트워크 위치(종점단, DNS 이름, IP 어드레스 등을 포함함)의 리스트를 리턴한다. 도 2와 관련하여 설명된 바와 같이, 저장 노드 레지스트라(248)는 저장 노드(246) 자체로부터 자체 리포트되고 동적으로 제공되고/되거나 업데이트된 재고 정보에 기초하여 이러한 리스트를 결정할 수 있다. 일부 실시예에서, 이러한 결정은 데이터 분리, 결함 공차, 부하 밸런싱, 전력 보존, 데이터 국지성 및 다른 고려사항에 기초한다. 일부 실시예에서, 저장 레지스트라(248)는, 예를 들어, 도 2와 관련하여 설명된 바와 같이 저장 할당기(256)를 호출하는 것에 의해 새로운 저장 공간이 할당될 수 있게 한다.
일 실시예에서, 공정(500)은 결정된 저장 개체에서 인코딩된 데이터 성분(들)을 저장하는 단계(524)를 포함한다. 예를 들어, 도 2에 의해 도시된 환경(200)에서, 저장 노드 관리자(244)는 주어진 저장 위치에서 데이터 성분을 저장하기 위해 앞서 결정된 저장 노드(246) 각각을 요청할 수 있다. 각 저장 노드(246)는, 데이터 성분을 저장하는 저장 노드 관리자(244)로부터 저장 요청을 수신할 때, 데이터 성분이 연결된 저장 디바이스에 저장되게 할 수 있다. 일부 실시예에서, 데이터 객체 식별자의 적어도 일부는 인코딩된 또는 비-인코딩된 형태로 데이터 성분의 전부 또는 일부에 저장된다. 예를 들어, 데이터 객체 식별자는 각 데이터 성분의 헤더에 및/또는 볼륨 성분에 저장된 볼륨 성분 지수에 저장될 수 있다. 일부 실시예에서, 저장 노드(246)는 배취 처리 또는 다른 최적화를 수행하여 저장 노드 관리자(244)로부터 요청을 처리할 수 있다.
일 실시예에서, 저장 노드(246)는 데이터가 성공적으로 저장되었는지 여부를 나타내는 수신확인을 요청 저장 노드 관리자(244)에 송신한다. 일부 실시예에서, 저장 노드(246)는, 일부 이유 때문에, 요청이 충족될 수 없을 때 에러 메시지를 리턴한다. 예를 들어, 저장 노드가 동일한 저장 위치에 저장할 2개의 요청을 수신하는 경우, 하나의 또는 2개의 요청이 실패할 수 있다. 일 실시예에서, 저장 노드(246)는 데이터를 저장하기 전에 검증 체크를 수행하고 검증 체크가 실패하는 경우 에러를 리턴한다. 예를 들어, 데이터 무결성은 에러-검출 코드 또는 다이제스트를 체크하는 것에 의해 확인될 수 있다. 또 다른 예로서, 저장 노드(246)는, 예를 들어, 저장 요청에 의해 식별된 볼륨이 저장 노드에 의해 저장되고/되거나 볼륨이 데이터 성분을 저장하기에 충분한 공간을 구비하는 볼륨 지수에 기초하여 확인할 수 있다.
일부 실시예에서, 데이터 저장은 저장 노드 관리자(244)가 요청된 저장 노드(246)의 적어도 서브셋(저장 정족수(storage quorum))으로부터 긍정 수신확인을 수신확인할 때 성공적인 것으로 고려된다. 일부 실시예에서, 저장 노드 관리자(244)는 작업을 재시도하는데 필요한 상태를 제거하기 전에 수신확인의 정족수를 수신할 때까지 대기할 수 있다. 이러한 상태 정보는 수신확인이 수신되지 않은 인코딩된 데이터 성분을 포함할 수 있다. 다른 실시예에서, 처리량을 개선하기 위해, 저장 노드 관리자(244)는 수신확인의 정족수를 수신하기 전에 작업을 재시도하는데 필요한 상태를 제거할 수 있다.
일 실시예에서, 공정(500)은, 예를 들어, 데이터 플랜(214)에 의해 유지되는 메타데이터(예를 들어, 저장 디바이스의 지수 및 저장 공간 정보, 저장 노드 레지스트라 저장소(250)에 저장된 맵핑 정보 등), 제어 플랜(210 및 212)에 의해 유지되는 메타데이터(예를 들어, 작업-관련된 정보), 메타데이터 플랜(216)에 의해 유지되는 메타데이터(예를 들어, 한랭 지수) 등을 포함하는 메타데이터 정보를 업데이트하는 단계(526)를 포함한다. 각종 실시예에서, 이러한 메타데이터 정보의 일부는 배취 처리를 통해 그리고/또는 주기적으로 업데이트되어 성능 및 비용 충격을 감소시킬 수 있다. 예를 들어, 데이터 플랜(214)에서, 저장 노드 레지스트라 저장소(250)에 의해 유지되는 정보는 이러한 맵핑이 아직 거기에 없는 경우 데이터 성분이 저장된 저장 노드(246)와 새로이 저장된 데이터의 볼륨 식별자의 추가적인 맵핑을 제공하도록 업데이트될 수 있다. 또 다른 예로서, 저장 디바이스에서 볼륨 지수는 새로이 추가된 데이터 성분을 반영하도록 업데이트될 수 있다.
공통 제어 플랜(212)에서, 완료된 작업을 위한 작업 엔트리는 도 2와 관련하여 설명된 바와 같이 저장 노드 관리자 작업 저장소(240)로부터 제거되고 작업 결과 큐(242)에 추가될 수 있다. 직접 I/O(210)를 위한 제어 플랜에서, 작업 추적기 저장소(232)에서 작업 레코드의 상태는, 예를 들어, 작업 결과 큐(242)를 모니터링하는 작업 추적기(230)에 의해 업데이트될 수 있다. 각종 실시예에서, 완료되지 못한 작업은 다수의 시간 동안 재시도될 수 있다. 예를 들어, 일 실시예에서, 새로운 작업은 상이한 위치에 데이터를 저장하도록 생성될 수 있다. 또 다른 예로서, (예를 들어, 저장 노드 관리자 작업 저장소(240), 작업 추적기 저장소(232) 등에 있는) 기존의 작업 레코드는 동일한 작업의 재시도를 제공하도록 업데이트될 수 있다.
메타데이터 플랜(216)에서, 메타데이터는 새로이 저장된 데이터를 반영하도록 업데이트될 수 있다. 예를 들어, 완료된 작업은 작업 결과 큐(242)로부터 메타데이터 관리자 작업 저장소(258)로 풀링(pull)되고 메타데이터 관리자(260)에 의해 배취 처리되어 한랭 지수 저장소(262)에 저장된 바와 같은 업데이트된 지수를 생성할 수 있다. 또 다른 예로서, 고객 정보는 계측 및 어카운팅을 위하여 변화를 반영하도록 업데이트될 수 있다.
마지막으로, 일부 실시예에서, 저장 작업이 성공적으로 완료되면, 저장 작업과 연관된 작업 레코드, 페이로드 데이터 및 다른 데이터는, 예를 들어, 도 2와 관련되어 설명된 바와 같이 클린업 에이전트(234)에 의해 제거될 수 있다. 일부 실시예에서, 이러한 제거는 배취 처리, 병렬 처리 등에 의해 처리될 수 있다.
도 6은 데이터, 적어도 하나의 실시예에 따라 데이터를 검색하는 예시적인 공정(500)을 도시한다. 일 실시예에서, 도 2와 관련하여 설명된 바와 같이 아카이벌 데이터 저장 시스템(206)의 하나 이상의 성분은 수행 공정(600)을 집합적으로 수행한다.
일 실시예에서, 공정(600)은 전술한 공정(500)에 의해 저장된 바와 같이 데이터를 검색하는 데이터 검색 요청을 수신하는 단계(602)를 포함한다. 이러한 데이터 검색 요청은 전술한 공정(500)의 단계(508)에 의해 제공된 바와 같은 데이터 객체 식별자, 또는 검색될 데이터를 식별하는데 사용될 수 있는 임의의 다른 정보를 포함할 수 있다.
일 실시예에서, 공정(600)은 요청을 수신(602)할 때 데이터 검색 요청을 처리하는 단계(604)를 포함한다. 이러한 처리는, 예를 들어, 고객을 인증하고, 액세스 제어 정책에 대해 요청된 액세스를 허가하고, 계측 및 어카운팅 관련 활동 등을 수행하는 것을 포함할 수 있다. 일 실시예에서, 이러한 처리는 도 2와 관련하여 설명된 바와 같이 프런트 엔드(208)의 서비스에 의해 수행될 수 있다. 일 실시예에서, 이러한 요청은 다른 요청과 관련하여, 예를 들어, 배취 모드에서 처리될 수 있다.
일 실시예에서, 검색 요청을 처리하는 단계(604)는 검색 요청에 포함된 데이터 객체 식별자에 적어도 부분적으로 기초할 수 있다. 전술한 바와 같이, 데이터 객체 식별자는 저장 위치 정보, 사이즈, 생성 시간스탬프, 페이로드 다이제스트 등과 같은 페이로드 검증 정보, 메타데이터 검증 정보, 정책 정보 등을 인코딩할 수 있다. 일 실시예에서, 검색 요청을 처리하는 단계(604)는, 예를 들어, 개인 암호 키를 사용하고 디코딩된 정보 중 적어도 일부를 사용하여 데이터 객체 식별자에 인코딩된 정보를 디코딩하여 검색 요청을 검증하는 단계를 포함한다. 예를 들어, 정책 정보는 검색 요청의 요청 개체가 요청된 액세스를 수행하는데 요구되는 허가를 가지는지를 검증하는데 사용될 수 있는 액세스 제어 정보를 포함할 수 있다. 또 다른 예로서, 메타데이터 검증 정보는 데이터 객체 식별자 또는 그 성분의 무결성을 확인하는데 사용될 수 있는 순환 중복 체크(cyclic redundancy check: "CRC")와 같은 에러-검출 코드를 포함할 수 있다.
일 실시예에서, 공정(600)은 데이터 검색 요청에 대응하는 데이터 검색 작업을 생성하는 단계(606) 및, 예를 들어, 데이터 검색 요청에 응답하여 데이터 검색 작업과 연관된 작업 식별자를 제공하는 단계(608)를 포함한다. 일부 실시예에서, 데이터 검색 작업을 생성하는 단계(606)는 도 5에 도시된 공정(500)의 단계(510)와 관련하여 설명된 바와 같이 데이터 저장 작업을 생성하는 것과 유사하다. 예를 들어, 일 실시예에서, 작업 추적기(230)는 데이터 객체 식별자에서 인코딩된 적어도 일부 정보 및/또는 작업 만료 시간 등과 같은 추가적인 정보를 포함하는 작업 레코드를 생성하고 작업 추적기 저장소(232)에 작업 레코드를 저장할 수 있다. 전술한 바와 같이, 작업 추적기(230)는 배취 처리를 수행하여 작업 추적기 저장소(232)에 대한 총 거래 수를 감소시킬 수 있다. 추가적으로, 작업 추적기 저장소(232)는 병렬 처리, 클린업 동작 등을 제공하도록 파티션되거나 최적화될 수 있다.
일 실시예에서, 공정(600)은 앞서 생성된 데이터 검색 작업을 스케줄링하는 단계(610)를 포함한다. 일부 실시예에서, 실행할 데이터 검색 작업을 스케줄링하는 단계(610)는 도 5의 공정(500)의 단계(512)와 관련하여 설명된 바와 같은 작업 플래닝 및 최적화를 수행하는 것을 포함한다. 예를 들어, 데이터 검색 작업은 작업 큐에 제출되어 비용, 전력 관리 스케줄 등에 적어도 부분적으로 기초하여 다른 작업과 함께 배취 처리를 하기 위해 스케줄링된다. 또 다른 예로서, 데이터 검색 작업은 데이터 국지성 등에 기초하여 다른 검색 작업과 융합될 수 있다.
일 실시예에서, 공정(600)은, 예를 들어, 도 2와 관련하여 설명된 바와 같이 저장(240)된 저장 노드 관리자 작업으로부터 저장 노드 관리자(244)에 의해 실행될 데이터 검색 작업을 선택하는 단계(612)를 포함한다. 검색 작업은 배취 처리를 위해 다른 작업과 함께 선택(612)되거나 또는 전술한 작업 플래닝 및 최적화의 결과로 선택될 수 있다.
일 실시예에서, 공정(600)은 전술한 공정(500)과 같은 저장 공정에 의해 생성된 인코딩된 데이터 성분을 저장하는 저장 개체를 결정하는 단계(614)를 포함한다. 일 실시예에서, 저장 노드 관리자(244)는 상기 공정(500)의 단계(522)와 관련하여 설명된 것과 유사한 방식으로 인코딩된 데이터 성분을 검색할 복수의 저장 노드(246)를 결정할 수 있다. 예를 들어, 이러한 결정은 부하 밸런싱, 전력 보존, 효율 및 다른 고려사항에 기초할 수 있다.
일 실시예에서, 공정(600)은 검색된 데이터를 디코딩하는데 사용될 수 있는 하나 이상의 데이터 디코딩 구조를 결정하는 단계(616)를 포함한다. 일반적으로, 이러한 디코딩 구조는 원래의 데이터가 이전에 저장될 때 원래의 데이터에 적용된 인코딩 구조에 대응한다. 예를 들어, 이러한 디코딩 구조는 암호 키로 복호화, 소거-디코딩 등을 포함할 수 있다.
일 실시예에서, 공정(600)은 공정(600)의 단계(614)에서 결정된 저장 개체로부터 인코딩된 데이터 성분의 적어도 일부를 검색하는 단계(618)를 포함한다. 예를 들어, 도 2에 의해 도시된 환경(200)에서, 데이터 검색 작업을 담당하는 저장 노드 관리자(244)는 대응하는 데이터 성분을 검색하는데 앞서 결정된 저장 노드(246)의 서브셋을 요청할 수 있다. 일부 실시예에서, 인코딩된 데이터 성분의 최소 개수는 원래의 데이터를 재구성하는데 필요한데, 여기서 이 개수는 데이터(예를 들어, 소거 코딩의 스트레치 인자)를 인코딩하는데 사용되는 데이터 리던던시 구조에 적어도 부분적으로 기초하여 결정될 수 있다. 이러한 실시예에서, 저장 노드의 서브셋은 인코딩된 데이터 성분의 최소 개수만큼 검색되도록 선택될 수 있다.
저장 노드(246)의 각 서브셋은, 데이터 성분을 검색하는 요청을 저장 노드 관리자(244)로부터 수신할 때, 예를 들어, (데이터 객체 식별자의 일부인) 저장 위치 식별자의 무결성을 체크하고, 저장 노드가 사실 요청된 데이터 성분을 보유하는지를 확인하는 등에 의해 요청을 검증할 수 있다. 검증이 성공적일 때, 저장 노드는 저장 위치 식별자에 적어도 부분적으로 기초하여 데이터 성분을 찾을 수 있다. 예를 들어, 전술한 바와 같이, 저장 위치 식별자는 볼륨 식별자 성분 및 데이터 객체 식별자 성분을 포함하는 볼륨 참조 객체를 포함할 수 있고, 여기서 볼륨 참조 성분은 데이터가 저장된 볼륨을 식별하고 데이터 객체 식별자 성분은 데이터가 저장된 볼륨에 있는 위치를 식별할 수 있다. 일 실시예에서, 저장 노드는, 예를 들어, 연결된 데이터 저장 디바이스로부터 데이터 성분을 판독하고 검색된 데이터 성분을 검색을 요청하는 저장 노드 관리자에 송신한다. 일부 실시예에서, 데이터 무결성은, 예를 들어, 데이터 성분 식별자 또는 그 일부가 검색 작업과 연관된 데이터 성분 식별자에 의해 지시된 것과 동일한 지를 확인하는 것에 의해 체크된다. 일부 실시예에서, 저장 노드는 데이터 성분의 검색과 관련하여 배취 또는 다른 작업 최적화를 수행할 수 있다.
일 실시예에서, 공정(600)은, 공정(600)의 단계(616)에서 결정된 하나 이상의 데이터 디코딩 구조에서 검색된 인코딩된 데이터 성분 중 적어도 최소 개수의 데이터 성분을 디코딩하는 단계(620)를 포함한다. 예를 들어, 일 실시예에서, 검색된 데이터 성분은 소거 디코딩되고 나서 복호화될 수 있다. 일부 실시예에서, 데이터 무결성 체크는, 예를 들어, 데이터 객체 식별자(예를 들어, 사이즈, 시간스탬프, 다이제스트)에서 인코딩된 페이로드 무결성 검증 정보를 사용하여 재구성된 데이터에 수행된다. 일부 경우에, 검색 작업은 검색된 데이터 성분이 최소 개수 미만인 것으로 인해, 데이터 무결성 체크의 실패 등으로 인해 실패할 수 있다. 이 경우에, 검색 작업은 도 5와 관련하여 설명된 것과 유사한 방식으로 재시도될 수 있다. 일부 실시예에서, 원래의 데이터는 다수의 데이터 파트를 포함하고 각 파트는 인코딩되고 저장된다. 이러한 실시예에서, 검색 동안, 각 데이터 파트를 위한 인코딩된 데이터 성분은 검색되고 디코딩되어 (예를 들어, 소거-디코딩되고 복호화되어) 원래의 파트를 형성할 수 있고 디코딩된 부분은 결합되어 원래의 데이터를 형성할 수 있다.
일 실시예에서, 공정(600)은 도 2와 관련하여 설명된 페이로드 데이터 캐시(228)와 같은 준비 저장소에 재구성된 데이터를 저장하는 단계를 포함한다. 일부 실시예에서, 준비 저장소에 저장(622)되는 데이터는 일정 시간 기간 동안 또는 무기한으로 고객이 다운로드하는데 이용가능할 수 있다. 일 실시예에서, 데이터 무결성은 데이터가 준비 저장소에 저장되기 전에 (예를 들어, 다이제스트를 사용하여) 체크될 수 있다.
일 실시예에서, 공정(600)은 검색 작업의 완료의 통지를 검색 요청의 요청자 또는 이러한 통지를 수신하도록 구성된 다른 개체 또는 개체들에 제공하는 단계(624)를 포함한다. 이러한 통지는 개별적으로 또는 배취 방식으로 제공될 수 있다. 다른 실시예에서, 검색 작업의 상태는, 예를 들어, 고객으로부터 폴링 요청이 있을 때 제공될 수 있다.
도 7은 적어도 하나의 실시예에 따라 데이터를 삭제하는 예시적인 공정(700)을 도시한다. 일 실시예에서, 도 2와 관련하여 설명된 바와 같이 아카이벌 데이터 저장 시스템(206)의 하나 이상의 성분은 집합적으로 수행 공정(700)을 수행한다.
일 실시예에서, 공정(700)은 전술한 공정(500)에 의해 저장된 바와 같은 데이터를 삭제하는 데이터 삭제 요청을 수신하는 단계(702)를 포함한다. 이러한 데이터 검색 요청은 전술한 공정(500)의 단계(508)에 의해 제공되는 바와 같은 데이터 객체 식별자, 또는 삭제될 데이터를 식별하는데 사용될 수 있는 임의의 다른 정보를 포함할 수 있다.
일 실시예에서, 공정(700)은 요청을 수신(702)할 때 데이터 삭제 요청을 처리하는 단계(704)를 포함한다. 일부 실시예에서, 처리하는 단계(704)는 전술한 공정(500)의 단계(504) 및 공정(600)의 단계(604)에 대한 것과 유사하다. 예를 들어, 일 실시예에서, 처리하는 단계(704)는 데이터 삭제 요청에 포함된 데이터 객체 식별자에 적어도 부분적으로 기초한다.
일 실시예에서, 공정(700)은 데이터 삭제 요청에 대응하는 데이터 검색 작업을 생성하는 단계(706)를 포함한다. 이러한 검색 작업은 공정(500)의 단계(510)와 관련하여 설명된 저장 작업의 생성 및 공정(600)의 단계(606)와 관련하여 설명된 검색 작업의 생성과 유사하게 생성될 수 있다.
일 실시예에서, 공정(700)은 데이터가 삭제되었다는 수신확인을 제공하는 단계(708)를 포함한다. 일부 실시예에서, 이러한 수신확인은 데이터 삭제 요청이 동기적으로 처리되는 인식을 제공하기 위하여 데이터 삭제 요청에 응답하여 제공될 수 있다. 다른 실시예에서, 데이터 삭제 작업과 연관된 작업 식별자는 데이터 검색 요청에 대한 작업 식별자를 제공하는 것과 유사하게 제공될 수 있다.
일 실시예에서, 공정(700)은 실행할 데이터 삭제 작업을 스케줄링하는 단계(708)를 포함한다. 일부 실시예에서, 데이터 삭제 작업을 스케줄링하는 단계(708)는 전술한 공정(500)의 단계(512)와 관련하여 및 공정(600)의 단계(610)와 관련하여 설명된 것과 유사하게 구현될 수 있다. 예를 들어, 밀접하게-위치된 데이터에 대한 데이터 삭제 작업들이 융합되고/되거나 배취 처리될 수 있다. 또 다른 예로서, 데이터 삭제 작업에는 데이터 검색 작업보다 더 낮은 우선순위가 할당될 수 있다.
일부 실시예에서, 저장된 데이터는 고객에 의해 지정되거나 또는 디폴트에 의해 설정된 연관된 만료 시간을 구비할 수 있다. 이러한 실시예에서, 삭제 작업은 데이터의 만료 시간에 또는 그 부근에 자동적으로 생성(706)되고 스케줄(710)될 수 있다. 일부 실시예에서, 만료 시간은 데이터가 여전히 이용가능하거나 또는 복구가능한 유예 기간과 더 연관될 수 있다. 일부 실시예에서, 펜딩 삭제 통지는 만료 시간 전에, 이 만료 시간에 또는 이 만료 시간 후에 제공될 수 있다.
일부 실시예에서, 공정(700)은, 예를 들어, 도 2와 관련하여 설명된 바와 같이 저장된(240) 저장 노드 관리자 작업으로부터 저장 노드 관리자(244)에 의해 실행할 데이터 삭제 작업을 선택하는 단계(712)를 포함한다. 삭제 작업은 배취 처리를 위해 다른 작업과 함께 선택(712)되거나 또는 전술한 작업 플래닝 및 최적화의 결과로 선택될 수 있다.
일부 실시예에서, 공정(700)은 전술한 공정(500)과 같은 저장 공정에 의해 생성된 데이터 성분을 저장하는 데이터 성분을 위한 저장 개체를 결정하는 단계(714)를 포함한다. 일 실시예에서, 저장 노드 관리자(244)는 전술한 공정(600)의 단계(614)와 관련하여 설명된 것과 유사한 방식으로 인코딩된 데이터 성분을 검색할 복수의 저장 노드(246)를 결정할 수 있다.
일부 실시예에서, 공정(700)은 데이터 성분들 중 적어도 일부를 삭제하는 단계(716)를 포함한다. 예를 들어, 도 2에 의해 도시된 환경(200)에서, 데이터 삭제 작업을 담당하는 저장 노드 관리자(244)는 삭제될 데이터에 대한 데이터 성분을 저장하고 각 데이터 성분을 삭제할 것을 저장 노드의 적어도 서브셋에 요청하는 저장 노드 세트를 식별할 수 있다. 저장 노드(246)의 각 서브셋은, 데이터 성분을 삭제하는 요청을 저장 노드 관리자(244)로부터 수신할 때, 예를 들어, (데이터 객체 식별자의 일부인) 저장 위치 식별자의 무결성을 체크하고, 저장 노드가 사실 요청된 데이터 성분을 보유하는 것을 확인하는 등에 의해 요청을 검증할 수 있다. 검증이 성공적일 때, 저장 노드는 연결된 저장 디바이스로부터 데이터 성분을 삭제하고, 동작이 성공적인지 여부를 나타내는 수신확인을 저장 노드 관리자(244)에 송신할 수 있다. 일 실시예에서, 다수의 데이터 삭제 작업은 서로 가까이 위치된 데이터 객체가 전체적으로 삭제될 수 있도록 배취 방식으로 실행될 수 있다. 일부 실시예에서, 데이터 삭제는 저장 노드 관리자(244)가 저장 노드(246)의 적어도 서브셋으로부터 긍정적인 수신확인을 수신할 때 성공적인 것으로 고려된다. 서브셋의 사이즈는 데이터가 삭제되지 않은 데이터 성분으로부터 차후에 재구성될 수 없는 것을 보장하도록 구성될 수 있다. 실패되었거나 비완료된 데이터 삭제 작업은 공정(500) 및 공정(600)과 관련하여 설명된 데이터 저장 작업 및 데이터 검색 작업을 재시도하는 것과 유사한 방식으로 각각 재시도될 수 있다.
일 실시예에서, 공정(700)은 공정(500)의 단계(526)와 관련하여 설명된 것과 같은 메타데이터 정보를 업데이트하는 단계(718)를 포함한다. 예를 들어, 삭제 동작을 실행하는 저장 노드는 지수, 자유 공간 정보 등을 포함하는 저장 정보를 업데이트할 수 있다. 일 실시예에서, 저장 노드는 저장 노드 레지스트라 또는 저장 노드 레지스트라 저장소에 업데이트를 제공할 수 있다. 각종 실시예에서, 이러한 메타데이터 정보의 일부는 배취 처리를 통해 그리고/또는 주기적으로 업데이트되어 성능 및 비용 충격을 감소시킬 수 있다.
도 8은 데이터 무결성의 검증 기술을 구현할 수 있는 예시적인 흐름(800)을 도시한다. 이들 기술은 도 9 내지 도 13과 관련하여 이후에 보다 상세히 설명된다. 도 8을 참조하면, 예시적인 흐름(800)에서, 동작은 아카이벌 데이터 저장 서비스의 하나 이상의 프로세서에 의해 수행되고/되거나 동작을 수행하는 명령은 아카이벌 데이터 저장 서비스의 하나 이상의 메모리에 저장될 수 있다. 원하는 대로, 흐름(800)은 (802)에서 시작할 수 있고, 여기서 아카이벌 데이터 저장 서비스는 데이터 페이로드(804)의 하나 이상의 파트를 수신할 수 있다. 일부 예에서, 데이터 페이로드(804)는 임의의 개수의 파트를 포함할 수 있으나; 이 예에서는 2개의 파트, 즉 파트 1 및 파트 2가 도시되어 있다. 각 파트 1 및 파트 2는 각각 데이터(806 및 808)를 포함할 수 있다. 일부 경우에, 파트 1 및 파트 2의 사이즈는 업로더에 의해 선택되고/되거나 동일할 수 있다. 그러나, 일부 예에서, 데이터 페이로드(804)의 마지막 부분은 모든 다른 일관적인 사이즈의 파트와는 상이한 사이즈일 수 있다(예를 들어, 본 명세서에서 도 8에 도시되어 있는데, 파트 1은 파트 2보다 더 크다). (810)에서, 흐름(800)은 페이로드(804)의 파트의 서브-파트를 생성할 수 있다. 일부 예에서, 서브-파트의 사이즈는 아카이벌 데이터 저장 서비스에 의해 미리 한정(예를 들어, 1MB)될 수 있다.
일부 예에서, 흐름(800)은 (812)에서 각 서브-파트에 대한 다이제스트를 계산할 수 있다. 각 다이제스트는 (818)에서 생성된 데이터 구조(816)를 포함하나 이들로 제한되지 않는 데이터 구조의 노드(814)로 저장될 수 있다. 단지 예로서, 데이터 구조(816)는 하나 이상의 서브-파트 다이제스트(예를 들어, 노드(814)에서) 및/또는 하나 이상의 파트 다이제스트(예를 들어, 파트 1 다이제스트(820) 및 파트 2 다이제스트(822))를 포함할 수 있다. 추가적으로, (824)에서, 흐름(800)은 데이터 구조(816)의 루트에 대한 루트 다이제스트(826)를 결정할 수 있다. 일부 예에서, 루트 다이제스트(826)는 파트 다이제스트를 연쇄시키고 연쇄된 다이제스트들에 대한 다이제스트를 계산하는 것에 적어도 부분적으로 기초하여 결정되거나 생성될 수 있다. 흐름(800)은 (828)에서 종료할 수 있는데, 여기서 아카이벌 데이터 저장 서비스는 수신된 페이로드(804)가 저장된 페이로드(830)와 매칭하는지를 확인할 수 있다. 저장된 페이로드는, 일부 예에서, 수신되었을 때, 파트(806, 808) 및/또는 서브-파트 각각을 결합한 것에 적어도 부분적으로 기초하여 결정된 데이터(832)를 포함할 수 있다. 일부 예에서, 데이터 페이로드를 확인하는 것은 루트 다이제스트(826)를 업로더로부터 수신된 제2 루트 다이제스트와 비교하는 것에 적어도 부분적으로 기초할 수 있다.
도 9는 데이터 무결성을 검증하는 추가적인 기술을 구현할 수 있는 예시적인 데이터 구조(900)를 도시한다. 예시적인 데이터 구조(900)는 본 명세서에 설명된 기술을 구현하는데 사용될 수 있는 많은 상이한 유형의 데이터 구조 중 하나일 뿐이다. 단지 예로서, 사용자 또는 클라이언트 개체는 데이터 페이로드(902)를 아카이벌 데이터 저장 서비스에 업로드하기를 원할 수 있다. 아카이벌 데이터 저장 서비스는 (하나 이상의 파트에서) 데이터 페이로드(902)를 수신하고, 일부 점에서 (예를 들어, 업로드 직후 또는 일정 시간 후에, 일부 경우에, 상대적으로 긴 시간 후에), 아카이벌 데이터 저장 서비스에 저장된 데이터가, 사실상, 사용자로부터 임의의 사이즈 파티션 정보를 요청함이 없이 업로드된 데이터 페이로드(902)와 동일한 것인지를 사용자가 확인할 수 있도록 구성될 수 있다. 다시 말해, 아카이벌 데이터 저장 서비스는 사용자가 저장된 데이터를 검색하기 위하여 리턴할 수 있는 데이터 객체 식별자를 제공할 수 있으나; 사용자는 데이터 객체 식별자와는 다른 임의의 정보를 저장하지 않을 수 있다.
일부 예에서, 사용자로부터 데이터를 수용(accept)하기 위하여, 아카이벌 데이터 저장 서비스는 사용자가 도 9의 데이터 구조(900)와 같은 트리 다이제스트를 제공할 것을 요청할 수 있다. 데이터 구조(900)를 제공하는 것은 각종 실시예에 따라 다수의 방식으로 수행될 수 있다. 예를 들어, 데이터 구조(900)에 도시된 데이터 전부가 제공될 수 있다. 대안적으로, 데이터 구조(900)가 리프 노드(leaf node)에 대한 데이터로부터만 구성가능한 실시예에서, 리프 노드에 대한 데이터는 다른, 더 높은 레벨 노드에 대한 정보를 제공함이 없이 제공될 수 있다. 추가적으로, 아카이벌 데이터 저장 서비스는 데이터 구조(900)를 생성하는 알고리즘, API 및/또는 SDK 형태의 명령을 제공할 수 있다. 일부 경우에, 업로드 청크의 사이즈 및 각 오프셋에 대한 제한사항이 부과될 수 있다. 예를 들어, 데이터 페이로드(902)의 청크 또는 파트는 1MB의 2의 멱수로 제한될 수 있다. 추가적으로, 일부 예에서, 각 청크의 결정된 사이즈는 특정 업로드 내에서는 변화하지 않을 수 있다. 나아가, 수신된 각 파트에서, 아카이벌 데이터 저장 서비스는 사용자에 의해 사용된 것과 동일한 알고리즘에 적어도 부분적으로 기초하여 자체 다이제스트를 계산하고, 각 파트에 대한 다이제스트를 제공할 수 있다. 저장 작업이 완료될 때, 아카이벌 데이터 저장 서비스는 데이터 객체 식별자 형태의 상위 레벨 다이제스트 값을 제공할 수 있다. 데이터를 검색하는 것은, 일부 예에서, 1MB의 2의 멱수로 제한된 청크 사이즈 및 오프셋, 메시지에 있는 데이터의 다이제스트에 첨부된 메시지 및 작업이 완료될 때 이용가능한 상위 레벨 다이제스트에 제한사항과 함께, 유사한 방식으로 구현될 수 있다. 그러나, 이 구현에 적어도 부분적으로 기초하여, 데이터 페이로드(902)는 사용자에 의해 선택된 청크 사이즈와 독립적으로 확인되거나 검증될 수 있어야 한다. 다이제스트는 SHA-1, SHA-2, MD5, MD6 등과 연관된 것과 같은 암호 해쉬 기능, 순환 중복 체크 등과 같은 체크썸 또는 에러-검출 코드 등을 페이로드 데이터의 적어도 일부에 적용하는 것에 의해 계산될 수 있다.
도 9의 데이터 구조(900)는 사용자가 단일 파트에 데이터 페이로드를 업로드하도록 선택한 데이터 페이로드(902)에 대한 적절한 다이제스트 트리를 도시할 수 있다. 그리하여, 이 예에서 사용자가 선택한 파트 사이즈가 없다. 그러나, 최종 루트 다이제스트(906)는 사용자가 다수의 파트에서 데이터 페이로드(902)를 업로드하도록 선택하였다 하더라도, 및 사용자가 아카이벌 데이터 저장 서비스에 알려지지 않은 파트 사이즈를 선택했고/했거나 사용자에 의해 레코드되지 않았다 하더라도 본 명세서에 설명된 기술을 사용하여 계산할 수 있어야 한다. 이 예에서, 간략화를 위하여, 데이터 페이로드(902)는 7MB 사이즈인 것으로 가정된다. 그리하여, 사용자가 하나의 파트에서 전체 페이로드(902)를 업로드할 것을 요청하였으므로, 데이터 페이로드(902)는 7개의 1MB 청크, 즉 서브 1 내지 서브 7로 파티션될 수 있다. 그러나, 일부 예에서, 페이로드(902)의 사이즈가 1MB로 분할될 수 없다면, 마지막 청크, 즉 서브 7은 1MB보다 더 작을 수 있다. 아카이벌 데이터 저장 서비스는, 해쉬 트리 알고리즘에 적어도 부분적으로 기초하여, 각 1MB 청크(즉, 서브 1 내지 서브 7)에 대한 해쉬 값(또는 다이제스트)을 생성할 수 있다. 각 해쉬 값은 데이터 구조(900)의 최저 자녀 노드 레벨(908)에서 표현될 수 있다. 제2 자녀 노드 레벨(910)의 노드를 생성하기 위하여, 아카이벌 데이터 저장 서비스는 제2-레벨 노드 자녀의 각 쌍을 연쇄시켜 연쇄된 데이터에 해쉬 기능을 실행할 수 있다. 다시 말해, 데이터 구조의 최저 레벨(908)은 페이로드 데이터의 다이제스트를 포함할 수 있는 반면, 부모 노드는 다이제스트의 다이제스트를 포함할 수 있다. 데이터 구조를 위로 이동시키면, 설명된 동작은 루트 다이제스트(906)가 생성될 때까지 반복될 수 있다.
전술한 바와 같이, 일부 경우에, 아카이벌 데이터 저장 서비스는 페이로드(902)의 개별 파트에 대한 중간 루트 다이제스트를 제공할 수 있다. 그러나, 이 예에서, 페이로드가 파트로 분할되지 않았으므로, 아카이벌 데이터 저장 서비스는 루트 다이제스트(906)만을 사용자에 제공할 수 있다. 그러나, 일부 경우에, 아카이벌 데이터 저장 서비스는 생성된 각 1MB 다이제스트를 더 제공할 수 있다. 그리하여, 사용자 또는 아카이벌 데이터 저장 서비스는 데이터가 서로 생성된 루트 다이제스트(906)를 비교한 것에 적어도 부분적으로 기초하여 (1MB 서브-파트 레벨을 포함하여) 올바르게 업로드된 것을 확인할 수 있어야 한다.
도 10은 데이터 무결성을 검증하는 추가적인 기술을 구현할 수 있는 다른 예시적인 데이터 구조(1000)를 도시한다. 도 9를 참조하여 설명된 바와 같이, 예시적인 데이터 구조(1000)는 본 명세서에 설명된 기술을 구현하는데 사용될 수 있는 많은 상이한 유형의 데이터 구조 중 하나일 뿐이다. 단지 예로서, 사용자 또는 클라이언트 개체는 데이터 페이로드(1002)를 아카이벌 데이터 저장 서비스에 업로드하기를 원할 수 있다. 아카이벌 데이터 저장 서비스는 데이터 페이로드(1002)(이 예에서는, 2개의 파트)를 수신하고, 아카이벌 데이터 저장 서비스에 저장된 데이터가 사실상 업로드된 데이터 페이로드(1002)와 동일한 것인지 여부를 사용자가 확인할 수 있도록 구성될 수 있다. 이 검증은 사용자로부터 임의의 사이즈 파티션 정보를 요청함이 없이 행해질 수 있다. 다시 말해, 아카이벌 데이터 저장 서비스는 사용자가 저장된 데이터를 검색하기 위하여 리턴할 수 있는 데이터 객체 식별자를 제공할 수 있으나; 사용자는 저장된 데이터를 요청하고/하거나 검증하기 위하여 데이터 객체 식별자와는 다른 임의의 정보를 저장하지 않을 수 있다.
데이터 구조(1000)를 생성할 때, 사용자 또는 아카이벌 데이터 저장 서비스는 데이터를 서브-파트로 다시 한번 분할할 수 있으나; 이 예에서, 각 파트(파트 1 또는 파트 2)는 개별적으로 분할될 수 있다(예를 들어, 파트 1의 서브 1 내지 서브 4 및 서브 1 내지 서브 3). 다시, 각 서브-파트에 대한 다이제스트가 생성되어 자녀 레벨(1004)의 데이터 구조에 포함될 수 있고, 연쇄된 다이제스트의 다이제스트가 생성되어 제1 부모 레벨(1006)의 데이터 구조에 포함될 수 있다. 그러나, 이 예에서, 페이로드(1002)가 2개의 파트로 분할되었으므로, 상위 레벨 다이제스트가 각 파트에 대해 생성될 수 있다. 그리하여, 파트 1 다이제스트(1008) 및 파트 2 다이제스트(1010)가 생성되어 데이터 구조(1000)에 포함될 수 있다. 추가적으로, 페이로드(1002)가 업로드될 때, 각 서브-파트 다이제스트(예를 들어, 1004에 있는 것) 및 파트 다이제스트(예를 들어, 1008에 있는 것)는 업로드에 포함될 수 있다. 나아가, 루트 다이제스트(1012)는 다른 부모 노드가 생성된 것과 동일한 방식으로 생성될 수 있다. 이것은, 자녀 다이제스트를 연쇄시키고, 연쇄된 정보에 해쉬 기능을 실행하는 것에 적어도 부분적으로 기초한다. 이 예에서, 이 공정은 파트 1 다이제스트(1008) 및 파트 2 다이제스트(1010)를 연쇄시켜 파트-레벨 다이제스트를 생성하는 것을 수반할 수 있다. 아카이벌 데이터 저장 서비스는 파트-레벨 다이제스트에 해쉬 기능을 실행하여 루트 다이제스트(1006)를 생성할 수 있다. 일부 예에서, 루트 다이제스트는 업로드의 시작시에 및 업로드가 완료되면 수신될 수 있다. 추가적으로, 아카이벌 데이터 저장 서비스는 데이터의 무결성을 검증하기 위해 데이터 구조(1000) 및/또는 루트 다이제스트(1006)의 자체 버전을 생성할 수 있다. 나아가, 일부 예에서, 아카이벌 데이터 저장 서비스에 의해 생성된 루트 다이제스트(1006)는 사용자가 보기 요청을 판독, 삭제 또는 색인하는데 사용할 수 있는 데이터 객체 식별자의 일부로서 사용자에 제공될 수 있다.
일부 예에서, 아카이벌 데이터 저장 서비스는 데이터 손상이 시스템 내 어디에선가 발생할 수 있고/있거나 하드웨어 버그(bug), 비트 플립(bit flip)에 의해 야기되고/되거나 아카이벌 데이터 저장 서비스 또는 사용자에 의해 구현된 소프트웨어 코드의 버그로 인해 야기될 수 있는 것을 가정할 수 있다. 적어도 이 이유 때문에, 아카이벌 데이터 저장 서비스는 데이터 무결성이 시스템 전체에 걸쳐 제공되는 것 및 손상된 데이터가 검출된 것을 보장하기 위해 데이터 경로 및 동작의 전부 또는 서브셋을 리뷰할 수 있다. 일부 경우에, 이것은 데이터 페이로드(예를 들어, 아카이벌 데이터 저장 서비스에 저장된 것) 및 메타데이터에 적용할 수 있다. 그리하여, 데이터 무결성 검증은 데이터를 삭제하는 요청이 잘못된 데이터를 나타내지 않는 것을 보장하기 위해 데이터 객체 식별자에 수행될 수 있다.
일부 측면에서, 아카이벌 데이터 저장 서비스(206)는 선택된 또는 결정된 다이제스트 기능이 데이터 무결성을 검증하기 위해 수용될 수 있는 것을 기대하도록 구성될 수 있다. 일부 예에서, 다이제스트 기능은 데이터 변환과 관련된 일부 경우에는 사용되지 않을 수 있다. 그렇지 않고, 이 다이제스트 기능은 아카이벌 데이터 저장 서비스의 데이터 및/또는 메타데이터의 일부, 전부 또는 부분을 검증하는데 사용하기 위해 선택되고/되거나 제공될 수 있다. 추가적으로, 전술한 바와 같이, 일부 예에서, 개시자(즉, 사용자)는 송신 전에 데이터 페이로드(1002)의 다이제스트를 미리-계산하고 나서 차후에 데이터를 갖는 다이제스트를 다시 아카이벌 데이터 저장 서비스에 공급할 수 있다. 아카이벌 데이터 저장 서비스는 다이제스트(예를 들어, 상위 레벨 다이제스트)를 재계산하고, 개시자로부터 수신된 다이제스트와 비교하며 및/또는 데이터의 무결성이 아카이벌 데이터 저장 서비스-생성된 다이제스트를 사용자에 제공하는 것에 의해 검증되었다는 수신확인을 제공할 수 있다. 추가적으로, 각 데이터 서브 분할 및/또는 취합(예를 들어, 서브-파트, 파트, 파트-레벨 다이제스트 및/또는 루트 다이제스트)은 취합 데이터의 분할에 독립적인 다이제스트를 계산하고 다이제스트를 비교하는 것에 의해 또는 심지어 비트마다 비교를 수행하는 것에 의해 재-검증될 수 있다. 다시 말해, 임의의 사이즈의 임의의 데이터 페이로드가 주어진 경우, 임의의 개수 또는 유형의 분할된 또는 취합된 다이제스트를 생성하여, 데이터 및/또는 파트를 검증하도록 계산이 수행될 수 있다.
추가적으로, 일부 측면에서, 소거 코딩 또는 암호화를 포함하나 이들로 제한되지 않는 데이터 변환은 역 변환을 수행하는 것에 의해 재-검증될 수 있다. 역 변환 결과는 다이제스트를 비교하는 것에 의해 그리고/또는 비트마다 비교하는 것에 의해 상호 체크될 수 있다. 그리하여, 변환된 데이터는 2개의 다이제스트를 포함할 수 있다. 2개 중 하나는 변환된 데이터의 무결성을 증명할 수 있고 다른 하나는 원래의 데이터의 무결성을 증명할 수 있다. 일부 예에서, 컨텐츠를 참조할 수 있는 데이터 객체 식별자를 포함하나 이들로 제한되지 않는 참조 항목은 참조되는 데이터의 다이제스트를 포함할 수 있다. 추가적으로, 아카이벌 데이터 저장 서비스는 참조되고 있는 부모 노드에 관한 정보를 더 포함할 수 있다. 일부 경우에, 저장 노드 레지스트라 저장소(250), 데이터 객체 식별자 및/또는 다른 데이터 구조에 지속되는 제어 플랜으로부터 메시지는 자체-검증하는 다이제스트를 포함할 수 있다. 이들 다이제스트는 검색시 또는 액션 전에 구조가 생성되고/되거나 확인된 후에 생성될 수 있다. 일부 예에서, 이것은 코드의 버그, 메모리 손상 또는 비트 손상과 같은 것이 데이터 객체 검색 커맨드를 삭제 커맨드로 플립하는 것을 방지한다. 나아가, 리턴 경로에서, 아카이벌 데이터 저장 서비스는 고객으로 리턴되고 있는 데이터가 요청에 매칭되고 있는지 및/또는 실행 동안 코드의 버그 등으로 인해 대체가 일어나지 않았는지를 재-검증하도록 구성될 수 있다.
도 11 내지 도 13은 데이터 무결성을 검증하는 각 공정(1100 내지 1300)을 도시하는 예시적인 흐름도를 도시한다. 이들 공정은 하드웨어, 컴퓨터 명령 또는 이들의 조합으로 구현될 수 있는 동작 시퀀스를 나타내는 각 동작을 포함하는 논리적 흐름도로 도시된다. 컴퓨터 명령의 상황에서, 동작은, 하나 이상의 프로세서에 의해 실행될 때, 언급된 동작을 수행하는 하나 이상의 컴퓨터-판독가능한 저장 매체에 저장된 컴퓨터-실행가능한 명령을 나타낸다. 일반적으로, 컴퓨터-실행가능한 명령은 특정 기능을 수행하거나 또는 특정 데이터 유형을 구현하는 루틴, 프로그램, 객체, 성분, 데이터 구조 등을 포함한다. 동작이 설명되는 순서는 제한사항으로 해석되도록 의도된 것이 아니라, 임의의 개수의 설명된 동작을 임의의 순서 및/또는 병렬로 결합하여 공정을 구현하도록 할 수 있다.
추가적으로, 공정의 일부, 어느 것 또는 전부는 실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에 수행될 수 있고, 하나 이상의 프로세서에서, 하드웨어에 의해 또는 이들의 조합으로 집합적으로 실행되는 코드(예를 들어, 실행가능한 명령, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로 구현될 수 있다. 전술한 바와 같이, 코드는, 예를 들어, 하나 이상의 프로세서에 의해 실행가능한 복수의 명령을 포함하는 컴퓨터 프로그램의 형태로 컴퓨터-판독가능한 저장 매체에 저장될 수 있다. 컴퓨터-판독가능한 저장 매체는 비-일시적인 것일 수 있다.
일부 측면에서, 도 2에 도시된 하나 이상의 아카이벌 데이터 저장 서비스(206)의 API 요청 핸들러(218), 페이로드 데이터 캐시(228), 저장 노드 관리자(244) 및/또는 저장 노드(246)는 도 11의 공정(1100)을 수행할 수 있다. 공정(1100)은 (1102)에서 데이터 저장을 요청하는 기능 호출을 (예를 들어, 아카이벌 데이터 저장 서비스의 사용자 또는 클라이언트 개체에) 제공하는 것에 의해 시작될 수 있다. 이 기능 호출은 아카이벌 데이터 저장 서비스와 상호작용하고/하거나 인터페이싱하는 API 또는 SDK의 일부일 수 있다. (1104)에서, 공정(1100)은 원격 컴퓨팅 디바이스(즉, 사용자)로부터 데이터 페이로드의 복수의 부분을 수신하는 단계를 포함할 수 있다. 일부 경우에, 각 부분의 사이즈는 일관적일 수 있다. 다른 경우에, 각 부분의 사이즈는 마지막 부분이 상이할 수 있는 것을 제외하고는 일관적일 수 있다. 추가적으로, 사이즈는 사용자에 의해 선택되거나 결정될 수 있다. (1106)에서, 공정(1100)은 각 부분의 사이즈의 지시를 수신하는 것을 포함할 수 있다. 일부 경우에, (1104 및 1106)에서 수행된 액션은 단일 액션으로 함께 수행될 수 있다. 그러나, 일부 제한사항은 부분 사이즈에 관해 적용될 수 있다. 일부 예에서, 이러한 부분은 일관적인 사이즈로 제한될 수 있지만(즉, 동일한 사이즈일 것이 요구될 수 있지만); 마지막 부분은 데이터 페이로드의 나머지(즉, 페이로드에서 서로 일관적으로 사이즈 형성된 부분을 뺀 것)일 수 있다. 예를 들어, 사이즈 선택은 1MB 또는 1MB의 정수배로 제한될 수 있다. 다른 예에서, 사이즈는 1MB 또는 1MB의 2의 멱수로 제한될 수 있다.
공정(1100)은 (1108)에서 페이로드의 부분의 적어도 일부에 대한 미리 한정된 사이즈의 하나 이상의 서브-부분을 생성하는 단계를 더 포함할 수 있다. 전술한 바와 같이, 부분 사이즈에 관해, 서브-부분의 사이즈는 미리 한정되고 일정할 수 있는 반면, 마지막 서브-부분은 상이한 사이즈일 수 있다. 미리 한정된 사이즈는 1MB 또는 임의의 다른 사이즈일 수 있다. (1110)에서, 공정(1100)은 서브-부분에 적어도 부분적으로 기초하여 하나 이상의 다이제스트 또는 해쉬 값을 계산하는 단계를 포함할 수 있다. 다이제스트는 발행되고/되거나 제공된 알고리즘에 적어도 부분적으로 기초하여 계산될 수 있다. 일부 예에서, (1112)에서, 공정(1100)은 데이터 구조의 루트 노드를 생성하는 단계를 포함할 수 있다. 데이터 구조는 전술한 바와 같이 서브-부분 다이제스트 및/또는 취합된 다이제스트에 적어도 부분적으로 기초할 수 있다. (1114)에서, 공정(1100)은 데이터 구조의 상위 레벨 다이제스트를 결정하는 단계를 포함할 수 있다. 상위 레벨 다이제스트는 데이터 구조의 루트 노드에 및/또는 데이터의 부분들 중 하나와 연관된 부모 노드에 적어도 부분적으로 기초할 수 있다. (1116)에서, 공정(1100)은 원격 컴퓨팅 디바이스가 데이터 구조를 생성할 수 있도록 구성된 명령을 제공하는 단계를 포함할 수 있다. 이런 방식으로, 사용자는 아카이벌 데이터 저장 서비스와 함께 데이터 구조를 생성할 수 있다. 공정(1100)은 (1118)에서 원격 컴퓨팅 디바이스에 의해 생성된 상위 레벨 다이제스트를 수신하는 단계를 포함할 수 있다. 공정(1100)은 저장된 데이터 페이로드가 수신된 데이터 페이로드와 일치하는지를 확인하는 것에 의해 (1120)에서 종료할 수 있다. 다시 말해, 공정(1100)은 데이터의 무결성을 검증하거나 확인할 수 있다.
도 12는 데이터의 무결성을 검증하는 공정(1200)을 도시하는 또 다른 예시적인 흐름도를 도시한다. 일부 측면에서, 도 2에 도시된 하나 이상의 아카이벌 데이터 저장 서비스(206)의 API 요청 핸들러(218), 페이로드 데이터 캐시(228), 저장 노드 관리자(244) 및/또는 저장 노드(246)는 도 12의 공정(1200)을 수행할 수 있다. 공정(1200)은 (1202)에서 데이터 페이로드의 하나 이상의 파트를 수신하는 것에 의해 시작할 수 있다. 전술한 바와 같이, 파트는 임의의 사이즈일 수 있다. 그러나, 일부 예에서, 파트의 사이즈는 1MB 또는 1MB의 배수로 제한될 수 있다. 이런 방식으로, 데이터 구조는 선택된 사이즈와 독립적으로 구성될 수 있다. (1204)에서, 공정(1200)은 하나 이상의 파트에 대한 서브-파트를 생성하는 단계를 포함할 수 있다. 다시, 이들 서브-파트는 임의의 사이즈일 수 있고 또는 1MB로 제한되거나 또는 2MB, 10MB 등을 포함하나 이들로 제한하지 않는 다른 사이즈 제한사항으로 제한될 수 있다. 공정(1200)은 (1206)에서 서브-파트에 기초하여 값을 계산하는 단계를 포함할 수 있다. 값은, 일부 경우에, 해쉬 값, 다이제스트 또는 다른 암호화 결과일 수 있다. 일부 예에서, 공정(1200)은 (1208)에서 데이터 구조의 루트 노드를 생성하는 단계를 포함할 수 있다. (1210)에서, 공정(1200)은 루트 노드의 데이터 구조에 횡방향에 적어도 부분적으로 기초하여 데이터 구조의 상위 레벨 값을 결정하는 단계를 포함할 수 있다.
일부 예에서, 공정(1200)은 (1212)에서 데이터 페이로드를 저장하는 단계를 더 포함할 수 있다. 페이로드는 (1202)에서 수신된 하나 이상의 파트 각각을 결합한 것에 적어도 부분적으로 기초하여 저장될 수 있다. 그리하여, 일부 경우에, 아카이벌 데이터 저장 서비스(206)는 모든 파트의 데이터 송신이 완료될 때까지 (1212)에서 페이로드를 저장하지 않을 수 있다. (1214)에서, 공정(1200)은 저장된 데이터 페이로드가 수신된 데이터 페이로드와 일치하는지를 검증하는 단계를 포함할 수 있다. 이것은 수신된 상위 레벨 값을 계산된 상위 레벨 값과 비교하는 것에 의해 수행될 수 있다. (1216)에서, 공정(1200)은 상위 레벨 값을 포함하는 데이터 객체 식별자를 제공하는 단계를 포함할 수 있다. 식별자는 차후에 사용자에 의해 사용되어 저장된 데이터 페이로드를 검색 및/또는 삭제할 수 있다. 일부 예에서, 공정(1200)은 (1218)에서 저장된 페이로드에 대한 요청을 수신하는 단계를 포함할 수 있다. 저장된 페이로드는 유사한 방식으로 사용자로 다시 제공될 수 있다 (데이터의 무결성이 이 방식의 각 단계에서 검증된다). 그러나, 일부 경우에, 공정(1200)은 저장된 데이터 페이로드가 페이로드를 제공하기 전에 변화되지 않았는지를 확인하는 것에 의해 (1220)에서 종료할 수 있다.
도 13은 데이터의 무결성을 검증하는 공정(1300)을 도시하는 또 다른 예시적인 흐름도를 도시한다. 일부 측면에서, 도 2에 도시된 하나 이상의 아카이벌 데이터 저장 서비스(206)의 API 요청 핸들러(218), 페이로드 데이터 캐시(228), 저장 노드 관리자(244) 및/또는 저장 노드(246)는 도 13의 공정(1300)을 수행할 수 있다. 공정(1300)은 (1302)에서 데이터에 동작을 수행하는 방법 호출을 만드는 명령을 제공하는 것에 의해 시작할 수 있다. 일부 예에서, 이 방법 호출은 하나 이상의 API를 통해 노출되거나 또는 하나 이상의 SDK에 제공될 수 있다. (1304)에서, 공정(1300)은 데이터 객체를 제1 파티션으로 제1 파티션한 것에 기초하여 확인 알고리즘을 사용하여 제1 동작을 수행하는 단계를 포함할 수 있다. 제1 파티션은, 일부 예에서, 다이제스트의 해쉬 트리 또는 다른 이진 트리를 포함하나 이들로 제한되지 않는 데이터 구조를 생성하는데 사용될 수 있는 1MB 또는 다른 일관적인 사이즈의 청크를 포함할 수 있다. 일부 예에서, 제1 동작은 네트워크를 통해 사용자로부터 데이터를 수신하는 단계를 포함할 수 있다. (1306)에서, 공정(1300)은 제1 파티션에 기초하여 데이터 객체를 확인하여 제1 확인값(예를 들어, 해쉬 코드, 체크썸 등)을 생성하는 단계를 포함할 수 있다. 공정(1300)은 데이터 객체를 (1308)에서 제2 파티션으로 제2 파티션한 것에 적어도 부분적으로 기초하여 동일한 확인 알고리즘을 사용하여 데이터 객체에 제2 동작을 수행하는 단계를 더 포함할 수 있다. 제2 파티션은 제1 파티션과는 상이한 사이즈일 수 있다. 제2 파티션에 적어도 부분적으로 기초하여, 공정(1300)은 (1310)에서 데이터 객체를 확인하여 제2 값을 생성하는 단계를 포함할 수 있다. 여기서, 제2 동작은 아카이벌 데이터 저장 서비스에 데이터를 송신하는 단계를 더 포함할 수 있다. 제1 확인값과 같이 제2 확인값은 파티션에 대한 다이제스트, 파티션 다이제스트를 취합하여 형성된 다이제스트들에 대한 다이제스트 및/또는 데이터 구조의 상위 레벨 다이제스트를 포함할 수 있으나 이들로 제한되지 않는다. (1312)에서, 공정(1300)은 제2 확인값이 제1 확인값과 같은지 여부를 결정하는 것에 의해 종료될 수 있다. 이것은 2개의 값을 비교한 것에 적어도 부분적으로 기초하여 결정될 수 있다. 일부 예에서, 확인 알고리즘이 적절히 수행되고, 데이터가 무결성을 유지하였다면, 2개의 값은 동일한 것으로 기대된다. 즉, 2개의 파티션 세트(즉, 제1 파티션 및 제2 파티션)의 사이즈와 독립적으로, 확인값은 동일하여야 한다.
도 14는 저장 드라이브 회전 스케줄 기술을 구현할 수 있는 예시적인 아키텍처(1400)를 도시한다. 예시적인 아키텍처(1400)에서, 아카이벌 데이터 저장 시스템(1402)은 아카이벌 데이터 저장, 배취 작업 처리, 데이터 검색, 데이터 관리, 저장 디바이스 관리 및/또는 회전 스케줄을 포함하나 이들로 제한되지 않는 하나 이상의 아카이벌 서비스를 제공할 수 있다. 일부 측면에서, 아카이벌 데이터 저장 시스템(1402)은 회전 스케줄(1404)을 결정 및/또는 저장할 수 있다. 전술한 바와 같이, 회전 스케줄(1404)은 드라이브들 중에서 활성화될 드라이브 및 활성화될 때를 지시할 수 있다. 추가적으로, 회전 스케줄(1404)은 여러 인자에 적어도 부분적으로 기초하여 결정될 수 있고/있거나 데이터 저장 노드 관리자 및/또는 데이터 저장 노드에 의해 제공될 수 있다. 일부 예에서, 회전 스케줄(1404)은 제어기(1406)에 제공될 수 있다. 일부 예에서, 제어기(1406)는 전술한 하나 이상의 저장 노드를 포함할 수 있다. 대안적으로 또는 추가적으로, 제어기(1406)는 전용 메모리 제어기, SCSI(Small Computer System Interface) 제어기, IDE(Integrated Drive Electronics) 제어기, 섬유 채널(Fibre Channel) 제어기, 직렬 부착된(Serial Attached) SCSI 제어기 등을 포함할 수 있으나 이들로 제한되지 않는다. 추가적으로, 제어기(1406)는 제어기의 추상적 개체, 또는 나열된 프로토콜을 통해 이러한 드라이브 제어기와 통신하는 일부 "수퍼제어기(supercontroller)"일 수 있다. 단지 예로서, 제어기(1406)는 랙(1408)의 하나 이상의 하드 드라이브(또는 하드 디스크 드라이브(hard disk drive: HDD)) 그룹을 제어하거나 또는 하나 이상의 명령(1410)에 적어도 부분적으로 기초하여 다른 구성을 제어하도록 구성될 수 있다. 예를 들어, 명령(1412)은 HDD 그룹 1에 수행될 액션에 대응할 수 있고, 명령(1414)은 HDD 그룹 2에 대응할 수 있고 이와 같이 대응된다. 이런 방식으로, 제어기(1406)는 스케줄(1404)에 적어도 부분적으로 기초하여 각 HDD 그룹에 상이한 명령을 수행하도록 구성될 수 있다.
하나의 비-제한적인 명령에서, 제어기(1406)는 "온(ON)"으로 표시된 명령(1418)에 적어도 부분적으로 기초하여 HDD 그룹 4를 활성화하는 스케줄(1404)을 따를 수 있다. 즉, 명령(1418)은 HDD 그룹 4에 대응할 수 있고, HDD 그룹 4가 미리 결정된 시간 기간 동안 활성이어야 하는 것을 지시할 수 있다. 전술한 바와 같이, 각 그룹이 활성일 수 있는 시간 기간은 저장 노드의 일부 온디맨드 요청 및/또는 그룹의 분할에 적어도 부분적으로 기초하여 1시간의 일부를 포함하나 이들로 제한되지 않는 여러 인자에 적어도 부분적으로 기초할 수 있다. 미리 한정된 시간 기간이 만료된 후, 제어기(1406)는 명령(1410)의 체인 아래 "온" 명령(1418)으로 이동시켜 HDD 그룹 5가 그 다음에 활성화되게 할 수 있다. 그리하여, 명령(1420)은 "전력 업"으로 표시되어 HDD 그룹 5가 미래의 어느 시점에서 전력 업을 시작하도록 스케줄링될 수 있는 것을 나타낸다. 유사하게, 명령(1416)은 "전력 다운"으로 표시되어 HDD 그룹 3이 활성 후 여전히 전력 다운일 수 있는 것을 나타낸다. 적어도 하나의 예에서, (예를 들어, 스케줄에 적어도 부분적으로 기초하여) 미리 한정된 시간 후에, 제어기(1406)는 아래쪽 명령을 이동시켜 명령(1418)이 "온"으로 표시되고 HDD 그룹 5가 활성화되게 할 수 있다. 드라이브의 회전을 스케줄링하는데 다른 시나리오 및/또는 예가 가능할 수 있다. 예를 들어, 각 HDD 그룹은 각 HDD 그룹이 하나 이상의 드라이브를 포함할 수 있도록 단일 저장 드라이브만을 포함할 수 있으나 각 그룹이 다수의 드라이브를 포함하는 시나리오로 제한되지 않는다. 추가적으로, 전술한 바와 같이, 추가적인 명령은 동시에 다수의 드라이브를 활성화한 것에 적어도 부분적으로 기초하여 전력 소비 스파이크를 회피하기 위하여 처리될 수 있다. 예를 들어, 특정 기간 동안 회전하도록 스케줄링된 그룹의 드라이브는 한 번에 또는 원하는 대로 서브-그룹으로 하나씩 활성화하도록 스케줄링될 수 있다. 추가적으로, HDD 그룹(및/또는 개별 하드 드라이브)은 열거되지 않고/않거나 도시된 바와 같이 임의의 특정 순서로 있지 않을 수 있다. 예를 들어, 제어기(106)는 테이블, 차트, 지수 등에서, 특정 기간 동안 활성화된 드라이브 또는 그룹 및 이 기간 동안 활성화되어야 하는 드라이브의 활성화를 통해 랜덤하게(또는 요구 시) 사이클을 추적할 수 있다. 따라서, 제어기(1406)는 활성화되어야 하는 드라이브 및 도 14에 도시된 그룹화 또는 리스트에 의해 제한됨이 없이 활성화될 때를 결정할 수 있다.
도 15는 저장 드라이브의 회전을 스케줄링하는 추가적인 기술을 구현할 수 있는 예시적인 아키텍처(1500)를 도시한다. 예시적인 아키텍처(1500)에서, 아카이벌 데이터 저장 시스템(1502)은 아카이벌 데이터 저장, 배취 작업 처리, 데이터 검색, 데이터 관리, 저장 디바이스 관리 및/또는 회전 스케줄을 포함하나 이들로 제한되지 않는 하나 이상의 아카이벌 서비스를 제공할 수 있다. 그리하여, 일부 측면에서, 아카이벌 데이터 저장 시스템(1502)은 회전 스케줄(1504)을 결정 및/또는 저장할 수 있다. 전술한 바와 같이, 회전 스케줄(1504)은 활성화될 저장 서비스의 드라이브(예를 들어, 아카이벌 데이터 저장 시스템(1504)의 것) 및/또는 활성화될 시간 기간을 지시할 수 있다 . 추가적으로, 회전 스케줄(1504)은 여러 인자에 적어도 부분적으로 기초하여 결정될 수 있고/있거나 전술한 바와 같이 데이터 저장 노드 관리자(244) 및/또는 데이터 저장 노드에 의해 제공될 수 있다.
일부 측면에서, 제어기(1506)는 하나 이상의 하드 드라이브(1508(1), ..., 1508(N))(집합적으로, "하드 드라이브(1508)")를 제어하도록 구성될 수 있다. 단지 예로서, 하드 드라이브(1508)는 어레이로 또는 정렬된 리스트로 도시되지만; 임의의 정렬 및/또는 다른 조직이 어느 특정 하드 드라이브(1508) 또는 하드 드라이브 세트가 다른 특정 하드 드라이브(1508)(또는 하드 드라이브 세트) 전에 오는지 또는 후에 오는지를 결정하는 데 고려될 수 있다. 예를 들어, 어레이는, (예를 들어, 일부 논리적 맵핑에 적어도 부분적으로 기초하여) 활성화할 그 다음 하드 드라이브를 나타내고, 하드 드라이브(1508)를 정렬하지 않도록 제어기에 의해 사용될 수 있다. 그러나, 다른 예에서, 어레이는 (예를 들어, 요구 회전 스케줄이 구현될 때) 하드 드라이브를 동적으로 정렬하도록 사용될 수 있다.
일부 예에서, 윈도우(1510)(또는 슬라이딩 스케일)는 하드 드라이브(1508)를 활성화하는데 고려될 수 있다. 미리 한정된 시간 기간에 적어도 부분적으로 기초하여, 윈도우(1510)는 어레이를 따라 이동하며 예를 들어, 각 기간에서 윈도우(1512, 1514 및 1516)로 될 수 있다. 다시 말해, 윈도우(1510)는 제1 기간 동안 제어기(1506)에 의해 활성되거나 활성화될 하드 드라이브(1508)를 나타낼 수 있다. 즉, 예로서 비 제한적으로, 제1 기간 동안, 하드 드라이브(1508(1) 내지 1508(5))가 활성일 수 있다(즉, 전력이 제공되거나 또는 슬립 모드에서 벗어날 수 있다). 도 15에 도시된 예에서, 제1 기간의 종료 시, 윈도우(1510)는 윈도우(1512)로 되도록 이동될 수 있고, 여기서 하드 드라이브(1508(2)-1508(6))는 활성이 될 수 있다. 일부 예에서, 전이가 발생할 때(즉, 윈도우(1510)가 슬라이딩할 때), 하드 드라이브(1508(1))는 제어기(1506)가 하드 드라이브(1508(6))를 활성화하기 전에 전력 다운될 수 있다. 이런 방식으로, 하드 드라이브(1508)의 어레이를 동작시키는 것과 연관된 전력 인출은 특정 레벨을 초과하지 않을 수 있다.
추가적으로, 일부 측면에서, 윈도우(1510, 1512, 1514, 1516)는 길이(1518)로 한정될 수 있다. 길이는 총 하드 드라이브(1508)의 퍼센트, 총 하드 드라이브(1508)의 미리 결정된 개수, 전력 소비, 온도, 비용 등의 일부 미리 결정된 레벨 등에 적어도 부분적으로 기초하여 결정될 수 있다. 추가적으로, 윈도우는 하드 드라이브(1508)의 전력 소비를 최소화하고, 하드 드라이브(1508)와 연관된 동작 비용을 최소화하고/하거나, 하드 드라이브(1508)의 동작 수명(예를 들어, 하드 드라이브(1508)가 고장날 때까지 또는 보수되거나, 수리되거나 또는 교체될 때까지 동작할 수 있는 기간)을 최대화하도록 구성될 수 있다. 그리하여, 길이(1518)는 회전 스케줄(1504)을 통해 일정하거나 또는 이 길이는 동적일 수 있다. 일부 예에서, 윈도우(1510)가 하드 드라이브(1508)의 어레이의 종료에 도달하면, 윈도우(1510)는 시작으로 다시 사이클링할 수 있다. 도면에서, 이것은 원형 어레이로서 표현될 수 있고, 여기서 하드 드라이브(1508(1))는 하드 드라이브(1508(N))를 따를 수 있다. 나아가, 일부 예에서, 도 15에 도시된 바와 같이 어레이는 전혀 사용되지 않을 수 있다. 대신, 임의의 다른 형태 또는 유형의 데이터 구조를 사용하여, 회전 스케줄(1504)이 어느 시간에 어느 하드 드라이브(1508)를 활성화될 지를 결정 및/또는 제어할 수 있는 방식으로 하드 드라이브(1508)를 조직할 수 있다. 추가적으로, 각 하드 드라이브(1508)는 실제로는 단일 드라이브 대신에 하나 이상의 하드 드라이브 그룹일 수 있다. 이 시나리오에서, 제어기(1506)는 전력 스파이크 또는 다른 잠재적인 전력 소비 문제를 제한하기 위하여 하드 드라이브 그룹 내 각 단일 하드 드라이브의 활성화를 스태거하도록 더 구성될 수 있다.
일부 예에서, 하드 드라이브(1508)는 어레이(1520)에 도시된 것과 같은 논리적 순서로 배열될 수 있다. 하드 드라이브(1508)는 예시적인 물리적 랙(1522)으로 도시된 것과 같은 논리적 순서와 상이할 수 있는 물리적 순서로 서버 또는 랙 상에 더 배열될 수 있다. 즉, 하드 드라이브(1508)는 논리적 어레이(1520)에 도시된 순서와는 대조적으로 도시된 순서로 물리적 랙(1522) 상에 실제 위치될 수 있다. 따라서, 스케줄(1504)은 논리적 순서(1520)를 따라 윈도우(1510)를 이동시킬 때, 하드 드라이브(1508)는 논리적 순서 및/또는 물리적 위치에 적어도 부분적으로 기초하여 활성화되거나 전력 업될 수 있다. 추가적으로, 매트릭스(1524)는 스케줄(1504)에 따라 각 시간 단위에 어느 하드 드라이브(1508)를 활성화할지를 지시할 수 있다. 일부 예에서, 매트릭스(1524)의 각 행 또는 열은 인접한 행이 인접한 랙을 나타낼 수 있도록 서버 또는 캐비넷에 있는 물리적 랙을 나타낼 수 있다. 추가적으로, 일부 예에서, 하나 이상의 제약은 매트릭스(1524)에 하드 드라이브(1508)를 균일하게 분배하거나 달리 분배하는 것을 보장할 수 있도록 제공되고/되거나 구현될 수 있다. 예를 들어, 인에이블된 하드 드라이브(1508)를 균일하게 분배하기 위하여, 조건 또는 제약은 특정 온도, 노화, 위치, 진동의 양 등의 하드 드라이브(1508)가 매트릭스(1524)의 다른 하드 드라이브(1508)의 특정 거리 내에서 활성화되지 않을 수 있는 것을 나타낼 수 있다. 예를 들어, 스케줄(1504)은 특정 하드 드라이브(1508)가 활성화될 것을 나타낼 수 있으나; 조건은 아카이벌 데이터 저장 서비스(1502)에 명령하여 지시를 변경하거나 또는 상이한 하드 드라이브(1508)를 활성화하는 명령을 제공하게 할 수 있다.
도 15를 참조하여 설명된 바와 같이, 일부 측면에서, 하드 드라이브(1508)의 총 개수는 미리 한정된 개수의 그룹으로 분할될 수 있다. 이때, 이들 그룹은 회전 스케줄(1504)에 적어도 부분적으로 기초하여 동작하고 동작하지 않게 회전될 수 있다. 이러한 접근법은 저장 노드 레지스트라(248)가 새로운 기록 동작을 배치할 때와 배치할 곳을 결정하거나 또는 판독 또는 삭제 동작을 실행할 수 있을 때를 결정할 수 있게 한다. 일부 예에서, 데이터 저장 노드 관리자(224)는 이 지식으로부터 분리될 수 있고 저장 노드 레지스트라(248)로부터 방향을 따를 수 있다. 그러나, 다른 예에서, 회전 스케줄(804)은 요구 시 결정될 수 있다. 예를 들어, 하나 이상의 데이터 저장 노드 관리자(224)로부터 판독 요청에 적어도 부분적으로 기초하여, 저장 노드 레지스트라(248)는 회전하여야 하는 하드 드라이브(808)의 수를 선택하고 나서, 메시지를 데이터 저장 노드에 송신할 수 있다. 대안적으로, 데이터 저장 노드 관리자(244)는 데이터 저장 노드와 직접 컨택할 수 있다. 일부 예에서, 특정 제약은 단 하나의 판독 요청만을 미해결한 드라이브에 요청을 너무 오랜 동안 기다리지 않도록 하는 목표를 포함하나 이들로 제한되지 않는 회전 스케줄(1504)에 영향을 미칠 수 있다.
도 16 내지 도 18은 데이터 저장 전력 관리를 제공하는 각 공정(1600 내지 1800)을 도시하는 예시적인 흐름도를 도시한다. 이들 공정은 하드웨어, 컴퓨터 명령 또는 이들의 조합으로 구현될 수 있는 동작 시퀀스를 나타내는 각 동작을 포함하는 논리적 흐름도로 도시된다. 컴퓨터 명령의 문맥에서, 동작은, 하나 이상의 프로세서에 의해 실행될 때, 언급된 동작을 수행하는 하나 이상의 컴퓨터-판독가능한 저장 매체에 저장된 컴퓨터-실행가능한 명령을 나타낸다. 일반적으로, 컴퓨터-실행가능한 명령은 특정 기능을 수행하거나 또는 특정 데이터 유형을 구현하는 루틴, 프로그램, 객체, 성분, 데이터 구조 등을 포함한다. 동작이 설명되는 순서는 제한사항으로 해석되도록 의도된 것이 아니고, 임의의 개수의 설명된 동작을 임의의 순서 및/또는 병렬로 결합하여 공정을 구현하도록 할 수 있다.
추가적으로, 공정의 일부, 임의의 것 또는 전부는 실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에 수행될 수 있고, 하나 이상의 프로세서 상에서, 하드웨어에 의해 또는 임의의 조합에 의해 집합적으로 실행되는 코드(예를 들어, 실행가능한 명령, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로 구현될 수 있다. 전술한 바와 같이, 이 코드는, 예를 들어, 하나 이상의 프로세서에 의해 실행가능한 복수의 명령을 포함하는 컴퓨터 프로그램 형태의 컴퓨터-판독가능한 저장 매체에 저장될 수 있다. 컴퓨터-판독가능한 저장 매체는 비-일시적인 것일 수 있다.
일부 측면에서, 도 2에 도시된 아카이벌 데이터 저장 서비스(206)의 저장 노드 관리자(244), 저장 노드(246), 저장 노드 레지스트라 저장소(250) 및/또는 다른 데이터 저장 디바이스 또는 콜렉션은 도 16의 공정(1600)을 수행할 수 있다. 공정(1600)은 아카이벌 데이터 저장 서비스(206)의 하나 이상의 데이터 저장 디바이스를 (1602)에서 그룹으로 분류하는 것으로 시작할 수 있다. 일부 예에서, 각 그룹은 데이터 저장 디바이스의 서브셋 또는 서브셋의 일부일 수 있다. 추가적으로, 분류하는 것은 위치, 전력 소비, 노후, 속도, 비용 등을 포함하나 이들로 제한되지 않는 저장 디바이스의 특성에 적어도 부분적으로 기초하여 서로 그룹화될 저장 디바이스의 양 또는 퍼센트를 결정하는 것을 수반할 수 있다. (1604)에서, 공정은 스케줄에 따라 그룹의 전력 상태를 변경하는 단계를 포함할 수 있다. 스케줄은, 평균적으로, 데이터 저장 디바이스의 양이 전력 다운 상태에 있는 것을 보장하도록 구성될 수 있다. 전력 다운 상태는 저전력 상태, 슬립 모드, 전력 다운 상태, 오프 등일 수 있다. 추가적으로, 전력 다운 상태에 있는 디바이스의 양은 아카이벌 데이터 저장 서비스(206)를 동작시키는 것과 연관된 전력 소비 및/또는 비용의 원하는 레벨에 적어도 부분적으로 기초할 수 있다. 나아가, 일부 예에서, 스케줄은 저장 노드 레지스트라 저장소(250), 저장 노드 레지스트라(248) 및/또는 데이터 저장 노드에 적어도 부분적으로 기초하여 수신되거나 또는 처리될 수 있다.
일부 예에서, 공정(1600)은 (1606)에서 데이터 처리 요청의 배취를 획득하는 단계를 더 포함할 수 있다. 데이터 처리 요청은 요청의 배취 또는 유한개의 그룹의 일부일 수 있거나 또는 더 많은 동기적인 동작에 대한 큐의 일부일 수 있다. 추가적으로, 요청 배취는 판독 요청, 지수 리스트 요청, 기록 요청, 삭제 요청 등을 포함할 수 있다. (1608)에서, 공정(1600)은 배취 요청을 처리하는 단계를 포함할 수 있다. 일부 예에서, 요청을 처리하는 단계는, 전력이 온 될 때, (1610)에서 요청을 서비스하는데 사용될 수 있는 전력 다운 상태에 있는 저장 디바이스를 식별하는 단계를 포함할 수 있다. 추가적으로, 요청을 처리하는 단계는 (예를 들어, (1610)로부터) 식별된 저장 디바이스를 포함하는 그룹이 (1612)에서 전력 업 상태에 있도록 스케줄에 따라 변경될 때 요청을 서비스하는 단계를 더 포함할 수 있다. 즉, 식별된 저장 디바이스가 전력 업되거나 또는 인에이블되면, 아카이벌 데이터 저장 서비스(206)는 요청(예를 들어, 저장 디바이스로부터 데이터 판독 또는 저장 디바이스로부터 데이터 삭제)을 서비스할 수 있다. 추가적으로, 일부 경우에, (1608, 1610 및/또는 1612)의 액션은 단일 액션, 2개의 액션 또는 3개의 별개의 액션으로 처리될 수 있다. 일부 예에서, 공정(1600)은 (1612)에서 종료될 수 있다. 그러나, 다른 예에서, 공정(1600)은 전력 업 상태에서 저장 디바이스의 그룹을 전력 다운하는 것으로 종료할 수 있다. 대안적으로 또는 추가적으로, 공정(1600)은 식별된 저장 디바이스를 포함하는 그룹을 전력 업 하기 전에 및/또는 (1614)에서 요청을 서비스하기 전에 전력 업 상태에서 저장 디바이스의 그룹을 전력 다운하는 단계를 포함할 수 있다.
도 17은 데이터 저장 전력을 관리하는 공정(1700)을 도시하는 또 다른 예시적인 흐름도를 도시한다. 일부 측면에서, 도 2에 도시된 아카이벌 데이터 저장 서비스(206)의 저장 노드 관리자(244), 저장 노드(246), 저장 노드 레지스트라 저장소(250) 및/또는 다른 데이터 저장 디바이스 또는 콜렉션은 도 17의 공정(1700)을 수행할 수 있다. 공정(1700)은 데이터 저장 노드(246), 저장 노드 레지스트라(248) 또는 저장 노드 레지스트라 저장소(250)로부터 (1702)에서 회전 스케줄, 일정(agenda) 또는 다른 유형의 시간테이블을 수신하는 것으로 시작할 수 있다. 전술한 바와 같이, 스케줄은 데이터 저장 노드(246)에 의해 수행될 수 있다. 전술한 바와 같이, 스케줄은 인에이블되거나 또는 전력 온 될 저장 디바이스(또는 하드 드라이브)가 어느 것인지 및 언제 인에이블되거나 전력 온 될지에 대한 명령을 포함할 수 있다. 일부 예에서, 스케줄은 디스크를 감속, 중지, 가속 및/또는 전기 신호를 제거하는 것에 의해 저장 디바이스를 디스에이블하는 것에 의해 각 저장 디바이스의 전력 소비를 관리하도록 구성될 수 있는 디바이스 제어기에 대한 명령을 더 포함할 수 있다. (1704)에서, 공정(1700)은 스케줄에 적어도 부분적으로 기초하여 하나 이상의 저장 디바이스의 전력을 관리하는 단계를 포함할 수 있다.
공정(1700)은 (1706)에서 저장 디바이스와 연관된 요청 배취의 하나 이상의 데이터 처리 요청을 식별하는 단계를 더 포함할 수 있다. 전술한 바와 같이, 요청은 단일 배취로 수신될 수 있다. 추가적으로, 요청은 (1708)에서 배취 방식으로 처리될 수 있다. 그러나, 일부 예에서, 요청은 배취 방식으로 수신되고 순차적으로 처리될 수 있으나, 아카이벌 데이터 저장 서비스(206)가 배취 요청의 일부 또는 전부를 완료할 때까지 새로운 요청이 수신되지 않을 수 있다. (1710)에서, 공정(1700)은 전력 업 될 때 요청을 서비스할 수 있는 저전력 모드에 있는 데이터 저장 디바이스를 식별하는 단계를 포함할 수 있다. 나아가, 공정(1700)은 식별된 저장 디바이스가 스케줄에 기초하여 전력 업 되면 요청 서비스가 종료할 수 있다. 이런 방식으로, 스케줄은 저장 디바이스의 전력 관리를 제어할 수 있는 반면, 동시에, 요청 배취는 스케줄에 영향을 미칠 수 있다. 이런 방식으로, 본 명세서에 설명된 데이터 저장 전력 관리는 요구 시 고려될 수 있다. 추가적으로, 일부 측면에서, (1708)에서 데이터 처리 요청을 처리하는 것은 (1710 및/또는 1712)의 액션을 포함할 수 있다. 그리하여, 이 액션은 단일 액션으로 수행될 수 있다.
도 18은 데이터의 무결성을 검증하는 공정(1800)을 도시하는 또 다른 예시적인 흐름도를 도시한다. 일부 측면에서, 도 2에 도시된 아카이벌 데이터 저장 서비스(206)의 저장 노드 관리자(244), 저장 노드(246), 저장 노드 레지스트라 저장소(250) 및/또는 다른 데이터 저장 디바이스 또는 콜렉션은 도 18의 공정(1800)을 수행할 수 있다. 공정(1800)은 저장 디바이스의 액세스와 동기화될 하나 이상의 저장 디바이스의 전력 소비를 관리하도록 구성된 글로벌 시간 신호를 수신하는 것으로 (1802)에서 시작할 수 있다. 즉 글로벌 시간 신호는 각 저장 디바이스의 전력을 관리하는 시간을 정확히 계수하기 위해 아카이벌 데이터 저장 서비스(206)에 의해 사용될 수 있다. 추가적으로, 아카이벌 데이터 저장 서비스(206)는 글로벌 시간 신호를 사용하여 데이터 저장 디바이스에 액세스할 때를 결정할 수 있다. 그리하여, 2개의 액션은, 일부 예에서, 상당한 지연 없이 온되거나 전력 업되거나 액세스 가능하도록 전력 소비가 관리된 후 저장 디바이스가 액세스되도록 동기화될 수 있다. (1804)에서, 공정(1800)은 제2 저장 디바이스보다 상이한 시간에 제1 저장 디바이스를 인에이블하는 것과 연관된 스케줄을 획득하는 단계를 포함할 수 있고, 2개의 저장 디바이스 각각은 저장 디바이스 세트의 일부이다. 다시 말해, 스케줄은 전력 업 되어야 하는 세트 내 저장 디바이스가 어느 것인지 및 제1 및 제2 디바이스가 전력 업 되어야 하는 때를 포함하나 이들로 제한되지 않는 정보를 포함할 수 있다. 공정(1800)은 (1806)에서 저장 디바이스의 세트에 액세스하는 요청 배취의 요청을 식별하는 단계를 더 포함할 수 있다. 전술한 바와 같이, 요청은 판독 요청, 기록 요청, 삭제 요청, 지수 리스트 요청 등을 포함할 수 있다. (1808)에서, 공정(1800)은 스케줄에 적어도 부분적으로 기초하여 인에이블될 저장 디바이스가 어느 것인지를 결정하는 단계를 포함할 수 있다. 이 결정은 아카이벌 데이터 저장 서비스(206)에 의해 제어되거나 관리되는 제1 저장 디바이스, 제2 저장 디바이스 또는 저장 디바이스 세트 중 임의의 다른 저장 디바이스를 선택하는 단계를 포함할 수 있다. 나아가, (1810)에서, 공정(1800)은 (1808)에서의 결정에 적어도 부분적으로 기초하여 결정된 저장 디바이스의 전력 소비를 관리하는 것으로 종료할 수 있다.
데이터의 무결성을 검증하는 예시적인 방법 및 시스템이 위에서 기술되었다. 이 시스템 및 방법의 일부나 전부는 전술한 것과 같은 아키텍처에 의해 적어도 부분적으로 구현될 수 있으나 반드시 그런 것은 아니다.
도 19는 각종 실시예에 따른 측면을 구현하는 예시적인 환경(1900)의 측면을 도시한다. 이해되는 바와 같이, 웹 기반 환경이 설명을 위하여 사용되지만, 적절한 경우, 상이한 환경을 사용하여 각종 실시예를 구현할 수 있다. 환경은 적절한 네트워크(1904)를 통해 요청, 메시지 또는 정보를 송수신하고 디바이스의 사용자에 정보를 다시 운반하도록 동작가능한 임의의 적절한 디바이스를 포함할 수 있는 전자 클라이언트 디바이스(1902)를 포함한다. 이러한 클라이언트 디바이스의 예로는 퍼스널 컴퓨터, 셀폰(cell phone), 핸드헬드 메시징 디바이스, 랩탑 컴퓨터, 셋탑 박스, 퍼스널 데이터 어시스턴트(personal data assistant), 전자책 판독기 등을 포함한다. 네트워크는 인트라넷, 인터넷, 셀룰러 네트워크, 근거리 네트워크 또는 임의의 다른 네트워크 또는 이들의 조합을 포함하는 임의의 적절한 네트워크를 포함할 수 있다. 이러한 시스템에 사용되는 성분은 선택된 네트워크 및/또는 환경의 유형에 적어도 부분적으로 의존할 수 있다. 이러한 네트워크를 통해 통신하는 프로토콜 및 성분은 잘 알려져 있어서 본 명세서에 상세히 설명되지 않는다. 네트워크를 통한 통신은 유선 또는 무선 연결 및 이들의 조합에 의하여 인에이블될 수 있다. 이 예에서, 네트워크는 환경이 요청을 수신하고 이에 응답하여 컨텐츠를 서비스하는 웹 서버(1906)를 포함할 때 인터넷을 포함하지만, 다른 네트워크에서 유사한 목적을 서비스하는 대안적인 디바이스라도 이 기술 분야에 통상의 지식을 가진 자에게 명백한 것이므로 사용될 수 있다.
예시적인 환경은 적어도 하나의 애플리케이션 서버(1908) 및 데이터 저장소(1910)를 포함한다. 적절한 데이터 저장소로부터 데이터를 획득하는 것과 같은 태스크를 수행하도록 상호 작용할 수 있는, 체인으로 연결되거나 또는 구성될 수 있는, 여러 애플리케이션 서버, 계층 또는 다른 요소, 공정 또는 성분이 있을 수 있는 것으로 이해된다. 본 명세서에 사용된 바와 같이 "데이터 저장소"라는 용어는 임의의 표준, 분배된 또는 클러스터링된 환경에서 임의의 조합 및 개수의 데이터 서버, 데이터베이스, 데이터 저장 디바이스 및 데이터 저장 매체를 포함할 수 있는, 데이터를 저장하고 액세스하고 검색할 수 있는 임의의 디바이스 또는 디바이스의 조합을 말한다. 애플리케이션 서버는 애플리케이션을 위한 데이터 액세스 및 업무 로직의 대부분을 처리하는, 클라이언트 디바이스를 위한 하나 이상의 애플리케이션의 측면을 실행하는데 필요한 데이터 저장소와 통합하는 임의의 적절한 하드웨어 및 소프트웨어를 포함할 수 있다. 애플리케이션 서버는 데이터 저장소와 관련하여 액세스 제어 서비스를 제공하고, 사용자로 전달될 텍스트, 그래픽, 오디오 및/또는 비디오와 같은 컨텐츠를 생성할 수 있고, 이 예에서 HTML, XML 또는 다른 적절한 구조화된 언어 형태로 웹 서버에 의해 사용자에 서비스될 수 있다. 클라이언트 디바이스(1902)와 애플리케이션 서버(1908) 사이에 모든 요청과 응답을 처리하고 컨텐츠를 전달하는 것은 웹 서버에 의해 처리될 수 있다. 웹 서버와 애플리케이션 서버는 요구되는 것이 아니라 단지 예시적인 성분일 뿐, 본 명세서에 설명된 구조화된 코드는 본 명세서에 설명된 바와 같이 임의의 적절한 디바이스 또는 호스트 기계에서 실행될 수 있는 것으로 이해된다.
데이터 저장소(1910)는 특정 측면에 관한 데이터를 저장하기 위해 여러 별개의 데이터 테이블, 데이터베이스 또는 다른 데이터 저장 메커니즘 및 매체를 포함할 수 있다. 예를 들어, 도시된 데이터 저장소는 생산 측에 컨텐츠를 서비스하는데 사용될 수 있는, 생산 데이터(1912) 및 사용자 정보(1916)를 저장하는 메커니즘을 포함한다. 데이터 저장소는 리포트, 분석 또는 다른 목적에 사용될 수 있는 로그 데이터(1914)를 저장하는 메커니즘을 포함하도록 더 도시된다. 페이지 이미지 정보를 위한 데이터 저장소에 저장되고 데이터 저장소(1910)에 적절하게는 앞서 나열된 메커니즘 또는 추가적인 메커니즘 중 어느 것에 저장될 수 있는 올바른 정보에 액세스하는데 필요할 수 있는 많은 다른 측면이 있을 수 있는 것으로 이해된다. 데이터 저장소(1910)는, 이와 연관된 로직을 통해, 애플리케이션 서버(1908)로부터 명령을 수신하고, 이에 응답하여 데이터를 획득, 업데이트 또는 처리하도록 동작가능하다. 일례에서, 사용자는 특정 유형의 항목에 서치 요청을 제출할 수 있다. 이 경우에, 데이터 저장소는 사용자 정보에 액세스하여 사용자의 신원을 확인할 수 있고, 카탈로그 상세 정보에 액세스하여 이 유형의 항목에 관한 정보를 획득할 수 있다. 정보는 사용자가 사용자 디바이스(1902) 상의 브라우저를 통해 볼 수 있는 웹 페이지에 결과 리스트로 사용자에 리턴될 수 있다. 특정 관심 항목에 대한 정보는 전용 페이지 또는 브라우저의 윈도우로 볼 수 있다.
각 서버는 일반적으로 이 서버의 일반적인 관리 및 동작을 위해 실행가능한 프로그램 명령을 제공하는 운영 시스템을 포함할 수 있고, 일반적으로 서버의 프로세서에 의해 실행될 때, 서버가 의도된 기능을 수행하게 하는 명령을 저장하는 컴퓨터-판독가능한 저장 매체(예를 들어, 하드 디스크, 랜덤 액세스 메모리, 판독 전용 메모리 등)를 포함할 수 있다. 운영 시스템 및 서버의 일반적인 기능에 대한 적절한 구현은 알려져 있거나 또는 상업적으로 이용가능하여, 본 명세서에 설명된 본 발명을 고려하여 이 기술 분야에 통상의 지식을 가진 자에게는 용이하게 구현될 수 있다.
일 실시예에서 환경은 하나 이상의 컴퓨터 네트워크 또는 직접 연결을 사용하여 통신 링크를 통해 상호 연결된 여러 컴퓨터 시스템 및 성분을 사용하여 분배된 컴퓨팅 환경이다. 그러나, 이 기술 분야에 통상의 지식을 가진 자라면 이러한 시스템이 도 19에 도시된 것보다 더 적거나 더 많은 개수의 성분을 구비하는 시스템에도 동일하게 동작할 수 있다는 것으로 이해할 수 있을 것이다. 따라서, 도 19에 도시된 시스템(1900)은 특성상 예시적인 것으로 이해되고, 본 발명의 범위를 제한하지 않는 것이다.
본 발명의 예시적인 실시예는 이하의 사항들을 고려하여 설명될 수 있다:
1. 비용-효율적인 및 내구적인 아카이벌 데이터 저장 서비스를 제공하는 컴퓨터로-구현되는 방법으로서,
실행가능한 명령으로 구성된 아카이벌 데이터 저장 시스템의 하나 이상의 컴퓨터 시스템의 제어 하에,
요청자 시스템으로부터 네트워크를 통해, 데이터 객체를 상기 아카이벌 데이터 저장 시스템으로 저장하는 저장 요청을 수신하는 단계;
상기 데이터 객체를 상기 아카이벌 데이터 저장 시스템에 저장하는 단계;
데이터 객체와 연관된 데이터 객체 식별자를 제공하는 단계;
상기 데이터 객체를 검색하는 검색 요청과 연관하여, 상기 데이터 객체 식별자를 수신하는 단계;
상기 검색 요청에 대응하는 검색 작업을 생성하는 단계;
상기 검색 작업을 펜딩 작업의 콜렉션에 추가하는 단계;
하나 이상의 배취로 상기 펜딩 작업의 콜렉션을 처리하는 단계; 및
상기 검색된 데이터 객체를 제공하는 단계를 포함하는 컴퓨터로-구현되는 방법.
2. 제1항에 있어서, 상기 저장 요청에 대응하는 저장 작업을 생성하는 단계 및 상기 저장 작업을 상기 펜딩 작업의 콜렉션에 추가하는 단계를 더 포함하되, 상기 데이터 객체를 저장하는 단계는 상기 데이터 객체를 준비 저장소에 저장하는 단계를 포함하는 것인, 컴퓨터로-구현되는 방법.
3. 제1항에 있어서, 상기 검색 작업과 연관된 검색 작업 식별자를 제공하는 단계를 더 포함하되, 상기 검색된 데이터 객체를 제공하는 단계는 상기 검색된 데이터 객체를 하나 이상의 파트로 상기 데이터 객체에 대한 요청으로 상기 검색 작업 식별자를 지정한 요청자 시스템으로 송신하는 단계를 포함하는 것인, 컴퓨터로-구현되는 방법.
4. 제1항에 있어서, 상기 검색 작업이 성공적으로 완료된 후 상기 검색 작업의 완료의 통지를 제공하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
5. 제2항에 있어서, 상기 검색된 상기 데이터 객체를 제공하는 단계는 상기 준비 저장소로부터 상기 데이터 객체를 검색하는 단계를 포함하는 것인, 컴퓨터로-구현되는 방법.
6. 제1항에 있어서, 상기 데이터 객체의 적어도 일부의 다이제스트에 적어도 부분적으로 기초하여 상기 데이터 객체의 무결성을 검증하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
7. 컴퓨터로-구현되는 방법으로서,
실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에,
데이터 객체를 검색하는 데이터 검색 요청을 수신하는 단계로서, 상기 데이터 검색 요청은 데이터 객체 식별자를 지정하는 것인, 상기 수신하는 단계;
상기 데이터 검색 요청에 대응하는 데이터 검색 작업을 생성하는 단계;
상기 데이터 검색 작업에 대한 정보를 획득하는데 사용될 수 있는 상기 데이터 검색 작업과 연관된 작업 식별자를 제공하는 단계; 및
상기 작업 식별자를 제공한 후, 적어도 부분적으로 상기 데이터 객체 식별자를 사용하여 상기 데이터 검색 작업을 처리하여 상기 데이터 객체에 액세스를 제공하는 단계를 포함하는 컴퓨터로-구현되는 방법.
8. 제7항에 있어서, 상기 데이터 객체 식별자는 이전의 저장 요청에 응답하여 상기 데이터 객체를 저장하는데 제공되는 것인, 컴퓨터로-구현되는 방법.
9. 제7항에 있어서, 상기 데이터 검색 작업을 처리하는 단계는,
실행할 상기 데이터 검색 작업을 선택하는 단계;
상기 데이터 객체 식별자에 적어도 부분적으로 기초하여, 하나 이상의 인코딩된 데이터 성분을 저장하는 하나 이상의 저장 개체를 결정하는 단계로서, 상기 하나 이상의 인코딩된 데이터 성분은 상기 데이터 객체에 적어도 부분적으로 기초하여 생성된 것인, 상기 결정하는 단계;
상기 결정된 것으로부터 상기 하나 이상의 인코딩된 데이터 성분의 적어도 일부를 검색하는 단계; 및
상기 검색된 인코딩된 데이터 성분을 디코딩하여 상기 검색된 데이터 객체를 획득하는 단계를 포함하는 것인, 컴퓨터로-구현되는 방법.
10. 제9항에 있어서, 상기 데이터 검색 작업을 선택하는 단계는, 배취 처리 스케줄에 적어도 부분적으로 기초하는 것인, 컴퓨터로-구현되는 방법.
11. 제10항에 있어서, 상기 배취 처리 스케줄은 효율을 얻기 위해 사용되는 것인, 컴퓨터로-구현되는 방법.
12. 제7항에 있어서, 상기 작업 식별자를 지정하는 작업 상태 요청에 응답하여 상기 데이터 검색 작업의 상태를 제공하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
13. 아카이벌 데이터 저장 서비스를 제공하는 시스템으로서,
하나 이상의 아카이벌 데이터 저장 디바이스;
임시 데이터 저장소;
하나 이상의 프로세서; 및
실행가능한 명령을 포함하는 메모리를 포함하되, 상기 명령은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금, 집합적으로 적어도,
데이터 객체를 저장하는 데이터 저장 요청을 수신하는 동작;
상기 데이터 객체를 상기 임시 저장소에 저장하는 동작;
상기 데이터와 연관된 데이터 객체 식별자를 제공하는 동작으로서, 상기 데이터 객체 식별자는 상기 데이터 객체를 찾는데 사용될 수 있는 적어도 저장 위치 정보를 인코딩하는 것인, 상기 제공하는 동작; 및
상기 데이터 객체 식별자를 제공한 후, 상기 저장 위치 정보에 의해 지정된 위치에 상기 데이터 객체를 저장하는 동작을 수행하게 하는 것인 시스템.
14. 제13항에 있어서, 상기 실행가능한 명령은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금, 상기 데이터 저장 요청에 대응하는 데이터 저장 작업을 집합적으로 생성하는 동작을 더 수행하게 하고, 상기 저장 위치 정보에 의해 지정된 위치에 상기 데이터 객체를 저장하는 동작은 상기 저장 위치 정보에 적어도 부분적으로 기초하여 상기 데이터 저장 작업을 처리하는 동작을 포함하는 것인 시스템.
15. 제14항에 있어서, 상기 데이터 저장 작업을 처리하는 동작은 배취 처리 스케줄에 적어도 부분적으로 기초하여 실행할 작업을 스케줄링하는 동작을 포함하는 것인 시스템.
16. 제13항에 있어서, 상기 저장 위치 정보에 의해 지정된 위치에 상기 데이터 객체를 저장하는 동작은,
상기 임시 저장소로부터 상기 데이터 객체를 획득하는 동작;
하나 이상의 데이터 인코딩 구조를 획득하는 동작;
상기 하나 이상의 인코딩 구조로 상기 데이터 객체를 인코딩하여 복수의 인코딩된 데이터 성분을 획득하는 동작; 및
상기 복수의 인코딩된 데이터 성분을 상기 하나 이상의 아카이벌 데이터 저장 디바이스의 적어도 일부에 저장하는 동작을 포함하는 것인 시스템.
17. 제13항에 있어서, 상기 데이터 객체 식별자는 상기 데이터 객체의 무결성을 검증하는데 사용될 수 있는 적어도 데이터 검증 정보를 인코딩하는 것인 시스템.
18. 제17항에 있어서, 상기 실행가능한 명령은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금, 상기 데이터 검증 정보에 적어도 부분적으로 기초하여 상기 데이터 객체의 무결성을 집합적으로 검증하는 동작을 더 수행하게 하는 것인 시스템.
19. 실행가능한 명령을 집합적으로 저장한 하나 이상의 비-일시적인 컴퓨터-판독가능한 저장 매체로서, 상기 명령은, 아카이벌 데이터 저장 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 적어도,
복수의 데이터 검색 요청을 수신하는 동작으로서, 상기 복수의 데이터 검색 요청 각각은 검색될 데이터 객체에 대한 데이터 객체 식별자를 지정하는 것인, 상기 수신하는 동작;
수신된 데이터 검색 요청에 각각 대응하는 데이터 검색 작업을 생성하는 동작;
작업 식별자를 제공하는 단계로서, 각 작업 식별자는 데이터 검색 작업에 각각 대응하고 상기 데이터 검색 작업에 대한 정보를 획득하는데 사용될 수 있는 것인, 상기 작업 식별자를 제공하는 동작;
상기 데이터 검색 작업의 적어도 서브셋을 취합하여 작업 배취를 형성하는 동작; 및
상기 작업 식별자를 제공한 후 데이터 검색 작업의 상기 서브셋에 대응하는 상기 작업 배취를 처리하는 동작을 수행하게 하는 것인 하나 이상의 컴퓨터-판독가능한 저장 매체.
20. 제19항에 있어서, 상기 명령은 상기 시스템으로 하여금 상기 복수의 데이터 검색 요청의 적어도 서브셋을 취합하여 요청 배취를 형성하는 동작 및 상기 데이터 검색 요청의 서브셋에 대응하는 데이터 객체 식별자에 적어도 부분적으로 기초하여 상기 요청 배취를 검증하는 동작을 더 수행하게 하는 것인 하나 이상의 컴퓨터-판독가능한 저장 매체.
21. 제19항에 있어서, 상기 명령은 상기 시스템으로 하여금 전력 관리 스케줄에 적어도 부분적으로 기초하여 상기 데이터 검색 작업의 적어도 일부를 처리하는 동작을 더 수행하게 하는 것인 하나 이상의 컴퓨터-판독가능한 저장 매체.
22. 제19항에 있어서, 상기 명령은 상기 시스템으로 하여금 to 상기 데이터 검색 작업을 파티션하여 병렬 처리를 제공하는 동작을 더 수행하게 하는 것인 하나 이상의 컴퓨터-판독가능한 저장 매체.
23. 제19항에 있어서, 상기 명령은 상기 시스템으로 하여금 상기 복수의 데이터 검색 요청에 대응하는 상기 데이터 객체의 적어도 일부에 액세스를 제공하는 동작을 더 수행하게 하는 것인 하나 이상의 컴퓨터-판독가능한 저장 매체.
24. 제23항에 있어서, 상기 명령은 상기 시스템으로 하여금 상기 복수의 데이터 검색 요청에 대응하는 상기 데이터 객체의 적어도 일부에 대한 데이터 무결성을 검증하는 동작을 더 수행하게 하는 것인 하나 이상의 컴퓨터-판독가능한 저장 매체.
25. 데이터 무결성을 확인하는 컴퓨터로-구현되는 방법으로서,
실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에,
아카이벌 데이터 저장 서비스에의 요청과 관련하여, 원격 컴퓨팅 디바이스로부터 데이터 페이로드의 복수의 부분을 수신하는 단계;
상기 복수의 부분의 적어도 서브셋의 각 부분에 대하여, 미리 한정된 사이즈의 하나 이상의 서브-부분을 생성하는 단계;
상기 하나 이상의 서브-부분에 적어도 부분적으로 기초하여 하나 이상의 다이제스트를 계산하는 단계;
상기 하나 이상의 다이제스트를 표현하는 노드에서 계층적인 데이터 구조의 적어도 루트 노드를 생성하는 단계;
상기 계층적인 데이터 구조의 루트 노드와 연관된 상기 계층적인 데이터 구조의 상위 레벨 다이제스트를 결정하는 단계;
상기 데이터 페이로드에 대응하는 상기 원격 컴퓨팅 디바이스에 의해 생성된 상위 레벨 다이제스트를 수신하는 단계; 및
상기 수신된 상위 레벨 다이제스트와 상기 결정된 상위 레벨 다이제스트를 비교한 것에 적어도 부분적으로 기초하여, 저장된 데이터 페이로드가 상기 수신된 복수의 부분에 대응하는 수신된 데이터 페이로드와 매칭하는지를 확인하는 단계를 포함하는 컴퓨터로-구현되는 방법.
26. 제25항에 있어서, 명령을 상기 원격 컴퓨팅 디바이스에 제공하는 단계를 더 포함하되, 상기 명령은 상기 원격 컴퓨팅 디바이스로 하여금 상기 계층적인 데이터 구조를 생성하게 하고 상기 수신된 상위 레벨 다이제스트를 제공하게 하도록 구성된 것인, 컴퓨터로-구현되는 방법.
27. 제25항에 있어서, 상기 데이터 페이로드의 복수의 부분은 상기 원격 컴퓨팅 디바이스로부터 상기 데이터 페이로드를 저장하는 전자 요청의 일부로 수신되는 것인, 컴퓨터로-구현되는 방법.
28. 제27항에 있어서, 상기 원격 디바이스가 상기 전자 요청을 수행하는 기능 호출을 제공하는 단계를 더 포함하되, 상기 전자 요청은 적어도 제공된 기능 호출을 포함하는 것인, 컴퓨터로-구현되는 방법.
29. 제25항에 있어서, 상기 계층적인 데이터 구조는 적어도 이진 트리를 포함하는 것인, 컴퓨터로-구현되는 방법.
30. 제25항에 있어서, 상기 복수의 부분 각각에 대한 사이즈의 지시를 수신하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
31. 데이터 무결성을 확인하는 컴퓨터로-구현되는 방법으로서,
실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에,
데이터 페이로드의 하나 이상의 파트를 수신하는 단계;
상기 하나 이상의 파트의 적어도 서브셋의 각 파트에 대하여, 서브-파트를 생성하는 단계;
상기 생성된 서브-파트에 적어도 부분적으로 기초하여 값을 계산하는 단계;
상기 계산된 값에 적어도 부분적으로 기초하여 데이터 구조의 적어도 루트 노드를 생성하는 단계; 및
상기 데이터 구조의 상기 루트 노드와 연관된 상기 데이터 구조의 상위 레벨 값을 결정하는 단계를 포함하는 방법.
32. 제31항에 있어서,
상기 데이터 페이로드를 아카이벌 데이터 저장소에 저장하는 단계; 및
상기 결정된 상위 레벨 값 및 수신된 상위 레벨 값에 적어도 부분적으로 기초하여, 상기 저장된 데이터 페이로드가 상기 수신된 하나 이상의 파트에 대응하는 수신된 데이터 페이로드와 일치하는지를 검증하는 단계를 더 포함하는 것인, 컴퓨터로-구현되는 방법.
33. 제31항에 있어서, 상기 서브-파트는 제1 미리 한정된 사이즈가 되도록 생성되고, 상기 수신된 하나 이상의 파트는 상기 제1 미리 한정된 사이즈의 정수배인 제2 사이즈인 것인, 컴퓨터로-구현되는 방법.
34. 제33항에 있어서, 상기 정수는 상기 데이터 구조의 분기 정도에 적어도 부분적으로 기초하는 것인, 컴퓨터로-구현되는 방법.
35. 제31항에 있어서, 상기 데이터 페이로드를 식별하는 데이터 객체 식별자를 제공하는 단계를 더 포함하되, 상기 데이터 객체 식별자는 상기 데이터 구조의 상기 상위 레벨 값을 포함하는 것인, 컴퓨터로-구현되는 방법.
36. 제35항에 있어서,
상기 저장된 데이터 페이로드에 대한 요청을 수신하는 단계; 및
상기 상위 레벨 값에 적어도 부분적으로 기초하여, 상기 데이터 페이로드를 제공하기 전에 상기 저장된 데이터 페이로드가 변화되지 않았는지를 확인하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
37. 제31항에 있어서,
제1 저장 디바이스의 상기 데이터 페이로드를 제2 저장 디바이스에 저장하는 단계; 및
상기 상위 레벨 값에 적어도 부분적으로 기초하여, 상기 제2 저장 디바이스에 저장된 데이터 페이로드가 상기 제1 저장 디바이스의 데이터 페이로드와 일치하는지를 확인하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
38. 제31항에 있어서,
제2 생성된 서브-파트에 적어도 부분적으로 기초하여 상기 데이터 페이로드를 재파티션하는 단계로서, 상기 제2 생성된 서브-파트는 상기 생성된 서브-파트와는 상이한 것인, 상기 재파티션하는 단계; 및
상기 상위 레벨 값에 적어도 부분적으로 기초하여, 상기 재파티션된 데이터 페이로드가 저장된 데이터 페이로드와 일치하는지를 확인하는 단계를 더 포함하되, 상기 저장된 데이터 페이로드는 상기 수신된 데이터 페이로드에 적어도 부분적으로 초하는 것인, 컴퓨터로-구현되는 방법.
39. 데이터 무결성을 확인하는 시스템으로서,
컴퓨터-실행가능한 명령을 저장하는 적어도 하나의 메모리; 및
상기 적어도 하나의 메모리에 액세스하도록 구성된 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서는, 집합적으로 적어도,
복수의 청크를 포함하는 데이터의 적어도 하나의 청크를 저장하는 동작;
상기 데이터의 적어도 하나의 청크의 적어도 하나의 서브-청크를 생성하는 동작;
상기 서브-청크에 대응하는 적어도 다이제스트를 저장하는 동작;
상기 서브-청크에 대응하는 상기 저장된 다이제스트에 적어도 부분적으로 기초하여 데이터 구조를 생성하는 동작; 및
상기 생성된 데이터 구조의 상위 레벨 다이제스트를 컴퓨팅 디바이스에 제공하는 동작을 수행하는 상기 컴퓨터-실행가능한 명령을 실행하도록 구성된 것인 시스템.
40. 제39항에 있어서, 상기 적어도 하나의 프로세서는 상기 컴퓨팅 디바이스에 의해 지시된 미리 한정된 사이즈에 적어도 부분적으로 기초하여 상기 컴퓨팅 디바이스로부터 데이터의 적어도 하나의 청크를 수신하는 동작을 수행하는 상기 컴퓨터-실행가능한 명령을 실행하도록 더 구성된 것인 시스템.
41. 제40항에 있어서, 상기 데이터의 적어도 하나의 청크는, 상기 컴퓨팅 디바이스로부터, 상기 시스템에 의해 제공된 명령 포맷에 적어도 부분적으로 기초하여 상기 데이터를 저장하는 전자 요청으로 수신되는 것인 시스템.
42. 제39항에 있어서, 상기 상위 레벨 다이제스트는 상기 데이터를 식별하도록 구성된 식별자에 첨부된 것인 시스템.
43. 제42항에 있어서, 상기 적어도 하나의 프로세서는,
상기 복수의 청크를 포함하는 상기 데이터를 저장하는 동작;
상기 데이터를 상기 컴퓨팅 디바이스에 제공하는 요청을 수신하는 동작으로서, 상기 요청은 상기 식별자를 포함하는, 상기 요청을 수신하는 동작; 및
상기 데이터를 상기 컴퓨팅 디바이스에 제공하기 전에 상기 상위 레벨 다이제스트에 적어도 부분적으로 기초하여 상기 데이터를 검증하는 동작을 수행하는 상기 컴퓨터-실행가능한 명령을 실행하도록 더 구성된 것인 시스템.
44. 제42항에 있어서, 상기 적어도 하나의 프로세서는,
상기 식별자에 대한 다이제스트를 생성하는 동작; 및
명령에서 상기 식별자를 참조하기 전에 상기 식별자에 대해 생성된 다이제스트에 적어도 부분적으로 기초하여 상기 식별자를 검증하는 동작을 수행하는 상기 컴퓨터-실행가능한 명령을 실행하도록 더 구성된 것인 시스템.
45. 데이터 무결성을 확인하는 컴퓨터-실행가능한 명령을 저장하는 하나 이상의 컴퓨터-판독가능한 매체로서, 상기 명령은, 하나 이상의 프로세서에 의해 실행될 때,
데이터 객체와 관련하여 제1 데이터 동작을 수행하는 동작으로서, 상기 제1 데이터 동작은 상기 데이터 객체를 제1 파티션으로 제1 파티션한 것에 적어도 부분적으로 기초하는 것인, 상기 제1 데이터 동작을 수행하는 동작;
데이터 확인 알고리즘을 사용하여 상기 데이터 객체를 확인하여 상기 제1 파티션에 적어도 부분적으로 기초하여 제1 확인값을 생성하는 동작;
상기 데이터 객체와 관련하여 제2 데이터 동작을 수행하는 동작으로서, 상기 제2 데이터 동작은 상기 데이터 객체를 제2 파티션으로 제2 파티션한 것에 적어도 부분적으로 기초하고, 상기 제2 파티션은 상기 제1 파티션과 상이한 것인, 상기 제2 데이터 동작을 수행하는 동작;
상기 데이터 확인 알고리즘을 사용하여 상기 데이터 객체를 확인하여 제2 확인값을 생성하는 동작; 및
상기 제2 확인값이 상기 제1 확인값과 일치하는지 여부를 결정하는 동작을 수행하도록 상기 하나 이상의 프로세서를 구성하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
46. 제45항에 있어서, 상기 데이터 확인 알고리즘을 사용하는 동작은 미리 결정된 사이즈의 상기 데이터의 하나 이상의 파티션을 생성하는 동작을 포함하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
47. 제46항에 있어서, 상기 제1 파티션 중 적어도 하나 또는 상기 제2 파티션 중 적어도 하나는 상기 미리 결정된 사이즈의 배수의 사이즈를 구비하고, 상기 배수는 상기 제1 데이터 객체와 연관된 데이터 구조의 정도의 정수 지수(integer exponentiation) 결과인 것인 하나 이상의 컴퓨터-판독가능한 매체.
48. 제45항에 있어서, 상기 명령은 상기 제1 데이터 동작 또는 상기 제2 데이터 동작 중 적어도 하나를 수행하는 방법 호출을 수행하는 명령을 제공하는 동작을 수행하도록 상기 하나 이상의 프로세서를 더 구성하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
49. 제45항에 있어서, 상기 제1 데이터 동작 또는 상기 제2 데이터 동작 중 적어도 하나는 네트워크를 통해 상기 데이터 객체를 전송하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
50. 제49항에 있어서, 상기 객체는 부분적으로 네트워크를 통해 전송되는 것인 하나 이상의 컴퓨터-판독가능한 매체.
51. 제45항에 있어서, 상기 제1 동작은 상기 데이터 객체를 적어도 수신하는 동작을 포함하고 상기 제2 동작은 상기 데이터 객체를 아카이벌 데이터 저장소에 적어도 저장하는 동작을 포함하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
52. 제51항에 있어서, 상기 명령은 상기 제2 확인값에 적어도 부분적으로 기초하여 상기 데이터 객체의 무결성을 보장하는 동작을 수행하도록 상기 하나 이상의 프로세서를 더 구성하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
53. 제51항에 있어서, 상기 명령은 상기 제2 파티션에 적어도 부분적으로 기초하여 상기 데이터 객체의 무결성을 보장하는 동작을 수행하도록 상기 하나 이상의 프로세서를 더 구성하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
54. 저장 디바이스 전력을 관리하는 컴퓨터로-구현되는 방법으로서,
실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에,
아카이브 데이터 저장 시스템의 데이터 저장 디바이스를 그룹으로 분류하는 단계로서, 각 그룹은 상기 데이터 저장 디바이스의 서브셋을 포함하는 것인, 상기 분류하는 단계;
스케줄에 따라 상기 그룹의 전력 상태를 변경하는 단계로서, 상기 스케줄은, 평균적으로, 상기 데이터 저장 디바이스의 미리 결정된 양이 전력 다운 상태에 있는 것을 보장하도록 구성된 것인, 상기 변경하는 단계;
데이터 처리 요청의 배취를 획득하는 단계; 및
상기 데이터 처리 요청의 배취를 처리하는 단계로서, 적어도, 상기 요청의 적어도 서브셋의 각 요청에 대해,
전력 업 상태에 있을 때, 상기 요청을 서비스하도록 사용될 수 있는 상기 전력 다운 상태에 있는 데이터 저장 디바이스를 식별하는 것; 및
상기 식별된 데이터 저장 디바이스를 포함하는 그룹이 상기 전력 업 상태에 있도록 상기 스케줄에 따라 변경될 때 상기 요청을 서비스하는 것에 의해 상기 데이터 처리 요청의 배취를 처리하는 단계를 포함하는 컴퓨터로-구현되는 방법.
55. 제54항에 있어서, 상기 그룹은 적어도 상기 서브셋의 상기 데이터 저장 디바이스의 양을 지시하는 것인, 컴퓨터로-구현되는 방법.
56. 제54항에 있어서, 상기 그룹의 전력 상태를 변경하는 단계는 상기 그룹의 상기 데이터 저장 디바이스의 전력 업 또는 전력 다운 중 적어도 하나를 수행하도록 구성된 명령을 저장 디바이스 제어기에 적어도 제공하는 단계를 포함하는 것인, 컴퓨터로-구현되는 방법.
57. 제54항에 있어서, 상기 데이터 처리 요청의 배취는 데이터를 저장하는 요청, 데이터를 삭제하는 요청, 또는 데이터를 판독하는 요청 중 적어도 하나를 포함하는 것인, 컴퓨터로-구현되는 방법.
58. 제54항에 있어서, 상기 요청을 서비스하는 단계는 상기 식별된 데이터 저장 디바이스로부터 적어도 데이터를 판독하는 것 또는 삭제하는 단계를 포함하는 것인, 컴퓨터로-구현되는 방법.
59. 제54항에 있어서, 상기 식별된 데이터 저장 디바이스를 포함하는 그룹이 상기 전력 업 상태에 있도록 변경되기 전에 상기 전력 업 상태에 있는 그룹에서 저장 디바이스를 전력 다운하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
60. 저장 디바이스 전력을 관리하는 컴퓨터로-구현되는 방법으로서,
실행가능한 명령으로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에,
스케줄에 적어도 부분적으로 기초하여 하나 이상의 데이터 저장 디바이스의 전력을 관리하는 단계;
상기 하나 이상의 데이터 저장 디바이스와 연관된, 배취의 데이터 처리 요청을 식별하는 단계; 및
상기 데이터 처리 요청을 처리하는 단계로서, 적어도,
더 높은 전력 상태에 있을 때 상기 요청을 서비스할 수 있는 더 낮은 전력 상태에 있는 데이터 저장 디바이스를 식별하는 것; 및
상기 식별된 데이터 저장 디바이스가 상기 스케줄에 적어도 부분적으로 기초하여 전력 업될 때 상기 요청을 서비스하는 것에 의해 상기 데이터 처리 요청을 처리하는 단계를 포함하는 것인, 컴퓨터로-구현되는 방법.
61. 제60항에 있어서, 상기 스케줄은 상기 데이터 저장 디바이스의 미리 결정된 양을 더 낮은 전력 상태에 유지하도록 구성된 것인, 컴퓨터로-구현되는 방법.
62. 제60항에 있어서, 상기 데이터 저장 디바이스와 연관된 데이터 처리 작업을 수행하도록 구성된 데이터 저장 노드에 의해 상기 스케줄을 구현하는 단계를 더 포함하는 컴퓨터로-구현되는 방법.
63. 제60항에 있어서, 상기 데이터 저장 디바이스와 연관된 데이터 처리 작업을 관리하도록 구성된 상기 스케줄을 저장 노드 레지스트라로부터 수신하는 단계를 더 포함하는 것인, 컴퓨터로-구현되는 방법.
64. 제60항에 있어서, 상기 데이터 처리 요청은 상기 배취에 적어도 부분적으로 기초하여 처리되는 것인, 컴퓨터로-구현되는 방법.
65. 제60항에 있어서, 상기 데이터 처리 요청은 판독 요청, 기록 요청 또는 삭제 요청 중 적어도 하나인 것인, 컴퓨터로-구현되는 방법.
66. 저장 디바이스 전력을 관리하는 시스템으로서,
컴퓨터-실행가능한 명령을 저장하는 적어도 하나의 메모리; 및
상기 적어도 하나의 메모리에 액세스하도록 구성된 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서는,
하나 이상의 저장 디바이스의 전력을 관리하는 스케줄과 연관된 정보를 저장하는 동작;
상기 하나 이상의 저장 디바이스와 연관된, 상기 요청 배취에 포함된, 요청을 식별하는 동작;
상기 요청을 처리하는 동작으로서, 집합적으로 적어도,
상기 요청을 서비스할 수 있는 일시적으로 비활성화된 저장 디바이스를 결정하는 것; 및
상기 결정된 저장 디바이스가 상기 스케줄에 적어도 부분적으로 기초하여 활성화될 때 상기 요청을 서비스하는 것을 적어도 수행하는 추가적인 컴퓨터-실행가능한 명령을 실행하는 것에 의해 상기 요청을 처리하는 동작을 수행하는 상기 컴퓨터-실행가능한 명령을 실행하도록 구성된 것인 시스템.
67. 제66항에 있어서, 상기 스케줄은 일시적으로 동시에 비활성화되는 상기 하나 이상의 저장 디바이스의 양을 적어도 지시하는 것인 시스템.
68. 제66항에 있어서, 상기 요청은 상기 배취의 다른 요청과 함께 처리된 것인 시스템.
69. 제66항에 있어서, 상기 스케줄은 상기 하나 이상의 저장 디바이스와 연관된 비용을 최소화하는 것, 상기 하나 이상의 저장 디바이스의 전력 소비를 최소화하는 것, 또는 상기 하나 이상의 저장 디바이스의 동작 수명을 최대화하는 것 중 적어도 하나를 수행하도록 구성된 것인 시스템.
70. 제66항에 있어서, 상기 스케줄은 상기 하나 이상의 저장 디바이스와 연관된 요청을 관리하도록 구성된 성분으로부터 수신된 것인 시스템.
71. 제66항에 있어서, 상기 요청을 서비스하는 동작은 상기 하나 이상의 저장 디바이스에 액세스하는 요청에 적어도 부분적으로 기초하여 상기 스케줄을 적어도 변경하는 동작을 포함하는 것인 시스템.
72. 저장 디바이스 전력을 관리하는 컴퓨터-실행가능한 명령을 저장한 하나 이상의 컴퓨터-판독가능한 매체로서, 상기 명령은, 하나 이상의 프로세서에 의해 실행될 때,
상기 하나 이상의 저장 디바이스의 적어도 제2 저장 디바이스보다 상이한 시간에 하나 이상의 저장 디바이스의 적어도 제1 저장 디바이스를 인에이블하는 것과 연관된 스케줄을 획득하는 동작;
상기 하나 이상의 저장 디바이스에 액세스하는 요청 배취의 요청을 식별하는 동작;
상기 스케줄 및 상기 요청에 적어도 부분적으로 기초하여, 적어도 상기 제1 저장 디바이스 또는 상기 제2 저장 디바이스 중 활성화할 것을 결정하는 동작; 및
상기 결정에 적어도 부분적으로 기초하여 상기 하나 이상의 저장 디바이스의 적어도 상기 제1 또는 제2 저장 디바이스의 전력 소비를 관리하는 동작을 수행하도록 상기 하나 이상의 프로세서를 구성한 것인 하나 이상의 컴퓨터-판독가능한 매체.
73. 제72항에 있어서, 상기 명령은 상기 하나 이상의 저장 디바이스의 적어도 액세스와 동기화하도록 상기 하나 이상의 저장 디바이스의 전력 소비를 관리하도록 구성된 글로벌 시간 신호를 수신하는 동작을 수행하도록 상기 하나 이상의 프로세서를 더 구성하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
74. 제73항에 있어서, 상기 전력 소비를 관리하는 동작은 상기 글로벌 시간 신호에 적어도 부분적으로 기초하여 적어도 상기 제1 또는 제2 저장 디바이스를 적어도 전력 오프 또는 전력 온 하는 단계를 포함하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
75. 제73항에 있어서, 상기 하나 이상의 저장 디바이스에 액세스하는 동작은 상기 글로벌 시간 신호에 적어도 부분적으로 기초하여 적어도 상기 제1 또는 제2 저장 디바이스로부터 적어도 데이터를 판독하거나 이에 데이터를 기록하거나 데이터를 삭제하는 동작을 포함하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
76. 제72항에 있어서, 상기 스케줄은 동시에 동작하거나 또는 각 동작 저장 디바이스의 동작 동안 동작하도록 다수의 저장 디바이스 중 적어도 하나를 지시하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
77. 제72항에 있어서, 상기 회전 스케줄은 상기 하나 이상의 저장 디바이스와 연관된 온도 또는 진동의 균일한 분배를 보장하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
78. 제72항에 있어서, 적어도 상기 제1 저장 디바이스 또는 상기 제2 저장 디바이스 중 활성화하는 것을 결정하는 동작은 진동을 회피하거나 발열을 회피하는 것 중 적어도 하나에 적어도 부분적으로 기초하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
79. 제72항에 있어서, 특정 서버에 대해 상기 회전 스케줄은, 특정 분배에 적어도 부분적으로 기초하여 상기 특정 서버의 상기 하나 이상의 저장 디바이스를 활성화하거나 또는 비활성화하도록 상기 특정 서버의 상기 하나 이상의 저장 디바이스를 그룹화하는 것인 하나 이상의 컴퓨터-판독가능한 매체.
각종 실시예는 여러 동작 환경에서 더 구현될 수 있고, 일부 경우에 다수의 애플리케이션 중 어느 것을 동작시키는데 사용될 수 있는 하나 이상의 사용자 컴퓨터, 컴퓨팅 디바이스 또는 처리 디바이스를 포함할 수 있다. 사용자 또는 클라이언트 디바이스는, 다수의 일반 목적 퍼스널 컴퓨터 중 임의의 것, 예를 들어, 표준 운영 시스템을 실행하는 데스크탑 또는 랩탑 컴퓨터, 및 모바일 소프트웨어를 실행하고 다수의 네트워킹 및 메시징 프로토콜을 지원할 수 있는 셀룰러, 무선 및 핸드헬드 디바이스를 포함할 수 있다. 이러한 시스템은 여러 상업적으로-구입가능한 운영 시스템 및 개발 및 데이터베이스 관리와 같은 목적을 위한 다른 알려진 애플리케이션 중 임의의 것을 실행하는 다수의 워크스테이션을 더 포함할 수 있다. 이들 디바이스는 다른 전자 디바이스, 예를 들어, 더미(dummy) 단말, 신(thin)-클라이언트, 게임 시스템 및 네트워크를 통해 통신할 수 있는 다른 디바이스를 더 포함할 수 있다.
대부분의 실시예는 여러 상업적으로-구입가능한 프로토콜, 예를 들어, TCP/IP, OSI, FTP, UPnP, NFS, CIFS 및 애플토크(AppleTalk) 중 임의의 것을 사용하여 통신을 지원하는, 이 기술 분야에 통상의 지식을 가진 자에 잘 알려져 있는 적어도 하나의 네트워크를 사용한다. 네트워크는, 예를 들어, 근거리 네트워크, 광역 네트워크, 가상 사설 네트워크, 인터넷, 인트라넷, 엑스트라넷, 공중 교환 전화망(public switched telephone network), 적외선 네트워크, 무선 네트워크 및 이들의 임의의 조합일 수 있다.
웹 서버를 사용하는 실시예에서, 웹 서버는 HTTP 서버, FTP 서버, CGI 서버, 데이터 서버, 자바(Java) 서버 및 업무 애플리케이션 서버를 포함하는 여러 서버 또는 중간 애플리케이션(mid-tier application) 중 어느 것을 실행될 수 있다. 서버(들)는 임의의 프로그래밍 언어, 예를 들어, 자바(등록상표), C, C# 또는 C++ 또는 임의의 스크립트 언어, 예를 들어, 펄(Perl), 파이톤(Python) 또는 TCL 및 이들의 조합으로 기록된 하나 이상의 스크립트 또는 프로그램으로 구현될 수 있는 하나 이상의 웹 애플리케이션을 실행하는 것에 의해 사용자 디바이스로부터 응답 요청으로 프로그램 또는 스크립트를 더 실행할 수 있다. 서버(들)는, 오라클(Oracle(등록상표)), 마이크로소프트(Microsoft(등록상표)), 시베이스(Sybase(등록상표)) 및 IBM(등록상표)으로부터 상업적으로 구입가능한 것을 포함하지만 이들로 제한되지 않는 데이터베이스 서버를 더 포함할 수 있다.
환경은 전술한 바와 같이 여러 데이터 저장소 및 다른 메모리 및 저장 매체를 포함할 수 있다. 이들은 여러 위치에 존재할 수 있는데, 예를 들어, 하나 이상의 컴퓨터에 국부적인(및/또는 내부에 존재하는) 저장 매체에 존재하거나 또는 네트워크를 통해 컴퓨터 중 어느 것이나 전부로부터 원격에 있는 저장 매체에 존재할 수 있다. 특정 실시예 세트에서, 정보는 이 기술 분야에 통상의 지식을 가진 자와 친숙한 저장-영역 네트워크(storage-area network: "SAN")에 존재할 수 있다. 유사하게, 컴퓨터, 서버 또는 다른 네트워크 디바이스로 기인하는 기능을 수행하는데 필요한 임의의 파일은 적절하게는 국부적으로 및/또는 원격으로 저장될 수 있다. 시스템이 컴퓨터화된 디바이스를 포함하는 경우, 각 이러한 디바이스는 버스를 통해 전기적으로 결합될 수 있는 하드웨어 요소를 포함할 수 있고, 이 요소는, 예를 들어, 적어도 하나의 중앙 처리 유닛(CPU), 적어도 하나의 입력 디바이스(예를 들어, 마우스, 키보드, 제어기, 터치 스크린 또는 키패드) 및 적어도 하나의 출력 디바이스(예를 들어, 디스플레이 디바이스, 프린터 또는 스피커)를 포함할 수 있다. 이러한 시스템은 하나 이상의 저장 디바이스, 예를 들어, 디스크 드라이브, 광 저장 디바이스, 및 솔리드 스테이트 저장 디바이스, 예를 들어, 랜덤 액세스 메모리("RAM") 또는 판독 전용 메모리("ROM"), 및 이동식 매체 디바이스, 메모리 카드, 플래시 카드 등을 더 포함할 수 있다.
이러한 디바이스는 전술한 바와 같이 컴퓨터-판독가능한 저장 매체 판독기, 통신 디바이스(예를 들어, 모뎀, 네트워크 카드(무선 또는 유선), 적외선 통신 디바이스 등) 및 작업 메모리를 더 포함할 수 있다. 컴퓨터-판독가능한 저장 매체 판독기는 원격지에 있거나, 국부적으로 있거나, 고정식 및/또는 이동식인 저장 디바이스를 나타내는 컴퓨터-판독가능한 저장 매체 및 컴퓨터-판독가능한 정보를 일시적으로 그리고/또는 보다 영구적으로 포함하거나 저장하거나, 송신하거나 검색하기 위한 저장 매체와 연결되거나 이를 수용하도록 구성될 수 있다. 시스템 및 여러 디바이스는 일반적으로 운영 시스템과 애플리케이션 프로그램, 예를 들어, 클라이언트 애플리케이션 또는 웹 브라우저를 포함하는 적어도 하나의 작업 메모리 디바이스 내에 위치된 다수의 소프트웨어 애플리케이션, 모듈, 서비스 또는 다른 요소를 더 포함할 수 있다. 대안적인 실시예는 전술한 것으로부터 다수의 변형을 구비할 수 있는 것으로 이해된다. 예를 들어, 주문형 하드웨어가 더 사용될 수 있고/있거나 특정 요소가 하드웨어, 소프트웨어(휴대용 소프트웨어, 예를 들어, 애플릿을 포함하여) 또는 이들 둘 모두를 통해 구현될 수 있다. 나아가, 네트워크 입력/출력 디바이스와 같은 다른 컴퓨팅 디바이스에 연결이 사용될 수 있다.
코드 또는 코드의 일부를 포함하는 저장 매체 및 컴퓨터 판독가능한 매체는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광 저장매체, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 디바이스 또는 원하는 정보를 저장하는데 사용될 수 있고 시스템 디바이스에 의해 액세스될 수 있는 임의의 다른 매체를 포함하는, 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보를 저장하고/하거나 송신하기 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비-휘발성, 이동식 및 비이동식 매체를 포함하나 이들로 제한되지 않는 저장 매체 및 통신 매체를 포함하는, 이 기술 분야에 알려져 있거나 사용되는 임의의 적절한 매체를 포함할 수 있다. 본 명세서에 제공된 본 발명 및 개시 내용에 기초하여, 이 기술 분야에 통상의 지식을 가진 자라면 다른 방식 및/또는 방법으로 각종 실시예를 구현할 수 있다는 것을 이해할 수 있을 것이다.
따라서, 본 명세서 및 도면은, 제한적인 의미가 아니라 예시적인 의미인 것으로 고려되어야 한다. 그러나, 여러 변형 및 변경은 청구범위에 제시된 바와 같이 본 발명의 더 넓은 사상과 범위를 벗어남이 없이 이루어질 수 있을 것으로 이해된다.
다른 변형들이 본 발명의 사상 내에 있는 있을 수 있다. 따라서, 개시된 기술은 여러 변형 및 대안적인 구성으로 구현될 수 있으나, 특정 예시적인 실시예들이 도면에 도시되고 상세히 위에서 기술되었다. 그러나, 본 발명을 개시된 특정 형태 또는 형태들로 제한하려고 의도된 것이 아니라, 오히려, 본 발명은 첨부된 청구범위에 한정된 바와 같이 본 발명의 사상과 범위 내에 있는 모든 변형, 대안적인 구성 및 균등물을 커버하려고 의도된 것으로 이해되어야 한다.
개시된 실시예를 설명하는 문맥에서 (특히 이하 청구범위의 문맥에서) "일" 및 "하나" 및 "상기" 라는 용어와 유사한 용어들은, 본 명세서에 달리 지시되거나 문맥상 명확히 모순되지 않는 한, 단수와 복수를 모두 포함하는 것으로 해석되어야 한다. "포함하는" "가지는" "구비하는" 및 "포괄하는"이라는 용어는, 달리 언급되지 않는 한, 개방식 용어(즉, "포함하지만 이들로 제한되지 않는 것"을 의미하는 것)로 해석되어야 한다. "연결된"이라는 용어는 개재하는 것이 있는 경우에도 부분적으로 또는 전체적으로 포함되거나 부착되거나 결합되는 것으로 해석되어야 한다. 본 명세서에 있는 값의 범위의 언급은, 본 명세서에 달리 지시되지 않는 한, 이 범위 내에 있는 각 개별 값을 개별적으로 언급하는 속기법으로 기능하는 것으로 단지 의도된 것이고, 각 개별 값은 본 명세서에 개별적으로 언급된 것처럼 본 명세서에 포함된다. 본 명세서에 설명된 모든 방법은, 본 명세서에 달리 지시되거나 또는 문맥상 명백히 모순되지 않는 한, 임의의 적절한 순서로 수행될 수 있다. 본 명세서에 제공된 임의의 및 모든 예 또는 예시적인 언어(예를 들어, "와 같은")를 사용하는 것은, 본 발명의 실시예를 단지 더 잘 예시하려고 의도된 것일 뿐, 달리 청구되지 않는 한, 본 발명의 범위를 제한하는 것으로 이해되어서는 안 된다. 명세서에 있는 언어는 본 발명을 실시하는데 본질적인 것으로 임의의 비-청구된 요소를 나타내는 것으로 해석되어서는 안 된다.
본 발명을 수행하는 데 본 발명자에 알려진 최상의 모드를 포함하는 본 발명의 바람직한 실시예들이 본 명세서에 설명되었다. 이들 바람직한 실시예의 변형은 전술한 설명을 판독할 때 이 기술 분야에 통상의 지식을 가진 자에게는 명백할 것이다. 본 발명자는 이 기술 분야에 통상의 지식을 가진 자라면 적절한 변형을 수행할 수 있을 것으로 예상하고, 본 발명자는 구체적으로 본 명세서에 설명된 것과는 달리 본 발명을 실시할 수 있을 것으로 예상한다. 따라서, 본 발명은 적용가능한 법률이 허용하는 본 명세서에 첨부된 청구범위에 언급된 주제에 대한 모든 변형과 균등물을 포함한다. 나아가, 모든 가능한 변형에서 전술한 요소를 임의로 조합한 것도, 본 명세서에 달리 지시되거나 또는 문맥상 명백히 모순되지 않는 한, 본 발명에 포함된다.
본 명세서에 언급된 공개 공보, 특허 출원 문서 및 특허 문서를 포함하는 모든 참조 문헌은 각 참조 문헌이 개별적으로 및 구체적으로 본 명세서에 포함되고 그 전체 내용이 본 명세서에 개시된 것처럼 본 명세서에 포함된다.

Claims (20)

  1. 컴퓨터로 구현되는 방법으로서,
    실행가능한 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에,
    제 1 복수의 파티션들을 포함하는 데이터 객체를 저장하는 요청을 수신하는 단계로서, 상기 제 1 복수의 파티션들의 각각의 파티션은 상기 요청과 연관된 요청자에 의해 선택된 제 1 파티션 사이즈를 갖는, 상기 수신하는 단계;
    상기 제 1 파티션 사이즈에 적어도 부분적으로 기초하여 제 1 확인 값을 생성하기 위해 데이터 확인 알고리즘을 사용하여 상기 데이터 객체를 확인하는 단계;
    상기 데이터 객체와 상기 제 1 확인 값을 저장하는 단계;
    상기 데이터 객체를 제 2 복수의 파티션들로 파티셔닝하는 단계로서, 상기 제 2 복수의 파티션들의 각각의 파티션은 상기 제 1 파티션 사이즈와 상이한 제 2 파티션 사이즈를 갖고, 상기 제 2 파티션 사이즈는 상기 데이터 확인 알고리즘에 의해 선택되는, 상기 파티셔닝하는 단계; 및
    상기 데이터 확인 알고리즘을 사용하여 상기 데이터 객체를 확인하는 단계로서, 적어도:
    상기 제 2 파티션 사이즈에 적어도 기초하여 제 2 확인 값을 생성하는 단계; 및
    상기 제 2 확인 값을 상기 제 1 확인 값과 비교하는 단계에 의해, 상기 데이터 객체를 확인하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  2. 제 1 항에 있어서,
    상기 데이터 확인 알고리즘은 상기 데이터 객체로부터 상기 제 2 복수의 파티션들을 생성하는, 컴퓨터로 구현되는 방법.
  3. 제 2 항에 있어서,
    상기 제 1 파티션 사이즈는 상기 제 2 파티션 사이즈의 정수배인, 컴퓨터로 구현되는 방법.
  4. 제 3 항에 있어서,
    상기 정수배는 상기 데이터 객체와 연관된 데이터 구조의 정도의 정수 지수(integer exponentiation)에 적어도 부분적으로 기초하는, 컴퓨터로 구현되는 방법.
  5. 제 3 항에 있어서,
    상기 데이터 확인 알고리즘은 상기 정수배를 결정하는, 컴퓨터로 구현되는 방법.
  6. 제 1 항에 있어서,
    상기 요청자에 의해 선택된 상기 제 1 파티션 사이즈는 상기 요청의 일부분인, 컴퓨터로 구현되는 방법.
  7. 하나 이상의 서비스들을 수행하도록 구성된 적어도 하나의 컴퓨팅 디바이스를 포함하는 시스템에 있어서, 상기 하나 이상의 서비스들은 적어도:
    데이터 객체에 대한 제 1 파티션 사이즈의 선택을 수신하고,
    상기 제 1 파티션 사이즈에 따라 상기 데이터 객체의 제 1 확인 값을 생성하고,
    상기 데이터 객체의 제 2 파티션 사이즈에 따라 제 2 확인 값을 생성하고, 상기 제 2 파티션 사이즈는 상기 제 1 파티션 사이즈와 상이하고,
    상기 선택을 송신한 개체에, 상기 제 1 확인 값과 상기 제 2 확인 값의 비교에 적어도 부분적으로 기초하여 상기 데이터 객체의 확인을 제공하는, 시스템.
  8. 제 7 항에 있어서,
    상기 하나 이상의 서비스들은 상기 제 1 파티션 사이즈에 따라 제 1 복수의 파티션들을 더 생성하는, 시스템.
  9. 제 7 항에 있어서,
    상기 하나 이상의 서비스들은 상기 제 2 파티션 사이즈에 따라 제 2 복수의 파티션들을 더 생성하는, 시스템.
  10. 제 7 항에 있어서,
    상기 제 2 파티션 사이즈는 상기 제 1 파티션 사이즈의 정수배인, 시스템.
  11. 제 7 항에 있어서,
    상기 제 1 파티션 사이즈는 상기 제 2 파티션 사이즈의 정수배인, 시스템.
  12. 제 7 항에 있어서,
    상기 하나 이상의 서비스들은,
    상기 제 1 파티션 사이즈에 적어도 부분적으로 기초하여 제 1 데이터 동작을 수행하고,
    상기 제 1 데이터 동작의 성공적인 완료를 확인하기 위해 상기 제 1 확인 값을 사용하고,
    상기 제 2 파티션 사이즈에 적어도 부분적으로 기초하여 제 2 데이터 동작을 더 수행하는, 시스템.
  13. 제 12 항에 있어서,
    상기 제 1 데이터 동작은 제 1 방식으로 상기 데이터 객체를 저장하는 것을 포함하고, 상기 제 2 데이터 동작은 상기 제 1 방식과 다른 제 2 방식으로 상기 데이터 객체를 지속적으로 저장하는 것을 포함하는, 시스템.
  14. 실행가능한 명령들이 저장된 비-일시적인 컴퓨터-판독가능한 저장 매체에 있어서, 상기 명령들은 컴퓨터 시스템의 하나 이상의 프로세서들에 의해 실행될 때, 상기 컴퓨터 시스템이 적어도:
    요청자에 의해 선택된 제 1 파티션 사이즈에 따라 데이터 객체에 대한 제 1 확인 값을 획득하고,
    상기 데이터 객체의 제 2 파티션 사이즈에 적어도 부분적으로 기초하여 제 2 확인 값을 생성하기 위해 데이터 확인 알고리즘을 사용하고, 상기 제 2 파티션 사이즈는 상기 제 1 파티션 사이즈와 상이하고,
    상기 제 2 확인 값이 상기 제 1 확인 값과 일치하는지 여부에 적어도 부분적으로 기초하여 상기 데이터 객체를 확인하고,
    상기 요청자에게 상기 데이터 객체의 확인의 결과를 제공하도록 야기하는, 비-일시적인 컴퓨터-판독가능한 저장 매체.
  15. 제 14 항에 있어서,
    상기 제 2 파티션 사이즈는 상기 제 1 파티션 사이즈의 정수배인, 비-일시적인 컴퓨터-판독가능한 저장 매체.
  16. 제 15 항에 있어서,
    상기 정수배는 상기 데이터 객체와 연관된 데이터 구조의 정도의 정수 지수에 적어도 부분적으로 기초하는, 비-일시적인 컴퓨터-판독가능한 저장 매체.
  17. 제 15 항에 있어서,
    상기 명령들은, 상기 하나 이상의 프로세스들에 의해 실행될 때, 상기 컴퓨터 시스템이 상기 제 2 파티션 사이즈에 적어도 부분적으로 기초하여 데이터 저장 동작을 수행하도록 야기하는 명령들을 추가로 포함하고, 상기 제 2 확인 값이 상기 제 1 확인 값과 일치하는 것은 상기 데이터 저장 동작이 성공적이었다는 것을 나타내는, 비-일시적인 컴퓨터-판독가능한 저장 매체.
  18. 제 14 항에 있어서,
    상기 제 2 확인 값이 상기 제 1 확인 값과 동일하다는 결과에 따라 상기 제 2 확인 값은 상기 제 1 확인 값과 일치하는, 비-일시적인 컴퓨터-판독가능한 저장 매체.
  19. 제 14 항에 있어서,
    상기 제 1 확인 값과 상기 제 2 확인 값은 상위 레벨 트리 다이제스트들인, 비-일시적인 컴퓨터-판독가능한 저장 매체.
  20. 제 14 항에 있어서,
    상기 제 1 파티션 사이즈는 상기 데이터 객체의 복수의 파티션들의 각각의 파티션의 균일한 사이즈인, 비-일시적인 컴퓨터-판독가능한 저장 매체.
KR1020177021593A 2012-08-08 2013-08-06 아카이벌 데이터 저장 시스템 KR101825905B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US13/570,088 2012-08-08
US13/570,151 US8805793B2 (en) 2012-08-08 2012-08-08 Data storage integrity validation
US13/570,151 2012-08-08
US13/570,088 US9767098B2 (en) 2012-08-08 2012-08-08 Archival data storage system
US13/569,591 US9354683B2 (en) 2012-08-08 2012-08-08 Data storage power management
US13/569,591 2012-08-08
PCT/US2013/053852 WO2014025820A2 (en) 2012-08-08 2013-08-06 Archival data storage system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167012877A Division KR101766214B1 (ko) 2012-08-08 2013-08-06 아카이벌 데이터 저장 시스템

Publications (2)

Publication Number Publication Date
KR20170092712A KR20170092712A (ko) 2017-08-11
KR101825905B1 true KR101825905B1 (ko) 2018-03-22

Family

ID=50068694

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020157005788A KR101954594B1 (ko) 2012-08-08 2013-08-06 아카이벌 데이터 저장 시스템
KR1020167012877A KR101766214B1 (ko) 2012-08-08 2013-08-06 아카이벌 데이터 저장 시스템
KR1020177021593A KR101825905B1 (ko) 2012-08-08 2013-08-06 아카이벌 데이터 저장 시스템

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020157005788A KR101954594B1 (ko) 2012-08-08 2013-08-06 아카이벌 데이터 저장 시스템
KR1020167012877A KR101766214B1 (ko) 2012-08-08 2013-08-06 아카이벌 데이터 저장 시스템

Country Status (9)

Country Link
EP (2) EP3805941B1 (ko)
JP (2) JP6165862B2 (ko)
KR (3) KR101954594B1 (ko)
CN (1) CN104603776B (ko)
AU (3) AU2013299731A1 (ko)
BR (1) BR112015002837A2 (ko)
CA (1) CA2881567C (ko)
SG (2) SG10201600997YA (ko)
WO (1) WO2014025820A2 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430152B2 (en) 2014-05-13 2016-08-30 Netapp, Inc. Data device grouping across data storage device enclosures for synchronized data maintenance
WO2015175720A1 (en) * 2014-05-13 2015-11-19 Netapp, Inc. Storage operations utilizing a multiple-data-storage-devices cartridge
US9766677B2 (en) 2014-05-13 2017-09-19 Netapp, Inc. Cascading startup power draws of enclosures across a network
US9436524B2 (en) 2014-05-13 2016-09-06 Netapp, Inc. Managing archival storage
US9430149B2 (en) 2014-05-13 2016-08-30 Netapp, Inc. Pipeline planning for low latency storage system
US9557938B2 (en) 2014-05-13 2017-01-31 Netapp, Inc. Data retrieval based on storage device activation schedules
US9430321B2 (en) 2014-05-13 2016-08-30 Netapp, Inc. Reconstructing data stored across archival data storage devices
US9424156B2 (en) 2014-05-13 2016-08-23 Netapp, Inc. Identifying a potential failure event for a data storage device
US9436571B2 (en) 2014-05-13 2016-09-06 Netapp, Inc. Estimating data storage device lifespan
CN106294503B (zh) * 2015-06-09 2019-09-20 阿里巴巴集团控股有限公司 数据的动态存储方法、装置及计算设备
US10496280B2 (en) * 2015-09-25 2019-12-03 Seagate Technology Llc Compression sampling in tiered storage
KR102347887B1 (ko) * 2015-10-30 2022-01-05 삼성에스디에스 주식회사 검색 엔진을 이용한 타임라인 관리 방법 및 그 장치
CN106886539B (zh) * 2015-12-16 2023-11-24 泰康保险集团股份有限公司 数据归档系统及方法
CN105678190A (zh) * 2016-03-01 2016-06-15 福建省闽保信息技术股份有限公司 数据封存审计系统
CN109416620B (zh) * 2016-05-04 2022-05-10 净睿存储股份有限公司 存储集群
CN106845075B (zh) * 2016-12-20 2021-07-20 杭州联众医疗科技股份有限公司 一种集中诊断报告系统
CN106681143B (zh) * 2016-12-26 2019-08-06 武汉大音科技有限责任公司 一种基于云平台的自动化设备的调试方法
US10599560B2 (en) * 2018-06-12 2020-03-24 Unity IPR ApS Method and system for improved performance of a video game engine
CN109104404B (zh) * 2018-06-20 2022-03-29 广州中国科学院软件应用技术研究所 一种动态加密的医疗大数据系统及方法
CN109033345B (zh) * 2018-07-24 2022-07-15 中国科学技术大学 用于大科学装置控制系统的分布式数据存档参数配置方法
CN109639591B (zh) * 2018-12-07 2022-07-26 国网浙江省电力有限公司 配电数据反向传输方法及系统和计算机可读存储介质
KR102213368B1 (ko) * 2019-10-10 2021-02-08 엔시큐어 주식회사 멀티 키워드 고속 검색 시스템 및 방법
CN110837592B (zh) * 2019-11-08 2021-01-26 京东数字科技控股有限公司 数据归档的方法、装置和计算机可读存储介质
CN111159102A (zh) * 2019-12-20 2020-05-15 中国建设银行股份有限公司 非结构化数据归档方法、装置、设备及存储介质
US11556497B2 (en) * 2020-01-06 2023-01-17 Armiq Co., Ltd. Real-time archiving method and system based on hybrid cloud
KR102559290B1 (ko) * 2020-01-06 2023-07-26 주식회사 아미크 하이브리드 클라우드 기반의 실시간 데이터 아카이빙 방법 및 시스템
CN115543214B (zh) * 2022-11-25 2023-03-28 深圳华锐分布式技术股份有限公司 低时延场景下的数据存储方法、装置、设备及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050203976A1 (en) 2004-02-11 2005-09-15 University Of California Systems, tools and methods for transferring files and metadata to and from a storage means

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309569A (en) * 1979-09-05 1982-01-05 The Board Of Trustees Of The Leland Stanford Junior University Method of providing digital signatures
JPH05113963A (ja) * 1991-10-23 1993-05-07 Nec Corp ジヨブ状態表示方式
US5243381A (en) * 1993-01-04 1993-09-07 Xerox Corporation Method for compiling multiple jobs with job reference sheets
JPH10261075A (ja) * 1997-03-21 1998-09-29 Matsushita Electric Ind Co Ltd 画像バッファ制御装置
WO2000049803A1 (fr) * 1999-02-18 2000-08-24 Kabushiki Kaisha Toshiba Support d'enregistrement pour flux de donnees, procede d'enregistrement et procede de reproduction associes
US6604224B1 (en) * 1999-03-31 2003-08-05 Diva Systems Corporation Method of performing content integrity analysis of a data stream
US6959384B1 (en) * 1999-12-14 2005-10-25 Intertrust Technologies Corporation Systems and methods for authenticating and protecting the integrity of data streams and other data
US20020103815A1 (en) * 2000-12-12 2002-08-01 Fresher Information Corporation High speed data updates implemented in an information storage and retrieval system
US7685126B2 (en) * 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
WO2004109552A2 (en) * 2003-06-03 2004-12-16 Access Co., Ltd. Method for browsing contents using page storing file
US20050050342A1 (en) * 2003-08-13 2005-03-03 International Business Machines Corporation Secure storage utility
JP2005122311A (ja) * 2003-10-14 2005-05-12 Nippon Telegraph & Telephone East Corp 広告提示方法、装置およびプログラム
US7277905B2 (en) * 2004-03-31 2007-10-02 Microsoft Corporation System and method for a consistency check of a database backup
CN101043372A (zh) * 2006-03-22 2007-09-26 比特福恩公司 管理网络中的设备简档检索
JP4767057B2 (ja) * 2006-03-27 2011-09-07 富士通株式会社 ハッシュ値生成プログラム、ストレージ管理プログラム、判定プログラム及びデータ変更検証装置
US8862841B2 (en) * 2006-04-25 2014-10-14 Hewlett-Packard Development Company, L.P. Method and system for scaleable, distributed, differential electronic-data backup and archiving
US7840969B2 (en) * 2006-04-28 2010-11-23 Netapp, Inc. System and method for management of jobs in a cluster environment
JP2007299308A (ja) * 2006-05-02 2007-11-15 Ricoh Co Ltd ジョブ処理システム、ジョブ処理方法、プログラムおよび記録媒体
JP4972358B2 (ja) * 2006-07-19 2012-07-11 株式会社リコー 文書検索装置、文書検索方法、文書検索プログラム及び記録媒体。
US8161353B2 (en) * 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US9124650B2 (en) * 2006-12-13 2015-09-01 Quickplay Media Inc. Digital rights management in a mobile environment
US8055902B2 (en) * 2007-01-12 2011-11-08 International Business Machines Corporation Method, system, and computer program product for data upload in a computing system
US8112424B2 (en) * 2008-03-11 2012-02-07 International Business Machines Corporation Flexible and resilient information collaboration management infrastructure
US9344401B2 (en) * 2009-02-04 2016-05-17 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
JP5383297B2 (ja) * 2009-04-13 2014-01-08 株式会社日立国際電気 署名装置
AU2010265954B2 (en) * 2009-06-26 2016-01-28 Hewlett Packard Enterprise Development Lp File system
JP5415183B2 (ja) * 2009-08-20 2014-02-12 株式会社日立ソリューションズ バッチジョブ処理装置、バッチジョブ処理システム
US8990585B2 (en) * 2009-12-29 2015-03-24 Cleversafe, Inc. Time based dispersed storage access
JP2011170667A (ja) * 2010-02-19 2011-09-01 Nec Corp ファイル同期システム、ファイル同期方法およびファイル同期プログラム
JP5569074B2 (ja) * 2010-03-19 2014-08-13 日本電気株式会社 ストレージシステム
US8640225B2 (en) * 2010-09-24 2014-01-28 Nokia Corporation Method and apparatus for validating resource identifier
US8538938B2 (en) * 2010-12-02 2013-09-17 At&T Intellectual Property I, L.P. Interactive proof to validate outsourced data stream processing
US8589257B2 (en) * 2010-12-31 2013-11-19 Nulogy Corporation Method, system and apparatus for managing inventory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050203976A1 (en) 2004-02-11 2005-09-15 University Of California Systems, tools and methods for transferring files and metadata to and from a storage means

Also Published As

Publication number Publication date
WO2014025820A2 (en) 2014-02-13
JP6165862B2 (ja) 2017-07-19
KR20150041056A (ko) 2015-04-15
EP2883170A2 (en) 2015-06-17
AU2018204309B2 (en) 2020-10-29
SG10201600997YA (en) 2016-03-30
KR20170092712A (ko) 2017-08-11
KR101766214B1 (ko) 2017-08-09
AU2016201923A1 (en) 2016-04-21
SG11201500836QA (en) 2015-03-30
CA2881567C (en) 2023-10-17
CA2881567A1 (en) 2014-02-13
CN104603776A (zh) 2015-05-06
KR20160058198A (ko) 2016-05-24
EP3805941B1 (en) 2024-04-17
JP2015534142A (ja) 2015-11-26
WO2014025820A3 (en) 2014-05-01
EP2883170A4 (en) 2015-07-29
EP3805941A1 (en) 2021-04-14
JP2017182825A (ja) 2017-10-05
KR101954594B1 (ko) 2019-03-06
BR112015002837A2 (pt) 2017-08-08
JP6463796B2 (ja) 2019-02-06
AU2013299731A1 (en) 2015-02-26
CN104603776B (zh) 2020-05-12
AU2018204309A1 (en) 2018-07-05

Similar Documents

Publication Publication Date Title
KR101825905B1 (ko) 아카이벌 데이터 저장 시스템
US10157199B2 (en) Data storage integrity validation
US20200327113A1 (en) Data storage application programming interface
US9354683B2 (en) Data storage power management
US9767129B2 (en) Data storage inventory indexing
US9830111B1 (en) Data storage space management
US9563681B1 (en) Archival data flow management
US9767098B2 (en) Archival data storage system
US9092441B1 (en) Archival data organization and management
US9250811B1 (en) Data write caching for sequentially written media
US10120579B1 (en) Data storage management for sequentially written media
US9652487B1 (en) Programmable checksum calculations on data storage devices
US9779035B1 (en) Log-based data storage on sequentially written media

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right