<공부용 - 마이크베이스 홈페이지 참조>
Machbase 개요
- 마크베이스(Machbase)는 다양한 IoT 환경에서 발생하는 대량의 "센서 데이터"를 실시간으로 저장할 뿐만 아니라, 실시간 데이터 분석이 가능한 시계열 데이터베이스
- 마크베이스는 기존의 솔루션으로는 해결할 수 없었던 센서 데이터에 대한 데이터 저장과 처리에 대한 대량의 부하 문제를 해결하였으며, 다양한 기능을 통해 앞으로 폭증하는 센서 데이터에 대한 훌륭한 솔루션을 제공
센서 데이터의 형태
- ID : 이 값은, 해당 머신 데이터가 발생한 디바이스(원천 소스)의 유일성을 나타내는 기호 및 숫자를 나타내고, 해당 머신이나 센서의 일련 번호로 구성되며 32비트 혹은 64비트의 정수로 표현됨
- TIME : 이 값은, 해당 머신 데이터가 발생한 순간의 시간을 나타내고, 이 시간은 지속적으로 증가하는 경향이 있으며, 일반적으로 초 단위까지 표현하고 특별한 경우 나노초(nanosecond)까지 표현됨
- DATA : 이 값은, 2진 데이터로 주로 정수형, 실수형 숫자 혹은 IP 주소값 등의 형식의 데이터이며, 대표적으로 이 영역에는 특정 센서에서 나오는 온도, 가속도, 밝기 등의 숫자형 값이나, IPv4 혹은 IPv6와 같은 4바이트 혹은 16 바이트의 고정 데이터가 포함됨
- 마크베이스는 Tag Table을 제공하여, 위 형태의 센서 데이터를 초당 수십만건을 받아들일 수 있는 최적화된 아키텍처를 제공
PLC에서의 센서 데이터 구조
- 실제로 현장 (PLC : Programmable Logic Control) 에서 사용되는 센서 데이터는 위의 세 가지 속성으로만 표현되지 않고, 대부분의 경우 아래와 같이 다수의 센서 데이터가 모여진 형태로 저장되는 것이 일반적임
- 따라서 위 그림과 같은 형태의 데이터도 함께 받아 들일 수 있고, 쉽게 변환이 되어야 함
- Log Table을 제공하여, 위와 같은 형태의 PLC 데이터를 저장할 수 있는 구조 또한 제공
특징
Write Once, Read Many
- 마크베이스는 머신 데이터에 대한 특성을 최대한 살리기 위해 한번 입력된 주요 시계열 데이터에 대해서는 UPDATE가 발생할 수 없도록 설계
Lock-free 아키텍쳐 지원
- SELECT 연산에 대한 어떠한 Lock도 할당 받지 않도록 설계되었고, 변경 연산인 입력 혹은 삭제와도 서로 절대로 충돌하지 않는 고성능 구조로 설계
- 수십만 건의 데이터가 입력되고, 실시간으로 일부가 삭제되는 상황에서도 SELECT 연산은 수백만 건의 레코드에 대한 통계 연산을 빠른 속도록 진행
초고속 데이터 저장
- 특정 데이블에 인덱스가 다수 존재하는 상황에서도 최소 초당 300,000 건에서 최고 2,000,000 건까지 데이터를 받아들일 수 있음
STREAM 기능 지원
- 마크베이스는 버젼 5 부터 Edge Edition과 Fog Edition에 대해서 실시간 데이터 필터링을 지원하기 위해 STREAM 기능을 제공
- 특정 센서의 값이 특정 범위를 넘었을 경우 경고를 발생시키거나 내부적으로 입력된 데이터에 대한 실시간 평가를 하는 경우 매우 유용
실시간 인덱스 구성
- 초당 수십만건의 데이터가 입력되더라도 거의 실시간으로 인덱스를 구성
실시간 데이터 압축
- 컬럼형 데이터베이스에서 유래한, 머신 데이터의 데이터 중복성을 이용한 것으로서 동일한 값을 갖는 데이터가 많으면 많을수록 데이터의 중복을 코드화하여, 데이터 저장공간을 혁신적으로 줄이는 기술
- 데이터의 중복성이 높은 데이터에 대해 수백배까지 데이터를 압축
- 디스크에 저장될 물리적인 데이터 블럭을 미리 일정한 크기의 파티션으로 나누어 압축하여 디스크에 별도로 내림으로써 저장될 물리적 데이터의 량을 줄이고, 더불어 시스템이 유발시키는 I/O 비용을 급격하게 낮추는 기술
- 실제 논리적으로 압축된 데이터를 다시한번 더 압축하여 저장 공간의 효율성을 높이는데 일조
탁월한 질의 성능
- 두 개 이상의 인덱스를 하나의 질의문에서 처리할 수 있기 때문에 병렬로 데이터를 처리할 경우 몇 배나 더 빠른 성능을 기대할 수 있음
SELECT * FROM table1 WHERE c1 = 1 and c2 = 2;
시계열 데이터 특성 SQL 구문 지원
- 태그 (Tag) Table과 로그 (Log) Table을 통해 시계열 데이터 특징을 지원
- 로그테이블
- 입력 시간을 자동으로 저장
- 레코드가 데이터베이스에 저장되는 순간 나노 세컨드 단위의 timestamp를 _arrival_time이라는 필드로 저장
- 최근 데이터 우선 조회
- SELECT를 수행할 때 최근 데이터가 먼저 출력
- DURATION 키워드
- DURATION 키워드를 제공해, 특정 시간 범위 데이터를 입력 시간 기준으로 빠르게 조회할 수 있는 기능
- 이를 통해 복잡한 시간 연산자를 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;
- 태그테이블
- 고속 TAGID/시간 조건 검색 성능
- 태그 테이블은 임의의 시간 및 임의의 ID 기반 검색 성능이 탁월
- 고속 태그 데이터 입력
- 초당 수십만건의 센서데이터 입력에 있어서도 무리없이 데이터를 입력할 수 있음
- 실시간 통계 기능
- 태그 테이블에 저장된 데이터의 경우 실시간으로 다섯 종류의 통계를 자동적으로 생성하고, 이를 실시간으로 접근할 수 있는 기능을 제공
- 고속 TAGID/시간 조건 검색 성능
텍스트 검색 기능 지원
- 로그성 시계열 데이터를 저장하고 활용하는 사용자의 가장 중요한 실제 용도 중 하나는 특정 시점에 특정 event 가 발생했는지를 확인하는 것
- 로그 테이블 기반의 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';
로그테이블의 경우
-- 사용 예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');
선택적 삭제 지원
- 주어진 특정 조건에 레코드를 삭제할 수 있도록 기능을 제공
- embedded 개발사는 CRON 혹은 주기적인 프로그램을 통해서 마크베이스가 일정 크기 이상의 데이터를 유지하지 않도록 손쉽게 관리할 수 있음
태그 테이블의 경우
-- 2016년 6월 15일 이전의 데이터를 모두 삭제하라.
DELETE FROM tag BEFORE TO_DATE('2016-06-15', 'YYYY-MM-DD');
자동화된 데이터 수집
- 산재해 있는 머신 데이터 로그 파일로부터 데이터를 읽어 자동으로 전송해주는 기능인 "컬렉터 (Collector)" 기능을 제공
- syslog 나 웹서버 로그 등의 이미 정형화된 데이터를 수집할 수 있을 뿐만 아니라 사용자가 임의로 정의한 로그 포맷의 경우에도 매우 쉽게 변환하여 자동으로 수집할 수 있는 기능을 제공
<마크베이스 설치 및 실행 관련 참고자료>
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365559810/Machbase+6.7+Manual
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365560176/Windows
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365560400
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365560414/Cluster+Edition
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365561641/Collector
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365561496
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365561895/SQL
https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365562426/Python
'DevOps > Database' 카테고리의 다른 글
MariaDB docker 설치 - Ubuntu (0) | 2023.01.17 |
---|---|
Machbase - dbeaver 연결 및 오류 (0) | 2022.04.06 |
Database 종류 및 개념 정리 (0) | 2022.04.05 |
댓글