KR20070110367A - 데이터 관리 방법 및 장치 - Google Patents

데이터 관리 방법 및 장치 Download PDF

Info

Publication number
KR20070110367A
KR20070110367A KR1020077021192A KR20077021192A KR20070110367A KR 20070110367 A KR20070110367 A KR 20070110367A KR 1020077021192 A KR1020077021192 A KR 1020077021192A KR 20077021192 A KR20077021192 A KR 20077021192A KR 20070110367 A KR20070110367 A KR 20070110367A
Authority
KR
South Korea
Prior art keywords
data
access system
channel
primary key
key
Prior art date
Application number
KR1020077021192A
Other languages
English (en)
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 KR20070110367A publication Critical patent/KR20070110367A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/181Eliminating the failing redundant component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

데이터 액세스 시스템은 개선된 접속성, 무결성, 확장성 및 그외 특징들을 제공하기 위해 데이터 처리를 데이터 저장으로부터 분리한다. 시스템은 각각이 독립적으로 액세스가능한 가상 분할들로 배열된 데이터베이스 유닛들, 복수의 데이터 처리유닛들, 및 가상 분할들 간에 데이터 처리유닛들을 스위칭하여 데이터 처리용량을 각각의 가상 분할들에 동적으로 할당하기 위한 스위칭 네트워크를 포함한다.

Description

