DDL로 생성된 이름이 지정된 컬렉션은 일부 ClickHouse Cloud 서비스에서 활성화할 수 있습니다. 사용 가능 여부를 확인하려면 Support에 문의하십시오. ClickHouse Cloud에서는 사용자가 서버 설정 파일을 수정할 수 없으므로 설정 파일에 정의된 이름이 지정된 컬렉션은 사용할 수 없습니다.
[NOT] OVERRIDABLE 키워드와 XML 속성
및/또는 구성 옵션 allow_named_collection_override_by_default를 사용해 제한할 수 있습니다.
system 데이터베이스에 이름이 지정된 컬렉션 저장하기
DDL 예시
key_1은 항상 재정의할 수 있습니다.key_2는 절대 재정의할 수 없습니다.url은allow_named_collection_override_by_default값에 따라 재정의할 수도 있고 할 수 없을 수도 있습니다.
DDL로 이름이 지정된 컬렉션을 생성하기 위한 권한
DDL로 이름이 지정된 컬렉션을 관리하려면 사용자에게named_collection_control 권한이 있어야 합니다. 이 권한은 /etc/clickhouse-server/users.d/에 파일을 추가하여 부여할 수 있습니다. 다음 예시에서는 사용자 default에 access_management와 named_collection_control 권한을 모두 부여합니다:
/etc/clickhouse-server/users.d/user_default.xml
named_collection_control은 사용자가 이름이 지정된 컬렉션을 생성, 변경, 삭제할 수 있게 해주지만, 이미 저장된 값을 다시 읽을 수는 없습니다. 값을 읽는 것은 별도의 권한인 SHOW NAMED COLLECTIONS SECRETS이며, show_named_collections_secrets 설정으로 활성화됩니다. 사용자는 자신이 가진 권한만 부여할 수 있으므로, show_named_collections_secrets가 비활성화되어 있는 동안에는 사용자가 전체 권한 집합을 갖지 못하며 GRANT ALL ON *.* TO another_user WITH GRANT OPTION은 (Missing permissions: SHOW NAMED COLLECTIONS SECRETS ON *) 오류와 함께 거부됩니다.
이름이 지정된 컬렉션용 저장소
이름이 지정된 컬렉션은 로컬 디스크 또는 ZooKeeper/Keeper에 저장할 수 있습니다. 기본적으로는 로컬 저장소가 사용됩니다. 또한 디스크 암호화에서 사용하는 것과 동일한 알고리즘으로 암호화해 저장할 수도 있으며, 기본값으로는aes_128_ctr이 사용됩니다.
이름이 지정된 컬렉션 저장소를 구성하려면 type을 지정해야 합니다. 이 값으로는 local 또는 keeper/zookeeper를 사용할 수 있습니다. 암호화된 저장소의 경우
local_encrypted 또는 keeper_encrypted/zookeeper_encrypted를 사용할 수 있습니다.
ZooKeeper/Keeper를 사용하려면 설정 파일의
named_collections_storage 섹션에 path(이름이 지정된 컬렉션이 저장될 ZooKeeper/Keeper 내 경로)도 설정해야 합니다. 다음 예시에서는 암호화와 ZooKeeper/Keeper를 사용합니다:
update_timeout_ms의 기본값은 5000입니다.
system.server_settings 및 getServerSetting을 통해 활성 저장소 유형을 확인할 수 있습니다:
SYSTEM RELOAD CONFIG로는 활성 backend가 변경되지 않습니다.
설정 파일에 이름이 지정된 컬렉션 저장
XML 예시
/etc/clickhouse-server/config.d/named_collections.xml
key_1은 항상 재정의할 수 있습니다.key_2는 절대 재정의할 수 없습니다.url은allow_named_collection_override_by_default값에 따라 재정의할 수도 있고 재정의할 수 없을 수도 있습니다.
이름이 지정된 컬렉션 수정하기
DDL 쿼리로 생성한 이름이 지정된 컬렉션은 DDL을 사용해 변경하거나 삭제할 수 있습니다. XML 파일로 생성한 이름이 지정된 컬렉션은 해당 XML을 수정하거나 삭제하여 관리할 수 있습니다.DDL 이름이 지정된 컬렉션 수정
컬렉션collection2의 key1 및 key3 키를 변경하거나 추가합니다
(이 경우 해당 키의 overridable 플래그 값은 변경되지 않습니다):
key1 키를 변경하거나 추가하고, 항상 재정의할 수 있도록 설정합니다:
collection2에서 key2 키를 제거합니다:
collection2 컬렉션에서 키 key1을 변경하거나 추가하고, 키 key3를 삭제합니다:
overridable 플래그의 기본 설정을 적용하려면
해당 키를 제거한 후 다시 추가해야 합니다.
DDL 이름이 지정된 컬렉션 collection2를 삭제합니다:
S3 액세스용 이름이 지정된 컬렉션
매개변수 설명은 s3 테이블 함수를 참고하십시오.DDL 예시
XML 예시
s3() 함수 및 S3 Table용 이름이 지정된 컬렉션 예시
아래 두 예시에서는 동일한 이름이 지정된 컬렉션s3_mydata를 사용합니다:
s3() 함수
S3 테이블
MySQL 데이터베이스 액세스를 위한 이름이 지정된 컬렉션
매개변수에 대한 설명은 mysql을 참조하십시오.DDL 예시
XML 예시
mysql() 함수, MySQL 테이블, MySQL 데이터베이스 및 딕셔너리의 이름이 지정된 컬렉션 예시
다음 4개의 예시에서는 동일한 이름이 지정된 컬렉션mymysql을 사용합니다:
mysql() 함수
이름이 지정된 컬렉션에는
table 매개변수가 지정되어 있지 않으므로, 함수 호출에서 table = 'test'로 지정합니다.MySQL 테이블
DDL은 connection_pool_size에 대한 이름이 지정된 컬렉션 설정을 덮어씁니다.
MySQL 데이터베이스
MySQL 딕셔너리
PostgreSQL 데이터베이스에 액세스하기 위한 명명된 컬렉션
매개변수에 대한 설명은 postgresql을 참조하십시오. 또한 다음과 같은 별칭이 있습니다:username은user의 별칭입니다db는database의 별칭입니다.
postgresql_connection_pool_size 및 기타 postgresql_* 설정)도 컬렉션에 저장하거나 key = value 재정의로 전달할 수 있습니다. 이는 PostgreSQL 테이블 엔진, postgresql 테이블 함수, 그리고 PostgreSQL 데이터베이스 엔진에 적용되며, 테이블에 명시적으로 지정된 SETTINGS 절은 컬렉션의 값보다 우선합니다.
컬렉션에서는 host:port 대신 addresses_expr 매개변수를 사용합니다. host, hostname, port와 같은 다른 선택적 매개변수도 있으므로 이 매개변수는 선택 사항입니다. 다음 의사 코드는 우선순위를 설명합니다:
postgresql 함수에서 이름이 지정된 컬렉션을 사용하는 예시
PostgreSQL 엔진을 사용하는 데이터베이스에서 이름이 지정된 컬렉션을 사용하는 예시
PostgreSQL은 테이블을 생성할 때 명명된 컬렉션의 데이터를 복사합니다. 이후 컬렉션이 변경되어도 기존 테이블에는 영향을 미치지 않습니다.
PostgreSQL 엔진을 사용하는 데이터베이스에서 이름이 지정된 컬렉션을 사용하는 예시
POSTGRESQL 소스를 사용하는 딕셔너리에서 이름이 지정된 컬렉션을 사용하는 예시
원격 ClickHouse 데이터베이스에 접속하기 위한 이름이 지정된 컬렉션
매개변수 설명은 remote에서 확인하십시오. 구성 예시는 다음과 같습니다:remoteSecure를 사용하므로 연결에는 secure가 필요하지 않지만, 딕셔너리에는 사용할 수 있습니다.
remote/remoteSecure 함수에서 이름이 지정된 컬렉션을 사용하는 예시
소스로 ClickHouse를 사용하는 딕셔너리에서 이름이 지정된 컬렉션을 사용하는 예시
Kafka에 액세스하기 위한 이름이 지정된 컬렉션
매개변수 설명은 Kafka를 참조하십시오.DDL 예시
XML 예시
OAUTHBEARER/OIDC 인증
OAUTHBEARER 옵션은 확장 librdkafka 설정이므로 각 명명된 컬렉션 내부의 <kafka> 아래에 중첩해야 합니다. 최상위 kafka_* 키는 Kafka 테이블 엔진을 구성하는 데 사용됩니다. ClickHouse는 중첩된 XML 요소 이름에 포함된 밑줄을 마침표로 변환한 뒤 librdkafka에 전달합니다.
다음 예시는 Azure Event Hubs 네임스페이스에 대한 OAuth 클라이언트 자격 증명을 구성하는 방법을 보여줍니다:
/etc/clickhouse-server/config.d/named_collections.xml
ENGINE = Kafka(eventhub_one)이 명명된 컬렉션(named collection)을 사용하면 ClickHouse는 전역 서버의 <kafka> 구성을 머지하지 않습니다. 브로커 주소 또는 OAuth 범위가 서로 다르다면 Event Hubs 네임스페이스마다 컬렉션을 하나씩 생성하고, 필요한 OIDC 속성을 모두 해당 컬렉션에 포함하십시오.
이 예시의 from_env 속성은 XML로 정의된 명명된 컬렉션에 적용되며, ClickHouse 서버 프로세스의 환경에서 값을 읽어 옵니다. 배포 및 기본값에 대한 자세한 내용은 환경 변수를 통한 치환을 참조하십시오. 전처리된 설정 파일에서 시크릿을 보호하는 방법은 구성 암호화 및 숨기기를 참조하십시오.
Kafka 테이블에서 이름이 지정된 컬렉션 사용 예시
다음 두 예시에서는 동일한 이름이 지정된 컬렉션my_kafka_cluster를 사용합니다.
백업용 이름이 지정된 컬렉션
매개변수 설명은 Backup 및 복원을 참조하십시오.DDL 예시
XML 예시
MongoDB 테이블 및 딕셔너리 액세스를 위한 이름이 지정된 컬렉션
매개변수에 대한 설명은 mongodb를 참조하십시오.DDL 예시
XML 예시
MongoDB 테이블
DDL은 옵션에 대한 이름이 지정된 컬렉션 설정을 덮어씁니다.
MongoDB 딕셔너리
이름이 지정된 컬렉션에서는 컬렉션 이름으로
my_collection을 지정합니다. 함수 호출에서는 다른 컬렉션을 선택하기 위해 collection = 'my_dict'로 이를 덮어씁니다.