大数据之路_模型篇
-
一.为什么需要数据建模
数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。
Linux 的创始人 Torva lds 一段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,其阐述了数据模型的重要性。有了适合业务和基础数据存储环境的模型,那么大数据就能获得以下好处。
- 性能 :良好的数据模型能帮助我们快速查询所需要的数据,减少数据的吞吐。
- 成本: 良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。
- 效率 :良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
- 质量 :良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。
- 选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生情况,还是当前状态,或是事件流转效率。
- 选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。
- 识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。
- 选择事实。确定分析需要衡量的指标。
- Hub :是企业的核心业务实体,由 实体 key 、数据仓库序列代理键、装载时间、数据来源组成。
- Link :代表 Hub 之间的关系。这里与 模型最大的区别是将关系作为一个独立的单元抽象,可以提升模型的扩展性。它可以直接描述 1:n n:n 的关系,而不需要做任何变更。它由 Hub的代理键、装载时间、数据来源组成。
- Satellite :是 Hub 的详细描述内容, 一个 ub 可以有多个 Satellite.它由 Hub 的代理键、装载时间、来源类型、详细的 Hub 描述信息组成。
- Data Vault 模型比 ER 模型更容易设计和产出,它的 ETL 加工可实现配置化。通过 Dan Linstedt 的比喻更能理解 Data Vault 的核心思想:Hub 可以想象成人的骨架,那么 Link 就是连接骨架的韧带,而 Satellite就是骨架上面的血肉。
Anchor 模型 Anchor Data Vault 模型做了进一步规范化处理,其核心思想是所有的扩展只是添加而不是修改,因此将模型规范到 6NF ,基本变成了 k-v 结构化模型。看 Anchor 模型的组成。
- Anchors :类似于 Data Vault Hub ,代表业务实体,且只有主键。
- Attributes :功能类似于 Data Vault Satellite ,但是它更加规范化,将其全部 k-v 结构化, 个表只有 Anchors 的属性描述。
- Ties :就是 Anchors 之间的关系,单独用表来描述,类似于 DataVault Link ,可以提升整体模型关系的扩展能力。
- Knots :代表那些可能会在 Anchors 中公用的属性的提炼,比如性别、状态等这种枚举类型且被公用的属性。
Anchor 模型的创建者以此方式来获取极大的可扩展性,但是也会增加非常多的查询 join 操作。创建者的观点是,数据仓库中的分析查询只是基于一小部分字段进行的,类似于列存储结构,可以大大减少数据扫描,从而对查询性能影响较小。