ARCHIVES

NewSQL의 VoltDB에 대하여

(주)비트나인 2016. 3. 23. 10:14

본 내용은 NewSQL DB VoltDB에 대해 설명한 글이다.

 

미국의 리서치 전문 기관인 451 Group에서는 전체 DB RDBMS, NoSQL, NewSQL로 분류하였다. 이를 분류한 전체 그림은 다음과 같다.


 


 

위의 그림에서 보는 바와 같이 451 Group DB 3개의 대분류로 나누고, 각각의 대분류에서 Analytic, Operational, -as-a-Service로 소분류하였다. Analytic은 통계, 데이터 마이닝, 기계학습, 패턴인식 등을 통해 분석된 내용을 제공하는 분석 소프트웨어 제품을 의미한다. Operational은 데이터 수집, 저장, 관리, 시각화 등을 제공하는 빅 데이터 처리 분석 플랫폼을 위한 단일 소프트웨어 제품을 의미한다. -as-a-Service는 빅 데이터 분석을 위한 인프라와 서비스를 동시에 제공하는 소프트웨어 제품을 의미한다.

여기서는 전체 DB에 대해 다 살펴보지는 않고, NewSQL DB에서 유명한 VoltDB, Clustrix, ScaleBase, ScaleDB, MySQL cluster VoltDB에 대해 알아본다. VoltDB에 대해 알아보기 전에 VoltDB를 선택한 이유는 다른 DB에 비해 우수한 성능과 기능을 제공하기 때문이다. 예를 들어 Clustrix는 상용 라이선스이고 Partition, Trigger, Stored Procedure 기능을 지원하지 않는다. ScaleBase도 상용 라이선스이고, ACID 지원이 미흡하다. ScaleDB는 공유 디스크 구조의 사용으로 확장성에 한계가 있다. MySQL Cluster는 실시간 처리 성능이 떨어진다는 문제점이 있다. 이와 대조적으로 VoltDB는 위의 DB들이 가지고 있는 여러 문제점이 발생하지 않을 뿐만 아니라, 인메모리 기술을 적용하여 실시간 처리가 뛰어나다는 장점이 있다.

 

다음은 VoltDB의 개요, 특징, /단점, 구조에 대해 설명한다. VoltDB는 미국 VoltDB 회사에서 개발한 오픈소스 데이터베이스 시스템이다. 최신 버전은 2016 3월에 6.1 버전을 출시하였다. VoltDB Java C++ 언어를 사용하여 구현되었다.

VoltDB의 주요 특징은 표준 SQL, ACID, 비공유 구조, 다중 노드 클러스터링 등을 지원하고, 인메모리 기술을 사용하였으며, 디스크의 입/출력 대기시간과 단일 스레드 실행으로 락을 제거해 오버헤드를 상당히 감소시켰다는 점이다.

VoltDB의 장점은 높은 처리량, 고가용성, 락 없음이다. 높은 처리량은 인메모리 기술로 인한 실시간 분석이 가능하고 버퍼 풀을 제거함으로써 가능하다. 고가용성은 이중화 구성으로 성능 손실 없이 장애 복구가 자동으로 가능하며, 이는 서비스 중지가 발생하지 않는다는 것을 의미이다. 락 없음은 서버에서 한 개의 스레드로만 데이터를 처리하기 때문에 락킹이 필요 없다는 것을 의미한다.

VoltDB의 단점은 복잡도 증가이다. 복잡도의 증가는 소프트웨어 개발 비용 증가, 버그 발생 가능성 증가, 처리 부담 증가로 이어질 수 있다. 그리고 많은 새로운 아키텍처 설계가 필요하다는 것이다. 

마지막으로, VoltDB의 구조를 설명한다. 이에 대한 그림은 다음과 같다.





위의 그림은 Node1, Node2, Node3은 서버이고, 각 서버에 VoltDB를 설치한 것이다. 이와 같이 VoltDB가 여러 서버에 분산되어 설치되었을 경우 분산 설치된 VoltDB Cluster 기능을 사용하여 하나의 VoltDB로 구성할 수 있다. Node1에 있는 VoltDB 구조에 대해 살펴보면 크게 3개의 주요 컨포넌트가 있으며, 이는 Excution Engine, Initiator, Client Interface이다. Excution Engine은 처리해야 할 작업 데이터를 스레드로 실행해서 빠르게 처리한다. Initiator Table data Index data의 메타 정보를 보관하고 있고, 실제 데이터는 메모리(RAM) 상에 Partition되어 있다. Client Interface는 응용 프로그램과 상호 작용할 때 사용된다.

 

위와 같이 VoltDB에 대해 알아보았다. VoltDB NewSQL에 대해 더 자세한 설명은 다른 자료를 참고하길 바란다.

 





Posted by Bitnine(비트나인)