Posting

Machbase의 최신 소식을 지금 만나보세요

Machbase TPCx-IoT 성능 테스트 결과 리뷰

작성자 : Machbase CTO 심광훈

개요

올해 3월 28일, 4월 13일에 TTA와 Machbase와 테스트한 tpcx-iot 테스트 결과가 tpc.org에 게시되었습니다. 이 결과가 갖는 의미와 테스트 과정을 한번 정리해서 말씀드릴 기회가 있었으면 했는데, 이 자리를 빌어서 설명드리게 되었습니다. tpc가 누구인가? tpcx-iot는 어떤 테스트인가? 타 회사의 테스트와 뭐가 달라서 이런 압도적인 결과가 나왔는가? 이런 내용을 다루겠습니다.

TPC & TPCx-IoT

TPC

tpc.png

<tpc.org 홈페이지>

TPC는 DBMS SW와 HW를 테스트하는 성능 벤치마크를 정의하고, 테스트 결과를 심사해서 공인 인증 성능치를 발행하는 비영리 기관입니다. SW와 HW를 제공하는 업체들이 회원으로 있고, 이 성능결과를 바탕으로 DBMS를 도입하려는 고객들은 자신들이 원하는 시스템의 규모에 맞는 장비와 소프트웨어를 선정하는데 참조할 수 있습니다. 회원사의 목록을 보면, 인텔, AMD, 시스코, HP, Oracle등의 회사들이 있고 과거 TPC-C는 DBMS를 도입하려는 고객들이 테스트 기준으로 많이 사용하였습니다. 한국에서는 TTA가 국산 장비와 SW를 대상으로 TPC 공인 인증을 받도록 해 주는 지원 과제를 진행하고 있습니다. 빅데이터가 트랜드가 되어서 TPC-C, TPC-H등의 벤치마크가 커버하지 못하는 분야가 많아짐에 따라 등장한 테스트가 TPCx-IoT등의 신규 테스트입니다.

TPCx-IoT

빅데이터, IoT 센서 데이터등의 최근 데이터 처리에 대한 BMT가 부족하여 TPCx-IoT는 TPC에서 제정한 IoT 센서 데이터에 대한 벤치마크입니다. TPCx로 명명된 테스트들은 과거의 벤치마크(TPC-C등)와는 다르게 테스트에 필요한 소스코드를 공개하고 있습니다. 예를 들어 TPC-C 테스트는 테스트 방법만을 설명하며 구현은 테스트를 원하는 쪽에서 직접 해야 하므로, 테스트 코드를 작성하고, 정확히 실행되었는지를 검증하기가 대단히 어렵고 비용이 많이 발생합니다. TPCx-IoT를 위한 테스트 코드는 tpc 홈페이지에서 언제든지, 누구나 다운로드 할 수 있으며 테스트 구성을 동일하게 설정하고 테스트하면 똑같은 결과를 얻을 수 있습니다.

TPCx-IoT는 BMT jar file들과 driver로 구성되어 있습니다. Driver코드는 BMT가 수행하는 데이터 입출력을 원하는 DBMS에 맞게 수행되도록 하는데, 처음에는 HBase만 있었습니다. 마크베이스가 이 BMT를 지원하기 위해서 드라이버가 지원해야 하는 기능을 조사하고 드라이버 코드를 구현했습니다. TPCx-IoT 벤치마크는 야후에서 개발한 ycsb 벤치마크를 IoT 데이터에 맞게 변형한 테스트라서 ycsb driver에 몇가지 함수가 추가되어 있어서 마크베이스 개발자들이 정상적으로 테스트가 가능하도록 하는데 많은 노력을 했습니다. TPCx-IoT 벤치마크를 위한 driver 소스 코드는 github와 maven cetral에도 공개되어 있습니다.

HBase vs Machbase

Machbase가 TPCx-IoT 성능 1위를 차지하기 전까지 TPC공인 인증 1위는 HBase를 이용한 모사의 테스트 결과입니다. 이 회사의 하드웨어나 마크베이스가 테스트한 회사의 하드웨어는 둘 다 AMD 서버용 cpu를 쓰고 메모리 및 네트워크 구성도 유사합니다. 다른점은 HBase와 machbase라는 DBMS SW가 큰 역할을 한 것으로 볼 수 있습니다.

74만 vs 248만

