2022 年 12 月 6 日,彭博结构化产品团队工程团队负责人 Baudouin Giard 在纽约 Meetup 上介绍了其团队对 ClickHouse 的用例。
金融领域需要先进的数据管理和分析能力,才能为机构投资者提供准确及时信息。作为金融市场领先的数据提供商,彭博在优化数据摄取和查询性能方面面临着独特的挑战。ClickHouse 的列式存储、易用性以及使用简单数学编写复杂计算的能力使其成为彭博用例的绝佳选择。
彭博的产品包括彭博终端和一些企业 API,它们持续向机构投资者提供最佳数据。公司的挑战是针对相对较少的人员查询同时查询一亿种证券进行优化。
“我不得不优化的是不是同时连接到彭博的一亿人。我不得不优化的是一个人查询数据,大约一亿种证券同时查询。那么如果一千人做同样的事情呢?” Giard 说。“人们希望对整个市场有一个全面了解,他们想将自己的操作与市场平均水平进行比较。”
Giard 的团队已经使用 ClickHouse 两年了,利用 ClickHouse 的彭博终端上的特定应用程序是他们最常开发的项目之一。数据集相对较小,只有 50 亿行和 100 列,使用模式非常基本。用户过滤和分组列,并选择列来执行交互式查询,这些查询要求他们迭代查询并执行一些复杂的计算。
Giard 解释说,ClickHouse 是他们用例的绝佳选择,因为它具有列式存储,允许用户只查询必要的列,而不是使用过多的内存。
“当您有像这样具有 100 列的数据集时,列式存储是一个非常大的优势。您很快就会发现,人们可能只对其中 10 列感兴趣,但偶尔也会有人想要查询第 100 列。因此,您希望它可用,但您不希望有一个完整的内存数据存储,它将为所有这些很少使用的列占用大量内存。” Giard 说。
此外,ClickHouse 易于使用,允许用户使用简单的数学编写复杂的计算。
该团队优化数据摄取而不是数据查询速度的方法帮助他们在不到一小时内摄取了 4 太字节的数据。Giard 每当他们需要更改数据(例如添加新列时)都会创建一个新的 ClickHouse 表。使用缓冲表有助于确保所有数据都驻留在内存中,从而使该过程极其灵活。
数据质量至关重要,Giard 强调了快速更新数据的必要性,以确保客户获得准确的数据。使用缓冲表并为每次更改创建新表使该过程灵活,从而允许快速更新数据并为客户提供准确的数据。
“这对我来说非常重要,因为当您从事数据业务,尤其是金融数据业务时,您的优势,您之所以优秀,是因为您数据的质量。” Giard 说。
Giard 还讨论了 ClickHouse 如何通过合并树表使用不可变文件,这允许用户在向表追加新数据时立即克隆表。但是,客户端执行的每个查询都会给 ZooKeeper 带来压力,如果 ZooKeeper 崩溃,可能会导致整个应用程序崩溃。因此,该团队一直在测试灾难恢复模拟以确保该流程有效。
彭博目前在公司提供的机器的默认设置上本地使用 ClickHouse,他们使用本地存储为客户提供数据服务。但是,Giard 希望尝试将 ClickHouse 部署到 Kubernetes 集群中,使用其内部 S3 后端作为存储,并尝试使用 ClickHouse Keeper。
Baudouin Giard 关于彭博对 ClickHouse 的独特用例的演讲为金融领域的其他公司提供了宝贵的见解。Giard 的团队优化数据摄取而不是数据查询速度的方法帮助他们有效地摄取了海量数据,同时确保了数据质量。ClickHouse 的列式存储、易用性以及使用简单数学编写复杂计算的能力使其成为此用例的绝佳选择。
更多详情
- 此演讲于 2022 年 12 月 6 日在纽约举行的 ClickHouse 社区 Meetup 上发表。
- 演示文稿材料可在 GitHub 上获得。