无为

无为则可为,无为则至深!

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
为什么dw使用星型模型,为什么使用关系型数据库?
 
对于第一个问题,我同意伟平的说法。其实就是实现了维度结构,星型模式是一种比3NF更加形式化的模式,其目的正是为了支撑OLAP的要求,是一种支撑分析应用的模式。特别是针对ROLAP,如果不建立星型模式(或者雪花模式),想建立olap元数据是非常困难的,因为某个维度需要跟物理维表关联起来,维中的级别、属性、钻取体系都要与表中字段对应起来。同样,度量也需要和事实表中某个字段对应。在星型模式中,这种对应关系是匹配的,所以很方便地描述它们。然而如果是基于3NF去映射一个维度结构,当然可以,只是需要额外的工作,因为3NF和OLAP模型是不匹配的。
 
可以先将这部分工作分成两部分,一是数据模型,二是OLAP应用。如果数据模型用3NF,那么OLAP建模的事情多放在OLAP服务器中进行。而如果使用星型模式,OLAP建模其实部分工作移到了数据建模这边。
 
这样理解,其实采用星型模式是为了让架构和过程更加规范。当然,代价是数据的冗余。
 
对于第二个问题,为什么使用关系型数据库。如果不采用RDB,还会有哪些选择呢?多维数据库、面向对象数据库、xml数据库?显然,后者都是一些不成熟的技术,不似RDB,其关系理论已经存在三十年矣。
 
多维数据库主要面向分析应用,对于存储海量数据当然有其缺陷。更加不用提没有一个标准的接口。至少微软提出的MDX还并没有形成一种访问标准,而在数据存储理论上,各个厂商有各自的一套。而面向对象数据库,虽然也是也是发展多年,但其主要应用还是偏向于一般系统的设计、开发效率,也不擅长数据存储。虽然有一些规范、理论,但大多还没有形成比较权威的形式化理论,还是处于感性阶段
 
像sybase的IQ数据库,这玩意儿到底是个什么类型的数据库,我也不是非常确定,但显然他并没有颠覆关系数据,同样有表、字段的概念,只是他颠覆了原来按行存储数据的技术,改用按列存储数据。最后还是同样用SQL来访问数据,所以姑且还是认为他是关系数据库吧。
 
如此,似乎只有选择关系数据库来存放海量数据,当然可以附加地采用多维数据来存放用于分析目的的数据。未来会不会还是如此,说不一定,但至少在三五年内,还不不会有什么新的变化。


凡是有该标志的文章,都是该blog博主Caoer(草儿)原创,凡是索引、收藏
、转载请注明来处和原文作者。非常感谢。

posted on 2006-05-25 21:55 草儿 阅读(242) 评论(0)  编辑  收藏 所属分类: BI and DM

只有注册用户登录后才能发表评论。


网站导航: