0%

数据仓库设计:Kimball模式和Inmon模式

Inmon模式

Bill Inmon的经典著作是《数据仓库》-Building the Data Warehouse.
他将数据仓库定义为,一个面向主题的、集成的、随时间变化的、非易变的用于支持管理的决策过程的数据集合。每个主题区域仅仅包含该主题相关的信息。数据仓库应该一次增加一个主题,并且当需要容易地访问多个主题时,应该创建以数据仓库为来源的数据集市。
Inmon模式设计是自顶向下的(top down)瀑布流式开发方法。数据源往往是异构的,主要的数据处理工作集中在对异构数据的清晰、类型检验、值范围检验等规则。以数据源头为导向,首先,探索性的获取尽量符合预期的数据,尝试将数据按照预期划分为不同的表需求。其次,明确数据清洗规则后通过ETL转化到DW层,这里较多UDF开发(User-Defined Function),将数据抽取为实体-关系模型。接着,可以将数据输出到DM层供BI环节使用。
模式:范式建模(第三范式),集线器式建模,一般用于ODS和DW层,不对外开放
重点:数据的清洗工作,从中抽取实体-关系
优点:冗余少,数据模型泛化,精心抽象设计,方便维护

简单地说,1NF就是消除重复元组,并保持列的原子性,具体到数据库设计上就是每个表都要有一个主键来唯一标识一行记录。2NF就是在1NF的基础上消除了部分依赖,即非键属性必须完全依赖于主键。3NF在2NF基础上消除了传递依赖,即非键属性只能完全依赖于主键。一般数据库设计需要满足3NF。


Kimball模式

Ralph Kimbal的经典著作是《数据仓库工具箱》-The Data Warehouse Toolkit.
他对数据仓库的定义为,数据仓库仅仅是构成它的数据集市的联合。通过使用“一致的”维,能够共同看到不同数据集市中的信息,这表示它们拥有公共定义的元素。
Kimball模式设计从流程上是自底向上的(bottom up),以最终任务为导向,根据业务需求对源数据进行探索,拆分出不同的表需求;然后通过ETL将数据转化到DM层(维度表+事实表),之后一方面想BI环节输出数据,另一方面向DW层输出数据。
模式:维度建模,总线式建模(星型模型),一般用于DM层
重点:建立事实表和维度表
优点:快速交付、敏捷迭代、对DW层不做过多复杂设计

维度建模允许进行一定的数据冗余来起到减少表间关联和快速查询的作用


混合模式

结合了两个模式的特点