
本文字数:4540;估计阅读时间:12 分钟
作者:Mathew Pregasen
本文在公众号【ClickHouseInc】首发

本周,我们欢迎来自 Lago 的一篇博客文章,介绍了他们如何使用 ClickHouse 扩展一个事件引擎,并在此过程中将查询速度最高提高了 137 倍!这篇博客文章的原始版本发布在 Github 上。
【https://github.com/getlago/lago/wiki/Using-Clickhouse-to-scale-an-events-engine】
介绍
像许多公司一样,我们在扩展核心产品 Lago (一个开源的基于使用量计费平台)时,不得不在过程中更换数据库堆栈。随着我们逐渐受到欢迎,我们每分钟开始接收数百万个事件。我们初期使用的仅 Postgres 的简单堆栈已经无法满足需求。我们遭遇了严重的加载时间问题,影响了整个应用的性能。
经过一些探索,我们决定使用一个分布式的 ClickHouse 实例专门处理我们的流事件。我们的分析服务现在可以直接查询这个 OLAP 数据库 ClickHouse。对于所有其他数据需求,我们保留了 Postgres。
这个策略非常成功。自重构后,我们从未回头。
今天,我们将探讨这个混合数据库堆栈的决策,特别是为什么我们选择 ClickHouse。
OLTP 与 OLAP 数据库
大多数开发者,包括初级开发者,都有使用 OLTP (在线事务处理)数据库(如 Postgres)的经验。顾名思义,OLTP 数据库专为处理事务而设计。事务是一个独立的工作单元,可能包括以下操作:(i) 读取,(ii) 插入,(iii) 更新,和 (iv) 删除。
OLTP 数据库通常是通用数据库。由于它们支持各种类型的数据处理,可以在一定程度上解决任何数据问题。即使在大规模使用时,OLTP 数据库对于需要以下功能的软件来说也是非常出色的:
-
原子性事务,其中一组事务要么全部发生,要么根本不发生
-
一致性,其中写入和更新之间的查询是确定的和可预测的
对于大多数问题,这些都是重要的特征。对于一些问题,它们是绝对关键的。例如,银行应用程序在账户之间转账时不能有任何差错。对于这些问题,需要 OLTP 数据库

最低0.47元/天 解锁文章
5841

被折叠的 条评论
为什么被折叠?



