数据仓库: 6- 数据仓库分层
目录
- 6- 数据仓库分层
- 6.1 简介
- 6.1.1 数据仓库分层的优势
- 6.1.2 常见的数据仓库分层模型
- 6.1.2.1 四层模型
- 6.1.2.2 三层模型
- 6.1.3 数据仓库分层原则
- 6.1.4 数据仓库分层示例
- 6.1.5 总结
- 6.2 ODS(操作数据存储)层
- 6.2.1 ODS 层的主要功能
- 6.2.2 ODS 层的特点
- 6.2.3 ODS 层的设计要点
- 6.2.4 ODS 层的应用场景
- 6.2.5 总结
- 6.3 DWD(数据明细)层
- 6.3.1 DWD 层的主要功能
- 6.3.2 DWD 层的特点
- 6.3.3 DWD 层的设计要点
- 6.3.4 DWD 层的应用场景
- 6.3.5 总结
- 6.4 DWS(数据服务)层
- 6.4.1 DWS 层的主要功能
- 6.4.2 DWS 层的特点
- 6.4.3 DWS 层的设计要点
- 6.4.4 DWS 层的应用场景
- 6.4.5 总结
- 6.5 ADS(应用数据服务)层
- 6.5.1 ADS 层的主要功能
- 6.5.2 ADS 层的特点
- 6.5.3 ADS 层的设计要点
- 6.5.4 ADS 层的应用场景
- 6.5.5 总结
- end
6- 数据仓库分层
数据仓库分层是数据仓库建设中的一种数据组织和管理方法, 它将数据仓库中的数据按照不同的处理粒度和业务规则划分为多个层次, 每一层都有明确的数据结构和数据含义, 并向上层提供服务 ;
6.1 简介
6.1.1 数据仓库分层的优势
- 清晰的数据结构: 分层结构使得数据仓库的数据组织更加清晰, 易于理解和维护 ;
- 提高数据质量: 不同层次的数据经过不同的处理和校验, 可以有效提高数据质量 ;
- 简化数据处理: 分层结构可以将复杂的业务逻辑分解到不同的层次, 简化数据处理流程 ;
- 提高开发效率: 分层结构可以提高代码复用率, 降低开发成本, 提高开发效率 ;
- 支持多种应用场景: 不同层次的数据可以满足不同业务部门和应用场景的需求 ;
6.1.2 常见的数据仓库分层模型
6.1.2.1 四层模型
- ODS层 (Operation Data Store, 操作数据存储层): 存储原始业务数据, 数据结构与业务系统保持一致, 不做任何清洗和转换, 数据粒度最细 ;
- DWD层 (Data Warehouse Detail, 数据仓库明细层): 对 ODS 层数据进行清洗、转换、去重、规范化等操作, 并进行轻度聚合, 数据粒度与 ODS 层一致 ;
- DWS层 (Data Warehouse Service, 数据仓库服务层): 对 DWD 层数据进行主题 oriented 的汇总和绝活, 构建面向业务主题的数据模型, 数据粒度较粗 ;
- ADS层 (Application Data Service, 应用数据服务层): 储存面向具体应用场景的数据, 例如报表数据、分析模型数据等, 数据粒度最粗 ;
6.1.2.2 三层模型
- 数据源层: 相当于四层模型中的 ODS 层 ;
- 数据仓库层: 相当于四层模型中的 DWD 层和 DWS 层 ;
- 应用层: 相当于四层模型中的 ADS 层 ;
6.1.3 数据仓库分层原则
- 高内聚低耦合: 每一层的数据模型应该高度内聚, 不同层次之间的数据依赖关系应该尽可能降低 ;
- 数据不可回流: 数据应该按照层次逐层向上流动, 避免数据混乱和冗余 ;
- 数据以主题划分: 数据仓库层的数据应该按照业务主题划分, 例如客户主题、商品主题、订单主题等 ;
- 数据粒度逐渐降低: 数据从 ODS 层到 ADS 层, 数据粒度应该逐渐降低, 聚合程度逐渐提高 ;
6.1.4 数据仓库分层示例
以电商平台为例, 数据仓库分层可以如下设计:
- ODS层: 存储用户行为日志、订单数据、商品数据等原始数据 ;
- DWD层: 对 ODS 层数据进行清洗和转换, 例如清洗用户行为日志中的无效数据, 将订单数据和商品数据关联起来登 ;
- DWS层: 构建用户主题、商品主题、订单主题等数据模型, 例如用户主题包含用户的基本信息、购买行为、活跃度等指标 ;
- ADS层: 存储面向不同应用场景的数据, 例如报表数据、用户画像数据、推荐系统数据等 ;
6.1.5 总结
数据仓库分层是数据仓库设计中的一种重要方法, 它可以帮助企业更好地组织和管理数据, 提高数据质量, 简化数据处理, 提高开发效率, 支持多种应用场景 ; 在实际应用中, 需要根据企业的具体情况选择合适的分层模型和设计原理 ;
6.2 ODS(操作数据存储)层
ODS 层, 全称 Operation Data Store, 即操作数据存储层, 是数据仓库架构中的第一层, 也是最接近数据源的一层 ; 它扮演者数据仓库的 “数据准备区” 角色, 为数据仓库提供高质量、一致性和易用性的原始数据 ;
6.2.1 ODS 层的主要功能
- 数据落地: ODS 层的首要任务是将业务系统产生的原始数据, 以最新接近实时的方式同步到数据仓库中 ; 这保证了数据仓库拥有最新的业务数据, 为后续的数据处理和分析提供基础 ;
- 数据备份: ODS 层相当于原始数据的备份, 及时业务系统出现故障, 数据仓库也能利用 ODS 层的数据进行回复, 保证数安全 ;
- 数据清洗和预处理: ODS 层可以进行一些简单的数据清洗和预处理工作, 例如去除无效数据、格式转换、空值处理等, 为后续的数据处理减轻负担 ;
- 数据规范化: ODS 层可以对不同数据源的数据进行规范化处理, 例如统一编码规则、数据字段等, 消除数据的不一致, 提高数据质量 ;
6.2.2 ODS 层的特点
- 数据结构与源系统一致: ODS 层的数据结构通常与业务系统的数据库结构保持一致, 不做过多的数据模型设计, 方便数据同步和理解 ;
- 数据粒度最细: ODS 层存储的是最原始、最细粒度的业务数据, 不做任何聚合操作, 保留了数据的完整性和细节信息 ;
- 数据实时性高: ODS 层的数据通常采用增量或实时同步方式进行更新, 保证数据仓库能够及时获取最新的业务数据 ;
- 数据生命周期短: ODS 层的数据通常只保留较短的时间, 例如几天或几周, 主要用于支持短期的数据分析和业务监控 ;
6.2.3 ODS 层的设计要点
- 选择合适的存储引擎: ODS 层的数据量通常较大, 可以选择高性能的列式存储引擎, 例如 ClickHouse、Druid 等, 提高数据查询效率 ;
- 设计合理的分区策略: 根据业务数据的特点, 设计合理的分区策略, 例如按照时间、业务类型进行分区, 方便数据管理和查询优化 ;
- 建立数据质量监控机制: 对 ODS 层的数据质量进行监控, 例如监控数据延迟、数据完整性、数据准确性等指标, 及时发现和解决数据质量问题 ;
6.2.4 ODS 层的应用场景
- 实时数据分析: ODS 层的数据可以用于构建实时报表、仪表盘等, 帮助企业实时监控业务运行状态 ;
- 数据质量校验: ODS 层的数据可以作为数据质量校验的基准数据, 与其他数据源进行比对, 发现和解决数据质量问题 ;
- 数据挖掘和机器学习: ODS 层的数据可以作为数据挖掘和机器学习的训练数据, 帮助企业发现业务规律和预测未来趋势 ;
6.2.5 总结
ODS 层是数据仓库的重要组成部分, 它为数据仓库提供高质量、一致性和易用性的原始数据, 是数据仓库建设的基础 ; 在设计和构建 ODS 层时, 需要根据企业的具体情况选择合适的技术方案和设计原则, 才能充分发挥 ODS 层的价值 ;
6.3 DWD(数据明细)层
DWD 层, 全称 Data Warehouse Detail, 即数据仓库明细层, 是数据仓库架构中的第二层, 位于 ODS 层之上 ;
它承接了 ODS 层的数据, 并对其进行更深入的清洗、转换、整合和规范化处理, 为上层的数据仓库服务层 (DWS) 和应用层 (ADS) 提供高质量、一致性和易于使用的数据 ;
6.3.1 DWD 层的主要功能
- 数据清洗: 对 ODS 层的数据进行更精细的清洗, 例如去重、去除无效数据、处理异常值、填充缺失值等, 提高数据的准确性和一致性 ;
- 数据转换: 将 ODS 层的数据转换为符合数据仓库模型的格式, 例如进行数据类型转换、编码转换、字段拆分合并等, 方便后续的数据分析和处理 ;
- 数据整合: 将来自不同数据源的 ODS 层数据进行整合, 例如将用户数据、订单数据、商品数据等关联起来, 形成完整的业务视图 ;
- 数据规范化: 对数据进行规范化处理, 例如统一数据字段、编码规则、命名规范等, 消除数据的不一致性, 提高数据的可理解和可维护性 ;
6.3.2 DWD 层的特点
- 数据粒度与 ODS 层一致: DWD 层的数据粒度与 ODS 层保持一致, 仍然是最细粒度的业务数据, 但数据质量更高, 更易于使用 ;
- 数据结构面向主题: DWD 层的数据通常按照业务主题进行组织, 例如用户主题、订单主题、商品主题等, 方便后续的数据分析和应用 ;
- 数据冗余度低: DWD 层的数据经过清洗和整合, 冗余度较低, 可以节省存储空间, 提高查询效率 ;
- 数据历史性: DWD 层的数据通常会保留较长的历史数据, 例如几个月甚至几年, 用于支持历史数据分析和趋势预测 ;
6.3.3 DWD 层的设计要点
- 选择合适的数据模型: 根据业务需求和数据特点, 选择合适的数据模型, 例如星型模型、雪花模型等, 方便数据查询和分析 ;
- 设计合理的数据分区: 根据数据质量和查询模型, 设计合理的数据分区策略, 例如按照时间、业务类型等进行分区, 提高数据查询效率 ;
- 建立数据质量监控机制: 对 DWD 层的数据质量进行监控, 例如监控数据完整性、数据准确性、数据一致性等指标, 及时发现和解决数据质量问题 ;
6.3.4 DWD 层的应用场景
- 构建数据仓库服务层: DWD 层的数据是构建数据仓库服务层 (DWS) 的基础, DWS 层可以基于 DWD 层的数据进行更复杂的聚合和分析 ;
- 支持复杂的数据分析: DWD 层的数据可以用于支持各种复杂的数据分析, 例如用户行为分析、商品销售分析、风险控制等 ;
- 构建数据挖掘和机器学习模型: DWD 层的数据可以作为数据挖掘和机器学习的训练数据, 帮助企业发现业务规律和预测未来趋势 ;
6.3.5 总结
DWD 层是数据仓库中承上启下的重要环境, 它对 ODS 从哪儿给的数据进行深度加工, 为上层应用提供高质量、一致性和易于使用的数据 ;
在设计和构建 DWD 层时, 需要根据企业的具体情况选择合适的技术方案和设计原则, 才能充分发挥 DWD 层的价值 ;
6.4 DWS(数据服务)层
DWS 层, 全称 Data Warehouse Service, 即数据仓库服务层, 是建立在 DWD 层之上的数据仓库层级 ;
它面向具体的业务分析需求, 对 DWD 层的数据进行主题 oriented 的汇总、聚合和轻度维度建模, 提供高性能、易于理解和使用的分析数据服务 ;
6.4.1 DWS 层的主要功能
- 主题 oriented 的数据整合: DWS 层根据具体的业务分析需求, 将 DWD 层中多个主题的数据进行关联和整合, 例如将用户主题、订单主题、商品主题等数据整合到一起, 形成更完整的业务视图 ;
- 多维度数据聚合: DWS 层 对 DWD 层的数据进行多维度的汇总和聚合, 例如按照时间、地区、产品等维度对销售数据进行汇总, 方便用户进行多角度的业务分析 ;
- 轻维度建模: DWS 层会进行轻度维度建模, 例如创建一些常用的维度表和事实表, 但不会像 Kimball 模型那样进行完整的维度建模, 以保持较高的数据处理效率 ;
- 数据预计算: DWS 层可以预先计算一些常用的指标和报表数据, 例如日活跃数、月销售额等, 提高数据查询效率, 缩短数据分析时间 ;
6.4.2 DWS 层的特点
- 面向业务主题: DWS 层的数据组织和结构式面向具体的业务分析主题的, 例如用户分析、商品分析、销售分析等, 方便用户快速找到所需的数据 ;
- 数据粒度较粗: DWS 层的数据粒度比 DWD 层更粗, 通常是按照业务分析的需求进行聚合的, 例如按照天、周、月等时间维度进行聚合 ;
- 数据冗余度较高: 为了提高查询效率, DWS 层会存储一些冗余数据, 例如预计算的指标和报表数据, 但冗余度通常在可控范围内 ;
- 数据实时性要求不高: DWS 层的数据通常不需要像 ODS 层和 DWD 层那样实时更新, 可以根据业务需求选择合适的更新频率, 例如每天更新一次或每周更新一次 ;
6.4.3 DWS 层的设计要点
- 明确业务分析需求: 在设计 DWS 层之前, 需要明确具体的业务分析需求, 例如需要分析哪些指标、需要从那些维度进行分析等, 才能设计出符合需求的数据模型和数据处理流程 ;
- 选择合适的聚合粒度: 根据业务分析需求和数据量, 选择合适的聚合粒度, 例如如果需要分析每天的销售趋势, 则可以按照天维度进行聚合 ;
- 设计合理的维度模型: 根据业务分析需求, 设计合理的维度模型, 例如星型模型、雪花模型等, 方便数据查询和分析 ;
- 优化数据处理效率: DWS 层的数据处理量通常较大, 需要优化数据处理效率, 例如使用高效的 SQL 语句、选择合适的存储引擎、建立索引等 ;
6.4.4 DWS 层的应用场景
- 构建报表和仪表盘: DWS 层的数据可以用于构建各种报表和仪表盘, 例如销售报表、用户行为报表等, 帮助企业监控业务运行状态, 发现业务问题 ;
- 支持 ad-hoc(即席查询) 查询: DWS 层的数据可以支持 ad-hoc 查询, 即用户可以根据自己的需求灵活地查询数据, 进行探索性数据分析 ;
- 构建数据挖掘和机器学习模型: DWS 层的数据可以作为数据挖掘和机器学习的训练数据, 帮助企业发现业务规律和预测未来趋势 ;
6.4.5 总结
DWS 层是数据仓库中面向业务分析的核心层级, 它对 DWD 层的数据进行主题 oriented 的汇总、聚合和轻度维度建模, 提供高性能、易于理解和使用的分析数据服务;
在设计和构建 DWS 层时, 需要根据企业的具体情况选择合适的技术方案和设计原则, 才能充分发挥 DWS 层的价值 ;
6.5 ADS(应用数据服务)层
ADS 层, 全称 Application Data Service, 即应用层数据服务, 是数据仓库架构的最顶层, 直接面向业务应用和数据分析需求 ;
它基于 DWS 层的数据, 进行高度聚合、指标预计算、数据裁剪和格式转换等操作, 为报表工具、分享平台、机器学习模型等提供高性能、易于使用的数据服务 ;
6.5.1 ADS 层的主要功能
- 高度聚合和指标预计算: ADS 层针对具体的应用场景, 对 DWS 层的数据进行高度聚合和指标预计算, 例如计算销售额、用户留存率等常用的指标, 并将结果存储到 ADS 层, 以提高查询效率 ;
- 数据裁剪和格式转换: ADS 层根据不同应用的需求, 对 DWS 层的数据进行裁剪和格式转换, 例如只保留报表所需的字段, 将数据转换为 JSON 或 CSV 格式等, 以减少数据传输量, 提高数据加载速度 ;
- 构建数据集市: ADS 层可以根据不同的业务部门或应用场景, 构建多个数据集市, 每个数据集市只包含特定主题的数据, 例如用户数据集市、商品数据集市等, 方便用户快速找到所需的数据 ;
- 提供数据 API 接口: ADS 层可以将数据封装成 API 接口, 供其他应用系统调用, 例如报表工具可以通过 API 接口获取 ADS 层的数据, 进行报表展示 ;
6.5.2 ADS 层的特点
- 面向应用场景: ADS 层的数据组织和结构式面向具体的应用场景的, 例如报表展示、数据分析、机器学习等, 方便应用快速获取所需的数据 ;
- 数据粒度最粗: ADS 层的数据粒度比 DWS 层更粗, 通常是高度聚合后的指标数据, 例如总销售额、平均订单金额等 ;
- 数据冗余度最高: 为了提高查询效率, ADS 层会存储大量冗余数据, 例如预计算的指标、不同维度的数据汇总等, 但冗余度通常在可控范围内 ;
- 数据实时性要求最高: ADS 层的数据通常需要满足较高的实时性要求, 例如报表数据需要实时更新, 以反应最新的业务情况 ;
6.5.3 ADS 层的设计要点
- 深入理解应用需求: 在设计 ADS 层之前, 需要深入理解应用的需求, 例如需要那些指标、需要从那些维度进行分析、需要多高的数据实时性等, 才能设计出符合需求的数据模型和数据处理流程 ;
- 选择合适的存储引擎: ADS 层的数据查询通常需要较高的性能, 可以选择高性能的列式存储引擎、内存数据库等, 例如 ClickHouse、Druid、Redis等 ;
- 优化数据访问方式: ADS 层的数据通常会被频繁访问, 需要优化数据访问方式, 例如建立索引、使用缓存等, 以提高数据查询效率 ;
- 保障数据安全: ADS 层的数据通常是企业的核心数据资产, 需要保障数据安全, 例如设置访问权限、数据加密等 ;
6.5.4 ADS 层的应用场景
- 报表展示: ADS 层的数据可以用于构建各种报表, 例如销售报表、用户行为报表等, 帮助企业监控业务运行状态, 发现业务问题 ;
- 数据可视化: ADS 层的数据可以用于构建数据可视化平台, 例如使用 Tableau、Power BI 等工具, 将数据以图表形式展示出来, 帮助用户更直观地理解数据 ;
- 机器学习模型训练和应用: ADS 层的数据可以作为机器学习模型的训练数据, 例如构建用户画像模型、推荐系统模型等, 帮助企业实现精准营销、个性化推荐等目标 ;
6.5.5 总结
ADS 层是数据仓库中面向应用的顶层, 它对 DWS 层的数据进行高度聚合、指标预计算、数据裁剪和格式转换等操作, 为报表工具、分析平台、机器学习模型等提供高性能、易于使用的数据服务 ;
在设计和构建 ADS 层时, 需要根据企业的具体情况选择合适的技术方案和设计原则, 才能充分发挥 ADS 层的价值 ;