HBase는 Hadoop cluster를 바탕으로 하는 DBMS입니다. TPCx-IoT 테스트가 워낙 대량의 데이터를 다루느라(레코드 사이즈가 1k가 넘습니다.) Hadoop 기반 제품이 아니면 테스트가 어려웠습니다. HA를 위한 복제가 되지 않으면 테스트 요건을 만족시킬 수도 없습니다. 몇몇 시계열 DBMS들이 이 테스트에 도전했다가 게시를 포기한 사례도 있는데 시계열 데이터 치고는 대량의 데이터와 복제, 클러스터 기능을 모두 만족하는 제품이 시장에 별로 없어서 그런 것 같습니다. 

HBase는 hdfs상에 데이터와 인덱스를 생성합니다. 일반적인 Transaction DBMS로 시계열 데이터와 관계있는 특수한 인덱스나 데이터 압축, 검색최적화는 제공하지 않습니다. Machbase는 시계열 센서 데이터에 대해서 최적화된 인덱스, 실시간 압축, 검색 최적화를 구현해서 입력, 검색에서 3배 이상의 성능 효율성을 보이고 있습니다.

Tag Index vs B-Tree Index

tagindex.png

<Machbase tag index 구조>

Machbase의 tag index는 tag 데이터를 빠르게 처리하기 위해서 만들어진 인덱스입니다. tag 인덱스 하나당 초당 100만건 이상의 데이터를 인덱싱 할 수 있습니다. tag id와 시간에 대한 composite 인덱스로 구성되어 있으며 대량의 tag데이터를 빠르게 검색할 수 있습니다.

bplustree.png

<b+ tree index의 구조 : 출처 wikipedia >

B+ tree는 데이터의 입력에 따른 Index skew문제를 해결한 인덱스입니다. key 검색 및 key값에 의한 순차 검색을 매우 빠르게 수행할 수 있습니다. RDBMS가 다루는 수천만건의 데이터에 대해서는 완벽한 인덱스이지만, 대량의 데이터가 입력된 경우, 인덱스 구조가 변경되는 SMO(Structure modification operation)가 발생하여 입력성능의 저하가 발생한다는 문제점이 있습니다.

초당 수백만건의 데이터가 발생하는 센서 데이터 처리에 있어서 이와같은 문제점은 매우 치명적입니다.  또한, HBASE의 경우에는 HDFS를 고가용성을 위한 기반 파일시스템으로 사용하기 때문에, I/O 성능이 매우 느립니다.

통신

TPCx-IoT의 센서 데이터는 센서 키, 시간, 센서 값의 기본 칼럼에 1k가량의 text 데이터를 덧붙여서 생성합니다. 하나의 센서 데이터 레코드는 덧붙인 text 칼럼에 의해서 1k 이상의 size가 되며, 이러한 상대적으로 매우 긴 레코드를 초당 수백만건 입력하려면 raw data 크기만으로 초당 수기가바이트의 엄청난 대역폭이 필요합니다. Machbase의 테스트 시스템의 결과와 HBase의 테스트 시스템 모두 100GB ethernet등을 이용하여 이를 극복하고 있습니다.

Machbase는 대량의 센서 데이터의 입력에 특화된 Append 프로토콜(특허 출원)을 이용하여 client/server의 cpu사용량과 응답시간, 네트워크 대역폭 사용량을 최적화합니다. HBase에 비해 친숙한 JDBC 인터페이스를 이용하여 벤치마크 드라이버를 작성하였습니다. Machbase의 드라이버 코드 및 jar 파일은 tpc 홈페이지에서 다운로드 받을 수 있습니다.

결론

TPCx-IoT 테스트에서 Machbase가 타 DB에 비해서 압도적인 성능 결과를 내어 결과적으로 최고 성능을 입증한 것과 그 이유를 살펴보았습니다. 마크베이스의 시계열 IoT DBMS는 실시간 시계열 센서 데이터 처리를 목표로 개발되었으며 그에 맞춘 저장 및 검색 구조를 구현하였습니다. IoT, 스마트팩토리 데이터 처리에는 Machbase Time series DBMS를 이용하면 최고의 성능을 얻을 수 있습니다.

감사합니다.

연관 포스트

Deep Anomaly Detection in Time Series (2) : 이상 감지 모델

개요 안녕하세요, 마크베이스의 Cloud개발본부 연구원 양창은입니다. 지난 게시글 Deep Anomaly Detection in Time Series (1) : Time Series Data에서는 시계열 데이터와 이상치(Anomaly)의 종류에 대해 알아보았습니다. 그리고

IIoT를 위한 Data Lake – machlake

Data Lake 란, 대규모의 다양한 원시 데이터 세트를 기본 형식으로 저장하는 데이터 리포지터리 유형입니다. 원시 데이터는 특정 목적을 위해 처리되지 않은 데이터를 뜻합니다. 산업 IoT