데이터 관리 방법 및 장치{METHOD AND APPARATUS FOR DATA MANAGEMENT}
본 발명은 데이터 관리를 위한 방법 및 장치에 관한 것으로, 특히 분산구조를 사용하는 이러한 방법 혹은 장치만은 아니지만 이에 관한 것이다.
분산 데이터 레포지토리(repository)
대부분의 임무에 중대한 데이터 레포지토리들은 데이터 네트워크에 의해 상호접속된 몇몇의 계산 서버들 상에서 동작하는 분산 시스템들, 즉 분산 데이터 레포지토리들로서 구축된다. 분산 데이터 레포지토리들에 대한 예들은, 파일 시스템들, 디렉토리들 및 데이터베이스들이다. 임무에 중대한 데이터 레포지토리들은 주로 고 이용성(availability) 및 고 확장성(scalability)을 제공하기 위한 분산 시스템들로서 구축된다.
1. 고 이용성은 어떠한 단일 계산 서버 장애도 각각 및 모든 데이터 요소를 포함하는 데이터 레포지토리의 이용성을 전체로서 손상시키지 하도록 제공된다.
2. 고 확장성은 (1) 데이터량, 및 (2) 독출/기입 트랜잭션 레이트(스루풋)의 두 가지 서로 다른 차원들에서 제공된다. 어느 경우에든, 분산 데이터 레포지토리는 더 많은 량의 데이터 및/또는 더 높은 트랜잭션 레이트를 지원하기 위해서 더 많은 계산 서버들이 추가될 수 있다면 "매우 확장가능"하다. 또한, 임무에 중대한 분산 데이터 레포지토리들의 확장성은 "온라인 확장성"을 요구할 것인데, 이는 지속적으로 데이터 관리 서비스들을 제공하면서 시스템이 확장될 수 있음을 의미한다.
실시간 이벤트 처리
분산 데이터 레포지토리들이 실시간 이벤트 처리를 수행하는 데이터 애플리케이션들을 수행할 때, 분산 데이터 레포지토리들은 고 응답성을 지원할 것을 기대한다.
3. 고 응답성은 각각의 독출 및 각각의 기입 트랜잭션이 매우 높은 확률로 기정의된 시간량 내에 완료될 것이 보장되도록 실시간 데이터 레포지토리들을 위해 제공된다. 실시간 데이터 레포지토리들에서, 고 이용성 및 온라인 확장성 요건들은 고장이 났을 때 그리고 확장 이벤트들 동안에 시스템의 지속적인 고 응답성을 보존할 것을 기대한다.
실시간 이벤트 처리 데이터 애플리케이션들의 예들은, 전기통신 호-제어, 이동전화 홈 로케이션 레지스터(HLR), 인터넷 멀티미디어 시스템(IMS) 홈 가입자 서버(HSS), 온라인 뱅킹 및 트레이딩 시스템이다.
임무에 중대한 실시간 데이터 레포지토리 시스템들은 매우 이용성이 있고, 매우 확장성 있으며 매우 응답성이 있을 것을 기대한다. 이들 요건들의 조합을 지 원하는 것은 매우 해결하기가 어렵다. 응답성 요건은 요구되는 시간량 내에 트랜잭션이 확실히 완료되게 전용의 계산 자원을 할당하여 이것에만 할애할 것을 암시할 수도 있다. 이러한 전략은 응답성이 악영향을 받을 수 있기 때문에, 트랜잭션 레이트를 가속화함에 있어 전형적인 파이프라인 및 시간공유 처리 스케쥴링을 더 효과적이게 한다.
한편, 고 이용성 요건은 통상적으로, 임무에 중대한 모든 데이터 아이템을 매우 이용성이 좋은 저장 디바이스(예를 들면, 레이드(Redundant Array of Independent Disks)에 저장할 것을 암시할 것이며, 이는 모든 기입 트랜잭션이 커밋(commit)되어 완료되기 전에 디스크에 기입될 필요가 있음을 의미한다. 그렇지 않다면, 데이터는 기입 계산 요소가 고장난 경우에는 사용될 수 없게 될 것이다. 이러한 전략은 많은 CPU들을 구비한(SMP(대칭형 다중처리)) 대형 계산 서버들에서 동작할 때라도 달성되는 트랜잭션 레이트를 감소시킨다.
많은 경우들에 있어서, 임무에 중대한 데이터 레포지토리들은 독출/기입 트랜잭션들을 위해 몇몇의 서로 다른 계산 실체들("클라이언트들")에 의해 동시에 액세스되고 따라서 분산 데이터 레포지토리들은 시스템에 걸쳐 일관성을 제공할 필요도 있다. 데이터 레포지토리는 각각의 모든 클라이언트 관점에서, 각 데이터 요소의 값의 한 시퀀스의 변화들이 동일하다면, "일관성"이 있는 것으로(혹은 "순차적 일관된" 것으로) 간주된다.
기입 트랜잭션들을 수행하는 많은 동시적 클라이언트들을 지원하는 분산 데이터 레포지토리들의 대부분의 구현들에 있어서, 일관성 요건은 트랜잭션 레이트 면에서 시스템 확장성에 대한 제한적인 요인이기도 하다. 이것은 트랜잭션들이 직렬화될 필요가 있고 독출 트랜잭션은 통상적으로 보류된 기입 트랜잭션들이 완료되기까지 미루어져야 하기 때문이다. 독출/기입 트랜잭션들의 직렬화는 통상적으로, 데이터가 시스템 내에 조직되는 방식에 기인해서(예를 들면, 동일 디스크 상에, 동일 메모리 내, 등등), 서로 다른 트랜잭션들이 서로 다른 데이터 요소들을 액세스할 때(즉, 독립적 트랜잭션들) 행해진다.
"전부 공유" 분산 캐시 일관성(coherency) 구조들
통상적인 분산 데이터 레포지토리들(이를테면 오라클 리얼 애플리케이션 클러스터링 및 그외)은 데이터의 메모리 카피들에 일관적 로컬 캐시들을 유지하면서, 임무에 중대한 데이터를 저장하기 위해 매우 이용성이 좋은 저장(통상적으로 레이드 기술을 사용하여)을 이용한다. 이러한 "전부 공유" 분산 캐시 일관성 구조는 모든 데이터 처리 부하를 공유하기 위해 모든 계산 노드들이 이용될 수 있게 융통성있는 활성-활성 N+M 고 이용성을 제공할 수 있다. 하나 이상의 노드가 장애가 난 경우에 잔존 노드들은 장애가 난 노드들에 의해 취급된 데이터 처리를 넘겨받도록 이용될 수 있다.
"전부 공유" 분산 캐시 일관성 구조가 도 1에 도시되었다. 구조는 독출 트랜잭션 레이터의 확장성을 제공할 수 있다. 즉 시스템에 더 많은 노드들을 추가함으로써 독출 트랜잭션 레이트가 증가될 수 있다. 그러나, "전부 공유" 분산 캐시 일관성 구조들은 통상적으로 모든 로컬 캐시들 간에 각각의 기입을 중재할 필요성에 기인해서 기입 트랜잭션 레이트 확장성이 전혀 없거나 거의 없게 된다. 그러므로, 보다 많은 노드들이 시스템에 추가될 때, 캐시 일관성이 모든 로컬 캐시들 간에 유지되게 하기 위해서, 각 기입 트랜잭션을 커밋하여 완료하는데 있어 더 긴 시간이 걸린다. 기입 트랜잭션을 커밋하여 완료하는데 있어 이러한 증가된 지연 때문에 "전부 공유" 분산 캐시 일관성 구조는 트랜잭션들의 대부분이 기입 트랜잭션들일 때 실시간 트랜잭션 처리를 요구하는 애플리케이션들을 지원하는 데에는 부적합하게 된다. 응답성 요건들은 기입 트랜잭션 레이트가 클 때에는 충족될 수 없고, 이것은 위에 언급된 실시간 이벤트 처리 애플리케이션들이 높은 기입 트랜잭션 레이트들을 갖는 것이 일반적이기 때문에 문제가 된다. 그러므로, "전부 공유" 분산 캐시 일관성 구조는 대규모로 배치될 때 이러한 애플리케이션들에는 적합하지 않다.
"무 공유" 데이터 분할 구조
다른 분산 데이터 레포지토리들(이를테면 IBM DB2 UDB 및 MySQL)은 이를테면 도 2에 도시된 바와 같은 "무 공유" 데이터 분할 구조를 무 공유 구조에서, 분산 데이터 레포지토리 시스템은 몇몇의 독립적 분산 데이터 레포지토리 서브-시스템들로 분할되고, 각각은 데이터의 상이한 부분을 관리한다. "무 공유" 데이터 분할 구조에서, 각 분할은 각각이 자신의 고도로 이용성이 있는 저장소를 구비한, "전부 공유" 분산 캐시 일관성 서브-시스템들로 간주될 수 있다.
"무 공유" 데이터 분할 구조는, 시스템이 독립적 분할들을 더 갖출수록 독립적 기입 트랜잭션들이 차단되지 않게 더 많이 서로 다른 분할들에 동시에 수행될 수 있기 때문에, 기입 레이트 확장성 문제를 극복한다. 그러므로, 기입 커밋 응답성 또한 이러한 구조에 의해 잘 해결될 수 있다.
"무 공유" 데이터 분할 구조에 있어 키는 계산 자원 분할이 데이터 분할에 엄격하게 연결된다는 것이다. 이것은 계산자원들이 각 데이터 분할에 정적으로 할당됨을 의미한다. 시스템 기입 레이트가 증가할 때, 시스템을 확장하는 유일한 방법은 시스템을 더 많은 분할들로 다시 분할하고 계산 자원들을 새로운 분할들에 할당하는 것이다. 이러한 확장 프로세스는 통상적으로 분할들간에 데이터의 재분산을 요구할 것이며 고도의 응답성 온라인 데이터베이스 서비스를 지속적으로 제공하는 시스템의 능력을 해하지 않고는 행해질 수 없다. 그러므로, 재분산은 통상적으로 전체 시스템의 계획된 정지시간을 요구할 것이다. 그러므로, 온라인 확장성은 "무 공유" 데이터 분할 구조에서는 달성될 수 없다. 또한, "무 공유" 구조의 잠재적 동시성을 완전히 이용하기 위해서, 클라이언트 애플리케이션을 통상적으로 데이터가 분할되고 있는 방식을 알 수 있을 필요가 있고, 이는 재분할 이벤트들이 클라이언트 애플리케이션 자체 내 변경도 요구할 수 있음을 의미한다. 이것은 "무 공유" 구조를 관리 및 유지하는데 있어 매우 비용이 들게 한다.
"메모리내(In-Memory)" 데이터 레포지토리 구조
보다 나은 응답성을 제공하고 전체적인 보다 나은 트랜잭션 레이트를 제공하기 위해 트랜잭션 레이턴시(latency)를 줄이는데 중점을 둔 다른 데이터 레포지토리 구조가 출현하였다. 이것은 단일 머신의 하나의 충분히 큰 메모리에 모든 데이 터를 유지하고 모든 데이터 동작들을 이 메모리 내에서 직접 수행함으로써 행해진다. 컴퓨터 작업 메모리에 액세스하는 레이턴시는 디스크와 같은 저장 디바이스들에 액세스하는 것보다 더 짧은 것에 버금갈 수 있다. 그러므로, 모들 데이터를 메모리에서 관리함으로써, 데이터 레포지토리는 훨씬 더 짧은 트랜잭션 레이턴시를, 따라서 보다 큰 트랜잭션 레이트를 얻는다.
임무에 중대한 메모리내 데이터 레포지토리들은 통상적으로, 로컬 네트워크를 통해 복제 인스턴스들 간에 메모리내 데이터가 연속적으로 동기되게("전부 공유" 구조의 캐시 일관 메커니즘들에서처럼), 시스템을 2이상의 동일 인스턴스들로 복제되었다. 네트워크 기반의 데이터 커밋은 기입 트랜잭션들을 완료하는 레이턴시를 증가시키며, 따라서 기입 트랜잭션 레이트를 감소시킨다. 그러나, 네트워크 기반의 데이터 동기화는 내장애성을 가능하게 한다.
이의 변형예로서, 레포지토리들간에 업데이트하면서, 용장성을 위해서 2 이상의 데이터 레포지토리들을 제공하는 것이 가능하다.
내장애성을 갖춘 메모리내 레포지토리를 예시한 도 3을 참조한다.
메모리내 데이터 레포지토리들은 단일 계산 서버에 의해 제공되는 용량 및 기입 트랜잭션 레이트를 넘어서 확장할 수 있다. "메모리내" 데이터 레포지토리 시스템의 용량 및/또는 기입 트랜잭션 레이트를 확장하는 유일한 방법은 계산 시스템에 더 많은 메모리를 추가하는 것이고, 혹은 계산 시스템의 메모리 용량이 최대가 된 경우에, 시스템을 더 많은 메모리와 더 많은 CPU들(즉, 보다 큰 SMP 서버)을 가진 큰 계산 시스템에 옮기는 것이다. 두 확장성 전략들은 시스템의 계획된 정지시 간을 요구할 것이며 따라서 고-이용성 및 온라인-확장성 요건들을 따르지 않을 것이다. 더 많은 계산 서버를 추가하는 것만으로는 용량도 기입 트랜잭션 레이트도 확장될 수 없다.
통상적으로 메모리내 데이터 레포지토리들은 최대 수행 및 낮은 레이턴시를 달성하기 위해서 애플리케이션과 데이터베이스가 같은 곳에 있어야 한다. 이것은 이들이 CPU 당 가격이 매겨지기 때문에 데이터베이스의 실제적 비용을 높이지만, CPU는 데이터베이스에만 사용되는 것이 아니라 애플리케이션에도 사용된다. 그러므로, CPU 및 메모리 자원들을 소비하는 실제 애플리케이션은 데이터베이스의 실제 가격 성능을 현저하게 감소시킨다. 한편, 메모리내 데이터베이스와 애플리케이션을 개별적 박스들로 분리하는 것 - 이것은 데이터베이스에 소비되는 돈을 최대로 활용할 수 있게 한다- 은 우선적으로 메모리내 데이터베이스를 사용함으로써 얻어지는 성능을 감소시킨다.
따라서, 위에 기술한 시스템들에 이익이 되게 하고 이들의 문제점을 회피하는 시스템에 대한 널리 인식된 필요성이 있고 이러한 시스템을 갖추는 것이 매우 이점이 있을 것이다.
<발명의 요약>
본 발명의 일 면에 따라서,
각각이 독립적으로 액세스가능한 가상 분할들로 배열된 데이터베이스 유닛들, 복수의 데이터 처리유닛들, 및
상기 가상 분할들 간에 상기 데이터 처리유닛들을 스위칭하여 데이터 처리용량을 각각의 가상 분할들에 동적으로 할당하기 위한 스위칭 네트워크(하나 이상의 상호접속된 스위칭 유닛들을 결합한)를 포함하는 데이터 액세스 시스템이 제공된다.
바람직하게, 각각의 데이터 유닛은 각각의 네트워크 채널로서 독립적으로 액세스가능하다.
시스템은 데이터에 해싱 프로세스를 수행하기 위한 해싱유닛을 포함할 수 있고 데이터는 해싱 프로세스의 결과를 통해 각각의 데이터베이스 유닛들에 할당된다.
바람직하게, 데이터는 일단의 하나 이상의 테이블들 형태로 할당된다. 바람직하게, 각 테이블은 1차 키 및/또는 하나 이상의 2차 키들을 갖는 일단의 레코드들 형태로 할당된다. 해싱 프로세스는 여기에서는 테이블의 주 키인, 키들 중 한 키에 수행된다. 테이블에 대한 주 키는 1이상 필드 및/또는 비-고유 키 및/또는 외래 키의 의미하는 복합 키를 포함하여, 임의의 키일 수 있다.
바람직하게, 데이터는 주 키 및 아마도 하나 이상의 2차 키들을 갖는 레코드들 형태로 할당되고, 각각의 레코드에는 주 키에 기초한 "1차 해시"인 1차 어드레스 및 2차 키들에 기초한 2차 해시라고도 하는 아마도 하나 이상의 2차 어드레스들이 할당된다.
2이상의 테이블들은 동일 주 키를 공유할 수 있다. 통상적으로 이러한 주 키는 외래 키일 수도 있지만, 이것은 필수는 아니다. 결국, 1차 해시된 어드레스는 동일 1차 키를 공유하는 서로 다른 테이블들로부터 모든 레코드들에 대해 동일한 채로 있다. 그러므로 레코드들은 필요시 단일 데이터 실체로서 관리될 수 있다.
2이상의 테이블들은 하나 이상의 2차 키들을 공유할 수도 있고 따라서 서로 다른 테이블들로부터 레코드들은 2차 해시된 어드레스들을 공유할 수도 있다.
시스템은 2차 어드레스들을 대응 1차 어드레스들로 해석하기 위한 해석유닛을 포함할 수 있다.
바람직하게, 해석유닛은 적어도 한 라우터를 포함한다. 시스템의 고 이용성을 보장하기 위해 백업 라우터들이 제공될 수도 있다. 한 라우터의 장애 후에 나머지 라우터들이 여전히 2차 어드레스를 1차 어드레스 해석으로 처리할 수 있으므로 데이터 요소들이 2차 어드레스들을 사용하여 계속적으로 이용될 수 있는 것을 보장하기에 단지 단일의 백업 라우터만으로도 충분하다.
2차 키 해석, 즉 라우팅은 2차 키가 고유한 것인지 아닌지에 따라, 2차 키를 하나 이상의 1차 키들에 맵핑하는 내부 인덱스 테이블을 시스템이 유지하게 함으로써 행해질 수 있다. 이 내부 인덱스 테이블은 인덱스 테이블의 주 키로서 2차 키를 사용하여 모든 가상 분할들에 걸쳐 해시된다. 이러한 경우에, 2차 키를 1차 키로 라우팅하는 것은 어떤 다른 테이블이 독출되는 바와 동일한 방법으로 인덱스 테이블을 독출함으로써 행해진다.
시스템은 모든 가상의 분할이 저장되어 몇몇의 데이터 처리 유닛들에 의해 관리되게 하고, 데이터 처리유닛의 장애 후에, 시스템이 모든 데이터에의 액세스를 여전히 제공할 수 있게 구성될 수 있다.
바람직하게, 각각의 가상 데이터 분할은 기수 개의 카피들을 갖는다. 기수 개는 버전들 간의 과반수 표결이 행해질 수 있게 한다. 바람직하게, 기입 및 독출 동작들을 포함한, 모든 데이터 처리는 과반수에 기초한 그룹 결정에 의해 수행되고, 시스템은 예를 들면 어떤 데이터 처리유닛들의 장애에 기인하여, 각 가상 분할의 소수의 카피들이 유실되었을 때에도, 데이터에의 중단없는 이용도(accessibility)를 지속적으로 제공할 수 있다. 소수의 최대 크기는 시스템의 내장애성의 레벨이다. 예를 들면, 시스템이 각 가상 데이터 분할마다 5개의 카피들을 갖고 있다면, 시스템은 각각의 독출 및 기입 트랜잭션에 대해 과반수 표결을 잃지 않고 각 가상 데이터 분할의 최대 2카피까지 잃을 수 있다. 따라서, 2 카피까지는 시스템 내 각 데이터 요소의 이동도를 잃기 않고 유실될 수 있다.
시스템은 데이터 처리유닛들 중 하나를 충돌 및 동시적 기입동작들간에 중재하는 리더 혹은 조정자로서 각 가상 분할에 대해 동적으로 할당하는 선출기능을 포함할 수 있다.
시스템은 가상분할들을 데이터 처리 유닛들에 동적으로 할당하는 선출기능을 포함할 수 있다.
시스템은 가상 데이터 분할들의 유실된 카피들이 나머지 데이터 처리유닛들 전부 혹은 일부에 재할당되게, 제1 데이터 처리유닛의 장애 후에 착수되는 자가치유 메커니즘을 포함할 수 있다. 결국 시스템의 내장애성은 이의 타겟 레벨로 다시 간다.
5개의 9인(99.999%) 이용성은 캐리어 그레이드 시스템들의 전형적인 요건이다. 이제, 대형 시스템에 있어서, 기본 데이터 처리유닛들 자체들의 각각이 99.9% 이용성을 갖고 있고 자가치유 메커니즘이 수분 내에 시작된다고 할 때, 통상적으로 각 데이터 레코드 혹은 가상 분할의 3개의 카피들을 갖는 것만으로 충분하다. 즉 5개의 9 레벨을 넘어선 가외의 이용성, 및/또는 메가급 대형 시스템에 있어서는 5개의 카피들을 갖는 것으로 충분하다. 다른 것이 정의되지 않는 한, 여기에서 사용되는 모든 기술적 및 과학적 용어들은 이 발명이 속하는 당업자가 일반적으로 아는 바와 동일한 의미를 갖는다. 여기에서 제공되는 재료들, 방법들 및 예들은 단지 예시적이며 한정하려는 것은 아니다.
본 발명의 방법 및 시스템의 구현은 어떤 선택된 타스크들 혹은 단계들을 수작업으로, 자동으로 혹은 이들의 조합으로 수행 혹은 완료하는 것을 수반한다. 또한, 본 발명의 방법 및 시스템의 바람직한 실시예들의 실제 기기 및 장비에 따라서, 몇몇의 선택된 단계들은 하드웨어 혹은 임의의 펌웨어의 임의의 운영시스템 상의 소프트웨어 혹은 이들의 조합에 의해 구현될 수도 있을 것이다. 예를 들면, 하드웨어로서, 발명의 선택된 단계들은 칩 혹은 회로로서 구현될 수도 있을 것이다. 소프트웨어로서, 발명의 선택된 단계들은 임의의 적합한 운영 시스템을 사용하는 컴퓨터에 의해 실행되는 복수의 소프트웨어 명령들로서 구현될 수도 있을 것이다. 어떤 경우이든, 발명의 방법 및 시스템의 선택된 단계들은 이를테면 복수의 명령들을 실행하는 계산 플랫폼과 같은 데이터 프로세서에 의해 수행되는 것으로서 기술될 수도 있을 것이다.
발명은 여기에서는 첨부한 도면을 참조하여, 단지 예로서만 기술된다. 도면을 구체적으로 상세히 참조하여, 도시된 상세는 예이며 본 발명만의 바람직한 실시예들의 예시적 논의를 위한 것이고 발명의 원리 및 개념적 면들의 가장 유용하고 쉽게 이행되는 설명일 것으로 생각되는 것을 제공하기 위해 제공된 것임을 강조해 둔다. 이에 관하여, 발명의 기본적인 이해에 필요한보다 발명의 구조적 상세를 보다 상세히 보일려는 시도는 하지 않으며 도면과 함께 취한 설명은 발명의 몇가지 형태가 실제로 실현될 수 있는 방법을 당업자들에게 명백하게 한다.
도 1은 분산 캐시 일관성 구조를 갖는 종래 기술의 전부 공유를 도시한 것이다.
도 2는 데이터가 서로 다른 데이터 노드들로 분할되고 각 분할은 분산 캐시 일관성을 갖고 전부 공유로서 관리되는 종래 기술의 무 공유 구조를 도시한 것이다.
도 3은 모든 데이터가 메모리에 유지되고 서로 다른 계산유닛들의 2이상의 메모리들간의 완전히 복제 및 동기화되는 메모리 데이터 레포지토리 구조에서 종래 기술의 내장애성을 도시한 것이다.
도 4는 스위치 채널 네트워킹이 가상 분할들과 계산유닛들간을 동적으로 맵핑하는데 사용되는 본 발명의 바람직한 실시예에 따른 구조를 도시한 간이화한 도면이다. 이 간이화된 경우에, 가상분할들은 복제되지 않으며, 각 계산유닛이 하나 이상의 가상 데이터 분할들의 단일 카피를 저장하고 관리하게, 계산유닛들과 가상분할들간의 1 대 다수 관계가 있을 수 있다.
도 5는 도 4의 구조를 도시한 간이화된 도면이지만, 이번에는 각 계산유닛이 하나 이상의 가상 데이터 분할들을 저장하고 관리하며 각 데이터 분할이 3개의 계산유닛들에 의해 저장되고 관리되는 것으로 계산유닛들과 데이터 복제들간에 다수 대 다수 관계들이 있도록, 데이터 복제들을 가진 경우의 도면이다.
도 6-8은 본 발명의 바람직한 실시예에 따른 계층 기반의 가상 분할들을 사용하여 표현될 수 있는 계층들로 데이터 구성을 위한 트리 구조들을 도시한 것이다.
도 9는 본 발명의 바람직한 실시예에 따른 분할절차를 도시한 간이화한 흐름도이다.
도 10a 및 도 10b는 2 레벨들의 서브-채널들을 갖는 채널들을 도시한 것으로, 본 발명의 바람직한 실시예에 따라 채널 계층 내 마이크로-레포지토리들의 할당을 도시한 것이다.
도 11 및 도 12b는 도 4의 구조의 부분들을 도시한 간이화한 블록도로서, 가상 분할들은 본 발명의 바람직한 실시예에 따른 계층 기반이다.
도 12a는 본 발명의 바람직한 실시예를 사용한 3 단계 커밋 기입동작을 도시한 간이화한 흐름도이다.
도 12c는 본 발명의 바람직한 실시예에 따른 장애 복구 동작의 간이화한 흐름도이다.
도 12d는 본 발명의 바람직한 실시예에 따른 자가치유 동작의 간이화한 흐름도이다.
도 13 및 도 14는 본 발명의 바람직한 실시예에 따라, 자가치유 메커니즘의 일부로서 서버들과 데이터의 마이크로레포지토리들의 재-맵핑의 블록도이다.
도 15는 본 발명의 바람직한 실시에에 따라, 채널 스위칭 네트워크 그래프 및 멀티캐스트 스패닝 트리이다.
도 16은 본 발명의 바람직한 실시예에 따른 네트워크의 일부의 블록도이며 고객 장비를 도시한 것이다.
도 17 및 도 18은 본 발명의 바람직한 실시예에 따라 분산 채널 해시 구현을 도시한 블록도이다.
도 19 및 도 20a는 본 발명의 바람직한 실시예에 따라, 데이터의 맵핑이 2차 키를 사용하여 어떻게 수행될 수 있는가를 도시한, 각각, 블록도 및 흐름도이다.
도 20b는 3 및 5 카피 저장과 2개의 서로 다른 이용성 레벨들의 경우들에 있어서 데이터 저장유닛들 XDB의 수에 대해 초당 동작들의 관해서 수행 및 이용성을 도시한 그래프이다.
도 21 및 도 22는 본 발명의 바람직한 실시예에 따라 프로세스 상태들이 어떻게 유지될 수 있는가를 도시한 블록도이다.
도 23은 본 발명의 바람직한 실시예에 따라 프로세스 상태들의 유지를 위한 상태 데이터베이스의 사용을 도시한 블록도이다.
도 24는 채널들이 그룹들로 스위칭되는 본 발명의 바람직한 실시예를 도시한 간이화한 도면이다.
발명의 실시예들은 멀티캐스트 영역의 네트워킹을 이용하는 분산 데이터 레포지토리를 구현하는 장치 및 방법을 포함한다. 본 실시예들의 데이터 레포지토리는 데이터 분할을 계산자원 분할에서 분리하는 것을 포함한다. 이러한 구조의 이점은 보장된 응답성, 고 이용성, 고 확장성, 및 동적 온라인 확장성을 제공한다는 것이다. 무 공유(share nothing) 구조와 유사한 시스템이 제공되나, 물리적 분할들 대신에, 일종의 그룹 어드레스인 네트워크 채널들에 데이터를 맵핑함으로써 가상 분할이 사용된다. 이때 네트워크 채널들은 스위칭 네트워크 어드레싱 관리 및 라우팅을 사용함으로써 계산자원들에 동적으로 맵핑된다. 결과는 계산자원들의 할당에서 데이터 분할을 분리하는 것을 제공한다. 데이터 처리는 데이터 저장으로부터 분리되고 제공될 수 있는 가상채널 수는 네트워크 어드레싱 공간에 의해서만 제한된다. 데이터 처리 자원들은 의지대로 재할당될 수 있다.
실시예에서, 데이터를 탐색하는데 사용되는 어드레싱 공간은 단일 데이터 레코드에 대해 복수의 어드레스들을 내포할 수 있어 데이터는 1차 키, 2차 키 혹은 추가의 키들을 사용하여 찾을 수 있게 된다.
이하 기술되는 실시예들은 "네트워크내(in-network)" 데이터 레포지토리 구조를 기술한다. 구조는 후술하는 바와 같이, 각 해결책의 결점들을 피하면서, 분산 구조에 대해 "전부 공유", "무 공유" 및 "메모리내(in-memory)"의 이점들을 결합하는 분산 데이터 레포지토리 시스템의 구축을 정의한다. 구조는 위에 기술된 "메모리내" 구조의 응답성을 갖는다. 동시에, "네트워크내" 구조는 시스템의 확장성 및 응답성을 제한할 차단 요소는 없이, 대칭적 부하 균형, 및 위에 기술된 "전부 공 유" 구조의 N+M 고 이용성을 갖는다.
또한, 여기에 기술된 "네트워크내" 구조는 위에 기술된 "무 공유" 구조의 무 차단 데이터 분할 속성을 갖는다. 그러나, 명시적(explicit) 데이터 분할을 행하거나 서로 다른 데이터 분할들간에 명시적 계산자원 할당을 행하거나 할 필요성이 없고, 따라서 시스템은 후술하는 바와 같이, 계산요소들간에 실제적 고 응답성, 동적 부하 균형을 달성할 수 있다.
본 발명에 따른 장치 및 방법의 원리 및 동작은 첨부한 도면 및 설명을 참조로 더 잘 이해될 수 있다.
본 발명의 적어도 한 실시예를 상세히 설명하기 전에, 발명은 이의 응용에 있어 다음의 설명에 개시 혹은 도면들에 예시된 구조 및 구성성분들의 배열의 상세들로 한정되는 것임을 알아야 한다. 발명은 다른 실시예들이 가능하고 혹은 다양한 방법들로 실시 혹은 수행될 수 있다. 또한, 여기서 사용되는 술어 및 용어는 설명하기 위한 것이고 한정하는 것으로 간주되어서는 안 됨을 알 것이다.
본 발명의 제1 바람직한 실시예의 개략도인 도 4를 참조한다. 데이터 액세스 시스템은, 각각이 독립적으로 액세스될 수 있는 가상 분할들로 배열된 데이터베이스 유닛들 및 복수의 데이터 처리 유닛들을 포함한다. 또한, 상기 데이터 처리 유닛들을 상기 가상 분할들간에 스위칭하여 데이터 처리 용량을 동적으로 각각의 가상분할들에 할당하는 스위칭 유닛이 제공된다. 특히, 도 4에서, 데이터 분할들(401.1,,,.401.M)은 채널 1,..M에 맵핑된다. 계산 노드들(403.1 내지 403.K)은 각각이 메모리를 포함하는 것으로서, 격자유형 네트워크가 셋업되도록 스위치들을 통해 채널들에 접속된다.
도 4는 가상분할들과 계산유닛들간에 동적으로 맵핑하기 위해 스위칭 채널 네트워킹이 사용되는 구조를 도시한 것이다. 이 간이화된 경우에, 가상분할들은 복제되지 않으며 계산유닛들과 가상분할들간에 1 대 다수의 관계가 있을 수 있고, 따라서 각 계산유닛은 하나 이상의 가상 데이터 분할들의 단일 카피를 저장하고 관리한다.
도 4에 도시된 분산 데이터 레포지토리 구조는 비교적 높은 레벨의 응답성, 일관성, 및 비교적 용이한 확장성을 제공하면서, 차단되지 않고 메모리에서 독립적 독출/기입 트랜잭션들의 수행의 동시성을 최대화하도록 데이터 및 처리 능을 구성한다.
위에 기술된 이점들은 다음에 의해서 달성된다.
1. 데이터 분할을 계산자원 분할으로부터 분리한다. 결과는 "전부 공유" 제로-관리 확장성을 결합하게 "무 공유" 무 차단 동시성을 달성한다.
2. 메모리에서 데이터를 관리하고, 그럼으로써 위에 언급된 "메모리내" 구조 달성한다.
데이터 분할들과 계산 자원 분할들을 분리하는 것은, 계산 자원들이 네트워킹 채널들에 동적으로 할당될 수 있게 하면서 데이터 분할은 네트워크 채널들에 정적으로 맵핑되도록, 스위칭 채널 네트워킹을 사용하여 여기에서는 채널이라고 하는 중간 네트워킹 구조를 생성함으로써 행해진다. 따라서, 하나 이상의 채널들에 할당되는 각 계산서버는 이의 메모리에 채널들에 맵핑되는 모든 데이터 분할들을 유지 한다.
계산 서버들과 채널들간의 맵핑은 1 대 다수일 필요가 없고, 다수 대 다수일 수도 있다. 따라서, 몇몇의 계산서버들은, 데이터 분할이 메모리 내 복제되고 동일 채널에 할당되는 모든 계산 서버들간에 동기되도록 동일 채널에 할당될 수 있다.
복제들을 가진 계산분할들로부터 데이터의 분리를 예시하기 위해 약간 상세하게 도 4의 실시예를 도시한 도 5를 참조한다. 도 4와 동일한 부분들은 동일 참조부호가 사용되고 동일 실시예를 이해하는데 필요한 것을 제외하곤 다시 언급하지 않는다. 스위칭 채널 네트워킹은 데이터 분할들 중 임의의 것을 필요시 동적으로 컴퓨터 노드들 중 임의의 노드에 접속될 수 있게 한다.
도 5는 도 4와 동일한 기본적인 구조를 가지지만, 데이터 복제들이 제공되는 점에서 다르다. 데이터 복제는 계산유닛들과 데이터 복제들간에 다수 대 다수 관계들이 될 수 있게 한다. 각 계산유닛은 하나 이상의 가상 데이터 분할들을 저장하고 관리하며 각 데이터 분할은 예를 들면 3 혹은 5개의 계산유닛들에 의해 저장되고 관리된다.
다음의 요소들은 도 5의 실시예를 포함한다.
중간 네트워킹 채널을 사용하여 스위칭 채널 네트워킹을 통해 독립적 2중 맵핑을 구현함으로써 데이터 분할을 계산 분할로부터 분리하는 것:
a. 데이터 분할들(401.1-401.m)을 베이스 네트워킹 채널들로서 채널 1...채널 M에 1 대 1 정적 매핑.
b. 채널들로서 채널 1...채널 M에 계산 서버들(403.1...403.k)의 다수 대 다 수로 동적 맵핑.
2. 네트워킹 채널링 방법들은 유선 속도 응답성 및 채널 할당의 실시간 재구성이 보장되도록 표준 패킷 네트워킹을 사용하기 위해 제공된다.
3. 분산 데이터 관리 프로토콜, 여기에서는 데이터 액세스 프로토콜 혹은 XDAP.
4. 분할된 인덱스 테이블 취급뿐만 아니라, 라우팅 네트워킹을 사용한 데이터 인덱싱은 대안적 2차 인덱스들을 통해 동일 데이터에의 유선 속도 액세스를 보장한다.
도 5에 도시된 분산 데이터 레포지토리 구조는 응답성 레벨들, 일관성, 및 이용성 레벨들을 손상시킴이 없이, 차단되지 않게 메모리에서 독립적 독출/기입 트랜잭션들의 수행의 동시성을 최대화하도록 데이터 및 처리 능을 구성한다.
위에 기술된 이점들은,
데이터 분할을 계산자원 분할로부터 분리하고, "전부 공유"의 평이한 확장성과의 "무 공유 무 차단 동시성을 달성하고, 네트워크에 걸쳐 복제된 메모리 내에 데이터 분할을 관리하고, "메모리내" 응답성 및 내장애성을 달성함
에 의해서 달성된다.
발명의 또 다른 면들은 대부분이 데이터 레포지토리들에 적용될 수 있는 계층적 데이터 분할을 기술함으로써 예시한다. 본 발명은 위에 언급된 것으로 한정되는 것은 아니나 이들을 포함한, 많은 데이터 유형들에 적용될 수 있다. 데이터 유형들의 설명에 이어 공개-가입(publish-subscribe) 네트워킹 채널들을 사용하여 계 층적 데이터 분할이 계산 분할로부터 어떻게 분리될 수 있는지를 기술하고, 이어서 이러한 "공개-가입된" 네트워킹 채널들이 표준 패킷 네트워킹을 사용하여 어떻게 구현될 수 있는지를 논한다.
채널 구현에 이어, 유선속도 데이터 동기화, 트랜잭션 무결성, 내장애성, 온라인 확장성 및 자가치유를 보장하는, 위에 언급된 코어 분산 데이터 관리 프로토콜(XDAP)을 기술한다.
이에 이어 표준 라우팅 네트워킹, 및 인덱스 테이블 분할 처리를 이용하는 인덱싱 방법을 기술한다.
데이터 분할 계층
3가지 유형의 계층(601)을 도시한 도 6을 참조한다. 데이터 레포지토리들 내 데이터 요소들은 통상적으로, "의 일부" 관계 혹은 전체 순서 관계를 나타내는 트리형 구조의 계층들로 분할된다. 예를 들면, 관계형(relational) 데이터베이스는 스키마들로 구성된다. 각 스키마는 테이블들로 구성된다. 각 테이블은 서로 다른 키 값들을 갖는 레코더들의 리스트를 갖는다.
"의 일부" (⊃) 관계는 이러한 계층에서 관계들을 정의한다. 위의 예에서, "음악 라이브러리"(603) ⊃ "앨범 데이터베이스"(605) ⊃ "재즈 앨범들"(607) ⊃ "파워 오브 쓰리"(909) ⊃ "Limbo.mp3"(611)이다.
또 다른 예로서의 파일 시스템이 도 7에 도시되었다. 도 7의 예는 폴더들의 계층으로서 구성된 디렉토리 시스템(701)을 도시한 것이다. 계층 내에, 각 폴더는 다른 폴더들을 및/또는 파일들을 내포한다. 각 파일을 블록들의 리스트를 내포한다.
"의 일부"(⊃) 관계는 위의 파일 시스템 예에서 정의되는 것으로, "루트 디렉토리 폴더"( 703) ⊃ "프로그램 파일 폴더"(705) ⊃ "어도브 폴더"(707) ⊃ "아크로바트 6.0 폴더"(709) ⊃ "AcroRd32.exe 파일"(711)이다.
트리 구조의 또 다른 예를 도시한 도 8을 참조한다. 도 8에서, 디렉토리들은 트리(801)의 리스트들로서 구축되고, 리스트 내 각 요소는 데이터 레코드이거나 데이터 레코드들의 리스트이다.
트리(801)에서, 데이터는 계층들로 구성되고, 따라서 각 데이터 요소는 데이터 레포지토리 내에 고유 "좌표"를 갖는 것으로, 예를 들면 "DNS 디렉토리" ⊃ ".il" ⊃ ".co.il" ⊃ ".xeround.co.il" ⊃ "www.xeround.co.il"이다.
데이터 요소의 좌표들은 요소를 고유하게 식별하며 그러므로 항상 기입 트랜잭션의 일부로서 제공된다. 많은 경우들에 있어서, 특정의 데이터 좌표들은 독출 트랜잭션들에서도 제공된다. 예를 들면, www.xeround.co.il 도메인 이름의 IP 어드레스를 해석하기 위해서, 특정의 좌표가 디렉토리 문의에 제공될 것이다. 그러나, 일부 독출 문의들은 계층 내 상위 레벨들, 예를 들면 ".co.il 내 모든 도메인 이름들"을 참조할 수도 있다. 이 경우 문의는 서브-트리로부터 정보를 읽기 위해서 이 서브-트리를 "선택"한다.
이하 기술되는 실시예는 데이터를 구성하고 데이터 레포지토리들 내 자원들을 계층 기반 해시 함수를 사용하여 처리하는 방법을 교시하며, 계층 기반 해시 함 수는 응답성, 데이터 일관성, 트랜잭션 무결성, 매우 큰 확장성, 동적 온라인 확장성 및 높은 이용성을 제공하면서도 모든 종류의 문의들을 지원하는 분산 데이터 레포지토리의 백-본을 구성하는 네트워크 채널들의 계층에 모든 데이터 요소들을 맵핑한다.
계산분할로부터 데이터 분할을 분리
분산 계층 기반 데이터 레포지토리 구축은, 서로 다른 문의들이 서로 다른 채널들에 발송될 수 있게 하고 한편으로 서로 다른 계산 서버들이 임의의 한 세트의 채널에 이들의 모든 메시지들을 수신하게 가입할 수 있게, 한 계층의 멀티캐스트 네트워크 채널들을 포함한다. 이하 이러한 공개-가입된 네트워킹 채널 메커니즘을 구현하는데 사용될 수 있는 서로 다른 표준 네트워킹 기술들을 열거한다.
도 4로 돌아가서 채널들 자체 내에 순서 ">"가 정의되고 이것은 "동일 혹은 서브-채널내", 즉 채널 1.1 ≥ 채널 1.2 및 채널 1.2 ≥ 채널 1.1이고 채널 1 ≥ 채널 1.1 ≥ 채널 1.1.1임을 의미한다.
분리는 도 9의 흐름도에 도시되었고 다음의 구성성분들로 구성된다.
. 마이크로(μ) 분할(903): 전역 데이터 레포지토리는 정적으로 그리고 가상으로 많은 독립적 마이크로-레포지토리들들(마이크로레포지토리(905))로 분할되며, 각각은 서로 다른 한 세트의 채널들에 가입된다. 마이크로-레포지토리들의 수는 수천 개 혹은 이보다 더 많을 수 있다.
. 해싱(907): 단조 계층 기반의 해시 함수는 데이터 레포지토리 좌표들을 채 널들에 맵핑하기 위해 이들 좌표들에 사용된다. 해시 함수 h()는 a ⊃ b => h(a) ≥ h(b)일 때 단조이다. 해는 동시성을 최대화하기 위해 완전 해시 함수들(즉, 타겟 채널들 간에 균질 분포)을 사용한다. 해시 함수는 실제로는 전역 데이터 레포지토리를 많은 독립적 마이크로-레포지토리들로 분할한다.
. 복제(909): 각각의 마이크로레포지토리는 3개(혹은 4개 혹은 그 이상의 카피들)의 동일하고 독립적인 카피들이다. 동일 마이크로레포지토리의 모든 카피들은 동일 한 세트의 채널들에 가입된다. 후술하는 바와 같이, 과반수 원리는 트랜잭션 무결성, 데이터 일관성 및 높은 이용성을 위해서 문의 결과들에 대해 사용된다.
. 분산 및 셔플링(911): μ레포지토리 카피들이 계산서버들에 모여진다. 각 마이크로레포지토리는 계산 서버에서 단일 프로세스, 스레드, 테이블 혹은 서브-테이블이다. 그러므로, 각 계산서버는 이의 마이크로레포지토리들의 채널들에 가입된다. 마이크로레포지토리는 부하 균형을 최대화하고 상호의존성 및 차단을 최소화하도록 계산서버들간에 적절히 분포 및 셔플링된다.
서브-채널들로 분할된 일련의 채널들을 도시한 개념도인 도 10a를 참조한다. 따라서, 채널 1은 채널 1.1 및 채널 1.2로 분할된다. 채널 1.1은 이번에는 서브-채널들 1.1.1, 1.1.2 및 1.1.3으로 분할된다.
채널들 및 서브-채널들에 할당되는 마이크로레포지토리들을 도시한 도 10b를 참조한다. 서브-채널에 가입되는 마이크로레포지토리가 그 채널 위의 모든 채널 레벨들에도 가입되는, 복제 및 셔플링 원리들을 적용한 예를 볼 수 있다.
네트워킹 채널링 공개 가입 방법
네트워킹 채널들은 여기에서는 각 서버가 공개할 수 있게 하는, 즉 임의의 채널로 메시지들을 보낼 수 있게 하는 공개 가입 메커니즘들로서 제공된다. 그러나, 채널에 사전에 가입된 서버들만이 채널에 공개되고 있는 메시지들을 읽게 된다. 어떤 서버이든 임의의 시간에 임의의 채널에/로부터 동적으로 가입 및/또는 탈퇴할 수 있다. 주어진 서버는 동시에 많은 채널들에 가입될 수 있다.
표준 패킷 네트워킹을 사용하여 채널들을 "공개 가입"하는 이러한 네트워킹을 구현하는 몇가지 방법들을 이하 기술한다.
분산된 데이터 액세스 및 관리 프로토콜 XDAP
도 9를 참조하면 좌표 해싱(807)은 "문의 라우터"(혹은 XDR-데이터 라우터)라고 하는 분산 계산 구성성분에서 수행된다. 문의 라우터들(1101.1...1101.3)을 사용한 네트워크 구조를 도시한 도 11을 참조한다. 각각의 문의 라우터는 복수의 문의들을 동시에 처리한다. 독출/기입 문의들/트랜잭션들을 발생하는 모든 데이터 레포지토리 클라이언트들을 지원하기 위해 해에서 필요한 만큼 많은 문의 라우터들이 있을 수 있다. 각각의 클라이언트는 하나 이상의 문의 라우터들에 대해 작업하게 재구성된다. 문의 라우터는 독출/기입 문의를 수신하고, 문의를 수행하고 이어서 결과 값 혹은 문의의 상태를 클라이언트에 다시 리턴하게, 클라이언트들에게 데이터 레포지토리를 나타낸다.
문의 라우터는 문의를 처리하기 위한 다음의 일반적인 알고리즘을 사용한다:
문의를 해시하여 올바른 채널에 문의를 보내기 위해 주 혹은 2차 키들로부터 형성된 문의의 좌표들을 사용한다. 모든 서버는 임의의 채널에 가입할 수 있는 것에 유의한다. 그러나, 채널에 가입된 서버들만이 이 채널의 메시지들을 수신한다. 독출 트랜잭션 처리는 기입(삽입, 업데이트, 삭제) 트랜잭션 처리와는 다르다. 문의 라우터는 단일의 문의를 몇몇의 독출 트랜잭션들, 기입 트랜잭션들 및 록킹(locking) 동작들로 변환할 수 있다. 문의 라우터는 이러한 문의 실행 계획 혹은 액세스 계획을 생성하고 이어서 후술하는 바와 같이 각각의 이러한 트랜잭션을 실행한다. 록킹 동작들은 일반적으로 공지된 바와 같이 수행되고 데이터베이스 도메인에서 사용된다.
독출 트랜잭션: 주 키에 기초한 독출 트랜잭션은 한 단계, 즉 독출 요청이 맞는 채널로 스위칭는 "스위칭 단계"에서 행해지며, 이에 이어 절차는 이 채널에 가입된 마이크로레포지토리들 자신의 내부 데이터 레포지토리에 대해 독출 문의를 독립적으로 계산하고 이들의 결과들을 다시 요청 데이터 라우터에 보내기 위해, 이들 마이크로레포지토리들을 대기한다. 독출 데이터 결과에 관하여 마이크로레포지토리로부터 충분한 정보를 수신한 후에, 데이터 라우터는 정보를 통합하여, 문의를 계산하고 결과들을 클라이언트에 보낸다.
2차 키에 기초한 독출 트랜잭션은 스위칭 단계 전에 라우팅 단계를 취함으로써 수행된다. 라우팅 단계는 2차 키를 위에 기술한 바와 같이 스위칭 단계에서 사용하게 될 1차 키에 맵핑하는 것을 포함한다. 라우팅 단계는 라우터들을 사용함으로써 달성될 수 있고, 혹은 이것은 올바른 2차 인덱스 테이블에 대해 독출 트랜잭 션을 수행함으로써 행해질 수도 있다. 2차 인덱스 테이블은 2차 키들을 원래 테이블의 주 키들에 맵핑한다. 그러므로, 인덱스 테이블의 주 키는 원래 테이블의 2차 키이며 이러한 인덱스 독출 트랜잭션은 위에 기술된 바와 같이 한 스위칭 단계에서 임의의 주 키에 기초한 트랜잭션에서와 같이 행해진다. 라우팅 단계가 네트워크 라우터들에 의해 구현될 때, XDR은 2차 키를 독출 트랜잭션이 보내지는 고유 네트워크 어드레스에 맵핑하는 또 다른 해시 함수를 사용한다. 이제 라우터는 메시지를 수신하여, XDR 관점에서 2차 키에 기초한 독출 트랜잭션이 단일 단계를 요구하게, 문의를 다른 곳에 보내거나 문의를 맞는 채널에 보낸다.
기입 트랜잭션: 기입 트랜잭션은 주어진 채널에 가입된 모든 서버들에 의해 수신된다. 그러나, 기입 트랜잭션의 분산 커밋 프로세스는 3 단계 커밋 프로토콜을 사용하여 주어진 채널의 구성원들 중에서 선출된 특별한 조정자에 의해 관리된다. 일단 3 단계 커밋이 완료되면, 조정자의 관리하에, 조정자는 기입 트랜잭션 완료 표시와 함께 XDR에 다시 보고하고, 이는 이어서 클라이언트에 보내진다. 조정자는 서로 다른 소스들로부터 동일 데이터 레코드에의 동시적 액세스가 허용되기 때문에 필요하고, 그러면서도 데이터 무결성은 동시 기입 시도들의 경우에 유지되어야 한다.
조정자의 선택에 관한 더 상세한 것에 대해서는 이하 과반수에 기초한 리더 선출에 관한 부분을 참조할 수 있다.
무 차단 동시적 처리, 순차적 일관성, 트랜잭션 무결성 및 내장애성을 제공하면서 기입 문의들 및 독출 문의들의 처리를 이제 상세히 논한다.
기입 트랜잭션 처리
기입 트랜잭션을 나타내는 간이화된 흐름도인 도 12a를 참조한다. 기입 트랜잭션은 삽입, 수정 혹은 삭제 트랜잭션들을 포함할 수 있다. 삽입 트랜잭션은 주 키를 추가하기 위해서 특정 데이터 레코드의 완전한 좌표 "C"를 항시 명시한다. 그러나, 삭제 및 수정 트랜잭션들은 주 키를 제공하지 않을 수도 있다. 이들은 2차 키 값들 혹은 이외 어떤 다른 탐색 기준을 제공할 수 있다. 주 키가 기입 트랜잭션의 일부로서 명시되지 않는 경우에, XDR은 우선적으로, 수정 혹은 삭제될 필요가 있는 모든 레코드들을 발견하는 독출 트랜잭션을 수행할 필요가 있고 이어서 곧 주 키 값으로 기입 트랜잭션을 수행한다. 도 12a의 설명에서는 여기에서는 기입 트랜잭션을 위한 주 키가 이미 확인된 것으로 가정한다. 기입 동작이 모든 카피들에서 성공적으로 완료되었음을 확실하게 하기 위해서, 모든 마이크로레포지토리 카피들에 3-단계 커밋 프로토콜을 수행한다. 커밋 프로토콜은 서버들 중 한 서버에 의해 조정된다. 즉 위에 언급된 바와 같이, 조정자가 되게 선출된다.
특히, 각각의 채널에 대해서, 조정자가 선출된다. 조정자는 임의의 트랜잭션의 커밋을 개시한다. 조정자는 의존적 트랜잭션들을 직렬화한다. 기입 액세스들 동안에 행해지는 독출 액세스들을 의미하는 것인 동시적 독출들은 통상적으로, 업데이트하기 전의 레코드의 버전을 사용하여 완료하며, 혹은 대안적으로 이들은 업데이트 후의 버전을 대기한다. 독출들은 또한, 이들이 업데이트 동안 수행되는 것을 애플리케이션이 요구한다면 이러한 수행의 경우에 실패하게 할 수도 있다. 또한, 일단 기입이 커밋되었으면(아울러 응답이 문의 라우터에 보내졌으면), 어떠한 새로 운 독출도 응답으로서 이전 버전을 수신하지 않는다.
조정자는 바람직하게는 각 채널에 대해 개시하는 각각의 트랜잭션을 마크하기 위해 단조 카운터를 사용한다. 3 단계 커밋의 제1 단계는 트랜잭션을 모든 참가자들에 보내는 것이다. 이에 따라 조정자는 트랜잭션을 모든 참가자들에 보낸다. 다음 단계는 이들의 사전-커밋을 수집하거나 응답들을 중지시키는 것이다. 원자 트랜잭션들은 단일 조정자를 통해 유지되며, 채널의 구성원들은 항상 각 트랜잭션에 관해서 완전히 동기하여 동작한다. 그러므로, 응답들은 항상 동일해야 한다(3 단계 커밋 용어로 사전 커밋 혹은 중지된다). 완전한 동기화에 기인해서, 채널 구성원들은 응답이 사전 커밋될 때 트랜잭션을 즉시 국부적으로 커밋할 수 있다(즉, 프로토콜 단계들의 어떤 병합이 있다). 과반수 응신을 수신하였을 때(사전 커밋 혹은 중지), 조정자는 적합한 응답으로 문의 라우터에 응답할 수 있다.
기입 동작 과정동안에 조정자의 장애의 경우 복구할 수 있기 위해서, 모든 구성원들은 트랜잭션 정보를 유지한다. 채널 구성원들의 전적으로 동기화된 특징을 유지하기 위해서, 조정자는 모든 구성원들이 모두 응신할 때까지 이들 모든 구성원들에 트랜잭션을 계속하여 재전송한다. 예를 들면 응신의 부재에 따른 반복적인 재전송의 필요성은 채널의 장애를 나타내며 채널은 장애를 반영하기 위해 재구성되어야 한다. 일단 트랜잭션에 관한 콘센서스가 있고 상태가 나빠질 수 있는 것이 있으면, 채널 구성원들에 대한 과반수 표결이 콘센서스에 이르러 이에 따라 복구될 수 있기 때문에, 일소될 수 있다. 그러면 조정자는 트랜잭션이 합의되어 이의 모든 정보가 일소될 수 있다는 것을 모든 구성원들에게 중계하는 정규 3단계 커밋 프로토 콜에서 최종 커밋 메시지와 사실상 유사한 메시지를 보낼 수 있다.
이제, 복합적인 트랜잭션 관리는 한 세트의 원자 트랜잭션들로 분해되고 하나의 조정자가 전체 트랜잭션을 맡고 다른 조정자들은 원자 서브-트랜잭션을 취급할 수 있다. 하나 이상의 원자 서브-트랜잭션들에 장애의 경우, 복합 트랜잭션 조정자는 완료되어 있을 수 있는 복합 세트 내 다른 원자 서브-트랜잭션들을 롤백 혹은 원래대로 놓는다.
네트워크 메시징을 줄이기 위해서 그리고 동일 트랜잭션의 다른 부분들에 관한 정보를 중계할 비-실시간 필요성에 기인해서, '다른 부분들' 정보는 다른 트랜잭션들에 대한 피기백으로서 보내질 수도 있다. 보다 정밀하게, 각 정규 트랜잭션 메시지는 이 트랜잭션 전 혹은 이를 포함하는 모든 트랜잭션들이 이미 채널에 의해 완전히 흡수된 최대 트랜잭션 id를 내포한다.
이러한 프로토콜은 데이터베이스의 원자성, 일관성, 분리성, 및 영속성, 혹은 ACID 특성들을 유지하면서, 조정자 자신을 포함하여, 채널의 소수의 구성원들의 어떤 장애를 견딜 수 있다. 데이터베이스 시스템의 ACID 특성들은 데이터의 안전한 공유를 할 수 있게 한다. 이들 ACID 특성들이 없다면, 제품들을 구입하기 위해 컴퓨터 시스템들을 사용하는 것과 같은 일상적인 발생은 어려울 것이며 부정확의 가능성이 클 것이다. 이에 따라, 정례적인 발생으로서, 2인 이상이 주어진 컴퓨터화된 카탈로그로부터 동시에 동일 크기 및 색의 스웨터를 구입하려고 한다면, ACID 특성들은 판매인이 이들 스웨터 구입 트랜잭션들이 서로 겹치지 않게 하여 판매인이 잘못된 재고 및 잔고(account balance)에서 면하게 하는 것을 가능하게 한다. 상술한 바는 기입 액세스로 전환되는 것이며, 전술한 프로토콜은 기입 동작들이 제어 하에 유지될 수 있도록 전체 슈퍼바이저가 전체 채널을 맡게 한다.
위에 프로토콜의 잠재적 효과는 대다수의 구성원들이 주어진 트랜잭션을 응신하였다면 임의의 후속되는 독출들은 객체의 이전 버전이 이들 머신들로부터 제거되었기 때문에 이 이전 버전을 결코 내포하지 않을 것이라는 것이다. 후속의 독출들은 새로운 버전을 갖게 되거나 타임아웃할 것이다. 복구시, 기입 트랜잭션은 모든 구성원들 상에 구현되어 있을 수 있거나 혹은 원래의 대다수 중 적어도 한 구성원이 여전히 트랜잭션 내용들을 가져 결국에 현 구성원들 상에 확실히 구현될 수 있을 것이다. 일단 이러한 것이 일어나면, 독출들은 더 이상 타임아웃하지 않을 것이며 이들은 객체의 새로운 버전을 내포할 것이다.
데이터 레코드의 모든 성공적인 기입은 고유의 "증명서", 즉 현 레코드에 대한 순차적인 기입 번호를 생성하며 프로토콜이 성공적으로 동작한 한, 레코드들의 마지막 값 증명서는 모든 카피들에 대해 동일할 것으로 예상될 수 있다. 이 증명서는 독출 프로세스의 일부로서 값 검증에 사용된다.
독출 처리
문의의 독출 처리는 위의 기입 문의에서처럼, 정확한 레코드를 찾는 것과, 이어서 찾은 정보를 출력하는 것을 요구한다. 상기되는 바와 같이, 동일 데이터 레코드는 2이상 위치에 있다.
이제 데이터 레코드는 통상적으로 주 키, 즉 레코드가 검색될 수 있는 제1 탐색가능 필드와 함께 저장된다. 이것은 또한, 다른 탐색가능 필드들을 가질 수도 있다. 데이터베이스는 주 키의 사용이 레코드에의 직접적인 어드레싱을 제공하게 해시될 수 있도록 구성되는 것이 바람직하다.
독출 문의가 데이터 요소의 주 키를 포함한다면:
1. 문의는 해시되어 XDR에 의해 맞는 채널로 스위칭될 수 있다.
2. 채널로부터, 레코드의 버전을 갖는 각 XDB는 문의를 수신한다.
3. 결과들은 레코드 내용과 마지막 기입 동작을 나타내는 증명서를 포함하여, XDB들에 의해서 요청 XDR에 리턴된다.
4. XDR이 충분한(과반수) 일관된 결과, 즉 동일 값 및 동일 증명서를 수신한 후에, 검색된 내용은 결과값으로서 클라이언트에 보내진다.
이제, 언급된 바와 같이, 2이상 필드가 탐색가능해 질 수 있다. 이에 따라, 특정 번호를 찾기 위해서 이름에 의해 주로 탐색되도록 한 전화 디렉토리의 경우에, 이름 필드는 1차 키를 구성한다. 그러나, 디렉토리는 요구된다면 역으로 탐색될 수도 있고, 따라서 번호는 이름을 찾기 위해 입력될 수도 있을 것이다. 이 경우 문의는 주가 아닌 키를 포함할 것이다.
독출 문의가 데이터 요소의 이러한 주가 아닌 키(1차일 수도 있고 혹은 2차 인덱스일 수도 있는)를 포함한다면, 독출 문의는 먼저, 1차 키를 제공하기 위해서 인덱스 테이블과 대조된다. 위의 예에서, 전화번호는 유일하며, 따라서 단일 결과에 이르게 되나, 많은 이러한 키들은 물론 유일하지 않을 수 있고 2이상 결과가 검색될 수도 있다. 그러면 문의 처리는 데이터 요소 혹은 요소들을 찾기 위해서 주 키 혹은 키들을 사용하여 위에서처럼 진행한다. 2차 인덱싱을 이하 상세히 언급한다. 1차 키는 검색된다면 정확한 채널로 안내한다.
이제 탐색문의는 또한, 키들을 전혀 포함하지 않을 수도 있다. 독출문의가 데이터 요소의 1차 키를 포함하지도 않고 이에의 2차 인덱싱도 포함하지 않을 때(즉, 단조로운 "탐색" 문의임), 탐색하기 위해서 계층에서 1이상의 레벨들을 "선택"해야 한다(디폴트에 의해 전부 탐색이고, 이것은 루트 디렉토리가 선택됨을 의미한다). 도 6의 디렉토리 구조에 대해 작성된 키들이 아니라 조건들을 갖는 문의의 예는 다음과 같다.
1. 10분보다 긴 재즈 트랙들을 찾는다("재즈 앨범"이 선택된다).
2. 25세 이하인 아티스트들의 앨범들을 찾는다(결합 문의 - "재즈 앨범" 및 "아티스트 데이터베이스"가 선택된다).
도 6의 계층을 채널들의 계층으로 변환하기 위한 계층 해시 함수 맵은 도 12b에 도시된 바와 같다. 도 12의 맵핑에서, 도 6의 구조의 모든 데이터베이스와 테이블은 슈퍼 채널로서 슈퍼 채널 1, 슈퍼 채널 2 등등에 맵핑되고, 주어진 테이블 내 모든 데이터 요소들은 한 세트의 서브-채널들에 맵핑된다. 예를 들면, "재즈 앨범" 테이블은 슈퍼채널 2.1에 맵핑되고 모든 재즈 레코드 엔트리들은 한 세트의 채널들 2.1.x로 해시된다. 특정의 재즈 레코드를 언급하는 임의의 독출 문의는 2.1.x 채널들 중 하나에 직접 매핑된다. 이어서, 레코드가 데이터베이스 내 존재한다면 상세는 동일 채널에 가입된 모든 마이크로레포지토리 카피들에 있을 것이다.
"재즈 앨범" 테이블을 "선택하는" 어떠한 독출문의이든 슈퍼채널 2.1에 맵핑 된다. 탐색 문의를 수신하는 각각의 마이크로레포지토리는 독립적으로 자기 자신의 내부 레포지토리에 대해 문의를 수행하여 검색된 어떤 결과들이든 리턴한다. 문의 라우터는 모든 개개의 마이크로레포지토리 결과의 카피들에 과반수 원리를 적용하고, 이어서 모든 결과들을 병합하여 클라이언트에 보낸다.
결합 데이터 문의는 일련의 원자 "선택" 트랜잭션들에 의해 조합된 복합 트랜잭션으로서 이행된다. 개개의 문의들이 한번에 하나씩 수행되고, 복합 트랜잭션은 한 선택의 결과가 결합 데이터 문의에 의해 어떠한 논리가 요구되든 이에 따라 다음 선택들에서 행해지는 문의에 확실하게 영향을 미치게 구성된다.
복구 및 자가치유
자가치유를 위한 절차를 예시한 간이화한 도면인 도 12c를 참조한다. 위에 기술된 시스템은 어떠한 단일의 장애도 시스템 이용성 및 기능성을 손상시키지 않도록, 어떠한 단일의 장애에도 내장애성이 있다. 시스템에서 내장애성의 수준은 각 데이터 레코드의 보다 많은 마이크로레포지토리 카피들을 사용함으로써 구성될 수 있다. 그러나, 일단 장애가 발생하면, 시스템은 이의 "내장애성" 수준의 일부를 잃으며, 더 이상의 장애들에 잔존하지 못할 수도 있다. 그러므로, 요구되는 내장애성 레벨을 자동으로 회복하는 "자기치유"라고 하는 "내장애성 복구" 메커니즘을 이제 논한다.
다음에서, 첫 번째 장애 후에 설정가능의 시간량에서 시작되는 내장애성 복구를 위한 완전 대칭의 분산 자가치유 메커니즘을 기술한다.
마이크로레포지토리에서 장애는 동일 채널에서 그의 피어들(peer)에 의해 자동으로 인식된다.
마이크로레포지토리 장애의 검출시, 다음의 복구 프로세스가 이행된다.
1. 마이크로레포지토리가 속한 채널의 다른 구성원들은 채널 상의 레포지토리들 중 하나가 장애가 있음을 인식한다. 채널의 조정자가 장애가 있는 것이 아니라면, 조정자는 유실된 마이크로레포지토리 카피를 호스트하기 위해서 새로운 서버를 채널에 추가함으로써 채널의 한 세트의 구성원들에 변경을 개시한다. 새로운 다시 호스트된 카피는 채널 조정자에 의해 채널과 재동기화된다. 이어서 채널의 기입 트랜잭션들은 도 12d에 기술된 바와 같이 이러한 변경을 반영한다.
2. 대안적으로, 장애 서버가 채널의 조정자라면, 채널 내 나머지 서버들은, 채널에 서버의 추가를 조정하고 도 12에서 위에 1.에서 기술된 바와 같이 채널 데이터 부가를 조정하는 채널을 위한 새로운 조정자를 선택한다.
도 12c에 기술된 바와 같이, 서버가 고장났을 때, 복구 프로세스는 장애 서버가 가입된 모든 채널들에서 행해질 필요가 있다. 이들 채널들 중 일부에서 장애 서버는 조정자였으며, 따라서, 복구 프로세스의 일부로서 채널들에 대해 새로운 조정자가 선출될 필요가 있다. 모든 복구된 채널들의 복구 프로세스를 조정하기 위해서, 사전에 컴파일해 둔 복구 계획을 사용하거나 필요하다면 새로운 복구 계획을 생성함으로써 복구 프로세스를 조정하는 총괄적 "자가치유" 조정자가 선출된다. 이러한 복구 계획은 장애가 난 서버 상에 호스트되었던 각각의 마이크로레포지토리에 대해서 잔존 서버들 중 어느 것에게 효과적으로 이주되어야할 것인지를 명시하는, 도 14에 기술된 바와 같이, "복구 매트릭스"로서 간주될 수 있다. 이러한 시스템을 사용하여 데이터는 장애가 난 서버가 호스트하였던 마이크로레포지토리 상의 데이터의 이용성에 이 서버가 최소의 영향을 미치도록 균형이 다시 맞추어 진다.
7개의 열들(B1...B7)이 7개의 서버들을 나타내는 차트인 도 13을 참조한다. 이들간에 서버들은 35개의 채널들(C1...C35)을 호스트한다. 각 서버는 박스들을 채워 나타낸, 14개의 채널들에 가입되며, 각각의 가입은 호스트되는 마이크로레포지토리를 나타낸다. 이에 따라, 도시된 바와 같이, 7개의 서버들 각각은 14개의 마이크로레포지토리들을 호스트한다. 각각의 마이크로레포지토리는 35개의 채널들에 맵핑되는 총 105개인 3벌의 35개의 베이스 마이크로레포지토리들을 주기 위해 3번 카피된다. B2와 C11간 교차한 곳이 채워지는데, 이는 서버(2)가 마이크로레포지토리(11)의 카피를 호스트함을 의미하며 따라서 채널(11)에 가입된다.
예를 들면 서버(3)의 장애를 보상하기 위해서 도 13의 구조가 어떻게 변경될 수 있는가를 예시하는 도 14를 참조한다. 서버 B3는 고장났으나 흑색으로 표시된 서버(3) 상의 모든 레포지토리들은 2곳의 다른 장소들에 있다. 복구 계획에서, 예를 취하기 위해 서버(7)는 비상 채널로부터 "서버(3) 다운" 비상신호를 수신하고, B3/C1, B3/C2 및 B3/C4에서 유실된 마이크로레포지토리들을 카피하기 위해 채널들(1, 3, 4) 상에 있는 레포지토리들을 카피하는 3개의 새로운 마이크로레포지토리 카피 프로세스들을 개시한다. 내용은 이들 채널들에 가입되는 다른 2개의 카피들로부터 복제된다. 마찬가지로 서버(6)는 채널들(6, 8, 10) 상의 내용을 카피한다. 서버(5)는 채널들(11, 14, 18) 상의 내용을 카피한다. 서버(4)는 채널들(19, 22, 26) 상의 내용을 카피하고 서버들(2, 1)은 이들간에 채널들(30 내지 33)을 공유한다. 카피된 레포지토리들은 흑색으로 표시하여 도시되었다.
채널 구현
위에 언급된 바와 같이, 채널들은 계층적 해싱 도식을 구현한다. 채널들은 간단하게 하기 위해서 마이크로레포지토리들간에 공유되는 매체로서 간주될 수 있다. 그러나, 일반적으로, 공유 매체는 레포지토리들을 추가하였을 때 거의 확장되지 못한다. 이것은 공유 매체는 밀도가 증가하였을 때 모든 레포지토리들에 처리 압력을 더하기 때문이다.
따라서, 대부분의 효율적인 네트워킹 구조들은 상호연결된 노드들의 그래프를 여는 스위칭 기반구조, 및 마이크로레포지토리들을 잎(leaf)으로서 유지하는 최소 멀티캐스트 스패닝 트리를 통해 실현된다.
멀티캐스트 스패닝 트리를 나타내는 채널 스위칭 네트워크 그래프의 개략도인 도 15를 참조한다.
애플리케이션 발송 노드들을 갖는 애플리케이션층 스위칭 네트워크가 정의될 수 있다. 발송 노드들은 DHT(분산 해시 테이블들) 구현에서 랜드 마크로도 알려져 있다. 물리층, 혹은 링크층, 혹은 네트워크층에서 표준 네트워크 기술의 어드레스 공간에 맵핑하는 채널 해시 함수를 사용하는 것이 효율적이다. 이러한 방법은 스위칭 해시 그래프가 통상의 표준 네트워킹 장비를 통해 구현될 수 있게 한다. 이러한 채널 해시 맵은 채널들의 실현을 위한 계산의 층들을 없앨 수 있게 하며 따라서 채 널들 내 분산 스위칭 해싱이 유선 속도로 처리될 수 있게 된다. 결국, 이러한 해시 맵의 사용은 해시 도식의 효율적이고, 고속의, 비용효율적이고 고도로 확장가능의 실현을 가능하게 한다.
표준에 기초한 채널 구현
해시 계층들을 보존할 수 있는, 예로서의 표준에 기초한 어드레스 공간들은
. IETF IP V4 혹은 V6
. ATMF ATM VCI VPI
. IEEE 802.D Ethernet dotl QinQ VLAN
. ITUT E.164
을 포함한다.
표준 멀티캐스트 채널 인라인 등록/가입 프로토콜들도 지원하는 표준 네트워킹 환경들은, 예를 들면,
. IP용 IGMP
. VLAN들용의 GARP
. ATM용의 UNI-NNI 시그널링
을 포함한다.
이를테면 IEEE MAC 어드레스들과 같은 비-계층적 어드레스 공간들을 골라 채널 해싱 스킴을 실현하기 위해 복수층 서브넷 네트워크를 구성하는 것도 가능하다. 표준 하드웨어에 의해 유선속도 처리를 지원하며 범용 공중망 기반구조 내에 쉽게 수용되는 효율적 구현의 예는 범용 공중 MPLS 백본의 마티니 혹은 유사 터널들을 통해 수용되는 IEEE dot1Q in Q VLAN이다. 이것은 대안적으로, 복수의 사이트 구현을 제공하기 위해 범용 공중 ATM 백본의 LANE/MPOA를 통해 수용될 수 있다.
P 스위치들(P)이 제공자측(PE) 장비에 이르고 이어서 이 장비가 고객측(CE) 장비에 이르는 네트워크 구성을 도시한 간이화한 도면인 도 16을 참조한다. 고객측(CE) 장비는 IEEE 802 dotlQ VLAN들을 구현하며 데이터 저장을 유지한다. CPE 포트 및 태그에 따라서, CE는 트래픽을 공중/전용 서비스 제공자측(PE)장치를 향해 Q in Q 이중 태그들과 함께 업링크로 해시한다. PE은 CE 업링크 트래픽을 포트 및 VLAN에 의해 MPLS의 터널들로 해시한다. 터널들은 MPLS의 내측 IP 어드레스로 해시되고, 루트 서술자들에 따라, 이들은 MPLS의 태그 스킴에 해시되고 제공자(P) 코어 스위치들에 보내진다. P 코어 스위치들은 트래픽을 태그들에 따라, 직접 혹은 다른 해싱을 통해 DWDM 주파수들, TDM 시간슬롯들 혹은 이외 분산 채널 구현을 공유하는 모든 사이트들에 걸쳐 적합한 전송 메커니즘들로 해시한다. 표준 네트워크 기술들에 의한 위에 기술한 방법을 사용은 시스템이 네트워크 기술들 내 기존 해싱을 이용할 수 있게 한다. 이에 따라 VLAN 태그들, IP 어드레스들, 태그 스위칭, 시간 혹은 웨이브-길이 멀티플렉싱은 유선 속도 및 최대 유선 용량으로 데이터에 직접 해싱 데이터 키들을 제공하는데 사용될 수 있다.
분산 해시 흐름 구현의 예들은 다음과 같다.
CPE 및 CE 저장 영역 분산 해시 흐름:
데이터 키 -> 채널 -> VLAN 태그 -> 태그 + 포트 -> 슈퍼 태그.태그 + 업링크 포트
PE 및 P 공중 영역 분산 해시 흐름:
업링크 포트 + VLAN -> 터널 ID -> LSP IP 접속 -> 내측 태그 -> 외측 태그
광학 전송 기본 해시 흐름:
외측 태그 + 포트 -> 광학 웨이브 길이(WDM) 또는/및 광학 시간슬롯(SONET)
이 이상의 상세에 대해서는 이하 특정 채널 구현에 관한 부분을 참조한다.
무한히 큰 크기의 고속 저장 네트워크에 각종 해시 스테이지들이 채널 분산 해시 테이블들을 어떻게 구현하는가를 도시한 도 17을 참조한다. 도 17은 분산 디렉토리 구현을 도시한 것이다. 분산 디렉토리 구현의 경우 클라이언트 문의 프로토콜은 LDAP(Lightweight Directory Access Protocol)이다.
본 발명의 바람직한 실시예에 따라 네트워크 레이아웃의 채널 해시된 구현을 도시한 도 18을 참조한다. 도 18의 구현은 고객측 장비를 가진 중앙 네트워크 링을 도시한 것이다. 중앙의 링 주위에는 데이터베이스들(XDB) 및 문의 형식화 혹은 스위칭 유닛들(XDR)이 있다.
VLAN 기술 및 GVRP 등록 프로토콜을 사용하여 액세스점들과 저장요소들간 분산 데이터베이스 통신을 구현하는 구현을 기술한다.
GVRP 기반 채널 구현
공개-가입된 네트워크 채널들을 구현하기 위해 여기 기술된 방법은 매우 효 율적인 채널 구현을 위해 VLAN 기술 및 GVRP 동적 등록 기술을 사용한다.
분산 데이터베이스 시스템은 2가지 유형들의 요소들로서 액세스 요소들(XDR)과 데이터 저장 요소들(XDB)로 구성된다. 요소들간에 통신은 기술된 바와 같이, 채널들을 통해서 행해진다. 각 채널은 데이터베이스에 저장된 데이터의 어떤 부분집합을 나타낸다. 각 채널을 포함하는 한 세트의 데이터 저장 요소들은 여러 가지 이유로 시간에 따라 변경될 수 있다. 액세스 요소들과 채널을 포함하는 실제 데이터 저장 요소들간의 채널 접속성을 유지하는 것은 중대하다. 데이터 저장요소들은 원자 커밋 동작들을 수행하기 위해서 동일 채널들을 사용하여 그들간에도 통신한다. 통신을 위해 선택된 채널은 데이터 저장요소들이 이들간에 통신할 때 데이터 자체로부터 추단된다.
현 방법의 장점은 채널에 보내지는 데이터가 발송자로부터 한번만 보내진다는 것이다. 이어서 데이터는 이것이 모든 목적지에 확실히 도달되게 하기 위해서 요구되는 최소로 네트워크가 메시지를 복제하면서 모든 채널 구성원들에 도달한다.
제안된 방법은 다음의 구축 블록들을 포함한다.
1. 시스템에 각 논리채널은 IEEE 802.Iq VLAN 기술을 사용하여 VLAN에 의해 물리적으로 구현된다.
2. 저장요소들은 채널들 상의 데이터의 수신자들이다.
a. 저장요소들은 적합한 VLAN에 대해 GVRP 등록 메시지들을 주기적으로 보냄으로써 채널에 수신자들로서 등록한다.
b. 저장요소들이 복수의 VLAN들에 등록할 수 있게 하기 위해서, 통상적으로 이들은 트렁크 포트들로서 이서넷 스위치에 연결될 필요가 있다.
c. 저장요소들은 채널 상의 데이터를 다른 채널 구성원들에 보낼 수도 있다. 이들은 채널 태그와 함께 브로드캐스트 메시지를 보냄으로써 이를 행한다. 이것은 이들이 단지 적합한 VLAN에 등록하므로, 다른 저장요소들에만 도달한다.
3. 액세스점들은 채널들에의 데이터의 발송자들이다.
a. 이들이 복수의 채널들에 데이터를 보낼 수 있게 하기 위해서, 이들은 IEEE 802.1q VLAN에 의해 태그된 브로드캐스트 메시지들을 보낸다.
b. 액세스점들이 태그된 패킷들을 생성할 수 있게 하기 위해서, 통상적으로 이들은 트렁크 포트들로서 이서넷 스위치에 연결될 필요가 있다.
c. 액세스점들은 채널 자체에 데이터를 수신하지 않으며, 따라서 이들은 채널에 등록하지 않을 것이다. 이들은 임의의 GVRP 시그널링을 수행할 필요가 없다.
4. 요소들이 연결되는 이서넷 스위치들은 VLAN 태그들 및 GVRP 시그널링을 지원해야 한다. 효율성을 위해서, 트렁크 포트들을 통해 들어오는 데이터는 포트가 수신자가 아니라는 VLAN 태그들로 태그된다. 이것은 이 해결책이 아니면 채널들로 보내진 모든 데이터가 액세스점들에서 필터링되어야 할 것이므로 이 해결책의 효율성의 요소이다.
5. 데이터 저정요소들로부터 액세스점들로 보내진 응답 메시지들은 표준 IP 메시지들 혹은 표준 이서넷 유니캐스트들일 수 있다.
최근에는 VLAN 태그된 패킷들을 WAN 네트워크를 통해 가상 LAN으로 전송하기 위한 해결책들이 있다. 이 목적을 위해 몇몇의 제안들이 IETF 기구 내에서 기안되 었다. 시스코와 같은 선도하는 벤더들로부터 포함된 몇몇의 구현들이 있다. 이에 따라, 데이터베이스 액세스점들과 데이터 저장요소들간에 통신채널로서 낮은 레이턴시의 분산 해시 테이블을 구현하는 방법을 위한 토대로서 표준 VLAN 및 GVRP 기술을 사용하는 것이 가능하다. 데이터 통신은 데이터 자체의 함수가 된다(즉, 통신은 데이터 요소를 해싱함으로써 선택된다).
이 방법은 채널로 복수의 수신자들에 보낼 메시지들이 단일 메시지로서 발송자에 의해 보내지므로, 생성된 메시지들의 수에서 효율적이다. 메시지는 모든 목적지에 실제로 도달하는데 요구되는 최소량만큼만 복제된다.
IGMP 스눕핑 기반의 채널 구현
여기 기술된 후술하는 바와 같이, IGMP 프로토콜 및 매우 효율적인 채널 구현을 위한 IGMP 스눕핑의 광범한 구현을 사용한다.
본 방법의 장점은 채널에 보내진 데이터가 발송자로부터 한번만 보내진다는 것이다. 이어서 데이터는 이것이 모든 목적지에 확실히 도달되게 하기 위해서 요구되는 최소로 네트워크가 메시지를 복제하면서 모든 채널 구성원들에 도달한다.
본 실시예의 방법은 다음 구축 블록들을 포함한다.
1. 시스템 내 각 논리채널은 전용 IP 멀티캐스트 어드레스를 사용하여 구현된다.
2. IP 멀티캐스트 메시지들은 통상적으로, 스위치 상에 복수의 수신자들이 있을 수 있으므로, 이서넷 브로드캐스트 메시지를 사용하여 이서넷 스위치 내에서 보내진다. 최근의 이서넷 스위치들은 패킷을 파악하고 IP 멀티캐스트 어드레스를 사용함으로써 이러한 패킷들을 모든 스위치 포트들에 브로드캐스트하는 것을 피하기 위해 IGMP 스눕핑으로서 알려진 기술을 흔히 사용한다. 또한 스위치 상에서 IGMP 프로토콜 통신을 관찰함으로써, 스위치는 IP 패킷이 어떤 포트들에 관련된 것인지를 알 수 있다. 이러한 널리 사용되는 기술을 IGMP 스눕핑이라고 한다. 여기에 제안된 방법은 이러한 최적화로 스위치들에 사용될 때 현저하게 더욱 효율적이다.
3. 저장요소들은 채널들 상의 데이터의 수신자들이다.
a. 저장요소들은 IGMP 프로토콜을 사용하여 적합한 IP 멀티캐스트 어드레스들에 데이터의 수신자들이 됨으로써 채널들에 수신자들로서 등록한다.
b. 저장요소들이 채널 상의 데이터를 다른 채널 구성원들에 보낼 수 있다. 이들은 채널에 연관된 멀티캐스트 어드레스에 IP 메시지를 보냄으로써 이를 행한다. 이것은 채널에 연관된 다른 저장요소들만이 이 멀티캐스트 어드레스의 수신을 위해 등록하므로, 채널에 연관된 이 저장요소들에만 도달한다.
4. 액세스점들은 채널들에 데이터의 발송자들이다.
c. 데이터는 채널에 연관된 멀티캐스트 어드레스에 목적지 어드레스가 설정되어 IP 메시지를 사용하여 이 채널로 보내진다.
d. 액세스점들은 채널 자체의 데이터를 수신하지 않는다. 그러므로 이들은 어떠한 채널들에도 등록하지 않는다. 이들은 어떠한 IGMP 시그너링도 수행할 필요가 없다.
5. 해결책의 효율성은 IGMP 스눕핑을 채용하는 이서넷 스위치들을 사용함으 로써 현저하게 향상된다.
6. 데이터 저장요소들로부터 액세스점들로 보내진 응답 메시지들은 표준 IP 메시지들 혹은 표준 이서넷 유니캐스터들일 수 있다.
7. IGMP는 WAN 링크들을 통한 그의 통과에 효율적이다. 패킷들은 수신자들에의 루트들 혹은 경로들이 분기할 때만 복제된다.
이에 따라, 통신이 데이터 자체의 함수인 것으로(즉, 통신은 데이터 요소를 해싱함으로써 선택된다), 데이터베이스 액세스점들과 데이터 저장요소들간에 통신채널로서 사용되는 낮은 레이턴시의 분산 해시 테이블을 구현하는 방법을 위한 토대로서 표준 IGMP 기술을 사용하는 것이 가능하다.
이 방법은 이서넷 스위치들이 IGMP 스눕핑 능력들을 가질 때 더 효율적이게 된다. 생성된 메시지들의 수는 한 채널로 복수의 수신자들에 보내질 메시지들이 단일 메시지로서 발송자에 의해 보내질 때 최소이다. 네트워킹 하드웨어는 모든 수신자들에 도달하기 위해서 요구되는 최소 점들에서 메시지를 단지 복제할 것이다.
이서넷 유니캐스트 기반의 채널 구현
여기에 기술된 방법은 통신채널을 위해 이서넷(유니캐스트) 통신을 사용한다.
본 방법은 이서넷 유니캐스트 메시지들의 사용에 기초한다. 즉 채널 내 통신은 유니캐스트 메시지들을 사용하여 행해진다. 이서넷 유니캐스트 발송자는 발송자 자신이 채널의 구성원인지 여부에 관계없이 메시지의 소스이다. 채널에 보내질 각 메시지는 이서넷 목적지 어드레스로서 구성원의 MAC 어드레스를 사용하여 각 구성원에 유니캐스트되므로 채널의 모든 구성원들에게 복제된다. 그러므로, 각 채널의 MAC 어드레스들의 회원 리스트를 유지하기 위한 메커니즘이 요구된다. 본 방법은 임의의 채널의 구성인지에 관계없이 채널에 통신하는 각 요소가 MAC 어드레스들의 자신의 회원 리스트들을 유지하게 하는 것을 포함한다. 이들 리스트들은 회원 리스트들에의 업데이트를 상기시키는 통신장애에 의해 동적으로 업데이트된다. 제안된 방법의 채널 회원 결정 프로토콜은 두 개의 네트워크 어드레스들간에 임시 맵핑 캐시가 유지되는 면에서 공지의 ARP 프로토콜과 사실상 유사성을 갖는다. 주된 차이는 ARP 프로토콜이 IP 어드레스들과 MAC 어드레스들간에 1 대 1 맵핑을 유지하나 제안된 방법은 단일 채널 어드레스를 몇몇의 MAC 어드레스들로 전환한다는 것이다.
각 요소는 채널 대 MAC 어드레스 정보의 캐시를 유지한다. 이때 캐시는 채널에 메시지를 보내고자할 때 요소에 의해 액세스된다. 이전 정보는 캐시로부터 제거된다. 캐시 내 정보가 불충분할 때, 필요한 정보를 얻기 위해 채널 결정 프로토콜 - 이의 메시지들은 이하 기술됨- 이 이용된다. 정보는 타겟들의 수가 어떤 함수적 최소값 미만이면 불충한 것으로 간주된다. 위에 기술된 데이터베이스의 목적을 위해서, 최소값은 과반수의 채널 구성원들이다. 또한, 요소가 채널 상에 메시지를 발생하나, 이전 정보에 대한 캐시의 에이징 제거 타임아웃보다 짧은 어떤 시간 프레임 내에 충분한 응답들을 수신하지 못하면, 요소는 관련된 채널 정보를 명시적으로 리프레시할 수도 있다.
이서넷 기반의 채널구현에서 사용되는 메시지
다음의 메시지들은 이한 CRP라 하는 채널 결정 프로토콜로서 알려진 제안된 방법의 채널 회원 프로토콜에서 사용된다.
1. CRP_request 메시지는 하나 이상의 채널들의 구성원들에게 이들의 MAC 어드레스를 요청자에게 보낼 것을 요청하는데 사용되는 이서넷 브로드캐스트 메시지이다. 요청자는 다음의 옵션들을 가진 각 채널에 관하여 그 자신의 상태를 마크한다.
a. 요청자는 자신을 채널의 구성원으로서 간주하지 않는다.
b. 요청자는 채널의 정규 구성원(데이터 저장요소들 중 하나)이다.
c. 요청자는 채널의 조정자이다. 이것은 채널 내 원자 커밋 절차들을 조정하는 것을 현재 맡고 있는 요소임을 의미한다(여기에서는 다른 곳에서의 조정자들에 관한 논의를 참조한다).
2. CRP_response 메시지는 CRP_request 메시지에 응하여 채널 구성원들로부터 보내진 이서넷 유니캐스트 메시지이다. 응답 메시지는 채널 상의 각 요소의 역할을 포함하여 응답 요소가 채널 상에 갖는 모든 정보를 포함한다. 응답 메시지는 채널들의 리스트를 포함한다. 각 채널마다, 구성원들의 MAC 어드레스들의 리스트 및 채널에서 구성원이 갖는 역할, 즉 채널의 정규 구성원인지 혹은 채널의 현재 조정자인지의 역할이 있다.
a. 통상적으로, 채널의 조정자는 채널의 모든 구성원들을 알고 있다.
b. 통상적으로, 정규 구성원들은 자신들만을 알고 있다.
c. 여기에서 유니캐스트 메시지에 대한 대안은 이서넷 브로드캐스트 메시지를 사용하여 메시지를 브로드캐스하는 것이다. 이점은 다른 요소들에 속할 수도 있어 시스템에서 총 요청 수를 줄일 것이라는 것이다. 단점은 브로드캐스트가 다른 요소들과는 무관하게 네트워크를 과도하게 플러딩할 것이라는 것이다.
3. 주기적으로, 저장요소들은 이들의 채널 회원 상태 정보를 내포하는 이서넷 브로드캐스트 메시지를 보냄으로써 브로드캐스트된다. 이러한 브로드캐스트 메시지는 CRP 응답과 동일한 내부 구조를 갖는다.
이서넷 기반의 채널구현의 확장
1. 동일 방법은, 예를 들면 비신뢰성(혹은 신뢰성) 브로드캐스트 및 유니캐스트 메시징의 다른 층의 두 기술들, 예를 들면 인피니밴드를 사용하여, 약간 변경하여 사용될 수 있다.
2. 이서넷 유니캐스트를 IP 통신(생(raw) IP로서 혹은 UDP패킷들로서)으로 대치함으로써 동일 방법을 IP 기술에 맞출 수 있다. 또한, 이서넷 브로드캐스트들을 모든 저장요소들이 등록한 IP 멀티캐스트로 대치하는 것이 타당하다.
이에 따라, 데이터베이스 액세스점들과 데이터 저장요소들간에 통신채널로서 사용하기 위해 낮은 레이턴시 분산 해시 테이블을 구현하는 방법으로서 널리 사용되는 이서넷 유니캐스트 통신을 사용하는 것이 가능하다. 해싱은 통신이 데이터 자신의 함수이게 하고, 이는 통신이 데이터 요소를 해싱함으로써 선택됨을 의미한다.
위에 설명된 바와 같이, 독출동작들은 데이터를 손상시키지 않고 실질적으로 동시에 수행될 수 있다. 그러나 기입동작들은 서로 간섭할 수 있다.
XDAP 프로토콜에서 사용되는 과반수 기반의 리더 선출 프로토콜
다음은 기입에 기초한 동작들의 의사결정 제어를 제공하기 위해 주 처리유닛이 선택될 수 있도록 각종 유형들의 분산 비동기 네트워크에서 과반수에 기초한 리더 선출의 실시예를 기술한다.
현재까지, 분산 시스템들에서 각종 유형들의 노드 장애 및 링크 장애에 내성이 있는 프로토콜들에 관해 상당한 연구가 행해졌다. 이 영역에서 최근의 논문들은 다음을 포함한다.
Leader Election in the Presence of Link Failures, Gurdip Singh, IEEE Traαsactions on Parallel and Distributed Systems 7(3), March 1996.
Leader Election in Asynchronous Distributed Systems, Scott D. Stoller, Technical Paper, Computer Science Department, Indiana University, Bloomington, IN, USA, March 9, 2000.
이와 동시에, 종래에 원자 커밋 목적으로 그룹 의사결정을 위한 강건한 프로토콜들에 관해 상당한 연구가 행해졌다. 좋은 요약이 다음에서 발견될 수 있다.
Consistency and High Availability of Information Dissemination in Multi- Processor Networks (dissertation for Ph.D.) - Chapter 8, Idit Keidar. Submitted to the Hebrew University in Jerusalem, 1998.
본 발명자들이 아는 바로는, 과학단체는 하나의 같은 맥락 내에서 분산 계산 영역들에서의 리더 선출의 문제 및 원자 커밋의 문제를 간파하지 않았다. 아울러, 대부분의 원자 커밋 알고리즘들에서는 조정자가 요구된다. 통상적으로 조정자는 리더 선출 알고리즘을 사용하여 그룹에 의해 선택된다. 링크 장애 및 구성성분 장애를 견디는 실제 분산 계산 환경의 정황 내에서, 두 영역들의 분리는 성공적으로 마무리된 개개의 해결책들의 성공이 무의미하게 되는 상황에 이르게 된다. 즉, 불합리하게, 현 기술에서는, 장애 및 선택된 알고리즘들의 패턴이 원자 커밋을 조정할 수 없는 리더가 선출될 수 있게 하는 패턴인 상황들이 있다. 또한, 불합리하게, 현 기술에서, 원자 커밋을 성공적으로 조정할 수도 있었을 노드가 있을지라도, 장애 및 선택된 알고리즘들의 패턴이 리더가 선출되지 않게 하는 패턴인 상황들이 있을 수 있다.
종래 기술의 위의 결점들을 극복하기 위해서, 여기에서 교시되는 리더 선출은 과반수에 기초한 3 단계 원자 커밋에 단단히 속박된다. 이에 따라 리더 선출 프로세스 및 따라서 과반수에 기초한 3 단계 원자 커밋의 결말의 모순된 성공 혹은 실패들을 방지하는 것이 가능하다.
본 해결책은 IMS-준비 데이터베이스를 생성하려는 요망의 직접적인 결과이다. 본 해결책은 각종 유형들의 몇몇의 장애를 극복할 수 있는 분산 데이터베이스 해결책을 포함하기 때문에, 수백만 가입자들이 사용하도록 한 IMS에 준한 전기통신 네트워크의 배치에 의해 제기된 데이터베이스에 대한 보장된 레이턴시 요건, 고 스루풋 요건 및 지속적 이용성 요건을 충족시키는 방법을 제공한다. 몇몇의 장애를 견디는 능력의 일부는 심한 장애 상황들에서 원자 커밋을 수행하는 능력을 포함한 다. 원자 커밋을 수행하기 위해서, 리더 선출 및 원자 커밋 알고리즘 자체가 심한 장애상황에 성공할 수 있는 것이 바람직하다. 리더 선출 및 원자 커밋 알고리즘들의 단단한 결합은 요구된 통신의 요구된 노드간 패턴이 비교적 작은 다른 리더 선출 알고리즘들보다 장애에 대해 훨씬 더 복구할 수 있는 리더 선출 알고리즘이 되게 한다. 즉, 요구된 노드간 통신이, 과반수에 기초한 3 단계 커밋에 대해 요구되는 최소의 것이다.
단단하게 결합된 알고리즘들은 데이터베이스를 포함하는 일 그룹의 노드들의 크기를 고려함으로써 효과적인 방법을 만든다. 알고리즘들은 미지의 크기의 그룹으로 일반화될 수 있다.
이의 핵심으로, 제안된 단단하게 결합된 알고리즘은 가르시아-몰리나 초대 알고리즘의 개선에 기초한다. Hector Garcia-Molina, Elections in a distributed computing system, IEEE Transactions on Computers, C- 31(l):47-59, January 1982. 알고리즘은 동일 장애 시나리오들 하에서 선출 및 커밋을 보장하는 한 프로토콜에 리더 선출 및 3PC 내장애성 프로토콜들을 결합하는 것을 포함한다.
다음은 선출 알고리즘의 하이 레벨 특징들을 기술한다.
과반수에 기초한 리더 선출 프로토콜의 하이 레벨 스테이지:
본 바람직한 실시예들에 따라, 리더 혹은 조정자 선출들은 다음에 임하여 수행된다.
1. 시스템 초기화: 모든 노드들(혹은 프로세스들)이 초기화하고 처음으로 분 산 데이터베이스에 합류할 때, 현재 알려진 조정자는 없다. 그러므로 조정자가 선출되고 모든 노드들은 조정자 신원을 공통으로 아는 것을 확실하게 하기 위해서 선출을 응신한다.
2. 노드 합류: 예를 들면 리부팅 후에 새로운 노드가 시스템에 합류하였을 때, 현재 조정자를 응신하는 것이 바람직하다. 이에 따라, 새로운 노드에 의한 합류는 선출 프로세스를 시작하게 하지 않으며, 이것은 새로운 노드의 고유의 식별자가 현 조정자의 고유 식별자보다 상위라고 해도 그러하다. 후술하는 바와 같이 식별자는 선출 프로세스에서 사용된다. 조정자의 전환 수행으로부터 비롯되는 데이터베이스 시스템의 어떤 수행 고갈을 제한하기 위해 가능한 한 현 조정자를 시도하여 유지하는 것이 알고리즘의 바람직한 특징이다.
3. 조정자 장애: 조정자 장애시, 예를 들면 조정자 머신이 기능이 멈추었을 때, 선출은 연결된 상태에 있는 모든 노드들에 의해 수행되는 것이 바람직하다. 근본적으로, 선출은 시스템 초기화시 기동된 것과 동일하다.
4. 접속성 장애: 조정자 및 과반수의 노드들, 즉 (N-1)/2 미만의 노드들을 구성하지 않는 일 그룹의 노드들이 과반수로부터 단절되었을 때, 여전히 연결된 과반수의 노드들은 새로운 조정자를 선출하는 것이 바람직하다. 일단 완전한 통신이 재개되면, 이전 조정자를 포함한 소수의 노드들은 새로운 조정자의 리더쉽을 인정하고 이에 합류하는 것이 바람직하다.
5. 요구에 의한 선출: 조정자는 자신을 천거함이 없이 선출 프로세스를 기동하는 것이 바람직하다. 이것은 조정자가 조정자로서(CPU, 메모리, 히트(heat), 등) 기능함에 있어 문제를 확인하여 책무를 대안적 노드에 넘기기로 결정한 경우 일어날 수도 있을 것이다.
과반수에 기초한 리더 선출 프로토콜의 알고리즘:
조정자 선출 프로토콜은 각 요소가 고유의 식별자를 가질 것을 요구하며, 어떤 시스템 메시지들을 요구하며, 다수의 기정의된 선출 상태들을 가지며, 어떤 타이밍 신호들 및 타임아웃들을 요구한다. 이들 문제들이 이제 해결된다. 1. 고유 식별자(UID): 각 노드(혹은 프로세스)에는 고유 식별자(UID)가 할당된다. UID들을 생성하는 다양한 공지의 기술들이 있다. 가장 간단한 것은 UID로서 시스템 상의 MAC 어드레스를 사용한다.
2. 메시지들: 모든 메시지들은 동일한 알려진 구성원 리스트를 공유한다. 다음은 전형적인 선출 시나리오에서 사용되는 메시지들의 리스트이다. 주파수들은 주파수 분할 멀티플렉싱이 시그널링에 사용되는 실시예에 관련시키기 위해 언급된다.
2.1 I_AM_ELECTED_COORD: 이것은 조정자에 의해서 F1의 주파수를 사용하여 주기적으로 보내지는 브로드캐스트 메시지이다. 이것은 모든 시스템 노드들에 보내지는 것이며 이들 노드들이 조정자와 여전히 통신함을 확신시키는데 사용된다.
2.2 I_AM_COORD_ CANDIDATE: 이것은 선출동안에 보내지는 브로드캐스트 메시지이다. 자신을 조정자 후보로 간주하는 노드는 이 메시지를 주파수 F2로 브로드캐스트한다.
2.3 I_ELECT_YOU: 이것은 노드로부터 잠재적 조정자에 보내지는 유니캐스트 메시지이다. 이 메시지는 I_AM_COORD_CANDIDATE 메시지에 대한 응답으로서 그리고 I_AM_ELECTED_COORD 메시지에 대한 응답으로서 보내진다.
2.4 IS_THERE_COORD: 이것은 각 노드가 선출에 참여를 시작하였을 때 각 노드에 의해 T3의 타임아웃과 함께 보내지는 브로드캐스트 메시지이다.
3. XDB 선출 상태들:
다음은 선출과정 중에 혹은 선출들 사이에 요소들 또는 노드들이 진입할 수 있는 전형적 상태들의 리스트이다.
3.1. IS_THERE_COORD: "조정자가 있나"라는 상태는 노드가 선출에 참가를 시작하였을 때 노드의 초기 상태이다. 위에서 언급된 바와 같이 T3는 IS_THERE_COORD를 내보낸 후의 대기 기간 - 이 동안에 선출 메시지들이 있는지 알기 위해 대기한다- 이다.
3.2.CANDIDATE: 노드가 후보 상태에 진입하였을 때, 이 노드는 I_AM_COORD_ CANDIDATE 메시지를 보냄으로써 자신을 조정자가 될 것을 천거한다. 노드는 최대 T6 시간동안 후보상태에 머무른다. 그 사이에 다른 노드가 조정자가 되었다면, 노드는 그 조정자를 시도하여 합류할 것이다. 상위 UID를 가진 노드가 현재 노드가 최근에 표결에 실패하지 않았음을 들었다면, 이 노드는 그 노드에 표결을 진행할 것이다. T6 타임아웃에 도달하였다면, 노드는 또 다른 노드가 하위 UID를 갖고 있더라도, 이 또 다른 노드를 표결을 진행할 것이다.
3.3. VOTED: 노드는 조정자가 될 또 다른 노드에 표결하기를 원하였을 때 " 표결" 상태에 진입한다. 노드는 표결상태에 있는 동안 한 후보에만 표결할 수 있다. 정규로, 노드는 최상위 UID의 노드에 표결할 것이지만 노드에 표결이 후보가 조정자가 된다는 성공적 결말에 이르지 않는다면 노드는 이 단계에 진입하는 다음 번으로 자신의 표를 변경하여 최근에 표결되지 않은 노드들 중 최상위 UID을 선택할 것이다라는 사실에 대한 고려가 있다.
이 상태에서 노드는 CANDIDATE 상태로부터 반대되었다면 자신의 입후보 메시지를 발송하는 것을 중지한다.
노드는 투표된 후보로부터 듣지 못한 T4의 타임아웃 후에 IS_THERE_COORD 상태로 이동한다. 이 메커니즘은 결국 투표를 변경하게 한다.
노드는 후보가 조정자가 되지 못하여 어떤 다른 조정자도 선출되지 않은 T5의 타임아웃 후에 IS_THERE_COORD 상태로 이동한다. 이 메커니즘은 결국 투표를 변경하게 한다.
3.4. ELECTED: 후보는 이의 입후보 브로드캐스트에 대한(응답들은 I_ELECT_YOU 메시지들로서 간주된다) 과반수 투표를 수신하였을 때 CANDIDATE 상태에서 이 상태로 이동할 것이다. 일단 이 상태에 진입하면, 노드는 I_AM_ELECTED_COORD 브로드캐스트를 발송하는 것을 포함하여 조정자의 책무들을 취한다.
3.5. ACCEPT: 이것은 노드가 어떤 다른 노드를 표결하거나 자신을 후보로서 보았다고 할지라도, I_AM_ELECTED_COORD 메시지를 브로드캐스트하는 노드가 조정자임을 노드가 받아들이는 상태이다.
4. 타이머: 시간들, 타이머들 및 주파수들의 다음 리스트는 선출 프로세스에 의해 사용된다.
4.1. Fl - I_AM_ELECTED_COORD 메시지가 보내지는 주파수. 시간 Tl = 1/Fl.
4.2.F2 - I_AM_COORD_ CANDIDATE 메시지가 CANDIDATE 상태에서 노드에 의해 보내지는 주파수. 시간 T2 = 1/F2
경험적으로, 좋은 실시는 4.3 F2 = 2.5 x Fl라는 것이 결정되었다.
4.4.T3 - IS_THERE_COORD 상태 동안 네트워크 트래픽을 관찰하기 위한 간격.
4.5. T3 = 5 x Tl, 여기서 Tl = 1/Fl
4.6. T4 - 노드가 이의 후보(후보 메시지에 대한 응답으로서)에 표결한 마지한 시간부터 그리고 이 노드가 표결한 후보로부터 어떠한 브로드캐스트들도 받지 못한 간격. 이 노드는 그 사이에 다른 어떤 자에 투표하였고 이 노드는 선출을 재시작함으로써 이 시점에서 그의 투표를 변경할 수 있을 것으로 가정한다.
T4 = 10 x Tl
4.7.T5 - 노드가 일관적으로 어떤 노드에 표결하였지만 표결된 노드가 과반수를 달성하는데 성공하지 못한 간격. 이어서, 노드는 선출을 재시작한다.
T5 = 200 x Tl
4.8.T6 - 이것은 노드가 과반수를 얻을 수 없고, 그럼에도 불구하고 선출된 조정자로부터 혹은 상위 UID를 가진 후보로부터 듣지 못한 경우 계속 후보가 되는 시간을 제한하는 간격이다. 노드는 입후보를 포기하고 표결할 또 다른 노드를 찾는다.
T6 = 500 x Tl
4.9. T7 - 이것은 일반적인 선출 타임아웃이다. 조정 선출이 이 시간 프레임 내 종료되지 않았다면, 전체 선출 프로세스는 재시작된다.
T7 = 1000 x Tl
4.10 T8 - T8은 타임아웃이다. T8 타임아웃 후에, 투표는 종료된 것으로 간주된다.
T8 = 30 x Tl
4.11 T9 - T9는 타임아웃이다. T9 타임아웃 후에, 후보 노드는 더 이상 후보인 것으로 간주되지 않는다.
T9 = 7 x Tl
본 알고리즘의 주목할만한 요소는 3 단계 원자 커밋을 수행하기 위해서 모든 다른 데이터베이스 노드들에 양방향 통신을 요구하는 분산 데이터베이스의 조정자여야 하는, 리더가 선출되는 목적에 부합되게 재단되는 방법이다. 다른 노드들은 이들간에 반드시 통신할 필요는 없다.
이러한 견지는 통신의 요구된 패턴이 존재하는 경우 및 그 경우에만 리더 선출이 마무리될 것이라는 이점을 가지고 통상 논의되는 것들과는 다른 알고리즘이 되게 한다.
레코드를 네트워크 어드레스에 맵핑하는 토대로서 2차 인덱스들을 사용함에 의한 데이터-레코드들에의 액세스
위에 데이터 관리 시스템에서, 데이터-레코드들의 주 키들을 네트워크 어드레스들에 맵핑하는 맵핑/해싱 함수들 및 이를 행하기 위한 정의된 XDAP 데이터 액세스 프로토콜을 사용한 데이터-레코드 인덱싱의 구현에 기초한 것인, 데이터베이 스들, 디렉토리들, 레지스트리들, 저장 시스템들 혹은 레포지토리들을 위한 구현이 제공된다.
그러나, 주 키들만에 기초하여 데이터에 액세스하는 것이 항시 충분하지는 않다. 흔히, 적어도 수시로 탐색될 필요가 있는 2차, 3차 및 그 이상의 레벨 키들이 있다.
따라서, 본 실시예들의 다른 이점들에 1차 키를 넘어서 탐색하는 능력, 즉 고속, 고 스루풋, 및 고 확장성으로 독출동작 및 기입동작을 위해 데이터-레코드들을 저장하고 가져오기 위해 표준 고속 네트워크 장비를 사용하는 능력을 부가하고자 하는 것이다. 기술된 기술들을 사용하여, 기능성은 이전에 기술된 1차 인덱스에 기초한 액세스와 동일한 방식으로 2차 인덱스들을 사용하여 데이터에 액세스할 수 있게 확장된다.
본 실시예는 레코드들을 네트워크 어드레스들에 맵핑하는 토대로서 2차 인덱스들을 사용하는 시스템에서 데이터-레코드들에 액세스하는 기술 및 구현을 교시한다. 결국 1차 어드레스들에서와 같이, 표준 네트워크 요소들을 사용하여 무 차단 유선속도로 원격 컴퓨터들에 레코드들을 저장하고 가져오는데 사용될 수 있다.
이에 따라, 시민들의 정부기관에 의해 유지될 수도 있을 레코드를 예로서 취한다. 레코드는 다음과 같은 필드들로서 이름, 사회보장번호, 집주소, 전화번호 및 여권번호를 포함할 수 있다. 모든 필드들은 완전히 탐색가능하나 단지 한 키만이 주 키이고 주 네트워크의 어드레싱 시스템에 직접 해싱될 수 있는 것이 바람직하다.
필드들은 다음의 스킴을 사용하여 1차필드와 2차필드로 구성될 수 있다. 레코드 사람; 1차 키: 사화보장번호(레코드를 네트워크 어드레스 7:9:B:8:4:A에 맵핑하기 위한 주 키로서 사용된다 ). 2차 키 1는 집주소이고, 2차 키 2는 전화번호이고, 2차 키 3은 여권번호이다.
1차 키는 효율성을 위해 선택되는 것이 바람직하다. 이에 따라 가장 탐색될 가능성이 있는 필드 혹은 항시 고유의 대답을 줄 가장 가능성이 있는 필드는 1차 키를 위한 1차 필드로서 선택될 것이다. 2차 키들은 유일할 수도 있고 유일하지 않을 수도 있는 것으로서, 데이터-레코드들에 액세스하기 위해 데이터-관리 시스템의 클라이언트 애플리케이션에 의해 사용될 수도 있다.
2차 키들은 값들의 범위들, 및 2이상 필드를 수반한 임의의 복합적인 한 세트의 값들에 대해 정의될 수 있다. 예를 들면, 나이로서 미성년과 집주소와의 조합 값이 특정 집에 있는 어린이들의 데이터-레코드들에 액세스하는데 사용될 수 있다고 말할 수도 있을 것이다.
통상의, 즉 종래 기술의 2차 및 1차 데이터-레코드 인덱싱은 컴퓨터 기반의 데이터-구조들 및 탐색 절차들, 대부분은 탐색-트리들로서 이를테면 2/3 트리들, 적색/흑색 트리들, 혹은 AVL 트리들을 사용하여 구현된다. 2차 키 기반의 액세스를 구현하기 위해 이들 방법들을 사용시, 근본적으로 1차 인덱스에의 교차-인덱싱은 주 키 액세스를 사용하여 구현된 위에 기술된 시스템의 이점들을 제한한다.
위에 기술된 데이터 관리 시스템에서, 표준 네트워킹은 데이터-레코드들을 저장하고 가져오는데 사용된다. 레코드들을 탐색할 때 메모리 액세스에서 이 방법 이 병목 및 중단된 라인들을 어떻게 피하는지가 기술되었다. 통상의 혹은 종래 기술들을 사용하여 구현되는 2차 키 탐색들은 주 키들이 검색될 때까지 2차 키들을 통해 데이터가 탐색될 동안 이들 모든 이점들을 손상시킨다. 단지 1차 키들이 일단 검색되었으면 후속되는 동작들은 무 차단 및 효율적이게 된다. 이것은 2차 키들을 사용하여 데이터를 액세스하는 모든 문의들에 대해서, 메모리 혹은 디스크 기반의 데이터 구조들을 액세스함에 있어 순차적인 라인들의 중단이 일어날 수 있음을 의미한다.
현재까지 데이터 관리 시스템들은 대부분 단일 컴퓨터에 기반하거나, 대안적으로 컴퓨터 네트워크를 통해 액세스될 수 있는 복수의 데이터 시스템들로 분할되어 계층적 시스템으로서 관리되었다(이에 대해 앞에 배경기술을 참조한다). 이들 구현들에서 인덱싱은 일반적으로 탐색 절차들을 지원하고 탐색 트리들과 같은 구조들을 사용하는 메모리내 및 디스크내 데이터 구조들에 기초하였다.
이러한 구조들은 일반적으로 데이터-관리 시스템들을 호스트하는 서버들이 클라이언트 애플리케이션들을 호스트하는 컴퓨터들의 속도 및 용량에 비례하여 이들이 증가하므로 이러한 보다 제한된 환경들에서 충분하다. 따라서, 서버가 N 클라이언트들을 지원하고(그리고 클라이언트 컴퓨터들보다 N배 빠르고) 이들 클라이언트들의 처리 용량이 기술 이점들을 통해(무어의 법칙) K배 증가한다면 서버도 그러할 것이며(N*K) 따라서 서버 메모리 및 CPU를 사용한 데이터 인덱싱 구현은 계속적으로 요건들을 충족시킬 것이다.
그러나, 최근에 클라이언트 서버 애플리케이션들만이 아니라 통신을 위한 컴 퓨터 피어 투 피어 애플리케이션들의 성장하는 패턴이 있다. 이러한 애플리케이션이 피어 투 피어 통신에 부대적인 효과로서 데이터 액세스를 요구할 때 이전에 행해진 선형성은 더 이상 적용할 수 없다. N개의 컴퓨터들이 피어 투 피어 애플리케이션에 연루된다면, N 제곱의 압력 계수는 관계된 데이터 관리 시스템들에 액세스하는 결과를 초래하고(N*(N-1)/2 대화) 비례적 선형성은 없어진다.
소비자 전화와 같은 종래의 피어 투 피어 애플리케이션들에서, 상용 데이터베이스들과 같은 표준 범용 데이터 관리 시스템들은 현재까지는 이러한 엄밀한 이유로 온라인 데이터 관리동작을 위해 결코 사용되지 않았다. 네트워크에서 전화의 위치를 해석하는 이러한 동작은 범용 데이터 관리 시스템보다는 전용의 전화 네트워크 및 애플리케이션에 특정한 네트워크 시그널링의 필수적 부분이었다.
단지 현재는 대량의 피어 투 피어 애플리케이션들에 대해 범용 네트워크들이 사용되기 시작하고 있기 때문에, 범용 데이터 관리 시스템이 온라인 호 데이터를 해석하여 저장하는데 사용될 때 네트워크 활동의 완전 다항식 압력들(메트칼프의 법칙)에 부합하여야 하는 것이다.
이에 대한 해결책으로서, 다음의 실시예는 병목을 극복하기 위해 네트워크를 사용하여 데이터-레코드 액세스를 구현하는 방법을 교시한다. 네트워크 링크층은 컴퓨터 메모리 혹은 디스크가 아니고 시스템에 대한 토대 및 백본이며, 따라서 네트워크층 오버레이들을 사용하고 각 레코드에 네트워크층 어드레스들을 추가하여 인덱싱을 구현하는 것이 가능하다. 그러므로, 복수의 네트워크층 서브네트들을 동일 링크층 네트워트 상에 오버레이할 수 있으므로, 데이터에 복수의 인덱싱 스키마 들을 오버레이하고 효율적 동시적 표준 네트워크 장비를 사용하여 데이터 관리 시스템을 계속하여 구현할 수 있다.
따라서, 설명된 바와 같이, 1차 데이터-레코드 액세스는 각 레코드를 이서넷 링크층 네트워크 및 MAC 어드레스들에 연관시키고 맵핑함으로써 구현된다. 또한, 2차 인덱스들은 동일 이서넷 링크층 네트워크, 및 분산 라우터들뿐만 아니라 표준 라우터들 상에 오버레이된 복수의 IP 서브네트들로서 구현되고 라우팅 방법들은 2차 인덱스들의 네트워크 어드레스들을 1차 인덱스의 MAC에 맵핑하는데 사용될 수 있다. 따라서, 1차 키들에의 2차 맵핑은 표준 네트워크 성분인 라우터에 의해 수행되어, 설계되었던 기능을 정확하게 수행한다. 링크 및 네트워크층 어드레스들, 즉 예에서 MAC 및 IP 어드레스들 둘 다를 위한 그룹 어드레싱을 사용함으로써 데이터 카피들 및 비-고유의 인덱스들이 여전히 존재할 수 있다.
본 실시예에 따른 2차 키들을 사용한 데이터 액세스 기술이 도 19에 도시되었고 위에서 언급된 바와 같이, 다음의 요소들을 내포한다.
XDR - 데이터-액세스 문의를 수신하는 객체, XDR1...XDRn
XDB - 사이트들 A, B, C, 및 D에 데이터-레코드를 저장하는 객체, XDB1...12
XDAP 프로토콜 - 복수의 카피들, 패킷 복제들, 패킷-유실 및 요소 혹은 세그먼트 유실이 있을 때 레코드들을 저장하고 가져오는데 사용되는 프로토콜.
또한 스위치들(1901)은 네트워크 구조에서 상호접속되고 모든 XDB들 및 XDR들을 연결하는 링크층 객체들이다.
라우터들(1903)- 네트워크 어드레스가 주어졌을 때, 한 링크층 어드레스로부 터 또 다른 링크층 어드레스를 가진 목적지에 패킷들을 보내는 네트워크층 객체들.
도 19는 분산 인덱스 라우터들을 사용하여 네트워크 상에서 복수-인덱싱을 지원하기 위한 라우터들의 사용을 도시한 것이다. 위에 설명된 바와 같이 시스템은 또한, 부하 균형 및 용장성을 탑재한다.
1차 키에 따라 구성된 데이터베이스의 2차 키에 의해 탐색할 수 있게 하는 1-아암 라우터를 도시한 도 20을 참조한다. 2차 키에 기초한 문의는 XDR(2002)에 의해 발행되고 라우터(2004)에 보내진다. 라우터는 문의를 수신하고 이의 라우팅 테이블에서 2차 키를 찾아 대응 1차 키를 찾는다. 1차 키는 통상적으로 해시되고 해시 결과는 문의를 XDB(2006)에 보내는데 사용된다. 문의는 타겟 링크층 어드레스와 동일한 정확한 XDB를 가진 네트워크로 다시 보내진다.
본 실시예에 따른 데이터 액세스 시스템을 사용하고 특히 2차 키들을 사용하는 예는 이동전화이며, 이 경우 SIM 카드 ID들 및 전화번호들은 이들 중 단지 하나가 1차 키일지라도 이들은 키들이다. 2차 키들(예를 들면 전화번호)에 관한 모든 문의들은 이들 키들에 할당된 서브넷 내 네트워크 어드레스에 맵핑된다. 충분한 1-아암 라우터들이 데이터-액세스 네트워크에 플러그되므로 전화번호를 수반한 문의가 수신되었을 때, XDR은 번호를 네트워크 어드레스에 맵핑하고 이를 서브넷의 라우터에 보낸다. 라우터는 문의를, MAC 어드레스가 1차 키에 대응하는 정확한 XDB에 보낸다. 1차 키는 XDB가 마지막 2차 키 업데이트를 가졌으며 관련된 네트워크층 어드레스를 취하고 서브넷 라우터로 표준 등록절차를 수행하였을 때 라우터에 의해 평이하게 학습되었다. 이것은 사실 IP 어드레스가 컴퓨터에서 구성될 때와 동일한 방식으로 동작한다.
네트워크를 통해서 그리고 네트워크 애플리케이션들의 결과로서 많은 분량의 데이터를 액세스 및 인덱싱하는 것이 열쇠이다. 이 기술은 대형 분산 저장으로서, 캐리어 기반구조에 기초하거나 상호접속된 종단-스테이션들간에 완전히 분산된 데이터베이스를 형성하는데 사용될 수 있다.
위의 사용의 예는 데이터 검색이 매우 엄격한 시간 내에 혹은 다른 수행 제한, 즉 고도로 정의된 서비스 질 요건이 요구되는 서비스들에 대한 것이다.
다른 테이블로서 저장 및 해시되는 2차 인덱스에 의한 데이터-레코드 액세스
라우터들을 사용하지 않은 2차 인덱스들을 구현하면서도 여전히 2차 인덱스들을 통해 데이터 레코드들에의 무 차단 실시간 액세스를 제공하는 또 다른 방법을 여기에 기술한다. 무 공유 분산 데이터 레포지토리들에서, 테이블들은 분할 키를 사용하여 분할되며 서로 다른 계산자원들간에 분산된다. 이러한 무 공유 구조들에서, 2차 인덱스들은 통상적으로, 분할에 속하는 서브-테이블의 2차 인덱스들을 각 분할이 유지하게 서로 다른 분할들 간에 분산된다. 대응하는 서브-인덱스와 함께 테이블 분할의 이러한 엄격한 병설은 주어진 분할 내에서 모두 스코프되는 데이터베이스 동작들을 지원할 때, 이점들을 갖는다.
예를 들면, CDR들(호 데이터 레코드들)을 보유하는 데이터베이스는 일자별로 분할될 수 있는데, 즉 모든 호들은 어떤 날에 한 분할에 속하게 할 수 있다. CDR 데이터베이스에 대한 2차 인덱스의 예는 발호 전화번호일 수 있다. 이러한 분할 예 에서, 특정 날에 행해진 모든 호들의 발호 전화번호별 서브 인덱스를 이 날에 행해진 모든 호들의 동일 분할 내 함께 있게 함으로써 어떤 공통되는 문의들의 계산이 효율적이게 된다(예를 들면, 주어진 날에 주어진 가입자에 의해 행해진 모든 호들).
그러나, 많은 다른 경우들에 있어서, 분할 서브-인덱스들을 분할 데이터 자체와 함께 있게 하는 것은 2차 인덱스들을 통한 데이터-액세스를 할 수 없게 하는 차단 데이터 구조를 생성한다.
예를 들면, ID 번호를 가진 위에 언급된 데이터베이스는 주 키 및 분할 키일 수 있다. 전화번호 2차 인덱스가 각 ID-번호 분할 범위에 대해 서브-인덱스된다면, 전화번호를 사용함으로써 데이터 레코드를 액세스하는 것은 문의를 모든 가입자들에게 브로드캐스트할 것을 요구할 것이다.
라우터들이 없이 2차 인덱스들을 구현하면서도 여전히 2차 인덱스들을 통해 데이터 레코드에 무 차단 실시간 액세스를 제공하는 또 다른 방법은 여기에 기술된 네트워크내 분산 데이터 관리의 일부이다. 전화번호 2차 인덱스는 또 다른 테이블, 즉 두 개의 필드들로서 "전화번호", 및 "ID 번호"를 갖는 "인덱스 테이블"로서 구현된다. 그러면 인덱스 테이블은 2차 인덱스 필드 "전화번호"가 인덱스 테이블의 주 키가 되게 분할된다. 2차 테이블은 원래의 테이블이 수정될 때마다 시스템에 의해 자동으로 업데이트된다. 2차 테이블은 시스템 내 어떤 다른 테이블로서 관리된다(독출동작 및 기입동작에 관하여). 그러므로, 인덱스 테이블 내 엔트리에 액세스하는 것은 어떤 데이터 요소를 이의 주 키를 사용하여 액세스하는 것처럼, 유선속 도로 행해진다. 그러므로, 2차 키를 사용하여 원래의 테이블 내 데이터 요소들에 액세스하는 것은,
1. 인덱스 테이블 주 키를 사용하여 인덱스 테이블에 액세스하고 원래의 테이블의 주 키를 수신함으로써,
2. 원래의 테이블 데이터 요소에 액세스하기 위해 결과적인 주 키를 사용함으로써 구현된다.
분할들에 걸쳐 인덱스 테이블을 해시하는 이 방법은 먼저 인덱스 테이블에 액세스하고 이어서 원래의 테이블에 액세스하는 2번의 주 키 기반의 데이터 요소 액세스를 사용함으로써 임의의 데이터 요소를 이의 2차 키를 사용하여 차단없이 사용자가 찾아낼 수 있게 한다.
시스템의 가동시간 모델
다음은 단지 3-5 복제들을 사용하여 시스템 이용성에 관해 5개 이상의 9들(>99.999%)을 달성하는 것을 보여준다.
위에 기술된 메모리내 분산 데이터 시스템에 기초하여, 계산요소들의 수 및 가상 데이터 분할이 계산요소들에 맵핑되는 방법의 함수로서 시스템의 예상 이용성을 계산하는 것이 가능하다.
위에 설명된 바와 같이, 계산노드들간에 가상 데이터 분할 카피들의 셔플링 통해 전체 부하 균형 및 계산노드들간의 상호의존성들이 증가한다. 한편, 도 24에서 알 수 있는 바와 같이, 한 그룹의 채널들에 할당되는 세트들(여기에서는 복원성 세트들이라 함)에 계산노드들을 배열함으로써, 시스템의 이용성이 증가될 수 있다. 모든 복원성 세트는 현재 소수의 이의 카피들을 잃을 수 있고 시스템이 여전히 사용가능할 것이기 때문에, 시스템 전체의 복원성이 매우 높다.
다음 가동시간 모델은 시스템 내 각 계산 요소 "슬롯"을 위해 사용된다.
년간 평균 서버장애 회수 2
최대 자가치료 기간 0.5 시간
각 서버 "슬롯"에 대한 연간 취약성 시간 1 시간
평균 서버 "슬롯" 이용성(작업 혹은 자가치료) 99.989%
서버 "슬롯" 이용성 "9s" 수 3.94
시스템 이용성 모델:
위의 시스템 이용성 모델을 사용하여 도 20b에 도시된 그래프를 계산하는 것이 가능하다. 위에 그래프는 각 XDB의 수행이 초당 15,000 연산들임을(실험실 테스트에서 행해진) 가정한다
그래프로부터 알 수 있는 바와 같이, 최대 200 XDB들을 가지며 초당 약 백만 트랜잭션을 발생하는 시스템에 있어 9가 5개인 이용성(>99.999%)에 대해 제공하기에 3개의 카피들이면 충분하다. 이러한 시스템은 최대 80,000,000-100,000,000 가입자들을 지원하는 대부분의 IMS 캐리어 클래스 애플리케이션에 충분하다.
위에 그래프에서 알 수 있듯이, 5개의 카피들은 그 용량의 시스템들에 대해 8이상의 9들(> 99.999999%)의 이용성을 제공하며,
. 복원성 세트들의 수: s
. 각 복원성 세트들 내 XDB들의 수: l
. 데이터 복제들: r = 2m+1
. 서버 이용성: l-p
. 시스템 이용성: >
Figure 112007066800551-PCT00001
IMS 시스템들에 대해 실제 필요한 용량
의 4-5배를 제공하는 시스템들에 대해 6이상의 9들의 이용성을 제공할 수 있다.
동시적 데이터베이스 클라이언트들간에 서비스 질(QoS) 관리
트랜잭션 레이턴시 및 스루풋 면에서 동시적 데이터베이스 클라이언트들간에 서비스 질(QoS)를 관리하는 실시예를 기술한다.
데이터베이스의 서비스 레벨 메트릭들은 최근에는 전형적으로,
(1) 레코드 독출 혹은 레코드 기입과 같은 원자 데이터베이스 동작의 레이턴시, 및
(2) 동시적 세션들의 수.
(3) 트랜잭션 레이트를 지칭한다.
또한, 데이터베이스들에서 레이턴시 보장을 구현하는 것은 통상적으로 어떤 타스크들에 우선도들을 설정함으로써 행해진다. 다음 상황들 하에 레이턴시 메트릭들을 보장하는 것은 문제가 된다.
1. 시스템 부하가 클 때(시스템 부하는 레이턴시 메트릭들에 영향을 미친다 ).
2. 분산된 데이터베이스들(시스템 분산은 동작 기간을 제한하는 것을 어렵게 한다).
실시간 데이터베이스들은 이를테면 전자무역, 전기통신 및 제조와 같은 수많은 영역들에서 널리 사용되는 실시간 애플리케이션들의 기본적 성분이다. 실시간 애플리케이션들은 이들이 제공하는 서비스 레벨에 의해 평가된다. 서비스 레벨은 최종 사용자 경험을 측정하게 된다. 최종 사용자 경험은 다음을 포함한다.
1. 서비스 이용성:
2. 사용자가 원할 때 언제든 서비스를 얻을 수 있는가
3. 서비스 응답성:
서비스가 충분히 신속하게 응답하는가
4. 서비스 전체 품질:
서비스 자체가 충분히 좋은가 - 사용자의 전체 경험.
물론, 실시간 애플리케이션 서비스 레벨은 애플리케이션 플랫폼 내 임의의 단일의 성분에 의해 달성되는 서비스 레벨의 연속이다.
실시간 애플리케이션들은 발전하고 있고 명백히 이들은,
1. 사실상 더욱 분산되고 있고,
2. 예측할 수 없는 작업부하를 가지며,
3. 예기치 않는 액세스 패턴들을 가지며,
4. 클라이언트-서버가 아니라 서비스 위주가 되고 있다.
현재, 어떠한 데이터베이스 및 특히 어떠한 분산된 실시간 데이터베이스도 데이터베이스의
(a) 액세스점 당 이용성(스루풋: 초당 동작 수),
(b) 응답성(원자조작(atomic operation) 당 속박된 레이턴시) 및
(c) 데이터의 새로움 및 일관성(데이터가 최신이고 정확한)
을 보장하는 서비스 질 메커니즘들을 구현하지 못하는 것으로 생각된다.
상기 메트릭들은 다음의 상호조건들이 존재하게 하면서, 보장되어야 한다.
1. 데이터베이스는 임의의 수의 사이트들에 걸쳐 분산된다.
2. 데이터베이스는 임의의 수의 동시적 액세스점들을 할 수 있다.
3. 데이터베이스는 차별없이 동작들의 임의의 조합을 수행할 수 있다.
4. 데이터베이스는 임의의 작업부하 하에 차별없이 수행한다.
본 실시예들은 네트워크내 실시간 데이터베이스를 포함한다. 실시예들은 네트워크를 이용하여 데이터베이스를 단일 전역 교차-위치 네트워크 서비스로 변환한다. 이러하기 때문에 네트워크 자체로부터 몇몇의 특징들을 상속하며 무엇보다도 전형적인 네트워크 QoS 메트릭들은 지연, 대역폭 및 향상된 손실 특성들이다. 데이터베이스 QoS의 새로운 개념은 실시간 애플리케이션 서비스 레벨 협정 요건을 만족한다.
본 기술된 실시예들은 실시간 애플리케이션 서비스 레벨 메트릭들을 실시간 데이터베이스 수행 메트릭들에 맵핑하는데 사용될 수 있는 QoS 개념을 제시하여 구현하기 위한 첫 번째 데이터베이스이다.
이러한 메트릭들은 다음을 포함한다.
1. 액세스 노드 당 보장된 데이터베이스 스루풋:
a. 데이터베이스 작업부하에 무관하고,
b. 동시적 액세스 노드들에 무관하게(각 노드는 상이한 애플리케이션을 수행할 수 있다)
2. 원자조작 당 보장된 데이터베이스 레이턴시:
a. 동작 혼합에 무관하고,
b. 데이터베이스 작업부하와 무관하고,
c. 데이터의 물리적 위치와 무관하고,
d. 데이터 스키마와 무관하고,
3. 애플리케이션
Figure 112007066800551-PCT00002
데이터베이스 데이터 일관성:
a. 데이터의 물리적 위치와 무관하고
b. 시스템에 걸쳐 데이터 복제들의 수에 무관하게.
여기에서 다른 어떤 곳에서 논한 바와 같이 데이터베이스 내 장애의 경우 최선의 실시가 제공된다.
도 4에 관하여 위에서 설명된 바와 같이, 분산 데이터베이스 시스템은 3개의 기본적인 유형들의 노드들로서 액세스 노드, 데이터 노드 및 스위칭 노드를 포함하는 한 클러스터의 서버들이다. 액세스 노드는 주로, 클라이언트 요청들을 취급하며 이에 따라 응답을 리턴한다. 데이터 노드는 주로, 이의 메모리 내에 데이터 레코드들을 저장하고 데이터를 관리하는데, 예를 들면 데이터 레코드를 검색하거나 비휘 발성 저장장치에 데이터 레코드를 저장한다. 스위칭 노드는 주로, 모든 클러스터 노드들을 연결하며 메시지들을 여러 노드들간에 발송한다. 액세스 노드 및 데이터 노드 둘 다는 시스템 내 나머지 노드들과는 무관하게, 임의의 물리적 위치에 놓일 수 있다.
사실상 서비스 레벨 메트릭들로 실시간 애플리케이션들에 맵핑될 수 있는 실시간 데이터베이스 보장된 QoS의 개념은 다양한 QoS 메트릭들을 포함할 수 있고 그 각각은 여러 가지 방법들로 구현될 수 있다. 다음은 있을 수 있는 데이터베이스 QoS 메트릭들 및 있을 수 있는 구현 실시를 개시하는데, 그러나 이들 및 많은 그 이상의 QoS 메트릭들을 구현하기 위해 다른 방법들이 사용될 수도 있다.
보장된 스루풋
목적은 수행될 수 있는 초 당 원자조작들의 수를 데이터베이스 클라이언트(실시간 애플리케이션)에 보장하는 것이다. 원자조작들은 레코드 생성, 레코드 독출, 레코드 수정, 레코드 삭제를 포함한다. 스루풋 레벨은 애플리케이션 요건들에 따른다.
현재 본 실시예들은 다음을 통하여 스루풋 QoS 메트릭을 보장할 수 있다.
. 스루풋 확장성: 본 실시예의 분산 데이터베이스는 간단히 더 많은 노드들을 클러스터(액세스 노드들, 데이터 노드들, 스위칭 노드들)에 추가함으로써 스루풋을 제한없이 확장할 수 있다. 각각의 액세스 노드는 어떤 스루풋(초당 X 동작)을 보장하며 시스템 전체의 스루풋은 모든 액세스 노드들의 스루풋의 합이다. 이에 따 라 애플리케이션은 임의의 필요한 스루풋을 요구할 수 있다.
. 스루풋 할당 메커니즘: 본 실시예들은 시스템 관리자가 액세스 노드 당 스루풋 몫을 할당할 수 있게 하는 스루풋 제어 메커니즘을 구현한다. 어떤 애플리케이션은 이의 스루풋 요건들을 만족하는데 요구되는 많큼의 많은 액세스 노드들을 사용할 수 있다. 그러나 애플리케이션 스루풋은 데이터베이스를 액세스하기 위해 사용하는 액세스 노드들에 할당된 스루풋 몫에 의해 제한되어, 동일 데이터베이스 자원을 사용하는 다른 애플리케이션들이 이들의 요구된 스루풋을 보장할 수 있게 한다.
원자조작 당 보장된 낮은 레이턴시
목적은 원자조작을 수행하고 가능한 한 낮게 유지하는데 필요한 시간을 제한하는 것이다. 원자조작은 레코드 생성, 레코드 독출, 레코드 수정, 레코드 삭제를 포함한다. 레이턴시 상한 값은 시스템의 순간 부하에 의해서 혹은 액세스 노드의 물리적 위치에 관련하여 데이터의 물리적 위치에 의해서 영향을 받지 않을 것이다.
본 실시예에 따른 시스템 내 동작 일주는 다음과 같다.
액세스 노드(파싱) -> 스위칭(요청 발송) -> 데이터 노드(처리) -> 스위칭(응답 발송) -> 액세스 노드(응답)
목적은 전형적인 일주의 서브-단계들의 각각의 레이턴시를 최소화하는 것이다. 본 실시예들의 시스템은 현재 낮은 레이턴시 QoS 메트릭을 다음을 통해 보장한다.
. 과반수 기반의 데이터 액세스 및 데이터 친화성: 노드 장애이든 순간적 네트워크 단절이든 데이터의 이용성 혹은 시스템의 수행에 영향을 미치지 않을 것이 보장되기를 원한다. 따라서, 각각이 다른 데이터 노드에 저장된 것인 데이터 레코드의 몇몇의 복제들을 유지한다. 데이터 레코드를 기입 혹은 독출할 때(과반수 기반의 리더 참조):
o 이 데이터 레코드를 저장할 것을 현재 요청받은 모든 데이터 노드들은 조정자를 선택한다. 조정자는 요청에서 동작을 관리하고 모니터를 행한다.
o 데이터 복제들의 과반수만큼만 레코드를 독출/기입할 것이 요구된다. 이것은 오기능 노드들이 동작을 느려지게 하지 않게 한다.
o 시스템 관리자는 데이터 친화성 정책들을 정의할 수 있다. 과반수의 데이터의 위치가 가능한 한 액세스점에 가까이 있게 설정될 수 있는 것을 의미하는 것으로 네트워크 (스위칭) 레이턴시들을 중화시킨다.
. 동시성 및 부하 균형: 각 데이터 노드는 서로 다른 데이터 노드들 간에 고르게 분산되는 데이터의 부분을 관리한다. 각 데이터 노드는 다른 노드들과는 무관하다. 즉, 다른 데이터 노드들과 동시에 데이터를 처리할 수 있다. 이것은 시스템이 고 부하 하에서 작업할 때에도 동작 당 짧은 레이턴시를 달성할 수 있게 한다. 본 실시예들의 데이터베이스는 클러스터에 필요로 한 만큼 많은 데이터 노드들을 추가할 수도 있다. 시스템이 데이터 노드들을 더 많이 가질수록, 동시적 데이터 처리 용량이 더 커지며, 결국 동작 당 레이턴시는 더 짧아지게 된다. 더 많은 데이터 노드들을 추가함으로써, 낮은 레이턴시 레벨들이 유지될 수 있다.
. 데이터 패킷화 및 네트워킹 기술들: 본 바람직한 실시예들은 액세스 노드들을 데이터 노드들에 접속하기 위해서 네트워크 및 스위칭 노드들을 제공한다. 시스템은 데이터베이스 테이블들을 원자 레코드들로 분해하고 이들을 패킷화하는 것을 수반한다. 각 레코드는 네트워크를 통해 전송되어 네트워크 상의 다른 위치(데이터 노드)에 저장된다. 이것은 현재 수행되고 있는 동작 수 혹은 데이터 스키마에 관계없이, 어떤 데이터 레코드가 이의 데이터 노드에 기본 네트워크 QoS 레벨로서 유선속도로 도달함을 의미한다.
보장된 실시간 데이터 새로움 및 일관성
목적은 데이터 레코드에 어떤 변화든지 즉시 효과가 나타나게 하는 것이다. 애플리케이션은 가장 최근에 업데이트된 데이터를 항시 검색하고 이 데이터가 시스템에 걸쳐 일관되게 할 수 있다.
본 실시예들은 현재 데이터 새로움을 보장하기 위해 몇몇의 메커니즘들 및 알고리즘들을 사용한다.
. 3-단계 커밋: 이것은 여기에서는 다른 어떤 곳에서 논의된다.
. 과반수 기반의 데이터 액세스 및 오류정정들: 이것은 위에서 논의된다.
데이터 노드 장애의 경우에 최상의 실시
데이터베이스는 이의 QoS 레벨을 보장하는 것이 바람직하다. 그러나, 데이터 노드 장애의 경우, 시스템은 이의 남아있는 자원들로 요구된 QoS를 만족시키기 위 해 전력을 다한다.
본 바람직한 실시예들은 데이터 새로움을 보장하기 위해 몇몇의 메커니즘들 및 알고리즘들을 사용한다.
. 제한없는 수의 액세스 노드들: 본 실시예들은 임의의 수의 액세스 노드들을 활성화한다. 액세스 노드들은 각 애플리케이션이 단일 이상의 액세스 노드에 접속할 수 있게 한다. 액세스 노드들 중 한 노드가 장애가 난 경우, 애플리케이션은 또 다른 노드와 함께 작업하여, 이의 액세스 레이트(스루풋)이 열화되지 않게 할 수 있다.
. 원자 자가치유: 본 실시예들은 이들의 데이터 노드들의 자가치유 메커니즘을 구현한다. 각 데이터 레코드가 서로 다른 노드들에서 몇몇의 카피들을 갖기 때문에, 데이터 노드 장애시 데이터는 여전히 나머지 데이터 노드들에서 사용될 수 있다. 이에 따라, 나머지 데이터 노드들은 그 데이터에 대한 책무를 인계받는다. 데이터 친화성은 시스템 자원들에 걸쳐 최적이므로, 이에 따라 작업부하는 클러스터 내 모든 데이터 노드들 간에 고르게 분산된다. 나머지 데이터 노드들이 할당된 추가의 데이터량을 저장하는 용량을 갖고 있다고 하고 이들이 완전히 이용되지 않는다고 하면, 데이터베이스 트랜잭션의 동시성이 유지된다. 이러한 동시성은 각 동작의 레이턴시 및 동시에 처리될 수 있는 동작들의 수가 QoS 요건에 준할 수 있게 한다. 추가의 데이터를 처리할 충분한 자원들이 없는 경우, 시스템은 여전히 이의 자원들을 최적으로 이용하며, QoS 요건을 충족시키기 위해 전력을 다한다.
실시간 데이터베이스들은 실시간 애플리케이션들의 기본 성분이다. 실시간 애플리케이션들은 이들의 서비스 레벨에 의해 측정된다. 애플리케이션 서비스 레벨은 실시간 데이터베이스와 같은 애플리케이션 플랫폼 내 모든 단일 노드의 서비스 레벨의 연속이다. 데이터베이스 QoS는 애플리케이션 서비스 레벨 메트릭들을 데이터베이스 수행 메트릭들에 매핑할 수 있게 하며 순간적 시스템 부하 혹은 액세스 방법에 무관하게 실시간 애플리케이션 서비스 레벨을 보장할 수 있게 한다.
상황적 애플리케이션들의 N+M 고-이용성 및 재난복구를 위한 네트워크내 데이터베이스 사용
다음은 상황적 애플리케이션들의 N+N 고-이용성 및 재난복구를 위해 네트워크내 데이터베이스를 사용하는 것을 기술한다.
실시간 상황적 이벤트 처리 애플리케이션
세션 기반의 실시간 이벤트 처리 애플리케이션들은 현 세션의 상태를 유지하는 것을 필요로 한다. 주어진 세션에 속하는 각각의 새로운 이벤트는 이의 세션의 "이력"(즉, "상태")의 맥락 내에서 처리된다. 일반적으로 패킷 기반의 애플리케이션들은 단순히 개개의 패킷들을 처리하고 이들을 전달하나, 이것은 항상 충분하지 않다. 많은 경우들에 있어서 세션의 상태에 따라 패킷을 다르게 처리할 것이 요구될 수도 있다. 이러한 애플리케이션들을 상황적 애플리케이션들이라 한다.
실시간 상황적 이벤트 처리 애플리케이션들에 대한 예들은, 전기통신 호-제 어 및 소프트-스위치들, 이동전화 홈 로케이션 레지스터(HLR), 인터넷 멀티미디어 시스템(IMS) 홈 가입자 서버(HSS), 서비스 선택 게이트웨이(SSG), AAA 서버들, 온라인 과금 서버, 보더 제어기, 방화벽, 온라인 뱅킹 및 트레이딩 시스템이다.
고 이용성 및 재난 복구
실시간 상황적 이벤트 처리 애플리케이션의 고 이용성(HA) 및 재난복구는 상황적 장애극복을 보장하기 위해서 서로 다른 서버들간에 실시간으로 애플리케이션의 내부 상태를 복제하고 동기화할 것을 요구한다. 재난 복구 계획(DRP)의 경우에, 애플리케이션의 내부 상태 실시간 복제 및 동기화는 서로 다른 위치들에서 서로 다른 서버들간에 수행된다.
시간 상황적 이벤트 처리 애플리케이션들을 위해 최근에 적용되는 유일한 DRP 및 HA 모델은 1+1 모델이다. 1+1 이용성 모델에서 애플리케이션들 서버들은 각 서버가 이의 대기 장애극복 서버와 함께 하여 쌍으로 온다. 2개의 서버들의 내부 상태들은 내재적으로 혹은 명시적으로 동기되어 유지된다.
내재적 내부 상태 동기화 고 이용성 1+1 모델
내재적 내부 상태 동기화는 시스템의 모든 입력들을 두 개의 서버들에 동시에 공급하고 각각이 동시에 대칭으로 동일 이벤트들을 처리하게 함으로써 행해진다. 결국, 두 애플리케이션 서버들은 대칭적 내부 상태들을 유지한다. 그러나, 두 서버들의 용량은 단일 서버의 용량으로 줄어든다. 내재적 내부 상태 동기화 모델은 하나 이상의 장애에 대해 내장애성을 달성하기 위해 2이상 애플리케이션 서버들간에 상태들을 동기화하는데 사용될 수 있다. 그러나, 모든 내재적으로 동기화된 서버들의 용량은 여전히 단일 서버의 용량과 같게 될 것이다.
도 21을 참조하면, 두 유닛들로 1차 유닛(2101) 및 2차 유닛(2102) 둘 다 프로세스의 상태를 저장하는 내재적 상태 동기화 1+1 HA 모델이 도시되었다. 내재적 동기화는 두 유닛들이 동시만이 아니라 실시간으로도 업데이트될 수 있게 두 유닛들간에 행해진다.
명시적 내부상태 동기화 고 이용성 1+1 모델
도 22를 참조하면, 명시적 내부상태 동기화는 내재적 내부상태 동기화의 비효율적 자원이용을 극복하는데 사용된다. 명시적 상태 동기화는 서버들간에 실시간으로 내부상태들을 교환하기 위해 두 서버들간에 전용의 접속 및 프로토콜을 사용한다. 각 서버는 독립적으로 서로 다른 세션들 및 이벤트들을 처리할 수 있다. 그러나, 각 서버는 두 서버들의 내부상태들을 갖는다. 서버들 중 하나가 장애가 났을 때, 제2 서버들은 이미 내부에 저장된 이들의 업데이트된 상태를 갖고 있기 때문에, 계속하여 모든 세션들 및 이벤트들을 처리할 수 있다.
도 22는 각 서버가 양쪽 상태들을 가질 수 있게 명시적 상태 동기화 프로토콜을 이용하는 링크(2202)를 통해 서버 1이 서버 2에 연결되는 명시적 상태 동기화 1+1 HA 모델을 도시한 것이다.
1+1 HA 모델에서 명시적 내부상태 동기화를 사용할 때, 두 서버들은 완전히 이용될 수 있다. 그러나, 서버들 중 하나가 다운되었을 때, 시스템의 용량은 단일 서버 용량으로, 즉 50%로 떨어진다. 이것은 시스템에 의해 제공된 서비스의 질의 심한 열화를 야기할 수 있다. 그러므로, 명시적 내부상태 동기화의 경우에서도, 각 서버는 장애의 경우에 서비스 열화가 그렇게 심하게 되지 않게 되도록 그의 전체 용량까지 이용되진 않을 것이다. 이것은 자원 이용을 감소시킨다.
명시적 내부상태 동기화는 전형적으로 실시간 상황적 이벤트 처리 애플리케이션이 실시간 생산 이벤트들보다 더 실시간 상태 동기화 이벤트들을 처리할 수 없을 것이기 때문에, 1+1 모델로 제한된다. 그러므로, 내부상태 동기화는 단일 장애를 넘어선 내장애성을 제공할 수 없다.
본 실시예들에서처럼 N+M 모델을 달성하기 위해 네트워크내의 고 이용성의 데이터베이스를 사용할 때, N+M 모델이 달성되게 많은 실시간 상황적 이벤트 처리 애플리케이션들의 내부상태들을 실시간으로 명시적으로 동기화하기 위해서 네트워크내 분산된, 편재된, 고 이용성의 무 차단 데이터베이스를 제공하는 것이 가능하다. N+M HA 모델은 시스템의 이용성을 보장하여 최대 M 서버 장애 하에서 N 최소 용량의 N 서버들을 제공함을 의미한다. 이것은 N+M HA 모델을 사용하여 N+M 서버들 상에서 시스템을 작동시킴으로써 달성된다.
N+M HA 모델에서 각 서버 장애가 시스템 용량의 단지 1/N+M만을 감소시키는 반면 모든 N+M 서버들이 완전히 이용될 수 있다. 혹은, N+M 서버들은 N개의 최대로 이용되는 서버들의 레벨까지 이용될 수 있어, 어떠한 개별적 서버 장애도 M 서버 장애들의 한계까지, 시스템 용량을 감소시키기 않게 된다. 두 경우들에 있어서 자 원이용은 통상적으로 1+1 HA 모델에 의해 달성될 수 있는 최대 50% 이용보다 더 큰 N/N+M이다. M은 통상적으로 10만큼 큰 N에 있어서도 1 혹은 2이기 때문에, N+M 모델에 의해 달성되는 자원이용은 통상적으로 85%-95%이다.
제안하고 있는 바와 같이, N+M HA 및 DRP에 대한 데이터베이스 중심의 실시간 상태 동기화 모델들은 동시에 서로 다른 위치들내 N개의 서로 다른 클라이언트들로부터 많은 동시적 기입들을 지원하기 위해 확장할 수 없는 차단 디스크내 혹은 메모리내 구조를 구비하는 현 데이터베이스 기술들을 사용하는 옵션이 아니다.
N+M 고 이용성을 위한 데이터베이스 중심의 실시간 상태 동기화 모델
본 실시예들은 다음을 제공하는 N+M HA 및 DRP를 위한 편재하는 고 이용성의 데이터베이스 중심의 실시간 동기화 모델을 제공한다.
1. 보다 큰 자원 이용성: 현재 50% 달성될 수 있는 최대 한계와 비교하여 약 90%.
2. 보다 높은 레벨의 내장애성: 현재 달성될 수 있는 단일 내장애성을 훨씬 넘음.
본 바람직한 실시예들은 현재 사용되는 명시적 상태 동기화 메커니즘을 피어 투 피어 1 대 1 프로토콜에서 클라이언트 서버 1 대 다수 모델로 전역 네트워크내, 편재한 무 차단 데이터베이스를 사용하여 확장함으로써 모든 위치들로부터의 모든 실시간 상황적 처리 애플리케이션 인스턴스들의 모든 상태들을 저장한다. 하나 이상의 애플리케이션 인스턴스 장애들의 경우에, 모든 세션 처리의 상황적 복구는 상 태 데이터베이스로부터 모든 필요한 상태들의 실시간 동기화에 의해서, 동일 위치 및/또는 다른 위치들 내 잔존 애플리케이션 인스턴스들에 의해 수행된다.
본 실시예는 명시적 상태 동기화 1+1 고 이용성 모델에서 현재 사용되는 동일 복수-애플리케이션 인스턴스 환경에 기초한다. 사실, 실시예는 1+1 고 이용성 모델에서 N+M 고 이용성 모델로의 향상을 수행하기 위해서 애플리케이션 인스턴스에 변경을 행하는 것을 요구하지 않고 애플리케이션 환경에 변경을 행하는 것을 요구하지도 않는다.
명시적 상태 동기화 1+1 고 이용성 모델에서 현재 사용되는 종래 기술의 복수-애플리케이션 인스턴스 환경에서, 각 실시간 상황적 이벤트 처리 애플리케이션 인스턴스는 이의 내부상태를 실시간으로 이의 피어 파트너와 동기한다. 피어들 중 한 피어의 장애의 경우에, 애플리케이션 환경은 장애가 난 서버로부터 이의 잔존한 동기화된 피어 파트너로 이벤트들 및 메시지들을 재 발송한다.
본 실시예들은 각 애플리케이션 인스턴스가 이의 상태들을 정확히 피어 투 피어 구조에서처럼, 심지어 동일 프로토콜을 사용하여, 상태-데이터베이스와 실시간으로 동기하는 것을 제공한다. 그러나, 피어 투 피어 시나리오와는 달리, 장애가 없는 한, 상태들은 상태 데이터베이스에 기입될 뿐이고, 어떠한 상태들도 애플리케이션 인스턴스들에 다시 동기되지 않는다.
상태 데이터베이스를 사용한 N+M 고 이용성 모델을 도시한 도 23을 참조한다.
이를테면 피어 투 피어 경우처럼, 하나 이상의 애플리케이션 인스턴스 장애 들의 경우에, 이벤트들 및 메시지들은 장애가 난 서버들로부터 잔존 애플리케이션 인스턴스들의 일부 혹은 전부에 재 발송된다. 시스템이 동작할 수 있는 두 가지 가능한 모드들이 있다.
1) 푸시 동기화 모드: 정확히 피어 투 피어 경우와 같이, 애플리케이션 환경은 주어진 장애가 난 서버에 속하는 모든 이벤트들 및 메시지들을 동일 위치 혹은 다른 위치 내 잔존 서버들 중 하나에 재 발송한다. 이 경우에, 상태 데이터베이스는 적합한 상태들을, 다시, 피어 투 피어동기화에 의해 사용되는 정확히 동일 프로토콜을 사용하여, 잔존 서버에 "푸시"함으로서 미리 동기화한다.
2) 풀 동기화 모드: 이 경우 애플리케이션 환경은 장애가 난 서버들로부터 동일 위치 및/또는 서로 다른 서버들 내 모든 잔존 서버들에 이벤트들을 및 메시지들을 재 발송한다. 그러므로, 인식하지 못하는 이벤트 혹은 메시지를 수신하는 잔존 서버들 각각은, 그의 상태를 갖고 있지 않기 때문에, 상태 데이터베이스로부터 상태를 미리 "pull"한다.
푸시 및 풀 모드들 둘 다는 동일 구현에서 공존할 수 있다. 이러한 경우에 푸시 모드는 일종의 상태들의 "프리-페치"로서 간주될 수 있고 그렇지 않았다면 요구시 하나씩 요청될 것이다.
기술된 바와 같이, 본 실시예들은 N+M HA 모델이 달성되게 많은 실시간 상황적 이벤트 처리 애플리케이션들의 실시간 내부상태들을 명시적으로 동기화하기 위해 네트워크내 분산된, 편재하는, 고 이용성 및 무 차단 데이터베이스를 제공하여, 무제한적 내장애성 레벨을 제공하면서 2배로 자원 활용을 증가시킨다.
이것은 애플리케이션 인스턴스들에 혹은 동작 환경에 어떤 수정을 가하여, 1+1 HA를 위한 명시적 상태 동기화 메커니즘들을 구현하는 시스템들에 대해 달성될 수 있다.
메모리내 데이터베이스 시스템 가격 모델
다음에 위에 기술된 실시예들 및 다른 유사 애플리케이션들에 적합한 가격 모델을 논한다. DBMS(데이터베이스 관리 시스템)용 가치 기반 가격 모델은 트랜잭션 레이트, 용량 및 스루풋과 같은 주요 고객 값들 중 어떤 것을 사용하여 도출된다.
이를테면 오라클, IBM DB2 및 기타 등과 같은 현 제공업자들에 의해 사용되는 현존의 DBMS 소프트웨어 라이센싱 가격은 이들의 가격 시스템들을 위해서 주요 고객에 중요한 문제들이 아닌 파라미터들을 사용하며 이에 따라 아무리 나빠도, 고객과는 반대되는 것으로서, 기껏해야 특히 서비스 제공자를 위해서 불공정하거나 독단적인 것으로서 간주된다.
다음은 현 가격 시스템의 조사이다.
1. 사용자/가입자/DB-클라이언트 모델 - 부과되는 가격은 데이터베이스 서버에 연결하거나 이에 연결이 허용된 사용자들/가입자들/DB-클라이언트들의 수에 관계된다. 고객의 관점에서, 사용자 기반의 가격은 사용자들/가입자들/DB-클라이언트들의 일부가 장시간 사용자들이고 나머지는 이를 드물게 사용하는 경우들에 있어선 비효율성을 낳는다. 사용자 기반의 가격은 실제 사용 레벨에 상관없이 모든 사용자 들에 있어 동일하다.
2. 프로세서 수 모델 - 이 모델에서, 부과되는 량은 시스템에 의해 이용되는 프로세서들의 수에 근거하는 것으로, CPU들은 동일 복수-CPU 서버(SMP) 내에서 카운트되거나, 클러스터 구성(예를 들면, 오라클 RAC)에서 동작하고 있는 서로 다른 서버들에 걸쳐 카운트된다. 때때로, 복수-코어 CPU들은 각 코어 당 카운트된다. CPU/코어 당 가격은 CPU의 클럭속도 및 추후에 부가되는 CPU들의 주변적 수행 기여에 무관하게 동일하다. 이러한 주변적 수행 기여에 관하여, SMP 및/또는 클러스터 구성의 복수 CPU들 구성에서, 프로세서들이 시스템에 추가될 때 이들 프로세서들 각각으로부터 주변적 활용이 감소하는 것에 유의한다. 부가된 10번째 프로세서는 첫 번째 프로세서보다 덜 기여한다. 이것은 지불이 각각 및 모든 프로세서에 대해 동일한 반면, 추가 프로세서 당 추가의 주변적 활용은 점점 더 낮아져, 이에 따라 고객의 관점에서 비효율성을 낳음을 의미한다. 또한, 고객들은 DBMS 소프트웨어에 의한 CPU들의 비효율적 이용에 대한 프리미엄을 지불해야 하고 DBMS 판매인들이 이들의 소프트웨어 제품들의 CPU 유효성을 개선하려는 동기가 소극적이라고 느낀다. 제공업자가 간단히, 가장 효율적인 방법으로 용량을 제공하기 위해 시스템을 재구성하기보다는 요구된 용량이 달성되기까지 CPU들을 추가하는 것이 더 비용효율적이다.
본 실시예들의 DBMS 소프트웨어 가격 모델은 클라이언트가 자신이 받은 서비스에 대해 지불하는 것, 즉 자신이 지불하고 있는 파라미터들이 얻어진 이익에 직접 관계된 것임을 아는 것인 가치 기반 가격 모델을 생성하는 것을 목적으로 한다. 이에 따라 본 실시예는 가격을 고객 관점에서 DBMS 시스템의 실제 수행에 기초한다. 이에 따라 이를테면 가입자 당 혹은 CPU 당의 기술적 파라미터들보다는, 피크 트랜잭션 스루풋과 같은 파라미터들이 사용된다.
본 실시예들의 DBMS 라이센스 가격 모델은 시스템의 실제 피크 스루풋에 기초한다.
소프트웨어 라이센스 가격 = 초 당 스루풋의 # * 스루풋 당 X 가격 **
* 스루풋은 다음에 의해 측정될 수 있다.
1. 초 당 데이터베이스 트랜잭션들 카운트.
2. 모든 질문들 및 리턴되는 결과들을 포함하여, 데이터베이스 클라이언트들과 데이터베이스 서버간 통신의 총 데이터베이스 트랜잭션 비트 레이트. 총 트랜잭션 비트 레이트는 초 당 메가비트들로 측정된다.
** 스루풋 당 가격은 다음에 연결될 수 있다.
1. GB로 데이터베이스의 용량.
2. 가입자들/사용자들의 총 수.
3. 혹은, 고정된 량일 수도 있다.
가격의 바람직한 면은 클라이언트가 스루풋 단위 - 소프트웨어의 사용에 의해 도출된 주요 수행 값- 당 직접 지불하는 것이다.
예:
스루풋 당 가격:
GB=< 3 $3,000
GB=<6 $4,000
GB>6 $5,000
초 당 스루풋 # GB 메모리 스루풋 당 가격 총 비용
1,000 3 $3,000 $3,000,000
1,000 4 $4,000 $4,000,000
2,000 4 $4,000 $8,000,000
표 1, 대표적인 파라미터들 및 대응 요금들
종래에 낮은 요건에 반대되는, 초 당 매우 높은 스루풋에 대한 증가하는 필요성이 있다. 이 성장하는 필요성은 IP 전화 서비스들의 전개가 성장함에 따라 극적으로 증가할 것으로 예상된다. 종래에 고객들은 비효율성에 대해 기꺼이 지불하였으나, 본 실시예들은 필요성을 제거한다. 지불은 트랜잭션 스루풋에 직접 연결된다. 클라이언트들은 주요 값인 시스템의 총 피크 스루풋에 대해 지불하고, 지불은 CPU들의 수 혹은 가입자들의 수와 같은 다른 기술적 파라미터들에 연결되지 않는다.
이 특허가 유효한 동안 많은 관련된 장치들 및 시스템들이 개발될 것으로 예상되고 여기에서 용어들의 범위, 특히 네트워킹, 데이터베이스 관리, QoS, 및 스루풋 용어들은 선험적으로 이러한 모든 새로운 기술들을 포함하도록 의도된 것이다.
명확성을 위해서 개별적 실시예들의 맥락에서 기술된 본 발명의 어떤 특징들은 단일 실시예로 조합하여 제공될 수도 있음을 알 것이다. 반대로, 간략성을 위해서 단일 실시예의 맥락에서 기술된 본 발명의 여러 특징들은 개별적으로 혹은 어떤 적합한 서브-조합으로 제공될 수도 있다.
본 발명이 이의 특정의 실시예들에 관련하여 기술되었을지라도, 많은 대안들, 수정들 및 변형들이 당업자들에게 명백할 것임이 분명하다. 따라서, 첨부된 청구항들의 정신 및 넓은 범위 내에 드는 모든 이러한 대안들, 수정들 및 변형들을 포괄하도록 한 것이다. 이 명세서에서 언급된 모든 공보들, 특허들, 및 특허출원들은 각각의 개개의 공보, 특허 혹은 특허출원이 구체적으로, 개별적으로 참조문헌으로 여기 포함되는 것으로 표시된 것과 같은 정도로, 본 명세서에 참조문헌으로 그들 전체가 여기에 포함된다. 또한, 이 출원에서 어떤 참조문헌의 인용 혹은 확인은 이러한 참조문헌이 본 발명에 대한 종래 기술로서 사용될 수 있다는 승인으로서 해석되지 않을 것이다.

