Table of Contents |
---|
이름 만을 갖는 태그 메타
...
태그 메타의 생성
아래는 가장 기본적인 태그 메타가 생성되는 TAG 테이블의 생성 명령어이다.
Code Block | ||
---|---|---|
| ||
create tagdata table TAG (name varchar(20) primary key, time datetime basetime, value double summarized);
Mach> desc tag;
[ COLUMN ]
----------------------------------------------------------------
NAME TYPE LENGTH
----------------------------------------------------------------
NAME varchar 20
TIME datetime 31
VALUE double 17 |
위는 기본적인 TAG 테이블을 생성한 것이며, 태그 메타에 대한 별도의 정보는 보여지지 않는다.
이 경우 태그 메타는 VARCHAR(20)의 기본적인 이름 만을 가진다.
태그 메타의 입력
이제 TAG1 이라는 이름을 갖는 하나의 태그 정보를 입력해 보자.
Code Block | ||
---|---|---|
| ||
Mach> insert into tag metadata values ('TAG_0001');
1 row(s) inserted.
Elapsed time: 0.000
|
위의 Query를 통해서 TAG_0001 이라는 이름을 갖는 하나의 태그를 생성하였다.
태그 메타의 출력
마크베이스에서는 입력된 태그 메타의 정보를 확인하기 위한 특별한 테이블인 _tag_meta 를 제공한다.
따라서, 사용자는 다음과 같은 질의를 통해서 마크베이스에 입력된 모든 태그의 정보를 확인할 수 있다.
Code Block | ||
---|---|---|
| ||
Mach> select * from _tag_meta;
ID NAME
----------------------------------------------
1 TAG_0001
[1] row(s) selected.
Elapsed time: 0.001 |
위의 Query를 통해서 TAG_0001 이라는 NAME을 갖는 하나의 태그를 생성하였다.
ID는 내부적으로 관리되는 값으로서 자동으로 부여된다.
태그 메타의 수정
마크베이스는 입력된 태그 메타 정보를 수정할 수 있도록 해 주는데, 다음과 같이 이름이 수정 가능하다.
Code Block | ||
---|---|---|
| ||
Mach> update tag metadata set name = 'NEW_0001' where NAME = 'TAG_0001';
1 row(s) updated.
Elapsed time: 0.001
Mach> select * from _tag_meta;
ID NAME
----------------------------------------------
1 NEW_0001
[1] row(s) selected.
Elapsed time: 0.001
|
위와 같이 이름이 TAG_0001에서 NEW_0001로 수정된 것을 확인할 수 있다.
태그 메타의 삭제
아래와 같이 실제 태그 메타의 정보를 삭제할 수 있다.
Code Block | ||
---|---|---|
| ||
Mach> delete from tag metadata where name = 'NEW_0001';
1 row(s) deleted.
Elapsed time: 0.001
Mach> select * from _tag_meta;
ID NAME
----------------------------------------------
[0] row(s) selected.
Elapsed time: 0.000
Mach>
|
그러나, 주의할 점은 이렇게 태그 메타가 삭제되었다고 하더라도, 과거에 입력된 태그의 실제 데이터가 삭제되는 것은 아니라는 것이다.
추가 정보를 갖는 태그 메타
...
태그 메타의 생성
아래는 태그 메타의 정보에 16비트 정수와 시간 그리고, IPv4 의 정보를 부가적으로 더 추가해서 만들어 본다.
주의할 점은 일단 생성된 태그 메타에 대해 값은 수정할 수 있지만, 그 구조는 수정할 수 없다는 것이다.
Code Block | ||
---|---|---|
| ||
create tagdata table TAG (name varchar(20) primary key, time datetime basetime, value double summarized)
metadata (type short, create_date datetime, srcip ipv4) ;
Mach> desc tag;
[ COLUMN ]
----------------------------------------------------------------
NAME TYPE LENGTH
----------------------------------------------------------------
NAME varchar 20
TIME datetime 31
VALUE double 17
[ META-COLUMN ]
----------------------------------------------------------------
NAME TYPE LENGTH
----------------------------------------------------------------
TYPE short 6
CREATE_DATE datetime 31
SRCIP ipv4 15
|
태그 메타의 입력
이름 뿐만 아니라 부가 정보가 있는 상태에서 아래와 같이 입력해서 정보를 확인할 수 있다.
Code Block | ||
---|---|---|
| ||
Mach> insert into tag metadata(name) values ('TAG_0001');
1 row(s) inserted.
Elapsed time: 0.001
Mach> select * from _tag_meta;
ID NAME TYPE CREATE_DATE SRCIP
-------------------------------------------------------------------------------------------------------------
1 TAG_0001 NULL NULL NULL
[1] row(s) selected.
Elapsed time: 0.001
|
위와 같이 NAME 외 다른 컬럼에는 NULL이 입력된 것을 알 수 있다.
이제 부가 정보를 아래와 같이 더 넣어 보자.
Code Block | ||
---|---|---|
| ||
Mach> insert into tag metadata values ('TAG_0002', 99, '2010-01-01', '1.1.1.1');
1 row(s) inserted.
Elapsed time: 0.001
Mach> select * from _tag_meta;
ID NAME TYPE CREATE_DATE SRCIP
-------------------------------------------------------------------------------------------------------------
1 TAG_0001 NULL NULL NULL
2 TAG_0002 99 2010-01-01 00:00:00 000:000:000 1.1.1.1
[2] row(s) selected.
Elapsed time: 0.002 |
부가 정보를 위와 같이 넣었고, 각 태그 메타가 주어진 풍부한 정보를 가질 수 있게 되었다.
태그 메타의 수정
이제 TAG_0001의 타입을 NULL에서 11로 수정해 보자.
Code Block | ||
---|---|---|
| ||
Mach> update tag metadata set type = 11 where name = 'TAG_0001';
1 row(s) updated.
Elapsed time: 0.001
Mach> select * from _tag_meta;
ID NAME TYPE CREATE_DATE SRCIP
-------------------------------------------------------------------------------------------------------------
2 TAG_0002 99 2010-01-01 00:00:00 000:000:000 1.1.1.1
1 TAG_0001 11 NULL NULL
[2] row(s) selected.
Elapsed time: 0.001 |
위와 같이 수정되었다.
즉, UPDATE 구문을 통해 모든 필드의 값을 수정할 수 있다.
단, 반드시 WHERE 절에 NAME이 지정되어야 하는 것은 공통적인 제약 사항이다.
Rest API를 통한 태그 메타
...
조회
...
모든 태그 리스트 얻기
아래는 마크베이스 포함된 모든 태그의 리스트를 얻는 예제이다.
Code Block |
---|
Host:~$ curl -G "http://192.168.0.148:5001/machiot-rest-api/tags/list"
{"ErrorCode": 0,
"ErrorMessage": "",
"Data": [{"NAME": "TAG_0001"},
{"NAME": "TAG_0002"}]}
Host:~$ |
특정 태그의 시간 범위 얻기
아래는 원하는 태그가 가지고 있는 데이터의 최소 및 최대 시간 범위를 얻는 예제이다.
이기능은 특정 태그의 차트를 그릴 때 매우 유용하다.
...
문법
Code Block |
---|
{MWA URL}/machiot-rest-api/tags/range/ # Time Range of whole DB
{MWA URL}/machiot-rest-api/tags/range/{TagName} # Time Range of a specific Tag |
전체 시간 범위
Code Block |
---|
Host:~$ curl -G "http://192.168.0.148:5001/machiot-rest-api/tags/range/"
{"ErrorCode": 0,
"ErrorMessage": "",
"Data": [{"MAX": "2018-02-10 10:00:00 000:000:000", "MIN": "2018-01-01 01:00:00 000:000:000"}]}
Host:~$ |
특정 태그의 시간 범위
Code Block |
---|
Host:~$ curl -G "http://192.168.0.148:5001/machiot-rest-api/tags/range/TAG_0001"
{"ErrorCode": 0, "ErrorMessage": "", "Data": [{"MAX": "2018-01-10 10:00:00 000:000:000", "MIN": "2018-01-01 01:00:00 000:000:000"}]}\
Host:~$
Host:~$ curl -G "http://192.168.0.148:5001/machiot-rest-api/tags/range/TAG_0002"
{"ErrorCode": 0, "ErrorMessage": "", "Data": [{"MAX": "2018-02-10 10:00:00 000:000:000", "MIN": "2018-02-01 01:00:00 000:000:000"}]}\
Host:~$ |