마크베이스 사용방법


마크베이스 5.0

작성자
machbase
작성일
2018-08-16 12:16
조회
247

마크베이스 5.0


제품 개요


마크베이스 5.0에서 새롭게 소개된 가장 큰 변화는 스마트 팩토리와 같은 대규모의 센서 데이터 처리에 대한 혁신적인 기능의 지원이다.


제조 현장에서 대량의 센서 데이터에 대한 신속한 저장과 처리가 가능하도록 다양한 기능을 추가하였다.
특히 수많은 센서 데이터를 저장하지 못한 경우 또는 저장은 하였으나 저장 후 활용이 어려웠다면 마크베이스 5.0는 이를 해결할 수 있는 해결책이 될 것으로 생각한다.


마크베이스 5.0 특, 장점



  • 초당 수만 건에서 수십만 건의 센서 데이터를 실시간으로 입력할 수 있다.

  • 마이크로에서 나노 단위의 시간 해상도로 센서 데이터를 입력할 수 있다.

  • 백만 개 이상의 서로 다른 센서를 저장하고, 추가할 수 있다.

  • 수억에서 수십억 건의 입력된 센서 데이터에서 원하는 센서의 원하는 시간 범위 데이터를 즉시 얻을 수 있다.

  • 특정 센서에 대해 수개월 혹은 수년간의 통계 트렌드 데이터를 즉시 얻을 수 있다.

  • 실시간으로 입력된 데이터에 대한 분석을 통해 원하는 경우 특정 테이블에 입력할 수 있다.

  • 웹을 통해 특정 센서의 다년간의 통계 그래프를 그리고, 이를 추적할 수 있으며, 비정상 상황에서의 해당 실제 데이터를 쉽게 얻을 수 있다.


 
센서 데이터란?


일반적으로 스마트 팩토리와 같은 자동화된 공장 혹은 장비의 수많은 센서를 통해 온도, 압력 등의 다양한 형태의 실시간 데이터가 생성된다.


이러한 데이터를 총칭하여 센서 데이터라고 부르는데, 센서 데이터는 일반적으로 PLC(Programmable Logic Controller)라고 불리는 작은 하드웨어에서 초당 1회 혹은 초당 수십 회 이상으로 생성된다.


마크베이스 5.0에서는 이러한 센서 데이터를 빠르고 효율적으로 처리하기 위한 전문화된 테이블과 기능을 추가하였으며, 이를 통해 기존의 DBMS 솔루션으로 불가능했던 많은 일들이 가능하게 되었다.


아래는 실제로 PLC를 통해서 발생하는 데이터의 구조는 다음과 같다.


시간 데이터1 데이터2 데이터3 데이터4 ...
절대 혹은 상대시간 숫자형 혹은 비트형 좌동 좌동 좌동 좌동

PLC에서는 이러한 데이터가 초당 수회 혹은 수십 회의 데이터가 지속적으로 생성되지만, 최종적으로 사람이 분석하고 이해하는 센서 데이터의 정규화된 구조는 아래와 같다.


센서 이름 시간 데이터

String 형태


"TAG_QUX_01"


바이너리 형태


"2013-11-11 21:33:23"


숫자형


55.1


즉,  센서 데이터를 저장하고 처리한다는 것은 위의 구조화된 대규모의 데이터를 잘 조작할 수 있다는 의미이다.


센서 데이터 처리의 문제점


위에 언급한 바와 같이 이러한 센서 데이터에 대한 발생량이 점점 더 증가하는 추세이기 때문에 실제 산업 현장에서는 대량의 데이터 처리에 대한 많은 어려움을 겪고 있다.


아래의 그림은 실제 센서 데이터의 전체적인 처리와 관련된 프로세스를 간략하게 나타낸 그림이다.



PLC 형태로 수집된 센서 데이터는 실제로 그 최종 숫자가 적지 않다.


