博客 / 用户故事

数据蜂巢:beehiiv 从 Postgres 迁移到 ClickHouse 的故事

author avatar
ClickHouse 团队
2024年8月21日 - 8 分钟阅读

beehiiv 是一个新闻通讯平台,帮助创作者、发布商和企业建立并扩大他们的电子邮件受众。由 Morning Brew 的三位工程师于 2022 年创立,它提供用于创建、发送新闻通讯和从中盈利的工具,每月发送数十亿封电子邮件,并向创作者支付数百万美元。

beehiiv 成功背后是其复杂的数据基础设施,这使其能够个性化内容、跟踪用户互动并优化性能。随着平台扩展,实时处理海量数据至关重要,为创作者提供他们可以用来做出明智决策的最新见解。

“在新闻通讯领域,我们生成大量的电子邮件数据,”beehiiv 数据基础设施和工程主管 Eric Abis 说。“每次处理一封电子邮件,每次它落入收件箱,每次它被延迟,每次它被退回,每次你打开它,每次你点击一个链接——所有这些事情加起来就是数百万和数十亿的事件。”

Eric 于 2023 年 8 月加入 beehiiv。在最近纽约市的一次聚会上,他分享了团队如何将 beehiiv 的数据运营从 Postgres 迁移到 ClickHouse Cloud,从而在效率、可扩展性和整体系统可靠性方面实现了重大改进。

充满活力的开端

2020 年,Tyler Denk、Ben Hargett 和 Jake Hurd 在一家日报商业新闻通讯公司 Morning Brew 担任工程师。随着公司规模的扩大,他们看到其他新闻通讯运营商难以取得类似的成功。他们问自己,“我们如何利用我们已经构建的东西,使任何人都可以创建自己的新闻通讯并从中盈利?”

他们使用他们熟悉的 Ruby on Rails 框架编写了最初的 beehiiv 产品。最初的数据库管理系统,他们称之为 Honeycomb,在 Postgres 上使用 Ruby 队列系统运行,为应用内分析和内部仪表板提供支持。最初,他们的重点是启动创业公司并证明他们拥有一家可行的企业。

“创始团队完成了惊人的工程壮举,扩展系统以每周处理数亿个事件,”Eric 说。

然而,随着平台的增长,系统的局限性变得明显。Postgres 虽然起初有效,但在不断增长的数据需求面前显得力不从心,导致偶尔出现性能问题,并需要更多的工程资源。团队意识到,为了继续增长并确保一流的用户体验,他们需要一个更具可扩展性的解决方案。

选择 ClickHouse

当 Eric 在 2023 年加入 beehiiv 时,他提出了一个全新的数据基础设施。他设想的系统是高度可扩展、快速的,并且能够处理实时分析,而无需繁琐的作业队列或批处理。弹性也是关键;新系统必须是容错的、可灾难恢复的和安全的。他的更广泛的目标是转向基于微服务的架构和事件驱动框架,随着公司的发展提供更大的灵活性。

“目标是从头开始构建一个新系统,不仅扩展 beehiiv 的数据平台,而且理想情况下还要扩展整个业务,”Eric 说。

Eric 决定从 OLTP(在线事务处理)系统转向 OLAP(在线分析处理)系统。虽然像 Postgres 这样的 OLTP 数据库非常适合管理具有高一致性和快速更新的事务数据,但它们在分析所需的大容量、复杂查询方面表现不佳。另一方面,OLAP 系统专为速度和可扩展性而构建,使其成为 beehiiv 需求的理想选择。

ClickHouse Cloud 因其作为 OLAP 数据库的无与伦比的性能而成为明确的选择。得益于其列式存储格式和实时分析能力,它擅长处理数十亿行数据,查询速度极快。执行自动物化聚合的能力也消除了批处理的需要。此外,作为一款开源产品,拥有不断增长的集成生态系统,ClickHouse 提供了灵活性和适应性,以支持 beehiiv 的持续增长和发展。

新的架构

