/
์ŠคํŠธ๋ฆผ ํ™œ์šฉ์„ ์œ„ํ•œ ์ƒ˜ํ”Œ ์˜ˆ์ œ

์ŠคํŠธ๋ฆผ ํ™œ์šฉ์„ ์œ„ํ•œ ์ƒ˜ํ”Œ ์˜ˆ์ œ

์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ

์•„๋ž˜ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ผ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

## 1. MACHBASE git repository์—์„œ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ cloneํ•œ๋‹ค.
$ git clone https://www.github.com/MACHBASE/TagTutorial.git MyTutorial

## 2. ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์••์ถ• ํ•ด์ œํ•œ๋‹ค.
$ cd MyTutorial/
$ gunzip edu_3_plc_stream/*.gz

## 3. ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ด๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•œ๋‹ค.
$ cd edu_3_plc_stream/

TAG, LOG ํ…Œ์ด๋ธ”์˜ ์ƒ์„ฑ

STREAM ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋“ค์„ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ • ํ›„ ์‹คํ–‰ํ•ด TAG, LOG ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.

$ pwd
~/MyTutorial/edu_3_plc_stream

## 1-1. TAG ํ…Œ์ด๋ธ” ์ƒ์„ฑ
$ machsql --server=127.0.0.1 --port=${MACHBASE_PORT_NO} --user=SYS --password=MANAGER --script=1_create_tag.sql
## 1-2. TAG Meta ๋กœ๋“œ
$ sh 2_load_meta.sh

## 2. LOG ํ…Œ์ด๋ธ” ์ƒ์„ฑ
$ machsql --server=127.0.0.1 --port=${MACHBASE_PORT_NO} --user=SYS --password=MANAGER --script=3_create_plc_tag_table.sql

STREAM ์ƒ์„ฑ, ๊ตฌ๋™

์ƒ์„ฑ๋œ TAG, LOG ํ…Œ์ด๋ธ”์— ๋งž๊ฒŒ ์ž‘์„ฑ๋œ ์ƒ˜ํ”Œ ํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•ด STREAM์„ ์‹œ์ž‘ํ•œ๋‹ค.

$ machsql --server=127.0.0.1 --port=${MACHBASE_PORT_NO} --user=SYS --password=MANAGER --script=4_plc_stream_tag.sql

ํ•ด๋‹น ์ƒ˜ํ”Œ ํŒŒ์ผ์— ํฌํ•จ๋œ ์ฟผ๋ฆฌ์—๋Š” ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฐ๊ฐ STREAM์„ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑ๋œ STREAM์„ ๊ตฌ๋™ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

## STREAM ์ƒ์„ฑ Query ์˜ˆ
## event_v0๋ผ๋Š” ์ด๋ฆ„์˜ MTAG_V00๋ฅผ name์œผ๋กœ ๊ฐ€์ง€๊ณ  plc_tag_table์— ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ค‘ tm๊ณผ v0 column ๋ฐ์ดํ„ฐ๋ฅผ time, value๋กœ ๊ฐ€์ง€๋Š” row๋ฅผ tag ํ…Œ์ด๋ธ”์— ์ž…๋ ฅํ•˜๋Š” STREAM์„ ์ƒ์„ฑ
EXEC STREAM_CREATE(event_v0, 'insert into tag select ''MTAG_V00'', tm, v0 from plc_tag_table;');
## STREAM ๊ตฌ๋™ Query ์˜ˆ
EXEC STREAM_START(event_v0);

STREAM์„ ์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™์‹œ์ผฐ๋‹ค๋ฉด ์ด์ œ๋ถ€ํ„ฐ plc_tag_table์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ์ˆœ๊ฐ„ ๊ฐ STREAM์ด ๋™์ž‘ํ•ด ํ•ด๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ TAG ํ…Œ์ด๋ธ”์— ์ž…๋ ฅํ•œ๋‹ค.

STREAM ์ƒํƒœ ํ™•์ธ

Machbase์—์„œ ์ง€์›ํ•˜๋Š” ๊ฐ€์ƒ ํ…Œ์ด๋ธ”์ธ v$streams๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰์ค‘์ธ STREAM์˜ ๊ฐฏ์ˆ˜, ์‚ฌ์šฉ ์ฟผ๋ฆฌ, ์ƒํƒœ, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Mach> desc v$streams;
[ COLUMN ]
----------------------------------------------------------------------------------------------------
NAME                                                        NULL?    TYPE                LENGTH
----------------------------------------------------------------------------------------------------
NAME                                                                 varchar             100
LAST_EX_TIME                                                         datetime            31
TABLE_NAME                                                           varchar             100
END_RID                                                              long                20
STATE                                                                varchar             10
QUERY_TXT                                                            varchar             2048
ERROR_MSG                                                            varchar             2048
FREQUENCY                                                            ulong               20

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋“  STREAM์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Mach> select state, name, table_name, query_txt from v$streams;
STATE   NAME     TABLE_NAME    QUERY_TXT
------------------------------------------------------------------------------------------------
RUNNING EVENT_V0 PLC_TAG_TABLE insert into tag select 'MTAG_V00', tm, v0 from plc_tag_table;
RUNNING EVENT_V1 PLC_TAG_TABLE insert into tag select 'MTAG_V00', tm, v1 from plc_tag_table;
RUNNING EVENT_C0 PLC_TAG_TABLE insert into tag select 'MTAG_C00', tm, c0 from plc_tag_table;
RUNNING EVENT_C1 PLC_TAG_TABLE insert into tag select 'MTAG_C01', tm, c1 from plc_tag_table;
RUNNING EVENT_C2 PLC_TAG_TABLE insert into tag select 'MTAG_C02', tm, c2 from plc_tag_table;
RUNNING EVENT_C3 PLC_TAG_TABLE insert into tag select 'MTAG_C03', tm, c3 from plc_tag_table;
RUNNING EVENT_C4 PLC_TAG_TABLE insert into tag select 'MTAG_C04', tm, c4 from plc_tag_table;
RUNNING EVENT_C5 PLC_TAG_TABLE insert into tag select 'MTAG_C05', tm, c5 from plc_tag_table;
RUNNING EVENT_C6 PLC_TAG_TABLE insert into tag select 'MTAG_C06', tm, c6 from plc_tag_table;
RUNNING EVENT_C7 PLC_TAG_TABLE insert into tag select 'MTAG_C07', tm, c7 from plc_tag_table;
RUNNING EVENT_C8 PLC_TAG_TABLE insert into tag select 'MTAG_C08', tm, c8 from plc_tag_table;
RUNNING EVENT_C9 PLC_TAG_TABLE insert into tag select 'MTAG_C09', tm, c9 from plc_tag_table;
RUNNING EVENT_C10 PLC_TAG_TABLE insert into tag select 'MTAG_C10', tm, c10 from plc_tag_table;
RUNNING EVENT_C11 PLC_TAG_TABLE insert into tag select 'MTAG_C11', tm, c11 from plc_tag_table;
RUNNING EVENT_C12 PLC_TAG_TABLE insert into tag select 'MTAG_C12', tm, c12 from plc_tag_table;
RUNNING EVENT_C13 PLC_TAG_TABLE insert into tag select 'MTAG_C13', tm, c13 from plc_tag_table;
RUNNING EVENT_C14 PLC_TAG_TABLE insert into tag select 'MTAG_C14', tm, c14 from plc_tag_table;
RUNNING EVENT_C15 PLC_TAG_TABLE insert into tag select 'MTAG_C15', tm, c15 from plc_tag_table;

๋ฐ์ดํ„ฐ ๋กœ๋“œ

STREAM์ด ๋ชจ๋‘ ๊ตฌ๋™์ค‘์ž„์„ ํ™•์ธํ–ˆ์œผ๋‹ˆ Machloader๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ์ž‘๋™์„ ํ™•์ธํ•œ๋‹ค.

STREAM์€ ์ž…๋ ฅ ๋ฐฉ์‹์— ๊ด€๊ณ„ ์—†์ด ์ž‘๋™ํ•˜๋ฏ€๋กœ CLI, JDBC, Collector ๋“ฑ ์–ด๋–ค ๋ฐฉ์‹์˜ ์ž…๋ ฅ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ TAG ํ…Œ์ด๋ธ”๋กœ ์ž๋™ ์ž…๋ ฅ๋œ๋‹ค.

$ cat 5_plc_tag_load.sh
machloader  -t plc_tag_table -i -d 5_plc_tag.csv -F "tm YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn"

$ sh 5_plc_tag_load.sh
-----------------------------------------------------------------
     Machbase Data Import/Export Utility.
     Release Version 6.5.1.official
     Copyright 2014, MACHBASE Corporation or its subsidiaries.
     All Rights Reserved.
-----------------------------------------------------------------
NLS            : US7ASCII            EXECUTE MODE   : IMPORT
TARGET TABLE   : plc_tag_table       DATA FILE      : 5_plc_tag.csv
IMPORT MODE    : APPEND              FIELD TERM     : ,
ROW TERM       : \n                  ENCLOSURE      : "
ESCAPE         : \                   ARRIVAL_TIME   : FALSE
ENCODING       : NONE                HEADER         : FALSE
CREATE TABLE   : FALSE

 Progress bar                       Imported records        Error records
                                               80000                    0

๋ฐ์ดํ„ฐ ๋กœ๋“œ ์ค‘ TAG ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Mach> select count(*) from TAG;
count(*)
-----------------------
16775979
[1] row(s) selected.
Mach> select count(*) from TAG;
count(*)
-----------------------
17609187
[1] row(s) selected.
Mach> select count(*) from TAG;
count(*)
-----------------------
18238357
[1] row(s) selected.
Elapsed time: 0.000

STREAM ๋™์ž‘์˜ ๊ฒฐ๊ณผ ํ™•์ธ

์•„๋ž˜์™€ ๊ฐ™์ด STREAM์ด ์†Œ์Šค ํ…Œ์ด๋ธ”(plc_tag_table)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋””๊นŒ์ง€ ์ฝ์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Mach> select name, state, end_rid from v$streams;
name      state   end_rid
---------------------------------------------------------
EVENT_V0  RUNNING 909912
EVENT_V1  RUNNING 1584671
EVENT_C0  RUNNING 1312416
EVENT_C1  RUNNING 1268520
EVENT_C2  RUNNING 1636800
EVENT_C3  RUNNING 1197840
EVENT_C4  RUNNING 622728
EVENT_C5  RUNNING 972780
EVENT_C6  RUNNING 1021512
EVENT_C7  RUNNING 1287474
EVENT_C8  RUNNING 826956
EVENT_C9  RUNNING 1639032
EVENT_C10 RUNNING 725954
EVENT_C11 RUNNING 1511436
EVENT_C12 RUNNING 531079
EVENT_C13 RUNNING 1004400
EVENT_C14 RUNNING 741768
EVENT_C15 RUNNING 746604
[18] row(s) selected.

end_rid column์˜ ๊ฐ’์ด ์†Œ์Šค ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ๊ฐฏ์ˆ˜์™€ ๋™์ผํ•˜๋ฉด ์†Œ์Šค ํ…Œ์ด๋ธ”์—์„œ ๋” ์ด์ƒ ์ฝ์„ ๊ฒƒ์ด ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.

Mach> select name, state, end_rid from v$streams;
name      state   end_rid
---------------------------------------------------------
EVENT_V0  RUNNING 2000000
EVENT_V1  RUNNING 2000000
EVENT_C0  RUNNING 2000000
EVENT_C1  RUNNING 2000000
EVENT_C2  RUNNING 2000000
EVENT_C3  RUNNING 2000000
EVENT_C4  RUNNING 2000000
EVENT_C5  RUNNING 2000000
EVENT_C6  RUNNING 2000000
EVENT_C7  RUNNING 2000000
EVENT_C8  RUNNING 2000000
EVENT_C9  RUNNING 2000000
EVENT_C10 RUNNING 2000000
EVENT_C11 RUNNING 2000000
EVENT_C12 RUNNING 2000000
EVENT_C13 RUNNING 2000000
EVENT_C14 RUNNING 2000000
EVENT_C15 RUNNING 2000000
[18] row(s) selected.

TAG ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜๊ฐ€ ์†Œ์Šค ํ…Œ์ด๋ธ”์˜ ๊ฐฏ์ˆ˜ * STREAM์˜ ๊ฐฏ์ˆ˜์™€ ๊ฐ™์œผ๋ฏ€๋กœ STREAM์ด ์ •์ƒ์ ์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Mach> select count(*) from TAG;
count(*)
-----------------------
36000000
[1] row(s) selected.

์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐ„ ๋ฒ”์œ„๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Mach> select min(time), max(time) from TAG;
min(time)                       max(time)
-------------------------------------------------------------------
2009-01-28 07:03:34 000:000:000 2009-01-28 12:36:58 020:000:000
[1] row(s) selected.

๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

STREAM์ด ์‹ค์ œ๋กœ ๊ฐ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ๋งˆ๋‹ค ๋ฐ˜์‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด insert ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Mach> insert into plc_tag_table values(TO_DATE('2009-01-28 12:37:00 000:000:000'), 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000, 50000);
1 row(s) inserted.

PLC_TAG_TABLE์— ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜๋ฅผ ๋” ์ถ”๊ฐ€ํ•œ ์ˆœ๊ฐ„ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ ์ŠคํŠธ๋ฆผ์˜ end_rid๊ฐ€ 1๊ฑด ๋Š˜์–ด 2000001 ๊ฑด์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Mach> select name, state, end_rid from v$streams;
name      state   end_rid
---------------------------------------------------------------
EVENT_V0  RUNNING 2000001
EVENT_V1  RUNNING 2000001
EVENT_C0  RUNNING 2000001
EVENT_C1  RUNNING 2000001
EVENT_C2  RUNNING 2000001
EVENT_C3  RUNNING 2000001
EVENT_C4  RUNNING 2000001
EVENT_C5  RUNNING 2000001
EVENT_C6  RUNNING 2000001
EVENT_C7  RUNNING 2000001
EVENT_C8  RUNNING 2000001
EVENT_C9  RUNNING 2000001
EVENT_C10 RUNNING 2000001
EVENT_C11 RUNNING 2000001
EVENT_C12 RUNNING 2000001
EVENT_C13 RUNNING 2000001
EVENT_C14 RUNNING 2000001
EVENT_C15 RUNNING 2000001
[18] row(s) selected.

TAG Analyzer ๊ทธ๋ž˜ํ”„

STREAM์œผ๋กœ ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ทธ๋ž˜ํ”„๋ฅผ Tag Analyzer๋กœ ํ™•์ธํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์— ๋น„ํ•ด ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๊ฐ๋˜์–ด ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Related content