什么是数据仓库
发布时间:2023-09-23 21:23 浏览次数:次 作者:admin
一、什么是数据仓库
1. 定义数据仓库,由数据仓库之父Bill Inmon 在1991 年出版的“Building the Data Warehouse”定义且被广泛接受的——面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。从定义上来看,数据仓库的关键词为面向主题、集成、稳定、反映历史变化、支持管理决策,而这些关键词的实现就体现在分层架构内。
2.目的
数仓的核心是解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题,并提供给分析人员一个清晰可用的展现层,方便快速的业务支撑。
二、数据仓库建设
1.数据仓库方法论
我们的数据仓库按照分层设计架构划分成贴源层、整合层、汇总层和集市层。
其中贴源层主要是对接原业务系统数据,将数据落地到数据仓库中,贴源层的表结构和源数据表结构几乎一样,只是多了一些跑批时间字段或者增量数据标识等字段。
整合层建立模型标准,通过主题建模思路进行建设。例如,我们的整合层模型主题包括:学生、教师、课程等主题,并且其中包括了所有的维度表和事实表。
再就是汇总层,它是通过对下端集市层和应用的一个进行共性提炼,作为集市层的共性数据来源。
集市层主要是各个面向数据应用的集市模型集合,它是直接对接下游数据应用的。
那么整个数据仓库设计主要有两种驱动模式进行建模,一个是自顶至下的数据驱动方向,另一个是由底至上的需求驱动方向。
2.数仓模型建设原则
然后我们看一数仓建模的一个原则,根据数据仓库的定义,数据仓库模型的建设原则有4点,分别是中性原则,一致性原则,灵活性原则、和粒度性原则。
●模型中性原则
整合层模型原则上不为任何特定的应用进行针对性的设计,模型不会由于现有应用的变动或者对新应用的支持而在结构上重构;
整合层模型对重要业务元素及业务规则进行规范化处理,例如所有个人客户、团体客户、代理人等都统称为当事人,它是一个中性的概念,可以包含所有的个体以及各种可能的组合。
●模型一致性原则
作为数据仓库设计基础的,逻辑数据模型必须在设计过程中保持一个统一的业务定义,比如当事人的分类等应该在整个企业保持一致,将来各种分析应用都使用同样的数据;
统一业务定义,使将来不同应用系统的开发人员在进行应用设计和展现时都使用同样的语言。
●模型灵活性原则
基础明细区模型是一个基本上满足第三范式要求的关系模型,这种建模方式可以最大程度上减少数据冗余;
同时保证模型的灵活性和可扩展性,在模型设计过程中可以“想大做小”——在有一个全局规划的同时,选定某些部分入手,然后再逐步完善。
●模型粒度性原则
为了满足将来不同的应用分析对数据的需要,基础明细区模型能够提供最小粒度的详细数据,以支持各种可能的分析查询。
3.数仓模型建设步骤
那么根据我们数据仓库的建设原则,它的一个建设步骤主要分为5步来走。
①调研与分析:对数据源和业务需求进行调研,分析数仓各层所涉及的内容。
②逻辑模型设计:数据交叉表设计、概念模型和专有模型设计。
③物理模型设计:物理模型命名、索引优化、分区优化、生命周期管理。
④数据映射:源表到数据集市物理表的数据映射设计。
⑤ETL开发测试:物理作业开发、性能优化、单元测试和集成测试。
4.数仓模型建设方法
接下来我们看一看数仓模型的建设方法,它是的框架是按照3种模型自上而下建设的,首先是建立我们的概念模型,然后概念模型根据客户的情况落地到逻辑模型,逻辑模型之后我们会进行模型的一个物理化过程,那么之前的业务和数据都会被我们进行物理化的一个落地。
例子:从我们的概念模型根据客户的情况落地到逻辑模型,我们主要会做几个处理,包括:复制、整合和拆分,例如拆分怎么理解呢,例如源业务系统两个表中分别都有数额这个字段,但是在一个是余额一个发生额,这种属于业务含义不同,但名称相同的,我们会进行拆分处理,将相应字段重命名统一标准纳入到逻辑模型当中,复制是含义和名字一致的,直接纳入模型中,整合是业务含义一致但名称不一致的,我们会统一标准以后再纳入。
逻辑模型之后我们会进行物理化落地,那么目前业务和数据都支持的我们会进行物理化。
5.ETL(抽取、转换、加载)与ELT(抽取、加载、转换)
那么模型讲完了,我们看看数仓里面必不可少的ETL过程,什么是ETL呢,大家应该都听说过,它是我们的数据源从原系统转移到数据仓库的一个常用方法,那么这个方法包含3个过程,就是抽取、转换和加载,无论在物理还是虚拟的状态下,批量还是实时的执行ETL,都是应用程序和数据仓库间数据流动的必要步骤。
那除了ETL,我们数据源从原系统转移到数据仓库还有另外一种模式,就是ELT,ELT与ETL别在其实就在于这个转换的时间点的,ETL是抽取了就转换,ELT它则是先将数据快速抽取加载到数仓里面,然后再进行转换。
6.ETL开发
讲完转移过程,我们来看看ETL的开发,这个我们是支持将映射文档中的源表与目标表的的映射关系进行匹配的,可以使用我们的ETL开发工具,通过简单的拖拉拽的形式,完成一个ETL开发的落地。
7.调度管理
那么完成开发落地以后,我们要干什么,就是要去执行ETL对吧,最理想的肯定是自动调度,我们是支持全流程的自动调度管理的,包括执行策略,执行频次,执行后的提醒,结果的通知等等。
调度管理的目的:
通过ETL工具控制ETL作业的执行时间、执行频次。
并且设置邮件发送执行情况,当ETL流执行出错时,相关人员可收到通知和相关信息,并根据信息判断做出处理。