[Chapter 8] 데이터베이스
본문
8. 데이터베이스
8.1 소개 및 특징
eRun SCADA에서는 수천, 수만개의 데이터 포인트를 감시하고 제어를 효율적으로 하고 그 변화이력을 적절하게
제공하기 위해서 Realtime Database 서버를 운영합니다. 데이터베이스 시스템은 실시간으로 변하는 수많은 데이터를 빠르게
파일시스템에 저장하고, 원하는 기간동안의 데이터 검색서비스를 제공합니다. eRun SCADA에서는
eRunDB 데이터베이스 서버 서비스를 기본적으로 제공하며, 감시이력에 대한 조회를 빠르게 처리합니다.
아울러 근거리, 원거리 관계없이 서로 다른 데이터들을 유기적으로 연결시켜 주고 동시에 접근 및 가공이 가능하도록 하는 시스템,
그리고 현재 사용되는 대부분의 데이터베이스는 관계형 데이터베이스 모델로 RDBMS라고 합니다.
eRun SCADA에서는 스크립트 함수를 통해서 MS-SQL, ORACLE, MySQL, MariaDB등과 같은
상용 관계형 데이터베이스를 사용할 수 있습니다.
이번 장에서는 여러 DBMS에 대한 설정방법과 필드정보를 eRun에 등록하고 프로젝트에 연동하는 방법을 소개합니다.
■ 스크립트를 통한 복잡한 데이터에 대한 저장 및 가공이 용이합니다.
■ 대량의 태그에 대한 쿼리속도가 빠르고 일정합니다.
■ 상용 RDBMS와의 연결성을 제공하며, MS-ACCESS, MS-SQL, ORACLE, MySQL, MariaDB, ODBC에 대한 연결을 100%지원합니다.
■ 5가지 형태의 데이터베이스 프로세스 형태를 제공하고 있어서 활용성이 좋습니다.
■ 스크립트를 통한 SQL 질의문을 사용하여 손쉽게 데이터 조작 프로그램이 가능합니다.
■ 로컬 & 리모트 데이터베이스 처리가 가능합니다.
■ 정주기, 비주기로 실시간 처리 데이터를 저장합니다.
■ 경보이력에 대한 데이터 관리가 용이합니다.
8.2 데이터베이스 생성하기
프로젝트내에 데이터베이스를 생성한다는 것은 데이터베이스 처리모델을 생성한다는 의미입니다.
데이터베이스 처리모델이라는 것은 모델유형, 저장주기 등을 설정한 기준을 말합니다.
데이터 저장은 처리모델에 따라 저장되며, 여러 개의 데이터베이스 모델을 생성 할 수 있습니다.
프로젝트 관리에서 데이터베이스를 선택하고 마우스 우측버튼을 클릭하면 아래 그림과 같이 팝업메뉴가 나타납니다.
이것은 새로운 데이터베이스를 현재의 프로젝트에 생성 추가할 경우 나타나게 되는데
메뉴에서 '데이터베이스 생성' 메뉴만 활성화되어 있습니다.
데이터베이스 생성 메뉴를 클릭하면 아래와 같은 설정 화면이 나타납니다.
항목 |
설명 |
이름 | 데이터베이스 모델이름을 입력합니다. 태그 데이터베이스 저장 설정할 때 사용되는 이름입니다. 프로젝트에서 유일하게 입력해주어야 합니다. |
유형 | 5가지의 데이터베이스 유형이 있습니다.
MS-ACCESS : Microsoft MS-access 로컬 데이터베이스 MS-SQL : Microsoft MS-SQL Server 로컬/원격 데이터베이스 ORACLE : ORACLE 로컬/원격 데이터베이스 MySQL : MySQL 로컬/원격 데이터베이스 eRunDB : eRun SCADA RTDB 데이터베이스 |
데이터파일 자동삭제 | 데이터베이스 유형이 eRunDB일 경우 사용되는 항목이고 보관기간이 지난 데이터파일은 삭제됩니다. |
경보수집용 데이터베이스 | 경보태그에 대해서 알람이 발생하면 저장하는 데이터베이스입니다. |
저장방식 | ■ 정주기로 수집 태그값을 일정한 저장주기 간격으로 파일에 저장합니다. ■ 수시로 수집 태그값이 변경될 때마다 파일에 저장합니다. |
서버IP, 포트번호 | 본 데이터베이스 모델이 연결해야 하는 DB서버 IP, 포트번호 입니다. 이 정보는 프로젝트 속성에서 설정한 데이터베이스 IP,포트를 입력해 줍니다. |
저장주기 | 정주기 저장방식의 모델일 때 사용하는 저장간격 값입니다. 최소 1초간격 |
타임아웃 | 본 데이터베이스 모델이 DB서버에 접속하는 타임 제한시간입니다. 디폴트 3초 |
보관기간 | 데이터파일의 파일저장 기간입니다. 예로 90으로 설정되었다면 90일 이전 데이터파일은 모두 삭제됩니다. |
활성화 | 유형이 eRunDB일 때 사용하며, 프로젝트 실행 시 데이터베이스 프로세스 실행여부를 선택합니다. 활성화 태그 내용이 없고 활성화 체크가 되어있으면 무조건 프로세스 실행을 합니다. 반대로 활성화 태그가 등록되어 있으면 태그값에 따라서 가동/비가동이 됩니다. |
SQL-DB 서버 연결문자열 | SQL DB에 접속하기 위한 DB로 설정할 경우 SQL Server에 접속하기 위한 접속정보 문자열을 입력합니다. SQL을 기본으로 사용하는 DB에 OLE-DB로 접속을 시도하도록 합니다. 이것은 DB 제조사에 따라서 다르므로 버튼을 클릭하여 각 제품별, 모델별로의 DB연결 문자를 확인하여 입력하시면 됩니다. 입력하실 문자열은 각 데이터베이스의 서버유형과 각 제품의 유형에 맞추어 보시면 빨간색 문자가 있습니다. 그것을 기초로 만들어 넣으면 됩니다.
예시) ODBC 드라이버를 사용하는 경우 Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=TestDB; User=eRun;Password=eRun1234; |
MS-ACCESS 데이터베이스 생성 | DB 유형이 MS-ACCESS인 경우 사용되며, 저장경로에 파일이 없을 경우 생성하도록 합니다. MDB 파일명은 데이터베이스 설정의 이름이 됩니다. 정상적으로 생성되면 다음과 같은 메시지 화면이 나타납니다.
|
파일저장 경로사용 | 데이터파일, 경보파일 등이 저장될 위치를 지정합니다. 가급적이면 데이터베이스마다 별도의 폴더를 지정하도록 합니다. |
연결시험 | 데이터베이스 유형이 eRunDB가 아닌 SQL서버를 이용할 때 연결테스트를 합니다. SQL서버 연결이 정상적이면 아래와 같이 메시지가 나타납니다.
연결이 실패한 경우 아래와 같이 메시지가 나타납니다.
|
테이블 편집 | DB유형이 MS-ACCESS, MS-SQL, ORACLE, MySQL인 경우에 생성된 데이터베이스에 새 테이블을 생성할 때 사용합니다. 자세한 설명은 별도 [테이블 편집] 부분을 참고하시길 바랍니다. |
설명 | 본 데이터베이스 모델에 대한 설명을 입력합니다. |
8.3 데이터베이스 삭제
데이터베이스 삭제는 모델을 삭제하는 것입니다. 데이터베이스 항목에서 삭제하고자 하는 데이터베이스를
선택하고 우측 마우스를 클릭하면 아래 그림과 같이 팝업메뉴가 나타납니다.
팝업메뉴에서 [데이터베이스 삭제]를 클릭하면 해당 데이터베이스 '1SecLog' 삭제 확인메시지 박스가 나타납니다.
'확인'을 클릭하여 프로젝트에 등록 되어있는 데이터베이스를 삭제합니다.
8.4 SQL 테이블 생성하기
데이터베이스 유형이 MS-ACCESS, MS-SQL, ORACLE, MySQL 일 때 스튜디오에서 생성된 데이터베이스에
테이블을 생성하거나, 편집할 때 사용합니다.
eRun SCADA는 SQL 데이터베이스를 생성하거나, 테이블 생성, 편집을 스크립트를 이용해서도 진행이 가능합니다.
이부분은 뒷장의 SQL브라우저 활용 부분을 참고하세요.
※ 주의사항 : 테이블 편집은 스튜디오에서 생성된 테이블만 편집이 가능합니다.
테이블편집 버튼을 누르면 아래와 같이 화면이 나타납니다.
항목 |
설명 |
테이블 리스트 | 본 데이터베이스에 등록된 테이블 리스트 표시창입니다. 필드추가를 하려면 먼저 테이블 리스트에서 편집하려는 테이블을 선택합니다. |
필드 리스트 | 테이블 필드항목을 추가하거나 삭제합니다. ■ 필드명 필드임을 알파벳으로 시작되는 이름으로 입력합니다. DB엔진에서 사용 불가능한 필드명이 있으니 주의바랍니다. (예) time, date, ... ■ 필드형태 필드 데이터형을 선택합니다. ■ 길이 필드데이터 길이입니다. 보통 필드형태에 의해 정해집니다. ■ NULL 허용 새 레코드 추가시 NULL(빈) 허용할지 선택합니다. ■ 초기값 프로젝트 실행중에 새 레코드를 추가할 때 본 필드의 초기 값을 저장하도록 합니다. ■ 인덱스 키 검색을 빠르게 하기 위한 키를 선택합니다. |
새 테이블 | 새로운 테이블을 데이터베이스에 추가생성합니다.
|
테이블 삭제 | 선택한 테이블을 데이터베이스에서 삭제합니다. 테이블에 정의된 필드정보 및 저장된 데이터 모두 삭제됩니다. |
필드 추가 | 본 테이블 마지막라인에 필드를 추가합니다.
|
필드 삽입 | 본 테이블의 커서가 있는 위치에 필드를 삽입합니다. |
필드 삭제 | 커서가 있는 필드를 본 테이블에서 삭제합니다. |
8.5 SQL 브라우저 활용하기
SQL(Structured Query Language, 구조화 질의어)는 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를
관리하기 위해 설계된 특수 목적의 프로그래밍 언어입니다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리,
데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었으며, 많은 수의 데이터베이스 관련
프로그램들이 SQL을 표준으로 채택하고 있습니다.
eRun SCADA에서는 SQL 데이터베이스를 내장된 스크립트를 통하여 편리하게 데이터베이스
프로그램이 가능하기 때문에 강력한 SCADA TOOL이라고 할 수 있습니다. 스튜디오에 내장된
SQL브라우저를 통하여 데이터베이스에 접근하거나 간단한 SQL 명령어 시험 등을 할 수 있습니다.
새 SQL 편집창 생성
새로운 태그 1개를 추가등록합니다. 마지막 태그의 속성에 연속성
SQL 편집창 열기
한번에 동일한 태그종류, 디바이스, 어드레스를 여러 개 추가할 때 사용합니다. 한번에 추가하고자 하는 태그개수를
최소 1개 이상 입력합니다. 상세설명은 [태그 일괄생성]부분을 참고해주시기 바랍니다.
SQL 편집창 저장
현재 선택된 태그 1개 이상의 태그를 삭제합니다.
데이터베이스 연결
프로젝트에 등록된 SQL모델 유형의 데이터베이스 연결을 합니다.
프로젝트를 선택하면 등록된 데이터베이스 리스트가 표시됩니다. 연결버튼을 통해서 접속합니다.
항목 |
설명 |
프로젝트 | 프로젝트를 먼저 선택합니다. |
데이터베이스 | 선택한 프로젝트에 SQL 데이터베이스 모델이 있으면 표시됩니다. |
MDB소스폴더 | 데이터베이스 유형이 MS-ACCESS인 경우 MDB파일이 생성됩니다. MDB파일은 최초에 Project 폴더에 생성되고, 프로젝트를 배포할 때 Publish폴더에 MDB파일이 없으면 복사됩니다. 프로젝트가 실행되면 데이터베이스는 Publish 폴더에 있는 MDB파일을 사용하게 됩니다. 그렇기 때문에 스튜디오에서 SQL브라우저를 사용할 경우 MDB파일 폴더를 선택하고 진행합니다. ■ Project폴더 : 최초 MDB 파일을 생성할 때 저장되는 폴더 ■ Publish폴더 : 프로젝트 실행 시 저장되는 폴더 데이터베이스 이름앞에 "Project" 또는 "Publish"로 구분해서 표시합니다.
|
연결이 되면 아래와 같이 DB메시지 창과 연결상태 텍스트가 표시됩니다.
데이터베이스 연결 끊기
현재 연결 되어있는 데이터베이스 접속을 종료합니다.
[SQL 명령어]
SQL 명령어 문법 사용 예를 표시합니다. 현재 버전에서 지원하는 명령어는 다음과 같습니다.
SELECT, INSERT, DELETE, UPDATE, ALTER, TRUNCATE 입니다.
[SELECT 선택]
// SELECT field1, field2, ...
// FROM table1
// WHERE [condition]
// GROUP BY field
// HAVING [condition]
// ORDER BY [asc | desc]
[INSERT 선택]
// INSERT INTO table_name(field_name1, field_name2) VALUES ('value_name', 123.45)
[DELETE 선택]
// DELETE FROM table_name WHERE [condition]
[UPDATE 선택]
// UPDATE table_name SET field_name = data WHERE [condition]
[ALTER 선택]
// ALTER TABLE table_name ADD field_name VARCHAR(10)
[TRUNCATE 선택]
// TRUNCATE TABLE table_name
SQL명령 실행하기
SQL 문법에 따라 명령을 작성하고 실행할 영역을 마우스로 선택한 후 명령실행 버튼을 누르거나,
[Shift + Enter]를 클릭하면 SQL구문이 실행됩니다.
[선택영역 실행]
위의 SQL구문은 테이블('Persons')을 생성합니다.
테이블 리스트 갱신
데이터베이스에 존재하는 테이블 리스트를 모두 보여줍니다.
SQL 명령실행 중지
SQL명령을 중단시킵니다.
댓글목록 0