닫기
배너

[IoT 데이터 처리의 모든 것-④] 시계열 데이터베이스 ‘마크베이스’

URL복사
[무료등록] IoT 기반의 지능형 교통 및 전기차 충전 솔루션 (8.25)

김성진 대표, 마크베이스

 

마크베이스(Machbase)는 한국에서 개발된 시계열 데이터베이스 제품이다. 이 글에서는 전체적인 제품의 개발 배경과 관련된 핵심 기능에 대해서 살펴본다.

 

개발 배경

 

마크베이스는 시계열 데이터베이스로서 초고속으로 시계열 데이터를 저장, 추출, 분석하기 위한 목적으로 개발되었다. 특히, 마크베이스는 고성능의 데이터 처리를 목적으로 하기 때문에 컴파일 언어인 C를 기반으로 개발되었고, 전통적인 데이터베이스 엔진의 구조와는 차별되는 새로운 아키텍처로 설계되었다. 그러나 기존의 데이터베이스 사용자가 쉽게 배우고, 활용할 수 있도록 사용성 측면에서는 전통적인 데이터베이스 인터페이스를 그대로 유지하고, 내부 엔진은 시계열 빅데이터를 고속으로 처리할 수 있는 혁신적인 구조로 설계되었다.

 

따라서 오라클 혹은 MySQL에서 활용하던 익숙한 인터페이스인 SQL 및 ODBC, JDBC, Restful API 등을 그대로 사용할 수 있으며 저장된 시계열 데이터에 대해서는 기존 데이터베이스보다 월등한 성능으로 처리할 수 있는 특징을 가지게 되었다.

 

제품 히스토리

 

마크베이스는 2013년 하반기부터 개발이 시작되어 지금까지 약 6년간 진화해 온 제품으로서 아래와 같은 순서로 기능이 보강되어 오늘에 이르게 되었다.

 

1. 개발 초창기의 목표

2014년 당시 초기 버전이 목표로 했던 시장은 텍스트 로그 형태의 빅데이터 시장으로서, 스플렁크 혹은 하둡이 활용되고 있던 텍스트 기반의 시계열 데이터를 처리하는 시장이었다. 이를 위해 텍스트 로그를 빠르게 처리할 수 있는 형태의 테이블인 ‘로그 테이블’을 최초로 개발하였다. 이 테이블은 기존의 데이터베이스가 가진 데이터 처리 성능의 한계를 뛰어넘는 목표를 달성해야 했는데, 그 목표는 다음과 같았다.

 

· 초당 수만 건 이상의 텍스트 로그를 입력할 수 있을 것

· 실시간으로 인덱스가 만들어져서 실시간으로 질의를 수행할 수 있을 것

· 십억 건 이상의 데이터 저장소에서 3초 내로 원하는 데이터를 검색할 것

· 단일 서버에서 100억 건 이상의 텍스트 로그를 저장할 수 있을 것

· 표준 SQL을 그대로 수행할 수 있을 것

· 표준 데이터베이스 개발 환경 및 개발도구를 지원할 것

· 실시간으로 데이터를 압축할 수 있을 것

· 문자형 컬럼에 대해서 텍스트 검색이 가능할 것

 

2. 고객을 만들다

초기 목표로 했던 기능을 가장 먼저 적용했던 분야는 실시간 패킷 분석 솔루션이었다. 대규모로 생성되는 패킷을 분석하고, 이를 세션 형태로 분석하는 보안 솔루션에서 빠르게 세션 정보를 저장하고, 이를 통해 위협을 감지하는 핵심적인 데이터 저장소로서 마크베이스를 활용하게 되었다. 그리고 2015년 대기업의 방화벽 장비에 내장되어 고속으로 동작하는 데이터베이스로 채택되어, 보안 시스템 로그 저장 및 분석을 위한 목표 성능을 달성할 수 있었다.

 

고객의 요구에 따라 임시 데이터를 고속으로 입력, 변경, 삭제해야 하는 목표를 위해 휘발성 테이블(Volatile Table)이 함께 개발되었고, 흔히 마스터 데이터라고 하는 기준 데이터를 영구적으로 저장하기 위한 용도로 참조 테이블(Lookup Table)이 함께 개발되었다.

 

이후 마크베이스는 개인정보보호 시스템, 철도 안전관제 시스템 등의 다양한 통합 로그 시스템 등에 적용되면서 텍스트 기반 빅데이터 분석을 위한 제품으로 자리를 잡게 되었다.

 

 

3. 센서 데이터 처리에 대한 새로운 이해와 한계 인식

