简介:数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。

前言:
-更多关于数智化转型、数据中台内容请加入阿里云数据中台交流群—数智俱乐部 和关注官方微信公总号(文末扫描二维码或点此加入)

-阿里云数据中台官网 https://dp.alibaba.com/index

来源:数智化转型俱乐部

随着DT时代互联网、智能设备及其他信息技术的发展,数据爆发式增长,如何将这些数据进行有序、有结构地分类组织和存储是我们面临的一个挑战。

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。Linux的创始人Torvalds有一段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,其阐述了数据模型的重要性。有了适合业务和基础数据存储环境的模型,那么大数据就能获得以下好处。

  • 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐。
  • 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。
  • 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
  • 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。

因此,毋庸置疑,大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。

1.关系数据库系统和数据仓库

E .F .Codd是关系数据库的鼻祖,他首次提出了数据库系统的关系模型,开创了数据库关系方法和关系数据理论的研究。随着一大批大型关系数据库商业软件(如Oracle、Informix、DB2等)的兴起,现代企业信息系统几乎都使用关系数据库来存储、加工和处理数据。数据仓库系统也不例外,大量的数据仓库系统依托强大的关系数据库能力存储和处理数据,其采用的数据模型方法也是基于关系数据库理论的。

虽然近年来大数据的存储和计算基础设施在分布式方面有了飞速的发展,NoSQL技术也曾流行一时,但是不管是Hadoop、Spark还是阿里巴巴集团的MaxCompute系统,仍然在大规模使用SQL进行数据的加工和处理,仍然在用Table存储数据,仍然在使用关系理论描述数据之间的关系,只是在大数据领域,基于其数据存取的特点在关系数据模型的范式上有了不同的选择而已。关于范式的详细说明和定义,以及其他一些关系数据库的理论是大数据领域建模的基础,有兴趣的读者可以参考相关的经典数据库理论书籍,如《数据库系统概念》。

2.从OLTP和OLAP系统的区别看模型方法论的选择

OLTP系统通常面向的主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,从而在事务处理中解决数据的冗余和一致性问题;而OLAP系统面向的主要数据操作是批量读写,事务处理中的一致性不是OLAP所关注的,其主要关注数据的整合,以及在一次性的复杂大数据查询和处理中的性能,因此它需要采用一些不同的数据建模方法。

3.典型的数据仓库建模方法论

ER模型

数据仓库之父Bill Inmon提出的建模方法是从全企业的高度设计一个3NF模型,用实体关系(Entity Relationship,ER)模型描述企业业务,在范式理论上符合3NF。数据仓库中的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。其具有以下几个特点:

1)需要全面了解企业业务和数据;

2)实施周期非常长;

3)对建模人员的能力要求非常高;

采用ER模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。其建模步骤分为三个阶段:

1)高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总体概况。

2)中层模型:在高层模型的基础上,细化主题的数据项。

3)物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。

ER模型在实践中最典型的代表是Teradata公司基于金融业务发布的FS-LDM(Financial Services Logical Data Model),它通过对金融业务的高度抽象和总结,将金融业务划分为10大主题,并以设计面向金融仓库模型的核心为基础,企业基于此模型做适当调整和扩展就能快速落地实施。

**维度模型
**

维度模型是数据仓库领域的Ralph Kimball大师所倡导的,他的The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling是数据仓库工程领域最流行的数据仓库建模的经典。

维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。其设计分为以下几个步骤。

选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生情况,还是当前状态,或是事件流转效率。

1)选择粒度:在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。

2)识别维表:选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。

3)选择事实:确定分析需要衡量的指标。

Data Vault模型

Data Vault是Dan Linstedt发起创建的一种模型,它是ER模型的衍生,其设计的出发点也是为了实现数据的整合,但不能直接用于数据分析决策。它强调建立一个可审计的基础数据层,也就是强调数据的历史性、可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合;同时它基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型,以应对源系统变更的扩展性。Data Vault模型由以下几部分组成。

1)Hub:是企业的核心业务实体,由实体key、数据仓库序列代理键、装载时间、数据来源组成。

