9.1 개요와 사용 기준
LOOKUP 테이블은 기준 코드, 장비 마스터, 임계값, 설정값처럼 비교적 작고 자주 참조되는 데이터를 저장하는 테이블입니다. 데이터는 영속 저장되지만 SQL 조회에 사용하는 전체 행은 메모리에 상주합니다. 따라서 반복적인 키 기반 조회와 갱신에 적합합니다.
LOOKUP 테이블의 특성
LOOKUP 테이블은 CREATE LOOKUP TABLE 문으로 생성하며, PRIMARY KEY가 필수입니다.
CREATE LOOKUP TABLE ch9_overview (
sensor_id VARCHAR(64) PRIMARY KEY,
site VARCHAR(32),
unit VARCHAR(16),
status VARCHAR(16)
);LOOKUP 테이블의 주요 특성은 다음과 같습니다.
| 항목 | 내용 |
|---|---|
| 주요 용도 | 코드 테이블, 장비 마스터, 임계값, 참조 데이터 |
| 필수 조건 | PRIMARY KEY 필요 |
| 저장 방식 | 영속 저장 후 서버 기동 시 전체 행을 메모리에 적재 |
| 조회 패턴 | PK 조회에 최적화, 일반 조건 조회와 다른 테이블 JOIN 지원 |
| 변경 패턴 | INSERT, UPDATE, DELETE |
| 부가 기능 | SEQUENCE 컬럼, Append 중복 키 정책 |
사용 기준
다음 조건에 해당하면 LOOKUP 테이블을 사용합니다.
- 데이터 건수가 상대적으로 작고 전체 데이터가 자주 참조됩니다.
- 전체 행과 필요한 보조 인덱스를 서버 메모리에 유지할 수 있습니다.
- 코드, 이름, 위치, 단위, 상태 같은 기준 정보를 관리합니다.
- TAG 또는 LOG 테이블의 원본 데이터에 설명 정보를 JOIN해야 합니다.
- 임계값이나 설정값처럼 운영 중 변경될 수 있는 참조값을 저장합니다.
PRIMARY KEY로 행을 명확하게 식별할 수 있습니다.
TAG 또는 LOG 데이터에 위치와 단위 같은 설명을 붙이는 JOIN 예제는 조회와 분석에서 다룹니다.
다른 테이블을 검토할 경우
다음 요구사항에는 다른 테이블 타입을 검토합니다.
| 요구사항 | 권장 테이블 |
|---|---|
| 대량 시계열 계측 데이터 저장 | TAG |
| append 중심 원본 이벤트 저장 | LOG |
| 메모리에 전체 행을 적재하기 어려운 대규모 관계형 데이터 | TRANSACTION |
| 트랜잭션과 관계형 업무 처리가 필요한 데이터 | TRANSACTION |
| 서버 메모리에서만 유지할 최신 상태 캐시 | VOLATILE |
LOOKUP 테이블은 참조 데이터에 적합하지만, 데이터가 영속 저장된다는 이유로 디스크 중심의 대용량 테이블처럼 사용해서는 안 됩니다. 원본 데이터는 LOG 또는 TAG 테이블에 저장하고, LOOKUP 테이블에는 메모리에 상주시켜 반복 조회할 기준 정보를 저장합니다. 관계형 데이터가 메모리 용량보다 커지거나 복합적인 업무 처리가 필요하면 TRANSACTION 테이블을 사용합니다.
이 절의 실습 테이블은 다음과 같이 정리합니다.
DROP TABLE ch9_overview;설계 순서
LOOKUP 테이블을 설계할 때는 다음 순서로 결정합니다.
- 행을 식별할
PRIMARY KEY를 정합니다. - 자연키를 사용할지, SEQUENCE 또는 AUTO_INCREMENT 기반 대리키를 사용할지 결정합니다.
- 자주 조회하거나 JOIN하는 컬럼에 인덱스를 추가합니다.
- 예상 행 크기와 행 수, 보조 인덱스를 포함한 메모리 사용량을 검증합니다.
- 운영 중 갱신되는 컬럼과 불변 컬럼을 구분합니다.
- 대량 변경 전에는 대상 범위를 확인하는 쿼리를 준비합니다.
스키마와 키 설계는 테이블 구조와 스키마와 PRIMARY KEY 정책에서 다룹니다.
최근 업데이트