Posting

Machbase의 최신 소식을 지금 만나보세요

[MACHBASE 기초] TAG 컬럼 확장

마크베이스는 로그성 머신 데이터를 초고속으로 수집,저장하고 조회할 수 있는 시계열 DBMS로
V5.0 부터는 스마트 팩토리의 설비에서 발생하는 센서 데이터를 처리하기 위한 특화된 기능을 제공한다.
센서 데이터는 일반적으로 센서ID, 발생시간, 측정값 3개의 필드를 기본적으로 가지고 있는데
필요에 따라서 공장 정보, 설비 정보 등의 추가 칼럼이 필요한 경우도 있고 측정값도 숫자형만 있는 것이 아니라 문자형 데이터가 있을 수도 있다.
또한 측정값 이외에 데이터의 품질 지수를 나타내는 필드가 올 수도 있다.
이러한 형태의 센서 데이터를 효율적으로 저장하고 활용하기 위한 방법을 설명하고자 한다.

TAG 테이블

마크베이스 V5.0 부터 적용된 센서 데이터 전용 테이블로 아래와 같은 몇가지 특징을 가지고 있다.
– 테이블명이 “TAG”로 고정되어 있고 사용자가 임의로 변경할 수 없다.
– 데이터베이스 전체에 1개의 TAG 테이블만 생성할 수 있다.
– 기본적으로 TAGID, TIMESTAMP, VALUE 3개 칼럼으로 생성된다.
– 사용자가 메타 칼럼과 데이터 칼럼을 추가적으로 생성할 수 있다.
– 일종의 가상 테이블로 시스템 내부적으로는 별도의 데이터 테이블, 메타 테이블, 롤업 테이블로 구성된다.
– TAG 테이블 데이터를 Tag Analyzer를 통해서 웹기반 대시보드를 통해서 트렌드 모니터링할 수 있다.

데이터 소스

산업별, 시스템 구성별로 약간씩 차이가 나겠지만, 제조 공장의 설비에서 발생하는 센서 데이터를
csv 파일 형태로 주기적으로 생성된다고 볼 때 각 필드의 구성과 샘플 데이터는 아래와 같다.
파일명이 data.csv 라고 하면, 날짜, 설비명,태그명,측정값,품질지수 필드로 구성되어 있다.

2019-10-05 12:27:32.542,equip01,tag001,26.216017188,4
 2019-10-05 12:27:32.542,equip01,tag002,95.1460536686,1
 2019-10-05 12:27:32.542,equip01,tag003,66.1602503844,1
 2019-10-05 12:27:32.542,equip01,tag004,57.4653195742,5
 2019-10-05 12:27:32.542,equip01,tag005,66.4480873797,8
 2019-10-05 12:27:32.542,equip01,tag006,2.01655918139,5
 2019-10-05 12:27:32.542,equip01,tag007,91.6400257249,3
 2019-10-05 12:27:32.542,equip01,tag008,77.7721477613,2
 2019-10-05 12:27:32.542,equip01,tag009,6.39913158443,3
 2019-10-05 12:27:32.542,equip01,tag010,80.3763337321,9
 2019-10-05 12:27:32.542,equip01,tag011,54.346722117,6
 2019-10-05 12:27:32.542,equip01,tag012,84.0559158141,7
 2019-10-05 12:27:32.542,equip01,tag013,74.3329675423,9
 

이러한 형식의 데이터는 TAG 테이블의 기본 구성보다 많은 칼럼이 필요하므로 TAG 테이블을 확장해서 사용해야 한다.

TAG 테이블 확장

TAG 테이블의 기본 3개 칼럼이외에 필요한 칼럼을 추가하여 사용할 수 있다.
칼럼의 성격상 TAG에 부연되는 메타성 칼럼이 있고, 설비로부터 측정되는 값과 같은 데이터 칼럼이 있을 수 있다.

1) 메타 칼럼 확장

메타 칼럼은 태그가 설치된 공장명, 설비명, 설비설명 등 1개 태그에 대해서 고정된 값을 가지는 칼럼을 의미한다.
예를 들어 설비명, 태그명, 태그 설명을 메타 칼럼으로 추가하여 사용할 수 있다.
아래 구문에서 처럼 METADATA() 에 칼럼을 추가하면 됩니다.

CREATE TAGDATA TABLE TAG
 (
 )
 METADATA
 (
     EQUIPMENT VARCHAR(16),
     TAG_NAME  VARCHAR(16)
 );

2) 데이터 칼럼 확장

데이터 칼럼은 설비의 센서로 부터 측정되는 값이외에 데이터를 수집할 때 마다 함께 생성되는 칼럼 값이다.
예를 들면, 측정값을 품질 지수를 나타내는 quality 칼럼을 추가하는 경우 아래와 같이 생성한다.