2)Link:代表Hub之间的关系。这里与ER模型最大的区别是将关系作为一个独立的单元抽象,可以提升模型的扩展性。它可以直接描述1:1、1:n和n:n的关系,而不需要做任何变更。它由Hub的代理键、装载时间、数据来源组成。

3)Satellite:是Hub的详细描述内容,一个Hub可以有多个Satellite。它由Hub的代理键、装载时间、来源类型、详细的Hub描述信息组成。

Data Vault模型比ER模型更容易设计和产出,它的ETL加工可实现配置化。通过Dan Linstedt的比喻更能理解Data Vault的核心思想:Hub可以想象成人的骨架,那么Link就是连接骨架的韧带,而Satellite就是骨架上面的血肉。看如下实例(来自Data Vault Modeling Guide,作者Hans Hultgren),如图所示。


Data Vault模型实例

Anchor模型

Anchor对Data Vault模型做了进一步规范化处理,Lars. Rönnbäck的初衷是设计一个高度可扩展的模型,其核心思想是所有的扩展只是添加而不是修改,因此将模型规范到6NF,基本变成了k-v结构化模型。我们看一下Anchor模型的组成。

1)Anchors:类似于Data Vault的Hub,代表业务实体,且只有主键。

2)Attributes:功能类似于Data Vault的Satellite,但是它更加规范化,将其全部k-v结构化,一个表只有一个Anchors的属性描述。

3)Ties:就是Anchors之间的关系,单独用表来描述,类似于Data Vault的Link,可以提升整体模型关系的扩展能力。

4)Knots:代表那些可能会在多个Anchors中公用的属性的提炼,比如性别、状态等这种枚举类型且被公用的属性。

在上述四个基本对象的基础上,又可以细划分为历史的和非历史的,其中历史的会以时间戳加多条记录的方式记录数据的变迁历史。

Anchor模型的创建者以此方式来获取极大的可扩展性,但是也会增加非常多的查询join操作。创建者的观点是,数据仓库中的分析查询只是基于一小部分字段进行的,类似于列存储结构,可以大大减少数据扫描,从而对查询性能影响较小。一些有数据表裁剪(Table Elimination)特性的数据库如MariaDB的出现,还会大量减少join操作。但是实际情况是不是如此,还有待商榷。下面是一个Anchor模型图(来自Anchor Modeling-Agile Information Modeling in Evolving Data Environments,作者Lars. Rönnbäck),如图所示。

节选自《大数据之路:阿里巴巴大数据实践》已受版权保护,未经授权不得转载

连载:阿里巴巴大数据实践—数据开发平台>>
连载:阿里巴巴大数据实践—实时技术>>
连载:阿里巴巴大数据实践—数据服务>>

数据中台是企业数智化的新基建,阿里巴巴认为数据中台是集方法论、工具、组织于一体的,“快”、“准”、“全”、“统”、“通”的智能大数据体系。目前正通过阿里云数据中台解决方案对外输出,包括零售、金融、互联网、政务等领域,其中核心产品有:

  • Dataphin,一站式、智能化的数据构建及管理平台;
  • Quick BI,随时随地 智能决策;
  • Quick Audience,全方位洞察、全域营销、智能增长;
  • Quick A+, 跨多端全域应用体验分析及洞察的一站式数据化运营平台;

官方站点:
数据中台官网 https://dp.alibaba.com

原文链接:https://developer.aliyun.com/article/771079?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

