跳到主要内容
版本:3.x

ClickHouse

适用版本Cloud 功能TapData Cloud 为您提供了云端服务,适合需要快速部署、低前期投资场景,帮助您更好地专注于业务发展而非基础设施管理,注册账号即可领取免费的 Agent 实例,欢迎试用。企业版功能TapData Enterprise 可部署在您的本地数据中心,适合对数据敏感性或网络隔离有严格要求的场景,可服务于构建实时数仓,实现实时数据交换,数据迁移等场景。社区版功能TapData Community 是一个开源的数据集成平台,提供基础的数据同步和转换功能,可通过 Docker 一键部署,帮助您快速探索和实施数据集成项目。随着项目或企业发展,您可以平滑升级至 TapData Cloud 或 TapData Enterprise,以获得更多高级功能或服务支持。

ClickHouse 是一个用于联机分析(OLAP)的高性能列式数据库管理系统。本文将介绍如何在 TapData 中添加 ClickHouse 数据源,后续可将其作为目标库来构建实时数据链路。

支持版本

Clickhouse 20.x、21.x、22.x、23.x、24.x

支持数据类型

类别数据类型
字符串FixedString、String、UUID
整数Int8、UInt8、Int16、UInt16、Int32、UInt32、UInt64、Int128、UInt128、Int256、UInt256
浮点数Float32、Float64
数值Decimal
日期/时间Date、Date32、DateTime、DateTime64
枚举Enum8、Enum16
复合Tuple

支持同步的操作

  • DML:INSERT、UPDATE、DELETE
  • DDL(仅在作为目标时支持):ADD COLUMN、CHANGE COLUMN、DROP COLUMN、RENAME COLUMN
提示
  • 作为源库进行增量同步时,需通过字段轮询的方式检测数据变化,且不支持采集 DDL 操作,详见变更数据捕获(CDC)
  • 作为目标库时,您还可以通过任务节点的高级配置,选择写入策略:插入冲突场景下,可选择转为更新或丢弃;更新失败场景下,可选择转为插入或仅打印日志。

注意事项

  • 暂不支持 BINARY 相关的字段类型,如包含在配置数据同步/开发任务时,可通过字段映射将其删除,否则会自动转成 Base64 字符串写入。
  • 作为同步的目标库时,如果选择由 TapData 自动建表,源表有主键时使用 ReplacingMergeTree 引擎,主键字段作为排序键;无主键时使用 MergeTree 引擎,排序键位空。

准备工作

  1. 调整配置文件 user.xml,启用访问权限控制并重启服务,具体操作,见官方文档

    提示

    您也可以使用通过修改该文件完成账号配置,本文演示权限控制开启后,如何创建和授权账号。

  2. 登录 ClickHouse 数据库,执行下述格式的命令,创建用于数据同步/开发任务的账号。

    CREATE USER username HOST 'host' IDENTIFIED WITH protection BY 'password';
    • username:用户名。
    • host:允许该账号登录的主机,ANY 表示允许任意主机。
    • protection:密码保护方式。
    • password:密码。

    示例:创建一个名为 tapdata 的账号,采用 sha256_password 密码保护机制,允许其从任意主机登录。

    CREATE USER tapdata HOST ANY IDENTIFIED WITH sha256_password BY 'your_password';
  3. 为刚创建的账号授予权限,简易示例如下,您还可以基于业务需求设置更精细化的权限控制。更多介绍,见授权语法

GRANT SELECT ON database_name.* to username 
  • database_name:要授予权限的数据库名称。
  • usernmae:用户名。

连接 ClickHouse

  1. 登录 Tapdata 平台

  2. 在左侧导航栏,单击连接管理

  3. 在页面右侧,单击创建连接

  4. 在弹出的对话框中,搜索并选择 ClickHouse

  5. 根据下述说明完成数据源配置。

    clickhouse_connection

    • 连接设置
      • 连接名称:填写具有业务意义的独有名称。
      • 连接类型:支持将 ClickHouse 作为源或目标库。
      • 地址:数据库连接地址。
      • 端口:数据库的 HTTP API 服务端口,默认为 8123,如开启了 SSL 加密,默认端口为 8443,更多介绍,见网络端口说明
      • 数据库名称:数据库名称,即一个连接对应一个数据库,如有多个数据库则需创建多个数据连接。
      • 账号密码:数据库的账号和密码。
    • 高级设置
      • 连接参数:额外的连接参数,默认为空。
      • 时区:默认时区为 0 时区(UTC),如果设置为其他时区,将影响数据同步的时间准确性,特别是对于不带时区信息的字段(如 DateTime)。
      • Agent 设置:默认为平台自动分配,您也可以手动指定。
      • 模型加载时间:如果数据源中的模型数量少于10,000个,则每小时更新一次模型信息。但如果模型数量超过10,000个,则刷新将在您指定的时间每天进行。
      • 开启心跳表:当连接类型为源头或目标时,可启用该开关。TapData 会在源库创建 _tapdata_heartbeat_table 心跳表,并每 10 秒更新一次(需具备相应权限),用于监测数据源连接与任务的健康状况。心跳任务在数据复制/开发任务启动后自动启动,您可在数据源编辑页面查看心跳任务
  6. 单击连接测试,测试通过后单击保存

    提示

    如提示连接测试失败,请根据页面提示进行修复。

节点高级特性

在配置数据同步/转换任务时,将 ClickHouse 作为目标节点时,可在节点的高级配置中,设定合并分区间隔以调整 Optimize Table 频率,从而实现性能与数据一致性间的平衡。

ClickHouse 节点高级特性

性能测试

测试环境

  • ClickHouse 环境:ecs.u1-c1m2.2xlarge 机型,拥有 8 CPU 核数,16 GB 内存和 100GB ESSD 磁盘。
  • 表结构:测试表拥有 53 个字段,包括 30 个长度为 8 的随机字符串、21 个随机浮点数字段,、以及 1 个主键字段、1 个标题、1 个日期字段,平均单条数据约为 1KB。

测试结果

本次性能测试模拟了全量数据写入场景,记录处理速率(RPS)最高可达 25 万。测试结果仅供当前环境下参考,并非 TapData 的性能上限。