Claims (43)

  1. 데이터 액세스 시스템에 있어서,
    각각이 독립적으로 액세스가능한 가상 분할들로 배열된 데이터베이스 유닛들,
    복수의 데이터 처리유닛들, 및
    상기 가상 분할들 간에 상기 데이터 처리유닛들을 스위칭하여 데이터 처리용량을 각각의 가상 분할들에 동적으로 할당하기 위한 스위칭 네트워크를 포함하는, 데이터 액세스 시스템.
  2. 제 1 항에 있어서, 상기 스위칭 네트워크는 스위칭 유닛들의 상호접속을 포함하는, 데이터 액세스 시스템.
  3. 제 1 항에 있어서, 각각의 데이터베이스 유닛은 각각의 네트워크 채널로서 독립저그로 액세스될 수 있는, 데이터 액세스 시스템.
  4. 제 1 항에 있어서, 데이터에 해싱 프로세스를 수행하기 위한 해싱 유닛을 더 포함하며, 데이터는 상기 해싱 프로세스의 결과를 통해 각각의 데이터베이스 유닛들에 할당되는, 데이터 액세스 시스템.
  5. 제 4 항에 있어서, 데이터가 1차 키 및 적어도 하나의 2차 키들을 갖는 레코드들의 형태로 할당되고, 상기 해싱 프로세스는 상기 1차 키로 수행되는, 데이터 액세스 시스템.
  6. 제 5 항에 있어서, 각각의 2차 키에 기초한 탐색 문의가 라우터를 통해 상기 1차 키에 관계될 수 있게, 2차 키와 상기 해시된 1차 키 간의 관계를 표로 만들기 위해 적어도 상기 한 라우터로 구성되는, 데이터 액세스 시스템.
  7. 제 5 항에 있어서, 각각의 2차 키에 기초한 탐색 문의가 내부 인덱스 테이블을 통해 상기 1차 키에 관계될 수 있게, 2차 키와 상기 해시된 1차 키 간의 관계를 맵핑하는 적어도 하나의 추가의 자동으로 관리되는 상기 내부 인덱스 테이블로 구성되는, 데이터 액세스 시스템.
  8. 제 1 항에 있어서, 적어도 2개의 데이터 분할들에 대해 적어도 한번 데이터가 복제되는, 데이터 액세스 시스템.
  9. 제 1 항에 있어서, 상기 데이터 처리 유닛들 중 하나를 충돌하는 기입동작들 간을 중재하기 위한 조정자로서 동적으로 할당하기 위한 선출기능을 포함하는, 데이터 액세스 시스템.
  10. 제 9 항에 있어서, 상기 조정자는 조정자로서 계속하고 있음을 규칙적으로 알리게 구성되고, 상기 선출 기능은 상기 규칙적인 신호가 중단되었을 때 상기 동적 할당을 반복하게 구성된, 데이터 액세스 시스템.
  11. 제 10 항에 있어서, 상기 동적 할당에 의해 중단된 기입동작은 상기 동적 할당이 종결되었을 때 가장 전진된 복구가능의 위치부터 재개되는, 데이터 액세스 시스템.
  12. 제 9 항에 있어서, 상기 조정자는 레코드-변경 동작에 이어 고유 증명서를 레코드에 할당하여 상기 레코드의 버전들이 동등해지게 하도록 구성되는, 데이터 액세스 시스템.
  13. 제 4 항에 있어서, 데이터는 적어도 3개의 키들을 갖는 레코드들의 형태로 할당되고, 각각의 레코드에는 상기 키들 중 상기 한 키에 기초한 1차 어드레스와 상기 키들 중 나머지 키들에 기초한 2차 어드레스들이 할당되는, 데이터 액세스 시스템.
  14. 제 13 항에 있어서, 2차 어드레스를 대응하는 1차 어드레스로 해석하여 대응 1차 키를 사용하여 2차 키에 의해 정의된 레코드를 찾게 하는 해석유닛을 포함하는, 데이터 액세스 시스템.
  15. 제 14 항에 있어서, 상기 해석유닛은 적어도 한 라우터를 포함하는, 데이터 액세스 시스템.
  16. 제 15 항에 있어서, 상기 해석유닛은 적어도 한 백업 라우터를 더 포함하는, 데이터 액세스 시스템.
  17. 제 8 항에 있어서, 상기 스위칭 메커니즘은 상기 모든 가상 분할들의 이용성이 유지되게, 상기 데이터 처리유닛들 중 하나 이상의 장애에 따라 상기 데이터 처리유닛들의 나머지 유닛들에 데이터 분할 버전들을 재할당하게 구성된, 데이터 액세스 시스템.
  18. 제 1 항에 있어서, 각각의 가상분할은 소정 수의 데이터 처리유닛들에 저장되어, 주어진 데이터 처리유닛의 장애 후, 모든 데이터가 액세스가능한 상태에 있게 하는, 데이터 액세스 시스템.
  19. 제 18 항에 있어서, 상기 소정 수는 적어도 3인, 데이터 액세스 시스템.
  20. 제 19 항에 있어서, 적어도 3인 상기 수는 기수이며, 그럼으로써 상기 데이터의 무결성을 보장하기 위해 상기 카피된 가상분할들간에 과반수 표결을 하게 하 는, 데이터 액세스 시스템.
  21. 제 20 항에 있어서, 상기 기수는 적어도 5인, 데이터 액세스 시스템.
  22. 제 1 항에 있어서, 상기 데이터 액세스 시스템의 개개의 고객들에 의한 사용을 측정하기 위한 사용 측정 기능, 및 상기 고객들의 피크 사용에 기초하여 이들에게 과금하기 위한 과금기능을 더 포함하는, 데이터 액세스 시스템.
  23. 데이터 액세스 시스템에 있어서,
    데이터 처리유닛들,
    데이터 저장유닛들,
    상기 데이터 처리유닛들과 상기 데이터 저장유닛들간을 동적으로 스위칭하기 위한 이들 사이에 스위칭 시스템, 및
    상기 데이터 액세스 시스템의 개개의 고객들에 의한 사용을 측정하는 사용 측정 기능, 및 상기 고객들의 피크 사용에 기초하여 이들에게 과금하기 위한 과금기능을 포함하는, 데이터 액세스 시스템.
  24. 고 이용성, 고 확장성 데이터 저장 및 문의 시스템을 제공하는 방법에 있어서,
    데이터 문의장치를 제공하는 단계,
    상기 데이터 문의 장치와는 별개의 데이터 저장 장치를 제공하는 단계, 및
    현 문의의 영향하에 상기 데이터 저장 장치와 상기 데이터 문의 장치간을 동적으로 연결하기 위한 스위칭 시스템을 제공하는 단계를 포함하는, 방법.
  25. 제 24 항에 있어서, 상기 데이터 저장 장치를 복수의 채널들로서 제공하는 단계를 포함하는, 방법.
  26. 제 25 항에 있어서, 각 데이터 아이템을 레코드로서 저장하고 소정 수의 상기 채널들에 어떤 주어진 데이터 레코드의 카피들을 제공하는 단계를 포함하는, 방법.
  27. 제 26 항에 있어서, 상기 소정 수는 기수인, 방법.
  28. 제 27 항에 있어서, 상기 데이터의 무결성을 보장하기 위해 상기 기수 개의 카피들 간에 과반수 표결을 사용하는 단계를 더 포함하는, 방법.
  29. 제 26 항에 있어서, 상기 데이터 레코드들의 필드를 1차 키로서 설정하고 상기 채널들을 어드레싱하기 위해 상기 1차 키를 해싱하는 단계를 포함하는, 방법.
  30. 제 29 항에 있어서, 상기 데이터 레코드들의 필드를 2차 키로서 설정하고 상 기 2차 키와 상기 1차 키를 상관시키기 위해 적어도 한 라우터를 제공하는 단계를 포함하는, 방법.
  31. 제 25 항에 있어서, 상기 채널들은 공개 가입 채널들인, 방법.
  32. 제 24 항에 있어서, 상기 데이터 저장 장치는 복수의 데이터 저장유닛들을 포함하고, 상기 방법은, 복수의 데이터 저장유닛들에 복수의 카피들로 데이터를 저장하고, 어떤 주어진 데이터 저장유닛의 장애를 검출하였을 때, 상기 주어진 데이터 저장유닛에 저장된 다른 어떤 곳의 데이터 단위들로부터 추가의 카피들을 작성하는 단계를 포함하는, 방법.
  33. 제 32 항에 있어서, 상기 데이터는 문의들을 통해 액세스되며, 주어진 문의들에 대한 응답은 상기 데이터와 관하여 현 상태에 의존하는, 방법.
  34. 제 33 항에 있어서, 적어도 한 데이터 저장유닛의 장애의 경우에 각각의 데이터 저장유닛들 간에 명시적 상태 동기화에 의해 상기 현 상태를 보존하는 단계를 더 포함하는, 방법.
  35. 제 34 항에 있어서, 상기 명시적 상태 동기화는 풀 동기화인, 방법.
  36. 제 34 항에 있어서, 상기 명시적 상태 동기화는 푸시 동기화인, 방법.
  37. 제 24 항에 있어서, 고객들에 의한 사용을 측정하는 단계를 더 포함하는, 방법.
  38. 제 37 항에 있어서, 상기 사용은 피크 사용으로서 측정되는, 방법.
  39. 제 38 항에 있어서, 상기 피크 사용에 근거하여 상기 고객들에 과금하는 단계를 포함하는, 방법.
  40. 데이터 저장자원 및 데이터 처리자원을 갖춘 데이터 레포지토리를 제공하는 방법에 있어서,
    상기 데이터 저장자원의 동적 분할을 제공하는 단계;
    상기 데이터 처리자원의 동적할당을 제공하는 단계; 및
    상기 데이터 저장자원의 상기 동적분할이 상기 데이터 처리자원의 상기 동적분할로부터 분리되게, 상기 데이터 저장자원과 상기 데이터 처리자원간에 동적 스위칭을 사용하는 단계를 포함하는, 방법.
  41. 제 40 항에 있어서, 개개의 데이터 아이템들을 상기 데이터 저장자원 내 적어도 두 위치들에 카피하고 그룹 어드레스를 상기 적어도 2 위치들에 제공하는 단 계를 포함하는, 방법.
  42. 제 40 항에 있어서, 장애가 검출되었을 때 상기 레포지토리가 상기 검출 이전의 상태로 복구하게, 상기 데이터 레포지토리에 복수의 상태들을 할당하는 단계를 포함하는, 방법.
  43. 복수의 데이터 분할들 및 데이터 아이템들을 포함하는 무 공유 데이터 레포지토리로서, 각각의 데이터 아이템은 1차 키, 및 하나 이상의 2차 키들을 구비하며, 상기 1차 키는 상기 데이터 분할들을 정의하고 각각의 2차 키는 2차 키에 의해 분할되고 2차 키와 상기 분할 1차 키간의 관계를 매핑하는 추가의 자동적으로 관리되는 내부 인덱스 테이블로서 구현되어, 각각의 2차 키에 기초한 탐색 문의가 상기 내부 인덱스 테이블을 통해 상기 1차 키에 관계될 수 있게 한 것인, 무 공유 데이터 레포지토리.