2017년 소프트뱅크가 오에스아이소프트(OSIsoft)에 대한 전격적인 투자를 단행한 당시만 하더라도 마크베이스 기술진은 로그 테이블을 통해 이러한 센서 데이터의 처리를 무난히 할 수 있다고 믿었다. 그러나 동일한 시계열 데이터라고 하더라도 텍스트 기반의 시스템 로그 시계열 데이터와 센서 시계열 데이터는 서로 다르다는 것을 깨닫는 데 오래 걸리지 않았다. 아래에서 그 차이에 대해 비교, 설명한다.

 

· 센서 데이터(아이디, 시간, 값)는 완전한 정형이다. 반면, 시스템 로그는 반정형이다.

· 센서 데이터의 모든 값은 대부분 숫자형이다. 반면, 시스템 로그는 텍스트 정보가 대부분이다.

· 하나의 센서 데이터 크기는 기껏해야 30바이트 내외다. 반면, 시스템 로그는 하나의 레코드가 수십 킬로바이트가 될 수 있다.

· 데이터베이스에 저장될 센서 종류가 많다. 즉, 카디널리티(Cardinality)가 매우 높다(수십만 개 이상도 가능하다). 반면, 시스템 로그는 이러한 카디널리티에 대한 고려가 필요 없다.

· 특정 센서 데이터 추출 성능은 1초 내로 100만 건 정도가 일반적이다. 반면, 시스템 로그의 경우, 대량의 추출 요구 사항보다는 특정한 문자 패턴 검색이 주를 이룬다.

 

위와 같이 센서 데이터와 시스템 로그 데이터의 큰 차이가 존재하는데, 이러한 특성을 고려하기 위해서는 새로운 형태의 테이블이 필요하다는 결론을 내리게 되었다. 다시 말해 기존에 존재하던 모든 로그성 빅데이터 솔루션은 IoT 센서 데이터 처리에 적합하지 않다는 반증이기도 했다.

 

 

4. 태그 테이블 지원하다

2018년 가을, 마크베이스는 새로운 형태의 테이블, 즉 태그 테이블을 지원하게 되었다. 태그(Tag)라는 용어는 산업계에서 활용되는 센서를 지칭하는 대표적인 단어를 차용했으며, 대량의 센서 데이터를 저장하고, 고속으로 추출할 수 있는 혁신적인 인덱스를 개발하였다.

 

이 인덱스는 센서데이터의 특성을 고려한 2차원의 데이터 처리 기술을 지원하는 것이 가장 핵심인데, 시간 축을 기준으로 데이터를 정렬, 검색할 수 있는 메모리 인덱스와 센서 데이터 축을 기반으로 한 파티션 기반의 클러스터 인덱스 구조를 동시에 지원하는 구조이다.

 

이러한 인덱스를 기반으로 설계된 태그 테이블은 <센서아이디, 생성시간, 값>을 갖는 기본적인 구조를 지원하고, 원한다면 사용자가 필요한 컬럼을 추가하여 확장할 수 있을 뿐만 아니라, 앞에서 언급했던 롤업 기능이 자동으로 동작하도록 설계되었다. 이를 통해서 기존 로그 테이블에서는 불가능했던 다음과 같은 처리가 가능해지게 되었다.

 

· 단일 세션 기준 초당 백만 건 이상의 센서 데이터 입력

· 센서 데이터에 대한 실시간 압축

· 초당 백만 건 이상의 데이터 추출 가능

· 롤업을 통한 실시간 통계 정보 추출 가능

· 잠금 충돌이 없는 고속의 데이터 입력 및 추출 성능 지원

 

 

제품 특징

 

