ExternalDistributed 테이블 엔진
ExternalDistributed 테이블 엔진
원격 서버(MySQL 또는 PostgreSQL)에 저장된 데이터에 대해 SELECT 쿼리를 수행할 수 있게 해주는 테이블 엔진이에요. 인자로 MySQL 또는 PostgreSQL 엔진을 받아 샤딩이 가능해요.
출처: 문서
본문
ExternalDistributed 엔진은 원격 서버(MySQL 또는 PostgreSQL)에 저장된 데이터에 대해 SELECT 쿼리를 수행할 수 있게 해줘요. 샤딩이 가능하도록 MySQL 또는 PostgreSQL 엔진을 인자로 받아요.
테이블 만들기 (Creating a table)
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
...
) ENGINE = ExternalDistributed('engine', 'host:port', 'database', 'table', 'user', 'password');
CREATE TABLE 쿼리의 자세한 설명을 참고해요. 테이블 구조는 원본 테이블 구조와 다를 수 있어요.
- 컬럼 이름은 원본 테이블과 같아야 하지만, 그 컬럼들 중 일부만 어떤 순서로든 사용할 수 있어요.
- 컬럼 타입은 원본 테이블과 다를 수 있어요. ClickHouse는 값을 ClickHouse 데이터 타입으로 캐스팅하려고 해요.
엔진 매개변수 (Engine Parameters)
engine— 테이블 엔진MySQL또는PostgreSQL.host:port— MySQL 또는 PostgreSQL 서버 주소.database— 원격 데이터베이스 이름.table— 원격 테이블 이름.user— 사용자 이름.password— 사용자 비밀번호.
구현 세부사항 (Implementation details)
|로 나열되어야 하는 여러 복제본과 ,로 나열되어야 하는 샤드를 지원해요. 예를 들어:
CREATE TABLE test_shards (id UInt32, name String, age UInt32, money UInt32) ENGINE = ExternalDistributed('MySQL', `mysql{1|2}:3306,mysql{3|4}:3306`, 'clickhouse', 'test_replicas', 'root', 'clickhouse');
복제본을 지정하면 읽을 때 각 샤드에 대해 사용 가능한 복제본 중 하나가 선택돼요. 연결이 실패하면 다음 복제본이 선택되고, 이런 식으로 모든 복제본에 대해 이어져요. 모든 복제본에 대해 연결 시도가 실패하면 같은 방식으로 몇 번 더 시도가 반복돼요. 원하는 수의 샤드와 각 샤드에 원하는 수의 복제본을 지정할 수 있어요.