跳到主要内容
跳到主要内容

将 Embeddable 连接到 ClickHouse

Community Maintained

Embeddable 中,你以代码的形式(存放在你自己的代码仓库中)定义 Data ModelsComponents,并使用我们的 SDK 将这些内容提供给你的团队,以便在功能强大的 Embeddable 无代码构建器 中使用。

最终,你可以在自己的产品中直接交付快速、交互式、面向客户的分析功能;由你的产品团队负责设计;由你的工程团队负责构建;由你的面向客户团队和数据团队负责维护——这才是应有的方式。

内置的行级安全机制确保每个用户只会看到其被允许查看的精确数据。而两级、完全可配置的缓存机制则意味着你可以在大规模场景下提供快速的实时分析能力。

1. 收集连接参数

要通过 HTTP(S) 连接到 ClickHouse,您需要以下信息:

参数说明
HOSTPORT通常,在使用 TLS 时端口为 8443,不使用 TLS 时端口为 8123。
DATABASE NAME默认提供一个名为 default 的数据库,请填写您要连接的目标数据库名称。
USERNAMEPASSWORD默认用户名为 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 Key,避免泄露 */,
  },
  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 操作都可用。

可以通过在任一 Embeddable 仪表板上点击 "Publish" 来找到 apiKey

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

  • 默认情况下,数据模型会查找名为 "default" 的连接,但你可以为模型提供不同的 data_source 名称,从而将不同的数据模型连接到不同的连接(只需在模型中指定 data_source 名称)。

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

  • 在这里建议使用 clickhouse,但你可以在同一个 Embeddable 工作区中连接多个不同的数据源,因此也可以使用其他类型,例如:postgresbigquerymongodb 等。

credentials 是一个 JavaScript 对象,其中包含驱动程序所需的必要凭据。

  • 这些凭据会被安全加密,并且只会用于检索你在数据模型中描述的精确数据。 Embeddable 强烈建议你为每个连接创建一个只读数据库用户(Embeddable 只会从你的数据库中读取数据,而不会进行写入)。

为了支持在 prod、qa、test 等环境中连接到不同的数据库(或为不同客户使用不同的数据库),你可以将每个连接分配到一个环境(参见 Environments API)。