模型设计的三个阶段
1. 概念模型:划分主题
2. 逻辑模型:即一个主题可以分析归纳出的某几种具体生活常识中的总结点,例如自然人的 动产 不动产等。
3. 物理模型:物理模型设计是指根据逻辑模型设计的结构为基础,设计数据对象的物理实现,比如表的命名规范、字段的命名规范、字段类型选择、分区设置、存储设置、更新方式、调度配置(调度时间、父子节点等)
一、数据仓库与数据库的区别
1、数据仓库是集成的,数据库为单一的业务提供服务。
2、BI结构:数据整合层、数据服务层、应用分析层、信息展现层
3、数据层库结构
ODS(临时存储层),一般都是贴源设计、业务数据库是什么,ODS层就是什么
PDW/DW(数据仓库层),将年月日,拆分成年、月、日字段,一般采用Int类型;通过ODS层到DW层的etl脚本对数据进行数据清洗、进行设计。分部门根据业务需求进行设计。如果没有业务需求,就根据源系统的表结构和自己建模经验去处理。
DM(数据集市层),维度建模,星形模型,雪花模型。需要什么数据就去拉取什么数据。
APP(应用层),报表展现,需要的数据,与DM层处于同一级别。
4、ODS层分为增量更新或者全量更新;PDW层一致的、准确的、干净的数据,一般遵循数据库三范式设计。
二、数据仓库的特点
1、数据仓库是面向主题的,比如商品主题,订单主题。(领导关注那些方面)
传统数据库面向应用,提供什么功能。数据仓库面向分析,提供那些主题的分析。
从规模来讲依次是,数据仓库、数据集市、数据报表。
2、数据仓库是集成的,数据源是分散的,来自不同的应用。数据仓库中的综合数据,不能从源数据中直接得到,一般会经过etl过程(数据抽取、数据转换、数据加载)。数据抽取一般会定时的进行抽取,避免对业务系统造成影响,一般叫做T-1抽取、T+1抽取。目前企业对数据的实时性要求越来越高,比如实时监控一个实时的活动效果,并根据效果进行不同策略的营销手段,保持活动的效果。
3、数据仓库是不更新的,数据仓库反应的是一段相当长的时间内的数据内容,主要的操作集中在数据查询上。 一般数据结果计算出来之后,特别是明细数据,会存放在关系数据库中,因为主流的报表工具都支持数据库。
对数据库的查询,最基本的操作是创建索引,比如300万的数据根据手机号查询需要十几秒,创建btree索引之后,需要几十毫秒。
4、数据仓库中的数据是随着时间而变化的。
三、数据仓库的模型设计
A. 数据建模方法论
数据仓库模型设计遵循“自顶向下、逐步求精”
的设计原则。
模型设计分为三个阶段(四):
1,业务模型
主要是从业务需求角度去分析问题
2,概念模型
对业务的范围和使用,从高度上进行抽象概括,也就是划分主题域。
一般划分为8个主题域:
客户、服务、服务使用、账务、结算、资源、客服、营销
为什么要划分主题域?
划分主题域,是根据业务的应用和需要来划分的,是用来达到数据与业务紧耦合的目的。
3,逻辑模型
对概念模型中的主题进行细化,定义实体与实体之间的关系,和实体的属性。
即定义具体表的作用,表与表的约束,表的字段。形成ER图。
这些实体的设计都是基于业务规则,可以说,这一阶段主要面对的是业务。也就是“业务驱动建模”
4,物理模型
依照逻辑模型,在数据库中进行建表、索引等。数据仓库,为了满足高性能的需求,可以增加冗余、隐藏表之间的约束等反第三范式操作。
这一阶段,主要针对的是数据库、硬件、性能。
范式:
第一范式:数据库表的字段都是单一属性,不可再分。
第二范式:数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖。
(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况)。即要求所有属性都依赖于主键。
第三范式:数据库表中不存在非关键字段对任一候选关键字段的传递函数依赖。
范式是向下兼容的。
星型模型和雪花模型
首先,他们都是由一个事实表和一组维度表组成。
星型模型,也被称为维度建模。
区别在于:
星型模型:维度表直接跟事实表连接,图型像星星。
如区县和地市做为同一维度都在地市表中。
*维度预处理,维度会预先进行分类,排序等预处理。
雪花模型:一些维度表不是直接与事实表连接,而是通过维度表中转,图形像雪花。
例如:
图1:星型模型
图2 雪花模型
从性能来看,星型模型查询性能好。
为了提高性能,可以允许违反第三范式,适当的冗余、隐藏表之间的约束。
维度建模
将商业维度融合到数据模型中,由此得名维度建模。
或者说,为了分析方便(商业应用要求),将同一维度的不同层次的维度(如地市ID,区县ID)都融合到事实表中(如用户宽表)。
维度模型也是星型模型。
它 强调的是先对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表,如上面的用户统一视图。包含了20多个维度。这样可以组合各维度,形成灵活的报表查询。
B. 分层设计原则
电信行业的数据仓库都采用了分层设计原则。
总的来说,分三层:接口层、中间汇总层和应用层。
应用层
数据集市
地市数据集市、数据挖掘
应用层
KPI报表、cagnos、主题分析、指标库
中间层
深度汇总层
信息聚合:用户统一视图、3G用户统一视图、固话用户统一视图
业务拓展:用户行为、增值业务、集团业务、国际业务
轻度汇总层
清单汇总、用户属性聚合、费用汇总、集团客户汇总等
接口层
存储层
接口备份、增量转全量、减少I/O(分常用数据和历史数据)
接口层
日接口、月接口、增量接口、全量接口
特别强调的是:
中间层是数据仓库最重要的一层。直接决定了数据仓库的性能。
一般的做法是:
1)数据汇总。将底层数据按维度进行小颗粒度汇总
2)信息聚合。将多张表的信息聚合在一个表中。这样的好处,是避免使用表关联,提高查询性能。
C. 主题域设计方法
如果说分层设计,是横向的设计原则,那么主题分域是纵向的处理方法。
具体做法就是从业务上,高度的抽象和归纳,将数据划分为不同的主题域。
分域后的好处:业务紧耦合、便于数据拓展、便于使用。
域是要具有明显的表命名规则,如:
用户信息域—— user
通信行为—— call
数据业务—— gprs
账务 —— bill
客户服务—— serv
xx经分 系统的数据架构图:
记得关注一下我