创建实时数据仓库

时间:2016-10-16 21:31:39

标签: etl data-warehouse business-intelligence

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

我已经读过数据仓库必须是关系数据库,并且理解这一点。我不明白的是如何实现近乎实时或完全实时的DWH。我读过有关推拉策略的内容,但我的结论如下:

  • DBMS的选择对于创建实时DWH并不重要。我的意思是MySQL,SQL Server,Oracle或其他任何东西都可以。当我将其作为个人项目时,我选择了MySQL。
  • 关键因素是作业调度的频率,这是调度程序的任务。这个假设是否正确?我的意思是,创建实时DWH的关键是每秒为每个ETL过程建立一个作业吗?

如果我错了你可以帮我理解这个吗?然后,这是创建实时DWH的方法?是否允许任何开源调度程序?任何不允许的开源调度程序?

我很困惑,因为有些参考文献说这是不可能的,有些则是可能的。

1 个答案:

答案 0 :(得分:2)

<强>定义

非常有趣的问题。首先,应该定义“实时”实时应该如何。实时对于传入数据确实具有非常低的延迟,但在发送系统中需要良好的体系结构,可能是事件总线或消息队列以及接收端的良好基础结构。这通常涉及某种倾听者和从交付系统中推送

近实时将是下一个“较低”的水平。如果我们说近实时最大延迟时间约为5分钟,那么您的方法也可以正常工作。因此,例如,您可以在每分钟左右数据。但请记住,如果有新数据可用,需要进行某种高性能检查。如果这种检查和拉动花费的时间超过一分钟,那么跟上数据将变得更加困难。真的取决于音量。

<强>实时

正如我之前所说,实时分析最多需要一个消息队列或服务总线,您的一些工作可以连接到并“监听”新数据。如果将新数据包推入管道,它的大小可能非常小,可以非常快速地处理。

如果没有听众的基础设施,则需要近乎实时。

<强>近实时

这是你必须发展更多的部分。你必须确保获得通常是某种delta的小型数据包。如果您有权访问数据库,则可以使用触发器完成此操作。否则你必须偶尔拉一下,而你的“一次”可能会非常频繁。

这可以在Linux上完成,例如使用简单的魔方或在Windows上使用事件规划。请记住,您的加载和处理时间不应超过下一个作业开始前的时间窗口。

<强>数据库

最后,当你定义了你想要实现的目标并且大致了解如何实现delta加载或监听器时,你是对的 - 你可以使用关系数据库。如果您对性能感兴趣并将此部件建模为Star Schema,您还可以查看基于列的引擎或基于列的数据库,如Apache Cassandra。

计划

另外,对于作业调度,您可以从Linux或Windows标准规划工具开始。如果你用Java编写代码,你可以使用像quartz这样的东西。但这只是近乎实时的情况。如上所述,实时需要不同的架构。