CREATE DICTIONARY

CREATE DICTIONARY

딕셔너리는 다양한 종류의 참조 목록에 편리한 매핑(key -> attributes)이에요. ClickHouse는 쿼리에서 사용할 수 있는 딕셔너리 작업용 특수 함수를 지원해요. 참조 테이블과의 JOIN보다 함수와 함께 딕셔너리를 사용하는 것이 더 쉽고 효율적입니다.

딕셔너리는 두 가지 방법으로 만들 수 있어요.

출처: 문서

본문

Creating a dictionary with a DDL query

딕셔너리는 DDL 쿼리로 만들 수 있어요. 이 방법이 권장되는 이유는 DDL로 생성된 딕셔너리는 다음과 같은 장점이 있기 때문이에요.

  • 서버 구성 파일에 추가 레코드가 추가되지 않아요.
  • 딕셔너리는 테이블이나 뷰와 같은 일급(first-class) 엔티티로 사용할 수 있어요.
  • 딕셔너리 테이블 함수 대신 익숙한 SELECT 문법을 사용해 데이터를 직접 읽을 수 있어요. 딕셔너리에 SELECT 문으로 직접 접근할 때 캐시형 딕셔너리는 캐시된 데이터만 반환하고, 비캐시형 딕셔너리는 저장한 모든 데이터를 반환한다는 점에 유의하세요.
  • 딕셔너리를 쉽게 이름을 바꿀 수 있어요.

Syntax

CREATE [OR REPLACE] DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster]
(
    key1  type1  [DEFAULT | EXPRESSION expr1] [IS_OBJECT_ID],
    key2  type2  [DEFAULT | EXPRESSION expr2],
    attr1 type2  [DEFAULT | EXPRESSION expr3] [HIERARCHICAL|INJECTIVE],
    attr2 type2  [DEFAULT | EXPRESSION expr4] [HIERARCHICAL|INJECTIVE]
)
PRIMARY KEY key1, key2
SOURCE(SOURCE_NAME([param1 value1 ... paramN valueN]))
LAYOUT(LAYOUT_NAME([param_name param_value]))
LIFETIME({MIN min_val MAX max_val | max_val})
SETTINGS(setting_name = setting_value, setting_name = setting_value, ...)
COMMENT 'Comment'
Clause Description
Attributes 딕셔너리 속성은 테이블 컬럼과 유사하게 지정해요. 유일한 필수 속성은 타입이며, 나머지는 기본값을 가질 수 있어요.
PRIMARY KEY 딕셔너리 조회를 위한 키 컬럼(들)을 정의해요. 레이아웃에 따라 하나 이상의 속성을 키로 지정할 수 있어요.
SOURCE 딕셔너리의 데이터 소스를 정의해요(예: ClickHouse 테이블, HTTP, PostgreSQL).
LAYOUT 딕셔너리가 메모리에 어떻게 저장되는지 제어해요(예: FLAT, HASHED, CACHE).
LIFETIME 딕셔너리의 갱신 간격을 설정해요.
ON CLUSTER 클러스터에 딕셔너리를 만들어요. 선택 사항이에요.
SETTINGS 추가 딕셔너리 설정이에요. 선택 사항이에요.
COMMENT 딕셔너리에 텍스트 주석을 추가해요. 선택 사항이에요.

Creating a dictionary with a configuration file

구성 파일로 딕셔너리를 만드는 것은 ClickHouse Cloud에는 적용되지 않아요. DDL(위 참조)을 사용하고 default 사용자로 딕셔너리를 만드세요.

딕셔너리 구성 파일은 다음 형식을 가져요.

<clickhouse>
    <comment>An optional element with any content. Ignored by the ClickHouse server.</comment>

    <!--Optional element. File name with substitutions-->
    <include_from>/etc/clickhouse-server/substitutions.xml</include_from>

    <dictionary>
        <!-- Dictionary configuration. -->
        <!-- There can be any number of dictionary sections in a configuration file. -->
    </dictionary>

</clickhouse>

같은 파일에 원하는 만큼 많은 딕셔너리를 구성할 수 있어요.

더 알아보기 (Learn more)