Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

다양한 테이블 구조 지원


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

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

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

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


UI Text Box

목차


Table of Contents
maxLevel1
indent30px
exclude목차
classtoc



테이블 종류Tag TableLog TableVolatile TableLookup Table
목적

<센서명, 시간, 센서값> 형태의 센서 시계열 데이터 처리에 최적화

PLC 형태 로그 시계열 데이터 처리에 최적화
(텍스트 포함)

휘발성 메모리 데이터  실시간 처리영구 저장 가능한 마스터 데이터 관리
설명

고속으로 센서 데이터를 저장하고, 고속으로 해당 데이터를 추출하거나, 실시간으로 통계 테이블을 생성할 경우 활용

주로, 실시간 센서 데이터를 저장

텍스트를 포함한 로그성 데이터를 저장하고,
이를 일반 DBMS 형태로 분석하고자 할 경우 활용

주로, 히스토리성 사용자 데이터를 저장

Insert, Delete, Update, Select 가 메모리 기반의 성능으로 필요한 경우 사용 (초당 수만건)

시스템 종료시 모든 데이터가 사라지며,
주로 key-value 기반의 모니터링 용도로 활용함.

사용자의 변경 가능한 주요 마스터 데이터를 영구 저장할 목적으로 사용함.

SELECT 성능은 고속이지만,
나머지 INSERT, UPDATE, DELETE는 디스크 기반의 성능을 제공함.

테이블
구조

<센서명, 시간, 센서값> 이 기본형이며,
추가로 컬럼을 지정할 수 있다.

임의의 스키마 가능임의의 스키마 가능 (Primary Key 지정 가능)
INSERT (입력)
성능
초당 수백만건초당 수백만건초당 수만건초당 수백건
SELECT
(질의)
센서명 + 시간 범위 한정모든 질의 가능
DELETE
(삭제)

임의 시점 이전 데이터 실시간 삭제 가능

임의 시점/구간 데이터 실시간 삭제 가능

Primary Key 기준 Record Delete 지원 (※ Primary Key 지정 필요)

UPDATE
(변경)
지원 불가 (※ 메타데이터 컬럼 에 한해서 변경 가능)지원 불가Primary Key 기준 Update 지원 (※ Primary Key 지정 필요)
저장소
크기 한계
디스크 한계메모리 한계 (question)
INDEX
구조
3 단계의 Partitioning 실시간 인덱스 (※ 기본 생성)LSM 인덱스Red/Black 메모리 인덱스
STREAM
지원
타겟 대상으로만 가능 (저장 대상)소스/타겟 대상 모두 가능 (읽기 및 저장대상)불가능
고려 사항과거 데이터 삭제를 고려한 충분한 스토리지 확보 고려Tag 입력을 위한 임시 저장소로 고려메모리 한계 고려 (question)


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


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

Edge Edition

이 제품은 ARM 혹은 인텔의 ATOM 급 CPU를 기반으로 동작하는 소규모 Edge 장비에서 동작한다.

그러나, 이런 소규모 장비에서도 초당 수만건의 센서 데이터를 저장하고, 필터링을 하고자 하는 경우 마크베이스가 유용하게 활용될 수 있다.

주로, 로봇이나 공장의 생산 설비, 빌딩 등의 단말 단계에서의 다양한 센서를 고속 및 고용량으로 저장하고자 하는 경우 필요한 제품이다.

Fog Edition

이 제품은 단일 서버에서 고속의 데이터 처리를 달성하고자 하는 경우 활용된다.

주로 인텔 x86 CPU 기반의 윈도우나 리눅스 운영체제에서 동작하며, 타 DBMS가 제공하지 못하는 매우 빠른 센서 데이터 저장과 분석을 제공한다.

대부분의 경우 수백대 이상의 Edge 장비로부터 실시간으로 입력되는 데이터를 저장하고, 이를 2차로 분석하기 위한 용도로 활용된다.

Cluster Edition

이 제품은 거대 제조 공장을 위한 초거대규모의 센서 데이터를 저장하기 위한 목적으로 개발되었다.

반도체 혹은 디스플레이, 발전, 철강 생산 공정에서 발생하는 초당 천만건 이상의 데이터를 저장하기 위해 다수의 물리적 서버가 클러스터 형태로 동작한다.

데이터가 늘어나는 환경에서 처리 용량과 성능을 지속적으로 유지해야 하는 환경에서 활용된다.


Tag analyzer : 데이터 시각화 솔루션 지원


마크베이스는 버젼 5부터 마크베이스에 저장된 수백억건의 센서 데이터에 대한 실시간 시각화를 제공한다.

즉, 임의의 태그 아이디를 지정하며, 그 아이디가 입력된 기간동안의 트렌드 차트를 순식간에 웹 기반으로 확인할 수 있도록 한다.

또한, 단순한 태그 데이터 뿐만 아니라 그 기간동안의 통계 챠트도 함께 볼 수 있도록 제공하기 때문에 단순 시각화를 넘어 일정 수준의 통계 분석도 가능하다.


Write Once, Read Many


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

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