在 beehiiv 的新设置中,数据平台围绕分布式、基于微服务的架构构建,专注于可扩展性和效率。其核心是 Kafka,这是一个实时管理数据流的分布式流平台。数据被摄取到 Kafka 中,经过处理,然后流式传输到 ClickHouse Cloud 进行存储和分析。这种方法将数据摄取与处理分离,以便平稳处理高容量事件流,而不会出现瓶颈。

ClickHouse 充当 beehiiv 数据处理和分析的骨干。作为 OLAP 数据库,它旨在处理 beehiiv 数百万用户和订阅者生成的海量数据。通过在数据通过 Kafka 流式传输后将其移动到 ClickHouse,beehiiv 确保他们的分析不仅实时交付,而且还具有高度可扩展性,从而支持平台的增长。

在他在纽约聚会上的演示中,Eric 重点介绍了团队在新架构中利用的几个 ClickHouse 功能。它们包括

ReplacingMergeTree 表引擎

此功能通过允许幂等性来确保数据完整性,这意味着同一行可以多次插入而不会创建重复项。这在处理来自多个来源的数据或重放事件时非常重要,因为它可以防止数据重复。

字典

这些使将元数据连接到大型事实表变得即时,从而可以快速物化列。“如果没有字典,每次插入原始电子邮件数据表都需要连接查询,从而减慢进程,”Eric 说。

临时列

此功能允许 beehiiv 计算用于其他物化列的值,而无需永久存储计算数据。这对于管理不需要长期保留但对于某些计算是必需的中间数据非常有效。

物化视图

beehiiv 使用物化视图将预聚合数据存储在具有不同排序键的“影子表”中,从而优化系统以适应特定类型的查询。这种方法加快了查询性能,从而可以更快地进行分析和获得见解。

窗口函数

Eric 说新系统“严重依赖”窗口函数来支持各种分析。这些函数允许平台跨数据集执行复杂的计算。

甜蜜的成功

从 Postgres 迁移到 ClickHouse 为 beehiiv 组织带来了改进。曾经花费大量时间应对可扩展性问题和管理数据可用性的工程师现在可以专注于真正的工程工作,例如构建新功能。这种变化也激发了新的想法和创新,使团队能够广泛地思考系统设计,而不会感到受到数据限制的约束。

对于业务领导者和产品经理来说,影响是巨大的。他们现在可以直接访问原始数据,并且可以生成自己的指标,而无需依赖工程师。这种转变为高级分析打开了大门,可以通过 Web 应用程序、仪表板和 API 将其交付给最终用户。它还为未来的机器学习计划奠定了基础,例如欺诈检测、垃圾邮件过滤和广告网络优化。

用户也在亲身体验到好处。与旧系统通常延迟数小时不同,今天的用户可以在几秒钟内发送电子邮件群发并查看性能数据。“这真的很棒,”Eric 说。

总的来说,ClickHouse 已被证明“非常快”,Eric 说。尽管在原始数据上运行了许多查询,但查询中位时间仅为 22 毫秒,平均查询时间为 85 毫秒(Eric 说这个数字被少数大型用户和繁重的查询所扭曲,团队目前正在优化)。

在 Eric 演示时,该系统在六个月内存储了超过 330 亿个原始事件,总共 1.5 TiB 的压缩数据(13 TiB 未压缩)。与甚至无法存储原始数据的 Postgres 相比,新系统的容量处于不同的级别,使 beehiiv 能够以前所未有的规模进行扩展和创新。

展望未来

beehiiv 向 ClickHouse Cloud 的过渡标志着一次巨大的转型,使公司能够有效地管理和利用海量数据。新架构不仅解决了过去的可扩展性问题,而且还使整个组织能够进行创新和增长,而不会受到技术限制的阻碍。

凭借 ClickHouse 作为其数据基础设施的核心,Eric 和团队可以提供实时分析,改善用户体验,并展望实施更多新功能。随着平台的增长,beehiiv 完全有能力在新闻通讯行业中处于领先地位,为创作者提供他们建立新闻通讯并从中盈利所需的工具。

分享这篇文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云产品!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image