KR20200100173A - 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 - Google Patents

데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 Download PDF

Info

Publication number
KR20200100173A
KR20200100173A KR1020207021622A KR20207021622A KR20200100173A KR 20200100173 A KR20200100173 A KR 20200100173A KR 1020207021622 A KR1020207021622 A KR 1020207021622A KR 20207021622 A KR20207021622 A KR 20207021622A KR 20200100173 A KR20200100173 A KR 20200100173A
Authority
KR
South Korea
Prior art keywords
batch
primary
database
data
database data
Prior art date
Application number
KR1020207021622A
Other languages
English (en)
Other versions
KR102307371B1 (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 KR20200100173A publication Critical patent/KR20200100173A/ko
Application granted granted Critical
Publication of KR102307371B1 publication Critical patent/KR102307371B1/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
    • G06F16/273Asynchronous replication or reconciliation
    • 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/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

데이터베이스 데이터의 복제 및 장애 조치가 개시된다. 방법은 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 상기 데이터베이스 데이터를 복제하는 것을 포함한다. 방법은 1차 배치가 사용 불가능할 때 2차 배치에서 데이터베이스 데이터에 대한 하나 이상의 업데이트를 실행하는 것 및 1차 배치가 다시 사용 가능하게 되었을 때 하나 이상의 업데이트를 1차 배치로 전파하는 것을 포함한다. 방법은 1차 배치가 사용 가능할 때 1차 배치에서 데이터베이스 데이터에 대한 질의를 실행하는 것을 포함한다.

Description

데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
연관된 출원에 대한 상호참조
이 출원은 2018년 7월 6일에 출원된 미국 가출원 제62/694,656호 "데이터베이스 복제를 위한 시스템, 방법 및 디바이스"의 이익을 주장하며, 이는 본원에서 이하에 구체적으로 나타나는 부분을 포함하지만 이에 제한되지 않는, 전체로서 참조로 포함되며, 참조에 의한 포함은 다음 예외를 제외하고 이루어진다: 상기 참조된 출원의 임의의 일부가 이 출원과 일치하지 않는 경우, 이 출원이 상기 참조된 출원을 대체한다.
기술분야
본 발명은 데이터베이스에 관한 것이며, 더 구체적으로는 데이터베이스 시스템에서의 데이터 복제 및 장애 조치(failover)에 관한 것이다.
컴퓨팅 애플리케이션에서 데이터 저장 및 접근을 위해 데이터베이스가 널리 사용된다. 데이터베이스 스토리지의 목표는 조직화된 방식으로 방대한 양의 정보를 제공하여 접근, 관리 및 업데이트할 수 있도록 하는 것이다. 데이터베이스에서, 데이터는 행, 열 및 테이블로 조직화될 수 있다. 서지, 전체 텍스트, 숫자 및/또는 이미지 컨텐츠와 같은 상이한 유형의 컨텐츠를 저장하기 위해 상이한 데이터베이스 스토리지 시스템이 사용될 수 있다. 또한, 컴퓨팅에서, 상이한 데이터베이스 시스템은 데이터베이스의 조직화 접근법에 따라 분류될 수 있다. 관계형 데이터베이스, 분산형 데이터베이스, 클라우드 데이터베이스, 객체 지향 및 기타를 포함하여 다양한 유형의 데이터베이스가 있다.
데이터베이스는 접근 또는 분석될 필요가 있는 정보를 저장하기 위해 다양한 기업 및 회사에 의해 사용된다. 예를 들어, 유통 회사는 모든 판매 거래 목록을 데이터베이스에 저장할 수 있다. 데이터베이스는 거래가 발생한 시기, 거래가 발생한 장소, 총 거래 비용, 거래에서 구매한 모든 품목의 식별자 및/또는 설명 등에 대한 정보를 포함할 수 있다. 동일한 유통 회사가, 예를 들어, 직원 이름, 직원 연락처 정보, 직원 작업 내역, 직원 임금 등을 포함할 수 있는 직원 정보를 동일한 데이터베이스에 저장할 수도 있다. 이 유통 회사의 요구에 따라, 직원 정보와 거래 정보가 동일한 데이터베이스의 상이한 테이블에 저장될 수 있다. 유통 회사는 데이터베이스에 저장된 정보를 습득하고자 할 때 데이터베이스에 "질의(query)"해야 할 수 있다. 이 유통 회사는, 예를 들어, 특정 상점에서 근무하는 모든 직원의 이름, 특정 날짜에 근무하는 모든 직원, 특정 기간 동안 이루어진 특정 제품에 대한 모든 거래 등에 대한 데이터를 찾고자 할 수 있다.
소매점이 데이터베이스로부터 특정한 조직화된 정보를 추출하기 위해 데이터베이스로 질의하고자 할 때, 데이터베이스 데이터에 대해 질의 명령문(query statement)이 실행된다. 질의는 질의에 의해 반환되어야 하는 정보를 나타내는 하나 이상의 질의 술어(query predicate)에 따라 특정 데이터를 반환한다. 질의는 데이터베이스에서 특정한 데이터를 추출하고 해당 데이터를 판독 가능한 형식으로 포맷한다. 질의는 구조화된 질의어(SQL: Structured Query Language)와 같이 데이터베이스에서 이해할 수 있는 언어로 작성될 수 있으므로, 데이터베이스 시스템은 어떤 데이터를 찾고 어떻게 반환해야 하는지 결정할 수 있다. 질의는 데이터베이스 내에 저장된 관련된 정보를 요청할 수 있다. 질의에 응답할 수 있는 적절한 데이터가 발견될 수 있으면, 데이터베이스는 복잡한 경향 및 활동을 밝혀낼 잠재력이 있다. 이 능력은 성공적으로 실행된 질의의 사용을 통해서만 이용될 수 있다.
전통적인 데이터베이스 관리를 위해서는 회사가 데이터 센터에서 데이터베이스를 관리하기 위해 인프라(infrastructure)와 자원을 공급해야 한다. 전통적인 데이터베이스 관리는 비용이 많이 들고 다양한 범위의 전문적 기술 능력을 가진 여러 사람의 감독이 필요하다. 전통적인 관계형 데이터베이스 관리 시스템(RDMS)은 광범위한 컴퓨팅 및 스토리지 자원이 필요하며 제한된 확장성을 갖는다. 많은 양의 데이터가 여러 컴퓨팅 디바이스에 걸쳐 저장될 수 있다. 서버는 온-프레미스(on-premise) 작업을 하는 고객이 접근할 수 있도록 데이터를 관리할 수 있다. 사내 데이터베이스 서버를 보유하려는 기업의 경우, 데이터베이스 인프라를 저장하기 위한 상당한 물리적 공간과 함께 데이터베이스의 하드웨어 및 인프라에 대한 자본 투자에 기업이 상당한 자원을 소비해야 한다. 또한, 데이터베이스는 정전 또는 기타 재난 상황에서 데이터 손실에 매우 취약할 수 있다. 이러한 전통적인 데이터베이스 시스템은 클라우드 기반 데이터베이스 시스템에 의해 완화될 수 있는 중대한 단점을 안고 있다.
클라우드 데이터베이스 시스템은 조직과 최종 사용자가 클라우드에서 데이터를 저장, 관리 및 검색할 수 있는 클라우드 플랫폼을 통해 배치(deploy) 및 제공될 수 있다. 일부 클라우드 데이터베이스 시스템은 컴퓨팅 클라우드 위에 데이터베이스 소프트웨어를 설치하여 구현되는 기존 데이터베이스 아키텍처를 포함한다. 데이터베이스는 웹 브라우저 또는 애플리케이션 및 서비스 통합을 위한 애플리케이션 프로그래밍 인터페이스(API)를 통해 접근할 수 있다. 일부 클라우드 데이터베이스 시스템은 클라이언트를 대신하여 데이터베이스 설치, 배치 및 자원 할당 작업의 백엔드 프로세스를 직접 관리하는 공급 업체에 의해 운영된다. 클라이언트에는 웹 브라우저 및/또는 API를 통해 데이터베이스에 접근하는 여러 최종 사용자가 있을 수 있다. 클라우드 데이터베이스는 데이터베이스 데이터가 손실될 위험을 줄이고 다수의 지리적 영역에 걸쳐 다수의 사용자가 데이터에 접근할 수 있도록 함으로써 일부 클라이언트에게 상당한 이점을 제공할 수 있다.
전통적인 데이터베이스 시스템과 클라우드 데이터베이스 시스템을 위한 여러 아키텍처가 있다. 아키텍처의 한 예는 공유 디스크 시스템이다. 공유 디스크 시스템에서, 모든 데이터는 데이터 클러스터의 모든 처리 노드에서 접근할 수 있는 공유 스토리지 디바이스에 저장된다. 이 유형의 시스템에서, 모든 데이터 변경 사항은 공유 스토리지 디바이스에 기록되므로 데이터 클러스터의 모든 처리 노드가 일관된 버전의 데이터에 접근할 수 있다. 공유 디스크 시스템에서 처리 노드의 수가 증가함에 따라, 공유 스토리지 디바이스(및 처리 노드와 공유 스토리지 디바이스 사이의 통신 링크)는 데이터 읽기 및 데이터 쓰기 작업을 느리게 하는 병목 현상이 된다. 이 병목 현상은 더 많은 처리 노드가 추가됨에 따라 더욱 악화된다. 따라서, 기존의 공유 디스크 시스템은 이러한 병목 현상 문제로 인해 확장성이 제한된다.
일부 경우에서, 데이터베이스 데이터를 다수의 위치 또는 다수의 스토리지 디바이스에 복제하는 것이 유리할 수 있다. 데이터를 복제하면 클라우드 네트워크를 통해 데이터에 접근할 수 없게 하거나 및/또는 데이터가 손실되거나 영구적으로 판독 불가능하게 될 수 있는 시스템 장애로부터 데이터를 보호할 수 있다. 본원에 개시된 바와 같이 데이터베이스 데이터의 복제는 추가적인 이익과 개선을 제공할 수 있다.
전술한 내용에 비추어, 데이터베이스 복제를 위한 시스템, 방법 및 디바이스가 본원에 개시된다.
본 개시의 비제한적이며 비배타적인 구현은 다음의 도면을 참조하여 설명되며, 달리 명시되지 않는 한, 유사한 참조 번호는 다양한 도면에 걸쳐 동일하거나 유사한 부분을 지칭한다. 본 개시의 이점은 다음의 설명 및 첨부 도면과 관련하여 더 잘 이해될 것이다.
도 1은 본 개시의 교시와 원리에 따른 검색 및 데이터 스토리지 시스템의 구성요소의 블록도를 도시한다.
도 2는 본 개시의 교시와 원리에 따른 자원 관리자의 실시예를 나타내는 블록도를 도시한다.
도 3은 본 개시의 교시와 원리에 따른 실행 플랫폼의 실시예를 나타내는 블록도를 도시한다.
도 4는 본 개시의 교시와 원리에 따른 운영 환경의 구성요소의 블록도를 도시한다.
도 5는 본 개시의 교시와 원리에 따른 데이터베이스 스냅샷을 생성하는 프로세스 흐름의 개략도를 도시한다.
도 6은 본 개시의 교시와 원리에 따른 데이터베이스 복제를 위한 트랜잭션 로그를 생성하는 프로세스 흐름의 개략도를 도시한다.
도 7은 본 개시의 교시와 원리에 따른 데이터베이스 복제를 위한 두 개의 상이한 트랜잭션에 대한 프로세스 흐름의 개략도를 도시한다.
도 8은 본 개시의 교시와 원리에 따른 데이터베이스 복제를 위한 준비 단계를 포함하는 프로세스 흐름의 개략도를 도시한다.
도 9는 본 개시의 교시와 원리에 따른 리프레시 요청의 생성 및 전송을 도시한다.
도 10은 본 개시의 교시와 원리에 따른 스냅샷 응답의 생성 및 전송을 도시한다.
도 11은 본 개시의 교시와 원리에 따른 스냅샷 응답의 임포트를 도시한다.
도 12는 본 개시의 교시와 원리에 따른 배치 아키텍처의 개략도를 도시한다.
도 13은 본 개시의 교시와 원리에 따른 메시지 송신 프로세스 흐름의 개략도를 도시한다.
도 14는 본 개시의 교시와 원리에 따른 메시지 수신 프로세스 흐름의 개략도를 도시한다.
도 15는 본 개시의 교시와 원리에 따른 글로벌 배치 그룹의 개략도를 도시한다.
도 16은 본 개시의 교시와 원리에 따른 암호화 시스템의 개략도를 도시한다.
도 17은 본 개시의 교시와 원리에 따른 암호화 시스템의 개략도를 도시한다.
도 18은 본 개시의 교시와 원리에 따른 데이터베이스 장애 조치 방법의 개략적인 흐름도를 도시한다.
도 19는 본 개시의 교시와 원리에 따른 예시적인 컴퓨팅 디바이스를 도시한다.
다수의 데이터베이스 배치 또는 데이터베이스 제공자 사이의 일괄(batch) 데이터베이스 복제 및 장애 조치를 위한 시스템, 방법 및 디바이스가 본원에 개시된다. 본 개시의 시스템은 데이터베이스 데이터가 1차 배치에 저장되고 하나 이상의 2차 배치에 복제되도록 한다. 1차 배치의 데이터가 사용 불가능한 경우, 하나 이상의 2차 배치에서 트랜잭션이 실행될 수 있다. 원래의 1차 배치가 다시 사용 가능하게 되면, 2차 배치에서 실행된 모든 트랜잭션이 1차 배치로 전파될 수 있다. 시스템은 1차 배치가 사용 가능한 경우 언제든지 데이터베이스 데이터에 대한 질의가 1차 배치에서 실행되도록 구성될 수 있다.
일부 경우에서, 다수의 배치에 걸쳐 데이터베이스 데이터를 복제하는 것이 바람직하다. 일부 데이터베이스 클라이언트에 대해서는, 임의의 2차 배치에 저장된 데이터가 1차 배치에 저장된 데이터의 스테일이 아닌(non-stale) 최신 사본을 나타내는 것이 중요하다. 복제된 데이터베이스는 재해 복구의 목적을 위해 바람직할 수 있다. 하나 이상의 2차 배치는 1차 배치가 고장이거나 다른 이유로 사용 불가능한 경우 작업을 맡도록 대기하는 역할을 할 수 있다. 또한 판독 성능을 향상시키기 위해 복제된 데이터베이스가 바람직할 수 있다. 요청을 클라이언트 계정에 지리적으로 가장 가까운 배치로 라우팅하여 총 요청 처리 대기시간을 줄임으로써 판독 성능을 향상시킬 수 있다. 전술한 바에 비추어, 본원에 개시된 시스템, 방법 및 디바이스는 하나 이상의 2차 배치가 1차 배치와 항상 동기화되도록 1차 배치의 트랜잭션 면에서 일관된 사본을 생성 및 업데이트하는 수단을 제공한다.
일 실시예에서, 데이터베이스 데이터는 1차 배치와 하나 이상의 2차 배치 사이에서 복제된다. 또한 일 실시예에서, 1차 배치로부터 2차 배치로 장애 조치가 실행되고, 2차 배치로부터 원래의 1차 배치로 장애 복구가 실행될 수 있다.
일 실시예에서, 다수의 배치 사이에서 데이터베이스 데이터 장애 조치를 위한 방법이 개시된다. 방법은 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 데이터베이스 데이터를 복제하는 것을 포함한다. 방법은, 1차 배치가 사용 불가능하다는 결정에 응답하여, 2차 배치에서 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행하는 것을 포함한다. 방법은, 1차 배치가 더 이상 사용 불가능하지 않다는 결정에 응답하여, 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 1차 배치로 전파하는 것을 포함한다. 방법은, 1차 배치가 사용 가능한 동안, 1차 배치에서 데이터베이스 데이터에 대한 질의를 실행하는 것을 포함한다.
데이터베이스 데이터는 지리적 영역들에 걸쳐 접근될 수 있는 클라우드 기반 스토리지에 저장될 수 있다. 이 클라우드 기반 스토리지는 일부 구현에서 제3자가 유지관리할 수 있는 오프 사이트(off-site) 스토리지 시스템에 저장된 데이터베이스 데이터를 지칭한다. 예를 들어, 클라이언트는 로컬 컴퓨터 하드 드라이브 또는 클라이언트가 소유한 다른 로컬 스토리지 디바이스에 데이터를 저장하지 않고 클라우드 스토리지 제공자와 데이터를 저장하도록 결정할 수 있다. 클라이언트는 클라이언트의 컴퓨팅 자원과 클라이언트의 데이터를 저장하는 오프 사이트 스토리지 자원 사이의 인터넷 연결을 통해 데이터에 접근할 수 있다. 데이터베이스 데이터의 클라우드 스토리지는 전통적인 현장(on-site) 로컬 스토리지보다 몇 가지 장점을 제공할 수 있다. 데이터베이스 데이터가 클라우드 스토리지에 저장되면, 인터넷에 연결된 임의의 위치에서 정보에 접근할 수 있다. 따라서 데이터베이스 클라이언트는 데이터베이스 정보를 저장, 업데이트 또는 검색하기 위하여 실제 스토리지 디바이스를 이동하거나 동일한 컴퓨터를 사용할 필요가 없다. 또한, 데이터베이스 정보는 다른 지리적 위치에 있는 다수의 사용자에 의해 동시에 접근, 업데이트 및 저장될 수 있다. 클라이언트는 인터넷을 통해 파일 사본을 파일을 기록하는 클라우드 스토리지 제공자와 연관된 데이터 서버로 보낼 수 있다. 클라이언트는 웹 기반 인터페이스 또는 다른 사용자 인터페이스를 통해 클라우드 스토리지 제공자와 연관된 데이터 서버에 접근하여 데이터를 검색할 수 있다. 클라우드 스토리지 제공자와 연관된 데이터 서버는 파일을 클라이언트로 다시 보내거나 클라이언트가 데이터 서버 자체의 파일에 접근하고 조작하도록 허용할 수 있다.
클라우드 스토리지 시스템은 일반적으로 다수의 클라이언트에게 서비스할 수 있는 수백 또는 수천의 데이터 서버를 포함한다. 컴퓨터는 때때로 유지관리 또는 수리가 필요하고, 또한 컴퓨터에 때때로 장애가 발생하므로, 동일한 정보를 여러 컴퓨터에 저장하는 것이 중요하다. 이 중복성은 서버 장애가 발생하더라도 클라이언트가 언제든지 데이터에 접근할 수 있도록 보장한다.
본 개시의 일 실시예에서, 데이터베이스 데이터는 다수의 클라우드 스토리지 배치에 걸쳐 저장된다. 이러한 클라우드 스토리지 배치는 상이한 지리적 위치에 있을 수 있으며 데이터베이스 데이터는 각 배치에서 다수의 머신 및/또는 서버에 걸쳐 저장될 수 있다. 클라우드 스토리지 배치는 단일 지리적 위치에 있을 수 있지만 상이한 전원 공급장치에 연결되거나 및/또는 데이터를 저장하기 위하여 상이한 컴퓨팅 머신을 사용할 수 있다. 클라우드 스토리지 배치는 상이한 클라우드 스토리지 제공자에 의해 운영될 수 있다. 그러한 실시예에서, 데이터베이스 데이터는 다수의 배치에 걸쳐 복제되어, 하나의 배치가 사용 불가능하게 되거나 장애인 경우에도 데이터베이스 데이터가 계속 접근, 업데이트 및 저장될 수 있다. 일 실시예에서, 데이터베이스 데이터는 1차 배치에 저장되고 하나 이상의 2차 배치에 추가로 저장된다. 1차 배치는 1차 배치가 사용 가능할 때에는 항상 데이터를 접근, 질의 및 업데이트하는 데 사용될 수 있다. 하나 이상의 2차 배치는 1차 배치가 사용 불가능할 때 작업을 맡을 수 있다. 1차 배치가 다시 사용 가능하게 되면, 1차 배치가 사용 불가능하였을 때 하나 이상의 2차 배치에서 발생하였던 변경 사항으로 1차 배치가 업데이트될 수 있다. 그러면 업데이트된 1차 배치는 데이터 접근, 질의 및 업데이트를 포함하는 작업을 재개할 수 있다.
데이터가 다수의 배치에 걸쳐 저장될 때, 데이터가 각 배치에 걸쳐 일관성을 유지하는 것이 중요하다. 데이터가 1차 배치에 업데이트, 수정 또는 추가되면, 업데이트가 하나 이상의 2차 배치에 전파되어 모든 배치가 일관된 최신 버전의 데이터를 갖도록 보장할 수 있다. 1차 배치가 사용 불가능하게 되는 경우, 최신 2차 배치의 각각은 데이터가 스테일하지 않고 부정확하지 않은 상태로 데이터의 작업을 맡을 수 있다. 또한, 다수의 배치 중 임의의 것이 사용 불가능하게 되면, 그 배치는 나중에 해당 배치가 사용 불가능하였던 시간 동안 이루어진 모든 변경이 업데이트될 수 있다. 배치가 "오프라인"이었거나 사용 불가능하였던 후에 업데이트되면, 배치가 사용 불가능하였던 시간 동안 변경된 내용으로만 배치가 업데이트되도록 보장하는 것이 유리할 수 있다.
데이터 복제에 대한 기존의 접근법은 일반적으로 스냅샷 전략(snapshot strategy) 또는 로그 전략(logging strategy)을 통해 구현된다. 스냅샷 전략은 원본 데이터베이스(source database)에서 변경이 이루어진 후 원본 데이터베이스의 현재 상태에 대한 직렬화된 표현을 생성한다. 그런 다음 스냅샷을 기반으로 대상 데이터베이스가 다시 채워지며, 이는 원본 데이터베이스의 모든 변경사항에 대해 일어난다. 로그 전략은 초기(즉, 비어 있는) 데이터베이스 상태로 시작하여 원본 데이터베이스에 대한 각각의 성공적인 트랜잭션에 의한 변경을 기록한다. 변경 순서는 원본 데이터베이스의 "트랜잭션 로그"를 정의하며 트랜잭션 로그의 각 변경은 대상 데이터베이스에 대해 정확히 동일한 순서로 재생된다.
스냅샷 전략은 원본 데이터베이스의 스냅샷을 얻고 스냅샷으로부터 대상 데이터베이스를 구체화(instantiate)하여 복제를 처리한다. 그러나, 스냅샷 전략의 경우, 스냅샷의 생성 또는 소비는 복제할 오브젝트 수 및 잠재적으로 저장된 바이트 수로 측정된 데이터베이스 크기에 대략 의존한다. 스냅샷 전략은 최신의 대상 데이터베이스를 유지관리하기 위하여 각 트랜잭션마다 O(데이터베이스 크기) 작업이 필요하다. 원본 데이터베이스에서 각 성공적인 트랜잭션 후에 O(데이터베이스 크기) 작업을 수행하는 것은 작거나 비교적 정적인 데이터베이스를 제외하고는 실용적이지 않을 수 있다.
로그 전략은 개별 트랜잭션에 의해 이루어진 변경을 전파하는 비용을 대략 트랜잭션 자체의 크기로만 감소시킴으로써 스냅샷 전략의 문제를 해결하려고 시도한다. 데이터베이스를 수정하는 모든 성공적인 트랜잭션 후에 O(트랜잭션 크기) 작업을 수행하는 것은 더 적은 컴퓨팅 자원을 필요로 할 수 있다. 그러나, 로그 전략에서는 복제본 대상 데이터베이스를 생성하기 위해 작성된 이후 원본 데이터베이스에 적용된 모든 트랜잭션에 대한 로그 레코드가 필요하다. 대상 데이터베이스를 부트스트랩(bootstrap)하기 위해 O(트랜잭션 로그 크기) 작업을 수행하는 것은 스냅샷을 부트스트랩하는 것보다 비용이 많이 들 수 있다. 또한, 복제 로직의 버그는 원본 데이터베이스와 대상 데이터베이스 사이의 불일치 또는 드리프트(drift)를 일으킬 수 있어 로그 전략은 복제 로직의 버그에 대한 저항성이 약할 수 있다. 드리프트가 발생하면, 가능한 한 빠르게 수정하는 것이 중요하다. 버그가 원본 데이터베이스에(즉, 로그 레코드의 생성 측에) 있다면, 그것은 이미 자체 트랜잭션 로그에 내재화되고 이는 조정이나 정정이 어려울 수 있다. 또는, 버그가 대상 데이터베이스에(즉, 로그 레코드의 소비 측에) 에 있으면, 트랜잭션 로그를 처음부터 재생하여 대상(destination)을 재작성할 수 있지만, 상당한 컴퓨팅 자원이 필요할 수 있다.
특정 구현에서, 스냅샷 전략이나 로그 전략 중 어느 것도 데이터베이스 데이터 복제에 실용적이거나 실행 가능하지 않다. 본원에서는 스냅샷을 트랜잭션 로그와 결합하는 하이브리드 전략을 개시한다.
본원에 개시된 데이터베이스 복제의 하이브리드 접근법은 스냅샷의 사용을 트랜잭션 로그의 사용과 결합한다. 본원에 개시된 이 접근법은 원본 데이터베이스의 트랜잭션 로그를 가능하게 하고 원본 데이터베이스 상의 주기적인 스냅샷 생성을 가능하게 한다. 하이브리드 접근법은 또한 원본 데이터베이스의 가장 최근 스냅샷에 기반하여 대상 데이터베이스의 초기 구체화를 수행한다. 하이브리드 접근법은 원본 데이터베이스에 적용된 순서대로 대상 데이터베이스에서 트랜잭션 로그 레코드를 재생(스냅샷 이후)하는 것을 포함한다. 하이브리드 접근법은 새로운 스냅샷을 기반으로 대상 데이터베이스를 주기적으로 리프레시(refresh)하는 것을 더 포함하며 스냅샷 이후 트랜잭션 로그 레코드를 계속 적용한다. 본원에 개시된 바에 따르면, 하이브리드 접근법은 로그 레코드와 스냅샷 모두가 각각 사용 가능한 것을 보장하도록 구성되고 초기 부트스트랩 시간을 최소로 유지하여 초기 대상 상태가 원본 데이터베이스에 대해 상당히 최신이 되도록 구성된다. 하이브리드 접근법은 또한 원본 데이터베이스를 사용하여 대상 데이터베이스를 최신 상태로 만들고 유지하기 위한 저비용 방식을 가능하게 한다. 하이브리드 접근법은 또한 드리프트를 신속하게 수정할 수 있고, 예를 들어, 복제 비가동 시간, 처리 지연을 가져올 수 있는 서비스 또는 네트워킹 끊김(hiccup) 등으로 인하여 원본보다 훨씬 뒤떨어질 수 있는 복제본에 대한 빠른 캐치업을 가능하게 한다.
일 실시예에서, 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 데이터베이스 데이터가 복제된다. 1차 배치가, 예를 들어, 유지관리 또는 업데이트를 위해 예정된 비가동시간, 정전, 시스템 장애, 데이터 센터 중단, 데이터베이스 데이터가 잘못 수정되거나 삭제되는 오류, 클라우드 제공자 중단, 등으로 인해 사용 불가능하게 될 수 있다. 1차 배치가 사용 불가능하게 되는 것에 응답하여, 데이터베이스 데이터에 대한 하나 이상의 트랜잭션이 2차 배치 상에서 실행된다. 1차 배치가 다시 사용 가능하게 될 수 있으며 2차 배치 상에서 실행되었던 하나 이상의 트랜잭션이 1차 배치로 전파된다. 1차 배치가 사용 가능할 때 데이터베이스 데이터에 대한 질의는 1차 배치에서 실행될 수 있다.
데이터베이스 테이블은 삽입 명령, 삭제 명령, 병합 명령 등과 같은 데이터 조작어 (DML: data manipulation language) 명령문에 응답하여 변경될 수 있다. 이러한 수정은 데이터베이스 테이블에서 일어난 트랜잭션으로 지칭될 수 있다(수정은 본원에서 그 대신 "업데이트"로 지칭될 수도 있음). 일 실시예예에서, 각 트랜잭션은 언제 트랜잭션이 수신되었는지 및/또는 언제 트랜잭션이 완전히 실행되었는지 나타내는 타임스탬프를 포함한다. 일 실시예예에서, 트랜잭션은 테이블에 대해 이루어진 다수의 변경을 포함하고, 이러한 변경은 테이블의 하나 이상의 마이크로 파티션에 영향을 미칠 수 있다.
.데이터베이스 테이블은 데이터를 다수의 마이크로 파티션에 저장할 수 있으며, 마이크로 파티션은 불변 스토리지 디바이스이다. 트랜잭션이 이러한 테이블에서 실행되면, 영향을 받는 모든 마이크로 파티션은 트랜잭션의 수정을 반영하는 새로운 마이크로 파티션을 생성하기 위해 재작성된다. 트랜잭션이 완전히 실행된 후, 재작성된 원래의 마이크로 파티션이 데이터베이스에서 제거될 수 있다. 테이블에서 실행된 각 트랜잭션 후에 테이블의 새 버전이 생성된다. 테이블의 데이터가 삽입, 삭제 및/또는 병합과 같은 많은 변경을 겪으면 테이블은 일정 기간 동안 많은 버전을 겪을 수 있다. 테이블의 각 버전은 트랜잭션을 생성한 테이블, 트랜잭션이 주문된 시간, 트랜잭션이 완전히 실행된 시간 및 트랜잭션이 테이블에서 하나 이상의 행을 변경한 방법을 나타내는 메타데이터를 포함할 수 있다. 저비용 테이블 버전을 위한 개시된 시스템, 방법 및 디바이스는 제1 타임스탬프와 제2 타임스탬프 사이에 테이블에 이루어진 모든 중간 변경을 나타내는 포괄적인 변경 추적 요약을 생성하기 위한 효율적인 수단을 제공하기 위해 이용될 수 있다. 일 실시예에서, 제1 타임스탬프는 1차 배치가 사용 불가능하게 된 시간을 나타내고 제2 타임스탬프는 1차 배치가 사용 가능하도록 돌아온 시간을 나타낸다.
일 실시예예에서, 테이블의 모든 데이터는 마이크로 파티션으로 지칭되는 불변(immutable) 스토리지 디바이스 내로 자동 분할된다. 마이크로 파티션은 각 마이크로 파티션이 인접한 스토리지 유닛을 갖는 배치(batch) 유닛으로 간주될 수 있다. 예를 들어, 각 마이크로 파티션은 50MB와 500MB 사이의 압축되지 않은 데이터를 포함할 수 있다(데이터가 압축되어 저장될 수 있기 때문에 스토리지의 실제 크기는 더 작아질 수 있음을 유의한다). 테이블의 행 그룹은 열 방식으로 구성된 개별 마이크로 파티션으로 맵핑될 수 있다. 이 크기와 구조는 수백만 또는 수억 개의 마이크로 파티션으로 구성될 수 있는 매우 큰 테이블을 매우 세밀하게 프루닝(pruning)할 수 있게 한다. 메타데이터는 마이크로 파티션에 저장된 모든 행에 대해 자동으로 수집될 수 있으며, 마이크로 파티션의 각 열에 대한 값의 범위; 다른 값의 수(number of distinct values); 및/또는 최적화 및 효율적인 질의 처리에 사용되는 추가 속성을 포함한다. 일 실시예예에서, 마이크로 파티셔닝은 모든 테이블에서 자동으로 수행될 수 있다. 예를 들어, 데이터를 삽입/로드할 때 발생하는 배열(ordering)을 사용하여 테이블을 투명하게 분할할 수 있다.
중간 수정의 목록을 질의하는 것은 두 시점 사이에 데이터베이스 테이블에 대해 이루어진 점진적 변경의 포괄적인 리스팅을 결정하기 위한 효율적이고 저렴한 수단을 제공한다. 이는 시간이 지남에 따라 테이블이 어떻게 수정되었는지를 결정하기 위해 일련의 후속 테이블 버전 각각을 수동으로 비교해야 하는 이 분야에 공지된 방법보다 우수하다. 이 분야에 공지된 이러한 방법은 실행을 위해 광범위한 스토리지 자원 및 컴퓨팅 자원이 필요하다.
일 실시예에서, 파일 메타데이터는 메타데이터 스토리지 내에 저장된다. 파일 메타데이터는 테이블 버전 및 각 테이블 데이터 마이크로 파티션에 대한 정보를 포함한다. 메타데이터 스토리지는 로컬 파일 시스템, 시스템, 메모리 등과 같은 가변 스토리지(인플레이스(in-place) 쓰기 또는 덮어쓰기 가능한 스토리지)를 포함할 수 있다. 일 실시예에서, 마이크로 파티션 메타데이터는 테이블 버전 및 마이크로 파티션 정보의 2개의 데이터 세트로 구성된다. 테이블 버전 데이터 세트는 테이블 버전을 추가된 마이크로 파티션 및 제거된 마이크로 파티션 목록에 맵핑한 것을 포함한다. 마이크로 파티션 정보는 마이크로 파티션 내의 데이터에 대한 정보로 구성되며, 예를 들어, 마이크로 파티션 경로, 마이크로 파티션 크기, 마이크로 파티션 키 ID 및 마이크로 파티션에 저장된 모든 행과 열의 요약을 포함한다. 테이블을 수정할 때마다 새로운 마이크로 파티션과 새로운 마이크로 파티션 메타데이터가 생성된다. 테이블 내로의 삽입은 새로운 마이크로 파티션을 생성한다. 테이블에서 삭제하면 마이크로 파티션이 제거되고 마이크로 파티션의 모든 행이 삭제되지 않은 경우 테이블의 나머지 행을 갖는 새로운 마이크로 파티션이 추가될 수 있다. 업데이트는 마이크로 파티션을 제거하고 이를 변경된 레코드가 포함된 행을 갖는 새로운 마이크로 파티션으로 교체한다.
일 실시예예에서, 메타데이터는 불변 스토리지의 메타데이터 마이크로 파티션에 저장될 수 있다. 일 실시예예에서, 시스템은 데이터베이스 테이블의 모든 수정에 대해 메타데이터 마이크로 파티션을 클라우드 스토리지에 기록할 수 있다. 일 실시예예에서, 시스템은 스캔 세트를 계산하기 위해 메타데이터 마이크로 파티션을 다운로드 및 판독할 수 있다. 메타데이터 마이크로 파티션은 스캔 세트 계산을 개선하기 위해 수신될 때 병렬로 다운로드되고 판독될 수 있다. 일 실시예예에서, 시스템은 백그라운드에서 메타데이터 마이크로 파티션을 주기적으로 통합할 수 있다. 일 실시예예에서, 프리페칭(pre-fetching), 캐싱(caching), 열 레이아웃(columnar layout) 등을 포함하는 성능 개선이 포함될 수 있다. 또한, 열 레이아웃의 메타데이터 파일을 사용하여 암호화 및 무결성 검사를 포함한 보안 개선이 또한 가능하다.
일 실시예에서, 복제본의 초기화 및 유지관리는 데이터베이스 스냅샷 생성/소비와 트랜잭션 로그 레코드 생성/소비의 조합을 통해 구현된다. 복제본은 스냅샷으로부터 생성되고 개별 트랜잭션 레코드에 점진적으로 적용되어 복제본이 원본 데이터베이스와 동기화될 수 있다. 일 실시예에서, 점진적 트랜잭션 업데이트에 기반하여 복제본이 최신으로 간주되더라도 복제본은 스냅샷에 기반하여 주기적으로 리프레시된다. 스냅샷을 기반으로 하는 주기적 리프레시는 버그 및 기타 문제로 인한 드리프트 문제를 해결할 수 있다. 일 실시예에서, 교차 배치 가시성을 위해 스냅샷 및 트랜잭션 로그 레코드가 원격 스토리지에 기록된다. 트랜잭션 처리 인프라에 대한 수정은 원본 데이터베이스 트랜잭션 상태와 원격 스토리지에서 트랜잭션 로그 레코드의 출현 사이의 트랜잭션 일관성을 보장하기 위해 활용될 수 있다. 일 실시예에서, 데이터 정의 언어(DDL: Data Definition Language) 처리 로직에 대한 수정은 트랜잭션 처리 작업 흐름에 통합되어 DDL 애플리케이션의 일관성과 원격 스토리지에서 트랜잭션 로그 레코드의 출현을 보장할 수 있다.
본 개시의 다음의 설명에서, 본 개시의 일부를 형성하고 본 개시가 실시될 수 있는 특정 구현을 예로서 도시하는 첨부 도면을 참조한다. 다른 구현이 이용될 수 있고, 본 개시의 범위를 벗어나지 않고 구조적 변경이 이루어질 수 있음이 이해된다.
본 개시를 기술하고 청구함에 있어서, 다음의 용어는 아래에 제시된 정의에 따라 사용될 것이다.
본 명세서 및 첨부된 청구 범위에 사용되는 바에 따르면, 단수 형태("a", "an" 및 "the")는 문맥상 명백하게 다르게 지시되지 않는 한 복수의 지시 대상을 포함한다는 점을 유의하여야 한다.
본 명세서 전반에 걸쳐 "일 실시예", "실시예", "일 구현", "구현", "일 예시" 또는 "예시"는 실시예, 구현 또는 예시와 관련하여 기재된 특정한 기능, 구조 또는 특성이 본 개시의 적어도 하나의 실시예에 포함되는 것을 의미한다. 따라서, 본 명세서 전체의 다양한 곳에서 상기 식별된 문구의 출현이 반드시 모두 동일한 실시예, 구현 또는 예시를 지칭하는 것은 아니다. 또한, 본원에 제공된 도면은 당업자에게 설명하고자 하는 목적임이 이해되어야 한다.
본원에서 사용되는 바에 따르면, 용어 "포함하는("comprising," "including")", "함유하는("containing")" 및 그와 문법적으로 동등한 것은 추가의 인용되지 않은 요소 또는 방법 단계를 배제하지 않는 포괄적이거나 개방적인 용어이다.
본원에서 사용되는 바에 따르면, "테이블"은 레코드(행)의 모음으로 정의된다. 각 레코드는 테이블 속성(열) 값의 모음을 포함한다. 테이블은 일반적으로 여러 개의 더 작은(가변 크기 또는 고정 크기) 스토리지 유닛, 예를 들어, 파일 또는 블록에 물리적으로 저장된다.
본원에서 사용되는 바에 따르면, "파티셔닝(partitioning)"은 상이한 데이터를 갖는 레코드를 상이한 데이터 파티션으로 물리적으로 분리하는 것으로 정의된다. 예를 들어, 테이블은 국가 속성을 기반으로 데이터를 분할하여, 국가별 파티션을 생성할 수 있다.
본 개시에 따른 실시예는 장치, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시는 완전히 하드웨어로 구성된 실시예, 완전히 소프트웨어로 구성된 실시예(펌웨어, 상주 소프트웨어, 마이크로 코드 등을 포함) 또는 소프트웨어 및 하드웨어 양상을 결합한 실시예의 형태를 취할 수 있으며, 이들은 모두 일반적으로 본원에서 "회로", "모듈" 또는 "시스템"으로 지칭된다. 또한, 본 개시의 실시예는 매체에 구현된 컴퓨터 사용 가능 프로그램 코드를 갖는 임의의 유형적인 표현 매체에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체의 임의의 조합이 이용될 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 휴대용 컴퓨터 디스켓, 하드 디스크, 임의 접근 메모리(RAM) 디바이스, 읽기 전용 메모리(ROM) 디바이스, 소거 가능 프로그램 가능 읽기 전용 메모리(EPROM 또는 플래시 메모리) 디바이스, CDROM(Portable Compact Disc Read-Only Memory), 광학 스토리지 디바이스 및 자기 스토리지 디바이스 중 하나 이상을 포함할 수 있다. 본 개시의 작업을 수행하기 위한 컴퓨터 프로그램 코드는 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 이러한 코드는 원본 코드에서 코드가 실행될 디바이스 또는 컴퓨터에 적합한 컴퓨터 판독 가능 어셈블리 언어 또는 기계 코드로 컴파일될 수 있다.
실시예는 또한 클라우드 컴퓨팅 환경에서 구현될 수 있다. 이 설명 및 이하의 청구범위에서, "클라우드 컴퓨팅"은 구성 가능한 컴퓨팅 자원(예를 들어, 네트워크, 서버, 스토리지, 애플리케이션 및 서비스)의 공유 풀로 어디에서나 편리한 온-디맨드 네트워크 접근을 가능하게 하는 모델로 정의될 수 있으며, 가상화를 통해 신속하게 제공되고 최소한의 관리 노력이나 서비스 제공자의 상호작용으로 출시된 다음 그에 따라 확장될 수 있다. 클라우드 모델은 다양한 특성(예를 들어, 온-디맨드 셀프 서비스, 광범위 네트워크 접근, 자원 풀링, 빠른 탄력성 및 측정 가능한 서비스), 서비스 모델(예를 들어, 서비스로서의 소프트웨어(SaaS: Software as a Service), 서비스로서의 플랫폼(PaaS: Platform as a Service), 서비스로서의 인프라(IaaS: Infrastructure as a Service)) 및 배치 모델(예를 들어, 사설 클라우드, 커뮤니티 클라우드, 공공 클라우드 및 하이브리드 클라우드)로 구성될 수 있다.
첨부된 도면에서의 흐름도 및 블록도는 본 개시의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능성 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 특정 논리 함수(들)을 구현하는 하나 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또한 블록도 및/또는 흐름도의 각 블록 및 블록도 및/또는 흐름도의 블록의 조합은 특정 함수 또는 동작을 수행하는 특수 목적의 하드웨어 기반 시스템 또는 특수 목적의 하드웨어와 컴퓨터 명령어의 조합에 의해 구현될 수 있다. 이들 컴퓨터 프로그램 명령어는 또한 컴퓨터 또는 다른 프로그램 가능 데이터 처리 장치가 특정 방식으로 작용하여, 컴퓨터 판독 가능 매체에 저장된 명령어가 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 작용/동작을 구현하는 명령어 수단을 포함하는 제조품을 생성하도록 컴퓨터 판독 가능 매체에 저장될 수 있다.
본원에 기재된 시스템 및 방법은 새로운 데이터 처리 플랫폼을 사용하여 유연하고 확장 가능한 데이터 웨어하우스에서 작동할 수 있다. 일부 실시예에서, 설명된 시스템 및 방법은 클라우드 기반 스토리지 자원, 컴퓨팅 자원 등을 지원하는 클라우드 인프라를 활용한다. 예시적인 클라우드 기반 스토리지 자원은 저렴한 비용으로 온-디맨드로 제공되는 상당한 스토리지 용량을 제공한다. 또한, 이러한 클라우드 기반 스토리지 자원은 내결함성과 확장성이 뛰어나며, 이는 사설 데이터 스토리지 시스템에서는 비용이 많이 들 수 있는 것이다. 예시적인 클라우드 기반 컴퓨팅 자원은 온-디맨드로 제공되며 자원의 실제 사용 수준에 기반하여 가격이 책정될 수 있다. 일반적으로 클라우드 인프라는 빠른 방식으로 동적으로 배치, 재구성 및 폐기된다.
기재된 시스템 및 방법에서, 데이터 스토리지 시스템은 SQL(구조화된 질의어) 기반 관계형 데이터베이스를 사용한다. 그러나 이러한 시스템 및 방법은 임의의 유형의 데이터베이스 및 임의의 유형의 데이터 저장 및 검색 플랫폼에 적용할 수 있으며, 임의의 데이터 스토리지 아키텍처를 사용하고 임의의 언어를 사용하여 데이터 저장 및 검색 플랫폼 내에서 데이터를 저장하고 검색할 수 있다. 본원에 기재된 시스템 및 방법은 또한 상이한 고객/클라이언트 사이 및 동일한 고객/클라이언트 내의 상이한 사용자 사이에서 컴퓨팅 자원 및 데이터의 격리를 지원하는 멀티테넌트 시스템을 제공한다.
이제 도 1을 참조하면, 본원에 개시된 방법을 실행하는 컴퓨터 시스템이 도시된다. 도 1에 나타난 바와 같이, 자원 관리자(102)는 다수의 사용자(104, 106 및 108)에 연결될 수 있다. 특정 구현에서, 자원 관리자(102)는 데이터 처리 플랫폼(100)에 대한 접근을 원하는 임의의 수의 사용자를 지원할 수 있다. 사용자(104, 106, 108)는, 예를 들어, 데이터 저장 및 검색 요청을 제공하는 최종 사용자, 본원에 기재된 시스템 및 방법을 관리하는 시스템 관리자, 및 자원 관리자(102)와 상호 작용하는 다른 구성요소/디바이스를 포함할 수 있다.
자원 관리자(102)는 데이터 처리 플랫폼(100) 내의 모든 시스템 및 구성요소의 동작을 지원하는 다양한 서비스 및 기능을 제공한다. 자원 관리자(102)는 데이터 처리 플랫폼(100) 전체에 저장된 데이터의 전체와 연관된 메타데이터(110)에 연결될 수 있다. 일부 실시예에서, 메타데이터(110)는 원격 데이터 스토리지 시스템에 저장된 데이터의 요약 및 로컬 캐시로부터 이용 가능한 데이터를 포함할 수 있다. 또한, 메타데이터(110)는 원격 데이터 스토리지 시스템 및 로컬 캐시 내에서 데이터가 구성되는 방법에 관한 정보를 포함할 수 있다. 메타데이터(110)는 시스템 및 서비스가 스토리지 디바이스로부터 실제 데이터를 로드하거나 접근하지 않고 데이터가 처리될 필요가 있는지 여부를 결정할 수 있게 한다.
자원 관리자(102)는 실행 플랫폼(112)에 더 연결될 수 있으며, 이는 아래에서 더 상세히 논의되는 바와 같이 다양한 데이터 저장 및 데이터 검색 작업을 실행하는 다수의 컴퓨팅 자원을 제공한다. 실행 플랫폼(112)은 스토리지 플랫폼(114)의 일부인 다수의 데이터 스토리지 디바이스(116, 118 및 120)에 연결될 수 있다. 3개의 데이터 스토리지 디바이스(116, 118 및 120)가 도 1에 도시되어 있지만, 실행 플랫폼(112)은 임의의 수의 데이터 스토리지 디바이스와 통신할 수 있다. 일부 실시예에서, 데이터 스토리지 디바이스(116, 118 및 120)는 하나 이상의 지리적 위치에 위치한 클라우드 기반 스토리지 디바이스이다. 예를 들어, 데이터 스토리지 디바이스(116, 118 및 120)는 공공 클라우드 인프라 또는 사설 클라우드 인프라의 일부일 수 있다. 데이터 스토리지 디바이스(116, 118 및 120)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 스토리지 클러스터 또는 다른 데이터 스토리지 기술일 수 있다. 또한, 스토리지 플랫폼(114)은 분산 파일 시스템(예컨대, HDFS(Hadoop Distributed File Systems)), 객체 스토리지 시스템 등을 포함할 수 있다.
특정 실시예에서, 자원 관리자(102)와 사용자(104, 106, 108), 메타데이터(110) 및 실행 플랫폼(112) 사이의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 유사하게, 실행 플랫폼(112)과 스토리지 플랫폼(114)의 데이터 스토리지 디바이스(116, 118, 120) 사이의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 이들 데이터 통신 네트워크는 임의의 통신 프로토콜 및 임의의 유형의 통신 매체를 이용할 수 있다. 일부 실시예에서, 데이터 통신 네트워크는 서로 연결된 둘 이상의 데이터 통신 네트워크(또는 하위 네트워크)의 조합이다. 다른 실시예에서, 이들 통신 링크는 임의의 유형의 통신 매체 및 임의의 통신 프로토콜을 사용하여 구현된다.
도 1에 도시된 바와 같이, 데이터 스토리지 디바이스(116, 118 및 120)는 실행 플랫폼(112)과 연관된 컴퓨팅 자원으로부터 분리된다. 이 아키텍처는 데이터 처리 플랫폼(100)에 접근하는 사용자 및 시스템의 변화하는 요구뿐만 아니라 변화하는 데이터 저장/검색 요구에 기초하여 데이터 처리 플랫폼(100)에 대한 동적 변경을 지원한다. 동적 변경의 지원은 데이터 처리 플랫폼(100) 내의 시스템 및 구성요소에 대한 변화 요구에 응답하여 데이터 처리 플랫폼(100)이 빠르게 확장될 수 있게 한다. 데이터 스토리지 디바이스로부터 컴퓨팅 자원의 분리는 대응하는 많은 양의 컴퓨팅 자원을 요구하지 않고 대량의 데이터의 저장을 지원한다. 유사하게, 이러한 자원의 분리는 이용 가능한 데이터 스토리지 자원의 대응하는 증가를 요구하지 않으면서 특정 시간에 이용되는 컴퓨팅 자원의 상당한 증가를 지원한다.
자원 관리자(102), 메타데이터(110), 실행 플랫폼(112) 및 스토리지 플랫폼(114)이 도 1에서 개별 구성요소로 도시되어 있다. 그러나, 자원 관리자(102), 메타데이터(110), 실행 플랫폼(112) 및 스토리지 플랫폼(114) 각각은 분산 시스템(예를 들어, 다수의 지리적 위치에서 다수의 시스템/플랫폼에 걸쳐 분산)으로서 구현될 수 있다. 또한, 자원 관리자(102), 메타데이터(110), 실행 플랫폼(112) 및 스토리지 플랫폼(114) 각각은 사용자(104, 106, 108)로부터 수신된 요청의 변경 및 데이터 처리 플랫폼(100)의 변화하는 요구에 따라 (서로 독립적으로) 확장 또는 축소될 수 있다. 따라서, 데이터 처리 플랫폼(100)은 동적이며 현재 데이터 처리 요구를 충족시키기 위해 규칙적인 변경을 지원한다.
도 2는 자원 관리자(102)의 실시예를 도시한 블록도이다. 도 1에 도시된 바와 같이, 자원 관리자(102)는 데이터 스토리지 디바이스(206)에 연결된 접근 관리자(202) 및 키 관리자(204)를 포함한다. 접근 관리자(202)는 본원에 기재된 시스템에 대한 인증 및 허가 작업을 처리할 수 있다. 키 관리자(204)는 인증 및 허가 작업 동안 사용되는 키의 저장 및 인증을 관리할 수 있다. 요청 처리 서비스(208)는 수신된 데이터 저장 요청 및 데이터 검색 요청을 관리한다. 관리 콘솔 서비스(210)는 관리자(administrator) 및 다른 시스템 관리자(manager)에 의한 다양한 시스템 및 프로세스에 대한 접근을 지원한다.
자원 관리자(102)는 또한 SQL 컴파일러(212), SQL 최적화기(214) 및 SQL 실행기(210)를 포함할 수 있다. SQL 컴파일러(212)는 SQL 질의를 파싱하고 질의에 대한 실행 코드를 생성한다. SQL 최적화기(214)는 처리될 필요가 있는 데이터에 기반하여 질의를 실행하기 위한 최상의 방법을 결정한다. SQL 실행기(216)는 자원 관리자(102)에 의해 수신된 질의에 대한 질의 코드를 실행한다. 질의 스케줄러 및 코디네이터(218)는 수신된 질의를 컴파일, 최적화 및 실행 플랫폼(112)에 발송(dispatch)하기 위해 적절한 서비스 또는 시스템에 송신할 수 있다. 가상 웨어하우스 관리자(220)는 실행 플랫폼에서 구현된 다수의 가상 웨어하우스의 동작을 관리한다.
또한, 자원 관리자(102)는 원격 데이터 스토리지 디바이스 및 로컬 캐시에 저장된 데이터와 연관된 정보를 관리하는 구성 및 메타데이터 관리자(222)를 포함한다. 모니터 및 워크로드 분석기(224)는 자원 관리자(102)에 의해 수행된 프로세스를 감독하고 실행 플랫폼 내의 가상 웨어하우스 및 실행 노드에 걸친 작업(예를 들어, 워크로드)의 분배를 관리한다. 구성 및 메타데이터 관리자(222) 및 모니터 및 워크로드 분석기(224)는 데이터 스토리지 디바이스(226)에 연결된다.
자원 관리자(102)는 또한, 데이터 복제 요청, 데이터베이스 장애 조치 및 데이터베이스 장애 복구를 관리하는 복제 및 장애 조치 관리자(228)를 포함한다. 예를 들어, 복제 및 장애 조치 관리자(228)는 다수의 데이터베이스 스토리지 자원 및 데이터베이스 배치 사이의 일괄 데이터 복제를 관리하고 스케줄링한다. 일 실시예에서, 복제 및 장애 조치 관리자(228)는 하나 이상의 2차 또는 백업 배치 내로 복제될 1차 배치 내에 저장된 데이터의 복제를 관리할 수 있다. 또한, 복제 및 장애 조치 관리자(228)는 1차 배치에 장애가 있을 때 1차 배치로부터 2차 배치로 데이터베이스 조작의 이동을 관리할 수 있고 및/또는 1차 배치가 다시 사용 가능하게 되었을 때 2차 배치로부터 1차 배치로 다시 데이터베이스 조작의 이동을 관리할 수 있다. 복제 및 장애 조치 관리자(228)는 다수의 배치 사이에서 일관된 데이터 복제를 보장할 수 있고 제2 배치가 사용 불가능한 동안 제1 배치에 이루어진 임의의 업데이트가 제2 배치가 다시 사용 가능하게 될 때 제2 배치로 전파된다고 보장할 수 있다.
도 3은 실행 플랫폼의 실시예를 도시한 블록도이다. 도 3에 도시된 바와 같이, 실행 플랫폼(112)은 다수의 가상 웨어하우스(302, 304 및 306)를 포함한다. 각 가상 웨어하우스는 각각 캐시 및 프로세서를 포함하는 다수의 실행 노드를 포함한다. 도 3에 도시된 각 가상 웨어하우스(302, 304, 306)가 3개의 실행 노드를 포함하지만, 본 개시의 범위를 벗어나지 않고 특정 가상 웨어하우스는 임의의 수의 실행 노드를 포함할 수 있다. 또한 가상 웨어하우스의 실행 노드 수는 동적이어서, 추가 수요가 있을 때 새 실행 노드가 생성되고, 더 이상 필요하지 않은 경우 기존 실행 노드가 삭제된다.
각 가상 웨어하우스(302, 304, 306)는 도 1에 도시된 임의의 데이터 스토리지 디바이스(116, 118, 120)에 접근할 수 있다. 따라서, 가상 웨어하우스(302, 304, 306)는 특정 데이터 스토리지 디바이스(116, 118, 120)에 반드시 할당될 필요는 없으며, 대신 임의의 데이터 스토리지 디바이스(116, 118, 120)로부터 데이터에 접근할 수 있다. 유사하게, 도 3에 도시된 각 실행 노드는 임의의 데이터 스토리지 디바이스(116, 118, 120)로부터 데이터에 접근할 수 있다. 일부 실시예에서, 특정 가상 웨어하우스 또는 특정 실행 노드가 특정 데이터 스토리지 디바이스에 일시적으로 할당될 수 있지만, 나중에 가상 웨어하우스 또는 실행 노드는 임의의 다른 데이터 스토리지 디바이스로부터 데이터에 접근할 수 있다.
도 3의 실시예에서, 가상 웨어하우스(302)는 3개의 실행 노드(308, 310 및 312)를 포함한다. 실행 노드(308)는 캐시(314) 및 프로세서(316)를 포함한다. 실행 노드(310)는 캐시(318) 및 프로세서(320)를 포함한다. 실행 노드(312)는 캐시(322) 및 프로세서(324)를 포함한다. 각 실행 노드(308, 310, 312)는 하나 이상의 데이터 저장 및/또는 데이터 검색 작업의 처리와 연관된다. 예를 들어, 특정 가상 웨어하우스는 특정 사용자 또는 고객과 연관된 데이터 저장 및 데이터 검색 작업을 처리할 수 있다. 다른 구현에서, 특정 가상 웨어하우스는 특정 데이터 스토리지 시스템 또는 특정 카테고리의 데이터와 연관된 데이터 저장 및 데이터 검색 작업을 처리할 수 있다.
위에서 논의된 가상 웨어하우스(302)와 유사하게, 가상 웨어하우스(304)는 3개의 실행 노드(326, 328 및 330)를 포함한다. 실행 노드(326)는 캐시(332) 및 프로세서(334)를 포함한다. 실행 노드(328)는 캐시(336) 및 프로세서(338)를 포함한다. 실행 노드(330)는 캐시(340) 및 프로세서(342)를 포함한다. 또한, 가상 웨어하우스(306)는 3개의 실행 노드(344, 346 및 348)를 포함한다. 실행 노드(344)는 캐시(350) 및 프로세서(352)를 포함한다. 실행 노드(346)는 캐시(354) 및 프로세서(356)를 포함한다. 실행 노드(348)는 캐시(358) 및 프로세서(360)를 포함한다.
도 3에 도시된 실행 노드는 각각 하나의 캐시 및 하나의 프로세서를 포함하지만, 대안적인 실시예는 임의의 수의 프로세서 및 임의의 수의 캐시를 포함하는 실행 노드를 포함할 수 있다. 또한 캐시의 크기는 실행 노드마다 다를 수 있다. 도 3에 도시된 캐시는, 로컬 실행 노드에서, 스토리지 플랫폼(114)(도 1 참조)의 하나 이상의 데이터 스토리지 디바이스로부터 검색된 데이터를 저장한다. 따라서 캐시는 원격 스토리지 시스템에서 지속적으로 데이터를 검색하는 플랫폼에서 발생하는 잠재적 병목 현상 문제를 줄이거나 제거한다. 원격 스토리지 디바이스로부터 데이터에 반복적으로 접근하는 대신에, 본원에 기재된 시스템 및 방법은 실행 노드의 캐시로부터 데이터에 접근하며, 이는 훨씬 더 빠르고 병목 현상 문제를 피한다. 일부 실시예에서, 캐시는 캐시된 데이터에 대한 빠른 접근을 제공하는 고속 메모리 디바이스를 사용하여 구현된다. 각 캐시는 스토리지 플랫폼(114) 내의 임의의 스토리지 디바이스로부터의 데이터를 저장할 수 있다.
또한, 캐시 자원 및 컴퓨팅 자원은 상이한 실행 노드마다 달라질 수 있다. 예를 들어, 하나의 실행 노드에는 상당한 컴퓨팅 자원과 최소한의 캐시 자원이 포함될 수 있으며, 이 실행 노드는 상당한 컴퓨팅 자원이 필요한 작업에 유용하다. 다른 실행 노드에는 상당한 캐시 자원과 최소한의 컴퓨팅 자원이 포함될 수 있으며, 이 실행 노드는 많은 양의 데이터를 캐시해야 하는 작업에 유용하다. 일부 실시예에서, 특정 실행 노드와 연관된 캐시 자원 및 컴퓨팅 자원은 실행 노드에 의해 수행될 것으로 예상되는 작업에 기반하여, 실행 노드가 생성될 때 결정된다.
또한, 특정 실행 노드와 연관된 캐시 자원 및 컴퓨팅 자원은 실행 노드에 의해 수행되는 작업 변경에 기반하여 시간에 따라 변할 수 있다. 예를 들어, 실행 노드에 의해 수행된 작업이 더 프로세서 집약적이 되면 특정 실행 노드에 더 많은 처리 자원이 할당될 수 있다. 유사하게, 실행 노드에 의해 수행된 태스크가 더 큰 캐시 용량을 필요로 하면 실행 노드에 더 많은 캐시 자원이 할당될 수 있다.
가상 웨어하우스(302, 304, 306)는 도 1의 동일한 실행 플랫폼(112)과 연관되어 있지만, 가상 웨어하우스는 다수의 지리적 위치에서 다수의 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 가상 웨어하우스(302)는 제1 지리적 위치에서 컴퓨팅 시스템에 의해 구현될 수 있는 한편, 가상 웨어하우스(304 및 306)는 제2 지리적 위치에서 다른 컴퓨팅 시스템에 의해 구현된다. 일부 실시예에서, 이들 상이한 컴퓨팅 시스템은 하나 이상의 상이한 엔티티에 의해 유지되는 클라우드 기반 컴퓨팅 시스템이다.
또한, 각 가상 웨어하우스는 도 3에서 여러 실행 노드를 갖는 것으로 도시되어 있다. 각 가상 웨어하우스와 연관된 다수의 실행 노드는 다수의 지리적 위치에서 다수의 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 가상 웨어하우스(302)의 특정 인스턴스는 특정 지리적 위치에서 하나의 컴퓨팅 플랫폼에서 실행 노드(308 및 310)를 구현하고 다른 지리적 위치에서 다른 컴퓨팅 플랫폼에서 실행 노드(312)를 구현한다. 실행 노드를 구현하기 위해 특정 컴퓨팅 시스템을 선택하는 것은 특정 실행 노드에 필요한 자원의 수준(예를 들어, 처리 자원 요건 및 캐시 요건), 특정 컴퓨팅 시스템의 가용 자원, 지리적 위치 내에서 또는 지리적 위치 사이에서 네트워크의 통신 능력, 및 어떤 컴퓨팅 시스템이 가상 웨어하우스에서 다른 실행 노드를 이미 구현하고 있는지와 같은 다양한 요소에 의존할 수 있다. 실행 플랫폼(112)은 또한 내결함성을 갖는다. 예를 들어, 하나의 가상 웨어하우스에 장애가 발생하면, 해당 가상 웨어하우스가 상이한 지리적 위치에 있는 상이한 가상 웨어하우스로 신속하게 교체된다.
특정 실행 플랫폼(112)은 임의의 수의 가상 웨어하우스(302, 304, 306)를 포함할 수 있다. 또한, 특정 실행 플랫폼 내의 가상 웨어하우스의 수는 동적이어서, 추가적인 처리 및/또는 캐시 자원이 필요할 때 새로운 가상 웨어하우스가 생성된다. 마찬가지로, 가상 웨어하우스와 연관된 자원이 더 이상 필요하지 않은 경우 기존 가상 웨어하우스가 삭제될 수 있다.
도 4는 가상 웨어하우스 그룹에 포함된 다수의 가상 웨어하우스 및 로드 밸런서를 통해 다수의 사용자가 다수의 데이터베이스에 접근하는 운영 환경(operating environment)(400)의 실시예를 도시한 블록도이다. 환경(400)은 가상 웨어하우스 자원 관리자(408) 및 가상 웨어하우스 그룹(416)에 배열된 다수의 가상 웨어하우스(410, 412 및 414)를 포함한다. 가상 웨어하우스 자원 관리자(408)는 자원 관리자(102)에 포함될 수 있다. 특히, 다수의 사용자(402, 404 및 406)는 가상 웨어하우스 자원 관리자(408) 및 가상 웨어하우스 그룹(416)을 통해 다수의 데이터베이스(418, 420, 422, 424, 426 및 428)에 접근한다. 일부 실시예에서, 사용자(402-406)는 자원 관리자(102)(도 1)를 통해 가상 웨어하우스 자원 관리자(408)에 접근한다. 일부 실시예에서, 가상 웨어하우스 자원 관리자(408)는 자원 관리자(102) 내에 구현된다.
사용자(402-406)는 데이터 검색 및 데이터 저장 요청을 가상 웨어하우스 자원 관리자(408)에 제출할 수 있고, 이 데이터 검색 및 데이터 저장 요청은 가상 웨어하우스 그룹(416)의 적절한 가상 웨어하우스(410-414)로 라우팅된다. 일부 구현에서, 가상 웨어하우스 자원 관리자(408)는 사용자(402-406)를 가상 웨어하우스(410-414)에 동적으로 할당한다. 데이터 검색 또는 데이터 저장 요청을 제출할 때, 사용자(402-406)는 요청을 처리할 특정 가상 웨어하우스(410-414)를 지정하지 않고 요청을 처리하도록 가상 웨어하우스 그룹(416)을 지정할 수 있다. 이 배열은 가상 웨어하우스 자원 관리자(408)가 가상 웨어하우스(401-414) 내에서 효율성, 가용 자원 및 캐시된 데이터의 가용성에 기초하여 가상 웨어하우스(410-414)에 걸쳐 다수의 요청을 분배할 수 있게 한다. 데이터 처리 요청을 라우팅하는 방법을 결정할 때, 가상 웨어하우스 자원 관리자(408)는 가용 자원, 현재 자원 로드, 현재 사용자 수 등을 고려한다.
일부 실시예에서, 내결함성 시스템은 가상 웨어하우스의 고장에 응답하여 새로운 가상 웨어하우스를 생성한다. 새로운 가상 웨어하우스는 동일한 가상 웨어하우스 그룹에 있거나 다른 지리적 위치에 있는 다른 가상 웨어하우스 그룹에 생성될 수 있다.
각 가상 웨어하우스(410-414)는 모든 데이터베이스(418-428)의 부분집합과 통신하도록 구성된다. 예를 들어, 환경(400)에서, 가상 웨어하우스(410)는 데이터베이스(418, 420 및 422)와 통신하도록 구성된다. 유사하게, 가상 웨어하우스(412)는 데이터베이스(420, 424 및 426)와 통신하도록 구성된다. 그리고, 가상 웨어하우스(414)는 데이터베이스(422, 426 및 428)와 통신하도록 구성된다. 다른 실시예에서, 가상 웨어하우스(410-414)는 데이터베이스(418-428) 중 임의(또는 모두)와 통신할 수 있다.
환경(400)은 하나의 가상 웨어하우스 그룹(416)을 도시하지만, 대안적인 실시예는 각각 임의의 수의 가상 웨어하우스와 연관된 임의의 수의 가상 웨어하우스 그룹을 포함할 수 있다. 예를 들어, 각 고객 또는 사용자 그룹에 대해 상이한 가상 웨어하우스가 생성될 수 있다. 또한 상이한 엔티티 또는 상이한 데이터 세트에 접근하는 임의의 다른 그룹에 대해 상이한 가상 웨어하우스가 생성될 수 있다. 여러 가상 웨어하우스 그룹의 크기와 구성이 다를 수 있다. 특정 환경에서 가상 웨어하우스 그룹의 수는 동적이며 환경에서 사용자 및 기타 시스템의 변화하는 요구에 기반하여 변경될 수 있다.
도 5는 데이터베이스 스냅샷을 생성하는 프로세스 흐름(500)을 도시하는 개략도이다. 데이터베이스 스냅샷은 상이한 위치에서 원본 데이터베이스의 복사를 구체화, 예를 들어, 1차 배치에 저장된 데이터베이스 데이터를 2차 배치 내로 복사하는 것을 가능하게 한다. 스냅샷은 데이터베이스의 하나 이상의 객체, 예를 들어 데이터베이스의 구조(예를 들어, 스키마, 테이블, 뷰 등) 및/또는 데이터베이스의 내용(즉, 행)을 캡처한다. 특정 실시예에서, 개념적으로 가장 깨끗한 접근법은 스냅샷이 특정한 시점에서 데이터베이스의 트랜잭션 면에서 일관된 뷰를 반영할 때 일어난다. 일 실시예에서, 트랜잭션 면에서 일관된 시점 스냅샷은 엄격한 요건이 아니며, 트랜잭션 로그 레코드 세트의 애플리케이션을 통해 트랜잭션 면에서 일관된 상태를 가져올 수 있는 스냅샷을 생성하는 것으로 충분하다.
프로세스 흐름(500)은 시간 t1에 개시되고 시간 t6에 완료되는 스냅샷을 나타내는 타임라인을 도시한다. 프로세스 흐름(500)이 시작되고 502에서 스냅샷이 개시된다. 504에서 시간 t2에 객체 X의 스냅샷이 생성되고 510에서 시간 t5에 객체 Y의 스냅샷이 생성된다. 객체 X 및 Y는 데이터베이스 내의 임의의 두 객체를 나타낼 수 있음을 이해하여야 한다. 도시된 바와 같이, 객체 X는 506에서 시간 t3에 수정되고 객체 Y는 508에서 시간 t4에 수정된다. 객체 X의 스냅샷이 504에서 생성된 후에 객체 X는 506에서 수정된다. 객체 Y의 스냅샷이 510에서 생성되기 전에 객체 Y는 508에서 수정된다. 스냅샷은 512에서 종료된다.
개별 객체 스냅샷이 생성되는 방법의 시맨틱(semantic)에 따라, 도 5에 도시된 프로세스 흐름(500)은 객체 X 및 Y의 트랜잭션 면에서 일관된 시점 표현을 생성하거나 생성하지 않을 수 있다. 객체의 스냅샷 표현이 스냅샷이 개시되는 시간의 객체의 상태에 기반하여 생성되면, 스냅샷 자체는 스냅샷이 시작되었던 지점에서 데이터베이스의 트랜잭션 면에서 일관된 표현일 것이다. 예를 들어, 도 5의 문맥에서, 시맨틱은 시간 t1의 상태에 기반하여 X 및 Y 양자의 스냅샷 표현을 생성하는 것에 대응할 것이며 시간 t1의 시점에서 X 및 Y 양자의 트랜잭션 면에서 일관된 뷰를 제공하는 스냅샷을 가져올 것이다. 그러나, 만일 객체의 스냅샷 표현이 생성될 때 객체에 기반하여 객체의 스냅샷 표현이 생성되면, 스냅샷은 임의의 시점에서 반드시 데이터베이스의 트랜잭션 면에서 일관된 표현이지는 않을 것이다. 예를 들어, 도 5의 문맥에서, 시맨틱은 시간 t2의 상태에 기반하여 X의 스냅샷 표현과 시간 t5의 상태에 기반하여 Y의 스냅샷 표현을 생성하는 것에 대응할 것이다. 이 결합은 존재하지 않았던 데이터베이스 상태에 대응하는 스냅샷을 생성하게 되고, 만일 있다면, 506과 508에서의 두 수정 사이의 관계에 따라 유효하지 않을 수 있다.
예를 들어, 시간 t3에서의 수정이 테이블 X에 열을 추가하고 시간 t4에서의 수정이 테이블 X의 새로운 열이 관련되는 CTAS에 기반하여 테이블 Y를 작성하는 잠재적으로 비정상적인 상태가 발생할 수 있다. CTAS는 데이터베이스에 대해 선택(select) 질의를 수행하여 기본적으로 새로운 테이블 객체를 생성한다. 이 선택 질의는 데이터베이스 내의 다수의 테이블이 관련될 수 있다. 예시적인 구현에서, 객체 X 및 Y의 데이터 및 구조 사이에 의존성이 있을 수 있다. 이러한 구현에서, 객체 Y가 객체 X의 데이터와 구조 양자에 기반하여 작성되었더라도 객체 X가 열을 갖지 않는 시나리오가 있을 수 있다. 이 시나리오는 구조적 변경과 내용 변경이 미묘한 방식으로 상호 작용할 가능성을 만들 수 있다. 불일치를 보장하는 다른 시나리오가 존재할 수 있다. 예를 들어, X 및 Y에 대한 수정이 단일 트랜잭션의 일부이면, 현재 상태에 기반한 스냅샷의 생성은 트랜잭션의 일부가 스냅샷에 반영되고 트랜잭션의 다른 일부는 스냅샷에 반영되지 않는 찢어진 트랜잭션을 가져올 수 있다.
일 실시예에서, 스냅샷이 생성되는 방법과 무관하게, 스냅샷을 시작한 다음 스냅샷 타임프래임 동안 생성된 모든 로그 레코드를 로그 레코드의 직렬화된 순서로 적용함으로써 스냅샷 기간이 끝날 때 대상을 트랜잭션 면에서 일관된 상태로 만들 수 있다. 이러한 실시예에서, 이전 명령문은 로그 레코드의 적용이 대상 데이터베이스가 특정한 로그 레코드에 의한 업데이트를 이미 반영하고 로그 레코드의 적용이 no-op인 멱등(idempotent) 작업이라고 가정한다. 이러한 예와 관련하여, 시간 t3 및 시간 t4에서의 수정과 관련된 로그 레코드를 생성된 스냅샷에 적용하면 개별 객체 스냅샷이 생성된 방법에 관계없이 시간 t6에서 일관된 종료 상태가 된다.
데이터베이스 복제의 일 실시예에서, 스냅샷은 모든 후속 변경이 적용될 대상 데이터베이스의 초기 상태를 제공한다. 일 실시예에서, 스냅샷은 데이터베이스 데이터가 하나 이상의 2차 배치로 복사될 수 있도록 1차 배치에 저장된 데이터베이스 데이터에 대해 생성된다. 다른 실시예에서, 스냅샷은 1차 배치 또는 하나 이상의 다른 2차 배치가 사용 불가능하였던 동안 2차 배치에 저장된 데이터베이스 데이터에 대해 이루어진 임의의 업데이트를 캡처하도록 2차 배치에 대해 생성된다. 스냅샷이 원본 데이터베이스와 일치하지 않으면, 대상 데이터베이스 또한 원본 데이터베이스와 일치하지 않을 것이다. 일치하지 않는 시작점에 대하여 추가적인 변경을 적용하면, 일반적으로 불일치가 정정되지 않게 된다. 예를 들어, 클라이언트 계정이 원본 데이터베이스(일 실시예에서, 원본 데이터베이스가 1차 배치이다)로부터 원본 데이터베이스(이 경우, 1차 배치)로부터 드리프트된 복제 2차 배치로 장애 조치되면, 그 결과는 데이터 손상 및/또는 데이터 손실이다. 장애 조치는 언제든지 발생할 수 있으므로, 원본 데이터베이스(예를 들어, 1차 배치)와 대상 데이터베이스(예를 들어, 2차 배치) 사이에서 트랜잭션 일관성을 보장하는 것이 데이터베이스 복제의 가치 문제에서 매우 중요할 수 있다. 일 실시예에서, 스냅샷으로부터 구성된 데이터베이스의 일관성을 보장하는 것은 항상 원본 데이터베이스와 대상 데이터베이스 사이의 일관성을 확립하고 유지하기 위한 기본 구성요소이다.
데이터베이스 스냅샷 생성
일 실시예에서, 데이터베이스를 구성하는 다양한 정보는 메타데이터 파일을 포함한다. 메타데이터 파일의 구현은 본원에서 표현 속성(Expression Property) "EP" 파일로 지칭될 수 있다. EP 파일은 구체적으로 데이터베이스의 테이블 전체에 걸쳐 저장되는 모든 데이터에 대한 정보를 포함하는 누적 테이블 메타데이터를 포함할 수 있다. EP 파일은 테이블 내의 마이크로 파티션의 그룹에 저장된 데이터에 관한 정보를 포함하는 그룹 표현 특성을 더 포함할 수 있다. EP 파일은 최소/최대 값, 널 카운트(null count), 엔트리 수 등과 같은 테이블의 특정 마이크로 파티션에 저장된 데이터에 관한 정보를 포함하는 마이크로 파티션 통계를 더 포함할 수 있다. EP 파일은 테이블의 마이크로 파티션의 특정 열에 저장된 데이터에 대한 정보를 포함하는 열 표현 속성을 더 포함할 수 있다. 본원에 개시된 메타데이터 파일은 EP 파일을 구체적으로 포함하거나 데이터베이스 데이터에 관한 정보를 포함하는 임의의 다른 파일을 포함할 수 있다.
메타데이터 파일은 데이터베이스의 구조를 기술하는 정보를 포함하고 데이터베이스 내의 임의의 스키마의 목록 및 속성, 각 스키마의 테이블 및 뷰의 목록 및 속성, 각 테이블 또는 뷰에 존재하는 열의 목록 및 속성 등을 포함할 수 있다. 개별 테이블 내용은 EP 파일과 다른 형식의 메타데이터 파일의 조합으로 정의될 수 있다. 개별 테이블 내용의 개별 튜플(tuple) 값은 마이크로 파티션에 저장될 수 있다. 일 실시예에서, 트랜잭션 시간의 특정 시점에서 특정 테이블의 내용을 포함하는 정확한 마이크로 파티션 세트는 메타데이터 파일 세트의 내용에 포함된다. 일 실시예에서, 메타데이터 파일은 마이크로 파티션의 목록을 포함하는 것으로 간주될 수 있다. 마이크로 파티션과 메타데이터 파일은 모두 변경할 수 없으며 스토리지에 저장 및 암호화될 수 있다. 일 실시예에서, 트랜잭션 시간의 특정 시점에서 테이블과 관련된 메타데이터 파일의 목록은 데이터베이스 데이터와는 별개의 메타데이터 저장소에 유지된다.
일 실시예에서, 데이터베이스의 스냅샷을 생성하는 시작점은 메타데이터에 저장된 DatbaseDPO("데이터베이스 데이터 지속성 객체(Database Data Persistence Object")이다. DatbaseDPO는 메타데이터에 저장된 지속성 카탈로그 정보와 상호작용하는 데이터 구조이다. DatbaseDPO 자체는 사실상 데이터베이스 내의 모든 객체, 즉 스냅샷에 필요한 모든 객체를 포함하는 트리의 루트이다. 원하는 DatbaseDPO를 기반으로 하는 트리의 각 개체는 스냅샷 내로 직렬화될 수 있다. 객체의 직렬화된 표현은 원격 위치(대상 데이터베이스)에서 객체의 정확한 사본을 재작성하는 데 필요한 모든 것을 캡슐화할 수 있다.
테이블의 경우, 테이블 내용을 직렬화하는 방법에 대한 추가 질문이 있을 수 있다. 일 실시예에서, 전체 테이블을 판독하고 내용을 직렬화하는 것은 광범위한 컴퓨팅 자원을 요구할 수 있고 매우 큰 스냅샷 크기로 이어질 수 있다. 이러한 실시예에서, 테이블에 대한 메타데이터 파일의 목록을 직렬화하는 것으로 충분할 수 있다. 따라서 스냅샷이 대상 데이터베이스에서 소비될 때, 메타데이터 파일을 대상에 복사하고, 대상에서 모든 튜플이 있는 마이크로 파티션 목록을 유도하도록 판독한 다음, 해당 마이크로 파티션을 또한 대상에 복사할 수 있다. 메타데이터 파일 및 마이크로 파티션 모두 스냅샷에서 암호화될 수 있으며, 대상이 파일을 해독하기 위해 적절한 키를 얻을 수 있도록 하는 정보를 포함할 수 있다. 대상의 파일은 대상이 관리하는 새로운 키로 다시 암호화해야 할 수도 있다. 일 실시에서, 테이블의 스냅샷 이미지는 테이블 내용을 나타내는 메타데이터 파일 목록을 포함한다. 또한 일 실시예에서, 스냅샷은 대상이 메타데이터 파일 및 마이크로 파티션의 사본을 만들기 위한 하나 이상의 키를 획득할 수 있게 하는 일부 정보를 포함한다.
트랜잭션 로그 레코드 생성
일 실시예에서, 트랜잭션 로그 레코드는 로그 레코드 자체가 대상에 대한 트랜잭션 변경을 정확하고 명백하게 재생성하기에 충분한 정보를 포함하도록 보장한다. 이는 트랜잭션 로그에 의해 적용된 변경이 커밋(commit) 시간에 알려져 있기 때문에 만족될 수 있으며 방법은 트랜잭션에 의해 이루어진 메타데이터 변경을 캡처하고 직렬화하는 단계를 포함할 수 있다. 일 실시예에서, 트랜잭션 로그 레코드는 배치, 지역 또는 기초 클라우드 공급자와 무관하게 모든 대상 데이터베이스가 접근할 수 있다. 트랜잭션 로그 레코드는 원격 스토리지에 기록될 수 있다.
일 실시예에서, 1차 배치가 사용 불가능하게 되고 모든 데이터베이스 조작이 2차 배치로 이동된다. 1차 배치가 사용 불가능한 시간 동안, 데이터베이스 데이터에 대한 모든 업데이트는 2차 배치에서 실행된다. 트랜잭션 로그 레코드는 2차 배치에서 실행된 모든 업데이트에 대해 생성될 수 있으며, 트랜잭션 로그 레코드는 1차 배치가 더 이상 사용 불가능하지 않을 때 이들 업데이트를 1차 배치로 전파하기 위해 사용될 수 있다. 이러한 실시예에서, 트랜잭션 로그 레코드를 사용하면 (2차 배치에 이루어진) 이러한 새로운 업데이트만이 1차 배치에서 실행되고, 스테일 데이터 또는 이전에 수집한 데이터가 1차 배치로 전파되지 않도록 보장할 수 있다.
일 실시예에서, 트랜잭션 로그 레코드가 생성될 때와 관련하여, 본원에 개시된 시스템, 방법 및 디바이스는 트랜잭션 로그 레코드가 사실상 트랜잭션 자체의 일부가 되는 것을 보장하도록 구성된다. 트랜잭션 로그 레코드는 트랜잭션이 커밋되어야만 원격 스토리지에 기록될 수 있으며, 또한 트랜잭션은 트랜잭션 로그 레코드가 원격 스토리지에 기록된 경우에만 커밋된다. 이러한 절차에서 벗어나면 원본 데이터베이스와 대상 데이터베이스 사이에 트랜잭션 불일치가 발생할 수 있다.
도 6은 데이터베이스를 복제하는 트랜잭션 로그를 생성하는 프로세스 흐름(600)을 도시하는 개략도다. 프로세스 흐름(600)은 왼쪽으로부터 오른쪽으로 진행하는 타임라인을 도시한다. 도 6에서, 내부 트랜잭션 상태에서 일어나는 트랜잭션은 타임라인 위에 도시되고 동시성 제어 및 트랜잭션 처리를 지원하기 위해 취해지는 동작은 타임라인 아래에 도시된다. 시간 t0에서, 트랜잭션이 오픈되고 602에서 활성 상태이며, 이 시점에서는 데이터 조작 언어(DML) 동작이 수행되지 않는다. 시간 t1에서, DML 명령문의 처리가 진행중(in-flight)이다. DML 명령문 처리 동안, 프로세스 흐름(600)은 동일한 테이블을 대상으로 하는 다수의 동시 DML 연산을 지원하기 위하여 영향을 받는 테이블에 대해 604에서 파일 잠금을 획득하는 것을 포함한다. 604에서 파일 잠금을 획득하는 것은 임의의 횟수로 일어날 수 있으며 다중명령문(multi-statement) 트랜잭션에서 다수 번 일어남을 이해하여야 한다. 시간 t2에서, 커밋 처리가 시작되고 커밋 처리의 시작은 606에서 커밋 전 상태(pre-committing state)로의 전환에 의해 기록된다. 시간 t3에서, 트랜잭션에서 변경된 모든 테이블에 대해 608에서 테이블 잠금이 획득된다. 608에서 모든 테이블 잠금을 획득한 후에, 시간 t4에 610에서 계정 레벨 램포트(Lamport) 시계를 이용하여 새롭고 고유한 트랜잭션 식별을 생성한다. 일 실시예에서, 608에서 모든 테이블 잠금을 획득한 후 610에서 트랜잭션 식별을 취득하면 임의의 두 잠재적으로 충돌하는 트랜잭션 사이에서 (램포트 시계 값에 기반하여) 명백한 커밋 순서가 보장된다. 610에서 트랜잭션 식별을 취득한 후, 트랜잭션은 시간 t5에 612에서 커밋 상태(committing state)로 전환될 수 있다. 일 실시예에서, 612에서 커밋 상태로의 전환은 트랜잭션에 대해 "반환 불가 포인트(point of no return)"(620)를 나타낸다. 이 전환 이전에, 트랜잭션 커밋 자체가 사용자 동작, 처리 오류, 시스템 장애 등으로 인해 여전히 취소되거나 중단될 수 있다. 그러나, 일단 커밋 상태로의 전환(612)이 일어나면, 트랜잭션은 시스템 관점에서 사실상 커밋된다. 시간 t5에 트랜잭션의 효과는 시스템에 적용되고 더 이상 롤백(rollback)될 수 없다. 또한 시간 t5에 (타임라인 아래쪽) 614에서 새로운 테이블 버전이 다른 동시 운영중인 트랜잭션에 의해 판독 가능함을 유의한다. 시간 t6에, 트랜잭션에 의해 유지된 모든 잠금이 616에서 해제된다. 잠금 해제는 이러한 잠금(604 및 608에서)에서 대기하는 잠재적으로 충돌하는 트랜잭션이 커밋 프로토콜을 통해 진행하기 위하여 필요한 잠금을 획득할 수 있게 한다. 시간 t7에, 트랜잭션이 618에서 커밋된 상태(committed state)로 전환되고 모든 처리가 완료된다. 일 실시예에서, 시간 t5 이후의 장애는 트랜잭션의 롤백을 가져오지 않는다. 예를 들어, 트랜잭션을 처리하는 노드에 시간 t5 직후에 장애가 발생하면, 예를 들어, 새로운 노드가 중단된 위치에서 처리를 속개하고, 잠금을 해제하며, 트랜잭션을 완료로 전진시킨다.
일 실시예에서, 트랜잭션 로그 레코드는 612에서 커밋 상태로 전환될 때 시간 t5에 원격 스토리지에 기록된다. 특정 실시예에서 시간 t5 이전에 트랜잭션 로그 레코드를 원격 스토리지에 기록하는 것은 문제가 될 수 있는데, 이는 시간 t5 이전에 프로세스 흐름(600)이 중단되는 것이 여전히 가능하기 때문이다. 또한, 트랜잭션 로그 레코드를 시간 t5 이후에 커밋 후(post-commit) 처리의 일부로 기록하면 잘못된 트랜잭션 문제를 피할 수 있다.
일 실시예에서, 도 6에 도시된 바와 같이 트랜잭션 로그 레코드를 시간 t5 이후에 커밋 후 처리의 일부로 기록하면 잘못된 트랜잭션 문제를 피할 수 있지만 시간 t5와 트랜잭션 로그를 원격 스토리지에 기록하는 것 사이에 장애의 가능성이 있으며 이는 트랜잭션이 원본 데이터베이스에서 커밋되지만 대상 데이터베이스에서 커밋되지 않게 할 수 있다. 원격 스토리지에 대한 기록은 트랜잭션 후 처리의 일부일 수 있으므로, 원본이 다시 작동하고 트랜잭션 정리가 완료된 후 일정 시점에서 발생하는 것으로 합리적으로 가정할 수 있다. 발생한 후에는, 대상이 변경을 적용하고 더 이상 누락된 트랜잭션으로 인한 변경이 없을 수 있다. 그러나, 도 7에 도시된 바와 같이 장애 조치(720)가 있는 문제 시나리오가 발생할 수 있다. 반환 불가 포인트(620)의 통과와 원격 스토리지에 대한 기록 사이의 윈도우 내에 발생하는 원본에서 대상으로의 장애 조치(720)가 있으면, 이 경우 트랜잭션이 원본에서 커밋되고 대상에 존재하지 않을 수 있다. 일 실시예에서, 원격 스토리지로의 기록이 모든 잠금이 616에서 해제되는 시간 t5와 시간 t6 사이에 위치되면, 손실된 것은 하나 이상의 테이블에 대한 마지막 기록일 수 있고, 또한 연관된 기록의 트랜잭션 커밋에 대한 명시적인 승인은 최종 사용자에게 다시 전송되지 않는다.
도 7은 데이터베이스를 복제하는 두 개의 상이한 트랜잭션에 대한 프로세스 흐름(700)을 도시하는 개략도이다. 프로세스 흐름(700)은 잘못된 장애 조치(720)가 있어 트랜잭션이 손실될 수 있는 경우를 도시한다. 도 7은 시간 t5에서의 메타데이터와의 상호작용이 트랜잭션을 커밋 상태로 전환할 뿐 아니라 한 번의 작은 조작으로 수정된 테이블의 새 버전을 나머지 시스템에 노출하는 것을 도시한다. 결과적으로, 프로세스 흐름(700)에 도시된 바와 같은 이벤트 시퀀스가 가능할 수 있다.
도 7의 프로세스 흐름(700)은 두 개의 상이한 트랜잭션, 트랜잭션 T1 및 트랜잭션 T2의 가상 타임라인을 도시한다. 트랜잭션 T1이 수행한 작업은 타임라인 위에 나타나고 트랜잭션 T2가 수행한 작업은 타임 라인 아래에 나타난다. 시간 t0에, 트랜잭션 T1은 702에서 테이블 T에 대한 쓰기를 수행한다. 시간 t1에, 커밋 전 처리의 일부로서, 트랜잭션 T1은 704에서 테이블 T에 대한 잠금을 획득한다. 시간 t2에, 트랜잭션 T1은 커밋 상태로 작게 전환하고 706에서 새로운 판독 가능 버전을 커밋하여 트랜잭션 T1에 의해 수행된 기록과 함께 테이블 T의 새로운 버전을 나머지 시스템에 노출시킴으로써 "반환 불가 포인트"를 통과한다. 도 7에 도시된 프로세스 흐름(700)에서, 여러 다양한 이유로 원격 스토리지에 트랜잭션 로그 레코드를 쓰는 것이 지연될 수 있다. 이에 따라, 트랜잭션 T1은 커밋 후 처리에 남아 있으며 아직 원격 스토리지에 트랜잭션 로그 레코드를 쓰지 않았고, 아직 테이블 T에 대한 잠금을 해제하지 않았으며, 아직 최종 사용자에게 성공을 보고하지 않았다. 시간 t3에, 트랜잭션 T2는 708에서 테이블 X를 작성/ 채우기 위한 CTAS 연산의 일부로서 최신 버전의 테이블 T(트랜잭션 T1에 의해 수행된 쓰기 포함)를 판독한다. 시간 t4에, 이 새로운 트랜잭션은 "반환 불가 포인트"를 통과하고 710에서 커밋된다. 특정 구현에서, 트랜잭션 T2는 테이블 T에서만 읽을 수 있기 때문에 테이블 T에 대한 잠금이 필요하지 않고 테이블 T에 대한 잠금을 여전히 유지하고 있는 트랜잭션 T1에 의해 차단되지 않기 때문에 이러한 전이가 가능하다. 시간 t5에, 이 새로운 트랜잭션은 712에서 그 로그 레코드를 원격 스토리지에 기록한다. 트랜잭션 T1에 대한 로그 레코드는 아직 원격 스토리지에 기록되지 않았다. 프로세스 흐름(700)은 복제본에 대한 장애 조치(720)를 더 포함한다. 도 7에 도시된 바와 같은 실시예에서, 복제본은 원본 데이터베이스의 어떤 버전과도 트랜잭션 면에서 일관성이 없다. 복제본은 트랜잭션 T2의 결과를 포함하지만, 트랜잭션 T2가 트랜잭션 T1에 의해 작성된 테이블 T의 버전을 판독하더라도 트랜잭션 T1의 결과는 포함하지 않는다. 트랜잭션 T1은 사실상 손실되었지만, 트랜잭션 T1에 의존하는 트랜잭션 T2는 손실되지 않았다. 따라서, 도 7에 도시된 실시예에서, 데이터베이스가 일관되지 않게 된다. 결국, 트랜잭션 T1에 대한 트랜잭션 로그 레코드는 714에서 원격 스토리지에 기록되겠지만, 도 7에 도시된 바와 같이, 장애 조치(720)는 714에서 원격 스토리지에 대한 성공적인 기록 이전을 포함하여 임의의 시점에서 발생할 수 있어 잠재적인 트랜잭션 손실로 이어질 수 있다.
도 7에 도시된 바와 같은 쓰기 손실 또는 트랜잭션 손실에 대한 잠재적 노출은 트랜잭션 로그 레코드가 데이터베이스에 기록되는 새로운 버전과 관련되기 전에 나머지 시스템에서 이용 가능한 새로운 버전의 테이블로부터 기인할 수 있다. 도 7에 도시된 트랜잭션 손실의 실시예는 원격 스토리지에 대한 쓰기가 수행될 때까지 새로운 버전의 테이블을 시스템의 나머지 부분에 보이지 않도록 함으로써 회피될 수 있다. 본원에는 기존의 커밋 후 로직을 방해하지 않고 원격 스토리지에 쓰기가 수행될 때까지 새로운 테이블 버전의 노출을 연기하는 접근법이 개시되어 있다. 이 접근법은 도 8에 도시된 바와 같이 준비 단계를 트랜잭션에 통합하는 것을 포함한다.
도 8은 데이터베이스의 복제를 위한 준비 단계를 포함하는 프로세스 흐름(800)을 도시하는 개략도이다. 기존의 커밋 후 로직을 방해하지 않고 원격 스토리지에 쓰기가 수행될 때까지 새로운 테이블 버전의 노출을 연기하기 위하여 준비 단계가 도입된다. 준비 단계는 테이블 잠금을 획득한 후 커밋 상태로 전환하기 전에 일어날 수 있다. 일 실시예에서, 준비 단계의 목적은 실제 커밋 이전에 장애가 발생한 경우에도, 정리 또는 복구 동안 트랜잭션이 커밋될 수 있는 상태로 시스템을 전환하는 것이다. 준비 단계는 트랜잭션 로그 레코드를 원격 스토리지에 쓴다. 원격 스토리지에 성공적으로 쓴 것이 확인된 후에만, 도 6 내지 7에 도시된 프로토콜에서와 같이 트랜잭션이 동일한 시맨틱을 갖는(예를 들어, 임의의 수정된 객체의 새로운 버전을 시스템의 나머지가 판독할 수 있게 함) 커밋 단계로 전환될 것이다.
프로세스 흐름(800)은 814에서 트랜잭션 로그 레코드가 데이터베이스에 기록되는 공식 커밋 지점을 포함하며, 이는 "반환 불가 하드 포인트"(826)로 지칭될 수 있다. 프로세스 흐름(800)은 시간 t5에 812에서 준비된 상태를 더 포함한다. 812에서 준비된 상태로의 상태 전환은 "반환 불가 소프트 포인트"(824)로 지칭될 수 있다. 시간 t0에, 트랜잭션이 오픈되고 802에서 활성 상태이며, 이 시점에서 DML 동작이 수행되지 않았다. 시간 t1에, DML 명령문의 처리가 진행 중이다. DML 명령문 처리 동안, 프로세스 흐름(800)은 동일한 테이블을 대상으로 하는 다수의 동시 DML 연산을 지원하기 위하여 영향을 받는 테이블에 대해 804에서 파일 잠금을 획득하는 것을 포함한다. 시간 t2에, 커밋 처리가 시작되고 커밋 처리의 시작은 806에서 커밋 전 상태로 전환함으로써 기록된다. 시간 t3에, 트랜잭션에서 수정된 모든 테이블에 대해 808에서 테이블 잠금이 획득된다. 모든 테이블 잠금이 808에서 획득된 후, 시간 t4에 810에서 계정 수준 램포트 시계를 이용하여 새롭고 고유한 트랜잭션 식별을 생성한다. 일 실시예에서, 808에서 모든 테이블 잠금을 획득한 후 810에서 트랜잭션 식별을 획득하는 것은 잠재적으로 충돌하는 임의의 두 트랜잭션 사이에서(램포트 시계 값에 기반하여) 명백한 커밋 순서를 보장한다. 시간 t5에, 트랜잭션은 812에서 준비된 상태로 진입하며, 이는 824의 반환 불가 소프트 포인트로 간주될 수 있다. 그 다음 814에서 트랜잭션은 트랜잭션 로그 레코드를 데이터베이스에 기록하며, 이는 826의 반환 불가 하드 포인트로 간주될 수 있다. 시간 t7에, 816에서 커밋 상태에 들어가고 818에서 새로운 버전을 읽을 수 있다. 시간 t8에, 820에서 모든 잠금이 해제된다. 시간 t9에, 트랜잭션은 822에서 커밋된 상태로 들어간다.
812에서 준비된 상태로의 전환은 도 7과 관련하여 논의한 바와 같이 트랜잭션 로그 레코드를 데이터베이스에 쓰는 것이 지연됨으로 인한 반환 불가 소프트 포인트(824)로 지칭될 수 있다. 간단히 말하자면, 데이터베이스에 대한 쓰기 시간이 초과되거나 종료될 수 있지만 그러면 쓰여진 항목이 나중에 표시되도록 포함시킬 수 있다. 원래의 쓰기는 다시쓰기에 의해 생성된 항목의 버전을 효과적으로 덮어쓸 수 있다. 데이터베이스에 대한 쓰기 요청이 결론 없이 종결된 시점과 그 쓰기가 실제로 데이터베이스에 나타나는 시점 사이에는 사소하지 않은 지연이 있을 수 있다. 따라서, 쓰기 요청이 결론 없이 종료된 후, 데이터베이스에 쓰기가 나타나는 시점 이전에는 시간 윈도우가 존재하며, 이 동안 데이터베이스에서 항목의 존재 여부를 결정하기 위한 확인이 "미탐(false negative)"을 반환할 수 있다. 즉, 확인에서 항목이 보이지 않으므로, 쓰기가 발생하지 않았거나 발생하지 않을 것으로 가정하지만, 실제로는, 쓰기가 발생했거나 발생할 것이며 항목은 아직 보이지 않는다. 확인에서 항목이 존재하지 않는 것으로 표시되면, 레코드가 기록되지 않은 것으로 가정하고 트랜잭션을 롤백하는 것이 안전하지 않다. 확인 이후에 항목이 나타날 것이었으면, 트랜잭션이 원본에 적용되지 않았지만 잠재적으로 대상(들)에 적용될 수 있으며 이로 인해 불일치가 발생할 수 있다. 따라서, 트랜잭션이 준비된 상태에 있는 동안 오류가 발생하면, 트랜잭션 로그 레코드를 데이터베이스에 다시 쓰고, 커밋 상태로 전환하고, 트랜잭션을 완료하기 위하여 커밋 후 작업을 수행함으로써 트랜잭션을 전진시키는 것이 안전한 조치일 것이다. 따라서, 812에서 준비된 상태로의 전환은 트랜잭션이 실제로 커밋되지 않았지만, 트랜잭션에 대해 이용 가능한 유일한 터미널 상태는 성공적인 커밋이기 때문에 반환 소프트 포인트(824)로 특징지어질 수 있다.
장애 조치가 일어나는 일 실시예에서, 프로세스 흐름(800)의 시맨틱이 수정될 수 있다. 트랜잭션이 802에서 활성 상태이거나 806에서 커밋 전 상태일 때 장애 조치가 일어나면, 트랜잭션 로그 레코드가 814에서 아직 데이터베이스에 기록되지 않았으므로 이는 대상에 의해 수집될 수 없어 트랜잭션의 결과가 대상에 나타나지 않을 것이다. 트랜잭션이 816에서 커밋 상태이거나 822에서 커밋된 상태일 때 장애 조치가 일어나면, 트랜잭션 로그 레코드가 814에서 장애 조치의 시간에 이미 데이터베이스에 기록되었고 따라서 대상에 의해 수집될 것이므로 트랜잭션의 결과가 대상에 나타날 것이다.
트랜잭션이 812에서 준비된 상태일 때 장애 조치가 일어나면, 장애 조치의 시간에 트랜잭션 로그 레코드가 데이터베이스에 기록되었는지에 따라 트랜잭션의 결과가 대상에 나타날 수도 나타나지 않을 수도 있다. 또한, 장애 조치의 시간에 트랜잭션 로그 레코드가 데이터베이스에서 보였기 때문에 대상이 트랜잭션을 수집하면, 원본이 완료를 향해 전진하고 연관된 클라이언트 계정은 성공 또는 실패를 아직 알지 못하기 때문에 이는 대상에 적용될 것이다. 또한, 장애 조치의 시간에 트랜잭션 로그 레코드가 데이터베이스에서 보이지 않았기 때문에 대상이 트랜잭션을 수집하지 않으면, 원본은 쓰기의 결과를 노출하지 않았고 연관된 클라이언트 계정으로 성공을 보고하지 않았을 것이므로 불일치를 피할 수 있다.
도 8에 도시된 프로세스 흐름(800)에 따르면, 본원에서 논의되는 특정한 관계가 유지될 수 있다. 두 개의 트랜잭션이 충돌하는 쓰기를 가지면, 첫번째 커밋된 쓰기에 대한 트랜잭션 식별이 두번째 커밋된 쓰기에 대한 트랜잭션 식별에 비해 낮을 수 있다. 이 순서는 808에서 잠금이 획득된 이후이며 814에서 잠금이 해제되기 이전인 시간 810에 테이블 잠금에 대한 쓰기가 동기화되고 트랜잭션 식별이 획득되도록 하는 것이다. 또한, 두 개의 트랜잭션이 충돌하는 쓰기를 가지면, 첫번째 커밋된 쓰기에 대한 트랜잭션 로그 레코드가 두번째 커밋된 쓰기에 대한 트랜잭션 로그 레코드 이전에 나타날 수 있다. 이 순서는 트랜잭션이 테이블 잠금을 유지하는 동안 트랜잭션 로그 레코드 쓰기가 일어나므로 트랜잭션 식별 순서가 보장되기 때문에 보장될 수 있다. 또한, 하나의 트랜잭션(판독자)이 다른 트랜잭션(기록자)에 의해 생성된 테이블 버전을 판독하면, 새로운 테이블 버전이 판독자에 의해 판독되기 이전에 기록자에 대한 트랜잭션 로그 레코드가 나타날 수 있다. 이 순서는 818에서 새로운 테이블 버전이 판독 가능하게 되기 전에 814에서 데이터베이스에 대한 쓰기가 일어나기 때문에 보장될 수 있다.
일 실시예에서, 충돌하는 쓰기의 커밋 순서가 원본 및 대상 데이터베이스 양자에 대해 동일할 것이라고 보장하는 것이 가능하다. 트랜잭션 로그 레코드를 대상에 적용하는 로직은 적절한 순서를 시행하여야 하지만, 이는 데이터베이스 내에서 트랜잭션 로그 레코드의 출현(충돌에 대한)이 원본에서 충돌이 해결되는 순서와 동일하도록 보장되기 때문에 가능할 수 있다. 일 실시예에서 트랜잭션 로그 레코드 적용의 적절한 순서가 시행되는 것을 보장하는 것은 복제 인프라에 달려 있을 수 있다.
일 실시예에서 두 개의 관련되지 않은 트랜잭션이 원본에서 그들의 트랜잭션 식별 순서와 다른 순서로 데이터베이스에서 나타날 수 있다. 예를 들어, 두 개의 트랜잭션이 서로 충돌하지 않고 서로에 대한 종속성이 없는 경우, 식별 abc를 갖는 트랜잭션의 로그 레코드가 식별 xyz를 갖는 트랜잭션에 대한 것보다 먼저 데이터베이스에 표시될 수 있다. 예를 들어, ID abc를 가진 트랜잭션이 812에서 준비된 상태에 들어간 후 정지하면, 그 후에 식별 xyz 를 가진 트랜잭션이 812에서 준비된 상태에 들어가고 로그 레코드를 데이터베이스에 성공적으로 기록한다. 일반적으로, 두 개의 관련되지 않은 트랜잭션 사이의 순서가 정의되어 있지 않기 때문에 트랜잭션 일관성 문제가 발생하지 않는다. 어떤 이유로든, 트랜잭션 로그 레코드가 트랜잭션 식별 순서로 데이터베이스에 표시되도록 보장하는 것이 필요한 경우, 낮은 트랜잭션 식별을 가진 모든 준비된 트랜잭션이 데이터베이스로 들어갈 때까지, 예를 들어, 트랜잭션 로그 잠금 및/또는 쓰기 정지를 도입하는 것을 통해 이 순서를 적용하기 위해 트랜잭션 로그 로직을 보강할 수 있다.
일 실시예에서, 테이블 내용(예를 들어, 메타데이터 파일 목록 및 내포된 마이크로 파티션 목록)의 스냅샷을 생성할 때, 공통 시맨틱은 시작 스냅샷 시간에 대응하는 테이블 버전을 추출함으로써 달성될 수 있다. 이러한 실시예는 모든 DML이 적절한 잠금을 통해 동기화되고, 모든 DML이 내부 램포트 시계를 통해 순서가 정해지고, 모든 과거 버전이 시간 이동 한계까지 유지되기 때문에 가능할 수 있다.
도 9는 데이터베이스를 복제하기 위한 리프레시 요청(900)을 도시하는 개략도이다. 일 실시예에서, 대상 배치의 테이블 상태를 원본 배치의 테이블 상태와 동기화하는 것은: (a) 대상 배치로부터 원본 배치로 리프레시 요청을 송신하는 것; (b) 원본 배치로부터 대상 배치로 스냅샷 응답을 송신하는 것; 및 (c) 스냅샷 응답을 대상 배치로 임포트하는 것을 포함한다. 도 9에 도시된 리프레시 요청(900)은 대상 배치에서 테이블의 활성 마이크로 파티션 인벤토리를 계산한다. 인벤토리는 현재 테이블 버전과 테이블 버전에서 활성화된 글로벌 마이크로 파티션 참조 세트를 포함한다. 도 9에 도시된 바와 같은 실시예에서, 다른 메타데이터 또는 로컬 파일 마이크로 파티션 약칭은 전송되지 않는다.
도 9는 대상 배치 dep2로부터 원본 배치 dep1로 리프레시 요청을 송신하는 것을 도시한다. 원본 배치 dep1는 테이블 T의 활성 파일 목록을 포함한다. 대상 배치 d2는 또한 테이블 T의 활성 파일 목록을 포함한다. 인벤토리 박스에 묘사된 바와 같이, 현재 테이블 버전은 예시적으로 342번이다. 인벤토리는 관련 글로벌 파일 참조 목록을 포함한다. 대상 배치 d2는 테이블 버전 342의 모든 활성 파일을 인벤토리에 따라 글로벌 파일 참조 목록으로 변환한다. 로컬로 추가된 마이크로 파티션 fdn27 및 fdn28은 각각 글로벌 파일 참조(dep2, fdn27) 및 (dep2, fdn28)로 변환된다. 본원에서 사용되는 바에 따르면, 명명 규칙 "fdn" 뒤의 숫자는 데이터베이스의 테이블에서 특정 마이크로 파티션을 지칭할 수 있다. 도 9에 도시된 바와 같이, 글로벌 파일 참조만이 테이블 인벤토리의 일부로서 전송되고, 활성 파일만이 전송된다.
도 10은 데이터베이스를 복제하기 위한 스냅샷 응답(1000)을 도시하는 개략도이다. 스냅샷 응답(1000)은 리프레시 요청(900)에 응답하여 원본 배치 dep1에 의해 생성된다. 스냅샷 응답(1000)은 (a) 테이블에 추가될 모든 마이크로 파티션 메타데이터; (b) 재암호화된 상태의 실제 마이크로 파티션; (c) 테이블에서 제거될 모든 글로벌 마이크로 파티션 참조; (d) 대상 배치 dep2로부터 전송된 테이블 버전; 및 (e) 마이크로 파티션이 재암호화된 복제 마스터 키 중 하나 이상을 포함한다. 일 실시예에서, 스냅샷 응답(1000)은 스냅샷 응답 메시지, 메타데이터 파일 및 마이크로 파티션으로 분할된다. 스냅샷 응답(1000) 메시지는 메타데이터 파일에 대한 포인터를 포함할 수 있다. 메타데이터 파일은 추가된 마이크로 파티션 메타데이터 및 삭제된 글로벌 파일 참조를 포함할 수 있다. 메타데이터 파일 및 마이크로 파티션은 대상 배치 d2의 인바운드 볼륨에 복사될 수 있다.
도 10은 원본 배치 dep1이 스냅샷 응답(1000)을 대상 배치 dep2로 전송하는 것을 도시한다. 원본 배치 dep1 및 대상 배치 dep2 각각은 테이블 T의 활성 파일 목록을 포함한다. 스냅샷 응답(1000)은 예시 목적으로 테이블 버전 번호 342를 도시하고 추가 및 삭제될 파일 및 메타데이터를 나타낸다. 도 10에 도시된 실시예에서, 스냅샷 응답(1000)은 (fdn15 및 그 연관된 메타데이터)가 (fdn16_g(dep0, fdn6) 및 그 연관된 메타데이터)와 함께 추가되어야 함을 나타낸다. 스냅샷 응답(1000)은 (dep1, fdn12) 및 (dep0, fdn4) 및 (dep2, fdn27)이 삭제되어야 함을 나타낸다.
도 10은 대상 배치 dep2의 테이블 버전 번호 342가 대상 배치 dep2로 다시 전송되는 것을 도시한다. 원본 배치 dep1과 대상 배치 dep2 사이의 불일치에서 나타나고, 스냅샷 응답(1000)에 묘사된 것처럼, 약칭 fdn15 및 fdn16_g를 갖는 마이크로 파티션이 대상 배치 dep2의 테이블 T에 추가되어야 한다. 또한 글로벌 파일 참조 (dep1, fdn12), (dep0, fdn4) 및 (dep2, fdn27)를 갖는 마이크로 파티션은 테이블 T에서 제거되어야 한다. 마이크로 파티션 fdn15 및 fdn16_g는 재암호화되어 대상 배치 dep2의 인바운드 볼륨에 업로드된다. 복제 마스터 키는 스냅샷 응답의 일부이다(도 10에 도시되지 않음).
도 11은 데이터베이스를 복제하기 위한 스냅샷 응답의 임포트(1100)를 도시하는 개략도이다. 일 실시예에서, 스냅샷 응답을 임포트할 때, 대상 배치 dep2의 테이블은 필요한 경우 전송된 테이블 버전으로 롤백될 것이다. 스냅샷 응답의 추가된 파일들은 DML의 작업 ID에 기반하여 로컬 약칭을 수신할 수 있고 접미사 또는 다른 적절한 식별자를 포함할 수 있다(접미사 "_g"는 도 9 내지 도 11에 도시됨). 원래의 글로벌 파일 참조는 메타데이터의 일부로 저장될 수 있다. 삭제되어야 하는 글로벌 파일 참조는 메모리 내 인덱스를 사용하여 대상 배치 dep2에서 로컬 약칭으로 변환될 수 있다. 일 실시예에서, 삭제된 약칭 섹션의 일부로서 DML 명령과 관련된 메타데이터 파일에 로컬 약칭이 추가된다.
도 11에 도시된 바와 같은 스냅샷 응답의 임포트(1100)는 필요한 경우 테이블 T가 테이블 버전 번호 342로 롤백되는 것을 예시한다. 도 11의 실시예에 도시된 바와 같이, 추가된 파일은 "_g"가 추가된 로컬 약칭, 예를 들어 fdn25_g 및 fdn26_g를 사용하여 테이블에 추가된다. (dep1, fdn15) 및 (dep0, fdn6)을 포함하여, 원래 글로벌 파일 참조는 유지된다. 또한 삭제된 글로벌 파일 참조는 (dep1, fdn12), (dep0, fdn4) 및 (dep2, fdn27)을 포함하여 fdn22_g, fdn24_g 및 fdn27로 변환되는 로컬 약칭으로 변환된다. 또한, 도 11에 도시된 바와 같이, 로컬 삭제된 약칭은 DML 명령과 관련된 메타데이터 파일의 삭제된 섹션에 추가된다. 테이블은 압축기(compactor)에 의해 정리될 수 있으며 두 테이블 모두 동일한 상태를 포함할 수 있다.
도 12는 데이터베이스를 복제하기 위한 배치 아키텍처(1200)를 도시한 개략도이다. 배치 아키텍처(1200)는 배치 D1, 배치 D2 및 배치 D3을 포함한다. 배치 D1은 다른 배치로부터 메시지를 수신하는 D1 복제 버킷(1204)을 포함한다. 유사하게, 배치 D2는 D2 복제 버킷(1210)을 포함하고 배치 D3은 D3 복제 버킷(1216)을 포함한다. 각 복제 버킷(1204, 1210, 1216)은 배치 당 하나의 하위 버킷을 포함하여, 하위 버킷들로 분할된다. 복제 버킷(1204, 1210, 1216)의 하위 버킷 각각은 허가 및 접근 크리덴셜로 독립적으로 구성될 수 있다. 배치 D1은 D1 EP/마이크로 파티션 버킷(1206)을 포함하고, 배치 D2는 D2 EP/마이크로 파티션 버킷(121)을 포함하고, 배치 D3은 D2 EP/마이크로 파티션 버킷(1218)을 포함한다.
일 실시예에서, 복제의 모든 단계는 배치를 생성할 때 데이터베이스를 약칭으로 참조할 수 있으며 배치는 논리적으로 그룹화될 수 있도록 전용 데이터베이스에서 생성된다. 일 실시예에서, DeploymentDPO는 메시징 서비스 및 인프라의 다른 부분에 의해 사용될 배치 정보를 저장하는 데 이용된다. DeploymentDPO는 일 실시예에서 정규 사전 엔티티이며, create, show 및 drop 명령문을 통한 접근은 제한된다. DeploymentDPO는 특정 배치에 대한 정보(즉, 메타데이터)를 포함하는 데이터 구조이다. DeploymentDPO는 해당 특정 배치와 연관된 작업에 사용될 수 있다.
각 복제 버킷(1204, 1210, 1216)에는 서버 측 암호화가 활성화될 수 있다. 또한 고객 데이터를 포함한 모든 파일이 클라이언트 측에서 암호화될 수 있다. 배치는 자체 복제 버킷에 대한 전체 접근 권한을 가지며 배치는 메시지를 쓰는 다른 배치의 복제 버킷에 있는 하위 버킷에만 쓰기 접근을 가질 수 있다.
일 실시예에서, 새로운 배치가 생성될 때, 다른 배치가 새로운 배치에 메시지를 보낼 수 있도록, 모든 배치에 대한 모든 하위 버킷을 포함하여, 그 배치에 대한 새로운 복제 버킷이 생성된다. 또한 새 배치가 기존 배치에 메시지를 보낼 수 있도록 배치를 위한 새로운 하위 버킷이 다른 모든 배치의 복제 버킷에 추가될 수 있다.
도 12에 도시된 메시징 인프라는 배치가 버킷에서 파일을 교환함으로써 일반 메시지를 교환할 수 있는 인프라를 제공한다. 메시지는 클라우드 스토리지를 통해 교환될 수 있으며 연관된 클라이언트 계정에 투명할 수 있다. 연관된 클라이언트 계정에 대해, 계정이 로컬 메타데이터의 일반 데이터 지속성 개체(DPO)와만 상호 작용하는 것으로 보일 수 있다. 메시지 서비스 계층은 메시지 DPO가 직렬화 및 교환되는 방식을 캡슐화할 수 있다.
도 13은 데이터베이스를 복제할 때 메시지를 송신하기 위한 프로세스 흐름(1300)을 나타내는 개략도이다. 프로세스 흐름(1300)이 시작되고 1302에서 새로운 메시지가 개시되며 스토리지로 유지된다. 메시지는 1304에서 송신을 준비하고 있고 클라이언트 계정 1306에서 메시지가 송신되어야 한다는 것을 나타내도록 호출한다. 모든 파일이 업로드된 후, 메시지는 1308에서 송신 준비가 완료되어 있고 메시지 서비스는 1310에서 메시지 묶음을 추출한다. 메시지 서비스는 송신 준비가 완료된 메시지 묶음을 주기적으로 추출하여 1312에서 송신 슬라이스로 이동시키고, 메시지 서비스는 1314에서 메시지를 버킷에 쓴다. 메시지 파일이 생성되고 메시지가 송신된 후, 메시지는 수신 측에 의해 정리되고 1316에서 스토리지로부터 제거된다. 1322에서 준비 중에 오류가 발생하거나 메시지가 슬라이스를 준비하는 동안 만료된 경우, 업로드된 파일은 1320에서 클라우드 스토리지로부터 정리된다. 정리 메시지가 1318에서 수신 배치로 송신된 후 메시지가 스토리지에서 제거될 수 있다. 메시지 서비스는 1312에서 송신 준비가 완료된 메시지 묶음을 주기적으로 추출하여 송신 슬라이스로 이동시킨다. 일 실시예에서, 메시지 송신 서비스는 데이터 암호화 키를 랩핑하는 데 이용되는 유도 키를 계산하고 캐시한다. 메시지 서비스는 추가로 현재 및 다음 분산기(diversifier)및 현재 및 다음 메시지 파일 이름을 스토리지에 유지해야 할 수도 있다.
도 14는 데이터베이스를 복제할 때 메시지를 수신하기 위한 프로세스 흐름(1400)을 도시하는 개략도이다. 프로세스 흐름(1400)은 1402에서 복제 버킷으로부터 파일링 된 메시지를 다운로드하고 메시지 파일을 역직렬화하는 메시지 서비스를 포함한다. 메시지는 역직렬화되고 1404에서 스토리지로 유지된다. 메시지는 1406에서 수신되고 1408에서 수신된 메시지 묶음이 추출된다. 메시지 처리 서비스는 수신된 메시지의 묶음을 형성하고 1410에서 처리 준비 슬라이스로 이동시킨다. 1412에서 작업자 스레드가 메시지를 처리한 후, 메시지는 1414에서 정리 준비가 된다. 정리기는 1416에서 클라우드 스토리지에서 메시지 파일을 제거하고 그 다음 1418에서 메시지가 메타데이터에서 제거될 수 있다.
일 실시예에서, 메시지의 정리는 송신자가 복제 버킷에 대한 쓰기 접근만을 갖기 때문에 수신 측에서 발생한다. 메시지가 처리된 후, 정리 서비스는 클라우드 스토리지의 모든 관련 파일을 제거(purge)하고 스토리지에서 메시지를 제거(remove)할 수 있다. 일 실시예에서, 준비 동안 오류가 발생한 모든 메시지에 대해, 정리 요청이 수신 배치로 전송된다.
도 15는 데이터베이스를 복제하기 위한 3개의 배치를 포함하는 글로벌 배치 그룹(1500)을 도시하는 개략도이다. 본원에 개시된 바와 같은 데이터베이스 복제 동안, 메타데이터는 배치 복제 그룹(배치 그룹으로 지칭될 수도 있음) 내에서 유지되고 교환된다. 각 배치 그룹 사이에서 복제할 수 있도록 배치 그룹이 생성된다. 일 실시예에서, 각 배치는 자신을 포함하여 그룹 내의 다른 모든 배치의 목록을 유지한다. 일 실시예에서, 목록은 그룹 내에 새로운 배치를 추가하는 데 사용될 "배치 생성(create deployment)" 데이터 정의 언어(DDL)를 사용하여 각 배치 내에서 수동으로 유지된다. 이 DDL은 모든 기존 배치에서 실행될 수 있다. 배치 내에서, 계정을 글로벌(로컬에 대해)로 만들어 새 계정 복제 그룹을 만들거나 기존 계정 복제 그룹에 결합할 수 있다. 동일한 계정 복제 그룹의 일부인 계정만이 그룹간에 데이터를 복제할 수 있다. 일 실시예에서, 새로운 계정 복제 그룹을 형성하는 둘 이상의 클라이언트 계정을 함께 연결하고자 하는 클라이언트 계정 요청에 대한 응답으로 초기에 수행된다. 새로운 계정은 create 명령문이 발행된 계정과 동일한 복제 그룹에 자동으로 배치될 수 있다.
일 실시예에서, 단일 계정 그룹 내의 계정은 로컬 객체를 글로벌로 만들거나 글로벌 객체를 직접 생성할 수 있다. 다양한 실시예들에서, 객체는 데이터베이스, 사용자, 역할, 웨어하우스, 글로벌 연결, 조직 등을 포함할 수 있다. 개체가 글로벌이면, 글로벌 계정 그룹의 임의의 계정 내에서 복제될 수 있다. 글로벌 개체 복제는 먼저 개체를 복제할 모든 계정에서 해당 글로벌 개체에 대한 로컬 복제 개체를 만든 다음 이러한 복제본을 명시적으로, 일정에 따라 또는 지속적으로 리프레시함으로써 달성된다. 일 실시예에서, 계정 관리자에 의해 데이터베이스만이 글로벌로 될 수 있고, 데이터베이스의 소유자에 의해서만 복제본이 명시적으로 리프레시될 수 있다.
일 실시예에서, 데이터베이스 데이터를 관리 및 복제하기 위한 3가지 메타데이터 클래스가 존재한다. 복제에 의해 수동으로 작성 및 복제되는 배치 그룹의 각 배치에 대한 메타데이터를 포함하여 하나의 메타데이터 클래스가 배치에 관한 것이다. 메타데이터의 한 클래스는 글로벌 계정에 관한 것이며, 배치의 모든 글로벌 계정은 그것이 속한 배치 그룹 내의 다른 모든 배치에 대한 복제일 수 있다. 하나의 메타데이터 클래스는 동일한 계정 그룹 내에서 또한 복제될 수 있는 계정의 모든 글로벌 데이터베이스를 포함하는 글로벌 데이터베이스를 포함한다. 일 실시예에서, 글로벌 데이터베이스의 모든 복제본에 대한 정보만이 계정 그룹이 존재하는 배치의 부분집합에 대한 계정 그룹의 복제이다.
도 15는 3개의 배치, 배치 D1, 배치 D2 및 배치 D3을 포함하는 글로벌 배치 그룹을 사용하는 예시를 도시한다. 도 15에 도시된 바와 같이, 배치 D1은 D1.A1, D1.A2, D1.A3, D1.A4 및 D1.A5를 포함하여, 5개의 계정을 포함한다. 배치 D2는 D2.A1, D2.A2, D2.A3 및 D2.A4를 포함하여, 4개의 계정을 포함한다. 배치 D3는 D3.A1, D3.A2, D3.A3 및 D3.A4를 포함하여, 4개의 계정을 포함한다. 도 15에 도시된 실시예에서, 그룹에 속하지 않으며 글로벌 객체를 가질 수 없는 4개의 로컬 계정이 있다. 4개의 로컬 계정에는 D1.A3, D2.A2, D3.A3 및 D3.A4가 포함되며 점선으로 도시된다. 글로벌 계정(즉, 실선으로 표시되고 채우기 없음, 밝은 회색 채우기 또는 어두운 회색 채우기로 음영 처리된 계정) 만이 글로벌 데이터베이스를 만들거나 복제할 수 있다. 도 15에 도시된 예시에서, DB1, DB2, DB3 및 DB4를 포함하여 4개의 글로벌 데이터베이스가 존재한다. 동일한 글로벌 데이터베이스는 동일한 계정 그룹 내에서만 존재하거나 복제될 수 있다. 도 15에 도시된 예시에서, DB1 및 DB2는 D1.A1, D1.A4, D2.A4 및 D3.A2를 포함하는 계정 그룹 내에서만 복제될 수 있는 글로벌 데이터베이스이다. 또한 DB3은 D1.A2 및 D2.A1을 포함하는 계정 그룹 내에서만 복제될 수 있다. 또한 DB4는 D1.A5 및 D2.A3을 포함하는 계정 그룹 내에서만 복제될 수 있다. 또한, 도 15에 도시된 바와 같이, 글로벌 데이터베이스는 글로벌 계정 그룹 내의 모든 계정에 의해 반드시 복제될 필요는 없다. 예를 들어, 어두운 음영 처리된 계정 그룹(DB1 및 DB2와 연관된)의 클라이언트 소유자는 DB2를 D1.A4 계정으로 복제하지 않았다.
일 실시예에서, 글로벌 객체의 모든 복제본에 대한 메타데이터는 계정 그룹의 모든 계정에 복제된다. 특정 실시예에서, 이것은 로컬 계정(즉, 점선으로 도시된 것) 관리자가 그룹 내의 임의의 글로벌 객체의 로컬 또는 원격의 모든 복제본을 열거하는 것을 허용할 수 있다. 이는 클라이언트 계정 관리자는 계정 그룹(예를 들어, 채우기 없음, 옅은 회색 채우기 또는 짙은 회색 채우기로 표시된 계정 그룹)의 다른 계정 내의 글로벌 객체의 새 복제본을, 생성되는 새로운 객체가 그 글로벌 객체의 복제본이라고 지정함으로써 생성할 수 있게 한다.
예시로서, 계정 D2.A4(짙은 회색 채우기 계정 그룹과 연관된)에 대한 클라이언트 계정은 글로벌 데이터베이스 DB2를 해당 계정으로 복제하고자 한다. 이 계정에서 클라이언트 계정은 글로벌 데이터베이스를 표시하는 명령을 실행할 수 있다. 이 명령은 계정 그룹에 있는 모든 글로벌 데이터베이스의 복제본을 열거한다. 이 예시를 기반으로, 명령은 아래의 표 1에 예시된 대로 다섯 가지 실시예를 보여준다.
영역 계정 복제 그룹 명칭
D1 A1 b4a193a3-77cc-49dc-a9c8-2a2ee1ae9b1e DB1
D1 A4 b4a193a3-77cc-49dc-a9c8-2a2ee1ae9b1e DB1
D3 A2 b4a193a3-77cc-49dc-a9c8-2a2ee1ae9b1e DB1
D1 A1 0400d847-4199-4f79-9a74-381761bc0cc9 DB2
D3 A2 0400d847-4199-4f79-9a74-381761bc0cc9 DB2
표 1에 예시된 바와 같이, "복제 그룹" 열은 동일한 데이터베이스의 모든 복제본에 대해 동일한 값을 나타낸다. 데이터베이스 복제본은 계정 그룹의 계정처럼 서로 연결되어 있다. 이들 데이터베이스는 또한 식별 번호가 복제 그룹 번호와 동일한 복제 그룹을 형성한다. 전술한 예시에 더하여, D2.A4의 클라이언트 계정은 명령을 발행하여 데이터베이스 복제 그룹에서 "0400d847-4199-4f79-9a74-381761bc0cc9"라는 이름의 새로운 복제본을 생성할 수 있다. 복제본의 로컬 이름은 무엇이든 될 수 있으며 복제 그룹 식별 번호를 지정하면 데이터베이스가 해당 그룹에 있던 다른 데이터베이스와 동일한 복제 그룹의 일부가 된다는 것을 이해할 것이다. 새로운 데이터베이스 복제본을 생성한 후, D2.A4에 대한 클라이언트 계정은 모든 데이터베이스 복제본을 표시하는 명령을 발행한 다음, 아래 표 2에 예시된 바와 같이, 방금 생성된 복제본이 포함된 목록을 수신할 것이다.
영역 계정 복제 그룹 명칭
D1 A1 b4a193a3-77cc-49dc-a9c8-2a2ee1ae9b1e DB1
D1 A4 b4a193a3-77cc-49dc-a9c8-2a2ee1ae9b1e DB1
D3 A2 b4a193a3-77cc-49dc-a9c8-2a2ee1ae9b1e DB1
D1 A1 0400d847-4199-4f79-9a74-381761bc0cc9 DB2
D3 A2 0400d847-4199-4f79-9a74-381761bc0cc9 DB2
D2 A4 0400d847-4199-4f79-9a74-381761bc0cc9 DB5
전술한 예시에 더하여, 해당 그룹의 임의의 계정(즉, D1.A1 또는 D1.A4)으로부터 발행된 동일한 명령은 정확히 동일한 목록을 생성할 것이다. 복제된 메타데이터의 전파에는 시간이 걸릴 수 있으며, 예를 들어 몇 초가 소요될 수 있고, 이 기간이 지나면 다른 모든 배치가 새로운 복제본에 대해 알게 된다.
"글로벌 데이터베이스 표시(show global databases)" 명령과 유사하게, "글로벌 계정 표시(show global accounts)" 명령은 그룹에서 계정 세트의 목록을 생성하기 위해 발행될 수 있다. 위에서 언급한 예시를 계속 참조하면, D3.A2의 클라이언트 계정이 "글로벌 계정 표시(show global accounts)" 명령을 발행하면, 아래의 표 3과 같은 목록이 반환된다.
영역 계정
D1 A1
D1 A4
D2 A4
D3 A2
표 3에 예시된 바와 같이, 주어진 고객에 대해 하나의 계정 복제 그룹만 있기 때문에 계정 복제 그룹 식별 번호는 노출되지 않는다. 배치 그룹 내의 임의의 클라이언트 계정으로부터의 동일한 명령을 실행하면, 명령이 모든 계정 그룹을 표시하는 목록을 생성하며, 이 경우 복제 그룹 식별 번호를 표시하는 하나의 열이 추가될 수 있다.
글로벌 엔티티에 대한 메타데이터 저장
배치 그룹 내의 각 배치는 그룹 내의 모든 글로벌 계정에 대한 메타데이터를 유지할 수 있다. 다시, 전술한 실시예를 사용하여, 각 배치가 모든 글로벌 계정, 즉, D1.A1, D1.A2, D1.A4, D1.A5, D2.A1, D2.A2, D3.A1 및 D3.A3의 목록을 유지할 수 있다. 모든 글로벌 계정의 목록이 완전히 복제될 수 있다. 또한 각 배치는 해당 배치에 존재하는 계정 그룹의 부분집합에 있는 모든 글로벌 객체에 대한 메타데이터를 유지관리할 것이다. 예시를 여전히 사용하여, 배치 D1은 채우기 없음, 옅은 회색 및 짙은 회색 하위 그룹이 소유한 모든 글로벌 객체에 대한 메타데이터를 유지관리한다. 배치 D2는 짙은 회색 및 채우기 없음인 계정 그룹의 계정만을 호스팅하므로, 해당 두 계정 그룹에 속하는 데이터베이스에 대한 메타데이터만을 유지관리하면 된다. 또한, 배치 D3은 옅은 회색 및 채우기 없음인 계정 그룹의 글로벌 데이터베이스에 대한 정보만을 유지관리하여야 한다.
각 배치에서, 단일 DPO가 이용될 수 있고 GlobalEntitiesDPO로 명명될 수 있다. GlobalEntitesDPO는 계정, 데이터베이스, 조직 및/또는 연결과 같이 복제된 엔티티에 대한 정보 및/또는 메타데이터를 유지관리하는 데이터 구조이다. 단일 DPO는 글로벌 계정을 포함하여 모든 글로벌 객체 복제본에 대한 메타데이터를 저장할 수 있다. 계정은 동일한 글로벌 계정의 복제본으로 계정 그룹에서 모델링될 수 있다. 따라서 데이터베이스, 사용자, 역할 및 웨어하우스와 같은 글로벌 계정 및 투-레벨(to-level) 계정 엔티티에 대한 정보가 통합된다. 또한, 각 배치마다, GlobalEntitiesDPO는 배치가 알아야 하는 임의의 글로벌 엔티티 복제본에 대한 정보, 즉 배치에 대해 알아야 하는 모든 글로벌 계정 및 데이터베이스 복제본에 대한 정보(예를 들어, 배치에 존재하는 임의의 계정 그룹의 임의의 복제본)를 저장할 수 있다.
배치 사이에서 내용이 복제되는 GlobalEntitiesDPO에 추가하여, 배치는 배치 내에서 글로벌인 모든 엔티티를 식별할 수 있다. 이를 위해, 새로운 DPO는 필요하지 않지만 기존 BaseDictionaryDPO를 개선할 수 있다. BaseDictionaryDPO는 카탈로그에서 접근할 수 있는 정보를 관리하는 데 사용할 수 있는 DPO 데이터 구조에 대한 기초 추상화이다. 널(null)이 아닌 경우, 사전 엔티티가 글로벌임을 나타내는 글로벌 식별 번호에 대한 필드가 추가될 수 있다. 또한, 모든 글로벌 사전 엔티티는 "글로벌(global)"이라는 새로운 객체를 추가하여 글로벌 식별 번호가 주어진 임의의 글로벌 엔티티를 찾아 색인화될 수 있다. 일 실시예에서, 이는 특정 배치 또는 특정 계정에서 특정 유형의 모든 글로벌 엔티티를 찾는 프로세스를 단순화할 수 있다.
일 실시예에서, 글로벌 데이터베이스 생성에는 글로벌 데이터베이스 복제 그룹에서 첫 번째 마스터 복제본을 생성하는 것이 포함된다. 이 첫 번째 마스터 복제본이 생성되면, 이에 대한 글로벌 데이터베이스 복제 그룹이 자동으로 생성될 수 있다. 그룹의 다른 복제본은 "복제 그룹(replication group)"명령을 사용하여 생성될 수 있다.
일 실시예에서, 글로벌 객체는 로컬 객체로 다시 변환될 수 있다. 기존 글로벌 계정을 로컬 계정으로 전환하기 위해 계정을 변경하는 명령이 클라이언트 또는 관리자 계정에 제공될 수 있다. 이 명령의 부작용으로, 계정 내의 모든 글로벌 객체가 로컬로 될 수 있다. 또한 단일 글로벌 데이터베이스는 유사한 명령을 사용하여 일반 로컬 데이터베이스로 다시 만들 수 있다.
일 실시예에서, 복제본에 대한 모든 변경은 해당 변경에 관심이 있는 다른 모든 배치에 복제된다. 변경은 생성(create), 제거(drop), 업데이트 또는 기타 조정을 포함할 수 있다. 변경 복제는 가능한 한 빨리 발생할 것이며 5 초 이내에 발생할 수 있다. 또한 변경이 없더라도, 배치에서 생성된 모든 복제본을 정기적으로, 예를 들어 시간당 한 번 복제할 것이다. 이는 문제가 발생하더라도 여전히 일부 범위가 유지되도록 보장할 수 있다.
또한, 백그라운드에서 복제본 메타데이터의 복제가 발생할 수 있다. 복제본에 대한 메타데이터는 복제본을 소유한 클라이언트 계정 또는 관리자에 의해 변경될 수 있으며, 변경을 수행하는 트랜잭션은 또한 변경이 있음을 알리기 위해 통지를 활용할 수 있다. 일 실시예에서, 통지 페이로드는 변경을 소비하는 도메인만이다. 변경이 이루어지자마자, 스레드는 변경 사항을 모든 관련 배치에 복제한다. 계정 변경의 경우, 이는 배치 그룹 내의 모든 배치일 수 있으며, 데이터베이스 변경의 경우 계정이 복제인 배치의 부분집합만일 수 있다.
일 실시예에서, 변경의 복제는 글로벌 메시징 프레임워크를 이용한다. 배치 당 하나의 글로벌 메시지를 사용하여 변경이 푸시될 수 있다. 동일한 정보가 두 번 이상 복제될 수 있으므로 해당 변경에 대한 모든 글로벌 메시지가 큐에 대기한 경우에만 변경 통지가 스토리지에서 제거될 수 있다.
도 16은 데이터베이스를 복제하기 위한 암호화 시스템(1600)을 도시한 개략도이다. 일 실시예에서, 암호화는 각 파일을 상이한 키로 암호화하고 HSM(Hardware Security Module)에 대한 접근 수를 제한함으로써 수행된다. 또한 암호화는 KMS에 대한 배치간(cross-deployment) 접근이 없도록 할 수 있다. 일 실시예에서, 메시지 파일은 직렬화된 GlobalMessageDPO의 목록, 다음 메시지 파일의 명칭 및 다음 메시지 파일에 이용될 분산기(diversifier)를 포함한다. GlobalMessageDPO는 하나 이상의 메시지 본문 파일을 가리킬 수 있다. 메시지 파일은 일 실시예에서 Java에 의해 생성될 수 있는 랜덤 데이터 암호화 키(DEK)로 암호화될 수 있다. 메시지 본문 파일 또한 랜덤 DEK로 암호화될 수 있다. 각 DEK는 글로벌 마스터 키(GMK: Global Master Key)에서 유도된 키와 이전 메시지 파일에 지정된 분산기로 랩핑될 수 있다. 키 유도는 HMAC 알고리즘을 사용하여 HSM에서 수행될 수 있다. 유도 키는 글로벌 서비스에 캐시되어 분산기가 변경되지 않은 경우 다음 DEK를 랩핑하기 위해 재이용될 수 있다. 랩핑된 DEK는 클라우드 스토리지의 메시지 파일 헤더에 저장될 수 있다. 일 실시예에서, 분산기는 임의의 시간주기에서 변경될 수 있는 타임스탬프 값이고, 예를 들어 매 시간마다 변경될 수 있다. 타임스탬프로 인하여, 대상은 예를 들어 하루 또는 다른 적절한 시간 주기보다 오래된 분산기를 거부할 수 있다. 이러한 방식으로, 대상은 분산기 상에 덜 세분화된 특성 세트를 시행할 수 있다.
도 16은 암호화된 복제 데이터에 사용하기 위한 암호화 시스템(1600)을 도시한다. 암호화 시스템(1600)은 HSM(Hardware Security Module) 글로벌 마스터 키(HSMGMK)(1602)를 포함한다. GSMGMK(1602)는 다수의 배치로 제공된다. 예를 들어, DEK1은 1618에서 HMAC로 랩핑되고, DEK2는 1620에서 캐시된 HMAC로 랩핑되고, DEK3은 1622에서 새로운 HMAC로 랩핑된다. DEK1 다음 파일(1604)은 DEK2 다음 파일(1606)로 공급되고, 이는 다시 DEK3 다음 파일(1608)로 공급된다. 메시지 파일은 다음 메시지 파일에 대한 GlobalMessageDPO(1614a, 1614b, 1614c) 목록, 명칭 및 분산기(1610, 1612a, 1612b)를 포함한다. GlobalMessageDPO(1614a, 1614b, 1614c)는 일 실시예에서 0개 이상의 메시지 본문 파일(1616a-1616e)을 가리킨다. 일 실시예에서, 각 메시지 본문 파일(1616a-1616e)은 랜덤 DEK로 암호화되고, 각 DEK는 이전 메시지 파일의 HMSGMK 및 분산기로부터 유도된 키에 의해 랩핑된다. 도 16에 도시된 바와 같이, 메시지 본문 파일(1616a)은 DEK4로 암호화되고, 메시지 본문 파일(1616b)은 DEK5로 암호화되고, 메시지 본문 파일(1616c)은 DEK6으로 암호화되고, 메시지 본문 파일(1616d)은 DEK7로 암호화되고, 메시지 본문 파일(1616e)은 DEK8로 암호화된다. 랩핑된 DEK는 클라우드 스토리지의 메시지 파일 헤더에 저장될 수 있다. 유도 키는 캐시되어 재이용될 수 있다. 또한, 다음 분산기(1610, 1612a, 1612b)는 임의의 적절한 시간 간격, 예를 들어 매 시간마다 변경될 수 있다.
도 17은 데이터베이스를 복제하기 위해 클라이언트 관리 키를 이용하는 파일의 암호화(1700)를 도시하는 개략도이다. 데이터를 복제할 때, 원본 배치의 메타데이터 파일 및 마이크로 파티션이 대상 배치에 복사된다. 일 실시예에서, 이는 2개의 복사 동작을 포함한다. 먼저 원본 배치의 마이크로 파티션 볼륨으로부터 대상 배치의 인바운드 단계로 파일이 복사된다. 둘째, 파일은 대상 배치의 인바운드 단계로부터 대상 배치의 마이크로 파티션 볼륨으로 복사된다. 마이크로 파티션 볼륨이 배치 간에 직접 접근될 수 없는 실시예에서 이중 복사는 필수적이며, 따라서 대상 배치에서 인바운드 단계가 우회된다.
일 실시예에서, 데이터 복제는 대상 배치로부터 원본 배치로의 리프레시 요청(900)에 의해 트리거된다. 리프레시 요청(900)은 원본 배치에 의해 생성된 스냅샷 응답(1000)에 의해 응답된다. 스냅샷 응답(1000)은, 메시지 본문 파일에, 예를 들어 스키마 DPO, 테이블 DPO 등을 포함하는 사전 메타데이터의 스냅샷과 메타데이터 파일명 목록 및 랜덤 복제 마스터 키(RepMK)를 포함한다. RepMK는 원본 배치의 HSM에 의해 생성된다. 일 실시예에서, 각 복사 동작은 모든 파일을 재암호화하는 것을 포함한다. 파일이 인바운드 볼륨에 복사되면, RepMK에서 유도된 개별 키와 각 파일의 파일명으로 파일이 재암호화된다. 파일을 대상 마이크로 파티션 볼륨에 복사하면, 대상 배치에서 고객 계정의 해당 메타데이터 파일 마스터 키 및 테이블 마스터 키로 파일이 재암호화된다. 일 실시예에서, RepMK는 스냅샷 응답의 일부로서 전송되기 전에 HSMGMK를 이용하여 랩핑된다.
일 실시예에서, 고객 관리 키를 이용하는 클라이언트 계정의 파일을 복제할 때, 리프레시 요청(900)은 공개 키를 포함한다. 공개 키는 대상 배치에서 고객 KMS 키를 이용하여 생성된 공개-개인 키 쌍의 일부이다. 스냅샷 응답(1000)에서 랩핑된 RepMK는 전송되기 전에 공개 키로 추가적으로 랩핑된다. 따라서, 일 실시예에서, RepMK는 먼저 HSMGMK에 의해 그리고 공개 키에 의해 두 번 랩핑된다. 인바운드 단계에서 대상 마이크로 파티션 볼륨으로 두 번째 복사하는 동안, RepMK는 먼저 개인 키를 이용하여 랩핑 해제한 다음 HSMGMK를 이용하여 랩핑 해제한다.
도 17에 도시된 바와 같이, 원본 배치(1702)는 KMS(1706a) 및 HSM(1708a)을 포함한다. KMS(1706a) 및 HSM(1708a)은 AMK(1710a) 및 TMK(1712a)를 생성하는 데 이용된다. 파일은 1714에서 원본 EPFM/TMK로부터 유도된 키로 암호화된다. 대상 배치(1704)는 AMK(1710b) 및 TMK(1712b)를 생성하는 데 이용되는 자체 KMS(1706b) 및 HSM(1708b)을 포함한다. 파일은 1716에서 인바운드 단계에서 RepMK로부터 유도된 키로 암호화되고 1718에서 마이크로 파티션 볼륨에서 대상 EP/TMK로부터 유도된 키로 암호화된다. 리프레시 요청은 대상 배치(1704)로부터 원본 배치(1702)로 전송 될 때 1720에서 KMS로부터의 공개 키를 포함한다. 스냅샷 응답은 1722에서 원본 배치(1702)에 의해 생성되어 대상 배치(1704)로 전송된 HSMGMK 및 공개 키로 랩핑된 RepMK를 포함한다. 도시된 바와 같이, 리프레시 요청은 대상 배치상의 고객 KMS 키로부터 유도된 공개 키를 포함하고 스냅샷 응답은 HSMGMK 및 공개 키로 이중 랩핑된 랜덤 RepMK를 포함한다. 인바운드 단계의 파일은 RepMK로부터 유도된 개별 키와 각 파일의 파일명으로 암호화된다. 또한 일 실시예에서, 마이크로 파티션 볼륨(원본 또는 대상)의 파일은 메타데이터 파일 마스터 키 및 테이블 마스터 키를 이용하여 평소와 같이 암호화된다.
도 18은 1차 배치와 2차 배치 사이에서 데이터베이스의 장애 조치를 위한 방법(1800)의 개략적인 흐름도이다. 방법(1800)은 본원에 개시된 바와 같은 자원 관리자(102), 실행 플랫폼(112) 및/또는 복제 및 장애 조치 관리자(228)와 같은 하나 이상의 컴퓨팅 자원에 의해 실행될 수 있다.
방법(1800)이 시작되고 컴퓨팅 자원은 1802에서 2차 배치에 데이터베이스 데이터가 더 저장되도록 1차 배치에 저장된 데이터베이스 데이터를 복제한다. 방법(1800)은 계속되고 컴퓨팅 자원은 1804에서 1차 배치가 사용 불가능하다고 결정한다. 1차 배치는, 예를 들어, 정전, 1차 배치에서 데이터베이스 데이터의 잘못된 수정 또는 삭제를 초래하는 오류, 데이터 센터 중단, 클라우드 제공자 중단, 오류, 예정된 비가동 시간 등으로 인해 사용 불가능할 수 있다. 방법(1800)은 계속되고 컴퓨팅 자원은 1806에서 1차 배치가 사용 불가능하다는 결정에 응답하여 2차 배치에서 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행한다. 하나 이상의 트랜잭션은 삽입, 삭제, 업데이트 및/또는 병합 명령과 같은 데이터 조작 언어(DML) 명령문, 데이터베이스 데이터에서 실행되는 질의 등을 포함할 수 있다. 방법(1800)은 계속되고 컴퓨팅 자원은 1808에서 1차 배치가 더 이상 사용 불가능하지 않고 사용 가능한 상태로 되돌아간 것으로 결정한다. 방법(1800)은 계속되고 컴퓨팅 자원은 1810에서 1차 배치가 다시 사용 가능하다는 결정에 응답하여 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 1차 배치로 전파한다. 일 실시예에서, 하나 이상의 트랜잭션은 본원에 개시된 바와 같은 하이브리드 복제 접근법에 의해 1차 배치로 전파된다. 일 실시예에서, 2차 배치에서 실행된 하나 이상의 트랜잭션은, 예를 들어, 도 6 내지 도 8에 개시된 바와 같이 데이터베이스에 기록된 트랜잭션 로그에 의해 결정된다. 일 실시예에서, 1차 배치는 도 9 내지 도 11에 제공된 개시에 따라 리프레시된다. 방법(1800)은 자원 관리자(102) 및/또는 실행 플랫폼(112)과 같은 컴퓨팅 자원이 1차 배치가 사용 가능할 때 1차 배치에서 데이터베이스 데이터에 대해 질의를 실행하도록 한다(1812 참조).
도 19는 예시적인 컴퓨팅 디바이스(1900)를 묘사하는 블록도이다. 일부 실시예에서, 컴퓨팅 디바이스(1900)는 본원에서 논의된 하나 이상의 시스템 및 구성요소를 구현하는 데 사용된다. 예를 들어, 컴퓨팅 디바이스(1900)는 사용자 또는 관리자가 자원 관리자(1902)에 접근하도록 허용할 수 있다. 또한, 컴퓨팅 디바이스(1900)는 본원에서 기재된 임의의 시스템 및 구성요소와 상호작용할 수 있다. 따라서, 컴퓨팅 디바이스(1900)는 본원에서 논의된 것과 같은 다양한 절차 및 작업을 수행하는 데 사용될 수 있다. 컴퓨팅 디바이스(1900)는 서버, 클라이언트 또는 임의의 다른 컴퓨팅 엔티티로 작용할 수 있다. 컴퓨팅 디바이스(1900)는 데스크탑 컴퓨터, 노트북 컴퓨터, 서버 컴퓨터, 휴대용 컴퓨터, 태블릿 등과 같은 광범위한 컴퓨팅 디바이스 중 임의의 것일 수 있다.
컴퓨팅 디바이스(1900)는 하나 이상의 프로세서(들)(1902), 하나 이상의 메모리 디바이스(들)(1904), 하나 이상의 인터페이스(들)(1906), 하나 이상의 대용량 스토리지 디바이스(들)(1908), 및 하나 이상의 입력/출력(I/O) 디바이스(들)(1910)을 포함하며, 이들은 모두 버스(1912)에 연결된다. 프로세서(들)(1902)은 메모리 디바이스(들)(1904) 및/또는 대용량 스토리지 디바이스(들)(1908)에 저장된 명령을 실행하는 하나 이상의 프로세서 또는 컨트롤러를 포함한다. 프로세서(들)(1902)은 또한 캐시 메모리와 같은 다양한 유형의 컴퓨터 판독 가능 매체를 포함할 수 있다.
메모리 디바이스(들)(1904)은 휘발성 메모리(예를 들어, 임의 접근 메모리(RAM)) 및/또는 비휘발성 메모리(예를 들어, 읽기 전용 메모리(ROM))와 같은 다양한 컴퓨터 판독 가능 매체를 포함한다. 메모리 디바이스(들)(1904)은 또한 플래시 메모리와 같은 재기록 가능 메모리를 포함할 수 있다.
대용량 스토리지 디바이스(들)(1908)는 자기 테이프, 자기 디스크, 광 디스크, 솔리드 스테이트 메모리(예를 들어, 플래시 메모리) 등과 같은 다양한 컴퓨터 판독 가능 매체를 포함한다. 다양한 드라이브가 또한 대용량 스토리지 디바이스(들)(1908)에 포함될 수 있어 다양한 컴퓨터 판독 가능 매체로 읽기 및/또는 쓰기가 가능하다. 대용량 스토리지 디바이스(들)(1908)은 이동식 매체 및/또는 비이동식 매체를 포함한다.
I/O 디바이스(들)(1910)은 데이터 및/또는 다른 정보가 컴퓨팅 디바이스(1900)로 입력되거나 이로부터 가져오도록 허용하는 다양한 디바이스를 포함한다. 예시적인 I/O 디바이스(들)(1910)은 커서 제어 디바이스, 키보드, 키패드, 마이크로폰, 모니터 또는 다른 디스플레이 디바이스, 스피커, 프린터, 네트워크 인터페이스 카드, 모뎀, 렌즈, CCD 또는 다른 이미지 캡처 디바이스 등을 포함한다.
인터페이스(들)(1906)은 컴퓨팅 디바이스(1900)가 다른 시스템, 디바이스 또는 컴퓨팅 환경과 상호작용하도록 허용하는 다양한 인터페이스를 포함한다. 예시적인 인터페이스(들)(1906)은 LAN(Local Area Network), WAN(Wide Area Network), 무선 네트워크 및 인터넷에 대한 인터페이스와 같은 임의의 수의 상이한 네트워크 인터페이스를 포함한다.
버스(1912)는 프로세서(들)(1902), 메모리 디바이스(들)(1904), 인터페이스(들)(1906), 대용량 스토리지 디바이스(들)(1908), 및 I/O 디바이스(들)(1910)이 서로 통신하고, 버스(1912)에 연결된 다른 디바이스 또는 구성요소와 통신하도록 허용한다. 버스(1912)는 시스템 버스, PCI 버스, IEEE 1394 버스, USB 버스 등과 같은 여러 유형의 버스 구조 중 하나 이상을 나타낸다.
예시의 목적으로, 프로그램 및 다른 실행 가능한 프로그램 구성요소는 본원에서 개별적인 블록으로 도시되어 있지만, 이러한 프로그램 및 구성요소는 컴퓨팅 디바이스(1900)의 상이한 스토리지 구성요소에 다양한 시간에 상주할 수 있고 프로세서(들)(1902)에 의해 실행될 수 있다는 것이 이해된다. 대안적으로, 본원에 기재된 시스템 및 절차는 하드웨어, 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합으로 구현될 수 있다. 예를 들어, 하나 이상의 주문형 집적 회로(ASIC)가 본원에 기재된 하나 이상의 시스템 및 절차를 수행하도록 프로그래밍될 수 있다. 본원에서 사용되는 바에 따르면, "모듈"이라는 용어는 질의 작업의 전부 또는 일부를 수행할 목적으로 하드웨어, 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합에 의한 것과 같이 프로세스를 달성하기 위한 구현 장치를 전달하도록 의도된다.
예시
이하의 실시예는 추가의 실시예에 관한 것이다.
예시 1은 시스템이다. 시스템은 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 데이터베이스 데이터를 복제하는 수단을 포함한다. 시스템은 1차 배치가 사용 불가능하다고 결정하는 수단을 포함한다. 시스템은 1차 배치가 사용 불가능하다는 결정에 응답하여 2차 배치에서 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행하는 수단을 포함한다. 시스템은 1차 배치가 더 이상 사용 불가능하지 않다고 결정하는 수단을 포함한다. 시스템은 1차 배치가 더 이상 사용 불가능하지 않다는 결정에 응답하여 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 1차 배치로 전파하는 수단을 포함한다. 시스템은 1차 배치가 사용 가능할 때 1차 배치에서 데이터베이스 데이터에 대한 질의를 실행하는 수단을 포함한다.
예시 2는 예시 1에서와 같은 시스템으로서, 1차 배치와 2차 배치가 각각 사용 가능할 때 1차 배치와 2차 배치에서 데이터베이스 데이터에 대한 새로운 트랜잭션을 실행하는 수단을 더 포함한다.
예시 3은 예시 1 내지 2 중 어느 하나에서와 같은 시스템으로서, 1차 배치가 사용 불가능한 지속 시간 동안 데이터베이스 데이터에 대한 질의의 실행을 1차 배치로부터 2차 배치로 이동하는 수단을 더 포함한다.
예시 4는 예시 1 내지 3 중 어느 하나에서와 같은 시스템으로서, 1차 배치와 2차 배치가 상이한 지리적 위치에 있다.
예시 5는 예시 1 내지 4 중 어느 하나에서와 같은 시스템으로서, 1차 배치와 2차 배치가 상이한 클라우드 기반 스토리지 제공자에 의해 제공된다.
예시 6은 예시 1 내지 5 중 어느 하나에서와 같은 시스템으로서, 1차 배치 또는 2차 배치의 사용 가능 상태가 변경되었을 때 데이터베이스 데이터와 연관된 계정에 통지를 제공하는 수단을 더 포함한다.
예시 7은 예시 1 내지 6 중 어느 하나에서와 같은 시스템으로서, 1차 배치가 사용 불가능하다고 결정된 후에 2차 배치가 데이터베이스 데이터에 대한 질의를 실행하도록 사용 가능하게 되는 사용자 정의 최대 허용 기간을 준수하는 수단을 더 포함한다.
예시 8은 예시 1 내지 7 중 어느 하나에서와 같은 시스템으로서, 1차 배치가 사용 불가능하다고 결정하는 수단은: 1차 배치에서 정전 발생, 1차 배치에서 데이터베이스 데이터가 잘못 수정되거나 삭제되는 오류 발생, 1차 배치에서 데이터 센터 중단 발생, 1차 배치의 클라우드 제공자의 중단, 1차 배치에서 오류 발생, 또는 1차 배치에서 예정된 비가동시간 진행 중 하나 이상을 결정하는 수단을 포함한다.
예시 9는 예시 1 내지 8 중 어느 하나에서와 같은 시스템으로서, 1차 배치가 사용 불가능하게 됨에 응답하여 데이터베이스 조작을 1차 배치로부터 2차 배치로 이동할 때 애플리케이션이 손실을 허용할 수 있는 사용자 정의 최대 데이터베이스 트랜잭션 수를 준수하는 수단을 더 포함한다.
예시 10은 예시 1 내지 9 중 어느 하나에서와 같은 시스템으로서, 1차 배치에 저장된 데이터베이스 데이터를 복제하는 수단은 1차 배치가 사용 불가능하게 됨에 응답하여 복제하도록 구성된다.
예시 11은 예시 1 내지 10 중 어느 하나에서와 같은 시스템으로서, 1차 배치가 사용 불가능하게 됨에 응답하여 클라이언트 계정 연결을 1차 배치로부터 2차 배치로 이동하는 수단을 더 포함한다.
예시 12는 예시 1 내지 11 중 어느 하나에서와 같은 시스템으로서, 하나 이상의 트랜잭션을 1차 배치로 전파하는 수단은 하나 이상의 트랜잭션만을 전파하고 1차 배치가 사용 불가능하게 되기 전에 1차 배치 내에 이미 존재하는 임의의 데이터를 복제하지 않도록 구성된다.
예시 13은 예시 1 내지 12 중 어느 하나에서와 같은 시스템으로서, 하나 이상의 트랜잭션을 1차 배치로 전파하는 수단은 1차 배치가 사용 불가능하게 된 이후에 데이터베이스 데이터 내에서 업데이트된 파일을 나타내는 글로벌 파일 식별자에 기반하여 하나 이상의 트랜잭션을 결정하도록 구성된다.
예시 14는 방법이다. 방법은 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 데이터베이스 데이터를 복제하는 것을 포함한다. 방법은, 1차 배치가 사용 불가능하다는 결정에 응답하여, 2차 배치에서 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행하는 것을 포함한다. 방법은, 1차 배치가 더 이상 사용 불가능하지 않다는 결정에 응답하여, 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 1차 배치로 전파하는 것을 포함한다. 방법은 1차 배치가 사용 가능할 때 1차 배치에서 데이터베이스 데이터에 대한 질의가 실행되도록 하는 것이다.
예시 15는 예시 14에서와 같은 방법으로서, 1차 배치와 2차 배치가 각각 사용 가능할 때, 1차 배치와 2차 배치에서 데이터베이스 데이터에 대한 새로운 트랜잭션을 실행하는 것을 더 포함한다.
예시 16은 예시 14 내지 15 중 어느 하나에서와 같은 방법으로서, 1차 배치가 사용 불가능하다는 결정에 응답하여, 1차 배치가 사용 불가능한 지속 시간 동안 데이터베이스 데이터에 대한 질의의 실행을 1차 배치로부터 2차 배치로 이동하는 것을 더 포함한다.
예시 17은 예시 14 내지 16 중 어느 하나에서와 같은 방법으로서, 질의의 실행을 1차 배치로부터 2차 배치로 이동하는 것은 1차 배치가 사용 불가능하다고 결정된 후에 2차 배치가 질의를 실행하도록 사용 가능하게 되는 사용자 정의 최대 허용 기간 내에서 일어난다.
예시 18은 예시 14 내지 17 중 어느 하나에서와 같은 방법으로서, 1차 배치에서 정전 발생, 1차 배치에서 데이터베이스 데이터가 잘못 수정되거나 삭제되는 오류 발생, 1차 배치에서 데이터 센터 중단 발생, 1차 배치의 클라우드 제공자의 중단, 1차 배치에서 오류 발생, 또는 1차 배치에서 예정된 비가동시간 진행 중 하나 이상을 결정함으로써 1차 배치가 사용 불가능하다고 결정하는 것을 더 포함한다.
예시 19는 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 명령어를 실행하도록 프로그램 가능한 프로세서로서, 명령어는: 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 데이터베이스 데이터를 복제하는 것; 1차 배치가 사용 불가능하다는 결정에 응답하여, 2차 배치에서 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행하는 것; 1차 배치가 더 이상 사용 불가능하지 않다는 결정에 응답하여, 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 1차 배치로 전파하는 것; 및 1차 배치가 사용 가능한 동안, 1차 배치에서 데이터베이스 데이터에 대한 질의를 실행하는 것을 포함한다.
예시 20은 예시 19에서와 같은 프로세서로서, 명령어는 1차 배치와 2차 배치가 각각 사용 가능할 때 1차 배치와 2차 배치에서 데이터베이스 데이터에 대한 새로운 트랜잭션을 실행하는 것을 더 포함한다.
예시 21은 예시 19 내지 20 중 어느 하나에서와 같은 프로세서로서, 명령어는, 1차 배치가 사용 불가능하다는 결정에 응답하여, 1차 배치가 사용 불가능한 지속 시간 동안 데이터베이스 데이터에 대한 질의의 실행을 1차 배치로부터 2차 배치로 이동하는 것을 더 포함한다.
예시 22는 예시 19 내지 21 중 어느 하나에서와 같은 프로세서로서, 명령어는 1차 배치에서 정전 발생, 1차 배치에서 데이터베이스 데이터가 잘못 수정되거나 삭제되는 오류 발생, 1차 배치에서 데이터 센터 중단 발생, 1차 배치의 클라우드 제공자의 중단, 1차 배치에서 오류 발생, 또는 1차 배치에서 예정된 비가동시간 진행 중 하나 이상을 결정함으로써 1차 배치가 사용 불가능하다고 결정하는 것을 더 포함한다.
본원에 기재된 시스템 및 방법은 데이터가 컴퓨팅(또는 처리) 자원과 분리된 서비스로서 저장되고 접근되도록 허용한다. 실행 플랫폼에서 할당된 컴퓨팅 자원이 없더라도, 원격 데이터 소스에서 데이터를 다시 로드하지 않고도 가상 웨어하우스에서 데이터를 사용할 수 있다. 따라서, 데이터는 데이터와 연관된 컴퓨팅 자원의 할당과 독립적으로 이용 가능하다. 기재된 시스템 및 방법은 모든 유형의 데이터에 유용하다. 특정 실시예에서, 데이터는 구조적이고 최적화된 형식으로 저장된다. 컴퓨팅 서비스로부터 데이터 스토리지/접근 서비스를 분리하면 상이한 사용자와 그룹 사이에서 데이터를 쉽게 공유할 수 있다. 본원에서 논의된 바와 같이, 각 가상 웨어하우스는 접근 권한을 갖는 임의의 데이터에 다른 가상 웨어하우스가 동일한 데이터에 접근하는 것과 동시에 접근할 수 있다. 이 아키텍처는 로컬 캐시에 실제 데이터를 저장하지 않고 질의 실행을 지원한다. 본원에 기재된 시스템 및 방법은 시스템의 사용자에게 투명한 방식으로, 필요에 따라 원격 스토리지 디바이스로부터 로컬 캐시로 데이터를 이동시키는 투명한 동적 데이터 이동이 가능하다. 또한, 이 아키텍처는 컴퓨팅 서비스로부터 데이터 스토리지 서비스의 분리로 인해 임의의 가상 웨어하우스가 임의의 데이터에 접근할 수 있기 때문에 사전 데이터 이동 없이 데이터 공유를 지원한다.
본 개시가 특정한 바람직한 실시예와 관련하여 설명되었지만, 본 개시의 이점을 고려하여, 본원에 제시된 모든 이점 및 특징 세트를 모두 제공하지 않는 실시예를 포함하는, 다른 실시예가 당업자에게 명백할 것이며, 이들은 또한 본 개시의 범위 내에 있다. 본 개시의 범위를 벗어나지 않으면서 다른 실시예들이 이용 될 수 있음을 이해하여야 한다.

Claims (22)

  1. 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 상기 데이터베이스 데이터를 복제하는 수단;
    상기 1차 배치가 사용 불가능하다고 결정하는 수단;
    상기 1차 배치가 사용 불가능하다는 결정에 응답하여 상기 2차 배치에서 상기 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행하는 수단;
    상기 1차 배치가 더 이상 사용 불가능하지 않다고 결정하는 수단;
    상기 1차 배치가 더 이상 사용 불가능하지 않다는 결정에 응답하여 상기 데이터베이스 데이터에 대한 상기 하나 이상의 트랜잭션을 상기 1차 배치로 전파하는 수단; 및
    상기 1차 배치가 사용 가능할 때 상기 1차 배치에서 상기 데이터베이스 데이터에 대한 질의를 실행하는 수단을 포함하는 시스템.
  2. 제1항에 있어서, 상기 1차 배치와 상기 2차 배치가 각각 사용 가능할 때 상기 1차 배치와 상기 2차 배치에서 상기 데이터베이스 데이터에 대한 새로운 트랜잭션을 실행하는 수단을 더 포함하는 시스템.
  3. 제1항에 있어서, 상기 1차 배치가 사용 불가능한 지속 시간 동안 상기 데이터베이스 데이터에 대한 질의의 실행을 상기 1차 배치로부터 상기 2차 배치로 이동하는 수단을 더 포함하는 시스템.
  4. 제1항에 있어서, 상기 1차 배치와 상기 2차 배치가 상이한 지리적 위치에 있는 시스템.
  5. 제1항에 있어서, 상기 1차 배치와 상기 2차 배치가 상이한 클라우드 기반 스토리지 제공자에 의해 제공되는 시스템.
  6. 제1항에 있어서, 상기 1차 배치 또는 상기 2차 배치의 사용 가능 상태가 변경되었을 때 상기 데이터베이스 데이터와 연관된 계정에 통지를 제공하는 수단을 더 포함하는 시스템.
  7. 제1항에 있어서, 상기 1차 배치가 사용 불가능하다고 결정된 후에 상기 2차 배치가 상기 데이터베이스 데이터에 대한 질의를 실행하도록 사용 가능하게 되는 사용자 정의 최대 허용 기간을 준수하는 수단을 더 포함하는 시스템.
  8. 제1항에 있어서, 상기 1차 배치가 사용 불가능하다고 결정하는 수단은:
    상기 1차 배치에서 정전 발생;
    상기 1차 배치에서 상기 데이터베이스 데이터가 잘못 수정되거나 삭제되는 오류 발생;
    상기 1차 배치에서 데이터 센터 중단 발생;
    상기 1차 배치의 클라우드 제공자의 중단;
    상기 1차 배치에서 오류 발생; 또는
    상기 1차 배치에서 예정된 비가동시간 진행 중 하나 이상을 결정하는 수단을 포함하는 시스템.
  9. 제1항에 있어서, 상기1차 배치가 사용 불가능하게 됨에 응답하여 데이터베이스 조작을 상기 1차 배치로부터 상기 2차 배치로 이동할 때 애플리케이션이 손실을 허용할 수 있는 사용자 정의 최대 데이터베이스 트랜잭션 수를 준수하는 수단을 더 포함하는 시스템.
  10. 제1항에 있어서, 상기 1차 배치에 저장된 상기 데이터베이스 데이터를 복제하는 수단은 상기1차 배치가 사용 불가능하게 됨에 응답하여 복제하는 수단을 포함하는 시스템.
  11. 제1항에 있어서, 상기1차 배치가 사용 불가능하게 됨에 응답하여 클라이언트 계정 연결을 상기 1차 배치로부터 상기 2차 배치로 이동하는 수단을 더 포함하는 시스템.
  12. 제1항에 있어서, 상기 하나 이상의 트랜잭션을 상기 1차 배치로 전파하는 수단은 상기1차 배치가 사용 불가능하게 되기 전에 상기 1차 배치 내에 이미 존재하는 임의의 데이터를 복제하지 않고 상기 하나 이상의 트랜잭션만을 전파하는 수단을 포함하는 시스템.
  13. 제1항에 있어서, 상기 하나 이상의 트랜잭션을 상기 1차 배치로 전파하는 수단은 상기1차 배치가 사용 불가능하게 된 이후에 상기 데이터베이스 데이터 내에서 업데이트된 파일을 나타내는 글로벌 파일 식별자에 기반하여 상기 하나 이상의 트랜잭션을 결정하는 수단을 포함하는 시스템.
  14. 데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 상기 데이터베이스 데이터를 복제하는 것;
    상기 1차 배치가 사용 불가능하다는 결정에 응답하여, 상기 2차 배치에서 상기 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행하는 것;
    상기 1차 배치가 더 이상 사용 불가능하지 않다는 결정에 응답하여, 상기 데이터베이스 데이터에 대한 상기 하나 이상의 트랜잭션을 상기 1차 배치로 전파하는 것; 및
    상기 1차 배치가 사용 가능한 동안, 상기 1차 배치에서 상기 데이터베이스 데이터에 대한 질의를 실행하는 것을 포함하는 방법.
  15. 제14항에 있어서, 상기 1차 배치와 상기 2차 배치가 각각 사용 가능할 때, 상기 1차 배치와 상기 2차 배치에서 상기 데이터베이스 데이터에 대한 새로운 트랜잭션을 실행하는 것을 더 포함하는 방법.
  16. 제14항에 있어서, 상기 1차 배치가 사용 불가능하다는 결정에 응답하여, 상기1차 배치가 사용 불가능한 지속 시간 동안 상기 데이터베이스 데이터에 대한 질의의 실행을 상기 1차 배치로부터 상기 2차 배치로 이동하는 것을 더 포함하는 방법.
  17. 제16항에 있어서, 상기 질의의 실행을 상기 1차 배치로부터 상기 2차 배치로 이동하는 것은 상기 1차 배치가 사용 불가능하다고 결정된 후에 상기 2차 배치가 질의를 실행하도록 사용 가능하게 되는 사용자 정의 최대 허용 기간 내에서 일어나는 방법.
  18. 제14항에 있어서,
    상기 1차 배치에서 정전 발생;
    상기 1차 배치에서 상기 데이터베이스 데이터가 잘못 수정되거나 삭제되는 오류 발생;
    상기 1차 배치에서 데이터 센터 중단 발생;
    상기 1차 배치의 클라우드 제공자의 중단;
    상기 1차 배치에서 오류 발생; 또는
    상기 1차 배치에서 예정된 비가동시간 진행 중 하나 이상을 결정함으로써 상기 1차 배치가 사용 불가능하다고 결정하는 것을 더 포함하는 방법.
  19. 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 명령어를 실행하도록 프로그램 가능한 프로세서에 있어서, 상기 명령어는:
    데이터베이스 데이터가 2차 배치에 추가로 저장되도록 1차 배치에 저장된 상기 데이터베이스 데이터를 복제하는 것;
    상기 1차 배치가 사용 불가능하다는 결정에 응답하여, 상기 2차 배치에서 상기 데이터베이스 데이터에 대한 하나 이상의 트랜잭션을 실행하는 것;
    상기 1차 배치가 더 이상 사용 불가능하지 않다는 결정에 응답하여, 상기 데이터베이스 데이터에 대한 상기 하나 이상의 트랜잭션을 상기 1차 배치로 전파하는 것; 및
    상기 1차 배치가 사용 가능한 동안, 상기 1차 배치에서 상기 데이터베이스 데이터에 대한 질의를 실행하는 것을 포함하는 프로세서.
  20. 제19항에 있어서, 상기 명령어는 상기 1차 배치와 상기 2차 배치가 각각 사용 가능할 때 상기 1차 배치와 상기 2차 배치에서 상기 데이터베이스 데이터에 대한 새로운 트랜잭션을 실행하는 것을 더 포함하는 프로세서.
  21. 제19항에 있어서, 상기 명령어는, 상기 1차 배치가 사용 불가능하다는 결정에 응답하여, 상기1차 배치가 사용 불가능한 지속 시간 동안 상기 데이터베이스 데이터에 대한 질의의 실행을 상기 1차 배치로부터 상기 2차 배치로 이동하는 것을 더 포함하는 프로세서.
  22. 제19항에 있어서, 상기 명령어는:
    상기 1차 배치에서 정전 발생;
    상기 1차 배치에서 상기 데이터베이스 데이터가 잘못 수정되거나 삭제되는 오류 발생;
    상기 1차 배치에서 데이터 센터 중단 발생;
    상기 1차 배치의 클라우드 제공자의 중단;
    상기 1차 배치에서 오류 발생; 또는
    상기 1차 배치에서 예정된 비가동시간 진행 중 하나 이상을 결정함으로써 상기 1차 배치가 사용 불가능하다고 결정하는 것을 더 포함하는 프로세서.
KR1020207021622A 2018-07-06 2019-04-23 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 KR102307371B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862694656P 2018-07-06 2018-07-06
US62/694,656 2018-07-06
PCT/US2019/028794 WO2020009737A1 (en) 2018-07-06 2019-04-23 Data replication and data failover in database systems

Publications (2)

Publication Number Publication Date
KR20200100173A true KR20200100173A (ko) 2020-08-25
KR102307371B1 KR102307371B1 (ko) 2021-10-05

Family

ID=69059202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207021622A KR102307371B1 (ko) 2018-07-06 2019-04-23 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치

Country Status (6)

Country Link
US (5) US11151161B2 (ko)
EP (2) EP3714372A4 (ko)
KR (1) KR102307371B1 (ko)
CN (1) CN111656340B (ko)
DE (1) DE202019005483U1 (ko)
WO (1) WO2020009737A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102351220B1 (ko) 2021-10-08 2022-01-14 주식회사 이글루시큐리티 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치
KR20220124075A (ko) * 2021-03-02 2022-09-13 쿠팡 주식회사 분할된 데이터베이스를 위한 다중 노드의 스트림 처리 프레임워크를 위한 시스템 및 방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111656340B (zh) * 2018-07-06 2023-07-18 斯诺弗雷克公司 在数据库系统中的数据复制和数据故障转移
US11144631B2 (en) * 2018-09-11 2021-10-12 Apple Inc. Dynamic switching between pointer authentication regimes
US11086840B2 (en) 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
US11200256B2 (en) * 2019-04-11 2021-12-14 International Business Machines Corporation Record replication for multi-column partitioning on distributed database systems
US10952222B1 (en) * 2019-06-11 2021-03-16 Amazon Technologies, Inc. Isolated and flexible network data transmission between computing infrastructure collections
US11392617B2 (en) * 2020-03-26 2022-07-19 International Business Machines Corporation Recovering from a failure of an asynchronous replication node
CN111581016B (zh) * 2020-04-14 2021-05-18 上海爱数信息技术股份有限公司 一种现代应用的副本数据管理系统及方法
US11501014B2 (en) * 2020-05-07 2022-11-15 International Business Machines Corporation Secure data replication in distributed data storage environments
US10949402B1 (en) 2020-05-26 2021-03-16 Snowflake Inc. Share replication between remote deployments
US11436110B2 (en) * 2021-02-11 2022-09-06 Huawei Technologies Co., Ltd. Distributed database remote backup
US11163798B1 (en) * 2021-03-21 2021-11-02 Snowflake Inc. Database replication to remote deployment with automated fulfillment
US11886437B2 (en) 2021-12-08 2024-01-30 International Business Machines Corporation Reduced latency query processing
US11874751B2 (en) 2021-12-09 2024-01-16 International Business Machines Corporation Operating a data center
US11734301B1 (en) * 2022-03-23 2023-08-22 Snowflake Inc. Selective table replication to enable stream replication
US11995102B2 (en) 2022-03-30 2024-05-28 International Business Machines Corporation Bidirectional data replication with wait for data function
CN114722125A (zh) * 2022-04-11 2022-07-08 京东科技信息技术有限公司 数据库事务处理的方法、装置、设备和计算机可读介质
US11645231B1 (en) * 2022-04-24 2023-05-09 Morgan Stanley Services Group Inc. Data indexing for distributed query execution and aggregation
US20230359646A1 (en) * 2022-05-09 2023-11-09 Walmart Apollo, Llc System and method for service synchronization
US20230401232A1 (en) * 2022-06-09 2023-12-14 Snowflake Inc. Cross-cloud replication of recurrently executing data pipelines

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060122677A (ko) * 2004-02-25 2006-11-30 마이크로소프트 코포레이션 데이터베이스 데이터 복구 시스템 및 방법
US20110047294A1 (en) * 2005-06-29 2011-02-24 Visa U.S.A., Inc. Adaptive gateway for switching transactions and data on unreliable networks using context-based rules
US20140032981A1 (en) * 2012-07-26 2014-01-30 Apple Inc. Intermediate database management layer
US20180067822A1 (en) * 2009-10-26 2018-03-08 Amazon Technologies, Inc. Failover and recovery for replicated data instances

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827136B1 (en) * 2001-09-20 2010-11-02 Emc Corporation Management for replication of data stored in a data storage environment including a system and method for failover protection of software agents operating in the environment
US7228326B2 (en) * 2002-01-18 2007-06-05 Bea Systems, Inc. Systems and methods for application deployment
US7747576B2 (en) * 2002-02-20 2010-06-29 International Business Machines Corporation Incremental update control for remote copy
US7395329B1 (en) * 2002-05-13 2008-07-01 At&T Delaware Intellectual Property., Inc. Real-time notification of presence availability changes
US20050071195A1 (en) * 2003-09-30 2005-03-31 Cassel David A. System and method of synchronizing data sets across distributed systems
US7353231B1 (en) * 2005-10-21 2008-04-01 At&T Corp. Flip-flap mechanism for high availability, online analytical processing databases
US7627584B2 (en) * 2005-11-30 2009-12-01 Oracle International Corporation Database system configured for automatic failover with no data loss
US7725764B2 (en) * 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US8127099B2 (en) * 2006-12-26 2012-02-28 International Business Machines Corporation Resource recovery using borrowed blocks of memory
KR100926880B1 (ko) * 2007-05-21 2009-11-16 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
US7856027B2 (en) * 2008-02-25 2010-12-21 International Business Machines Corporation Inbound blocking of data received from a LAN in a multi-processor virtualization environment
US20110047413A1 (en) * 2009-08-20 2011-02-24 Mcgill Robert E Methods and devices for detecting service failures and maintaining computing services using a resilient intelligent client computer
US8335765B2 (en) * 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
WO2012067964A1 (en) * 2010-11-16 2012-05-24 Actifio, Inc. Systems and methods for data management virtualization
WO2012069091A1 (en) * 2010-11-26 2012-05-31 Telefonaktiebolaget L M Ericsson (Publ) Real time database system
US20120159234A1 (en) * 2010-12-15 2012-06-21 Microsoft Corporation Providing resilient services
US9465698B2 (en) * 2014-03-06 2016-10-11 Software Ag Systems and/or methods for data recovery in distributed, scalable multi-tenant environments
US9424145B2 (en) * 2014-06-25 2016-08-23 Sybase, Inc. Ensuring the same completion status for transactions after recovery in a synchronous replication environment
US9575673B2 (en) * 2014-10-29 2017-02-21 Commvault Systems, Inc. Accessing a file system using tiered deduplication
US10545987B2 (en) * 2014-12-19 2020-01-28 Pure Storage, Inc. Replication to the cloud
US9804935B1 (en) * 2015-01-26 2017-10-31 Intel Corporation Methods for repairing a corrupted database to a new, correct state by selectively using redo and undo operations
US10474694B2 (en) * 2015-02-25 2019-11-12 International Business Machines Corporation Zero-data loss recovery for active-active sites configurations
US10817540B2 (en) * 2016-09-02 2020-10-27 Snowflake Inc. Incremental clustering maintenance of a table
US20190102841A1 (en) * 2017-10-04 2019-04-04 Servicenow, Inc. Mapping engine configurations with task managed workflows and grid user interfaces
CN111656340B (zh) * 2018-07-06 2023-07-18 斯诺弗雷克公司 在数据库系统中的数据复制和数据故障转移

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060122677A (ko) * 2004-02-25 2006-11-30 마이크로소프트 코포레이션 데이터베이스 데이터 복구 시스템 및 방법
US20110047294A1 (en) * 2005-06-29 2011-02-24 Visa U.S.A., Inc. Adaptive gateway for switching transactions and data on unreliable networks using context-based rules
US20180067822A1 (en) * 2009-10-26 2018-03-08 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US20140032981A1 (en) * 2012-07-26 2014-01-30 Apple Inc. Intermediate database management layer

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220124075A (ko) * 2021-03-02 2022-09-13 쿠팡 주식회사 분할된 데이터베이스를 위한 다중 노드의 스트림 처리 프레임워크를 위한 시스템 및 방법
KR102351220B1 (ko) 2021-10-08 2022-01-14 주식회사 이글루시큐리티 대용량 데이터 처리 시 효율적인 서버 부하 분산을 위한 db 이중화 방법 및 이를 지원하는 장치

Also Published As

Publication number Publication date
EP4283482A3 (en) 2024-01-24
US11630845B2 (en) 2023-04-18
CN111656340A (zh) 2020-09-11
US20220215041A1 (en) 2022-07-07
US11314777B2 (en) 2022-04-26
EP4283482A2 (en) 2023-11-29
EP3714372A4 (en) 2021-02-24
US11151161B2 (en) 2021-10-19
DE202019005483U1 (de) 2020-10-28
KR102307371B1 (ko) 2021-10-05
US20230267131A1 (en) 2023-08-24
US20200104310A1 (en) 2020-04-02
EP3714372A1 (en) 2020-09-30
CN111656340B (zh) 2023-07-18
WO2020009737A1 (en) 2020-01-09
US20200012659A1 (en) 2020-01-09
US20220019600A1 (en) 2022-01-20

Similar Documents

Publication Publication Date Title
KR102307371B1 (ko) 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
US20220237166A1 (en) Table partitioning within distributed database systems
US10997207B2 (en) Connection management in a distributed database
US11841844B2 (en) Index update pipeline
US9411866B2 (en) Replication mechanisms for database environments
US20090012932A1 (en) Method and System For Data Storage And Management
CN107835983A (zh) 使用一致的数据库快照在分布式数据库中进行备份和还原
US11263236B2 (en) Real-time cross-system database replication for hybrid-cloud elastic scaling and high-performance data virtualization
US11841845B2 (en) Data consistency mechanism for hybrid data processing
US10769034B2 (en) Caching DML statement context during asynchronous database system replication
US11657046B1 (en) Performant dropping of snapshots by converter branch pruning
US20230195747A1 (en) Performant dropping of snapshots by linking converter streams
US20230418711A1 (en) Repairing unresolved dangling references after failover

Legal Events

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