长期以来,将批处理管道迁移到流式传输意味着您需要准备好处理各种 JVM 语言和高维护性分布式框架,并学习远超所需的流式系统内部知识。虽然这可能适合拥有大量人力和时间预算的团队,但对于我们其他人来说,这使得流式传输更难被采用。
现代数据栈如何改变这一现状?
从批处理跃迁到流式传输无疑仍具挑战,但它确实可以减少痛苦。随着现代数据栈(MDS)重塑数据工程和分析的未来,一些工具正致力于通过提供以下方式降低进入该领域的门槛:
1) 更轻松、更快速地获取最新数据;
2) 熟悉且能融入您常用技术栈的界面;
3) 最低限度的运营开销。
同时,“不够快”仍然是分析中的一个常见瓶颈,从数据转换到可视化无不如此。Materialize 是一款旨在改变这一现状的数据库,它专为流式分析和 MDS 构建。
流式分析实践
让我们通过此演示来分解使用 Materialize 和 Metabase 构建端到端分析管道所涉及的基本步骤
1. 连接到流式数据源
第一步是让 Materialize 知道您的数据位于何处以及它的样子。在此演示中,我们使用 Kafka 作为源,但您也可以从 PostgreSQL 等关系型数据库开始,并将复制流推送到 Materialize(即变更数据捕获)。
2. 使用 SQL 建模数据转换
接下来,您需要将转换定义为 SQL 查询(您甚至可以使用 dbt!)。这些查询可以任意复杂,例如使用子查询和多路连接,因为诀窍在于:Materialize 不会重新读取源数据并从头开始重新计算所有内容,而是会将查询结果索引到内存中,并随着新的源数据流入而增量更新它们。
3. 可视化结果
最后,您可以使用 Materialize 与 Metabase 的原生集成来跟踪这些结果。所有查询都只是从自更新的物化视图中读取数据,因此您可以将仪表盘设置为每秒自动刷新,而不会让服务层承受压力,并确保您为最终用户提供的是最新、一致的洞察。