数据仓库笔记(高质量建模)——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 Netezza | AMpp、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不是很懂
数据仓库笔记(高质量建模)——01相关推荐
- C语言书籍阅读-读书笔记--高质量程序设计指南》--C/C++,林锐
最近闲下来想找机会参加一些编程比赛锻炼锻炼,可没有一个相关网站可以搜集这些信息,因而自己记录下来: 百度之星,http://star.baidu.com/index/developer.时间07.25 ...
- 数据仓库笔记(高质量建模)04——元数据管理
一.元数据定义 Information about data ,中介数据.中继数据,指用于描述数据的数据,用于描述数据数据属性的信息.用来支持如指示存储位置.历史数据.资源查找.文件记录等功能.[信息 ...
- 数据仓库笔记(高质量建模)02——数据规范
数据规范前,需注意: 1.列出实体:名词(表): 2.勾勒出关系:动词: 3.尽量消除多对多关系: 4.列出所有属性(列): 5.数据规范需满足:1NF >2NF >3NF >BC ...
- 代码大全(第二版)笔记——高质量的子程序
1. 什么是"子程序":子程序是为实现一个特定的目的而编写的一个可被调用的方法(method)或过程(procedure): 2. 子程序的目的:节约空间.可管 ...
- 读书笔记:编写高质量代码--web前端开发修炼之道(二:5章)
读书笔记:编写高质量代码--web前端开发修炼之道 这本书看得断断续续,不连贯,笔记也是有些马虎了,想了解这本书内容的童鞋可以借鉴我的这篇笔记,希望对大家有帮助. 笔记有点长,所以分为一,二两个部分: ...
- 数据仓库系列1-高质量数据建模
一.前言: 虽然做数据工作5年了,从传统行业到互联网行业,感觉啥都懂点,但是没有一样可以拿出手的,干活时没问题,但是讲东西却存在问题,最近想系统的学习一下数据仓库只是,顺便记录下,也算是对学习的一个总 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- Android开发高手课笔记--如何打造高质量应用?
前言 学习<Android开发高手课>也有一段时间了,确实对技术的提高很有帮助,可以开拓自己的视野.想利用这一段时间好好整理下学习笔记,以便回顾.由于版权问题,后续笔记不再公开,感兴趣可扫 ...
- WordPress+Markdown+为知笔记,实现高质量笔记和博客
本文写给:和我一样想要有一套操作容易.使用方便.兼容性好的 高质量个人知识管理和博客 实现方案的人. 欢迎通过此链接注册为知笔记来支持本人:https://note.wiz.cn/i/1fe81312 ...
最新文章
- 区块链 稳定币和法定数字货币简介
- SCOUNIX第十二讲:使用TCP/IP
- 正式软件工作第一天————MVC、ext JS、和clsa
- 从1985年到2020年,编程语言排行有哪些变化?
- Linux网络服务器epoll模型的socket通讯的实现(一)
- Spring Boot集成ShedLock分布式定时任务实例
- 软考高级网络规划设计师论文考试技巧
- Linux Install telnet
- python codec_深入理解Python特性
- 计算机科学班会,计算机系主题班会制度
- css知多少(7)——盒子模型
- Pr 入门教程,如何处理图片文件?
- 测试环境服务器windows server 2003资源下载
- java程序 打包_Java程序打包方法最强集合
- KUKA力控软件使用问题介绍
- 缘,如雁渡寒潭,似风吹疏竹
- CyanogenMod - All the source code for CyanogenMod
- 爬取20万数据,我们深扒了风口上的「享物说」
- pyTest官方手册(Release 4.2)之蹩脚翻译(6)
- Elastic:data_hot,data_warm,data_cold角色有什么用
热门文章
- MybatisPlus操作
- 基于IIC协议的4脚OLED模块的单片机驱动控制(含驱动程序)
- 计算机24点游戏几把,24点游戏的玩法,要有准确介绍的!谢,这是初一上册数学上的,...
- android常用头文件,Android.mk 使用详解
- csp-s模拟测试54 - 55
- vue固定资产管理系统_AMS智能设备管理系统.docx
- adams2015怎么把工具栏打开_U盘文件被隐藏怎么恢复?最后一招轻松找回
- 冒泡排序、快速排序的区别与联系
- 好心情:携手同行,让医患联盟成为抑郁症患者康复的基石
- java面向对象(OOP)