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)
- Layouts — 딕셔너리가 메모리에 저장되는 방식
- Sources — 데이터 소스 연결
- Lifetime — 자동 갱신 구성
- Attributes — 키 및 속성 구성
- Embedded Dictionaries — 내장 지리 기반 딕셔너리
- system.dictionaries — 딕셔너리 정보를 담은 시스템 테이블