为什么我们不能直接使用数据仓库而不是数据库?



我正在学习Hadoop,并遇到了HIVE。我还了解到,HIVE充当了分析查询的数据仓库。

如果数据仓库是多个数据源的聚合,为什么公司要使用多个数据来源并聚合它们?为什么他们不能直接写入数据仓库,因为这会减少聚合和处理的开销?

是因为如果所有用户都从同一个数据仓库中读取,会产生开销吗?

我想知道,如果我们有高度可扩展的数据仓库,为什么我们需要数据库?

(只有在产生大量数据的大公司的背景下。因为我可以理解,大多数公司甚至可以使用2个数据库进行管理。(

数据仓库(DWH(是不同数据库之上的一个更大的层,而数据库是一个名称空间+存储器,用于存储与某些DWH阶段相对应的一些表/对象/过程。

分析DWH的最终目的是提供可用于不同分析/报告工具的分析数据集市:Tableu、QulickView等

DWH包含不同阶段(数据库(中以不同方式聚合的数据,例如LZ——从不同来源加载的数据存储在着陆区,ODS——作战数据存储,从不同来源的数据组合成事实表和维度,清除、转换,通常使用3NF和从不同来源丰富的一致维度。最后是DM——一个数据集市,其中聚合的数据存储在维度模型中:事实表(可以聚合(和星形/雪花模式中使用的维度。也可以使用一些其他数据库,如用于中间数据处理的STG。

DWH不仅是一个由多个数据库组成的存储,它还是用于加载、提取、转换每个阶段的数据、通用体系结构和策略的ETL过程。

您可以决定DWH将包含哪些层以及应该如何设计:使用自上而下的方法(从源系统开始(或自下而上的方法(由数据集市维度建模开始(,或两者兼而有之。

DWH本身不聚合(处理(任何数据。对于每个步骤和实体,您都会创建一个ETL过程,在不同阶段(数据库(之间加载、提取和转换数据。

一致性维度(在不同的数据集市/事实表中使用的相同维度(被用作DWH中的单个事实点。

例如,如果您有从不同的源系统(如Salesforce、GoogleAnalytics等(增量加载的User表,那么不同的ETL过程将数据加载到LZ中,然后另一个ETL过程将其合并并消除重复到ODS表中,然后又一个过程将其与事务数据一起加载到DM中,并将其加载到每月/每天聚合的事务数据集市中,其是使用User表作为维度的每日或每月聚合星模式。

还有另一个现代概念——data lake,它在3NF和数据集市中额外包含半结构化或非结构化数据以及结构化数据,这允许数据工程师/数据矿工挖掘非结构化数据并进行分析,找到一些相关性,最终构建新的数据集市。

相关内容

最新更新