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