cluster / clusterAllReplicas 테이블 함수
cluster / clusterAllReplicas 테이블 함수 (cluster)
Distributed 테이블을 만들지 않고도, 클러스터의 모든 샤드(remote_servers 섹션에 설정된)에 접근할 수 있는 테이블 함수예요. 각 샤드의 레플리카 하나만 조회됩니다.
clusterAllReplicas 함수는 cluster와 같지만, 모든 레플리카를 조회합니다. 클러스터의 각 레플리카가 별도의 샤드/연결로 사용됩니다.
사용 가능한 모든 클러스터는 system.clusters 테이블에 나열되어 있어요.
출처: 문서
본문
Distributed 테이블을 만들지 않고도 (remote_servers 섹션에 설정된) 클러스터의 모든 샤드에 접근할 수 있습니다. 각 샤드의 레플리카 하나만 조회됩니다.
clusterAllReplicas 함수 — cluster와 같지만 모든 레플리카를 조회합니다. 클러스터의 각 레플리카가 별도의 샤드/연결로 사용됩니다.
사용 가능한 모든 클러스터는 system.clusters 테이블에 나열되어 있어요.
구문
cluster(['cluster_name', db.table, sharding_key][, SETTINGS name = value, ...])
cluster(['cluster_name', db, table, sharding_key][, SETTINGS name = value, ...])
clusterAllReplicas(['cluster_name', db.table, sharding_key][, SETTINGS name = value, ...])
clusterAllReplicas(['cluster_name', db, table, sharding_key][, SETTINGS name = value, ...])
인자
| 인자 | 타입 |
|---|---|
cluster_name |
원격·로컬 서버에 대한 주소 집합과 연결 파라미터를 만드는 데 사용하는 클러스터 이름. 지정하지 않으면 default로 설정됩니다. |
db.table 또는 db, table |
데이터베이스와 테이블의 이름. |
sharding_key |
샤딩 키. 선택 사항. 클러스터에 샤드가 둘 이상이면 지정해야 합니다. |
SETTINGS name = value, ... |
함수가 만드는 Distributed 테이블의 설정(예: skip_unavailable_shards). 선택 사항. 쿼리에 지정된 설정이 우선합니다. |
반환 값
클러스터의 데이터셋.
매크로 사용하기
cluster_name에는 매크로({} 안의 치환)가 포함될 수 있습니다. 치환된 값은 서버 설정 파일의 macros 섹션에서 가져옵니다.
예제:
SELECT * FROM cluster('{cluster}', default.example_table);
사용법 및 권장 사항
cluster와 clusterAllReplicas 테이블 함수는 Distributed 테이블을 만드는 것보다 덜 효율적입니다. 이 경우 요청마다 서버 연결을 새로 맺기 때문입니다. 많은 쿼리를 처리할 때는 항상 미리 Distributed 테이블을 만들고, cluster와 clusterAllReplicas 테이블 함수를 사용하지 마세요.
cluster와 clusterAllReplicas 테이블 함수는 다음과 같은 경우에 유용합니다:
- 데이터 비교, 디버깅, 테스트를 위해 특정 클러스터에 접근.
- 연구 목적으로 여러 ClickHouse 클러스터와 레플리카에 쿼리.
- 수동으로 하는 드문 분산 요청.
host, port, user, password, compression, secure 같은 연결 설정은 <remote_servers> 설정 섹션에서 가져옵니다. 자세한 내용은 Distributed 엔진을 참고해요.