搭建数据仓库第05篇:逻辑建模–2–范式建模
目录
- 前言
- 使用情景
- 如何来范式建模
- 使用的效果
- 小结
前言
上篇讲述了一些抽象的概念模型和逻辑模型设计的东西,接下来就该讲述如何来一步一步的利用Inmon和Kimball数据仓库的理论来建设数据仓库的模型,主要分几块吧,一个是范式建模,然后是维度建模(分几篇总结),最后是因地制宜,按照自己的平台来考虑如何综合的考虑Inmon和Kimball数据仓库的理论的应用。
Inmon最初的建模理论是通过构建一个符合三范式的集中式的数据中心DW层,此层次的表一般不对BI和应用开放,而是基于DW的数据构建数据集市DM层来对外服务。DM层的数据一般也采用范式建模,不过随后融入了维度建模的思想,把DM层建设成星型模型。但是并未提出使用一致性维度。
本篇将会讲述范式建模部分。当然3范式的概念也不再赘述,度娘全都有。
使用情景
提起数据仓库建模,谁都会知道Inmon的以范式建模为理论基础的集线器式建模,以及Kimball的以维度建模为理论基础的总线式建模,关于这两者这更好的争论就不在这里陈述了。实际上,随着数据仓库的发展,现在两种模型都在原来的基础上再往同一个方向发展,最终大家都比较相似了,甚至出现的复合式的数据仓库理论,将这两种架构整合在了一起,充分利用了两者的优点。
我个人的看法是,范式建模,有着维护数据的一致性,稳定性,可扩展性,减少冗余,同时也有着规范化但是不利于分析理解数据等的特点,这样子完全可以把范式建模利用在ODS和DW层之间的中间层数据模型,因为这一层数据承载着DW层的数据,但又不会对用户开放,放式建模完美的匹配上了。
如何来范式建模
范式建模采用的是3范式,而大多数的线上业务数据库也遵循着3范式的规范,所以范式建模是推荐贴源(ODS)的,甚至简单的业务情况下不需要中间层,直接使用ODS层即可。
当然对于如下情况我们还是建议通过范式建模来重新组织数据
- 业务数据库的表没有遵循3范式
- 有复杂的字段(比如json字段)需要解析
- 业务维度比较复杂,很难直接关联取出所需的数据,比如业务X营销体系=n
使用的效果
通过范式建模,可以
- 保证数据的一致性(因为采用完全不冗余的方式,避免了数据的不一致,比如出现 广东 厦门的这样不一致的记录)
- 解耦方便维护,也提高了运行效率
- 针对复杂字段的解析和复杂业务的分解,有利于DW层的直接使用
小结
范式建模不仅在线上业务数据库中展现了强劲的风采,也在数据仓库侧发挥着重要的作用。范式建模的难度在于如何抽象业务,来进行DW建设前夕的准备工作。建好了这一层的数据模型,对于DW层数据的建设,将是大大的提高了效率和大大降低了复杂性。