连载:阿里巴巴大数据实践—数据建模综述相关推荐

  1. 连载:阿里巴巴大数据实践—数据服务

    简介:服务架构的每次升级,均在性能.稳定性.扩展性等方面有所提升,从而能更好地服务于用户 前言: -更多关于数智化转型.数据中台内容请加入阿里云数据中台交流群-数智俱乐部 和关注官方微信公总号(文末扫 ...

  2. 连载:阿里巴巴大数据实践—数据开发平台

    简介:介绍MaxCompute和阿里巴巴内部基于MaxCompute的大数据开发套件,并对在数据开发过程中经常遇到的问题和相关解决方案进行介绍. 前言: -更多关于数智化转型.数据中台内容请加入阿里云 ...

  3. 阿里巴巴大数据实践 - 数据服务

    数据部门产出的海量数据,如何能方便高效地开放出去,是我们一直想要解决的难题.在没有数据服务的年代,数据开放的方式简单.粗暴,一般是直接将数据导出给对方.这种方式不仅低效,还带来了安全隐患等诸多问题. ...

  4. 阿里巴巴大数据实践数据建模篇读书笔记001-大数据建模的意义

    为什么需要数据建模? 数据建模就是数据组织和存储方法,它强调从业务,数据存取和使用角度合理存储数据. 良好的适合业务和基础数据存储环境的模型有以下优点. 1.性能:良好的数据模型可以帮助我们快速查询所 ...

  5. 连载:阿里巴巴大数据实践—实时技术

    简介:相对于离线批处理技术,流式实时处理技术作为一个非常重要的技术补充,在阿里巴巴集团内被广泛使用. 前言: -更多关于数智化转型.数据中台内容请加入阿里云数据中台交流群-数智俱乐部 和关注官方微信公 ...

  6. 《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第8章 大数据领域建模综述

    <大数据之路:阿里巴巴大数据实践>系列丛书  第1章 总述 第1篇 数据技术篇  第2章 日志釆集  第3章 数据同步  第4章 离线数据开发  第5章 实时技术  第6章 数据服务  第 ...

  7. 大数据之路 阿里巴巴大数据实践 读书笔记

    一 .总述 人类正在从IT时代走向DT时代.现在的数据呈爆炸式增长,其潜在的巨大价值有待发掘.但是如果不对数据进行有序.有结构的分类组织和存储,它将变成一场灾难. 在阿里内部,数据的存储达到EB级别. ...

  8. 读《大数据之路-阿里巴巴大数据实践》数据模型篇笔记

    读<大数据之路-阿里巴巴大数据实践>数据模型篇 七 建模综述 OLTP 面向数据 随机读写 3NF OLAP 批量读写 不关注一致性更关心数据整合 ER模型–衍生出dataVault 维度 ...

  9. 《大数据之路:阿里巴巴大数据实践》第二篇 数据模型篇-读书笔记

    目录 8.大数据领域建模综述 8.1 为什么需要数据建模 8.2 关系数据库系统和数据仓库 8.3 从OLTP和OLAP系统的区别看模型方法论的选择 8.4 典型的数据仓库建模方法论 8.4.1 ER ...

最新文章

  1. 揭秘数字行为:快速地多次点击
  2. Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理
  3. hdu 1892二维树状数组
  4. layoutSubviews 详解
  5. Java笔记(三)内部类,容器,泛型和类型安全的容器,迭代器
  6. 项目管理系列之项目范围时间及资源管理(一)
  7. centos修改磁盘uuid_如何修改linux磁盘的uuid
  8. android 桥梁模式,【设计模式】桥接模式
  9. 数组:正整数数组分成2组使其和的差的绝对值最小
  10. 推荐系统-猜你喜欢设计
  11. gamma 函数的 LaTeX 代码
  12. Oracle管理监控之如何对数据库进行监控检查
  13. 课题申报书范文_2018年课题立项申报书范文
  14. RGBA 图片格式转换 RGB 无损
  15. SQL查询中笛卡尔积的巧妙使用(文末福利)
  16. 如何进行敌我识别(IFF)应用中的二次监视雷达(SSR)的模块化产线测试
  17. Java微信小程序发送服务通知
  18. java中的nio是啥,java中的NIO
  19. 什么是下一代防火墙NGFW(Next Generation Firewall)?
  20. Pytorch 学习率衰减 之 余弦退火与余弦warmup 自定义学习率衰减scheduler

热门文章

  1. 原作者出局,Faker.js已被社区控制
  2. python爬虫保存图片到指定文件夹_李亚涛:python抓取某房源户型图并自动保存到文件夹...
  3. mysql语句中%代表什么_常用的Mysql语句你知道多少?
  4. python朴素贝叶斯_Python实现的朴素贝叶斯分类器示例
  5. swiper怎么在HTML引入JS文件,Swiper.js插件超简单实现轮播图
  6. pythonunittest接口测试_基于python+unittest +requests接口测试
  7. 【C++】静态成员 static
  8. git 合并多次commit
  9. html2canvas解决保存图片模糊问题
  10. Django中的Session与Cookie