KR101451280B1 - 분산형 데이터베이스 관리 시스템 및 방법 - Google Patents

분산형 데이터베이스 관리 시스템 및 방법 Download PDF

Info

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
Application number
KR1020120115102A
Other languages
English (en)
Other versions
KR20140049202A (ko
Inventor
고삼일
고은정
김신영
김홍모
남현우
도기원
박수호
심재훈
이숙영
임승현
조해공
조해란
한준희
홍윤정
황지수
Original Assignee
케이티하이텔 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 케이티하이텔 주식회사 filed Critical 케이티하이텔 주식회사
Priority to KR1020120115102A priority Critical patent/KR101451280B1/ko
Publication of KR20140049202A publication Critical patent/KR20140049202A/ko
Application granted granted Critical
Publication of KR101451280B1 publication Critical patent/KR101451280B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • H04L12/43Loop networks with decentralised control with synchronous transmission, e.g. time division multiplex [TDM], slotted rings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0095Ring

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

분산형 데이터베이스 관리 시스템 및 방법{Distributed database management system and method}
본 발명은 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)가 요청된 경우를 설명하기 위한 도면
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 분산형 데이터베이스 관리 시스템 및 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 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)

  1. 해시 링(hash ring)을 따라가면서 훌라후프 형태로 연결되는 유닛으로, 데이터를 하나 이상의 열로 구성되는 테이블로 관리하는 하나 이상의 RDBMS(Database Management System)를 갖고, 주기적으로 훌라후프 서버로 자신의 상태 정보를 공유하며, 서버사이드 스크립트(ServerSideScript)를 사용하여 사용자가 지정한 다수의 DBMS 작업(operation)을 단일 작업으로 처리되도록 하는 적어도 두 개 이상의 슬롯(slot)과,
    해시 링(hash ring)을 따라가면서 훌라후프 형태로 연결되는 슬롯들 중 하나로서, DHT(Distributed Hash Table) 개념을 적용하여 각각 배치되며, 모든 슬롯에 대한 슬롯 ID를 저장하고, 상기 적어도 두 개 이상의 슬롯으로부터 제공되는 공유 데이터를 기반으로 모든 슬롯에 대한 상태 정보를 관리하고, 고장에 대비해 저장된 작업 로그(operation Log)를 이웃하는 다른 훌라후프 서버에 복제시키는 적어도 두 개 이상의 훌라후프 서버와,
    클라이언트 응용을 수행하면서 상기 훌라후프 서버로부터 슬롯 ID를 액세스하고 적어도 두 개 이상의 슬롯으로부터 데이터를 입출력하는 클라이언트를 포함하여 구성되며,
    이때, 상기 훌라후프 서버는
    시계 방향 또는 반시계 방향으로 해시 링(hash ring)을 따라 가면서 존재하는 슬롯에 대한 상태 정보를 관리하며, 다른 훌라후프 서버를 만나게 되는 지점 전까지를 자신의 관리영역으로 정의하는 것을 특징으로 하는 분산형 데이터베이스 관리 시스템.
  2. 제 1 항에 있어서,
    상기 분산형 데이터베이스 관리 시스템은 상기 클라이언트로부터 입력되는 도메인 ID를 기반으로 슬롯 ID 생성하는 슬롯 ID 변환부를 더 포함하는 것을 특징으로 하는 분산형 데이터베이스 관리 시스템.
  3. 제 1 항에 있어서, 상기 훌라후프 서버는
    적어도 2개 이상으로 구성되어 DHT(Distributed Hash Table) 개념을 적용하여 해시 공간 상에 배치되며, 상기 해시 공간(hash space)에 존재하는 값 중 하나를 훌라후프 서버의 ID로 정의하는 것을 특징으로 하는 분산형 데이터베이스 관리 시스템.
  4. 삭제
  5. 해시 링(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)를 복제하는 단계를 포함하여 이루어지는 것을 특징으로 하는 분산형 데이터베이스 관리 방법.
  6. 제 5 항에 있어서, 상기 (A) 단계는
    사용자(user)가 단위 데이터베이스 작업 공간을 지정하기 위해 사용하는 상기 도메인 ID인 인터넷 상의 주소를 조합한 후 해시 알고리즘을 이용하여 해싱하여 해시 값을 생성하는 단계와,
    상기 해시값을 미리 고정된 슬롯 수에 맵핑해서 슬롯 ID를 생성하는 단계를 포함하는 것을 특징으로 하는 분산형 데이터베이스 관리 방법.
  7. 제 6 항에 있어서,
    상기 맵핑 방법은 hash_value%total_slot_number이 사용되는 것을 특징으로 하는 분산형 데이터베이스 관리 방법.
  8. 제 5 항에 있어서,
    상기 서버사이드 스크립트(ServerSideScript)는 훌라후프 서버에서 수행되기 전에 부작용(SideEffect)을 일으킬 수 있는 함수호출을 실제 값으로 변환하며, 훌라후프 서버에서 제한된 환경(sandbox)에서 수행되도록 하는 것을 특징으로 하는 분산형 데이터베이스 관리 방법.
KR1020120115102A 2012-10-16 2012-10-16 분산형 데이터베이스 관리 시스템 및 방법 KR101451280B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 オラクル・インターナショナル・コーポレイション データベースへのアクセスを制御するための異なったデータベースサーバ間のデータベースのオーナーシップのパーティション化

Patent Citations (4)

* Cited by examiner, † Cited by third party
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