KR102600366B1 - 분산형 데이터베이스에서의 인덱스 분할 - Google Patents
분산형 데이터베이스에서의 인덱스 분할 Download PDFInfo
- 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
Links
- 238000000638 solvent extraction Methods 0.000 title claims description 33
- 238000000034 method Methods 0.000 claims abstract description 78
- 238000005192 partition Methods 0.000 claims abstract description 8
- 230000004044 response Effects 0.000 claims description 18
- 230000008569 process Effects 0.000 abstract description 52
- 230000000644 propagated effect Effects 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 9
- 238000012360 testing method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 239000000463 material Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Peptides Or Proteins (AREA)
- Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
- Developing Agents For Electrophotography (AREA)
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는 분산형 데이터베이스 전체에 걸쳐 정확성 및 일관성을 유지하면서 인덱스 아톰을 분할하기 위한 대안적인 프로세스를 예시한다.
도 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)
- 분산형 데이터베이스 내의 복수의 아톰(atom)에서 인덱스 아톰(index atom)을 분할하는 방법으로서,
상기 분산형 데이터베이스는 복수의 노드를 포함하고, 상기 복수의 노드 내의 각각의 노드는 대응하는 프로세서 및 대응하는 메모리를 포함하고, 상기 복수의 노드 내의 하나의 노드는 상기 인덱스 아톰에 대한 체어맨(chairman)으로 지정되고 상기 인덱스 아톰의 체어맨의 인스턴스를 포함하고, 상기 방법은,
상기 체어맨에 의해, 상기 인덱스 아톰의 상기 체어맨의 인스턴스를 분할하는 단계로서, 상기 인덱스 아톰의 상기 체어맨의 인스턴스는 상기 분산형 데이터베이스에 저장되는 데이터 및/또는 메타데이터를 나타내는, 상기 체어맨의 인스턴스를 분할하는 단계;
상기 체어맨에 의해, 상기 인덱스 아톰을 분할하기 위한 인스트럭션(instruction)을 상기 복수의 노드 내의 적어도 서브세트의 노드로 송신하는 단계로서, 상기 적어도 서브세트의 노드 내의 각각의 노드는 상기 인덱스 아톰의 대응하는 인스턴스를 포함하는, 상기 인스트럭션을 송신하는 단계;
상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 인덱스 아톰의 대응하는 인스턴스를 소스 아톰(source atom)의 대응하는 인스턴스 및 타깃 아톰(target atom)의 대응하는 인스턴스로 분할하는 단계;
상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 재송신하는 단계;
상기 인덱스 아톰의 대응하는 인스턴스가 분할되었음을 나타내는 확인 응답(acknowledgement)을, 상기 적어도 서브세트의 노드 내의 각각의 노드로부터 상기 체어맨 및 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 송신하는 단계;
상기 적어도 서브세트의 노드 내의 각각의 노드에서 상기 인덱스 아톰의 대응하는 인스턴스가 분할되었음을 나타내는 메시지를, 상기 적어도 서브세트의 노드 내의 각각의 노드로부터 상기 체어맨 및 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 송신하는 단계;
상기 인덱스 아톰이 분할되었음을 나타내는 메시지를, 상기 체어맨으로부터 상기 적어도 서브세트의 노드로 송신하는 단계;
상기 인덱스 아톰이 분할되었음을 나타내는 메시지의 확인 응답을, 상기 적어도 서브세트의 노드 내의 각각의 노드로부터 상기 체어맨으로 송신하는 단계;
분할이 완료되었음을 나타내는 메시지를, 상기 체어맨으로부터 상기 적어도 서브세트의 노드로 송신하는 단계; 및
상기 적어도 서브세트의 노드 내의 제1 노드에서, 상기 소스 아톰의 제1 인스턴스로부터 상기 타깃 아톰의 제1 인스턴스로 메시지를 포워딩하는 단계
를 포함하고,
상기 제1 노드는, 상기 소스 아톰의 제1 인스턴스로부터 상기 타깃 아톰의 제1 인스턴스로 메시지를 포워딩한 후, 확인 응답을 상기 체어맨 및 상기 복수의 노드 내의 각각의 다른 노드로 송신하는 것인, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법. - 제1항에 있어서, 상기 체어맨에서 상기 인덱스 아톰의 상기 체어맨의 인스턴스를 분할하는 단계는, 상기 인덱스 아톰의 상기 체어맨의 인스턴스에 새로운 값을 삽입하는 요청에 응답하여 발생하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
- 제1항에 있어서,
상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 노드에 의해 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로부터 수신하는 단계를 더 포함하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법. - 제3항에 있어서, 상기 제1 노드는, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로부터 수신하는 것에 응답하여, 상기 확인 응답을 상기 체어맨으로 송신하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법.
- 삭제
- 삭제
- 제1항에 있어서,
상기 체어맨에 의해, 상기 인덱스 아톰이 분할되었음을 나타내는 메시지를 상기 복수의 노드 내의 다른 노드로 송신하는 단계를 더 포함하되, 상기 다른 노드는 상기 인덱스 아톰에 대한 참조(reference)를 포함하는 루트 아톰(root atom)을 포함하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법. - 분산형 데이터베이스로서,
복수의 노드를 포함하되, 상기 복수의 노드 내의 각각의 노드는 대응하는 프로세서 및 대응하는 메모리를 포함하고, 상기 복수의 노드는,
인덱스 아톰의 제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 노드로 송신하도록 구성되는, 분산형 데이터베이스. - 삭제
- 제8항에 있어서, 상기 제1 노드는, 상기 인덱스 아톰의 상기 제2 인스턴스가 분할되었음을 나타내는 상기 확인 응답을 수신하는 것에 그리고 상기 인덱스 아톰의 상기 제3 인스턴스가 분할되었음을 나타내는 확인 응답을 상기 제3 노드로부터 수신하는 것에 응답하여, 상기 인덱스 아톰이 분할되었음을 나타내는 메시지를 상기 제2 노드로 전송하도록 구성되고,
상기 제2 노드 및 상기 제3 노드는 상기 제1 노드로부터의 메시지를 확인 응답하는 응답(response)을 상기 제1 노드로 전송하도록 구성되는, 분산형 데이터베이스. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법으로서,
상기 분산형 데이터베이스는 복수의 노드를 포함하고, 상기 인덱스 아톰은 상기 분산형 데이터베이스에 저장되는 데이터 및/또는 메타데이터를 나타내고, 상기 복수의 노드 내의 각각의 노드는 대응하는 프로세서 및 대응하는 메모리를 포함하고, 상기 복수의 노드 내의 하나의 노드는 상기 인덱스 아톰에 대한 체어맨으로 지정되고 상기 인덱스 아톰의 체어맨의 인스턴스를 포함하고, 상기 방법은:
상기 체어맨에 의해, 상기 인덱스 아톰의 상기 체어맨의 인스턴스를 소스 아톰의 체어맨의 인스턴스 및 타깃 아톰의 체어맨의 인스턴스로 분할하는 단계로서, 상기 소스 아톰의 상기 체어맨의 인스턴스는 분할 키 값 미만의 값을 포함하고 상기 타깃 아톰의 상기 체어맨의 인스턴스는 상기 분할 키 값보다 더 큰 값을 포함하는, 상기 체어맨의 인스턴스를 분할하는 단계;
상기 체어맨에 의해, 상기 분할 키 값에서 상기 인덱스 아톰을 분할하기 위한 인스트럭션을 상기 복수의 노드 내의 적어도 서브세트의 노드로 송신하는 단계로서, 상기 적어도 서브세트의 노드 내의 각각의 노드는 상기 인덱스 아톰의 대응하는 인스턴스를 포함하는, 상기 송신하는 단계;
상기 적어도 서브세트의 노드 내의 제1 노드에 의해, 상기 인덱스 아톰을 분할하기 위한 상기 인스트럭션을 상기 적어도 서브세트의 노드 내의 각각의 다른 노드로 재송신하는 단계;
상기 적어도 서브세트의 노드 내의 상기 제1 노드에 의해, 상기 인덱스 아톰의 제1 인스턴스를 소스 아톰의 제1 인스턴스 및 타깃 아톰의 제1 인스턴스로 분할하는 단계로서, 상기 소스 아톰의 상기 제1 인스턴스는 상기 분할 키 값 미만의 값을 포함하고 상기 타깃 아톰의 상기 제1 인스턴스는 상기 분할 키 값보다 더 큰 값을 포함하는, 상기 인덱스 아톰의 제1 인스턴스를 분할하는 단계;
상기 제1 노드에 의해 상기 소스 아톰의 제1 인스턴스 상에서, 상기 분할 키 값보다 더 큰 키 값을 참조하는 제1 메시지를 수신하는 단계;
상기 제1 노드에 의해, 상기 소스 아톰의 상기 제1 인스턴스로부터 상기 타깃 아톰의 상기 제1 인스턴스로 상기 제1 메시지를 포워딩하는 단계;
상기 제1 노드로부터 상기 체어맨으로, 상기 제1 노드에서 상기 인덱스 아톰의 상기 제1 인스턴스가 분할되었음을 나타내는 확인 응답을 송신하는 단계;
상기 인덱스 아톰을 참조하는 루트 아톰 내의 상기 타깃 아톰에 참조를 삽입하는 단계;
상기 적어도 서브세트의 노드 내의 각각의 노드에서 상기 인덱스 아톰이 분할되었음을 나타내는 메시지를 상기 체어맨으로부터 상기 적어도 서브세트의 노드로 송신하는 단계; 및
상기 제1 노드에 의해 상기 타깃 아톰의 상기 제1 인스턴스 상에서, 상기 분할 키 값보다 더 큰 키 값을 참조하는 제2 메시지를 수신하는 단계
를 포함하는, 분산형 데이터베이스 내의 복수의 아톰에서 인덱스 아톰을 분할하는 방법. - 제18항에 있어서, 상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 인덱스 아톰을 분할하는 것에 대한 상기 적어도 서브세트의 노드 내의 다른 노드들의 진행 상황을 추적하는 단계를 더 포함하는 방법.
- 제18항에 있어서, 상기 적어도 서브세트의 노드 내의 각각의 노드에 의해, 상기 적어도 서브세트의 노드 내의 각각의 노드에서 상기 인덱스 아톰이 분할되었음을 나타내는 상기 체어맨으로부터의 메시지를 확인 응답하는 단계를 더 포함하는 방법.
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) | CN111213138B (ko) |
AU (1) | AU2018316601B2 (ko) |
IL (1) | IL272641B2 (ko) |
SG (1) | SG11202001323XA (ko) |
WO (1) | WO2019035878A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11176111B2 (en) | 2013-03-15 | 2021-11-16 | Nuodb, Inc. | Distributed database management system with dynamically split B-tree indexes |
US10740323B1 (en) | 2013-03-15 | 2020-08-11 | Nuodb, Inc. | Global uniqueness checking in distributed databases |
KR20230163041A (ko) | 2022-05-23 | 2023-11-30 | 주식회사 티맥스티베로 | 액티브-액티브 데이터베이스 클러스터 환경에서 수행되는 인덱스를 관리하는 방법 및 장치 |
Citations (2)
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)
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 |
DE69401662T2 (de) | 1993-07-07 | 1997-08-21 | Europ Computer Ind Res | Datenbankstrukturen |
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 |
US6745286B2 (en) | 2001-01-29 | 2004-06-01 | Snap Appliance, Inc. | Interface architecture |
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 |
ATE330263T1 (de) | 2001-05-10 | 2006-07-15 | Ranco Inc | System und verfahren zur erstellung von diagnosen vermittels einer tragbaren vorrichtung |
US6480857B1 (en) | 2001-06-07 | 2002-11-12 | David Chandler | Method of organizing hierarchical data in a relational database |
US6880002B2 (en) | 2001-09-05 | 2005-04-12 | Surgient, Inc. | Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources |
US7026043B2 (en) | 2001-10-12 | 2006-04-11 | Owens Corning Composites Sprl | Sheet molding compound having improved surface characteristics |
US7233960B1 (en) | 2001-10-31 | 2007-06-19 | Numoda Corporation | System and method for mobile wireless electronic data capture and distribution of a merchant card-processing application |
US7080083B2 (en) | 2001-12-21 | 2006-07-18 | Kim Hong J | Extensible stylesheet designs in visual graphic environments |
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 |
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 |
JP4022755B2 (ja) | 2003-01-21 | 2007-12-19 | ソニー株式会社 | 記録装置、再生装置、ファイル管理方法及びファイル再生方法 |
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 |
US7293039B1 (en) | 2004-03-12 | 2007-11-06 | Network Appliance, Inc. | Storage resource management across multiple paths |
US7395352B1 (en) | 2004-03-12 | 2008-07-01 | Netapp, Inc. | Managing data replication relationships |
US7657529B2 (en) | 2004-03-26 | 2010-02-02 | Oracle International Corporation | Method of providing shared objects and node-specific objects in a cluster file system |
US20060010130A1 (en) | 2004-07-09 | 2006-01-12 | Avraham Leff | Method and apparatus for synchronizing client transactions executed by an autonomous client |
US7353227B2 (en) | 2004-07-23 | 2008-04-01 | Sap Aktiengesellschaft | Conflict resolution engine |
JP2006048507A (ja) | 2004-08-06 | 2006-02-16 | Nippon Telegr & Teleph Corp <Ntt> | ファイル検索方法、端末、プログラム、および記録媒体 |
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 |
US8392400B1 (en) * | 2005-12-29 | 2013-03-05 | Amazon Technologies, Inc. | Method and apparatus for stress management 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 |
EP3474138B1 (en) | 2009-10-12 | 2023-09-13 | Veeam Software Ag | Item-level restoration and verification of image level backups |
US9026538B2 (en) | 2009-10-13 | 2015-05-05 | Open Text S.A. | 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 |
US8842679B2 (en) | 2010-07-06 | 2014-09-23 | Nicira, Inc. | Control system that elects a master controller instance for switching elements |
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 |
JP5940074B2 (ja) | 2011-09-30 | 2016-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | トランザクション処理システム、方法及びプログラム |
US20130110781A1 (en) | 2011-10-31 | 2013-05-02 | Wojciech Golab | Server replication and transaction commitment |
US9690679B2 (en) | 2011-10-31 | 2017-06-27 | Hewlett Packard Enterprise Development Lp | Transaction commitment and replication in a storage system |
WO2013074665A1 (en) * | 2011-11-14 | 2013-05-23 | 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 |
US11176111B2 (en) | 2013-03-15 | 2021-11-16 | Nuodb, Inc. | Distributed database management system with dynamically split B-tree indexes |
US10740323B1 (en) | 2013-03-15 | 2020-08-11 | Nuodb, Inc. | Global uniqueness checking in distributed databases |
US9501363B1 (en) | 2013-03-15 | 2016-11-22 | Nuodb, Inc. | Distributed database management system with node failure detection |
US9342556B2 (en) | 2013-04-01 | 2016-05-17 | International Business Machines Corporation | RDF graphs made of RDF query language queries |
US10037348B2 (en) | 2013-04-08 | 2018-07-31 | Nuodb, Inc. | Database management system with database hibernation and bursting |
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 |
-
2018
- 2018-08-15 SG SG11202001323XA patent/SG11202001323XA/en unknown
- 2018-08-15 US US16/639,390 patent/US11573940B2/en active Active
- 2018-08-15 AU AU2018316601A patent/AU2018316601B2/en active Active
- 2018-08-15 WO PCT/US2018/000142 patent/WO2019035878A1/en unknown
- 2018-08-15 KR KR1020207006901A patent/KR102600366B1/ko active IP Right Grant
- 2018-08-15 EP EP18845799.8A patent/EP3669286A4/en active Pending
- 2018-08-15 CN CN201880056617.1A patent/CN111213138B/zh active Active
-
2020
- 2020-02-12 IL IL272641A patent/IL272641B2/en unknown
-
2023
- 2023-01-10 US US18/152,414 patent/US20230161747A1/en active Pending
Patent Citations (2)
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 |
---|---|
WO2019035878A1 (en) | 2019-02-21 |
US11573940B2 (en) | 2023-02-07 |
CN111213138A (zh) | 2020-05-29 |
AU2018316601B2 (en) | 2023-02-02 |
SG11202001323XA (en) | 2020-03-30 |
EP3669286A4 (en) | 2021-06-23 |
IL272641A (en) | 2020-03-31 |
IL272641B2 (en) | 2023-08-01 |
EP3669286A1 (en) | 2020-06-24 |
US20200257667A1 (en) | 2020-08-13 |
US20230161747A1 (en) | 2023-05-25 |
KR20200056990A (ko) | 2020-05-25 |
IL272641B1 (en) | 2023-04-01 |
CN111213138B (zh) | 2024-09-17 |
AU2018316601A1 (en) | 2020-02-27 |
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 | |
US20230161747A1 (en) | Index splitting in distributed databases | |
Barmpis et al. | Hawk: Towards a scalable model indexing architecture | |
WO2011108695A1 (ja) | 並列データ処理システム、並列データ処理方法及びプログラム | |
US10324905B1 (en) | Proactive state change acceptability verification in journal-based storage systems | |
US11176111B2 (en) | Distributed database management system with dynamically split B-tree indexes | |
CN101184106A (zh) | 一种移动数据库的关联事务处理方法 | |
Podgorelec et al. | A brief review of database solutions used within blockchain platforms | |
WO2021016440A1 (en) | Methods and systems for garbage deletion in a document database | |
Charlaganov et al. | The entity registry system: Implementing 5-star linked data without the web | |
Fernández Anta et al. | Fragmented objects: boosting concurrency of shared large objects | |
Phan | Cloud Databases for Internet-of-Things Data | |
Fjällid | A comparative study of databases for storing sensor data | |
Mehdi | Scalability through asynchrony in transactional storage systems | |
Cilloni | Towards a unifying modeling framework for data-intensive tools | |
Fadoua et al. | Heterogeneous nosql databases abstraction approach based on full text search indexes | |
Faria | High Performance Data Processing | |
Fan | Building Scalable and Consistent Distributed Databases Under Conflicts | |
US11599520B1 (en) | Consistency management using query restrictions in journal-based storage systems | |
Panyko | Utilization of NoSQL | |
Parker et al. | Extending invalid-access prevention policy protocols for mobile-client data caching | |
Hidouchi et al. | An actor like data model for a parallel DBMS | |
Susarla | Configurable consistency for wide-area caching |
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 |