创建实时数据仓库
Posted
技术标签:
【中文标题】创建实时数据仓库【英文标题】:Creating real time datawarehouse 【发布时间】:2016-10-16 21:31:38 【问题描述】:我正在做一个个人项目,其中包括创建数据仓库 (DWH) 的完整架构。在这种情况下,作为 ETL 和 BI 分析工具,我决定使用 Pentaho;它具有许多功能,从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集。
我读过数据仓库必须是关系数据库,并且理解这一点。我不明白的是如何实现近实时或完全实时的 DWH。我已经阅读了推拉策略,但我的结论如下:
DBMS 的选择对于创建实时 DWH 并不重要。我的意思是 mysql、SQL Server、Oracle 或任何其他工具都可以做到这一点。由于我将其作为个人项目进行,因此我选择 MySQL。 关键因素是作业调度的频率,这是调度器的任务。这个假设正确吗?我的意思是,创建实时 DWH 的关键是为每个 ETL 流程每秒建立作业?如果我错了,您能否帮助我理解这一点?那么,创建实时 DWH 的方法是什么?是否有任何开源调度程序允许这样做?以及任何允许这样做的非开源调度程序?
我很困惑,因为一些参考资料说这是不可能的,而另一些则是可能的。
【问题讨论】:
很少有公司实施近实时数据仓库。对他们来说,对操作数据库的影响是不值得的。一般来说,数据仓库的查询类型需要访问大量历史数据。 【参考方案1】:定义
非常有趣的问题。首先,应该定义“实时”应该是怎样的实时。 Realtime 对传入数据的延迟确实非常低,但需要发送系统中的良好架构,可能是事件总线或消息队列以及接收端的良好基础架构。这通常涉及某种侦听器和来自传递系统的推送。
近实时将是下一个“较低”级别。如果我们说接近实时的最大延迟约为 5 分钟,那么您的方法也可以工作。所以例如在这里你可以pull每分钟左右的数据。但请记住,如果新数据可用以及获取哪些数据,您需要某种高性能检查。如果此检查和拉取时间超过一分钟,那么跟上数据将变得更加困难。真的取决于音量。
实时
正如我之前所说,实时分析最多需要一个消息队列或服务总线,您的某些工作可以连接到并“监听”新数据。如果一个新的数据包被推送到管道中,它的大小可能会非常小,并且可以处理得非常快。
如果没有侦听器的基础设施,您需要接近实时。
近实时
这是您必须进一步开发的部分。您必须确保获得非常小的数据包,这些数据包通常是某种增量。如果您有权访问数据库,则可以使用触发器来完成此操作。否则,您必须每隔一段时间拉一次,而您的“一次”可能会非常频繁。
这可以在 Linux 上完成,例如通过简单的联合作业或在 Windows 上进行活动策划。请记住,您的加载和处理时间不应超过下一个作业开始之前的时间窗口。
数据库
最后,当您定义了要实现的目标并大致了解如何实现增量加载或侦听器时,您是对的 - 您可以采用关系数据库。如果您对性能感兴趣并将这部分建模为星型模式,您还可以研究基于列的引擎或基于列的数据库,如 Apache Cassandra。
调度
对于作业调度,您可以从 Linux 或 Windows 标准计划工具开始。如果你用 Java 编写代码,你以后可以使用石英之类的东西。但这只是近实时的情况。如上所述,实时需要不同的架构。
【讨论】:
感谢您的回答。关于调度程序和实时概念,我现在对此有了更多的了解。我还有一个问题,如果我要分析大量数据,可能是 10 TB。是实现mysql的好解决方案吗?在这种情况下,我将使用数百 GB,但我正在尝试创建最具可扩展性的架构。我有这个问题是因为我想创建 OLAP 多维数据集来分析数据。也许 MySQL 不是最好的解决方案。 请为此在 *** 上提出一个新问题。如果您愿意,可以在评论中标记我,这样我就能很快看到新问题。以上是关于创建实时数据仓库的主要内容,如果未能解决你的问题,请参考以下文章