KR101511098B1 - 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 - Google Patents
분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR101511098B1 KR101511098B1 KR20110102918A KR20110102918A KR101511098B1 KR 101511098 B1 KR101511098 B1 KR 101511098B1 KR 20110102918 A KR20110102918 A KR 20110102918A KR 20110102918 A KR20110102918 A KR 20110102918A KR 101511098 B1 KR101511098 B1 KR 101511098B1
- Authority
- KR
- South Korea
- Prior art keywords
- storage
- container
- server
- storage server
- data
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법이 개시된다. 분산 저장 시스템 내의 모든 컨테이너들은 동일한 테이블 스키마를 가지며, 테이블 스키마에 따른 하나 이상의 테이블들을 포함한다. 컨테이너 그룹은 동일한 데이터를 복제하는 하나 이상의 컨테이너들을 포함한다. 컨테이너 그룹 내의 하나 이상의 컨테이너들은 서로 상이한 저장 서버 내에 저장된다.
Description
아래의 실시예들은 분산 저장 시스템에 대한 것이다.
분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법이 개시된다.
데이터가 빈번하게 대량 유입(bulk insert)되는 시스템은, 싸고 많은 개수의 장치들을 사용하고, 데이터를 상기의 장치들로 분산하여 저장함으로써 처리량(throughput)을 향상시킬 수 있다.
많은 개수의 장치가 사용됨에 따라, 장치 자체에서 발생하는 장애가 증가할 수 있으며, 시스템의 응답 시간(response time)이 보장하는 것이 어렵게 될 수 있다. 이러한 문제점을 해결하기 위해, 분산 저장 시스템은 복제본(replica)들을 유지 및 관리할 수 있다. 여기서, 복제본들은 동일한 데이터를 저장하는 복수 개의 장치들을 의미한다.
복제본들 중 특정한 장치에 장애가 발생한 경우, 시스템은 장애가 발생한 장치를 제외한 나머지 복제본들을 사용하여 데이터를 제공할 수 있다. 또한, 시스템은 장애가 발생한 장치를 복제본들로부터 제거하고, 제거된 장치가 저장하던 데이터를 시스템 내의 적어도 하나의 다른 장치로 이동시킬 수 있다.
본 명세서에서는, 수평적으로 데이터를 분산하는 분산 저장 시스템 및 상기의 분산 저장 시스템을 사용하여 데이터를 제공하는 방법이 제공된다.
본 발명의 일 실시예는 수평적으로 데이터를 분산하여 저장하는 시스템 및 상기의 시스템을 사용하는 데이터 제공 방법을 제공할 수 있다.
본 발명의 일 실시예는 동일한 테이블 스키마를 갖는 하나 이상의 컨테이너들을 복수 개의 저장 서버들 내에 분산하여 저장하는 시스템 및 상기의 시스템을 사용하는 데이터 제공 방법을 제공할 수 있다.
본 발명의 일 측에 따르면, 분산 저장 시스템에 있어서, 복수 개의 저장 서버들을 포함하고, 하나 이상의 컨테이너 그룹들은 각각 하나 이상의 컨테이너들을 포함하며, 상기 하나 이상의 컨테이너 그룹들 각각에 포함된 상기 하나 이상의 컨테이너들은 동일한 데이터를 가지며, 각각 상기 복수 개의 저장 서버들 중 서로 상이한 하나의 저장 서버 내에 저장되고, 상기 분산 저장 시스템 내의 모든 컨테이너들은 동일한 테이블 스키마를 가지며, 각각 상기 테이블 스키마에 따른 하나 이상의 지역 테이블들을 포함하는, 분산 저장 시스템이 제공된다.
각 컨테이너는 상기 분산 저장 시스템의 특정한 사용자에 대한 데이터 또는 상기 분산 저장 시스템 내에 저장된 특정한 콘텐츠에 대한 데이터를 포함할 수 있다.
상기 복수 개의 저장 서버들은 각각 상기 분산 저장 시스템 내에서 공통적으로 사용되는 데이터를 저장하는 전역 테이블을 포함할 수 있다.
상기 저장 서버는 상기 전역 테이블 및 상기 지역 테이블 간의 조인 연산을 사용하여 데이터를 제공할 수 있다.
클라이언트로부터 제1 컨테이너가 저장하는 제1 데이터로의 접근 요청 메시지를 수신한 제1 저장 서버는 상기 복수 개의 저장 서버들 중 상기 제1 데이터를 저장하는 제2 저장 서버를 선택할 수 있고, 상기 제2 저장 서버로 상기 접근 요청 메시지를 전달할 수 있다.
상기 제1 저장 서버는 상기 제2 저장 서버로부터 상기 접근 요청 메시지에 대한 응답 메시지를 수신할 수 있고, 상기 응답 메시지를 상기 클라이언트로 전달할 수 있다.
상기 제1 저장 서버는 상기 복수 개의 저장 서버들 각각의 요청 부하들을 고려하여 상기 제2 저장 서버를 선택할 수 있다.
컨테이너 그룹 맵은 각 컨테이너 그룹의 식별자 및 각 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들이 저장된 저장 서버들에 대한 정보를 포함할 수 있다.
상기 제1 저장 서버는 상기 제1 컨테이너의 키를 해싱함으로써 상기 제1 컨테이너를 포함하는 제1 컨테이너 그룹의 식별자를 생성할 수 있고, 상기 제1 컨테이너 그룹의 식별자 및 상기 컨테이너 그룹 맵에 기반하여 상기 제1 컨테이너 그룹이 포함하는 컨테이너를 저장할 수 있다.
상기 분산 저장 시스템은, 상기 컨테이너 그룹 맵을 관리하는 관리 서버를 더 포함할 수 있다.
상기 복수 개의 저장 서버들은 각각 상기 컨테이너 그룹 맵을 캐슁할 수 있다.
상기 관리 서버는 상기 복수 개의 저장 서버들 중 고장 상태인 저장 서버를 식별할 수 있고, 상기 고장 상태인 저장 서버 내에 저장된 컨테이너를 상기 복수 개의 저장 서버들 중 상기 고장 상태인 저장 서버를 제외한 다른 저장 서버로 이동하도록 관리할 수 있다.
상기 관리 서버는 상기 복수 개의 저장 서버들 각각으로부터 하트비트 메시지들을 수신함으로써 상기 복수 개의 저장 서버들 중 고장 상태인 저장 서버를 식별할 수 있다.
상기 관리 서버는 상기 복수 개의 저장 서버들 내에 저장된 컨테이너들 중 하나 이상의 컨테이너들을 새로 추가된 저장 서버로 이동함으로써 데이터 리밸런싱을 수행할 수 있다.
본 발명의 다른 일 측에 따르면, 복수 개의 저장 서버들을 포함하는 분산 저장 시스템이 데이터를 제공하는 방법에 있어서, 상기 복수 개의 저장 서버들 중 제1 저장 서버가 클라이언트로부터 특정 데이터로의 접근 요청 메시지를 수신하는 단계, 상기 제1 저장 서버가 상기 복수 개의 저장 서버들 중 상기 특정 데이터를 포함하는 특정 컨테이너를 저장하는 제2 저장 서버를 식별하는 단계 및 상기 제2 저장 서버로 상기 접근 요청 메시지를 전달하는 단계를 포함하고, 하나 이상의 컨테이너 그룹들은 각각 하나 이상의 컨테이너들을 포함하며, 상기 하나 이상의 컨테이너 그룹들 각각에 포함된 상기 하나 이상의 컨테이너들은 동일한 데이터를 가지며, 각각 상기 복수 개의 저장 서버들 중 서로 상이한 하나의 저장 서버 내에 저장되고, 상기 분산 저장 시스템 내의 모든 컨테이너들은 동일한 테이블 스키마를 가지며, 각각 상기 테이블 스키마에 따른 하나 이상의 지역 테이블들을 포함하는, 분산 저장 시스템의 데이터 제공 방법이 제공된다.
상기 분산 저장 시스템의 데이터 제공 방법은, 상기 제1 저장 서버가 상기 제2 저장 서버로부터 상기 접근 요청 메시지에 대한 응답 메시지를 수신하는 단계 및 상기 응답 메시지를 상기 클라이언트로 전달하는 단계를 더 포함할 수 있다.
상기 제2 저장 서버를 식별하는 단계는, 상기 제1 저장 서버가 상기 특정 컨테이너의 키를 해싱함으로써 상기 특정 컨테이너를 포함하는 제1 컨테이너 그룹의 식별자를 생성하는 단계, 상기 제1 저장 서버가 상기 제1 컨테이너 그룹의 식별자 및 상기 컨테이너 그룹 맵에 기반하여 상기 제1 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들 중 하나의 컨테이너를 저장하는 제3 저장 서버들을 식별하는 단계 및 상기 제1 저장 서버가 상기 제3 저장 서버들 중 하나의 저장 서버를 상기 제2 저장 서버로서 선택하는 단계를 포함할 수 있다.
상기 제1 저장 서버는 상기 제3 저장 서버들 각각의 요청 부하들을 고려하여 상기 제3 저장 서버들 중 상기 제2 저장 서버를 선택할 수 있다.
수평적으로 데이터를 분산함으로써 장애의 발생이 빈번한 상황에 대해 유연하게 대응할 수 있는 시스템 및 방법이 제공된다.
수평적으로 데이터를 분산함으로써 선형 확장성 및 고 가용성을 제공하는 시스템 및 방법이 제공된다.
도 1은 본 발명의 일 예에 따른 컨테이너 및 컨테이너 그룹을 설명한다.
도 2는 본 발명의 일 예에 따른 컨테이너 그룹 맵을 설명한다.
도 3은 본 발명의 일 실시예에 따른 분산 저장 시스템의 구조도이다.
도 4는 본 발명의 일 예에 따른 저장 서버에 저장된 데이터를 나타낸다.
도 5는 본 발명의 일 예에 따른 분산 저장 시스템을 사용한 서비스 제공 방법을 설명한다.
도 6은 본 발명의 일 예에 따른 저장 서버 목록을 나타낸다.
도 7은 본 발명의 일 예에 따른 데이터 제공 절차를 설명한다.
도 8은 본 발명의 일 실시예에 따른 분산 저장 시스템의 데이터 제공 방법의 흐름도이다.
도 2는 본 발명의 일 예에 따른 컨테이너 그룹 맵을 설명한다.
도 3은 본 발명의 일 실시예에 따른 분산 저장 시스템의 구조도이다.
도 4는 본 발명의 일 예에 따른 저장 서버에 저장된 데이터를 나타낸다.
도 5는 본 발명의 일 예에 따른 분산 저장 시스템을 사용한 서비스 제공 방법을 설명한다.
도 6은 본 발명의 일 예에 따른 저장 서버 목록을 나타낸다.
도 7은 본 발명의 일 예에 따른 데이터 제공 절차를 설명한다.
도 8은 본 발명의 일 실시예에 따른 분산 저장 시스템의 데이터 제공 방법의 흐름도이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 예에 따른 컨테이너 및 컨테이너 그룹을 설명한다.
도 1에서, 제1 컨테이너 그룹(Container Group; CG) 및 제2 컨테이너 그룹(120)이 도시되었다. 제1 컨테이너 그룹(110)은 3 개의 컨테이너들(111, 112 및 113)을 포함한다. 제2 컨테이너 그룹(120)은 3 개의 컨테이너들(121, 122 및 123)을 포함한다.
컨테이너(container)는 데이터의 분산의 기본 단위로서 사용되는 공간을 나타낸다. 컨테이너는 데이터의 접근의 기본 단위로서도 사용될 수 있다. 논리적으로, 컨테이너는 분산 저장 시스템의 특정한 사용자에 대한 데이터를 포함할 수 있으며, 분산 저장 시스템 내에 저장되는 특정한 콘텐츠에 대한 데이터를 포함할 수 있다. 말하자면, 분산 저장 시스템의 각 사용자 별로 하나의 컨테이너가 구성될 수 있으며, 분산 저장 시스템 내에 저장된 각 콘텐츠 별로 하나의 컨테이너가 구성될 수 있다.
컨테이너는 물리적으로 단일한 노드(node) 내에 저장될 수 있다. 노드는 특정한 작업을 처리하는 실행 단위를 의미할 수 있다. 예를 들면, 노드는 프로세스(process) 또는 서버(server) 등을 의미할 수 있다.
컨테이너는 데이터를 가질 수 있으며, 상기 컨테이너를 식별하기 위한 키(key)를 가질 수 있다. 키는 데이터를 각 컨테이너에 분산시키기 위해 사용될 수 있으며, 특정한 데이터를 포함하는 컨테이너를 검색하기 위해 사용될 수 있다.
컨테이너 그룹(Container Group; CG)은 컨테이너의 데이터를 분산하기 위한 단위이다. 컨테이너 그룹은 하나 이상의 컨테이너들을 포함한다. 한 컨테이너 그룹에 포함되는 하나 이상의 컨테이너들의 키들은 특정한 해쉬 함수(hash function)가 적용되었을 때 동일한 결과 값을 산출할 수 있다. 말하자면, 제1 컨테이너의 키의 해쉬 값 및 제2 컨테이너의 키의 해쉬 값이 동일할 경우, 제1 컨테이너 및 제2 컨테이너는 동일한 컨테이너 그룹 내에 포함될 수 있다.
한 컨테이너 그룹에 포함된 하나 이상의 컨테이너들은 모두 동일한 데이터를 가질 수 있다. 말하자면, 컨테이너 그룹은 컨테이너의 데이터를 복사하는 복제본들의 집합을 의미할 수 있다. 동일한 컨테이너 그룹의 컨테이너들이 갖는 데이터는 동기화될 수 있다. 데이터는 컨테이너라는 유닛(unit)을 단위로 복제될 수 있다. 여기에서, 상기의 동기화는 최종적인 일관성(eventual consistency)을 지원하는 동기화일 수 있다. 최종적인 일관성은 동일한 컨테이너 그룹의 컨테이너들이 언젠가는 서로 동일한 데이터를 갖도록 동기화된다는 것을 의미한다.
도 2는 본 발명의 일 예에 따른 컨테이너 그룹 맵을 설명한다.
컨테이너 그룹 맵(map)(200)은 하나 이상의 컨테이너 그룹들에 대한 정보를 맵의 형태로 저장하는 자료 구조이다.
한 컨테이너 그룹에 포함된 하나 이상의 컨테이너들은 각각 복수 개의 저장 서버들 중 서로 상이한 하나의 저장 서버 내에 저장된다. 컨테이너 그룹 맵(200)은 하나 이상의 컨테이너 그룹들의 식별자(210)들을 포함한다. 또한, 컨테이너 그룹 맵(200)은 컨테이너 그룹이 포함하는 컨테이너들 각각이 저장된 저장 서버의 위치를 나타내는 정보(220)(예컨대, 저장 서버의 식별자)를 포함한다.
컨테이너 그룹 맵(200)은 4 개의 컨테이너 그룹들에 대한 정보를 포함하며, 하나의 컨테이너 그룹은 3 개의 복제본들(즉, 3 개의 컨테이너들)을 포함한다. 컨테이너들은 각각 7 개의 저장 서버들 중 하나의 저장 서버에 저장된다. 도 2에 도시된 컨테이너 그룹 맵(200)은 제1 컨테이너 그룹의 컨테이너들은 각각 제1 저장 서버, 제2 저장 서버 및 제3 저장 서버에 저장되었음을 나타낸다.
도 3은 본 발명의 일 실시예에 따른 분산 저장 시스템의 구조도이다.
분산 저장 시스템(300)은 복수 개의 저장 서버들(310, 320, 330 및 340)을 포함한다. 분산 저장 시스템(300)은 관리(management) 서버(350)를 더 포함할 수 있다. 도 3에서, 제1 저장 서버(310), 제2 저장 서버(320), 제3 저장 서버(330) 및 제4 저장 서버(340)가 도시되었다. 제1 저장 서버(310), 제2 저장 서버(320), 제3 저장 서버(330) 및 제4 저장 서버(340)의 구성 및 동작은 동일하므로, 이하에서는 제1 저장 서버(310)에 대하여 설명한다.
제1 저장 서버(310)는 분산 저장 시스템(300)이 관리하는 데이터를 분산 저장하는 하나의 물리적/논리적 장치를 의미할 수 있다. 제1 저장 서버(310)는 분산 레이어(distribution layer)(312) 및 저장부(storage)(314)를 포함할 수 있다.
분산 레이어(312)는 컨테이너들의 분산 및 로드 밸런싱을 담당한다.
저장부(314)는 데이터를 저장한다. 저장부(314) 내에 데이터가 저장되는 형태는 다양한 방식으로 구성될 수 있다. 예를 들면, 관계형 데이터베이스(Relational DataBase; RDB)가 데이터를 저장하기 위해 사용될 수 있다. 또한, 저장부(314)는, RDB와 유사한, 표 형태의(tabular) 모델을 사용하여 데이터를 저장할 수 있다.
저장부(314)는 하나 이상의 컨테이너들을 물리적으로 저장한다. 한 컨테이너 그룹에 포함된 컨테이너들은, 각각 복수 개의 저장 서버(310, 320, 330 및 340)들 중 서로 상이한 하나의 저장 서버(310, 320, 330 또는 340)의 저장부 내에 저장될 수 있다.
클라이언트(390)는 분산 저장 시스템(300)이 관리하는 데이터에 대한 접근을 제1 저장 서버(310)에게 요청한다. 상기의 데이터를 사용하는 특정한 애플리케이션(application)이 클라이언트(390) 내에서 실행될 수 있다.
관리 서버(350)는 복수 개의 저장 서버들(310, 320, 330 및 340)에 대한 정보를 관리하는 노드이다. 관리 서버(350)의 기능은 도 6을 참조하여 하기에서 상세히 설명된다.
도 4는 본 발명의 일 예에 따른 저장 서버에 저장된 데이터를 나타낸다.
제1 저장 서버(310)의 저장부(314)는 하나 이상의 컨테이너들을 저장한다. 도 4에서, 저장부(314)는 제1 컨테이너(410) 및 제2 컨테이너(420)를 저장하며, 컨테이너는 테이블에 기반한 데이터 모델을 사용하는 것으로 도시되었다.
분산 저장 시스템(300) 내의 모든 컨테이너들은 동일한 테이블 스키마(schema)를 가지며, 상기 테이블 스키마에 따른 하나 이상의 지역 테이블들을 포함한다. 말하자면, 모든 컨테이너들은 동일한 구조의 테이블들을 갖는다. 도 4에서, 제1 컨테이너(410) 및 제2 컨테이너(420)는 각각 테이블 A, 테이블 B 및 테이블 C를 갖는 것으로 도시되었다. 테이블의 컬럼(column)들 중 하나 이상의 컬럼들이 인덱싱(indexing)될 수 있다.
분산 저장 시스템(300)에서 추가적인 테이블이 요구되면, 모든 컨테이너들 내에서 새로운 테이블이 추가적으로 생성되며, 생성된 테이블의 데이터는 각 컨테이너 내에 별도로 저장된다. 모든 컨테이너가 동일한 테이블을 갖게 하기 위해, 분산 저장 시스템(300)은 컨테이너를 지정하지 않은 채 저장부(314)를 조작하는 데이터 정의 언어(Data Definition Language; DDL)의 명령어를 실행할 수 있다. 상기의 명령어는 생성(CREATE), 제거(DROP) 및 변경(ALTER) 등을 포함한다. 여기서, 컨테이너를 지정하지 않는다는 것은 상기의 명령어에 컨테이너의 키를 (예를 들면, 인자로서) 부여하지 않음을 의미할 수 있다.
또한, 저장부(314)는 전역 테이블(430)을 포함할 수 있다. 전역 테이블(430)은 분산 저장 시스템(300) 내에서 공통적으로 사용되는 데이터를 저장한다. 예를 들면, 전역 테이블(430)은 분산 저장 시스템(300)에 의해 제공되는 서비스의 설정 정보를 저장할 수 있다.
제1 저장 서버(310)는 지역 테이블들 간의 조인(join) 연산을 사용하여 데이터를 제공할 수 있다. 또한, 제1 저장 서버(310)는 전역 테이블(430) 및 임의의 컨테이너 내의 지역 테이블 간의 조인 연산을 사용하여 데이터를 제공할 수 있다. 상기의 조인 연산은 동등-조인(equi-join) 연산일 수 있다.
도 5는 본 발명의 일 예에 따른 분산 저장 시스템을 사용한 서비스 제공 방법을 설명한다.
도 5은 메시지 알람 서비스를 제공하기 위한 테이블들의 구조를 설명한다. 예를 들면, 분산 저장 시스템(300)은 포털(portal)의 카페(cafe) 서비스를 제공할 수 있으며, 카페 내의 각 게시판에 새로운 글이 올라올 경우 상기의 새로운 글에 대한 알람 서비스를 카페의 사용자에게 제공할 수 있다.
메시지 알람 서비스를 위해 분산 저장 시스템(300)은 각 사용자마다 하나의 컨테이너를 할당한다.
도 5에서, 특정 사용자를 위해 할당된 컨테이너(510) 및 서비스 제공을 위한 전역 테이블(520)이 도시되었다. 컨테이너(510)는 제1 테이블(512) 및 제2 테이블(514)를 포함한다. 제1 테이블(512)은 컨테이너(510)의 사용자에게 메시지 알람 서비스를 적용하는지 여부에 대한 정보를 저장한다. 제2 테이블(514)은 컨테이너(510)의 사용자에게 전달할 메시지에 대한 정보를 저장한다.. 전역 테이블(520)은 메시지 알람이 적용될 수 있는 서비스 코드를 저장한다. 전역 테이블(520)의 각 항목은 카페 내의 각 게시판에 대응할 수 있다. 항목은 코드(code)를 포함할 수 있다. 코드는 게시판의 서비스 코드를 나타낼 수 있으며, 전역 테이블(520)의 키로서 사용될 수 있다.
제1 테이블(512)의 항목은 전역 테이블(520)의 코드에 대응할 수 있다. 제1 테이블(512)의 항목은 1) 코드 및 2) 전송 설정 정보를 포함할 수 있다. 여기서, 전송 설정 정보는 코드에 대응하는 게시판에 새로운 글이 올라올 경우 컨테이너의 사용자에게 알람을 전송할지 여부를 나타낸다. 코드는 제1 테이블(512)의 키로서 사용될 수 있다.
제2 테이블(514)의 항목은 사용자에게 전송될 메시지에 대응할 수 있다. 제2 테이블(514)의 항목은 1) 메시지 식별자(msg_id) 및 2) 메시지에 대응하는 코드를 포함할 수 있다. 메시지 식별자는 제2 테이블(514) 키로서 사용될 수 있다.
분산 저장 시스템(300)이 특정한 코드를 갖는 서비스에 대한 메시지 알람을 처리할 때, 분산 저장 시스템(300)은 전역 테이블(520)의 코드 및 제1 테이블(512)의 코드를 조인함으로써 사용자가 특정한 코드에 대한 알람을 요청하는지 여부를 알 수 있다. 사용자가 특정한 코드에 대한 알람을 요청하는 경우, 분산 저장 시스템(300)은 제1 테이블(512)의 코드 및 제2 테이블(514)의 코드를 조인함으로써 사용자에게 전송할 메시지의 메시지 식별자 및 메시지의 내용을 추출할 수 있다.
분산 저장 시스템(300)(또는, 분산 저장 시스템(300)의 서비스를 제공하는 애플리케이션)의 운용에 따라, 메시지 알람에 대한 정책이 변경될 수 있다. 예컨대, 카페의 특정한 게시판이 생성 또는 삭제될 수 있으며, 특정한 게시판의 서비스 코드 또는 명칭 등이 변경될 수 있다. 분산 저장 시스템(300)(또는, 각 저장 서버(310, 320, 330 또는 340))은 전역 테이블(520) 만을 변경하고, 전역 테이블(520) 및 컨테이너(510) 내의 테이블(512 또는 514) 간의 조인 연산을 사용함으로써 상기의 생성, 삭제 또는 변경을 유연하게 처리할 수 있다.
도 6은 본 발명의 일 예에 따른 저장 서버 목록을 나타낸다.
도 6의 저장 서버 목록(600)은 분산 저장 시스템(300) 내의 복수 개의 저장 서버들(310, 320, 330 및 340)에 대한 정보를 저장한다. 저장 서버 목록(600)은 저장 서버들(310, 320, 330 및 340) 각각의 식별자, IP 주소 및 상태(state)를 저장할 수 있다. 예를 들면, 제1 저장 서버(310)의 상태는 정상(Normal; N) 및 실패(Fail; F)가 있다.
관리 서버(350)는 컨테이너 그룹 맵(200) 및 저장 서버 목록(600)을 관리할 수 있다. 관리 서버(350)는 특정한 데이터가 어떠한 컨테이너들로 분산되었고, 상기의 특정한 데이터를 포함하는 컨테이너들 각각이 어떠한 저장 서버(310, 320, 330 또는 340) 내에 저장되었는지에 대한 정보를 관리할 수 있다.
다시 도 3을 참조하면, 관리 서버(350)는 복수 개의 저장 서버들(310, 320, 330 및 340) 각각으로부터 지속적으로 하트비트(heartbeat) 메시지들을 수신함으로써 각 저장 서버(310, 320, 330 또는 340)의 상태를 확인할 수 있다. 또한, 관리 서버(350)는 복수 개의 저장 서버들(310, 320, 330 및 340) 각각으로 하트비트 메시지를 전송할 수 있다. 제1 저장 서버(310)가 예정된 하트비트 메시지를 송신 또는 수신하였는지 여부는, 제1 저장 서버(310)가 동작 상태인지 또는 고장 상태인지를 나타낼 수 있다. 말하자면, 관리 서버(350)는 저장 서버(310, 320, 330 또는 340)로부터 하트비트 메시지를 수신함으로써 복수 개의 저장 서버들(310, 320, 330 및 340) 중 고장 상태인 저장 서버(310, 320, 330 또는 340))를 식별할 수 있다. 또한, 제1 저장 서버(310)는 하트비트 메시지에 제1 저장 서버(310)의 저장소 상태를 실어서 전송할 수 있다. 관리 서버(350)는 제1 저장 서버(310)로부터 수신한 하트비트 메시지가 비정상적인 저장소 상태를 가지고 있는 경우, 제1 저장 서버(310) 를 고장 상태로 간주할 수 있다. 또한, 관리 서버(350)는 하트비트 메시지를 수신함으로써 제1 저장 서버(310)의 저장 용량 및 데이터 요청과 관련된 부하(load)를 확인할 수 있다.
관리 서버(350)가 고장난 제1 저장 서버(310)를 식별한 경우, 관리 서버(350)는 고장 상태인 제1 저장 서버(310) 내에 저장된 컨테이너를 복수 개의 저장 서버들(310, 320, 330 및 340) 중 상기의 고장 상태인 제1 저장 서버(310)를 제외한 다른 저장 서버(320, 330 및 340)로 이동시킬 수 있다. 또는, 관리 서버(350)는 고장 상태인 제1 저장 서버(310) 내에 저장된 컨테이너가 복수 개의 저장 서버들(310, 320, 330 및 340) 중 상기의 고장 상태인 제1 저장 서버(310)를 제외한 다른 저장 서버(320, 330 및 340)로 이동하도록 관리할 수 있다.
관리 서버(350)는 상기의 이동을 반영하도록 컨테이너 그룹 맵(200)을 갱신할 수 있다. 상기의 이동은 고장 상태인 제1 저장 서버(310)에 저장된 데이터에 대해, 상기의 데이터를 복제하는 복제본의 개수를 유지시킨다.
복수 개의 저장 서버(310)들은 각각 관리 서버(350)에 의해 관리되는 컨테이너 그룹 맵(200)을 캐슁(caching)할 수 있다. 복수 개의 저장 서버들(310, 320, 330 및 340) 각각이 컨테이너 그룹 맵(200)을 캐슁함으로써, 분산 저장 시스템(300)의 데이터의 입출력에 관련된 일반적인 동작들(예를 들면, 데이터의 삽입 및 삭제 등)은, 관리 서버(350)의 개입 없이, 저장 서버들(310, 320, 330 및 340)에 의해 수행될 수 있다.
하트비트 메시지는 컨테이너 그룹 맵(200)의 버전(version)을 포함할 수 있다. 관리 서버(350) 및 제1 저장 서버(310)가 서로 간에 하트비트 메시지를 주고 받을 때, 관리 서버(350) 및 제1 저장 서버(310)는 각각 자신이 갖고 있는 컨테이너 그룹 맵(200)의 버전 및 하트비트 메시지 내의 버전을 비교할 수 있다. 만약, 제1 저장 서버(310)가 가진 컨테이너 그룹 맵(200)의 버전이 관리 서버(350)가 가진 컨테이너 그룹 맵(200) 보다 낮으면, 제1 저장 서버(310)는 관리 서버(350)에게 높은 버전의 컨테이너 그룹 맵(200)을 요청할 수 있으며, 관리 서버(350)는 제1 저장 서버(310)에게 높은 버전의 컨테이너 그룹 맵(200)을 전송할 수 있다. 관리 서버(350)에 의해 컨테이너 그룹 맵(200)이 갱신될 때, 관리 서버(350)는 컨테이너 그룹 맵(200)의 버전을 증가시킬 수 있다.
한편, 관리 서버(350)는 컨테이너 그룹 맵(200)이 갱신될 때마다, 갱신된 컨테이너 그룹 맵(200)을 복수 개의 저장 서버들(310, 320, 330 및 340)에게 브로드캐스트(broadcast)할 수 있다.
또한, 관리 서버(350)는 데이터 리밸런싱(rebalancing)을 수행할 수 있다. 분산 저장 시스템(300)에 새로운 저장 서버가 추가된 경우, 추가된 새로운 저장 서버에게는 어떠한 컨테이너도 할당되어 있지 않다. 관리 서버(350)는 기존의 복수 개의 저장 서버(들(310, 320, 330 및 340) 내에 저장된 컨테이너들 중 하나 이상의 컨테이너들을 추가된 새로운 저장 서버로 이동(migration)하도록 관리함으로써 데이터 리밸런싱을 수행할 수 있다. 관리 서버(350)는 상기의 이동에 따라 컨테이너 그룹 맵(200)을 갱신할 수 있다. 상기의 이동은 분산 저장 시스템(300) 내의 데이터를 저장 서버들(310, 320, 330 및 340) 내에 고르게 분산시키고, 분산 저장 시스템(300)의 전체 성능을 향상시킨다. 전술된 이동 작업은, 리밸런싱 뿐만 아니라, 제1 저장 서버(310)의 장애로부터 복제본을 복구할 경우에도 사용될 수 있다. 예를 들면, 관리 서버(350)는 제1 저장 서버(310)에 장애가 발생한 경우, 상기 제1 저장 서버(310)가 저장한 제1 컨테이너와 동일한 제2 컨테이너를 저장하는 제2 저장 서버(320)를 식별할 수 있고, 상기 제2 컨테이너와 동일한 제3 컨테이너를 제3 저장 서버(330) 내에 저장시킬 수 있다.
도 7은 본 발명의 일 예에 따른 데이터 제공 절차를 설명한다.
본 예에서, 저장 서버들은 도 3을 참조하여 전술된 저장 서버들(310, 320, 330 및 340)를 의미할 수 있다.
클라이언트(390)는 분산 저장 시스템(300)에게 데이터를 요청한다. 예를 들면, 클라이언트(390)는 분산 저장 시스템(300) 또는 분산 저장 시스템(300)의 특정한 저장 서버로 데이터 접근 요청 메시지를 전송할 수 있다. 또한, 데이터 접근 요청 메시지는 분산 저장 시스템(300) 내의 임의의 저장 서버로 전송될 수 있다.
데이터 접근 요청 메시지는 데이터 조작 처리 언어(Data Manipulation Language; DML)로 구성될 수 있다. 데이터 접근 요청 메시지는 접근을 원하는 데이터를 포함하는 컨테이너의 키 및 접근을 원하는 데이터를 식별하기 위한 정보를 포함할 수 있다. 접근을 원하는 데이터를 요청 데이터로 명명한다. 요청 데이터를 포함하는 컨테이너를 요청 컨테이너로 명명한다. 요청 컨테이너를 포함하는 컨테이너 그룹을 요청 컨테이너 그룹으로 명명한다.
분산 저장 시스템(300)의 복수 개의 저장 서버들 중 하나의 저장 서버가 데이터 접근 요청 메시지를 수신할 수 있다. 설명의 편의를 위하여 이하에서는 데이터 접근 요청 메시지를 수신한 저장 서버를 코디네이터(coordinator)(710)로 명명한다.
요청 데이터를 포함하는 요청 컨테이너는, 요청 컨테이너 그룹 내의 컨테이너를 저장하는 복수 개의 저장 서버들에 의해 복제된다. 도 7에서, 제1 복제본(720), 제2 복제본(730) 및 제3 복제본(740)은 1) 요청 컨테이너 또는 2) 요청 컨테이너와 동일한 데이터를 갖는 컨테이너들 중 하나의 컨테이너를 포함한다. 코디네이터(710) 또한 복제본들(720 내지 740) 중 하나 일 수 있다.
코디네이터(710)가 데이터 접근 요청 메시지를 수신하면, 코디네이터(710)의 분산 레이어(712)는 데이터 접근 요청 메시지와 관련된 저장 서버들을 검색한다. 말하자면, 코디네이터(710)는 요청 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들 중 하나의 컨테이너를 저장하는 저장 서버들(즉, 제1 복제본(720), 제2 복제본(730), 제3 복제본(740))을 식별한다.
코디네이터(710)의 분산 레이어(712)는 요청 컨테이너의 키를 해싱함으로써 요청 컨테이너를 포함하는 요청 컨테이너 그룹의 식별자를 생성할 수 있다. 코디네이터(710)는 생성된 요청 컨테이너 그룹의 식별자 및 컨테이너 그룹 맵(200)에 기반하여 요청 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들 중 하나의 컨테이너를 저장하는 저장 서버들을 식별할 수 있다. 코디네이터(710)는 요청 컨테이너 그룹의 식별자를 사용하여 컨테이너 그룹 맵(200) 내에서 요청 컨테이너 그룹에 대한 정보를 검색할 수 있고, 요청 컨테이너 그룹에 대한 정보를 통해 요청 컨테이너 그룹에 포함되는 각 컨테이너에 대응하는 저장 서버들을 식별할 수 있다.
코디네이터(710)가 컨테이너 그룹 맵(200)을 캐슁하지 않는 경우, 코디네이터(710)는 요청 컨테이너 그룹의 식별자를 관리 서버(350)로 전송할 수 있고, 관리 서버(350)로부터 요청 컨테이너 그룹에 포함된 컨테이너들을 저장하는 저장 서버들의 목록을 수신할 수 있다.
예를 들면, 요청된 데이터에 대한 접근이 읽기(read)인 경우, 코디네이터(710)는 데이터의 복제본들(720 내지 740) 중 하나의 저장 서버를 선택할 수 있다. 복제본들(720 내지 740)은 각각 접근이 요청된 데이터를 저장한다. 이때, 코데네이터(710)는 로드 밸런싱에 기반하여 데이터의 복제본들(720 내지 740) 중 하나의 저장 서버를 선택할 수 있다. 예를 들면, 코디네이터(710)는 복제본들(720 내지 740)들(또는, 저장 서버들) 각각의 데이터 요청과 관련된 요청 부하들을 고려하여 하나의 저장 서버를 선택할 수 있다. 코디네이터(710)는 선택된 저장 서버로 데이터 접근 요청 메시지를 전달할 수 있다. 코디네이터(710)는 선택된 저장 서버로부터 상기의 데이터 접근 요청 메시지에 대한 응답 메시지를 수신할 수 있고, 수신한 응답 메시지를 클라이언트(390)에게 전달할 수 있다.
예를 들면, 요청된 데이터에 대한 접근이 삽입(insert)인 경우, 코디네이터(710)는 데이터의 복제본들(720 내지 740) 각각에게 데이터 접근 요청 메시지를 전달할 수 있다. 이때, 코디네이터(710)는 자신이 가진 컨테이너 그룹 맵(200)의 버전을 함께 복제본들(720 내지 740)에게 전달할 수 있으며, 각 복제본(720, 730 또는 740)은 전송된 컨테이너 그룹 맵(200)의 버전을 체크(check)할 수 있다. 코드네이터(710)는 복제본들(720 내지 740) 각각으로부터 데이터 접근 요청 메시지에 대한 결과(예를 들면, 데이터 접근 요청 메시지에 대한 응답 메시지)들을 수신할 수 있고, 수신된 결과들을 모아서 클라이언트(390)에게 전달할 수 있다.
저장 서버 및 클라이언트(390) 간의 통신은 HTTP 프로토콜(protocol) 또는 원격 절차 호출(Remote Procedure Call; RPC) 라이브러리(library) 등을 통해 수행될 수 있으며, 클라이언트(390)가 직접적으로 저장 서버를 접근할 수도 있다.
도 8은 본 발명의 일 실시예에 따른 분산 저장 시스템의 데이터 제공 방법의 흐름도이다.
도 8의 단계들(810 내지 870)은, 본 실시예에서 설명하는 데이터 제공 방법은, 복수 개의 저장 서버들을 포함하는 분산 저장 시스템(300)이 클라이언트(390)에게 데이터를 제공하는 방법을 설명한다.
단계(810)에서, 복수 개의 저장 서버들 중 제1 저장 서버(예를 들면, 코디네이터(710))가 클라이언트(390)로부터 특정 데이터로의 접근 요청 메시지를 수신한다.
단계들(820 내지 840)에서, 제1 저장 서버는 복수 개의 저장 서버들 중 특정 데이터를 포함하는 특정 컨테이너를 저장하는 제2 저장 서버를 식별한다. 상기의 특정 컨테이너를 제1 컨테이너로 칭한다.
단계(820)에서, 제1 저장 서버는 제1 컨테이너의 키를 해싱함으로써 제1 컨테이너를 포함하는 제1 컨테이너 그룹의 식별자를 생성한다.
단계(830)에서, 제1 저장 서버는 제1 컨테이너 그룹의 식별자 및 컨테이너 그룹 맵(200)에 기반하여 제1 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들 중 하나의 컨테이너들 중 하나의 컨테이너를 저장하는 제3 저장 서버들을 식별한다. 상기의 제3 저장 서버들은 도 7의 복제본들(720 내지 740)에 대응할 수 있다.
단계(840)에서, 제1 저장 서버는 제3 저장 서버들 중 하나의 저장 서버를 제2 저장 서버로서 선택할 수 있다. 제1 저장 서버는 로드 밸런싱에 기반하여 제3 저장 서버들 중 하나의 저장 서버를 제2 저장 서버로서 선택할 수 있다.
단계(850)에서, 제1 저장 서버는 제2 저장 서버로 접근 요청 메시지를 전달한다.
단계(860)에서, 제1 저장 서버는 제2 저장 서버로부터 접근 요청 메시지에 대한 응답 메시지를 수신한다.
단계(870)에서, 제1 저장 서버는 응답 메시지를 클라이언트(390)로 전달한다.
앞서 도 1 내지 도 7을 참조하여 설명된 본 발명의 일 실시예에 따른 기술적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
111 내지 113, 121 내지 123: 컨테이너
110, 120: 컨테이너 그룹
200: 컨테이너 그룹 맵
300: 분산 저장 시스템
310 내지 340 : 저장 서버
350: 관리 서버
110, 120: 컨테이너 그룹
200: 컨테이너 그룹 맵
300: 분산 저장 시스템
310 내지 340 : 저장 서버
350: 관리 서버
Claims (17)
- 분산 저장 시스템에 있어서,
복수 개의 저장 서버들
을 포함하고,
하나 이상의 컨테이너 그룹들은 각각 하나 이상의 컨테이너들을 포함하며,
상기 하나 이상의 컨테이너 그룹들 각각에 포함된 상기 하나 이상의 컨테이너들은 동일한 데이터를 가지며, 각각 상기 복수 개의 저장 서버들 중 서로 상이한 하나의 저장 서버 내에 저장되고,
상기 분산 저장 시스템 내의 모든 컨테이너들은 동일한 테이블 스키마를 가지며, 각각 상기 테이블 스키마에 따른 하나 이상의 지역 테이블들을 포함하는, 분산 저장 시스템. - 제1항에 있어서,
각 컨테이너는 상기 분산 저장 시스템의 특정한 사용자에 대한 데이터 또는 상기 분산 저장 시스템 내에 저장된 특정한 콘텐츠에 대한 데이터를 포함하는, 분산 저장 시스템. - 제1항에 있어서,
상기 복수 개의 저장 서버들은 각각 상기 분산 저장 시스템 내에서 공통적으로 사용되는 데이터를 저장하는 전역 테이블을 포함하는, 분산 저장 시스템. - 제3항에 있어서,
상기 저장 서버는 상기 전역 테이블 및 상기 지역 테이블 간의 조인 연산을 사용하여 데이터를 제공하는, 분산 저장 시스템. - 제1항에 있어서,
클라이언트로부터 제1 컨테이너가 저장하는 제1 데이터로의 접근 요청 메시지를 수신한 제1 저장 서버는 상기 복수 개의 저장 서버들 중 상기 제1 데이터를 저장하는 제2 저장 서버를 선택하고, 상기 제2 저장 서버로 상기 접근 요청 메시지를 전달하는, 분산 저장 시스템. - 제5항에 있어서,
상기 제1 저장 서버는 상기 제2 저장 서버로부터 상기 접근 요청 메시지에 대한 응답 메시지를 수신하고, 상기 응답 메시지를 상기 클라이언트로 전달하는, 분산 저장 시스템. - 제5항에 있어서,
상기 제1 저장 서버는 상기 복수 개의 저장 서버들 각각의 요청 부하들을 고려하여 상기 제2 저장 서버를 선택하는, 분산 저장 시스템. - 제5항에 있어서,
컨테이너 그룹 맵은 각 컨테이너 그룹의 식별자 및 각 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들이 저장된 저장 서버들에 대한 정보를 포함하고,
상기 제1 저장 서버는 상기 제1 컨테이너의 키를 해싱함으로써 상기 제1 컨테이너를 포함하는 제1 컨테이너 그룹의 식별자를 생성하며, 상기 제1 컨테이너 그룹의 식별자 및 상기 컨테이너 그룹 맵에 기반하여 상기 제1 컨테이너 그룹이 포함하는 컨테이너를 저장하는 저장 서버들을 식별하는, 분산 저장 시스템. - 제8항에 있어서,
상기 컨테이너 그룹 맵을 관리하는 관리 서버
를 더 포함하며,
상기 복수 개의 저장 서버들은 각각 상기 컨테이너 그룹 맵을 캐슁하는, 분산 저장 시스템. - 제1항에 있어서,
상기 복수 개의 저장 서버들에 대한 정보를 관리하는 관리 서버
를 더 포함하며
상기 관리 서버는 상기 복수 개의 저장 서버들 중 고장 상태인 저장 서버를 식별하고, 상기 고장 상태인 저장 서버 내에 저장된 컨테이너가 상기 복수 개의 저장 서버들 중 상기 고장 상태인 저장 서버를 제외한 다른 저장 서버로 이동하도록 관리하는, 분산 저장 시스템. - 제10항에 있어서,
상기 관리 서버는 상기 복수 개의 저장 서버들 각각으로부터 하트비트 메시지들을 수신함으로써 상기 복수 개의 저장 서버들 중 고장 상태인 저장 서버를 식별하는, 분산 저장 시스템. - 제1항에 있어서,
상기 복수 개의 저장 서버들에 대한 정보를 관리하는 관리 서버
를 더 포함하며
상기 관리 서버는 상기 복수 개의 저장 서버들 내에 저장된 컨테이너들 중 하나 이상의 컨테이너들이 새로 추가된 저장 서버로 이동하도록 관리함으로써 데이터 리밸런싱을 수행하는, 분산 저장 시스템. - 복수 개의 저장 서버들을 포함하는 분산 저장 시스템이 데이터를 제공하는 방법에 있어서,
상기 복수 개의 저장 서버들 중 제1 저장 서버가 클라이언트로부터 특정 데이터로의 접근 요청 메시지를 수신하는 단계;
상기 제1 저장 서버가 상기 복수 개의 저장 서버들 중 상기 특정 데이터를 포함하는 특정 컨테이너를 저장하는 제2 저장 서버를 식별하는 단계; 및
상기 제2 저장 서버로 상기 접근 요청 메시지를 전달하는 단계
를 포함하고,
하나 이상의 컨테이너 그룹들은 각각 하나 이상의 컨테이너들을 포함하며,
상기 하나 이상의 컨테이너 그룹들 각각에 포함된 상기 하나 이상의 컨테이너들은 동일한 데이터를 가지며, 각각 상기 복수 개의 저장 서버들 중 서로 상이한 하나의 저장 서버 내에 저장되고,
상기 분산 저장 시스템 내의 모든 컨테이너들은 동일한 테이블 스키마를 가지며, 각각 상기 테이블 스키마에 따른 하나 이상의 지역 테이블들을 포함하는
분산 저장 시스템의 데이터 제공 방법. - 제13항에 있어서,
상기 제1 저장 서버가 상기 제2 저장 서버로부터 상기 접근 요청 메시지에 대한 응답 메시지를 수신하는 단계; 및
상기 응답 메시지를 상기 클라이언트로 전달하는 단계
를 더 포함하는, 분산 저장 시스템의 데이터 제공 방법. - 제13항에 있어서,
컨테이너 그룹 맵은 각 컨테이너 그룹의 식별자 및 각 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들이 저장된 저장 서버들에 대한 정보를 포함하고,
상기 제2 저장 서버를 식별하는 단계는,
상기 제1 저장 서버가 상기 특정 컨테이너의 키를 해싱함으로써 상기 특정 컨테이너를 포함하는 제1 컨테이너 그룹의 식별자를 생성하는 단계;
상기 제1 저장 서버가 상기 제1 컨테이너 그룹의 식별자 및 상기 컨테이너 그룹 맵에 기반하여 상기 제1 컨테이너 그룹이 포함하는 하나 이상의 컨테이너들 중 하나의 컨테이너를 저장하는 제3 저장 서버들을 식별하는 단계; 및
상기 제1 저장 서버가 상기 제3 저장 서버들 중 하나의 저장 서버를 상기 제2 저장 서버로서 선택하는 단계
를 포함하는, 분산 저장 시스템의 데이터 제공 방법. - 제15항에 있어서,
상기 제1 저장 서버는 상기 제3 저장 서버들 각각의 요청 부하들을 고려하여 상기 제3 저장 서버들 중 상기 제2 저장 서버를 선택하는, 분산 저장 시스템의 데이터 제공 방법. - 제13항 내지 제16항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20110102918A KR101511098B1 (ko) | 2011-10-10 | 2011-10-10 | 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20110102918A KR101511098B1 (ko) | 2011-10-10 | 2011-10-10 | 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130038517A KR20130038517A (ko) | 2013-04-18 |
KR101511098B1 true KR101511098B1 (ko) | 2015-04-10 |
Family
ID=48439019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20110102918A KR101511098B1 (ko) | 2011-10-10 | 2011-10-10 | 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101511098B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107544758B (zh) * | 2017-08-29 | 2020-07-10 | 新华三云计算技术有限公司 | 集群的磁盘心跳检测方法和装置 |
KR102023900B1 (ko) * | 2017-11-10 | 2019-09-23 | 엔드론 주식회사 | 드론 데이터 제어 방법, 이를 이용하는 장치 및 시스템 |
JP7071938B2 (ja) | 2019-01-23 | 2022-05-19 | 株式会社日立製作所 | データベース管理サービス提供システム |
KR102446717B1 (ko) * | 2020-11-12 | 2022-09-27 | 한국과학기술정보연구원 | 컨테이너 처리 방법, 컨테이너 처리 장치 및 컨테이너 처리 시스템 |
KR20230174137A (ko) * | 2022-06-20 | 2023-12-27 | 삼성전자주식회사 | 컨테이너 기반 다중 클러스터 환경에서 데이터 동기화를 위한 방법 및 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010025949A (ko) * | 1999-09-02 | 2001-04-06 | 이계철 | 다중 데이터베이스 통합을 위한 미들웨어 시스템과 그를 이용한 분산 이기종 지역 데이터베이스 통합 접근방법 |
KR20070055590A (ko) * | 2004-09-13 | 2007-05-30 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 분산된 저장 시스템을 관리하는 방법 |
KR20100060429A (ko) * | 2008-11-27 | 2010-06-07 | 엔에이치엔(주) | 분산 파일 시스템 및 분산 파일 시스템의 수행 방법 |
KR20110002808A (ko) * | 2009-07-02 | 2011-01-10 | (주)에임투지 | 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법 |
-
2011
- 2011-10-10 KR KR20110102918A patent/KR101511098B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010025949A (ko) * | 1999-09-02 | 2001-04-06 | 이계철 | 다중 데이터베이스 통합을 위한 미들웨어 시스템과 그를 이용한 분산 이기종 지역 데이터베이스 통합 접근방법 |
KR20070055590A (ko) * | 2004-09-13 | 2007-05-30 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 분산된 저장 시스템을 관리하는 방법 |
KR20100060429A (ko) * | 2008-11-27 | 2010-06-07 | 엔에이치엔(주) | 분산 파일 시스템 및 분산 파일 시스템의 수행 방법 |
KR20110002808A (ko) * | 2009-07-02 | 2011-01-10 | (주)에임투지 | 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20130038517A (ko) | 2013-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102779185B (zh) | 一种高可用分布式全文索引方法 | |
CN102591970B (zh) | 一种分布式键-值查询方法和查询引擎系统 | |
US9720992B2 (en) | DML replication with logical log shipping | |
US8495013B2 (en) | Distributed storage system and method for storing objects based on locations | |
CN111078121B (zh) | 一种分布式存储系统数据迁移方法、系统、及相关组件 | |
US20130132408A1 (en) | System and Method for Using Bloom Filters to Determine Data Locations in Distributed Data Stores | |
US20100161657A1 (en) | Metadata server and metadata management method | |
US20130339301A1 (en) | Efficient snapshot read of a database in a distributed storage system | |
US20140025704A1 (en) | Query method for a distributed database system and query apparatus | |
US20080126404A1 (en) | Scalable distributed object management in a distributed fixed content storage system | |
US20190075084A1 (en) | Distributed Lock Management Method, Apparatus, and System | |
US10127077B2 (en) | Event distribution pattern for use with a distributed data grid | |
CN104050249A (zh) | 分布式查询引擎系统和方法及元数据服务器 | |
CN102053982A (zh) | 一种数据库信息管理方法和设备 | |
CN104050250A (zh) | 一种分布式键-值查询方法和查询引擎系统 | |
KR101511098B1 (ko) | 분산된 컨테이너들을 사용하여 데이터를 관리하는 시스템 및 방법 | |
US20130254590A1 (en) | Real time database system | |
CN104750757B (zh) | 一种基于HBase的数据存储方法和设备 | |
KR101527634B1 (ko) | 샤딩 서비스를 제공하는 방법 및 장치 | |
CN105005611A (zh) | 一种文件管理系统及文件管理方法 | |
US11321283B2 (en) | Table and index communications channels | |
Silberstein et al. | Pnuts in flight: Web-scale data serving at yahoo | |
US10997216B1 (en) | Systems and methods for centralized database cluster management | |
CN113254460A (zh) | 数据处理方法、系统、电子设备及计算机程序产品 | |
CN109669916B (zh) | 一种基于cmsp和kudu的分布式对象存储架构和平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right |