참조 테이블 (Lookup Table)
개념
참조 테이블은 휘발성 테이블과 마찬가지로 모든 데이터를 메모리에 상주시킴으로써 빠른 질의 처리를 수행할 수 있다.
또한 데이터의 입력 및 변경에 대해서 디스크에 반영함으로써 데이터의 영구성을 보장한다. 휘발성 테이블과 비교하여 질의 처리 성능은 동일하지만 데이터 입력 및 변경 성능은 다소 떨어진다.
이 테이블의 특성은 다음과 같다.
낮은 입력/갱신 성능
휘발성 테이블과는 달리, 디스크 데이터 이미지 유지에 따른 입력 및 갱신 성능이 낮으므로 대시보드 (Dashboard) 등 실시간 데이터 표현을 위한 테이블에는 부적합하다.
스키마 보존
역시 휘발성 테이블과는 달리, 참조 테이블의 구조 (스키마) 정보는 서버 재시작 후에도 유지된다. 해당 테이블을 삭제하기 위해서는 명시적으로 DROP TABLE
를 수행해야 한다.
데이터 보존
참조 테이블은 휘발성 테이블과 달리 서버 재시작 시 데이터가 서버 종료 직전의 상태로 복구된다.
인덱스 제공
휘발성 테이블과 마찬가지로 RED-BLACK 인덱스를 제공한다. 따라서 검색 과정이나 로그 테이블과의 Join 과정에서 효율적으로 활용될 수 있다.
작업 방법
Sequence for Lookup Table
Lookup 테이블의 Unique한 Record를 생성하고 Data의 입력 순서를 결정하기 위해 위해 Sequence가 추가되었다.
이 기능은 Lookup 테이블에서 datetime column을 사용하여 Record의 순서를 구분하는 방식을 사용했을 때
datetime 값이 중복될 경우 Record의 순서를 구분하기 어렵고 데이터 중복으로 인한 Application의 오류가 발생하는 등의 문제점을 해결하기 위해 추가되었다.
Sequence 지원 Machbase Edition
Edge / Fog / Cluster
Sequence 지원 Table 종류
Lookup Table
Lookup 테이블 생성 시 Sequence 설정
Create Table SQL 문으로 Lookup 테이블을 생성할 때 Sequence로 사용할 컬럼에 PROPERTY 절을 추가하여 Sequence를 설정하겠다고 명시하면 된다.
Sequence로 설정할 컬럼은 LONG datatype(64bit, unsigned)만 지원하며 이외의 datatype은 지원하지 않는다.
추가로, Sequence의 시작값을 설정할 수 있는데 1로 설정한 경우 Sequence가 1부터 시작이 된다. (0이나 음수는 지원 안함)
|
Sequence 컬럼의 사용
Lookup 테이블의 Sequence 컬럼은 기본적으로 일반 Long 컬럼과 동일하게 사용이 가능하며 이렇게 사용할 경우 Sequence 값은 자동으로 증가하지 않는다.
Sequence 컬럼에 직접 값을 입력하는 것이 허용되며 심지어 중복 값을 입력하는 것도 가능하다.
대신, Sequence 기능을 사용하려면 nextval 이라는 새로 추가된 Sequence 전용 Function을 사용하여 Sequence값을 증가시키는 방식으로 사용해야 한다.
내부적으로는 Sequence로 설정된 컬럼의 값 중 가장 큰 값에 대해 저장하고 있기 때문에 이후에 nextval Function을 사용하여 입력할 때 Sequence 컬럼 값 중 가장 큰 값 + 1 의 값이 저장된다.
Sequence 컬럼의 사용 예
|