KR1020077021192A 2005-02-24 2006-02-21 데이터 관리 방법 및 장치 KR20070110367A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US65544105P 2005-02-24 2005-02-24
US60/655,441 2005-02-24
US73376805P 2005-11-07 2005-11-07
US60/733,768 2005-11-07

Publications (1)

Publication Number Publication Date
KR20070110367A true KR20070110367A (ko) 2007-11-16

Family

ID=36927816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077021192A KR20070110367A (ko) 2005-02-24 2006-02-21 데이터 관리 방법 및 장치

Country Status (6)

Country Link
US (1) US7644087B2 (ko)
EP (2) EP1851662A2 (ko)
JP (1) JP2008533564A (ko)
KR (1) KR20070110367A (ko)
CA (1) CA2596719A1 (ko)
WO (1) WO2006090367A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110036172A (ko) * 2009-10-01 2011-04-07 삼성전자주식회사 가상 프로세서 관리 장치 및 방법
KR20110119715A (ko) * 2009-02-13 2011-11-02 아브 이니티오 테크놀로지 엘엘시 데이터 저장 시스템과의 통신

Families Citing this family (153)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1519755B1 (en) 2002-03-26 2008-05-07 Nanocyte Inc. Stinging cells expressing an exogenous polynucleotide encoding a therapeutic, diagnostic or a cosmetic agent and methods compositions and devices utilizing such stinging cells or capsules derived therefrom for delivering the therapeutic, diagnostic or cosmetic agent into a tissue
US8326990B1 (en) * 2005-07-15 2012-12-04 Symantec Operating Corporation Automated optimal workload balancing during failover in share-nothing database systems
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8180923B2 (en) * 2005-11-29 2012-05-15 Intel Corporation Network access control for many-core systems
US8346732B1 (en) * 2005-11-30 2013-01-01 Symantec Operating Corporation Method and apparatus for providing high availability of a database
US8447829B1 (en) 2006-02-10 2013-05-21 Amazon Technologies, Inc. System and method for controlling access to web services resources
US8117153B2 (en) * 2006-03-28 2012-02-14 Oracle America, Inc. Systems and methods for a distributed cache
JP4862463B2 (ja) * 2006-04-11 2012-01-25 ブラザー工業株式会社 情報通信システム、コンテンツカタログ情報検索方法、及びノード装置等
JP2007280303A (ja) * 2006-04-11 2007-10-25 Brother Ind Ltd 情報通信システム、コンテンツカタログ情報配信方法、及びノード装置等
JP4655986B2 (ja) * 2006-04-12 2011-03-23 ブラザー工業株式会社 ノード装置、記憶制御プログラム及び情報記憶方法
US8726020B2 (en) * 2006-05-31 2014-05-13 Microsoft Corporation Updating configuration information to a perimeter network
US7853685B1 (en) * 2006-07-10 2010-12-14 Network General Technology Identifying critical network and application entities
US9596301B2 (en) * 2006-09-18 2017-03-14 Hewlett Packard Enterprise Development Lp Distributed-leader-election service for a distributed computer system
EP2067104A1 (en) 2006-09-28 2009-06-10 Xeround Systems Ltd. Apparatus and method for a distributed storage global database
US20080097971A1 (en) * 2006-10-18 2008-04-24 Telcordia Applied Research Center Taiwan Company Peer-to-peer based secondary key search method and system for cluster database
US7917599B1 (en) 2006-12-15 2011-03-29 The Research Foundation Of State University Of New York Distributed adaptive network memory engine
US7925711B1 (en) 2006-12-15 2011-04-12 The Research Foundation Of State University Of New York Centralized adaptive network memory engine
US8090792B2 (en) * 2007-03-08 2012-01-03 Nec Laboratories America, Inc. Method and system for a self managing and scalable grid storage
US20080285577A1 (en) * 2007-05-15 2008-11-20 Yehuda Zisapel Systems and Methods for Providing Network-Wide, Traffic-Aware Dynamic Acceleration and Admission Control for Peer-to-Peer Based Services
US7969445B2 (en) * 2007-06-20 2011-06-28 Nvidia Corporation System, method, and computer program product for broadcasting write operations
US7984043B1 (en) * 2007-07-24 2011-07-19 Amazon Technologies, Inc. System and method for distributed query processing using configuration-independent query plans
US20090063807A1 (en) * 2007-08-29 2009-03-05 International Business Machines Corporation Data redistribution in shared nothing architecture
US20090109859A1 (en) * 2007-10-31 2009-04-30 At&T Knowledge Ventures, Lp Method and System for Detecting a Fault Condition Based on Failed IGMP Join Attempts
US20090157766A1 (en) * 2007-12-18 2009-06-18 Jinmei Shen Method, System, and Computer Program Product for Ensuring Data Consistency of Asynchronously Replicated Data Following a Master Transaction Server Failover Event
US20090198736A1 (en) * 2008-01-31 2009-08-06 Jinmei Shen Time-Based Multiple Data Partitioning
US7895172B2 (en) * 2008-02-19 2011-02-22 Yahoo! Inc. System and method for writing data dependent upon multiple reads in a distributed database
US8555380B2 (en) * 2008-02-28 2013-10-08 Intel Corporation Automatic modification of executable code
US8140630B2 (en) * 2008-03-05 2012-03-20 International Business Machines Corporation Publish/subscribe message broker for message sequences
US8103775B2 (en) * 2008-03-13 2012-01-24 Harris Corporation System and method for distributing a client load from a failed server among remaining servers in a storage area network (SAN)
JP2011519229A (ja) * 2008-04-25 2011-06-30 ゼットティーイー コーポレーション キャリアグレードピアツーピア(p2p)ネットワークシステム及び方法
US8468356B2 (en) * 2008-06-30 2013-06-18 Intel Corporation Software copy protection via protected execution of applications
US8180838B2 (en) * 2008-08-29 2012-05-15 Microsoft Corporation Efficiently managing modular data storage systems
AU2009301637A1 (en) * 2008-10-08 2010-04-15 National Ict Australia Limited Use of dynamic bounded regions to improve the scalability of decentralised online environments
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US20100211544A1 (en) * 2009-02-19 2010-08-19 Jyshyang Chen System with session synchronization
WO2010101956A2 (en) * 2009-03-02 2010-09-10 Winshuttle, Inc. Adaptive query throttling system and method
US20100262687A1 (en) * 2009-04-10 2010-10-14 International Business Machines Corporation Dynamic data partitioning for hot spot active data and other data
US8560639B2 (en) 2009-04-24 2013-10-15 Microsoft Corporation Dynamic placement of replica data
US8769049B2 (en) * 2009-04-24 2014-07-01 Microsoft Corporation Intelligent tiers of backup data
US8769055B2 (en) * 2009-04-24 2014-07-01 Microsoft Corporation Distributed backup and versioning
EP2485150A1 (en) * 2009-05-18 2012-08-08 Shuhei Nishiyama Meta-information sharing distributed database system in virtual single memory storage
US8966017B2 (en) * 2009-07-09 2015-02-24 Novell, Inc. Techniques for cloud control and management
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US8156304B2 (en) * 2009-12-04 2012-04-10 Oracle International Corporation Dynamic data storage repartitioning
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US9116946B2 (en) 2010-04-02 2015-08-25 Scalebase Inc. System and method for interacting with a plurality of data sources
US8935248B2 (en) 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical switching elements
US10103939B2 (en) 2010-07-06 2018-10-16 Nicira, Inc. Network control apparatus and method for populating logical datapath sets
US8837493B2 (en) 2010-07-06 2014-09-16 Nicira, Inc. Distributed network control apparatus and method
US11308490B2 (en) * 2010-07-28 2022-04-19 Cox Communications, Inc. Security system and method that allows users to securely setup and maintain system security for all business systems
US9032017B1 (en) * 2010-08-10 2015-05-12 Scalarc Inc Method and system for transparent read-write query routing when load balancing databases
US8484242B1 (en) 2010-08-24 2013-07-09 ScalArc, Inc. Method and system for transparent database connection pooling and query queuing
US8543554B1 (en) 2010-08-10 2013-09-24 ScalArc Inc. Method and system for transparent database query caching
US8763091B1 (en) 2010-08-24 2014-06-24 ScalArc Inc. Method and system for user authentication offload in a transparent database load balancer
US9684702B2 (en) 2010-12-07 2017-06-20 International Business Machines Corporation Database redistribution utilizing virtual partitions
US10198492B1 (en) * 2010-12-28 2019-02-05 Amazon Technologies, Inc. Data replication framework
US8554762B1 (en) * 2010-12-28 2013-10-08 Amazon Technologies, Inc. Data replication framework
US9449065B1 (en) 2010-12-28 2016-09-20 Amazon Technologies, Inc. Data replication framework
US8468132B1 (en) 2010-12-28 2013-06-18 Amazon Technologies, Inc. Data replication framework
US8438364B2 (en) * 2010-12-30 2013-05-07 Facebook Inc. Distributed cache for graph data
US20120185642A1 (en) 2011-01-18 2012-07-19 International Business Machines Corporation Assigning a data item to a storage location in a computing environment
JP5727258B2 (ja) * 2011-02-25 2015-06-03 ウイングアーク1st株式会社 分散型データベースシステム
US9172750B2 (en) * 2011-04-26 2015-10-27 Brian J. Bulkowski Cluster-node load balancing in a distributed database system
JP5721056B2 (ja) * 2011-05-10 2015-05-20 日本電気株式会社 トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
US9052831B1 (en) 2011-06-30 2015-06-09 Amazon Technologies, Inc. System and method for performing live partitioning in a data store
US8909615B2 (en) * 2011-08-30 2014-12-09 Open Text S.A. System and method of managing capacity of search index partitions
US9621409B2 (en) 2011-09-15 2017-04-11 Oracle International Corporation System and method for handling storage events in a distributed data grid
US8849995B1 (en) * 2011-09-30 2014-09-30 Amazon Technologies, Inc. Managing host computing devices
US8732282B1 (en) * 2011-09-30 2014-05-20 Emc Corporation Model framework to facilitate robust programming of distributed workflows
US8849776B2 (en) * 2011-10-17 2014-09-30 Yahoo! Inc. Method and system for resolving data inconsistency
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US8856590B2 (en) * 2012-01-07 2014-10-07 Compunetix, Inc. Reliable compute engine, method and apparatus
US9069827B1 (en) 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US8930312B1 (en) 2012-01-17 2015-01-06 Amazon Technologies, Inc. System and method for splitting a replicated data partition
US8843441B1 (en) 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
US9116862B1 (en) 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US9652174B2 (en) 2012-06-04 2017-05-16 Hewlett Packard Enterprise Development Lp Managing an analytic function to be performed on data stored in an input block
AT513242B1 (de) * 2012-07-02 2018-07-15 Frequentis Ag Verfahren zur Synchronisation von Daten in einem Computernetzwerk
EP2824575A4 (en) * 2012-08-23 2015-12-02 Wingarc1St Inc DISTRIBUTED DATABASE SYSTEM
GB2505229B (en) 2012-08-23 2019-10-16 Metaswitch Networks Ltd Upgrading nodes
US9164702B1 (en) * 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US8931051B2 (en) * 2012-11-14 2015-01-06 Microsoft Corporation Scalable and highly available clustering for large scale real-time applications
US9229983B2 (en) * 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US10938917B2 (en) 2012-12-19 2021-03-02 Micro Focus Llc Triggering a high availability feature in response to detecting impairment of client experience
US9268707B2 (en) 2012-12-29 2016-02-23 Intel Corporation Low overhead paged memory runtime protection
US10127235B2 (en) * 2013-03-06 2018-11-13 Quest Software Inc. Storage system deduplication with service level agreements
CN104104537B (zh) * 2013-04-15 2017-07-07 北京中嘉时代科技有限公司 一种基于状态的服务监控与恢复方法及装置
CN104239307B (zh) * 2013-06-08 2018-07-27 腾讯科技(深圳)有限公司 用户信息存储方法和系统
US20150039555A1 (en) * 2013-08-02 2015-02-05 International Business Machines Corporation Heuristically modifying dbms environments using performance analytics
CN103440223B (zh) * 2013-08-29 2017-04-05 西安电子科技大学 一种实现高速缓存一致性协议的分层系统及其方法
US9633051B1 (en) 2013-09-20 2017-04-25 Amazon Technologies, Inc. Backup of partitioned database tables
US9405783B2 (en) 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
CN103533544B (zh) * 2013-10-10 2016-06-01 北京首信科技股份有限公司 一种在数据库发生故障时进行aaa认证的方法
US20150120697A1 (en) 2013-10-28 2015-04-30 Scalebase Inc. System and method for analysis of a database proxy
GB2521197A (en) 2013-12-13 2015-06-17 Ibm Incremental and collocated redistribution for expansion of an online shared nothing database
US9529546B2 (en) 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
CN103763364B (zh) * 2014-01-15 2017-05-24 浪潮(北京)电子信息产业有限公司 一种数据访问方法及微型存储服务器
US9268653B2 (en) 2014-01-17 2016-02-23 Netapp, Inc. Extent metadata update logging and checkpointing
US9256549B2 (en) * 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US10303702B2 (en) 2014-02-07 2019-05-28 Ignite Scalarc Solutions, Inc. System and method for analysis and management of data distribution in a distributed database environment
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9436564B1 (en) * 2014-03-31 2016-09-06 Emc Corporation Creating distributed storage during partitions
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9501359B2 (en) 2014-09-10 2016-11-22 Netapp, Inc. Reconstruction of dense tree volume metadata state across crash recovery
US9524103B2 (en) 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US11138537B2 (en) * 2014-09-17 2021-10-05 International Business Machines Corporation Data volume-based server hardware sizing using edge case analysis
US11188427B2 (en) * 2014-09-26 2021-11-30 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10055300B2 (en) * 2015-01-12 2018-08-21 Actifio, Inc. Disk group based backup
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10067969B2 (en) * 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10248530B2 (en) 2015-07-09 2019-04-02 Comcast Cable Communications, Llc Methods and systems for determining capacity
US10977276B2 (en) * 2015-07-31 2021-04-13 International Business Machines Corporation Balanced partition placement in distributed databases
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US20170097771A1 (en) 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US9984142B2 (en) * 2015-11-05 2018-05-29 Oracle International Corporation Single unit of work
US10552454B2 (en) * 2015-11-13 2020-02-04 Sap Se Efficient partitioning of related database tables
US9830103B2 (en) 2016-01-05 2017-11-28 Netapp, Inc. Technique for recovery of trapped storage space in an extent store
US9846539B2 (en) 2016-01-22 2017-12-19 Netapp, Inc. Recovery from low space condition of an extent store
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
CA3028995A1 (en) * 2016-06-24 2017-12-28 Schneider Electric Systems Usa, Inc. Methods, systems and apparatus to dynamically facilitate boundaryless, high availability m:n working configuration system management
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10592528B2 (en) * 2017-02-27 2020-03-17 Sap Se Workload capture and replay for replicated database systems
US10466930B2 (en) * 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10855554B2 (en) 2017-04-28 2020-12-01 Actifio, Inc. Systems and methods for determining service level agreement compliance
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10666495B2 (en) * 2017-08-22 2020-05-26 International Business Machines Corporation Transaction processing
EP3704576A1 (en) * 2017-10-31 2020-09-09 AB Initio Technology LLC Managing a computing cluster using time interval counters
US11616781B2 (en) 2017-12-05 2023-03-28 Goldilock Secure s.r.o. Air gap-based network isolation device
US11115390B2 (en) * 2017-12-05 2021-09-07 Goldilock Secure s.r.o. Storage system utilizing discrete on-demand memory resources
JP6795527B2 (ja) * 2018-02-14 2020-12-02 日本電信電話株式会社 通信システム、及び、サーバ切替方法
US11132376B2 (en) 2018-02-28 2021-09-28 Walmart Apollo, Llc System and method for management of a database system
US11176001B2 (en) 2018-06-08 2021-11-16 Google Llc Automated backup and restore of a disk group
US20200137515A1 (en) * 2018-10-30 2020-04-30 International Business Machines Corporation Facilitating proximity based connections at an event
TWI678087B (zh) 2018-11-22 2019-11-21 財團法人工業技術研究院 訊息佇列發佈與訂閱之同步方法及其系統
US11625273B1 (en) 2018-11-23 2023-04-11 Amazon Technologies, Inc. Changing throughput capacity to sustain throughput for accessing individual items in a database
US11475040B2 (en) * 2019-01-08 2022-10-18 International Business Machines Corporation Managing data replication sessions in response to an inability to access a storage volume
CN109918472A (zh) * 2019-02-27 2019-06-21 北京百度网讯科技有限公司 存储和查询数据的方法、装置、设备和介质
US10884948B2 (en) * 2019-05-16 2021-01-05 Advanced Micro Devices, Inc. Replacing pointers with hashing in tree-based page table designs
US11507622B2 (en) 2020-03-25 2022-11-22 The Toronto-Dominion Bank System and method for automatically managing storage resources of a big data platform
CN112651711B (zh) * 2020-12-22 2023-08-22 北京市市政工程设计研究总院有限公司 基于xdb文件在bs架构下的协同设计管理平台的搭建系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625811A (en) * 1994-10-31 1997-04-29 International Business Machines Corporation Method and system for database load balancing
US6128467A (en) * 1996-03-21 2000-10-03 Compaq Computer Corporation Crosspoint switched multimedia system
US6594698B1 (en) * 1998-09-25 2003-07-15 Ncr Corporation Protocol for dynamic binding of shared resources
US6640244B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6505187B1 (en) * 1999-12-08 2003-01-07 Ncr Corporation Computing multiple order-based functions in a parallel processing database system
EP1678617A4 (en) * 2003-10-08 2008-03-26 Unisys Corp COMPUTER SYSTEM PARAVIRTUALIZATION BY USING A HYPERVISOR IMPLEMENTED IN A PARTITION OF THE HOST SYSTEM
US20060168214A1 (en) * 2004-10-29 2006-07-27 International Business Machines Corporation System for managing logical partition preemption

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110119715A (ko) * 2009-02-13 2011-11-02 아브 이니티오 테크놀로지 엘엘시 데이터 저장 시스템과의 통신
KR20110036172A (ko) * 2009-10-01 2011-04-07 삼성전자주식회사 가상 프로세서 관리 장치 및 방법

