본문으로 건너뛰기

데이터베이스 모델

게이트웨이가 데이터를 어디에 무슨 모양으로 담는지 정리한 문서입니다. 보존 기간을 조정하거나, 디스크가 차거나, 직접 조회해야 할 때 봅니다.

게이트웨이 안에 Cassandra 가 하나 있습니다

Edge 는 자기 데이터를 로컬 Cassandra(127.0.0.1:9042, 키스페이스 PE)에 담습니다. 상위 플랫폼의 Cassandra(pp)와는 다른 것입니다 — 게이트웨이가 끊겨도 혼자 수집을 계속하기 위한 자기 저장소입니다.

테이블은 11개뿐이고 두 갈래로 나뉩니다.

접두사
APP_설정 — 무엇을 수집할지
TM_시계열·운영 기록 — 수집한 것과 그 과정

APP_ — 수집 설정

화면(연결 · 태그)에서 만든 것이 그대로 여기 들어갑니다.

테이블담는 것
APP_OPC연결 정의 — OPC_ID · 이름 · 프로토콜(OPC_TYPE) · 대상 IP/포트 · 수집 주기(TIMECYCLE) · 자동 수집 여부
APP_TAG태그 정의 — 읽을 주소와 자료형
이 둘이 사라지면 수집이 멈춥니다

시계열은 다시 모으면 되지만 설정은 사람이 만든 것이라 복구할 방법이 없습니다. 백업에서 이 두 테이블을 빠뜨리지 마세요 → 백업.


TM_ — 수집한 값과 운영 기록

테이블담는 것
TM_TAG_POINT원시 수집값 — 이 저장소의 본체
TM_TAG_POINT_ARCHIVE보관용 사본
TM_TAG_ERROR태그 단위 수집 오류
TM_TAG_STAT태그별 통계
TM_TAG_WRITE쓰기(제어) 이력
TM_OPC_STAT연결별 통계
TM_PLC_PING대상 장비 응답 확인 이력
TM_MONITOR게이트웨이 자원·상태
TM_API_LOGREST API 호출 기록

TM_TAG_POINT 의 모양

PRIMARY KEY (TAG_ID, TIMESTAMP)
WITH CLUSTERING ORDER BY (TIMESTAMP DESC)
성질
파티션 키TAG_ID — 태그 하나가 파티션 하나
클러스터링TIMESTAMP 내림차순 — 최신부터 읽는다
컬럼VALUE · QUALITY · ERROR_CODE · TYPE · ATTRIBUTE(맵)
CompactionTimeWindowCompactionStrategy, 10분 윈도우
왜 TimeWindow 인가

게이트웨이는 「쓰고, 잠깐 읽고, TTL 로 버린다」가 전부입니다. 시간 창 단위로 SSTable 을 묶어 두면 만료된 창을 통째로 버릴 수 있어 압축 비용이 거의 들지 않습니다.


보존 기간 — 숫자가 두 곳에 있습니다

스키마의 30일이 실제 값이 아닙니다

scheme.cqldefault_time_to_live30일(2592000초)이지만, 기동할 때 app.propertiesedge.ttl 값으로 테이블 TTL 을 ALTER TABLE 해 덮어씁니다.

출하 기본값은 edge.ttl = 60(일) 이므로, 실제 보존은 60일입니다. 스키마 파일만 보고 30일이라고 판단하지 마세요.

바꾸려면 edge.ttl 을 고치고 재시작합니다.

cd /opt/kopens/plantpulse-edge/bin
./config.sh --get edge.ttl
./config.sh --set edge.ttl 90
./config.sh --restart # 기동 시 ALTER TABLE 로 반영된다
줄이면 즉시 사라집니다

TTL 을 줄이면 그보다 오래된 데이터는 다음 compaction 에서 회수됩니다. 되돌릴 수 없습니다. 디스크가 급해서 줄이는 경우라면, 줄이기 전에 필요한 구간을 상위 플랫폼으로 올렸는지 확인하세요.


디스크가 찰 때

용량은 태그 수 × 수집 주기 × 보존일 로 결정됩니다. 셋 중 하나를 줄여야 합니다.

손댈 곳방법
보존일edge.ttl 을 줄인다 (위 참조)
수집 주기연결의 TIMECYCLE 을 늘린다 — 초 단위 수집이 정말 필요한 태그만 남긴다
태그 수안 쓰는 태그의 자동 수집을 끈다

진단은 진단 을 보세요.


관련 문서