제품의 더 자세한 기능과 내용은 마크베이스 한글 매뉴얼(http://krdoc.machbase.com)을 참조하되, 여기에서는 간략하게 제품의 특징을 기술하도록 하겠다.

 

1.다양한 크기의 하드웨어 지원

마크베이스는 사용자의 비즈니스 환경에 따른 아래와 같은 다양한 제품 에디션을 제공한다.

 

(1) 엣지 에디션

엣지 에디션(Edge Edition)은 암(ARM) 혹은 인텔의 아톰(ATOM) 급 CPU를 기반으로 동작하는 소규모 엣지 장비에서 동작한다. 그러나 이런 소규모 장비에서도 초당 수만 건의 센서 데이터를 저장하고, 필터링을 하고자 하는 경우 마크베이스가 유용하게 활용될 수 있다. 주로, 로봇이나 공장의 생산 설비, 빌딩 등의 단말 장비에서 센서 데이터를 고속으로 저장하고자 하는 경우에 활용된다.

 

 

(2) 포그 에디션

포그 에디션(Fog Edition)은 단일 서버에서 고속의 데이터 처리를 달성하고자 하는 경우 활용된다. 주로 인텔 x86 CPU 기반의 윈도우나 리눅스 운영체제에서 동작하며, 타 데이터베이스가 제공하지 못하는 매우 빠른 센서 데이터 저장과 분석을 제공한다.

 

 

(3) 클러스터 에디션

클러스터 에디션(Cluster Edition)은 제조 공장에서 발생하는 거대 규모의 센서 데이터를 저장하기 위한 목적으로 개발되었다. 반도체 혹은 디스플레이, 발전, 철강 생산 공정에서 발생하는 초당 천만 건 이상의 데이터를 저장하기 위해 다수의 물리적 서버가 클러스터 형태로 동작한다. 데이터가 늘어나더라도 처리 용량과 성능을 지속적으로 유지해야 하는 환경에서 활용된다.

 

 

2. 태그 분석기 : 데이터 시각화 솔루션 지원

마크베이스는 버전 5부터 마크베이스에 저장된 수백억 건의 센서 데이터에 대한 실시간 시각화 기능인 태그 분석기(Tag analyzer)를 제공한다. 즉, 임의의 태그 아이디를 지정하며, 그 아이디가 입력된 기간 동안의 트렌드 차트를 순식간에 웹 기반으로 확인할 수 있도록 한다. 또한, 단순한 태그 데이터뿐만 아니라 그 기간의 통계 차트도 함께 볼 수 있도록 제공하기 때문에 단순 시각화를 넘어 일정 수준의 통계 분석도 가능하다.

 

 

3. WORM(Write Once, Read Many)

센서 데이터는 일단 데이터베이스에 입력되면 변경 또는 삭제되는 경우가 거의 없다. 따라서 마크베이스는 머신 데이터에 대한 특성을 최대한 살리기 위해 한번 입력된 주요 시계열 데이터에 대해서는 변경할 수 없도록 설계되었다. 한번 입력된 로그나 센서 데이터는, 악의적 사용자에 의해 변조되거나 삭제되지 않으므로 걱정할 필요가 없다.

 

4. 잠금 없는 아키텍처

마크베이스는 전통적인 데이터베이스에서 사용하는 잠금(lock)을 사용하지 않는 구조(lock-free architecture)로 설계되었다. 센서 데이터 처리하는데 가장 중요한 것은 데이터의 입력, 변경, 삭제 연산과 읽기 연산이 서로 충돌하지 않고, 가능한 독립적으로 처리되어야 한다는 것이다. 이 때문에 마크베이스는 읽기 연산에 대한 어떠한 잠금도 할당받지 않도록 설계되었고, 변경 연산인 입력 혹은 삭제와도 간섭하지 않는 고성능 구조로 설계되었다. 따라서 수십만 건의 데이터가 입력되고, 실시간으로 일부가 삭제되는 상황에서도 읽기 연산은 수백만 건의 레코드에 대한 통계 연산을 빠른 속도록 진행할 수 있다.

 

5. 초고속 데이터 저장

마크베이스는 기존의 데이터베이스보다 수십 배의 빠른 데이터 저장 성능을 제공한다. 특정 테이블에 인덱스가 다수 존재하는 상황에서도 단일 서버에서 최소 초당 3십만 건에서 최고 2백만 건까지 데이터를 받아들일 수 있다. 이것이 가능한 이유는 마크베이스가 시계열 데이터를 최적화하는 구조로 설계되었기 때문이다.

 

6. 스트림 기능 지원

마크베이스는 버전 5부터 엣지 에디션과 포그 에디션에서 실시간 데이터 필터링을 지원하기 위한 스트림(STREAM) 기능을 제공한다. 이 스트림은 데이터베이스 내부에서 실시간으로 입력되는 데이터에 대해 고속으로 주어진 조건 평가를 수행하고, 그 결과를 임의의 테이블로 전송하는 역할을 수행한다. 이 기능은 특정 센서의 값이 특정 범위를 넘었을 경우 경고를 발생시키거나 내부적으로 입력된 데이터에 대한 실시간 평가를 하는 경우 매우 유용하다.

 

7. 실시간 인덱스 구성

마크베이스는 인덱스가 많으면 많을수록 데이터 입력 성능이 비례적으로 느려지는 전통적인 데이터베이스 구조를 혁신적으로 개선해, 초당 수십만 건의 데이터가 입력되더라도 거의 실시간으로 인덱스를 구성할 수 있다. 이 특징은 실제 데이터가 발생하는 순간 즉시 검색할 수 있는 강력한 기능적인 토대를 제공해 주기 때문에 센서 데이터와 같은 시계열 데이터 처리에 있어서는 핵심적인 기술이다.

 

8. 실시간 데이터 압축

시계열 데이터의 특징은 끊임없이 데이터가 발생한다는 것이다. 이 사실은 필연적으로 해당 데이터베이스의 저장 공간이 언젠가는 부족해질 뿐만 아니라, 처리해야 할 데이터를 충분하게 보유하지 못한다는 의미이다. 특히 전통적인 데이터베이스는 입력 시 데이터 영역뿐만 아니라 인덱스 영역의 크기 또한 늘어나는데 이는 실시간 압축을 지원하지 않기 때문이다. 마크베이스는 쏟아져 들어오는 데이터에 대해 혁신적인 실시간 압축 기술을 통해 성능 저하 없이 데이터를 압축하여 저장한다.

 

9. 텍스트 검색 기능 지원

로그성 시계열 데이터를 저장하고 활용하는 사용자의 가장 중요한 실제 용도 중 하나는 특정 시점에 특정 사건이 발생했는지를 확인하는 것이다. 특정 시점의 경우 시계열 데이터 처리로 가능하지만, 어떤 사건이 발생한 경우 특정 컬럼에 저장된 특정 ‘단어’를 찾는 행위가 필요하다. 그러나 전통적 데이터베이스에서는 텍스트 컬럼에 대한 검색을 지원하지 않기 때문에 성능이 매우 느리다.

 

반면, 마크베이스에서는 로그 테이블 기반의 SEARCH라는 SQL 키워드를 제공함으로써 실시간 단어 검색이 가능하도록 하였다. 이를 통해 장비로부터 발생된 임의의 에러 텍스트를 순식간에 검색할 수 있게 되었다.

 

· 예1) msg 필드에 ‘Error’ 혹은 ‘102’를 포함하는 레코드를 출력

