长期以来,将批处理管道迁移到流处理意味着需要准备好处理多种 JVM 语言和高维护的分布式框架,以及学习比你应知更多的流系统内部知识。虽然这可能适合拥有充足人力和时间预算的团队,但它使得流处理 更难被我们其他人采用。
现代数据栈是如何改变这一点的?
从批处理转向流处理的飞跃过程始终充满挑战,但肯定可以减轻一些痛苦。随着 现代数据栈 (MDS) 重塑数据工程和分析的未来,一些工具正通过提供以下方式来降低该领域的入门门槛:
1) 更快地更方便地访问最新的数据;
2) 与你的常用栈融合的熟悉界面;
3) 最少的运维开销。
与此同时,“不够快”仍然是分析中的常见瓶颈,从数据 转换 到 可视化,无处不在。致力于改变这一现状的工具之一是 Materialize,一个专为流分析和 MDS 而设计的数据库。
流分析实战
让我们使用 这个演示 来分解使用 Materialize 和 Metabase 构建端到端分析管道的基本步骤。

1. 连接到流数据源
第一步是让 Materialize 知道你的数据位置和数据结构。在此演示中,我们使用 Kafka 作为源,但你也可以从 PostgreSQL 等关系型数据库开始,并将复制流推送到 Materialize(即更改数据捕获)。
2. 使用 SQL 进行数据转换建模
接下来,你需要将转换定义为 SQL 查询(你甚至可以使用 dbt!)。这些查询可以任意复杂,并使用例如子查询和 n 路连接,因为关键在于:Materialize 不会重新读取源数据并从头开始重新计算一切,而是会将查询结果以索引的形式保存在内存中,并随着新源数据的流入而增量更新它们。
3. 可视化结果
最后,你可以通过 Materialize 与 Metabase 的原生集成 来跟踪这些结果。所有查询都只是从自更新的物化视图中读取数据,因此你可以设置仪表板每秒自动刷新,而不会使服务层不堪重负,并确信你为最终用户提供的是最新、一致的见解。