KR20160074587A - 데이터 유닛들의 컬렉션 체크포인팅 - Google Patents

데이터 유닛들의 컬렉션 체크포인팅 Download PDF

Info

Publication number
KR20160074587A
KR20160074587A KR1020167013081A KR20167013081A KR20160074587A KR 20160074587 A KR20160074587 A KR 20160074587A KR 1020167013081 A KR1020167013081 A KR 1020167013081A KR 20167013081 A KR20167013081 A KR 20167013081A KR 20160074587 A KR20160074587 A KR 20160074587A
Authority
KR
South Korea
Prior art keywords
data
data units
units
accessed
recovery
Prior art date
Application number
KR1020167013081A
Other languages
English (en)
Other versions
KR102179669B1 (ko
Inventor
조셉 스케핑턴 3세 호울리
Original Assignee
아브 이니티오 테크놀로지 엘엘시
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아브 이니티오 테크놀로지 엘엘시 filed Critical 아브 이니티오 테크놀로지 엘엘시
Publication of KR20160074587A publication Critical patent/KR20160074587A/ko
Application granted granted Critical
Publication of KR102179669B1 publication Critical patent/KR102179669B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Abstract

메모리 모듈(108)은 데이터 유닛들을 포함하는 작업 데이터(114)를 저장한다. 저장 시스템(116)은 하나 이상의 데이터 유닛들의 세트들을 포함하는 복구 데이터(120)를 저장한다. 상기 메모리 모듈과 상기 저장 시스템 사이의 데이터 전송은 상기 작업 데이터에 포함된 상기 데이터 유닛들 간 순서- 상기 순서는 제1 인접 부분과 제2 인접 부분을 정의함-를 유지하는 것; 그리고, 여러 시간 구간들(202A, 202B) 각각에 대해 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 것, 그리고 임의의 액세스된 데이터 유닛들을 포함하는 상기 제1 인접 부분으로부터의 하나 이상의 데이터 유닛들, 및 이전에 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는 상기 제2 인접 부분으로부터의 하나 이상의 데이터 유닛들을 포함하는 둘 이상의 데이터 유닛들의 세트를 복구 데이터에 추가하는 것을 포함한다.

Description

데이터 유닛들의 컬렉션 체크포인팅 {CHECKPOINTING A COLLECTION OF DATA UNITS}
본 출원은 2013년 10월 21일에 출원된 US 출원번호 61/893,439에 대하여 우선권을 주장한다.
본 설명은 데이터 유닛들의 컬렉션을 체크포인팅하는 것과 관련된다.
오류나 다른 예상치 못한 이벤트에 응하여 복구하거나 재시작하는 능력이 유용한 데이터 처리 시스템의 다양한 유형들이 있다. 예를 들어, 실시간 스트림 처리 또는 복잡한 이벤트 처리 시스템들에서, 입력 데이터 및/또는 입력 데이터에 대해 수행되는 계산들에 대한 상태 정보와 같은 시스템 정보를 저장하는 것이 유용하다. 체크포인팅(checkpointing)은 시스템이 최근에 저장된 일관된 상태로부터 복구될 수 있도록 정기적으로 시스템 정보를 저장하기 위한 방법의 예이다. 데이터의 연속적인 흐름에 동작하는 데이터 처리 시스템에 대한 체크포인팅 기술의 일 예가 본원에서 참조로 원용되는 US 특허 번호 6,584,581에서 설명된다.
본 발명의 목적은 저장된 데이터를 관리하기 위한 컴퓨팅 시스템을 제공하기 위한 것이다.
본 발명의 목적은 컴퓨팅 시스템의 메모리 모듈과 상기 컴퓨팅 시스템의 저장 시스템 사이의 데이터 유닛들의 전송을 관리하기 위한 방법을 제공하기 위한 것이다.
본 발명의 목적은 컴퓨팅 시스템의 메모리 모듈과 상기 컴퓨팅 시스템의 저장 시스템 사이의 데이터 유닛들의 전송을 관리하기 위한, 컴퓨터 판독가능 매체상에 비-일시적 형태로 저장된 소프트웨어를 제공하기 위한 것이다.
일 측면에서, 일반적으로, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템은: 복수의 데이터 유닛들을 포함하는 작업 데이터를 저장하도록 구성된 메모리 모듈; 하나 이상의 데이터 유닛들의 복수의 세트들을 포함하는 복구 데이터를 저장하도록 구성된 저장 시스템; 및 상기 메모리 모듈과 상기 저장 시스템 사이의 데이터 유닛들의 전송을 관리하도록 구성된 적어도 하나의 프로세서를 포함한다. 상기 관리는: 상기 작업 데이터에 포함되는 상기 복수의 데이터 유닛들 간의 순서를 유지하는 것-상기 순서는 상기 복수의 데이터 유닛들 중 하나 이상을 포함하는 제1 인접 부분과 상기 복수의 데이터 유닛들 중 하나 이상을 포함하는 제2 인접 부분을 정의함-; 그리고 여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 것, 그리고 두 개 이상의 데이터 유닛들의 세트-임의의 액세스된 데이터 유닛들을 포함하는 상기 제1 인접 부분으로부터의 하나 이상의 데이터 유닛들, 및 이전에 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는 상기 제2 인접 부분으로부터의 하나 이상의 데이터 유닛들을 포함함-를 상기 복구 데이터에 추가하는 것을 포함한다.
측면들은 다음 특징들 중 하나 이상을 포함한다.
상기 관리는 여러 시간 구간들 각각에 대해, 상기 작업 데이터에 여전히 포함된 임의의 데이터 유닛들이 하나 이상의 데이터 유닛들의 적어도 하나의 다른 세트에 저장되는 하나 이상의 데이터 유닛들의 적어도 하나의 세트를 상기 복구 데이터로부터 제거하는 것을 더 포함한다.
상기 관리는 상기 여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 제거된 임의의 데이터 유닛들을 식별하는 것을 더 포함한다.
상기 제2 인접 부분은 임의의 제거된 데이터 유닛들을 제외한다.
상기 관리는 여러 시간 구간들 각각에 대해, 임의의 제거된 데이터 유닛들을 식별하는 정보를 복구 데이터에 추가하는 것을 더 포함한다.
상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 것은 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 상기 제1 인접 부분으로 이동하는 것을 포함한다.
상기 작업 데이터에 포함된 상기 복수의 데이터 유닛들 간 순서는 얼마나 최근 상기 데이터 유닛이 액세스 되었는지에 기초한다.
상기 제1 인접 부분은 상기 작업 데이터에 포함된 상기 복수의 데이터 유닛들 모두 중 가장 최근 액세스된 데이터 유닛, 및 그것들의 가장 최근 액세스 이후로 상기 복구 데이터에 추가되지 않은 상기 복수의 데이터 유닛들의 서브세트 중 가장 덜 최근 액세스된 데이터 유닛을 포함한다.
상기 제2 인접 부분은 상기 제1 인접 부분과 중첩되지 않는다.
상기 제2 인접 부분은 가장 최근 액세스 이후로 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함한다.
제2 인접 부분으로부터의 상기 하나 이상의 데이터 유닛들은 상기 제1 인접 부분으로부터의 상기 하나 이상의 데이터 유닛들의 데이터 유닛들의 개수의 약 반과 상기 제1 인접 부분으로부터의 상기 하나 이상의 데이터 유닛들의 데이터 유닛들의 개수의 약 두 배 사이인 데이터 유닛들의 개수에 제한된다.
상기 제1 인접 부분은 상기 제2 인접 부분의 상기 데이터 유닛들 중 임의의 것보다 더 최근에 액세스된 데이터 유닛들을 포함한다.
데이터 유닛이 얼마나 최근 액세스된 지를 표시하는 시간이 상기 데이터 유닛에 대한 배타적 액세스가 개시된 시간에 대응한다.
데이터 유닛이 얼마나 최근 액세스된 지를 표시하는 시간이 상기 데이터 유닛에 대한 배타적 액세스가 종료된 시간에 대응한다.
상기 관리는 오류에 응하여 상기 작업 데이터의 상태를 복원하기 위해 상기 복구 데이터를 사용하는 것을 더 포함한다.
상기 작업 데이터에 포함된 상기 복수의 데이터 유닛들이 각각 키 값과 관련된다.
상기 작업 데이터에 포함되는 상기 데이터 유닛들 중 하나 이상은 상기 데이터 유닛과 관련된 상기 키 값에 기초하여 액세스 가능한 적어도 하나의 값들을 포함한다.
상기 작업 데이터에 포함된 서로 다른 데이터 유닛들과 관련된 서로 다른 키 값들의 총 수가 약 1,000 이상이다.
상기 시간 구간들이 서로 중첩되지 않는다.
상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 것은 상기 시간 구간 동안 상기 작업 데이터에 추가된 임의의 데이터 유닛들, 상기 시간 구간 동안 상기 작업 데이터로부터 판독된 임의의 데이터 유닛들, 또는 상기 시간 구간 동안 상기 작업 데이터 내에서 업데이트된 임의의 데이터 유닛들 중 적어도 하나를 식별하는 것을 포함한다.
상기 메모리 모듈은 휘발성 메모리 디바이스를 포함한다.
상기 저장 시스템은 비-휘발성 저장 디바이스를 포함한다.
또 다른 측면에서, 일반적으로, 컴퓨팅 시스템의 메모리 모듈과 상기 컴퓨팅 시스템의 저장 시스템 사이의 데이터 유닛들의 전송을 관리하기 위한 방법은: 상기 메모리 모듈에, 복수의 데이터 유닛들을 포함하는 작업 데이터를 저장하는 단계; 상기 저장 시스템에, 하나 이상의 데이터 유닛들의 복수의 세트들을 포함하는 복구 데이터를 저장하는 단계; 상기 작업 데이터에 포함되는 상기 복수의 데이터 유닛들 간의 순서를 유지하는 단계-상기 순서는 상기 복수의 데이터 유닛들 중 하나 이상을 포함하는 제1 인접 부분과 상기 복수의 데이터 유닛들 중 하나 이상을 포함하는 제2 인접 부분을 정의함-; 및 여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 단계, 그리고 두 개 이상의 데이터 유닛들의 세트-임의의 액세스된 데이터 유닛들을 포함하는 상기 제1 인접 부분으로부터의 하나 이상의 데이터 유닛들, 및 이전에 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는 상기 제2 인접 부분으로부터의 하나 이상의 데이터 유닛들을 포함함-를 상기 복구 데이터에 추가하는 단계를 포함한다.
또 다른 측면에서, 일반적으로, 소프트웨어가 컴퓨팅 시스템의 메모리 모듈과 상기 컴퓨팅 시스템의 저장 시스템 사이의 데이터 유닛들의 전송을 관리하기 위한, 컴퓨터 판독가능 매체상에 비-일시적 형태로 저장된다. 상기 소프트웨어는: 상기 메모리 모듈에, 복수의 데이터 유닛들을 포함하는 작업 데이터를 저장하도록 하고; 상기 저장 시스템에, 하나 이상의 데이터 유닛들의 복수의 세트들을 포함하는 복구 데이터를 저장하도록 하고; 상기 작업 데이터에 포함되는 상기 복수의 데이터 유닛들 간의 순서를 유지하도록 하고-상기 순서는 상기 복수의 데이터 유닛들 중 하나 이상을 포함하는 제1 인접 부분과 상기 복수의 데이터 유닛들 중 하나 이상을 포함하는 제2 인접 부분을 정의함-; 그리고 여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하도록 하고, 그리고 두 개 이상의 데이터 유닛들의 세트-임의의 액세스된 데이터 유닛들을 포함하는 상기 제1 인접 부분으로부터의 하나 이상의 데이터 유닛들, 및 이전에 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는 상기 제2 인접 부분으로부터의 하나 이상의 데이터 유닛들을 포함함-를 상기 복구 데이터에 추가하도록 하는 명령들을 포함한다.
측면들은 다음 장점들 중 하나 이상을 포함할 수 있다.
일부 데이터 처리 시스템에서, 상기 시스템에 의해 유지되는 정보는 처리가 진행될 때 정기적으로 갱신되는 데이터 유닛들의 컬렉션을 포함하는 작업 데이터를 포함한다. 복합 이벤트 처리(CEP) 시스템에서, 예를 들어, 동시에, 동작들이 결과들에 기초하여 수행되는 동안, 이벤트의 스트림들이 처리되고 집계된다. CEP 시스템에 대한 작업 데이터의 세트는 서로 다른 주식 기호들과 관련된 가격 등의, 데이터의 서로 다른 각각의 스트림이 수신되고 있는 엔티티들을 나타내는 여러 데이터 유닛들에 대한 상태를 포함할 수 있다. 특정 데이터 유닛에 의해 표현되는 상태는 고유 키(예를 들어, 숫자 값)에 의해 액세스 가능한 상태 객체로 저장될 수 있다. 상기 주식 기호 예에서, 상기 시스템은 주식 기호당 하나의 상태 객체를 유지할 것이다. 각각의 상태 객체는 스칼라들(예를 들어, 주식과 관련된 값들에 대한), 벡터들(예를 들어, 과거의 가격 데이터) 같은 값들을 저장하는 하나 이상의 필드들을 가질 수 있다. 일부 예에서, 상태 객체의 필드들은 대응하는 주식 기호에 대한 각각의 새로운 가격 값에 대해 점진적으로 업데이트되는, 집계 함수(예를 들어, 합계, 카운트, 최댓값, 및 평균) 같은, 적용되는 함수들의 결과를 나타내는 계산된 값들을 저장할 수 있다. 시스템 내에 상태 객체들의 여러 컬렉션들이 있을 수 있고, 각각의 컬렉션은 필드들의 특정 세트를 가지는 상태 객체들을 포함할 수 있다. 컬렉션은 추가되는 새로운 상태 객체들 및 제거되는 예전 상태 객체들과 함께, 크기가 변경될 수 있으나, 컬렉션에서 변경되는 데이터의 대부분은 갱신되는 상태 객체들의 일부 부분 내에 저장된 실제 데이터에 기인할 수 있다.
일부 구현에서, 상기 시스템에 대한 작업 데이터가 휘발성 메모리(예를 들어, 다이내믹 랜덤 액세스 메모리(DRAM))일 수 있는, 상대적으로 빠른 메모리의 많은 양에 저장된다. 동시에 요구되는 자원(예를 들어, 데이터 전송 시간, 및 데이터 저장 공간) 측면에서 가격이 효율적으로 관리되는 것을 보장하는 한편, 작업 데이터의 내구성을 보장하기 위해, 더 안정적이고 신뢰할 수 있는 저장 디바이스(예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 또는 다른 비-휘발성 저장 매체)로 각각의 상태 객체의 최신 버전을 정기적으로 저장하도록 체크포인팅 스킴(checkpointing scheme)을 사용하는 것이 특히 유용할 수 있다. 체크포인트 동작들 간의 임의의 주어진 시간 간격(“체크포인트 간격”이라 지칭됨)에서, 작업 데이터가 다수의 데이터 유닛들(상기 설명된 상태 객체 같은)을 포함할 수 있는 한편, 이러한 데이터 유닛들의 작은 부분들이 변경될 수 있다. 상기 체크포인팅 스킴은 오류(failure)의 경우에 최근에 변경된 데이터 유닛들과 그렇지 않은 데이터 유닛들을 포함하여, 각각의 데이터 유닛의 가장 최신 상태가 복구될 수 있게 하여야 한다.
이러한 시스템에서 효율적으로 체크포인팅하는 기술들은 관리되는 데이터 유닛들의 수가 특별히 큰 경우 특히 어려울 수 있다. 예를 들어, 한 시나리오에서, 작업 데이터는 각각 몇 바이트의 약 십억 개의 데이터 유닛들의 컬렉션을 포함하고, 각각의 체크포인트 구간 동안 약 1퍼센트의 10분의 1(1 백만 데이터 유닛)이 변경된다. 물론, 각각의 체크포인트 구간에서, 변경된 데이터 유닛들의 세트는 서로 다른 (그러나 중첩될 수 있는) 세트일 수 있다. 복구를 위해, 또한 임의의 특정 데이터 유닛의 가장 최근 상태만 필요한 것으로 가정된다.
첫 번째 접근 방법은 각각의 체크포인트 구간에서 저장 디바이스에 데이터 유닛들의 전체 컬렉션을 각각의 체크포인트 파일로 저장하는 것이다. 그 컬렉션의 각각의 데이터 유닛의 최신 상태를 복구하기 위해, 시스템은 단순히 체크포인트 파일(들)을 판독할 수 있다. 이러한 첫 번째 접근 방법은 데이터 전송 비용 측면에서 금지될 수 있다-수 기가바이트의 작업 데이터와 수 초의 체크포인트 구간과 함께, 저장 디바이스에 데이터 유닛들 모두를 기록하기에 시간이 충분하지 않을 수 있다.
두 번째 접근방법은 각각의 체크포인트 구간에서 저장 디바이스에 가장 마지막 체크포인트 구간 이래 변경된 데이터만 각각의 체크포인트 파일에 저장하는 것이다. 이러한 두 번째 접근방법은 각각의 체크포인트에서 전송 시간을 감소시키는 반면, 각각의 데이터 유닛의 최신 상태를 복구하기 위해 시스템이 첫 번째 체크포인트 파일이 기록되었던 이래 변경되지 않았을 수 있는 일부 데이터 유닛의 최신 상태가 복구된다고 확인하기 위해서 체크포인팅 프로세스의 시작부터 매 체크포인트 파일을 판독할 필요가 있을 수 있기 때문에, 복구는 시간이 경과함에 따라 더욱더 비싸진다.
두 번째 접근방법의 가능한 개량은 시스템이 저장 디바이스의 체크포인트 파일들을 스캔하고 더 최근에 저장된 체크포인트 파일들에서 나타내어지는 더 새로운 상태를 가지는 데이터 유닛들의 예전 복사본들로 전체적으로 구성되는 체크포인트 파일들을 제거하는 오프라인 프로세스를 실행하는 것이다. 두 번째 접근방법의 또 다른 개량은 프로세스가 체크포인트 파일들을 스캔하고 적어도 하나의 더 새로운 체크포인트 파일의 각각의 제거된 데이터 유닛의 적어도 하나의 더 최근의 복사본을 남기면서, 데이터 유닛들의 이러한 예전 복사본들을 제거하기 위해 체크포인트 파일들을 재기록하는 것이다. 체크포인트 파일이 0 데이터 유닛으로 떨어지면, 저장 공간을 확보하도록 저장 디바이스로부터 제거될 수 있다. 이러한 개량에 대한 일부 잠재적인 문제는 (a) 통합 프로세스가 일반적으로 시스템을 덜 신뢰적이게 할 수 있는, 관리되어야 하는 또 다른 프로세스를 도입한다는 것과 (b) 통합 프로세스가 체크포인트 파일들에서 나타내어지는 체크포인트 데이터를 판독하는 적어도 하나의 패스를 포함하나 체크포인트 데이터를 판독하고 기록하는 몇몇 패스들을 포함할 수 있는, 계산 시간에서 비용이 든다.
세 번째 접근방법은 시스템이 매 데이터 유닛에 대한 별도의 체크포인트 파일을 저장하는 것이다. 각각의 체크포인트 구간에서, 특정 업데이트된 데이터 유닛에 대해 기록된 임의의 새로운 체크포인트 파일이 그 데이터 유닛에 대한 이전 체크포인트 파일을 대체할 수 있다. 이는 (변경된 엔트리들만 저장될 필요가 있을 수 있기 때문에) 비싼 데이터 전송 비용을 피하고, (대부분 예전 데이터의 체크포인트 파일들이 무한히 누적되지 않기 때문에) 비싼 데이터 저장 비용을 피하고, (클린-업 프로세스를 필요로 하지 않기 때문에) 복잡성을 줄일 것이다. 그러나 이 세 번째 접근방법이 터무니없이 비쌀 수 있다는 잠재적인 이유는 파일들이 저장 공간에 대하여 상대적으로 비싸다는 것이다. 작업 데이터가 각각 단지 몇 바이트인 수십억 개의 데이터 유닛들로 구성된다면, 파일 시스템은 파일의 생성 및 관리 동작들로 압도될 수 있고, 파일 시스템 메타데이터에 대한 오버헤드 저장 공간이 데이터 유닛들의 실제 내용보다 더 많은 저장 공간을 낭비하는 결과가 될 수 있다.
하기에 설명되는 체크포인팅에 대한 기술들 중 일부는 상기 접근 방법들과 개량들의 장점들 중 적어도 일부를 가진다. 예를 들어, 동일한 체크포인트 파일 내에서, 복구 데이터가 잠재적으로 변경된 데이터 유닛들의 새로운 복사본들과 (서로 다른) 체크포인트 파일에 이전에 추가된 데이터 유닛들의 예전 복사본들 모두를 포함할 수 있다는 인식에 기초하여, 데이터 저장 비용(파일 시스템 오버헤드 포함)과 데이터 전송 시간이 제한될 수 있다. 예전 복사본들을 더 새로운 체크포인트 파일들로 이전하는 이러한 프로세스는 체크포인트 구간에서 수행되는 추가 작업의 양을 제한하고, 예전 체크포인트 파일들이 데이터 유닛들의 중복된 백업 복사본들만 저장하기 때문에 예전 체크포인트 파일들이 파기될 수 있을 때까지 덜 최근에 액세스된 데이터 유닛들의 더 예전 복사본들을 점진적으로 통합하는 방법으로 서서히 수행될 수 있다. 이러한 통합 프로세스는 체크포인트 파일들을 저장하는 동일한 체크포인팅 프로세스에 의해 수행될 수 있고, 그러므로 오프라인 통합 프로세스보다 잠재적으로 더 단순하고 더 신뢰성 있을 수 있다. 심지어 예전 체크포인트 파일들을 제거하지 않고, 동일한 체크포인트 파일에 여러 데이터 유닛들에 대한 최신 상태를 저장하는 것은 특히 데이터 유닛들에 할당된 서로 다른 키들의 수가 클 때(예를 들어, 약 1,000 이상 또는 약 1,000,000 이상 또는 약 1,000,000,000 이상), 파일 시스템 오버헤드에 기인한 잠재적인 데이터 저장 비용을 감소시킨다.
본 발명의 다른 특징들과 장점들이 다음 설명, 그리고 청구항들로부터 명백하게 될 것이다.
도 1은 데이터 처리 시스템의 블록도이다.
도 2a 및 2b는 체크포인팅 및 데이터 처리 동작들의 타임라인이다.
도 3a 및 3b는 각각 체크포인팅과 복구 알고리즘의 순서도이다.
도 4a, 4e 및 4f는 작업 데이터 상태의 개략도이다.
도 4b, 4c 및 4d는 체크포인트 파일들의 개략도이다.
도 5는 시간에 따른 포인터 이동의 개략도이다.
도 1은 체크포인팅 기술이 사용될 수 있는 데이터 처리 시스템(100)의 예를 도시한다. 상기 시스템(100)은 저장 디바이스들 또는 온라인 데이터 소스들 같은 하나 이상의 데이터 소스(102)를 포함하고, 그것들 각각은 다양한 형식(예를 들어, 데이터베이스 테이블들, 스프레드시트 파일들, 플랫 텍스트 파일들(flat text files), 또는 메인프레임에 의해 사용되는 원시 포맷(native format)) 중 임의의 것으로 데이터를 저장하거나 제공할 수 있다. 실행 환경(104)은 처리 모듈(106)(예를 들어, 하나 이상의 처리 코어들을 가지는 적어도 하나의 중앙 처리 유닛)과 메모리 모듈(108)(예를 들어, DRAM 또는 비교적 빠른 메모리 매체의 다른 형태 같은, 하나 이상의 메모리 디바이스들)을 포함한다. 실행 환경(104)은 예를 들어, UNIX 운영 시스템 같은, 적절한 운영 시스템의 제어하의 하나 이상의 범용 목적 컴퓨터상에 호스팅될 수 있다. 예를 들어, 상기 실행 환경(104)은 지역(예를 들어, 대칭적 멀티 프로세싱(SMP) 컴퓨터들 같은 멀티프로세서 시스템들) 또는 지역적으로 분산된(예를 들어, 클러스터들 또는 대량 병렬 처리(MPPs) 시스템들처럼 결합된 멀티 프로세서들), 또는 원격, 또는 원격적으로 분산된(예를 들어, 지역 네트워크(LAN) 및/또는 광역 네트워크(WAN)을 통해 결합된 멀티 프로세서들) 또는 그 임의의 조합인 여러 중앙 처리 유닛들(CPUs)을 사용하는 컴퓨터 시스템들의 구성을 포함하는 다중-노드 병렬 컴퓨팅 환경을 포함할 수 있다.
예를 들어, 실행 환경(104)을 호스팅하는 컴퓨터에 연결되는 저장 매체(110)에 저장되는, 데이터 소스(102)를 제공하는 저장 디바이스들은 실행 환경(104)에 지역적일 수 있거나, 예를 들어, 원격 연결을 통해(예를 들어, 데이터 피드를 스트리밍하는 서버 연결), 실행 환경(104)을 호스팅하는 컴퓨터와 통신하는 원격 시스템(예를 들어, 메인프레임(112)) 상에 호스팅되는 실행환경(104)에 원격일 수 있다. 실행 환경(104) 내에서 데이터 처리로부터 생성되는 출력 데이터가 데이터 소스(102) 또는 다른 저장 매체에 도로 저장될 수 있거나, 그렇지 않으면 사용될 수 있다.
처리 모듈(106)은 다양한 어플리케이션들 중 임의의 것에 대해 데이터 소스(102)로부터 데이터를 처리하고(예를 들어, 복합 이벤트 처리), 상기 처리 동안 메모리 모듈(108)에 저장된 작업 데이터(114)에 액세스한다. 상기 처리 모듈(106)은 또한 주기적으로 작업 데이터(114)의 부분들을 실행 환경(104) 내에서 액세스 가능한 데이터 저장 시스템(116)(예를 들어, 실행 환경(104)을 호스팅하는 컴퓨터의 하드 드라이브)에 저장하는 체크포인팅 프로세스를 실행한다. 마지막 체크포인트 구간 이후로 변경되지 않은 특정 데이터를 중복적으로 백업하는 것을 피하기 위해 다른 부분들이 선택적으로만 저장되는 동안, 체크포인팅 프로세스는 그 전체에서 작업 데이터(114)의 특정 부분들을 저장할 수 있다. 예를 들어, 작업 데이터(114)는 체크포인팅 프로세스가 데이터 유닛들 사이에서 유지되는 순서에 따라 체크포인트 파일들(120)의 세트에 선택적으로 저장하는 데이터 유닛들의 세트를 포함할 수 있다. 데이터 처리와 관련된 다른 인-메모리 상태(in-memory state) 같은, 작업 데이터(114)의 다른 부분들이 별도의 체크포인트 파일에 저장될 수 있다.
데이터 유닛들 사이의 순서는 더 큰 데이터 처리 프로그램의 일부일 수 있거나, 작업 데이터(114)를 관리하는 별도의 프로세스일 수 있는 관리 프로그램에 의해 유지된다. 일부 구현에서, 가장 덜 최근 액세스된(least-recently-accessed, LRA) 것부터 가장 최근 액세스된(most-recently-accessed, MRA) 순서로 정리된 키-값 쌍 엔트리들의 연관 배열(associative array) 내에서 데이터 유닛들이 메모리 모듈(108)에 저장된다. 예를 들어, 상기 연관 배열은 해시 테이블(hash table)로 구현될 수 있고, 상기 테이블의 엔트리들이 유지되는 순서에 따라 이중-연결 리스트 포인터 배열(doubly-linked list pointer arrangement)을 사용하여 함께 결합될 수 있다. 상기 테이블의 각 엔트리는 고유 키에 기초하여 액세스되고, 상기 설명된 키 입력된 상태 객체들 같은 둘러싸는 데이터 객체(enclosing data object) 내에서 그 키(변수들 또는 다른 상태 정보의 개별 값들의 임의의 번호를 나타냄)에 대응하는 데이터를 저장할 수 있다. 관리 프로그램은 테이블에서 MRA 엔트리를 가리키는 MRA 포인터, 그리고 테이블에서 LRA 엔트리를 가리키는 LRA 포인터를 유지한다. 관리 프로그램은 또한, 가장 덜 최근 체크포인트된(least-recently-checkpointed, LRC) 포인터와 가장 최근 체크포인트된(most-recently-checkpointed, MRC) 포인터를 유지한다. 테이블의 각각의 엔트리는 또한 (있는 경우) 마지막으로 저장되었던 체크포인트 파일에 대응하는 체크포인트 번호(CPN)를 저장하는 관련 속성을 가진다. 이러한 포인터들과 필드들은 하기에 더 상세히 기술된 바와 같이, 엔트리들 중 어떤 것이 임의의 주어진 체크포인트 구간에서 새로운 체크포인트 파일로 복사될 것인지를 선택적으로 결정하도록 사용된다.
엔트리가 액세스될 때마다, 가장 최근 액세스된 엔트리가 된다-즉, MRA 포인터가 그 엔트리의 메모리 주소에 할당되고 (예를 들어, 테이블의 예전 위치에서 이웃하는 엔트리들에 대해) 링크된 리스트 내에서 다른 포인터들이 적절하게 조정된다. 일부 구현에서, 엔트리는 그 엔트리에 저장된 데이터를 검색하기 위해 엔트리의 키가 사용된 임의의 경우에, 또는 그 엔트리가 테이블에 추가되었던 때 액세스되었던 것으로 간주된다. 이러한 구현에서, 프로그램이 엔트리의 데이터를 변경하지 않고 판독하기 위해 엔트리의 데이터를 검색할 때, 상기 엔트리는 여전히 액세스되었던 것으로 간주된다. 일부 구현에서, 관리 프로그램은 엔트리가 실제로 변경된(예를 들어, 가장 최근 변경된(most-recently-changed) 또는 가장 덜 최근 변경된(least-recently-changed)) 때에 기초하여 순서를 유지하고 순서에 영향을 주기 위해 엔트리의 데이터를 변경하지 않고 판독하는 것을 고려하지 않는다. 이러한 구현들은 예를 들어, 그 엔트리의 액세스에 의해 변경된 데이터를 가졌던 각각의 엔트리에 대해 “더티 비트(dirty bit)”를 사용할 수 있다. 하기 예에서, 임의의 액세스가 엔트리에 저장된 데이터를 아마도 변경했을 수 있다는 가정의 더 단순한 스킴(scheme)이 사용된다. 관리 프로그램은 또한 엔트리들이 더 이상 필요하지 않고 테이블로부터 제거되어야만 하는 때를 결정한다. 예를 들어, 일부 구현에서, 메모리 또는 시간 제약이 영향을 줄 때, 엔트리들이 가장 덜-최근-액세스된 엔트리로 시작하는 테이블로부터 제거된다.
데이터 처리 시스템(100)은 체크포인팅 프로세스를 정기적인 체크포인트 구간들에서 실행함으로써 증가하는 체크포인팅 스킴을 제공한다. 예를 들어, 체크포인팅 프로세스는 소정의 시간 이후, 또는 시스템이 입력 레코드의 소정 개수를 수신한 후에 트리거될 수 있다. 체크포인팅 프로세스가 트리거될 때, 그것은 하기에 더 상세히 기술된 바와 같이 MRC 포인터를 조정하며, 체크포인트 파일을 가장 최근 체크포인트 구간 동안 액세스되었던 데이터 유닛들의 “새로운” 복사본들 및 가장 최근 체크포인트 구간 동안 액세스되지 않았고 이미 체크포인트 파일에 저장된 데이터 유닛들의 “예전” 복사본들의 유사한 개수와 함께 저장한다. 체크포인팅 프로세스에 의해 수행되는 이러한 체크포인팅 동작들은 관리 프로그램이 데이터 처리 동작들을 위해 작업 데이터(114)에 대한 액세스를 관리하는 것을 지속하는 동안 일어날 수 있거나, 체크포인팅 프로세스를 실행하는 동안 작업 데이터(114)에 대한 액세스를 일시적으로 막을 수 있다. 도 2a와 2b는 가장 최근 체크포인트 구간 동안 체크포인트 처리 동작들의 타이밍의 예들에 대한 타임라인(여기서 시간이 오른쪽으로 증가)을 도시한다. 도 2a의 예에서, 체크포인팅 프로세스는 체크포인트 구간(202B) 동안 계속되는 데이터 처리 동작들(204)과 동시에, 이전 체크포인트 구간(202A) 동안 발생된 활동의 작업 데이터 상태를 저장하기 위해 체크포인팅 동작들(200)을 수행한다. 대안적으로는, 도 2b의 예에서, 체크포인팅 프로세스는 데이터 처리 동작들(204')이 체크포인트 구간(202B) 동안 다시 시작되기 전에 이전 체크포인트 구간(202A) 동안 발생했던 활동에 대해 체크포인팅 동작들(200')을 완료한다. 복구 동안 작업 데이터(114)의 올바른 재구성을 가능하게 하기 위해, 체크포인팅 프로세스는 새로운 복사본들이 예전 복사본들과 구별될 수 있도록 하는 방식으로(예를 들어, 각각의 데이터 유닛에 대한 플래그 사용하여, 또는 데이터 유닛들을 별도 섹션들에서 체크포인트 파일에 기록하여) 데이터 유닛들을 저장한다. 체크포인팅 프로세스는 예전 데이터 유닛들을 더 새로운 체크포인트 파일들에 기록하기 때문에, 하기에 더 상세히 기술된 바와 같이, 특정 조건들이 만족될 때 그 데이터 유닛들(현재 더 새로운 체크포인트 파일들에 저장됨)을 이전에 저장했던 체크포인트 파일들을 제거할 수 있다.
관리 프로그램이 정상적인 데이터 처리 동안 작업 데이터(114)에 대한 액세스를 관리하기 때문에, 그것은 다음 체크포인트 구간에서 발생할 체크포인팅 프로세스를 준비하기 위해 MRA와 MRC 포인터들을 적절하게 업데이트한다. 예를 들어, 링크된 리스트로 정리된 상기 설명된 엔트리들의 테이블에 대해, MRC 엔트리가 액세스되면, 그것은 테이블의 일단에서 MRA 엔트리가 되고, MRC 포인터가 그 엔트리를 참조하도록 테이블의 LRA단 쪽으로 한 단계 조정된다. 다음 체크포인팅 프로세스가 발생할 때, MRA(포함)와 MRC(제외) 포인터들 사이의 엔트리들만이 저장될 필요가 있다. MRC 포인터와 MRA 포인터 사이의 엔트리들이 체크포인트 파일에 저장된 후에, 체크포인팅 프로세스가 다음 체크포인트 구간을 준비하기 위해 MRC 포인터를 MRA 포인터에 의해 식별된 엔트리로 설정한다.
복구 동안 테이블의 올바른 재구성에 관련된 체크포인트 파일들(120)과 작업 데이터(114) 관리의 또 다른 측면은 작업 데이터(114)로부터 제거되었던(또는 더 이상 사용하지 않는 것으로 표시된) 데이터 유닛들(예를 들어, 테이블 엔트리들)을 추적하는 것이다. 제거된 것을 포함하여, 데이터 처리의 시작 이후로 존재한 각각의 데이터 유닛을 명백하게 식별하기 위해, 고유 식별자(ID)가 각각의 데이터 유닛에 할당된다. 테이블의 엔트리들에 대한 키들이 고유하기 때문에, 그것들은 제거된 엔트리들에 대한 키들이 재사용되지 않는 한 이 고유 ID로 사용될 수 있다. 그렇지 않으면, 키들이 재사용된다면, 또 다른 고유 ID가 각각의 엔트리에 할당될 수 있다. 다음의 예에서, 새로운 엔트리가 테이블에 추가될 때마다 증가되는 8-바이트 정수가 이 고유 ID와 엔트리의 키 둘 다로 쓰일 것이다. 엔트리가 체크포인트 구간 동안 테이블로부터 제거될 때, 관리 프로그램은 체크포인트 파일의 일부로서 저장되는, 그 체크포인트 구간 동안 제거된 엔트리들의 목록에 그 ID를 추가한다.
그래서, 특정 체크포인트 구간에 대한 체크포인트 파일은 다음 두 유형의 항목들을 저장하는 데이터 구조(예를 들어, 테이블)을 포함할 수 있다:
(1) 마지막 체크포인트 구간 이후로 제거되었던 엔트리들의 키를 저장하는 항목들
(2) 마지막 체크포인트 구간 이후로 액세스된 엔트리들(키와 대응하는 데이터 모두)의 복사본을 저장하는 항목들
하나의 가능한 복구 절차는 생성 순서로 모든 체크포인트 파일을 판독하는 것을 포함한다. 각각의 체크포인트 파일에 대해, 처리 모듈(106)에 의해 실행되는 복구 프로세스는 다음 단계들을 수행할 것이다:
(1) 그 키가 체크포인트 파일의 유형(1)의 항목에 저장되는 임의의 엔트리들을 제거하고, 그런 다음
(2) 체크포인트 파일의 유형(2)의 항목에 저장되는 엔트리들을 추가하거나 업데이트한다.
저장되었던 첫 번째 체크포인트 파일로부터 모든 체크포인트 파일을 판독하는 것이 올바른 행동으로 이어질 동안, 모든 체크포인트 파일을 판독하고 복구 시점에서 체크포인팅의 시작부터 테이블에 대한 모든 변경을 다시 보기 위해 복구 프로세스가 요구되지 않도록 개선이 될 수 있다. 점진적으로 이전에 예전 체크포인트 파일로 복사되었던 엔트리들을 새로운 체크포인트 파일로 복사하여, 체크포인팅 프로세스가 결국 더 이상 필요로 되지 않는 더 오래된 체크포인트 파일들을 제거할 수 있다. 이는 더 빠른 복구 프로세스를 가능하게 하고, 데이터 저장 비용을 감소시킨다.
(가장 최근 완료된 체크포인트 구간과 같이) 테이블의 각각의 엔트리의 가장 최근 상태를 복구하기 위해 필수적일 임의의 저장된 상태의 손실 없이 예전 체크포인트 파일들이 안전하게 제거될 수 있는 것을 확인하기 위해, 관리 프로그램과 체크포인팅 프로세스는 함께 어떤 예전 엔트리들이 더 새로운 체크포인트 파일들로 복사되었는지를 추적하도록 LRC 포인터가 점진적으로 LRA단으로부터 MRA단으로 가능한 엔트리들을 지나갈 수 있게 한다. 각각의 체크포인트 구간에 대해, 체크포인팅 프로세스는 그것이 MRA 단으로부터의 새로운 엔트리들을 저장하는 만큼 많은 LRA 단으로부터의 예전 엔트리들을 저장한다. 이런 방식으로, 체크포인팅 프로세스는 데이터 전송 비용이 마지막 체크포인트 구간 이후로 액세스된 엔트리들의 개수에 비례하도록 제한한다. 체크포인팅 프로세스가 LRA 단으로부터의 예전 엔트리들을 더 새로운 체크포인트 파일들로 기록할 때, 그것은 체크포인트 파일들이 더 새로운 체크포인트 파일로 아직 복사되지 않았던 예전 엔트리들을 또한 저장하지 않는 한 그것들이 이전에 일부였던 체크포인트 파일들을 삭제할 수 있다. 그런 다음 복구는 가장 오래된 것부터 가장 최신 순으로 나머지 체크포인트 파일들을 판독하여 가장 최근 테이블을 복원할 수 있다.
데이터 처리 시스템(100)이 데이터의 처리와 메모리 모듈(108)에 저장된 작업 데이터(114)의 관리를 시작할 때, 초기 체크포인팅 프로세스가 새로운 데이터 유닛들만으로 하나 이상의 체크포인트 파일들(120)의 초기 세트를 구축하는 체크포인팅 구간들의 초기 개수가 있을 수 있다. 예를 들면, 이 초기 체크포인팅 프로세스는 MRC 포인터(제외)와 MRA 포인터(포함) 사이의 테이블의 MRA 단에서 새로운 엔트리들을 저장한다. LRC 포인터는 이 초기 체크포인팅 프로세스에 대해 사용되지 않는다. 초기 체크포인트 파일들(120)의 일부 개수가 저장된 후에, 정규(정상 상태) 체크포인팅 프로세스가 새로운 데이터 유닛들뿐만 아니라 예전 데이터 유닛들(즉, 테이블 엔트리들) 또한, 저장하기 시작한다. 정규 체크포인팅 프로세스가 시작할 때, LRC 포인터가 처음에 LRA 포인터로 설정된다. 그런 다음 체크포인팅 프로세스가 LRC 포인터(포함)와 MRC 포인터(제외) 사이의 테이블의 LRA 단에서, 또는 LRC 포인터(포함)로부터 체크포인트된 새로운 엔트리들의 번호까지, 어느 것이든 더 적은 예전 엔트리들의 제한된 개수를 저장할 것이다.
다음은 의사-코드(pseudo-code)로 기록된, 체크포인팅 프로세스에 의해 사용되는 알고리즘의 예이다. 상기 의사-코드는 의사-코드의 문장들과 함수들의 기능을 설명하는 코멘트를 포함한다. 상기 의사-코드는 조건 문장들(예를 들어, 'if' 문장들)과 루프들(예를 들어, 'while'과 'for' 루프들)에 대해, 그리고 코멘트들(접두(prefix) '//'가 앞에 오는)에 대해 표준 C 프로그래밍 언어 구문을 사용한다. 이 의사-코드 목록에서, MRA 포인터는 변수 'mra'에 있고, LRA 포인터는 변수 'lra'에 있고, MRC 포인터는 변수 'mrc'에 있고, LRC 포인터는 변수 'lrc'에 있다. 점 표기는 이러한 포인터들에 의해 식별되는 엔트리들의 부분을 표현하기 위해 이러한 변수들과 함께 사용된다. 특히, 점 표기 'pointer.prev'와 'pointer.next'는 각각 '포인터(pointer)'에 의해 가리켜진 엔트리로부터 MRA와 LRA 단들에 한 단계 더 가까운 테이블에서의 위치를 나타내는 데 사용된다; 그리고 점 표기 'pointer.checkpoint_number'과 'pointer.key' 그리고 'pointer.data' 가 각각 '포인터(pointer)'에 의해 가리켜진 엔트리의 CPN과 키(key) 그리고 데이터 나타내는 데 사용된다. 점 표기는 또한 변수 'item'에 의해 나타내어지는 항목이 속성 '<property>'를 가지는지 여부를 테스트하기 위해 'item.is_<property>()' 같은, 상기 변수들과 관련된 특정 함수들을 호출하는 것을 나타내는 데 사용된다. 다음 알고리즘은 각각의 체크포인트 구간에 대한 체크포인팅 프로세스에 의해 실행될 수 있다.
Figure pct00001
Figure pct00002
Figure pct00003
Figure pct00004
Figure pct00005
상기 알고리즘은 또한 도 3a의 순서도에서 나타내어진다. 체크포인팅 프로세스는 제거할 체크포인트 파일들의 빈 리스트 및 새로운 빈 체크포인트 파일로, 그리고 진행되는 MRC 포인터를 첫 번째 새로운 엔트리로 초기화한다(300). 상기 프로세스는 MRC 포인터가 MRA 포인터와 같아질 때까지 계속 반복하는 루프 조건과 함께 while-loop(302)를 수행한다. while-loop(302)에서, 상기 프로세스는 현재 체크포인트 파일에 현재 새로운 엔트리를 기록하고(304), 현재 MRC 엔트리로 현재 CPN을 기록하고(306), 그리고 MRC 포인터를 전진시킨다(308). 상기 프로세스는 LRC가 MRC에 도달했는지를 결정하기 위해 체크하고(310), 그렇다면 다음 while-loop 반복으로 돌아가고, 그렇지 않다면 진행한다. while-loop(302)에서 진행한다면, 상기 프로세스는 LRC 엔트리를 현재 체크포인트 파일에 기록한다(312). 그런 다음, 상기 프로세스는 LRC 엔트리가 예전 체크포인트 파일에서 가장 최근 엔트리였는지를 결정하기 위해 체크하고(312), 그렇다면 제거되기 위한 체크포인트 파일들의 목록에 그것을 추가하여 제거를 위한 체크포인트 파일을 표시한다(316). 상기 프로세스는 그런 다음 현재 CPN을 현재 LRC 엔트리에 기록하고(318), 다음 while-loop 반복으로 돌아가기 전에 LRC 포인터를 전진시킨다(320). While-loop(302)를 빠져나온 후에, 상기 프로세스는 LRC가 MRC에 도달했는지를 결정하기 위해 체크하고(322), 그렇다면 LRC를 다시 LRA로 설정한다. 상기 프로세스는 그런 다음 이 체크포인트 구간에서 제거된 모든 엔트리들의 키와 함께 제거-유형 항목들을 기록하고(326), LRC-유형 항목을 기록하고(328), CPN을 전진시키고(330), 그리고 제거를 위해 표시되었던 체크포인트 파일들을 제거한다(332).
다음은 의사-코드로 기록된, 복구 프로세스에 의해 사용되는 알고리즘의 예이다. 다음 알고리즘은 오류 후에 엔트리들의 테이블의 가장 최근 일관된 상태(즉, 가장-최근 체크포인트된 상태)를 복구하도록 실행될 수 있다.
Figure pct00006
Figure pct00007
Figure pct00008
상기 알고리즘은 또한 도 3b의 순서도에서 나타내어진다. 상기 복구 프로세스는 MRA와 LRA 포인터들을 널(null) 값으로 초기화한다(340). 상기 복구 프로세스는 그런 다음 (가장 오래된 것부터 최신으로) 체크포인트 파일들에 대해 반복하는 외부 for-loop(344)와 각각의 체크포인트 파일의 항목들에 대해 반복하는 내부 for-loop(346)를 가지는, 중첩된 for-loop들을 수행한다. 내부 for-loop(346)의 내부에서, 상기 프로세스가 항목이 제거-유형이면 그 항목을 제거한다. 상기 프로세스는 그런 다음 항목이 엔트리-유형인지를 체크하고(350), 그렇다면 지정된 키를 가지는 엔트리를 찾고(352) 지정된 데이터를 가지는 엔트리를 업데이트하거나 엔트리가 발견되지 않으면 지정된 키와 데이터를 가지는 엔트리를 생성한다. 그런 다음 상기 업데이트되거나 생성된 엔트리는 포인터들을 설정하여 테이블의 적절한 위치로 삽입된다(354). 삽입 후에, 또는 항목이 엔트리-유형이 아니면, 상기 프로세스는 항목이 LRC-유형이라면 LRC를 지정된 키를 가지는 엔트리로 설정한다. 그런 다음 for-loop들 둘 다 다음 반복으로 돌아간다. for-loop들 둘 다를 빠져나온 후에, 상기 프로세스는 MRC를 MRA로 설정한다.
체크포인팅 프로세스에 의해 사용될 수 있는 알고리즘들의 다른 예들은 다른 단계들을 포함할 수 있다. 예를 들어, 체크포인트 파일들이 압축될 수 있다. 체크포인트 파일들은 체크포인트 구간마다 하나보다 더 적은 물리적 파일들로 결합될 수 있다. 예를 들어, 체크포인팅 프로세스가 일정-시간 동작(constant-time operation)과 함께, 이미 저장된 더 새로운 복사본들을 가지는 테이블 엔트리들의 더 오래된 복사본들을 제거하도록 하는 주기적 변환이 있을 수 있다. 엔트리들의 순서화된 목록은 단순히 액세스보다는 엔트리들의 변경에 기초하여 유지될 수 있다. LRC 포인터가 전진되고 있을 때 제거되기 위한 체크포인트 파일들 각각의 체크포인트 번호들을 기록하기보다는, 상기 프로세스는 단순히 최종 LRC 엔트리에 대한 체크포인트 번호보다 더 적은 체크포인트 번호들과 관련된 모든 체크포인트 파일들을 제거한다. 체크포인트 파일 내에 새로운 그리고 예전 엔트리들을 인터리브(interleave)하고 그것들을 구분하기 위해 플래그(flag)를 사용하기보다는, 상기 프로세스는 새로운 엔트리들이 기록될 때 새로운 엔트리들을 카운트할 수 있고 체크포인트 파일의 별도 섹션들(예를 들어, 새로운 엔트리들에 대한 섹션, 예전 엔트리들에 대한 섹션, 제거된 키들을 가지는 항목들에 대한 섹션, 및 LRC 엔트리의 키를 가지는 항목에 대한 섹션)에 새로운 엔트리들이 기록된 후에 예전 엔트리들의 동일한(또는 유사한) 개수를 기록할 수 있다.
도 4a-4f는 작업 데이터(114) 내 엔트리들의 테이블의 서로 다른 상태들과 다른 인-메모리 상태의 예들, 그리고 체크포인트 파일들(120)의 서로 다른 상태들의 예들의 그림을 도시한다. 도 4a는 키/데이터 쌍이 저장되는 최신 체크포인트 파일을 식별하는 CPN에 따라 키/데이터 쌍들의 엔트리들을 저장하는 테이블(400)의 부분들, 그리고 MRA, LRA, MRC, 및 LRC 포인트들의 위치를 도시한다. 도 4a는 또한 제거된 키들의 목록(402)을 도시한다. 테이블(400)과 목록(402)은 체크포인팅 프로세스가 CPN 201을 가지는 체크포인트 파일을 생성하기 직전 상태에 대해 도시된다. 단순화를 위해, 주어진 키에 대한 데이터의 내용이 단일 문자로 도시된 예에서 표현된다.
도 4b와 4c는 CPN 201을 가지는 체크포인트 파일이 생성되기 직전 기존 체크포인트 파일들(CPN 193-200을 가지는)의 세트의 일부를 도시한다. 도 4b는 더 이른 체크포인트 파일들 193-194를 도시하고, 도 4c는 최신 체크포인트 파일들 198-200을 도시한다. 이 예에서, 체크포인트 파일이 테이블의 행들로 항목들을 가지는 테이블로 도시된다. 각각의 항목은 'Type' 필드에 대해 세 가지 가능한 값들 중 하나를 가진다: E(엔트리-유형), R(제거-유형), 또는 L(LRC-유형). 엔트리-유형 항목은 각각 'Key' 필드에 대한 키 값; 'Data' 필드에 대한 데이터 값; 그리고 엔트리가 “새로운(new)” 또는 “예전(old)” 엔트리인 것을 표시하는 'New?' 필드에 대한 T(참) 또는 F(거짓) 중 어느 하나를 가진다. 상기 설명된 바와 같이, “예전(old)” 엔트리는 이전 체크포인트 파일에 이미 저장되었던 것이고, 이제 더 새로운 체크포인트 파일에 다시 저장된다. 제거-유형과 LRC-유형 항목들은 'Key' 필드에 대한 키 값을 가지나, 'Data' 또는 'New?' 필드들에 대한 값들을 가지지 않는다.
도 4a에 도시된 테이블(400) 및 목록(402)과 도 4a-4c에 도시된 체크포인트 파일들로 끝나는 체크포인트 구간에 대해, 상기 의사-코드로 기술된 예시 알고리즘을 수행한다면, 상기 체크포인팅 프로세스는 도 4d에 도시된 CPN 201을 가지는 새로운 체크포인트 파일을 저장할 것이다. 체크포인트 파일에서 최종 체크포인트된 엔트리로부터 CPN 194를 가지는 체크포인트 파일에서 최종 체크포인트되었던 엔트리로 LRC 포인터의 전이가 CPN 193을 가지는 체크포인트 파일에서 요구되는 엔트리들의 어떤 복사본도 더 이상 없었다는 것을 표시했기 때문에, 상기 체크포인팅 프로세스는 또한 CPN 193을 가지는 체크포인트 파일을 제거할 것이다. 체크포인팅 프로세스가 CPN 201을 가지는 체크포인트 파일을 저장한 후에, 그리고 모든 항목들이 도 4a의 상태 이후로 액세스될 기회가 있었기 전에, 테이블(400) 및 목록(402)은 도 4e에 도시된 상태를 가진다.
CPN 201을 가지는 체크포인트 파일의 저장을 뒤따르는 시스템 오류가 있는 경우, CPN 순서로 (CPN 194-201을 가지는) 나머지 체크포인트 파일들만 처리하여 테이블(400) 및 목록(402)(도 4e에 도시된 바와 같음)의 상태를 복구하도록 복구 프로세스를 수행할 수 있다. 도 4f는 테이블(400)이 재구성될 때 테이블(400)의 상태의 일련의 스냅 샷을 도시한다. 첫 번째 체크포인트 파일 194의 처리를 뒤따르고, 각각의 체크포인트 파일 198-200의 처리를 뒤따르는 테이블(400)의 상태의 부분들이 도시된다. 그런 다음, 체크포인트 파일 201의 처리 후에, 테이블(400)로 포인터들을 포함하는, 테이블(400)의 완전히 복구된 상태가 복원된다. MRA와 MRC 포인터들은 테이블(400)의 첫 번째 엔트리로 설정되고, LRA 포인터는 테이블(400)의 마지막 엔트리로 설정된다. LRC 포인터 값이 체크포인트 파일들 중 마지막 것, 이 예에서 체크포인트 파일 201, 의 LRC-유형 항목을 사용하여 복원된다.
도 5는 테이블의 서로 다른 섹션들을 나타내도록 만들어진 각각의 체크포인트 구간에 대한 바(bar)와 함께, 일련의 9개의 서로 다른 체크포인트 구간 동안 서로 다른 포인터들이 시간에 따라 이동하는 방법의 도면을 도시한다. 시간이 지남에 따라 서로 다른 섹션들의 변화하는 크기는 MRC 포인터를 따라잡고 LRA 포인터로 다시 순환하는 LRC 포인터를 설명한다. 이 예에서, 이러한 일련의 체크포인트 구간들 동안 액세스되는 데이터 유닛들의 일정한 수, 그리고 테이블의 일정한 크기가 있다. 그 체크포인트 구간 동안 기록되는 체크포인트 파일에 대한 현재 CPN이 각각의 바 아래에 있고, (임의의 예전 체크포인트 파일들이 제거된 후) 테이블의 상태를 저장하는 나머지 능동(active) 체크포인트 파일들의 CPN의 목록이 현재 CPN 아래에 있다. 이 예에서 포함하는, 대부분의 사용의 경우에, 체크포인트 구간당 하나의 체크포인트 파일 삭제의 평균과 함께, 나머지 체크포인트 파일들의 세트가 상당히 안정적이다.
상기 설명된 체크포인팅 접근 방법이 예를 들어, 적절한 소프트웨어 명령들을 실행하는 프로그래머블 컴퓨팅 시스템을 사용하여 구현될 수 있거나 필드 프로그래머블 게이트 어레이(FPGA) 같은 적절한 하드웨어 또는 일부 하이브리드 형태로 구현될 수 있다. 예를 들어, 프로그램된 접근법에서 소프트웨어는 각각이 적어도 하나의 프로세서, 적어도 하나의 데이터 저장 시스템(휘발성 및/또는 비휘발성 메모리 및/또는 저장 요소들), 적어도 하나의 사용자 인터페이스(적어도 하나의 입력 디바이스 또는 포트를 사용하여 입력을 수신하기 위한, 그리고 적어도 하나의 출력 디바이스 또는 포트를 사용하여 출력을 제공하기 위한)를 포함하는 하나 이상의 프로그램된 또는 프로그래머블 컴퓨팅 시스템(분산, 클라이언트/서버, 또는 그리드 같은 다양한 구조가 될 수 있음) 상에서 실행하는 하나 이상의 컴퓨터 프로그램들의 절차들을 포함할 수 있다. 소프트웨어는 예를 들어, 데이터플로우 그래프의 디자인, 구성, 및 실행과 관련된 서비스들을 제공하는 더 큰 프로그램의 하나 이상의 모듈들을 포함할 수 있다. 상기 프로그램의 모듈들(예를 들어, 데이터플로우 그래프의 요소들)은 데이터 저장소에 저장된 데이터 모델을 따르는 데이터 구조들 또는 다른 체계화된 데이터로 구현될 수 있다.
상기 소프트웨어는 (예를 들어 범용 또는 특별 목적 컴퓨팅 시스템 또는 디바이스에 의해 판독 가능한) CD-ROM 또는 다른 컴퓨터 판독 가능 매체 같은 유형의, 비 일시적인 매체상에 제공될 수 있거나 또는 그것이 실행되는 컴퓨팅 시스템의 유형의, 비 일시적 매체에 네트워크 통신 매체를 통해 (예를 들어, 전파 신호에 인코딩되어) 전달될 수 있다. 상기 처리의 일부 또는 전부는 특별 목적 컴퓨터상에서 또는 코프로세서(coprocessors) 또는 필드 프로그래머블 게이트 어레이(field-programmable gate array, FPGA), 또는 전용, 주문형 반도체(dedicated, application-specific integrated circuit, ASIC) 같은 특별 목적 하드웨어를 사용하여 수행될 수 있다. 상기 처리는 소프트웨어에 의해 명시된 계산의 다른 부분들이 다른 컴퓨팅 요소들에 의해 수행되는 분산 방식으로 실행될 수 있다. 각각의 이러한 컴퓨터 프로그램은 저장 장치 매체가 본원에서 기술된 처리를 수행하도록 컴퓨터에 의해 판독될 때 컴퓨터를 구성하고 작동하기 위해, 바람직하게는 범용 또는 특별 목적 프로그래머블 컴퓨터에 의해 액세스 가능한 저장 장치의 컴퓨터 판독 가능 저장 매체(예를 들어, 솔리드 스테이트 메모리(solid state memory) 또는 매체, 또는 자기 또는 광 매체)에 저장되거나 다운로드된다. 본 발명 시스템은 또한 컴퓨터 프로그램으로 구성되는, 유형의, 비 일시적 매체로서 실현될 수 있고, 그렇게 구성된 매체는 컴퓨터가 본원에서 기술된 처리 단계들 중 하나 이상을 수행하도록 구체적이고 미리 정의된 방식으로 동작하게 한다.
본 발명의 다수의 실시 예가 기술되었다. 그럼에도 불구하고, 전술한 설명은 예시를 위한 것이며 다음의 청구항들의 범위에 의해 정의되는 본 발명의 범위를 한정하는 것이 아닌 것으로 이해되어야 한다. 따라서 다른 실시 예들이 또한 다음 청구항들의 범위 내에 있다. 예를 들어, 다양한 변형이 본 발명의 범위를 벗어남 없이 만들어질 수 있다. 부가적으로, 전술된 단계들의 일부는 순서 독립적이므로 기술된 것과 다른 순서로 수행될 수 있다.

Claims (24)

  1. 저장된 데이터를 관리하기 위한 컴퓨팅 시스템에 있어서, 상기 컴퓨팅 시스템은:
    복수의 데이터 유닛들을 포함하는 작업 데이터를 저장하도록 구성된 메모리 모듈;
    적어도 하나의 데이터 유닛들의 복수의 세트들을 포함하는 복구 데이터를 저장하도록 구성된 저장 시스템; 및
    상기 메모리 모듈과 상기 저장 시스템 사이의 데이터 유닛들의 전송을 관리하도록 구성된 적어도 하나의 프로세서를 포함하되, 상기 관리는:
    상기 작업 데이터에 포함되는 상기 복수의 데이터 유닛들 간의 순서를 유지하는 것-상기 순서는 상기 복수의 데이터 유닛들 중 적어도 하나를 포함하는 제1 인접 부분과 상기 복수의 데이터 유닛들 중 적어도 하나를 포함하는 제2 인접 부분을 정의함-; 그리고
    여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 것, 그리고 적어도 두 개의 데이터 유닛들의 세트-임의의 액세스된 데이터 유닛들을 포함하는 상기 제1 인접 부분으로부터의 적어도 하나의 데이터 유닛들, 및 이전에 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는 상기 제2 인접 부분으로부터의 적어도 하나의 데이터 유닛들을 포함함-를 상기 복구 데이터에 추가하는 것을 포함하는 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 관리는 여러 시간 구간들 각각에 대해, 상기 작업 데이터에 여전히 포함된 임의의 데이터 유닛들이 적어도 하나의 데이터 유닛들의 적어도 하나의 다른 세트에 저장되는 적어도 하나의 데이터 유닛들의 적어도 하나의 세트를 상기 복구 데이터로부터 제거하는 것을 더 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  3. 제1항에 있어서,
    상기 관리는 상기 여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 제거된 임의의 데이터 유닛들을 식별하는 것을 더 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  4. 제2항 내지 제3항 중 어느 한 항에 있어서,
    상기 제2 인접 부분은 임의의 제거된 데이터 유닛들을 제외하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서,
    상기 관리는 여러 시간 구간들 각각에 대해, 임의의 제거된 데이터 유닛들을 식별하는 정보를 복구 데이터에 추가하는 것을 더 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 것은 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 상기 제1 인접 부분으로 이동하는 것을 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 작업 데이터에 포함된 상기 복수의 데이터 유닛들 간 순서는 얼마나 최근 상기 데이터 유닛이 액세스 되었는지에 기초하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 제1 인접 부분은 상기 작업 데이터에 포함된 상기 복수의 데이터 유닛들 모두 중 가장 최근 액세스된 데이터 유닛, 및 그것들의 가장 최근 액세스 이후로 상기 복구 데이터에 추가되지 않은 상기 복수의 데이터 유닛들의 서브세트 중 가장 덜 최근 액세스된 데이터 유닛을 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 제2 인접 부분은 상기 제1 인접 부분과 중첩되지 않는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 제2 인접 부분은 가장 최근 액세스 이후로 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    제2 인접 부분으로부터의 상기 적어도 하나의 데이터 유닛들은 상기 제1 인접 부분으로부터의 상기 적어도 하나의 데이터 유닛들의 데이터 유닛들의 개수의 약 반과 상기 제1 인접 부분으로부터의 상기 적어도 하나의 데이터 유닛들의 데이터 유닛들의 개수의 약 두 배 사이인 데이터 유닛들의 개수에 제한되는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 제1 인접 부분은 상기 제2 인접 부분의 상기 데이터 유닛들 중 임의의 것보다 더 최근에 액세스된 데이터 유닛들을 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  13. 제1항에 있어서,
    데이터 유닛이 얼마나 최근 액세스된 지를 표시하는 시간이 상기 데이터 유닛에 대한 배타적 액세스가 개시된 시간에 대응하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  14. 제1항에 있어서,
    데이터 유닛이 얼마나 최근 액세스된 지를 표시하는 시간이 상기 데이터 유닛에 대한 배타적 액세스가 종료된 시간에 대응하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  15. 제1항에 있어서,
    상기 관리는 오류에 응하여 상기 작업 데이터의 상태를 복원하기 위해 상기 복구 데이터를 사용하는 것을 더 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  16. 제1항에 있어서,
    상기 작업 데이터에 포함된 상기 복수의 데이터 유닛들이 각각 키 값과 관련되는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  17. 제16항에 있어서,
    상기 작업 데이터에 포함되는 상기 데이터 유닛들 중 적어도 하나는 상기 데이터 유닛과 관련된 상기 키 값에 기초하여 액세스 가능한 적어도 하나의 값들을 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  18. 제16항에 있어서,
    상기 작업 데이터에 포함된 서로 다른 데이터 유닛들과 관련된 서로 다른 키 값들의 총 수가 약 1,000 이상인, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  19. 제1항에 있어서,
    상기 시간 구간들이 서로 중첩되지 않는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  20. 제1항에 있어서,
    상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 것은 상기 시간 구간 동안 상기 작업 데이터에 추가된 임의의 데이터 유닛들, 상기 시간 구간 동안 상기 작업 데이터로부터 판독된 임의의 데이터 유닛들, 또는 상기 시간 구간 동안 상기 작업 데이터 내에서 업데이트된 임의의 데이터 유닛들 중 적어도 하나를 식별하는 것을 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  21. 제1항에 있어서,
    상기 메모리 모듈은 휘발성 메모리 디바이스를 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  22. 제1항에 있어서,
    상기 저장 시스템은 비-휘발성 저장 디바이스를 포함하는, 저장된 데이터를 관리하기 위한 컴퓨팅 시스템.
  23. 컴퓨팅 시스템의 메모리 모듈과 상기 컴퓨팅 시스템의 저장 시스템 사이의 데이터 유닛들의 전송을 관리하기 위한 방법에 있어서, 상기 방법은:
    상기 메모리 모듈에, 복수의 데이터 유닛들을 포함하는 작업 데이터를 저장하는 단계;
    상기 저장 시스템에, 적어도 하나의 데이터 유닛들의 복수의 세트들을 포함하는 복구 데이터를 저장하는 단계;
    상기 작업 데이터에 포함되는 상기 복수의 데이터 유닛들 간의 순서를 유지하는 단계-상기 순서는 상기 복수의 데이터 유닛들 중 적어도 하나를 포함하는 제1 인접 부분과 상기 복수의 데이터 유닛들 중 적어도 하나를 포함하는 제2 인접 부분을 정의함-; 및
    여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하는 단계, 그리고 적어도 두 개의 데이터 유닛들의 세트-임의의 액세스된 데이터 유닛들을 포함하는 상기 제1 인접 부분으로부터의 적어도 하나의 데이터 유닛들, 및 이전에 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는 상기 제2 인접 부분으로부터의 적어도 하나의 데이터 유닛들을 포함함-를 상기 복구 데이터에 추가하는 단계를 포함하는, 데이터 유닛들의 전송을 관리하기 위한 방법.
  24. 컴퓨팅 시스템의 메모리 모듈과 상기 컴퓨팅 시스템의 저장 시스템 사이의 데이터 유닛들의 전송을 관리하기 위한, 컴퓨터 판독가능 매체상에 비-일시적 형태로 저장된 소프트웨어에 있어서, 상기 소프트웨어는 상기 컴퓨팅 시스템이:
    상기 메모리 모듈에, 복수의 데이터 유닛들을 포함하는 작업 데이터를 저장하도록 하고;
    상기 저장 시스템에, 적어도 하나의 데이터 유닛들의 복수의 세트들을 포함하는 복구 데이터를 저장하도록 하고;
    상기 작업 데이터에 포함되는 상기 복수의 데이터 유닛들 간의 순서를 유지하도록 하고-상기 순서는 상기 복수의 데이터 유닛들 중 적어도 하나를 포함하는 제1 인접 부분과 상기 복수의 데이터 유닛들 중 적어도 하나를 포함하는 제2 인접 부분을 정의함-; 그리고
    여러 시간 구간들 각각에 대해, 상기 시간 구간 동안 상기 작업 데이터로부터 액세스된 임의의 데이터 유닛들을 식별하도록 하고, 그리고 적어도 두 개의 데이터 유닛들의 세트-임의의 액세스된 데이터 유닛들을 포함하는 상기 제1 인접 부분으로부터의 적어도 하나의 데이터 유닛들, 및 이전에 상기 복구 데이터에 추가된 적어도 하나의 데이터 유닛을 포함하는 상기 제2 인접 부분으로부터의 적어도 하나의 데이터 유닛들을 포함함-를 상기 복구 데이터에 추가하도록 하는 명령들을 포함하는, 컴퓨터 판독가능 매체 상에 비-일시적 형태로 저장된 소프트웨어.
KR1020167013081A 2013-10-21 2014-09-26 데이터 유닛들의 컬렉션 체크포인팅 KR102179669B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361893439P 2013-10-21 2013-10-21
US61/893,439 2013-10-21
PCT/US2014/057624 WO2015060991A1 (en) 2013-10-21 2014-09-26 Checkpointing a collection of data units

Publications (2)

Publication Number Publication Date
KR20160074587A true KR20160074587A (ko) 2016-06-28
KR102179669B1 KR102179669B1 (ko) 2020-11-17

Family

ID=51752165

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167013081A KR102179669B1 (ko) 2013-10-21 2014-09-26 데이터 유닛들의 컬렉션 체크포인팅

Country Status (9)

Country Link
US (1) US9354981B2 (ko)
EP (1) EP3060991B1 (ko)
JP (1) JP6400695B2 (ko)
KR (1) KR102179669B1 (ko)
CN (1) CN105659214B (ko)
AU (1) AU2014340626B2 (ko)
CA (1) CA2926935C (ko)
SG (1) SG11201603105VA (ko)
WO (1) WO2015060991A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102121139B1 (ko) 2016-01-14 2020-06-17 아브 이니티오 테크놀로지 엘엘시 복구 가능한 스트림 프로세싱
US10146642B1 (en) * 2016-03-24 2018-12-04 EMC IP Holding Company LLC Fault resilient distributed computing using virtual machine continuous data protection
US10073746B2 (en) * 2016-07-12 2018-09-11 Advanced Micro Devices, Inc. Method and apparatus for providing distributed checkpointing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328887A (ja) * 1995-05-31 1996-12-13 Toshiba Corp 入出力制御方式及び入出力制御方法
JPH10240630A (ja) * 1997-02-28 1998-09-11 Toshiba Corp コンピュータシステム及び同システムに適用するメモリ制御方法
JP2009169515A (ja) * 2008-01-11 2009-07-30 Denso Corp コンピュータシステム及びシステム回復装置
US8392370B1 (en) * 2008-03-28 2013-03-05 Emc Corporation Managing data on data storage systems

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03171242A (ja) * 1989-11-30 1991-07-24 Oki Electric Ind Co Ltd ファイルバックアップ方法
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5819021A (en) 1995-12-11 1998-10-06 Ab Initio Software Corporation Overpartitioning system and method for increasing checkpoints in component-based parallel applications
JP2000163294A (ja) * 1998-11-30 2000-06-16 Nec Corp データベース管理方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体
US6584581B1 (en) 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
JP2002132561A (ja) * 2000-10-20 2002-05-10 Fuji Xerox Co Ltd 差分バックアップ方法および装置
EP1298536A1 (en) * 2001-10-01 2003-04-02 Partec AG Distributed file system and method of operating a distributed file system
US7111136B2 (en) * 2003-06-26 2006-09-19 Hitachi, Ltd. Method and apparatus for backup and recovery system using storage based journaling
US7577807B2 (en) * 2003-09-23 2009-08-18 Symantec Operating Corporation Methods and devices for restoring a portion of a data store
US7296008B2 (en) * 2004-08-24 2007-11-13 Symantec Operating Corporation Generation and use of a time map for accessing a prior image of a storage device
US7406489B2 (en) * 2005-01-28 2008-07-29 Solid Information Technology Oy Apparatus, system and method for persistently storing data in a data synchronization process
US7865684B2 (en) 2005-06-27 2011-01-04 Ab Initio Technology Llc Managing message queues
JP5021929B2 (ja) * 2005-11-15 2012-09-12 株式会社日立製作所 計算機システム及びストレージシステムと管理計算機並びにバックアップ管理方法
US8229902B2 (en) 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
JP5008991B2 (ja) * 2007-01-24 2012-08-22 株式会社日立製作所 データのリカバリを制御する装置及び方法
US8539179B1 (en) 2009-03-31 2013-09-17 Symantec Corporation Methods and systems for creating full backups
US9021299B2 (en) 2011-02-18 2015-04-28 Ab Initio Technology Llc Restarting processes
US8370310B2 (en) * 2011-03-04 2013-02-05 Microsoft Corporation Managing database recovery time
CN103392207B (zh) * 2011-10-05 2017-08-04 希捷科技有限公司 非易失性存储的自身日志记录和层级一致性
US9747293B2 (en) * 2012-02-28 2017-08-29 Deep Information Sciences, Inc. Method and system for storage and retrieval of information
US9185235B2 (en) 2012-08-02 2015-11-10 Ab Initio Technology Llc Aggregating data in a mediation system
US9116819B2 (en) * 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08328887A (ja) * 1995-05-31 1996-12-13 Toshiba Corp 入出力制御方式及び入出力制御方法
JPH10240630A (ja) * 1997-02-28 1998-09-11 Toshiba Corp コンピュータシステム及び同システムに適用するメモリ制御方法
JP2009169515A (ja) * 2008-01-11 2009-07-30 Denso Corp コンピュータシステム及びシステム回復装置
US8392370B1 (en) * 2008-03-28 2013-03-05 Emc Corporation Managing data on data storage systems

Also Published As

Publication number Publication date
KR102179669B1 (ko) 2020-11-17
US9354981B2 (en) 2016-05-31
CN105659214A (zh) 2016-06-08
CA2926935C (en) 2022-05-31
US20150113325A1 (en) 2015-04-23
JP2016540285A (ja) 2016-12-22
JP6400695B2 (ja) 2018-10-03
AU2014340626B2 (en) 2019-05-16
CN105659214B (zh) 2019-01-15
CA2926935A1 (en) 2015-04-30
EP3060991B1 (en) 2017-09-06
WO2015060991A1 (en) 2015-04-30
SG11201603105VA (en) 2016-05-30
EP3060991A1 (en) 2016-08-31

Similar Documents

Publication Publication Date Title
US20180332367A1 (en) Dynamically scaling a number of stream segments that dynamically store streaming data while preserving the order of writes
JP6362685B2 (ja) オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置
CN104040481B (zh) 用于融合、存储和检索增量式备份数据的方法和系统
US8060713B1 (en) Consolidating snapshots in a continuous data protection system using journaling
CN108509462B (zh) 一种同步活动事务表的方法及装置
US10089320B2 (en) Method and apparatus for maintaining data consistency in an in-place-update file system with data deduplication
EP2590078B1 (en) Shadow paging based log segment directory
US11093387B1 (en) Garbage collection based on transmission object models
US10628298B1 (en) Resumable garbage collection
US11468011B2 (en) Database management system
US10095415B2 (en) Performance during playback of logged data storage operations
US10977143B2 (en) Mirrored write ahead logs for data storage system
US20170212902A1 (en) Partially sorted log archive
JP6293709B2 (ja) ストレージシステムおよびストレージシステム用プログラム
KR102179669B1 (ko) 데이터 유닛들의 컬렉션 체크포인팅
AU2014340626A1 (en) Checkpointing a collection of data units
JP5719083B2 (ja) データベース装置、プログラムおよびデータ処理方法
US11645333B1 (en) Garbage collection integrated with physical file verification
US20210406243A1 (en) Non-transitory computer-readable storage medium for storing information processing program, information processing method, and information processing apparatus
US20230315582A1 (en) Object-level Incremental Cloud Backups
US11256583B2 (en) Efficient handling of RAID-F component repair failures
JPS63195755A (ja) 主記憶装置上の情報の内容保証方式

Legal Events

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