SELECT id, ipv4 FROM devices WHERE msg SEARCH ‘Error’ or msg SEARCH ‘102’;

· 예2) msg 필드에 ‘Error’ 그리고 ‘102’를 모두 포함하는 레코드를 출력

SELECT id, ipv4 FROM devices WHERE msg SEARCH ‘Error 102’;

 

10. 선택적 삭제 지원

센서 데이터의 경우에는 삽입 이후에 삭제 연산이 거의 발생하지 않는 것이 현실이다. 그러나 임베디드 장비의 경우에는 저장 공간의 매우 제약되어 있고 사용자가 주의 깊게 관리하지 않을 경우 저장 공간이 부족해지기 쉽다. 만일 이로 인해 서비스 장애가 발생하게 되면, 기업 입장에서 큰 손해를 감수해야 한다. 마크베이스는 이런 환경에서 주어진 특정 조건에 레코드를 삭제할 수 있도록 기능을 제공한다.

 

(1) 로그 테이블의 경우

로그 테이블은 아래의 모든 삭제 문법을 지원한다.

· 사용 예1) 가장 오래된 마지막 100건을 삭제하라.

DELETE FROM devices OLDEST 100 ROWS;

· 사용 예2) 최근 1,000건을 제외하고 모두 삭제하라.

DELETE FROM devices EXCEPT 1000 ROWS;

· 사용 예3) 지금부터 하루치를 남기고 모두 삭제하라.

DELETE FROM devices EXCEPT 1 DAY;

· 사용 예4) 2014년 6월 1일 이전의 데이터를 모두 삭제하라.

DELETE FRM devices BEFORE TO_DATE(‘2014-06-01’, ‘YYYY-MM-DD’);

 

(2) 태그 테이블의 경우

태그 테이블은 현재 한 가지 종류의 삭제 기능만 지원한다.

· 사용 예) 2014년 6월 1일 이전의 센서 데이터를 모두 삭제하라.

DELETE FROM TAG BEFORE TO_DATE(‘2014-06-01’, ‘YYYY-MM-DD’);

 

 

제품 활용과 미래

 

현재 마크베이스가 보유하고 있는 수준의 센서 데이터 처리 능력은 세계 최고 수준이며, 스마트 X로 불리는 대부분 영역에서 적용 가능하다. 만일 관련된 영역에서 이러한 데이터 처리에 대한 문제나 요구가 있다면, 마크베이스를 통해 해결하는 것을 적극 권장하는 바이다.

 

현재 마크베이스 홈페이지에서 누구나 다운로드하고, 테스트할 수 있도록 제품과 매뉴얼이 제공되며, 관련된 기술 자료도 함께 배포하고 있으니 관심 있는 분들은 방문해 보기를 바란다.



배너

배너






배너





주요파트너/추천기업