ClickHouse
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
引擎,排序键位空。
准备工作
调整配置文件 user.xml,启用访问权限控制并重启服务,具体操作,见官方文档。
提示您也可以使用通过修改该文件完成账号配置,本文演示权限控制开启后,如何创建和授权账号。
登录 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';
为刚创建的账号授予权限,简易示例如下,您还可以基于业务需求设置更精细化的权限控制。更多介绍,见授权语法。
- 作为源库
- 作为目标库
GRANT SELECT ON database_name.* to username
GRANT SELECT, INSERT, CREATE TABLE, ALTER TABLE, ALTER UPDATE, DROP TABLE, TRUNCATE ON database_name.* TO username
- database_name:要授予权限的数据库名称。
- usernmae:用户名。
连接 ClickHouse
在左侧导航栏,单击连接管理。
在页面右侧,单击创建连接。
在弹出的对话框中,搜索并选择 ClickHouse。
根据下述说明完成数据源配置。
- 连接设置
- 连接名称:填写具有业务意义的独有名称。
- 连接类型:支持将 ClickHouse 作为源或目标库。
- 地址:数据库连接地址。
- 端口:数据库的 HTTP API 服务端口,默认为 8123,如开启了 SSL 加密,默认端口为 8443,更多介绍,见网络端口说明。
- 数据库名称:数据库名称,即一个连接对应一个数据库,如有多个数据库则需创建多个数据连接。
- 账号、密码:数据库的账号和密码。
- 高级设置
- 连接参数:额外的连接参数,默认为空。
- 时区:默认时区为 0 时区(UTC),如果设置为其他时区,将影响数据同步的时间准确性,特别是对于不带时区信息的字段(如
DateTime
)。 - Agent 设置:默认为平台自动分配,您也可以手动指定。
- 模型加载时间:如果数据源中的模型数量少于10,000个,则每小时更新一次模型信息。但如果模型数量超过10,000个,则刷新将在您指定的时间每天进行。
- 开启心跳表:当连接类型为源头或目标时,可启用该开关。TapData 会在源库创建
_tapdata_heartbeat_table
心跳表,并每 10 秒更新一次(需具备相应权限),用于监测数据源连接与任务的健康状况。心跳任务在数据复制/开发任务启动后自动启动,您可在数据源编辑页面查看心跳任务。
- 连接设置
单击连接测试,测试通过后单击保存。
提示如提示连接测试失败,请根据页面提示进行修复。
节点高级特性
在配置数据同步/转换任务时,将 ClickHouse 作为目标节点时,可在节点的高级配置中,设定合并分区间隔以调整 Optimize Table 频率,从而实现性能与数据一致性间的平衡。
性能测试
测试环境
- ClickHouse 环境:ecs.u1-c1m2.2xlarge 机型,拥有 8 CPU 核数,16 GB 内存和 100GB ESSD 磁盘。
- 表结构:测试表拥有 53 个字段,包括 30 个长度为 8 的随机字符串、21 个随机浮点数字段,、以及 1 个主键字段、1 个标题、1 个日期字段,平均单条数据约为 1KB。
测试结果
本次性能测试模拟了全量数据写入场景,记录处理速率(RPS)最高可达 25 万。测试结果仅供当前环境下参考,并非 TapData 的性能上限。