KR102579190B1 - 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원 - Google Patents

일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원 Download PDF

Info

Publication number
KR102579190B1
KR102579190B1 KR1020177033167A KR20177033167A KR102579190B1 KR 102579190 B1 KR102579190 B1 KR 102579190B1 KR 1020177033167 A KR1020177033167 A KR 1020177033167A KR 20177033167 A KR20177033167 A KR 20177033167A KR 102579190 B1 KR102579190 B1 KR 102579190B1
Authority
KR
South Korea
Prior art keywords
database
copy
point
snapshot
time
Prior art date
Application number
KR1020177033167A
Other languages
English (en)
Other versions
KR20180021679A (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 KR20180021679A publication Critical patent/KR20180021679A/ko
Application granted granted Critical
Publication of KR102579190B1 publication Critical patent/KR102579190B1/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/1458Management of the backup or restore process
    • 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
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

기술들이 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서 백업 및 복원을 위해 개시된다. 특히, 본 개시의 실시예에 따라 구성된 분산 데이터베이스 시스템은 어떤 단일 장애점도 갖지 않는 데이터베이스를 총괄하여 정의하며 단일의, 논리 데이터베이스로서 SQL 클라이언트에 의해 "보여질" 수 있는 복수의 상호 연결된 데이터베이스 노드들을 포함한다. 이러한 트랜잭션들을 실행하는 동안, 분산 데이터베이스 시스템은, 클라이언트들이, 트랜잭션이 커밋될 때, 분산 데이터베이스 시스템으로 하여금 트랜잭션이 완료된 시점에서 데이터베이스의 상태의 일관되며 완전한 복사를 논리적으로 프리징하게 하는 스냅샷들을 선언할 수 있게 한다. 이러한 스냅샷들은 클라이언트들이 근본적으로 특정한 시점"으로부터" 데이터베이스의 재구성된 버전인 결과 세트를 반환하기 위해 이들 과거 상태들에 대해 소위 "시점" 질의들을 실행할 수 있게 한다.

Description

일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원
관련 출원(들)에 대한 상호-참조
본 출원은 2015년 4월 16일에 출원되고, 여기에서 전체적으로 참조로서 통합되는, 미국 출원 번호 제14/688,396호에 대한 우선권을 주장한다.
개시의 분야
본 개시는 일반적으로 데이터베이스 시스템들에 관한 것이며, 보다 특히 데이터베이스 시스템들 내에서의 백업 및 복원 동작들에 관한 것이다.
모범-사례들을 이용하는 데이터베이스 관리자들은 준수, 데이터 보안, 데이터 재구성, 및 분석 목적들의 목적으로 데이터베이스들을 규칙적으로 백업한다. 데이터베이스 관리자들은 일반적으로 백업 절차들의 빈도, 디스크 공간 및 서버 작업 부하들에 기초하여 이용할 백업 기법들을 수립한다. 예를 들면, 소위 "전체-백업들"은 많은 양의 디스크 공간을 요구할 수 있으며 또한 완료하는데 긴 시간 기간들이 걸릴 수 있는 데이터베이스의 완전한 이미지들이다. 전체-백업들은 이들 단점들을 갖기 때문에, 데이터베이스 관리자들은 일반적으로 종종 일들 또는 주들 동안 측정된, 몇몇 주목할 만한 양의 시간에 의해 각각의 절차를 스태거하거나 또는 그 외 분리하는 스케줄에서 이러한 유형의 백업 절차를 수행하도록 선택한다. 실제로, 전체-백업 절차들 간의 시간 기간들은 백업 및 복원 목적들을 위한 데이터 무결성을 보장하기 위해 정기적으로 다수의 증분 또는 차등 백업들을 수행하는 것을 포함할 수 있다. 임의의 이러한 경우들에서, 데이터가 백업 위치로 복사되기 전에, 상기 데이터는 백업 프로세스를 최적화하기 위해 선택되고, 추출되며 조작될 수 있다. 몇몇 이러한 최적화들은 개방 파일들 및 라이브 데이터 소스들을 처리하기 위한 파라미터들, 뿐만 아니라 데이터 압축, 암호화 및 중복-제거를 포함한다.
도 1은 본 개시의 실시예에 따른, 지속적 저장 장치에서 일관된 데이터베이스 스냅샷들을 캡처하고 유지하도록 구성된 상호 연결된 노드들을 포함한 예시적인 분산 데이터베이스 시스템을 묘사한다.
도 2a는 본 개시의 실시예에 따른, 도 1의 분산 데이터베이스 시스템 내에서 예시적인 트랜잭션 엔진(TE)의 아키텍처를 묘사한다.
도 2b는 본 개시의 실시예에 따른, 도 1의 분산 데이터베이스 시스템 내에서 예시적인 저장 관리기(SM)의 아키텍처를 묘사한다.
도 2c는 본 개시의 실시예에 따른, 도 1의 분산 데이터베이스 시스템 내에서의 예시적인 스냅샷 저장 관리기(SSM)의 아키텍처를 묘사한다.
도 3a는 본 개시의 실시예에 따른, 각각의 트랜잭션이 주어진 TE 노드에 의해 커밋된 후 SSM에 의해 수신되고 전 순서로 배열된 복수의 트랜잭션들을 예시한 블록도를 묘사한다.
도 3b는 본 개시의 실시예에 따른, 주어진 TE에 의해 커밋된 하나의 예시적인 트랜잭션을 예시한다.
도 4는 본 개시의 실시예에 따른, 원자의 비-덮어쓰기 구조를 예시한 블록도를 묘사한다.
도 5는 본 개시의 실시예에 따른, 현재 및 과거 데이터베이스 상태들로의 클라이언트-레벨 액세스를 투명하게 제공하도록 구성된 도 1의 분산 데이터베이스 시스템의 또 다른 예시적인 실시예를 나타낸 블록도를 묘사한다.
도 6은 본 개시의 실시예에 따른, 과거 데이터베이스 상태들의 시점 질의들을 가능하게 하기 위해 SSM의 지속적 저장 장치 내에서 프리징되고 저장될 수 있는 원자 유형들을 예시한 블록도를 묘사한다.
도 7a는 본 개시의 실시예에 따른, 도 1의 분산 데이터베이스 시스템의 영속성 티어 내에서 다수의 데이터베이스 노드들에 걸쳐 대칭적 원자 업데이트들을 가능하게 하기 위한 하나의 예시적인 방법론을 도시한다.
도 7b는 본 개시의 실시예에 따른, 도 7a의 대칭적 원자 업데이트 방법론의 일 예시적인 데이터 흐름을 도시한다.
도 7c는 본 개시의 실시예에 따른, 파괴적 복제 프로세스들 동안 도 7a의 대칭적 원자 업데이트 방법론의 일 예시적인 데이터 흐름을 도시한다.
도 8a는 본 개시의 실시예에 따른, 도 1의 분산 데이터베이스 시스템 내에서 TE에 의해 시점 질의들을 수행하기 위한 일 예시적인 방법론을 도시한다.
도 8b는 본 개시의 실시예에 따른, 도 1의 분산 데이터베이스 시스템에 의해 제공될 수 있는 일 예시적인 시점 질의를 도시한다.
도 8c는 본 개시의 실시예에 따른, 시점 질의에서 식별된 스냅샷이 분산 데이터베이스 시스템 내에서 이용 가능한지를 결정하기 위해 TE에 의해 실행될 수 있는 일 예시적인 질의를 도시한다.
도 8d는 본 개시의 실시예에 따른, 도 8a의 예시적인 시점 방법론을 구현한 복수의 TE들을 예시한 예시적인 데이터 흐름을 도시한다.
도 9는 본 개시의 실시예에 따라 구성된 컴퓨팅 시스템을 도시한다.
본 실시예들의 이들 및 다른 특징들은 여기에서 설명된 도면들과 함께 취해진, 다음의 상세한 설명을 판독함으로써 보다 양호하게 이해될 것이다. 수반되는 도면들은 일정한 비율이도록 의도되지 않는다. 도면들에서, 다양한 도면들에서 예시되는 각각의 동일한 또는 거의 동일한 구성요소는 유사한 숫자에 의해 표현된다. 명료함을 위해, 모든 구성요소가 모든 도면에서 라벨링되는 것은 아닐 수 있다.
기술들은 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스 시스템에서의 백업 및 복원을 위해 개시된다. 예시적인 실시예에 따라 구성된 분산 데이터베이스 시스템은 어떤 단일 장애점도 갖지 않는 데이터베이스를 총괄하여 형성하며 구조화 질의 언어(SQL) 질의들을 사용하여 단일의, 논리 데이터베이스로서 액세스될 수 있는, 또한 노드들로서 불리우는, 복수의 상호 연결된 데이터베이스 노드들을 포함한다. 이러한 분산 데이터베이스 시스템은, 그것이 원자성, 일관성, 고립성, 및 지속성(ACID)의 바람직한 속성들을 보이며 따라서 클라이언트들이 일관된 방식으로 데이터베이스에 대한 동시 업데이트 트랜잭션들을 실행할 수 있게 한다는 점에서, ACID-순응적이다. 이러한 트랜잭션들의 예들은, 예를 들면, 기록, 삽입, 및 삭제 동작들을 포함한다. 이러한 트랜잭션들을 실행하는 동안, 본 개시에 따라 구성된 바와 같이 분산 데이터베이스 시스템은 클라이언트들이, 분산 데이터베이스 시스템으로 하여금 트랜잭션이 완료된 시점에서 데이터베이스 상태의 일관되며 완전한 복사를 논리적으로 프리징(freeze)하게 하는 "스냅샷들"을 선언할 수 있게 한다. 이러한 스냅샷들은 클라이언트들로 하여금 특정한 시점"으로부터" 데이터베이스의 재구성된 버전으로서 이해될 수 있는 결과 세트를 반환하기 위해 이들 과거 상태들에 대해 "시점" 질의들을 나중에 실행할 수 있게 한다. 여기에서 개시된 특정한 실시예들은 따라서, 삽입, 판독, 및 업데이트 동작들과 같은 진행 중인 데이터베이스 동작들의 수행에 상당히 영향을 주지 않고, 스냅샷들이 시간에 걸쳐 분산 데이터베이스에 대한 변화들을 완전히 캡처하고 기록하도록 허용하는 고-분해능 보관 및 복원 기능을 제공한다.
다수의 이점들이 개시된 실시예들의 특정한 양상들과 연관된다. 예를 들면, 여기에서 개시된 스냅샷들을 선언하기 위한 기술들은, 진행 중인 데이터베이스 동작들에 악영향을 주지 않고, 백업들이 정기적으로 또는 자동으로 수행될 수 있게 한다. 이러한 기능은 또한 데이터베이스 관리자들이, SQL 질의들을 단독으로 사용하여 반전시키는 것이 종종 어렵거나 또는 그 외 불가능할 수 있는, "펌플-핑거(fumble-finger)" 실수들 및 다른 데이터베이스-변경 이벤트들을 포함하여, 최근의 과거의 문제들을 해결할 수 있게 한다. 또한, 잘못하여-누락된 테이블로부터 데이터를 재구성하는 것은 여기에서 개시된 스냅샷들 및 시점 질의들의 사용 없이 어렵고 지루할 수 있다.
몇몇 실시예들에서, 분산 데이터베이스 시스템은 스냅샷들로의 클라이언트-레벨 액세스를 제공하도록 구성되며, 그에 의해 클라이언트들이 손실된 데이터를 부활시키거나 또는 그 외 잘못된 데이터베이스 동작을 무효로 만들게 할 수 있다. 이러한 실시예들에서, 클라이언트는 특정한 시점으로부터 재구성된 결과 세트를 반환하며, 상기 재구성된 데이터를 사용하여 예전 상태로 데이터베이스를 복원하거나 또는 그 외 "롤백(roll back)"하는 질의를 실행할 수 있다. 이러한 질의들은 또한 동시에 정상적인 기록 및 판독 동작들을 수행하는 데이터베이스 상에서 수행될 수 있다. 뿐만 아니라, 몇몇 실시예들에서, 데이터베이스 관리자들은 특정한 스냅샷을 선택하며 선택된 스냅샷에 기초하여 지속적 저장 장치로 데이터베이스의 일관된 사본을 저장하는 백업 루틴들을 실행할 수 있다. 따라서, 돌발 고장의 경우에, 분산 데이터베이스 시스템은 이러한 오프라인 백업으로부터 복원되며 정상 동작으로 다시 이동될 수 있다.
아키텍처 및 동작
도 1은 본 개시의 실시예에 따라, 지속적 저장 장치에서 일관된 데이터베이스 스냅샷들을 캡처하고 유지하도록 구성된 상호 연결된 노드들을 포함한 예시적인 분산 데이터베이스 시스템(100)을 예시한다. 예시적인 실시예에서 도시된 바와 같이, 분산 데이터베이스 시스템(100)의 아키텍처는 3개의 논리적 티어들: 관리 티어(105), 트랜잭션 티어(107), 및 영속성 티어(109)에 할당된 다수의 데이터베이스 노드들을 포함한다. 분산 데이터베이스 시스템(100)을 포함한 노드들은 진행 중인 데이터베이스 동작들을 조정하기 위해 서로 직접 및 안전하게 통신할 수 있는 피어 노드들이다. 따라서, 적어도 하나의 데이터베이스 노드가 트랜잭션 티어(107) 및 영속성 티어(109)의 각각 내에서 동작적인 한, SQL 클라이언트들(102)은 분산 데이터베이스 시스템(100) 내에서 호스팅된 데이터베이스들을 연결하고 그것에 대하여 트랜잭션들을 수행할 수 있다.
보다 상세하게, 분산 데이터베이스 시스템(100)은 임의의 수의 호스트 컴퓨터들(도시되지 않음) 상에서 실행된 임의의 수의 데이터베이스 노드들(예로서, 노드들(106a 내지 106c, 108 및 110))을 포함한 탄력적으로-확장 가능한 데이터베이스 시스템이다. 예를 들면, 데이터베이스 노드들은 데이터베이스 성능 및 트랜잭션 스루풋을 "규모 확장(scale out)"시키거나 또는 그 외 증가시키기 위해 새롭게 부가된 노드들을 사용하는 분산 데이터베이스 시스템(100)을 갖고, 즉석으로 임의의 지점에서 부가되고 제거될 수 있다. 본 개시를 고려하여 이해될 바와 같이, 분산 데이터베이스 시스템(100)은 메모리-내 구조들과 데이터의 디스크-상 표현들(예로서, 페이지들)을 단단히 결합시키는 종래의 데이터베이스 접근법들에서 벗어난다. 대신에, 여기에서 개시된 특정한 실시예들은 유리하게는 메모리-중심 데이터베이스를 제공하며, 여기에서 각각의 피어 노드는 진행 중인 트랜잭션들 동안 효율적인 업데이트들을 위해 캐싱된 데이터베이스의 활성 부분들을 유지하기 위해 이용될 수 있는 휘발성 메모리(예로서, 랜덤-액세스 메모리)에서 메모리 캐시를 구현한다. 또한, 영속성 티어(109)의 데이터베이스 노드들은 이들 변화들을 지속적이게 하기 위해(예로서, 그것들이 재부트들, 전력 손실, 애플리케이션 충돌들을 견뎌내도록) 물리적 저장 디바이스들에 대한 이들 메모리-내 업데이트들을 커밋(commit)할 수 있는 저장 인터페이스들을 구현할 수 있다. 분산 메모리 캐시들 및 지속성 저장 인터페이스들의 이러한 조합은 일반적으로 여기에서 지속성 분산 캐시(DDC)로서 불리운다.
실시예에서, 데이터베이스 노드들은, 지속적 저장 장치로부터 데이터베이스의 부분들을 검색하기 위한 디스크 판독들의 비용을 회피하기 위해, 이용 가능하다면, 피어 노드의 캐시 메모리에 존재하는 데이터베이스의 부분들을 요청할 수 있다. 이것과 관련하여 사용될 수 있는 지속적 저장 장치의 예들은 하드 드라이브, 네크워크 접속 저장 디바이스(NAS), 독립 디스크들의 이중화 어레이(RAID), 및 임의의 다른 적절한 저장 디바이스를 포함한다. 본 개시를 고려하여 이해될 바와 같이, 분산 데이터베이스 시스템(100)은 SQL 클라이언트들(102)로 하여금 단일 장애점 없이 단일의, 논리 데이터베이스인 것으로 보이는 것을 보며, 유리하게는 ACID 속성들을 제공하면서 캐시 메모리(예로서, 휘발성 RAM)에서 데이터베이스의 사용 중인 부분들을 유지하는 트랜잭션들을 수행할 수 있게 한다.
SQL 클라이언트들(102)은, 예를 들면, SQL 질의들을 구성하고 실행하도록 구성되는 임의의 애플리케이션 또는 프로세스로서 구현될 수 있다. 예를 들면, SQL 클라이언트들(102)은 예를 들면, 자바 데이터베이스 연결성(JDBC), 개방 소스 데이터베이스 연결성(ODBC), PHP 데이터 오브젝트들(PDO), 또는 관계형 데이터베이스로부터의 데이터를 전달하고 이용하도록 구성되는 임의의 다른 데이터베이스 드라이버를 포함하여, 다양한 데이터베이스 드라이버들 및/또는 어댑터들을 구현한 사용자 애플리케이션들일 수 있다. 상기 논의된 바와 같이, SQL 클라이언트들(102)은 단일의, 논리 데이터베이스로서 분산 데이터베이스 시스템(100)을 볼 수 있다. 이를 위해, SQL 클라이언트들(102)은, 얼마나 많은 데이터베이스 노드들이 분산 데이터베이스 시스템(100)을 포함하는지에 대한 고려 없이, 단일 데이터베이스 호스트(예로서, 단일 호스트명 또는 인터넷 프로토콜(IP) 어드레스를 이용한)인 것처럼 보이는 것을 다룬다.
트랜잭션 티어(107) 내에서, 복수의 TE 노드들(106a 내지 106c)이 도시된다. 트랜잭션 티어(107)는, 애플리케이션에 의존하여, 보다 많거나 또는 보다 적은 TE들을 포함할 수 있으며, 도시된 수는 본 개시를 제한하는 것으로 보여져서는 안된다. 이하에서 추가로 논의되는 바와 같이, 각각의 TE는 SQL 클라이언트들(102)로부터 SQL 클라이언트 연결들을 수용하며 동시에 분산 데이터베이스 시스템(100) 내에서 데이터베이스에 대하여 트랜잭션들을 수행할 수 있다. 원칙적으로, SQL 클라이언트들(102)은 데이터베이스 질의들 및 트랜잭션들을 수행하기 위해 TE들 중 임의의 것을 액세스할 수 있다. 그러나, 및 이하에서 논의되는 바와 같이, SQL 클라이언트들(102)은 유리하게는, 차례로 설명될 바와 같이, "연결 중개자"로서 작동하는 에이전트 노드를 통해 저-대기시간 연결을 제공하는 이들 TE들을 선택할 수 있다.
영속성 티어(109) 내에서, SM(108) 및 SSM(110)이 도시된다. 실시예에서, SM(108) 및 SSM(110)의 각각은 각각 지속성 저장 위치(112 및 114) 내에서 데이터베이스의 전체 보관을 포함한다. 실시예에서, 지속성 저장 위치들(112 및 114)은 SM(108) 및 SSM(110)에 대해 국소적일 수 있다(예로서, 동일한 호스트 컴퓨터 내에서). 예를 들면, 지속적 저장 위치들(112 및 114)은 복수의 물리 저장 디바이스들을 포함한 스피닝 하드 드라이브, 고체-상태 하드 드라이브, 또는 레이드 어레이(raid array)와 같은 물리 저장 디바이스로서 구현될 수 있다. 다른 경우들에서, 지속성 저장 위치들(112 및 114)은, 본 개시를 고려하여 명백할 바와 같이, 예를 들면, 네트워크 위치들(예로서, NAS) 또는 다른 적절한 원격 저장 디바이스들 및/또는 기기들로서 구현될 수 있다.
실시예에서, 분산 데이터베이스 시스템(100)의 각각의 데이터베이스 노드(TE들(106a 내지 106c), SM(108) 및 SSM(110))는 C, C++, 자바, 파이썬(Python) 또는 다른 적절한 프로그래밍 언어들로부터 컴파일링된 기계-판독 가능한 지시들을 포함한 컴퓨터 프로그램 제품을 포함할 수 있다. 이들 지시들은 주어진 호스트 컴퓨터의 메모리에서와 같은, 비-일시적 컴퓨터-판독 가능한 매체상에 저장될 수 있으며, 실행될 때 주어진 데이터베이스 노드 인스턴스가 인스턴스화되고 실행되게 한다. 이하에서 논의되는 바와 같이, 에이전트 노드는 프로세서로 하여금 주어진 데이터베이스 노드에 대응하는 지시들을 실행하게 함으로써 데이터베이스 노드들의 이러한 인스턴스화 및 실행을 야기할 수 있다. 분산 데이터베이스 시스템(100)의 데이터베이스 노드들을 인스턴스화하며 실행할 수 있는 하나의 이러한 컴퓨팅 시스템(1100)이 도 9에 대하여 이하에서 논의된다.
실시예에서, 관리 티어(105), 트랜잭션 티어(107), 및 영속성 티어(109)의 각각의 데이터베이스 노드들은 하나 이상의 통신 네트워크들(101)을 통해 통신가능하게 결합된다. 실시예에서, 이러한 통신 네트워크들(101)은, 예를 들면, 하나 이상의 데이터 수송 프로토콜들을 이용한 두 개의 포인트들(예로서, 호스트 컴퓨터 상에서 작동하는 노드들) 사이에서 데이터 교환들(예로서, 패킷들)을 가능하게 하는 물리적 또는 무선 통신 네트워크로서 구현될 수 있다. 몇몇 이러한 예시적인 프로토콜들은 송신 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 공유 메모리, 파이프들 또는 본 개시를 고려하여 명백할 임의의 다른 적절한 통신 수단들을 포함한다. 몇몇 경우들에서, SQL 클라이언트들(102)은 IP 어드레스를 향하는 광역 네트워크(WAN)를 통해 분산 데이터베이스 시스템(100)의 다양한 데이터베이스 노드들을 액세스할 수 있다. 또한, 분산 데이터베이스 시스템(100) 내에서의 각각의 데이터베이스 노드가 실질적으로 네트워크 연결성이 있는 어디든 위치될 수 있으므로, 암호화된 점-대-점 연결들(예로서, 가상 사설 네트워크(VPN)) 또는 다른 적절한 보안 연결 유형들이 데이터베이스 노드들 사이에서 수립될 수 있다.
관리 도메인들
도시된 바와 같이, 관리 티어(105)는 데이터베이스 구성들을 관리하도록 구성되며, 데이터베이스 리소스들을 호스팅할 컴퓨터 시스템들 상에서 실행되는 에이전트 노드들(104)을 포함한다. 따라서, 및 실시예에 따르면, 에이전트 노드의 실행은 호스트 컴퓨터가 데이터베이스 노드들을 작동시키기 위해 이용 가능하게 하며, 호스트 컴퓨터가 분산 데이터베이스 시스템(100)에 가시적이게 하는 권한 설정(provisioning) 단계이다. 이들 권한 설정된 호스트 컴퓨터들의 모음은 일반적으로 여기에서 관리 도메인으로 불리운다. 각각의 관리 도메인은 데이터베이스들을 작동시키기 위해 이용 가능한 리소스들의 풀을 정의하며, 이들 데이터베이스 리소스들을 관리하거나 또는 그 외 액세스하기 위한 사용자들에 대한 허가들을 포함하는 논리적 경계이다. 예를 들면, 그리고 도 1에 도시된 바와 같이, 분산 데이터베이스 시스템(100)은 분산 데이터베이스 시스템(100)의 데이터베이스 노드들, 및 이들 데이터베이스 노드들을 실행하는 하나 이상의 각각의 호스트 컴퓨터들(도시되지 않음)을 포함하는 하나의 이러한 관리 도메인(111)을 포함한다.
주어진 관리 도메인에 대해, 호스트 컴퓨터들의 각각 상에서 구동하는 에이전트 노드는 데이터베이스를 시작하며 정지시키고, 이들 노드들 및 호스트 컴퓨터의 리소스들을 모니터링하며, 다른 호스트-국소적 태스크들을 수행할 책임이 있다. 또한, 각각의 에이전트 노드는 새로운 데이터베이스 노드들이, 예를 들면, 트랜잭션 스루풋을 증가시키기 위해 및/또는 분산 데이터베이스 시스템(100) 내에서 이용 가능한 저장 위치들의 수를 증가시키기 위해 실행될 수 있게 한다. 이것은 분산 데이터베이스 시스템(100)으로 하여금 새로운 호스트 컴퓨터들 및/또는 데이터베이스 노드들이 변화하는 데이터베이스 요구들을 충족시키기 위해 요구-시 방식으로 부가될 수 있으므로 탄력적일 수 있게 한다. 예를 들면, 데이터베이스 노드들은 데이터베이스가 구동 중인 동안(예로서, 진행 중인 데이터베이스 동작들 동안) 즉석으로 부가될 수 있으며, 이들 데이터베이스 노드들은 관리 도메인(111) 내에서 안전한 점-대-점 통신을 수행하기 위해 그것들의 피어 노드들을 갖고 자동으로 인증할 수 있다.
실시예에서, 에이전트들(104) 중 하나 이상은 연결 중개자로서 동작하도록 추가로 구성될 수 있다. 연결 중개자 역할은 관리 도메인에서의 모든 에이전트들, 및 그에 따라 그 안에서의 모든 노드들, 데이터베이스들 및 이벤트들(예로서, 진단, 에러 관련, 정보)의 전역적 뷰를 가능하게 한다. 또한, 연결 중개자 역할은 SQL 클라이언트들(102) 및 TE들(106a 내지 106c) 사이에서 로드-밸런싱을 가능하게 한다. 예를 들면, SQL 클라이언트들(102)은 연결들을 제공하며 다른 TE들에 비교하여 비교적 낮은 대기 시간을 갖고 트랜잭션들을 실행할 수 있는 TE의 식별자(예로서, IP 어드레스, 호스트명, 별명(alias), 또는 논리 식별자)를 수신하기 위해 연결 중개자로서 구성된 특정한 에이전트 노드에 연결할 수 있다. 실시예에서, 로드-밸런싱 정책들이 구성 가능하며, 예를 들면, 리소스 이용 및/또는 집약성(예로서, SQL 클라이언트에 지리적으로 가장 가까운 이들 TE들, 또는 가장 빠른 응답 시간을 갖는 이들 TE들에 대한 선호를 갖고)과 같은 인자들에 기초하여 연결성을 최적화하기 위해 이용될 수 있다.
트랜잭션 엔진 아키텍처
도 2a는 본 개시의 실시예에 따른, 분산 데이터베이스 시스템(100) 내에서의 TE들(예로서, TE들(106a 내지 106c))의 아키텍처(200)의 일 예를 묘사한다. 상기 논의된 바와 같이, TE들은 SQL 클라이언트들(102)로부터의 연결들을 수용하며 관리 도메인(111) 내에서 복수의 데이터베이스 노드들에 걸쳐 데이터베이스의 단일의, 논리적 뷰를 가능하게 하는 클라이언트-향 데이터베이스 노드들이다. 따라서, 및 도시된 바와 같이, TE 아키텍처(200)는 SQL 클라이언트 프로토콜 모듈(202)을 포함한다. 실시예에서, SQL 클라이언트 프로토콜 모듈(202)은 원격 연결들을 호스팅하며(예로서, UDP/TCP를 통해) SQL 트랜잭션들을 실행하기 위해 SQL 클라이언트들(102)로부터 패킷들(또는 공유된 메모리/파이프들을 통해 데이터 구조들)을 수신하도록 구성될 수 있다. SQL 파서 모듈(204)은 원격 연결들로부터 SQL 트랜잭션들을 수신하며, 예를 들면, 구문 및 의미론 검증을 검증하는 것, 적절한 허가들이 문장들(statements)을 실행하기 위해 존재하는지를 결정하는 것, 및 질의에 전용된 메모리 및 다른 리소스들을 할당하는 것을 포함한 다양한 기능들을 수행하기 위해 이들 질의들을 파싱하도록 구성된다. 몇몇 경우들에서, 트랜잭션은 몇 개만 예를 들자면, "SELECT", "UPDATE", "INSERT", 및 "DELETE"와 같은 단일 동작을 포함할 수 있다. 다른 경우들에서, 각각의 트랜잭션은 데이터베이스 내에서 다수의 오브젝트들에 영향을 주는 다수의 이러한 동작들을 포함할 수 있다. 이들 경우들에서, 및 이하에서 추가로 논의될 바와 같이, 분산 데이터베이스 시스템(100)은 이들 트랜잭션들이 일관되며 에러들 및 그 외 데이터베이스의 동일한 부분들을 업데이트하는 동시 트랜잭션들(예로서, 동일한 레코드 또는 다른 데이터베이스 오브젝트 상에서의 기록들을 동시에 수행하는)에 의해 야기될 수 있는 다른 변질을 야기하지 않음을 보장하는 협력 접근법을 가능하게 한다.
실시예에서, 최적화기(206)는 주어진 질의를 실행하는 선호된 방식을 결정하도록 구성될 수 있다. 이를 위해, 최적화기(206)는 값비싼 전체-테이블 스캔들을 회피하기 위해 및 가능할 때 캐시 메모리 내에서 데이터베이스의 부분들을 이용하기 위해 인덱스들, 클러스터들 및 테이블 관계들을 이용할 수 있다.
도시된 바와 같이, 예시적인 TE 아키텍처(200)는 원자(atom) 대 SQL 매핑 모듈(208)을 포함한다. 원자 대 SQL 매핑 모듈(208)은 관련 있거나 또는 그 외 수행되는 특정한 트랜잭션에 의해 영향을 받는 데이터베이스의 부분들에 대응하는 원자들의 위치를 찾기 위해 이용될 수 있다. 여기에서 일반적으로 참조되는 바와 같이, 용어("원자")는 현재 버전 및 특정한 유형의 데이터베이스 오브젝트(예로서, 스키마, 테이블들, 로우들, 데이터, 블랍들, 및 인덱스들)에 대한 다수의 이력 버전들을 포함하는 유연한 데이터 오브젝트들 또는 구조들을 나타낸다. TE 노드들 내에서, 원자들은 일반적으로 원자 캐시 모듈에서와 같은, 비-영속성 메모리에 존재하며, 데이터베이스 노드들 사이에서 이것의 통신을 가능하게 하기 위해, 적절한 경우 직렬화되며 역-직렬화될 수 있다. 도 2b에 대하여 이하에서 추가로 논의될 바와 같이, 원자 업데이트들은 SM들 및 SSM들에 의해 지속적 저장 장치에 대해 커밋될 수 있다. 따라서, 원자들은 TE들에 의해 이들 원자들에 대한 요청들을 제공하기 위해 지속적 저장 장치를 이용하는 SM들 및 SSM들에 의해 마샬(marshall)되거나 또는 비-마샬될 수 있다.
실시예에서, 각각의 TE는 대응하는 원자들에 SQL 콘텐트를 매핑시킬 책임이 있다. 일반적으로 여기에서 참조되는 바와 같이, SQL 콘텐트는 예를 들면, 원자들 내에서 표현될 수 있는 테이블들, 인덱스들 및 레코드들과 같은 데이터베이스 오브젝트들을 포함한다. 이 실시예에서, 카탈로그는 분산 데이터베이스 시스템(100) 내에서 주어진 트랜잭션을 수행하기 위해 요구되는 원자들의 위치를 찾기 위해 이용될 수 있다. 마찬가지로, 최적화기(206)는 또한 원자 캐시(210)에서 즉시 이용 가능할 수 있는 원자들을 결정하기 위해 이러한 매핑을 이용할 수 있다.
TE들은 여기에서 SQL-특정 모듈들(202 내지 208)을 포함하는 것으로 설명되지만, 이러한 모듈들은 근본적으로 상이한 방언 또는 프로그래밍 언어를 가진 다른 비-SQL 모듈들로 대체될 수 있는 플러그-앤드-플레이 변환 층들이다. 본 개시를 고려하여 이해될 바와 같이, ACID 속성들은 원자-레벨에서 시행되며, 이것은 분산 데이터베이스 시스템이 여전히 ACID 속성들을 제공하면서 다른 비-SQL 유형 동시 데이터 조작들을 실행할 수 있게 한다.
도 2a를 계속하면, TE 아키텍처(200)는 원자 캐시(210)를 포함한다. 도 1에 대하여 상기 논의된 바와 같이, 원자 캐시(210)는 분산 데이터베이스 시스템(100) 내에서 구현된 DDC의 부분이다. 이를 위해, 및 본 개시의 실시예에 따르면, 원자 캐시(210)는 주어진 TE에 의해 액세스 가능한 RAM에서의 사설 메모리 공간을 호스팅한다. 원자 캐시의 크기는 원하는 구성에 의존하여, 사용자-구성 가능하거나, 또는 호스트 컴퓨터상에서의 모든 이용 가능한 메모리 공간을 이용하도록 사이징될 수 있다. TE가 먼저 실행될 때, 원자 캐시(210)는 마스터 카탈로그를 표현한 하나 이상의 원자들을 갖고 실장된다. 실시예에서, TE는 실행된 트랜잭션들을 만족시키기 위해, 및 특히 다른 피어 노드들(피어 TE들, SM들 및 SSM들을 포함한)의 원자 캐시(210) 내에서의 원자들을 식별하고 요청하기 위해 이러한 마스터 카탈로그를 이용한다. 원자가 임의의 원자 캐시에서 이용 가능하지 않다면, 요청은 지속적 저장 장치로부터 원자를 검색하며 그에 따라 요청된 원자를 SM 또는 SSM의 원자 캐시 내에서 이용 가능하게 하기 위해 분산 데이터베이스 시스템(100) 내에서 SM 또는 SSM으로 전송될 수 있다. 따라서, 원자 캐시(210)는 요구-시 캐시이며, 여기에서 원자들은, 요구에 따라, 하나의 원자 캐시에서 또 다른 것으로 복사될 수 있다는 것이 본 개시를 고려하여 이해되어야 한다. 원자-캐시(210)의 요구-시 특징은 주어진 TE가 다수의 원자들을 검색할 필요성 없이 온-라인으로 빠르고 효율적으로 가져와질 수 있으므로 다양한 성능 강화들을 가능하게 한다는 것이 추가로 이해되어야 한다. 게다가, 주어진 TE는 요구에 따라 원자 캐시(210)로부터 원자들을 제거할 수 있으며, 따라서 도 7a 내지 도 7c에 관하여 이하에서 논의된 복제 절차들에서의 관여를 감소시킬 수 있다.
도 2a를 여전히 계속하면, TE 아키텍처(200)는 동작 실행 모듈(212)을 포함한다. 동작 실행 모듈(212)은 주어진 트랜잭션에 기초하여 원자 캐시(210) 내에서 원자들에 대한 메모리-내 업데이트들(예로서, 데이터 조작들)을 수행하기 위해 이용될 수 있다. 동작 실행 모듈(212)이 원자들에 대한 다양한 메모리-내 업데이트들을 수행하였다면, 트랜잭션 시행 모듈(214)은 주어진 트랜잭션의 콘텍스트 내에서 발생한 변화들이 ACID 속성들을 제공하는 방식으로 수행됨을 보장한다. 상기 논의된 바와 같이, 동시에-실행된 트랜잭션들은 잠재적으로 실행 동안 데이터베이스의 동일한 부분들을 변경할 수 있다. 예시로서, 돈이 데이터베이스에서의 테이블들 및 데이터에 의해 표현된 은행 계좌들 사이에서 이동될 때 발생하는 이벤트들의 시퀀스를 고려하자. 하나의 이러한 예시적인 트랜잭션 동안, 감산 동작은 데이터베이스에서의 하나의 레코드로부터 돈을 감소시키며 그 후 감소된 양을 또 다른 레코드에 더한다. 이러한 예시적인 트랜잭션은 그 후 이들 레코드 변화들이 "지속적"이거나 또는 그 외 영속적이게 하는(예로서, 하드 드라이브 또는 다른 비-휘발성 저장 영역에서) 커밋 동작에 의해 완료된다. 이제 데이터베이스의 동일한 부분들에서 데이터를 조작하는 두 개의 이러한 트랜잭션들이 동시에 수행되는 경우를 고려하자. 이러한 상황에 대한 신중한 고려 없이, 각각의 트랜잭션은 완전히 완료하기 전에 실패할 수 있거나, 또는 그 외 데이터베이스 내에서 비일관성을 야기할 수 있다(예로서, 하나의 계좌로부터 감하여졌지만 또 다른 것으로 입금되지 않은 돈, 계좌로 인출되거나 또는 부가된 부정확한 양, 및 다른 예상되지 않고 바람직하지 않은 결과들). 이것은 하나의 트랜잭션이 데이터를 변경하거나 또는 그 외 조작하여 다른 트랜잭션으로 하여금 상기 데이터의 유효하지 않은 또는 중간 상태를 "보게" 할 수 있기 때문에 그렇다. 동시 트랜잭션들에도 불구하고 이러한 고립성 및 일관성 위반들을 회피하기 위해, 및 본 개시의 실시예에 따르면, 분산 데이터베이스 시스템(100)은 ACID 속성들을 이용한다. 이들 속성들은 테이블 또는 로우 레벨이 아닌, 원자-레벨에서 이용될 수 있다. 이를 위해, 동시성은, 원자들이 SQL 구조들을 포함한다는 특정 지식을 가진 분산 데이터베이스 시스템(100) 없이 일반적인 방식으로 처리된다. 분산 데이터베이스 시스템(100)의 콘텍스트 내에서의 ACID 속성들의 적용이 이제 차례로 논의될 것이다.
원자성은 트랜잭션이 실패한다면, 데이터베이스 상태가 변경되지 않은 채로 있도록 트랜잭션들이 소위 "양자택일(all or nothing)" 방식으로 완료됨을 나타낸다. 결과적으로, 트랜잭션들은 나눌 수 있으며("원자적") 완전히 완료하거나, 또는 완전히 실패하지만, 결코 부분적으로 수행하지 않는다. 이것은 분산 데이터베이스(100)의 콘텍스트에서 중요하며, 여기에서 트랜잭션은 트랜잭션을 프로세싱하는 주어진 TE의 원자 캐시 내에서의 원자들뿐만 아니라, 또한 이들 원자들의 사본을 가진 모든 데이터베이스 노드들에도 영향을 미친다. 이하에서 논의될 바와 같이, 원자들에 대한 변화들은 각각의 데이터베이스 프로세스에 대해 비동기식 방식으로 전달될 수 있으며, 이들 노드들은 트랜잭션이 모든 관심 데이터베이스 노드들로 커밋 메시지를 방송하는 TE 프로세싱의 트랜잭션 시행 모듈(214) 후에만 그것들 각각의 원자 사본들에 대한 업데이트들을 완료한다. 이것은 또한, 원자 업데이트들이 최종적으로 커밋될 때 단지 유효한 데이터만이 데이터베이스에 대해 커밋되므로, 일관성을 제공한다. 또한, 고립성은 동시 실행된 트랜잭션들이 불완전하거나 또는 그 외 변화의 중간 상태에 있는 데이터의 버전들을 "보지" 않으므로 달성된다. 이하에서 추가로 논의되는 바와 같이, 지속성은 SM 및 SSM 데이터베이스 노드들에 의해 제공되고, 이것은 또한 TE들에 의한 트랜잭션 프로세싱 동안 원자 업데이트들을 수신하며, 커밋을 확인응답하기 전에 지속적 저장 장치에 대한 이들 업데이트들을 완료한다(예로서, 물리적 저장 위치에 대해 원자들을 직렬화함으로써). 실시예에 따르면, SM 또는 SSM은 커밋을 확인응답하기 전에 변화들을 효율적으로 변화들을 저널링하며, 그 후 배치들에서 주기적으로 지속적 저장 장치에 대해 원자들을 직렬화할 수 있다(예로서, 게으른-쓰기(lazy-write)를 이용한).
ACID 속성들을 준수하기 위해, 및 기록 동작들 동안 잠금들로 인한 바람직하지 않은 지연들을 완화시키기 위해, 트랜잭션 시행 모듈(214)은 다중-버전 동시 제어(MVCC)를 이용하도록 구성될 수 있다. 실시예에서, 트랜잭션 시행 모듈(214)은 데이터의 여러 버전들이 주어진 데이터베이스에서 동시에 존재하도록 허용함으로써 MVCC를 구현한다. 그러므로, 원자 캐시(및 지속적 저장 장치)는 상이한 버전들의 데이터가 동시에 가시적인 진행 중인 질의들을 제공하기 위해 사용된 데이터베이스 데이터 및 메타데이터의 다수의 버전들을 유지할 수 있다. 특히, 및 도 4에 도시된 예시적인 원자 구조를 참조하여, 원자들은 현재 트랜잭션들에 의해 사용될 수 있는 정규(현재) 버전 및 미리 정의된 수의 계류 중인 또는 그 외 이력적 버전들을 포함할 수 있는 오브젝트들이다. 이를 위해, 원자 버전화는 원자들 자체가 아닌, 원자들 내에서의 데이터의 버전들에 대하여 성취된다. 버전은 대응하는 트랜잭션이 성공적으로 커밋할 때까지 계류 중이라고 고려된다는 것을 주의하자. 그러므로, 원자들의 구조 및 기능은 별개의 버전들이 어떤 변화들도 제자리에서(예로서, 지속적 저장 장치에서) 발생하지 않도록 캐시에 유지될 수 있게 하며; 오히려, 업데이트들은 롤백이 원자 캐시로부터 계류 중인 업데이트를 누락시킴으로써 수행될 수 있으므로 소위 "낙관적" 방식으로 전달될 수 있다. 실시예에서, 그것들 각각의 원자 캐시(또는 지속적 저장 장치)에서 동일한 원자의 사본을 갖는 모든 관심 데이터베이스 노드들에 대한 업데이트들은 비동기식으로 전달될 수 있으며(예로서, 통신 네트워크를 통해), 따라서 트랜잭션으로 하여금 트랜잭션이 성공적으로 커밋할 것이라는 가정을 갖고 진행되도록 허용한다.
도 2a를 계속하면, 예시적인 TE 아키텍처(200)는 언어-중립 피어 통신 모듈(216)을 포함한다. 실시예에서, 언어-중립 피어 통신 모듈(216)은 분산 데이터베이스 시스템(100) 내에서의 피어 노드들 간에 저-레벨 메시지들을 전송하고 수신하도록 구성된다. 이들 메시지들은, 다른 것들 중에서, 원자들을 요청하고, 복제 메시지들을 방송하고, 트랜잭션들을 커밋하며, 다른 데이터베이스-관련 메시지들에 대한 책임이 있다. 여기에서 일반적으로 참조된 바와 같이, 언어-중립은 반드시 SQL인 것은 아닌 데이터베이스 노드들 사이에서 이용될 수 있는 일반 텍스트 또는 이진-기반 프로토콜을 나타낸다. 이를 위해, SQL 클라이언트 프로토콜 모듈(202)이 통신 네트워크(101)를 통해 SQL-기반 메시지들을 수신하도록 구성되지만, 통신 네트워크(101)를 사용하여 에이전트들, TE들, SM, 및 SSM들 사이에서 이용된 프로토콜은, 본 개시를 고려하여 명백할 바와 같이, 상이한 프로토콜 및 포맷일 수 있다.
저장 관리기 아키텍처
도 2b는 본 개시의 실시예에 따른, 분산 데이터베이스 시스템(100) 내에서의 SM들(예로서, SM(108))의 아키텍처(201)의 일 예를 묘사한다. 각각의 SM은 분산 데이터베이스 시스템(100) 내에서의 데이터베이스의 그 자신의 전체 아카이브를 다루도록 구성된다. 상기 논의된 바와 같이, 분산 데이터베이스 시스템(100) 내에서의 각각의 데이터베이스는 근본적으로 복수의 원자 오브젝트들(예로서, 대 페이지들 또는 다른 메모리-정렬 구조들)로서 지속된다. 따라서, ACID 속성들을 고수하기 위해, SM들은 일단 트랜잭션들이 커밋되면 물리 저장 장치에 대한 원자 업데이트들을 저장할 수 있다. ACID는 일단 트랜잭션들이 커밋되면, 상기 데이터가 그 외 확정적으로 제거될 때까지 저장 장치에 영구적으로 지속되도록 데이터의 지속성을 필요로 한다. 이를 위해, SM들은 트랜잭션들을 수행하는 TE 노드들(예로서, TE들(106a 내지 106c))로부터 원자 업데이트들을 수신하며, 예를 들면, 도 2a에 대하여 상기 논의된 바와 같이, MVCC를 이용하는 방식으로 이들 트랜잭션들을 커밋한다. 따라서, 본 개시를 고려하여 명백할 바와 같이, SM들은 그것들이 그것들 각각의 국소적 원자 캐시들 내에서 원자들의 메모리-내 업데이트들을 수행할 수 있으므로 TE들과 유사하게 기능하지만; SM들은 결국 이러한 수정된 원자들을 지속적 저장 장치로 기록한다. 또한, 각각의 SM은 분산 데이터베이스 시스템(100) 내에서 피어 데이터베이스 노드들로부터 원자 요청 메시지들을 수신하고 제공하도록 구성될 수 있다.
몇몇 경우들에서, 원자 요청들은 SM의 원자 캐시로부터의 요청된 원자들을 반환함으로써 제공될 수 있다. 그러나, 및 실시예에 따르면, 요청된 원자는 주어진 SM의 원자 캐시에서 이용 가능하지 않을 수 있다. 이러한 상황들은 일반적으로 지속적 저장 장치가 이들 원자들을 검색하고, 그것들을 국소적 원자 캐시로 로딩하며, 이들 원자들을 이들 원자들을 요청하는 데이터베이스 노드로 제공하기 위해 SM에 의해 액세스되어야 하기 때문에 약간의 성능 페널티가 있으므로 여기에서 "손실들"로서 불리운다. 예를 들면, 손실은 그것이 그 각각의 캐시에서 원자를 액세스하려고 시도하며 상기 원자가 존재하지 않을 때 TE, SM 또는 SSM에 의해 경험될 수 있다. 이 예에서, TE는 또 다른 피어 노드(예로서, TE, SM, 또는 SSM)로부터 상기 손실 원자를 요청함으로써 손실에 응답한다. 반대로, SM은 또 다른 피어 노드(예로서, TE, SM, 또는 SSM)로부터 상기 손실 원자를 요청함으로써, 또는 어떤 피어 노드들도 그것들 각각의 원자 캐시에 캐싱된 원자를 갖지 않는다면 지속적 저장 장치로부터 상기 손실 원자를 로딩함으로써 손실에 응답한다. 이를 위해, 노드는 손실에 대한 몇몇 성능 페널티를 초래한다. 몇몇 경우들에서, 두 개의 손실들이 있을 수 있다는 것을 주의하자. 예를 들면, TE는 손실되고 SM으로부터의 원자를 요청할 수 있으며, 결과적으로, SM은 손실되고(예로서, 요청된 원자가 SM의 원자 캐시에 없다) 디스크로부터 요청된 원자를 로딩할 수 있다.
도시된 바와 같이, 예시적인 SM 아키텍처(201)는 도 2a의 예시적인 TE 아키텍처(200)에 대하여 상기 설명된 것들(예로서, 언어-중립 피어 통신 모듈(216), 및 원자 캐시(210))과 유사한 모듈들을 포함한다. 이들 공유된 모듈들은 노드가 속하는 특정한 논리 티어의 요구들 및 요건들에 적응 가능하며, 따라서 트랜잭션(예로서, TE들) 및 영속성-관련 데이터베이스 노드들(예로서, SM들 및 SSM들) 양쪽 모두에 의해 일반적 또는 소위 "플러그-앤드-플레이" 방식으로 이용될 수 있다는 것이 이해되어야 한다. 그러나, 및 도시된 실시예에 따르면, 예시적인 SM 아키텍처는 또한 트랜잭션 관리기 모듈(220), 저널 모듈(222), 및 저장 인터페이스(224)를 포함한 부가적인 영속성-중심 모듈들을 포함한다. 이들 영속성-중심 모듈들의 각각이 이제 차례로 논의될 것이다.
상기 논의된 바와 같이, SM 노드는 분산 데이터베이스 시스템(100) 내에서 하나 이상의 데이터베이스들의 전체 보관을 다룰 책임이 있다. 이를 위해, SM은 하나 이상의 TE들(예로서, TE들(106a 내지 106c)) 상에서 발생하는 트랜잭션들 동안 원자 업데이트들을 수신하며 트랜잭션이 성공적으로 완료되었다고 가정하면, 커밋에서의 업데이트들이 TE에 대한 상기 커밋을 확인응답하기 전에 지속적이게 함을 보장할 임무가 있다. 예시적인 SM 아키텍처(201)의 콘텍스트 내에서, 이것은 트랜잭션 관리기 모듈(220)이, 그것들이 각각의 TE 노드에서 커밋되는 순서로 그것들이 지속적이게 하는 커밋된 트랜잭션들에 대해 부분 순서를 시행하는 것에 의해 가능해진다. 모든 데이터베이스-관련 데이터가 원자들에 의해 표현되므로, 실시예에 따르면, 분산 데이터베이스 시스템(100) 내에서의 트랜잭션들도 또한 그렇다. 이를 위해, 트랜잭션 관리기 모듈(220)은 지속적 저장 장치 내에 트랜잭션 원자들을 저장할 수 있다. 이해될 바와 같이, 이것은 SM들이 데이터-관련 원자들(예로서, 레코드 원자들, 데이터 원자들, 블랍 원자들)의 다수의 버전들을 논리적으로 저장하며 특정한 원자 내에서 가시적인 데이터의 현재 버전, 및 결과적으로 TE 상에서 수행된 트랜잭션에 가시적인 전체 현재 데이터베이스 상태를 결정하기 위해 소위 "가시성" 루틴들을 수행할 수 있게 한다. 또한, 및 실시예에 따르면, 저널 모듈(222)은 원자 업데이트들이 SM의 지속성을 시행하기 위해 저널링될 수 있게 한다. 저널 모듈(222)은 변화들이 저널로 효율적으로 기록될 수 있게 하는 차이들(diffs)의 첨부-전용 세트로서 구현될 수 있다.
도시된 바와 같이, 예시적인 SM 아키텍처(201)는 또한 저장 인터페이스 모듈(224)을 포함한다. 저장 인터페이스 모듈(224)은 SM이 SM에 국소적이거나 또는 원격인 물리(지속성) 저장 장치로부터 기록하고 판독할 수 있게 한다. 정확한 유형의 저장 장치(예로서, 국소적 하드 드라이브, 레이드, NAS 저장 장치, 클라우드 저장 장치)가 특히 본 개시에 관련되지는 않지만, 분산 데이터베이스 시스템(100) 내에서의 각각의 SM은 상이한 저장 서비스를 이용할 수 있다는 것이 이해되어야 한다. 예를 들면, 제 1 SM은, 예를 들면, 원격 아마존 엘라스틱 블록(EBS) 볼륨을 이용할 수 있는 반면 제 2 SM은, 예를 들면, 아마존 S3 서비스를 이용할 수 있다. 따라서, 이러한 혼합-모드 저장 장치는 지속성에 대한 하나의 유리한 성능을 둘 이상의 저장 위치들에 제공할 수 있으며, 그 역 또한 마찬가지이다. 이를 위해, 및 실시예에 따르면, TE들, SM들 및 SSM들은 그것들의 피어 노드들의 반응성을 추적하기 위해 비용 함수들을 구동할 수 있다. 이 실시예에서, 노드가 지속적 저장 장치로부터 원자를 필요로 할 때(예로서, "손실"로 인해), 지속적 저장 장치 액세스에 관련된 대기 시간들은 요청을 제공하기 위해 어떤 SM을 이용할지를 결정할 때 인자들 중 하나일 수 있다.
스냅샷 저장 관리기 아키텍처
도 2c는 본 개시의 실시예에 따라, 분산 데이터베이스 시스템(100) 내에서의 SSM(예로서, SSM(110))의 아키텍처(203)의 일 예를 묘사한다. 본 개시를 고려하여 이해될 바와 같이, 예시적인 SSM 아키텍처(203)는 각각의 노드가 피어-투-피어 통신에 참여하며(예로서, 언어-중립 피어 통신을 이용하여), TE들로부터 트랜잭션-관련 메시지들을 수신함에 따라 예시적인 SM 아키텍처(201)의 것과 유사한다. 예를 들면, 및 도시된 바와 같이, SSM들은, 상기 설명된 바와 같이, 각각의 SSM으로 하여금 트랜잭션들을 수신하고, 원자들을 업데이트하며, SM의 것과 유사한 지속적 저장 장치에 대한 업데이트들(예로서, ACID 속성들, 및 MVCC 기능을 구현하기 위해)을 커밋할 수 있게 하는 언어-중립 피어 통신 모듈(216), 트랜잭션 모듈(220), 원자 캐시(210), 저널 모듈(222), 및 저장 인터페이스 모듈(224)을 포함할 수 있다. 그러나, 본 개시를 고려하여 이해될 바와 같이, 영속성 티어(109) 내에서의 SSM의 역할은, SM들이 하는 바와 같이, 단지 현재 데이터베이스 상태보다는, 현재 데이터베이스 상태 외에 과거 데이터베이스 상태들을 저장하고 어드레싱하는 것을 포함한다. 분산 데이터베이스 시스템(100)이 ACID 속성들을 고수할 수 있으므로, 이들 과거 상태들은 트랜잭션이 커밋된 특정한 시점에서 데이터베이스의 "뷰들" 또는 일관된 시점 스냅샷들이다. 스냅샷들은 반드시 트랜잭션이 완료된 절대 시점에서 생성되는 것은 아니며; 오히려, "시점"은 일반적으로 그 뒤에 커밋하고 데이터베이스 데이터를 조작하는 다른 트랜잭션들에 대해, 스냅샷에 의해 표현된, 데이터베이스의 상태를 나타내는 것임을 주의하자. 이를 위해, 스냅샷이 선언되거나 또는 그 외 생성되는 시점은, 예를 들면 타겟 트랜잭션이 완료되는 정확한 순간에 있을 필요는 없다. 몇몇 실시예들에서, 예를 들면, 스냅샷이 생성되는 시점은 타겟 트랜잭션의 완료 후 및 임의의 다른 뒤이은 트랜잭션이 상기 스냅샷의 데이터를 추가로 변경하기 전 임의의 시간일 수 있다. 도 8b에 관하여 이하에서 논의되는 바와 같이, 이들 과거 데이터베이스 상태들은, 예를 들면, TE가 주로 표준 SQL 구문을 갖지만 어떤 스냅샷이 그에 대한 질의를 수행할지를 식별하는 부가적인 키워드를 갖고 거동하는 구문을 가진 SQL 문장을 실행함으로써 판독-전용 방식으로 질의될 수 있다.
스냅샷들의 몇몇 양상들은 예시에 의해 보다 양호하게 이해될 수 있다. 이제 도 3a를 참조하면, 블록도가 본 개시의 실시예에 따라, 각각의 트랜잭션이 주어진 TE 프로세스에 의해 커밋된 후 SSM에 의해 수신되고 전 순서(300)로 배열된 복수의 트랜잭션들(T1 내지 T24)을 예시한다. 도 2c에 대하여 이하에서 추가로 논의되는 바와 같이, 트랜잭션들은 부기 태스크들을 가능하게 하기 위해 앨범들로 조직될 수 있다. 분산 데이터베이스 시스템(100)이 둘 이상의 SSM들을 포함한다면, SSM들은 트랜잭션들이, 일반적으로 여기에서 SSM-동의 전 순서로서 불리우는, 모든 SSM들에 걸쳐 동일하게 순서화됨을 보장하기 위해 협력할 수 있다. 도시된 전 순서는 트랜잭션들이 TE들에 의해 커밋된 순서와 일치하지만, 그것은 반드시 그것들 각각의 순차적으로 할당된 트랜잭션 식별자들(T1 내지 T24)에 매칭되는 것은 아닐 수 있다는 것을 추가로 주의하자. 이것은 트랜잭션들이 다수의 TE들에 걸쳐 동시에 발생할 수 있기 때문이다. 각각의 SSM의 커밋들의 순서를 모든 TE와 일치하게 하기 위해, TE에 의해 몇몇 순서로 커밋된 트랜잭션들의 시퀀스는 각각의 SSM에서 상기 동일한 순서로 나타나야 한다. 각각의 트랜잭션이 데이터베이스의 그 자신의 일관된 "뷰"를 가지므로, 커밋들의 순서를 레코드 버전 가시성과 일치하게 하기 위해, 각각의 SSM에서 트랜잭션들의 전 순서는 또한 원자들에 적용된 레코드 버전 업데이트들과 일치하게 된다. 이를 위해, 각각의 SSM은 이들 순서화 제약들을 만족시키는 순서에 동의하며, 따라서 SSM-동의 전 순서를 생성한다.
실시예에서, 스냅샷 관리기 모듈(226)은 각각의 트랜잭션이 커밋한 후 스냅샷을 자동으로 선언하도록 구성될 수 있다. 스냅샷 저장 관리기는 또한 선택적으로 이러한 선언이 트랜잭션 자체 내에서 명시적으로 이루어진다면 스냅샷들을 선언하도록 구성된다. 예를 들면, 스냅샷들이 트랜잭션 엔티티들이므로, 스냅샷들은 삽입들, 삭제들 및 업데이트들과 같은, 트랜잭션의 부분으로서 다른 데이터 조작 언어(DML)와 함께 선언되고 커밋될 수 있다. 일반적으로, 단지 하나의 스냅샷은, 스냅샷들이 트랜잭션적으로 일관되며 부분적으로-적용된 트랜잭션 효과들 또는 업데이트들의 결과인 일관되지 않은 상태를 노출하지 않으므로, 트랜잭션의 부분으로서 선언된다. 스냅샷이 트랜잭션 동안 선언되면, 스냅샷은 논리적으로 트랜잭션의 부분으로서 원자적으로 이용될 것이며, 트랜잭션의 효과들(예로서, 삽입들, 업데이트들, 삭제들 등)을 포함한다. 트랜잭션의 DML은 스냅샷이 커밋 문장 자체의 부분으로서 선언되도록 선택적으로 구조화된다. 스냅샷들이 트랜잭션 상태의 부분이므로, 그것들은 지속적이다. 몇몇 경우들에서, 스냅샷들은 기록-헤드 로그 파일, 또는 각각의 트랜잭션들과 스냅샷들을 상관시키는 다른 위치에서 엔트리들로서 저장된다. 하나의 이러한 예시적인 트랜잭션(301)의 구문이 도 3b에서 묘사된다. 도시된 바와 같이, DML(304)은, 커밋될 때, 버전 업데이트들의 형태로 복수의 데이터 원자들을 업데이트한다. 예를 들면, 테이블("예약들")은 몇 개만 예를 들자면, 하나 이상의 테이블 원자들 및 인덱스 원자들과 연관된다. 이를 위해, 예약 테이블에서 레코드(컬럼 "룸"을 가진 로우는 "237"과 같으며 필드 "fname"는 "Jack"과 같다)에 대한 업데이트는 이들 관련된 원자들의 각각이 업데이트되게 한다. 따라서, 이들 원자-레벨 업데이트들은 이들 앞서 언급된 원자 유형들의 각각이 이전 버전들을 덮어쓰지 않고 새로운 버전들을 포함하기 위해 수정되는 것을 야기한다. 이것은 함께 나타나는 다른 트랜잭션들이 원자들 내에 중간 또는 그 외 불완전한 데이터 상태를 보지 않음을 보장하며(예로서, ACIP 속성들 및 MVCC 기능을 준수하기 위해); 더 정확히 말하면, 그것들은 여기에서 유지된 이전 버전 상태들에 기초하여 원자의 일관된 뷰를 본다. 도 3a의 예시적인 실시예의 콘텍스트에서, 이것은 시점 스냅샷(302)에 대해 수행된 질의들이 단지 그것의 좌측으로의 트랜잭션들에서 비롯된 이들 데이터베이스 상태들만을 "본다"는 것을 의미한다. 반대로, 우측으로의 트랜잭션들에서 비롯된 데이터베이스의 이들 버전들은 부가적인 원자 버전들 내에서 나타내어지며 지속적이게 되지만, 그 외 시점 스냅샷(302)에 대해 수행된 질의에 가시적이지 않다. 따라서, 일반적인 의미에서, 시점 스냅샷은 그것이 특정한 트랜잭션이 커밋된 시점에서 존재하므로 전체 데이터베이스를 보는 방식이다. 본 개시를 고려하여 이해될 바와 같이, 스냅샷들은 최근 변화들(예로서, 사용자 에러로 인한)을 무효로 만들고, 데이터베이스 백업들을 수행할 때 및 경험적으로 동향들을 추론하고 이상들을 검출하기 위해 시간에 걸쳐 데이터가 어떻게 변하는지에 대한 정보를 수집하는데 특히 유용하다.
일 특정 예를 참조하면, 도 4는 실시예에 따른, 원자의 비-덮어쓰기 구조를 도시한 블록도를 묘사한다. 본 개시를 고려하여 명백해야 하는 바와 같이, 다수의 버전들이 각각의 원자 내에 유지된다. 버전들은 사용자들이 데이터베이스 데이터를 수정할 때 생성된다(예로서, 기존의 버전들을 수정하거나 또는 제거하기보다는 모든 생성된 새로운 버전들을 삽입하고, 업데이트하며, 삭제하는). 실시예에서, 이들 이전 버전들은 원자들이 무기한으로 자라지 않으며, 결과적으로 원자 캐시들 및 지속적 저장 장치에서 불필요하게 많은 양의 공간을 소비하지 않음을 보장하기 위해 추려내진다(cull). 예를 들면, 가비지 컬렉션(garbage collection) 태스크는 안전하게 삭제되거나 또는 그 외 할당 해제될 수 있는 오래된 버전들을 식별할 수 있다. SSM의 콘텍스트 내에서 이러한 공간 교정 프로세스들이 이하에서 추가로 논의될 것이다.
도 2c로 돌아가면, 스냅샷 관리기 모듈(226)은 트랜잭션들을 앨범들로 불리우는 논리적 그룹핑들로 연관시키도록 구성될 수 있다. 앨범들은 도 3a에 도시된 전 순서와 같은, 전 순서에서 트랜잭션들의 논리적 그룹핑에 대응하는 트랜잭션들의 모음을 포함할 수 있다. 특정한 실시예들에서, 앨범들은 업데이트 트랜잭션들(예로서, 가비지 컬렉션)의 순서화된 리스트들에 관련된 부기 태스크들을 효율적으로 수행하기 위해 사용될 수 있다. 이러한 실시예들에서, 스냅샷 최적화 및 노후화 정책 모듈(228)은, 예를 들면, 앨범이 폐쇄되기 전 개방된 채로 있는 최대 시간량, 앨범에 레코딩되는 트랜잭션들 또는 스냅샷들의 최대 수 및 다른 앨범-관련 정책 파라미터들을 통제한다. 앨범들은 또한, 도 8a에 대하여 이하에서 논의되는 바와 같이, 시점 질의를 만족시키기 위해 데이터베이스 상태를 재구성할 때 이용될 수 있다.
질의들을 제공할 목적으로 데이터의 다수의 버전들을 유지하는 데이터베이스는 스냅샷들을 유지하기 위해 요구된 몇몇 정보를 이미 포함한다. 그러나, 원자들이 제한 없이 크기가 "성장"하도록 허용하는 것은 질의 수행에 부정적 영향을 줄 수 있고, 데이터베이스가 무한한 양의 공간을 소비하게 하며, 데이터 보유 정책들을 시행하는 것을 어렵게 할 수 있다. 따라서, 일 실시예에서, 분산 데이터베이스 시스템(100)은 이들 버전들이 더 이상 요구되지 않을 때 가비지 컬렉션을 통해 원자 캐시에서의 원자들로부터 데이터의 버전들을 주기적으로 제거한다. SSM이 오래된 버전들이 가비지 컬렉션을 통해 주기적으로 원자들로부터 제거될지라도 스냅샷에서 완전한 데이터베이스 상태를 여전히 다룰 수 있음을 보장하기 위해, SSM은, 예를 들면, 요구되지 않은 버전들을 제거하기 전에 원자 버전들의 변경할 수 없는 사본을 만듦으로써 원자들을 "프리징"한다. 이러한 프리징은 이들 원자 사본들이 고유하게 식별되며 스냅샷에서 사용된 버전들을 포함한 원자들을 보존하기 위해 지속적 저장 장치에 저장될 수 있게 한다. 프리징 없이, 이들 버전들은 그 외 현재 데이터베이스 상태에서 원자들로부터 제거된 후 액세스 가능하지 않을 수 있다. 도 7a 내지 도 7c에 대하여 이하에서 논의될 바와 같이, 이것은 주어진 SSM이 가시적이거나 또는 그 외 질의 가능한 버전들을 확장시키는 원자들의 하나 이상의 프리징된 사본들 외에 각각의 원자(SM들과 유사한)의 현재 버전을 유지할 수 있음을 의미한다. 따라서, 시점 질의들은 SSM들로부터 요청된 과거-상태 원자들을 사용하여 TE들에 의해 수행될 수 있으며, 이들 시점 질의들은 SSM 보관 활동들이 분산 데이터베이스 시스템(100) 내에서 시작되는 지점으로, 또는 지속성 저장 한계들이 허용하는 정도로 돌아가는 데이터베이스의 전체 판독-전용 버전들을 "볼 수" 있다. 동작 시, 이것은 스냅샷들이, 데이터베이스의 현재 상태가 유지되는 것보다 많은 저장 공간이 소비됨을 야기할 것임을 의미한다. 실시예에서, 고-용량 물리 저장 위치들은 요구된 부가적인 공간을 보상하기 위해 저장 인터페이스 모듈(224)에 의해 이용될 수 있다.
이제 도 5를 참조하면, 블록도는 본 개시의 실시예에 따라, 현재 및 과거 데이터베이스 상태들로의 클라이언트-레벨 액세스를 투명하게 제공하도록 구성된 도 1의 분산 데이터베이스 시스템(100)의 일 예시적인 실시예(100')를 나타낸다. 이해되어야 하는 바와 같이, 도 5에 도시된 예시적인 실시예(100')는 분산 데이터베이스 시스템(100)의 축약된 뷰이며, 이를 위해, SQL 클라이언트들(102), 관리 에이전트들(104), 및 TE들(106a 내지 106c)과 같은 노드들은 단지 설명의 명료함 및 용이함을 위해 배제되었다. 뿐만 아니라, 복수의 SM들 및 SSM들이 배치될 수 있으며(예로서, 주어진 데이터베이스 시스템을 규모 확장하기 위해) 본 개시는 단지 도시된 수에 제한되지 않는다는 것이 이해되어야 한다.
도시된 바와 같이, DDC(502) 내에서의 복수의 원자들은 데이터베이스의 현재- 및 과거-상태들 양쪽 모두를 나타낸다. 도 1 및 도 2a 내지 도 2c에 대하여 상기 논의된 바와 같이, 각각의 데이터베이스 노드는 공동 DDC의 구성요소 부분인, 원자 캐시(RAM에서)를 소유하거나 또는 그 외 관리한다. 원자들은 지속적 저장 장치로부터 검색되며(예로서, 손실들로 인해), 트랜잭션들의 수행 동안 각각의 원자 캐시들 사이에서 전달될 수 있다는 것을 상기하자. 따라서, DDC(502)는 클라이언트들(예로서, SQL 클라이언트들(102))이 단일의, 논리 데이터베이스를 "볼 수" 있게 하는 플렉시블 캐시이다. 도 5에 도시된 바와 같이, 현재 상태를 나타내는 이들 원자들은 SM 노드(108)의 지속성 저장 위치(112) 내에서 지속적이게 될 수 있다. 또한, 현재 상태 및 과거 상태들을 나타내는 이들 원자들은 SSM 노드(110)의 지속성 저장 위치(114) 내에서 지속적이게 될 수 있다. 본 개시를 고려하여 이해될 바와 같이, 데이터베이스의 현재 상태를 유지함으로써, SSM은 데이터베이스에 대해 발생하는 변화들을 증분적으로 저장하며 과거 상태들의 가용성을 보장하기 위해 필요에 따라 원자들을 "프리징"할 수 있다.
이하에서 추가로 논의될 바와 같이, 분산 데이터베이스 시스템(100) 내에서의 적어도 하나의 SSM의 존재 시, 클라이언트는 데이터베이스의 과거 상태들에 관련된 이들 원자들이 DDC(502)로 로딩되게 하는 트랜잭션들을 수행할 수 있다. 분산 데이터베이스 시스템(100)의 콘텍스트 내에서, 이것은 TE들의 원자 캐시들이 시점 질의들과 관련 있는 이들 원자들과 함께 실장될 수 있음을 의미한다. 그러나, 몇몇 인스턴스들에서 이것은 TE가 현재-상태 데이터에 대한 트랜잭션들 및 이전-상태 데이터에 대한 시점 트랜잭션들 양쪽 모두를 수행할 것이므로 바람직하지 않은 성능 저하를 야기할 수 있다. 이러한 혼합 트랜잭션 작업 부하는 이용 가능한 한정된 양의 휘발성 메모리를 가진 원자 캐시들로 인해 시스템 대기 시간을 야기할 수 있다. 특히, 메모리를 자유롭게 하기 위해 캐시로부터 제거되는 원자들은 또 다른 원자 캐시로부터 또는 지속적 저장 장치로부터 나중에 재획득될 필요가 있을 수 있다. 이러한 제거 시나리오는 소위 "캐시 오염"의 결과이며 중대한 트랜잭션들(현재-상태 데이터를 질의하고, 삽입하고, 업데이트하며, 삭제하고자 하는 이들 트랜잭션들)의 성능을 손상시킬 수 있다. 실시예에 따르면, 캐시 오염은, 시점 작업 부하들에 전용되는 하나 이상의 TE 노드들을 선택적으로 제공하는 것 외에, SM 및 SSM 노드들을 구동하는 노드들을 물리적으로 분리함으로써 제거되거나 또는 그 외 완화될 수 있다.
이제 도 6을 참조하면, 블록도는 과거 데이터베이스 상태들의 시점 질의들을 가능하게 하기 위해 SSM의 지속적 저장 장치 내에서 프리징되고 저장될 수 있는 원자 유형들을 예시한다. 도시된 바와 같이, 이것은 레코드 원자들(602), 테이블 원자들(603), 데이터 원자들(604), 인덱스 원자들(606), 블랍 원자들(608), 및 앨범 원자들(610)을 포함한다. 실시예에서, 테이블 원자들(603)은 그것의 컬럼들의 명칭들 및 유형들과 같은 테이블들에 대한 메타데이터를 포함할 수 있고; 레코드 원자들(602) 및 데이터 원자들(604)은 테이블 로우 데이터 및 테이블 로우 가시성에 대한 메타데이터를 포함할 수 있고; 인덱스 원자들(606)은 테이블 인덱스들에 대한 메타데이터 및 데이터를 포함할 수 있고; 블랍 원자들(608)은 이진 대형 오브젝트 데이터를 포함할 수 있으며 레코드 및 데이터 원자들과 유사한 테이블 원자들과 연관되며; 앨범 원자들(610)은 SSM-동의 전 순서로 트랜잭션들의 논리적 그룹핑들에 대한 메타데이터를 포함할 수 있다. 다른 데이터베이스-관련 원자들이 프리징될 수 있으며 앞서 언급된 리스트는 철저하거나 또는 본 개시에 제한적이도록 의도되지 않는다는 것이 이해되어야 한다.
방법론들 및 동작
상기 논의된 바와 같이, 트랜잭션 티어(107) 및 영속성 티어(109)의 각각의 데이터베이스 노드는 DDC를 가능하게 하는 모듈들을 포함할 수 있다. 실시예에서, 이러한 DDC는 원자 업데이트들이 트랜잭션이 커밋하기 전에 분산 데이터베이스 시스템(100) 전체에 걸쳐 전파될 수 있게 한다. 동작 시, 이것은 각각의 데이터베이스 노드(예로서, TE들(106a 내지 106c), SM(108) 및 SSM(110))가 트랜잭션들이 수행됨에 따라 TE들(예로서, 통신 네트워크(101)를 이용하는)로부터 복제 메시지들을 수신할 수 있음을 의미한다. 실시예에서, 복제 메시지들은 조작될 데이터를 포함한 원자들 및 데이터 조작들을 특정하는 DML, 또는 그것의 등가물을 포함한다. 예를 들면, 데이터 조작들은 데이터베이스 오브젝트들에 대한 동작들을 삽입 및 삭제할 수 있다.
이제 도 7a를 참조하면, 일 예시적인 방법론(700)은 영속성 티어(109)(예로서, SM들 및 SSM들) 내에서 다수의 데이터베이스 노드들에 걸쳐 대칭적 원자 업데이트들을 가능하게 하기 위해 도시된다. 이러한 방법론은, 다수의 실시예들이 본 개시를 고려하여 명백할지라도, 예를 들면, 도 1의 분산 데이터베이스 시스템(100)에 의해, 및 보다 특히 SM(108) 및 SSM(110)에 의해 구현될 수 있다. 도시된 바와 같이, 방법론(700)은 복제 메시지를 수신하는 동작, 영향을 받은 원자가 원자 캐시에 있는지를 결정하는 동작, 영향을 받은 원자가 원자 캐시에 없다면 지속적 저장 장치로부터 원자들을 검색하거나 또는 새로운 원자들을 생성하는 동작, 메모리-내 원자들을 업데이트하는 동작, 및 지속적 저장 장치에 대한 이들 업데이트된 원자들을 커밋하는 동작을 포함한다. 방법(700)은 동작(702)에서 시작된다.
동작(704)에서, 주어진 SM 또는 SSM은 트랜잭션을 수행하는 TE로부터 통신 네트워크를 통해 복제 메시지를 수신한다. 실시예에서, 데이터 조작들을 특정하는 DML, 또는 그것의 등가물은 TE에 의해 원자들에 대한 수정들로 변환될 수 있으며 이들 수정들은 복제 메시지들을 사용하여 모든 SM들 및 SSM들 및 이들 원자들을 캐싱하는 다른 TE들로 복제될 수 있다. 실시예에서, 복제 메시지들은 원자 및 그것 상에서 수행될 적어도 하나의 데이터 조작을 식별한다. 예를 들면, 몇몇 이러한 데이터 조작들은 레코드 원자에서 새로운 레코드 버전을 생성하는 것을 포함한다.
동작(706)에서, 주어진 SM 또는 SSM은 복제 메시지가 현재 원자 캐시로 로딩되지 않은 임의의 원자들에 영향을 주는지를 결정한다. SM들 및 SSM들의 각각은 데이터베이스의 전체 사본을 저장한다는 것을 상기하자. 지속적 저장 장치(예로서, 지속성 저장 위치들(112 및 114))로부터 가장 최근에 검색된 이들 원자들은 각각의 원자 캐시에 있을 수 있다. 복제 메시지가 단지 이들 메모리-내 원자들에만 영향을 준다면, 방법(700)은 동작(710)을 계속한다. 복제 메시지가 현재 원자 캐시로 로딩되지 않은 적어도 하나의 원자에 영향을 준다면, 방법은 동작(708)을 계속한다.
동작(708)에서, 주어진 SM 또는 SSM은 지속적 저장 장치로부터 하나 이상의 원자들을 검색한다. 대안적으로, 또는 지속적 저장 장치로부터 하나 이상의 원자들을 검색하는 것 외에, SM 또는 SSM은 TE에서 수행된 트랜잭션이 새로운 데이터 데이터베이스 오브젝트들로 하여금 생성되게 할 때(예로서, 새로운 인덱스들, 테이블들, 컬럼들, 로우들, 및 블랍들) 사용될 수 있는 새로운(빈) 원자들을 생성할 수 있다. 임의의 이러한 경우들에서, 주어진 SM 또는 SSM은 이들 원자들을 생성하고 및/또는 검색하며 그것들을 그것들 각각의 원자 캐시로 로딩할 수 있다.
동작(710)에서, 주어진 SM 또는 SSM은 그 안에 식별된 이들 원자들에 대한 수신된 복제 메시지 내에 포함된 데이터 조작들을 수행한다. 식별된 원자들은 또한 현재 존재하지 않지만(예로서, 삽입에 기초하여), 트랜잭션을 만족시키기 위해 TE에 의해 생성된 원자들을 포함할 수 있다. 주어진 SM 또는 SSM은 데이터 조작들을 수행하기 전에 TE들로부터 이들 새롭게 생성된 원자들을 요청할 수 있다. 다른 경우들에서, 식별된 원자들은 주어진 SM 또는 SSM의 원자 캐시(210)에 있을 수 있거나, 또는 지속적 저장 장치로부터 식별된 원자들을 마샬링한 후 원자 캐시(210)에서 이용 가능할 수 있다. 상기 논의된 바와 같이, 이들 데이터 조작들은 원자들로 하여금 이들 원자들 내에서 표현된 데이터베이스 오브젝트들을 변경하는 방식으로 업데이트되게 하는 DML, 또는 그것의 등가물을 포함할 수 있다. 도 4에 대하여 상기 논의된 바와 같이, 이것은 각각의 영향을 받은 원자에 부가적인 버전 상태들을 첨부하거나 또는 그 외 부가하는 것을 포함할 수 있다. ACID 속성들 및 MVCC 기능의 콘텍스트 내에서, 이것은 동시 트랜잭션들이 중간 또는 그 외 유효하지 않은 데이터베이스 상태를 보게 하지 않고 각각의 트랜잭션이 데이터베이스 데이터를 조작할 수 있게 한다.
동작(711)에서, 주어진 SM 또는 SSM은 트랜잭션이 성공적으로 완료된 후 TE로부터 커밋 메시지를 수신한다. 동작(712)에서, 주어진 SM 또는 SSM은 지속적 저장 장치에 대해 메모리-내 업데이트된 이들 원자들에 대한 돌연변이들을 커밋한다. 실시예에서, 커밋 메시지는 트랜잭션 및 커밋 동작을 식별하는, 복제 메시지, 또는 다른 적절한 메시지를 포함할 수 있다. 커밋 메시지에 응답하여, 주어진 SM 또는 SSM은 각각의 영향을 받은 원자가 지속성 저장 위치들(112 및 114)과 같은, 지속적 저장 장치로 저장되게 하는 하나 이상의 명령들을 실행한다. 이러한 원자 돌연변이들은 먼저 저널로 기록될 수 있으며(예로서, 저널 모듈(222)을 이용하여), 이들 변화들은 나중에 디스크로 기록된다(예로서, 게이른 기록 방법론을 이용하여)는 것을 주의하자. 방법론(700)은 동작(714)에서 끝난다.
이제 도 7b를 참조하면, 대칭적 원자 업데이트 방법론(700)의 일 예시적인 데이터 흐름이, 본 개시의 실시예에 따라, 예시된다. 도시된 바와 같이, 트랜잭션은 TE(106a)에서 제 1 시점에서 시작된다. 예를 들면, 도 3b의 예시적인 트랜잭션(301)은 SQL 클라이언트들(102) 중 하나로부터 TE(106a)로 전송될 수 있으며, 여기에서 그것은 언어-중립 피어 통신 모듈(216)을 사용하여 파싱된다. 주어진 트랜잭션을 수행하는 과정 동안, TE(106a)는 주어진 트랜잭션 내에서 특정된 DML에 따라 조작되는 데이터베이스 데이터를 나타내는 이들 원자들을 업데이트할 수 있다. 도시된 바와 같이, 이것은 휘발성 메모리(예로서, 원자 캐시를 이용하는)에서 메모리-내 업데이트들을 수행하는 TE(106a)를 포함한다. 또한, 및 실시예에 따르면, TE(106a)는 원자 캐시 모듈(210)을 구현하는, 임의의 다른 피어 데이터베이스 노드, 특히 TE(106a)와의 저-대기시간 연결을 갖는 것들로부터 원자들을 요청할 수 있다.
실시예에서, TE(106a)에서 특정한 원자에 대한 메모리-내 업데이트들은 상기 원자의 사본을 가진 다른 데이터베이스 노드들로 복제된다. 예를 들면, 및 도시된 바와 같이, 복제 메시지들은 하나 이상의 원자들 및 이들 원자들에 대한 변화들을 식별하는 SM(108) 및 SSM(110)으로 전송된다. 실시예에서, SM(108) 및 SSM(110)으로 전송된 복제 메시지들은 동일하거나 또는 대체로 유사할 수 있어서, SM(108) 및 SSM(110) 모두가 대칭적 방식으로 동일한 복제 메시지를 프로세싱할 수 있게 한다. 복제 메시지들은 동시를 포함하여, TE(106)의 동작 동안 언제라도 전송될 수 있으며, 반드시 도 7b의 예시적인 실시예에서 도시된 특정한 순서로 전송되는 것은 아니라는 것이 이해되어야 한다. 이해되어야 하는 바와 같이, 및 실시예에 따르면, 이러한 대칭적 복제 절차는 동일한 메시지가 분산 데이터베이스 시스템(100) 내에서 다수의 TE들, SM들, 및 SSM들로 방송될 수 있으므로 특히 유리하다.
도 1에 대하여 상기 논의된 바와 같이, 동시 트랜잭션들의 수행 동안 트랜잭션 일관성을 가능하게 하기 위해, 및 잠금-관련 대기 시간들을 감소시키기 위해(예로서, MVCC를 구현함으로써), 원자들에 대한 업데이트들은 다수의 원자 버전들로서 나타내어진다. 다수의 버전들을 포함한 하나의 이러한 예시적인 원자는 도 4의 예시적인 실시예에서 도시된다. 따라서, SM(108) 및 SSM(110)은 각각 TE(106a)로부터 수신된 복제 메시지들에 기초하여 주어진 원자의 그 자신의 국소적 사본(예로서, 그것의 원자 캐시 내에서)을 업데이트할 수 있다. SSM(110)의 콘텍스트 내에서, 복제 메시지는 원자의 현재 상태를 업데이트할 뿐만 아니라, 또한 스냅샷과 연관되는 트랜잭션들에 대한 촉매임이(트랜잭션 내에서 선언되거나 또는 그 외 가능해지면) 이해되어야 한다. 일 구현에서, 주어진 복제 메시지를 수신하는 관리 도메인(111) 내에서의 모든 SM 노드들은 동일한 동작들을 수행하며, 그에 따라 분산 데이터베이스 시스템(100)에 걸쳐 모든 이러한 업데이트들을 동기화한다.
업데이트들은 트랜잭션이 완전히 커밋할 때까지 지속적 저장 장치에 대해 커밋되지 않는다는 것을 상기하자. 따라서, 도 7b에 도시된 원자들에 대한 이들 메모리-내 변화들은 트랜잭션이 실패한다면 효율적으로 "롤백"될 수 있다. 실시예에서, 커밋 메시지는 트랜잭션의 끝에 메모리-내 변화들을 완료하기 위해 SM(108) 및 SSM(110)의 각각으로 전송되며 SM(108) 및 SSM(110)으로 하여금 지속적 저장 장치(예로서, 저장 인터페이스 모듈(224)을 이용하는)로 기록될 이들 원자 변화들을 스케줄링하게 한다(예로서, 저널(222)을 이용하는).
이제 도 7c를 참조하면, 파괴적 복제 메시지의 프로세싱 동안 도 7a의 대칭적 원자 업데이트 방법론(700)의 일 예시적인 데이터 흐름이, 본 개시의 실시예에 따라, 도시된다. 도시된 바와 같이, 트랜잭션은 TE(106a)에서 실행된다(예로서, SQL 클라이언트에 의해). 트랜잭션의 수행 동안, 원자 업데이트들이 발생하며 도 7a 및 도 7b에 대하여 상기 논의된 바와 같이 복제 메시지들을 이용하는 분산 데이터베이스 시스템(100) 전체에 걸쳐 전파된다. 원자들은 다수의 버전들(현재 버전을 포함하여)을 유지할 수 있지만 그것들은 무기한으로 성장할 수 없다는 것을 상기하자. 주기적으로, 데이터의 버전들은 가비지 컬렉션 태스크에 의해 제거될 수 있다. 가비지 컬렉션을 수행하는 노드(예로서, TE들(106a 내지 106c))는 복제 메시지들을 전송함으로써 데이터 버전들의 제거에 대해 다른 노드들에게 알린다. 이들 복제 메시지들이 데이터 버전들의 파괴에 관한 것이기 때문에, 그것들은 파괴적 복제 메시지들로서 정확하게 설명될 수 있다. 또한, 몇몇 경우들에서, 원자들은, 예를 들면, 테이블이 누락되는 것, 레코드가 삭제되는 것, 인덱스가 삭제되는 것, 및 다른 파괴적 이벤트들로 인해 삭제될 수 있다는 것이 주의되어야 한다. 이들 이벤트들에 관한 복제 메시지들은 또한 파괴적 복제 메시지들로서 정확하게 설명될 수 있다. 이들 파괴적 동작들은 게으른 방식으로 수행되며, 예를 들면, 각각의 TE(예로서, TE들(106a 내지 106c)) 상에서 주기적으로 수행되는 공간 교정 태스크에 의해 통제될 수 있다.
도시된 바와 같이, 및 실시예에 따르면, TE(106a)는 하나 이상의 파괴적 복제 메시지들을 SM(108) 및 SSM(110)으로 주기적으로 전송할 수 있다. 파괴적 복제 메시지들은 트랜잭션들의 수행 동안을 포함하여, TE(106a)의 동작 동안 언제라도 전송될 수 있다는 것이 이해되어야 한다. 파괴적 복제 메시지들은 반드시 도 7c의 예시적인 실시예에서 도시된 특정한 순서로 전송되는 것은 아니다. 실시예에서, 파괴적 복제 메시지는, 상기 논의된 바와 같이, 복제 메시지의 것과 유사하지만, 제거될 하나 이상의 원자들 및/또는 그 안에서의 원자 버전들을 식별하는 지시들을 포함한다. 이것은 단지 원자들이 생성되게 하거나 또는 새로운 원자 버전들을 기존의 원자들로 부가하는 비-파괴적 복제 메시지들과 대조를 이룬다.
도시된 바와 같이, SM(108)이 파괴적 복제 메시지를 수신하는 것에 응답하여, SM(108)은 파괴적 복제 메시지 내에서 식별된, 원자들, 또는 그 안에서의 원자 버전들을 제거한다. 실시예에서, SM(108)은 그 후 제거될 이들 원자들 또는 원자 부분들에 의해 소비된 공간을 표시하거나 또는 그 외 그것을 되찾기 위해 가비지 컬렉션이 발생하게 한다. 이 실시예에서, SM(108)은 지속적 저장 장치로 새로운 버전의 원자(예로서, 마이너스 제거된 버전들)를 직렬화하거나, 또는 필요에 따라, 전체적으로 지속적 저장 장치로부터 원자를 제거하며 카탈로그를 업데이트할 수 있다. 파괴적 복제 메시지는 상기 논의된 복제 프로세스들과 달리, 변화들이 지속적이게 되기 전에 커밋 메시지를 요구하지 않는다는 것을 주의하자. 프리징된 원자들은 파괴적 복제 메시지들을 로깅함으로써 지속적 저장 장치에 여전히 저장될 수 있다는 것을 추가로 주의하자. 예를 들면, 충돌의 경우에, 프리징된 원자들은, 캐시에서의 원자의 프리징된 버전들이 상기 원자의 캐싱된 현재-상태 버전 이전에 기록된다고 하면, 로그로부터의 파괴적 복제 메시지들을 대응하는 현재-상태 원자들에 적용함으로써 재생성될 수 있다. 주어진 파괴적 복제 메시지를 수신하는 관리 도메인(111) 내에서의 모든 이러한 SM 노드들은 동일한 동작을 수행하며, 그에 따라 분산 데이터베이스 시스템(100)에 걸쳐 모든 이러한 변화들을 동기화한다는 것이 이해되어야 한다. 그러나, 특별히 주의하면, 이러한 파괴적 복제 메시지를 수신한 SSM은 원자, 또는 그 안에서의 버전들이 "프리징"되고 지속적 저장 장치로 복사되게 하는 부가적인 동작을 수행한다. 그 후, SSM은 또한 그것의 현재 상태가 분산 데이터베이스 시스템(100) 내에서 다른 SM들 및 SSM들의 현재 상태와 동기화된 채로 있도록 SM에 대한 유사한 동작들을 수행할 수 있다.
예를 들면, 및 도 7c의 특정 예시적인 데이터 흐름에서 도시된 바와 같이, 파괴적 복제 메시지는 SSM(110)에 의해 수신된다. 그 결과, 및 실시예에 따르면, SSM(110)은 이들 원자들, 또는 그것의 부분들(예로서, 이력적 버전들)을 복사하며, 이러한 데이터의 판독-전용 사본을 하나 이상의 소위 "프리징" 원자들에 저장한다. 프리징 원자들은 SSM들(110)로 하여금 데이터베이스의 현재 버전들뿐만 아니라 과거 상태들 또한 다루도록(예로서, 질의 가능하게 하도록) 허용한다. 이들 프리징 원자들은 SSM(110)에 의해 지속적 저장 장치로부터 검색되며, 다른 프리징되지 않은 원자들과 유사한 방식으로, 및 분산 데이터베이스 시스템(100)에 의한 임의의 특정한 특수 핸들링 없이(판독-전용 속성들을 고수하는 것이 아닌) 원자 캐시로 로딩될 수 있다. 이것은 TE들이 SSM(110)을 이용한 시점 질의들을 수행하며 그것이 각각의 스냅샷 때 존재하였으므로 데이터베이스의 일관된 버전들을 볼 수 있게 한다. 각각의 SSM은 이것의 이전 버전들의 스냅샷들 외에 데이터베이스의 일관된 현재 버전을 포함한다는 것을 주의하자. 이를 위해, 및 실시예에 따르면, 시점 질의들은 현재 상태 원자들(예로서, TE들, SM들, 및 SSM들로부터의) 또는 또한 이들 프리징 원자들을 캐싱한 TE들로부터, 또는 SSM들로부터 검색된 프리징 원자들, 또는 현재 상태 원자들 및 프리징 원자들의 조합을 검색하며, 이들 원자들을 TE의 원자 캐시로 로딩함으로써 주어진 TE에 의해 제공될 수 있다. 주어진 시점 질의의 모두 또는 일 부분은, 경우에 따라, 데이터베이스의 하나 이상의 피어 노드들에 의해 및 이들 피어 노드들로부터의 프리징 및 현재 상태 원자들 모두에 의해 제공될 수 있다.
이제 도 8a를 참조하면, TE에 의해 시점 질의들을 수행하기 위한 하나의 예시적인 방법론(800)이 본 개시의 실시예에 따라 도시된다. 시점 질의는 사용자들이 특정한 시점"으로부터" 데이터베이스의 과거 상태들을 질의할 수 있게 한다. 이러한 방법론은, 다수의 실시예들이 본 개시를 고려하여 명백할지라도, 예를 들면, 도 1의 분산 데이터베이스 시스템(100)에 의해, 그리고 보다 특히 TE들(106a 내지 106c)에 의해 구현될 수 있다. 방법(800)은 동작(802)에서 시작된다. 동작(804)에서, TE(예로서, TE(106a 내지 106c))는 SQL 클라이언트들(102)과 같은, 클라이언트로부터 시점 질의를 수신한다. 하나의 이러한 예시적인 시점 질의(801)가 도 8b에 도시된다. 도시된 바와 같이, 예시적인 시점 질의(801)는 질의하기 위한 표준 SQL 구문(816) 및 타겟 데이터베이스 오브젝트(818)를 포함한다. 또한, 및 본 개시를 고려하여 이해될 바와 같이, 본 개시의 몇몇 양상들은 질의 목적들을 위해 스냅샷 식별을 가능하게 하기 위해 SQL 버내큘러(vernacular)로의 확장을 포함한다. 이를 위해, 및 본 개시의 실시예에 따르면, 분산 데이터베이스 시스템(100)은 부가적인 SQL 구문을 파싱하도록 구성된 TE들을 포함할 수 있다. 도시된 바와 같이, 시점 질의(801)는 스냅샷 식별자(822)를 포함하는 몇몇 이러한 부가적인 SQL 키워드들(820)을 포함한다. 특정 키워드들(820)("~으로부터")이 도 8b에 도시되지만, 다른 용어들이 다른 실시예들에서 이용될 수 있다는 것이 이해되어야 한다.
몇몇 경우들에서, 스냅샷 식별자(822)는 스냅샷의 심볼 명칭(예로서, 전역적으로-고유한 식별자(GUID) 또는 다른 고유 식별자), 스냅샷과 연관된 날짜 및/또는 시간, 별명, 사용자-정의 라벨, 또는 주어진 스냅샷에 고유한 임의의 다른 식별자일 수 있다. 다른 경우들에서, 스냅샷 식별자(822)는 임의의 시점에 기초하여 데이터베이스의 과거 상태를 질의하기 위해 사용된 소위 "대략적인" 또는 그 외 부정확한 사용자-특정 시간스탬프일 수 있다. 임의의 이러한 경우들에서, 클라이언트 및/또는 TE는, 예를 들면, 스냅샷들의 리스트 및 각각의 스냅샷에 관련된 세부 사항들을 포함하는 테이블을 질의함으로써 스냅샷 가용성을 결정할 수 있다.
예를 들면, 도 8c에 도시된 바와 같이, 예시적인 질의(803)는 질의에서 식별된 스냅샷이 분산 데이터베이스 시스템(100) 내에서 이용 가능함을 결정하거나 또는 그 외 검증하기 위해 TE에 의해 실행될 수 있다. 다른 예들에서, 및 이하에서 논의되는 바와 같이, 클라이언트는 질의를 위해 어떤 스냅샷들이 이용 가능한지를 결정하기 위해 질의를 수행할 수 있다. 임의의 이러한 경우들에서, 하나의 이러한 예시적인 질의(803)의 결과들은 예시적인 결과 세트(824)에서 도시된다. 도시된 바와 같이, 결과 세트(824)는 각각의 개별적 스냅샷에 대한 스냅샷 ID 및 메타데이터(826)(예로서, 스냅샷이 수행될 때 시간스탬프)를 포함한다. 상기 논의된 바와 같이, 스냅샷 식별자들 및 연관된 메타데이터는, 예를 들면, 시간 스탬프 또는 몇몇 다른 고유 속성에 기초하여, 각각의 스냅샷을 고유하게 식별하도록 설계된다. 이를 위해, 예시적인 결과 세트(824)는 본 개시를 제한하는 것으로 보여져서는 안된다. 또한, 도 8b에 도시된 예가 반드시 질의에서 식별된 스냅샷의 존재를 검증할 때 TE가 실행할 SQL 질의인 것은 아니다. 예를 들면, TE는 특정 스냅샷이 분산 데이터베이스 시스템(100) 내에 존재하는지(예로서, id=snapshot_identifier인 곳)에 대해 보다 효율적으로 질의하기 위해 스냅샷 식별자(822)를 이용할 수 있다.
TE는 시점 질의들이 표준 SQL 구문을 갖고 거동하며 효율적으로 실행됨을 보장하기 위해 SQL 파서 모듈(204), 최적화기 모듈(206), 및 다른 파서-관련 모듈들을 이용할 수 있다는 것이 이해되어야 한다. 이를 위해, 상기 논의된 바와 같이, 식별된 스냅샷이 이용 가능한지를 결정하는 검증 양상들은 TE 내에 통합되며 시점 질의들을 검증하기 위해 이용될 수 있다. TE는 부가적인 검증 루틴들을 수행할 수 있다는 것이 이해되어야 한다. 예를 들면, 어떤 SSM도 시점 질의를 제공하기 위해 이용 가능하지 않다면, TE는 어떤 이용 가능한 SSM들도 이용 가능하지 않음을 나타내는 에러 또는 예외를 클라이언트로 되돌려 보낼 수 있다.
실시예에서, TE는 질의 내에서 명시적 참조 없이 스냅샷에서 정적으로 "가리키도록" 사전 구성될 수 있다. 예를 들면, TE는 모든 질의들이 암시적 "~으로부터" 선언을 갖고 실행되도록 특정한 사용자-선택 스냅샷에 기초하여 항상 질의들을 수행하도록 구성될 수 있다. 이를 위해, 클라이언트가, 반드시 반환된 결과 세트들이 데이터베이스의 과거 상태들에서 온 것임을 아는 것은 아니다. 이것은 예를 들면, 액세스 가능하지 않을 수 있는(예로서, 하드-코딩되거나 또는 그 외 애플리케이션으로 컴파일링될 수 있는) 기본 애플리케이션 코드(예로서, "~으로부터" 구문을 SQL 질의들에 부가하기 위해)를 수정할 필요 없이 데이터베이스 관리자가 과거 상태들에 대한 분석 질의들을 실행하기를 원할 때 특히 유리할 수 있다. 그러므로, TE는 클라이언트가 질의들 내에 특정 지식 또는 특수 구문을 갖지 않고 데이터베이스의 특정한 과거 상태를 보도록 구성될 수 있다.
도 8a로 돌아가면, 일단 시점 질의가 수신되면, 동작(805)에서, TE는 시점 질의에 의해 영향을 받은 프리징 및 현재-상태 원자들의 위치를 찾는다. 원자 대 SQL 매핑 모듈(208)은 TE로 하여금 질의에서 참조된 데이터베이스 오브젝트들에 기초하여 어떤 원자들이 주어진 질의에 의해 영향을 받는지를 결정할 수 있게 한다는 것이 이해되어야 한다. 영향을 받은 원자들이 어떻게 시점 질의를 만족시키기 위해 프리징 또는 현재 상태 형태에 위치되는지에 대한 일 예가 이제 논의될 것이다.
도 3a에 대하여 상기 논의된 바와 같이, 트랜잭션들은 트랜잭션들이 SSM들에 의해 수신될 때에 기초하여 전 순서로 SSM에 의해 배열된다. 따라서 앨범들은 전 순서로 배열된 바와 같이 트랜잭션들의 모음을 포함한다. 더욱이, 트랜잭션은 스냅샷과 연관될 수 있다. 이하에서 논의된 바와 같이, 원자들, 및 그 안에서의 버전들은 공간을 되찾기 위해 이따금 추려내질 수 있다. 스냅샷들이 계속해서 정확한 데이터를 나타낸다는 것을 보장하기 위해, 원자들은 그것들의 사본을 만들고 사본을 판독-전용으로 표시함으로써(사본은 결국 SSM의 지속적 저장 장치로 기록된다) "프리징"될 수 있다. 따라서, 처음에 각각의 트랜잭션이 현재-상태 원자들과 연관되는 동안, 시간에 걸쳐 이들 원자들은, 예를 들면, 원자들에서의 데이터의 버전들이 공간 교정 프로세스들 동안 제거될 수 있기 때문에 프리징된다. 각각의 앨범은 주어진 시점 질의를 만족시키는 데이터베이스의 버전을 재구성하기 위해 하나 이상의 프리징 원자들을 참조할 수 있다. 원자가 프리징될 때, 상기 프리징 원자는 원자가 프리징된 시간에서 마지막-폐쇄된 앨범에 의해 참조된다. 그러므로, 스냅샷과 연관된 모든 프리징 원자들은 스냅샷이 속하는 앨범, 또는 나중에 폐쇄된 몇몇 앨범에 의해 참조되도록 보장된다.
도 3a의 스냅샷(302)이 동작(804)에서 수신된 시점 질의에 의해 식별된 스냅샷임을 고려하자. TE는 예를 들면, 대응하는 앨범과 스냅샷들을 연관시키는 맵에 기초하여 스냅샷이 어떤 앨범에 속하는지를 결정할 수 있다. 도시된 바와 같이, 스냅샷(302)은 앨범 2와 연관된다. 그러므로, TE는 앨범 2가 시점 질의에 의해 영향을 받은 연관된 프리징 원자들을 갖는지를 확인하며, 그렇다면 이들 프리징 원자들이 저장되는 SSM 노드의 위치와 함께 이들 프리징 원자들의 리스트를 구성하는 검색을 수행할 수 있다. TE는 최신 앨범이 도달될 때까지(예로서, 앨범 3) 앨범 2 후 폐쇄된 각각의 부가적인 앨범(도 3a에서 앨범 2의 우측에 나타나는)에 대한 이러하 검색을 계속해서 수행할 수 있다. 각각의 앨범을 통해 최신 앨범까지 반복함으로써, TE는 시점 스냅샷(302)이 선언될 때 존재하는 모든 원자들이 위치 검색될 수 있음을 보장할 수 있다. 시점 질의에 의해 영향을 받은 원자들 중 일부는 앨범 2에서 프리징되지 않을 수 있지만, 그 다음에 프리징되고 또 다른 앨범과 연관될 수 있다는 것을 주의하자. 그러므로, TE는 각각의 영향을 받은 원자가, 시점 질의를 만족시키기 위해, 필요하다면, 프리징된 형태로 위치 검색될 수 있음을 보장하기 위해 각각의 앨범을 가로지른다. 또한 스냅샷과 연관된 몇몇 원자들이 아직 프리징되지 않을 수 있음을 고려하자. 앞서 언급된 검색 절차를 통해 발견되지 않은 임의의 원자는 프리징되지 않을 것이며, 따라서 앨범으로부터보다는 현재-상태로부터 검색될 것이다.
동작(806)에서, TE는 동작(805)에서 식별된 시점 질의에 의해 영향을 받은 현재-상태 및 프리징 원자들이 TE의 원자 캐시 내에 있는지를 결정한다. 모든 영향을 받은 원자들이 원자 캐시 내에 있다면, TE는 원자 캐시로부터 배타적으로 동작(808)에서 결과 세트를 클라이언트로 반환한다. 본 개시를 고려하여 이해될 바와 같이, 이것은 질의들이 디스크-액세스에 관련된 대기시간들(예로서, "손실들"), 또는 피어 노드들로부터 원자들을 요청하는 것에 관련된 왕복 여행들을 발생시키지 않고 효율적으로 제공될 수 있게 한다. 시점 질의가 원자 캐시에 있지 않은 임의의 원자들에 영향을 준다면, 방법론(800)은 동작(810)을 계속한다. 이하에서 논의될 바와 같이, 각각의 시점 질의는 현재 상태 원자들 및/또는 프리징 원자들에 의해 제공될 수 있다.
시점 질의들 및 표준 질의들로부터의 결과 세트들은 그 자체로 원자들이 아니며; 오히려, 그것들은 주어진 클라이언트에 의해 예상된 데이터 구조들을 갖고 거동하는 형태에 있다는 것이 이해되어야 한다. 예를 들면, SQL 클라이언트는 이들 결과들의 기본 원자-구조를 무시하고 SQL-호환 가능 결과 세트들을 수신한다. 몇몇 이러한 SQL-호환 가능 결과 세트들은 질의에 의해 위치 검색되고 질의를 수행하는 SQL 클라이언트의 주어진 구성을 갖고 거동하는 방식으로 직렬화되거나 또는 그 외 포맷팅된 레코드들의 컬럼들, 로우들 및 값들을 포함한다. 실시예에서, 원자로부터 SQL-호환 가능 결과 세트로의 이러한 변환은 또한 SQL 매핑 모듈(208)에 의해 수행될 수 있다.
동작(810)에서, 원자 캐시에서 이용 가능하지 않은 이들 원자들은 가장 반응적인 또는 그 외 저-대기시간 피어 데이터베이스 노드로부터 요청된다. 이것은 시점 질의를 제공하기 위해 요구된 현재-상태 및 프리징 원자들 모두를 포함한다. 도 8d에 대하여 이하에서 추가로 논의되는 바와 같이, 일 구현에서, TE는 최저 핑을 갖거나 또는 가장 빠른 왕복 응답(예로서, 밀리초들로)을 갖는 것으로 알려진 이들 데이터베이스 노드들로부터 원자들을 요청함으로써 대기 시간들을 완화시킬 수 있다. 실시예에서, 동작(805)에서 식별된 프리징 원자들은 SSM으로부터 요청될 수 있다. 시점 질의들이 반드시 단지 SSM들에 의해서만 제공하는 것에 제한되는 것은 아니라는 것을 주의하자. 예를 들면, 시점 질의와 관련 있는 하나 이상의 원자들을 갖는 피어 TE 노드는 전체적으로 또는 부분적으로 시점 질의를 이행하기 위해 이용될 수 있다. 게다가, 몇몇 경우들에서 시점 질의들은 현재-상태 원자들과 연관될 수 있으며(예로서, 원자들이 스냅샷 이후 변경되지 않았다면), 이들 현재-상태 원자들은 TE들 또는 SM들로부터 요청될 수 있으며 또한 전체적으로 또는 부분적으로 시점 질의를 이행하기 위해 이용될 수 있다. 따라서 시점 질의들은 관련 있는 원자들의 위치를 찾고 가능한 효율적으로 주어진 시점 질의를 만족시키기 위해 분산 데이터베이스 시스템(100)을 레버리징함으로써 제공될 수 있다. 또한, TE는 현재-상태 원자들 및/또는 프리징 원자들을 검색함으로써 시점 질의를 만족시킬 수 있으며, 이들 원자 요청들은 하나 이상의 TE들, SM들, 및 SSM들에 의해 제공된다.
동작(812)에서, TE는 동작(810)에서 요청된 하나 이상의 원자들을 수신한다. 실시예에서, TE, SM, 및 SSM 중 적어도 하나는 시점 질의를 제공하기 위해 요청된 원자들을 TE로 전달한다. 동작(808)에서, TE는 클라이언트의 요건들(예로서, SQL-호환 가능 결과 세트)에 대해 거동하는 결과 세트를 구성하기 위해 원자-대-SQL 매핑을 수행하며, 구성된 결과 세트를 클라이언트로 전달한다. 동작(814)에서, 방법론(800)은 종료한다.
이제 도 8d를 참조하면, 도 8a의 예시적인 시점 방법론(800)을 구현한 복수의 TE들을 예시한 예시적인 데이터 흐름이, 본 개시의 실시예에 따라, 도시된다. 도시된 바와 같이, TE들(106a 및 106b)의 각각은 클라이언트(예로서, SQL 클라이언트(102))가 분산 데이터베이스 시스템(100) 내에서 단일의, 논리 데이터베이스를 "보고" 그것에 대한 질의들을 수행할 수 있게 하도록 구성된다. 또한 도시된 바와 같이, TE(106a)는 표준 SQL을 포함하는 질의(예로서, "SELECT...")를 실행하며 TE(106b)는 시점 질의를 수행하기 위해 부가적인 SQL 키워드("~으로부터")를 포함하는 제 2 질의를 실행한다. TE들(106a 및 106b)의 각각은 표준 질의들을 제외하고 시점 질의들을 수행하는 것에 제한되지 않으며, 그 역 또한 마찬가지이다. 이를 위해, TE들(106a 및 106b)의 각각은 표준 질의들 및 시점 질의들 양쪽 모두를 동시에 제공하도록 구성될 수 있다.
TE(106a)에 의해 실행된 표준 질의("SELECT ...")의 예시적인 콘텍스트 내에서, 하나 이상의 원자들은 TE(106a)의 원자 캐시에서 이용 가능하지 않다. 실시예에서, 이러한 원자 가용성 결정들은 도 8a의 방법론의 동작(806)과 유사하게 수행될 수 있다. 그 결과, TE(106a)는 원자 요청을 SM(108)으로 전송한다. 이에 응답하여, SM(108)은 그것의 원자 캐시 또는 그것의 지속적 저장 장치로부터 요청된 원자들을 검색하며 그 후 요청된 원자들을 다시 TE(106a)로 송신한다. 그러나, 실질적으로 트랜잭션 티어(107) 및/또는 영속성 티어(109)에서의 임의의 데이터베이스 노드는, 경우에 따라, 원자들이 각각의 원자 캐시 또는 지속적 저장 장치에서 요청된 원자를 갖는 임의의 피어 노드로부터 요청될 수 있으므로 TE(106a)에 의해 이용될 수 있다는 것이 이해되어야 한다. 이를 위해, 및 실시예에 따르면, TE(106a)는 제 1 데이터베이스 노드로부터 원자들의 일 부분 및 임의의 수의 부가적인 데이터베이스 노드들로부터 원자들의 제 2 부분을 수신할 수 있다. 이러한 경우들에서, 검색된 원자들, 및 TE(106a)의 원자 캐시에 이미 존재하는 이들 원자들은, 도 8a에 대하여 상기 논의된 동작(808)과 유사하게, 질의를 제공하며 결과 세트를 반환하기 위해 이용될 수 있다.
TE(106b)에 의해 실행된 시점 질의("SELECT AS OF ...)의 예시적인 콘텍스트 내에서, 하나 이상의 원자들은 TE(106b)의 원자 캐시에서 이용 가능하지 않다. 원자들은 원자들, 또는 원자들의 버전들을 제거하는 파괴적 복제 절차들 이전에 프리징된다는 것을 상기하자. 그러므로, 주어진 시점 질의는 단지 프리징 원자들만을 반환할 수 있거나 또는 몇몇 프리징 원자들 및 몇몇 현재-상태 원자들을 반환할 수 있다. SSM들은 데이터베이스의 현재 상태를 저장하고 업데이트한다는 것을 추가로 상기하자(예로서, 복제 메시지들을 이용하여). 따라서, 원자들은, 그것들이 예를 들면, 빈번하지 않게 변경되거나 또는 그 외 긴 시간 기간들 동안 공간 교정 절차들의 대상이 되지 않는다면 프리징되지 않을 수 있다.
실시예에서, TE(106b)는 시점 질의에서 식별된 스냅샷과 관련된 원자들의 위치를 찾기 위해 SSM(110)과 통신함으로써, 부분적으로, SSM(110)으로부터 어떤 원자들을 요청할지를 결정한다. SSM은 도 2b에 관하여 상기 논의된 바와 같이 SM 아키텍처(210)의 많은 모듈들을 레버리징한다는 것을 상기하자. 그러나, 특정한 실시예들에서 SSM은 스냅샷들 사이에서 단지 현재 상태(예로서, 소위 "프리징" 원자들)보다는 각각의 원자의 다수의 버전들을 저장하기 위해 부가적인 모듈들을 포함한다. SSM이 도 7a 내지 도 7c에 대하여 상기 논의된 바와 같이, 복제 메시지들을 수신할 때, 이들 수정들은 SSM 지속적 저장 장치에 과거 상태들을 저장하는 것을 야기한다. 스냅샷 관리기 모듈(226) 및 저장 인터페이스 모듈(224)은 도 3a에 관하여 상기 논의된 바와 같이, 원자들의 이전 버전들의 시퀀스로서 이들 스냅샷들을 조직한다. 이를 위해, 및 실시예에 따르면, 스냅샷들의 부분들은, 경우에 따라, 이들 프리징 원자들 및 현재 상태를 사용하여, 요구 시 재구성된다.
이해될 바와 같이, 스냅샷들은 데이터베이스의 버전들이 도 2b에 대하여 상기 논의된 바와 같이 가시성 루틴을 이용한 다른 것들을 제외하고 "보여지게" 할 수 있다. 이것은 TE(106b)가 시점 질의를 제공하기 위해 어떤 원자들이 데이터베이스를 재구성하기 위해 사용되어야 하는지를 결정할 수 있게 한다. 이러한 실시예들에서, 질의와 관련 있는 데이터베이스 오브젝트들에 관련된 원자들만이 TE(106b)의 원자 캐시로 로딩될 필요가 있다. 예를 들면, 특정한 테이블로부터 특정한 시점"으로부터"를 선택하기 위한 명령은 상기 시점에서 모든 각 테이블이 로딩되도록 요구하지 않는다. 대신에, 특정한 시점에서 특정한 테이블을 재구성하기 위해 사용된 이들 원자들만이 TE(106b)에 의해 로딩된다. 실시예에서, TE(106b)는 스냅샷으로부터 "현재"인 각각의 원자의 이들 버전들만이 가시적이도록 스냅샷을 재구성하기 위해 요구된 이들 원자들에 대한 가시성 루틴을 수행한다.
도 8d의 예시적인 데이터 흐름을 계속하면, TE(106b)가, 상기 논의된 바와 같이, 시점 질의를 제공하기 위해 어떤 원자들이 사용되어야 하는지를 결정한다면, TE(106b)는 SSM(110)으로부터 이들 원자들을 요청한다. 몇몇 경우들에서, 요청된 원자들 중 하나 이상은 SSM들에 의해 유지된 원자들의 "프리징" 사본들이다. 다른 경우들에서, 요청된 원자들 중 하나 이상은 SSM들에 의해 뿐만 아니라, SM들에 의해 또한 지속적이게 되는 현재-상태 원자들이다. 임의의 이러한 경우들에서, 및 도 8d에 도시된 바와 같이, TE(106b)는 원자 요청을 SM(108) 또는 SSM(110)으로 전송함으로써 시점 질의를 제공하기 위해 필요한 원자들을 요청할 수 있다. 이에 응답하여, SM(108) 또는 SSM(110)은 요청된 원자들이 그 각각의 원자 캐시에 있는지를 결정할 수 있으며, 아니라면, 지속적 저장 장치(예로서, 지속성 저장 위치들(112 또는 114))로부터 그것들을 검색함으로써 이들 원자들을 로딩할 수 있다. 일단 원자 캐시에 있다면, SSM(110)은 예를 들면, 통신 네트워크(101)를 통해 요청된 원자들을 TE(106b)로 전송할 수 있다. 실시예에서, TE(106b)는 질의를 수행하고 클라이언트로 반환될 수 있는 요청된 스냅샷에 대해 유효한 결과들을 포함한 결과 세트를 구성하기 위해 수신된 프리징 및/또는 현재-상태 원자들을 이용한다.
컴퓨터 시스템
도 9는 본 개시에서 제공된 기술들 및 양상들에 따른, 분산 데이터베이스 시스템(100)의 하나 이상의 노드들을 실행하도록 구성된 컴퓨팅 시스템(1100)을 예시한다. 보여질 수 있는 바와 같이, 컴퓨팅 시스템(1100)은 프로세서(1102), 데이터 저장 디바이스(1104), 메모리(1105), 네트워크 인터페이스 회로(1108), 입력/출력 인터페이스(1110) 및 상호 연결 요소(1112)를 포함한다. 여기에서 제공된 적어도 몇몇 양상들을 실행하기 위해, 프로세서(1102)는 루틴들의 실행 및 데이터의 조작을 야기하는 일련의 지시들을 수신하고 수행한다. 몇몇 경우들에서, 프로세서는 적어도 두 개의 프로세서들이다. 몇몇 이러한 경우들에서, 프로세서는 가변하는 수의 프로세싱 코어들을 가진 프로세서 또는 다수의 프로세서들일 수 있다. 메모리(1106)는 RAM일 수 있으며 컴퓨팅 시스템(1100)의 동작 동안 사용된 지시들 및 다른 데이터의 시퀀스들을 저장하도록 구성될 수 있다. 이를 위해, 메모리(1106)는 동적 랜덤 액세스 메모리(DRAM), 정적 RAM(SRAM), 또는 플래시 메모리 등과 같은 휘발성 및 비-휘발성 메모리의 조합일 수 있다. 네트워크 인터페이스 회로(1108)는 네트워크-기반 통신이 가능한 임의의 인터페이스 디바이스일 수 있다. 이러한 네트워크 인터페이스의 몇몇 예들은 이더넷, 블루투스, 파이버 채널, Wi-Fi 및 RS-232(직렬) 인터페이스를 포함한다. 데이터 저장 디바이스(1104)는 임의의 컴퓨터 판독 가능한 및 기록 가능한 비-일시적 저장 매체를 포함한다. 저장 매체는 프로세서(1102)에 의해 실행될 수 있는 컴퓨터 프로그램을 정의하는 지시들의 시퀀스를 그것 상에 저장할 수 있다. 또한, 저장 매체는 일반적으로 저장 디바이스(1104)의 파일 시스템 내에서 연속 및 비-연속 데이터 구조들에 데이터를 저장할 수 있다. 저장 매체는 광학 디스크, 플래시 메모리, 고체 상태 드라이브(SSD) 등일 수 있다. 동작 동안, 컴퓨팅 시스템(1100)은 저장 디바이스(1104)에서의 데이터가, 메모리(1106)와 같은 메모리 디바이스로 이동되게 할 수 있어서, 보다 빠른 액세스를 허용한다. 입력/출력 인터페이스(1110)는 데이터 입력 및/또는 출력이 가능한 임의의 수의 구성요소들을 포함할 수 있다. 이러한 구성요소들은, 예를 들면, 디스플레이 디바이스, 터치스크린 디바이스, 마우스, 키보드, 마이크로폰, 및 스피커들을 포함할 수 있다. 상호 연결 요소(1112)는 컴퓨팅 시스템(1100)의 구성요소들 사이에 수립되며 USB, IDE, SCSI, PCI 등과 같은 표준 버스 기술들에 적응하여 동작하는 임의의 통신 채널 또는 버스를 포함할 수 있다.
컴퓨팅 시스템(1100)은 하나의 특정한 구성에서 도시되지만, 양상들 및 실시예들은 다른 구성들을 가진 컴퓨팅 시스템들에 의해 실행될 수 있다. 따라서, 다수의 다른 컴퓨터 구성들은 본 개시의 범위 내에 있다. 예를 들면, 컴퓨팅 시스템(1100)은 소위 "블레이드" 서버 또는 다른 랙-마운트 서버일 수 있다. 다른 예들에서, 컴퓨팅 시스템(1100)은 Windows®, 또는 Mac OS® 운영 시스템을 구현할 수 있다. 많은 다른 운영 시스템들이 사용될 수 있으며, 예들은 임의의 특정한 운영 시스템에 제한되지 않는다.
사용 예들
일 실시예에서, 관리자는 백업 절차가 분산 데이터베이스 시스템(100) 내에서 하나 이상의 데이터베이스들을 백업하기 위해 발생하게 할 수 있다. 이 실시예에서, 관리자는 사용자 인터페이스(예로서, 에이전트 노드(104)에 의해 호스팅된)를 액세스하며 백업될 데이터와 연관된 시점을 정의하는 스냅샷을 선택함으로써 백업 절차를 개시할 수 있다. 이 실시예에서, 도 8c의 예시적인 질의(803)와 유사한 질의가 이용 가능한 스냅샷들의 리스트를 획득하기 위해 이용될 수 있다. 몇몇 경우들에서, 데이터베이스의 최근 또는 현재 버전이 요구될 수 있다. 이들 경우들에서, 분산 데이터베이스 시스템(100)은 스냅샷을 자동으로 선언하며, 그에 따라 데이터베이스의 가장-최근의 버전이 백업을 위해 이용 가능하게 하도록 구성될 수 있다. 이러한 경우들에서, 관리자는 백업할 스냅샷 및 데이터베이스를 저장하기 위한 위치를 특정할 수 있다. 몇몇 이러한 예시적인 위치들은, 본 개시를 고려하여 명백할 바와 같이, USB 썸 드라이브들, 외부 하드 드라이브들, 레이드 어레이들, 상대적 경로들, 또는 임의의 적절한 저장 위치를 포함한다. 일단 완료되면, 관리자는 백업이 완료되었음을 나타내는 프롬프트, 이메일, 또는 다른 적절한 통지를 수신할 수 있다. 실시예에서, 백업 프로세스는 배경 프로세스이다. 실시예에서, 백업 프로세스는 백업을 변질시키지 않고 일시 중지되며 나중에 재시작될 수 있다. 또 다른 실시예에서, 관리자는 정밀한 증분 백업 복사를 수행하기 위해 스냅샷과 함께 특정한 스냅샷(예로서, 먼저-쓰기 로그를 이용한) 이래 트랜잭션들의 시퀀스를 백업할 수 있다.
또 다른 실시예에서, 관리자는, 돌발적 지속성 저장 손실 후 또는 그 외 데이터 이전들을 수행하기 위해, 데이터베이스, 또는 그것의 일 부분을 복원할 수 있다. 이 실시예에서, 분산 데이터베이스 시스템(100)은 "오프라인" 상태에 있으며 그에 의해 어떤 트랜잭션들도 지속적 저장 장치에 대해 커밋되지 않는다. 이 실시예에서, 백업은 본 개시를 고려하여 명백할 바와 같이, 외부 하드 드라이브 또는 다른 적절한 위치로부터 검색될 수 있다. 실시예에서, 관리자는 SM에 의해 사용될 물리 저장 장치로 백업을 복사하기 위해 소프트웨어 툴을 이용한다. 몇몇 경우들에서, 백업은 스냅샷으로부터 복사된 파일들, 및 스냅샷 이래 변화들의 세트(예로서, 증분적 변화들)을 포함하며, 이것은 원하는 시점으로 데이터베이스를 복원시키기 위해 이용될 수 있다. 실시예에서, 데이터베이스는 관리 애플리케이션 또는 콘솔을 통해 정상적 방식으로 구성되고 시작될 수 있다. 일단 시작되면, 하나 이상의 SM들은 소프트웨어 툴을 이용하여 실장된 물리 저장 위치로 향해질 수 있다. 그 결과, SM들은 오프라인에서 온라인으로 이전하며, 그에 따라 뒤이은 트랜잭션들이 하나 이상의 TE들에 의해 커밋될 수 있게 한다.
또 다른 실시예에서, 데이터베이스에 대한 잘못된 사용자 변화들은 분산 데이터베이스 시스템(100) 내에서 데이터베이스의 라이브 동작 동안 "롤백"될 수 있다. 이러한 롤백 절차는 예로서 보다 양호하게 이해될 수 있다. 사용자가 "계정들"로 명명된 테이블을 잘못하여 삭제하는 상황을 고려해보자. 이 예에서, 데이터베이스 관리자는 테이블 삭제에 앞선 최근의 스냅샷을 탐색할 수 있다. 이러한 탐색을 구현하는 하나의 이러한 예시적인 SQL 문장은 다음과 같다:
SELECT max(id) FROM system_snapshots WHERE time < now();
일단 실행되면, 관리자는 탐색 이전 테이블로부터 데이터를 선택하며 테이블을 재생성하도록 스냅샷 식별자(상기 예에서 "id")를 선택하기 위해 결과 세트를 사용할 수 있다. 예를 들면, "id"가 3이면:
SELECT FROM Accounts INTO Accounts AS OF 3;
이러한 예시적인 시점 질의를 실행한 결과로서, 새로운 계정들 테이블이 생성되며 이전에 삭제된 계정들 테이블로부터의 데이터를 포함하여 데이터베이스로 삽입된다. 계정들 테이블을 표현한 데이터는 그러므로 데이터베이스의 현재 상태로 재도입될 것이다.
여기에서 다양하게 개시된 기술들을 이용한 부가적인 사용 시나리오들은 또한 본 개시를 고려하여 명백해야 한다. 예를 들면, 검출 6개월 전에 발생한 침입이 검출되는 시나리오를 고려하자. 이러한 상황에서, 사용자는 6개월 전으로부터의 스냅샷을 질의하며 어떤 사용자들이 시스템으로 로그되었는지에 대한 보고를 생성할 수 있다. 이러한 보고는, 구성에 의존하여, 표로 만들어진 결과 세트로서 또는 공식화된 보고로서(예로서, 그래픽들, 헤더들, 차트들, 그래프들 등을 가진) 나타내어질 수 있다.
또 다른 시나리오에서, 특정한 세트의 로우들의 이력적 요약 뷰를 생성하는 오래 계속되어 온 질의가 실행될 수 있다. 예를 들면, 전 세계에 위치된 다수의 공장들에 대한 각각의 조립 라인에 대응하는 로우를 가진 "조립 라인들"로 라벨링된 데이터베이스 테이블을 고려하자. 각각의 조립 라인 로우는 예를 들면, 실시간으로 또는 그것에 가깝게, 조립 라인이 각각 타겟 효율 미만으로, 타겟 효율에서, 또는 타겟 효율 이상으로 생산하고 있는지를 나타내는 적색, 황색 또는 녹색의 값을 갖는 "상태"로 불리우는 컬럼을 포함할 수 있다. 이를 위해, 특정한 시간 프레임에 걸친 효율 동향들이 시각화되거나 또는 그 외 보고될 수 있도록 각각의 조립 라인에 대한 이력적 뷰를 가능하게 하는 하나 이상의 시점 질의들이 수행될 수 있다. 예를 들면, 각각의 개별 조립 라인에 대한 효율의 일별 뷰 또는 각각의 공장에 대한 총 효율을 도시하는 월별 보고가 작동될 수 있다.
또 다른 예시적인 시나리오에서, 분산 데이터베이스 시스템(100)은 준수 이유들로 1년의 매일의 스냅샷들을 유지한다. 이 예에서, 제자리 데이터 보유 정책들을 준수하기 위해 모든 보다 오래된 스냅샷들을 제거하는 명령 또는 배경 프로세스가 매일 실행될 수 있다. 이것은 데이터베이스의 현재 상태에 영향을 주는 큰 질의들(예로서, 삭제 동작들)을 실행해야 함으로써 야기된 성능 페널티들을 회피한다. 또한, 이것은 보유 정책의 밖에 있는 이들 레코드들을 식별하도록 각각의 로우 업데이트가 마지막 발생한 때를 결정하기 위해(예로서, 시간스탬프 컬럼을 사용하여), 다수의 테이블들 및 그 안에서의 각각의 로우의 검사를 요구함으로써 야기된 성능 페널티들을 회피한다.
추가의 예시적 실시예들
예 1은 지속적 저장 장치에 데이터베이스 및 복수의 데이터베이스 스냅샷들을 저장하도록 구성된 시스템이며, 상기 시스템은 통신 네트워크에 통신가능하게 결합하도록 구성된 네트워크 인터페이스 회로로서, 상기 통신 네트워크는 분산 데이터베이스를 형성하는 복수의 데이터베이스 노드들을 포함하는, 상기 네트워크 인터페이스 회로, 각각이 현재 버전 및 과거 버전을 갖는, 복수의 데이터베이스 오브젝트들을 저장하기 위한 메모리, 및 상기 통신 네트워크를 통해 데이터베이스 복제 메시지를 수신하며, 상기 수신된 데이터베이스 복제 메시지에 기초하여 메모리에서의 식별된 데이터베이스 오브젝트를 조작하도록 구성된 고-분해능 보관 모드를 포함한 스냅샷 관리기 모듈을 포함하며, 여기에서 고-분해능 보관 모드는 또한 데이터베이스 복제 메시지에 따라 식별된 데이터베이스 오브젝트의 현재 버전이었던 것을 새로운 과거 버전으로서 보관하며 새로운 현재 버전을 저장하도록 구성되며, 상기 새로운 현재 버전 및 상기 과거 버전들의 각각은 스냅샷 식별자와 연관된다.
예 2는 예 1의 주제를 포함하며, 여기에서 하나 이상의 복제 메시지들은 동일한 데이터베이스 또는 그것의 부분들이 복수의 데이터베이스 노드들의 각각 내에서 메모리에 저장되도록 데이터베이스 트랜잭션들을 동기화하도록 구성되며, 각각의 복제 메시지는 데이터 조작 언어(DML) 및 상기 DML에 대한 타겟 데이터베이스 오브젝트들을 포함한다.
예 3은 예 2의 주제를 포함하며, 여기에서 DML은 구조화 질의 언어(SQL) 준수 구문을 포함한다.
예 4는 예 1 내지 예 3의 주제를 포함하며, 여기에서 각각의 데이터베이스 오브젝트는 데이터베이스 테이블, 데이터베이스 레코드, 데이터베이스 블랍, 및 데이터베이스 인덱스 중 적어도 하나를 나타낸다.
예 5는 예 1 내지 예 4의 주제를 포함하며, 여기에서 고-분해능 보관 모드는 또한 메모리에 저장된 데이터베이스 오브젝트로부터의 제거를 위해 과거 버전을 식별하는 파괴적 복제 메시지를 수신하며, 상기 파괴적 복제 메시지를 수신하는 것에 응답하여, 식별된 데이터베이스 오브젝트의 과거 버전을 데이터베이스 오브젝트의 프리징된 판독-전용 사본으로 복사하며, 데이터베이스 오브젝트의 프리징된 판독-전용 사본을 메모리로 저장하고 메모리에서 데이터베이스 오브젝트로부터 식별된 과거 버전을 제거하도록 구성된다.
예 6은 예 5의 주제를 포함하며, 여기에서 파괴적 복제 메시지들은 각각의 데이터베이스 오브젝트에 대한 동일한 수의 데이터베이스 오브젝트 버전들이 복수의 데이터베이스 노드들의 각각의 메모리에 저장된, 각각의 데이터베이스, 또는 그것의 부분에서 지속되도록 데이터베이스 오브젝트들의 과거 버전들의 제거를 동기화하도록 구성된다.
예 7은 예 5의 주제를 포함하며, 여기에서 지속적 저장 장치는 비-휘발성 저장 위치를 포함하며, 상기 고-분해능 보관 모드는 비-휘발성 저장 위치로의 데이터베이스 오브젝트의 프리징된 판독-전용 사본을 커밋하도록 구성된다.
예 8은 예 7의 주제를 포함하며 여기에서 비-휘발성 저장 위치는 상기 시스템과 연관된 로컬 하드 드라이브, 레이드 어레이, 및 네트워크-접속 저장 위치 중 적어도 하나의 상대적 경로 또는 다른 식별자를 포함한다.
예 9는 예 1의 주제를 포함하며, 여기에서 고-분해능 보관 모드는 또한 복수의 데이터베이스 노드들의 데이터베이스 노드로부터, 메모리에 저장된 하나 이상의 데이터베이스 오브젝트들에 대한 요청을 수신하도록 구성되며, 여기에서 요청된 데이터베이스 오브젝트들은 이전에 실행된 트랜잭션과 연관되고, 이전에 실행된 트랜잭션이 커밋된 시간에, 데이터베이스, 또는 그것의 부분의 일관된 상태를 총괄하여 나타내며, 통신 네트워크를 통해 하나 이상의 요청된 데이터베이스 오브젝트들을 데이터베이스 노드로 전송한다.
예 10은 예 9의 주제를 포함하며, 여기에서 하나 이상의 데이터베이스 오브젝트들 중 적어도 하나의 데이터베이스 오브젝트는 데이터베이스 오브젝트의 프리징된 판독-전용 사본을 포함하고, 상기 데이터베이스 오브젝트의 프리징된 판독-전용 사본은 고-분해능 보관 모드에 의해 파괴적 복제가 수신된 후 생성되고 메모리에 저장된다.
예 11은 예 1 내지 예 10의 주제를 포함하며, 여기에서 분산 데이터베이스는 데이터베이스에 영향을 주는 기록 동작들이 복수의 데이터베이스 노드들에 동기화되도록 데이터베이스 클라이언트에 단일의, 논리적 뷰를 제공한다.
예 12는 예 11의 주제를 포함하며, 여기에서 분산 데이터베이스 시스템은 원자성, 일관성, 고립성, 및 지속성(ACID) 속성들을 구현한다.
예 13은 적어도 하나의 프로세서에 의해 실행될 때, 고-분해능 기록 프로세스가 수행되게 하는 복수의 지시들을 그것 상에 인코딩한 비-일시적 컴퓨터-판독 가능한 매체이며, 상기 프로세스는 통신 네트워크를 통해 데이터베이스 복제 메시지를 수신하는 것으로서, 상기 통신 네트워크는 분산 데이터베이스를 형성하는 복수의 통신가능하게 결합된 데이터베이스 노드들을 포함하는, 상기 데이터베이스 복제 메시지 수신하기, 수신된 데이터베이스 복제 메시지에 기초하여 메모리에서의 식별된 데이터베이스 오브젝트를 조작하고, 데이터베이스 복제 메시지에 따라 식별된 데이터베이스 오브젝트의 현재 버전이었던 것을 새로운 과거 버전으로서 기록하며 새로운 현재 버전을 저장하고, 지속성 저장 위치에 데이터베이스 오브젝트의 새로운 현재 버전 및 과거 버전들을 저장하는 것으로서, 상기 새로운 현재 버전 및 과거 버전들의 각각은 스냅샷 식별자와 연관되는, 상기 새로운 현재 버전 및 과거 버전들을 저장하도록 구성된다.
예 14는 예 13의 주제를 포함하며, 여기에서 상기 프로세스는 또한 메모리에 저장된 데이터베이스 오브젝트로부터 제거할 과거 버전을 식별하는 파괴적 복제 메시지를 수신하고, 파괴적 복제 메시지를 수신하는 것에 응답하여, 식별된 데이터베이스 오브젝트의 과거 버전을 데이터베이스 오브젝트의 프리징된 판독-전용 사본으로 복사하며, 데이터베이스 오브젝트의 프리징된 판독-전용 사본을 메모리로 저장하고 메모리에서의 데이터베이스 오브젝트로부터 식별된 과거 버전을 제거하도록 구성된다.
예 15는 예 13 및 예 14의 주제를 포함하며, 여기에서 프로세스는 또한, 복수의 데이터베이스 노드들의 데이터베이스 노드로부터, 메모리에 저장된 하나 이상의 데이터베이스 오브젝트들에 대한 요청을 수신하는 것으로서, 상기 요청된 데이터베이스 오브젝트들은 이전에 실행된 트랜잭션과 연관되며, 이전에 실행된 트랜잭션이 커밋된 시간에, 데이터베이스, 또는 그것의 부분의 일관된 상태를 총괄하여 나타내는, 상기 요청 수신하기, 및 통신 네트워크를 통해 하나 이상의 요청된 데이터베이스 오브젝트들을 데이터베이스 노드로 전송하도록 구성된다.
예 16은 예 15의 주제를 포함하며, 여기에서 하나 이상의 데이터베이스 오브젝트들 중 적어도 하나의 데이터베이스 오브젝트는 데이터베이스 오브젝트의 프리징된 판독-전용 사본을 포함하며, 상기 데이터베이스 오브젝트의 프리징된 판독-전용 사본은 파괴적 복제가 복수의 데이터베이스 노드들의 노드로부터 수신된 후 생성되고 메모리에 저장된다.
예 17은 데이터베이스 스냅샷들을 사용한 데이터베이스의 백업 및 복원을 위한 컴퓨터-구현된 방법이며, 상기 방법은, 프로세서에 의해, 복수의 스냅샷들로부터 하나의 스냅샷을 식별하는 단계로서, 각각의 스냅샷은 이전 커밋된 데이터베이스 트랜잭션과 연관되며 상기 이전 커밋된 데이터베이스 트랜잭션이 커밋되는 시간에 데이터베이스의 일관된 상태를 논리적으로 나타내는, 상기 스냅샷 식별 단계, 식별된 스냅샷과 연관된 복수의 데이터베이스 오브젝트들을 요청하는 단계, 및 메모리에서, 상기 식별된 스냅샷에 대응하는 데이터베이스의 과거 상태를 재구성하는 단계를 포함한다.
예 18은 예 17의 주제를 포함하며, 상기 방법은 원하는 저장 위치에 상기 재구성된 과거 상태를 저장하는 단계를 추가로 포함하며, 상기 원하는 저장 위치는 USB 썸 드라이브, 하드 드라이브, 레이드 어레이, 외부 하드 드라이브, 및 네트워크-접속 저장 디바이스 중 적어도 하나이다.
예 19는 예 17 및 예 18의 주제를 포함하며, 상기 방법은 라이브 데이터베이스 상에서 이전 데이터베이스 기록 동작을 무효로 만들기 위해 상기 재구성된 과거 상태를 사용하는 단계를 추가로 포함하며, 상기 기록 동작은 UPDATE, INSERT, DELETE, 및 DROP SQL 문장 중 적어도 하나에 의해 야기된다.
예 20은 예 17 내지 예 19의 주제를 포함하며, 상기 방법은 데이터베이스 노드의 지속적 저장 장치로 상기 재구성된 과거 상태를 복사하는 단계를 추가로 포함하며, 상기 데이터베이스 노드는 판독들 및 기록들이 수행될 수 있도록 라이브 데이터베이스로서 상기 과거 상태를 인스턴스화한다.
앞서 말한 설명은 예시 및 설명의 목적들을 위해 제공되었다. 그것은 철저하도록 또는 개시된 정확한 형태로 본 개시를 제한하도록 의도되지 않는다. 본 개시의 범위는 이러한 상세한 설명에 의해서가 아닌, 오히려 첨부된 청구항들에 의해 제한된다는 것이 의도된다.
다양한 본 발명의 실시예들이 여기에서 설명되고 예시되었지만, 이 기술분야의 숙련자들은 기능을 수행하고 및/또는 결과들 및/또는 여기에서 설명된 이점들 중 하나 이상을 획득하기 위한 다양한 다른 수단들 및/또는 구조들을 쉽게 상상할 것이며, 이러한 변화들 및/또는 수정들의 각각은 여기에서 설명된 본 발명의 실시예들의 범위 내에 있는 것으로 간주된다. 보다 일반적으로, 이 기술분야의 숙련자들은 여기에서 설명된 모든 파라미터들, 치수들, 재료들, 및 구성들이 대표적이도록 의도되며 실제 파라미터들, 치수들, 재료들, 및/또는 구성들은 본 발명의 교시들이 사용되는 특정 애플리케이션 또는 애플리케이션들에 의존할 것임을 쉽게 이해할 것이다. 이 기술분야의 숙련자들은, 단지 보통의 실험을 사용하여, 여기에서 설명된 특정한 본 발명의 실시예들에 대한 많은 등가물들을 인식하거나 또는 알아낼 수 있을 것이다. 그러므로, 앞서 말한 실시예들은 단지 예로서 제공되며 첨부된 청구항들 및 그것에 대한 등가물들의 범위 내에서, 본 발명의 실시예들은 구체적으로 설명되고 청구된 것 외에 실시될 수 있다는 것이 이해될 것이다. 본 개시의 독창적 실시예들은 여기에서 설명된 각각의 개개의 특징, 시스템, 물품, 재료, 키트, 및/또는 방법에 관한 것이다. 또한, 둘 이상의 이러한 특징들, 시스템들, 물품들, 재료들, 키트들, 및/또는 방법들의 임의의 조합은, 이러한 특징들, 시스템들, 물품들, 재료들, 키트들, 및/또는 방법들이 상호 일치하지 않는다면, 본 개시의 발명의 범위 내에 포함된다.
상기 설명된 실시예들은 다수의 방식들 중 임의의 것으로 구현될 수 있다. 예를 들면, 여기에서 개시된 기술을 설계하고 만드는 실시예들은 하드웨어, 소프트웨어 또는 그것의 조합을 사용하여 구현될 수 있다. 소프트웨어로 구현될 때, 소프트웨어 코드는, 단일 컴퓨터에서 제공되는지 또는 다수의 컴퓨터들 간에 분포되는지에 관계없이, 임의의 적절한 프로세서 또는 프로세서들의 모음 상에서 실행될 수 있다.
뿐만 아니라, 컴퓨터는, 랙-장착 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 또는 태블릿 컴퓨터와 같은, 다수의 형태들 중 임의의 것으로 구체화될 수 있다는 것이 이해되어야 한다. 부가적으로, 컴퓨터는 개인용 디지털 보조기(PDA), 스마트 폰 또는 임의의 다른 적절한 휴대용 또는 고정 전자 디바이스를 포함하여, 일반적으로 컴퓨터로서 간주되지 않지만 적절한 프로세싱 능력들을 갖는 디바이스에 내장될 수 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 디바이스들을 가질 수 있다. 이들 디바이스들은, 다른 것들 중에서, 사용자 인터페이스를 제공하기 위해 사용될 수 있다. 사용자 인터페이스를 제공하기 위해 사용될 수 있는 출력 디바이스들의 예들은 출력의 시각적 프리젠테이션을 위한 프린터들 또는 디스플레이 스크린들 및 출력의 가청 프리젠테이션을 위한 스피커들 또는 다른 사운드 발생 디바이스들을 포함한다. 사용자 인터페이스를 위해 사용될 수 있는 입력 디바이스들의 예들은 키보드들, 및 마우스들, 터치 패드들, 및 디지털화 태블릿들과 같은, 포인팅 디바이스들을 포함한다. 또 다른 예로서, 컴퓨터는 스피치 인식을 통해 또는 다른 가청 포맷으로 입력 정보를 수신할 수 있다.
이러한 컴퓨터들은 근거리 네트워크 또는 기업 네트워크, 및 지능형 네트워크(IN) 또는 인터넷과 같은, 광역 네트워크를 포함하여, 임의의 적절한 형태에서의 하나 이상의 네트워크들에 의해 상호 연결될 수 있다. 이러한 네트워크들은 임의의 적절한 기술에 기초할 수 있으며 임의의 적절한 프로토콜에 따라 동작할 수 있고 무선 네트워크들, 유선 네트워크들 또는 광 섬유 네트워크들을 포함할 수 있다.
여기에서 개괄된 다양한 방법들 또는 프로세스들(예로서, 상기 개시된 기술을 설계하고 만드는)은 다양한 운영 시스템들 또는 플랫폼들 중 임의의 것을 이용하는 하나 이상의 프로세서들 상에서 실행 가능한 소프트웨어로서 코딩될 수 있다. 부가적으로, 이러한 소프트웨어는 다수의 적절한 프로그래밍 언어들 및/또는 프로그래밍 또는 스크립팅 툴 중 임의의 것을 사용하여 기록될 수 있으며, 또한 프레임워크 또는 가상 기계 상에서 실행되는 실행 가능한 기계어 코드 또는 중간 코드로서 컴파일링될 수 있다.
이것과 관련하여, 다양한 본 발명의 개념들은, 하나 이상의 컴퓨터들 또는 다른 프로세서들 상에서 실행될 때, 상기 논의된 본 발명의 다양한 실시예들을 구현하는 방법들을 수행하는 하나 이상의 프로그램들로 인코딩된 컴퓨터 판독 가능한 저장 매체(또는 다수의 컴퓨터 판독 가능한 저장 미디어)(예로서, 컴퓨터 메모리, 하나 이상의 플로피 디스크들, 컴팩트 디스크들, 광학 디스크들, 자기 테이프들, 플래시 메모리들, 필드 프로그램 가능한 게이트 어레이들 또는 다른 반도체 디바이스들에서의 회로 구성들, 또는 다른 비-일시적 매체 또는 유형의 컴퓨터 저장 매체)로서 구체화될 수 있다. 컴퓨터 판독 가능한 매체 또는 미디어는 수송 가능할 수 있으며, 따라서 그것 상에 저장된 프로그램 또는 프로그램들은 상기 논의된 바와 같이 본 발명의 다양한 양상들을 구현하기 위해 하나 이상의 상이한 컴퓨터들 또는 다른 프로세서들로 로딩될 수 있다.
용어들("프로그램" 또는 "소프트웨어")은 상기 논의된 바와 같이 실시예들의 다양한 양상들을 구현하도록 컴퓨터 또는 다른 프로세서를 프로그램하기 위해 이용될 수 있는 임의의 유형의 컴퓨터 코드 또는 컴퓨터-실행 가능한 지시들의 세트를 나타내기 위해 일반적인 의미로 여기에서 사용된다. 부가적으로, 일 양상에 따르면, 실행될 때 본 발명의 방법들을 수행하는 하나 이상의 컴퓨터 프로그램들은 단일의 컴퓨터 또는 프로세서상에 존재할 필요가 없지만, 본 발명의 다양한 양상들을 구현하기 위해 다수의 상이한 컴퓨터들 또는 프로세서들 간에 모듈식 방식으로 분포될 수 있다는 것이 이해되어야 한다.
컴퓨터-실행 가능한 지시들은, 프로그램 모듈들과 같은, 많은 형태들에서, 하나 이상의 컴퓨터들 또는 다른 디바이스들에 의해 실행될 수 있다. 일반적으로, 프로그램 모듈들은 특정한 태스크들을 수행하거나 또는 특정한 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 오브젝트들, 구성요소들, 데이터 구조들 등을 포함한다. 통상적으로 프로그램 모듈들의 기능은 다양한 실시예들에서 요구된 대로 조합되거나 또는 분배될 수 있다.
또한, 데이터 구조들은 임의의 적절한 형태로 컴퓨터-판독 가능한 미디어에 저장될 수 있다. 예시의 단순성을 위해, 데이터 구조들은 데이터 구조에서의 위치를 통해 관련되는 필드들을 갖는 것으로 도시될 수 있다. 이러한 관계들은 마찬가지로 필드들 사이에서의 관계를 운반하는 컴퓨터-판독 가능한 매체에서의 위치들을 갖고 필드들에 대한 저장을 할당함으로써 달성될 수 있다. 그러나, 임의의 적절한 메커니즘은 데이터 요소들 사이에서의 관계를 수립하는 포인터들, 태그들 또는 다른 메커니즘들의 사용을 통해서를 포함하여, 데이터 구조의 필드들에서의 정보 사이에 관계를 수립하기 위해 사용될 수 있다.
또한, 다양한 본 발명의 개념들은, 그 예가 제공된, 하나 이상의 방법들로서 구체화될 수 있다. 방법의 부분으로서 수행된 동작들은 임의의 적절한 방식으로 순서화될 수 있다. 따라서, 실시예들은, 예시적인 실시예들에서 순차적 동작들로서 도시될지라도, 동작들이 예시된 것과 상이한 순서로 수행되며, 몇몇 동작들을 동시에 수행하는 것을 포함할 수 있는, 실시예들이 구성될 수 있다.
여기에서 정의되고 사용된 바와 같이, 모든 정의들은 사전적 정의들, 참조로서 통합된 문서들에서의 정의들, 및/또는 정의된 용어들의 통상의 의미에 대해 제어하는 것으로 이해되어야 한다.
여기에서 명세서에서 및 청구항들에서 사용된 바와 같이, 부정관사들("a" 및 "an")은, 반대로 명확히 표시되지 않는다면, "적어도 하나"를 의미하는 것으로 이해되어야 한다.
여기에서 명세서에서 및 청구항들에서 사용된 바와 같이, 구("및/또는")는 그렇게 결합된 요소들, 즉 몇몇 경우들에서 결합하여 존재하며 다른 경우들에서 분리적으로 존재하는 요소들 중 "어느 하나 또는 양쪽 모두"를 의미하는 것으로 이해되어야 한다. "및/또는"과 함께 나열된 다수의 요소들은 동일한 방식으로, 즉 그렇게 결합된 요소들 중 "하나 이상"으로 해석되어야 한다. 구체적으로 식별된 이들 요소들에 관련되었는지 또는 관련되지 않았는지에 관계없이, "및/또는" 절에 의해 구체적으로 식별된 요소들이 아닌 다른 요소들이 선택적으로 존재할 수 있다. 따라서, 비-제한적인 예로서, "A 및/또는 B"에 대한 참조는, "포함하는"과 같은 제약을 두지 않은 언어와 함께 사용될 때, 일 실시예에서, A만을(선택적으로 B가 아닌 요소들을 포함한); 또 다른 실시예에서, B만을(선택적으로 A가 아닌 요소들을 포함한); 또 다른 실시예에서, A 및 B 양쪽 모두를(선택적으로 다른 요소들을 포함한) 등을 나타낼 수 있다.
여기에서 명세서 및 청구항들에서 사용된 바와 같이, "또는"은 상기 정의된 바와 같이 "및/또는"과 동일한 의미를 갖는 것으로 이해되어야 한다. 예를 들면, 리스트에서 아이템들을 분리할 때, "또는" 또는 "및/또는"은 포괄적인 것으로, 즉 다수의 요소들 또는 그것의 리스트 중 하나 이상을 또한 포함한, 적어도 하나, 및, 선택적으로 부가적인 나열되지 않은 아이템들의 포함인 것으로 해석될 것이다. "~ 중 단지 하나" 또는 " ~ 중 정확하게 하나", 또는 청구항에서 사용될 때, "~로 이루어진"과 같은 그와는 대조적으로 명확하게 표시된 단지 용어들은 다수의 요소들 또는 그것의 리스트 중 정확하게 하나의 요소의 포함을 나타낼 것이다. 일반적으로, 여기에서 사용된 바와 같이 용어("또는")는 단지 "어느 하나", "~ 중 하나", "~ 중 단지 하나", 또는 "~ 중 정확하게 하나"와 같은, 배타성의 용어들에 의해 선행될 때 배타적 대안들(즉, "양쪽 모두가 아닌 하나 또는 다른 것")을 나타내는 것으로 해석될 것이다. "근본적으로 ~로 이루어진"은, 청구항들에서 사용될 때, 특허 법의 분야에서 사용된 바와 같이 그것의 통상의 의미를 가질 것이다.
여기에서 명세서에서 및 청구항들에서 사용된 바와 같이, 하나 이상의 요소들의 리스트와 관련하여 구("적어도 하나")는 요소들의 리스트에서 요소들 중 임의의 하나 이상으로부터 선택된 적어도 하나의 요소를 의미하지만, 반드시 요소들의 리스트 내에 구체적으로 나열된 모든 각각의 요소 중 적어도 하나를 포함하지는 않으며 요소들의 리스트에서 요소들의 임의의 조합들을 제외하는 것은 아니라는 것이 이해되어야 한다. 이러한 정의는 또한 구체적으로 식별된 이들 요소들에 관련되는지 또는 관련되지 않는지에 관계없이, 구("적어도 하나")가 나타내는 요소들의 리스트 내에서 구체적으로 식별된 요소들이 아닌 요소들이 선택적으로 존재할 수 있다는 것을 허용한다. 따라서, 비-제한적인 예로서, "A 및 B 중 적어도 하나"(또는 동일하게, "A 또는 B 중 적어도 하나" 또는 동일하게 "A 및/또는 B 중 적어도 하나")는, 일 실시예에서, 선택적으로, B가 존재하지 않고, 하나 이상의 A를 포함하는(및 선택적으로 B가 아닌 요소들을 포함한), 적어도 하나를; 또 다른 실시예에서, 선택적으로, A가 존재하지 않고, 하나 이상의 B를 포함한(및 선택적으로 A가 아닌 요소들을 포함한), 적어도 하나를; 또 다른 실시예에서, 선택적으로 하나 이상의 A를 포함한, 적어도 하나, 및 선택적으로 하나 이상의 B를 포함한 적어도 하나(및 선택적으로 다른 요소들을 포함한) 등을 나타낼 수 있다.
청구항들에서, 뿐만 아니라 상기 명세서에서, "포함하는", "포함시키는", "운반하는", "갖는", "함유하는", "수반하는", "유지하는", "~로 구성된" 등과 같은 모든 접속구들은 제약을 두지 않는 것으로, 즉 이에 제한되지 않지만 포함하는을 의미하는 것으로 이해될 것이다. 단지 접속구들("~로 이루어진" 및 "근본적으로 ~으로 이루어진")은, 미국 특허청 특허 심사 지침서, 섹션 2111.03에서 제시된 바와 같이, 각각 폐쇄형 또는 반-폐쇄형 접속구들일 것이다.

Claims (20)

  1. 지속적 저장 장치에 데이터베이스 및 복수의 데이터베이스 스냅샷들을 저장하도록 구성된 시스템에 있어서,
    통신 네트워크에 통신가능하게 결합하도록 구성된 네트워크 인터페이스 회로로서, 상기 통신 네트워크는 분산 데이터베이스를 형성하는 복수의 데이터베이스 노드들을 포함하는, 상기 네트워크 인터페이스 회로;
    복수의 데이터 구조들을 저장하기 위한 메모리- 상기 복수의 데이터 구조들 내의 각각의 데이터 구조는 대응하는 데이터베이스 오브젝트의 현재 버전 및 상기 대응하는 데이터베이스 오브젝트의 적어도 하나의 과거 버전을 포함함 -;
    상기 메모리에 통신가능하게 결합되고, 상기 복수의 데이터 구조들 내의 데이터 구조에서 데이터베이스 오브젝트를 조작하는 데이터베이스 트랜잭션을 커밋하도록 구성된 프로세서; 및
    스냅샷 관리기 모듈을 포함하고, 상기 스냅샷 관리기 모듈은:
    커밋 중인 상기 데이터베이스 트랜잭션에 대한 응답으로, 상기 분산 데이터베이스의 특정 시점 상태를 나타내는 스냅샷을 선언하고- 상기 특정 시점 상태는 상기 데이터베이스 오브젝트를 조작하는 후속 데이터베이스 트랜잭션을 커밋하기 전에 상기 데이터베이스 오브젝트의 뷰(view)를 제공함 -;
    상기 통신 네트워크를 통해 파괴적 복제 메시지를 수신하고- 상기 파괴적 복제 메시지는 상기 데이터 구조로부터 제거할 상기 데이터베이스 오브젝트의 과거 버전을 식별함 -;
    상기 파괴적 복제 메시지 수신에 대한 응답으로, 상기 파괴적 복제 메시지를 적용하기 전에 상기 데이터 구조의 프리징된 판독-전용 사본을 생성하고- 상기 데이터 구조의 상기 프리징된 판독-전용 사본은 상기 데이터베이스 오브젝트의 상기 과거 버전을 포함함 -;
    상기 데이터 구조의 상기 프리징된 판독-전용 사본을 만든 후, 상기 데이터 구조로부터 상기 데이터베이스 오브젝트의 상기 과거 버전을 제거하기 위해 상기 파괴적 복제 메시지를 적용하고;
    상기 데이터 구조의 상기 프리징된 판독-전용 사본을 상기 분산 데이터베이스의 상기 스냅샷과 연관시키고- 상기 데이터 구조의 상기 프리징된 판독-전용 사본은 상기 분산 데이터베이스의 상기 스냅샷 내의 상기 데이터 구조의 사본을 논리적으로 대체함 -;
    상기 스냅샷에 대해 특정 시점 질의를 수행하도록 구성되는- 상기 특정 시점 질의는 상기 데이터 구조의 상기 프리징된 판독-전용 사본으로부터 상기 데이터베이스 오브젝트의 상기 과거 버전을 반환함 -, 시스템.
  2. 청구항 1에 있어서,
    상기 파괴적 복제 메시지는 데이터 조작 언어(DML) 및 상기 DML에 대한 타겟 데이터베이스 오브젝트들을 포함하는, 시스템.
  3. 청구항 2에 있어서,
    상기 DML은 구조화 질의 언어(SQL) 준수 구문을 포함하는, 시스템.
  4. 청구항 1에 있어서,
    각각의 데이터베이스 오브젝트는 데이터베이스 테이블, 데이터베이스 레코드, 데이터베이스 블랍, 및 데이터베이스 인덱스 중 적어도 하나를 나타내는, 시스템.
  5. 청구항 1에 있어서,
    상기 파괴적 복제 메시지는 각각의 데이터베이스 오브젝트에 대한 동일한 수의 데이터베이스 오브젝트 버전들이 상기 복수의 데이터베이스 노드들의 각각의 메모리에 저장된 각각의 데이터베이스, 또는 그것의 부분에서 지속되도록 데이터베이스 오브젝트들의 과거 버전들의 제거를 동기화하도록 구성되는, 시스템.
  6. 청구항 1에 있어서,
    상기 지속적 저장 장치는 비-휘발성 저장 위치를 포함하되, 상기 스냅샷 관리기 모듈은 상기 비-휘발성 저장 위치로 상기 데이터베이스 오브젝트의 상기 프리징된 판독-전용 사본을 커밋하도록 구성되는, 시스템.
  7. 청구항 6에 있어서,
    상기 비-휘발성 저장 위치는 상기 시스템과 연관된 로컬 하드 드라이브, 독립 디스크들의 이중화 어레이(RAID), 및 네트워크-접속 저장 위치 중 적어도 하나의 상대적 경로 또는 다른 식별자를 포함하는, 시스템.
  8. 청구항 1에 있어서,
    상기 스냅샷 관리기 모듈은 또한:
    상기 복수의 데이터베이스 노드들의 데이터베이스 노드로부터, 상기 메모리에 저장된 하나 이상의 데이터베이스 오브젝트들에 대한 요청을 수신하되, 요청된 상기 데이터베이스 오브젝트들은 이전에 실행된 트랜잭션과 연관되고 상기 이전에 실행된 트랜잭션이 커밋된 시간에 상기 데이터베이스, 또는 그것의 부분의 일관된 상태를 총괄하여 나타내는, 상기 요청을 수신하도록; 그리고
    상기 통신 네트워크를 통해 요청된 상기 하나 이상의 데이터베이스 오브젝트들을 상기 데이터베이스 노드로 전송하도록 구성되는, 시스템.
  9. 청구항 1에 있어서,
    상기 분산 데이터베이스는 상기 데이터베이스에 영향을 주는 기록 동작들이 상기 복수의 데이터베이스 노드들에 동기화되도록 데이터베이스 클라이언트에 단일의, 논리적 뷰를 제공하는, 시스템.
  10. 청구항 9에 있어서,
    상기 분산 데이터베이스는 원자성, 일관성, 고립성, 및 지속성(ACID) 속성들을 구현하는, 시스템.
  11. 적어도 하나의 프로세서에 의해 실행될 때 고-분해능 보관 프로세스가 수행되게 하는 복수의 지시들을 그것 상에 인코딩한 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서,
    상기 프로세스는:
    커밋 중인 데이터베이스 오브젝트를 조작하는 데이터베이스 트랜잭션에 대한 응답으로, 분산 데이터베이스의 특정 시점 상태를 나타내는 스냅샷을 선언하고- 상기 특정 시점 상태는 상기 데이터베이스 오브젝트를 조작하는 후속 데이터베이스 트랜잭션을 커밋하기 전에 상기 데이터베이스 오브젝트의 뷰를 제공함-;
    통신 네트워크를 통해 파괴적 복제 메시지를 수신하고- 상기 통신 네트워크는 분산 데이터베이스를 형성하는 복수의 통신가능하게 결합된 데이터베이스 노드들을 포함하고, 상기 파괴적 복제 메시지는 데이터 구조로부터 제거할 상기 데이터베이스 오브젝트의 과거 버전을 식별하고, 상기 데이터 구조는 상기 데이터베이스 오브젝트의 현재 버전 및 상기 데이터베이스 오브젝트의 상기 과거 버전을 저장함-;
    상기 파괴적 복제 메시지 수신에 대한 응답으로, 상기 파괴적 복제 메시지를 적용하기 전에 상기 데이터 구조의 프리징된 판독-전용 사본을 생성하고;
    상기 데이터 구조의 상기 프리징된 판독-전용 사본을 상기 분산 데이터베이스의 상기 스냅샷과 연관시키고- 상기 데이터 구조의 상기 프리징된 판독-전용 사본은 상기 데이터베이스 오브젝트의 상기 과거 버전을 포함함-;
    상기 데이터베이스 오브젝트의 상기 프리징된 판독-전용 사본을 만든 후, 상기 데이터 구조로부터 상기 데이터베이스 오브젝트의 상기 과거 버전을 제거하기 위해 상기 파괴적 복제 메시지를 적용하고;
    상기 데이터 구조의 상기 프리징된 판독-전용 사본을 상기 분산 데이터베이스의 상기 스냅샷과 연관시키고- 상기 데이터 구조의 상기 프리징된 판독-전용 사본은 상기 분산 데이터베이스의 상기 스냅샷 내의 상기 데이터 구조의 사본을 논리적으로 대체함 -;
    상기 스냅샷에 대해 특정 시점 질의를 수행하도록 구성되는- 상기 특정 시점 질의는 상기 데이터 구조의 상기 프리징된 판독-전용 사본으로부터 상기 데이터베이스 오브젝트의 상기 과거 버전을 반환함-, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  12. 청구항 11에 있어서,
    상기 프로세스는 또한:
    상기 복수의 데이터베이스 노드들의 데이터베이스 노드로부터, 메모리에 저장된 하나 이상의 데이터베이스 오브젝트들에 대한 요청을 수신하되, 요청된 상기 데이터베이스 오브젝트들은 이전에 실행된 트랜잭션과 연관되며, 상기 이전에 실행된 트랜잭션이 커밋된 시간에 상기 데이터베이스, 또는 그것의 부분의 일관된 상태를 총괄하여 나타내는, 상기 요청을 수신하도록; 그리고
    상기 통신 네트워크를 통해 상기 하나 이상의 요청된 데이터베이스 오브젝트들을 상기 데이터베이스 노드로 전송하도록 구성되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  13. 데이터 구조들의 세트를 저장하는 분산 데이터베이스로서, 상기 데이터 구조들의 세트 내의 각각의 데이터 구조는 대응하는 데이터베이스 오브젝트의 현재 버전 및 상기 데이터베이스 오브젝트의 미리 정의된 수의 과거 버전을 포함하고, 상기 데이터 구조들의 세트는 모든 데이터베이스 오브젝트들을 포함하며, 상기 분산 데이터베이스는:
    트랜잭션 엔진(TE) 노드들- 상기 TE 노드들은 상기 데이터 구조들의 세트의 제1 데이터 구조의 제1 사본을 저장하기 위한 캐시 및 클라이언트로부터의 요청에 응답하여 상기 제1 데이터 구조의 상기 제1 사본에 대한 트랜잭션을 커밋하기 위한 프로세서를 포함하는 제1 TE 노드를 포함함-;
    저장 관리기(SM) 노드 - 상기 SM 노드는 각 TE 노드에 통신가능하게 결합되고, 상기 데이터 구조들의 세트의 제1 완전한 사본을 저장하기 위한 SM 지속적 저장 장치 및/또는 SM 메모리 및 상기 데이터 구조들의 사본을 상기 TE 노드들에 제공하기 위한 네트워크 인터페이스를 포함함-; 및
    스냅샷 저장 관리기(SSM) 노드를 포함하는 - 상기 SSM 노드는 각각의 TE 노드 및 상기 SM 노드에 통신가능하게 결합되고, 상기 데이터 구조들의 세트의 제2 완전한 사본을 저장하기 위한 SSM 메모리와, 상기 SM 메모리 내의 상기 데이터 구조들의 세트의 상기 제1 완전한 사본 및 상기 TE 노드들 내의 상기 캐시들에 의해 저장된 상기 데이터 구조들의 상기 사본들로부터 제거된 데이터베이스 오브젝트들의 과거 버전들의 판독-전용 사본들을 저장하기 위한 SSM 지속적 저장 장치, 및 상기 데이터베이스 오브젝트들의 상기 판독-전용 사본들을 상기 TE 노드들 및 상기 SM 노드에 제공하기 위한 네트워크 인터페이스를 포함함 -, 분산 데이터베이스.
  14. 분산 데이터베이스를 이전 상태로 복원하기 위한 방법으로서, 상기 분산 데이터베이스는 데이터 구조들의 세트를 저장하고, 상기 데이터 구조들의 세트 내의 각각의 데이터 구조는 대응하는 데이터베이스 오브젝트의 현재 버전을 포함하고, 상기 데이터 구조들의 세트는 모든 데이터베이스 오브젝트들을 포함하며, 상기 방법은:
    지속적 저장 장치에, 상기 데이터베이스 오브젝트들의 과거 버전들의 판독-전용 사본들을 저장하고;
    상기 데이터베이스 오브젝트들의 과거 버전들의 상기 판독-전용 사본들을 각각의 스냅샷들과 연관시키고- 각각의 스냅샷은 상기 분산 데이터베이스의 대응하는 특정 시점 상태를 나타냄 -;
    상기 데이터 구조들에 커밋된 트랜잭션들과 일치하는 순서로 각각의 앨범들의 상기 스냅샷들을 배열하고;
    클라이언트로부터, 현재 시점 이전의 제1 시점의 상기 분산 데이터베이스의 특정 시점 상태에 대한 특정 시점 질의를 수신하고;
    상기 지속적 저장 장치로부터, 제1 앨범 내의 제1 스냅샷과 연관된 제1 데이터베이스 오브젝트의 과거 버전의 판독-전용 사본을 검색하고- 상기 제1 스냅샷은 상기 제1 시점의 상기 분산 데이터베이스의 상기 특정 시점 상태를 나타냄 -;
    상기 지속적 저장 장치로부터, 제2 앨범 내의 제2 스냅샷으로부터 상기 제1 시점과 상기 현재 시점 사이에 변경된 제2 데이터베이스 오브젝트의 과거 버전의 판독-전용 사본을 검색하고; 그리고
    상기 제1 데이터베이스 오브젝트의 상기 과거 버전의 상기 판독-전용 사본과 상기 제2 데이터베이스 오브젝트의 상기 과거 버전의 상기 판독-전용 사본으로부터 상기 제1 시점의 상기 분산 데이터베이스의 상기 특정 시점 상태를 재구성하는 것을 포함하는, 방법.
  15. 데이터 구조들의 세트를 저장하는 분산 데이터베이스로서, 상기 데이터 구조들의 세트 내의 각각의 데이터 구조는 대응하는 데이터베이스 오브젝트의 현재 버전을 포함하고, 상기 데이터 구조들의 세트는 모든 데이터베이스 오브젝트들을 포함하며, 상기 분산 데이터베이스는:
    보관 노드, 상기 보관 노드는:
    상기 데이터베이스 오브젝트들의 과거 버전들의 판독-전용 사본들을 저장하고;
    상기 데이터베이스 오브젝트들의 과거 버전들의 상기 판독-전용 사본들을 각각의 스냅샷들과 연관시키고- 각각의 스냅샷은 상기 분산 데이터베이스의 대응하는 특정 시점 상태를 나타냄-; 그리고,
    상기 데이터 구조들에 커밋된 트랜잭션들과 일치하는 순서로 각각의 앨범들의 상기 스냅샷들을 배열하도록 구성됨; 및
    상기 보관 노드에 작동가능하게 결합된 클라이언트-향 노드를 포함하고, 상기 클라이언트-향 노드는:
    클라이언트로부터, 현재 시점 이전의 제1 시점의 상기 분산 데이터베이스의 특정 시점 상태에 대한 특정 시점 질의를 수신하고;
    지속적 저장 장치로부터, 제1 앨범 내의 제1 스냅샷과 연관된 제1 데이터베이스 오브젝트의 과거 버전의 판독-전용 사본을 검색하고- 상기 제1 스냅샷은 상기 제1 시점의 상기 분산 데이터베이스의 상기 특정 시점 상태를 나타냄 -;
    상기 지속적 저장 장치로부터, 제2 앨범 내의 제2 스냅샷으로부터 상기 제1 시점과 상기 현재 시점 사이에 변경된 제2 데이터베이스 오브젝트의 과거 버전의 판독-전용 사본을 검색하고; 그리고
    상기 제1 데이터베이스 오브젝트의 상기 과거 버전의 상기 판독-전용 사본과 상기 제2 데이터베이스 오브젝트의 상기 과거 버전의 상기 판독-전용 사본으로부터 상기 제1 시점의 상기 분산 데이터베이스의 상기 특정 시점 상태를 재구성하도록 구성되는, 분산 데이터베이스.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020177033167A 2015-04-16 2016-04-15 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원 KR102579190B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/688,396 US10884869B2 (en) 2015-04-16 2015-04-16 Backup and restore in a distributed database utilizing consistent database snapshots
US14/688,396 2015-04-16
PCT/US2016/027658 WO2016168530A1 (en) 2015-04-16 2016-04-15 Backup and restore in a distributed database utilizing consistent database snapshots

Publications (2)

Publication Number Publication Date
KR20180021679A KR20180021679A (ko) 2018-03-05
KR102579190B1 true KR102579190B1 (ko) 2023-09-18

Family

ID=57126245

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177033167A KR102579190B1 (ko) 2015-04-16 2016-04-15 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원

Country Status (8)

Country Link
US (2) US10884869B2 (ko)
EP (1) EP3283963A4 (ko)
KR (1) KR102579190B1 (ko)
CN (1) CN107835983B (ko)
AU (1) AU2016250260B2 (ko)
CA (1) CA2982958C (ko)
IL (1) IL255038B (ko)
WO (1) WO2016168530A1 (ko)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996463B2 (en) 2012-07-26 2015-03-31 Mongodb, Inc. Aggregation framework system architecture and method
US10740353B2 (en) 2010-12-23 2020-08-11 Mongodb, Inc. Systems and methods for managing distributed database deployments
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US10713280B2 (en) 2010-12-23 2020-07-14 Mongodb, Inc. Systems and methods for managing distributed database deployments
US10262050B2 (en) 2015-09-25 2019-04-16 Mongodb, Inc. Distributed database systems and methods with pluggable storage engines
US10977277B2 (en) 2010-12-23 2021-04-13 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US11544288B2 (en) 2010-12-23 2023-01-03 Mongodb, Inc. Systems and methods for managing distributed database deployments
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US10614098B2 (en) 2010-12-23 2020-04-07 Mongodb, Inc. System and method for determining consensus within a distributed database
US10346430B2 (en) 2010-12-23 2019-07-09 Mongodb, Inc. System and method for determining consensus within a distributed database
US11615115B2 (en) 2010-12-23 2023-03-28 Mongodb, Inc. Systems and methods for managing distributed database deployments
US11403317B2 (en) 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US10872095B2 (en) 2012-07-26 2020-12-22 Mongodb, Inc. Aggregation framework system architecture and method
US11544284B2 (en) 2012-07-26 2023-01-03 Mongodb, Inc. Aggregation framework system architecture and method
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US9807169B2 (en) * 2015-05-04 2017-10-31 Sap Se Distributed tagging of data in a hybrid cloud environment
US10353893B2 (en) * 2015-05-14 2019-07-16 Deephaven Data Labs Llc Data partitioning and ordering
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
US10713275B2 (en) 2015-07-02 2020-07-14 Mongodb, Inc. System and method for augmenting consensus election in a distributed database
US10706070B2 (en) * 2015-09-09 2020-07-07 Rubrik, Inc. Consistent deduplicated snapshot generation for a distributed database using optimistic deduplication
US10706019B2 (en) * 2015-09-22 2020-07-07 Sap Se Database processing after a lock condition
US10846411B2 (en) 2015-09-25 2020-11-24 Mongodb, Inc. Distributed database systems and methods with encrypted storage engines
US10673623B2 (en) 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
US10120766B2 (en) * 2015-10-16 2018-11-06 Business Objects Software Limited Model-based system and method for undoing actions in an application
US20170124152A1 (en) 2015-11-02 2017-05-04 LeapYear Technologies, Inc. Differentially private processing and database storage
US10452490B2 (en) 2016-03-09 2019-10-22 Commvault Systems, Inc. Data management and backup of distributed storage environment
US10671496B2 (en) 2016-05-31 2020-06-02 Mongodb, Inc. Method and apparatus for reading and writing committed data
CN106126371A (zh) * 2016-06-15 2016-11-16 腾讯科技(深圳)有限公司 数据回档方法、装置及系统
US10621050B2 (en) 2016-06-27 2020-04-14 Mongodb, Inc. Method and apparatus for restoring data from snapshots
US10255237B2 (en) * 2016-07-06 2019-04-09 Sap Se Isolation level support in distributed database system
CN106777225B (zh) * 2016-12-26 2021-04-06 腾讯科技(深圳)有限公司 一种数据的迁移方法和系统
US10545962B2 (en) 2017-01-25 2020-01-28 Salesforce.Com, Inc. Relational database instruction validation
US10650028B2 (en) * 2017-01-25 2020-05-12 Salesforce.Com, Inc. Relational database instruction validation
US10776428B2 (en) * 2017-02-16 2020-09-15 Nasdaq Technology Ab Systems and methods of retrospectively determining how submitted data transaction requests operate against a dynamic data structure
US11940990B1 (en) 2017-06-16 2024-03-26 Amazon Technologies, Inc. Global clock values for consistent queries to replicated data
US10866868B2 (en) 2017-06-20 2020-12-15 Mongodb, Inc. Systems and methods for optimization of database operations
US11113312B2 (en) * 2017-06-29 2021-09-07 Microsoft Technology Licensing, Llc Reliable hierarchical storage management with data synchronization
KR102600366B1 (ko) 2017-08-15 2023-11-08 누오디비 인코포레이티드 분산형 데이터베이스에서의 인덱스 분할
US10002154B1 (en) 2017-08-24 2018-06-19 Illumon Llc Computer data system data source having an update propagation graph with feedback cyclicality
US11416344B2 (en) * 2017-10-03 2022-08-16 Rubrik, Inc. Partial database restoration
US10713124B2 (en) 2017-11-21 2020-07-14 Rubrik, Inc. Database snapshot and backup management with recoverable chains
US11243945B2 (en) * 2017-12-11 2022-02-08 International Business Machines Corporation Distributed database having blockchain attributes
MX2020010009A (es) * 2018-03-27 2021-01-15 Netflix Inc Técnicas para el diseño de reparación de antientropía programada.
US11055432B2 (en) 2018-04-14 2021-07-06 LeapYear Technologies, Inc. Budget tracking in a differentially private database system
CN108664593A (zh) * 2018-05-08 2018-10-16 东软集团股份有限公司 数据一致性校验方法、装置、存储介质及电子设备
CN108717462A (zh) * 2018-05-28 2018-10-30 郑州云海信息技术有限公司 一种数据库快照验证方法及系统
CN108846053A (zh) * 2018-05-31 2018-11-20 郑州云海信息技术有限公司 数据副本管理方法、装置、设备、系统及可读存储介质
US11403269B2 (en) * 2018-06-02 2022-08-02 Western Digital Technologies, Inc. Versioning validation for data transfer between heterogeneous data stores
US11082538B2 (en) * 2018-06-27 2021-08-03 Datastax, Inc. Off node data compaction
US10795780B2 (en) * 2018-06-29 2020-10-06 International Business Machines Corporation Data breach source and timeline analysis
US11573922B2 (en) * 2018-07-20 2023-02-07 Rubrik, Inc. Change block tracking for transfer of data for backups
CN108958991B (zh) * 2018-07-26 2022-05-06 郑州云海信息技术有限公司 集群节点故障业务快速恢复方法、装置、设备及存储介质
US11126505B1 (en) * 2018-08-10 2021-09-21 Amazon Technologies, Inc. Past-state backup generator and interface for database systems
US11442893B2 (en) 2018-08-29 2022-09-13 Red Hat, Inc. Database-aware snapshotting
US11237750B2 (en) * 2018-08-30 2022-02-01 Portworx, Inc. Dynamic volume replication factor adjustment
EP3847547A4 (en) * 2018-09-04 2022-10-12 AVEVA Software, LLC FLOW-BASED COMPOSITION, AND MONITORING SERVER SYSTEM AND METHOD
US10802926B2 (en) * 2018-09-21 2020-10-13 Microsoft Technology Licensing, Llc Accessing prior storage segment server state
US11681725B2 (en) * 2018-10-10 2023-06-20 EMC IP Holding Company LLC Tiered forensics of IoT systems in cloud and time series databases
CN112955873B (zh) * 2018-11-12 2024-03-26 华为技术有限公司 用于同步镜像文件系统的方法及其存储设备
CN110018926B (zh) * 2018-11-22 2023-08-01 创新先进技术有限公司 故障恢复方法、装置、电子设备及计算机可读存储介质
US10430605B1 (en) * 2018-11-29 2019-10-01 LeapYear Technologies, Inc. Differentially private database permissions system
CN110209528B (zh) * 2018-11-30 2022-10-28 腾讯科技(深圳)有限公司 数据备份方法、装置、服务器以及存储介质
US11288194B2 (en) 2018-12-12 2022-03-29 International Business Machines Corporation Global virtual address space consistency model
US11561844B2 (en) 2018-12-12 2023-01-24 International Business Machines Corporation Disaggregated system domain
CN111522689B (zh) * 2019-02-01 2022-04-29 阿里巴巴集团控股有限公司 全局快照方法、装置、电子设备及计算机可读存储介质
US11755769B2 (en) 2019-02-01 2023-09-12 Snowflake Inc. Differentially private query budget refunding
WO2020160557A1 (en) * 2019-02-01 2020-08-06 Nuodb, Inc. Node failure detection and resolution in distributed databases
WO2020177850A1 (en) * 2019-03-04 2020-09-10 Huawei Technologies Co., Ltd. Database updates
CN111818108B (zh) * 2019-04-10 2022-07-19 阿里巴巴集团控股有限公司 一种确保数据获取一致性的方法和装置
CN110096237B (zh) 2019-04-30 2022-02-08 北京百度网讯科技有限公司 副本处理方法及节点、存储系统、服务器、可读介质
US10642847B1 (en) 2019-05-09 2020-05-05 LeapYear Technologies, Inc. Differentially private budget tracking using Renyi divergence
CN110134704B (zh) * 2019-05-31 2021-11-02 厦门大学嘉庚学院 一种基于分布式缓存的大数据集群事务实现方法
CN112241276B (zh) * 2019-07-19 2022-04-22 华为技术有限公司 一种设备的升级方法及装置
CN112306743B (zh) * 2019-07-26 2023-11-21 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及计算机存储介质
EP3885929A4 (en) * 2019-09-11 2022-02-09 Huawei Technologies Co., Ltd. METHOD, DEVICE AND SYSTEM FOR DATA REDISTRIBUTION
CN110727709A (zh) * 2019-10-10 2020-01-24 北京优炫软件股份有限公司 一种集群数据库系统
CN112822091B (zh) * 2019-11-18 2023-05-30 北京京东尚科信息技术有限公司 一种消息处理方法和装置
CN111061737B (zh) * 2019-12-12 2023-05-09 税友软件集团股份有限公司 一种分布式数据库快速扩容装置
CN111211864B (zh) * 2019-12-25 2022-07-29 安徽机电职业技术学院 一种数据传输错误处理方法及系统
CN111143470A (zh) * 2019-12-27 2020-05-12 中国银行股份有限公司 跨平台数据库数据同步比对方法及装置
CN111324487A (zh) * 2020-01-21 2020-06-23 北京市天元网络技术股份有限公司 通信保障数据的复盘方法及装置
US11328084B2 (en) 2020-02-11 2022-05-10 LeapYear Technologies, Inc. Adaptive differentially private count
CN111586043B (zh) * 2020-05-07 2022-08-19 广东培正学院 一种计算机设备运维管理系统
US11216344B2 (en) 2020-05-13 2022-01-04 Rubrik, Inc. Real time database backup status indication and restore
CN111475585B (zh) * 2020-06-22 2021-06-01 阿里云计算有限公司 数据处理方法、装置和系统
US11250022B1 (en) 2020-09-29 2022-02-15 Amazon Technologies, Inc. Offline index builds for database tables
US11880385B1 (en) 2020-09-29 2024-01-23 Amazon Technologies, Inc. Ordering updates to secondary indexes using conditional operations
CN112258266B (zh) * 2020-10-10 2023-09-26 同程网络科技股份有限公司 分布式订单处理方法、装置、设备及存储介质
US11340998B1 (en) 2020-12-31 2022-05-24 Verified Backups LLC Systems and methods for providing backup storage and verifying the integrity of backup files
CN113342605B (zh) * 2021-06-07 2024-02-02 北京许继电气有限公司 一种PostgreSQL数据库监控和溯源分析的方法和系统
US20220398232A1 (en) * 2021-06-14 2022-12-15 Microsoft Technology Licensing, Llc Versioned metadata using virtual databases
CN113220638B (zh) * 2021-07-08 2021-10-08 浩鲸云计算科技股份有限公司 一种利用容器技术建立数据库快照的方法及系统
CN113625965B (zh) * 2021-07-19 2024-02-20 济南浪潮数据技术有限公司 分布式存储系统的数据存储方法、系统、装置及存储介质
US11853605B2 (en) 2021-09-17 2023-12-26 Micron Technology, Inc. Database persistence
CN113821382B (zh) * 2021-11-24 2022-03-01 西安热工研究院有限公司 一种实时数据库数据处理方法、系统和设备
US11941029B2 (en) 2022-02-03 2024-03-26 Bank Of America Corporation Automatic extension of database partitions
US20230385265A1 (en) * 2022-05-30 2023-11-30 Vmware, Inc. Data lake with transactional semantics
CN116107807B (zh) * 2023-01-10 2023-10-13 北京万里开源软件有限公司 数据库中数据备份时获取全局一致性点位的方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020178162A1 (en) 2001-01-29 2002-11-28 Ulrich Thomas R. Integrated distributed file system with variable parity groups
US20110087874A1 (en) 2009-10-12 2011-04-14 Veeam Software International Ltd. Item-level restoration and verification of image level backups
US20120136904A1 (en) * 2010-11-30 2012-05-31 Oracle International Corporation Records management of database tables
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
US20130179482A1 (en) 2008-06-13 2013-07-11 Oracle International Corporation Data pattern for storing information, including associated version and audit information for use in data management
US20130262403A1 (en) 2012-03-31 2013-10-03 Bmc Software, Inc. Unique attribute constraints for versioned database objects
US20150019496A1 (en) * 2013-07-09 2015-01-15 Delphix Corp. Virtual database rewind
US20150032695A1 (en) * 2013-07-25 2015-01-29 Oracle International Corporation Client and server integration for replicating data

Family Cites Families (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853843A (en) 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US5764877A (en) 1991-06-25 1998-06-09 Digital Equipment Corporation Media recovery with time-split B-trees
JP2708657B2 (ja) 1992-02-18 1998-02-04 富士通株式会社 スプリット制御方法
US5555404A (en) 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
EP0707725B1 (en) 1993-07-07 1997-01-29 EUROPEAN COMPUTER-INDUSTRY RESEARCH CENTRE GmbH Database structures
US5446887A (en) 1993-09-17 1995-08-29 Microsoft Corporation Optimal reorganization of a B-tree
US5524240A (en) 1994-05-24 1996-06-04 Panasonic Technologies, Inc. Method and apparatus for storage and retrieval of handwritten information
US5960194A (en) 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US6216151B1 (en) 1995-12-13 2001-04-10 Bea Systems, Inc. Saving connection time by obtaining result of request at later reconnection with server supplied associated key
US6792432B1 (en) 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6499036B1 (en) 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
JP2003528358A (ja) 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
US6226650B1 (en) 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US6424967B1 (en) 1998-11-17 2002-07-23 At&T Corp. Method and apparatus for querying a cube forest data structure
US6334125B1 (en) 1998-11-17 2001-12-25 At&T Corp. Method and apparatus for loading data into a cube forest data structure
US6275863B1 (en) 1999-01-25 2001-08-14 International Business Machines Corp. System and method for programming and executing long running transactions
US6401096B1 (en) 1999-03-26 2002-06-04 Paul Zellweger Method and apparatus for generating user profile reports using a content menu
US6748394B2 (en) 2000-04-27 2004-06-08 Hyperion Solutions Corporation Graphical user interface for relational database
US6523036B1 (en) 2000-08-01 2003-02-18 Dantz Development Corporation Internet database system
US7493391B2 (en) 2001-02-12 2009-02-17 International Business Machines Corporation System for automated session resource clean-up by determining whether server resources have been held by client longer than preset thresholds
US20020152262A1 (en) 2001-04-17 2002-10-17 Jed Arkin Method and system for preventing the infringement of intellectual property rights
US20020152261A1 (en) 2001-04-17 2002-10-17 Jed Arkin Method and system for preventing the infringement of intellectual property rights
AU2002305477A1 (en) 2001-05-10 2002-11-18 Ranco Incorporated Of Delaware System and method for performing diagnostics using a portable device
US6480857B1 (en) 2001-06-07 2002-11-12 David Chandler Method of organizing hierarchical data in a relational database
US6880002B2 (en) 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US7026043B2 (en) 2001-10-12 2006-04-11 Owens Corning Composites Sprl Sheet molding compound having improved surface characteristics
US7233960B1 (en) 2001-10-31 2007-06-19 Numoda Corporation System and method for mobile wireless electronic data capture and distribution of a merchant card-processing application
US7080083B2 (en) 2001-12-21 2006-07-18 Kim Hong J Extensible stylesheet designs in visual graphic environments
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
GB0202600D0 (en) 2002-02-05 2002-03-20 Ibm Consolidation of replicated data
JP4036661B2 (ja) 2002-03-01 2008-01-23 日本電信電話株式会社 複製データ管理方法、ノード、プログラム、記録媒体
CA2383713A1 (en) 2002-04-26 2003-10-26 Ibm Canada Limited-Ibm Canada Limitee Managing attribute-tagged index entries
US20030220935A1 (en) 2002-05-21 2003-11-27 Vivian Stephen J. Method of logical database snapshot for log-based replication
US7096216B2 (en) 2002-07-20 2006-08-22 Microsoft Corporation Performing operations on a set of objects in a database system
CN1238806C (zh) * 2002-08-19 2006-01-25 万达信息股份有限公司 C/s结构的信息管理系统上分布式数据处理的方法
US7222131B1 (en) 2002-09-24 2007-05-22 Rockwell Automation Technologies, Inc. System and methodology facilitating data warehousing of controller images in a distributed industrial controller environment
JP4022755B2 (ja) 2003-01-21 2007-12-19 ソニー株式会社 記録装置、再生装置、ファイル管理方法及びファイル再生方法
US7346635B2 (en) 2003-01-21 2008-03-18 Connection Concepts, Inc. System and method for transferring a database from one location to another over a network
JP2004362106A (ja) 2003-06-03 2004-12-24 Sony Corp 電子機器、ディレクトリ生成方法、ディレクトリ読込み方法及びコンピュータプログラム
US20050086384A1 (en) 2003-09-04 2005-04-21 Johannes Ernst System and method for replicating, integrating and synchronizing distributed information
US7219102B2 (en) 2003-12-22 2007-05-15 International Business Machines Corporation Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees
CN1784676B (zh) * 2004-02-25 2012-05-30 微软公司 数据库数据恢复系统和方法
US20050198062A1 (en) 2004-03-05 2005-09-08 Shapiro Richard B. Method and apparatus for accelerating data access operations in a database system
US7293039B1 (en) 2004-03-12 2007-11-06 Network Appliance, Inc. Storage resource management across multiple paths
US7395352B1 (en) 2004-03-12 2008-07-01 Netapp, Inc. Managing data replication relationships
US7657529B2 (en) 2004-03-26 2010-02-02 Oracle International Corporation Method of providing shared objects and node-specific objects in a cluster file system
US20060010130A1 (en) 2004-07-09 2006-01-12 Avraham Leff Method and apparatus for synchronizing client transactions executed by an autonomous client
US7353227B2 (en) 2004-07-23 2008-04-01 Sap Aktiengesellschaft Conflict resolution engine
JP2006048507A (ja) 2004-08-06 2006-02-16 Nippon Telegr & Teleph Corp <Ntt> ファイル検索方法、端末、プログラム、および記録媒体
US7562102B1 (en) 2004-11-29 2009-07-14 Progress Software Corporation Extensible handling of new or modified data within an independent distributed database system
GB0428109D0 (en) 2004-12-23 2005-01-26 Ibm A method for determining participation in a distributed transaction
US7546431B2 (en) * 2005-03-21 2009-06-09 Emc Corporation Distributed open writable snapshot copy facility using file migration policies
US8719250B2 (en) 2005-04-18 2014-05-06 Oracle International Corporation Integrating RDF data into a relational database system
US7890508B2 (en) 2005-08-19 2011-02-15 Microsoft Corporation Database fragment cloning and management
JP4747733B2 (ja) 2005-08-22 2011-08-17 ブラザー工業株式会社 ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
US7930346B2 (en) 2005-08-24 2011-04-19 Microsoft Corporation Security in peer to peer synchronization applications
US8043388B2 (en) 2005-12-13 2011-10-25 Himmelsbach Holdings, Llc Grafted polymer drag-reducing agents, grafted polymer fuel additives and production methods therefor
FR2895102B1 (fr) 2005-12-19 2012-12-07 Dxo Labs Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
US7853624B2 (en) 2006-05-02 2010-12-14 International Business Machines Corporation System and method for optimizing distributed and hybrid queries in imperfect environments
RU2315349C1 (ru) 2006-07-12 2008-01-20 Михаил ТОПР Способ репликации информации в распределенных базах данных и система для его осуществления
US7577658B2 (en) 2006-10-06 2009-08-18 Microsoft Corporation Hierarchical locking in B-tree indexes
US9697253B2 (en) * 2006-10-20 2017-07-04 Oracle International Corporation Consistent client-side cache
US7747589B2 (en) 2007-03-12 2010-06-29 Microsoft Corporation Transaction time indexing with version compression
US8583598B2 (en) 2007-05-29 2013-11-12 Brandeis University Device and method for enabling long-lived snapshots
US8346824B1 (en) 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
US7962458B2 (en) 2008-06-12 2011-06-14 Gravic, Inc. Method for replicating explicit locks in a data replication engine
US9740727B2 (en) 2008-10-10 2017-08-22 Abb Schweiz Ag Method and a system for replicating databases
US20100115246A1 (en) 2008-10-31 2010-05-06 Yahoo! Inc. System and method of data partitioning for parallel processing of dynamically generated application data
US9424287B2 (en) 2008-12-16 2016-08-23 Hewlett Packard Enterprise Development Lp Continuous, automated database-table partitioning and database-schema evolution
US8078825B2 (en) 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US8108343B2 (en) 2009-04-23 2012-01-31 Microsoft Corporation De-duplication and completeness in multi-log based replication
EP2467791B1 (en) 2009-10-13 2021-04-28 Open Text Software GmbH Method for performing transactions on data and a transactional database
US8150808B2 (en) * 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
US9152514B2 (en) 2009-11-24 2015-10-06 Cleversafe, Inc. Rebuilding a data segment in a dispersed storage network
US8458191B2 (en) 2010-03-15 2013-06-04 International Business Machines Corporation Method and system to store RDF data in a relational store
RU2591169C2 (ru) 2010-03-18 2016-07-10 НУОДиБи ИНК. Система управления базой данных
US8717895B2 (en) 2010-07-06 2014-05-06 Nicira, Inc. Network virtualization apparatus and method with a table mapping engine
US8868748B2 (en) 2010-10-11 2014-10-21 International Business Machines Corporation Two-level management of locks on shared resources
US8719252B2 (en) 2010-10-22 2014-05-06 Daniel Paul Miranker Accessing relational databases as resource description framework databases
US10430298B2 (en) * 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US9690679B2 (en) 2011-10-31 2017-06-27 Hewlett Packard Enterprise Development Lp Transaction commitment and replication in a storage system
US20130110781A1 (en) 2011-10-31 2013-05-02 Wojciech Golab Server replication and transaction commitment
WO2013093957A1 (en) * 2011-12-19 2013-06-27 Hitachi, Ltd. Computer system and reclamation control method
US8812564B2 (en) 2011-12-20 2014-08-19 Sap Ag Parallel uniqueness checks for partitioned tables
US9753999B2 (en) 2012-01-06 2017-09-05 Citus Data Bilgi Islemieri Ticaret A.S. Distributed database with mappings between append-only files and repartitioned files
US8756237B2 (en) 2012-10-12 2014-06-17 Architecture Technology Corporation Scalable distributed processing of RDF data
US9081597B2 (en) * 2012-11-27 2015-07-14 Red Hat Israel, Ltd. Database change compensation after a transaction commit
US9098522B2 (en) * 2012-11-29 2015-08-04 Sap Se Version garbage collection using snapshot lists
US9053210B2 (en) 2012-12-14 2015-06-09 Microsoft Technology Licensing, Llc Graph query processing using plurality of engines
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9218383B2 (en) 2013-03-15 2015-12-22 International Business Machines Corporation Differentiated secondary index maintenance in log structured NoSQL data stores
US9342556B2 (en) 2013-04-01 2016-05-17 International Business Machines Corporation RDF graphs made of RDF query language queries
US10037348B2 (en) 2013-04-08 2018-07-31 Nuodb, Inc. Database management system with database hibernation and bursting
US9798772B2 (en) 2013-04-12 2017-10-24 Oracle International Corporation Using persistent data samples and query-time statistics for query optimization
US9697215B2 (en) * 2013-09-04 2017-07-04 Oracle International Corporation Systems and methods for resumable replication
US10104082B2 (en) * 2013-11-06 2018-10-16 William P. Jones Aggregated information access and control using a personal unifying taxonomy
US9276959B2 (en) 2013-11-11 2016-03-01 Amazon Technologies, Inc. Client-configurable security options for data streams
US9355034B2 (en) * 2013-12-31 2016-05-31 Samsung Electronics Co., Ltd. Removal and optimization of coherence acknowledgement responses in an interconnect
US9727625B2 (en) * 2014-01-16 2017-08-08 International Business Machines Corporation Parallel transaction messages for database replication
US9710186B2 (en) * 2014-06-20 2017-07-18 Ca, Inc. Performing online data migration with concurrent active user access to the data
US9734021B1 (en) * 2014-08-18 2017-08-15 Amazon Technologies, Inc. Visualizing restoration operation granularity for a database
US10102240B2 (en) * 2014-11-11 2018-10-16 Inernational Business Machines Corporation Managing event metrics for service management analytics
WO2016122550A1 (en) * 2015-01-29 2016-08-04 Hewlett Packard Enterprise Development Lp Heap data structure
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020178162A1 (en) 2001-01-29 2002-11-28 Ulrich Thomas R. Integrated distributed file system with variable parity groups
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
US20130179482A1 (en) 2008-06-13 2013-07-11 Oracle International Corporation Data pattern for storing information, including associated version and audit information for use in data management
US20110087874A1 (en) 2009-10-12 2011-04-14 Veeam Software International Ltd. Item-level restoration and verification of image level backups
US20120136904A1 (en) * 2010-11-30 2012-05-31 Oracle International Corporation Records management of database tables
US20130262403A1 (en) 2012-03-31 2013-10-03 Bmc Software, Inc. Unique attribute constraints for versioned database objects
US20150019496A1 (en) * 2013-07-09 2015-01-15 Delphix Corp. Virtual database rewind
US20150032695A1 (en) * 2013-07-25 2015-01-29 Oracle International Corporation Client and server integration for replicating data

Also Published As

Publication number Publication date
IL255038A0 (en) 2017-12-31
AU2016250260A1 (en) 2017-12-07
CA2982958C (en) 2024-01-02
US20160306709A1 (en) 2016-10-20
EP3283963A1 (en) 2018-02-21
CN107835983A (zh) 2018-03-23
CN107835983B (zh) 2022-02-18
IL255038B (en) 2020-10-29
CA2982958A1 (en) 2016-10-20
US10884869B2 (en) 2021-01-05
KR20180021679A (ko) 2018-03-05
WO2016168530A1 (en) 2016-10-20
US20210173746A1 (en) 2021-06-10
EP3283963A4 (en) 2018-10-17
AU2016250260B2 (en) 2021-08-26

Similar Documents

Publication Publication Date Title
KR102579190B1 (ko) 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원
US11874746B2 (en) Transaction commit protocol with recoverable commit identifier
US11704290B2 (en) Methods, devices and systems for maintaining consistency of metadata and data across data centers
US10671642B2 (en) Copying data changes to a target database
US20160371355A1 (en) Techniques for resource description framework modeling within distributed database systems
US11714724B2 (en) Incremental vault to object store
US20130132349A1 (en) Tenant separation within a database instance
EP2746971A2 (en) Replication mechanisms for database environments
US20200265068A1 (en) Replicating Big Data
JP2018505501A (ja) アプリケーション中心のオブジェクトストレージ
CN103765393A (zh) 存储系统
US11003364B2 (en) Write-once read-many compliant data storage cluster
US11921704B2 (en) Version control interface for accessing data lakes
Motamari Snapshotting in Hadoop Distributed File System for Hadoop Open Platform as Service
US20170153951A1 (en) Incremental synchronous hierarchical system restoration

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