진동 센서의 경우 초당 수천에서 수만개의 데이터를 생산하기도 하는데, 이러한 대량 데이터의 저장소로서 적절한 솔루션을 선택하는 것도 무척 어려운 일이다. 아래는 센서 데이터의 숫자가 기하급수적으로 늘어날 경우에 겪게 되는 실제 문제들이다.



  • 저장 문제 : 초당 수만건의 데이터가 발생한다면 이를 적절하게 저장할 수 있는가?

  • 저장 확장성 문제: 지속적으로 데이터가 늘어날 경우 저장소를 확장할 수 있는가?

  • 추출 문제 : 이렇게 저장된 수천개의  데이터에 대해 센서의 이름과 특정 시간 범위의 데이터를 빠르게 초단위로 얻을 수 있는가?

  • 장기간의 통계 데이터 변화 추적 문제 : 수개월 혹은 수년간의 데이터가 저장되었을 경우 해당 센서 데이터의 통계적 변화 패턴을 확인할 수 있는가?

  • 통합적인 시각화 문제 : 특정 태그 혹은 집단에 대해 장기 혹은 단기적인 데이터 변화추이에 대한 시각화 및 비정상 패턴을 확인할 수 있는가?


마크베이스 5.0은 이러한 문제를 해결하기 위해 특별히 아래와 같은 기능들이 추가되었다.


 


마크베이스 5.0 특징


Tag Table 지원


마크베이스는 Ver. 5부터 Tag Table 이라는 새로운 형태의 테이블 타입을 지원한다.


이 테이블은 센서 데이터를 저장하기 위한 특별한 목적으로 개발되었으며, 그  컬럼 구조를 확장 가능하면서도 간결한 스키마를 제공한다.


마크베이스를 설치하면 사용자 SQL 스크립트를 통해 "TAG"라는 이름을 가진 테이블을 최초 한 개 생성할 수 있으며, 이 테이블에 수 만개 이상의 센서 데이터를 고속으로 저장할 수 있다.


이 테이블의 가장 큰 장점은



  • 수천 개 이상의 센서로부터 발생된 수억 건의 센서 데이터가 저장된 환경에서  임의의 센서명 및 시간 범위 데이터 추출에 대한 고성능 응답 시간을 보장


한다는 것이다.


기존의 마크베이스 테이블과 비교하면 다음과 같다.


테이블 종류 Tag Table Log Table Lookup Table
목적 센서데이터 처리에 최적화 텍스트 로그 데이터 처리에 최적화 일반 소규모 마스터 데이터
테이블 구조 (센서명, 시간, 데이터) 가 기본형 임의의 스키마 가능 Primary Key를 가진 임의의 스키마 가능
INSERT(입력) 성능 초당 수천에서 수십만 초당 수천에서 수십만 초당 수백건
질의 종류 센서명 + 시간 범위 한정 임의의 질의 가능 PK 기반의 임의 질의 가능
저장소 크기 디스크 한계 디스크 한계 메모리 한계

Tag 종류 증가에


따른 성능


탁월한 추출 성능 성능 저하 발생 저장 불가
DELETE (삭제)

시간 기준 Tag Table Level Lock 지원


(Idle 시간에 Batch 작업 필요)


시간 기준 Record Level Lock 지원


(임의의 시간에 Online 작업 가능)


PK 기준 Record Level Lock 지원


(언제라도 가능)


UPDATE(변경) 지원 지원 불가 지원 불가 PK 기준 Update 지원
INDEX 구조 3 단계의 Partitioning 실시간 인덱스 LSM 인덱스 Red/Black Memory Index
STREAM 지원 타켓 대상으로만 가능 (저장대상) 소스과 타켓 대상 모두 가능 (읽기 및 저장대상) 불가능
고려 사항 삭제 고려한 충분한 스토리지 확보 필요 Tag 입력을 위한 임시 저장소 메모리 한계 고려

대표적인 Tag 테이블에 대한 질의 형태는 다음과 같다.


SELECT * FROM TAG WHERE NAME = 'TAG_UX_01' and TIME BETWEEN TO_DATE('2018-01-01 00:00:00') and TO_DATE('2018-01-02 23:59:59');

이후로부터는 마크베이스의 Tag 테이블에 저장된 센서데이터를  Tag 데이터로 부르기로 하며, 이 Tag 데이터는 그 고유의 이름과 시간, 값의 3개의 컬럼을 가진 형태로 간주한다.


Tag Meta Table 지원


실제 현업 센서는 각기 고유의 이름을 가지고 있다.


사용자는 해당 센서의 기능이나 위치 혹은 장비 등과의 연관성을 통해 이해하기 쉽도록 네이밍을 하기 때문에 이러한 이름을 관리하고 처리하는 기능도 매우 중요하다.


