我们很高兴地宣布推出适用于 ClickHouse Cloud 的 Fivetran Destination。 借助 Fivetran 广泛的连接器,用户可以从 500 多个来源快速加载数据。
此 Destination 以公开预览版提供,是使用最近发布的 Fivetran SDK 对合作伙伴构建计划的最早贡献之一。 如果您想试用此 Destination,请观看我们为这篇博文准备的简短视频,或访问此处的综合文档。
我们欢迎对 Destination 的初始版本提供反馈和贡献,该版本的代码已在 Apache 2.0 许可证下开源。
对于那些渴望尝试新 Destination 的人,我们在下面讨论关于实现和理想用例的几个要点。
为什么选择 Fivetran?
Fivetran 是一家领先的数据集成技术提供商,提供自动化解决方案,以简化跨各种来源和 Destination 的数据管道。 它的平台旨在通过提供强大、完全托管的连接器来简化数据提取和加载过程,这些连接器自动适应模式和 API 更改,确保数据完整性,而无需用户进行持续维护。 Fivetran 支持 500 多个数据源,从数据库和 SaaS 应用程序到云存储,是寻求集中数据以在 ClickHouse 中进行分析的企业的理想选择。
这个新的 ClickHouse Destination 实现了从 Fivetran 支持的各种系统直接自动化数据摄取到 ClickHouse。 用户可以利用 ClickHouse 进行分析,而无需手动数据管道管理的开销。 这种集成显著减少了数据工程团队的工作量,并使分析师能够专注于从实时数据中获取可操作的见解。
我应该在何时使用此 Destination?
我们建议在需要将中等数量的业务数据从通常需要自定义集成代码的应用程序(例如 Salesforce、Slack、Zendesk)加载到 ClickHouse 的用例中使用此 Destination。 这些应用程序通常具有复杂的 API,需要自定义集成代码才能与 ClickHouse 同步,同时支持处理插入、更新和删除的能力。 借助 ClickHouse Destination,这种复杂性由 Fivetran 处理,并以几个简单的点击呈现:非常适合希望将 Zendesk 工单、Slack 聊天或 Salesforce 帐户加载到 ClickHouse 中以在其首选 BI 工具中实时查询和可视化的业务团队。
在实现 Destination 时,我们仔细考虑了支持更新和删除操作的需求,并使用 ClickHouse 功能来确保高效处理它们。 因此,您可能还希望探索将 Fivetran 用于较小的变更数据捕获 (CDC) 用例。
对于来自对象存储和 Kafka 等来源的 TB 和 PB 范围的更大容量,我们建议使用现有的 ClickHouse 工具,例如 ClickHouse Kafka Connect 和面向云用户的 ClickPipes。 这些工具通常更具成本效益,并且专门为已经采用结构化格式的大数据量的批量和增量传输而设计。
关键设计决策
Fivetran SDK 对目标数据源有几个行为要求。 其中几个导致了关键的设计决策,并且 Destination 在初始版本中仅支持 ClickHouse Cloud
-
需要顺序一致性——Fivetran 支持广泛的连接器源,其中许多连接器源本身就支持更新和删除事件的概念。 这些需要由 Destination 处理。 Fivetran 不保证更新将包含完整事件。 我们考虑过使用轻量级更新来解决这个问题,但我们认为这对于包含大量更新的工作负载会很吃力。 因此,我们决定采用一种方法,即 Destination 在重新插入更新副本之前,从 ClickHouse 读取行的完整内容。
由于 Destination 可以连接到 ClickHouse 集群前面的代理或负载均衡器,我们需要确保读取是顺序一致的,即如果最近将一行插入到一个节点中,则对同一行的读取必须始终超过其他节点(没有陈旧的读取)。 为此,我们使用设置
select_sequential_consistency=1
。 对于 ClickHouse Cloud 的 SharedMergeTree (SMT) 引擎,此操作比 ReplicatedMergeTree 轻量得多,并且可以可靠地扩展。 对于 ReplicatedMergeTree,这需要启用仲裁插入(默认情况下,SMT 中的插入是仲裁插入),并会产生显著的开销。 -
高效处理更新和删除 - 为了处理更新和删除,Fivetran Destination 使用 ReplacingMergeTree(更具体地说是 SharedReplacingMergeTree)。 建议将其作为在 ClickHouse 中处理此工作负载的最佳方式。 为了确保将准确的计数返回给分析查询,用户需要确保表名包含
FINAL
后缀。 -
Go 实现 - 虽然 Fivetran 提供了多个 SDK,但我们选择 Golang 作为实现语言。 这种语言的 客户端已经成熟,这与我们内部对 ClickPipes 等产品使用该语言的情况一致。
由于 Destination 所依赖的 SharedMergeTree 仅限于 ClickHouse Cloud,因此当前实现无法与 ClickHouse OSS 一起使用。 由于 Fivetran 专门是一项 SaaS 服务,因此我们预计不会有太多需要 OSS 支持的用例。 但是,该代码已获得宽松许可,我们欢迎为高效支持 ReplicatedMergeTree 做出贡献。 有兴趣添加支持的人员应查看此问题。
一个简单的例子
为了展示新的 Destination,我们演示了从 Zendesk 加载数据。 Zendesk 工单代表着用于分析的大量有用的业务数据。 虽然这传统上需要用户熟悉 Zendesk API 和 ClickHouse 摄取,但我们展示了 Fivetran 如何通过几个简单的点击来促进这一点!
此 Destination 包括内置文档,供寻求更全面体验的用户使用。 或者,您可以查看 Fivetran 托管的广泛文档。
结论
适用于 Fivetran 的新 ClickHouse Destination 现已以公开预览版提供,以协助加载复杂数据源。 立即试用此 Destination,并在存储库中提供您的反馈。