> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-home-button.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# 将 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>
            Community Maintained
        </div>;
};

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

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

内置的行级安全控制意味着每位用户始终只能看到其有权查看的数据。而两级完全可配置的缓存机制则让您能够大规模提供快速、实时的分析能力。

<div id="1-gather-your-connection-details">
  ## 1. 准备好您的连接信息
</div>

要通过 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**：

<Image img="/images/_snippets/cloud-connect-button.png" size="md" alt="ClickHouse Cloud 服务连接按钮" border />

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

<Image img="/images/_snippets/connection-details-https.png" size="md" alt="ClickHouse Cloud HTTPS 连接信息" border />

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

<div id="2-create-a-clickhouse-connection-type">
  ## 2. 创建 ClickHouse 连接类型
</div>

你可以使用 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)) 。
