构建高性能实时数据模型指南

实时数据模型指南

Lukas Blazek在Unsplash上的照片

数据已成为决策的关键工具。为了能够采取行动,数据需要进行清洗、转换和建模。

这个过程通常是一个以给定频率运行的ELT流水线的一部分,例如每天运行一次。

另一方面,为了能够快速调整和做出决策,利益相关者有时需要访问最新的数据。

例如,如果一个网站的用户数量大幅下降,他们需要迅速了解这个问题,并获得必要的信息来理解问题。

当我第一次被要求构建一个具有实时数据的仪表板时,我直接将其连接到实时的原始表,并提供了一些简单的关键绩效指标,如用户数量和崩溃次数。对于月度图表和更深入的分析,我创建了另一个连接到我们的数据模型的仪表板,每天更新。

这种策略并不理想:我在数据仓库和BI工具之间重复了逻辑,所以维护起来更困难。此外,实时仪表板只能在有几天的数据时表现良好,所以利益相关者必须切换到历史数据来查看较早的日期。

我知道我们必须采取一些措施。我们需要实时数据模型,而不会影响性能。

在本文中,我们将探讨构建实时模型的不同解决方案及其优缺点。

视图

SQL视图是一个包含查询结果的虚拟表。与表不同,视图不存储数据。它们由每次查询视图时执行的查询定义。

以下是一个视图定义的示例:

CREATE VIEW orders_aggregated AS (  SELECT     order_date,     COUNT(DISTINCT order_id) AS orders,    COUNT(DISTINCT customer_id) AS customers  FROM orders  GROUP BY order_date )

即使向表中添加新行,视图也会保持最新状态。然而,如果表很大,视图可能会变得非常慢,因为没有存储数据。

如果您正在处理一个小项目,视图应该是尝试的第一个选项。