KR101451280B1 - 분산형 데이터베이스 관리 시스템 및 방법 - Google Patents
분산형 데이터베이스 관리 시스템 및 방법 Download PDFInfo
- Publication number
- KR101451280B1 KR101451280B1 KR1020120115102A KR20120115102A KR101451280B1 KR 101451280 B1 KR101451280 B1 KR 101451280B1 KR 1020120115102 A KR1020120115102 A KR 1020120115102A KR 20120115102 A KR20120115102 A KR 20120115102A KR 101451280 B1 KR101451280 B1 KR 101451280B1
- Authority
- KR
- South Korea
- Prior art keywords
- server
- slot
- hula
- slots
- hash
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
- H04L12/427—Loop networks with decentralised control
- H04L12/43—Loop networks with decentralised control with synchronous transmission, e.g. time division multiplex [TDM], slotted rings
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L2001/0092—Error control systems characterised by the topology of the transmission link
- H04L2001/0095—Ring
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 RDBMS(Database Management System)와 NoSQL(Not Only Structured Query Language)의 장점을 결합하여 SQL을 이용한 복잡한 자료구조의 사용 및 트랜잭션(transaction)을 지원하여 다중요청에 대한 원자성(atomicity) 지원이 가능함에 따라 자료의 정합성 유지가 가능한 동시에 운영 중에도 서버를 추가해 선형적으로 용량 확장이 가능한 분산형 데이터베이스 관리 시스템 및 방법을 제공하기 위한 것으로서, 데이터를 하나 이상의 열로 구성되는 테이블로 관리하는 하나 이상의 RDBMS를 갖고, 주기적으로 훌라후프 서버로 자신의 상태 정보를 공유하며, 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)을 단일 작업으로 처리되도록 하는 적어도 두 개 이상의 슬롯과, DHT 개념을 적용하여 각각 배치되며, 모든 슬롯에 대한 슬롯 ID를 저장하고, 상기 적어도 두 개 이상의 슬롯으로부터 제공되는 공유 데이터를 기반으로 모든 슬롯에 대한 상태 정보를 관리하고, 고장에 대비해 저장된 작업 로그(operation Log)를 이웃하는 다른 훌라후프 서버에 복제시키는 적어도 두 개 이상의 훌라후프 서버와, 클라이언트 응용을 수행하면서 상기 훌라후프 서버로부터 슬롯 ID를 액세스하고 적어도 두 개 이상의 슬롯으로부터 데이터를 입출력하는 클라이언트를 포함하여 구성되는데 있다.
Description
본 발명은 NoSQL을 이용해 선형적으로 용량 확장이 가능한 데이터베이스 관리 시스템 및 방법에 관한 것으로, 특히 분산 해시 테이블(distributed hash table : DHT) 기반의 다수개의 데이터베이스 관리 시스템(DBMS) 구조를 통해 선형적 확장성을 구현하는 분산형 데이터베이스 관리 시스템 및 방법에 관한 것이다.
데이터베이스 관리 시스템(DBMS)은 데이터베이스 내의 데이터를 관리하는 데이터베이스의 파일 관리자라고도 불리는데, 다수의 컴퓨터 사용자들이 데이터베이스 안에 데이터를 기록하거나 접근할 수 있게 해주는 소프트웨어를 말한다.
상기 데이터베이스 관리 시스템은 데이터베이스 내의 정보를 검색하거나, 데이터베이스에 정보를 저장하기 편리하고 효율적인 환경을 제공하는데 그 목적이 있으며, 운영체제 및 통신관리 시스템과 함께 컴퓨터의 3대 기간 소프트웨어로 자리잡아 왔다.
DBMS는 응용소프트웨어 별로 흩어져 있는 자료들을 통합하고 통합된 자료들을 각 응용소프트웨어가 공유하여 정보의 체계적인 활용을 가능하게 한다. 그 기능으로는 축적된 자료구조의 정의와, 자료구조에 따른 자료의 축적, 데이터베이스 언어에 의한 자료 검색 및 갱신, 복수 사용자로부터 자료처리의 동시실행제어, 갱신 중에 이상이 발생했을 때 갱신 이전의 상태로 복귀 및 정보의 기밀보호 등이다.
그리고 일반적인 형태의 DBMS는 관계형 데이터베이스 관리시스템(RDBMS)인데, RDBMS의 표준화된 사용자 및 프로그램 인터페이스는 SQL(Structured Query Language)이라고 한다. 또한 관계형 DBMS로는 오러클(oracle), 사이베이스(Sybase), 인포믹스(infomix) 등이 널리 쓰인다.
개인용 컴퓨터에서는 마이크로소프트의 Acess가 단일 사용자나 소규모 사용자용 DBMS의 대표적인 예이며, SQL 서버는 다중 사용자들의 데이터베이스 요구를 지원하는 DBMS의 한 예이다.
이러한 DBMS 기술은 더 크고 많은 자료처리, 분산형 데이터베이스의 개발과 실용화, 도형/화상/음성 등을 포함하는 멀티미디어 데이터베이스의 개발, 객체지향의 개념을 도입한 객체지향 데이터베이스 관리시스템(OODBMS) 등이 실현되어 있다.
그러나 최근 웹이 발전하면서 더욱 다양한 요구사항이 생겨나고 엄청난 양의 데이터를 처리하게 되면서 기존의 관계형 데이터베이스(RDB)는 대용량으로 읽고, 쓰는 서비스들에 속도와 확장성 등에서 많은 제약 요소들을 나타내게 되었다. 따라서, 최근 스토리지 시스템 혹은 파일 시스템의 근원적인 기술 발전은 스토리지 시스템의 확장성(scalability) 및 성능의 향상에 기인하고 있다.
이러한 문제점을 해결하기 위한 최근 데이터베이스에 대한 수평적 확장(Horizontal Scalability)에 대한 이슈가 발생하였고, 이에 따라 확장성 이슈를 해결하기 위한 새로운 데이터베이스로서 NoSQL 기반의 데이터베이스를 통해 이를 해결하기 위한 연구 개발이 한창 진행 중에 있다. 그리고 현재의 기술분야에서는 대용량 데이터의 관리를 보다 체계적으로 하기 위해 데이터 웨어하우스(DW), 고객 관계 관리 시스템(CRM), 공급망 관리 시스템(SCM) 등의 대용량 데이터를 효과적으로 모델링하는 방법들이 필수적으로 요구된다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, RDBMS(Database Management System)와 NoSQL(Not Only Structured Query Language)의 장점을 결합하여 SQL을 이용한 복잡한 자료구조의 사용 및 트랜잭션(transaction)을 지원하여 다중요청에 대한 원자성(atomicity) 지원이 가능함에 따라 자료의 정합성 유지가 가능한 동시에 운영 중에도 서버를 추가해 선형적으로 용량 확장이 가능한 분산형 데이터베이스 관리 시스템 및 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적은 하나의 완성된 RDBMS을 갖는 개별 슬롯을 이용하여 DHT(Distributed Hash Table) 기반의 다중 슬롯 구조, 서버사이드 스크립트(ServerSideScript) 구조 및 오퍼레이션 로그(Operation Log) 구조를 채택함으로써 선형적 확장성이 가능한 분산형 데이터베이스 관리 시스템 및 방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 분산형 데이터베이스 관리 시스템의 특징은 데이터를 하나 이상의 열로 구성되는 테이블로 관리하는 하나 이상의 RDBMS(Database Management System)를 갖고, 주기적으로 훌라후프 서버로 자신의 상태 정보를 공유하며, 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)을 단일 작업으로 처리되도록 하는 적어도 두 개 이상의 슬롯(slot)과, DHT(Distributed Hash Table) 개념을 적용하여 각각 배치되며, 모든 슬롯에 대한 슬롯 ID를 저장하고, 상기 적어도 두 개 이상의 슬롯으로부터 제공되는 공유 데이터를 기반으로 모든 슬롯에 대한 상태 정보를 관리하고, 고장에 대비해 저장된 작업 로그(operation Log)를 이웃하는 다른 훌라후프 서버에 복제시키는 적어도 두 개 이상의 훌라후프 서버와, 클라이언트 응용을 수행하면서 상기 훌라후프 서버로부터 슬롯 ID를 액세스하고 적어도 두 개 이상의 슬롯으로부터 데이터를 입출력하는 클라이언트를 포함하여 구성되는데 있다.
바람직하게 상기 분산형 데이터베이스 관리 시스템은 상기 클라이언트로부터 입력되는 도메인 ID를 기반으로 슬롯 ID 생성하는 슬롯 ID 변환부를 더 포함하는 것을 특징으로 한다.
바람직하게 상기 훌라후프 서버는 적어도 2개 이상으로 구성되어 DHT(Distributed Hash Table) 개념을 적용하여 해시 공간 상에 배치되며, 상기 해시 공간(hash space)에 존재하는 값 중 하나를 훌라후프 서버의 ID로 정의하는 것을 특징으로 한다.
바람직하게 상기 훌라후프 서버는 시계 방향 또는 반시계 방향으로 해시 링(hash ring)을 따라 가면서 존재하는 슬롯에 대한 상태 정보를 관리하며, 다른 훌라후프 서버를 만나게 되는 지점 전까지를 자신의 관리영역으로 정의하는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 분산형 데이터베이스 관리 방법의 특징은 (A) 클라이언트로부터 입력되는 도메인 ID를 기반으로 슬롯 ID 생성하고, 이렇게 생성된 슬롯 ID를 해시 공간에 위치시키는 단계와, (B) 상기 슬롯 ID에 해당되는 해시 공간 영역을 담당하는 훌라후프 서버를 해시 링을 따라서 시계 방향(또는 반시계 방향)으로 검색하여 설정하는 단계와, (C) 상기 설정된 훌라후프 서버에서 상기 슬롯 ID에 해당되는 하나 이상의 RDBMS(Database Management System)를 갖는 슬롯의 상태 정보(Slotinfo)를 제공받고, 해시 링에 있는 다른 훌라후프 서버들에게 제공받은 상기 슬롯의 상태 정보를 공유하는 단계와, (D) 상기 설정된 훌라후프 서버에서 해당 슬롯의 데이터 입출력을 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)의 경우에도 단일 작업으로 처리하는 단계와, (E) 슬롯에 요청되는 모든 작업(서버사이트 스크립트 포함)들을 작업 로그(Operation Log) 형태로 저장하고, 해시 링을 따라 반시계 방향(또는 시계 방향)으로 검색하면서 검출된 다른 훌라후프 서버에 상기 작업 로그(Operation Log)를 복제하는 단계를 포함하여 이루어지는데 있다.
바람직하게 상기 (A) 단계는 사용자(user)가 단위 데이터베이스 작업 공간을 지정하기 위해 사용하는 상기 도메일 ID 스트링을 조합하고 해시 알고리즘을 이용하여 해싱하여 해시 값을 생성하는 단계와, 상기 해시값을 미리 고정된 슬롯 수에 맵핑해서 슬롯 ID를 생성하는 단계를 포함하는 것을 특징으로 한다.
바람직하게 상기 맵핑 방법은 hash_value%total_slot_number이 사용되는 것을 특징으로 한다.
바람직하게 상기 서버사이드 스크립트(ServerSideScript)는 훌라후프 서버에서 수행되기 전에 부작용(SideEffect)을 일으킬 수 있는 함수호출을 실제 값으로 변환하며, 훌라후프 서버에서 제한된 환경(sandbox)에서 수행되도록 하는 것을 특징으로 한다.
이상에서 설명한 바와 같은 본 발명에 따른 분산형 데이터베이스 관리 시스템 및 방법은 다음과 같은 효과가 있다.
첫째, SQL을 이용해 복잡한 자료 구조를 처리하는데 사용이 용이하다.
둘째, 서버사이드 스크립트(ServerSideScript) 기능으로 사용하므로 사용자가 지정한 다수의 DBMS 처리(operation)는 단일 작업으로 간주할 수 있어, 다중요청에 대한 원자성(atomicity) 지원이 가능함에 따라 트랜잭션(transaction)을 이용해 손쉽게 자료의 정합성 유지가 가능하다.
셋째, DTH 기반 다중 슬롯 구조를 채택하여 운영 중에도 서버를 추가해 선형적으로 용량 확장이 가능하다.
넷째, 오퍼레이션 로그(Operation Log) 구조를 통한 DBLog로 구현됨으로써 자동화된 복구기능을 제공할 수 있다.
도 1 은 본 발명의 실시예에 따른 분산형 데이터베이스 관리 시스템의 구조를 나타낸 구성도
도 2 는 본 발명에 따른 분산형 데이터베이스 관리 시스템의 구조에 슬롯 ID 변환부를 추가한 구성도
도 3 은 도 1의 훌라후프 서버의 담당 영역을 설정하는 과정을 설명하기 위한 구성도
도 4 는 도 3에서 도시하고 있는 원으로 표시한 해시 공간을 맵(map) 형태로 나타낸 도면
도 5(a)는 전통적인 트랜잭션 이용하여 DBMS 작업(operation)을 수행하는 과정을 나타낸 도면
도 5(b)는 본 발명에 따른 서버사이드 스크립트(ServerSideScript)를 이용하여 DBMS 작업(operation)을 수행하는 과정을 나타낸 도면
도 6 은 본 발명에 따른 분산형 데이터베이스 관리 시스템에서 쓰기(write)가 요청된 경우를 설명하기 위한 도면
도 7 은 본 발명에 따른 분산형 데이터베이스 관리 시스템에서 읽기(read)가 요청된 경우를 설명하기 위한 도면
도 2 는 본 발명에 따른 분산형 데이터베이스 관리 시스템의 구조에 슬롯 ID 변환부를 추가한 구성도
도 3 은 도 1의 훌라후프 서버의 담당 영역을 설정하는 과정을 설명하기 위한 구성도
도 4 는 도 3에서 도시하고 있는 원으로 표시한 해시 공간을 맵(map) 형태로 나타낸 도면
도 5(a)는 전통적인 트랜잭션 이용하여 DBMS 작업(operation)을 수행하는 과정을 나타낸 도면
도 5(b)는 본 발명에 따른 서버사이드 스크립트(ServerSideScript)를 이용하여 DBMS 작업(operation)을 수행하는 과정을 나타낸 도면
도 6 은 본 발명에 따른 분산형 데이터베이스 관리 시스템에서 쓰기(write)가 요청된 경우를 설명하기 위한 도면
도 7 은 본 발명에 따른 분산형 데이터베이스 관리 시스템에서 읽기(read)가 요청된 경우를 설명하기 위한 도면
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 분산형 데이터베이스 관리 시스템 및 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 1 은 본 발명의 실시예에 따른 분산형 데이터베이스 관리 시스템의 구조를 나타낸 구성도이다.
도 1과 같이, 분산형 데이터베이스 관리 시스템은 데이터를 하나 이상의 열로 구성되는 테이블로 관리하는 하나 이상의 RDBMS(Database Management System)를 갖고, 주기적으로 훌라후프 서버로 자신의 상태 정보를 공유하며, 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)을 단일 작업으로 처리하는 적어도 두 개 이상의 슬롯(slot)(10a~10h)과, DHT(Distributed Hash Table) 개념을 적용하여 각각 배치되며, 모든 슬롯에 대한 슬롯 ID를 저장하고, 상기 적어도 두 개 이상의 슬롯(10a~10h)으로부터 제공되는 공유 데이터를 기반으로 모든 슬롯(10a~10h)에 대한 상태 정보를 관리하고, 고장에 대비한 앞 단의 작업 로그(operation Log)를 저장하고 있는 적어도 두 개 이상의 훌라후프 서버(20a,20b)와, 클라이언트 응용을 수행하면서 상기 훌라후프 서버(20a,20b)로부터 슬롯 ID를 액세스하고 적어도 두 개 이상의 슬롯(slot)(10a~10h)으로부터 데이터를 입출력하는 클라이언트(30)를 포함한다.
이때, 상기 클라이언트(30)는 해당 슬롯을 찾을 때 도메인 ID를 이용함에 따라, 도 2에서 도시하고 있는 것과 같이, 입력되는 도메인 ID를 기반으로 슬롯 ID 생성하는 슬롯 ID 변환부(40)를 추가로 구성한다. 한편, 상기 슬롯 ID는 각각의 슬롯(slot)에 할당된 고유번호를 말한다.
상기 훌라후프 서버(20a,20b)는 도 3에서 도시하고 있는 것과 같이, 적어도 2개 이상으로 구성되어 DHT(Distributed Hash Table) 개념을 적용하여 해시 공간 상에 배치된다. 그리고 해시 공간(hash space)에 존재하는 값 중 하나를 훌라후프 서버의 ID인 해시 ID로 정의한다.
그리고 상기 훌라후프 서버(20a,20b)는 시계 방향 또는 반시계 방향으로 해시 링(hash ring)을 따라 가면서 존재하는 슬롯(10a~10h)에 대한 상태 정보를 관리하며, 다른 훌라후프 서버(20a,20b)를 만나게 되는 지점 전까지를 자신의 관리영역으로 정의한다. 도 2에 도시된 것을 예로 들면, 제 1 훌라후프 서버(Slot#1)(20a)의 담당영역이 7, 0 ~ 3(10h, 10a~10d)까지 이고, 제 2 훌라후프 서버(Slot#2)(20b)의 담당영역이 4 ~ 6(10e~10g)까지로 정의된다.
이러한 구성을 통해 슬롯(10a~10h)과 클라이언트(30)는 훌라후프 서버(20a,20b)를 찾아갈 때, 도 2에서 도시하고 있는 것과 같이 슬롯 ID 변환부(40)에서 입력되는 도메인 ID를 기반으로 슬롯 ID 생성하고, 이렇게 생성된 슬롯 ID를 해시 공간에 위치시켰을 때, 그 영역을 담당하는 훌라후프 서버(20a,20b)로 설정되게 된다. 즉, 도 2와 같이, 슬롯(10a~10h)은 자신의 슬롯 ID가 위치한 영역을 담당하고 있는 제 2 훌라후프 서버(Slot#2)(20b)에 레지스터(register)가 이루어지고 킵얼라이브(KeepAlive)를 유지한 상태에서 자신의 상태 정보(Slotinfo)를 공유한다. 또한, 다른 클라이언트(30)는 제 1 훌라후프 서버(Slot#1)(20a) 를 찾아가서 데이터의 입출력을 수행한다.
이때, 상기 슬롯(10a~10h)에서 공유하는 상태 정보는 하나의 훌라후프 서버에만 전달된다. 이에 따라, 제 2 훌라후프 서버(Slot#2)(20b)는 상기 슬롯(10a~10h)으로부터 공유되는 상태 정보를 해시 링에 있는 다른 훌라후프 서버 들에게 자신이 알게 된 정보를 공유하고 있다. 상기 공유 방법은 확률에 기반한 Gossip 프로토콜이나 시스템 공유 정보 저장부(ilock)를 이용한다.
한편, 상기 훌라후프 서버(20a,20b)에 해시 공간(hash space)에 존재하는 값 중 하나인 슬롯 ID를 정의할 때에는, 해시 공간 전체에 훌라후프 서버(20a,20b)가 고르게 생성되도록 정의하여야 한다. 그리고 이를 위해 MD5 알고리즘(Message-Digest algorithm 5), SHA 알고리즘(Secure Hash algorithm)과 같은 해시 알고리즘(hash algorithm)을 사용한다.
즉, 상기 클라이언트(30)의 요청 메시지(user request)는 슬롯 ID 변환부(40)를 통해 사용자(user)가 단위 데이터베이스 작업 공간을 지정하기 위해 사용하는 상기 도메일 ID 스트링을 조합하고 해시 알고리즘을 이용하여 해싱하여 해시 값을 생성한다. 그리고 상기 해시값을 미리 고정된 슬롯 수에 맵핑해서 슬롯 ID를 만들어낸다. 이때, 사용되는 맵핑 방법은 hash_value%total_slot_number이 사용되는 것이 바람직하지만, 이에 한정되지 않으며, 공지된 다른 맵핑 방법이 사용될 수도 있다. 참고로, 상기 해시 알고리즘은 128비트 암호화 해시 함수로서, RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 이용되는 공지되어 있는 방식으로, 이에 따른 상세한 설명은 생략한다.
이처럼, 해시 알고리즘을 이용하여 훌라후프 서버(20a,20b)에 슬롯 ID를 정의함으로써, 별도의 로드 밸런스(load balancing)을 고려하지 않아도 해시 링(hash ring)에 존재하는 훌라후프 서버(20a,20b)들에게 부하가 해시 공간 전체에 고르게 나누어지게 된다.
도 3에서 도시하고 있는 원으로 표시한 해시 공간을 맵(map) 형태로 나타내면 도 4와 같이 나타낼 수 있다. 상기 도 4에서 나타내고 있는 분할맵에서의 SIOR은 훌라후프 서버(20a,20b)의 접속주소(IP, port)를 나타낸다.
그리고 도 4에서 도시하고 있는 슬롯 ID 및 서버 접속주소 정보를 갖는 분할맵은 시스템 공유 정보 저장부(iLock)나 확률에 기반한 Gossip 프로토콜을 이용해 공개하고 있으며, 훌라후프 서버(20a,20b)만이 이 분할맵을 편집할 수 있다. 그리고 슬롯(10a~10h)이나 클라이언트(30)는 이 분할맵을 읽어와서 해시 공간에서 검색하여 해당 영역의 훌라후프 서버(20a,20b)를 찾아간다. 이때, 상기 공유 정보 저장부를 이용하는 방법은 중앙 집중식 정보 공유 방법이며, 상기 Gossip 프로토콜을 이용하는 방법은 비 집중식 정보 공유 방법의 일 실시예이다.
이처럼 상기 분할맵의 공개는 중앙 집중식 정보 공유 방법의 경우에는 시스템 공유 정보 저장부를 이용하고, 비 집중식 정보 공유 방법의 경우에는 확률에 기반해 정보를 다수의 서버에 효율적으로 전파할 수 있는 Gossip 프로토콜을 이용하는 방법의 이용이 가능하다. 아울러 전통적인 멀티캐스트(multicast) 방식의 사용도 가능하다.
본 발명에서 사용하고 있는 해시 공간은 2128이기 때문에 0 ~ 2128-1 사이의 값을 가지는 슬롯 ID를 사용한다. 참고로 분할맵에는 16진수(hex) 값으로 기록되어 있다.
한편, 본 발명에서 사용되는 각각의 슬롯(10a~10h)은 서버사이드 스크립트(ServerSideScript)를 사용하므로, 사용자가 지정한 다수의 DBMS 작업(operation)은 단일 작업으로 간주하게 된다. 이때, 상기 서버사이드 스크립트(ServerSideScript)는 개발 편리를 위해 Python 이나 Javascript 같은 범용 언어를 사용하여 작성한다. 또한 상기 서버사이드 스크립트(ServerSideScript)는 훌라후프 서버에서 수행되기 전에 부작용(SideEffect)을 일으킬 수 있는 함수호출을 실제 값으로 변환하며, 훌라후프 서버에서 제한된 환경(sandbox)에서 수행된다. 즉, 데이터의 입출력 같은 작업은 허용되지 않는다.
도 5(a)에서 도시하고 있는 것은 전통적인 트랜잭션 이용하여 DBMS 작업(operation)을 수행하는 과정을 나타낸 도면이고, 도 5(b)는 본 발명에 따른 서버사이드 스크립트(ServerSideScript)를 이용하여 DBMS 작업(operation)을 수행하는 과정을 나타낸 도면이다.
즉, 도 5(a)에서 도시하고 있는 것과 같이 기존의 전통적인 트랜잭션을 이용하여 DBMS 작업을 수행하는 경우는 동일한 클라이언트(30)가 요청하는 작업의 경우에도 다중 요청되는 경우에는 서로 다른 작업으로 DBMS 작업을 수행하고 있다. 이러한 구조는 선형성 및 관리성이 어려운 문제가 있다. 이에 반해, 도 5(b)에서 도시하고 있는 것과 같이 본 발명에 따른 서버사이드 스크립트(ServerSideScript)를 이용하여 DBMS 작업을 수행하는 경우에는 동일한 클라이언트(30)가 다중으로 요청하는 작업의 경우에도 다중요청에 대한 원자성(atomicity) 지원을 통해 사용자가 지정한 다수의 DBMS 작업을 단일 작업으로 간주하여 DBMS 작업을 수행하고 있다. 즉, 다수의 작업을 하나의 작업으로 수행된다. 이에 따라, 트랜잭션(transaction)을 이용해 손쉽게 자료의 정합성 유지가 가능하게 된다. 참고로, 본 발명에 따른 서버사이드 스크립트(ServerSideScript)를 이용하여 DBMS 작업을 수행하는 경우는 단일 작업과 다수 작업에 차이가 없다.
한편, 서버사이드 스크립트(ServerSideScript)를 이용하는 경우에는 자료의 보호를 위해 DBMS에 요청되는 모든 작업(서버사이트 스크립트 포함)들은 작업 로그(Operation Log)의 형태로 저장된다. 그리고 훌라후프 서버(20a,20b) 고장에 대비해 작업 로그(Operation Log)는 다수의 훌라후프 서버(20a,20b)에 복제 저장된다. 이때, 작업 로그(Operation Log)가 복제되는 훌라후프 서버(20a,20b)는 자신이 고장날 경우 소유권(ownership)을 넘겨받는 순서가 빠른 서버들이다. 즉, 도 3에서 도시하고 있는 것과 같이 해시 링을 따라서 시계 방향으로 훌라후프 서버(20a,20b)에 슬롯(10a~10h)의 소유권이 정의되는 경우에는 작업 로그(Operation Log)가 복제되는 방향은 해시 링을 따라서 반시계 방향으로 훌라후프 서버(20a,20b)에 작업 로그(Operation Log)가 복제되게 된다.
이와 같은 구성을 갖는 분산형 데이터베이스 관리 시스템을 통한 처리 과정에 따른 실시예를 도면을 참조하여 설명하면 다음과 같다.
도 6 은 본 발명에 따른 분산형 데이터베이스 관리 시스템에서 쓰기(write)가 요청된 경우를 설명하기 위한 도면이고, 도 7 은 본 발명에 따른 분산형 데이터베이스 관리 시스템에서 읽기(read)가 요청된 경우를 설명하기 위한 도면이다.
도 6을 참조하여 쓰기 작업의 과정을 설명하면, 먼저 클라이언트(30)로부터 쓰기(write) 작업이 요청되면(1), 슬롯 ID 변환부(40)를 이용하여 입력되는 도메인 ID를 기반으로 슬롯 ID 생성한다.
그러면 제 5 훌라후프 서버(20c)는 이렇게 생성된 슬롯 ID를 기반으로 시계 방향(또는 반시계 방향)으로 해시 링을 따라 가면서 존재하는 슬롯(10)에 대한 상태 정보를 확인하여 입력이 가능한 슬롯(10)에 상기 요청된 쓰기 작업을 수행한다. 그리고 요청된 쓰기 작업과 함께 자료의 보호를 위해 처리 로그(Operation Log)를 함께 저장한다(2). 한편, 상기 제 5 훌라후프 서버(20c)는 적어도 두 개 이상의 슬롯(10)으로부터 제공되는 공유 데이터를 기반으로 모든 슬롯(10)에 대한 상태 정보를 미리 저장하고 있다.
이어 상기 처리 로그(Operation Log)가 저장되어 있는 제 5 훌라후프 서버(20c)는 자신이 고장 또는 오류날 것을 대비하여 반시계 방향(또는 시계 방향)으로 해시 링을 따라 가면서 존재하는 다른 훌라후프 서버(20b)(20a)에 상기 처리 로그(Operation Log)를 복제하여 저장시킨다(3).
그리고 제 5 훌라후프 서버(20c)는 클라이언트(30)에게 요청한 쓰기(write) 작업이 완료되었음을 통보한다(4).
다음으로 도 7을 참조하여 읽기 작업의 과정을 설명하면, 먼저 클라이언트(30)로부터 읽기(read) 작업이 요청되면(1), 슬롯 ID 변환부(40)를 이용하여 입력되는 도메인 ID를 기반으로 슬롯 ID 생성한다.
그러면 제 5 훌라후프 서버(20c)는 이렇게 생성된 슬롯 ID를 기반으로 시계 방향(또는 반시계 방향)으로 해시 링을 따라 가면서 해당되는 슬롯(10)에 대한 상태 정보를 확인하고, 상기 요청된 읽기 작업에 따른 데이터를 검출한다(2).
그리고 제 5 훌라후프 서버(20c)는 클라이언트(30)에게 요청된 데이터의 제공과 함께, 읽기(read) 작업이 완료되었음을 통보한다(4).
이처럼, 본 발명에 따른 분산형 데이터베이스 관리 시스템은 DTH 기반의 다중 슬롯 구조와, 서버사이드 스크립트(ServerSideScript) 구조와, 처리 로그(Operation Log) 구조를 통해 운영 중에도 서버를 추가할 수 있는 선형적 용략 확장이 가능함과 동시에 SQL을 이용해 복잡한 자료 구조를 사용할 수 있는 장점을 모두 가질 수 있게 된다.
상기에서 설명한 본 발명의 기술적 사상은 바람직한 실시예에서 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술적 분야의 통상의 지식을 가진자라면 본 발명의 기술적 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (8)
- 해시 링(hash ring)을 따라가면서 훌라후프 형태로 연결되는 유닛으로, 데이터를 하나 이상의 열로 구성되는 테이블로 관리하는 하나 이상의 RDBMS(Database Management System)를 갖고, 주기적으로 훌라후프 서버로 자신의 상태 정보를 공유하며, 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)을 단일 작업으로 처리되도록 하는 적어도 두 개 이상의 슬롯(slot)과,
해시 링(hash ring)을 따라가면서 훌라후프 형태로 연결되는 슬롯들 중 하나로서, DHT(Distributed Hash Table) 개념을 적용하여 각각 배치되며, 모든 슬롯에 대한 슬롯 ID를 저장하고, 상기 적어도 두 개 이상의 슬롯으로부터 제공되는 공유 데이터를 기반으로 모든 슬롯에 대한 상태 정보를 관리하고, 고장에 대비해 저장된 작업 로그(operation Log)를 이웃하는 다른 훌라후프 서버에 복제시키는 적어도 두 개 이상의 훌라후프 서버와,
클라이언트 응용을 수행하면서 상기 훌라후프 서버로부터 슬롯 ID를 액세스하고 적어도 두 개 이상의 슬롯으로부터 데이터를 입출력하는 클라이언트를 포함하여 구성되며,
이때, 상기 훌라후프 서버는
시계 방향 또는 반시계 방향으로 해시 링(hash ring)을 따라 가면서 존재하는 슬롯에 대한 상태 정보를 관리하며, 다른 훌라후프 서버를 만나게 되는 지점 전까지를 자신의 관리영역으로 정의하는 것을 특징으로 하는 분산형 데이터베이스 관리 시스템. - 제 1 항에 있어서,
상기 분산형 데이터베이스 관리 시스템은 상기 클라이언트로부터 입력되는 도메인 ID를 기반으로 슬롯 ID 생성하는 슬롯 ID 변환부를 더 포함하는 것을 특징으로 하는 분산형 데이터베이스 관리 시스템. - 제 1 항에 있어서, 상기 훌라후프 서버는
적어도 2개 이상으로 구성되어 DHT(Distributed Hash Table) 개념을 적용하여 해시 공간 상에 배치되며, 상기 해시 공간(hash space)에 존재하는 값 중 하나를 훌라후프 서버의 ID로 정의하는 것을 특징으로 하는 분산형 데이터베이스 관리 시스템. - 삭제
- 해시 링(hash ring)을 따라가면서 훌라후프 형태로 연결되는 유닛으로, 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)을 단일 작업으로 처리되도록 하는 적어도 두 개 이상의 슬롯(slot)과, 해시 링(hash ring)을 따라가면서 훌라후프 형태로 연결되는 슬롯들 중 하나로서, 상기 슬롯에 대한 상태 정보를 관리하는 훌라후프 서버로 구성되는 분산형 데이터베이스 관리 시스템의 관리 방법에 있어서,
(A) 클라이언트로부터 입력되는 도메인 ID를 기반으로 슬롯 ID 생성하고, 이렇게 생성된 슬롯 ID를 해시 공간에 위치시키는 단계와,
(B) 상기 슬롯 ID에 해당되는 해시 공간 영역을 담당하는 훌라후프 서버를 해시 링을 따라서 시계 방향(또는 반시계 방향)으로 검색하여 설정하는 단계와,
(C) 상기 설정된 훌라후프 서버에서 상기 슬롯 ID에 해당되는 하나 이상의 RDBMS(Database Management System)를 갖는 슬롯의 상태 정보(Slotinfo)를 제공받고, 해시 링에 있는 다른 훌라후프 서버들에게 제공받은 상기 슬롯의 상태 정보를 공유하는 단계와,
(D) 상기 설정된 훌라후프 서버에서 해당 슬롯의 데이터 입출력을 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)의 경우에도 단일 작업으로 처리하는 단계와,
(E) 슬롯에 요청되는 모든 작업(서버사이트 스크립트 포함)들을 작업 로그(Operation Log) 형태로 저장하고, 해시 링을 따라서 반시계 방향(또는 시계 방향)으로 검색하면서 검출된 다른 훌라후프 서버에 상기 작업 로그(Operation Log)를 복제하는 단계를 포함하여 이루어지는 것을 특징으로 하는 분산형 데이터베이스 관리 방법. - 제 5 항에 있어서, 상기 (A) 단계는
사용자(user)가 단위 데이터베이스 작업 공간을 지정하기 위해 사용하는 상기 도메인 ID인 인터넷 상의 주소를 조합한 후 해시 알고리즘을 이용하여 해싱하여 해시 값을 생성하는 단계와,
상기 해시값을 미리 고정된 슬롯 수에 맵핑해서 슬롯 ID를 생성하는 단계를 포함하는 것을 특징으로 하는 분산형 데이터베이스 관리 방법. - 제 6 항에 있어서,
상기 맵핑 방법은 hash_value%total_slot_number이 사용되는 것을 특징으로 하는 분산형 데이터베이스 관리 방법. - 제 5 항에 있어서,
상기 서버사이드 스크립트(ServerSideScript)는 훌라후프 서버에서 수행되기 전에 부작용(SideEffect)을 일으킬 수 있는 함수호출을 실제 값으로 변환하며, 훌라후프 서버에서 제한된 환경(sandbox)에서 수행되도록 하는 것을 특징으로 하는 분산형 데이터베이스 관리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120115102A KR101451280B1 (ko) | 2012-10-16 | 2012-10-16 | 분산형 데이터베이스 관리 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120115102A KR101451280B1 (ko) | 2012-10-16 | 2012-10-16 | 분산형 데이터베이스 관리 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140049202A KR20140049202A (ko) | 2014-04-25 |
KR101451280B1 true KR101451280B1 (ko) | 2014-10-16 |
Family
ID=50654858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120115102A KR101451280B1 (ko) | 2012-10-16 | 2012-10-16 | 분산형 데이터베이스 관리 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101451280B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105608086B (zh) * | 2014-11-17 | 2021-07-27 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
GB201607476D0 (en) * | 2016-04-29 | 2016-06-15 | Eitc Holdings Ltd | Operating system for blockchain IOT devices |
CN110059080B (zh) * | 2019-04-29 | 2021-12-14 | 珠海天燕科技有限公司 | 一种数据处理的方法和装置 |
CN112579637A (zh) * | 2020-12-15 | 2021-03-30 | 深圳市汉云科技有限公司 | 一种sql语句执行方法、系统、终端及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004094681A (ja) * | 2002-08-30 | 2004-03-25 | Ntt Comware Corp | 分散データベース制御装置および制御方法並びに制御プログラム |
JP2010271798A (ja) * | 2009-05-19 | 2010-12-02 | Nippon Telegr & Teleph Corp <Ntt> | 分散データ管理装置及び方法及びプログラム |
JP2010271797A (ja) * | 2009-05-19 | 2010-12-02 | Nippon Telegr & Teleph Corp <Ntt> | 分散ストレージにおけるデータ位置管理方法及び装置及びプログラム |
JP4746838B2 (ja) * | 2001-06-28 | 2011-08-10 | オラクル・インターナショナル・コーポレイション | データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化 |
-
2012
- 2012-10-16 KR KR1020120115102A patent/KR101451280B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4746838B2 (ja) * | 2001-06-28 | 2011-08-10 | オラクル・インターナショナル・コーポレイション | データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化 |
JP2004094681A (ja) * | 2002-08-30 | 2004-03-25 | Ntt Comware Corp | 分散データベース制御装置および制御方法並びに制御プログラム |
JP2010271798A (ja) * | 2009-05-19 | 2010-12-02 | Nippon Telegr & Teleph Corp <Ntt> | 分散データ管理装置及び方法及びプログラム |
JP2010271797A (ja) * | 2009-05-19 | 2010-12-02 | Nippon Telegr & Teleph Corp <Ntt> | 分散ストレージにおけるデータ位置管理方法及び装置及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
KR20140049202A (ko) | 2014-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6697392B2 (ja) | 半構造データスキーマのトランスペアレントディスカバリ | |
Padhy | Big data processing with Hadoop-MapReduce in cloud systems | |
US9684702B2 (en) | Database redistribution utilizing virtual partitions | |
US9081837B2 (en) | Scoped database connections | |
US9323791B2 (en) | Apparatus and method for expanding a shared-nothing system | |
US20050235001A1 (en) | Method and apparatus for refreshing materialized views | |
KR101451280B1 (ko) | 분산형 데이터베이스 관리 시스템 및 방법 | |
Chang et al. | Integration and optimization of multiple big data processing platforms | |
Lu et al. | Hybrid storage architecture and efficient MapReduce processing for unstructured data | |
US11232000B1 (en) | Moving database partitions from replica nodes | |
Phakade et al. | An innovative strategy for improved processing of small files in Hadoop | |
Prasad et al. | Improving the performance of processing for small files in Hadoop: A case study of weather data analytics | |
Wang et al. | Deister: A light-weight autonomous block management in data-intensive file systems using deterministic declustering distribution | |
Luo et al. | LAYER: A cost-efficient mechanism to support multi-tenant database as a service in cloud | |
US11962686B2 (en) | Encrypting intermediate data under group-level encryption | |
US11880495B2 (en) | Processing log entries under group-level encryption | |
Gupta et al. | An extended HDFS with an AVATAR NODE to handle both small files and to eliminate single point of failure | |
US11683161B2 (en) | Managing encryption keys under group-level encryption | |
Verma et al. | Big data analytics: performance evaluation for high availability and fault tolerance using mapreduce framework with hdfs | |
Saxena et al. | Concepts of HBase archetypes in big data engineering | |
Bin et al. | An efficient distributed B-tree index method in cloud computing | |
US10366057B2 (en) | Designated computing groups or pools of resources for storing and processing data based on its characteristics | |
Chang et al. | Resilient distributed computing platforms for big data analysis using Spark and Hadoop | |
Fong et al. | Toward a scale-out data-management middleware for low-latency enterprise computing | |
US11657046B1 (en) | Performant dropping of snapshots by converter branch pruning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171010 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180928 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190930 Year of fee payment: 6 |