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');

복제본을 지정하면 읽을 때 각 샤드에 대해 사용 가능한 복제본 중 하나가 선택돼요. 연결이 실패하면 다음 복제본이 선택되고, 이런 식으로 모든 복제본에 대해 이어져요. 모든 복제본에 대해 연결 시도가 실패하면 같은 방식으로 몇 번 더 시도가 반복돼요. 원하는 수의 샤드와 각 샤드에 원하는 수의 복제본을 지정할 수 있어요.

더 알아보기 (Learn more)