• 数据仓库-实施步骤


    数据仓库-实施步骤

    定义范围

    项目范围定义了一个数据仓库项目的边界。典型的范围定义是组织、地区、应用、业务功能的联合表示。

    定义范围时通常需要权衡考虑资源(人员、系统、预算等)、进度(项目的时间和里程碑要求)、功能(数据仓库承诺达到的能力)三方面的因素。

    定义好清晰明确的范围,并得到所有项目干系人的一致认可,对项目的成功非常重要。

    项目范围时设定正确的期望值、评估成本、评估风险、指定开发优先级的依据。

    确定需求

    定义业务需求

    建立数据仓库的主要目的是为组织赋予从全局访问数据的能力。数据的细节程度必须能够满足用户执行分析的需求,并且数据应该被表示为用户能够理解的业务术语。

    对数据仓库中数据的分析将复制业务决策,因此,作为数据仓库的设计者,应该清楚业务用户是如何做决策的,在决策过程中提出了哪些问题,以及哪些数据是回答这些问题所需要的。

    与业务人员进行面对面的沟通,是理解业务流程的好方式。沟通的结果是使数据仓库的业务需求更加明确。在为数据仓库收集需求的过程中,还要考虑设计要能适应需求的变化

    定义技术需求

    数据仓库的数据来源是操作型系统,这些系统日复一日地处理着各种事务活动。操作型系统大都是联机事务处理系统。数据仓库会从多个操作型源系统抽取数据。但是,一般不能将操作型系统里的数据直接迁移到数据仓库,而是需要一个中间处理过程,这就是所谓的ETL过程。

    确认数据的更新频率。例如,如果需要进行长期的或大范围的数据分析,可能就不需要每天装载数据,而是每周或每月装载一次。

    更新频率并不决定数据的细节程度,每周汇总的数据有可能每月装载。

    数据仓库设计的初始阶段,需要确定数据源有哪些、数据需要做哪些转换以及数据的更新频率是什么。

    逻辑设计

    需要定义特定数据的具体内容,数据之间的关系,支持数据仓库的系统环境等,本质是发现逻辑对象之间的关系

    建立需要的数据列表

    细化业务用户的需求以形成数据元素列表。

    为了得到所需的全部数据,需要适当扩展用户需求或者预测未来的需要,一般从主题域涉及的业务因素入手。例如,销售主题域的业务因素可能是客户、地区、产品、促销等。

    然后建立每个业务因素的元素列表,依据也是用户提出的需求。最后通过元素列表,标识出业务因素之间的联系。

    以上工作做完后,已经获得了如下的信息

    • 原始的或计算后的数据元素列表
    • 数据的属性,比如是字符型的还是数字型的
    • 合理的数据分组,比如国家、省市、区县等分成一组,因为它们都是地区元素
    • 数据之间的关系,比如国家、省市、区县的包含关系等

    识别数据源

    已经有了需要的数据列表后,考虑从哪里可以得到这些数据,以及要得到这些数据需要多大的成本

    需要把上一步建立的数据列表映射到操作型系统上。应该从最大最复杂的源系统开始,在必要时再查找其他源系统。

    数据的映射关系可能是直接的或间接的,比如销售源系统中,商品的单价和折扣价可以直接获得,而折扣百分比就需要计算得到。

    通常唯独模型中的维度表可以直接映射到操作型源系统,而事实表的度量则映射到源数据在特定粒度级别上聚合计算后的结果。

    制作实体关系图

    逻辑设计的交付物是实体关系图(Entity-Relationship Diagram,简称ERD)和对它的说明文档(数据字典)

    实体对应关系数据库中的表,属性对应关系数据库中的列。

    ERD传统上与高度规范化的关系模型联系密切,但该技术在维度模型中也被广泛使用。在维度模型的ERD中,实体由事实表和维度表组成,关系体现为在事实表中引用维度表的主键。因此先要确认哪些信息属于中心事实表,哪些信息属于相关的维度表。

    维度模型中表的规范化级别通常低于关系模型中的表

    物理设计

    物理设计指的是将逻辑设计的对象集合,转化为一个物理数据库,包括所有的表、索引、约束、视图等。物理数据库结构需要优化以获得最佳的性能。比较通用的数据仓库优化方法有位图索引和表分区。

    性能优化

    位图索引

    位图索引对索引列的每个不同值建立一个位图。

    和普通的B树索引相比,位图索引占用的空间小,创建速度快。

    但由于并发的DML操作会锁定整个位图段的大量数据行,所以位图索引不适用于频繁更新的事务处理系统。

    数据仓库对最终用户来说是一个只读系统,其中某些维度的值基数很小,这样的场景非常适合利用位图索引优化查询,MySQL还没有位图索引功能。

    表分区

    表分区是将一个大表按照一定的规则分解成多个分区,每个表分区可以定义独立的物理存储参数。

    将不同分区存储到不同的磁盘上,查询表中数据时可以有效分布I/O操作,缓解系统压力。

    特性:分区消除。查询数据的时候,数据库系统的优化器可以通过适当的查询条件过滤掉一些分区,从而避免扫描所有数据,提高查询效率,这就是分区消除。

    可扩展性

    可扩展性就是能够处理更大规模业务的特性

    技术上,可扩展性是一种通过增加资源,使服务能力得到线性扩展的能力。

    在做数据仓库物理设计时,出于可扩展性的考虑,应该把对硬件、软件、网络带宽的依赖降到最低。

    装载数据

    源和目标结构之间建立映射关系

    从源系统抽取数据

    对数据进行清洗和转换

    将数据装载进数据仓库

    创建并存储元数据

    访问数据

    访问数据是要使数据仓库的数据可以被使用,使用的方式包括:数据查询、数据分析、建立报表图表、数据发布等。

    步骤

    A.为前端工具建立一个中间层。在这个中间层里,把数据库结构和对象名转化成业务术语,这样最终用户就可以使用与特定功能相关的业务语言同数据仓库交互

    B.管理和维护这个业务接口

    C.建立和管理数据仓库里的中间表和汇总表。建立这些表完全是出于性能原因。中间表一般是在原始表上添加过滤条件获得的数据集合,汇总表则是对原始表今昔那个聚合操作后的数据集合。这些表中的记录数会远远小于原始表,因此前端工具再这些表上的查询会执行的更快。

    管理维护

    确保对数据的安全访问、管理数据增长、优化系统以获得更好的性能、保证系统的可用性和可恢复性

  • 相关阅读:
    C++中的explicitkeyword
    SQLite数据库查看工具(免费)
    C Tricks(十九)—— 求以任意数为底的对数
    分治法(divide & conquer)与动态规划(dynamic programming)应用举例
    分治法(divide & conquer)与动态规划(dynamic programming)应用举例
    C++组合数(combination)的实现
    C++组合数(combination)的实现
    算法求解方法与思路的总结
    算法求解方法与思路的总结
    使用 STL 辅助解决算法问题
  • 原文地址:https://www.cnblogs.com/EnzoDin/p/14198407.html
Copyright © 2020-2023  润新知