Embeddable では、Data Models と Components をコードで定義し (自社のコードリポジトリに保存)、強力な Embeddable ノーコード builder でチームが利用できるように SDK を使用します。
その結果、高速でインタラクティブな顧客向け analytics を自社製品に直接組み込んで提供できるようになります。設計はプロダクトチーム、構築はエンジニアリングチーム、運用は顧客対応チームとデータチームが担います。まさに、あるべき形です。
組み込みの行レベルセキュリティにより、各ユーザーは自分に閲覧を許可されたデータだけを正確に見ることができます。さらに、完全に設定可能な 2 層の Caching により、大規模環境でも高速なリアルタイム analytics を提供できます。
接続の詳細情報を収集する
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 をクリックします。

HTTPS を選択します。接続情報は curl コマンドの例として表示されます。

セルフマネージド ClickHouse を使用している場合、接続情報は ClickHouse 管理者によって設定されます。
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 は、この接続を識別するための一意の名前です。
- デフォルトでは、Data Models は "default" という名前の接続を参照しますが、モデルに別の
data_source名を指定することで、異なる Data Models を異なる接続先に接続できます (モデル内で data_source 名を指定するだけです) 。
type は、どのドライバーを使うかを Embeddable に伝えます
- ここでは
clickhouseを使用しますが、1 つの Embeddable ワークスペースに複数の異なるデータソースを接続できるため、postgres、bigquery、mongodbなどを使用することもできます。
credentials は、ドライバーが必要とする認証情報を含む JavaScript オブジェクトです
- これらは安全に暗号化され、Data Models で定義したデータを取得するためにのみ使用されます。 Embeddable では、接続ごとに読み取り専用のデータベースユーザーを作成することを強く推奨しています (Embeddable がデータベースに対して行うのは読み取りのみで、書き込みは行いません) 。
prod、qa、test などで異なるデータベースへの接続に対応するため (または顧客ごとに異なるデータベースに対応するため) 、各接続を環境に割り当てることができます (Environments API を参照) 。