CREATE TAGDATA TABLE TAG
(
    TAG_ID    VARCHAR(40) PRIMARY KEY,   # EQUIPMENT_TAGNAME
    TIMESTAMP DATEATIME   BASETIME,
    VALUE     DOUBLE      SUMMARIZED,
    QUALITY   INTEGER
)

3) 테이블 생성

최종적으로 테이블을 생성하는 구문은 아래와 같다.

CREATE TAGDATA TABLE TAG
(
    TAG_ID    VARCHAR(40) PRIMARY KEY, # EQUIPMENT_TAGNAME
    TIMESTAMP DATEATIME   BASETIME,
    VALUE     DOUBLE      SUMMARIZED,
    QUALITY   INTEGER
)
METADATA
(
    EQUIPMENT VARCHAR(16),
    TAG_NAME  VARCHAR(16)
);

machsql 상에서 직접 생성 구문을 입력하여도 되고 스크립트 파일로 저장하고 OS상에서 machsql -f 옵션으로 생성해도 된다.
스크립트 파일명을 create_tag_table.sql 이라고 하면, 아래와 같이 실행하면 TAG 테이블이 생성된다.

$ machsql -f create_tag_table.sql

# 테이블 생성후에 machsql 상에서 확인한 TAG 테이블의 스키마는 아래와 같다.
Mach> desc tag;
[ COLUMN ]
----------------------------------------------------------------------------------------------------
NAME      TYPE     LENGTH
----------------------------------------------------------------------------------------------------
TAG_ID    varchar  40
TIMESTAMP datetime 31
VALUE     double   17
QUALITY   integer  11
[ META-COLUMN ]
----------------------------------------------------------------------------------------------------
NAME      TYPE     LENGTH
----------------------------------------------------------------------------------------------------
EQUIPMENT varchar  16
TAG_NAME  varchar  16

데이터 입력

원본 데이터 소스가 csv 파일로 생성되어 있는 경우 csvimort 유틸리티를 이용하여 TAG 테이블에 데이터를 입력할 수 있다.
마크베이스 V5.7 부터는 미리 TAG META를 입력하지 않아도 데이터를 입력할 때 자동으로 TAG META 정보도 입력된다.
자동 입력의 수준을 결정하는 프로퍼티를 machbase.conf 에서 설정할 수 있는데 옵션 항목의 값은 다음과 같다.

TAGDATA_AUTO_META_INSERT=2

설정 가능한 프로퍼티의 값과 설명은 아래와 같다.

설명
0META 칼럼 정보를 자동으로 입력하지 않는다. 이 경우에는 기존처럼 TAG META를 별도로 입력해주어야 한다.
1PRIMARY KEY 로 설정된 TAG NAME 칼럼만 자동으로 입력한다. 추가 META 칼럼에 대해서는 입력하지 않는다. (기본값)
2TAG NAME과 추가 META 칼럼을 자동으로 입력한다.

1이 기본값이므로 2로 변경하는 경우 아래와 같이 마크베이스를 재실행하여야 한다.

machadmin -s
machadmin -u

데이터 입력은 github 에서 레포지터리를 다운로드 받아서  컴파일하고   append  를 실행하면 된다.
https://github.com/MACHBASE/tagtable_expansion )

make
append

데이터 조회

입력된 TAG 테이블에 대해서 조회하는 방법은 아래와 같다.
TAG_ID 칼럼이 EQUIPMENT_TAGNAME 형식으로 구성되어 있으므로 아래와 같이 TAG_ID 칼럼에 대해서 LIKE 조건 검색을 해도 된다.

SELECT COUNT(*) FROM TAG WHERE TAG_ID LIKE 'equip01_%';
SELECT COUNT(*) FROM TAG WHERE TAG_ID LIKE 'equip01_%' AND TAG_ID LIKE '%_tag001';

그러나 LIKE 조건 검색이 항목이 많아지면 쿼리가 복잡해지고 가독성이 떨어진다.
이 때 META 칼럼을 대상으로 equal 검색을 해도 동일한 결과가 출력된다.

SELECT COUNT(*) FROM TAG WHERE EQUIPMENT = 'equip01';
SELECT COUNT(*) FROM TAG WHERE EQUIPMENT = 'equip01' AND TAG_NAME = 'tag001';

마무리

지금까지 설비에서 발생하는 태그 데이터를 마크베이스 TAG 테이블에 입력하고 조회하는 방법을 알아보았다.
메타 칼럼에 대해서 확장해서 사용할 수 있으므로 시스템 내부적으로는 _TAG_META 테이블과 JOIN이 발생하지만
사용자는 복잡한 JOIN 구문 없이 TAG 테이블만을 대상으로 데이터를 입력하고 조회하면 되므로 편하게 사용할 수 있다.

연관 포스트

C언어로 Binary data를 Machbase에 넣기

1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

[MACHBASE 연동] Android studio에서 JDBC 연결하기

마크베이스 기술지원본부 이현민 1. 개요 수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을