마크베이스에서는 이러한 센서에 대한 부가 정보를 담고 있는 테이블을 Tag Meta Table(태그메타테이블)이라고 부르고, 이 테이블을 통해 마크베이스 모든 센서의 정보를 관리하도록 한다.


대부분의 경우 이름이 주요한 정보가 되지만 차후 부가적인 정보도 함께 저장될 수 있도록 확장 가능한 형태로 지원한다.
(Tag 테이블 생성시 SQL 문법으로 지원)


아래는 간단한 Insert 구문을 통해 Tag Meta 를 등록하고 활용하는 예를 나타낸 것이다.


insert into tag metadata values ('MTAG_C00');
insert into tag metadata values ('MTAG_C01');

또한, 마크베이스 V5는 수백 혹은 수천개의 태그 메타를 한꺼번에 등록할 수 있는 용도로 tagmetaimport 라는 도구를 별도로 제공한다.
자세한 활용법은 차후 다시 기술하도록 한다.


Rollup Table 지원


Rollup Table은 Tag 테이블이 생성될 때 내부적으로 자동으로 생성되는 내부 테이블이다.


이 테이블의 가장 큰 목적은



  • 모든 Tag에 대해 통계 수치에 따른 Long Term Trend 데이터의 자동 구축


이다.


이것은 사용자가 Tag 테이블에 임의의 Tag  데이터를 입력하면 마크베이스가 자동적으로 해당 Tag명에 대해 통계 테이블을 실시간으로 구축해 준다는 것이다.


이 통계 테이블을 우리는 Rollup 이라고 부르며 모든 Tag는 다섯개의 통계값, 즉 Sum, Count, Min, Max, Average 를 구축하게 되고 이 값은 세 종류의 시간 인터벌 초단위, 분단위, 시간단위로 생성된다.


정리하자면,  Tag 테이블에 임의의 Tag 값을 입력하게 되면, Rollup Table을 통해 임의의 태그에 대한 5종류의 통계 수치를 임의의 시간 범위로 언제나 빠르게 검색할 수 있다는 것이다.


이 Rollup 테이블을 통해 특정 태그의 다년간의 통계 그래프를 그릴 수 있거나 다수 태그에 대한 수개월 간의 평균값 추이나 최대 혹은 최소값에 대한 값의 트렌드를 즉시 확인할 수 있다.


또한 마크베이스는  아래와 같은 Query를 통해 임의의 Tag에 대한 Rollup 결과를 즉시 얻을 수 있도록 지원한다.


#TAG_00001 에 대해 아래의 시간 범위에 따른 초당 트렌드 값을 얻는다
SELECT /*+ ROLLUP(TAG, sec) */ time, value
FROM TAG
WHERE name = 'TAG_00001'
AND time between to_date('2018-01-01 00:00:00') and to_date('2018-01-01 01:59:59');

Stream 지원


마크베이스는 5.0에서 간단하지만 매우 강력한 스트림 처리 기능을 지원한다.


마크베이스에서의 스트림이란 입력(소스) 테이블과 출력(타켓) 테이블 사이에 존재하는 SQL 질의를 통해 실시간으로 데이터의 변환과 분석이 가능하게 하는 기능이다.
이 기능의 가장 큰 목적은 입력되는 입력 데이터를 실시간으로 판단하고, 이를 필요시 센서 테이블에 넣거나, 혹은 알람을 발생시키기 위한 것이다.


특징은 다음과 같다.



  • INSERT-SELECT 구문을 통한 실시간 데이터 분석

  • 다수의 STREAM 등록 및 수행 가능

  • 실시간 데이터 처리 모니터링 및 동작 조절 가능

  • 데이터의 입력 테이블은 로그 테이블만 가능 (제약 사항)

  • 데이터의 출력 테이블은 로그 및 Tag 테이블 모두 가능


아래와 같이 간단하게 동작을 표현할 수 있으며, 소스 테이블은 Temper는 Log 테이블이며, 타켓 테이블인  Event는 Tag 테이블이 될 수도 있고, Log 테이블이 될 수도 있다.



 


STREAM의 간단한 구문의 다음과 같다.


EXEC STREAM_CREATE(stream_name, “query_statement”)
EXEC STREAM_SEEK(stream_name, BEGIN | END)
EXEC STREAM_START(stream_name)
EXEC STREAM_STOP(stream_name)
EXEC STREAM_DROP(stream_name)

사용 예)


create table sample_srcip ( srcip IPV4, srcport INTEGER, dstip IPV4, dstport INTEGER);

