KR102600366B1 - 분산형 데이터베이스에서의 인덱스 분할 - Google Patents

분산형 데이터베이스에서의 인덱스 분할 Download PDF

Info

Publication number
KR102600366B1
KR102600366B1 KR1020207006901A KR20207006901A KR102600366B1 KR 102600366 B1 KR102600366 B1 KR 102600366B1 KR 1020207006901 A KR1020207006901 A KR 1020207006901A KR 20207006901 A KR20207006901 A KR 20207006901A KR 102600366 B1 KR102600366 B1 KR 102600366B1
Authority
KR
South Korea
Prior art keywords
atom
node
instance
nodes
index
Prior art date
Application number
KR1020207006901A
Other languages
English (en)
Other versions
KR20200056990A (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 KR20200056990A publication Critical patent/KR20200056990A/ko
Application granted granted Critical
Publication of KR102600366B1 publication Critical patent/KR102600366B1/ko

Links

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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • 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
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes

Abstract

분산형 데이터베이스에서, 많은 노드는 동일한 레코드의 사본, 또는 인스턴스를 저장할 수 있다. 레코드가 하나의 노드 상에서 분할되는 경우, 그것은 분산형 데이터베이스에서 데이터의 일관성, 동시성 및 정확성을 유지하기 위해 다른 노드 상에서 분할되어야 한다. 몇몇 분산형 데이터베이스에서, 데이터 무결성을 보장하기 위해 업데이트 프로세스 동안 레코드는 잠긴다. 불행히도, 레코드를 잠그는 것은, 특히 큰 데이터베이스의 경우, 레이턴시를 증가시킬 수 있다. 그러나, 레코드가 잠기지 않고 레코드가 분할되고 동시에 업데이트되고 있을 때 노드가 실패하면, 분할 및 업데이트는 분산형 데이터베이스 전체에 걸쳐 전파되지 않을 수도 있어서, 데이터 무결성의 손실로 이어질 수도 있다. 레코드 분할의 상태에 관한 메시지 교환 및 업데이트 포워딩은, 노드 장애에 기인하는 데이터 무결성의 손실의 가능성을 내부적으로 감소시킨다.

Description

분산형 데이터베이스에서의 인덱스 분할
관련 출원에 대한 상호 참조
본 출원은 미국 출원 번호 제62/545,791호(출원일: 2017년 8월 15일, 발명의 명칭이 "Index Splitting in Distributed Databases")의 35 U.S.C. §119(e) 하에서의 우선권 이익을 주장하는데, 이 기초 출원은 참조에 의해 그 전체가 본 명세서에 통합된다.
데이터베이스는 통상적으로 소정의 정보의 효율적인 검색(retrieval)을 가능하게 하기 위한 인덱스를 통합한다. B 트리 데이터 구조는, 큰 블록의 데이터를 판독 및 기록하는 데이터베이스에서의 사용을 위해 최적화되며 효율적인 데이터베이스 검색을 가능하게 하는 인기 있는 인덱싱 구조이다. B 트리 데이터 구조는 루트(root) 및 복수의 리프(leaf)를 포함한다. 루트는 각각의 리프를 식별하기 위해 상이한 키 값을 사용한다. 각각의 리프는 키 값을 포함하는 레코드를 가리킨다. 키 값은 정렬된 리스트(sorted list)를 형성하기 위해 정렬된다(sorted). 구체적으로, 주어진 리프는 정렬된 순서의 "좌측 형제(left sibling)"(좌측으로 바로 옆의 리프) 및 "우측 형제(right sibling)"(우측으로 바로 옆의 좌측)를 포함한다. 제1 또는 가장 좌측의 리프 및 마지막의 또는 가장 우측의 리프는 그 루트에 대한 리프의 리스트의 끝을 나타내는 엔트리를 포함한다.
통상적으로, 각각의 리프는 고정된 메모리 사이즈를 갖는다. 더 많은 데이터가 데이터베이스에 추가됨에 따라, 리프는, 사이즈 임계치에 도달할 때까지, 사이즈가 성장하는데, 임계치에 도달하는 지점에서, 리프는 특정한 키 값에서 새로운 좌측 및 우측 리프로 분할된다. 좌측 리프는 그 키 값 미만의 값을 받고 우측 리프는 루트에 대한 적절한 수정을 통해 나머지 값을 받는다.
중앙 기반의 그리고 비공유 데이터베이스에서, 데이터베이스 시스템에서 인덱스의 하나의 사본만이 일반적으로 있기 때문에, 분할 프로세스는 효율적이다. 분할은, 실제 분할 동작 동안 데이터 처리 시스템을 중지시키는 것에 의해, 쉽게 달성된다. 인덱스의 많은 사본을 갖는 분산형 데이터베이스에서, 인덱스의 각각의 사본은 정확성, 완전성 및 데이터 무결성을 유지하도록 분할되어야 한다. 불행하게도, 동일한 인덱스의 다수의 사본을 분할하는 것은, 잘못된 또는 불일치하는 분할로 이어지는 경쟁 조건을 야기할 수 있다.
노드에서 주어진 인덱스의 분할에 따르는 일관성을 보장하기 위해, 몇몇 현존하는 접근법은 잠금(lock)을 구현한다. 인덱스가 분할되는 동고 있는 동안 개개의 페이지 또는 레코드에 잠금이 적용된다. 잠금은, 인덱스가 분할된 이후까지, 추가 데이터가 데이터베이스에 추가되는 것 또는 데이터베이스로부터 제거되는 것을 방지한다. 그러나, 인덱스 분할 동안 데이터베이스를 잠그는 것은, 확장 가능한 접근법이 아니다. 잠금은 또한, 데이터베이스에 정보를 추가하는 것과 관련되는 레이턴시를 증가시킬 수 있다.
본 기술의 실시형태는 분산형 데이터베이스 내의 복수의 아톰(atom)에서 제1 인덱스 아톰(index atom)을 분할하는 방법을 포함한다. 분산형 데이터베이스는 복수의 노드를 포함한다. 복수의 노드 내의 각각의 노드는 대응하는 프로세서 및 대응하는 메모리를 포함한다. 복수의 노드 내의 하나의 노드는 체어맨으로 지정되며, 제1 인덱스 아톰의 체어맨(chairman)의 사본을 포함한다. 예시적인 방법은 체어맨에 의해 제1 인덱스 아톰의 체어맨의 사본을 분할하는 것을 포함한다. 제1 인덱스 아톰의 체어맨의 사본은 분산형 데이터베이스에 저장되는 데이터 및/또는 메타데이터를 나타낸다. 체어맨은 제1 인덱스 아톰의 각각의 사본을 분할하기 위한 인스트럭션(instruction)을 복수의 노드 내의 다른 노드로 송신한다. 다른 노드에서의 제1 인덱스 아톰의 각각의 사본은 제1 인덱스 아톰의 체어맨의 복제물이다. 복수의 노드 내의 제1 노드는 제1 인덱스 아톰의 제1 사본을 소스 아톰(source atom)의 제1 사본 및 타깃 아톰(target atom)의 제1 사본으로 분할한다. 제1 노드는 제1 인덱스 아톰의 제1 사본이 분할되었음을 나타내는 확인 응답(acknowledgement)을 송신한다. 확인 응답은 체어맨으로 그리고 복수의 노드 내의 각각의 다른 노드로 송신된다.
몇몇 경우에, 체어맨은, 복수의 노드 내의 다른 노드로부터의 요청에 응답하여, 제1 인덱스 아톰의 제1 사본을 분할한다. 방법은 또한, 타깃 아톰의 제1 사본으로 메시지를 제1 노드에서 소스 아톰의 제1 사본으로부터 포워딩하는 것을 포함한다. 몇몇 경우에, 제1 노드로부터 체어맨으로 그리고 복수의 노드 내의 각각의 다른 노드로 확인 응답을 송신하는 것은, 소스 아톰의 제1 사본이 타깃 아톰의 제1 사본으로 메시지를 포워딩한 이후 발생할 수 있다.
다른 실시형태는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법을 포함한다. 다시, 분산형 데이터베이스는 복수의 노드를 포함하는데, 그 각각은 대응하는 프로세서 및 대응하는 메모리를 포함한다. 이들 노드 중 하나는 인덱스 아톰에 대한 체어맨으로 지정되며, 분산형 데이터베이스에 저장되는 데이터 및/또는 메타데이터를 나타내는 인덱스 아톰의 체어맨 인스턴스를 포함한다. 방법은, 체어맨에 의해, 인덱스 아톰의 체어맨의 인스턴스를 분할하는 것을 포함한다. 체어맨은 인덱스 아톰을 분할하기 위한 인스트럭션을 노드의 적어도 서브세트로 송신한다. 서브세트 내의 각각의 노드는 인덱스 아톰의 대응하는 인스턴스를 포함한다. 서브세트 내의 제1 노드는 인덱스 아톰의 자신의 (제1) 인스턴스를 소스 아톰의 제1 인스턴스와 타깃 아톰의 제1 인스턴스로 분할한다. 제1 노드는 또한 인덱스 아톰을 분할하기 위한 인스트럭션을 서브세트 내의 각각의 다른 노드로 재송신한다. 그리고 제1 노드는, 인덱스 아톰의 제1 인스턴스가 분할되었음을 나타내는 확인 응답을, 체어맨으로 송신한다. 체어맨은, 인덱스 아톰이 분할되었음을 나타내는 메시지를 노드의 서브세트로 송신한다.
여전히 다른 실시형태는, 복수의 노드를 포함하는 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법을 포함하는데, 복수의 노드의 각각은 대응하는 프로세서 및 대응하는 메모리를 포함한다. 방법에서, 노드 중 하나는 인덱스 아톰의 로컬 인스턴스를 소스 아톰의 로컬 인스턴스와 타깃 아톰의 로컬 인스턴스로 분할한다. 소스 아톰의 로컬 인스턴스는 분할 키 값(split key value) 미만의 값을 포함하고 타깃 아톰의 로컬 인스턴스는 분할 키 값보다 더 큰 값을 포함한다. 노드는 소스 아톰의 로컬 인스턴스 상에서 분할 키 값보다 더 큰 키 값을 참조하는 메시지를 수신한다. 그리고 노드는 소스 아톰의 로컬 인스턴스로부터 타깃 아톰의 로컬 인스턴스로 메시지를 포워딩한다.
이하에서 더욱 상세하게 논의되는 전술한 개념 및 추가적인 개념의 모든 조합은 (그러한 개념이 상호 불일치하지 않는다면) 본 명세서에서 개시되는 본 발명의 주제의 일부인 것으로 고려된다는 것이 인식되어야 한다. 특히, 본 개시내용의 끝에서 나타나는 청구된 주제의 모든 조합은 본 명세서에서 개시되는 본 발명의 주제의 일부인 것으로 고려된다. 또한 참조에 의해 통합되는 임의의 개시에서 나타날 수도 있는 본 명세서에서 명시적으로 활용되는 전문 용어(terminology)는 본 명세서에서 개시되는 특정한 개념과 가장 일치하는 의미를 부여받아야 한다는 것이 또한 인식되어야 한다.
다른 시스템, 프로세스 및 특징부는, 하기 도면 및 상세한 설명의 검토시, 기술 분야의 숙련된 자에게 명백해질 것이다. 모든 그러한 추가적인 시스템, 프로세스 및 특징부는 본 설명 내에 포함되어야 하고, 본 발명의 범위 내에 있어야 하며, 첨부되는 청구범위에 의해 보호되어야 한다는 것이 의도된다.
숙련된 기술자는, 도면이 주로 예시적인 목적을 위한 것이며 본 명세서에서 설명되는 본 발명의 주제의 범위를 제한하도록 의도되지 않는다는 것을 이해할 것이다. 도면은 반드시 일정한 비율은 아니며; 몇몇 예에서, 본 명세서에서 개시되는 본 발명의 주제의 다양한 양태는 상이한 특징부의 이해를 용이하게 하기 위해 도면에서 과장되어 또는 확대되어 도시될 수도 있다. 도면에서, 유사한 참조 문자는 일반적으로 유사한 특징부(예를 들면, 기능적으로 유사한 및/또는 구조적으로 유사한 엘리먼트)를 지칭한다.
도 1은 탄력적이고 확장 가능한 주문형의(on-demand) 분산형 데이터베이스의 개략적인 형태이다.
도 2는 도 1의 분산형 데이터베이스의 대표적인 트랜잭션 노드(transactional node)를 예시한다.
도 3a 및 도 3b는 도 2의 트랜잭션 노드에서 아톰 클래스(atom class)에 의해 생성되는 아톰 오브젝트의 로컬 편제를 묘사한다.
도 4는 분할될 수 있는 인덱스 아톰을 예시한다.
도 5는 트랜잭션 노드와 아카이브 노드 사이에서 전송되는 예시적인 비동기 메시지를 예시한다.
도 6은 분산형 데이터베이스에서의 아톰의 분할이 부정확한 데이터의 검색으로 이어질 수 있는 방법을 예시한다.
도 7a는 분산형 데이터베이스에서 인덱스 아톰을 분할하기 위한 종래의 프로세스를 예시한다.
도 7b는 분산형 데이터베이스 전체에 걸쳐 정확성 및 일관성을 유지하면서 인덱스 아톰을 분할하기 위한 프로세스를 예시한다.
도 7c는 분산형 데이터베이스 전체에 걸쳐 정확성 및 일관성을 유지하면서 인덱스 아톰을 분할하기 위한 대안적인 프로세스를 예시한다.
본 명세서에서 설명되는 실시형태는 일반적으로 분산형 데이터베이스에 관한 것으로, 더 상세하게는, 분산형 데이터베이스에서 인덱스를 분할하는 것에 관한 것이다. 본 명세서에서 개시되는 시스템 및 프로세스는, 분할 프로세스 동안 분산형 데이터베이스를 잠그지 않고도 분산형 데이터베이스에서 동일한 인덱스의 많은 사본을 분할하면서, 정확성을 유지하는 것과 관련되는 문제점을 해결하기 위해 2 단계 인덱스 분할 프로세스를 사용한다. 인덱스 분할 프로세스의 제1 단계 동안, 인덱스 아톰을 갖는 분산형 데이터베이스 내의 노드는 인덱스 아톰을 소스 아톰 및 타깃 아톰으로 분할한다. 그리고 인덱스 분할 프로세스의 제2 단계 동안, 인덱스 플러시 메시지(index flush message)가 소스 아톰으로부터 타깃 아톰으로 포워딩된 노드. 이 2 단계 분할 프로세스는, 인덱스 아톰이 분할되고 있는 동안 데이터가 삽입되고 있는 경우 분산형 데이터베이스에 걸쳐 정확성, 동시성, 및 일관성을 유지하는 것을 더욱 쉽게 만든다.
분산형 데이터베이스
도 1은 인덱스를 분할할 때 정확성을 촉진하고 보장하기 위한 2 단계 인덱스 분할 프로세스인 탄력적이고 확장 가능하고, 주문형의 분산형 데이터베이스(30)를 묘사한다. 분산형 데이터베이스(30)는 상이한 타입의 다수의 노드를 포함한다: 노드(N1 내지 N6)는 데이터베이스에 대한 사용자 액세스를 제공하는 트랜잭션 노드(transactional node)이고; 노드(A1 및 A2)는 스토리지 매니저로서 역할을 하는 아카이브 노드(archival node)이며 각각의 아카이브 노드에서 전체 데이터베이스의 디스크 아카이브(disk archive)를 유지하도록 기능한다. 아카이브 노드가 일반적으로 전체 데이터베이스의 사본(copy)을 저장하지만, 각각의 트랜잭션 노드는 그 시간에 그 트랜잭션 노드에서 수행되고 있는 트랜잭션을 지원하기 위해 사용되는 데이터베이스의 부분만을 포함할 수 있다.
도 1의 각각의 노드는 데이터베이스 통신 네트워크(31)를 통해 분산형 데이터베이스(30) 내의 각각의 다른 노드와 직접적으로 통신할 수 있다. 예를 들면, 노드(N1)는 노드(N2 내지 N6, A1 및 A2)의 각각과의 통신 경로를 확립할 수 있다. 임의의 두 노드 사이의 통신은 직렬화된 메시지를 통한다. 하나의 실시형태에서, 메시징은 다양한 동작을 시기 적절하고 신속한 방식으로 수행하기 위해 비동기 방식으로 수행된다. 통상적으로, 데이터베이스 통신 네트워크(31)는 고 대역폭, 저 레이턴시 경로(예를 들면, 이더넷 네트워크)와 고 대역폭, 고 레이턴시 경로(예를 들면, 광역 네트워크(wide area network: WAN))의 조합으로 동작한다. 각각의 노드는 시간이 중요한 통신(예를 들면, 쿼리에 응답하여 레코드를 페치하는 것(fetching))에 대해 저 레이턴시 경로를 그리고 중요하지 않은 통신(예를 들면, 테이블에 대한 정보를 업데이트하기 위한 요청)에 대해 고 레이턴시 경로를 사용할 수 있다. 데이터 통신 네트워크(31)는, 송신 제어 프로토콜(Transmission Control Protocol: TCP)과 같은 메시징 프로토콜을 사용하고, 메시지가 전송된 시퀀스와 동일한 시퀀스로 각각의 노드가 메시지를 처리하는 것을 보장한다.
트랜잭션 노드
도 2는 도 1의 분산형 데이터베이스(30) 내의 대표적인 트랜잭션 노드(32)를 묘사한다. 트랜잭션 노드(32)는 데이터베이스 통신 네트워크(31) 및 다양한 엔드 사용자(33)를 통해 다른 노드(도시되지 않음)에 링크된다. 트랜잭션 노드(32)는, 네트워크 인터페이스(35)를 통해 데이터베이스 통신 네트워크(31)와 그리고 사용자 네트워크 인터페이스(37)를 통해 다양한 사용자와 통신하는 프로세서(34)를 포함한다. 프로세서(34)는 또한 랜덤 액세스 메모리(random-access memory: RAM)와 같은 불휘발성 메모리(38)와 상호 작용하고, 그것은, 하기에서 더욱 상세하게 개시되는 분산형 데이터베이스 동작 및 인덱스 분할을 구현하는 데이터베이스 관리 프로그램의 사본을 포함한다. 이 프로그램은 원격 인터페이스(40), 데이터베이스 요청 엔진(41), 및 클래스 또는 오브젝트의 세트(42)를 제공하도록 기능한다. 데이터베이스 요청 엔진(41)은 트랜잭션 노드 상에 상주하며, 사용자 레벨에서의 하이 레벨의 입력 및 출력 커맨드와 시스템 레벨에서의 시스템 레벨의 입력 및 출력 커맨드 사이의 인터페이스이다. 일반적으로, 데이터베이스 요청 엔진(41)은 구조화된 쿼리 언어(structured query language: SQL) 쿼리와 같은 사용자 쿼리를, 세트(42) 내의 다양한 클래스 또는 오브젝트에 의해 해석되는 커맨드로 파싱, 컴파일 및 최적화한다.
임의의 주어진 시간에, 트랜잭션 노드(32)는 그때 트랜잭션 노드(32) 상에서 활성인 사용자 애플리케이션에 관련되는 데이터베이스의 부분만을 포함한다. 또한, 트랜잭션 노드(32)에서 주어진 시간에 사용 중인 분산형 데이터베이스의 부분은 메모리(38)에 상주한다. 이 시스템의 동작 동안 트랜잭션 노드(32)에서 디스크 스토리지와 같은 보충 스토리지는 필요하지 않다.
아톰
이 시스템에서, 클래스/오브젝트 세트(42)는 아톰 클래스의 서브세트(43), 메시지 클래스의 서브세트(44), 및 헬퍼 클래스(helper class)의 서브세트(45)로 분할된다. 도 2에서의 각각의 아톰 클래스(43)는 아톰을 생성한다. 더욱 구체적으로, 각각의 아톰 클래스(43)는 하나 이상의 아톰 타입 또는 아톰 오브젝트를 정의한다. 각 아톰 타입 또는 아톰 오브젝트는 아톰을 생성한다. 각각의 아톰은 분산형 데이터베이스에 저장되는 특정한 조각(fragment)의 정보를 포함한다. 몇몇 아톰은 데이터베이스 메타데이터의 일부를 포함하고; 다른 것은 데이터 레코드를 포함하고; 또 다른 것은 다른 아톰 타입을 생성 및 추적하는 카탈로그로서 역할을 한다. 몇몇 아톰 타입은 모든 노드에 복제되는 하나의 아톰만을 인스턴스화할 수도 있다. 다른 아톰 타입은 필요 기반으로 노드에 복제되는 다수의 아톰을 인스턴스화할 수도 있다.
도 3a 및 도 3b는 상이한 타입의 아톰 및 아톰이 서로 상호 작용하는 방법을 도시한다. 도 3a에서, 마스터 카탈로그 아톰(Master Catalog atom)(70)은 도 1의 분산형 데이터베이스(30) 내의 트랜잭션 및 아카이브 노드의 스테이터스(status)를 추적한다. 마스터 카탈로그 아톰(70)은 트랜잭션 매니저 아톰(71), 데이터베이스 아톰(72), 스키마 아톰(Schema atom)(73), 테이블 아톰(Table atom)(74) 및 테이블 카탈로그 아톰(Table Catalog atom)(75)의 세트, 및 시퀀스 ID 매니저(82)를 생성 및 모니터링하는 활성 인덱스로 간주될 수 있다. 테이블 카탈로그 아톰(75)은, 단일의 테이블과 관련되는 인덱스 아톰(76), 레코드 상태 아톰(Record States atom)(77), 데이터 아톰(Data atom)(78), 블롭 상태 아톰(Blob States atom)(80) 및 블롭 아톰(Blob atom)(81)을 생성 및 모니터링하는 활성 인덱스로서 작용한다. 각각의 테이블마다 하나의 테이블 카탈로그 아톰(75)이 있다.
도 3b는 상이한 아톰 타입의 상호 작용 및 관리를 이해함에 있어서 유용하다. 이와 관련하여, 마스터 카탈로그 아톰(70)도 또는 테이블 카탈로그 아톰(75)도 어떠한 관리 기능도 수행하지 않는다. 데이터베이스 아톰(72)은 각각의 스키마 아톰(73)을 관리한다. 각각의 스키마 아톰(73)은 각각의 관련 테이블 아톰(74) 및 시퀀스 ID 매니저 아톰(82)을 관리한다. 각각의 테이블 아톰(74)은 자신의 대응하는 테이블 카탈로그 아톰(75), 인덱스 아톰(76), 레코드 상태 아톰(77), 데이터 아톰(78), 블롭 상태 아톰(80) 및 블롭 아톰(81)을 관리한다. 데이터베이스 요청 엔진(41)은 사용자 쿼리에 응답하여 마스터 카탈로그 아톰(70), 트랜잭션 매니저 아톰(71), 데이터베이스 아톰(72), 각각의 스키마 아톰(73), 각각의 테이블 아톰(74) 및 시퀀스 ID 매니저(82)와 통신한다.
도 4는 인덱스 아톰(76)를 더욱 상세하게 묘사한다. 인덱스 아톰(76)은 엘리먼트(76A-76K)를 갖는 B 트리 인덱스(B-Tree index)로서 구현되고 하기에서 더 상세하게 설명되는 바와 같이 분할될 수 있다. 엘리먼트(76A)는 인덱스 아톰(76)에 대한 고유의 신원(unique identification)이다. 포인터(76B 및 76C)는 마스터 카탈로그 아톰 및 생성 카탈로그 아톰(creating catalog atom)을 각각 식별한다. 엘리먼트(76D)는 그 아톰에 대한 체어맨이 상주하는 노드를 가리킨다. (각각의 아톰은 하기에서 설명되는 바와 같은 기능을 수행하는 체어맨을 구비한다.)
임의의 트랜잭션 노드에서 아톰의 사본이 변경될 때마다, 아톰의 사본은 새로운 변경 번호를 수신한다. 엘리먼트(76E)는 그 변경 번호를 기록한다. 노드가 다른 노드에게 아톰을 요청할 때마다, 요청하는 노드가 다른 트랜잭션 노드에게 알려지 않을 수도 있는 간격이 존재한다. 엘리먼트(76F)는, 요청이 완료될 때까지 아톰을 포함하는 메시지를 공급 노드가 릴레이하는 모든 노드의 리스트이다.
데이터베이스 시스템의 동작은 또한 사이클로 분할된다. 사이클 기준 엘리먼트(76G)는 아톰에 대한 마지막 액세스의 사이클 번호를 제공한다. 엘리먼트(76H)는 아톰을 포함하는 모든 활성 노드의 리스트이다. 엘리먼트(76I)는 몇몇 스테이터스 표시기(status indicator)를 포함한다. 엘리먼트(76J)는 종래의 인덱싱 기능을 제공하기 위한 인덱스 노드의 이진 트리를 포함한다. 엘리먼트(76K)는 인덱스 레벨을 포함한다.
체어맨
분산형 데이터베이스 내의 트랜잭션 노드가 새로운 아톰을 생성할 때, 그 트랜잭션 노드는 새로운 아톰의 체어맨으로서 지정된다. 각각의 아톰은 상이한 체어맨을 가질 수 있으며, 주어진 노드는 하나보다 더 많은 아톰에 대한 체어맨일 수 있다. 새로운 아톰의 체어맨으로서, 트랜잭션 노드는 새로운 아톰의 사본을 갖는 분산형 데이터베이스 내의 다른 노드의 순서 지정된 리스트(ordered list)를 확립하여 유지한다. 이 리스트의 순서는 다음과 같다: 먼저 체어맨, 그 다음, 새로운 아톰을 갖는 임의의 트랜잭션 노드, 및 그 다음 새로운 아톰을 갖는 임의의 아카이브 노드.
트랜잭션 노드가 새로운 아톰을 생성할 때, 그것은 순서 지정된 리스트에서 처음이자 유일한 엔트리이다. 다른 노드가 새로운 아톰의 사본을 획득함에 따라, 그들은 순서 지정된 리스트에 추가된다. 새로운 아톰의 사본을 갖는 각각의 트랜잭션 노드는 또한 순서 지정된 리스트의 사본을 유지한다. 체어맨이 임의의 이유로 비활성화되게 되면, 순서 지정된 리스트 상의 다음 번 트랜잭션 노드가 체어맨이 된다. 순서 지정된 리스트에 어떠한 트랜잭션 노드도 없으면, 제1 비동기화 아카이브 노드(non-synchronizing archival node)가 체어맨이 된다.
노드 사이의 메시징
노드는 분산형 데이터베이스를 일관되고 동시적인 상태로 유지하기 위해, 비동기 메시지를 통해 전달 아톰(transfer atom) 및 아톰에 대한 정보를 교환한다. 상기에서 언급되는 바와 같이, 분산형 데이터베이스 내의 각각의 노드는 분산형 데이터베이스 내의 모든 다른 노드와 통신할 수 있다. 하나의 노드가 특정한 아톰을 수반하는 메시지를 생성하는 경우, 그것은 그 메시지를 그 특정한 아톰의 복제물을 갖는 다른 노드로 송신 또는 브로드캐스트할 수 있다. 각각의 노드는 다른 노드와 독립적으로 이들 메시지를 생성한다. 임의의 주어진 순간에, 다수의 노드가 주어진 아톰의 사본을 포함할 수도 있고 상이한 노드가 그들을 처리하는 다양한 단계에 있을 수도 있다는 것이 가능하다.
도 5는 TCP 또는 메시징 시퀀스를 유지하기 위한 제어를 갖는 다른 프로토콜을 사용하여 임의의 두 노드 사이에서 비동기식으로 송신되는 통상적인 직렬화된 메시지(90)의 기본 신택스를 묘사한다. 메시지(90)는 가변 길이 헤더(91) 및 가변 길이 본문(body)(92)을 포함한다. 헤더(91)는 메시지 및 그 기능을 명시하는 메시지 식별자 코드(93)를 포함한다. 헤더(91)는 또한, 상이한 노드가 상이한 소프트웨어 버전과 동작하는 것을 가능하게 하는, 메시지를 생성한 소프트웨어 버전의 신원(94)을 포함한다. 헤더 내의 나머지 엘리먼트는, 전송자(sender)의 로컬 신원(local identification)(95) 및 메시지의 목적지에 대한 정보(96) 및 아톰 신원(97)을 포함한다. 이 정보로부터, 수신측 노드(recipient node)는 메시지를 직렬화 해제, 디코딩 및 처리할 수 있다.
인덱스 분할 동안의 데이터 무결성
상기에서 설명되는 바와 같이, 분산형 데이터베이스는 다른 타입의 데이터베이스에 영향을 끼치지 않는 데이터 무결성 문제점을 겪는다. 이들 데이터 무결성 문제점 중 많은 것은 일관성을 유지하려는 소망으로부터 그리고 주어진 아톰(데이터 또는 메타데이터의 조각)의 인스턴스(사본)를 포함하는 노드에 걸쳐 발생한다. 모든 노드에 걸쳐 데이터가 일치하지 않으면, 두 노드는 동일한 쿼리에 대해 상이한 응답을 제공할 수 있을 것이다.
아톰이 분할되는 경우, 종래에는, 노드는 분할에 관한 메시지를 데이터베이스의 다른 노드로 재브로드캐스트한다(rebroadcast). 불행히도, 재브로드캐스트는 일시적인 일관성 위반으로 나타나는 다수의 시나리오로 이어질 수 있다. 분할 동안 체어맨이 실패하면, 그들 불일치는 영구적으로 될 수 있거나 또는 부정확한 데이터를 갖는 아톰이 드롭될 때까지 적어도 지속될 수 있다. 이들 문제점은, 인덱스 아톰의 자신의 인스턴스를 여전히 분할해야 하는 노드 상의 타깃 아톰에 대한 부정확한 참조를 포함한다. 이것은 일관성 문제점 또는 충돌을 야기할 수 있다. 타깃 아톰에 대한 참조가 전혀 업데이트되지 않으면, 분산형 데이터베이스는 (사이클 잠금을 유지하는 동안) 역방향 스캔에서 무한 루프에 진입할 수도 있다. 또한, 노드가 분할되기 이전에 노드로부터 오브젝트를 페치하는 동안 분할된 메시지를 놓치는 것이 가능하며, 분할을 발신하는 노드는 분할에 대한 임의의 최종 메시지를 전송하기 이전에 실패한다.
도 6은 재브로드캐스트를 사용하여 분산형 데이터베이스에서 인덱스 아톰을 분할하는 방법이 분산형 데이터베이스에서 데이터 무결성의 손실로 이어질 수 있는 방법을 예시하는 타이밍도이다. 타이밍도는 분산형 데이터베이스 내의 세 개의 노드: 삽입기 노드(inserter node)(610), 스플리터 노드(splitter node)(620)(예를 들면, 루트 체어맨), 및 리더 노드(reader node)(630) 사이에서의 인덱스 분할을 예시한다. 이 예에서, 삽입기 노드(610) 및 스플리터 노드(620) 각각은 동일한 인덱스 아톰의 인스턴스를 포함한다. 소스 노드(610)는 인덱스 아톰 안으로 삽입하기 위한 새로운 값을 수신한다. 응답에서, 그것은 삽입 메시지(601)를 스플리터 노드(620)로 송신한다. 이 삽입 메시지(601)는, 스플리터 노드(620)에게, 인덱스 아톰의 자신의 인스턴스를 분할 키 값, 또는 간략히 키 값에서 분할할 것을 지시한다.
스플리터 노드(620)는, 인덱스 아톰을 소스 아톰 및 타깃 아톰으로 분할하는 것에 의해 삽입 메시지(601)에 응답하는데, 소스 아톰에서 엔트리는 분할 키 값 이하이고 타깃 아톰에서 엔트리는 분할 키 값보다 더 크다. 스플리터 노드(620)는 또한 삽입 메시지를 리더 노드(630)로 (602에서) 재브로드캐스트하는데, 리더 노드는, 인덱스 아톰을 참조하는 루트 아톰의 자신의 인스턴스를 업데이트하여 인덱스 아톰이 분할되었음을 나타내는 것에 의해 재브로드캐스트에 응답한다. 그러나, 리더 노드(630)가, 재브로드캐스트(602)를 수신하기 이전에, 커밋 트랜잭션 메시지(603)를 수신하면, 그것은, 재브로드캐스트(602)의 도달과 커밋 트랜잭션 메시지(603) 사이의 기간(604) 동안 응답에서 잠재적으로 부정확한 정보를 검색할 수도 있다. 그리고, 재브로드캐스트(602)를 전송하기 이전에 스플리터 노드(620)가 실패하면, 리더 노드(630)는 분할에 대해 전혀 학습하지 못할 수도 있어서, 분산형 데이터베이스를 일관성이 없고 어쩌면 부정확 상태로 남겨둘 수도 있다.
인덱스 분할 동안의 정확성의 유지
도 7a는 인덱스 분할 동안 장애(failure)를 완화하기 위한 사전 프로세스(prior process)(700)를 예시한다. 프로세스(700)는, 인덱스 아톰에 대한 루트 체어맨(710)이, 예를 들면, 다른 노드로부터의 요청 또는 인덱스 아톰의 체어맨의 인스턴스 안으로 값을 삽입하려는 요청에 응답하여, 인덱스 아톰이 분할되어야 한다는 것을 결정하는 경우 시작된다. 루트 체어맨은 인덱스 아톰의 자신의 인스턴스를 분할하고 인덱스 아톰 인스턴스를 갖는 다른 노드 - 여기서는, 아카이브(스토리지 매니저(storage manager: SM) 노드(720) 및 트랜잭션(트랜잭션 엔진(transaction engine: TE))(730) - 로 "분할됨" 메시지(701)를 전송한다. 이들 노드는 인덱스 아톰의 그들의 인스턴스를 분할하고, 그 다음, 각각의 "분할 적용됨(split applied)" 메시지(702)를 루트 체어맨(710)으로 전송한다. 일단 루트 체어맨(710)이, 분할되고 있는 인덱스 아톰의 인스턴스를 갖는 분산형 데이터베이스 내의 각각의 노드로부터 "분할 적용됨" 메시지를 수신했다면, 그것은 분할에 의해 영향을 받는 노드에 "분할 완료됨(split done)" 메시지(703)를 전송한다.
비록 도 7a에서의 프로세스(700)가 도 6에서 도시되는 인덱스 아톰을 분할하는 것에 대한 문제점을 해결하지만, 그것은 페일오버(failover) 동안의 충돌 및 끝나지 않은 또는 완료되지 않은 분할의 문제점을 겪을 수 있다. 체어맨이 실패하고 새로운(교체) 체어맨이 분할 프로세스 동안 생성되는 아톰(들)을 놓치는 경우, 페일오버 동안 충돌이 발생할 수 있다. 트랜잭션 노드가 아카이브 노드로부터 체어맨 지위 노드(chairmanship node)를 가로채는 경우, 완료되지 않은 분할이 발생할 수 있다. 이것은, 원래의 체어맨이 실패한 이후 아카이브 노드가 체어맨이 되고 분할이 완료되기 이전에 분할되고 있는 인덱스 아톰의 사본을 새로운 트랜잭션 노드가 페치하는 경우 발생할 수 있다. 새로운 트랜잭션 노드는 인덱스 아톰에 관련이 있는 메시지를 수신할 것을 예상하지만, 그러나 아카이브 노드는 그들을 전송하지 않는데, 그 이유는, 새로운 트랜잭션 노드의 추가가 그들의 송신을 트리거하지 않기 때문이다. 결과적으로, 분할이 절대 완료되지 않는다.
사전 프로세스(700)와 관련되는 다른 잠재적인 문제점은, "체어맨 지위 누적(chairmanship pileup)" 및 철저한 테스트의 어려움을 포함한다. 인덱스 아톰에 대한 루트 체어맨이 분할을 편성하기 때문에, 사전 프로세스(700)에서 체어맨 지위 누적이 발생한다. 결과적으로, 루트 체어맨은 분할 동안 생성되는 새로운 아톰에 대한 체어맨이 된다; 다시 말하면, 새로운 아톰은 루트 체어맨 상에서 "누적되어(pile up)", 루트 체어맨이 실패하는 경우 분산형 데이터베이스를 더욱 취약한 상태로 되게 한다.
주어진 노드 상의 상태 머신 및 이 상태 머신을 상태에서 상태로 이동시키는 이벤트를 고려할 때 철저한 테스트가 어려워지게 된다. 철저한 테스트를 위해, 각각의 유효한 상태/이벤트 쌍이 검증되어야 한다. 주어진 상태가 네 개의 아톰(각각은 그 자체로 여러 가지 상태에 있음)으로 구성되어 있기 때문에, 철저한 테스트를 위한 단위 테스트의 수는 엄청나게 많아지게 된다.
특정한 시스템을 철저하게 테스트하는 것은, 통상적으로, 유효 상태/이벤트 쌍의 세트를 생성하는 것 및 그 다음 각각의 쌍에 대한 테스트를 생성하는 것을 수반한다. 예시를 위해, 두 개의 상태(A 및 B)와 두 개의 가능한 이벤트(X와 Y)를 가질 수 있는 시스템을 고려한다. 이것은 네 가지 상태/이벤트 쌍 - 여기서는, AX, AY, BX 및 BY - 을 제공하는데, 그 각각은 테스트되어야 한다. 테스트의 수는 이벤트 및 상태의 데카르트 곱(Cartesian product)이다.
예시적인 분산형 데이터베이스에서, 시스템의 상태는 관련 아톰의 상태에 의해 정의된다. 도 7a에서의 프로세스(700)에서, 분할은 네 개의 아톰에 대해 한 번에 동작하며, 따라서, 가능한 상태의 수는 네 개의 아톰의 상태의 데카르트 곱인데, 이것은 가능한 이벤트의 수가 주어지면 약 1300 개의 테스트를 산출한다. 도 7b에서의 프로세스를 사용하여 네 개의 아톰을 분할하는 것은, 유효하고 관련된 상태/이벤트 쌍의 수를 약 130 개로 감소시키는데, 이것은 다루기 쉬운 테스트의 경우 1300 개 보다 더욱 다루기 쉽다.
도 7b는 도 6에서 예시되는 근본적인 문제점 및 도 7a의 사전 프로세스(700)의 단점 둘 모두를 해결하는, 인덱스 아톰을 분할하기 위한 프로세스(740)를 예시하는데, 인덱스 아톰의 사본은 분산형 데이터베이스 내의 몇몇 노드에 저장된다. 이 경우, 인덱스 아톰의 인스턴스를 갖는 노드는 체어맨(711), 아카이브 노드(720), 및 제1 트랜잭션 노드(730a)를 포함한다. 도 7a에서의 루트 체어맨(710)과는 달리, 체어맨(711)은 분할되고 있는 인덱스 아톰과 관련되는 루트 아톰의 체어맨일 필요는 없다. 대신, 그것은 분할되고 있는 인덱스 아톰의 체어맨일 수 있다. 분산형 데이터베이스는 또한, 제2 트랜잭션 노드(730b)와 같은, 인덱스 아톰의 인스턴스가 없는 노드를 포함한다. 이들 노드의 각각은, 불휘발성 메모리에 저장되는 컴퓨터 인스트럭션을 실행하는 프로세서로서 구현될 수 있고 다른 노드와 병치될 수 있다.
프로세스(750)의 제1 단계에서, 노드는 인덱스 아톰을 소스 인덱스 아톰, 또는 소스, 및 타깃 인덱스 아톰, 또는 타깃으로 분할한다. 프로세스는, 인덱스 아톰의 체어맨(711)이, 예를 들면, 인덱스 아톰의 자신의 인스턴스에 값을 삽입하려는 시도에 응답하여, 인덱스 아톰이 분할되어야 한다는 것을 결정하는 경우 시작된다. 인덱스 아톰이 분할되어야 한다는 것을 체어맨(711)이 결정하면, 그것은 분할을 위한 키 값을 선택한다. 이 키 값은 원래 소스 인덱스 아톰에 어떤 레코드가 유지될지를 그리고 분할에 의해 생성되는 새로운 타깃 인덱스 아톰으로 어떤 레코드가 전송될지를 나타낸다.
체어맨(711)은 키 값에서 인덱스 아톰의 자신의 사본을 분할하여 소스 인덱스 아톰 및 타깃 인덱스 아톰의 그 자신의 사본을 생성한다. 그것은 또한 인덱스 아톰의 인스턴스를 갖는 분산형 데이터베이스 내의 다른 노드(720, 730a)로 "분할 실행(execute split)" 메시지(741)를 브로드캐스트한다. 체어맨으로부터 "분할 실행" 메시지(741)를 수신하는 것에 응답하여, 이들 다른 노드(720, 730a)의 각각은 키 값에서의 인덱스 아톰의 그 자신의 사본을 분할하여 소스 인덱스 아톰 및 타깃 인덱스 아톰의 그 자신의 사본을 생성한다. 다른 인덱스 분할 프로세스에서와는 달리, 이들 노드의 각각은 또한, 체어맨(711)을 비롯한, 인덱스 아톰을 갖는 다른 노드로 "분할 실행" 메시지(742)를 재송신한다. 일단 다른 노드(720, 730a)가 모든 가능한 소스로부터 "분할 실행" 메시지(742)를 수신하고 인덱스 아톰의 그들 자신의 인스턴스를 분할하면, 그들은 "분할 적용됨"(743)을 체어맨(711)으로 송신한다. 그 다음, 체어맨(711)은 "분할 완료됨" 메시지(744)를 분할 인덱스 아톰을 갖는 노드(720, 730a)로 그리고, 분할 인덱스 아톰을 가리키는 루트 아톰을 갖는 노드(예를 들면, 트랜잭션 노드(730b))를 비롯한, 분할에 의해 영향을 받지 않는 다른 노드로 브로드캐스트한다. 이것은 도 7b의 인덱스 분할 프로세스(740)를 완료한다.
하기에서 설명되는 바와 같이, 소스 인덱스 아톰은 분할 프로세스(740)의 일부 동안 메시지를 타깃 인덱스 아톰으로 포워딩한다. 이들 메시지가 올바르게 포워딩되는 것을 보장하기 위해, 인덱스 아톰의 사본을 포함하는 각각의 노드(체어맨(711)을 포함함)는, 인덱스 아톰의 사본을 포함하는 분산형 데이터베이스 내의 모든 노드의 자신의 순서 지정된 리스트를 사용하여 인덱스 분할 진행 상황을 추적한다. 이것은 이전 인덱스 분할 프로세스와의 다른 차이점이다.
도 7c는 인덱스 아톰을 분리하기 위한 대안적인 프로세스(750)를 예시한다. 이 프로세스에서, 체어맨(711)은, 키 값에서의 인덱스 아톰의 자신의 사본을 분할하여 소스 인덱스 아톰 및 타깃 인덱스 아톰의 그 자신의 사본을 생성한다. 그것은 또한 인덱스 아톰의 인스턴스를 갖는 분산형 데이터베이스 내의 다른 노드(720, 730a)로 "분할 실행" 메시지(751)를 브로드캐스트한다. 체어맨(711)으로부터 "분할 실행" 메시지(751)를 수신하는 것에 응답하여, 이들 다른 노드(720, 730a)의 각각은 키 값에서의 인덱스 아톰의 그 자신의 사본을 분할하여 소스 인덱스 아톰 및 타깃 인덱스 아톰의 그 자신의 사본을 생성한다. 다른 인덱스 분할 프로세스에서와는 달리, 각각의 비 체어맨(non-chairman)은 "분할 적용됨" 메시지(752)를 인덱스 아톰의 사본을 갖는 모든 다른 노드로 전송한다.
노드는 다음과 같이 인덱스 분할 진행 상황을 추적한다. 일단 각각의 노드가 순서 지정된 리스트 상의 각각의 다른 노드로부터 "분할 적용됨" 메시지(752)를 수신하면, 그것은 "모두 분할 적용됨(split applied all)" 메시지(753)를 체어맨(711) 및 분할 인덱스 아톰을 갖는 다른 노드로 송신한다. 이것은 인덱스 아톰의 모든 사본이 소스 및 타깃으로 분할되었음을 나타낸다. 그 다음, 노드는 "분할 적용됨" 메시지(753)를 확인 응답하는 "분할 적용 확인 응답(split applied ack)" 메시지(754)를 교환한다. 일단 체어맨(711)이 영향을 받은 노드로부터 "분할 적용 확인 응답" 메시지(754)를 수신하면, 그것은 "분할 완료(split complete)" 메시지(755)를 브로드캐스트하는데, "분할 완료(split complete)" 메시지에 대해, 영향을 받은 노드는 "분할 완료 확인 응답(split complete ack)" 메시지(756)로 응답한다.
다시, 소스 인덱스 아톰은 도 7b와 관련하여 상기에서 그리고 하기에서 설명되는 바와 같이 분할 프로세스(750)의 일부 동안 메시지를 타깃 인덱스 아톰으로 포워딩한다. 그리고, 상기에서 언급되는 바와 같이, 이전 인덱스 분할 프로세스와의 여전히 다른 차이점에서, 체어맨(711)은, 모든 다른 노드로부터 "모두 분할 적용됨" 메시지를 수신하기 위해 대기하는 것에 의해, 하기에서 설명되는 바와 같이 모든 메시지가 소스로부터 타깃으로 포워딩될 때까지 대기한다. 그 다음, 체어맨은 "분할 완료됨" 메시지(757)를 영향을 받는 모든 노드로 브로드캐스트한다. 소스 및 타깃 아톰을 갖는 모든 노드는, 루트 아톰의 그들의 사본에서 원래의 인덱스 아톰에 대한 오래된 참조를, 새로운 소스에 대한 참조로 대체한다. 이것은 인덱스 분할 프로세스(700)를 완료한다.
인덱스 분할 동안의 메시지 포워딩
상기에서 언급되는 바와 같이, 분산형 데이터베이스는 인덱스 분할 프로세스(740 또는 750) 동안 잠기지 않는다. 결과적으로, 정보는, 그것이 분할되고 있는 동안 인덱스 아톰에 추가될 수 있으며 인덱스 아톰의 새로운 사본이 분할 동안 생성될 수 있다. 이것은 레이턴시를 감소시키고 분산형 데이터베이스를 확장시키는 것을 더 간단하고 더 쉽게 만든다.
인덱스 분할 프로세스 동안 정확성 및 데이터 무결성을 유지하기 위해, 노드는 인덱스 분할 프로세스의 소정의 기간 동안 수신된 메시지를 포워딩한다. 더 구체적으로, 노드는, 소스 아톰 상에서 브로드캐스트되지만 그러나 타깃 아톰에 대해 적용되어야 하는 메시지를 포워딩한다. 이들 메시지는 도 7b 및 도 7c에서 T0 이전에 생성된다. 일단 제1 노드가 제2 노드로부터 SplitIndexOnKey 메시지(741/751)를 수신하면, 제1 노드는 제2 노드로부터 포워딩될 필요가 있는 메시지를 수신하지 않아야 한다. 노드는, 포워딩되어야 하는 메시지가 존재할 것으로 기대되지 않다는 것을 아는 경우에만 분할을 완료하고 메시지 포워딩을 중지한다.
포워딩은 다음과 같이 발생한다. 노드가 인덱스 아톰의 자신의 사본이 소스 및 타깃으로 분할된 이후 인덱스 아톰으로 주소 지정되는 메시지를 수신하는 경우, 그것은 그 메시지를 소스로 지향시킨다. 메시지의 목적지가 분할 키 값과 동일한 또는 더 작은 키 값을 갖는 경우, 소스는 메시지에 대해 작용한다. 메시지의 목적지가 분할 키 값보다 더 큰 키 값을 갖는 경우, 소스는, 메시지에 대해 작용하는 메시지를 타깃(이 노드 상에 타깃이 존재하는 경우)으로 포워딩한다. 타깃 아톰은 소스 아톰 없이 노드 상에 존재할 수 없고, 따라서 소스 아톰으로부터 타깃 아톰으로의 포워딩은 노드에 국한되는 동작이다.
메시지 포워딩은 타깃으로 예정된 메시지가 실제로 타깃에 도달하는 것을 보장한다. 그것은, 인덱스를 분할하는 것이 모든 노드에서 동시에, 또는 몇몇 노드에서는 동시에 그리고 다른 노드에서는 상이한 시간에, 또는 인덱스 아톰의 사본을 갖는 각각의 노드에서 상이한 시간에 발생할 수 있는 가능성을 고려한다. 메시지 포워딩은, 노드가 도 7b 및 도 7c에서 도시되는 프로세스(740 및 750)에서 각각의 다른 노드로부터 "모두 분할 적용됨" 메시지를 수신할 때까지 계속된다. 이 시점에서, 체어맨은 상기에서 설명되는 바와 같이 분할 인덱스 아톰에 대응하는 루트 아톰에 타깃에 대한 참조를 삽입한다. 결과적으로, 메시지 포워딩은 더 이상 필요하지 않으며, 타깃에 대한 메시지는, 소스로 주소 지정되고 소스에 의해 타깃으로 포워딩되는 대신, 타깃으로 주소 지정된다.
다시 말하면, 인덱스 분할 프로세스(700)는, 1) 인덱스 아톰을 포함하는 모든 노드가 소스 및 타깃으로 분할되고; 2) 모든 노드가 메시지 포워딩을 더 이상 수락하지 않는다는 것을 확인 응답하고; 그리고 3) 루트가 타깃에 대한 참조를 포함하도록 수정되는: 경우, 완료되는 것으로 간주된다. 즉, 인덱스 분할 프로세스(750)는, 모든 노드가 각각의 다른 노드로부터 "모두 분할 적용됨" 메시지 및 체어맨으로부터 "분할 완료됨" 메시지 둘 모두를 획득하고 소스 및 타깃에 대해 메시지 포워딩이 더 이상 필요하지 않다는 것을 결정하는 경우 종료된다.
2 단계 인덱스 분할의 이점
인덱스 아톰을 분할하기 위한 이전의 프로세스는, 도 7b의 프로세스(740)에서와 같이 비 체어맨 노드로부터 다른(비 체어맨) 노드로 "분할됨" 메시지를 브로드캐스트하는 것을 포함하지도 않으며, 또한 그들은, 도 7c의 프로세스(750)에서와 같이, "분할 적용됨" 메시지를 비 체어맨 노드로 전송하는 것, "분할 적용됨" 메시지를 추적하는 것, 또는 "모두 분할 적용됨" 메시지를 체어맨으로 송신하는 것도 포함하지 않는다. 결과적으로, 그들은 도 7b 및 도 7c에서 각각 도시되는 프로세스(740 및 750) 보다 더 빠르고 더 적은 대역폭을 소비할 수 있다. 이것은, 이들 프로세스가, 단지 각각의 비 체어맨 노드와 체어맨 사이와는 대조적으로, 모든 노드 사이에서 메시지를 교환하는 것을 수반한다(N 개의 노드에 대한 순서 N2 개의 메시지 대 이전 인덱스 분할 프로세스에 대한 순서 N 개의 메시지). 그러나 이전 인덱스 분할 프로세스와는 달리, 이들 추가 메시지의 교환은, 심지어 노드 장애의 경우에도, 분산형 데이터베이스의 정확성 및 무결성을 유지한다.
결론
다양한 본 발명의 실시형태가 본 명세서에서 설명되고 예시되지만, 기술 분야에서 통상의 지식을 가진 자는, 기능을 수행하고 및/또는 결과 및/또는 본 명세서에서 설명되는 이점 중 하나 이상을 획득하기 위한 다양한 다른 수단 및/또는 구조를 용이하게 구상할 것이고, 그러한 변형예 및/또는 수정예의 각각은 본 명세서에서 설명되는 본 발명의 실시형태의 범위 내에 있는 것으로 간주된다. 더욱 일반적으로, 기술 분야의 숙련된 자는 본 명세서에서 설명되는 모든 파라미터, 치수, 재료, 및 구성이 예시적인 것으로 의도된다는 것 및 실제 파라미터, 치수, 재료, 및/또는 구성은 특정한 애플리케이션 또는 본 발명의 교시가 사용되는 애플리케이션에 의존할 것이다는 것을 쉽게 인식할 것이다. 기술 분야의 숙련된 자는, 단지 일상적인 실험을 사용하여, 본 명세서에서 설명되는 특정한 본 발명의 실시형태에 대한 많은 등가예를 인식할 것이거나 또는 확인할 수 있을 것이다. 따라서, 전술한 실시형태는 단지 예로서 제시된다는 것 및 첨부된 청구범위 및 그 등가의 범위 내에서, 본 발명의 실시형태는, 구체적으로 설명되고 청구되는 것과는 달리 실시될 수도 있다는 것이 이해되어야 한다. 본 개시내용의 본 발명의 실시형태는 본 명세서에서 설명되는 각각의 개개의 특징부, 시스템, 물품, 재료, 키트, 및/또는 방법에 관한 것이다. 또한, 두 개 이상의 그러한 특징부, 시스템, 물품, 재료, 키트, 및/또는 방법의 임의의 조합은, 그러한 특징부, 시스템, 물품, 재료, 키트, 및/또는 방법이 서로 일치하지 않는 경우, 본 개시내용의 본 발명의 범위 내에 포함된다.
상기에서 설명된 실시형태는 다양한 방식 중 임의의 것으로 구현될 수 있다. 예를 들면, 실시형태는 하드웨어, 소프트웨어 또는 이들의 조합을 사용하여 구현될 수도 있다. 소프트웨어로 구현되는 경우, 소프트웨어 코드는, 단일의 컴퓨터에서 제공되든 또는 다수의 컴퓨터 사이에서 분산되든 간에, 임의의 적절한 프로세서 또는 프로세서의 콜렉션(collection)에서 실행될 수 있다.
또한, 컴퓨터는, 랙 마운트형 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 또는 태블릿 컴퓨터와 같은 다수의 형태 중 임의의 형태로 구현될 수도 있다는 것이 인식되어야 한다. 추가적으로, 컴퓨터는, 개인 휴대형 정보 단말(Personal Digital Assistant: PDA), 스마트폰 또는 임의의 다른 적절한 휴대용 또는 고정식 전자 디바이스를 포함하는, 일반적으로 컴퓨터로 간주되지 않지만 그러나 적절한 처리 성능을 갖는 디바이스에 내장될 수도 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 디바이스를 구비할 수도 있다. 이들 디바이스는, 다른 것들 중에서도, 사용자 인터페이스를 제시하기 위해 사용될 수 있다. 사용자 인터페이스를 제공하기 위해 사용될 수 있는 출력 디바이스의 예는, 출력의 시각적 표현을 위한 프린터 또는 디스플레이 스크린 및 출력의 가청의 표현을 위한 스피커 또는 다른 사운드 생성 디바이스를 포함한다. 사용자 인터페이스를 위해 사용될 수 있는 입력 디바이스의 예는, 키보드, 및 포인팅 디바이스, 예컨대 마우스, 터치 패드, 및 디지타이징 태블릿을 포함한다. 다른 예로서, 컴퓨터는 음성 인식을 통해 또는 다른 가청 포맷의 입력 정보를 수신할 수도 있다.
그러한 컴퓨터는, 근거리 통신망(local area network) 또는 광역 네트워크, 예컨대 기업 네트워크, 및 지능형 네트워크(intelligent network: IN) 또는 인터넷을 비롯한, 임의의 적절한 형태의 하나 이상의 네트워크에 의해 인터커넥트될 수도 있다. 그러한 네트워크는 임의의 적절한 기술에 기초할 수도 있고 임의의 적절한 프로토콜에 따라 동작할 수도 있으며 무선 네트워크, 유선 네트워크 또는 광섬유 네트워크를 포함할 수도 있다.
본 명세서에서 개설되는 다양한 방법 또는 프로세스는, 다양한 오퍼레이팅 시스템 또는 플랫폼 중 임의의 하나를 활용하는 하나 이상의 프로세서 상에서 실행 가능한 소프트웨어로서 코딩될 수도 있다. 추가적으로, 그러한 소프트웨어는 다수의 적절한 프로그래밍 언어 및/또는 프로그래밍 또는 스크립팅 툴 중 임의의 것을 사용하여 작성될 수도 있고, 또한, 프레임워크 또는 가상 머신 상에서 실행되는 실행 가능한 기계어 코드 또는 중간 코드로서 컴파일될 수도 있다.
또한, 다양한 본 발명의 개념은 하나 이상의 방법으로서 구현될 수도 있는데, 그 중 한 예가 제공되었다. 방법의 일부로서 수행되는 동작(act)은, 임의의 적절한 방식으로 순서가 정해질 수도 있다. 따라서, 비록 예시적인 실시형태에서 순차적인 동작으로서 도시되지만, 예시되는 것과는 상이한 순서로 동작이 수행되는 실시형태가 구성될 수도 있는데, 그 상이한 순서는, 몇몇 동작을 동시에 수행하는 것을 포함할 수도 있다.
본 명세서에 언급되는 모든 공보, 특허 출원, 특허, 및 다른 참고 문헌은 참조에 의해 그들 전체가 통합된다.
본 명세서에 정의되고 사용되는 바와 같이, 모든 정의는, 사전적 정의, 참조에 의해 통합되는 문서에서의 정의, 및/또는 정의된 용어의 일반적인 의미를 지배하는 것으로 이해되어야 한다.
단수 형태의 표현은, 본 명세서의 본 명세서 및 청구의 범위에서 사용될 때, 달리 명백하게 지시되지 않는 한, "적어도 하나"를 의미하는 것으로 이해되어야 한다.
어구 "및/또는"은, 본 명세서의 본 명세서 및 청구의 범위에서 사용될 때, 그렇게 결합되는 엘리먼트, 즉 몇몇 경우에 접속적으로(conjunctively) 존재하고 다른 경우에 이접적으로(disjunctively) 존재하는 엘리먼트의 "어느 하나 또는 둘 모두"를 의미하는 것으로 이해되어야 한다. "및/또는"과 함께 열거되는 다수의 엘리먼트도 동일한 방식으로, 즉, 그렇게 결합되는 엘리먼트 중 "하나 이상"으로 해석되어야 한다. "및/또는" 조항에 의해 구체적으로 식별되는 엘리먼트 외에, 구체적으로 식별되는 그들 엘리먼트에 관련되든 또는 관련되지 않든 간에, 다른 엘리먼트가 옵션 사항으로(optionally) 존재할 수도 있다. 따라서, 비제한적인 예로서, "A 및/또는 B"에 대한 언급은, "포함하는(comprising)"과 같은 확장 가능한(open-ended) 언어와 연계하여 사용될 때, 하나의 실시형태에서, A만을(옵션 사항으로 B 이외의 엘리먼트를 포함함); 다른 실시형태에서, B만을(옵션 사항으로 A 이외의 엘리먼트를 포함함); 여전히 다른 실시형태에서, A 및 B 둘 모두를(옵션 사항으로 다른 엘리먼트를 포함함); 등등을 가리킬 수 있다.
본 명세서의 본 명세서 및 청구의 범위에서 사용될 때, "또는"은 상기에서 정의되는 "및/또는"과 동일한 의미를 갖는 것으로 이해되어야 한다. 예를 들면, 리스트에서 항목을 분리할 때, "또는" 또는 "및/또는"은 포괄적인 것으로, 즉, 다수의 엘리먼트 또는 엘리먼트의 리스트 중 적어도 하나뿐만 아니라, 또한 그들의 하나 이상, 및 옵션 사항으로, 추가적인 열거되지 않은 항목의 포함으로서 해석되어야 한다. "~중 단지 하나(only one of)" 또는 "~중 정확히 하나(exactly one of)", 또는, 청구범위에서 사용될 때, "~으로 구성되는(consisting of)"과 같은, 명확하게 반대로 나타내어지는 용어만이, 다수의 엘리먼트 또는 엘리먼트의 리스트 중 정확히 하나의 엘리먼트의 포함을 가리킬 것이다. 일반적으로, 용어 "또는"은, 본 명세서에서 사용될 때, "어느 하나", "~중 하나", "~중 단지 하나", 또는 "~중 정확히 하나"와 같은, 배타성의 용어가 후속되는 경우, 배타적 양자택일(즉, "하나 또는 다른 것 그러나 둘 모두는 아님")을 나타내는 것으로만 해석되어야 한다. "~로 본질적으로 구성되는(consisting essentially of)"은, 청구범위에서 사용될 때, 특허법의 분야에서 사용되는 바와 같은 자신의 일반적인 의미를 가져야 한다.
본 명세서의 본 명세서 및 청구의 범위에서 사용될 때, 어구 "적어도 하나(at least one)"는, 하나 이상의 엘리먼트의 리스트와 관련하여, 엘리먼트의 그 리스트 내의 엘리먼트 중 임의의 하나 이상으로부터 선택되는 적어도 하나의 엘리먼트를 의미하는 것으로 이해되어야 하고, 엘리먼트의 그 리스트 내에서 구체적으로 열거되는 각각의 엘리먼트 및 모든 엘리먼트 중 적어도 하나를 반드시 포함하지는 않으며 엘리먼트의 리스트 내의 엘리먼트의 임의의 조합을 배제하지도 않는다. 이 정의는 또한, 어구 "적어도 하나"가 참조하는 엘리먼트의 리스트 내에서 명시적으로 식별되는 엘리먼트 이외의 엘리먼트가, 명시적으로 식별되는 그들 엘리먼트에 관련되든 또는 관련되지 않든 간에, 옵션 사항으로 존재할 수도 있다는 것을 허용한다. 따라서, 비제한적인 예로서, "A 및 B 중 적어도 하나"(또는, 등가적으로, "A 또는 B 중 적어도 하나", 또는, 등가적으로 "A 및/또는 B 중 적어도 하나")는, 하나의 실시형태에서, B는 없이(그리고 옵션 사항으로 B 이외의 엘리먼트를 포함함), 옵션 사항으로 하나보다 더 많은 것을 포함하는, 적어도 하나의 A를; 다른 실시형태에서, A는 없이(그리고 옵션 사항으로 A 이외의 엘리먼트를 포함함), 옵션 사항으로 하나보다 더 많은 것을 포함하는, 적어도 하나의 B를; 여전히 다른 실시형태에서, 옵션 사항으로 하나보다 더 많은 것을 포함하는, 적어도 하나의 A, 및 옵션 사항으로 하나보다 더 많은 것을 포함하는, 적어도 하나의 B(및 옵션 사항으로 다른 엘리먼트를 포함함)를; 등등을 가리킬 수 있다.
청구범위뿐만 아니라, 위에 기재된 명세서에서, "포함하는(comprising)", "포함하는(including)", "지니는(carrying)", "갖는(having)", "함유하는(containing)", "수반하는(involving)", "유지하는(holding)", "~로 구성되는(composed of)", 및 등등과 같은 모든 이행 어구(transitional phrase)는, 확장 가능한 것으로, 즉, 포함하지만 그러나 제한되지는 않는을 의미하는 것으로 이해되어야 한다. 오로지 이행 어구 "~로 구성되는(consisting of)" 및 "~로 본질적으로 구성되는(consisting essentially of)"만이, 미국 특허청 특허 심사 절차 매뉴얼 섹션 2111.03에 기술되는 바와 같이, 각각, 닫힌(closed) 또는 반닫힌(semi-closed) 이행 어구일 수 있을 것이다.

