当我第一次阅读关于 ClickHouse 的文章时,我非常怀疑。为了在 Cloudflare 的数据团队中寻找更好的 HTTP 分析聚合解决方案,我尝试了许多分布式数据库和流处理框架。
ClickHouse 在 2016 年问世,承诺提供高写入吞吐量和快速聚合,同时仍然(相对)易于操作。在尝试了 Flink、Spark、Druid、Storm、HBase 和其他工具之后,我非常怀疑任何非 Cloudflare 内部编写的东西都能达到我们需要的规模。
我错了。
我对 ClickHouse 了解得越多,就越相信它将成为 OLAP 应用程序的事实标准数据库。由于 ClickHouse 的作者采用了“自下而上”的设计方法来设计数据库,因此他们能够选择数据结构和算法,以充分利用现代硬件的功能。
在 RunReveal,我们正在使用 ClickHouse 构建最快的平台,供各种成熟度级别的安全团队检测、响应和调查事件。此外,由于其速度和效率,它允许团队探索其基础设施,而无需担心此查询会花费多少成本。Evan 和我经历过几次意外的数千美元的 Athena 查询,我们宁愿其他人不要经历那种体验。
是什么让 ClickHouse 如此快速?
日志结构合并树 (LSM 树) 是 Patrick O'Neil 于 1991 年发明的,它是 ClickHouse 速度背后的基本存储数据结构。许多在 ClickHouse 之前就存在的著名数据库都使用了 LSM 树,例如 Bigtable、HBase、LevelDB、Apache Cassandra 和 InfluxDB。然而,这些数据库都没有 ClickHouse 那么容易学习或使用。
由于 ClickHouse 是使用自下而上的方法设计的,因此它还集成了许多优化,充分利用了硬件,例如大量使用 SIMD 指令,确保数据结构具有 CPU 缓存效率,并使用专门构建的算法来解决大规模处理数据的独特问题。
区别在于包装。ClickHouse 非常容易免费开始使用。下载是单个二进制文件或 Docker 镜像。他们优先考虑使数据库对于有关系型/SQL 数据库使用经验的人来说很熟悉,因此相对于现有的 NoSQL/大数据数据库,学习曲线大大降低。Bigtable 和 HBase 都有 SQL 接口,但 Bigtable 当然是闭源的,而 HBase 的操作很麻烦。
我使用 ClickHouse 的经验
当我们在 Cloudflare 使用 ClickHouse 时,我看到了它的强大之处。Cloudflare 是一个非常早期的采用者,在 ClickHouse 首次 OSS 发布后几乎立即就上手并进行了试用。Cloudflare 在裸机上运行 ClickHouse,这很好,因为 ClickHouse 最初是为在具有直连 SSD 的主机上运行而设计的。直到后来他们才开始集成对 Blob 存储的支持。
在 Segment,我们有一个理想的 ClickHouse 用例,即为 Segment 的 Protocols 产品构建指标和分析,跟踪规则调用、验证失败和转换结果随时间的计数,以帮助客户更好地了解他们的数据流。
在 Segment 交付 ClickHouse并不容易。当时仍然没有现成的云产品可用。Segment 正在转型到 Kubernetes,我希望在 Kubernetes 上部署 ClickHouse,因为 PersistentVolumeClaim 抽象可以轻松地让我们将存储共置在本地 SSD 上,使用 AWS 当时新的 i3en 实例,该实例具有临时直连 NVMe 驱动器。如果您还没有探索过这种实例类型,它们非常划算。我强烈建议将它们用于需要快速直连驱动器的部署。
因此,在项目获得批准后,我尝试在 Kubernetes 上部署 ClickHouse。虽然我不是第一个这样做的人,但在具有临时 IP 地址的节点上部署 ClickHouse 的情况肯定不多,因为我很快就遇到了 ClickHouse 中的一个错误,该错误与其副本的内部 DNS 缓存有关。
ClickHouse 团队非常乐于助人且反应迅速。在我找到并展示了问题的根本原因后,他们迅速对问题进行了分类和修复。即使有时感觉有点混乱,他们也出色地管理着这个项目。对于如此庞大且雄心勃勃的项目,他们的行动非常迅速,但就我的经验而言,稳定版本很少引起任何问题或回归。
ClickHouse + RunReveal = ❤️
ClickHouse 真正使其在竞争中脱颖而出的一个决定性功能是其物化视图。与 Postgres 中的物化视图类似,ClickHouse 也集成了持久化视图查询结果的功能,以优化可以适应任何分析或报告应用程序的检索。
在 RunReveal,我们正在存储日志数据,这对于 ClickHouse 来说是一个完美的用例。我们最初确实探索了 ClickHouse 的替代方案,但考虑到我对该数据库的熟悉程度以及他们刚刚推出的 ClickHouse 云服务,答案变得非常明显。我们没有运营开销,但我们可以收获他们构建的所有出色功能的好处。此外,ClickHouse 正在迅速成为支持 AI/ML 应用程序的绝佳基础架构,我们完全打算利用它。
如果您想了解更多关于我们在 RunReveal 如何使用 ClickHouse 的信息,我将在下周二,即 11 月 14 日在 ClickHouse 湾区聚会上发表演讲。我很乐意在活动中回答有关我使用 ClickHouse 经验的任何问题,请务必注册,因为名额有限!
RunReveal 是速度极快的安全数据平台,用于威胁检测和调查,易于使用,具有灵活的部署模型,并为各种成熟度级别的公司提供即时价值。如果您的安全组织需要快速搜索大量日志,请与我们联系 ([email protected]),我们将帮助您将安全数据转化为可操作的见解。