create table event_tbl( srcip IPV4, dstport INTEGER);

EXEC STREAM_CREATE(event_obj,
‘INSERT INTO event_tbl
SELECT srcip, dstport FROM sample_data
WHERE dstport > 12332 ');

EXEC STREAM_SEEK(event_obj, SEEK_BEGIN);

EXEC STREAM_START(event_obj);

..... STREAM이 동작하는 구간 ....

# 정지 및 삭제
EXEC STREAM_STOP(event_obj);

EXEC STREAM_DROP(event_obj);

Tag Analyzer


Tag analyzer는 마크베이스의 UI 도구인 MWA에 포함된 새로운 기능이다.


이 기능은 사용자가 입력한 Tag 데이터에 대해서 시각적으로 Tag 데이터를 추적하고, 그 패턴을 자유롭게 확인할 수 있도록 해 주는 혁신적인 웹 기반의 응용 프로그램이다.


사용자는 보기 원하는 다수의 Tag와 통계의 종류를 선택하면 이 툴은 자동으로 해당 Tag에 대한 장기 트렌드 수치를 즉시 표시해 준다.


또한 임의의 시간 범위에 대한 Drill Down이 가능하기 때문에 특정 기간의 실제 Raw Data 까지 모두 시각적으로 볼 수 있는 강력한 도구이다.


더 자세한 내용은 동영상을 참조하거나 데모 사이트를 통해 확인할 수 있다.



Restful API 지원


마크베이스는 웹을 통한 데이터 추출을 적극적으로 지원한다.


아래는 실제 마크베이스가 지원하는 통계 데이터 추출 및 Raw 데이터 추출 API와 실제 사용 예를 나타낸 것이다.


마크베이스는 웹 기반의 솔루션을 가지고 있는 고객을 위해  이 API를 통해 보다 풍부하고 강력한 고객의 솔루션을 개발할 수 있는 가능성을 제공하고 있다.


마크베이스는 Rollup 데이터에 대한 추출 API, Raw 데이터에 대한 추출 API, 데이터 입력 API를 제공하고 있으며 예제을 통해 설명하도록 한다.


 


이상으로 마크베이스 5.0가 제공하는 Tag 센서 데이터 처리에 대한 기본적인 기능을 설명하였다.


이후에는 이러한 기능을 실제로 활용하는 예제를 소개하고자 한다.


 


http://www.machbase.com/download


Contact the Machbase team with your questions!
info@machbase.com

전체 24
번호 제목 작성자 작성일 추천 조회
24
마크베이스 V5 : Tutorial 6 (RestAPI with curl)
machbase | 2018.09.18 | 추천 0 | 조회 51
machbase 2018.09.18 0 51
23
마크베이스(Machbase) Tag Analyzer 사용법
machbase | 2018.08.27 | 추천 1 | 조회 114
machbase 2018.08.27 1 114
22
마크베이스 5.0 : Tutorial 4 (실제 데이터를 통한 Tag Analyzer 기초 활용)
machbase | 2018.08.27 | 추천 1 | 조회 89
machbase 2018.08.27 1 89
21
마크베이스 5.0 : Tutorial 5 (Tag Table with RestAPI)
machbase | 2018.08.24 | 추천 0 | 조회 100
machbase 2018.08.24 0 100
20
Machbase 5.0 : 센서데이터 홍수의 유일한 해결책
machbase | 2018.08.21 | 추천 1 | 조회 214
machbase 2018.08.21 1 214
19
마크베이스 5.0 : Tutorial 3 (Real Time Stream Insert : Many Sensors)
machbase | 2018.08.20 | 추천 0 | 조회 92
machbase 2018.08.20 0 92
18
마크베이스 5.0 : Tutorial 2 (Batch Loading : Many Sensors)
machbase | 2018.08.17 | 추천 0 | 조회 76
machbase 2018.08.17 0 76
17
마크베이스 5.0 : Tutorial 1 (Quick Start)
machbase | 2018.08.17 | 추천 0 | 조회 156
machbase 2018.08.17 0 156
16
마크베이스 5.0
machbase | 2018.08.16 | 추천 0 | 조회 247
machbase 2018.08.16 0 247
15
Machbase 5.0 TAG Table 사용법
machbase | 2018.08.10 | 추천 1 | 조회 150
machbase 2018.08.10 1 150