メインコンテンツへスキップ
メインコンテンツへスキップ

Embeddable を ClickHouse に接続する

Community Maintained

Embeddable では、自社のコードリポジトリに保存されたコード内で データモデルコンポーネント を定義し、Embeddable の強力な ノーコードビルダー でチームが利用できるようにするために、SDK を使用します。

その結果、プロダクトチームが設計し、エンジニアリングチームが構築し、カスタマーサクセスおよびデータチームが運用する、高速でインタラクティブな顧客向けアナリティクスを、プロダクトに直接組み込んで提供できるようになります。まさに、あるべき姿と言えるでしょう。

組み込みの行レベルセキュリティ機能により、各ユーザーは自分に閲覧権限があるデータだけを常に正確に確認できます。さらに、完全に構成可能な 2 段階のキャッシュにより、スケールさせながら高速なリアルタイムアナリティクスを提供できます。

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 コールを使用して接続を追加できます。

// セキュリティ上の理由により、クライアント側から*決して*呼び出さないでください
fetch('https://api.embeddable.com/api/v1/connections', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
    Authorization: `Bearer ${apiKey}` /* APIキーを安全に保管してください */,
  },
  body: JSON.stringify({
    name: 'my-clickhouse-db',
    type: 'clickhouse',
    credentials: {
      host: 'my.clickhouse.host',
      user: 'clickhouse_user',
      port: 8443,
      password: '*****',
    },
  }),
});

レスポンス:
Status 201 { errorMessage: null }

上記は CREATE アクションを表していますが、すべての CRUD 操作が利用可能です。

apiKey は、いずれかの Embeddable ダッシュボードで「Publish」をクリックすると確認できます。

name は、この接続を識別するための一意の名前です。

  • デフォルトでは、データモデルは "default" という名前の接続を探しますが、モデル側で異なる data_source 名を指定することで、異なるデータモデルを異なる接続に紐づけて利用できます(モデル内で data_source 名を指定するだけです)

type は、Embeddable にどのドライバーを使用するかを指定します。

  • ここでは clickhouse を使用しますが、1 つの Embeddable ワークスペースに複数の異なるデータソースを接続できるため、postgresbigquerymongodb など他のものを使用することもできます。

credentials は、ドライバーが必要とする認証情報を含む JavaScript オブジェクトです。

  • これらは安全に暗号化され、データモデルで定義したデータを取得する目的にのみ使用されます。 Embeddable では、各接続ごとに読み取り専用のデータベースユーザーを作成することを強く推奨しています(Embeddable はデータベースからの読み取りのみを行い、書き込みは一切行いません)。

本番、QA、テストなどで異なるデータベースに接続したり(あるいは顧客ごとに異なるデータベースを利用したり)できるように、各接続を環境に割り当てることができます(Environments API を参照してください)。