> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Embeddable 是一个面向开发者的工具包，用于将快速、交互式且完全可定制的 analytics 体验直接嵌入到你的应用中。

# 将 Embeddable 连接到 ClickHouse

export const CommunityMaintainedBadge = () => {
  return <div className="CommunityMaintainedBadge">
            <div className="CommunityMaintainedIcon">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 256 256">
                <path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"></path>
            </svg>
        </div>
            由社区维护
        </div>;
};

<CommunityMaintainedBadge />

在 [Embeddable](https://embeddable.com/) 中，你可以用代码定义 [Data Models](https://docs.embeddable.com/data-modeling/introduction) 和 [Components](https://docs.embeddable.com/development/introduction) (存储在你自己的代码仓库中) ，并使用我们的 **SDK** 在功能强大的 Embeddable **无代码构建器** 中将它们提供给团队使用。

最终，你将能够直接在自己的产品中交付快速、交互式、面向客户的分析功能；由产品团队设计；由工程团队构建；由面向客户的团队和数据团队维护。这才是理想的方式。

内置的行级安全意味着每位用户只能看到其有权查看的数据。而两级完全可配置的缓存意味着你可以大规模提供快速的实时分析。

<Steps>
  <Step title="收集你的连接详细信息" id="1-gather-your-connection-details">
    要通过 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**：

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/cloud-connect-button.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=ec0a298a33ca841e947fa5e8bae47362" alt="ClickHouse Cloud 服务连接按钮" width="998" height="932" data-path="images/_snippets/cloud-connect-button.webp" />
      </Frame>
    </div>

    选择 **HTTPS**。连接信息会显示在示例 `curl` 命令中。

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/connection-details-https.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=cb0fbd98aa2b5b7ca484c9f53395ee07" alt="ClickHouse Cloud HTTPS 连接信息" width="1320" height="1184" data-path="images/_snippets/connection-details-https.webp" />
      </Frame>
    </div>

    如果你使用的是自管理 ClickHouse，则连接信息由你的 ClickHouse 管理员配置。
  </Step>

  <Step title="创建 ClickHouse 连接类型" id="2-create-a-clickhouse-connection-type">
    你可以使用 Embeddable API 添加数据库连接。该连接用于连接到你的 ClickHouse 服务。你可以通过以下 API 调用添加连接：

    ```javascript title="Query" theme={null}
    // 出于安全原因，此操作*绝对不能*从客户端调用
    fetch('https://api.embeddable.com/api/v1/connections', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        Accept: 'application/json',
        Authorization: `Bearer ${apiKey}` /* 请妥善保管您的 API Key */,
      },
      body: JSON.stringify({
        name: 'my-clickhouse-db',
        type: 'clickhouse',
        credentials: {
          host: 'my.clickhouse.host',
          user: 'clickhouse_user',
          port: 8443,
          password: '*****',
        },
      }),
    });
    ```

    ```text title="Response" theme={null}
    Status 201 { errorMessage: null }
    ```

    上述内容表示一个 `CREATE` 操作，但所有 `CRUD` 操作都可用。

    点击某个 Embeddable 仪表盘上的 "**Publish**"，即可找到 `apiKey`。

    `name` 是用于标识此连接的唯一名称。

    * 默认情况下，你的数据模型会查找名为 "default" 的连接，但你也可以为模型提供不同的 `data_source` 名称，以支持将不同的数据模型连接到不同的连接 (只需在模型中指定 data\_source 名称) 。

    `type` 用于告诉 Embeddable 应使用哪个驱动程序

    * 这里应使用 `clickhouse`，但你也可以将多个不同的数据源连接到同一个 Embeddable 工作区，因此也可以使用其他类型，例如：`postgres`、`bigquery`、`mongodb` 等。

    `credentials` 是一个 JavaScript 对象，包含驱动程序所需的凭据

    * 这些信息会被安全加密，并且仅用于检索你在数据模型中定义的数据。
      Embeddable 强烈建议你为每个连接创建一个只读数据库用户 (Embeddable 只会从你的数据库中读取，不会写入) 。

    为了支持连接到用于 prod、qa、test 等环境的不同数据库 (或为不同客户使用不同的数据库) ，你可以将每个连接分配给一个环境 (参见 [Environments API](https://docs.embeddable.com/data/environments)) 。
  </Step>
</Steps>
