์คํธ๋ฆผ ํ์ฉ์ ์ํ ์ํ ์์
์ํ ๋ฐ์ดํฐ ๋ค์ด๋ก๋
์๋ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ๋ค.
## 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๋ก ํ์ธํ๋ฉด ์๋์ ๊ฐ๋ค.
๋ง์ง๋ง์ผ๋ก ์ ๋ ฅํ ๋ฐ์ดํฐ์ ๊ฐ์ด ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๊ฐ์ ๋นํด ํฌ๊ธฐ ๋๋ฌธ์ ๋ถ๊ฐ๋์ด ๋ณด์ด๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.