Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 11 Next »

사용자는 사용할 TAG라는 이름의  테이블을 명시적으로 생성하여야 하며, 이후에 이 테이블을 조작함으로써 센서데이터를 다양한 형태로 활용할 수 있다.

최초 데이터베이스가 설치된 경우에는 TAG 테이블이 없으므로 유의한다.

TAG 테이블은 기본적으로 사용자의 센서 데이터를 저장하기 위한 목적이므로, 반드시 아래의 세가지 필수 항목은 반드시 포함되어야 한다.

  • 이름
  • 입력 시간
  • 값 

그러나, 마크베이스의 TAG 테이블은 위의 세가지 뿐만 아니라 부가 컬럼의 입력도 허용하기 때문에 위의 필수 컬럼을 위한 키워드를 동반한다.

  • 태그 이름 : primary key
  • 태그 입력 시간 : basetime
  • 태그 값 : summarized

그리고, 이 태그 이름은 다음 장에 설명될 태그 메타 정보로서 활용된다.

기본 태그 테이블 생성

가장 간단한 태그 테이블은 아래와 같이 생성된다.

Mach> create tagdata table TAG (name varchar(20) primary key, time datetime, value double);
[ERR-02253: Mandatory column definition (PRIMARY KEY / BASETIME / SUMMARIZED) is missing.]
==> 위와 같이 키워드를 넣지 않으면, 위와 같은 에러가 발생한다.

Mach> create tagdata table TAG (name varchar(20) primary key, time datetime basetime, value double summarized);
Executed successfully.
Elapsed time: 0.643
Mach> desc tag;
[ COLUMN ]                              
----------------------------------------------------------------
NAME                          TYPE                LENGTH        
----------------------------------------------------------------
NAME                          varchar             20                  
TIME                          datetime            31              
VALUE                         double              17                  

즉,  TAG 라는 이름을 가진 테이블이 생성되었다.

 성능 향상을 위해 4개의 파티션으로  나뉘어진 내부 테이블이 생성된다.

부가 컬럼의 지정

실제로 TAG 테이블을 활용할 때 단지 3개의 컬럼만으로는 주어진 문제를 해결하기 힘든 경우가 있다.

특히, 입력되는 센서 데이터의 정보가 이름과 시간, 값 뿐만 아니라 특정 그룹이나 인터넷 주소의 경우도 있기 때문에 아래와 같이 추가할 수 있다.

Mach> create tagdata table TAG (name varchar(20) primary key, time datetime basetime, value double summarized, grpid short, myip ipv4) ;
Executed successfully.
Elapsed time: 0.633
Mach> desc tag;
[ COLUMN ]                              
----------------------------------------------------------------
NAME                          TYPE                LENGTH        
----------------------------------------------------------------
NAME                          varchar             20                  
TIME                          datetime            31              
VALUE                         double              17                  
GRPID                         short               6              <=== 추가됨. 
MYIP                          ipv4                15             <=== 추가됨 

그러나, VARCHAR 타입의 값은 부가 컬럼에 들어갈 수 없다는 점에 유의하자.

Mach> create tagdata table TAG (name varchar(20) primary key, time datetime basetime, value double summarized, myname varchar(100)) ;
[ERR-01851: Variable length columns are not allowed in tag table.]

문자열 타입의 경우에는 위와 같이 에러가 발생한다.

성능 및 메모리 사용량 조절을 위한 파티션 지정

파티션 갯수가 디폴트로 4개로 설정되어 있는데, 만일 메모리 및 CPU 사용량을 조절하려는 목적으로 이 갯수를 다음과 같이 지정해서 조절할 수 있다.

부가 프로퍼티 tag_partition_count 에 해당 값을 넣어서 생성한다.

이 값이 커지면, 병렬성이 높아져서 성능이 좋아지지만, 메모리 사용량이 늘어나고, 함께 ROLLUP 생성을 위해 CPU 사용량도 함께 늘어난다.

Mach> create tagdata table TAG (name varchar(20) primary key, time datetime basetime, value double summarized) tag_partition_count=1;
Executed successfully.
Elapsed time: 0.473
Mach> 

메모리 및 CPU 사용량의 최소화 하기 위한 목적으로 1으로 설정하는 예이다.


태그 테이블 삭제

만일 생성된 태그 테이블을 다시 만들거나, 필요가 없어져 디스크 공간을 확보해야 하는 경우에는 다음과 같은 DROP 명령어를 통해 삭제할 수 있다.

TAG 테이블에 관련된 모든 자료, 즉 태그 데이터, 메타데이터, ROLLUP 테이블이 모두 삭제되므로 유의해야 한다.

Mach> drop table tag;
Dropped successfully.
Elapsed time: 0.779
Mach> desc tag;
tag does not exist.




  • No labels