Claims (20)

  1. 분산형 데이터베이스 내의 복수의 아톰(atom)에서 인덱스 아톰(index atom)을 분할하는 방법으로서,
    상기 분산형 데이터베이스는 복수의 노드를 포함하고, 상기 복수의 노드 내의 각각의 노드는 대응하는 프로세서 및 대응하는 메모리를 포함하고, 상기 복수의 노드 내의 하나의 노드는 상기 인덱스 아톰에 대한 체어맨(chairman)으로 지정되고 상기 인덱스 아톰의 체어맨의 인스턴스를 포함하고, 상기 방법은,
    상기 체어맨에 의해, 상기 인덱스 아톰의 상기 체어맨의 인스턴스를 분할하는 단계로서, 상기 인덱스 아톰의 상기 체어맨의 인스턴스는 상기 분산형 데이터베이스에 저장되는 데이터 및/또는 메타데이터를 나타내는, 상기 체어맨의 인스턴스를 분할하는 단계;
    상기 체어맨에 의해, 상기 인덱스 아톰을 분할하기 위한 인스트럭션(instruction)을 상기 복수의 노드 내의 적어도 서브세트의 노드로 송신하는 단계로서, 상기 적어도 서브세트의 노드 내의 각각의 노드는 상기 인덱스 아톰의 대응하는 인스턴스를 포함하는, 상기 인스트럭션을 송신하는 단계;
    상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 인덱스 아톰의 대응하는 인스턴스를 소스 아톰(source atom)의 대응하는 인스턴스 및 타깃 아톰(target atom)의 대응하는 인스턴스로 분할하는 단계;
    상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 재송신하는 단계;
    상기 인덱스 아톰의 대응하는 인스턴스가 분할되었음을 나타내는 확인 응답(acknowledgement)을, 상기 적어도 서브세트의 노드 내의 각각의 노드로부터 상기 체어맨 및 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 송신하는 단계;
    상기 적어도 서브세트의 노드 내의 각각의 노드에서 상기 인덱스 아톰의 대응하는 인스턴스가 분할되었음을 나타내는 메시지를, 상기 적어도 서브세트의 노드 내의 각각의 노드로부터 상기 체어맨 및 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 송신하는 단계;
    상기 인덱스 아톰이 분할되었음을 나타내는 메시지를, 상기 체어맨으로부터 상기 적어도 서브세트의 노드로 송신하는 단계;
    상기 인덱스 아톰이 분할되었음을 나타내는 메시지의 확인 응답을, 상기 적어도 서브세트의 노드 내의 각각의 노드로부터 상기 체어맨으로 송신하는 단계;
    분할이 완료되었음을 나타내는 메시지를, 상기 체어맨으로부터 상기 적어도 서브세트의 노드로 송신하는 단계; 및
    상기 적어도 서브세트의 노드 내의 제1 노드에서, 상기 소스 아톰의 제1 인스턴스로부터 상기 타깃 아톰의 제1 인스턴스로 메시지를 포워딩하는 단계
    를 포함하고,
    상기 제1 노드는, 상기 소스 아톰의 제1 인스턴스로부터 상기 타깃 아톰의 제1 인스턴스로 메시지를 포워딩한 후, 확인 응답을 상기 체어맨 및 상기 복수의 노드 내의 각각의 다른 노드로 송신하는 것인, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
  2. 제1항에 있어서, 상기 체어맨에서 상기 인덱스 아톰의 상기 체어맨의 인스턴스를 분할하는 단계는, 상기 인덱스 아톰의 상기 체어맨의 인스턴스에 새로운 값을 삽입하는 요청에 응답하여 발생하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
  3. 제1항에 있어서,
    상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 노드에 의해 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로부터 수신하는 단계를 더 포함하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
  4. 제3항에 있어서, 상기 제1 노드는, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로부터 수신하는 것에 응답하여, 상기 확인 응답을 상기 체어맨으로 송신하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 체어맨에 의해, 상기 인덱스 아톰이 분할되었음을 나타내는 메시지를 상기 복수의 노드 내의 다른 노드로 송신하는 단계를 더 포함하되, 상기 다른 노드는 상기 인덱스 아톰에 대한 참조(reference)를 포함하는 루트 아톰(root atom)을 포함하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
  8. 분산형 데이터베이스로서,
    복수의 노드를 포함하되, 상기 복수의 노드 내의 각각의 노드는 대응하는 프로세서 및 대응하는 메모리를 포함하고, 상기 복수의 노드는,
    인덱스 아톰의 제1 인스턴스를 포함하는 제1 노드로서, 상기 인덱스 아톰은 상기 분산형 데이터베이스에 저장되는 데이터 및/또는 메타데이터를 나타내는, 상기 제1 노드;
    상기 인덱스 아톰의 제2 인스턴스를 포함하는 제2 노드; 및
    상기 인덱스 아톰의 제3 인스턴스를 포함하는 제3 노드를 포함하고,
    상기 제1 노드는 상기 인덱스 아톰의 상기 제1 인스턴스를 소스 아톰의 제1 인스턴스 및 타깃 아톰의 제1 인스턴스로 분할하도록 그리고 상기 인덱스 아톰을 분할하기 위한 인스트럭션을 상기 제2 노드 및 상기 제3 노드로 송신하도록 구성되고,
    상기 제2 노드는 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 제3 노드로 재송신하고, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션에 응답하여 상기 인덱스 아톰의 상기 제2 인스턴스를 상기 소스 아톰의 제2 인스턴스 및 상기 타깃 아톰의 제2 인스턴스로 분할하고, 상기 소스 아톰의 상기 제2 인스턴스 상에서 상기 타깃 아톰의 상기 제2 인스턴스로 예정된 메시지를 수신하고, 상기 메시지를 상기 소스 아톰의 상기 제2 인스턴스로부터 상기 타깃 아톰의 상기 제2 인스턴스로 포워딩하고, 상기 메시지가 상기 타깃 아톰의 상기 제2 인스턴스로 포워딩된후 상기 인덱스 아톰의 상기 제2 인스턴스가 분할되었음을 나타내는 확인 응답을 상기 제1 노드 및 상기 상기 제3 노드로 송신하도록 구성되고,
    상기 제3 노드는 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 제2 노드로 재송신하고, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션에 응답하여 상기 인덱스 아톰의 상기 제3 인스턴스를 상기 소스 아톰의 제3 인스턴스 및 상기 타깃 아톰의 제3 인스턴스로 분할하고, 상기 인덱스 아톰의 상기 제3 인스턴스가 분할되었음을 나타내는 확인 응답을 상기 제1 노드 및 상기 상기 제2 노드로 송신하도록 구성되는, 분산형 데이터베이스.
  9. 삭제
  10. 제8항에 있어서, 상기 제1 노드는, 상기 인덱스 아톰의 상기 제2 인스턴스가 분할되었음을 나타내는 상기 확인 응답을 수신하는 것에 그리고 상기 인덱스 아톰의 상기 제3 인스턴스가 분할되었음을 나타내는 확인 응답을 상기 제3 노드로부터 수신하는 것에 응답하여, 상기 인덱스 아톰이 분할되었음을 나타내는 메시지를 상기 제2 노드로 전송하도록 구성되고,
    상기 제2 노드 및 상기 제3 노드는 상기 제1 노드로부터의 메시지를 확인 응답하는 응답(response)을 상기 제1 노드로 전송하도록 구성되는, 분산형 데이터베이스.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법으로서,
    상기 분산형 데이터베이스는 복수의 노드를 포함하고, 상기 인덱스 아톰은 상기 분산형 데이터베이스에 저장되는 데이터 및/또는 메타데이터를 나타내고, 상기 복수의 노드 내의 각각의 노드는 대응하는 프로세서 및 대응하는 메모리를 포함하고, 상기 복수의 노드 내의 하나의 노드는 상기 인덱스 아톰에 대한 체어맨으로 지정되고 상기 인덱스 아톰의 체어맨의 인스턴스를 포함하고, 상기 방법은:
    상기 체어맨에 의해, 상기 인덱스 아톰의 상기 체어맨의 인스턴스를 소스 아톰의 체어맨의 인스턴스 및 타깃 아톰의 체어맨의 인스턴스로 분할하는 단계로서, 상기 소스 아톰의 상기 체어맨의 인스턴스는 분할 키 값 미만의 값을 포함하고 상기 타깃 아톰의 상기 체어맨의 인스턴스는 상기 분할 키 값보다 더 큰 값을 포함하는, 상기 체어맨의 인스턴스를 분할하는 단계;
    상기 체어맨에 의해, 상기 분할 키 값에서 상기 인덱스 아톰을 분할하기 위한 인스트럭션을 상기 복수의 노드 내의 적어도 서브세트의 노드로 송신하는 단계로서, 상기 적어도 서브세트의 노드 내의 각각의 노드는 상기 인덱스 아톰의 대응하는 인스턴스를 포함하는, 상기 송신하는 단계;
    상기 적어도 서브세트의 노드 내의 제1 노드에 의해, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 재송신하는 단계;
    상기 적어도 서브세트의 노드 내의 상기 제1 노드에 의해, 상기 인덱스 아톰의 제1 인스턴스를 소스 아톰의 제1 인스턴스 및 타깃 아톰의 제1 인스턴스로 분할하는 단계로서, 상기 소스 아톰의 상기 제1 인스턴스는 상기 분할 키 값 미만의 값을 포함하고 상기 타깃 아톰의 상기 제1 인스턴스는 상기 분할 키 값보다 더 큰 값을 포함하는, 상기 인덱스 아톰의 제1 인스턴스를 분할하는 단계;
    상기 제1 노드에 의해 상기 소스 아톰의 제1 인스턴스 상에서, 상기 분할 키 값보다 더 큰 키 값을 참조하는 제1 메시지를 수신하는 단계;
    상기 제1 노드에 의해, 상기 소스 아톰의 상기 제1 인스턴스로부터 상기 타깃 아톰의 상기 제1 인스턴스로 상기 제1 메시지를 포워딩하는 단계;
    상기 제1 노드로부터 상기 체어맨으로, 상기 제1 노드에서 상기 인덱스 아톰의 상기 제1 인스턴스가 분할되었음을 나타내는 확인 응답을 송신하는 단계;
    상기 인덱스 아톰을 참조하는 루트 아톰 내의 상기 타깃 아톰에 참조를 삽입하는 단계;
    상기 적어도 서브세트의 노드 내의 각각의 노드에서 상기 인덱스 아톰이 분할되었음을 나타내는 메시지를 상기 체어맨으로부터 상기 적어도 서브세트의 노드로 송신하는 단계; 및
    상기 제1 노드에 의해 상기 타깃 아톰의 상기 제1 인스턴스 상에서, 상기 분할 키 값보다 더 큰 키 값을 참조하는 제2 메시지를 수신하는 단계
    를 포함하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
  19. 제18항에 있어서, 상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 인덱스 아톰을 분할하는 것에 대한 상기 적어도 서브세트의 노드 내의 다른 노드들의 진행 상황을 추적하는 단계를 더 포함하는 방법.
  20. 제18항에 있어서, 상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 적어도 서브세트의 노드 내의 각각의 노드에서 상기 인덱스 아톰이 분할되었음을 나타내는 상기 체어맨으로부터의 메시지를 확인 응답하는 단계를 더 포함하는 방법.