한번 입력된 로그 데이터는, 악의적 사용자에 의해 변조되거나 삭제되지 않으므로 걱정할 필요가 없다.


Lock-free 아키텍쳐 지원


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

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

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


초고속 데이터 저장


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

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


STREAM 기능 지원


마크베이스는 버젼 5 부터  Edge Edition과 Fog Edition에 대해서 실시간 데이터 필터링을 지원하기 위해 STREAM 기능을 제공한다.

이 STREAM은 DBMS 내부에서 실시간으로 입력되는 데이터에 대해 고속으로 조건 평가를 수행하고, 그 결과를 임의의 테이블로 전송하는 역할을 수행한다.

이 기능은 특정 센서의 값이 특정 범위를 넘었을 경우 경고를 발생시키거나 내부적으로 입력된 데이터에 대한 실시간 평가를 하는 경우 매우 유용하다.


실시간 인덱스 구성


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

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


실시간 데이터 압축


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

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

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

논리적 실시간 데이터 압축 기술 지원

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

이는 컬럼형 데이터베이스에서 유래한, 머신 데이터의 데이터 중복성을 이용한 것으로서 동일한 값을 갖는 데이터가 많으면 많을수록 데이터의 중복을 코드화하여, 데이터 저장공간을 혁신적으로 줄이는 기술이다. 이를 통해 데이터의 중복성이 높은 데이터에 대해 수백배까지 데이터를 압축할 수 있다.

물리적 데이터 압축 기술 (특허 기술)

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

이는 디스크에 저장될 물리적인 데이터 블럭을 미리 일정한 크기의 파티션으로 나누어 압축하여 디스크에 별도로 내림으로써 저장될 물리적 데이터의 량을 줄이고, 더불어 시스템이 유발시키는 I/O 비용을 급격하게 낮추는 기술이다. 이를 통해 실제 논리적으로 압축된 데이터를 다시한번 더 압축하여 저장 공간의 효율성을 높이는데 일조한다.


탁월한 질의 성능


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

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

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

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

Code Block
languagesql
SELECT * FROM table1 WHERE c1 = 1 and c2 = 2;


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


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

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


로그 테이블

마크베이스에서 지원하는 로그 테이블 (Log Table) 은 다음 특징을 가지고 있다.

첫째, 입력 시간을 자동으로 저장

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

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


둘째, 최근 데이터 우선 조회

데이터 검색시 최근 시간이 예전 시간 보다 먼저 출력된다. 즉, SELECT를 수행할 때 최근 데이터가 먼저 출력된다는 것이다.

앞에서 언급한 _arrival_time 컬럼 기준으로 내림차순 정렬 (descending sort) 를 한 것과 같은 결과이다.


셋째, DURATION 키워드

DURATION 키워드를 제공해, 특정 시간 범위 데이터를 입력 시간 기준으로 빠르게 조회할 수 있는 기능을 탑재했다.

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

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

Code Block
languagesql
-- 예1) 지금 부터 10분 전까지의 데이터 통계 조회
SELECT SUM(traffic) FROM t1 DURATION 10 MINUTE;

-- 예2) 지금 부터 1시간 전에 30분간의 데이터 통계 조회
SELECT SUM(traffic) FROM t1 DURATION 30 MINUTE BEFORE 1 HOUR;


태그 테이블

마크베이스 5.0 부터 지원하는 태그 테이블 (Tag Table) 은 다음 특징을 가지고 있다.

첫째, 고속 TAGID/시간 조건 검색 성능

태그 테이블은 임의의 시간 및 임의의 ID 기반  검색 성능이 탁월하다.

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

둘째, 고속 태그 데이터 입력

태그 테이블은 고속의 데이터 입력을 지원한다.

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

셋째, 실시간 통계 기능

태그 테이블은 실시간 통계 기능을 지원한다.

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


텍스트 검색 기능 지원


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

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

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

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

반면, 마크베이스에서는 로그 테이블 기반의 SEARCH라는 SQL 키워드를 제공함으로써 실시간 단어 검색이 가능하도록 하였다.

이를 통해 장비로부터 발생된 임의의 에러 텍스트를 순식간에 검색할 수 있게 되었다.

Code Block
languagesql
-- 예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 혹은 주기적인 프로그램을 통해서 마크베이스가 일정 크기 이상의 데이터를 유지하지 않도록 손쉽게 관리할 수 있다.

로그 테이블의 경우 

아래 모든 문법 지원 

Code Block
languagesql
-- 사용 예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');

태그 테이블의 경우 

아래 한가지 문법 지원 

Code Block
languagesql

-- 2016년 6월 15일 이전의 데이터를 모두 삭제하라.
DELETE FROM tag BEFORE TO_DATE('2016-06-15', 'YYYY-MM-DD');

자동화된 데이터 수집


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

이를 통해 syslog 나 웹서버 로그 등의 이미 정형화된 데이터를 수집할 수 있을 뿐만 아니라 사용자가 임의로 정의한 로그 포맷의 경우에도 매우 쉽게 변환하여 자동으로 수집할 수 있는 기능을 제공한다.