数仓概念
官方定义:数据仓库是一个面向主题的、集成的、相对稳定的、反应历史变化的数据集合,用于支持管理决策。
个人理解:数据仓库就像一个大型图书馆,图书馆是不生产图书,但是会收集很多品类的书籍,然后进行分门别类的梳理、归档,帮助任何一个需要图书的人快速的找到图书、应用图书;同样,数据仓库也不生产数据,我们只是将企业所有相关的数据存到数据仓库,然后根据一定的标准规范,对数据进行分类转换,挖掘数据价值,提高数据使用效率,服务业务、支持决策,数据仓库是一套体系结构,并不是一个单一的技术。
一、数据仓库四大特点
- 主题性:数据仓库是面向主题的组织方式,在较高的层面上对数据进行一个完整的、统一的描述,能完整统一的刻画分析对象所涉及的有关企业的各项数据;
- 集中性:将各个业务系统不同的数据源统一成一致的、没有歧义的标准数据后,放置到数据仓库中;
- 相对稳定性:数据仓库是olap的,面向查询分析的,很少有修改和删除操作,通常只需要加载、刷新即可;
- 反映历史变化性:数据仓库通常记录了从建设数仓到当前的所有数据,包含了历史信息,通过这些信息,可以对企业的发展历程和未来趋势做出预测。
二、数据仓库分层意义
在没有数仓分层时,数据引用是混乱的,甚至会出现数据引用循环依赖。因此我们需要一套科学有效的对数据进行组织和管理,使数据体系更加有序,这就是我们说到的数据仓库分层设计。数仓通过分层可以有以下几点好处:
- 清晰的数据结构:每一层数据都有自己的作用域与职责,当我们使用数据的时候更加方便我们理解和定位;
- 减少重复开发:通过开发一些通用的数据中间层数据,能够极大的较少重复计算和烟囱式开发,减少计算资源和存储资源的浪费。
- 数据关系条理化:并且清晰的数据结构可以构建数据地图,方便追溯问题以及评估问题影响范围。
- 屏蔽原始数据变化的影响:当业务系统新增或变更的时候,我们可以最大限度地减少上层应用地影响,甚至做到无感知迭代。
- 将复杂的问题简单化:将一个复杂地业务问题进行分步骤拆分,每一层只处理单一地步骤,一方面是方便我们理解,更方便我们后续地维度迭代,从而保证了数据的准确性
- 用空间换取时间:数仓分层将数据进行了充分的预处理,数据分析应用的时候可以通过各层满足不同的需求,做到快速响应,减少开发时间。
- 统一数据输出口径: 建立统一公共指标层,规范统一的指标命名,达到同名同义的效果,保证从业务生产到数仓加工到业务应用,整个流程数据口径一致。
三、数仓分层介绍
分层不仅可以解决业务快速的数据支撑,也可以为未来抽象出共性的通用层,能够为 业务发展提供稳定、准确的数据支撑,并且可以为新业务的发展提供数据决策方向,也就是数据驱动和赋能。目前数仓通常分为如下四层:
- 贴源层ods(operational data store):又称数据基础层,将原数据几乎无处理的存放在数据仓库系统中,结构与业务源系统保持一致,目的是出现了问题可以做数据溯源用。
- 明细数据层dwd(data warehouse detail):以业务过程作为建模驱动,基于每个业务过程特点,构建最细粒度的数据主题明细事实表。可以在明细事实表中做适当的冗余,减少表之间的查询关联。
- 汇总数据层dws (data warehouse summary):以分析主题对象为建模驱动,基于上层应用和产品的需求做指标设计,构建公共粒度的轻微汇总层,以宽表化的手段物化模型,构建命名规范、口径一致的统计指标,为上层应用层提供公共指标支持。
- 数据应用层ads(application data store):对外存放产品需求的个性化统计指标数据;对内设计跨业务主题的汇总指标或者更粗粒度的汇总指标。
四、对数仓的思考
数据仓库可以总结为“存、融、通、用”,首先将个业务系统的源数据接入存放到数据仓库;然后按照维度建模将数据进行融合打通,构建质量好、数据安全、指标统一的数据;最后供上层应用层使用。个人对数据仓库的理解如下:
- 融合:将公司不同的业务系统的数据、埋点数据、第三方数据接入数据仓,进行融合,保证数据是完整的,没有信息孤岛。
- 打通:将不同的数据融合进来后,业务系统数据是基于oltp进行设计的,跟数据仓库的设计理念是不同的,那么我们需要将接入的数据进行打碎重组,按照维度建模的理念,纵向划分数据域、构建数据主题,横向分层,按照标准规范流程构建数仓的架构。
- 送出去:将数据按照数仓建模后,构建更有价值的数据后,回流到业务系统,赋能运营、分析团队,为决策提供支持、体现数据驱动价值。
总的来说,就是将数据融合、打通、管理并挖掘体现出数据的价值,为决策、分析提供数据支撑,赋能业务。每个数据仓库都需要结合具体的业务,我们数据开发人员需要总结自己的“道”,“法”,“术”,触类旁通、内化于心。
五、数据仓库建模的意义
数据仓库建模是按照一定的数据模型,对整个企业的数据进行采集、整理、融合打通,最终提供口径一致、跨部门的报表数据;合适的数据模型,对于公司来说,是可以获得更好的性能、成本、效能和质量。数据建模可以全方面的业务梳理、改进业务流程、消灭信息孤岛,提升用户的使用效率,从而也能更好的推进数据仓库系统的建设。
- 性能:通过空间换取时间,可以帮助我们快速查询所需要的数据,减少数据shuffle、提高数据的使用效率;
- 成本:减少烟囱式的开发,实现计算结果服用,极大减少存储和计算成本;
- 效率:一方面业务发生变化,可以快速支持迭代;好的模型也可以提高数据探查分析的效率;
- 质量:统一统计口径,减少数据计算错误的可能性;技术和业务双向沟通确认,保证指标同名同义;
- 进行全面的业务梳理,改进业务流程:数仓设计过程需要对整个企业的业务流程进行梳理理解,还能从数据角度改进业务流程,提高业务效率;
- 建立全方位的数据视角,消灭信息孤岛和数据差异:站在全企业角度对数据进行收拢,帮助消灭部门边缘容易忽略的信息孤岛数据;
- 解决业务的变动和数据仓库的灵活性:当业务变动是可以局部修改,做到上游无感知,避免了整个链路的调整,体现了数据仓库的灵活性。
发表评论