数据模型到底是什么?

什么是数据模型?

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

怎么理解?

  • 把数据看做图书馆的书,希望书分门别类方案,如何分门别类便是我们的模型
  • 把数据看做城市建筑,希望城市建筑布局合理,布局方式便是我们的模型
  • 把数据看做纸质资料,希望资料按类别、年份分不同文件夹放好,这也是模型

数据模型的好处

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

有最好的模型吗

没有,只有最合适的模型,模型是在业务,存储和使用者三方的总和考虑,同时也是性能,成本,效率,质量之间的平衡考虑。

常见的数据模型有哪些?

ER模型

ER模型,实体关系模型(Entity-Relationship),将事务抽象为数据实体和关系。

er模型符合三范式。

谁用er模型

wiliam H。inmon 在building the data warehouse一书中使用

数据仓库3NF和OLTP系统中的3NF区别

数据仓库的3NF是站在企业角下面向主题的抽象,而不是针对某个具体的业务流程的实体对象关系的抽取。

ER模型的特点

  • 需要全面了解企业业务和数据
  • 实施周期非常长
  • 对建模人员要求高

ER如何建模的

出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理

建模步骤

  • 高层模型:(称为实体关系图,或ERD)高度抽象,描述主题和主题的关系,描述总体概括
    主要由集成范围决定哪些实体属于模型范围而哪些不是。
    将不同的用户的观点整合。
    产出主要主题或实体。
  • 中层模型:(数据项集或DIS)细化主题的数据项
    主要数据分组
    二级数据分组
    连接器
    数据的类型
  • 物理模型:表的合并、分区等设计

举个例子

还是以最常见的商城为例
在业务系统中,我们的系统会分为:

  • trade 交易
  • pay 支付
  • crm crm系统
  • fin财务系统

而我们会根据公司重新组织,分成

  • 交易主题
  • 流量主题
  • 销售主题
  • 财务主题
  • 营销主题
  • 采购主题
  • 供应商主题
  • 门店主题

第一步是高层维度,即各个主题的er关系。
比如交易主题和销售、供应商、门店、采购、财务这些都有关系。
而采购和供应商有关系,和销售则没有关系
第二部 则是中层模型
比如在销售主题内,销售人员和出勤、订单、访问、电话等都有管理,形成不同的中层数据项
第三步 则是物理模型
最终落地如何存储,分表还是合并,是否分区等。

维度建模

维度建模是palph kimball所倡导的,在 the data warehouse toolkit一书中提及。

其基于分析决策需求须发构建模型,典型的代表为星形模型和雪花模型。

如何建模

  • 选择决策的业务过程
  • 选择粒度 维度的组合
  • 识别维度 维度属性,用于分析时进行的分组和筛选
  • 选择事实 确定衡量的指标

举个例子

分析过去一星期浙江的哪个商品卖的最好

选择业务过程

  • 选择决策的业务过程
    卖的最好,其排序是根据下单金额,也就是下单这一业务过程。
  • 选择粒度
    根据需求,过去一星期为业务时间,也就是下单时间,浙江为地域,理解成门店开在浙江的,商品卖的好,商品。
    因此粒度为:时间,门店-地域,商品
  • 识别维度 维度属性
    这里属性较少,极简情况下为日期、星期(第n周)、省份,商品id,商品名称
  • 选择事实
    下单金额。

参考

  • 大数据之路
  • building the datawarehouse
  • the data warehouse toolkit: the definitive guid to dimensional modeling