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

하이퍼테이블

해시넷
Asadal (토론 | 기여)님의 2020년 8월 8일 (토) 10:58 판 (지원)
이동: 둘러보기, 검색
하이퍼테이블(Hypertable)
하이퍼테이블(Hypertable)

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

개요

하이퍼테이블(Hypertable)은 비관계형 데이터베이스노에스큐엘(NoSQL) 중 빅테이블을 모델로 한 오픈소스 데이터베이스로 분산파일 시스템 위에서 실행된다. HDFS. MapR, Ceph, KFS, 로컬을 지원하고 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]

관련 용어

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

지원

운영 체제
  • 리눅스(Linux) : 리누스 토르발스가 커뮤니티 주체로 개발한 컴퓨터 운영 체제이다. 리눅스(Linux)는 유닉스(UNIX)운영체제를 기반으로 만들어진 운영체제다. 리눅스(Linux)는 유닉스(UNIX)와 마찬가지로 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)이다. 리눅스의 원형이 되는 UNIX가 애초부터 통신 네트워크를 지향하여 설계된것처럼 리눅스 역시 서버로 작동하는데 최적화되어있다. 고로 서버에서 사용되는 운영체제로 많이 사용되고 있다.[6]
  • 오에스 엑스(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)이라는 단어가 공식적으로 제거되었다.[7]
  • 윈도우(Windows) : 마이크로소프트사가 개발한 운영체제로 애플이 개인용 컴퓨터에 처음으로 도입한 그래픽 사용자 인터페이스(GUI) 운영 체제인 맥 OS에 대항하여, 당시 널리 쓰이던 MS-DOS에서 멀티태스킹과 GUI 환경을 제공하기 위한 응용 프로그램으로 처음 출시되었다. 현재 전 세계 90%의 개인용 컴퓨터에서 쓰고 있으며, 서버용 운영 체제로도 점차 영역을 넓혀 나가고 있다. 윈도우 운영 체제의 경우 큰 시장 점유율을 차지하고 있는 까닭에 일반 사용자들에게 매우 익숙할뿐 아니라 호환되는 유명한 응용 프로그램이 많다는 장점을 지니고 있지만, 그만큼 보안 문제에서는 취약한 부분이 많은 운영 체제로 인식되기도 한다. 하지만 사실 보안문제에선 취약한 부분이 다른 운영체제와 차이날 정도로 독보적으로 많은 것은 아니기에 오늘날에 PC에서 가장 많이 사용하는 운영체제로 자리매김하고 있다.[8]
프로그래밍 언어

현황

이 프로젝트의 설계 목표 중 가장 중요한 것은 최적의 성능으로 하이퍼테이블이 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 5.3 5.4 5.5 5.6 5.7 5.8 하이퍼테이블 공식홈페이지 - https://hypertable.com/documentation/architecture/
  6. 코딩팩토리, 〈(Linux) 리눅스란 무엇인가? (센토스 VS 우분투)〉,《티스토리 》, 2019-02-18
  7. macOS 위키백과 - https://ko.wikipedia.org/wiki/MacOS
  8. 코딩팩토리, 〈(Windows) 윈도우이란 무엇인가? 윈도우의 여러가지 특징들〉,《티스토리 》, 2019-02-17

참고자료

같이 보기


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