数据仓库笔记(高质量建模)——01

接下来写随手写一些上课笔记,就当作在学习探索~

存在些理解错误或偏差,也会记录些问题,看到的小伙伴懂的话可顺便给个回复或纠正些问题,看了哪些不懂的伙伴也可以留言,看到后会给回复(有些不大懂的就略过啊~)

一、数据时代的演变

票据——> 在线业务处理(OLTP)——> 数据分析查看(OL AP)

这时候的数据特点:

1.1、数据量大,如阿里巴巴亿级别;

1.2、海量并发

1.3、数据格式相对丰富:视频、音频、文本等(结构化与非结构化均有,只有只有结构化数据),如可通过视频解析球员在球场位置。

2、DIKM

数据(data) ——> 信息(information)  ——> 知识(knowledge) ——> 智慧(wisdom) 

开源数据库(不要钱的)mysql、postgre sql
商用数据库(要收钱的)oracle、DB2、MySQL Server(1989)、SAP Sybase ASE(1987)

数据库特点

数据库特点
Teradata(1984)一体机、MPP、列存
SAP SYbaseIQ列存、数据及索引
SAP HANA内存数据库、列存、一体机
IBM NetezzaAMpp、FPGA、一体机
Oracle ExaPata一体机、Mpp
EMC GreenPlum列存、一体机、Mpp

nosql(not only sql)

nosql数据库分类数据库
健值存储数据库Redis、Riak、Mencacha DB
列值存储数据库Hbase. Carssandra
文档型数据库MongoDB. couchDB
图形数据库Neo4J  InfoGrid  Infinite.  Graph

二、建模基本流程

1、概念型模型

确定系统的核心,以及划清系统范围和边界

2、逻辑型模型

梳理业务规则以及对概念模型的求精

3、物理型模型

从性能、访问、并发等多方面考虑,做系统实现

数据表搭建注意点:

1、先规范化、再逆规范化

2、使用case工具做逻辑模型

3、成熟的模型pattern

4、逻辑模型占时比较多,约80%

高质量模型的定义:

1、重要关联关系需要、强制建立主外健

2、DDL中注意注释的生成、元数据的读取

三、实体分类方式

1、5WH:what、where、who、when、why、how

2、按照含义定义(IBM):

2.1、安排(how)

2.2、业务指导(如合同)(what)

2.3、相关方(who)

2.4、产品(what)

2.5、事件(what)

2.6、资源(why)

2.7、位置(where)

2.8、分类(5wh 没有提到该点,但该点却也是建模的重要依据)

四、属性分类

不是官方分类方法,是看视频课时老师提出的,仅供参考

1、ID

2、描述

3、饮用

4、分类

5、限制

6、数量

7、时间相关

8、人物相关

9、地点相关

10、状态

11、审计(如时间撮、更新人等)

12、派生

五、属性值的一些特点

1、强制还是可选

2、原子还是组合、直接还是派生;

3、单指还是多值

4、可选健

5、属性数据类型(字符串、整数、浮点数等)

6、是否有默认值

7、派生属性如何计算(加注释说明)

六、域(Domain)

可用来增加约束,一个域可以是一组符合一定规范的数据组合,如性别:男、女,年龄:1~150岁。

域带来的好处

提高数据质量(如年龄如果随便输入200、张三等不符合要求,被过滤掉)

域类型

1、格式:email、varchar、integer...(如上面的性别为字符串、年龄为整数)

2、列表:枚举、Gender(如上面的性别)

3、范围:from X to Y (如上面的年龄)

七、关系

定义:实体域实体之间的关系

实体、域、关系之间的个人解释

实体

可以理解为一张张表,如用户表、商品表等

属性

其实是实体的介绍,也就是列表中的列信息,如用户表中的用户ID、用户名、地址、年龄、性别等...

属性的取值约束,属于数据类型的一部分(不能直接定、需要补充定义的那部分)。如用户ID数据类型为char(8),这个可以直接定义,就不管;

