KR101693683B1 - 가상 데이터베이스 되감기 - Google Patents

가상 데이터베이스 되감기 Download PDF

Info

Publication number
KR101693683B1
KR101693683B1 KR1020167003447A KR20167003447A KR101693683B1 KR 101693683 B1 KR101693683 B1 KR 101693683B1 KR 1020167003447 A KR1020167003447 A KR 1020167003447A KR 20167003447 A KR20167003447 A KR 20167003447A KR 101693683 B1 KR101693683 B1 KR 101693683B1
Authority
KR
South Korea
Prior art keywords
database
virtual database
virtual
time
snapshot
Prior art date
Application number
KR1020167003447A
Other languages
English (en)
Other versions
KR20160030401A (ko
Inventor
마이클 제임스 스튜어트
휴버트 켄 선
Original Assignee
델픽스 코퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 델픽스 코퍼레이션 filed Critical 델픽스 코퍼레이션
Publication of KR20160030401A publication Critical patent/KR20160030401A/ko
Application granted granted Critical
Publication of KR101693683B1 publication Critical patent/KR101693683B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • G06F17/30566
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/219Managing data history or versioning
    • G06F17/30088
    • G06F17/30289

Abstract

데이터베이스 스토리지 시스템이 사용자가 가상 데이터베이스의 상태를 수정할 수 있도록 한다. 상기 데이터베이스 스토리지 시스템은 각 목적지에서 각 가상 데이터베이스(VDB)를 제공하고, 상기 각 VDB는 각 컨테이너 내에 저장되는 제1 타임플로우를 가진다. 사용자는 VDB를 되감기 하는 요청을 전송할 수 있다. 상기 요청은 VDB의 타임플로우, 및 타임플로우와 연관된 VDB의 상태를 식별한다. 상기 데이터베이스 스토리지 시스템은, 상기 가상 데이터베이스가 상기 식별된 타임플로우와 연관된 VDB의 스냅샷과 연관된 데이터베이스 블록을 참조하도록 수정한다. 상기 데이터베이스 스토리지 시스템은 상기 수정된 VDB에 대한 새로운 타임플로우를 유지한다. 또한, 상기 데이터베이스 스토리지 시스템은 상기 가상데이터베이스가 소스 데이터베이스의 상태로 재생 될 수 있도록 한다. 상기 소스 데이터베이스는 외부 시스템 내 저장된 데이터베이스, 또는 상기 데이터베이스 스토리지 시스템 내 저장된 가상 데이터베이스가 될 수 있다.

Description

가상 데이터베이스 되감기{VIRTUAL DATABASE REWIND}
본 발명은 일반적으로 데이터베이스에 관한 것이며, 구체적으로 데이터베이스를 관리하기 위한 저장에 효율적인 시스템에 관한 것이다.
데이터베이스는, 조직에 중요하며 따라서 조직의 정보 기술 기반구조의 중요한 일부를 형성하는 데이터를 저장한다. 데이터베이스 소프트웨어는 흔히 복잡하고 전문가, 예를 들어 데이터베이스 소프트웨어를 유지하기 위한 데이터베이스 관리자를 필요로 한다. 나아가, 데이터베이스는 많은 양의 정보를 저장한다. 결과적으로, 일부 데이터베이스 동작을 수행하기 위한 종래의 기술들은 매우 느리게 되었다. 예를 들어, 개발 및 테스트의 목적으로, 개발자들 및/또는 테스터들은 특정 시점에 존재하는 데이터베이스의 카피를 필요로 한다. 이러한 데이터베이스를 제공하는 것은, 오직 데이터베이스의 적절한 백업이 그 시점에서 취해진 경우에만 가능하다. 적절한 백업이 취해졌다고 가정하면, 데이터베이스 관리자는 흔히 데이터베이스를 요구되는 상태로 복원시키기 위해 적절한 단계를 취하도록 요구된다. 게다가, 상기 복원 동작은 긴 시간이 걸린다. 데이터베이스 관리자와 상호작용하고 복원된 데이터베이스를 획득하는 전체적인 지연이 중요할 수 있다. 결과적으로, 개발자들 및/또는 테스터들은 적절한 테스트/개발 데이터베이스가 이용 가능하게 되도록 대기해야 한다. 이러한 지연은 다양한 개인들이 적절한 환경이 이용 가능하게 되도록 기다림에 따라 많은 비용이 들 수 있다. 게다가, 개발 및 테스트 프로세스에 있어서의 지연은 문제를 해결함에 있어서 더 큰 지연을 야기하고, 생산성의 감소로 이어진다. 결과적으로, 특정 상태에 대응하는 데이터베이스의 카피를 제공하기 위한 종래의 기술은 때때로 부적절하다.
실시예들은 가상 데이터베이스(VDB; VIRTUAL DATABASE)의 상태를 다른 VDB의 상태로 수정함으로써 가상 데이터베이스 상에서 되감기(rewind) 동작을 수행한다. 데이터베이스 스토리지 시스템은 소스 데이터베이스의 데이터베이스 블록의 포인트-인-타임(point-in-time)에서 카피를 나타내는 소스 데이터베이스의 스냅샷을 저장하고, 하나 이상의 데이터베이스 블록들은 스냅샷들을 통해 공유된다. 상기 데이터베이스 스토리지 시스템은 상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록에 기초하여 가상 데이터베이스를 공급한다. 상기 데이터베이스 스토리지 시스템은 가상 데이터베이스에 대한 타임플로우를 유지하여, 타임플로우는 최초 상태로부터 시작하는 가상 데이터베이스로의 변화의 표현(representation of change)을 포함한다. 상기 가상 데이터베이스로의 변화의 표현은, 상이한 시점에서 취한 가상 데이터베이스의 스냅샷을 포함하고, 하나 이상의 데이터베이스 블록들은 상기 가상 데이터베이스의 스냅샷을 통해 공유된다. 상기 데이터베이스 스토리지 시스템은 가상 데이터베이스를 이전의 상태로 되감으라는 요청을 수신한다. 상기 요청은 가상 데이터베이스의 타임플로우를 식별하고, 식별된 타임 플로우와 연관된 목표 시점을 식별한다. 상기 데이터베이스 스토리지 시스템은 상기 가상 데이터베이스가 타임플로우와 연관된 가상 데이터베이스의 스냅샷의 데이터베이스 블록을 참조하도록 수정함으로써 상기 가상 데이터베이스를 되감기 한다. 상기 데이터베이스 스토리지 시스템은 되감아진 가상 데이터베이스에 대한 새로운 타임플로우를 유지하고, 상기 새로운 타임플로우는 되감아진 가상 데이터베이스로 이어지는 업데이트에 의해 야기되는 변화를 나타낸다.
실시예들은 VDB의 상태를 상기 VDB와 연관된 소스 데이터베이스의 상태로 수정하기 위해, VDB 상에서 재생 동작을 수행한다. 상기 데이터베이스 스토리지 시스템은 소스 데이터베이스에 대한 타임플로우를 유지하고, 각 타임플로우는 상기 소스 데이터베이스의 최초 상태로부터 시작하는 소스 데이터베이스로의 변화의 표현을 포함한다. 상기 변화의 표현들은 상이한 시점에서 취한 소스데이터베이스의 스냅샷을 포함한다. 상기 데이터베이스 스토리지 시스템은 상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록들에 기초하여 가상 데이터베이스를 공급한다. 상기 데이터베이스 스토리지 시스템은 상기 가상 데이터베이스에 대한 타임플로우를 유지한다. 상기 데이터베이스 스토리지 시스템은, 가상 데이터베이스를 소스 데이터베이스의 타임플로우 및 상기 타임플로우의 목표 시점에 의해 식별되는 소스 데이터베이스의 상태로 재생하는 요청을 수신한다. 상기 데이터베이스 스토리지 시스템은, 상기 가상 데이터베이스가 상기 식별된 타임플로우와 연관된 소스 데이터베이스의 스냅샷의 데이터베이스 블록들을 참조하도록 수정함으로써 상기 가상 데이터베이스를 재생한다. 상기 데이터베이스 스토리지 시스템은, 상기 재생된 가상 데이터베이스로 이어지는 업데이트에 의해 야기되는 변화를 나타내는, 상기 재생된 가상 데이터베이스에 대한 새로운 타임플로우를 유지한다.
본 요약 내용과 다음의 상세한 설명에서 설명된 특성 및 장점은 본 발명의 내용을 모두 포함하는 것이 아니다. 다수의 추가된 특성 및 장점은 도면, 명세서, 및 청구범위를 고려하면 당업자에게 명백해질 것이다.
도 1은 본 발명의 일 실시예에 따른 어떻게 정보가 생산 데이터베이스(production database)로부터 데이터베이스 스토리지 시스템으로 카피되는지, 및 파일 공유 시스템을 이용하여 가상 데이터베이스로서 공급(provisioning)되는지를 도시하는 다이어그램이다.
도 2는 일 실시예에 따른 가상 데이터베이스의 원격 공급을 허용하는 전체적인 시스템 환경을 도시한다.
도 3은 일부 실시예들에 따른, 생산 데이터베이스로부터 충분한 정보의 카피를 저장하고, 가상 데이터베이스를 공급하는 시스템 구조의 다이어그램이다.
도 4a는 일부 실시예들에 따른 가상 데이터베이스 내에 저장된 데이터의 구조를 도시한다.
도 4b는 일부 실시예들에 의한, 타임플로우에 따른 다양한 시점에서, 소스 데이터베이스 내 변화에 대응하는, 가상 데이터베이스의 스냅샷을 캡쳐하는 프로세스를 도시한다.
도 5a는 일부 실시예들에 따른, 가상 데이터베이스를 사용자가-지정한 시점으로 되감기 하기 위한 제1 방법을 도시한다.
도 5b는 일부 실시예들에 따른, 가상 데이터베이스를 사용자가-지정한 시점으로 되감기 하기 위한 제2 방법을 도시한다.
도 6은 일부 실시예들에 따른, 가상 데이터베이스 롤백(또는 되감기)의 사례에서 타임플로우의 사용자 가시도를 도시한다.
도 7은 일부 실시예들에 의한, 타임플로우를 따라 가상 데이터베이스를 뒤로(예를 들어, 롤백 또는 되감기), 앞으로(빨리 감기) 이동하는 프로세스를 도시한다.
도 8은 일부 실시예들에 따른, 가상 데이터베이스 롤백의 순서 변경 넘버(SCNs; sequence change numbers) 및 실시간 클락 내 변화를 도시한다.
도 9a 및 9b는 본 발명의 일 실시예에 따른, 가상 데이터베이스를 되감거나 롤백하기 위한 프로세스의 플로우차트를 포함한다.
도 10a 내지 10g는 일부 실시예들에 따라, 가상 데이터베이스 스냅샷을 검색하고, VDB 타임플로우와 상호작용하고, 가상 데이터베이스 되감기(또는 롤백)를 수행하기 위한 그래픽 사용자 인터페이스의 예를 포함한다.
상기 도면들은 단지 예시 목적으로 본 발명의 여러 실시예들을 도시한다. 해당 기술분야의 통상의 기술자는 본 명세서에 예시된 구조 및 방법의 대안적인 실시예가 본 명세서에 설명된 본 발명의 원리로부터 벗어남이 없이 쓰여질 수 있다는 것을 다음의 설명으로부터 쉽게 인식할 것이다.
나아가, 원격 공급을 위한 상기 언급된 방법은, 소스 데이터베이스 블록들(예를 들어, 생산 데이터베이스 내 데이터베이스 블록들)이 다양한 시점에서 캡쳐된 VDB 스냅샷으로서 저장 및 수행하기에 충분한 방식으로 시간에 따라 저장되도록 히스토리 변경, 업데이트 또는 수정을 허용한다. 상기 VDB의 스냅샷으로 저장된 소스 데이터베이스로의 이러한 히스토리 변경은, 하나 이상의 목표(예를 들어, 개발) 환경에 따라 선택적으로 중복된다. 이전 시점에서 VDB의 카피로 복귀하는 이러한 프로세스는 VDB의 되감기 또는 롤백으로 언급된다.
VDB로 되감기 하는 일부 방법들은, 사용자-지정된 이전 시점으로부터 새로운 가상 데이터베이스를 (예를 들어, 상기 데이터베이스 스토리지 시스템 내 저장된 VDB의 스냅샷에 액세스함으로써) 생성하는 단계와, 사용자가 상기 새로운 VDB로 액세스하고 변경하도록 허용하는 단계를 포함한다. VDB를 되감기 하는 이러한 방법이 마주치는 문제점은, 원본 VDB의 논리 아이덴티티와 구별되는 새로운 논리 아이덴티티를 가진 새로운 VDB의 생성(예를 들어, 새로운 이름, 새로운 식별자, 및 모든 VDB 파일들 및 설정 파일들과 연관된 새로운 카피)이 저장 및 성능의 비효율로 이어진다는 점이다.
따라서, 일부 실시예들은 사용자-지정된 이전 시점에서 새로운 VDB의 생성을 요구하지 않고, (상기 이전 VDB 타임플로우와 동일한 데이터베이스 스토리지 시스템 또는 컨테이너 내) 원본 VDB와 연관된 새로운 타임플로우의 생성을 요구하는 데이터베이스를 롤백 하거나 되감는 방법을 제공한다. 이러한 방법은 되감기 포인트로부터 새로운 VDB를 생성하는 것을 포함하는 방법과 비교하여, 더 빠르고 저장 효율적인 VDB 되감기 동작으로 이어진다.
가상 데이터베이스 시스템
본 발명의 특정 실시예들에서, 특정 시점에서의 가상 데이터베이스(virtual database) 또는 생산 데이터베이스(production database)의 상태에 기초하여 하나 이상의 가상 데이터베이스가 생성된다. 이어, 상기 가상 데이터베이스는 개별적으로 액세스 및 원하는 대로 수정이 가능하다. 데이터베이스는 컴퓨터로 구현된 애플리케이션에 의해 사용하기 위한 컴퓨터 내 저장된 데이터를 포함한다. 데이터베이스 서버는, 상기 데이터베이스와 상호작용할 수 있고 데이터베이스 서비스를 제공하는, 예를 들어, 데이터베이스 내 저장된 상기 데이터에 액세스할 수 있는 컴퓨터 프로그램이다. 실시예들은, 라이브 생산 데이터베이스 대신 생산 데이터베이스의 클론 또는 생산 데이터베이스의 스토리지 레벨 스냅샷(storage level snapshot)을 이용하는 가상 데이터베이스를 생성한다. 가상 데이터베이스는 2009년 10월 21일에 출원되고, 미국 특허 제8,150,808호로서 등록된, 미국 특허 출원 제 12/603,541에서 설명되고, 각각은 그것의 전체로서 본 명세서에서 참조에 의해 통합된다.
일 실시예에서, 상기 생산 데이터베이스로부터의 정보는 주기적으로 등 다양한 시간에서 스토리지 시스템에 카피된다. 이는 이러한 다른 시점에 대한 상기 생산 데이터베이스와 연관된 데이터베이스 파일들의 복원을 가능하게 한다. 상기 정보들은 스토리지 시스템 내에서 효율적인 방식으로 관리될 수 있고, 정보의 카피는 필요할 때만 만들어진다. 예를 들어, 상기 데이터베이스의 일부가 이전에 카피된 버전으로부터 변하지 않는다면, 변하지 않은 부분은 카피될 필요가 없다. 한 시점에서 생성된 가상 데이터베이스는, 그 시점에서 이용 가능함에 따라 상기 데이터베이스의 정보를 포함하는 파일들의 세트로서 저장된다. 각 파일은 데이터 블록들을 참조하기 위한 데이터 구조들 및 데이터 블록들의 세트를 포함한다.
가상 데이터베이스는 상기 데이터베이스 서버가 요구됨에 따라, 이전 시점에서의 생산 데이터베이스의 상태에 대응하는 생산 데이터베이스에 대한 데이터베이스 파일들을 생성함으로써 데이터베이스 서버 상에 생성될 수 있다. 상기 가상 데이터베이스에 대응하는 파일들은, 가상 데이터베이스를 상기 스토리지 시스템 상에 저장된 적절한 데이터 블록들에 연결하는, 파일 공유 매커니즘을 이용하여 데이터베이스 서버를 이용 가능하도록 만든다. 상기 가상 데이터베이스를 데이터베이스 서버가 이용 가능하도록 만드는 프로세서는, 가상 데이터베이스를"공급(provisioning)"하는 것이라 불린다. 다수의 VDB들은 동일한 시점에서의 생산 데이터베이스의 상태에 기초하여 공급될 수 있다. 반면에, 상이한 VDB들은 상이한 생산 데이터베이스들 또는 동일한 데이터베이스들의 상이한 시점의 상태에 기초할 수 있다. 또한, VDB들은 다른 VDB들에 기초할 수 있다.
가상 데이터베이스가 공급되는 데이터베이스 서버는 상기 스토리지 시스템 상에 저장된 파일들로부터 읽거나 쓸 수 있다. 구체적으로, 데이터베이스 블록은 상기 대응하는 가상 데이터베이스 시스템(130)이 상기 데이터베이스 블록을 쓰지(write) 않고 읽기만 한 경우라면 공유된다. 일 실시예에서, 상기 가상 데이터베이스 매니저(375)는 필요한 경우에만 데이터베이스 블록들의 카피를 만든다. 예를 들어, 특정 데이터베이스 블록은 동일한 데이터베이스 블록으로부터 읽는 다수의 VDB들에 의해 공유될 수 있다. 그러나, 만약 가상 데이터베이스 시스템들(130) 중 하나가 상기 데이터베이스 블록에 쓰려고 하는 경우, 쓰기 동작이 데이터베이스 블록으로 하여금 가상 데이터베이스 시스템들(130)에 대응하는 VDB와 다른 VDB들만큼 상이하도록 하기 때문에, 상기 데이터베이스 블록의 독립한 카피가 만들어진다.
도 1은 어떻게 정보가 생산 데이터베이스로부터 데이터베이스 스토리지 시스템으로 카피되는지, 및 파일 공유 시스템을 이용하여 가상 데이터베이스로서 공급되는지에 대한 일 실시예를 도시한다. 이하에서 더 설명하겠지만, 상기 데이터베이스 스토리지 시스템(database storage system)(100)은 하나 이상의 생산 데이터베이스 시스템들(production database systems)(110)로부터 데이터베이스들과 연관된 데이터를 검색하고, 상기 데이터를 효율적인 방식으로 저장한다. 데이터베이스 관리자 사용자 인터페이스(140)는 데이터베이스 사용자가 상기 데이터베이스 스토리지 시스템(100)에 의해 지원되는 다양한 행동들을 수행할 수 있도록 한다.
상기 관리자 시스템(140)으로부터의 요청에 대응하여, 또는 미리 설정된 스케줄에 기초하여, 상기 데이터베이스 스토리지 시스템(100)은 데이터에 대한 요청(150)을 생산 데이터베이스 시스템(100)에 전송한다. 상기 생산 데이터베이스 시스템(110)은 데이터(160)의 스트림으로서 생산 데이터베이스에 저장된 정보를 전송함으로써 응답한다. 상기 데이터베이스 스토리지 시스템(100)은 상기 생산 데이터베이스 시스템(100)에 의해 전송된 데이터(160)를 수신하고, 상기 데이터를 저장한다. 상기 데이터베이스 스토리지 시스템(100)은, 예를 들어 변화된 데이터베이스 블록들의 버전을 유지하고 변화하지 않은 데이터베이스 블록들을 재사용함으로써, 정보를 효율적으로 저장한다.
가상 데이터베이스를 생성하기 위해, 상기 데이터베이스 스토리지 시스템(100)은 주어진 시점에서 상기 생산 데이터베이스 시스템(110)에 대응하는 정보를 나타내는 파일들을 생성한다. 상기 데이터베이스 스토리지 시스템(100)은 파일 공유 시스템(120)을 이용하여 상기 대응하는 파일들을 가상 데이터베이스 시스템(130)에 노출시킨다(170). 상기 가상 데이터베이스 시스템(130)은, 데이터베이스 스토리지 시스템(100)에 의해 노출된(170) 파일들과 동작할 수 있는 데이터베이스 서버를 구동한다. 그러므로, 상기 생산 데이터베이스의 가상 카피는, 가상 데이터베이스 시스템(130)을 위해 주어진 시점에 대해 저장 효율적인 방식으로 생성된다.
VDB들은 다양한 작업 흐름 시나리오에서 이용될 수 있다. 도 2는 일 실시예에 따른 가상 데이터베이스의 원격 공급을 나타내는 예시적인 작업 흐름 시나리오를 도시한다. 여기에는 데이터베이스 스토리지 시스템을 저장하는 두 사이트가 있다. 로컬 사이트(local site)(210a)는 소스 데이터베이스 스토리지 시스템(source database storage system)(230a)을 포함하고, 원격 사이트(remote site)(210b)는 목표 데이터베이스 스토리지 시스템(target database storage system)(230a)을 포함한다. 여기에는 데이터 스토어들(220)을 포함하는 하나 이상의 소스 데이터베이스 시스템들(215)이 있을 수 있다. 소스 데이터베이스 시스템(215a)는 데이터 스토어(220a)를 포함하고, 소스 데이터베이스 시스템(215b)은 데이터 스토어(220b)를 포함한다. 상기 소스 데이터베이스 시스템들(215)의 데이터 스토어들(220)에 대한 변화는, 상기 소스 스토리지 데이터베이스 시스템(100a)에 의해 주기적으로 수신되고, 상기 소스 데이터 스토어(230a)에 저장된다. 데이터베이스 시스템(240a)은 소스 데이터베이스 스토리지 시스템(100a) 안에 가상 데이터베이스들을 생성할 수 있고, VDB를 읽고/쓸 수 있다(260a)
상기 소스 데이터베이스 스토리지 시스템(100a) 내 데이터로의 변화를 설명하는 정보는, 상기 목표 데이터베이스 스토리지 시스템(100b)으로 전송된다(250). 이들은 상기 소스 데이터베이스 스토리지 시스템(100a)에서 상기 목표 스토리지 데이터베이스 시스템(100b)으로 데이터가 전송된 마지막 시점으로부터 상기 변화된 데이터 블록들을 포함한다. 상기 소스 데이터베이스 스토리지 시스템(100a) 내 데이터로의 변화는, 주기적으로 또는 미리 지정된 스케줄에 기초하여 전송될 수 있다(250). 데이터베이스 시스템(240b)는 상기 목표 데이터베이스 스토리지 시스템(100b) 내에 가상 데이터베이스들을 생성한다. 상기 가상 데이터베이스 시스템(240b)은 상기 VDB로부터 읽고/쓰는 것이 허용된다(260b).
시스템 구조
도 3은 생산 데이터베이스로부터 효율적인 정보의 카피 스토리지를 만들기 위해, 그리고 그 정보를 이용하는 하나 이상의 가상 데이터베이스를 공급하기 위해 적절한 시스템 환경을 도시하는 하이 레벨 블록 다이어그램을 나타낸다. 상기 시스템 환경은 데이터베이스 스토리지 시스템(100), 및 하나 이상의 가상 데이터베이스 시스템(130)을 포함한다. 도 3에 도시된 시스템들은 필요한 경우 네트워크를 통해 서로 통신할 수 있다. 도 3은 예를 들어, 생산 데이터베이스 시스템(110) 또는 관리자 시스템(140)에 이용되는 다른 시스템은 도시하지 않는다.
상기 데이터베이스 스토리지 시스템(100)은 상기 생산 데이터베이스 시스템(110)에서 이용 가능한 정보를 검색하고 저장한다. 상기 검색된 정보는 데이터베이스 내 저장된 데이터, 트랜잭션 로그 정보, 상기 데이터베이스와 관련된 메타데이터 정보, 상기 데이터베이스의 사용자와 관련된 정보 등으로 구성된 데이터베이스 블록들을 포함한다. 또한, 상기 검색된 정보는 상기 데이터베이스들과 연관된 설정 파일들을 포함할 수 있다. 예를 들어, 데이터베이스들은 상기 데이터베이스들과 연관된 초기화 파라미터들을 포함하는 다양한 설정 파라미터들을 특정하기 위해 판매자 특정 설정 파일들(vendor specific configuration)을 이용할 수 있다.
스토리지 시스템 데이터 스토어(storage system data store)(390) 내에 저장된 데이터는, 가상 데이터베이스 시스템(130)이 상기 생산 데이터베이스 시스템(100) 내 저장된 생산 데이터베이스의 카피로서 데이터를 취급하도록 허용하는 가상 데이터베이스 시스템(130)에 노출될 수 있다. 상기 데이터베이스 스토리지 시스템(100)은 포인트-인-타임 카피 매니저(point-in-time copy manager)(310), 트랜잭션 로그 매니저(transaction log manager)(320), 인터페이스 매니저(interface manager)(330), 스토리지 할당 매니저(storage allocation manager)(365), 파일 공유 매니저(file sharing manager)(370), 가상 데이터베이스 매니저(virtual database manager)(375), VDB 타임플로우 매니저(VDB Timeflow manager)(325), VDB 롤백 매니저(VDB rollback manager)(335), 및 스토리지 시스템 데이터 스토어(390)를 포함한다. 선택적인 설정으로, 상이하고/상이하거나 부가적인 모듈들이 데이터베이스 스토리지 시스템(100) 내에 포함될 수 있다.
상기 포인트-인-타임 카피 매니저(310)는, 생산 DB 데이터 스토어(350)에 저장된 데이터베이스의 포인트-인-타임 카피(또한 "PIT 카피"로 불리는)를 나타내는 정보를 검색하기 위해, 판매자 인터페이스 모듈(335)에 요청을 전송함으로써 생산 데이터베이스 시스템(110)과 상호작용한다. 상기 포인트-인-타임 카피 매니저(310)는 상기 생산 데이터베이스 시스템(110) 으로부터 획득한 데이터를 상기 스토리지 시스템 데이터 스토어(390) 내에 저장한다. 상기 포인트-인-타임 카피 매니저(310)에 의해 검색된 데이터는, 상기 생산 DB 데이터 스토어(350)로부터 카피되는 데이터베이스의 데이터베이스 블록(또는 페이지)에 대응한다. 정보 생산 DB 데이터 스토어(350)를 검색하기 위해 제1 PIT 카피가 요청한 이후에, 이어지는 PIT 카피는 이전 요청 이후 데이터베이스 내에서 변화한 데이터만을 검색할 필요가 있을 것이다. 제1 요청에서 수집된 상기 데이터는 제2 요청에서 수집된 데이터와 결합하여, 데이터가 제2 요청에 대해 생산 DB 데이터 스토어(350)로부터 검색되는 시점에 대응하는 데이터베이스의 카피를 복원하도록 할 수 있다.
상기 트랜잭션 로그 매니저(320)는 상기 생산 데이터베이스 시스템(110) 내 저장된 트랜잭션 로그의 일부를 검색하기 위한 요청을 생산 데이터베이스 시스템(110)으로 전송한다. 일부 실시예에서, 상기 트랜잭션 로그 매니저(320)로부터의 요청은 상기 판매자 인터페이스 모듈(335)로 전송된다. 상기 트랜잭션 로그 매니저(320)에 의해 상기 판매자 인터페이스 모듈(335)로부터 획득한 데이터는 상기 스토리지 시스템 데이터 스토어(390)에 저장된다. 일 실시예에서, 트랜잭션 로그에 대한 요청은, 상기 트랜잭션 로그에 대한 이전의 요청이 프로세스된 이후부터 상기 생산 데이터베이스 시스템(110) 내 트랜잭션 로그의 변화만을 검색한다. 상기 트랜잭션 로그 매니저(320)에 의해 검색된 트랜잭션 로그와 결합된 포인트-인-타임 카피 매니저(310)에 의해 검색된 데이터베이스 블록들은, 포인트-인-타임 카피가 만들어지는 과거의 시간에 대응하는, 생산 시스템(110) 내 데이터베이스의 카피를 복원하기 위해 이용될 수 있다.
상기 스토리지 할당 매니저(365)는 상기 생산 데이터베이스 시스템(110)으로부터 검색된 데이터를 저장하는 기능을 제공한다. 예를 들어, 상기 포인트-인-타임 카피 매니저(310)는, 상기 생산 데이터베이스 시스템(110)으로부터 검색된 데이터의 블록들을 저장하기 위하여 스토리지 할당 매니저의 APIs를 호출할 수 있다. 상기 스토리지 할당 매니저(365)는, 생산 데이터베이스 시스템(110)으로부터 획득할 수 있는 각 데이터의 블록의 다양한 버전을 기록한다. 주어진 시점에 대하여, 스토리지 할당 매니저(364)는 주어진 시점 이전에 획득한 데이터 블록의 최신 버전을 제공하도록 요청 받을 수 있다. 또한, 스토리지 할당 매니저(365)는 데이터 블록의 카피를 만드는 데 이용될 수 있다. 만약 데이터의 블록이 읽기-전용 목적으로 카피된다면, 스토리지 할당 매니저(365)는 존재하는 데이터 블록에의 참조 포인터를 유지하기에 충분한 스토리지만을 할당한다. 그러나, 만약 카피된 데이터 블록에 쓰기 위한 시도가 생긴다면, 스토리지 할당 매니저(365)는 원본 데이터 블록의 업데이트를 피하기 위해, 데이터 블록의 실제적인 카피를 만들기에 충분한 스토리지를 할당한다.
파일 공유 매니저(370)는 상기 스토리지 시스템 데이터 스토어(390) 내 저장된 파일들이 네트워크 상에서 데이터베이스 스토리지 시스템(100)과 연결될 수 있는 컴퓨터를 통하여 공유될 수 있도록 한다. 상기 파일 공유 매니저(370)는 파일들을 공유하기 위한 파일 공유 시스템(120)을 이용한다. 파일들을 공유하기 위한 시스템의 예시는 네트워크 파일 시스템(NFS)이다. 파일들을 공유하기 위한 시스템은 파이버 채널 스토리지 에어리어 네트워크(Fiber Channel Storage area networks; FC-SAN) 또는 네트워크 결합 스토리지(Network Attached Storage; NAS) 또는 이들의 결합 및 변형을 활용할 수 있다. 파일들을 공유하기 위한 상기 시스템은, 소형 컴퓨터 시스템 인터페이스(small computer system interface; SCSI) 프로토콜, 인터넷 소형 컴퓨터 시스템 인터페이스(internet small computer system interface; iSCSI0 프로토콜, 광섬유 채널 프로토콜 또는 다른 유사하고 관련된 프로토콜들에 기초할 수 있다. 일부 실시예들에서, 상기 데이터베이스 스토리지 시스템(100)은 논리 볼륨 매니저(logical volume manager)를 활용할 수 있다. 파일 공유 매니저(370)를 이용하여 스토리지 시스템 데이터 스토어(390) 내 저장된 파일을 공유하는 것은, 예를 들어, 가상 데이터베이스 시스템(130)과 같은 원격 컴퓨터가 상기 공유된 파일 내 액세스할 수 있도록 한다. 원격 시스템은 스토리지 시스템 데이터 스토어(390)에 의해 공유된 파일을 읽고 쓸 수 있다. 일 실시예에서, 파일들은 NTFS 또는 UNIX 파일 시스템(UFS)이라 불리는 WINDOWS 운영체제의 파일 시스템과 같은, 주어진 파일 시스템 디스크 레이아웃을 모방하는 포맷으로 조직된다.
가상 데이터베이스 매니저(375)는 가상 데이터베이스 시스템(130)을 위한 가상 데이터베이스의 생성에 대한 요청을 수신한다. 가상 데이터베이스의 생성에 대한 요청은, 관리자 시스템(140)을 이용하는 데이터베이스 관리자에 의해 전송될 수 있고, 생산 데이터베이스 시스템(110), 가상 데이터베이스 시스템(130)을 식별하며, 어떤 가상 데이터베이스가 생성될 필요가 있는가에 대응하는 과거 시점을 포함한다. 상기 가상 데이터베이스 매니저(375)는 생성 중인 가상 데이터베이스에 대응하는 필수적인 파일들을 생성하고, 가상 데이터베이스 시스템(130)과 상기 파일들을 공유한다. 가상 데이터베이스 시스템(130)을 위한 상기 데이터베이스 관리자는, 생산 데이터베이스 시스템(110)을 위한 데이터베이스 관리자와 상이할 수 있다.
VDB 타임플로우 매니저(325)는 상기 가상 데이터베이스에 대응하는 하나 이상의 타임플로우와 연관된 스토리지, 업데이트, 및 정보의 검색을 지속한다. VDB 타임플로우 매니저(325)는 타임플로우 중 하나 이상의 시점을 나타내는 정보, VDB 파일들의 업데이트 또는 수정과 연관된 트랜잭션 로그 및 시퀀스 체인지 넘버, 시간플로우 중 상기 시점의 서브셋에서 파일들의 스냅샷, 기타 등등을 저장한다. 일 실시예에 따르면, 타임 플로우의 표현은 소스 데이터베이스 또는 VDB 상에서 수행되는 변화를 설명하는 정보를 저장한다. 일 실시예에서, 상기 변화들은 저장 효율적인 방식으로 저장된다. 예를 들어, 상기 소스 데이터베이스 또는 VDB의 데이터의 다양한 포인트-인-타임 카피들 (또는 스냅샷)이 저장되고, 하나 이상의 데이터베이스 블록들은 상기 포인트-인-타임 카피를 통해 공유된다. 구체적으로, 변하지 않는 데이터베이스 블록들은 연속적인 포인트-인-타임 카피들을 통하여 공유되고, 업데이트된 데이터베이스 블록들은 업데이트가 이루어지기 전에 카피된다. 또한, 일 실시예에서, 상기 변화들을 설명하는 정보는 두 포인트-인-타임 카피의 캡쳐 기간에 만들어지는 변화를 나타내는 트랜잭션 로그를 포함한다.
VDB 롤백 매니저(335)는 타임플로우 중에서 사용자-지정된 포인트로의 VDB 되감기 또는 롤백하라는 사용자 요청을 수신한다. 상기 VDB 롤백 매니저(335)는, 상기 사용자-지정 시점에서 가상 데이터베이스의 표현을 검색하기 위하여, 상기 가상 데이터베이스에 대응하는 타임플로우 정보에 액세스하기 위해 VDB 타임플로우 매니저(325)에 접속한다.
가상 데이터베이스 시스템(130)은 데이터베이스 서버(360) 및 VDB 시스템 라이브러리(380)을 포함한다. 상기 데이터베이스 서버(360)는 데이터베이스 서버(345)와 기능 면에서 유사하고, 데이터 스토어(350) 상에 저장된 데이터를 관리하기 위한 애플리케이션 프로그래밍 인터페이스(APIs) 및 데이터베이스 서비스를 제공하는 컴퓨터 프로그램이다. 데이터베이스 서버(360)에 의해 관리되는 데이터는, 파일 공유 시스템(120)을 이용하여 데이터베이스 스토리지 시스템(100)에 의해 공유되는 스토리지 시스템 데이터 스토어(390) 상에 저장될 수 있다. VDB 시스템 라이브러리(380)는 데이터베이스 스토리지 시스템(100)에 의해 전송되는 프로세스 요청에 대한 프로그램 코드를 포함한다. 선택적인 설정으로, 상이하거나/상이한 부가적인 모듈들이 가상 데이터베이스 시스템(130) 내에 포함될 수 있다.
가상 데이터베이스의 포인트-인-타임 카피(여기서 스냅샷으로 언급되는)의 생성
도 4a는 VDB를 나타내는 읽기/쓰기 파일 구조를 생성하기 위해 어떻게 저장 효율적인 카피들(storage efficient copies)이 만들어지는지를 나타낸다. 도 4에 도시된 것처럼, 구조(structures)(410)는 생산 데이터베이스 시스템(110) 상에서 대응하는 파일들을 나타낸다. 구조들(Fi 및 Gi)은 각각 파일들(410) 내 저장된 데이터베이스 블록들을 나타낸다(Fi는 F1, F2, F3, … 를 말하고, 유사하게 Gi는 G1, G2, G3, … 를 말한다). 화살표(415)는 상이한 시점 Ti에서 PIT 카피를 만드는 프로세스를 나타낸다. 시각 T0에서 만들어진 제1 PIT 카피(430)는 데이터베이스의 모든 필수적인 데이터베이스 블록을 필요로 한다. 예를 들어, F1i는 블록 Fi의 카피를 나타내고, 블록 G1i는 블록 Gi의 카피를 나타낸다. 시각 T1에서의 상기 PIT 카피(435)는 마지막 PIT 카피 이후로 변화한 블록들만을 카피하고, 제1 PIT 카피와 비교하여 훨씬 더 적은 데이터를 카피할 수 있다. 유사하게, 시각 T2에서 다른 PIT 카피(440)는 이전의 PIT 카피(435) 이후로 변화한 데이터베이스 블록을 카피하도록 만들어진다.
상기 PIT 카피(440)는 도 4에서 도시된 설정을 위해 만들어진 마지막 PIT 카피고, 상기 VDB 파일 구조들(450)은 시점 T2에 대해 생성된다. 상기 구조(450)가 생성된 경우, 상기 블록들(V11, V12, …, V25)은 데이터를 저장하는 실제적인 데이터베이스 블록에의 포인터로서 구현될 수 있다. 예를 들어, V11은 블록 F1 내 정보를 나타내고, 상기 블록 F1이 시각 T1 및 T2에서 만들어진 카피가 업데이트되지 않는 동안에는, V11은 F11을 가리킨다. V12는 블록 F2 내 정보를 나타내고, F2가 시각 T1에서 업데이트된 이후로, V12는 블록 F22를 가리킨다. 유사하게, V13은 시각 T2에서 업데이트된 블록 F3에 대응하고, 블록 F33을 가리킨다.
도 4에 도시된 구조(450)는 읽기/쓰기 구조이므로, 상기 가상 데이터베이스 시스템(130)은 이러한 구조들로부터 읽을 수 있을 뿐 아니라 그들에 쓸 수 있도록 허용된다. 상기 가상 데이터베이스 시스템(130)이 블록 Vij에 쓰기를 하는 경우, 상기 데이터베이스 블록 및 대응하는 데이터베이스 블록의 데이터에 대해 스페이스가 할당되며, 할당된 스페이스에 데이터베이스 블록이 카피된다. 예를 들어, 만약 상기 가상 데이터베이스 시스템(130)이 블록 V11에 쓰기를 한다면, 스페이스가 할당될 것이고 블록 F11은 할당된 블록에 카피될 것이다. 그러므로, 상기 블록 F11의 원본 카피는 읽기 전용 카피로 유지되고, 상기 가상 데이터베이스 시스템(130)은 가상 데이터베이스 시스템(130)에 대해 구체적으로 생성된 적절한 데이터베이스 블록의 카피에 쓰기를 하도록 허용된다. 이는 대응하는 가상 데이터베이스 시스템(130)이 데이터베이스 블록에 쓰기를 하는 경우에만 데이터베이스 블록을 카피하는 데이터베이스 블록의 카피를 생성하기 위한 느린 메커니즘이라고 생각될 수 있다. 가상 데이터베이스 시스템(130)이 쓰는 블록의 수는 VDB와 연관된 블록의 전체 수의 작은 일부일 수 있기 때문에, 상기 구조는 VDB와 연관된 데이터를 높은 저장 효율적인 방식으로 저장한다. 가상 데이터베이스 시스템(130)에 의해 쓰이지 않은 데이터베이스 블록은, 특정 가상 데이터베이스 시스템(130)에 대해 카피되지 않고 몇몇의 가상 데이터베이스 시스템들에 의해 공유될 수 있다.
가상 데이터베이스의 포인트-인-타임 카피(또는 스냅샷)의 생성의 또 다른 예시로서, 도 4b는 일부 실시예들에 따라, 소스 데이터베이스의 변화에 대응하는 (타임 라인 또는 타임플로우 중 다양한 시점에서의) 가상 데이터베이스의 스냅샷을 캡쳐하는 프로세스를 도시한다.
도 4b에 도시된 것은 소스 데이터베이스(예를 들어, 도 4a를 참조하여 설명되는 생산 데이터베이스(110))에 기초한 데이터베이스 블록 내 변화 및 타임플로우 중 하나 이상의 시점에서 캡쳐된 스냅샷 내 대응하는 변화를 보여주는 타임 라인에 따른 시간 경과이다. 도 4a를 참조로 설명되는 것처럼, 상기 소스 데이터베이스의 특정 블록 내 변화 또는 업데이트는 데이터베이스 저장 시스템(100) 내 저장된 대응하는 데이터베이스 블록 내 변화로 이어진다. 역으로, 업데이트 또는 수정되지 않은 소스 데이터베이스의 데이터베이스 블록에 대응하는 데이터베이스 스토리지 시스템(100) 내 저장된 데이터베이스 블록들은 스스로 수정되거나 업데이트되지 않는다.
따라서, 도 4b 내 타임플로우에서 도시된 것처럼, 스냅샷(예를 들어, 스냅샷 1)은 시각 T0에서 캡쳐된다. 시각 T0 또는 T0 이전에(예를 들어, 스냅샷 바로 이전의 캡쳐 다음에), 표현된 소스 데이터베이스 블록들(예를 들어, 소스 데이터베이스 블록(460-a)의 도시)은 업데이트되거나 수정된다. 결과적으로, 상기 데이터베이스 스토리지 시스템은 수정된 소스 데이터베이스 블록들을 수신하고, 그들을 저장한다(도 4b에 도시된 것처럼); 그러므로, 시각 T0에서 캡쳐된 스냅샷 1은, 스냅샷 1 즉시 이전의 스냅샷 이후에 발생한 소스 데이터베이스 변화에 대응하는 변화를 반영한다.
이후에, 도 4b의 타임플로우에 도시된 것처럼 스냅샷 2가 시각 T1에서 캡쳐된다. 시각 T0 및 시각 T1 사이에서 수정되거나 업데이트된 소스 데이터베이스 블록들은 표현된 바와 같다(예를 들어, 소스 데이터베이스 블록(460-b)의 도시); 상기 데이터베이스 스토리지 시스템(100)은 시각 T1에서 캡쳐된 스냅샷 2에 반영된 것처럼, 수정된 소스 데이터베이스 블록에 대응하는 데이터베이스 블록을 수신하고 저장한다.
시각 T0 및 시각 T1 사이에 발생한 VDB에의 수정은, 시각 T0 및 시각 T1 사이의 트랜잭션 로그(470-a) 내 반영되어 있다. 도 3을 참조로 하여 상기에서 설명된 바와 같이, 트랜잭션 로그는 스냅샷이 캡쳐되는 시간 사이(예를 들어, 본 예시에서는 시각 T0 및 시각 T1 사이)의 시점에 대응하는 소스 데이터베이스의 카피를 복원하기 위해 이용될 수 있다.
나아가, 도 4b에 도시된 타임플로우 중, 스냅샷 2는 시각 T1에서 캡쳐된다. 시각 T1 및 T2 사이에 수정되거나 업데이트된 소스 데이터베이스 블록들은 표현된 바와 같다(예를 들어, 소스 데이터베이스 블록(460-c)의 도시); 수정된 소스 데이터베이스 블록들에 대응하는 VDB 파일들은 업데이트되거나 수정되고, 시각 T2에서 캡쳐된 VDB 스냅샷 3에 반영된다. 시각 T1 및 시각 T2 사이에서 발생한 VDB에의 수정은, 시각 T0 및 시각 T1 사이의 트랜잭션 로그(470-b)에 반영되고, 시각 T1 및 시각 T2 사이의 시점에 대응하는 소스 데이터베이스의 카피를 복원하기 위해 이용될 수 있다.
결과적으로, 소스 데이터베이스 블록들(예를 들어, 생산 데이터베이스 내 데이터베이스 블록들)의 히스토리의 변화, 업데이트 또는 수정은 스토리지 및 퍼포먼스 효율적인 방식으로 시간에 따라 모니터 및 저장될 수 있고, 이러한 변화들은 원격 목표(예를 들어, 개발) 환경에 따라 복제된다. 또한, 상기 타임플로우는 가상 데이터베이스에 대해 만들어진 변화를 나타내기 위해 이용된다.
가상 데이터베이스의 되감기 또는 롤백
도 5a는 일 실시예에 따라, 사용자-지정 시점으로 가상 데이터베이스를 되감기 하는 방법을 도시한다. 도 5a에 도시된 것처럼, 가상 데이터베이스(예를 들어, VDB 1)는 가상 데이터베이스와 연관된 타임플로우(예를 들어, 타임플로우 1) 중 시점에서 소스 데이터베이스로의 업데이트에 기초한 업데이트 또는 수정을 거치게 된다(도 4a-4b를 참조하여 설명된 것처럼). 도 4a-4b를 참조하여 설명된 것처럼, 가상 데이터베이스 및 상기 가상 데이터베이스로의 변화의 스냅샷(연관된 소스 데이터베이스 내 변화에 대응하는)은 캡쳐되고 타임플로우 1 중 시점들의 서브셋(예를 들어, T0, T1, 및 T2)에 저장된다. 일부 실시예들에서, 가상 데이터베이스로의 변화를 나타내는 타임플로우, 예를 들어, 상기 가상 데이터베이스 및 트랜잭션 로그와 연관된 스냅샷들은 가상 데이터베이스 컨테이너(예를 들어, 도 5a에 도시된 컨테이너 1) 내 저장된다.
일부 실시예들에서, 컨테이너는 데이터베이스 스토리지 시스템, 예를 들어 VDB 또는 소스 데이터베이스를 나타내는 d소스(dSource) 내 데이터베이스의 표현을 저장한다. 컨테이너는 VDB 또는 d소스와 연관된 하나 이상의 타임플로우를 포함할 수 있다. 따라서, 상기 컨테이너는 VDB 또는 d소스와 연관된 스냅샷, 트랜잭션 로그, 및 메타데이터를 나타낸다. 일부 실시예들에서, 타임플로우는 한 주기에 걸친(예를 들어, 트랜잭션 로그를 이용하여 스냅샷 간의 변화 및 스냅샷을 저장함으로써) 데이터 소스(예를 들어, 외부 시스템 도는 다른 VDB 내 저장된 소스 데이터베이스)의 변화를 나타낸다. 일부 실시예들에서, VDB는 시간을 역행할 수 있고(예를 들어, VDB를 이전 상태로 변화시키기 위해 되감기), 또는 시간을 앞으로 이동할 수 있으며(예를 들어, VDB의 상태를 상기 VDB를 되감기 하기 위해 이용되는 상태와 비교하여 타임플로우 중 더 최근의 상태로 수정하고; 선택적으로 VDB 상태를 소스 데이터베이스에 대응하는 더 최근의 상태로 업데이트하기 위해 재생하는), 다수의 타임플로우를 컨테이너 내에 저장할 수 있다. 각 타임플로우는 VDB의 최초 상태 및 상기 VDB 상태가 최초 상태로 업데이트 된 이후 생긴 변화의 표현과 연관된다.
도 5a에 도시된 것은 일부 실시예에 따라 VDB를 되감기 하는 제1 방법이다. 제1 방법에 따라, 가상 데이터베이스를 현재 시점 이전의 시점(예를 들어, 도5a 내 도시된 롤백 지점 TRB로)으로 롤백 또는 되감기 하는 사용자의 요청에 응하여, 상기 데이터베이스 스토리지 시스템은 원하는 롤백 지점에서의 원본 VDB에 기초하여 원본 VDB로부터 구별되는(예를 들어, VDB 1과 구별되는) 새로운 VDB를 생성함으로써 VDB 롤백을 시뮬레이션 한다. 즉, 도 5a에 도시된 예에서, 가상 데이터베이스를 롤백하는 것은, TRB에서의 VDB 1에 기초한 롤백 지점 TRB에서 VDB 1과 구별되는 VDB 2를 생성함으로써 시뮬레이션 된다. VDB 1의 스냅샷이 상기 롤백 지점에 존재하는 경우에, VDB 2는 TRB에서의 VDB의 스냅샷에 기초하여 생성된다. 반면에, 만약 VDB 1의 스냅샷이 롤백 지점 TRB에 존재하지 않는다면(예를 들어, 도 5a에 도시된 것처럼), 롤백 지점에서 VDB 1을 재 생성하기 위하여, 중간 트랜잭션 로그(예를 들어, T1 및 TRB)를 적용함으로써 상기 롤백 지점의 바로 직전인 VDB 1(예를 들어, T1에서 VDB 1 스냅샷 2)의 스냅샷에 기초하여 VDB 2가 생성된다.
이를 위해, 일부 실시예들에서, 상기 가상 데이터베이스를 롤백하는 제1 방법은 새로운 VDB 컨테이너(예를 들어, 컨테이너 2) 생성하는 것, 가장 가까운 이전 스냅샷에서의 이전 VDB에 기초하여 새로운 VDB를 생성하는 것(예를 들어 스냅샷 2에서의 VDB 1에 기초하여 VDB 2를 생성하는 것), 및 상기 롤백에서 시작하는 새로운 타임플로우(예를 들어, 타임플로우 2)를 생성하는 것을 포함한다. 이러한 실시예들에서, 상기 새로운 VDB(예를 들어, VDB 2)는 원본 VDB(예를 들어, VDB 1)의 논리적 아이덴티티(logical identity)와 구별되는 새로운 논리적 아이덴티티(예를 들어, 모든 VDB 파일들 및 연관된 설정 파일들의 새 이름, 새 식별자, 및 새 카피)를 가진다.
도 5b는 일 실시예에 따라서 가상 데이터베이스를 사용자-지정 시점으로 되감기 하는 다른 방법을 도시한다. 상기 데이터베이스를 되감는 이러한 방법은, 현재의 VDB의 상태를 이전 시점에 발생한 VDB의 상태로 업데이트하는 것을 포함한다. 따라서, 상기 VDB의 컨테이너는 VDB의 상태를 변화시키기 위해 새로운 논리적 아이덴티티를 가진 새로운 VDB를 생성할 필요를 제거함으로써 수정된다. VDB의 상태는, 상기 VDB가 이전 시점에 대응하는 데이터 블록을 가리키도록 나타내는 구조를 수정함으로써 변화한다. 따라서, 일부 실시예들에서 VDB를 되감기 위한 제2 방법(예를 들어, 도 5b를 참조하여 아래에서 설명되는)은, 상기 제1 방법(예를 들어, 도 5a를 참조하여 설명되는)과 비교하여 가상 데이터베이스를 되감는 더 저장 및 시간 효율적인 방법을 제공한다.
도 5b에 도시된 것처럼, 일부 실시예들에서 가상 데이터베이스(예를 들어, VDB 1)는 상기 가상 데이터베이스와 연관된 타임플로우(예를 들어, 타임플로우 1) 중 시점에서 소스 데이터베이스로의 업데이트에 기초하여 수정 또는 업데이트를 거치게 된다. (연관된 소스 데이터베이스 내 변화에 대응하는) 가상 데이터베이스로의 변화 및 스냅샷이 캡쳐되고 타임플로우 1 중 시점들의 서브셋(예를 들어, T0, T1, 및 T2)에 저장된다. 일부 실시예들에서, (상기 소스 데이터베이스 내 변화에 대응하는) 상기 가상 데이터베이스와 연관된 스냅샷 및 상기 타임플로우에 대응하는 정보는, 가상 데이터베이스 컨테이너(예를 들어, 도 5b 내 도시된 VDB 컨테이너) 내에 저장된다.
도 5b에 도시된 것처럼, 상기 VDB를 이전 시점으로 되감기 하거나 롤백하는 사용자 요청에 응하여, 제2 방법에서는, 상기 데이터베이스 스토리지 시스템은 동일한 컨테이너 내에서 동일한 VDB를 동일한 이름 및 식별자로서 유지하고, 또한 동일한 컨테이너 내에서 새로운 타임플로우(예를 들어, 타임플로우 2, 여기서는 선택적으로 '현재의' 타임플로우로 언급되는)를 생성하고, 상기 새로운 타임플로우로부터 동일한 VDB(예를 들어, VDB 1)를 공급한다.
이러한 목표를 위해, 일부 실시예들에서, 상기 데이터베이스 스토리지 시스템은 임시적으로 VDB 1을 폐쇄하고(예를 들어, VDB 1로의 사용자 액세스를 중단하고), 동일한 컨테이너 내에서 새로운 타임플로우(예를 들어, 컨테이너 1 내의 타임플로우 2)를 생성하며, 새로운 타임플로우에 목적지 스토리지를 가리키고, 새로운 타임플로우로부터(예를 들어, 타임플로우 2로부터) 공급되는 동일한 원본 VDB(예를 들어, VDB 1)를 가져온다.
다시 말해, 데이터베이스 스토리지 시스템은 롤백 이전의 동일한 목적지에서 동일한 VDB 파일들(예를 들어, VDB 1에 대응하는 파일들)을 마운트하지만, 식별된 시점에 대응하는 데이터베이스 블록들의 세트를 가리킨다. 상기 VDB의 컨테이너는 새로운 타임플로우(즉, 타임플로우 1보다는 '현재의' 타임플로우로 만들어진 타임플로우 2)를 포함하고, 새로운 타임플로우(타임플로우 2) 중에서 VDB로의 변화를 추적한다(예를 들어, 시각 T3에서 스냅샷 4 및 시각 T4에서 스냅샷 5, 및 스냅샷들 간의 트랜잭션 로그 파일들과 같은 VDB 스냅샷을 캡쳐 또는 유지함으로써).
도 6은 일부 실시예들에 따라서, 가상 데이터베이스 롤백(또는 되감기)의 사례에서 타임플로우의 사용자 가시도(예를 들어, 그래픽 사용자 인터페이스에서)를 도시한다. VDB를 되감기 하는 제2 방법(예를 들어, 도 5b를 참조하여 상기에서 설명되는 것처럼)에 관하여, 일부 실시예들에서, 오래되거나 부모 타임플로우(parent timeflow)(예를 들어, 도 5b 및 도 6에 도시된 타임플로우 1)의 적어도 일부는 그래픽 사용자 인터페이스에서 사용자에게 보이지 않도록 만들어진다. 구체적으로, 상기 롤백 지점에 이어지는 오래되거나 부모 타임플로우의 일부가 사용자에게 보이지 않도록 만들어진다. 예를 들어, 도 6을 참조하면, TRB 이후 부모 타임플로우(예를 들어, 타임플로우 1)의 일부가 그래픽 사용자 인터페이스에서 사용자에게 보이지 않게 만들어진다. 결과적으로, 일부 실시예들에서, 상기 부모 타임플로우 상 롤백 지점 이후 캡쳐된 VDB의 스냅샷 및 트랜잭션 로그 파일들(예를 들어, 타임플로우 1 중 시각 T2에서 캡쳐된 스냅샷 3)은 사용자로부터 숨겨지거나 감추어져 있다. 다른 실시예들에서, VDB와 연관된 모든 타임플로우들이 사용자에게 제공되고, 사용자는 VDB의 상태를 타임플로우 중 임의의 상태로 수정하는 것이 허용된다.
반면에, 상기 새로운 타임플로우(예를 들어, 도 6에 도시된 타임플로우 2)는 '현재의' 타임플로우로 지정된다. 상기 롤백 지점 이후 발생하는 VDB로의 수정 및 업데이트(예를 들어, 소스 데이터베이스의 데이터베이스 블록으로의 변화 때문에)는 새로운 또는 현재의 타임플로우(예를 들어, 시각 T3에서 캡쳐된 스냅샷 4) 중 동일한 컨테이너(예를 들어, 컨테이너 1) 내에 저장된다.
상기 부모 타임플로우(parent timeflow) 상에서 공유된 원형 변화(ancestor changes)(예를 들어, 롤백 지점 이전의 부모 타임플로우 상 변화 또는 업데이트)는 사용자에게 보여지고, 선택적으로, 현재의 타임플로우의 일부에 나타난다. 예를 들어, 상기 롤백 지점 이전의 트랜잭션 로그 파일들 및 VDB 스냅샷으로 캡쳐된 롤백 지점 이전의 부모 타임플로우(예를 들어, 시각 T0에서 스냅샷 1 및 시각 T1에서 스냅샷 2) 중 VDB로 만들어진 변화 또는 업데이트가 사용자에게 보여질 수 있다.
도 7은 일부 실시예들에 의한, 타임플로우를 따라 가상 데이터베이스를 뒤로(예를 들어, 롤백 또는 되감기), 앞으로(빨리 감기) 이동하는 프로세스를 도시한다. 일부 실시예들에서, 가상 데이터베이스를 되감기 하는 제2 방법(예를 들어, 도 5b를 참조하여 설명된)은 사용자가 저장 및 시간 효율적인 방식으로 현재 또는 이전의 타임플로우 중 임의의 시점으로 뒤로뿐만 아니라 앞으로 이동할 수 있도록 하는 추가적인 이점이 있다. 특수한 경우로서, 일부 실시예들에서, 사용자는 되감기를 수행하기에 바로 앞서, 각 타임플로우에서 새로운 타임플로우를 시작하면서 VDB를 각각의 시점으로 이동시킴으로써, 이전의 VDB 되감기를 효율적으로 원상 복귀할 수 있도록 한다.
따라서, 사용자가 현재 또는 이전의 타임플로우 중 임의의 시점으로 VDB를 효율적으로 뒤로, 앞으로 이동시킬 수 있도록 하기 위해서, 상기 데이터베이스 스토리지 시스템은 상기 VDB(예를 들어, 동일한 컨테이너에서)와 연관된 (스냅샷 사이의 VDB 업데이트 및 수정의) 트랜잭션 로그 파일들 및 모든 스냅샷뿐만 아니라 모든 (현재 및 이전의)타임플로우를 저장하고 세이브한다. 결과적으로, 상기 데이터베이스 스토리지 시스템은 사용자가 VDB를 저장된 임의의 타임플로우 중 임의의 시점으로 롤백 또는 앞으로 이동시킬 수 있도록 한다(예를 들어, 도 4b 및 도 5b를 참조하여 설명되는 것처럼, 스냅샷, 및 선택적으로, 컨테이너에 저장된 트랜잭션 로그파일에 액세스함으로써).
예를 들어, 도 7에 도시된 것처럼, 타임플로우 1은 시간에 따라 VDB 1로의 지속적인 변화 및 업데이트의 히스토리를 기록한다. 스냅샷 1, 스냅샷 2, 및 스냅샷 3은 타임플로우 1에 따른 시점에서 캡쳐된다(예를 들어, 시각 T0, 시각 T1, 및 시각 T3).
타임플로우 1 중 시각 T2 이후의 시점에서, 타임플로우 1 중 롤백 지점 1로 VDB를 롤백하는 사용자 요청에 응하여, 상기 데이터베이스 스토리지 시스템은 롤백 지점 1에서의 VDB 1의 표현을 획득하고(예를 들어, 도 5b를 참조하여 설명된 것처럼), 롤백 지점 1에서 시작하는 새로운 타임플로우(타임플로우 2)를 생성한다. 데이터베이스 스토리지 시스템은 타임플로우 2 중 롤백 지점 1 뒤에 이어지는 VDB에의 변화 및 업데이트를 추적한다. 따라서, 스냅샷 4 및 스냅샷 4는 타임플로우 2 중의 시점(예를 들어, 시각 T3 및 시각 T4)에서 캡쳐된다. 컨테이너 1은 이전의 타임플로우(예를 들어, 타임플로우 1) 및 연관된 스냅샷들(예를 들어, 스냅샷 1, 스냅샷 2, 및 스냅샷 3은 타임플로우 1을 따라 캡쳐된다) 및 트랜잭션 로그를 저장하고 세이브한다.
유사하게, 롤백 지점 2로 롤백하는 사용자 요청에 응하여, 데이터베이스 스토리지 시스템은 새로운 타임플로우(타임플로우 3)를 생성하고, (롤백 지점 2로부터 시작하는) 타임플로우 3중 VDB 1에의 변화 및 업데이트를 (스냅샷 및 트랜잭션 로그와 함께) 저장하고 세이브한다. 데이터베이스 스토리지 시스템(100)은 컨테이너 1 내 현재 및 이전의 타임플로우, 스냅샷, 트랜잭션 로그를 저장한다.
나아가, 유사한 라인을 따라, VDB 1을 롤백 지점 3으로 롤백하는 사용자 요청에 응하여, 데이터베이스 스토리지 시스템(100)은 새로운 타임플로우(타임플로우 4)를 생성하고, (롤백 지점 3에서 시작하는) 타임플로우 4 중 VDB 1에의 또 다른 업데이트 및 변화를 (스냅샷 및 트랜잭션 로그와 함께) 저장한다. 데이터베이스 스토리지 시스템은 컨테이너 1 내 현재 및 이전의 타임플로우들(타임플로우 1, 타임플로우 2, 타임플로우 3, 및 타임플로우 4), 스냅샷, 및 트랜잭션 로그를 저장한다.
도 7은 타임플로우 1 중 롤백 지점에의 VDB의 롤백을 도시하지만, 실질적으로, 데이터베이스 스토리지 시스템은 상기 VDB를 상기 컨테이너 내 저장된 임의의 이전 또는 현재의 타임플로우들(예를 들어, 타임플로우 1, 타임플로우 2, 타임플로우 3, 및 타임플로우 4) 중 하나 이상의 롤백 지점들로 롤백 하도록 구성된다.
도 8은 일부 실시예들에 따라, 가상 데이터베이스 롤백의 시스템 변경 넘버(SCNs; system change numbers) 및 실시간 클락 내 변화를 도시한다. 일부 실시예들에서, 상기 데이터베이스 스토리지 시스템(100)은 타임플로우에 따른 VDB로의 변화 및 업데이트를 기록하기 위해 시스템 변경 넘버(SCNs) 또는 카운터를 유지한다. 따라서, 시스템 변경 넘버는 타임플로우 진행에 따라 증가한다. 유사하게, 일부 실시예들에서, 상기 VDB에의 변화 또는 업데이트의 시간에 대응하는 실시간 값들은, 변화 또는 업데이트에 대한 SCNs와 동시에 저장 및 기록된다. 예를 들어, 도 8에 도시된 것처럼, 타임플로우 1 중에서, 시스템 변경 넘버(SCNs)는 증가하거나 실시간 1 PM에서 (스냅샷 1에 대응하는) SCN 100으로부터, 실시간 2 PM에서 (스냅샷 2에 대응하는) SCN 200으로, 실시간 3 PM에서 (스냅샷 3에 대응하는) SCN 300으로 증가한다.
VDB 롤백 지점에서, 데이터베이스 스토리지 시스템(100)은 롤백 지점에서 시작하는 새로운 타임플로우를 생성한다; 데이터베이스 스토리지 시스템은, 상기 시스템 변경 넘버(SCN)를 롤백 지점에서 그 값보다 미미하게 더 큰 값(예를 들어, 다음 더 큰 상수 값)으로 리셋한다(예를 들어, 현재의 값에 비해 감소하거나 상기 롤백 즉시 이전의 값). 일부 실시예들에서, 상기 VDB에의 변화 또는 업데이트의 시간에 대응하는 상기 SCN 값 및 실시간 값은 지속적으로 증가하고 VDB 롤백 지점에서 리셋되지 않는다.
예를 들어, 도 8에 도시된 것처럼, 타임플로우 1 또는 부모 타임플로우를 참조하여, 상기 SCN은 실시간 3:00 PM에서 롤백 이전의 300 값을 가진다. VDB가 롤백 지점 TRB 로 롤백 된 직후에, 현재의 타임플로우(예를 들어, 타임플로우 2)가 생성되자마자, 상기 SCN 값은 201 값(TRB 에서 SCN 값인 200 다음의 높은 상수)으로 감소하지만, 실시간은 지속적으로 증가하고(예를 들어, 4:00 PM으로 증가) 뒤로 리셋되지 않는다. 일부 실시예들에서, 동일한 시스템 변경 넘버를 가진 트랜잭션 로그는, 리셋 로그를 개시함으로써(예를 들어, 새로운 VDB의 생애(incarnation)를 생성함으로써) 구별된다.
도 9a 및 9b는 본 발명의 일 실시예에 따라, 데이터베이스 스토리지 시스템 내 데이터베이스 기반구조 객체를 삭제하기 위한 프로세스(900)의 플로우차트를 도시한다. 도 9a에 도시된 것처럼, 데이터베이스 스토리지 시스템(100)은 목표 서버에서 가상 데이터베이스(VDB)를 제공하고(910), 상기 VDB는 다음을 가진다: 컨테이너(예를 들어, 도 5b에 도시된 컨테이너)에 저장된 제1 타임플로우(예를 들어, 도 5b에 도시된 타임플로우 1), 상기 제1 타임플로우 중 대응하는 복수의 시간 값에서 촬영된 복수의 스냅샷들(예를 들어, 도 5b를 참조하여 설명된 것처럼 T0에서 스냅샷 1, T1에서 스냅샷 2, T2에서 스냅샷 3), 및 대응하는 스냅샷들 사이의 변화를 기술하는 각각의 트랜잭션 로그들(예를 들어, 시각 T0 및 시각 T1 사이의 트랜잭션 로그 470-a).
데이터베이스 스토리지 시스템(100)은 상기 제1 타임플로우 중 사용자가 지정한 값에서 각 VDB의 표현(예를 들어, 도 5b에 도시된 것처럼 타임플로우 1 중 롤백 시각 TRB 에서의 VDB 1의 표현)를 검색하기 위하여 사용자로부터 요청을 획득한다(915).
상기 사용자-요청에 응하여, 일부 실시예들에서는, 데이터베이스 스토리지 시스템(100)이 일시적으로 각 VDB로의 사용자-액세스를 중지한다(920). 데이터베이스 스토리지 시스템(100)은, 상기 사용자-지정 시간 값이 제1 시간플로우 중의 각 스냅샷 시간 값(즉, 포인트-인-타임 카피가 만들어진 시점)에 대응하는지를 결정한다(925).
상기 사용자-지정 시간 값이 상기 제1 타임플로우 중의 각 스냅샷 시간 값에 대응하는지의 결정에 대응하여, 데이터베이스 스토리지 시스템(100)은 사용자-지정 시간 값에서 VDB의 표현을 획득하기 위해, 각 스냅샷 시간 값에서의 각 VDB의 스냅샷(예를 들어, 도 8에 도시된 것처럼 시각 TRB 에서 VDB 1 스냅샷 2)을 복제한다(930). 상기 사용자-지정 시간 값이 제1 타임플로우 중의 각 스냅샷 시간 값에 대응하지 않는다는 결정에 대응하여, 데이터베이스 스토리지 시스템(100)은 사용자-지정 시간 값 바로 이전의 각 스냅샷 시간 값에서의 각 VDB의 스냅샷(예를 들어, 도 5b에 도시된 것처럼, 롤백 지점 TRB 바로 이전의 시각 T1에서의 VDB 1 스냅샷 2을 복제한다(940). 이어, 상기 데이터베이스 스토리지 시스템(100)은, 상기 사용자-지정 시간 값(예를 들어, 도 5b에 도시된 것처럼, 시각 T1과 롤백 포인트 TRB 사이의 트랜잭션 로그)에서의 VDB에 대한 데이터 블록의 표현을 획득하기 위해, 각 스냅샷 시간 값에서부터 사용자-지정 시간 값까지 트랜잭션 로그를 스냅샷 클론에 적용한다. 이는 상기 데이터베이스 스토리지 시스템(100)이 사용자 지정 시간 값에서(예를 들어, 도 5b에 도시된 롤백 지점 TRB에서) 상기 VDB의 표현을 획득할 수 있도록 한다.
데이터베이스 스토리지 시스템(100)은 각 컨테이너 내 제2 타임플로우(예를 들어, 도 5b에 도시된 컨테이너 1 내 타임플로우)를 생성하고(960), 제2 타임플로우는 사용자-지정 시간 값(예를 들어, 도 5b에 도시된 시간 값 TRB)에서 시작한다. 데이터베이스 스토리지 시스템(100)은 상기 제2 타임플로우를 각 VDB와 연관시킨다(970). 데이터베이스 스토리지 시스템(100)은 각 목적지를 제2 타임플로우에 포인팅한다(980). 데이터베이스 스토리지 시스템(100)은 제2 타임플로우 중 각 목적지에서 각 VDB를 가져오고 마운트 한다(990).
도 10a 내지 10g는 일부 실시예들에 따라, 가상 데이터베이스 스냅샷을 검색하고, VDB 타임플로우와 상호작용하고, 가상 데이터베이스 되감기(또는 롤백)를 수행하기 위한 그래픽 사용자 인터페이스의 예를 포함한다.
도 10a는 일부 실시예들에 따라, 하나 이상의 스냅샷 카드(1002)(예를 들어, 스냅샷 시각 및 시스템 변경 넘버 또는 SCN을 디스플레이 하는)를 포함하는 그래픽 사용자 인터페이스의 예를 도시한다. 도 10a의 그래픽 사용자 인터페이스는, 일부 실시예들에 따라 VDB 되감기 또는 롤백을 가능하게 하거나 개시하는 사용자 인터랙티브 아이콘(예를 들어, 되감기 버튼 1004)를 더 포함한다.
도 10b는 일부 실시예들에 따라, 스냅샷 카드들 사이의 타임라인(1006)의 디스플레이를 포함하는 그래픽 사용자 인터페이스의 예를 도시한다. 일부 실시예들에서, 복수의 타임라인들이 디스플레이될 수 있고, 한 타임라인은 상기 VDB의 각 타임플로우에 대응한다. 사용자는 VDB를 되감기를 원하는 상태인지 지정하기 위해, 임의의 타임플로우 및 상기 타임플로우의 포인트-인-타임을 선택할 수 있다.
도 10c 내지 10d는 일부 실시예들에 따라, 스냅샷 카드들 사이의 사용자가 선택한 지점들을 포함한 그래픽 사용자 인터페이스의 예를 도시하고, 시스템 변경 넘버 또는 SCNs(예를 들어, 1008-a, 도 10c) 및 실시간 값(예를 들어, 1008-b, 도 10d)에 기초할 수 있다.
도 10e 내지 10g는 일부 실시예들에 따라, VDB 되감기 요청에 응하여 디스플레이 되는 인터페이스(1010-a, 도 10e; 1010-b, 도 10f)를 포함하는 그래픽 사용자 인터페이스의 예를 도시한다. 도 10e는 사용자에게 되감기 동작에 대한 확인을 요청하는 사용자 인터페이스를 나타낸다. 만약 사용자가 확인 화면 상 "예"를 선택하면, 데이터베이스 스토리지 시스템(100)은 되감기 동작을 진행한다. 도 10f는 데이터베이스 스토리지 시스템(100)이 사용자에게 자격, 예를 들면 사용자 이름 및 패스워드를 제공하도록 요청하는 것을 도시하는 사용자 인터페이스를 나타낸다. 이는 만약 사용자가 재생(refresh) 또는 되감기 동작을 수행하도록 자격이 부여되었다면, 데이터베이스 스토리지 시스템(100)이 이를 검증할 수 있도록 한다. 도 10g는 사용자가 VDB 메타데이터의 수정, 예를 들어, 프리스크립트(prescript)(1030), 또는 포스트스크립트(postscript)(1035)가 VDB의 되감기/재생 이전 및 이후에 실행되도록 지정할 수 있도록 하는 사용자 인터페이스를 나타낸다. 일 실시예에서, 상기 프리스크립트는 VDB와 연관된 목표 데이터베이스 서버의 임의의 진행을 중지시킬 수 있고, 상기 포스트 스크립트는 목표 데이터베이스 서버의 프로세스를 재시작할 수 있다.
도 10a 내지 10g에 도시된 것과 유사한, 소스 데이터베이스의 상태에 기초하여 사용자가 VDB를 재생할 수 있도록 하는 사용자 인터페이스가 도시되어 있다. 상기 소스 데이터베이스는 그 자체로 생산 데이터베이스 시스템(110) 또는 다른 VDB가 될 수 있다. 이에 따라, 상기 소스 데이터베이스의 타임플로우가 디스플레이 되고, 상기 VDB가 소스 데이터베이스의 더 최근 시점으로 재생 될 수 있도록 한다.
추가 구성에 관한 고려사항
본 명세서에 걸쳐서, 복수의 예가 단일 예로서 설명된 구성, 동작 또는 구조를 구현할 수 있다. 하나 이상의 방법 중 개별 동작이 분리된 동작으로서 예시 및 설명되지만, 하나 이상의 개별 동작이 동시에 수행될 수 있고, 그 동작이 예시된 순서로 수행되는 것을 전혀 요구하지 않는다. 예시된 구성에서 분리된 구성으로서 제시된 구조 및 기능성이 결합된 구조 또는 구성으로서 구현될 수 있다. 이와 유사하게, 단일 구성으로 제시된 구조 및 기능은 별도의 구성으로 구현될 수 있다. 그것 및 다른 변화, 변형 예, 추가, 개선점은 본원의 요지 범위 내에 있다.
소정의 실시예가 논리 또는 다수의 구성, 모듈 또는 메커니즘을 포함하는 것으로 본원에서 설명된다. 모듈은 소프트웨어 모듈(예를 들어, 기계 판독가능 매체 상에서 또는 송신 신호로 구체화된 코드) 또는 하드웨어 모듈을 구성할 수 있다. 하드웨어 모듈이 소정의 동작을 수행할 수 있는 유형의 유닛이고 소정의 방법으로 구성 또는 배열될 수 있다. 예시된 실시예에서, 하나 이상의 컴퓨터 시스템(예를 들어, 독립 실행형, 클라이언트 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템(예를 들어, 프로세서 또는 프로세서 그룹)의 하나 이상의 하드웨어 모듈은 본원에서 설명된 바와 같이 소정의 동작을 수행하기 위해 동작하는 하드웨어 모듈로서 소프트웨어(예를 들어, 애플리케이션 또는 애플리케이션 부분)에 의해 구성될 수 있다.
각종 실시예에서, 하드웨어 모듈은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들어, 하드웨어 모듈이 소정의 동작을 수행하기 위해 영구히 구성되는 전용 회로 또는 논리(예를 들어, FPGA(field programmable gate array)와 같은 주문형 반도체(application-specific integrated circuit(ASIC))를 포함할 수 있다. 하드웨어 모듈은 소정의 동작을 수행하기 위해 소프트웨어로 임시로 구성되는 프로그램가능한 논리 또는 회로(예를 들어, 범용 프로세서 또는 다른 프로그램가능한 프로세서 내에 포함된 바와 같이)도 포함할 수 있다. 전용 회로 및 영구히 구성된 회로 또는 임시로 구성된 회로(예를 들어, 소프트웨어로 구성된)에서 하드웨어 모듈을 기계적으로 구현하는 결정이 비용 및 시간을 고려할 때 행해질 수 있음을 알 수 있다.
따라서, 용어 "하드웨어 모듈"은 소정의 방법으로 동작하거나 본원에서 설명된 소정의 동작을 수행하기 위해 물리적으로 구성되고, 영구히 구성되고(예를 들어, 하드웨어로 구성된), 또는 임시로 구성되는(예를 들어, 프로그램 된) 실체인 실재하는 실체를 포함하는 것으로 이해되어야 한다. 본원에서 사용했듯이, "하드웨어로 구현된 모듈"은 하드웨어 모듈을 말한다. 하드웨어 모듈을 임시로 구성하는(예를 들어, 프로그램 된) 실시예를 고려할 때, 각 하드웨어 모듈은 어느 하나의 예에서 시간에 맞춰 구성 또는 예시할 필요가 없다. 예를 들어, 하드웨어 모듈이 소프트웨어를 사용해서 구성된 범용 프로세서를 포함하는 데서, 범용 프로세서가 다른 시간에 각기 다른 하드웨어 모듈로서 구성될 수 있다. 소프트웨어가 예를 들어, 하나의 시간 예에서 특정한 하드웨어 모듈을 구성하고 다른 시간 예에서 다른 하드웨어 모듈을 구성하는 프로세서를 구성할 수 있다.
하드웨어 모듈이 정보를 다른 하드웨어 모듈로 제공할 수 있고 정보를 다른 하드웨어 모듈로부터 수신할 수 있다. 따라서, 그 설명된 하드웨어 모듈은 통신적으로 결합되는 것으로 간주될 수 있다. 다수의 하드웨어 모듈이 동시에 존재하는 경우에, 통신이 하드웨어 모듈을 연결하는 신호 송신(예를 들어, 알맞은 회로 및 버스를 통해)을 통해 행해질 수 있다. 다수의 하드웨어 모듈을 다른 시간에 구성 또는 예시하는 실시예에서, 그 하드웨어 모듈들 간의 통신은 예를 들어, 다수의 하드웨어 모듈을 액세스하는 메모리 구조에서 정보의 저장 및 검색을 통해 행해질 수 있다. 예를 들어, 하나의 하드웨어 모듈은 통신적으로 결합되는 메모리 장치에서 동작을 수행하고 그 동작의 출력을 저장할 수 있다. 부가적인 하드웨어 모듈은 메모리 장치를 나중에 액세스할 수 있어서 그 저장된 출력을 검색하고 처리한다. 하드웨어 모듈은 입력 또는 출력 장치와의 통신을 초기화할 수 있고, 자원(예를 들어, 정보 수집)에서 동작할 수 있다.
본원에서 설명된 예시된 방법의 각종 동작은 관련된 동작을 수행하기 위해 임시로 구성되거나(예를 들어, 소프트웨어에 의해) 영구히 구성되는 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 임시로 또는 영구히 구성되든지 간에, 그 프로세서가 하나 이상의 동작 또는 기능을 수행하기 위해 동작하는 프로세서로 구현된 모듈을 구성할 수 있다. 본원에서 언급된 모듈은 일부 예시적인 실시예에서 프로세서로 구현된 모듈을 포함할 수 있다.
유사하게, 본원에 설명된 방법은 프로세서로 적어도 부분적으로 구현될 수 있다. 예를 들어, 방법의 동작들 중 적어도 일부가 하나 또는 프로세서들 또는 프로세서로 구현된 하드웨어 모듈에 의해 수행될 수 있다. 소정의 동작 성능은 단일 기계 내에 상주할 뿐 아니라 다수의 기계에 배치된 하나 이상의 프로세서들 간에 분배될 수 있다. 일부의 실시예에서, 프로세서(들)는 (예를 들어, 가정, 사무실 또는 서버 팜 환경 내에서) 단일 위치에 위치될 수 있는 반면에 다른 실시예에서 그 프로세서들이 다수의 위치에 분배될 수 있다.
하나 이상의 프로세서들은 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어("software as a service"(SaaS))"로서 관련된 동작 성능을 지원하기 위해 동작할 수 있다. 예를 들어, 동작들 중 적어도 일부가 (프로세서를 포함하는 기계의 예로서) 컴퓨터 그룹에 의해 수행될 수 있고, 그 동작이 네트워크(예를 들어, 인터넷) 및 하나 이상의 알맞은 인터페이스(예를 들어, 애플리케이션 프로그램 인터페이스(API))를 경유해 액세스 가능하다.
소정의 동작 성능은 단일 기계 내에 상주할 뿐 아니라 다수의 기계에 배치된 하나 이상의 프로세서들 간에 분배될 수 있다. 일부의 실시예에서, 하나 이상의 프로세서 또는 프로세서로 구현된 모듈은(예를 들어, 가정 환경, 사무실 환경 또는 서버 팜 내에서) 단일의 지리적인 위치에 위치될 수 있다. 다른 실시예에서 하나 이상의 프로세서 또는 프로세서로 구현된 모듈이 다수의 지리적인 위치에 분배될 수 있다.
본 명세서의 일부가 기계 메모리(예를 들어, 컴퓨터 메모리) 내의 비트 또는 2진 데이터 신호로서 저장된 데이터 상에서 동작의 알고리즘 또는 심벌 표현으로 제시된다. 그 알고리즘 또는 심벌 표현이 그들의 작업 자료를 다른 당업자에게 전달하기 위한 데이터 처리 기술에서 당업자에 의해 사용된 기술의 예이다. 본원에서 사용하듯이, "알고리즘"은 동작의 일관성 있는 시퀀스 또는 바라는 결과를 초래하는 유사한 처리이다. 이런 문맥에서, 알고리즘 및 동작은 물리적인 양의 물리적인 조작을 포함한다. 그 양은 기계에 의해 저장, 액세스, 이송, 결합, 비교, 또는 조작될 수 있는 전기, 자기 또는 광학 신호의 형태인 것이 일반적이나 반드시 그럴 필요는 없다. "데이터", "컨텐츠", "비트", "값", "소자", 심벌", "문자", "용어", "숫자", "부호" 등과 같은 단어를 사용해서 그 신호들을 설명하는 것이 주로 일반적으로 사용되는 용어라는 이유로 때로는 편리하다. 그러나, 그 단어가 단지 편리한 라벨이고 알맞은 물리적인 양과 관련된다.
그렇지 않고 특정하게 언급하지 않으면, "처리", "컴퓨팅", "계산", "결정", "제시", "표현" 등과 같은 단어를 사용하는 본원의 논의가 정보를 수신, 저장, 송신 또는 표현하는 하나 이상의 메모리(예를 들어, 휘발성 메모리, 비-휘발성 메모리 또는 그 결합체), 레지스터 또는 다른 기계 구성 내의 물리적인(예를 들어, 전자적, 자기적 또는 광학적) 양으로서 표현된 데이터를 조작 또는 변환하는 기계(예를 들어, 컴퓨터)의 작용 또는 공정을 말할 수 있다.
본원에 사용된 "일 실시예" 또는 "실시예"는 실시예와 관련되어 설명된 특정한 소자, 특성, 구조 또는 특징이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서의 여러 군데서 "일 실시예에서"라는 문구의 기재는 같은 실시예를 모두 말하지는 않는다.
일부의 실시예는 그 파생어와 함께 "결합된" 및 "연결된"의 표현을 사용해서 설명될 수 있다. 그 용어가 서로 동의어로 의도된 것은 아니라는 것이 이해되어야 할 것이다. 예를 들어, 일부의 실시예는 2개 이상의 소자들이 서로 직접적으로 물리적으로 또는 전기적으로 접촉하게 되는 것을 표현하기 위해 용어 "연결된"을 사용해서 설명될 수 있다. 다른 예에서, 일부의 실시예는 2개 이상의 소자들이 직접적으로 물리적으로 또는 전기적으로 접촉하게 되는 것을 표현하기 위해 용어 "결합된"을 사용해서 설명될 수 있다. 그러나, 용어 "결합된"은 2개 이상의 소자가 서로 직접적으로 접촉하지 않는 것을 의미하나, 서로 협력하거나 상호작용하는 것을 의미할 수 있다. 그 실시예들은 그 문맥에서 제한되지 않는다.
본원에서 사용했듯이, 용어 "구비하고", "구비하는", "포함하고", "포함하는", "갖고", "갖는", 또는 그것들의 다른 변형은 비-배타적인 포함을 의도하는 것이다. 예를 들어, 소자의 목록을 구성하는 공정, 방법, 물품, 또는 장치는 이들 요소만으로 반드시 제한되지 않으나 그 공정, 방법, 물품 또는 장치에 표현적으로 목록 또는 내재하지 않는 다른 요소를 포함할 수 있다. 또한, 달리 언급되지 않으면, "또는"은 포함하는 '또는'을 의미하고 배타적인 "또는"을 의미하는 것이 아니다. 예를 들어, 상태 A 또는 B는 다음 것 중 어느 하나에 의해 만족되고: A는 진실(또는 존재)이고 B가 거짓(또는 부재)이고, A는 거짓(또는 부재)이고 B가 진실(또는 존재)이고, A 및 B 모두가 진실(또는 존재)이다.
또한, "하나"의 사용은 본원의 실시예의 소자 및 구성을 설명하기 위해 사용된다. 그것은 단지 편리성을 위해 및 본 발명의 일반적인 의미를 부여하기 위해 행해진다. 그 설명은 하나 또는 적어도 하나를 포함해야 되고 단수형은 달리 의미되는 것으로 명백하지 않으면 복수형을 포함한다.
본 개시를 판독할 때, 당업자는 저장 관리기에 저장된 생성 데이터베이스의 지정 시간 복사로부터 가상 데이터베이스를 생성하는 시스템 및 공정에 대한 추가의 대안적인 구조 및 기능 설계를 인식할 것이다. 그러므로, 특정한 실시예 및 애플케이션이 예시 및 설명되어 있으나, 개시된 실시예가 본원에 개시된 정확한 구조 및 구성으로 제한되지 않는다. 당업자에게 명백하게 되는 각종 변경, 변화 및 변형은 첨부된 특허청구범위에 정의된 정신 및 범위를 벗어남이 없이 본원에서 개시된 방법 및 장치의 배열, 동작 및 상세한 설명에 있어서 행해질 수 있다.

Claims (33)

  1. 가상 데이터베이스 시스템을 되감기(rewinding) 위한 컴퓨터로-구현되는 방법으로서,
    데이터베이스 스토리지 시스템에, 소스 데이터베이스의 복수의 스냅샷을 저장하는 단계로서, 스냅샷은 상기 소스 데이터베이스의 데이터베이스 블록의 포인트-인-타임(point-in-time) 카피를 나타내고, 하나 이상의 데이터베이스 블록들은 상기 소스 데이터베이스의 스냅샷에 걸쳐 공유되는, 상기 소스 데이터베이스의 복수의 스냅샷을 저장하는 단계;
    상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록들에 기초하여 가상 데이터베이스를 공급(provisioning)하는 단계;
    상기 데이터베이스 스토리지 시스템에 의해, 상기 가상 데이터베이스에 대한 하나 이상의 타임플로우를 유지하는 단계로서, 각 타임플로우는 상기 가상 데이터베이스의 최초 상태로부터 시작되는 상기 가상 데이터베이스의 변화를 나타내며, 상기 변화의 표현(representation of changes)은 상이한 시점에서 취한 상기 가상 데이터베이스의 스냅샷을 포함하고, 하나 이상의 데이터베이스 블록들은 상기 가상 데이터베이스의 복수의 스냅샷에 걸쳐 공유되는, 상기 하나 이상의 타임플로우를 유지하는 단계;
    상기 가상 데이터베이스를 가상 데이터베이스의 이전 상태로 되감기 하는 요청을 수신하는 단계로서, 상기 요청은 상기 가상 데이터베이스의 타임플로우를 식별하고, 상기 식별된 타임플로우와 연관된 목표 시점(target point in time)을 식별하는, 상기 가상 데이터베이스의 이전 상태로 되감기 하는 요청을 수신하는 단계;
    상기 가상 데이터베이스가 상기 타임플로우와 연관된 가상 데이터베이스의 스냅샷의 데이터베이스 블록들을 참조하도록 수정함으로써 가상 데이터베이스를 되감기 하는 단계로서, 상기 가상 데이터베이스의 스냅샷은 상기 목표 시점 또는 그 이전 시점에 저장되는, 상기 가상 데이터베이스를 되감기 하는 단계; 및
    되감기 된 상기 가상 데이터베이스에 대한 새로운 타임플로우를 유지하는 단계로서, 상기 새로운 타임플로우는 상기 되감기 된 가상 데이터베이스의 이어지는 업데이트에 의해 발생하는 변화의 표현을 포함하는, 상기 새로운 타임플로우를 유지하는 단계를 포함하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  2. 제1항에 있어서, 상기 이전 상태는 제1 상태, 상기 되감기 하는 요청은 제1 되감기 하는 요청, 상기 타임플로우(timeflow)는 제1 타임플로우, 상기 목표 시점(target point in time)은 제1 목표 시점, 상기 가상 데이터베이스의 스냅샷은 제1 스냅샷이며,
    상기 방법은,
    상기 가상 데이터베이스를 가상 데이터베이스의 제2 상태로 더 되감기 하는 요청을 수신하는 단계로서, 상기 제2 상태는 상기 가상 데이터베이스의 제2 타임플로우의 제2 시점과 연관된 상태인, 제2 상태로 더 되감기 하는 요청을 수신하는 단계;
    상기 가상 데이터베이스가 상기 제2 타임플로우와 연관된 가상 데이터베이스의 제2 스냅샷의 데이터베이스 블록들을 참조하도록 수정함으로써 가상 데이터베이스를 다시 되감기 하는 단계로서, 상기 제2 스냅샷은 제2 목표 시점 또는 그 이전 시점에 저장되는, 가상 데이터베이스를 다시 되감기 하는 단계를 더 포함하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  3. 제1항에 있어서,
    상기 가상데이터베이스를 되감기 하기 전에, 상기 가상 데이터베이스와 연관된 프로세스를 중지(shut down)하는 요청을 전송하는 단계; 및
    상기 가상 데이터베이스를 되감기 한 이후에, 상기 프로세스를 재 시작하는 요청을 전송하는 단계를 더 포함하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  4. 제1항에 있어서,
    상기 가상 데이터베이스의 타임플로우는 제1 스냅샷 및 제2 스냅샷을 포함하되, 상기 데이터베이스 블록이 상기 제1 스냅샷이 저장된 시점 및 상기 제2 스냅샷이 저장된 시점 사이에서 수정되지 않는다면, 상기 제2 스냅샷은 상기 제1 스냅샷과 데이터베이스 블록을 공유하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  5. 제1항에 있어서,
    상기 가상 데이터베이스의 현재 타임플로우의 최근 스냅샷의 데이터베이스 블록의 데이터를 업데이트하는 요청을 수신하는 단계; 및
    상기 데이터를 업데이트하는 요청의 수신에 대응하여, 상기 데이터베이스 블록의 카피를 만드는 단계 및 상기 데이터베이스 블록의 카피를 업데이트하는 단계를 더 포함하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  6. 제1항에 있어서,
    상기 타임플로우의 변화의 표현은, 두 스냅샷 사이에서 상기 가상 데이터베이스의 업데이트를 나타내는 트랜잭션 로그들을 포함하고,
    상기 방법은, 상기 가상 데이터베이스가 상기 가상 데이터베이스의 스냅샷의 데이터베이스 블록들을 참조하도록 수정하는 단계에 대응하여, 상기 목표 시점에 대응하는 수정된 가상 데이터베이스의 상태를 업데이트하기 위하여, 하나 이상의 트랜잭션 로그들을 상기 수정된 가상 데이터베이스에 적용하는 단계를 더 포함하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  7. 제1항에 있어서,
    상기 가상 데이터베이스의 상태를 상기 가상 데이터베이스의 이전 상태로 되감기 하는 요청은, 상기 가상 데이터베이스에 의해 수행되는 업데이트의 시스템 변경 넘버(system change number)를 지정함으로써, 상기 이전 상태를 식별하고, 상기 업데이트는 상기 식별된 타임플로우와 연관되는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  8. 제1항에 있어서,
    상기 가상 데이터베이스를 상기 가상 데이터베이스의 이전 상태로 되감기 하는 요청은, 상기 데이터베이스의 식별된 타임플로우와 연관된 시간 값을 지정함으로써, 상기 이전 상태를 식별하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  9. 제1항에 있어서,
    상기 가상 데이터베이스는 복수의 타임플로우와 연관되고,
    상기 가상 데이터베이스를 상기 가상 데이터베이스의 이전 상태로 되감기하는 요청을 수신하는 단계는, 상기 복수의 타임플로우로부터 타임플로우를 식별하는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  10. 제1항에 있어서,
    상기 가상 데이터베이스의 하나 이상의 데이터베이스 블록들은, 상기 데이터베이스 스토리지 시스템에 의해 공급되는 하나 이상의 다른 가상 데이터베이스들과 공유되는, 가상 데이터베이스 시스템을 되감기 위한 컴퓨터로-구현되는 방법.
  11. 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생(refreshing)하기 위한 컴퓨터로-구현되는 방법으로서,
    데이터베이스 스토리지 시스템에 의해, 소스 데이터베이스에 대한 하나 이상의 타임플로우를 유지하는 단계로서, 각 타임플로우는 상기 소스 데이터베이스의 최초 상태로부터 시작되는 상기 소스 데이터베이스의 변화의 표현을 포함하며, 상기 표현은 상이한 시점에서 취한 상기 소스 데이터베이스의 스냅샷을 포함하고, 하나 이상의 데이터베이스 블록들은 상기 소스 데이터베이스의 복수의 스냅샷에 걸쳐 공유되는, 소스 데이터베이스에 대한 하나 이상의 타임플로우를 유지하는 단계;
    상기 데이터베이스 스토리지 시스템에 의해, 상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록들에 기초하여 가상 데이터베이스를 공급(provisioning)하는 단계;
    상기 가상 데이터베이스에 대한 하나 이상의 타임플로우를 유지하는 단계로서, 각 타임플로우는 상기 가상 데이터베이스의 최초 상태로부터 시작하는 상기 가상 데이터베이스의 변화의 표현(representations of changes)을 포함하며, 상기 변화의 표현은 상이한 시점에 취한 상기 가상 데이터베이스의 스냅샷을 포함하고, 하나 이상의 데이터베이스 블록들은 상기 가상 데이터베이스의 복수의 스냅샷에 걸쳐 공유되는, 상기 가상 데이터베이스에 대한 하나 이상의 타임플로우를 유지하는 단계;
    상기 가상 데이터베이스를 상기 소스 데이터베이스로 재생하는 요청을 수신하는 단계로서, 상기 요청은 상기 소스 데이터베이스의 타임플로우 및 상기 타임플로우의 목표 시점을 식별하는, 상기 소스 데이터베이스로 재생하는 요청을 수신하는 단계
    상기 가상 데이터베이스를 재생하는 단계로서, 상기 가상 데이터베이스가 상기 타임플로우와 연관된 상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록을 참조하도록 수정하는 단계를 포함하되, 상기 스냅샷은 목표 시점 또는 그 이전 시점에서 저장되는, 상기 가상 데이터베이스를 재생하는 단계; 및
    상기 재생된 가상 데이터베이스에 대한 새로운 타임플로우를 유지하는 단계로서, 상기 새로운 타임플로우는 상기 재생 된 가상 데이터베이스의 이어지는 업데이트에 의해 발생하는 변화의 표현을 포함하는, 새로운 타임플로우를 유지하는 단계를 포함하는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  12. 제11항에 있어서,
    상기 가상 데이터베이스를 재생하기 전에, 상기 가상 데이터베이스와 연관된 프로세스를 중지하는 요청을 전송하는 단계; 및
    상기 가상 데이터베이스를 재생한 이후에, 상기 프로세스를 재 시작하는 요청을 전송하는 단계를 더 포함하는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  13. 제11항에 있어서,
    상기 가상 데이터베이스의 타임플로우는 제1 스냅샷 및 제2 스냅샷을 포함하되, 상기 데이터베이스 블록이 상기 제1 스냅샷이 저장된 시점 및 상기 제2 스냅샷이 저장된 시점 사이에서 수정되지 않는다면, 상기 제2 스냅샷은 상기 제1 스냅샷과 데이터베이스 블록을 공유하는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  14. 제11항에 있어서,
    상기 가상 데이터베이스의 현재 타임플로우의 최근 스냅샷의 데이터베이스 블록의 데이터를 업데이트하는 요청을 수신하는 단계; 및
    상기 데이터를 업데이트하는 요청의 수신에 대응하는 단계로서, 상기 데이터베이스 블록의 카피를 만들고 상기 데이터베이스 블록의 카피를 업데이트하는 단계를 더 포함하는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  15. 제11항에 있어서,
    상기 타임플로우의 변화의 표현은, 두 스냅샷 사이에서 상기 가상 데이터베이스의 업데이트를 나타내는 트랜잭션 로그들을 포함하고,
    상기 방법은, 상기 가상 데이터베이스가 상기 가상 데이터베이스의 스냅샷의 데이터베이스 블록들을 참조하도록 수정하는 단계에 대응하여, 상기 목표 시점에 대응하는 수정된 가상 데이터베이스의 상태를 업데이트하기 위하여, 하나 이상의 트랜잭션 로그들을 상기 수정된 가상 데이터베이스에 적용하는 단계를 더 포함하는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  16. 제11항에 있어서,
    상기 가상 데이터베이스를 재생하는 요청은, 상기 소스 데이터베이스에 의해 수행되는 업데이트의 시스템 변경 넘버를 지정함으로써, 상기 소스 데이터베이스의 상태를 식별하고, 상기 업데이트는 상기 식별된 타임플로우와 연관되는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  17. 제11항에 있어서,
    상기 가상 데이터베이스를 재생하는 요청은, 상기 소스 데이터베이스의 식별된 타임플로우와 연관된 시간 값을 지정함으로써, 상기 소스 데이터베이스의 상태를 식별하는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  18. 제11항에 있어서,
    상기 소스 데이터베이스는 복수의 타임플로우와 연관된 가상 데이터베이스이고, 상기 가상 데이터베이스를 재생하는 요청을 수신하는 단계는, 상기 복수의 타임플로우로부터 타임플로우를 식별하는, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  19. 제11항에 있어서,
    상기 소스 데이터베이스는, 상기 소스 데이터베이스 시스템과 상이한 외부 시스템 내 저장되는 생산 데이터베이스(production database)인, 가상 데이터베이스 시스템을 소스 데이터베이스 시스템의 상태로 재생하기 위한 컴퓨터로-구현되는 방법.
  20. 비-일시적인 컴퓨터 판독 가능한 저장 매체로서,
    소스 데이터베이스의 복수의 스냅샷을 데이터베이스 스토리지 시스템 내에 저장하기 위한 명령어로서, 스냅샷은 상기 소스 데이터베이스의 데이터베이스 블록들의 포인트-인-타임(point-in-time)을 나타내고, 하나 이상의 데이터베이스 블록들은 상기 소스 데이터베이스의 스냅샷에 걸쳐 공유되는, 소스 데이터베이스의 복수의 스냅샷을 데이터베이스 스토리지 시스템 내에 저장하기 위한 명령어;
    상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록들에 기초하여 가상 데이터베이스를 공급하기 위한 명령어;
    상기 데이터베이스 스토리지 시스템에 의해, 상기 가상 데이터베이스에 대한 하나 이상의 타임플로우를 유지하기 위한 명령어로서, 각 타임플로우는 상기 가상 데이터베이스의 최초 상태로부터 시작되는 상기 가상 데이터베이스의 변화를 나타내며, 상기 변화의 표현은 상이한 시점에서 취한 상기 가상 데이터베이스의 스냅샷을 포함하고, 하나 이상의 데이터베이스 블록들은 상기 가상 데이터베이스의 복수의 스냅샷에 걸쳐 공유되는, 상기 가상 데이터베이스에 대한 하나 이상의 타임플로우를 유지하기 위한 명령어;
    상기 가상 데이터베이스를 가상 데이터베이스의 이전 상태로 되감기 하는 요청을 수신하기 위한 명령어로서, 상기 요청은 상기 가상 데이터베이스의 타임플로우를 식별하고, 상기 식별된 타임플로우와 연관된 목표 시점을 식별하는, 상기 가상 데이터베이스를 가상 데이터베이스의 이전 상태로 되감기 하는 요청을 수신하기 위한 명령어;
    상기 가상 데이터베이스가 상기 타임플로우와 연관된 가상 데이터베이스의 스냅샷의 데이터베이스 블록들을 참조하도록 수정함으로써 가상 데이터베이스를 되감기 하기 위한 명령어로서, 상기 가상 데이터베이스의 스냅샷은 상기 목표 시점 또는 그 이전 시점에 저장되는, 명령어; 및
    되감기 된 상기 가상 데이터베이스에 대한 새로운 타임플로우를 유지하기 위한 명령어로서, 상기 새로운 타임플로우는 상기 되감기 된 가상 데이터베이스의 이어지는 업데이트에 의해 발생하는 변화의 표현을 포함하는, 되감기 된 상기 가상 데이터베이스에 대한 새로운 타임플로우를 유지하기 위한 명령어를 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  21. 제20항에 있어서,
    상기 이전 상태는 제1 상태, 상기 되감기 하는 요청은 제1 되감기 하는 요청, 상기 타임플로우(timeflow)는 제1 타임플로우, 상기 목표 시점(target point in time)은 제1 목표 시점, 상기 가상 데이터베이스의 스냅샷은 제1 스냅샷이며,
    상기 비-일시적인 컴퓨터 판독 가능한 저장 매체는,
    상기 가상 데이터베이스를 가상 데이터베이스의 제2 상태로 더 되감기 하는 요청을 수신하기 위한 명령어로서, 상기 제2 상태는 상기 가상 데이터베이스의 제2 타임플로우의 제2 시점과 연관된 상태인, 제2 상태로 더 되감기 하는 요청을 수신하기 위한 명령어;
    상기 가상 데이터베이스가 상기 제2 타임플로우와 연관된 가상 데이터베이스의 제2 스냅샷의 데이터베이스 블록들을 참조하도록 수정함으로써 가상 데이터베이스를 다시 되감기 하기 위한 명령어로서, 상기 제2 스냅샷은 제2 목표 시점 또는 그 이전 시점에 저장되는, 가상 데이터베이스를 다시 되감기 하기 위한 명령어를 더 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  22. 제20항에 있어서,
    상기 가상데이터베이스를 되감기 하기 전에, 상기 가상 데이터베이스와 연관된 프로세스를 중지(shut down)하는 요청을 전송하기 위한 명령어; 및
    상기 가상 데이터베이스를 되감기 한 이후에, 상기 프로세스를 재 시작하는 요청을 전송하기 위한 명령어를 더 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  23. 제20항에 있어서,
    상기 타임플로우의 변화의 표현은, 두 스냅샷 사이에서 상기 가상 데이터베이스의 업데이트를 나타내는 트랜잭션 로그들을 포함하고,
    상기 비-일시적인 컴퓨터 판독 가능한 저장 매체는, 상기 가상 데이터베이스가 상기 가상 데이터베이스의 스냅샷의 데이터베이스 블록들을 참조하도록 수정하는 것에 대응하여, 상기 목표 시점에 대응하는 수정된 가상 데이터베이스의 상태를 업데이트하기 위하여, 하나 이상의 트랜잭션 로그들을 상기 수정된 가상 데이터베이스에 적용하기 위한 명령어를 더 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  24. 제20항에 있어서,
    상기 가상 데이터베이스의 상태를 상기 가상 데이터베이스의 이전 상태로 되감기 하는 요청은, 상기 가상 데이터베이스에 의해 수행되는 업데이트의 시스템 변경 넘버(system change number)를 지정함으로써, 상기 이전 상태를 식별하고, 상기 업데이트는 상기 식별된 타임플로우와 연관되는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  25. 제20항에 있어서,
    상기 가상 데이터베이스를 상기 가상 데이터베이스의 이전 상태로 되감기 하는 요청은, 상기 데이터베이스의 식별된 타임플로우와 연관된 시간 값을 지정함으로써, 상기 이전 상태를 식별하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  26. 제20항에 있어서,
    상기 가상 데이터베이스는 복수의 타임플로우와 연관되고,
    상기 가상 데이터베이스를 상기 가상 데이터베이스의 이전 상태로 되감기하는 요청을 수신하는 것은, 상기 복수의 타임플로우로부터 타임플로우를 식별하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  27. 비-일시적인 컴퓨터 판독 가능한 저장 매체로서,
    데이터베이스 스토리지 시스템에 의해, 소스 데이터베이스에 대한 하나 이상의 타임플로우를 유지하기 위한 명령어로서, 각 타임플로우는 상기 소스 데이터베이스의 최초 상태로부터 시작되는 상기 소스 데이터베이스의 변화의 표현을 포함하며, 상기 표현은 상이한 시점에서 취한 상기 소스 데이터베이스의 스냅샷을 포함하고, 하나 이상의 데이터베이스 블록들은 상기 소스 데이터베이스의 복수의 스냅샷에 걸쳐 공유되는, 소스 데이터베이스에 대한 하나 이상의 타임플로우를 유지하기 위한 명령어;
    상기 데이터베이스 스토리지 시스템에 의해, 상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록들에 기초하여 가상 데이터베이스를 공급(provisioning)하기 위한 명령어;
    상기 가상 데이터베이스에 대한 하나 이상의 타임플로우를 유지하기 위한 명령어로서, 각 타임플로우는 상기 가상 데이터베이스의 최초 상태로부터 시작하는 상기 가상 데이터베이스의 변화의 표현(representations of changes)을 포함하며, 상기 변화의 표현은 상이한 시점에 취한 상기 가상 데이터베이스의 스냅샷을 포함하고, 하나 이상의 데이터베이스 블록들은 상기 가상 데이터베이스의 복수의 스냅샷에 걸쳐 공유되는, 상기 가상 데이터베이스에 대한 하나 이상의 타임플로우를 유지하기 위한 명령어;
    상기 가상 데이터베이스를 상기 소스 데이터베이스로 재생하는 요청을 수신하기 위한 명령어로서, 상기 요청은 상기 소스 데이터베이스의 타임플로우 및 상기 타임플로우의 목표 시점을 식별하는, 상기 소스 데이터베이스로 재생하는 요청을 수신하기 위한 명령어;
    상기 가상 데이터베이스를 재생하기 위한 명령어로서, 상기 가상 데이터베이스가 상기 타임플로우와 연관된 상기 소스 데이터베이스의 스냅샷의 데이터베이스 블록을 참조하도록 수정하는 명령어를 포함하되, 상기 스냅샷은 목표 시점 또는 그 이전 시점에서 저장되는, 상기 가상 데이터베이스를 재생하기 위한 명령어; 및
    상기 재생된 가상 데이터베이스에 대한 새로운 타임플로우를 유지하는기 위한 명령어로서, 상기 새로운 타임플로우는 상기 재생 된 가상 데이터베이스의 이어지는 업데이트에 의해 발생하는 변화의 표현을 포함하는, 새로운 타임플로우를 유지하기 위한 명령어를 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  28. 제27항에 있어서,
    상기 가상 데이터베이스를 재생하기 전에, 상기 가상 데이터베이스와 연관된 프로세스를 중지하는 요청을 전송하기 위한 명령어; 및
    상기 가상 데이터베이스를 재생한 이후에, 상기 프로세스를 재 시작하는 요청을 전송하기 위한 명령어를 더 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  29. 제27항에 있어서,
    상기 가상 데이터베이스의 현재 타임플로우의 최근 스냅샷의 데이터베이스 블록의 데이터를 업데이트하는 요청을 수신하기 위한 명령어; 및
    상기 데이터를 업데이트하는 요청의 수신에 대응하기 위한 명령어로서, 상기 데이터베이스 블록의 카피를 만들고 상기 데이터베이스 블록의 카피를 업데이트하기 위한 명령어를 더 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  30. 제27항에 있어서,
    상기 타임플로우의 변화의 표현은, 두 스냅샷 사이에서 상기 가상 데이터베이스의 업데이트를 나타내는 트랜잭션 로그들을 포함하고,
    상기 비-일시적인 컴퓨터 판독 가능한 저장 매체는, 상기 가상 데이터베이스가 상기 가상 데이터베이스의 스냅샷의 데이터베이스 블록들을 참조하도록 수정하는 것에 대응하여, 상기 목표 시점에 대응하는 수정된 가상 데이터베이스의 상태를 업데이트하기 위하여, 하나 이상의 트랜잭션 로그들을 상기 수정된 가상 데이터베이스에 적용하기 위한 명령어를 더 저장하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  31. 제27항에 있어서,
    상기 가상 데이터베이스를 재생하는 요청은, 상기 소스 데이터베이스에 의해 수행되는 업데이트의 시스템 변경 넘버를 지정함으로써, 상기 소스 데이터베이스의 상태를 식별하고, 상기 업데이트는 상기 식별된 타임플로우와 연관되는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  32. 제27항에 있어서,
    상기 가상 데이터베이스를 재생하는 요청은, 상기 소스 데이터베이스의 식별된 타임플로우와 연관된 시간 값을 지정함으로써, 상기 소스 데이터베이스의 상태를 식별하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
  33. 제27항에 있어서,
    상기 소스 데이터베이스는 복수의 타임플로우와 연관된 가상 데이터베이스이고, 상기 가상 데이터베이스를 재생하는 요청을 수신하는 것은, 상기 복수의 타임플로우로부터 타임플로우를 식별하는, 비-일시적인 컴퓨터 판독 가능한 저장 매체.
KR1020167003447A 2013-07-09 2014-06-25 가상 데이터베이스 되감기 KR101693683B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361844376P 2013-07-09 2013-07-09
US61/844,376 2013-07-09
PCT/US2014/044176 WO2015006054A1 (en) 2013-07-09 2014-06-25 Virtual database rewind

Publications (2)

Publication Number Publication Date
KR20160030401A KR20160030401A (ko) 2016-03-17
KR101693683B1 true KR101693683B1 (ko) 2017-01-06

Family

ID=52280459

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167003447A KR101693683B1 (ko) 2013-07-09 2014-06-25 가상 데이터베이스 되감기

Country Status (8)

Country Link
US (1) US9396074B2 (ko)
EP (1) EP3019987B1 (ko)
JP (1) JP6050917B2 (ko)
KR (1) KR101693683B1 (ko)
CN (1) CN105378725B (ko)
AU (1) AU2014287633B2 (ko)
CA (1) CA2912468C (ko)
WO (1) WO2015006054A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884869B2 (en) * 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10025528B2 (en) 2016-01-20 2018-07-17 Delphix Corporation Managing transformations of snapshots in a storage system
US11403192B1 (en) * 2017-07-27 2022-08-02 EMC IP Holding Company LLC Enabling point-in-time recovery for databases that change transaction log recovery models
US11163799B2 (en) * 2019-10-29 2021-11-02 Dell Products L.P. Automatic rollback to target for synchronous replication
US11275685B1 (en) 2020-09-11 2022-03-15 Kyndryl, Inc. System and method of optimizing rollbacks
CN112732489B (zh) * 2021-01-11 2023-05-09 上海上讯信息技术股份有限公司 基于数据库虚拟化的数据脱敏的方法及设备
US20220398232A1 (en) * 2021-06-14 2022-12-15 Microsoft Technology Licensing, Llc Versioned metadata using virtual databases
CN113360476B (zh) * 2021-06-21 2023-11-21 上海上讯信息技术股份有限公司 一种程序数据库虚拟化插拔的方法及设备

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE409907T1 (de) 1993-06-03 2008-10-15 Network Appliance Inc Verfahren und vorrichtung zum beschreiben beliebiger bereiche eines dateisystems
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
JP2000047919A (ja) * 1998-07-30 2000-02-18 Hitachi Ltd 仮想データベースレプリケーションシステム
US7120862B1 (en) * 1998-12-01 2006-10-10 Lucent Technologies Inc. Method and apparatus for persistent access to Web resources using variable time-stamps
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US7373364B1 (en) 2002-03-05 2008-05-13 Network Appliance, Inc. System and method for creating a point-in-time restoration of a database file
US7225204B2 (en) 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
US7340489B2 (en) 2002-04-10 2008-03-04 Emc Corporation Virtual storage devices
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7457982B2 (en) 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
JP4321705B2 (ja) * 2003-07-29 2009-08-26 株式会社日立製作所 スナップショットの取得を制御するための装置及び記憶システム
US7334095B1 (en) 2004-04-30 2008-02-19 Network Appliance, Inc. Writable clone of read-only volume
US7409511B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US7334094B2 (en) 2004-04-30 2008-02-19 Network Appliance, Inc. Online clone volume splitting technique
US8732182B2 (en) * 2004-12-02 2014-05-20 Desktopsites Inc. System and method for launching a resource in a network
GB0428108D0 (en) 2004-12-23 2005-01-26 Ibm Storage system with multiple copy targeting
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
US7631021B2 (en) 2005-03-25 2009-12-08 Netapp, Inc. Apparatus and method for data replication at an intermediate node
US7539836B1 (en) 2005-04-18 2009-05-26 Netapp, Inc. Method and system for configuring a data storage object
US7822758B1 (en) 2005-04-22 2010-10-26 Network Appliance, Inc. Method and apparatus for restoring a data set
JP5420242B2 (ja) * 2005-06-24 2014-02-19 シンクソート インコーポレイテッド 高性能な企業データ保護のためのシステムおよび方法
US7590660B1 (en) 2006-03-21 2009-09-15 Network Appliance, Inc. Method and system for efficient database cloning
US8024762B2 (en) * 2006-06-13 2011-09-20 Time Warner Cable Inc. Methods and apparatus for providing virtual content over a network
US7587563B1 (en) 2006-07-11 2009-09-08 Network Appliance, Inc. Method and system to make a read-only file system appear to be writeable
US7856424B2 (en) 2006-08-04 2010-12-21 Apple Inc. User interface for backup management
US8311988B2 (en) 2006-08-04 2012-11-13 Apple Inc. Consistent back up of electronic information
US7827366B1 (en) 2006-10-31 2010-11-02 Network Appliance, Inc. Method and system for providing continuous and long-term data protection for a dataset in a storage system
US7941470B2 (en) 2007-03-29 2011-05-10 Vmware, Inc. Synchronization and customization of a clone computer
US8775663B1 (en) 2007-04-25 2014-07-08 Netapp, Inc. Data replication network traffic compression
US8010900B2 (en) 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US7877357B1 (en) 2007-10-12 2011-01-25 Netapp, Inc. Providing a simulated dynamic image of a file system
US7996636B1 (en) 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US8532973B1 (en) 2008-06-27 2013-09-10 Netapp, Inc. Operating a storage server on a virtual machine
KR101024494B1 (ko) * 2008-07-18 2011-03-31 (주)디에프아이비즈 메타데이타를 이용한 변경 데이타 추출방법
US8037032B2 (en) 2008-08-25 2011-10-11 Vmware, Inc. Managing backups using virtual machines
US8280858B2 (en) 2009-06-29 2012-10-02 Oracle America, Inc. Storage pool scrubbing with concurrent snapshots
US8161077B2 (en) * 2009-10-21 2012-04-17 Delphix Corp. Datacenter workflow automation scenarios using virtual databases
US8150808B2 (en) 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
US20110289289A1 (en) * 2010-05-20 2011-11-24 Microsoft Corporation Backup and restore of items using bounded checkpoint and log buffers in memory
US8548944B2 (en) * 2010-07-15 2013-10-01 Delphix Corp. De-duplication based backup of file systems
US10430298B2 (en) * 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US9461876B2 (en) * 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction

Also Published As

Publication number Publication date
CA2912468A1 (en) 2015-01-15
EP3019987A4 (en) 2017-01-18
CA2912468C (en) 2018-08-21
JP2016526743A (ja) 2016-09-05
EP3019987B1 (en) 2019-01-09
EP3019987A1 (en) 2016-05-18
WO2015006054A1 (en) 2015-01-15
CN105378725B (zh) 2017-08-04
US20150019496A1 (en) 2015-01-15
US9396074B2 (en) 2016-07-19
JP6050917B2 (ja) 2016-12-21
AU2014287633A1 (en) 2015-12-17
KR20160030401A (ko) 2016-03-17
CN105378725A (zh) 2016-03-02
AU2014287633B2 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
KR101693683B1 (ko) 가상 데이터베이스 되감기
US10802921B2 (en) Systems and methods including committing a note to master and slave copies of a data volume based on sequential operation numbers
US8438136B2 (en) Backup catalog recovery from replicated data
US10169165B2 (en) Restoring data
US9558079B2 (en) Flash copy for disaster recovery (DR) testing
CN107209705A (zh) 用于计算环境的活动回滚
US20140344222A1 (en) Method and apparatus for replication size estimation and progress monitoring
US11397749B2 (en) Asynchronous replication of in-scope table data
US10114703B2 (en) Flash copy for disaster recovery (DR) testing
KR20100061457A (ko) 스토리지 컨트롤러와 복제 엔진 사이에서 라이트들을 스플리트하는 기술
US9749193B1 (en) Rule-based systems for outcome-based data protection
US8285835B1 (en) Graphical analysis of states in a computing system
JP6070146B2 (ja) 情報処理装置及びバックアップ方法
US9760450B2 (en) Restoring a clone point-in-time copy
TW201516655A (zh) 基於分散式文檔系統的資料備份還原系統及方法
US9830471B1 (en) Outcome-based data protection using multiple data protection systems
US11372732B2 (en) Systems and methods for agentless and accelerated backup of a database
US20240111642A1 (en) Lossless failover for data recovery
Edge et al. Backing Up Your Data

Legal Events

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

Payment date: 20191217

Year of fee payment: 4