KR1020207006901A 2017-08-15 2018-08-15 분산형 데이터베이스에서의 인덱스 분할 KR102600366B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762545791P 2017-08-15 2017-08-15
US62/545,791 2017-08-15
PCT/US2018/000142 WO2019035878A1 (en) 2017-08-15 2018-08-15 INDEX DIVISION IN DISTRIBUTED DATA BASES

Publications (2)

Publication Number Publication Date
KR20200056990A KR20200056990A (ko) 2020-05-25
KR102600366B1 true KR102600366B1 (ko) 2023-11-08

Family

ID=65362383

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207006901A KR102600366B1 (ko) 2017-08-15 2018-08-15 분산형 데이터베이스에서의 인덱스 분할

Country Status (8)

Country Link
US (2) US11573940B2 (ko)
EP (1) EP3669286A4 (ko)
KR (1) KR102600366B1 (ko)
CN (1) CN111213138A (ko)
AU (1) AU2018316601B2 (ko)
IL (1) IL272641B2 (ko)
SG (1) SG11202001323XA (ko)
WO (1) WO2019035878A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10740323B1 (en) 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110231447A1 (en) * 2010-03-18 2011-09-22 Nimbusdb Inc. Database Management System
US20160350392A1 (en) * 2015-05-29 2016-12-01 Nuodb, Inc. Table partitioning within distributed database systems

