创建实时数据仓库

Creating real time datawarehouse

我正在做一个个人项目,其中包括创建数据仓库 (DWH) 的完整架构。在这种情况下,作为 ETL 和 BI 分析工具,我决定使用 Pentaho;它有很多功能,从允许轻松创建仪表板到完整的数据挖掘过程和 OLAP 多维数据集。

我看过数据仓库一定是关系型数据库,明白这一点。我不明白的是如何实现近乎实时或完全实时的 DWH。我已经阅读了推拉策略,但我的结论如下:

如果我错了,你能帮我理解一下吗?那么,创建实时 DWH 的方法是什么?是否有任何开源调度程序允许这样做?还有任何允许这样做的非开源调度程序吗?

我很困惑,因为一些参考资料说这是不可能的,其他人说这是可能的。

定义

非常有趣的问题。首先,应该定义 "real-time" 实时应该如何。实时对于传入数据的延迟确实非常低,但在发送系统中需要良好的架构,可能是事件总线或消息队列以及接收端的良好基础设施。这通常涉及某种类型的侦听器和来自传送系统的推送

近实时将是下一个 "lower" 级别。如果我们说近实时最多延迟 5 分钟,那么您的方法也可以工作。因此,例如在这里,您可以每分钟左右 拉取 数据。但请记住,您需要某种高性能检查新数据是否可用以及要获取哪些数据。如果这个检查和拉取花费的时间超过一分钟,那么跟上数据就会变得更加困难。真的取决于音量。

实时

正如我之前所说,实时分析最多需要一个消息队列或一个服务总线,您的某些作业可以连接到该队列或 "listen" 以获取新数据。如果一个新的数据包被推入管道,它的大小可能会非常小,并且可以非常快地处理。

如果没有用于侦听器的基础设施,您需要接近实时。

近实时

这是您需要进一步开发的部分。您必须确保获得非常小的数据包,这些数据包通常是某种增量。如果您有权访问数据库,这可以通过触发器来完成。否则你必须每隔一段时间拉一次,而你的 "once" 可能会非常频繁。

这可以在 Linux 上完成,例如通过简单的联合工作或在 Windows 上进行活动策划。请记住,您的加载和处理时间不应超过 window 下一个作业开始前的时间。

数据库

最后,当您定义了要实现的目标并大致了解如何实现增量加载或侦听器时,您是对的 - 您可以采用关系数据库。如果您对性能感兴趣并将这部分建模为星型模式,您还可以查看基于列的引擎或基于列的数据库,如 Apache Cassandra。

计划

对于工作安排,您也可以从 Linux 或 Windows 标准计划工具开始。如果你在 Java 中编码,你以后可以使用石英之类的东西。但这只是近实时的情况。如上所述,实时需要不同的架构。