Embeddable と ClickHouse の接続
Embeddable では、コード内で データモデル と コンポーネント を定義し(コードリポジトリに保存)、SDK を使用してこれらを強力なEmbeddableのコード不要ビルダーで利用できるようにします。
この結果、製品チームがデザインし、エンジニアリングチームが構築し、顧客対応およびデータチームが維持する、迅速でインタラクティブな顧客向けの分析を製品内に直接提供できるようになります。これが理想的な形です。
組み込みの行レベルセキュリティにより、各ユーザーは許可されたデータのみを見ることができます。また、完全に構成可能な2層のキャッシングにより、スケールに応じた迅速なリアルタイム分析を提供できます。
1. 接続情報を収集する
HTTP(S) を使用して ClickHouse に接続するには、以下の情報が必要です:
HOST と PORT: 通常、TLS を使用する場合のポートは 8443、TLS を使用しない場合は 8123 です。
データベース名: デフォルトで
default
という名前のデータベースがありますが、接続したいデータベースの名前を使用してください。ユーザー名とパスワード: デフォルトでユーザー名は
default
です。使用ケースに適したユーザー名を使用してください。
ClickHouse Cloud サービスの詳細は、ClickHouse Cloud コンソールで確認できます。 接続するサービスを選択し、接続 をクリックします:
HTTPS を選択すると、サンプルの curl
コマンドで詳細が確認できます。
セルフマネージドの 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: '*****',
},
}),
});
Response:
Status 201 { errorMessage: null }
上記は CREATE
アクションを示していますが、すべての CRUD
操作が利用可能です。
apiKey
は、Embeddable ダッシュボードの1つで「Publish」をクリックして見つけることができます。
name
は、この接続を識別するための一意の名前です。
- デフォルトでは、データモデルは「default」と呼ばれる接続を探しますが、異なる
data_source
名をモデルに供給することで、異なる接続に異なるデータモデルを接続できます(単にモデル内でdata_source名を指定してください)。
type
は、Embeddableが使用するドライバーを指定します。
- ここでは
clickhouse
を使用しますが、1つのEmbeddable ワークスペースに複数の異なるデータソース(例:postgres
,bigquery
,mongodb
など)を接続することができます。
credentials
は、ドライバーが期待する必要な認証情報を含むJavaScriptオブジェクトです。
- これらは安全に暗号化され、データモデルで記述したとおりのデータだけが取得されます。 Embeddableは、各接続に対して読み取り専用のデータベースユーザーを作成することを強く推奨しています(Embeddableはデータベースから読み取るだけで、書き込みは行いません)。
本番、QA、テストなどの異なるデータベースに接続をサポートするため(または異なる顧客のために異なるデータベースをサポートするために)、各接続を環境に割り当てることができます(Environments APIを参照)。