본문으로 바로가기
본문으로 바로가기

Embeddable를 ClickHouse에 연결하기

Community Maintained

Embeddable에서는 Data ModelsComponents를 코드로 정의하고(해당 코드는 사용자의 코드 저장소에 저장됨), SDK를 사용하여 이를 Embeddable의 강력한 no-code builder에서 팀이 사용할 수 있도록 합니다.

그 결과, 제품 팀이 설계하고 엔지니어링 팀이 구축하며 고객 대응 및 데이터 팀이 유지 관리하는, 제품 내에 직접 포함된 빠르고 인터랙티브한 고객용 분석 기능을 제공할 수 있게 됩니다. 마땅히 그래야 하는 방식 그대로입니다.

내장된 행 수준 보안(row-level security)을 통해 각 사용자는 자신에게 허용된 데이터만 정확히 보게 됩니다. 또한 두 단계의 완전히 구성 가능한 캐싱을 통해, 대규모 환경에서도 빠르고 실시간에 가까운 분석을 제공할 수 있습니다.

1. 연결 정보 준비하기

HTTP(S)로 ClickHouse에 연결하려면 다음 정보가 필요합니다:

Parameter(s)Description
HOST and PORT일반적으로 TLS를 사용할 때는 포트가 8443이고, TLS를 사용하지 않을 때는 8123입니다.
DATABASE NAME기본적으로 default라는 데이터베이스가 있으며, 연결하려는 데이터베이스의 이름을 사용합니다.
USERNAME and PASSWORD기본값으로 사용자 이름은 default입니다. 사용하려는 용도에 적합한 사용자 이름을 사용합니다.

ClickHouse Cloud 서비스에 대한 세부 정보는 ClickHouse Cloud 콘솔에서 확인할 수 있습니다. 서비스를 선택한 다음 Connect를 클릭하십시오:

ClickHouse Cloud 서비스 Connect 버튼

HTTPS를 선택하십시오. 연결 정보는 예제 curl 명령에 표시됩니다.

ClickHouse Cloud HTTPS 연결 정보

자가 관리형 ClickHouse를 사용하는 경우, 연결 정보는 ClickHouse 관리자가 설정합니다.

2. ClickHouse 연결 유형 생성

Embeddable API를 사용하여 데이터베이스 연결을 추가합니다. 이 연결은 ClickHouse 서비스에 연결하는 데 사용됩니다. 다음 API 호출을 사용하여 연결을 추가할 수 있습니다.

// for security reasons, this must *never* be called from your client-side
fetch('https://api.embeddable.com/api/v1/connections', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
    Authorization: `Bearer ${apiKey}` /* keep your API Key secure */,
  },
  body: JSON.stringify({
    name: 'my-clickhouse-db',
    type: 'clickhouse',
    credentials: {
      host: 'my.clickhouse.host',
      user: 'clickhouse_user',
      port: 8443,
      password: '*****',
    },
  }),
});

Response:
Status 201 { errorMessage: null }

위 예시는 CREATE 작업을 나타내지만, 모든 CRUD 작업을 사용할 수 있습니다.

apiKey는 Embeddable 대시보드 중 하나에서 "Publish"를 클릭하면 확인할 수 있습니다.

name은 이 연결을 식별하기 위한 고유한 이름입니다.

  • 기본적으로 데이터 모델은 "default"라는 이름의 연결을 찾지만, 서로 다른 데이터 모델을 서로 다른 연결에 매핑할 수 있도록 모델에 다른 data_source 이름을 지정할 수 있습니다(모델에서 data_source 이름을 명시하면 됩니다).

type은 Embeddable이 어떤 드라이버를 사용할지 나타냅니다.

  • 여기에서는 clickhouse를 사용하면 되지만, 하나의 Embeddable 워크스페이스에 여러 다른 데이터 소스를 연결할 수 있으므로 postgres, bigquery, mongodb 등 다른 드라이버를 사용할 수도 있습니다.

credentials는 드라이버가 필요로 하는 필수 자격 증명이 포함된 JavaScript 객체입니다.

  • 이 값들은 안전하게 암호화되며, 데이터 모델에서 정의한 정확한 데이터만 조회하는 데 사용됩니다. Embeddable은 각 연결마다 읽기 전용 데이터베이스 USER를 생성할 것을 강력히 권장합니다(Embeddable은 데이터베이스에서 읽기만 하고, 쓰기는 수행하지 않습니다).

운영(prod), QA, 테스트(test) 등 서로 다른 데이터베이스에 연결하거나(또는 서로 다른 고객에 대해 서로 다른 데이터베이스를 사용하도록) 지원하기 위해, 각 연결을 하나의 환경에 할당할 수 있습니다(Environments API 참조).