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