KR102025934B1 - 분산형 시스템에서의 범위들의 분할 및 이동 - Google Patents

분산형 시스템에서의 범위들의 분할 및 이동 Download PDF

Info

Publication number
KR102025934B1
KR102025934B1 KR1020187030592A KR20187030592A KR102025934B1 KR 102025934 B1 KR102025934 B1 KR 102025934B1 KR 1020187030592 A KR1020187030592 A KR 1020187030592A KR 20187030592 A KR20187030592 A KR 20187030592A KR 102025934 B1 KR102025934 B1 KR 102025934B1
Authority
KR
South Korea
Prior art keywords
group
range
source group
data
target
Prior art date
Application number
KR1020187030592A
Other languages
English (en)
Other versions
KR20180123140A (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 KR20180123140A publication Critical patent/KR20180123140A/ko
Application granted granted Critical
Publication of KR102025934B1 publication Critical patent/KR102025934B1/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/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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

Abstract

분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 방법들 및 시스템들이 설명된다. 하나의 예는 하나 또는 그 초과의 태블릿 복제본들을 포함하는 소스 그룹에 분할 포인트를 삽입하라는 요청을 식별하는 것 ― 각각의 태블릿은 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터의 적어도 일부를 포함하고, 분할 포인트는 소스 그룹 내의 데이터를 제1 범위 및 제1 범위와 상이한 제2 범위로 분할함 ― ; 그 요청에 대한 응답으로: 소스 그룹의 제1 범위 내의 파일네임들의 리스트를 하나 또는 그 초과의 태블릿 복제본들을 포함하는 제1 타겟 그룹으로 전송하는 것; 및, 제1 타겟 그룹에서, 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본을 생성하는 것을 포함하고, 가상 사본은, 파일들의 데이터를 복제하지 않고서, 파일들의 데이터를 각각 새로운 네임을 사용하여 이용 가능하게 한다.

Description

분산형 시스템에서의 범위들의 분할 및 이동
[0001] 본 명세서는 일반적으로 분산형 데이터베이스 시스템에서 큰 그룹들을 분할하는 것에 관한 것이다.
[0002] 분산형 데이터베이스에서 데이터를 재파티셔닝(repartitioning)할 때, 매우 많은(large of chunks of) 데이터는 종종 이동되기 위해 복사된다. 현재의 재파티셔닝 구현들에 요구되는 시간 및 자원들은, 특히, 기록 과부하들(heavy write loads)을 가진 큰 그룹들을 분할하려고 시도할 때, 종종 문제들을 발생시키고, 결과적으로, 크기 임계치보다 몇 배 더 크게 커지는 분할들은 일반적이지 않지는 않다. 따라서, 분산형 데이터베이스에서 큰 그룹들을 빠르고 효율적으로 분할하기 위한 메커니즘에 대한 필요성이 발생하였다.
[0003] 일반적으로, 본 명세서에 설명되는 요지의 일 양상은 분산형 데이터베이스 시스템에서 분산형 트랜잭션(distributed transaction)에 대한 액션들을 포함하는, 데이터 프로세싱 장치들에 의해 수행되는 방법들 및 시스템들에서 구현될 수 있고, 시스템들 및 방법들은, 분할 포인트(split point)를 소스 그룹에 삽입하라는 요청을 식별하는 것 ― 소스 그룹은 하나 또는 그 초과의 태블릿 복제본들(tablet replicas)을 포함하고, 각각의 태블릿은 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터의 적어도 일부를 포함하고, 분할 포인트는 소스 그룹 내의 데이터를 제1 범위 및 제1 범위와 상이한 제2 범위로 분할함 ― ; 분할 포인트를 소스 그룹에 삽입하라는 요청에 대한 응답으로, 소스 그룹의 제1 범위 내의 파일네임들의 리스트를 제1 타겟 그룹으로 전송하는 것 ― 제1 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함함 ― , 및 제1 타겟 그룹에서, 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본(virtual copy)을 생성하는 것을 포함하고, 가상 사본은, 파일들의 데이터를 복제하지 않고서, 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 한다.
[0004] 시스템들 및 방법들은 제1 범위 내의 파일들을 제1 타겟 그룹에 추가하는 것, 제1 타겟 그룹이 소스 그룹에서의 제1 범위 내의 파일들에 더 이상 의존하지 않는다고 소스 그룹에 통보하는 것, 및 소스 그룹으로부터 제1 범위 내의 파일들을 삭제하는 것을 더 포함할 수 있다. 추가로, 분할 포인트를 소스 그룹에 삽입하라는 요청에 대한 응답으로, 소스 그룹의 제2 범위 내의 파일네임들의 리스트는 제2 타겟 그룹으로 전송될 수 있고, 제2 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함하고, 제2 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본이 제2 타겟 그룹에서 생성될 수 있고, 가상 사본은, 파일들의 데이터를 복제하지 않고서, 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 한다.
[0005] 또한, 시스템들 및 방법들은, 소스 그룹으로부터, 제1 범위 내의 인-메모리 버퍼링된 업데이트들(in-memory buffered updates)의 콘텐츠를 전송하는 것, 및 제1 타겟 그룹에서, 소스 그룹으로부터의 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠를 타겟 그룹의 인-메모리 버퍼링된 업데이트들에 추가하는 것을 포함할 수 있다.
[0006] 특정 실시예들에 따라, 분산형 트랜잭션은 투표 페이즈(voting phase) 및 커밋 페이즈(commit phase)를 포함하는 2-페이즈 커밋 프로토콜에 따라 실행된다. 각각의 그룹 내의 다수의 태블릿들은 분산형 트랜잭션을 완료하기 위해 투표 페이즈에서 커밋해야 한다. 투표 페이즈에서 중단하기 위한 투표에 대한 응답으로, 각각의 그룹은 트랜잭션을 취소(undo)한다.
[0007] 본 명세서에 설명되는 요지의 하나 또는 그 초과의 구현들의 세부사항들은 이하의 상세한 설명 및 첨부 도면들에 제시된다. 요지의 다른 특징들, 양상들 및 잠재적인 이점들은 상세한 설명, 도면들 및 청구항들로부터 명백하게 될 것이다.
[0008] 도 1은 분산형 저장 시스템에서 큰 그룹들을 분할하기 위한 예시적인 환경의 도면이다.
[0009] 도 2는 분산형 저장 시스템에서 큰 그룹들을 분할하기 위한 프로세스에서 예시적인 분산형 데이터베이스 그룹의 도면이다.
[0010] 도 3은 분산형 저장 시스템에서 분산형 트랜잭션을 조정하기 위한 예시적인 프로세스의 스윔 레인도(swim lane diagram)이다.
[0011] 도 4는 분산형 저장 시스템에서 큰 그룹들을 분할하기 위한 예시적인 프로세스의 흐름도이다.
[0012] 도 5는 본 문헌에 설명되는 시스템들 및 방법들을 구현하는 데 사용될 수 있는 컴퓨팅 디바이스들의 도면이다.
[0013] 다양한 도면들에서 유사한 참조 부호들 및 지정들은 유사한 엘리먼트들을 표시한다.
[0014] 분산형 데이터베이스에서 데이터를 재파티셔닝할 때, 표준 구현들은 이동될 전체 데이터를 복사한다. 예컨대, 데이터를 분할하거나 복제 레벨(replication level)을 변경하는 것은 새로운 구성에서 데이터의 전체 새로운 사본을 만드는 것을 요구한다. 본원에 설명된 실시예들은, 가능할 때마다 데이터의 온-디스크 사본들을 공유함으로써 이러한 여분의 복사를 피하기 위한 메커니즘을 제공한다. 예컨대, 데이터를 분할할 때, 2개의 파티션들의 새로운 사본을 만드는 것보다는, 기존의 파티션을 2개의 별개의 부분들로서 사용 가능하게 하는, 기존의 파티션의 가상 뷰가 제공될 수 있다. 그렇지 않다면, 데이터의 새로운 사본이 만들어질 때에만, 예컨대, 데이터를 더 콤팩트한 형태(즉, 압축(compaction))로 재기록할 때, 가상 사본은 데이터의 실제 사본으로 분해될 필요가 있다. 특정 실시예들에 따라, 데이터베이스는 그룹들로 파티셔닝되고, 여기서 각각의 그룹은 태블릿들의 복제된 세트이다. 태블릿은 레이어들이라고 또한 불리는 불변 파일들(immutable files)의 리스트, 및 버퍼링된 업데이트들의 인-메모리 표현(in-memory representation)을 포함한다. 그룹은 2개 또는 그 초과의 그룹들로 분할될 수 있고, 2개 또는 그 초과의 그룹들은 병합될 수 있거나, 데이터는 하나의 그룹으로부터 상이한 복제 구성을 갖는 상이한 다른 그룹으로(예컨대, 단지 미국의 태블릿들만을 갖는 그룹으로부터 단지 유럽의 태블릿들마을 갖는 그룹으로) 이동될 수 있다.
[0015] 본원에 설명된 실시예들은 복제된 파티션들 간에 데이터를 더 효율적으로 이동시키는 것을 가능하게 한다. 복제된 파티션들은 그룹들이고, 이들 각각은, 각각이 데이터의 사본을 보유하는 하나 또는 그 초과의 태블릿들로 구성된다. 각각의 태블릿은 정확히 하나의 서버에 의해 서빙될 수 있다. 태블릿은, 행들의 시퀀스 또는 행 공간(row space)의 다수의 파티션들을 캡슐화할 수 있는 컨테이너일 수 있는 데이터 구조이다. 데이터는, 예컨대, 하나의 그룹으로부터 2개의 새로운 그룹들로 이동함으로써, 일부 분할 포인트에서 분할될 수 있다. 제1 그룹은 데이터의 범위의 하위 부분(즉, 분할 포인트까지)을 수신할 수 있고, 제2 그룹은 데이터의 범위의 후반(latter) 부분을 수신할 수 있으며, 범위는 소스 그룹으로부터 제거될 수 있다. 마찬가지로, 데이터는 2개의 소스 그룹들로부터 하나의 타겟 그룹으로 이동함으로써 병합될 수 있다. 데이터의 이동은 모든 태블릿들에서 실질적으로 동시에 발생해야 한다. 그렇게 하기 위해, 예컨대, 시스템은 소스 그룹(들), 타겟 그룹(들), 및 그룹에 대한 메타데이터 맵핑 범위를 포함하는 시스템 테이블을 포함하는 분산형 트랜잭션을 커밋(commit)한다. 이러한 분산 트랜잭션은 이동을 설명하고 분할 포인트뿐만 아니라 어떤 범위가 어떤 타겟으로 가는지를 포함한다. 각각의 그룹은 트랜잭션을 복제하고, 이는, 각각의 태블릿이 트랜잭션을 적용할 것을 보장한다. 소스 태블릿들이 트랜잭션을 적용할 때, 소스 태블릿들은 현재 콘텐츠의 스냅샷(snapshot)을 촬영하고, 이를 보존한다. 타겟 태블릿들이 트랜잭션을 적용할 때, 그들은 이동될 범위들을 전송하기 위해 소스 태블릿에 접촉한다. 태블릿의 상태는 클러스터 파일시스템에 저장된 불변 파일들 및 버퍼링된 업데이트들에 대한 인-메모리 상태로 분할된다. 소스 태블릿들은, 스냅샷의 모든 파일네임들의 리스트 및 송신될 범위에 속하는 모든 인-메모리 업데이트들의 콘텐츠를 전송함으로써, 범위들을 타겟 태블릿으로 송신한다. 타겟 태블릿은 콘텐츠를 자신의 인-메모리 버퍼링된 업데이트들에 추가하고, 모든 파일들의 스냅샷을 생성하고, 파일 콘텐츠를 요청된 범위들로 제한하는 필터에서 래핑되는(wrapped), 스냅샷된 파일들을 자신의 콘텐츠에 추가한다. 이러한 스냅샷들은, 근본적인 데이터를 복제할 필요없이, 파일의 콘텐츠를 새로운 네임 하에서 이용 가능하게 함으로써 심볼 링크(symbolic link)와 유사하다. 인-메모리 버퍼링된 업데이트들로부터의 데이터는, 예컨대, TCP(transmission control protocol) 연결을 통해 그룹들 사이에서 스트리밍될 수 있다. 이어서, 타겟 그룹은, 타겟 그룹이 더 이상 소스 파일들을 요구하지 않고, 소스 그룹이 그러한 파일들을 삭제할 수 있음을 소스 그룹에 통지한다. 통상적으로, 소스 그룹은, 소스 그룹이 자신의 다음 주기적 압축에서 파일들을 재기록할 때, 파일들을 삭제한다.
[0016] 본원에 설명된 기술들은 다음의 이점들을 제공할 수 있다. 예컨대, 이러한 접근법은 시간 및 공간 모두에서 더 효율적인 분할이 이루어지도록 허용하여, 더 자주 그리고 더 광범위한 기준들의 결과로서 데이터를 재파티셔닝하는 것을 가능하게 한다. 예컨대, 오버로딩된 파티션은 더 빠르고 효율적으로 분할할 수 있다.
[0017] 따라서, 본 개시내용은 분산형 저장 시스템에서 큰 그룹들을 분할하기 기술들을 설명한다. 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 하나의 예시적인 방법은 분할 포인트를 소스 그룹에 삽입하라는 요청을 식별하는 것을 포함하고, 소스 그룹은 하나 또는 그 초과의 태블릿 복제본들(replicas)을 포함하며, 각각의 태블릿은 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터 중 적어도 일부를 포함하고, 분리 포인트는 소스 그룹 내의 데이터를 제1 범위 및 제1 범위와 상이한 제2 범위로 분할한다. 분할 포인트를 소스 그룹에 삽입하라는 요청에 대한 응답으로, 소스 그룹의 제1 범위 내의 파일네임들의 리스트는 제1 타겟 그룹으로 전송되고, 제1 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함한다. 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본은 제1 타겟 그룹에서 생성되고, 가상 사본은, 파일들의 데이터를 복사하지 않고서, 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 한다.
[0018] 제1 범위 내의 파일들은 제1 타겟 그룹에 추가될 수 있고, 소스 그룹은, 제1 타겟 그룹이 소스 그룹의 제1 범위 내의 파일들에 더 이상 의존하지 되지 않는다고 통보받을 수 있다. 이에 대한 응답으로, 제1 범위 내의 파일들은 소스 그룹에서 삭제될 수 있다. 또한, 분할 포인트를 소스 그룹에 삽입하라는 요청에 대한 응답으로, 소스 그룹의 제2 범위 내의 파일네임들의 리스트는 제2 타겟 그룹으로 전송될 수 있고, 제2 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함한다. 또한, 제2 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본이 제2 타겟 그룹에서 생성될 수 있고, 가상 사본은, 파일들의 데이터를 복제하지 않고서 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 한다. 또한, 제1 범위 내의 인-메모리 버퍼링된 업데이트의 콘텐츠는 소스 그룹으로부터 전송되고, 제1 타겟 그룹에서, 타겟 그룹의 인-메모리 버퍼링된 업데이트에 추가될 수 있다.
[0019] 특정 실시예들에 따라, 분산형 트랜잭션은 투표 페이즈 및 커밋 페이즈를 포함하는 2-페이즈 커밋 프로토콜에 따라 실행된다. 각각의 그룹 내의 대부분의 태블릿들은 분산형 트랜잭션을 완료하기 위해 투표 페이즈에서 커밋해야 한다. 반면에 투표 페이즈에서 중단하기 위한 투표에 대한 응답으로, 각각의 그룹은 트랜잭션을 취소(undo)한다.
[0020] 일반적으로, 본 발명의 실시예들에 따라, 분할 포인트의 삽입 또는 제거와 연관된 데이터의 이동은, 소스 그룹 및 타겟 그룹을 참여자들로서 포함하는 트랜잭션에 의해 실행된다. 트랜잭션은 새로운 데이터 위치를 반영하도록 적절한 메타데이터 테이블을 업데이트할 수 있고, 분할 포인트들을 업데이트할 뿐만 아니라, 이동을 반영하기 위해 소스 및 목적지 그룹들 내의 분할 포인트들의 메타데이터 테이블을 업데이트할 수 있다. 트랜잭션은 또한, 이동될 사용자 데이터의 범위들 및 적용할 임의의 분할 오프셋을 지정하는, 소스 및 타겟 그룹들에 대한 범위 데이터를 포함할 수 있다. 소스 그룹의 소스 태블릿들이 범위 데이터를 적용할 때, 그들은 현재 레이어 스택을 보존하고, 이를 타겟 그룹의 타겟 태블릿들에 서빙할 준비를 할 수 있다. 타겟 태블릿들은 동일한 영역 내의 소스 태블릿들로부터 이들 레이어들을 리트리브(retrieve)할 수 있고, 여기서 영역들은 관리 전개(administrative deployment)의 단위이다. 영역들의 세트는 또한, 데이터가 복제될 수 있는 위치들의 세트일 수 있다. 각각 새로운 데이터센터들이 가동되고 오래된 데이터센터들이 턴 오프될 때, 영역들은 실행중인 시스템에 추가되거나 이로부터 제거될 수 있다. 예컨대, 상이한 애플리케이션들의 데이터가 동일한 데이터센터의 상이한 서버들 세트들에 걸쳐 파티셔닝되어야 하면, 데이터센터에 하나 또는 그 초과의 영역들이 존재할 수 있다. 타겟 태블릿들이 소스 태블릿들의 현재 레이어 스택을 리트리브한 후, 키들로부터 값들로의 영구적이고, 정렬되고, 불변의 맵인 테이블의 레이어들은 타겟 태블릿에 의해 스냅샷될 수 있다. 그러한 이동되는 레이어들을 동기로(synchronously) 분해하는 것보다는, 타겟 태블릿들은 이동될 범위들을 지정하는 하나 또는 그 초과의 프록시 레이어들을 적용 루프에 삽입할 수 있다. 이러한 프록시 레이어들은 이동되지만 아직 분해되지 않은 범위들의 판독들이, 재시도 가능한 에러가 반환되어, 실패하게 할 수 있다. 따라서, 타겟 태블릿은, 이동되는 범위들을 백그라운드에서 분해하면서, 자신의 적용 루프를 계속할 수 있다. 소스 그룹 삭제는 이동되는 모든 범위들의 콘텐츠를 기록함으로써 달성될 수 있지만, 소스 그룹을 삭제하기 전에, 타겟 그룹에 의해, 타겟 그룹 내의 복제된 테이블로 아직 해제되지 않았고, 이는, 타겟 그룹의 일부 태블릿들이 이용 불가할지라도, 소스 그룹이 자신을 삭제하도록 허용할 수 있다. 이러한 예가 분할 포인트를 삽입 또는 제거하는 것을 참조로 설명되지만, 동일한 시스템들 및 방법들이 많은 분할 포인트들을 삽입 또는 제거하는 것에 적용된다.
[0021] 도 1은 분산형 저장 시스템에서 큰 그룹들을 분할하기 위한 예시적인 환경(100)의 도면이다. 도시된 바와 같이, 환경(100)은 복수의 데이터 그룹들(114)을 각각 관리하는 복수의 서버들(112)을 포함하는 분산형 저장 시스템(110)을 포함한다. 동작 시에, 클라이언트들(120)은 요청들(122)을 분산형 저장 시스템(110)으로 전송할 수 있다. 분산형 저장 시스템(110)은 요청들(122)을 프로세싱하고, 응답들(124)은 클라이언트들(120)로 전송할 수 있다.
[0022] 분산형 저장 시스템(110)은 로컬 또는 사설 네트워크(도시되지 않음)에 의해 연결된 복수의 서버들(112)을 포함하는 분산형 시스템일 수 있다. 일부 경우들에서, 로컬 또는 사설 네트워크는 전체적으로 단일 시설 내에 위치될 수 있는 반면에, 다른 경우들에서, 로컬 또는 사설 네트워크는 넓은 영역을 커버하고 다수의 시설들을 상호연결할 수 있다. 서버들(112)은 클라이언트들(120)에 의해 요청된 데이터를 저장, 리트리브 및 업데이트함으로써 클라이언트 요청(122)을 서비스하기 위해 서로 통신할 수 있다. 일부 경우들에서, 분산형 저장 시스템(110)은 분산형 데이터베이스, 분산형 파일 시스템, 또는 다른 타입의 분산형 저장소일 수 있다. 분산형 저장 시스템(110)은 또한 시스템 내의 서버들(112)의 동작들을 관리하고 조직하기 위한 컴포넌트들을 포함할 수 있다.
[0023] 분산형 저장 시스템(110) 내에서, 각각의 서버(112)는 분산형 저장 시스템(110)에 의해 관리되는 데이터를 저장하기 위한, 하드 드라이브와 같은 저장 디바이스 및 프로세서를 포함하는 컴퓨팅 디바이스일 수 있다. 일부 경우들에서, 데이터는 분배 정책에 따라 상이한 서버들(112)로 분배될 수 있다. 예컨대, 분배 정책은, 분산형 저장 시스템(110) 내의 특정 테이블 또는 파일이 중복성(redundancy)을 유지하기 위해 특정 수의 서버들(112) 상에 저장되어야 한다는 것을 지정할 수 있다. 분배 정책은, 또한, 예컨대, 데이터가 지리적 중복성을 유지하기 위해 다수의 상이한 위치들에 저장되어야 한다는 것을 지정할 수 있다. 일부 경우들에서, 서버(112)는, 직접 연결된 영구 저장소 대신에, 외부 저장 디바이스 또는 시스템, 이를테면, 분산형 파일 시스템을 활용할 수 있다.
[0024] 서버들(112) 각각은 하나 또는 그 초과의 데이터 그룹들(114)을 관리할 수 있다. 데이터 그룹들(114)은 분산형 저장 시스템(110)에 의해 관리되는 전체 데이터 세트의 부분들을 포함할 수 있다. 각각의 데이터 그룹(114)은 분산형 데이터베이스 내의 테이블의 부분으로부터의 데이터, 분산형 파일 시스템으로부터의 하나 또는 그 초과의 파일들, 또는 분산형 저장 시스템(110) 내의 데이터의 다른 파티션들을 포함할 수 있다. 동작 시에, 각각의 요청(122)은, 요청 타겟에 기반하여, 요청이 관련되는 특정 데이터 그룹(114)을 결정하기 위해, 분산형 저장 시스템(110)에 의해 분석될 수 있다. 이어서, 분산형 저장 시스템은 특정 데이터 그룹(114)을 관리하는 특정 서버(112)로 그 요청을 라우팅할 수 있다.
[0025] 일부 경우들에서, 클라이언트들(120)은 분산형 저장 시스템(110)의 사용자들일 수 있다. 클라이언트들(120)은 또한, 데이터를 저장하고 리트리브하기 위해 분산형 저장 시스템(110)을 사용하여 엔티티들(예컨대, 웹사이트들 또는 애플리케이션들)일 수 있다. 클라이언트들(120) 각각은 자신이 분산형 저장 시스템(110)으로 전송한 각각의 요청(122)에 관한 정보를 기록할 수 있다. 일부 경우들에서, 각각의 클라이언트(120)는 분산형 저장 시스템(110)으로 전송되는 전체 요청의 기록을 저장할 수 있다. 각각의 클라이언트는 또한 분산형 저장 시스템으로 전송되는 요청(122)의 요약을 저장할 수 있는데, 이를테면, 예컨대, 동일한 세트의 요청 파라미터들과 함께 전송되는 요청들의 카운트를 저장한다.
[0026] 도 2는 분산형 저장 시스템에서 큰 그룹들을 분할하기 위한 프로세스에서 예시적인 분산형 데이터베이스(200) 그룹의 도면이다. 예컨대, 특정 그룹에 저장된 데이터가 너무 크게 되면, 데이터를 2개 또는 그 초과의 범위들로 분할하기 위해 그룹에 새로운 분할 포인트가 추가될 수 있다. 그룹(210)은 하나 또는 그 초과의 태블릿들(212-216)을 포함할 수 있고, 그룹(210) 내의 태블릿들(212-216)은 서로의 복제본들, 즉, 태블릿 복제본들일 수 있다. 그룹(210)에 에러가 없다면, 그룹(210) 내의 태블릿들(212-216) 모두는 동일하다. 각각의 그룹(210)은 그 그룹에 대한 리더(leader)로서 현재 선택된 리더 태블릿을 포함할 수 있다. 리더 태블릿은 마스터 사본과 유사하게 그 그룹 내의 데이터에 대한 권한(authority)으로 역할을 하고, 리더가 응답을 중지하면, 다른 태블릿이 리더 태블릿으로서 선택된다.
[0027] 키 공간의 분할 포인트들은 그룹들 간의 경계들을 결정하고, 이는, 차례로, 데이터의 부하(load) 또는 바이트들의 분배를 결정한다. 운영 효율성을 위해, 하나의 샤드(shard)가 너무 많은 판독들 또는 기록들을 수행하게 하는 것은 바람직하지 않다. 따라서 분배 정책은 각각의 그룹의 기록들의 수 또는 각각의 그룹에 대한 CPU 부하 사용량 또는 데이터의 크기에 대한 임계 한계들을 포함할 수 있다. 데이터의 재밸런싱(rebalancing)을 처리하기 위해, 분할 포인트들은, 요구될 때, 주기적으로 추가 또는 제거될 수 있다.
[0028] 예컨대, 도 2에 도시된 바와 같이, 분리 포인트(225)가 소스 그룹(220)에 추가될 때, 소스 그룹(220)으로부터 분리 포인트(225)까지의 데이터를 포함하는 제1 범위가 타겟 그룹(230)에 할당될 수 있다. 일부 실시예들에서, 분할 포인트(225) 후의 데이터의 후반 부분을 포함하는 제2 범위는 소스 그룹(220)에 할당된 상태로 유지될 수 있거나, 상이한 타겟 그룹(240)에 할당될 수 있다.
[0029] 도 3은 분산형 저장 시스템에서 분산형 트랜잭션을 조정하기 위한 예시적인 프로세스(300)의 스윔 레인도이다. 도 3에 도시된 바와 같이, 조정은 투표 페이즈 및 커밋 페이즈를 포함하는 2-페이즈 커밋 프로토콜에 의해 달성된다. 2-페이즈 커밋 프로토콜은, 합의(consensus)에 의해 분산형 트랜잭션을 커밋할지 또는 중단할지에 따라 그 트랜잭션에 참여하는 모든 프로세스들을 조정하는 어토믹 커미트먼트 프로토콜(atomic commitment protocol)의 타입이다. 어떠한 고장도 발생하지 않는다면, 프로토콜의 2개의 페이즈들은 다음 설명에 따라 진행된다.
[0030] 먼저, 투표 페이즈는, 조정자 프로세스가 트랜잭션을 커밋하거나 중단하기 위한 필요한 단계들을 취하기 위해 트랜잭션의 모든 참여 프로세스들(즉, 참여자들)을 준비하고, 예컨대, 참여자의 로컬 부분 실행이 적절히 종료되었다면, 커밋하거나, 예컨대, 문제가 로컬 부분에서 검출되었다면, 중단하기 위해 투표하려고 시도하는 페이즈이다. 예컨대, 트랜잭션 내의 하나의 그룹은 조정자(320)로서 선택될 수 있고, 트랜잭션 내의 나머지 그룹(들)은 참여자들(330)일 수 있다. 2개의 상이한 그룹들 사이의 트랜잭션에서, 각각의 그룹 내의 대부분의 태블릿들은 커밋하기로 합의해야 하여서, 그룹들 둘 모두는 커밋하기로 투표한다.
[0031] 다음에, 커밋 페이즈는, 참여자들(330)의 투표에 기반하여, 모든 참여자들(330)이 트랜잭션을 커밋하기로 투표하였다면 커밋하거나, 그렇지 않다면 트랜잭션을 중단할지를 조정자(320)가 결정하는 페이즈이다. 조정자(320)는 결과를 모든 참여자들(330)에게 통지하고, 이어서 참여자들(330)은 자신들의 로컬 트랜잭션 자원들(예컨대, 데이터베이스 데이터)을 커밋하거나 중단하기 위해 요구된 액션들을 진행한다.
[0032] 투표 페이즈에서, 조정자(320)는 커밋-질의 메시지(query-to-commit message)(305)를 모든 참여자들(330)에게 전송하고, 조정자(320)는 자신이 모든 참여자들(330)로부터 응답을 수신할 때까지 대기한다. 참여자들(330)은, 커밋하기 위해 준비하거나, 고장이 발생하면 중단하여, 자신들이 커밋하도록 요청될 포인트까지 트랜잭션을 실행한다(315). 각각의 참여자는, 참여자의 액션들이 성공하면, 동의 메시지, 즉, 커밋하기 위한 투표, 또는 참여자가 커밋을 불가능하게 할 고장을 경험하면, 중단 메시지, 즉, 중단하기 위한 투표로 응답한다(325).
[0033] 커밋 페이즈에서, 조정자(320)는, 참여자들(330) 각각으로부터의 투표들에 대한 응답으로, 커밋할지 또는 중단할지를 결정한다(335). 조정자(320)가 투표 페이즈 동안 모든 참여자들(330)로부터 동의 메시지를 수신하면, 조정자(320)는 커밋 메시지(345)를 모든 참여자들(330)로 전송한다. 각각의 참여자(330)는 동작을 완료하고(355), 트랜잭션 동안 보유된 자원들 및 로크들(locks) 모두를 해제하고, 확인응답(365)을 조정자(320)에 전송한다. 조정자(320)는, 모든 확인응답들이 수신되었을 때 트랜잭션을 완료하고, 프로세스가 종료된다(375). 임의의 참여자(330)가 투표 페이즈 동안 중단하기 위해 투표하거나(325), 조정자(320)의 타임아웃이 만료되면, 조정자(320)는 롤백(rollback) 메시지(345)를 모든 참여자들(330)에 전송한다. 각각의 참여자(330)는 동작을 취소하고(355), 트랜잭션 동안 보유된 자원들 및 로크들 모두를 해제하고, 확인응답(365)을 조정자(320)에 전송한다. 조정자(320)는, 모든 확인응답들이 수신되었을 때 트랜잭션을 취소하고, 프로세스가 종료된다(375).
[0034] 도 4는 분산형 저장 시스템에서 큰 그룹들을 분할하기 위한 예시적인 프로세스(400)의 흐름도이다. 405에서, 분할 포인트를 소스 그룹에 삽입하라는 요청이 식별된다. 소스 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함할 수 있고, 각각의 태블릿은 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터의 적어도 일부를 포함한다. 분할 포인트는 소스 그룹 내의 데이터를 제1 범위 및 제1 범위와 상이한 제2 범위로 분할할 수 있다. 분할 포인트를 소스 그룹에 삽입하라는 요청에 대한 응답으로, 소스 그룹의 제1 범위 내의 파일네임들의 리스트는 410에서 제1 타겟 그룹으로 전송될 수 있다. 제1 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함할 수 있다. 이러한 예가 분리 포인트를 삽입 또는 제거하는 것을 참조로 설명되지만, 동일한 시스템들 및 방법들은 많은 분리 포인트들을 동시에 또는 실질적으로 동시에 삽입 또는 제거하도록 적용된다.
[0035] 415에서, 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본이 제1 타겟 그룹에서 생성될 수 있다. 가상 사본 또는 참조 파일이, 파일들의 근본적인 데이터의 중복을 요구하지 않고서, 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 하기 때문에, 가상 사본 또는 스냅샷은 심볼 링크와 유사하다.
[0036] 420에서, 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠는 소스 그룹으로부터 제1 타겟 그룹으로 전송될 수 있다. 또한, 소스 그룹으로부터의 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠는 제1 타겟 그룹의 인-메모리 버퍼링된 업데이트들에 추가될 수 있다.
[0037] 425에서, 제1 범위 내의 파일들이 제1 타겟 그룹에 추가될 수 있고, 소스 그룹은 제1 타겟 그룹이 소스 그룹에서의 제1 범위 내의 파일들에 더 이상 의존하지 않는다고 통보받을 수 있다. 이에 대한 응답으로, 제1 범위 내의 파일들이 소스 그룹에서 삭제될 수 있다. 예컨대, 소스 그룹이 자신의 다음 주기적인 압축에서 파일들을 재기록할 때, 소스 그룹은 제1 범위 내의 파일들을 삭제할 수 있다.
[0038] 특정 실시예들에서, 프로세스는, 분할 포인트를 소스 그룹에 삽입하라는 요청에 대한 응답으로, 소스 그룹의 제2 범위 내의 파일네임들의 리스트를 제2 타겟 그룹에 전송하는 것을 더 포함할 수 있고, 제2 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함한다. 또한, 제2 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본이 제2 타겟 그룹에서 생성될 수 있고, 가상 사본은, 파일들의 데이터를 복제하지 않고서, 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 한다. 특정 실시예들에 따라, 분산형 트랜잭션의 프로세스는 투표 페이즈 및 커밋 페이즈를 포함하는 2-페이즈 커밋 프로토콜에 따라 실행된다. 각각의 그룹 내의 대부분의 태블릿들은 분산 트랜잭션을 완료하기 위해 투표 페이즈에서 커밋해야 한다. 반면에, 투표 페이즈에서 중단하기 위한 투표에 대한 응답으로, 각각의 그룹은 트랜잭션을 취소한다.
[0039] 도 5는 본 문헌에 설명되는 시스템들 및 방법들을, 클라이언트 또는 서버 또는 복수의 서버들 중 어느 하나로서, 구현하기 위해 사용될 수 있는 컴퓨팅 디바이스들(500, 550)의 블록도이다. 컴퓨팅 디바이스(500)는 다양한 형태들의 디지털 컴퓨터들, 이를테면 랩톱들, 데스크톱들, 워크스테이션들, 개인 정보 단말들, 서버들, 블레이드 서버들, 메인프레임들, 및 다른 적합한 컴퓨터들을 나타내는 것으로 의도된다. 컴퓨팅 디바이스(550)는 다양한 형태들의 모바일 디바이스들, 이를테면 개인 정보 단말들, 셀룰러 텔레폰들, 스마트폰들, 및 다른 유사한 컴퓨팅 디바이스들을 나타내는 것으로 의도된다. 부가적으로, 컴퓨팅 디바이스(500 또는 550)는 USB(Universal Serial Bus) 플래시 드라이브들을 포함할 수 있다. USB 플래시 드라이브들은 운영 시스템들 및 다른 애플리케이션들을 저장할 수 있다. USB 플래시 드라이브들은 입력/출력 컴포넌트들, 이를테면, 다른 컴퓨팅 디바이스의 USB 포트에 삽입될 수 있는 USB 커넥터 또는 무선 송신기를 포함할 수 있다. 본원에서 도시된 컴포넌트들, 그들의 연결들 및 관계들, 및 그들의 기능들은 단지 예시적인 것으로 의도되고, 본 문헌에서 설명되고 그리고/또는 청구되는 발명의 구현들을 제한하는 것으로 의도되지 않는다.
[0040] 컴퓨팅 디바이스(500)는 프로세서(502), 메모리(504), 저장 디바이스(506), 메모리(504) 및 고속 확장 포트들(510)에 연결되는 고속 인터페이스(508), 및 저속 버스(514) 및 저장 디바이스(506)에 연결되는 저속 인터페이스(512)를 포함한다. 컴포넌트들(502, 504, 506, 508, 510, 및 512) 각각은 다양한 버스들을 사용하여 상호연결되고, 공통 마더보드 상에 장착되거나 또는 적합할 때 다른 방식들로 장착될 수 있다. 프로세서(502)는 고속 인터페이스(508)에 결합된 디스플레이(516)와 같은 외부 입력/출력 디바이스 상에 GUI에 대한 그래픽 정보를 디스플레이하기 위해서 메모리(504) 내에 또는 저장 디바이스(506) 상에 저장되는 명령들을 포함하여, 컴퓨팅 디바이스(500) 내에서의 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에 있어서는, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 다수의 타입들의 메모리와 함께, 적절할 때, 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(500)이 연결될 수 있는데, 각각의 디바이스는 (예컨대, 서버 뱅크, 블레이드 서버들의 그룹, 또는 다중-프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[0041] 메모리(504)는 컴퓨팅 디바이스(500) 내에서 정보를 저장한다. 일 구현에 있어서, 메모리(504)는 휘발성 메모리 유닛 또는 유닛들이다. 다른 구현에 있어서, 메모리(504)는 비-휘발성 메모리 유닛 또는 유닛들이다. 메모리(504)는 또한 다른 형태의 컴퓨터-판독가능 매체, 이를테면 자기 또는 광학 디스크일 수 있다.
[0042] 저장 디바이스(506)는 컴퓨팅 디바이스(500)를 위한 대용량 저장소를 제공할 수 있다. 일 구현에 있어서, 저장 디바이스(506)는 저장 영역 네트워크 또는 다른 구성들의 디바이스들을 포함하여, 컴퓨터-판독가능 매체, 이를테면, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 디바이스들의 어레이일 수 있거나 이를 포함할 수 있다. 컴퓨터 프로그램 제품은 정보 캐리어로 유형적으로(tangibly) 구현될 수 있다. 컴퓨터 프로그램 제품은 또한, 실행될 경우에 위에서 설명된 것들과 같은 하나 또는 그 초과의 방법들을 수행하는 명령들을 포함할 수 있다. 정보 캐리어는 컴퓨터- 또는 기계-판독가능 매체, 이를테면 메모리(504), 저장 디바이스(506), 또는 프로세서(502) 상의 메모리이다.
[0043] 고속 제어기(508)는 컴퓨팅 디바이스(500)에 대한 대역폭-집약적 동작들을 관리하는데 반해, 저속 제어기(512)는 더 낮은 대역폭-집약적 동작들을 관리한다. 기능들의 그러한 할당은 단지 예시적인 것이다. 일 구현에 있어서, 고속 제어기(508)는 메모리(504), 디스플레이(516)(예컨대, 그래픽 프로세서 또는 가속기를 통해), 및 다양한 확장 카드들(미도시)을 수용할 수 있는 고속 확장 포트들(510)에 결합된다. 구현에 있어서, 저속 제어기(512)는 저장 디바이스(506) 및 저속 확장 포트(514)에 결합된다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트는 예컨대 네트워크 어댑터를 통해서 하나 또는 그 초과의 입력/출력 디바이스들, 이를테면 키보드, 포인팅 디바이스, 스캐너, 또는 스위치 또는 라우터와 같은 네트워킹 디바이스에 결합될 수 있다.
[0044] 컴퓨팅 디바이스(500)는 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 그것은 표준 서버(520)로서 또는 그러한 서버들의 그룹으로 여러번 구현될 수 있다. 그것은 또한 랙(rack) 서버 시스템(524)의 부분으로서 구현될 수 있다. 또한, 그것은 랩톱 컴퓨터(522)와 같은 개인용 컴퓨터로 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(500)로부터의 컴포넌트들은 디바이스(550)와 같은 모바일 디바이스의 다른 컴포넌트들(미도시)과 결합될 수 있다. 그러한 디바이스들 각각은 컴퓨팅 디바이스(500, 550) 중 하나 또는 그 초과를 포함할 수 있고, 전체적인 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들(500, 550)로 구성될 수 있다.
[0045] 컴퓨팅 디바이스(550)는 다른 컴포넌트들 중에서도, 프로세서(552), 메모리(564), 디스플레이(554)와 같은 입력/출력 디바이스, 통신 인터페이스(566), 및 트랜시버(568)를 포함한다. 디바이스(550)는 또한 추가적인 저장소를 제공하기 위해서 마이크로드라이브 또는 다른 디바이스와 같은 저장 디바이스가 제공될 수 있다. 컴포넌트들(550, 552, 564, 554, 566, 및 568) 각각은 다양한 버스들을 사용하여 상호연결되고, 컴포넌트들 중 몇몇은 공통 마더보드 상에 장착되거나 또는 적합할 때 다른 방식들로 장착될 수 있다.
[0046] 프로세서(552)는 메모리(564)에 저장된 명령들을 포함하여, 컴퓨팅 디바이스(550) 내의 명령들을 실행할 수 있다. 프로세서는 별개의 그리고 다수의 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 부가적으로, 프로세서는 다수의 아키텍처들 중 임의의 것을 사용하여 구현될 수 있다. 예컨대, 프로세서(510)는 CISC(Complex Instruction Set Computers) 프로세서, RISC(Reduced Instruction Set Computer) 프로세서, 또는 MISC(Minimal Instruction Set Computer) 프로세서일 수 있다. 프로세서는, 예컨대, 디바이스(550)의 다른 컴포넌트들의 조정, 이를테면 사용자 인터페이스들의 제어, 디바이스(550)에 의한 애플리케이션들 실행, 및 디바이스(550)에 의한 무선 통신을 제공할 수 있다.
[0047] 프로세서(552)는 디스플레이(554)에 결합된 디스플레이 인터페이스(556) 및 제어 인터페이스(558)를 통해 사용자와 통신할 수 있다. 디스플레이(554)는, 예컨대, TFT LCD(Thin-Film-Transistor Liquid Crystal Display) 디스플레이 또는 OLED(Organic Light Emitting Diode) 디스플레이, 또는 다른 적합한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(556)는 그래픽 및 다른 정보를 사용자에게 제시하기 위해서 디스플레이(554)를 구동하기 위한 적합한 회로를 포함할 수 있다. 제어 인터페이스(558)는 사용자로부터 커맨드들을 수신하고, 프로세서(552)에 제공하기 위해서 그 커맨드들을 변환할 수 있다. 또한, 다른 디바이스들과의 디바이스(550)의 근거리 통신을 가능하게 하기 위해서 외부 인터페이스(562)가 프로세서(552)와의 통신에 제공될 수 있다. 외부 인터페이스(562)는, 예컨대, 일부 구현들에 있어서의 유선 통신 또는 다른 구현들에 있어서의 무선 통신을 제공할 수 있고, 다수의 인터페이스들이 또한 사용될 수 있다.
[0048] 메모리(564)는 컴퓨팅 디바이스(550) 내에 정보를 저장한다. 메모리(564)는 컴퓨터-판독가능 매체 또는 매체들, 휘발성 메모리 유닛 또는 유닛들, 또는 비-휘발성 메모리 유닛 또는 유닛들 중 하나 또는 그 초과로서 구현될 수 있다. 확장 메모리(574)가 또한 제공되고 확장 인터페이스(572)를 통해 디바이스(550)에 연결될 수 있는데, 그 확장 인터페이스는 예컨대 SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있다. 그러한 확장 메모리(574)는 디바이스(550)를 위한 가외 저장 공간을 제공할 수 있거나, 디바이스(550)에 대한 애플리케이션들 또는 다른 정보를 또한 저장할 수 있다. 특히, 확장 메모리(574)는 위에서 설명된 프로세스들을 실행하거나 보충하기 위한 명령들을 포함할 수 있고, 보안 정보 역시 포함할 수 있다. 따라서, 예컨대, 확장 메모리(574)는 디바이스(550)를 위한 보안 모듈로서 제공될 수 있고, 디바이스(550)의 보안 사용을 허용하는 명령들로 프로그래밍될 수 있다. 또한, 보안 애플리케이션들이 추가적인 정보와 함께 SIMM 카드들을 통해 제공될 수 있는데, 이를테면 식별 정보를 해킹 가능하지 않은 방식으로 SIMM 카드 상에 놓을 수 있다.
[0049] 메모리는, 예컨대, 아래에서 논의된 바와 같이 플래시 메모리 및/또는 NVRAM 메모리를 포함할 수 있다. 일 구현에 있어서, 컴퓨터 프로그램 제품이 정보 캐리어로 유형적으로 구현된다. 컴퓨터 프로그램 제품은, 실행될 경우에 위에서 설명된 것들과 같은 하나 또는 그 초과의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 예컨대 트랜시버(568) 또는 외부 인터페이스(562)를 통해 수용될 수 있는 컴퓨터- 또는 기계-판독가능 매체, 이를테면 메모리(564), 확장 메모리(574), 또는 프로세서(552) 상의 메모리이다.
[0050] 디바이스(550)는, 필요한 경우에 디지털 신호 프로세싱 회로를 포함할 수 있는 통신 인터페이스(566)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(566)는 다양한 모드들 또는 프로토콜들, 이를테면 다른 것들 중에서도 GSM 음성 호들, SMS, EMS, 또는 MMS 메시징, CDMA, TDMA, PDC, WCDMA, CDMA2000, 또는 GPRS 하에서의 통신들을 제공할 수 있다. 그러한 통신은 예컨대 라디오-주파수 트랜시버(568)를 통해 발생할 수 있다. 게다가, 예컨대 블루투스, WiFi 또는 다른 그러한 트랜시버(미도시)를 사용하는 단거리 통신이 발생할 수 있다. 게다가, GPS(Global Positioning System) 수신기 모듈(570)은, 적합할 때 디바이스(550) 상에서 실행하는 애플리케이션들에 의해 사용될 수 있는 추가적인 내비게이션- 및 위치-관련 무선 데이터를 그 디바이스(550)에 제공할 수 있다.
[0051] 디바이스(550)는 또한 오디오 코덱(560)을 사용하여 청각적으로 통신할 수 있고, 그 오디오 코덱은 사용자로부터 발화된 정보를 수신하고 그것을 유용한 디지털 정보로 변환할 수 있다. 오디오 코덱(560)은 마찬가지로 사용자에 대한 청각 사운드를 이를테면 예컨대 디바이스(550)의 핸드셋 내의 스피커를 통해 생성할 수 있다. 그러한 사운드는 음성 텔레폰 호들로부터의 사운드를 포함할 수 있고, 기록된 사운드(예컨대, 음성 메시지들, 음악 파일들 등)를 포함할 수 있으며, 디바이스(550) 상에서 동작하는 애플리케이션들에 의해 생성되는 사운드를 또한 포함할 수 있다.
[0052] 컴퓨팅 디바이스(550)는 도면에 도시된 바와 같이 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 그것은 셀룰러 텔레폰(580)으로서 구현될 수 있다. 그것은 또한 스마트폰(582), 개인 정보 단말, 또는 다른 유사한 모바일 디바이스의 일부로서 구현될 수 있다.
[0053] 본원에 설명된 시스템들 및 기술들의 다양한 구현들은, 디지털 전자 회로, 집적 회로, 특수하게 설계된 ASIC(주문형 집적 회로)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 결합들로 실현될 수 있다. 이들 다양한 구현들은, 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 그들로 데이터 및 명령들을 송신하도록 커플링된 특수 목적 또는 범용 목적일 수 있는 적어도 하나의 프로그래밍가능 프로세서를 포함하는 프로그래밍가능 시스템 상에서 실행가능하고 그리고/또는 해석 가능한 하나 또는 그 초과의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0054] 이들 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 또한 알려짐)은, 프로그래밍가능 프로세서에 대한 머신 명령들을 포함하며, 고레벨의 절차적인 및/또는 오브젝트-지향적인 프로그래밍 언어 및/또는 어셈블리/머신 언어로 구현될 수 있다. 본원에서 사용된 바와 같이, "머신-판독가능 매체" 및 "컴퓨터-판독가능 매체"라는 용어들은, 머신-판독가능 신호로서 머신 명령들을 수신하는 머신-판독가능 매체를 포함하여, 머신 명령들 및/또는 데이터를 프로그래밍가능 프로세서에 제공하기 위해 사용되는 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리, 프로그래밍가능 로직 디바이스(PLD)들)을 지칭한다. "머신-판독 가능 신호"라는 용어는, 머신 명령들 및/또는 데이터를 프로그래밍가능 프로세서에 제공하기 위해 사용되는 임의의 신호를 지칭한다.
[0055] 사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 시스템들 및 기술들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예컨대, CRT(음극선 관) 또는 LCD(액정 디스플레이) 모니터), 및 사용자가 입력을 컴퓨터에 제공할 수 있는 키보드 및 포인팅 디바이스(예컨대, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들은 또한, 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며, 예컨대, 사용자에게 제공된 피드백은 임의의 형태의 감지 피드백(예컨대, 시각적인 피드백, 가청적인 피드백, 또는 촉각적인 피드백)일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
[0056] 본원에 설명된 시스템들 및 기술들은, 백 엔드(back end) 컴포넌트를 (예컨대, 데이터 서버로서) 포함하거나, 미들웨어 컴포넌트(예컨대, 애플리케이션 서버)를 포함하거나, 프론트 엔드 컴포넌트(예컨대, 사용자가 본원에 설명된 시스템들 및 기술들의 구현과 상호작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나, 또는 그러한 백 엔드, 미들웨어, 또는 프론트 엔드 컴포넌트들의 임의의 결합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은, 임의의 형태 또는 매체의 디지털 데이터 통신(예컨대, 통신 네트워크)에 의해 상호접속될 수 있다. 통신 네트워크들의 예들은 로컬 영역 네트워크("LAN"), 광역 네트워크("WAN"), 피어-투-피어 네트워크들(애드-혹 또는 정적 멤버들을 가짐), 그리드 컴퓨팅 인프라구조들 및 인터넷을 포함한다.
[0057] 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격에 있고, 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는, 개개의 컴퓨터들 상에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들로 인해 발생한다.
[0058] 본 문헌에서, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 방법들 및 시스템들이 설명된다. 본 문헌에 설명된 하나의 예는 하나 또는 그 초과의 태블릿 복제본들을 포함하는 소스 그룹에 분할 포인트를 삽입하라는 요청을 식별하는 것 ― 각각의 태블릿은 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터의 적어도 일부를 포함하고, 분할 포인트는 소스 그룹 내의 데이터를 제1 범위 및 제1 범위와 상이한 제2 범위로 분할함 ― ; 그 요청에 대한 응답으로: 소스 그룹의 제1 범위 내의 파일네임들의 리스트를 하나 또는 그 초과의 태블릿 복제본들을 포함하는 제1 타겟 그룹으로 전송하는 것; 및 제1 타겟 그룹에서, 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본을 생성하는 것을 포함하고, 가상 사본은, 파일들의 데이터를 복제하지 않고서, 파일들의 데이터를 각각 새로운 네임을 사용하여 이용 가능하게 한다.
[0059] 몇몇의 구현들이 위에서 상세히 설명되었지만, 다른 변경들이 가능하다. 또한, 도면들에 도시된 로직 흐름들은, 바람직한 결과들을 달성하기 위해 도시된 특정 순서, 또는 순차적인 순서를 요구하지 않는다. 다른 단계들이 설명된 흐름들에 제공될 수 있거나, 단계들이 설명된 흐름들로부터 제거될 수 있고, 다른 컴포넌트들이 설명된 시스템들에 부가되거나 이들로부터 제거될 수 있다. 따라서, 다른 구현들이 다음의 청구 범위 내에 있다.

Claims (20)

  1. 하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션(distributed transaction)을 위한 컴퓨터-구현 방법으로서,
    분할 포인트(split point)를 소스 그룹에 삽입하라는 요청을 식별하는 단계 ― 상기 소스 그룹은 하나 또는 그 초과의 태블릿 복제본들(tablet replicas)을 포함하고, 각각의 태블릿은 상기 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터의 적어도 일부를 포함하는 레이어들 또는 불변 파일들(immutable files)의 리스트를 포함하고, 상기 분할 포인트는 상기 소스 그룹 내의 데이터를 제1 범위 및 상기 제1 범위와 상이한 제2 범위로 분할함 ― ;
    상기 분할 포인트를 상기 소스 그룹에 삽입하라는 요청에 대한 응답으로:
    상기 소스 그룹의 제1 범위 내의 파일네임들의 리스트를 복수의 타겟 그룹들 중 제1 타겟 그룹으로 전송하는 단계 ― 상기 제1 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함함 ― ;
    상기 제1 타겟 그룹에서, 상기 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본(virtual copy)을 생성하는 단계 ― 상기 가상 사본은, 상기 파일들의 데이터를 복제하지 않고서, 상기 파일들의 데이터를 각각 새로운 네임을 사용하여 이용 가능하게 함 ― ;
    상기 소스 그룹 및 상기 타겟 그룹들을 포함하는 분산형 트랜잭션을 적용하는 단계 ― 상기 트랜잭션은 새로운 데이터 위치들을 반영하기 위한 메타데이터 테이블들, 분할 포인트들 및 이동을 반영하기 위한 상기 소스 그룹 및 타겟 그룹들 내의 메타데이터 분할 포인트들을 업데이트하고, 그리고 상기 트랜잭션은 상기 소스 그룹 및 타겟 그룹에 대한 범위 데이터를 더 포함하고, 상기 범위 데이터는 이동될 사용자 데이터의 범위들을 지정함 ― ;
    상기 소스 그룹의 소스 태블릿에 의해 상기 범위 데이터를 적용하고, 현재 레이어 스택(layer stack)을 보존하고, 상기 제1 타겟 그룹의 타겟 태블릿에 서빙되도록 상기 현재 레이어 스택을 준비하는 단계;
    상기 소스 태블릿의 상기 현재 레이어 스택을 리트리브(retrieve)하고, 이동될 범위들을 지정하는 하나 또는 그 초과의 프록시 레이어들을 적용 루프(apply loop)에 삽입하는 단계; 및
    상기 소스 그룹을 삭제하기 전에, 이동된 모든 범위들의 콘텐츠를 상기 제1 타겟 그룹 내의 복제된 테이블에 기록하는 단계를 포함하는,
    하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 컴퓨터-구현 방법.
  2. 제1 항에 있어서,
    상기 제1 범위 내의 파일들을 상기 제1 타겟 그룹에 추가하는 단계;
    상기 제1 타겟 그룹이 상기 소스 그룹에서의 상기 제1 범위 내의 파일들에 더 이상 의존하지 않는다고 상기 소스 그룹에 통보하는 단계; 및
    상기 소스 그룹으로부터 상기 제1 범위 내의 파일들을 삭제하는 단계를 포함하는,
    하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 컴퓨터-구현 방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 분할 포인트를 상기 소스 그룹에 삽입하라는 요청에 대한 응답으로:
    상기 소스 그룹의 제2 범위 내의 파일네임들의 리스트를 제2 타겟 그룹으로 전송하는 단계 ― 상기 제2 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함함 ― ; 및
    상기 제2 타겟 그룹에서, 상기 제2 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본을 생성하는 단계를 포함하고,
    상기 가상 사본은, 상기 파일들의 데이터를 복제하지 않고서, 상기 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 하는,
    하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 컴퓨터-구현 방법.
  4. 제1 항 또는 제2 항에 있어서,
    상기 소스 그룹으로부터, 상기 제1 범위 내의 인-메모리 버퍼링된 업데이트들(in-memory buffered updates)의 콘텐츠를 전송하는 단계; 및
    상기 제1 타겟 그룹에서, 상기 소스 그룹으로부터의 상기 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠를 상기 제1 타겟 그룹의 인-메모리 버퍼링된 업데이트들에 추가하는 단계를 포함하는,
    하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 컴퓨터-구현 방법.
  5. 제1 항 또는 제2 항에 있어서,
    상기 분산형 트랜잭션은 투표 페이즈(voting phase) 및 커밋 페이즈(commit phase)를 포함하는 2-페이즈 커밋 프로토콜에 따라 실행되는,
    하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 컴퓨터-구현 방법.
  6. 제5 항에 있어서,
    각각의 그룹 내의 다수의 태블릿들은 상기 분산형 트랜잭션을 완료하기 위해 상기 투표 페이즈에서 커밋해야 하는,
    하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 컴퓨터-구현 방법.
  7. 제5 항에 있어서,
    상기 투표 페이즈에서 중단하기 위한 투표에 대한 응답으로, 각각의 그룹은 상기 트랜잭션을 취소하는,
    하나 또는 그 초과의 프로세서들에 의해 실행되는, 분산형 데이터베이스 시스템에서의 분산형 트랜잭션을 위한 컴퓨터-구현 방법.
  8. 분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템으로서,
    데이터를 저장하기 위한 메모리; 및
    상기 메모리에 액세스하고 동작들을 수행하도록 동작 가능한 하나 또는 그 초과의 프로세서들을 포함하고,
    상기 동작들은:
    분할 포인트를 소스 그룹에 삽입하라는 요청을 식별하는 동작 ― 상기 소스 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함하고, 각각의 태블릿은 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터의 적어도 일부를 포함하는 레이어들 또는 불변 파일들의 리스트를 포함하고, 상기 분할 포인트는 상기 소스 그룹 내의 데이터를 제1 범위 및 상기 제1 범위와 상이한 제2 범위로 분할함 ― ;
    상기 분할 포인트를 상기 소스 그룹에 삽입하라는 요청에 대한 응답으로:
    상기 소스 그룹의 제1 범위 내의 파일네임들의 리스트를 복수의 타겟 그룹들 중 제1 타겟 그룹으로 전송하는 동작 ― 상기 제1 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함함 ― ; 및
    상기 제1 타겟 그룹에서, 상기 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본을 생성하는 동작 ― 상기 가상 사본은, 상기 파일들의 데이터를 복제하지 않고서, 상기 파일들의 데이터를 각각 새로운 네임을 사용하여 이용 가능하게 함 ― ;
    상기 소스 그룹 및 상기 타겟 그룹들을 포함하는 분산형 트랜잭션을 적용하는 동작 ― 상기 트랜잭션은 새로운 데이터 위치들을 반영하기 위한 메타데이터 테이블들, 분할 포인트들 및 이동을 반영하기 위한 상기 소스 그룹 및 타겟 그룹들 내의 메타데이터 분할 포인트들을 업데이트하고, 그리고 상기 트랜잭션은 상기 소스 그룹 및 타겟 그룹들에 대한 범위 데이터를 더 포함하고, 상기 범위 데이터는 이동될 사용자 데이터의 범위들을 지정함 ― ;
    상기 소스 그룹의 소스 태블릿에 의해 상기 범위 데이터를 적용하고, 현재 레이어 스택을 보존하고, 상기 제1 타겟 그룹의 타겟 태블릿에 서빙되도록 상기 현재 레이어 스택을 준비하는 동작;
    상기 소스 태블릿의 상기 현재 레이어 스택을 리트리브하고, 이동될 범위들을 지정하는 하나 또는 그 초과의 프록시 레이어들을 적용 루프에 삽입하는 동작; 및
    상기 소스 그룹을 삭제하기 전에, 이동된 모든 범위들의 콘텐츠를 상기 제1 타겟 그룹 내의 복제된 테이블에 기록하는 동작을 포함하는,
    분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템.
  9. 제8 항에 있어서,
    상기 동작들은:
    상기 제1 범위 내의 파일들을 상기 제1 타겟 그룹에 추가하는 동작;
    상기 제1 타겟 그룹이 상기 소스 그룹에서의 상기 제1 범위 내의 파일들에 더 이상 의존하지 않는다고 상기 소스 그룹에 통보하는 동작; 및
    상기 소스 그룹으로부터 상기 제1 범위 내의 파일들을 삭제하는 동작을 포함하는,
    분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템.
  10. 제8 항 또는 제9 항에 있어서,
    상기 동작들은:
    상기 분할 포인트를 상기 소스 그룹에 삽입하라는 요청에 대한 응답으로:
    상기 소스 그룹의 제2 범위 내의 파일네임들의 리스트를 제2 타겟 그룹으로 전송하는 동작 ― 상기 제2 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함함 ― ; 및
    상기 제2 타겟 그룹에서, 상기 제2 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본을 생성하는 동작을 포함하고,
    상기 가상 사본은, 상기 파일들의 데이터를 복제하지 않고서, 상기 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 하는,
    분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템.
  11. 제8 항 또는 제9 항에 있어서,
    상기 동작들은:
    상기 소스 그룹으로부터, 상기 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠를 전송하는 동작; 및
    상기 제1 타겟 그룹에서, 상기 소스 그룹으로부터의 상기 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠를 상기 제1 타겟 그룹의 인-메모리 버퍼링된 업데이트들에 추가하는 동작을 포함하는,
    분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템.
  12. 제8 항 또는 제9 항에 있어서,
    상기 분산형 트랜잭션은 투표 페이즈 및 커밋 페이즈를 포함하는 2-페이즈 커밋 프로토콜에 따라 실행되는,
    분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템.
  13. 제12 항에 있어서,
    각각의 그룹 내의 다수의 태블릿들은 상기 분산형 트랜잭션을 완료하기 위해 커밋해야 하는,
    분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템.
  14. 제12 항에 있어서,
    상기 투표 페이즈에서 중단하기 위한 투표에 대한 응답으로, 각각의 그룹은 상기 트랜잭션을 취소하는,
    분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 시스템.
  15. 명령들을 저장하는 비일시적인, 컴퓨터-판독 가능 매체로서,
    상기 명령들은, 실행될 때, 적어도 하나의 프로세서로 하여금 분산형 데이터베이스에서 분산형 트랜잭션을 실행하기 위한 동작들을 수행하게 하도록 동작 가능하고,
    상기 동작들은:
    분할 포인트를 소스 그룹에 삽입하라는 요청을 식별하는 동작 ― 상기 소스 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함하고, 각각의 태블릿은 분산형 데이터베이스 시스템 내의 테이블로부터의 데이터의 적어도 일부를 포함하는 레이어들 또는 불변 파일들의 리스트를 포함하고, 상기 분할 포인트는 상기 소스 그룹 내의 데이터를 제1 범위 및 상기 제1 범위와 상이한 제2 범위로 분할함 ― ;
    상기 분할 포인트를 상기 소스 그룹에 삽입하라는 요청에 대한 응답으로:
    상기 소스 그룹의 제1 범위 내의 파일네임들의 리스트를 복수의 타겟 그룹들 중 제1 타겟 그룹으로 전송하는 동작 ― 상기 제1 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함함 ― ; 및
    상기 제1 타겟 그룹에서, 상기 제1 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본을 생성하는 동작 ― 상기 가상 사본은, 상기 파일들의 데이터를 복제하지 않고서, 상기 파일들의 데이터를 각각 새로운 네임을 사용하여 이용 가능하게 함 ― ;
    상기 소스 그룹 및 상기 타겟 그룹들을 포함하는 분산형 트랜잭션을 적용하는 동작 ― 상기 트랜잭션은 새로운 데이터 위치들을 반영하기 위한 메타데이터 테이블들, 분할 포인트들 및 이동을 반영하기 위한 상기 소스 그룹 및 타겟 그룹들 내의 메타데이터 분할 포인트들을 업데이트하고, 그리고 상기 트랜잭션은 상기 소스 그룹 및 타겟 그룹들에 대한 범위 데이터를 더 포함하고, 상기 범위 데이터는 이동될 사용자 데이터의 범위들을 지정함 ― ;
    상기 소스 그룹의 소스 태블릿에 의해 상기 범위 데이터를 적용하고, 현재 레이어 스택을 보존하고, 상기 제1 타겟 그룹의 타겟 태블릿에 서빙되도록 상기 현재 레이어 스택을 준비하는 동작;
    상기 소스 태블릿의 상기 현재 레이어 스택을 리트리브하고, 이동될 범위들을 지정하는 하나 또는 그 초과의 프록시 레이어들을 적용 루프에 삽입하는 동작; 및
    상기 소스 그룹을 삭제하기 전에, 이동된 모든 범위들의 콘텐츠를 상기 제1 타겟 그룹 내의 복제된 테이블에 기록하는 동작을 포함하는,
    명령들을 저장하는 비일시적인, 컴퓨터-판독 가능 매체.
  16. 제15 항에 있어서,
    상기 동작들은:
    상기 제1 범위 내의 파일들을 상기 제1 타겟 그룹에 추가하는 동작;
    상기 제1 타겟 그룹이 상기 소스 그룹에서의 상기 제1 범위 내의 파일들에 더 이상 의존하지 않는다고 상기 소스 그룹에 통보하는 동작; 및
    상기 소스 그룹으로부터 상기 제1 범위 내의 파일들을 삭제하는 동작을 포함하는,
    명령들을 저장하는 비일시적인, 컴퓨터-판독 가능 매체.
  17. 제15 항 또는 제16 항에 있어서,
    상기 동작들은:
    상기 분할 포인트를 상기 소스 그룹에 삽입하라는 요청에 대한 응답으로:
    상기 소스 그룹의 제2 범위 내의 파일네임들의 리스트를 제2 타겟 그룹으로 전송하는 동작 ― 상기 제2 타겟 그룹은 하나 또는 그 초과의 태블릿 복제본들을 포함함 ― ; 및
    상기 제2 타겟 그룹에서, 상기 제2 범위 내의 파일네임들의 리스트에 의해 표현되는 파일들의 가상 사본을 생성하는 동작을 포함하고,
    상기 가상 사본은, 상기 파일들의 데이터를 복제하지 않고서, 상기 파일들의 콘텐츠를 각각 새로운 네임 하에서 이용 가능하게 하는,
    명령들을 저장하는 비일시적인, 컴퓨터-판독 가능 매체.
  18. 제15 항 또는 제16 항에 있어서,
    상기 동작들은:
    상기 소스 그룹으로부터, 상기 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠를 전송하는 동작; 및
    상기 제1 타겟 그룹에서, 상기 소스 그룹으로부터의 상기 제1 범위 내의 인-메모리 버퍼링된 업데이트들의 콘텐츠를 상기 제1 타겟 그룹의 인-메모리 버퍼링된 업데이트들에 추가하는 동작을 포함하는,
    명령들을 저장하는 비일시적인, 컴퓨터-판독 가능 매체.
  19. 제15 항 또는 제16 항에 있어서,
    상기 분산형 트랜잭션은 투표 페이즈 및 커밋 페이즈를 포함하는 2-페이즈 커밋 프로토콜에 따라 실행되는,
    명령들을 저장하는 비일시적인, 컴퓨터-판독 가능 매체.
  20. 제19 항에 있어서,
    각각의 그룹 내의 다수의 태블릿들은 상기 분산형 트랜잭션을 완료하기 위해 커밋해야 하고,
    상기 투표 페이즈가 중단하기 위한 투표를 포함하면, 각각의 그룹은 상기 트랜잭션을 취소하는,
    명령들을 저장하는 비일시적인, 컴퓨터-판독 가능 매체.
KR1020187030592A 2016-05-02 2016-12-14 분산형 시스템에서의 범위들의 분할 및 이동 KR102025934B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/144,353 2016-05-02
US15/144,353 US10108632B2 (en) 2016-05-02 2016-05-02 Splitting and moving ranges in a distributed system
PCT/US2016/066506 WO2017192174A1 (en) 2016-05-02 2016-12-14 Splitting and moving ranges in a distributed system

Publications (2)

Publication Number Publication Date
KR20180123140A KR20180123140A (ko) 2018-11-14
KR102025934B1 true KR102025934B1 (ko) 2019-09-26

Family

ID=57755464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187030592A KR102025934B1 (ko) 2016-05-02 2016-12-14 분산형 시스템에서의 범위들의 분할 및 이동

Country Status (7)

Country Link
US (1) US10108632B2 (ko)
EP (1) EP3452919A1 (ko)
JP (1) JP6553822B2 (ko)
KR (1) KR102025934B1 (ko)
CN (1) CN109074362B (ko)
AU (1) AU2016405587B2 (ko)
WO (1) WO2017192174A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10536476B2 (en) 2016-07-21 2020-01-14 Sap Se Realtime triggering framework
US10482241B2 (en) 2016-08-24 2019-11-19 Sap Se Visualization of data distributed in multiple dimensions
US10542016B2 (en) 2016-08-31 2020-01-21 Sap Se Location enrichment in enterprise threat detection
US10630705B2 (en) 2016-09-23 2020-04-21 Sap Se Real-time push API for log events in enterprise threat detection
US10673879B2 (en) 2016-09-23 2020-06-02 Sap Se Snapshot of a forensic investigation for enterprise threat detection
US10534908B2 (en) 2016-12-06 2020-01-14 Sap Se Alerts based on entities in security information and event management products
US10534907B2 (en) 2016-12-15 2020-01-14 Sap Se Providing semantic connectivity between a java application server and enterprise threat detection system using a J2EE data
US10530792B2 (en) 2016-12-15 2020-01-07 Sap Se Using frequency analysis in enterprise threat detection to detect intrusions in a computer system
US10552605B2 (en) 2016-12-16 2020-02-04 Sap Se Anomaly detection in enterprise threat detection
US11470094B2 (en) * 2016-12-16 2022-10-11 Sap Se Bi-directional content replication logic for enterprise threat detection
US10764306B2 (en) 2016-12-19 2020-09-01 Sap Se Distributing cloud-computing platform content to enterprise threat detection systems
US10530794B2 (en) 2017-06-30 2020-01-07 Sap Se Pattern creation in enterprise threat detection
US10986111B2 (en) 2017-12-19 2021-04-20 Sap Se Displaying a series of events along a time axis in enterprise threat detection
US10681064B2 (en) 2017-12-19 2020-06-09 Sap Se Analysis of complex relationships among information technology security-relevant entities using a network graph
US11086840B2 (en) 2018-12-07 2021-08-10 Snowflake Inc. Transactional streaming of change tracking data
CN110427216A (zh) * 2019-08-05 2019-11-08 网联清算有限公司 构建物应用的管理方法、装置、计算设备及介质
CN114079659A (zh) * 2020-08-13 2022-02-22 支付宝(杭州)信息技术有限公司 分布式存储系统的服务器、分布式存储系统、数据存储及数据访问的方法和系统
US20230094789A1 (en) * 2021-09-24 2023-03-30 International Business Machines Corporation Data distribution in target database systems
US20230128133A1 (en) * 2021-10-22 2023-04-27 Dell Products L.P. Distributed smart lock system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100106934A1 (en) 2008-10-24 2010-04-29 Microsoft Corporation Partition management in a partitioned, scalable, and available structured storage
US20150186490A1 (en) 2010-03-15 2015-07-02 Microsoft Technology Licensing, Llc Reorganization of data under continuous workload

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453325B1 (en) * 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US6343294B1 (en) * 1998-12-15 2002-01-29 International Business Machines Corporation Data file editor for multiple data subsets
US7801848B2 (en) 2007-08-02 2010-09-21 International Business Machines Corporation Redistributing a distributed database
US8346722B2 (en) 2009-11-23 2013-01-01 Sap Ag Replica placement strategy for distributed data persistence
CN101916261B (zh) 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
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
US9069835B2 (en) 2012-05-21 2015-06-30 Google Inc. Organizing data in a distributed storage system
US8965921B2 (en) 2012-06-06 2015-02-24 Rackspace Us, Inc. Data management and indexing across a distributed database
US9411866B2 (en) 2012-12-19 2016-08-09 Sap Global Ip Group, Sap Ag Replication mechanisms for database environments
CN103399949B (zh) * 2013-08-16 2016-09-14 北京搜狐新媒体信息技术有限公司 一种数据库存储块状态控制方法和装置
CN103514274A (zh) * 2013-09-17 2014-01-15 宁波东冠科技有限公司 非关系型数据库HBase的数据迁移方法
CN103870602B (zh) * 2014-04-03 2017-05-31 中国科学院地理科学与资源研究所 数据库空间分片复制方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100106934A1 (en) 2008-10-24 2010-04-29 Microsoft Corporation Partition management in a partitioned, scalable, and available structured storage
US20150186490A1 (en) 2010-03-15 2015-07-02 Microsoft Technology Licensing, Llc Reorganization of data under continuous workload

Also Published As

Publication number Publication date
JP2019519025A (ja) 2019-07-04
CN109074362A (zh) 2018-12-21
EP3452919A1 (en) 2019-03-13
AU2016405587A1 (en) 2018-11-22
WO2017192174A1 (en) 2017-11-09
KR20180123140A (ko) 2018-11-14
AU2016405587B2 (en) 2019-11-21
JP6553822B2 (ja) 2019-07-31
US20170316026A1 (en) 2017-11-02
US10108632B2 (en) 2018-10-23
CN109074362B (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
KR102025934B1 (ko) 분산형 시스템에서의 범위들의 분할 및 이동
US10997163B2 (en) Data ingestion using file queues
US10795905B2 (en) Data stream ingestion and persistence techniques
US10691716B2 (en) Dynamic partitioning techniques for data streams
US9740582B2 (en) System and method of failover recovery
US11016944B2 (en) Transferring objects between different storage devices based on timestamps
CN107844388B (zh) 从备份系统流式恢复数据库
US20220092024A1 (en) Container data mover for migrating data between distributed data storage systems integrated with application orchestrators
US10852996B2 (en) System and method for provisioning slave storage including copying a master reference to slave storage and updating a slave reference
US10372555B1 (en) Reversion operations for data store components
US11789971B1 (en) Adding replicas to a multi-leader replica group for a data set
CN117643015A (zh) 基于日志记录的客户端密钥修改的快照跨一系列节点管理密钥
US11880495B2 (en) Processing log entries under group-level encryption
US20230409535A1 (en) Techniques for resource utilization in replication pipeline processing
US11907162B2 (en) Minimizing data volume growth under encryption changes
US20240134828A1 (en) Techniques for efficient encryption and decryption during file system cross-region replication
US20240104062A1 (en) Techniques for resolving snapshot key inter-dependency during file system cross-region replication
US20240061814A1 (en) Techniques for maintaining snapshot key consistency involving garbage collection during file system cross-region replication
US20240094937A1 (en) Concurrent and non-blocking object deletion for cross-region replications
US20170308542A1 (en) File system configuration data storage

Legal Events

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