Also Published As

Publication number Publication date
US20060190243A1 (en) 2006-08-24
WO2006090367A3 (en) 2007-01-25
CA2596719A1 (en) 2006-08-31
EP2317450A1 (en) 2011-05-04
WO2006090367A2 (en) 2006-08-31
US7644087B2 (en) 2010-01-05
EP1851662A2 (en) 2007-11-07
JP2008533564A (ja) 2008-08-21

Similar Documents

Publication Publication Date Title
US7644087B2 (en) Method and apparatus for data management
EP2095248B1 (en) Consistency within a federation infrastructure
US8676951B2 (en) Traffic reduction method for distributed key-value store
US8549180B2 (en) Optimizing access to federation infrastructure-based resources
CN101128827A (zh) 用于交换网络中分布式数据管理的方法和装置
CN101102250B (zh) 用于自组织网络的分布式散列机制
JP7270755B2 (ja) 分散システムでのメタデータルーティング
US8812535B2 (en) Propagating a query in a federated database
Chervenak et al. The globus replica location service: design and experience
US10712964B2 (en) Pre-forking replicas for efficient scaling of a distributed data storage system
JP6086463B2 (ja) ピアツーピアデータ複製用の方法、デバイス、およびシステム、ならびにマスタノード切替え用の方法、デバイス、およびシステム
CN104011701A (zh) 内容传送网络
US10275400B1 (en) Systems and methods for forming a fault-tolerant federated distributed database
Ramakrishnan Cap and cloud data management
WO2009100636A1 (zh) 电信网络用户数据存储管理的方法及装置
CN107547657A (zh) 一种基于云存储系统中单点数据编号的方法、装置以及存储介质
Wang et al. Naxos: A named data networking consensus protocol
Mukherjee et al. An unsupervised learning-guided multi-node failure-recovery model for distributed graph processing systems
IL185417A (en) Method and apparatus for distributed data management in a switching network
Hemam et al. A fully decentralized algorithm to timestamping transactions in a peer-to-peer environments
Deris et al. High reliability replication technique for web-server cluster systems
CN117609389A (zh) 一种多端数据库系统
Ratajczak et al. Atomic Transducers and Their Scalable Implementation
Hogqvist et al. Towards Explicit Data Placement in Scalable Key/Value Stores
Amir Replication over a Partitioned Network

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid