You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

기능

마크베이스는 전통적인 데이터베이스가 가지고 있지 않은 아래와 같은 혁신적인 특성들을 가지고 있다.

센서 데이터를 위한 다양한 테이블 구조 지원

마크베이스는 사용자의 용도에 따라 네가지 형태의 테이블을 각각 제공한다. (Tag, Log, Volatile, Lookup)

이는 센서데이터를 저장하는 고객의 요구 사항이 매우 다양하고, 하나의 비지니스가 하나의 특정 데이터 패턴 만을 담고 있지 않기 때문이기도 하다.

따라서, 그러한 비지니스 요구 사항을 잘 이해하고, 적절한 테이블을 선택하는 것이 중요하다.

아래는 각 테이블의 특성을 구분하여 나타낸 것이다.



Write Once, Read Many

센서 데이터는 일단 데이터베이스에 입력되면 변경 또는 삭제되는 경우가 거의 없다.

따라서, 마크베이스는 머신 데이터에 대한 특성을 최대한 살리기 위해 한번 입력된 데이터에 대해서는 UPDATE가 발생할 수 없도록 설계 되었다.

사용자는 한번 입력된 로그 데이터를 다른 악의적 사용자에 의해 변조되거나, 삭제될 위험성에 대해 걱정할 필요가 없다.

Lockless 지원

센서 데이터 처리하는데 가장 중요한 것은 데이터의 입력, 변경, 삭제 연산과 읽기 연산이 서로 충돌하지 않고가능한 독립적으로 처리되어야 한다는 것이다.

이 때문에 마크베이스는 SELECT 연산에 대한 어떠한 Lock도 할당 받지 않도록 설계되었고, 변경 연산인 입력 혹은 삭제와도 서로 절대로 충돌하지 않는 고성능 구조로 설계되었다.

따라서 수십만 건의 데이터가 입력되고, 실시간으로 일부가 삭제되는 상황에서도 SELECT 연산은 수백만 건의 레코드에 대한 통계 연산을 빠른 속도록 진행할 수 있다.

초고속 데이터 저장

마크베이스는 기존의 데이터베이스보다 수십배의 빠른 데이터 저장 성능을 제공한다. 특정 데이블에 인덱스가 다수 존재하는 상황에서도 최소 초당 300,000 건에서 최고 2,000,000 만건까지 데이터를 받아들일 수 있다.

이것이 가능한 이유는 마크베이스가 시계열 데이터를 최적화하는 구조로 설계되었기 때문이다.

실시간 인덱스 구성

마크베이스는 인덱스가 많으면 많을수록 데이터 입력 성능이 비례적으로 느려지는 전통적인 데이터베이스 구조를 혁신적으로 개선하여, 초당 수십만건의 데이터가 입력되더라도 거의 실시간으로 인덱스를 구성할 수 있다. 이 특징은 실

제 데이터가 발생하는 순간의 즉시 검색할 수 있는 강력한 기능적인 토대를 제공해 주기 때문에 머신 데이터와 같은 시계열 데이터 분석에 있어서는 핵심적인 기술이다.

실시간 데이터 압축

머신 데이터와 같은 시계열 데이터의 특징은 끊임없이 데이터가 발생한다는 것이다. 이 사실은 필연적으로 해당 데이터베이스의 저장 공간이 언젠가는 부족해질 뿐만 아니라, 처리해야 할 데이터를 충분하게 보유하지 못한다는 의미이

다.

특히, 전통적인 데이터베이스는 데이터 뿐만 아니라 인덱스가 늘어남에 따라 차지하는 데이터 공간의 급격하게 증가하기 때문에 머신 데이터의 저장과 분석에 매우 부적절한 구조이다.

마크베이스는 쏟아져 들어오는 데이터에 대해 혁신적인 실시간 압축 기술 2 가지를 통해 성능 저하 없이 적게는 수십배에서 수백배까지 데이터를 압축하여 저장한다.

첫 번째로 마크베이스는 논리적 실시간 데이터 압축 기술을 지원한다.

이는 컬럼형 데이터베이스에서 유래한, 머신 데이터의 데이터 중복성을 이용한 것으로서 동일한 값을 갖는 데이터가 많으면 많을수록 데이터의 중복을 코드화하여

데이터 저장공간을 혁신적으로 줄이는 기술이다. 이를 통해 데이터의 중복성이 높은 데이터에 대해 수백배까지 데이터를 압축할 수 있다.

두 번째는 마크베이스의 특허 기술인 물리적 데이터 압축기술이다.

이는 디스크에 저장될 물리적인 데이터 블럭을 미리 일정한 크기의 파티션으로 나누어 압축하여 디스크에 별도로 내림으로써 저장될 물리적 데이터의 량을 줄이고, 더

불어 시스템이 유발시키는 I/O 비용을 급격하게 낮추는 기술이다. 이를 통해 실제 논리적으로 압축된 데이터를 다시한번 더 압축하여 저장 공간의 효율성을 높이는데 일조한다.


탁월한 질의  성능

마크베이스의 혁신적인 기술적 우월성은 초당 수십만 건의 데이터를 입력하는 와중에도 이미 저장된 과거의 수백만 혹은 수천만 건의 데이터에 대한 검색 및 통계 분석 성능이 매우 빠르다는 것이다.

삽입과 분석 모두에 탁월한 성능을 제공하는 마크베이스 만의 인덱싱 기술 때문에 가능한 것이며 실시간 비즈니스 의사 결정에 핵심적인 역할을 수행할 것이다.

마크베이스 전통적인 데이터베이스와 달리 두 개 이상의 인덱스를 하나의 질의문에서 처리할 수 있기 때문에 병렬로 데이터를 처리할 경우 몇 배나 더 빠른 성능을 기대할 수 있다.

아래는 다음과 같은 질의문에 대해 두 개 이상의 인덱스를 활용하는 경우를 나타낸 것이다.

select * from table1 where c1 = 1 and c2 = 2;

시계열 데이터 특성 SQL 구문 지원

센서 데이터의 경우 최신 데이터가 예전의 데이터보다 몇 배 더 가치가 있으며 데이터의 접근 빈도도 최근 데이터가 예전 데이터보다 몇 배 더 많은 특징이 있다.

이런 이유로 마크베이스는 두 종류의 테이블 즉, 태그(Tag) Table과 로그(Log) Table을 통해  시계열 데이터 특징을 지원한다.

로그 테이블  특징

첫째,  레코드가 데이터베이스에 저장되는 순간 나노 세컨드 단위의 timestamp를 _arrival_time이라는 필드로 저장한다.

이 의미는 마크베이스가 저장하는 모든 레코드는 시간을 기준으로 검색하거나 조건을 줄 수 있다는 것이다.

둘째, 데이터 검색시 최근 시간이 예전 시간 보다 먼저 출력된다.

즉, SELECT를 수행할 때 최근 데이터가 먼저 출력된다는 것이다.

앞에서 언급한 _arrival_time 컬럼 기준으로 descendant order by를 한 것과 같은 결과이다.

셋째, DURATION 키워드를 제공한다.

머신 데이터 분석의 경우 특정 시간 범위를 지정하는 경우가 많기 때문에 SQL 레벨에서 이러한 특성을 제공한다.

이를 통해 복잡한 시간 연산자를 where 절에 주지 않더라도 편리하게 데이터를 분석할 수 있다.

사용 예1) 지금 부터 10분 전까지의 데이터 통계를 내어라.

select sum(traffic) from t1 DURATION 10 minute;

사용 예2) 지금 부터 1시간 전에 30분간의 데이터 통계를 내어라.

select sum(traffic) from t1 DURATION 30 minute BEFORE 1 hour;


태그 테이블 특징

첫째, 임의의 시간 및 임의의 ID 기반  검색 성능이 탁월하다.

기존의 RDBMS로는 도달할 수 없는 초고속의 데이터 추출 성능을 자랑하며, 이는 수십억건의 센서 데이터가 저장된 상황에서도 동일한 속도를 보장한다.

둘째, 고속의 데이터 입력을 지원한다.

앞의 로그 테이블과 마찬가지로, 초당 수십만건의 센서데이터 입력에 있어서도 무리없이 데이터를 입력할 수 있다.

셋째, 실시간 통계 기능을 지원한다.

마크베이스는 이 태그 테이블에 저장된 데이터의 경우 실시간으로 다섯 종류의 통계를 자동적으로 생성하고, 이를 실시간으로 접근할 수 있는 기능을 제공한다.

로그 테이블 기반 텍스트 검색 기능 지원

로그성 시계열 데이터를 저장하고 활용하는 사용자의 가장 중요한 실제 용도 중 하나는 특정 시점에 특정 event 가 발생했는지를 확인하는 것이다.

특정 시점의 경우 시계열 데이터 처리로 가능하지만, 특정 event가 발생한 것은 대부분의 경우 특정 컬럼에 저장된 text field에서 특정 "단어"를 찾는 행위가 필요하다.

그러나, 전통적 데이터베이스에서는 특정 필드의 단어를 검색하기 위해서는 B+ Tree를 통해 exact match 혹은 LIKE 절을 통해 최초 일부 캐릭터의 조건을 검사하게 되는데, 대부분의 경우 이는 매우 느린 응답 결과를 초래한다.

그런 이유로 전통적인 데이터베이스에서 특정 단어에 대한 검색은 매우 취약하다.

반면, 마크베이스에서는 로그 테이블 기반의 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';

선택적 삭제 지원

센서 데이터의 경우에는 삽입 이후에 삭제 연산이 거의 발생하지 않는 것이 현실이다.

그러나 embedded 장비의 경우에는 저장 공간의 제약이 분명히 존재할 뿐만 아니라, 사용자에 의해 주의 깊게 관리

되지 않는 것이 그 특징이다.

이 경우 혹시나 머신 데이터에 의해 Disk full이 발생하거나 장애가 발생하는 것은 기업 입장에서 많은 손해를 감수해

야만 한다.

마크베이스는 이런 환경에서 주어진 특정 조건에 레코드를 삭제할 수 있도록 기능을 제공한다.

따라서 embedded 개발사는 CRON 혹은 주기적인 프로그램을 통해서 마크베이스가 일정 크기 이상의 데이터를 유지

하지 않도록 손쉽게 관리할 수 있다.

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

delete from devices oldest 100 rows;

사용 예2) 최근 1000건을 제외하고 모두 삭제하라.

delete from devices except 1000 rows;

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

delete from devices except 1 day;

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

delete from devices before TO_DATE('2014-06-01', 'YYYY-MM-DD');

자동화된 데이터 수집

마크베이스는 산재해 있는 머신 데이터 로그 파일로부터 데이터를 읽어 자동으로 전송해주는 기능인 "컬렉터" 기능을

제공한다.

이를 통해 syslog나 웹서버 로그 등의 이미 정형화된 데이터를 수집할 수 있을 뿐만 아니라 사용자가 임의로 정의한

로그 포맷의 경우에도 매우 쉽게 변환하여 자동으로 수집할 수 있는 기능을 제공한다.

마크베이스의 기술 구성

마크베이스는 위의 그림과 같은 3개의 기술 요소를 혁신적으로 조합한 초고속 시계열 데이터베이스이다.12 | 마크베이스 특징

컬럼형 데이터베이스 기술

컬럼형 데이터베이스는 아래의 그림과 같이 레코드를 구성하는 컬럼 데이터가 물리적으로 모여 있는 특성을 가지는

OLAP(Online Analytical Processing)에 최적화된 데이터베이스이다.

컬럼 단위로 저장을 하기 때문에 컬럼의 값들을 서로 연속된 디스크 혹은 메모리 공간에 위치하며, 서로 다른 레코드

의 컬럼이라고 하더라도 시스템에 별도의 큰 부하를 발생시키지 않고 검색이 가능한 장점이 있다.

또한 이 구조에서는 데이터 분석 성능이 Row 기반에 비해 수십 배 빠르며 데이터의 압축도 용이하다.

이런 구조를 가지고 있기에 대량의 데이터를 분석하는 용도로 이 기술이 활용되며 마크베이스에서도 컬럼 구조로 레코

드를 저장한다.

그러나, 전통적인 컬럼형 DBMS에서는 분석 성능을 최고로 올리기 위한 목적으로 사용하기 때문에 데이터이 실시간

입력 및 로딩에서는 매우 취약하여 시계열 데이터를 실시간으로 분석하기 위한 용도로서는 적절하지 않다.

메모리 데이터베이스 기술

메모리 데이터베이스는 초고속으로 데이터를 입력하고, 이를 다시 검색하는 OLTP(Online Transaction processing)

에 최적화된 고성능 데이터베이스이다.

이 메모리 데이터베이스는 금융, 통신, 제조 등의 실시간 데이터를 처리하는 곳에서 두각을 나타내고 있으며, 전세계

적으로 빠르게 성장하고 있는 분야이기도 하다.

그러나, 메모리 데이터베이스는 그 동작 특성상 모든 데이터가 메모리에 상주해야 하는 제약사항이 있기 때문에 데이

터가 무한히 발생하는 센서 데이터 처리에는 적합하지 않으며, Row 기반의 경우 데이터의 압축과 관리에도

상당한 제약사항이 존재한다.

마크베이스는 최근에 발생한 센서 데이터를 메모리에 적재하는 기술을 채택하여, 고성능의 데이터 처리를 가능

하게 하였다. 또한 일정 시간이 지났을 경우 해당 데이터를 디스크 기반으로 처리하도록 하여 실제 데이터의 중요도에

따라 유연하게 데이터를 관리할 수 있는 혁신적인 아키텍쳐를 제공한다.

마크베이스는 해당 메모리 구조를 "메모리 윈도우"라고 지칭하고 메모리 윈도우의 크기는 테이블 생성시 지정되는 프

로퍼티에 의해 결정된다.14 | 마크베이스 특징

실시간 인덱스 기술

마크베이스 실시간 인덱스를 가능케 하는 기술을 보유하고 있으며, 이 기술이 전통적인 데이터베이스 기술과 하모니를

이루어 혁신적인 시계열 데이터베이스를 탄생시켰다.

전통 데이터베이스에서 일반적으로 활용하는 B+ Tree는 대량의 데이터를 실시간으로 처리해야 하는 인덱스로는 적

합하지 않는데, 그 이유는 다음과 같다.

첫째, 인덱스 갱신 성능 때문이다. B+ Tree에 데이터를 입력하기 위해서는 인덱스에 존재하는 키들을 정렬해야 하며,

자신의 위치를 찾아야 하기에 인덱스를 전체적으로 방문해야 하는 비용이 발생한다. 이 비용으로 인해 실시간으로 수

십만 건의 데이터를 입력해야 하는 요구사항에 미치지 못하는 근본적인 한계를 가지고 있다.

둘째, 인덱스 데이터의 크기 문제이다. B+ Tree는 성능을 향상시키기 위해 인덱스 내부에 해당 키의 값을 유지하고

있다. 따라서 원시 데이터의 건수가 많으면 많을수록 부가되는 인덱스의 크기도 비례해서 커지며, 인덱스의 숫자가 증

가할 수록 데이터 량은 기하급수적으로 증가한다.

이와 같이 전통적인 데이터베이스의 인덱스 구조는 실시간 시계열 데이터처리에 많은 어려움과 제약사항을 가지고

있으며, 마크베이스는 다음과 같은 인덱스 기술을 통해 실시간 요구사항을 만족시킨다.

실시간 비트맵 인덱스

비트맵 인덱스라 함은 데이터베이스 내부에 위치하는 레코드 혹은 컬럼의 값을 트리 형태로 구성하는 것이 아니라, 0

과 1로 구성된 유일한 비트열로 저장하여 데이터를 관리하는 기술을 말한다.

아래의 그림과 같이 Data Values에 저장된 데이터 값은 우측의 b0~b5로 구성된 비트열로 조합되며, 같은 Data Val

ues는 동일한 비트열 값을 갖는 구조로 저장된다.

이러한 비트맵 인덱스를 다음과 같은 장점을 가진다.


첫째, 데이터 입력 속도가 매우 빠르다. 이 특성은 마크베이스의 실시간 처리 성능과 밀접한 관계가 있다. 이렇게 빠른

이유는 데이터의 입력시 재구성되는 비트맵 인덱스의 끝부분만 갱신을 하면 되기 때문이다.

둘째, 인덱스 자체가 키 값을 갖지 않는다. 이 키값을 갖지 않음으로 인해 인덱스가 차지하는 공간이 매우 효율적으로

최적화 될 수 있으며, 압축 효율에도 큰 영향을 미친다.

셋째, 인덱스와 인덱스 간의 협동성이 매우 좋다. 전통적인 데이터베이스는 질의처리자에 의해서 선택되는 인덱스가

최종적으로 한 개로 한정된다. 다른 컬럼에 효율적인 인덱스가 여러 개 존재하더라도 동시에 사용할 수 없는 한계가

분명히 존재하는 것이다. 그러나 비트맵 인덱스를 사용하는 시스템에서는 컬럼마다 선택된 인덱스를 개별적으로 활

용할 수 있을 뿐만 아니라, 그 결과로 추출된 비트맵 결과 집합을 AND 혹은 OR 연산을 통해 매우 빠르게 연산할 수

있는 특성을 가지고 있다. 특히 하나의 질의에 포함되는 다수의 인덱스를 활용할 수 있기 때문에 병렬 처리가 가능한

구조이며 결과적으로 대규모 통계 처리에 있어서도 전통적인 데이터베이스에 비해 우수한 성능을 기대할 수 있다.

넷째, 공간 효율성이다. 비트맵으로 구성된 인덱스 데이터는 다양한 압축 알고리즘이 적용될 수 있도록 용이한 구조를

가지고 있기 때문에 빠르고, 높은 효율로 데이터를 관리할 수 있다.

실시간 텍스트 인덱스

마크베이스는 키워드 인덱스라는 이름으로 실시간 검색 기능을 제공한다.

이 인덱스는 검색 엔진에서 사용되는 역인덱스(inverted index)를 제공하는 것으로서 데이터베이스 내부에 저장된

텍스트 데이터에서 특정 패턴을 찾는데 탁월한 성능을 제공한다.

텍스트 기반 로그 데이터의 경우 특정한 에러 메시지나 메시지 패턴을 찾는 경우가 주된 업무이기 때문에 검색 기능은

필수적이라고 할 수 있다.

특히 마크베이스는 UTF8을 기준으로 특정 패턴을 검색하는데 탁월한 성능을 보유하고 있기 때문에 데이터베이스의 편

리한 기능 위에 강력한 검색까지 가능한 유일한 데이터베이스이다.

기본 구조

위그림은 실제 마크베이스의 서비스 구조를 나타낸다.

마크베이스 Server는 다중 쓰레드 구조의 단일 프로세스로 서비스를 수행하며 저장장치에 다수의 파일 구성된 파티션

들(Shard)을 유지하고 있다.

클라이언트는 사용자 SDK를 이용하여 작성되며 데이터를 입력하는 클라이언트의 경우 사용자 로그를 파싱하고 이를

레코드 형태로 데이터를 입력하거나 데이터를 분석하고, 추출하는 작업을 하게 된다.

마크베이스 WebServer는 마크베이스 Server 에 부가적으로 설치되는 웹서버 및 웹 어플리케이션으로서 RESTful API

를 통해서 사용자 응용 프로그램을 개발하고, 모니터링 할 수 있도록 제공된다.

기본적으로 마크베이스는 클라이언트/서버 구조로 동작을 하게 되며 마크베이스 Server는 별도의 서버로 분리하기를

추천한다.

  • No labels