하이퍼테이블
하이퍼테이블(Hypertable)이란 구글(Google)의 대규모 확장형 데이터베이스인 빅테이블을 원형으로 한 오픈소스 분산형 데이터베이스이다. 비정형 데이터를 분석하기 위한 노에스큐엘(NoSQL)의 일종이다. 높은 성능과 편의성을 가지고 있다.
개요
하이퍼테이블(Hypertable)은 비관계형 데이터베이스인 노에스큐엘(NoSQL) 중 빅테이블을 모델로 한 오픈소스 데이터베이스로 분산파일 시스템 위에서 실행된다. HDFS. MapR, Ceph, KFS, 로컬을 지원하고 C++을 이용하여 개발되었다. 스토리지 아키텍처는 디스크를 지향하며 외국 키는 지원하지 않는다. 또한 시스템을 기본 클러스터에 간편히 추가하여 원활하고 경제적으로 크기를 페타바이트 단위로 확장할 수 있다. 하이퍼테이블 (Hypertable)은 구글의(Google)의 독점적이고 대규모로 확장 가능한 데이터베이스인 빅테이블(Bigtable)을 모델로 한 대규모 확장 가능한 고성능 오픈 소스 데이터베이스이다. 하이퍼테이블은 기존 관계형 데이터베이스 관리 시스템(RDBMS)에서 잘 처리되지 않는 확장성 문제를 해결하기 위한 목적으로 설계되었다. 하이퍼테이블은 경쟁 제품에 비해 최대의 효율성과 우수한 성능을 제공하여 비용을 크게 절감한다. 하이퍼테이블의 테이블은 단일 기본 키인 행 키로 정렬 된 방대한 데이터 테이블로 생각할 수 있다. 관계형 데이터베이스와 마찬가지로 하이퍼테이블은 데이터를 정보 테이블로 나타낸다. 테이블의 각 행에는 관련 정보가 포함된 셀이 있으며 각 셀은 부분적으로 행 키와 열 이름으로 식별된다. 테이블이 생성될 때 최대 255개의 열 이름의 대한 자원이 제공된다. 하이퍼테이블은 세 번쩨 차원인 인 타임 스탬프를 추가하여 기존의 2차원 테이블 모델을 확장한다. 이 타임 스탬프 차원은 각 테이블 셀의 서로 다른 버전을 나타내는 것으로 생각할 수 있다. 하이퍼테이블은 하둡(Hadoop)위에 매끄럽게 오버레이되어 빅데이터 애플리케이션을 위한 확장 가능한 강력한 데이터베이스 인프라를 제공한다.[1]
역사
- 2008년: 중국의 Zvents 사에서 구글의 빅테이블을 기반으로 한 오픈소스 데이터베이스인 하이퍼테이블을 만들었다.
- 2009년: 1월 중국의 검색엔진 바이두가 프로젝트의 스폰서가 됐다.
- 2016년: 3월에 개발을 중단했으며 DB 엔진 순위에서 제외되었다.
특징
- 체크포인트 : 테이블 데이터를 임의의 순서대로 출력하여 하이퍼테이블에 백업시키고, 하이퍼테이블은 항상 체크포인트에서 일관되고 작동 가능한 상태로 되돌아올 수 있다.[2]
- 동시성 제어 : 다중 버전 동시성 제어(MVCC: Multi Version Concurrency Control)란 하이퍼테이블이 가지고 있는 기능 중 하나로 수정된 번호로 자동으로 할당된 타임 스탬프를 사용한다.[2]
- 데이터 모델 : 하이퍼테이블은 일련의 관련 열을 사용한다.[2]
- 쿼리 인터페이스 : 하이퍼테이블은 테이블을 생성하고 수정 및 쿼리하기 위한 HQL(Hypertable Query Language)을 제공한다. 이것을 사용해서 관리 명령을 호출할 수도 있다. HQL은 하이퍼테이블 명령 줄 인터페이스(htshell), Thrift API 메소드 및 하이퍼테이블로 해석할 수 있다.[2]
- 스토리지 아키텍처 : 디스크 지향으로 하이퍼테이블은 어떠한 파일 시스템에서도 실행할 수 있다. 파일 시스템(FS) 브로커는 모든 파일 시스템 요청을 처리한다. FS 브로커들은 현재 HDFS, MapR, Ceph, KFS 및 현지인을 지원한다.[2]
- 확장성
하이퍼테이블(Hypertable)은 기존 관계형 데이터베이스 관리 시스템(RDBMS)에서 잘 처리되지 않는 문제인 확장 성 문제를 해결하기 위해 설계되었다. 데이터 세트를 샤드 로 분할하여 분산 RDBMS 시스템을 설계 할 수 있지만 이 솔루션에는 엄청난 엔지니어링 노력이 필요하며 핵심 데이터베이스 엔진이 확장 성을 위해 설계되지 않았기 때문에 결과 시스템에는 내재적 인 약점이 있다. Hypertable은 확장 성 요구 사항을 충족하기 위해 구글(Google)에서 개발 한 설계를 기반으로하며 다른 노에스큐엘(NoSQL) 솔루션보다 확장 문제를 더 잘 해결한다.[3]
- 바용 절감
하이퍼테이블(Hypertable)은 최대의 효율성과 최적의 성능을 위해 설계 및 구현되었다. 가비지 수집 및 런타임 해석의 성능 및 안정성 비용을 발생시키지 않는 컴파일 된 언어로 구현하도록 선택함으로써 Hypertable은 일부 하드웨어에서 동등한 데이터베이스 용량을 제공 할 수 있다. 이는 더 적은 장비, 더 적은 전력 소비 및 더 적은 데이터 센터 공간을 의미한다.[3]
- 공연
하이퍼테이블(Hypertable)의 고효율 설계 및 구현의 또 다른 이점은 더 나은 성능에서 얻을 수있는 모든 이점을 제공한다는 것이다. 라이브 애플리케이션의 경우 Hypertable은 전체 요청 지연 시간을 줄여 훨씬 더 응답 성이 뛰어난 사용자 경험을 제공하는 데 도움이 될 수 있다. 오프라인 애플리케이션의 경우 더 높은 처리량이 달성되어 주어진 시간 동안 더 많은 작업을 수행 할 수 있다.[3]
- 깨끗한 의미
하이퍼 테이블(Hypertable)은 일관된 데이터베이스(Database)이다. 확장 가능한 대부분의 노에스큐엘(NoSQL) 데이터베이스 제품은 최종 일관성 의 개념을 중심으로 설계되어 데이터베이스를 추론하기가 더 어렵다. 궁극적으로 일관된 데이터베이스에는 복잡한 구문 또는 의미 조정자가 필요하며 일부 상황에서는 데이터가 손실 될 수도 있다. 응용 프로그램이 Hypertable에 데이터를 쓰고 성공 응답을 받으면 수정 사항이 지속되고 항상 후속 작업에 반영된다.[3]
시스템 구성 요소
- 초공간
이것은 우리 시스템의 하이퍼스페이스(Hyperspace)와 동일하다. 하이퍼스페이스(또는 Chubby)는 소량의 메타 데이터를 저장하기위한 파일 시스템을 제공하는 서비스이다. 또한 독점 또는 공유 잠금에서 잠금 관리자 역할을하며 모든 파일 또는 디렉토리에서 획득한다. 단일 서버로 구현되지만 가까운 장래에 분산되고 고 가용성이 될 것이다. 구글(Google)은 하이퍼스페이스를 "모든 분산 데이터 구조의 뿌리"라고 부르며이 시스템을 생각하는 좋은 방법이다.[4]
- 범위 서버
테이블(Table)은 연속 된 행 범위 세트로 구분되며 각 범위는 범위 서버에 의해 관리된다. 처음에 각 테이블은 전체 행 키 공간에 걸쳐있는 단일 범위로 구성된다. 테이블이 데이터로 채워지면 범위는 결국 크기 임계 값 (기본값은 200MB)을 초과하고 중간 행 키를 분할 지점으로 사용하여 두 범위로 분할된다. 범위 중 하나는 원래 범위를 보유한 동일한 범위 서버에 유지되고 다른 범위는 마스터에 의해 다른 범위 서버에 재 할당된다. 이 분할 프로세스는 계속 증가함에 따라 모든 범위에 대해 계속된다. 각 범위 서버는 자신이 담당하는 범위에 대한 테이블 데이터의 모든 읽기 및 쓰기를 처리한다. 범위 서버는 메모리에 업데이트를 저장 한 후 셀카체(CellCache)라고합니다. 주기적으로 CellCache는 셀스토어(CellStore)라고하는 특별히 포맷 된 파일의 디스크로 플러시된다. 액세스 그룹의 데이터를 스캔하려면 범위 서버가 액세스 그룹에 대한 CellCache 및 모든 CellStore의 병합을 수행해야한다.[4]
- 석사
마스터는 테이블 생성 및 삭제와 같은 모든 메타 작업을 처리한다. 클라이언트 데이터는 마스터를 통해 이동하지 않으므로 클라이언트가 인식하지 못하는 동안 마스터가 잠시 중단 될 수 있다. 또한 마스터는 범위 서버 오류를 감지하고 필요한 경우 범위를 재 할당한다. 마스터는 범위 서버 부하 분산도 담당한다. 현재 마스터 프로세스는 하나 뿐이지 만 시스템은 상시 대기 마스터를 허용하는 방식으로 설계되었다. [4]
- DFS 브로커
Hypertable은 모든 파일 시스템에서 실행되도록 설계되었다. 이를 위해 시스템은 DFS 브로커라고하는 것을 통해 파일 시스템에 대한 인터페이스를 추상화했다. DFS 브로커는 표준화 된 파일 시스템 프로토콜 메시지를 특정 파일 시스템에 고유 한 시스템 호출로 변환하는 프로세스이다. DFS 브로커는 HDFS (hadoop), KFS 로컬용으로 개발되었다.[4]
관련 용어
- Google 파일 시스템(GFS) : Google 확장 가능 컴퓨팅 스택의 최하위 계층이다. 다른 파일 시스템과 매우 유사하며 파일 및 디렉토리 생성을 허용한다. 구글(Google) 파일 시스템의 주요 혁신은 확장성이 뛰어나고 가용성이 높다는 것이다. 3개의 물리적 머신에 파일 데이터를 복제하여 고가용성을 달성한다. 즉, 복제본을 보유한 머신 중 최대 2개가 손실 될 수 있으며 데이터는 계속 사용할 수 있다. 하둡(Hadoop) 은 HDFS(Hadoop Distributed File System)라는 GFS(Government Finance Statistics)의 오픈 소스 구현을 제공한다.
- 맵리듀스(MapReduce) : GFS(Government Finance Statistics)에서 데이터를 효율적으로 처리하도록 설계된 병렬 계산 프레임 워크이다. 데이터가있는 시스템으로 코드를 푸시하여 코드 조각을 통해 병렬로 대량의 데이터를 실행할 수있는 방법을 제공한다. 또한 임의의 필드를 기반으로 데이터를 재정렬하는 방법을 제공하는 최종 집계 단계도 포함된다. 하둡(Hadoop)은 맵리듀스(MapReduce)의 오픈 소스 구현을 제공한다.
- 빅테이블(Bigtable) : 구글(Google)의 확장 가능한 데이터베이스이다. 기본 키로 인덱싱 된 방대한 정보 테이블을 생성하는 방법을 제공한다. 이 글을 쓰는 시점에서 Google 웹 서비스의 90 % 이상이 검색, Google 어스, Google 애널리틱스, Google지도, 지메일(Gmail), 오르컷(orkut), 유투브(YouTube) 등을 포함하여 Bigtable을 기반으로 구축되었다. 하이퍼테이블(Hypertable)은 Bigtable의 고성능 오픈 소스 구현이다.
- 쏘살(Sawzall) : 전체 스택의 맨 위에있는 런타임 스크립팅 언어로, 대규모 데이터 세트에 대해 쉽게 표현 가능한 방식으로 통계 분석을 수행 할 수있는 기능을 제공한다. 하이브(Hive) 및 피그(Pig)와 같은 오픈 소스 프로젝트는 유사한 기능을 제공한다.
- 하이퍼스페이스(Hyperspace) : 구글(Google)의 츄비(Chubby) 서비스에 해당하는 하이퍼테이블(Hypertable) 아다. Hyperspace는 고 가용성 잠금 관리자이며 소량의 메타 데이터를 저장하기위한 파일 시스템을 제공한다. 생성 된 파일이나 디렉토리에서 배타적 또는 공유 잠금을 얻을 수 있다. 고가용성은 서로 다른 물리적 시스템에서 실행되는 복제본이있는 분산 구성에서 실행함으로써 달성된다. 일관성은 분산 된 합의 프로토콜을 통해 달성된다. Google은 Chubby를 "모든 분산 데이터 구조의 뿌리"라고 부르며 이 시스템을 생각하는 좋은 방법이다.
- 마스터 : 마스터는 테이블 생성 및 삭제와 같은 모든 메타 작업을 처리한다. 클라이언트 데이터는 마스터를 통해 이동하지 않으므로 클라이언트가 인식하지 못하는 동안 마스터가 잠시 중단 될 수 있다. 마스터는 또한 범위 서버 오류를 감지하고 필요한 경우 범위를 다시 할당한다. 마스터는 범위 서버 부하 분산도 담당한다. 현재 단일 마스터 프로세스가 있지만 상시 대기를 통해 고 가용성이 달성된다.
- 범위 서버 :
- 에프에스 브로커(FS Broker) :
- 절약 브로커(ThriftBroker) :
지원
- 운영 체제
- 리눅스(Linux) :
- 오에스 엑스(OS X) :
- 위도우(Windows) :
- 프로그래밍 언어
- 씨플플(C++) :
- 자바(Java) :
- 퍼릴(Perl) :
- 피에이치피(PHP) :
- 파이썬(Python) :
- 루비(Ruby) :
현황
이 프로젝트의 설계 목표 중 가장 중요한 것은 최적의 성능으로 하이퍼테이블이 Hadoop DFS와 같은 기존의 분산 파일 시스템에서 실행되도록 설계되었다. 설계자는 이를 위해 자바보다는 시스템의 전체적인 부분을 전적으로 C++으로 만들었으며 여러 언어와 호환된다. 그러나 2016년 3월부터 추가 개발을 중단하면서 DB 엔진 순위에서 제외되었다. 더욱이 관련 정보도 찾기 힘들다.
각주
- ↑ 〈하이퍼 테이블〉, 《피에이티 리처치》
- ↑ 2.0 2.1 2.2 2.3 2.4 〈하이퍼 테이블〉, 《데이터베이스 데이터베이스》 인용 오류: 잘못된
<ref>
태그; ".EB.82.98"이 다른 콘텐츠로 여러 번 정의되었습니다 인용 오류: 잘못된<ref>
태그; ".EB.82.98"이 다른 콘텐츠로 여러 번 정의되었습니다 - ↑ 3.0 3.1 3.2 3.3 하이퍼테이블 공식홈페이지 - https://hypertable.com/why_hypertable/
- ↑ 4.0 4.1 4.2 4.3 〈HyperTable이란 무엇입니까?〉, 《탑텍박스》
참고자료
- 〈하이퍼 테이블〉, 《피에이티 리처치》
- 〈하이퍼 테이블〉, 《데이터베이스 데이터베이스》
- 하이퍼테이블 공식홈페이지 - https://hypertable.com/why_hypertable/
- 〈HyperTable이란 무엇입니까?〉, 《탑텍박스》
같이 보기