검수요청.png검수요청.png

"하이퍼테이블"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
 
(사용자 4명의 중간 판 16개는 보이지 않습니다)
1번째 줄: 1번째 줄:
'''하이퍼 테이블'''<!--하이퍼 테이블-->(Hypertable)<!--Hyper Table-->이란 [[구글]]의 대규모 확장형 데이터베이스인 [[빅 테이블]]을 원형으로 한 [[오픈소스]] 분산형 [[데이터베이스]]이다. 높은 성능과 편의성을 가지고 있다.<ref name="db"> 카네기 멜런 데이터 베이스 그룹, 〈[https://dbdb.io/db/hypertable Hypertable]〉, 《Database of Databases》, 2018-12-12</ref>
+
[[파일:하이퍼테이블 로고.png|썸네일|200픽셀|'''하이퍼테이블'''(Hypertable)]]
 +
[[파일:하이퍼테이블 글자.png|썸네일|300픽셀|'''하이퍼테이블'''(Hypertable)]]
  
 +
'''하이퍼테이블'''<!--하이퍼 테이블-->(Hypertable)<!--Hyper Table-->이란 [[구글]](Google)의 대규모 확장형 데이터베이스인 [[빅테이블]]을 원형으로 한 [[오픈소스]] 분산형 [[데이터베이스]]이다. 비정형 데이터를 분석하기 위한 [[노에스큐엘]](NoSQL)의 일종이다. 높은 성능과 편의성을 가지고 있다.
 
== 개요 ==
 
== 개요 ==
하이퍼테이블은 비관계형 데이터베이스인 [[노에스큐엘]] 중 빅테이블을 모델로 한 오픈소스 데이터베이스로 분산파일 시스템 위에서 실행된다. HDFS. MapR, Ceph, KFS, 로컬을 지원하고 [[C++]]을 이용하여 개발되었다. 스토리지 아키텍처는 디스크를 지향하며 외국 키는 지원하지 않는다. 또한 시스템을 기본 클러스터에 간편히 추가하여 원활하고 경제적으로 크기를 페타바이트 단위로 확장할 수 있다.<ref name="db"></ref>
+
하이퍼테이블(Hypertable)은 비관계형 [[데이터베이스]]인 [[노에스큐엘]](NoSQL) [[빅테이블]]을 모델로 한 오픈소스 데이터베이스로 분산파일 시스템 위에서 실행된다. 어러가지 운영체제와 언어을 지원하고 [[C++]]을 이용하여 개발되었다. 스토리지 아키텍처는 디스크를 지향하며 외국 키는 지원하지 않는다. 또한 시스템을 기본[[클러스터]]에 간편히 추가하여 원활하고 경제적으로 크기를 페타바이트 단위로 확장할 수 있다. 하이퍼테이블(Hypertable)은 구글의(Google)의 독점적이고 대규모로 확장 가능한 데이터베이스인 빅테이블(Bigtable)을 모델로 한 대규모 확장 가능한 고성능 오픈 소스 데이터베이스이다. 하이퍼테이블은 기존 [[관계형 데이터베이스 관리 시스템]](RDBMS)에서 잘 처리되지 않는 확장성 문제를 해결하기 위한 목적으로 설계되었다. 하이퍼테이블은 경쟁 제품에 비해 최대의 효율성과 우수한 성능을 제공하여 비용을 크게 절감한다. 하이퍼테이블의 테이블은 단일 기본 키인 행 키로 정렬 된 방대한 데이터 테이블로 생각할 수 있다. 관계형 데이터베이스와 마찬가지로 하이퍼테이블은 데이터를 정보 테이블로 나타낸다. 테이블의 각 행에는 관련 정보가 포함된 셀이 있으며 각 셀은 부분적으로 행 키와 열 이름으로 식별된다. 테이블이 생성될 때 최대 255개의 열 이름의 대한 자원이 제공된다. 하이퍼테이블은 세 번째 차원인 인 타임 스탬프를 추가하여 기존의 2차원 테이블 모델을 확장한다. 이 타임 스탬프 차원은 각 테이블 셀의 서로 다른 버전을 나타내는 것으로 생각할 수 있다. 하이퍼테이블은 하둡(Hadoop)위에 매끄럽게 오버레이되어 빅데이터 애플리케이션을 위한 확장 가능한 강력한 데이터베이스 인프라를 제공한다.<ref> 〈[https://www.predictiveanalyticstoday.com/hypertable/ 하이퍼 테이블]〉, 《피에이티 리처치》</ref>  
  
== 역사 ==
+
== 로드맵 ==
*2008년: 중국의 Zvents 사에서 구글의 빅 테이블를 기반으로 한 오픈소스 데이터베이스인 하이퍼테이블을 만들었다.
+
*2008년 : 중국의 Zvents 사에서 [[구글]]의 [[빅테이블]]을 기반으로 한 [[오픈소스]] 데이터베이스인 하이퍼테이블을 만들었다.
*2009년: 1월 중국의 검색엔진 [[바이두]]가 프로젝트의 스폰서가 됐다.
+
*2009년 01월 : 중국의 검색엔진 [[바이두]]가 프로젝트의 스폰서가 됐다.
*2016년: 3월에 개발을 중단했으며 DB 엔진 순위에서 제외되었다.
+
*2012년 03월 22일 : 하이퍼테이블에서 보조 인덱스를 지원하였다.
 +
*2013년 02월 21일 : 하이퍼테이블 버전 0.9.7.0 이 출시되었다.
 +
*2014년 06월 23일 ~ 2016년 3월 14일 : 하이퍼테이블 버전 0.9.8.0 ~ 0.9.8.11 이 출시되었다.
 +
*2016년 03월 : 개발을 중단했으며 DB 엔진 순위에서 제외되었다.
  
 
== 특징 ==
 
== 특징 ==
기업을 위한 상용 기술지원 서비스를 제공하며 다음과 같은 기능을 제공한다.
+
* '''체크포인트''' : 테이블 데이터를 임의의 순서대로 출력하여 하이퍼테이블에 백업시키고, 하이퍼테이블은 항상 체크포인트에서 일관되고 작동 가능한 상태로 되돌아올 수 있다.<ref name='나'> 〈[https://dbdb.io/db/hypertable 하이퍼 테이블]〉, 《데이터베이스 데이터베이스》</ref>
  
=== 체크포인트 ===
+
* '''동시성 제어''' : 다중 버전 동시성 제어(MVCC: Multi Version Concurrency Control)란 하이퍼테이블이 가지고 있는 기능 중 하나로 수정된 번호로 자동으로 할당된 타임 스탬프를 사용한다.<ref name="나"></ref>
테이블 데이터를 임의의 순서대로 출력하여 하이퍼 테이블에 백업시키고, 하이퍼 테이블은 항상 체크포인트에서 일관되고 작동 가능한 상태로 되돌아올 수 있다.<ref>윤승은, 〈[https://terms.naver.com/entry.nhn?docId=797348&cid=50376&categoryId=50376 체크 포인트]〉, 《정보통신용어사전》, 일진사, 2008-01-15</ref>
+
 +
* '''데이터 모델''' : 하이퍼테이블은 일련의 관련 열을 사용한다.<ref name="나"></ref>
 +
 +
* '''쿼리 인터페이스''' : 하이퍼테이블은 테이블을 생성하고 수정 및 쿼리하기 위한 HQL(Hypertable Query Language)을 제공한다. 이것을 사용해서 관리 명령을 호출할 수도 있다. HQL은 하이퍼테이블 명령 줄 인터페이스(htshell), Thrift API 메소드 및 하이퍼테이블로 해석할 수 있다.<ref name="나"></ref>
  
=== 동시성 제어 ===
+
* '''스토리지 아키텍처''' : 디스크 지향으로 하이퍼테이블은 어떠한 파일 시스템에서도 실행할 수 있다. 파일 시스템(FS) 브로커는 모든 파일 시스템 요청을 처리한다. FS 브로커들은 현재 HDFS, MapR, Ceph, KFS 및 현지인을 지원한다.<ref name="나"></ref>  
다중 버전 동시성 제어(MVCC: Multi Version Concurrency Control)란 하이퍼 테이블이 가지고 있는 기능 중 하나로 수정된 번호로 자동으로 할당된 타임 스탬프를 사용한다.<ref>박기현, 〈[https://terms.naver.com/entry.nhn?docId=2271946&cid=51207&categoryId=51207 동시성 제어]〉, 《데이터 통신과 컴퓨터 네트워크》, 한빛아카데미(주), 2013-09-10</ref>  
 
  
=== 데이터 모델 ===
+
;확장성
하이퍼 테이블은 일련의 관련 열을 사용한다.
+
하이퍼테이블(Hypertable)은 기존 관계형 데이터베이스 관리 시스템(RDBMS)에서 잘 처리되지 않는 문제인 확장 성 문제를 해결하기 위해 설계되었다. 데이터 세트를 샤드 로 분할하여 분산 RDBMS 시스템을 설계 할 수 있지만 이 솔루션에는 엄청난 엔지니어링 노력이 필요하며 핵심 데이터베이스 엔진이 확장 성을 위해 설계되지 않았기 때문에 결과 시스템에는 내재적 인 약점이 있다. Hypertable은 확장 성 요구 사항을 충족하기 위해 구글(Google)에서 개발 한 설계를 기반으로하며 다른 노에스큐엘(NoSQL) 솔루션보다 확장 문제를 더 잘 해결한다.<ref name='다'>하이퍼테이블 공식홈페이지 - https://hypertable.com/why_hypertable/</ref>
  
=== 쿼리 인터페이스 ===
+
;바용 절감
하이퍼 테이블은 테이블을 생성하고 수정 쿼리하기 위한 HQL(Hypertable Query Language)제공한다. 이것을 사용해서 관리 명령을 호출할 수도 있다. HQL은 하이퍼 테이블 명령 줄 인터페이스(htshell), Thrift API 메소드 하이퍼 테이블로 해석할 수 있다.
+
하이퍼테이블(Hypertable)은 최대의 효율성과 최적의 성능을 위해 설계 및 구현되었다. 가비지 수집 및 런타임 해석의 성능 및 안정성 비용을 발생시키지 않는 컴파일 된 언어로 구현하도록 선택함으로써 Hypertable은 일부 하드웨어에서 동등한 데이터베이스 용량을 제공 할 수 있다. 이는 더 적은 장비, 더 적은 전력 소비 및 더 적은 데이터 센터 공간을 의미한다.<ref name="다"></ref>
 +
 
 +
;공연
 +
하이퍼테이블(Hypertable)의 고효율 설계 및 구현의 또 다른 이점은 더 나은 성능에서 얻을 수 있는 모든 이점을 제공한다는 것이다. 라이브 애플리케이션의 경우 Hypertable은 전체 요청 지연 시간을 줄여 훨씬 더 응답 성이 뛰어난 사용자 경험을 제공하는 데 도움이 될 수 있다. 오프라인 애플리케이션의 경우 더 높은 처리량이 달성되어 주어진 시간 동안 더 많은 작업을 수행 할 수 있다.<ref name="다"></ref>
 +
 
 +
;깨끗한 의미
 +
하이퍼테이블(Hypertable)은 일관된 데이터베이스(Database)이다. 확장 가능한 대부분의 노에스큐엘(NoSQL) 데이터베이스 제품은 최종 일관성 의 개념을 중심으로 설계되어 데이터베이스를 추론하기가 더 어렵다. 궁극적으로 일관된 데이터베이스에는 복잡한 구문 또는 의미 조정자가 필요하며 일부 상황에서는 데이터가 손실 될 수도 있다. 응용 프로그램이 Hypertable에 데이터를 쓰고 성공 응답을 받으면 수정 사항이 지속되고 항상 후속 작업에 반영된다.<ref name="다"></ref>
 +
 
 +
=== 시스템 구성 요소 ===
 +
[[파일:시스템 구성 요소.png|썸네일|400픽셀|시스템 구성 요소]]
 +
 
 +
;초공간
 +
이것은 우리 시스템의 하이퍼스페이스(Hyperspace)와 동일하다. 하이퍼스페이스(또는 Chubby)는 소량의 메타 데이터를 저장하기위한 파일 시스템을 제공하는 서비스이다. 또한 독점 또는 공유 잠금에서 잠금 관리자 역할을하며 모든 파일 또는 디렉토리에서 획득한다. 단일 서버로 구현되지만 가까운 장래에 분산되고 고가용성이 될 것이다. 구글(Google)은 하이퍼스페이스를 "모든 분산 데이터 구조의 뿌리"라고 부르며이 시스템을 생각하는 좋은 방법이다.<ref name='가'> 〈[https://www.toptechbox.com/p/hypertable-tutorials.html HyperTable이란 무엇입니까?]〉, 《탑텍박스》</ref>
 +
 
 +
;범위 서버
 +
테이블(Table)은 연속된 행 범위 세트로 구분되며 각 범위는 범위 서버에 의해 관리된다. 처음에 각 테이블은 전체 행 키 공간에 걸쳐있는 단일 범위로 구성된다. 테이블이 데이터로 채워지면 범위는 결국 크기 임계 값 (기본값은 200MB)을 초과하고 중간 행 키를 분할 지점으로 사용하여 두 범위로 분할된다. 범위 중 하나는 원래 범위를 보유한 동일한 범위 서버에 유지되고 다른 범위는 마스터에 의해 다른 범위 서버에 재 할당된다. 이 분할 프로세스는 계속 증가함에 따라 모든 범위에 대해 계속된다. 각 범위 서버는 자신이 담당하는 범위에 대한 테이블 데이터의 모든 읽기 및 쓰기를 처리한다. 범위 서버는 메모리에 업데이트를 저장한 후 셀카체(CellCache)라고합니다. 주기적으로 CellCache는 셀스토어(CellStore)라고하는 특별히 포맷 된 파일의 디스크로 플러시된다. 액세스 그룹의 데이터를 스캔하려면 범위 서버가 액세스 그룹에 대한 CellCache 및 모든 CellStore의 병합을 수행해야한다.<ref name="가"></ref>
 +
 
 +
;석사
 +
마스터는 테이블 생성 및 삭제와 같은 모든 메타 작업을 처리한다. 클라이언트 데이터는 마스터를 통해 이동하지 않으므로 클라이언트가 인식하지 못하는 동안 마스터가 잠시 중단될 수 있다. 또한 마스터는 범위 서버 오류를 감지하고 필요한 경우 범위를 재할당한다. 마스터는 범위 서버 부하 분산도 담당한다. 현재 마스터 프로세스는 하나뿐이지만 시스템은 상시 대기 마스터를 허용하는 방식으로 설계되었다. <ref name="가"></ref>
 +
 
 +
;DFS 브로커
 +
Hypertable은 모든 파일 시스템에서 실행되도록 설계되었다. 이를 위해 시스템은 DFS 브로커라고하는 것을 통해 파일 시스템에 대한 인터페이스를 추상화했다. DFS 브로커는 표준화 된 파일 시스템 프로토콜 메시지를 특정 파일 시스템에 고유 한 시스템 호출로 변환하는 프로세스이다. DFS 브로커는 HDFS (hadoop), KFS 로컬용으로 개발되었다.<ref name="가"></ref>
 +
 
 +
===노에스큐엘(NoSQL)===
 +
전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과는 다르게 설계된 비관계형(non-relational) DBMS로, 대규모의 데이터를 유연하게처리할 수 있는 것이 강점이다. 노에스큐엘(NoSQL)은 테이블-컬럼과 같은 스키마가 없이, 분산 환경에서 단순 검색 및 추가 작업을 위한 키값을 최적화하고, 지연(latency)과 처리율(throughput)이 우수하다.
 +
 
 +
;분산
 +
*'''메타데이터''' : 데이터의 배치 정보가 중앙 집중적인 데이터 서버나 마스터 서버에 저장되어 있으며, 클라이언트는 데이터 연산을 위해 중앙(마스터) 서버를 경유해 실제 데이터를 처리할 서버로 접속하는 방식이다. 데이터 정보를 중앙에서 관리하기 때문에 관리가 편하며 맵리듀스와 결합하기도 용이하다. 단점으로는 중앙(마스터) 서버가 문제가 생기거나 데이터 관리 테이블에 문제가 발생하면 전체 데이터에 접근할 수가 없다. 대표적으로 빅테이블, 몽고DB 등이 이 방식을 사용한다.<ref name='바'> 〈[https://sungwookkang.com/1440 NoSQL 특징및 분류]〉, 《데이터 사이언스》, 2020-06-09</ref>
 +
 
 +
*'''피투피'''(P2P) : 별도의 메타 정보가 없으며 해시 함수를 이용해 특정 키를 서비스하는 서버를 찾는 방식. 메타 정보를 관리하는 서버가 없기 때문에 장애범위가 지역적이다. 하지만 저장된 데이터를 이용해 분석 작업을 하는 경우 메타데이터 방석보다 어렵다.<ref name="바"></ref>
 +
 
 +
;파일 저장 방식
 +
데이터 파일은 분산 파일 시스템에 저장하고, 데이터 관리 시스템에서는 논리적인 관리만 담당하는 방식은 데이터의 복제, 장애 발생 시 복제본의 재생성 등은 분산 파일 시스템에서 제공하는 기능을 이용한다. 빅테이블, 클라우데이터, HBase 등이 있다.
 +
 
 +
데이터 관리 시스템 자체적으로 데이터 파이을 저장하는 방식은 데이터 관리 시스템 자체적으로 복제, 장애 시 복구 등에 대한 기능을 담당한다. 대부분의 NoSQL 솔루션들이 이 방식을 사용한다.<ref name="바"></ref>
 +
 
 +
=== 관련 용어 ===
 +
*'''Google 파일 시스템'''(GFS) : Google 확장 가능 컴퓨팅 스택의 최하위 계층이다. 다른 파일 시스템과 매우 유사하며 파일 및 디렉토리 생성을 허용한다. 구글(Google) 파일 시스템의 주요 혁신은 확장성이 뛰어나고 가용성이 높다는 것이다. 3개의 물리적 머신에 파일 데이터를 복제하여 고가용성을 달성한다. 즉, 복제본을 보유한 머신 중 최대 2개가 손실 될 수 있으며 데이터는 계속 사용할 수 있다.  하둡(Hadoop) 은 HDFS(Hadoop Distributed File System)라는 GFS(Government Finance Statistics)의 오픈 소스 구현을 제공한다.<ref name='라'> 하이퍼테이블 공식홈페이지 - https://hypertable.com/documentation/architecture/</ref>
 +
 
 +
*'''맵리듀스'''(MapReduce) : GFS(Government Finance Statistics)에서 데이터를 효율적으로 처리하도록 설계된 병렬 계산 프레임 워크이다. 데이터가있는 시스템으로 코드를 푸시하여 코드 조각을 통해 병렬로 대량의 데이터를 실행할 수 있는 방법을 제공한다. 또한 임의의 필드를 기반으로 데이터를 재정렬하는 방법을 제공하는 최종 집계 단계도 포함된다. 하둡(Hadoop)은 맵리듀스(MapReduce)의 오픈 소스 구현을 제공한다.<ref name="라"></ref>
 +
 
 +
*'''빅테이블'''(Bigtable) : 구글(Google)의 확장 가능한 데이터베이스이다. 기본 키로 인덱싱 된 방대한 정보 테이블을 생성하는 방법을 제공한다. 이 글을 쓰는 시점에서 Google 웹 서비스의 90 % 이상이 검색, Google 어스, Google 애널리틱스, Google지도, 지메일(Gmail), 오르컷(orkut), 유튜브(YouTube) 등을 포함하여 Bigtable을 기반으로 구축되었다. 하이퍼테이블(Hypertable)은 Bigtable의 고성능 오픈 소스 구현이다.<ref name="라"></ref>
 +
 
 +
*'''쏘살'''(Sawzall) : 전체 스택의 맨 위에있는 런타임 스크립팅 언어로, 대규모 데이터 세트에 대해 쉽게 표현 가능한 방식으로 통계 분석을 수행 할 수 있는 기능을 제공한다. 하이브(Hive) 피그(Pig)와 같은 오픈 소스 프로젝트는 유사한 기능을 제공한다.<ref name="라"></ref>
 +
 
 +
*'''하이퍼스페이스'''(Hyperspace) : 구글(Google)의 츄비(Chubby) 서비스에 해당하는 하이퍼테이블(Hypertable) 아다. Hyperspace는 고 가용성 잠금 관리자이며 소량의 메타 데이터를 저장하기 위한 파일 시스템을 제공한다. 생성 된 파일이나 디렉토리에서 배타적 또는 공유 잠금을 얻을 수 있다. 고가용성은 서로 다른 물리적 시스템에서 실행되는 복제본이있는 분산 구성에서 실행함으로써 달성된다. 일관성은 분산 된 합의 프로토콜을 통해 달성된다. Google은 Chubby를 "모든 분산 데이터 구조의 뿌리"라고 부르며 이 시스템을 생각하는 좋은 방법이다.<ref name="라"></ref>
 +
 
 +
*'''마스터''' : 마스터는 테이블 생성 및 삭제와 같은 모든 메타 작업을 처리한다. 클라이언트 데이터는 마스터를 통해 이동하지 않으므로 클라이언트가 인식하지 못하는 동안 마스터가 잠시 중단 될 수 있다. 마스터는 또한 범위 서버 오류를 감지하고 필요한 경우 범위를 다시 할당한다. 마스터는 범위 서버 부하 분산도 담당한다. 단일 마스터 프로세스가 있지만 상시 대기를 통해 고가용성이 달성된다.<ref name="라"></ref>
 +
 
 +
*'''범위 서버''' : 범위 서버는 테이블 데이터 범위를 관리하고 모든 데이터 읽기 및 쓰기를 처리한다. 잠재적으로 수천 개의 범위를 관리 할 수 ​​있으며 자신이 관리하는 범위 집합이나 자신이 속한 테이블에 구애받지 않는다. 범위는 한 범위 서버에서 다른 범위 서버로 자유롭게 이동할 수 있으며, 이는 대부분 마스터에 의해 조정된다.<ref name="라"></ref>
 +
 
 +
*'''에프에스 브로커'''(FS Broker) : 하이퍼테이블(Hypertable)은 모든 파일 시스템에서 실행할 수 있다. 이를 위해 시스템은 파일 시스템 (FS) 브로커 프로세스를 통해 모든 파일 시스템 요청을 전송하여 파일 시스템에 대한 인터페이스를 추상화했다. FS(FileSystem) 브로커는 정규화 된 파일 시스템 인터페이스를 제공하고 정규화 된 파일 시스템 요청을 원시 파일 시스템 요청으로 또는 그 반대로 변환한다. FS 브로커는 HDFS(Hadoop Distributed File System)용으로 개발되었다.<ref name="라"></ref>
 +
 
 +
*'''절약 브로커'''(ThriftBroker) : 하이퍼테이블(Hypertable)과 통신하기 위해 고급 언어로 작성된 애플리케이션에 대한 인터페이스를 제공한다. ThriftBroker는 아파치 절약(Apache Thrift)로 구현되며 자바(Java), 피에이치피(PHP), 루비(Ruby), 파이썬(Python0, 퍼릴(Perl) 씨플플(C ++)로 작성된 애플리케이션에 대한 바인딩을 제공한다.<ref name="라"></ref>
 +
 
 +
*'''하둡'''(Hadoop) : 대용량 데이터를 분산 처리할 있는 자바기반의 오픈소스 프레임워크이다. 구글이 나오면서 굉장히 많은 데이터를 가져온 사례가 있었다. 구글에서의 데이터들이 빅데이터가 되었으나, 빅데이터를 분석하고 처리하는 프레임워크가 존재하지 않았다. 그래서 구글이 생각한게 데이터를 모아서 처리할 수 있는 프레임워크가 필요하다고 생각했고, 실제 빅데이터를 처리할 수 있는 프레임워크를 만들었으나, 구글은 그 소스를 오픈하지 않았다. 반면, 아파치는 전세계 공개 소프트웨어를 생산하는 비영리 조직이고 구글의 방식을 따라 아파치 그룹에서 제공한 오픈소스 프로젝트이다.<ref name='마'>JEM, 〈[http://www.incodom.kr/%ED%95%98%EB%91%A1 하둡]〉, 《인코덤》, 2017-11-30</ref>
 +
 +
*'''HDFS'''(Hadoop Distributed File System) : 수십 테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 파일 시스템이다. 또한, 저사양의 서버를 이용해서 스토리지를 구성할 수 있어 기존의 대용량 파일시스템(NAS, DAS, SAN 등)에 비해 장점을 가진다. HDFS는 블록 구조의 파일 시스템이다. 파일을 특정크기의 블록으로 나누어 분산된 서버에 저장된다. 블록크기는 64MB에서 하둡 2.0부터는 128M로 증가되었다.<ref name="마"></ref>
 +
 
 +
=== 지원 ===
 +
;운영 체제
 +
*'''리눅스'''(Linux) : 리누스 토르발스가 커뮤니티 주체로 개발한 컴퓨터 운영 체제이다. 리눅스(Linux)는 [[유닉스]](UNIX)운영체제를 기반으로 만들어진 운영체제다. 리눅스(Linux)는 유닉스(UNIX)와 마찬가지로 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)이다. 리눅스의 원형이 되는 UNIX가 애초부터 통신 네트워크를 지향하여 설계된 것처럼 리눅스 역시 서버로 작동하는데 최적화되어있다. 고로 서버에서 사용되는 운영체제로 많이 사용되고 있다.<ref>코딩팩토리, 〈[https://coding-factory.tistory.com/318 (Linux) 리눅스란 무엇인가? (센토스 VS 우분투)]〉,《티스토리 》, 2019-02-18</ref>
 
   
 
   
=== 스토리지 아키텍쳐 ===
+
*'''오에스 엑스'''(OS X) : 애플이 제작한 운영 체제이다. 2002년 4월부터 모든 매킨토시 컴퓨터에 적용되고 있다. 이 운영 체제는 1984년 1월부터 애플 컴퓨터를 이끌어 왔던 맥 OS의 마지막 고전 버전인 맥 오에스 9의 뒤를 잇는다. OS X이라는 이 운영 체제의 예전 이름에 들어있는 "X"라는 글자는 알파벳 "X"을 뜻하는 것이 아니라, 매킨토시의 10번째 운영 체제를 뜻하는 것이기 때문에, 로마 숫자 "10"을 뜻하는 것이다.[2] 이 운영 체제는 애플이 1996년 12월에 인수한[3] NeXT의 기술력으로 만들어졌으며 유닉스에 기반을 하고 있다.[4] 2011년 7월 20일에 OS X 라이언이 출시되었다. 기존에도 줄여서 OS X이라고 많이 표현했으나, OS X 마운틴 라이언 공개와 함께 기존 맥 OS X (Mac OS X)에서 맥 (Mac)이라는 단어가 공식적으로 제거되었다.<ref>macOS 위키백과 - https://ko.wikipedia.org/wiki/MacOS</ref>
디스크 지향으로 하이퍼 테이블은 어떠한 파일 시스템에서도 실행할 수 있다. 파일 시스템(FS) 브로커는 모든 파일 시스템 요청을 처리한다. FS 브로커들은 현재 HDFS, MapR, Ceph, KFS 및 현지인을 지원한다.
+
 
 +
*'''윈도우'''(Windows) : 마이크로소프트사가 개발한 운영체제로 애플이 개인용 컴퓨터에 처음으로 도입한 그래픽 사용자 인터페이스(GUI) 운영 체제인 맥 OS에 대항하여, 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다. 현재 전 세계 90%의 개인용 컴퓨터에서 쓰고 있으며, 서버용 운영 체제로도 점차 영역을 넓혀 나가고 있다. 윈도우 운영 체제의 경우 큰 시장 점유율을 차지하고 있는 까닭에 일반 사용자들에게 매우 익숙할 뿐 아니라 호환되는 유명한 응용 프로그램이 많다는 장점을 지니고 있지만, 그만큼 보안 문제에서는 취약한 부분이 많은 운영 체제로 인식되기도 한다. 하지만 사실 보안 문제에선 취약한 부분이 다른 운영체제와 차이 날 정도로 독보적으로 많은 것은 아니기에 오늘날에 PC에서 가장 많이 사용하는 운영체제로 자리매김하고 있다.<ref>코딩팩토리, 〈[https://coding-factory.tistory.com/317 (Windows) 윈도우이란 무엇인가? 윈도우의 여러가지 특징들]〉,《티스토리 》, 2019-02-17</ref>
 +
 
 +
;프로그래밍 언어
 +
*'''[[C++]]''' : [[C언어]]를 부분집합으로 갖고 객체 지향 및 일반화 프로그래밍과 같은 멀티 패러다임을 지원하는 프로그래밍 언어이다. 즉, C언어의 문법과 기능을 모두 사용할 수 있다. 다만, 오래된 표준은 부분집합으로 갖지 않았던 적도 있다. 1979년에 C언어에서 직접적으로 파생된 C with Classes라는 이름의 언어로 시작되었다가, 1983년에 지금의 이름을 갖게 되었다. 비아르네 스트로우스트루프(Bjarne Stroustrup)가 C언어를 바탕으로 만들었다. C 계열 언어에서 "++"라는 것은 1을 더해서 원래 변수에 대입하라는 뜻이다. C는 B 언어를 계승한다는 의미에서 C가 되었는데 왜 C++가 D가 아니라 C++가 되었냐 하면 C 언어를 거의 그대로 두고 필요한 만큼만 향상시켰기 때문이다. 그래서 C에서 되는 게 C++에서도 된다. 비슷한 이름인 C#과의 차이도 이러한 점에서 나타난다.<ref>씨플플 나무위키 - https://namu.wiki/w/C%2B%2B</ref>
 +
 
 +
*'''[[자바]]'''(Java) : 썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어이다. 창시자는 제임스 고슬링(James Gosling)이다. 2010년에 오라클이 썬 마이크로시스템즈을 인수하면서 Java의 저작권을 소유하였다. 현재는 OpenJDK는 GPL2이나 오라클이 배포하는 Oracle JDK는 상업라이선스로 오라클이 돈독 올랐는지 2019년 1월부터 유료화 정책을 강화하고 있다. Java EE는 이클립스 재단의 소유이다. 자바(Java) 언어는 J2SE 1.4부터는 Java Community Process (JCP)에서 개발을 주도하고 있다. C#과 문법적 성향이 굉장히 비슷하며, 그에 비해 2019년 Q3에서 가장 많이 이용하는 언어로 뽑혔다. 자바스크립트(Javascript)와는 다르다.<ref>자바 나무위키 - https://namu.wiki/w/Java</ref>
 +
 
 +
*'''[[펄]]'''(Perl) : 래리 월이 만든 인터프리터 방식의 프로그래밍 언어 혹은 그 인터프리터 소프트웨어를 가리킨다. 펄은 고급 언어, 범용 언어, 인터프리터 언어, 동적 언어 범주에 속한다. 이 계열의 언어에는 펄 5와 펄 6이 있다.<ref>펄 위키백과 - https://ko.wikipedia.org/wiki/%ED%8E%84</ref>
 +
 
 +
*'''[[PHP]]''' : 프로그래밍 언어의 일종이다. 원래는 동적 웹 페이지를 만들기 위해 설계되었으며 이를 구현하기 위해 PHP로 작성된 코드를 HTML 소스 문서 안에 넣으면 PHP 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성한다. 근래에는 PHP 코드와 HTML을 별도 파일로 분리하여 작성하는 경우가 일반적이며, PHP 또한 웹서버가 아닌 php-fpm(PHP FastCGI Process Manager)을 통해 실행하는 경우가 늘어나고 있다.<ref>피에이치피 위키백과 - https://ko.wikipedia.org/wiki/PHP</ref>
  
=== 지원 언어 ===
+
*'''[[파이썬]]'''(Python) : 1991년 프로그래머인 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디에서 따온 것이다. 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있다. C언어로 구현된 싸이썬(Cython) 구현이 사실상의 표준이다.<ref>파이썬 위키백과 - https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC</ref>
[[SQL]]과 비슷한 HQL이라는 명령어를 지원한다. C++ API도 제공하며 다음 언어를 모두 지원한다. C ++, Java, Perl, PHP, Python, Ruby
 
  
== 버전 ==
+
*'''[[루비]]'''(Ruby) :  마츠모토 유키히로가 개발한 동적 객체 지향 스크립트 프로그래밍 언어이다. 루비는 순수 객체 지향 언어라, 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체이다. 기능에는 클래스 정의, 가비지 컬렉션, 강력한 정규 표현식 처리, 다중 스레드, 예외 처리, 반복, 클로저, 연산자 오버로드 등이 있다.<ref>루비 위키백과 - https://ko.wikipedia.org/wiki/%EB%A3%A8%EB%B9%84_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)</ref>
현재 버전은 2016년 3월에 릴리즈한 0.9.8.11이다.
 
  
 
== 현황 ==
 
== 현황 ==
이 프로젝트의 설계 목표 중 가장 중요한 것은 최적의 성능으로 하이퍼 테이블이 Hadoop DFS와 같은 기존의 분산 파일 시스템에서 실행되도록 설계되었다. 설계자는 이를 위해 자바보다는 시스템의 전체적인 부분을 전적으로 C++으로 만들었으며 여러 언어와 호환된다. 그러나 2016년 3월부터 추가 개발을 중단하면서 DB 엔진 순위에서 제외되었다. 더욱이 관련 정보도 찾기 힘들다.
+
이 프로젝트의 설계 목표 중 가장 중요한 것은 최적의 성능으로 하이퍼테이블이 하둡(Hadoop) DFS와 같은 기존의 분산 파일 시스템에서 실행되도록 설계되었다. 설계자는 이를 위해 자바보다는 시스템의 전체적인 부분을 전적으로 C++으로 만들었으며 여러 언어와 호환된다. 그러나 2016년 3월부터 추가 개발을 중단하면서 DB 엔진 순위에서 제외되었다. 더욱이 관련 정보도 찾기 힘들다.
  
 
{{각주}}
 
{{각주}}
  
 
== 참고자료 ==
 
== 참고자료 ==
* 한국정보통신기술협회 - http://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=050536-3
+
* 〈[https://www.predictiveanalyticstoday.com/hypertable/ 하이퍼 테이블]〉, 《피에이티 리처치》
* DB-ENGINES - https://db-engines.com/en/system/Hypertable
+
* 〈[https://dbdb.io/db/hypertable 하이퍼 테이블]〉, 《데이터베이스 데이터베이스》
* 거울속 항해일지, 〈[https://chess72.tistory.com/139 hypertable 알아볼까?]〉, 《티스토리 블로그》, 2012-04-07
+
하이퍼테이블 공식홈페이지 - https://hypertable.com/why_hypertable/  
* 개발노트, 〈[https://firedev.tistory.com/entry/NoSQL-%EC%A2%85%EB%A5%98-%EC%A0%95%EB%A6%AC (NoSQL) 종류 정리]〉, 《티스토리 블로그》, 2014-05-19
+
* 〈[https://www.toptechbox.com/p/hypertable-tutorials.html HyperTable이란 무엇입니까?]〉, 《탑텍박스》
* 삼성SDS 커뮤니케이션팀, 〈[https://www.samsungsds.com/global/ko/news/story/1203248_2919.html SMAC의 대량 데이터 처리를 위한 DBMS기술!]〉, 《SAMSUNG SDS》, 2015-06-03
+
* 〈[https://sungwookkang.com/1440 NoSQL 특징및 분류]〉, 《데이터 사이언스》, 2020-06-09
* Doug Judd, 〈[https://qconsf.com/sf2008/sf2008/presentation/Hypertable%2B-%2BAn%2BOpen%2BSource%2C%2BHigh%2BPerformance%2C%2BScalable%2BDatabase.html Hypertable - 오픈 소스, 고성능, 확장성있는 데이터베이스]〉, 《QCon》, 2015-10-15
+
* 하이퍼테이블 공식홈페이지 - https://hypertable.com/documentation/architecture/
* 카네기 멜런 데이터 베이스 그룹, 〈[https://dbdb.io/db/hypertable Hypertable]〉, 《Database of Databases》, 2018-12-12
+
*  JEM, 〈[http://www.incodom.kr/%ED%95%98%EB%91%A1 하둡]〉, 《인코덤》, 2017-11-30</ref>
 
+
* 코딩팩토리, 〈[https://coding-factory.tistory.com/318 (Linux) 리눅스란 무엇인가? (센토스 VS 우분투)]〉,《티스토리 》, 2019-02-18
 +
*  macOS 위키백과 - https://ko.wikipedia.org/wiki/MacOS
 +
*  코딩팩토리, 〈[https://coding-factory.tistory.com/317 (Windows) 윈도우이란 무엇인가? 윈도우의 여러가지 특징들]〉,《티스토리 》, 2019-02-17
 +
* 씨플플 나무위키 - https://namu.wiki/w/C%2B%2B
 +
*  자바 나무위키 - https://namu.wiki/w/Java
 +
*  펄 위키백과 - https://ko.wikipedia.org/wiki/%ED%8E%84
 +
*  피에이치피 위키백과 - https://ko.wikipedia.org/wiki/PHP
 +
*  파이썬 위키백과 - https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC
 +
* 루비 위키백과 - https://ko.wikipedia.org/wiki/%EB%A3%A8%EB%B9%84_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)
 +
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[데이터베이스 관리 시스템]]
 
* [[데이터베이스 관리 시스템]]

2020년 8월 11일 (화) 09:30 기준 최신판

하이퍼테이블(Hypertable)
하이퍼테이블(Hypertable)

하이퍼테이블(Hypertable)이란 구글(Google)의 대규모 확장형 데이터베이스인 빅테이블을 원형으로 한 오픈소스 분산형 데이터베이스이다. 비정형 데이터를 분석하기 위한 노에스큐엘(NoSQL)의 일종이다. 높은 성능과 편의성을 가지고 있다.

개요[편집]

하이퍼테이블(Hypertable)은 비관계형 데이터베이스노에스큐엘(NoSQL) 중 빅테이블을 모델로 한 오픈소스 데이터베이스로 분산파일 시스템 위에서 실행된다. 어러가지 운영체제와 언어을 지원하고 C++을 이용하여 개발되었다. 스토리지 아키텍처는 디스크를 지향하며 외국 키는 지원하지 않는다. 또한 시스템을 기본클러스터에 간편히 추가하여 원활하고 경제적으로 크기를 페타바이트 단위로 확장할 수 있다. 하이퍼테이블(Hypertable)은 구글의(Google)의 독점적이고 대규모로 확장 가능한 데이터베이스인 빅테이블(Bigtable)을 모델로 한 대규모 확장 가능한 고성능 오픈 소스 데이터베이스이다. 하이퍼테이블은 기존 관계형 데이터베이스 관리 시스템(RDBMS)에서 잘 처리되지 않는 확장성 문제를 해결하기 위한 목적으로 설계되었다. 하이퍼테이블은 경쟁 제품에 비해 최대의 효율성과 우수한 성능을 제공하여 비용을 크게 절감한다. 하이퍼테이블의 테이블은 단일 기본 키인 행 키로 정렬 된 방대한 데이터 테이블로 생각할 수 있다. 관계형 데이터베이스와 마찬가지로 하이퍼테이블은 데이터를 정보 테이블로 나타낸다. 테이블의 각 행에는 관련 정보가 포함된 셀이 있으며 각 셀은 부분적으로 행 키와 열 이름으로 식별된다. 테이블이 생성될 때 최대 255개의 열 이름의 대한 자원이 제공된다. 하이퍼테이블은 세 번째 차원인 인 타임 스탬프를 추가하여 기존의 2차원 테이블 모델을 확장한다. 이 타임 스탬프 차원은 각 테이블 셀의 서로 다른 버전을 나타내는 것으로 생각할 수 있다. 하이퍼테이블은 하둡(Hadoop)위에 매끄럽게 오버레이되어 빅데이터 애플리케이션을 위한 확장 가능한 강력한 데이터베이스 인프라를 제공한다.[1]

로드맵[편집]

  • 2008년 : 중국의 Zvents 사에서 구글빅테이블을 기반으로 한 오픈소스 데이터베이스인 하이퍼테이블을 만들었다.
  • 2009년 01월 : 중국의 검색엔진 바이두가 프로젝트의 스폰서가 됐다.
  • 2012년 03월 22일 : 하이퍼테이블에서 보조 인덱스를 지원하였다.
  • 2013년 02월 21일 : 하이퍼테이블 버전 0.9.7.0 이 출시되었다.
  • 2014년 06월 23일 ~ 2016년 3월 14일 : 하이퍼테이블 버전 0.9.8.0 ~ 0.9.8.11 이 출시되었다.
  • 2016년 03월 : 개발을 중단했으며 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]

노에스큐엘(NoSQL)[편집]

전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과는 다르게 설계된 비관계형(non-relational) DBMS로, 대규모의 데이터를 유연하게처리할 수 있는 것이 강점이다. 노에스큐엘(NoSQL)은 테이블-컬럼과 같은 스키마가 없이, 분산 환경에서 단순 검색 및 추가 작업을 위한 키값을 최적화하고, 지연(latency)과 처리율(throughput)이 우수하다.

분산
  • 메타데이터 : 데이터의 배치 정보가 중앙 집중적인 데이터 서버나 마스터 서버에 저장되어 있으며, 클라이언트는 데이터 연산을 위해 중앙(마스터) 서버를 경유해 실제 데이터를 처리할 서버로 접속하는 방식이다. 데이터 정보를 중앙에서 관리하기 때문에 관리가 편하며 맵리듀스와 결합하기도 용이하다. 단점으로는 중앙(마스터) 서버가 문제가 생기거나 데이터 관리 테이블에 문제가 발생하면 전체 데이터에 접근할 수가 없다. 대표적으로 빅테이블, 몽고DB 등이 이 방식을 사용한다.[5]
  • 피투피(P2P) : 별도의 메타 정보가 없으며 해시 함수를 이용해 특정 키를 서비스하는 서버를 찾는 방식. 메타 정보를 관리하는 서버가 없기 때문에 장애범위가 지역적이다. 하지만 저장된 데이터를 이용해 분석 작업을 하는 경우 메타데이터 방석보다 어렵다.[5]
파일 저장 방식

데이터 파일은 분산 파일 시스템에 저장하고, 데이터 관리 시스템에서는 논리적인 관리만 담당하는 방식은 데이터의 복제, 장애 발생 시 복제본의 재생성 등은 분산 파일 시스템에서 제공하는 기능을 이용한다. 빅테이블, 클라우데이터, HBase 등이 있다.

데이터 관리 시스템 자체적으로 데이터 파이을 저장하는 방식은 데이터 관리 시스템 자체적으로 복제, 장애 시 복구 등에 대한 기능을 담당한다. 대부분의 NoSQL 솔루션들이 이 방식을 사용한다.[5]

관련 용어[편집]

  • Google 파일 시스템(GFS) : Google 확장 가능 컴퓨팅 스택의 최하위 계층이다. 다른 파일 시스템과 매우 유사하며 파일 및 디렉토리 생성을 허용한다. 구글(Google) 파일 시스템의 주요 혁신은 확장성이 뛰어나고 가용성이 높다는 것이다. 3개의 물리적 머신에 파일 데이터를 복제하여 고가용성을 달성한다. 즉, 복제본을 보유한 머신 중 최대 2개가 손실 될 수 있으며 데이터는 계속 사용할 수 있다. 하둡(Hadoop) 은 HDFS(Hadoop Distributed File System)라는 GFS(Government Finance Statistics)의 오픈 소스 구현을 제공한다.[6]
  • 맵리듀스(MapReduce) : GFS(Government Finance Statistics)에서 데이터를 효율적으로 처리하도록 설계된 병렬 계산 프레임 워크이다. 데이터가있는 시스템으로 코드를 푸시하여 코드 조각을 통해 병렬로 대량의 데이터를 실행할 수 있는 방법을 제공한다. 또한 임의의 필드를 기반으로 데이터를 재정렬하는 방법을 제공하는 최종 집계 단계도 포함된다. 하둡(Hadoop)은 맵리듀스(MapReduce)의 오픈 소스 구현을 제공한다.[6]
  • 빅테이블(Bigtable) : 구글(Google)의 확장 가능한 데이터베이스이다. 기본 키로 인덱싱 된 방대한 정보 테이블을 생성하는 방법을 제공한다. 이 글을 쓰는 시점에서 Google 웹 서비스의 90 % 이상이 검색, Google 어스, Google 애널리틱스, Google지도, 지메일(Gmail), 오르컷(orkut), 유튜브(YouTube) 등을 포함하여 Bigtable을 기반으로 구축되었다. 하이퍼테이블(Hypertable)은 Bigtable의 고성능 오픈 소스 구현이다.[6]
  • 쏘살(Sawzall) : 전체 스택의 맨 위에있는 런타임 스크립팅 언어로, 대규모 데이터 세트에 대해 쉽게 표현 가능한 방식으로 통계 분석을 수행 할 수 있는 기능을 제공한다. 하이브(Hive) 및 피그(Pig)와 같은 오픈 소스 프로젝트는 유사한 기능을 제공한다.[6]
  • 하이퍼스페이스(Hyperspace) : 구글(Google)의 츄비(Chubby) 서비스에 해당하는 하이퍼테이블(Hypertable) 아다. Hyperspace는 고 가용성 잠금 관리자이며 소량의 메타 데이터를 저장하기 위한 파일 시스템을 제공한다. 생성 된 파일이나 디렉토리에서 배타적 또는 공유 잠금을 얻을 수 있다. 고가용성은 서로 다른 물리적 시스템에서 실행되는 복제본이있는 분산 구성에서 실행함으로써 달성된다. 일관성은 분산 된 합의 프로토콜을 통해 달성된다. Google은 Chubby를 "모든 분산 데이터 구조의 뿌리"라고 부르며 이 시스템을 생각하는 좋은 방법이다.[6]
  • 마스터 : 마스터는 테이블 생성 및 삭제와 같은 모든 메타 작업을 처리한다. 클라이언트 데이터는 마스터를 통해 이동하지 않으므로 클라이언트가 인식하지 못하는 동안 마스터가 잠시 중단 될 수 있다. 마스터는 또한 범위 서버 오류를 감지하고 필요한 경우 범위를 다시 할당한다. 마스터는 범위 서버 부하 분산도 담당한다. 단일 마스터 프로세스가 있지만 상시 대기를 통해 고가용성이 달성된다.[6]
  • 범위 서버 : 범위 서버는 테이블 데이터 범위를 관리하고 모든 데이터 읽기 및 쓰기를 처리한다. 잠재적으로 수천 개의 범위를 관리 할 수 ​​있으며 자신이 관리하는 범위 집합이나 자신이 속한 테이블에 구애받지 않는다. 범위는 한 범위 서버에서 다른 범위 서버로 자유롭게 이동할 수 있으며, 이는 대부분 마스터에 의해 조정된다.[6]
  • 에프에스 브로커(FS Broker) : 하이퍼테이블(Hypertable)은 모든 파일 시스템에서 실행할 수 있다. 이를 위해 시스템은 파일 시스템 (FS) 브로커 프로세스를 통해 모든 파일 시스템 요청을 전송하여 파일 시스템에 대한 인터페이스를 추상화했다. FS(FileSystem) 브로커는 정규화 된 파일 시스템 인터페이스를 제공하고 정규화 된 파일 시스템 요청을 원시 파일 시스템 요청으로 또는 그 반대로 변환한다. FS 브로커는 HDFS(Hadoop Distributed File System)용으로 개발되었다.[6]
  • 절약 브로커(ThriftBroker) : 하이퍼테이블(Hypertable)과 통신하기 위해 고급 언어로 작성된 애플리케이션에 대한 인터페이스를 제공한다. ThriftBroker는 아파치 절약(Apache Thrift)로 구현되며 자바(Java), 피에이치피(PHP), 루비(Ruby), 파이썬(Python0, 퍼릴(Perl) 및 씨플플(C ++)로 작성된 애플리케이션에 대한 바인딩을 제공한다.[6]
  • 하둡(Hadoop) : 대용량 데이터를 분산 처리할 수 있는 자바기반의 오픈소스 프레임워크이다. 구글이 나오면서 굉장히 많은 데이터를 가져온 사례가 있었다. 구글에서의 데이터들이 빅데이터가 되었으나, 빅데이터를 분석하고 처리하는 프레임워크가 존재하지 않았다. 그래서 구글이 생각한게 데이터를 모아서 처리할 수 있는 프레임워크가 필요하다고 생각했고, 실제 빅데이터를 처리할 수 있는 프레임워크를 만들었으나, 구글은 그 소스를 오픈하지 않았다. 반면, 아파치는 전세계 공개 소프트웨어를 생산하는 비영리 조직이고 구글의 방식을 따라 아파치 그룹에서 제공한 오픈소스 프로젝트이다.[7]
  • HDFS(Hadoop Distributed File System) : 수십 테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 파일 시스템이다. 또한, 저사양의 서버를 이용해서 스토리지를 구성할 수 있어 기존의 대용량 파일시스템(NAS, DAS, SAN 등)에 비해 장점을 가진다. HDFS는 블록 구조의 파일 시스템이다. 파일을 특정크기의 블록으로 나누어 분산된 서버에 저장된다. 블록크기는 64MB에서 하둡 2.0부터는 128M로 증가되었다.[7]

지원[편집]

운영 체제
  • 리눅스(Linux) : 리누스 토르발스가 커뮤니티 주체로 개발한 컴퓨터 운영 체제이다. 리눅스(Linux)는 유닉스(UNIX)운영체제를 기반으로 만들어진 운영체제다. 리눅스(Linux)는 유닉스(UNIX)와 마찬가지로 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)이다. 리눅스의 원형이 되는 UNIX가 애초부터 통신 네트워크를 지향하여 설계된 것처럼 리눅스 역시 서버로 작동하는데 최적화되어있다. 고로 서버에서 사용되는 운영체제로 많이 사용되고 있다.[8]
  • 오에스 엑스(OS X) : 애플이 제작한 운영 체제이다. 2002년 4월부터 모든 매킨토시 컴퓨터에 적용되고 있다. 이 운영 체제는 1984년 1월부터 애플 컴퓨터를 이끌어 왔던 맥 OS의 마지막 고전 버전인 맥 오에스 9의 뒤를 잇는다. OS X이라는 이 운영 체제의 예전 이름에 들어있는 "X"라는 글자는 알파벳 "X"을 뜻하는 것이 아니라, 매킨토시의 10번째 운영 체제를 뜻하는 것이기 때문에, 로마 숫자 "10"을 뜻하는 것이다.[2] 이 운영 체제는 애플이 1996년 12월에 인수한[3] NeXT의 기술력으로 만들어졌으며 유닉스에 기반을 하고 있다.[4] 2011년 7월 20일에 OS X 라이언이 출시되었다. 기존에도 줄여서 OS X이라고 많이 표현했으나, OS X 마운틴 라이언 공개와 함께 기존 맥 OS X (Mac OS X)에서 맥 (Mac)이라는 단어가 공식적으로 제거되었다.[9]
  • 윈도우(Windows) : 마이크로소프트사가 개발한 운영체제로 애플이 개인용 컴퓨터에 처음으로 도입한 그래픽 사용자 인터페이스(GUI) 운영 체제인 맥 OS에 대항하여, 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다. 현재 전 세계 90%의 개인용 컴퓨터에서 쓰고 있으며, 서버용 운영 체제로도 점차 영역을 넓혀 나가고 있다. 윈도우 운영 체제의 경우 큰 시장 점유율을 차지하고 있는 까닭에 일반 사용자들에게 매우 익숙할 뿐 아니라 호환되는 유명한 응용 프로그램이 많다는 장점을 지니고 있지만, 그만큼 보안 문제에서는 취약한 부분이 많은 운영 체제로 인식되기도 한다. 하지만 사실 보안 문제에선 취약한 부분이 다른 운영체제와 차이 날 정도로 독보적으로 많은 것은 아니기에 오늘날에 PC에서 가장 많이 사용하는 운영체제로 자리매김하고 있다.[10]
프로그래밍 언어
  • C++ : C언어를 부분집합으로 갖고 객체 지향 및 일반화 프로그래밍과 같은 멀티 패러다임을 지원하는 프로그래밍 언어이다. 즉, C언어의 문법과 기능을 모두 사용할 수 있다. 다만, 오래된 표준은 부분집합으로 갖지 않았던 적도 있다. 1979년에 C언어에서 직접적으로 파생된 C with Classes라는 이름의 언어로 시작되었다가, 1983년에 지금의 이름을 갖게 되었다. 비아르네 스트로우스트루프(Bjarne Stroustrup)가 C언어를 바탕으로 만들었다. C 계열 언어에서 "++"라는 것은 1을 더해서 원래 변수에 대입하라는 뜻이다. C는 B 언어를 계승한다는 의미에서 C가 되었는데 왜 C++가 D가 아니라 C++가 되었냐 하면 C 언어를 거의 그대로 두고 필요한 만큼만 향상시켰기 때문이다. 그래서 C에서 되는 게 C++에서도 된다. 비슷한 이름인 C#과의 차이도 이러한 점에서 나타난다.[11]
  • 자바(Java) : 썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어이다. 창시자는 제임스 고슬링(James Gosling)이다. 2010년에 오라클이 썬 마이크로시스템즈을 인수하면서 Java의 저작권을 소유하였다. 현재는 OpenJDK는 GPL2이나 오라클이 배포하는 Oracle JDK는 상업라이선스로 오라클이 돈독 올랐는지 2019년 1월부터 유료화 정책을 강화하고 있다. Java EE는 이클립스 재단의 소유이다. 자바(Java) 언어는 J2SE 1.4부터는 Java Community Process (JCP)에서 개발을 주도하고 있다. C#과 문법적 성향이 굉장히 비슷하며, 그에 비해 2019년 Q3에서 가장 많이 이용하는 언어로 뽑혔다. 자바스크립트(Javascript)와는 다르다.[12]
  • (Perl) : 래리 월이 만든 인터프리터 방식의 프로그래밍 언어 혹은 그 인터프리터 소프트웨어를 가리킨다. 펄은 고급 언어, 범용 언어, 인터프리터 언어, 동적 언어 범주에 속한다. 이 계열의 언어에는 펄 5와 펄 6이 있다.[13]
  • PHP : 프로그래밍 언어의 일종이다. 원래는 동적 웹 페이지를 만들기 위해 설계되었으며 이를 구현하기 위해 PHP로 작성된 코드를 HTML 소스 문서 안에 넣으면 PHP 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성한다. 근래에는 PHP 코드와 HTML을 별도 파일로 분리하여 작성하는 경우가 일반적이며, PHP 또한 웹서버가 아닌 php-fpm(PHP FastCGI Process Manager)을 통해 실행하는 경우가 늘어나고 있다.[14]
  • 파이썬(Python) : 1991년 프로그래머인 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디에서 따온 것이다. 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있다. C언어로 구현된 싸이썬(Cython) 구현이 사실상의 표준이다.[15]
  • 루비(Ruby) : 마츠모토 유키히로가 개발한 동적 객체 지향 스크립트 프로그래밍 언어이다. 루비는 순수 객체 지향 언어라, 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체이다. 기능에는 클래스 정의, 가비지 컬렉션, 강력한 정규 표현식 처리, 다중 스레드, 예외 처리, 반복, 클로저, 연산자 오버로드 등이 있다.[16]

현황[편집]

이 프로젝트의 설계 목표 중 가장 중요한 것은 최적의 성능으로 하이퍼테이블이 하둡(Hadoop) DFS와 같은 기존의 분산 파일 시스템에서 실행되도록 설계되었다. 설계자는 이를 위해 자바보다는 시스템의 전체적인 부분을 전적으로 C++으로 만들었으며 여러 언어와 호환된다. 그러나 2016년 3월부터 추가 개발을 중단하면서 DB 엔진 순위에서 제외되었다. 더욱이 관련 정보도 찾기 힘들다.

각주[편집]

  1. 하이퍼 테이블〉, 《피에이티 리처치》
  2. 2.0 2.1 2.2 2.3 2.4 하이퍼 테이블〉, 《데이터베이스 데이터베이스》
  3. 3.0 3.1 3.2 3.3 하이퍼테이블 공식홈페이지 - https://hypertable.com/why_hypertable/
  4. 4.0 4.1 4.2 4.3 HyperTable이란 무엇입니까?〉, 《탑텍박스》
  5. 5.0 5.1 5.2 NoSQL 특징및 분류〉, 《데이터 사이언스》, 2020-06-09
  6. 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 하이퍼테이블 공식홈페이지 - https://hypertable.com/documentation/architecture/
  7. 7.0 7.1 JEM, 〈하둡〉, 《인코덤》, 2017-11-30
  8. 코딩팩토리, 〈(Linux) 리눅스란 무엇인가? (센토스 VS 우분투)〉,《티스토리 》, 2019-02-18
  9. macOS 위키백과 - https://ko.wikipedia.org/wiki/MacOS
  10. 코딩팩토리, 〈(Windows) 윈도우이란 무엇인가? 윈도우의 여러가지 특징들〉,《티스토리 》, 2019-02-17
  11. 씨플플 나무위키 - https://namu.wiki/w/C%2B%2B
  12. 자바 나무위키 - https://namu.wiki/w/Java
  13. 펄 위키백과 - https://ko.wikipedia.org/wiki/%ED%8E%84
  14. 피에이치피 위키백과 - https://ko.wikipedia.org/wiki/PHP
  15. 파이썬 위키백과 - https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC
  16. 루비 위키백과 - https://ko.wikipedia.org/wiki/%EB%A3%A8%EB%B9%84_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 하이퍼테이블 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.