数据仓库
- 一. 什么是数据仓库?
- 二. 传统数据库与数据仓库的区别?
- 三. 数据仓库详解
- (一). 数据分析
- (二). 特点
- 1. 面向主题
- 2. 集成的
- 3. 反应历史变化
- 四. 如何搭建数据仓库
- (一). 数据平台
- (二). 开发规范
- 1. 数据分层
- 2. 主题域
- 3. 统计粒度
- (三). 数据治理
- 题外话
一. 什么是数据仓库?
数据仓库(DW)是一个面向主题的、集成的、相对稳定的、反应历史变化的数据集合,支持管理决策。
二. 传统数据库与数据仓库的区别?
传统数据库有关系型数据库(MySQL、PostgreSQL、Oracle…)、非关系型数据库(Mongodb,Redis…),传统数据库主要存放业务数据。那与数据仓库有什么区别呢?我们细听分说。
先说一下两者的区别:
OLTP:联机事务处理,主要是业务数据,需要考虑高并发、考虑事务;
OLAP:联机分析处理,重点主要是面向分析,会产生大量的查询,一般很少涉及增删改。
传统数据库 | 数据仓库 |
---|---|
数据库是面向事务的设计 | 数据仓库是面向主题设计 |
数据库一般存储在线交易数据 | 数据仓库存储的一般是历史快照数据(当然也有实时数仓) |
数据库设计是尽量避免冗余 | 数据仓库在设计是有意引入冗余 |
数据库是为捕获数据而设计 | 数据仓库是为分析数据而设计 |
三. 数据仓库详解
(一). 数据分析
- 年度销售目标的制定,需要根据以往的历史销售数据进行分析决策,不能随便制定。
- 优化业务流程
例如:某电商平台某款沙发,在过去5年主要的购买人群在什么年龄段,在哪个季节购买人数多,这样可以根据这个特点为目标人群设定他们主要的需求和动态分配产生的生产量。
(二). 特点
1. 面向主题
主题是一个抽象的概念,它可以是一个分析领域或业务对象,例如客户、产品、销售等。与传统的面向应用(如基于事务处理系统)的数据组织方式不同,面向主题的数据仓库更关注企业决策分析的需求。
-
以客户主题为例
它可能包含客户的基本信息(如姓名、年龄、性别等)、客户的购买历史(购买的产品、购买时间、购买金额等)、客户的投诉记录等数据。这些数据来自不同的源系统,如销售系统、客服系统等。通过将这些与客户相关的数据整合到客户主题下,企业可以进行客户细分、客户价值评估、客户忠诚度分析等决策分析活动。
-
以产品主题为例
包括产品的基本属性(如产品名称、型号、规格等)、产品的销售数据(不同时间段的销售量、销售额等)、产品的质量反馈数据(如次品率、客户评价等)。这些数据能够帮助企业了解产品的市场表现、优化产品设计和生产计划等。
2. 集成的
-
数据仓库的数据通常源自多个分散的业务系统及源系统中的传统数据库,这些上游系统可能包括 MySQL、PostgreSQL、Oracle、MongoDB 等等。由于上游系统难以完全掌控,数据仓库中每个主题所对应的源数据分散于各个数据库中,存在诸多重复或不一致的情况。并且,源于不同联机系统的数据均与特定的应用逻辑紧密相连。
-
数据仓库的指标数据一般不宜直接从上游系统获取,而是应将相关逻辑沉淀于数据仓库内部。在此过程中,需要全面统计源数据里的所有矛盾之处,诸如字段的同名异议(相同名称但含义不同)、异名同义(不同名称却表示相同含义)、单位不统一以及字长不统一等问题。
-
在数据处理方面,数据的综合与计算工作不可或缺。部分数据综合工作可在从原有数据库抽取数据时同步开展,但更多的是在数据进入数据仓库之后于其内部进行综合生成,以此确保数据仓库数据的准确性、完整性与可用性,为企业的决策分析提供坚实可靠的数据支撑。
3. 反应历史变化
- 数据仓库通常每日执行一次全量数据同步操作,将数据传输至数仓表的 t - 1 分区。此操作旨在留存数据库的快照数据,且这些快照数据具有不可修改性,一旦生成便保持原始状态,从而完整地记录了各个历史阶段的数据信息。
- 数据仓库中的表依据业务特性均设定了特定的生命周期,例如有的表生命周期设定为 732 天,有的则为 3 天等。对于未明确配置生命周期的表,其历史数据将被永久保留,以满足不同业务场景下对数据留存期限的多样化需求。
- 借助数据仓库每日所记录的数据变化状况,能够开展多维度、深层次的分析工作,精准洞察业务发展的动态趋势、规律特点以及潜在问题等,为企业决策提供全面、可靠且具有时效性的数据依据,助力企业在复杂多变的市场环境中实现科学规划与高效运营。
四. 如何搭建数据仓库
(一). 数据平台
- 在云服务提供商方面:
阿里云推出了 DataWorks,它提供了较为全面的数据集成、数据开发、数据质量管控等功能,能够助力企业高效地构建数据仓库与数据湖,实现数据的全生命周期管理,从数据的采集到数据的分析应用都有相应的工具与服务支持,方便企业在阿里云的生态体系内进行大规模的数据处理与分析工作,以满足不同业务场景下的数据需求。
华为云的 DataArts Studio 也是一款功能强大的数据治理平台,它涵盖了数据架构设计、数据开发、数据资产运营等多个模块。通过其智能化的数据治理能力,可以帮助企业快速整合多源数据,提升数据的质量和价值,并且在数据安全与合规方面也有着完善的保障措施,确保企业数据资产的安全性与稳定性,为企业数字化转型提供坚实的数据基础。 - 对于自建数据平台而言:
一些大厂会根据开源组件搭建一套自己的大数据治理平台。例如,腾讯基于 Hadoop、Spark 等开源组件,结合自身业务特点和技术需求,构建了内部的数据处理与管理体系。通过深度定制和优化这些开源组件,实现了对海量数据的高效存储、快速计算以及精准分析,以支撑其庞大的业务体系,如社交网络数据处理、游戏业务数据挖掘等多方面的数据工作,满足腾讯在不同业务领域对于数据驱动决策的高度依赖。还有字节跳动,同样利用开源技术搭建了适应自身业务快速发展的数据平台,能够灵活应对诸如短视频数据处理、个性化推荐算法所需数据支持等复杂的数据任务,在保障数据高效流转与精准分析的同时,不断提升数据平台的扩展性和适应性,以适应不断变化的业务创新需求。
(二). 开发规范
1. 数据分层
- ods(源始层)
ODS 层作为数据仓库的源头,承担着对源自不同业务系统数据的初步整合工作。它能够有效地集成多源异构数据,通过一系列的数据清洗操作,如统一数据格式,消除其中的冗余信息,从而有力地确保数据在进入数据仓库体系时具备一致性和完整性。 - dwd(明细层)
DWD 层聚焦于存储经过深度清洗和转换后的详细数据。在这一层,数据经过了更精细的处理,去除了噪声和异常值,以保证数据的准确性和可用性。 - dws(汇总层)
DWS 层的核心任务是针对 DWD 层的数据开展粒度的汇总以及指标的计算工作。在进行数据汇总时,为了保持数据的可追溯性和准确性,应尽量遵循只做加减法的原则。 - ads【dm】(应用层)
ADS 层负责将相同粒度的指标数据依据业务指定的主题域进行归整,以便为下游的各类应用(如 BI 看板、APP、AI 等)提供数据支持。 - dim(维度层)
DIM 层主要用于存储维度数据,这些维度数据详细地描述了业务实体的各种属性,涵盖了诸如卖场、店铺、客户、商品、时间等多个方面。维度数据为数据仓库中的事实表提供了丰富的上下文信息,使得数据分析能够从多个维度进行深入挖掘和洞察。
2. 主题域
名称 | 英缩 | 描述 |
---|---|---|
交易域 | trd | 主要聚焦于交易相关的各类信息,包括交易的订单详情、交易金额、交易时间等,为分析交易行为和交易绩效提供基础数据。 |
公共域 | pub | 涉及例如人员、岗位以及 HR 系统相关的数据内容,可用于人力资源管理分析、组织架构优化等业务场景。 |
综合域 | cplx | 专门处理复杂计算任务以及复合型指标的计算与存储,通常需要整合多个主题域的数据进行综合分析与处理。 |
财务域 | fin | 围绕财务相关的数据展开,如财务报表数据、成本核算数据、资金流数据等,为企业的财务管理和决策提供关键数据支持。 |
… |
3. 统计粒度
统计周期 | 英缩 | 描述 |
---|---|---|
天统计 | d | 以天为单位对数据进行统计汇总,适用于需要分析每日业务变化情况的场景,如每日销售数据统计、每日用户活跃度分析等。 |
周统计 | w | 按照周的时间周期进行数据的统计处理,可用于观察业务在一周内的波动趋势,如每周的客流量变化、每周的订单量趋势等。 |
月统计 | m | 以月为统计粒度,常用于月度财务报表生成、月度业务绩效评估等工作,能够反映出业务在较长时间周期内的整体表现。 |
年统计 | y | 针对年度数据进行汇总分析,对于制定年度战略规划、评估年度业务发展成果等具有重要意义。 |
… |
(三). 数据治理
- 科学设定数据生命周期
- 定期清理废弃任务
- 周期性整理无用表
- 强化质量监控机制
- 启用任务基线报警功能
…
题外话
我通常将大数据开发平台比作烧菜的锅,,,那么主菜、配菜就是多个源系统,,,烧菜的锅铲就是我们开发语言,,,添加的佐料是代码中的细节,,,不论先放盐,还是先加醋都能烧出一锅菜,但是菜的味道大不相同,,,所以开发规范是定义一个合格的数据仓库标准。
=========================================================
人生得意须尽欢,莫使金樽空对月!
__一个热爱说唱的程序员。
今日份推荐音乐:瘦子E.SO《CHANGE》
=========================================================