Skip to content
9.2 테이블 구조와 스키마

9.2 테이블 구조와 스키마

LOOKUP 테이블의 구조와 스키마 설계를 다룹니다.

LOOKUP 테이블 설계

LOOKUP 테이블은 코드 테이블과 기준 정보를 저장하는 타입입니다. PRIMARY KEY로 각 행을 식별하고 Primary key 또는 일반 조건식의 UPDATE/DELETE를 지원하며 디스크에 영속 저장됩니다.

영속 저장과 메모리 조회 구조

LOOKUP 테이블은 영속성과 메모리 조회 성능을 함께 제공하는 2계층 구조입니다.

  1. 변경된 행은 재시작 후에도 유지할 수 있도록 영속 저장소에 기록됩니다.
  2. 서버가 기동되면 영속 저장소의 LOOKUP 행을 모두 읽어 각 컬럼 값을 포함한 메모리 행으로 복원합니다.
  3. 각 메모리 행은 필수 PRIMARY KEY의 Red-Black 인덱스에 등록됩니다.
  4. SQL 조회는 복원된 메모리 행과 인덱스를 사용합니다.

개념적으로 한 행은 다음과 같은 key-value 항목으로 볼 수 있습니다.

PRIMARY KEY                       나머지 컬럼 값
sensor_id = 'TEMP-01'  ───────►  { site, unit, status, ... }
          key                              value

이는 LOOKUP이 SQL 테이블 인터페이스와 일반 조건 조회, JOIN, 보조 인덱스를 지원하면서도 PRIMARY KEY 조회에 특히 적합한 이유입니다. 영속 저장소가 있다고 해서 조회 시 필요한 행만 디스크에서 가져오는 구조는 아닙니다. 전체 행과 생성한 Red-Black 보조 인덱스가 메모리를 사용하므로 스키마를 설계할 때 행 수뿐 아니라 가변 길이 컬럼, JSON 값, 보조 인덱스 크기도 함께 고려합니다.

최근 업데이트