본문 바로가기
DevOps/Database

Machbase 6.7

by SeleniumBindingProtein 2022. 4. 5.
728x90
반응형

<공부용 - 마이크베이스 홈페이지 참조>

 

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 기반  검색 성능이 탁월
    •  고속 태그 데이터 입력
      • 초당 수십만건의 센서데이터 입력에 있어서도 무리없이 데이터를 입력할 수 있음
    •  실시간 통계 기능
      • 태그 테이블에 저장된 데이터의 경우 실시간으로 다섯 종류의 통계를 자동적으로 생성하고, 이를 실시간으로 접근할 수 있는 기능을 제공

 

 

텍스트 검색 기능 지원

  • 로그성 시계열 데이터를 저장하고 활용하는 사용자의 가장 중요한 실제 용도 중 하나는 특정 시점에 특정 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 

 

Machbase 6.7 Manual - Machbase 6.7 한국어 - 마크베이스 메뉴얼

 

machbase.atlassian.net

https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365560176/Windows

 

Windows 설치 - Machbase 6.7 한국어 - 마크베이스 메뉴얼

 

machbase.atlassian.net

https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365560400

 

라이선스 설치 - Machbase 6.7 한국어 - 마크베이스 메뉴얼

라이선스 파일이 없는 경우 라이선스가 없는 경우에도 서버가 구동되지만 일부 제약 사항이 있다. 평가 용도로만 사용할 수 있으며, 정식으로 사용하려는 경우에는 적법한 절차로 라이선스를

machbase.atlassian.net

https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365560414/Cluster+Edition 

 

Cluster Edition 설치 - Machbase 6.7 한국어 - 마크베이스 메뉴얼

 

machbase.atlassian.net

https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365561641/Collector

 

컬렉터 (Collector) - Machbase 6.7 한국어 - 마크베이스 메뉴얼

마크베이스 Collector 는 로그 데이터를 추출하여 변환 후 마크베이스 데이터베이스에 실시간으로 입력하는 도구다. 마크베이스 서버와 분리된 장비에 설치하여 실시간으로 로그 데이터를 수집해

machbase.atlassian.net

https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365561496

 

유틸리티 모음 - Machbase 6.7 한국어 - 마크베이스 메뉴얼

 

machbase.atlassian.net

https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365561895/SQL

 

SQL 레퍼런스 - Machbase 6.7 한국어 - 마크베이스 메뉴얼

 

machbase.atlassian.net

https://machbase.atlassian.net/wiki/spaces/MK67KR/pages/365562426/Python

 

Python - Machbase 6.7 한국어 - 마크베이스 메뉴얼

Python 모듈 사용 개요 마크베이스에서는 Python 모듈을 지원한다. 모듈을 설치함으로써 마크베이스 서버와 CLI 방식으로 값을 주고 받을 수 있는 클래스를 제공한다. 이를 활용해서 Python에서 쉽게

machbase.atlassian.net

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'DevOps > Database' 카테고리의 다른 글

MariaDB docker 설치 - Ubuntu  (0) 2023.01.17
Machbase - dbeaver 연결 및 오류  (0) 2022.04.06
Database 종류 및 개념 정리  (0) 2022.04.05

댓글