但用户年龄,选择integer(整数)还不够,因为要限制在1~150岁之内(提高数据质量),那么久需要增加一个域;

再如用户性别,单独一个字符串要求是不够的,你可以提供两个选项:男、女(还可未知),这两三个选项就是性别的域。

八、健

1、侯选健

一个或多个属性的组合,可以唯一确定实体的一个实例(简单一点理解就是表中的列值,或是实体中的一个个属性值)

2、主键(primary key)

从侯选健中选择一个或多个用来作为对应实体的唯一标识。

主键的特点:

2.1、唯一性,不可重复

2.2、强制性:不可为空

2.3、永久性:不可改变

2.4、最小集合:不可参杂多余的属性

3、可选健

候选健中除了主键,剩下就是可选健

4、单键(simple Key):

主键如果是一个属性值(一个列值),称为单键

5、复合健(composite key)

如果主键是多个属性值组合,称为复合健

6、外健

引用其他表的主键,保证数据的一致性与唯一性

员工表有“员工ID”(主键),但员工工资表中,主键(复合健)为“月份”与员“工ID”(也就是某月份中某员工的工资),那么员工ID则是员工工资表的外健,外健可以为空(现在还不知道这是啥逻辑)

7、自然健

有商业意义的健,可单键或复合健(单键可作为搜索),如身份证号码(可代码居民),输入可搜索到居民个人信息

8、代理健

没有商业价值,当下系统自动生成、只能为单键。

它们的关系可整理为:

自然健 VS 代理健

自然健代理健
灵活性

主键不可修改(永久性),实体主键改变会带来外健相关表的连锁反应

(如员工离职后复职),如用员工身份证为主键,那么该主键作为外健的相关表不好更新(可能会理解直接删除该行数据就行,蒙圈中 ...)

代理健本身无意义,可以修改原自然健内容
新系统接入时,合并存在一定的困难新系统接入时,合并维度表相对容易
程序编写相对事实表而言,如需按照自然健直接搜索,则可以不用关联到维度表由于代理健无法直接作为查询条件,因此无须关联到维度表进行关联查询
如果维度表时复合健,则程序书写更复杂代理模型相对简单
查询功能数据大于100万时,时间相对长时间缩短在10%左右(相对于自然健)
存储空间

就维度表而言,占用空间少;

事实表而言:视各个维度健值数据类型而定,通常需要更多空间;

总体来看相对占空间。

(小补充:数据仓库中事实表占据空间较大,约80%)

维度表而言:需要更多空间;

事实表而言:视各个维度健值数据类型而定,通常占用较少空间;

总体来看占空间相对少

数据加载就维度而言,直接从源系统过数据,除正常转换外,没有额外开销就维度表而言。代理健插入须计算新插入的代理健值

 整体而言,代理健相对于自然健好处多多。

代理健使用的其他场景

1、没有主键时

2、主键复合健很多时(程序写起来很麻烦,需要很多where)

数据仓库特点的处理方式

特点:多并发

处理方式:

1、高低位法:XXX -  YYYYYYYY。  比如多个node同时加载,则XXX表示node编号;YYYYYYYY为自动生成的序列号,比如101 00000001,102 00000001 ......

2、UUID,GUID:以太网卡 MAC地址便秘 + 时间撮 

九、约束(constraint)

约束存在的目的是根据需要把商业规则应用到数据库的设计中。

1、唯一标识,唯一确定实体

2、非空约束

3、默认值

4、检查

5、参照完整性(RI),保证数据质量

4、非空约束

1、建表时设定  not null

2、check 时设定 is not null

     正则表达

5、参照完整性(可以理解为设置约束条件)

none、Restrict、cascade、set null 、set default

none、Restrict:不能延时生效,数据删啦,但维表还在

cascade:直接删主表数据,也把维度表记录删啦

set null 、set default:只是单独删除了数据

这一part不是很懂


版权声明:本文为qq_41843762原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。