Family Cites Families (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4733353A (en) 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
US4853843A (en) 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US5764877A (en) 1991-06-25 1998-06-09 Digital Equipment Corporation Media recovery with time-split B-trees
JP2708657B2 (ja) 1992-02-18 1998-02-04 富士通株式会社 スプリット制御方法
US5555404A (en) 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
ES2100082T3 (es) 1993-07-07 1997-06-01 Europ Computer Ind Res Estructuras de bases de datos.
US5446887A (en) 1993-09-17 1995-08-29 Microsoft Corporation Optimal reorganization of a B-tree
US5524240A (en) 1994-05-24 1996-06-04 Panasonic Technologies, Inc. Method and apparatus for storage and retrieval of handwritten information
CA2167790A1 (en) 1995-01-23 1996-07-24 Donald S. Maier Relational database system and method with high data availability during table data restructuring
US5960194A (en) 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US6216151B1 (en) 1995-12-13 2001-04-10 Bea Systems, Inc. Saving connection time by obtaining result of request at later reconnection with server supplied associated key
US5806065A (en) 1996-05-06 1998-09-08 Microsoft Corporation Data system with distributed tree indexes and method for maintaining the indexes
US6792432B1 (en) 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6499036B1 (en) 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
JP2003528358A (ja) 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
US6226650B1 (en) 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US6334125B1 (en) 1998-11-17 2001-12-25 At&T Corp. Method and apparatus for loading data into a cube forest data structure
US6424967B1 (en) 1998-11-17 2002-07-23 At&T Corp. Method and apparatus for querying a cube forest data structure
US6275863B1 (en) 1999-01-25 2001-08-14 International Business Machines Corp. System and method for programming and executing long running transactions
US6401096B1 (en) 1999-03-26 2002-06-04 Paul Zellweger Method and apparatus for generating user profile reports using a content menu
US6748394B2 (en) 2000-04-27 2004-06-08 Hyperion Solutions Corporation Graphical user interface for relational database
US6523036B1 (en) 2000-08-01 2003-02-18 Dantz Development Corporation Internet database system
US20020165942A1 (en) 2001-01-29 2002-11-07 Ulrich Thomas R. Data path accelerator with variable parity, variable length, and variable extent parity groups
US7493391B2 (en) 2001-02-12 2009-02-17 International Business Machines Corporation System for automated session resource clean-up by determining whether server resources have been held by client longer than preset thresholds
US20020152262A1 (en) 2001-04-17 2002-10-17 Jed Arkin Method and system for preventing the infringement of intellectual property rights
US20020152261A1 (en) 2001-04-17 2002-10-17 Jed Arkin Method and system for preventing the infringement of intellectual property rights
EP1386199B1 (en) 2001-05-10 2006-06-14 Ranco Incorporated of Delaware System and method for performing diagnostics using a portable device
US6480857B1 (en) 2001-06-07 2002-11-12 David Chandler Method of organizing hierarchical data in a relational database
US6880002B2 (en) 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US7026043B2 (en) 2001-10-12 2006-04-11 Owens Corning Composites Sprl Sheet molding compound having improved surface characteristics
US7233960B1 (en) 2001-10-31 2007-06-19 Numoda Corporation System and method for mobile wireless electronic data capture and distribution of a merchant card-processing application
US7146564B2 (en) 2001-12-21 2006-12-05 Xmlcities, Inc. Extensible stylesheet designs using meta-tag and/or associated meta-tag information
US7184421B1 (en) 2001-12-21 2007-02-27 Itt Manufacturing Enterprises, Inc. Method and apparatus for on demand multicast and unicast using controlled flood multicast communications
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
GB0202600D0 (en) 2002-02-05 2002-03-20 Ibm Consolidation of replicated data
JP4036661B2 (ja) 2002-03-01 2008-01-23 日本電信電話株式会社 複製データ管理方法、ノード、プログラム、記録媒体
CA2383713A1 (en) 2002-04-26 2003-10-26 Ibm Canada Limited-Ibm Canada Limitee Managing attribute-tagged index entries
US20030220935A1 (en) 2002-05-21 2003-11-27 Vivian Stephen J. Method of logical database snapshot for log-based replication
US7096216B2 (en) 2002-07-20 2006-08-22 Microsoft Corporation Performing operations on a set of objects in a database system
US7222131B1 (en) 2002-09-24 2007-05-22 Rockwell Automation Technologies, Inc. System and methodology facilitating data warehousing of controller images in a distributed industrial controller environment
JP4022755B2 (ja) 2003-01-21 2007-12-19 ソニー株式会社 記録装置、再生装置、ファイル管理方法及びファイル再生方法
US7346635B2 (en) 2003-01-21 2008-03-18 Connection Concepts, Inc. System and method for transferring a database from one location to another over a network
JP2004362106A (ja) 2003-06-03 2004-12-24 Sony Corp 電子機器、ディレクトリ生成方法、ディレクトリ読込み方法及びコンピュータプログラム
US20050086384A1 (en) 2003-09-04 2005-04-21 Johannes Ernst System and method for replicating, integrating and synchronizing distributed information
US7219102B2 (en) 2003-12-22 2007-05-15 International Business Machines Corporation Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees
US20050198062A1 (en) 2004-03-05 2005-09-08 Shapiro Richard B. Method and apparatus for accelerating data access operations in a database system
US7395352B1 (en) 2004-03-12 2008-07-01 Netapp, Inc. Managing data replication relationships
US7293039B1 (en) 2004-03-12 2007-11-06 Network Appliance, Inc. Storage resource management across multiple paths
US7657529B2 (en) 2004-03-26 2010-02-02 Oracle International Corporation Method of providing shared objects and node-specific objects in a cluster file system
US20060010130A1 (en) 2004-07-09 2006-01-12 Avraham Leff Method and apparatus for synchronizing client transactions executed by an autonomous client
US7353227B2 (en) 2004-07-23 2008-04-01 Sap Aktiengesellschaft Conflict resolution engine
JP2006048507A (ja) 2004-08-06 2006-02-16 Nippon Telegr & Teleph Corp <Ntt> ファイル検索方法、端末、プログラム、および記録媒体
US8122201B1 (en) 2004-09-21 2012-02-21 Emc Corporation Backup work request processing by accessing a work request of a data record stored in global memory
US7778984B2 (en) 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
US7562102B1 (en) 2004-11-29 2009-07-14 Progress Software Corporation Extensible handling of new or modified data within an independent distributed database system
GB0428109D0 (en) 2004-12-23 2005-01-26 Ibm A method for determining participation in a distributed transaction
US7890508B2 (en) 2005-08-19 2011-02-15 Microsoft Corporation Database fragment cloning and management
JP4747733B2 (ja) 2005-08-22 2011-08-17 ブラザー工業株式会社 ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
US7930346B2 (en) 2005-08-24 2011-04-19 Microsoft Corporation Security in peer to peer synchronization applications
US8043388B2 (en) 2005-12-13 2011-10-25 Himmelsbach Holdings, Llc Grafted polymer drag-reducing agents, grafted polymer fuel additives and production methods therefor
FR2895102B1 (fr) 2005-12-19 2012-12-07 Dxo Labs Procede pour traiter un objet dans une plateforme a processeur(s) et memoire(s) et plateforme utilisant le procede
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US8554758B1 (en) * 2005-12-29 2013-10-08 Amazon Technologies, Inc. Method and apparatus for monitoring and maintaining health in a searchable data service
US7853624B2 (en) 2006-05-02 2010-12-14 International Business Machines Corporation System and method for optimizing distributed and hybrid queries in imperfect environments
US20070288526A1 (en) 2006-06-08 2007-12-13 Emc Corporation Method and apparatus for processing a database replica
RU2315349C1 (ru) 2006-07-12 2008-01-20 Михаил ТОПР Способ репликации информации в распределенных базах данных и система для его осуществления
US7577658B2 (en) 2006-10-06 2009-08-18 Microsoft Corporation Hierarchical locking in B-tree indexes
US8269763B2 (en) 2006-11-03 2012-09-18 Apple Inc. Continuous random access points
US7747589B2 (en) 2007-03-12 2010-06-29 Microsoft Corporation Transaction time indexing with version compression
CN101251843B (zh) 2007-11-23 2010-06-30 华中科技大学 一种用于数据网格的全分布式副本定位方法
US8266122B1 (en) 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
CN101471845B (zh) 2007-12-27 2011-06-15 中国移动通信集团公司 数据块副本数量调整方法及元数据服务器节点
US8392482B1 (en) 2008-03-31 2013-03-05 Amazon Technologies, Inc. Versioning of database partition maps
US8346824B1 (en) 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
US7962458B2 (en) 2008-06-12 2011-06-14 Gravic, Inc. Method for replicating explicit locks in a data replication engine
WO2010034608A1 (en) 2008-09-24 2010-04-01 Telefonaktiebolaget Lm Ericsson (Publ) System and method for configuration of processing clusters
US9740727B2 (en) 2008-10-10 2017-08-22 Abb Schweiz Ag Method and a system for replicating databases
US20100115246A1 (en) 2008-10-31 2010-05-06 Yahoo! Inc. System and method of data partitioning for parallel processing of dynamically generated application data
US9424287B2 (en) 2008-12-16 2016-08-23 Hewlett Packard Enterprise Development Lp Continuous, automated database-table partitioning and database-schema evolution
US8078825B2 (en) 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US8108343B2 (en) 2009-04-23 2012-01-31 Microsoft Corporation De-duplication and completeness in multi-log based replication
WO2011046813A2 (en) 2009-10-12 2011-04-21 Veeam Software International Ltd. Item-level restoration and verification of image level backups
CA2777425C (en) 2009-10-13 2016-06-21 Open Text Software Gmbh Method for performing transactions on data and a transactional database
US9152514B2 (en) 2009-11-24 2015-10-06 Cleversafe, Inc. Rebuilding a data segment in a dispersed storage network
US9824095B1 (en) 2010-05-03 2017-11-21 Panzura, Inc. Using overlay metadata in a cloud controller to generate incremental snapshots for a distributed filesystem
US8718070B2 (en) 2010-07-06 2014-05-06 Nicira, Inc. Distributed network virtualization apparatus and method
US8868748B2 (en) 2010-10-11 2014-10-21 International Business Machines Corporation Two-level management of locks on shared resources
US8386533B2 (en) 2010-11-30 2013-02-26 Oracle International Corporation Records management of database tables
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
DE112012004099T5 (de) 2011-09-30 2014-07-17 International Business Machines Corp. Transaktionsverarbeitungssystem, Verfahren und Programm
US9690679B2 (en) 2011-10-31 2017-06-27 Hewlett Packard Enterprise Development Lp Transaction commitment and replication in a storage system
US20130110781A1 (en) 2011-10-31 2013-05-02 Wojciech Golab Server replication and transaction commitment
US8996456B2 (en) * 2011-11-14 2015-03-31 Google Inc. Data processing service
US8812564B2 (en) 2011-12-20 2014-08-19 Sap Ag Parallel uniqueness checks for partitioned tables
US8762378B2 (en) * 2011-12-23 2014-06-24 Sap Ag Independent table nodes in parallelized database environments
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
US8930312B1 (en) 2012-01-17 2015-01-06 Amazon Technologies, Inc. System and method for splitting a replicated data partition
US9008316B2 (en) 2012-03-29 2015-04-14 Microsoft Technology Licensing, Llc Role-based distributed key management
US8812539B2 (en) 2012-03-31 2014-08-19 Bmc Software, Inc. Unique attribute constraints for versioned database objects
US20130278412A1 (en) 2012-04-20 2013-10-24 Detcon, Inc. Networked system and methods for detection of hazardous conditions
US8756237B2 (en) 2012-10-12 2014-06-17 Architecture Technology Corporation Scalable distributed processing of RDF data
US9218383B2 (en) 2013-03-15 2015-12-22 International Business Machines Corporation Differentiated secondary index maintenance in log structured NoSQL data stores
US9501363B1 (en) 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
US10740323B1 (en) 2013-03-15 2020-08-11 Nuodb, Inc. Global uniqueness checking in distributed databases
US11176111B2 (en) 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US9342556B2 (en) 2013-04-01 2016-05-17 International Business Machines Corporation RDF graphs made of RDF query language queries
WO2014168913A1 (en) 2013-04-08 2014-10-16 Nuodb, Inc. Database management system with database hibernation and bursting
US9589041B2 (en) 2013-07-25 2017-03-07 Oracle International Corporation Client and server integration for replicating data
US9697215B2 (en) 2013-09-04 2017-07-04 Oracle International Corporation Systems and methods for resumable replication
US9276959B2 (en) 2013-11-11 2016-03-01 Amazon Technologies, Inc. Client-configurable security options for data streams
US9710186B2 (en) 2014-06-20 2017-07-18 Ca, Inc. Performing online data migration with concurrent active user access to the data
US9734021B1 (en) 2014-08-18 2017-08-15 Amazon Technologies, Inc. Visualizing restoration operation granularity for a database
US10102240B2 (en) 2014-11-11 2018-10-16 Inernational Business Machines Corporation Managing event metrics for service management analytics
US10884869B2 (en) 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US20160371355A1 (en) 2015-06-19 2016-12-22 Nuodb, Inc. Techniques for resource description framework modeling within distributed database systems
US10496283B2 (en) * 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110231447A1 (en) * 2010-03-18 2011-09-22 Nimbusdb Inc. Database Management System
US20160350392A1 (en) * 2015-05-29 2016-12-01 Nuodb, Inc. Table partitioning within distributed database systems

Also Published As

Publication number Publication date
AU2018316601A1 (en) 2020-02-27
CN111213138A (zh) 2020-05-29
EP3669286A1 (en) 2020-06-24
US20230161747A1 (en) 2023-05-25
EP3669286A4 (en) 2021-06-23
AU2018316601B2 (en) 2023-02-02
US11573940B2 (en) 2023-02-07
KR20200056990A (ko) 2020-05-25
IL272641A (en) 2020-03-31
US20200257667A1 (en) 2020-08-13
IL272641B2 (en) 2023-08-01
SG11202001323XA (en) 2020-03-30
WO2019035878A1 (en) 2019-02-21
IL272641B1 (en) 2023-04-01

Similar Documents

Publication Publication Date Title
US11860900B2 (en) Log-based distributed transaction management
US10078681B2 (en) Differentiated secondary index maintenance in log structured NoSQL data stores
US8504523B2 (en) Database management system
CN102037463B (zh) 使用全局确认的提交进行分布式事务的基于日志的复制
JP5387757B2 (ja) 並列データ処理システム、並列データ処理方法及びプログラム
US20100121817A1 (en) Database replication
CN101184106A (zh) 一种移动数据库的关联事务处理方法
US10324905B1 (en) Proactive state change acceptability verification in journal-based storage systems
US20220035786A1 (en) Distributed database management system with dynamically split b-tree indexes
WO2021016440A1 (en) Methods and systems for garbage deletion in a document database
US20230161747A1 (en) Index splitting in distributed databases
Charlaganov et al. The entity registry system: Implementing 5-star linked data without the web
KR20190005578A (ko) 인메모리 기반의 분산 데이터베이스 관리 방법 및 시스템
Radi Improved aggressive update propagation technique in cloud data storage
US8082334B1 (en) Providing direct access to managed content
Fjällid A comparative study of databases for storing sensor data
Mehdi Scalability through asynchrony in transactional storage systems
Rothsberg Evaluation of using NoSQL databases in an event sourcing system
Cilloni Towards a unifying modeling framework for data-intensive tools
Faria High Performance Data Processing
Yap Transparent consistency in Cache Augmented Database Management Systems
US11599520B1 (en) Consistency management using query restrictions in journal-based storage systems
Nejad et al. Semantic log based replication model for optimizing heterogeneous DBMS interaction
Susarla Configurable consistency for wide-area caching
Birman et al. Transactional Systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant