« 戏说评选 | Main | Firefox的小秘密 zt »

胡侃一下数据仓库

作者:virushuo 发表于 2004-12-17 06:12 最后更新于 2005-10-18 17:10
版权声明:按照by-nc-sa的cc协议可转载,拒绝采用“独家” 授权媒介(含网站和平面媒体)转载、引用、链接,除非获得本人许可。转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。


最近,因为某些原因,接触了一些数据仓库的东西,整理了一下思路,胡乱写写。决不抄概念,就说我的理解。

首先说数据仓库。数据仓库是一种专门用来辅助决策分析的数据库。其数据量一般比较大,数据来源比较多,也许是数据库,也许是文件,总之,就是能用到的所有信息,甚至包括历史信息,都在这里保存。为什么要保存这么多?就是为了用来做复杂的分析和决策。

数据仓库有了,需要装入数据。前面说数据来源比较多,这句话说得很简单,但事实上,很复杂。因为,企业可能会有很多现存的数据库系统,甚至是一些excel表格,没准文本文件也有。这些格式,接口各不相同的数据,如何变成符合数据仓库模型的数据,并装入这个数据仓库,实在是个问题。

于是,ETL出现了。ETL就是数据抽取(Extract)、转换(Transform)、清洗(Cleansing)、装载(Load)的过程。一般来说,这是一个工具。也许每个程序员都有“倒库”的经验,这是个常见的动作,甚至你换了论坛的数据库,都需要做一次这个工作。这,似乎可以算作最简单的ETL。当然,ETL是比复杂得多过程,而且,应该为客户提供一个ETL工具,支持脚本也是必要的。这样,用户就可以定期或实时将数据库的数据抽取到数据仓库中,用户数据就是这样装载进来的。

数据有了,下面做什么?用户如果只是需要简单的查询,那当然简单,不过如果这样,也就用不着数据仓库了。使用数据仓库,一定是要进行复杂的决策分析。比如说,销售额,时间,人员,产品种类,销售渠道,要用这些属性进行汇总分析,这就是2维的报表和查询难以实现的了。那么,OLAP出场。OLAP(联机数据分析),OLAP一般是建立一个计算模型,然后把大量的数据转化为多维数据,保存在一个多维数据库中。这就不需要每次都要重新计算了,速度也快多了。事实上,如果不怕速度慢,不厌其烦,不怕计算复杂,不使用OLAP,都自己计算,也不是不可能,不过,这何必呢?

这些都完成了,最后做什么?数据展现。一切都要以客户的眼睛为准。用户说不好看,说不好用,你的系统再NB,你也死定了。所以,数据占现是非常重要的。其实,数据展现也就是报表,只不过,要具有展现复杂数据的能力,速度还不能太慢。切换维度也要方便。

概念都说完了,那么,一个数据仓库的工作过程,大概就是:数据仓库建模,ETL,OLAP,展现。大部分项目中,最重要的过程是ETL。毕竟,这个事情千变万化,可能会因为用户的现存系统,导致非常复杂的情况。也会耗费大量的时间。其次重要的,我认为应该算数据展现,刚才说了,好系统的意思不是技术高明的系统,而是用户说好的系统。所以,强大不强大放在一边,先搞漂亮再说。(就凭这一点,oracle就应该出局了)。大部分项目中,其实OLAP是很可以偷工减料的,大部分客户,其实并不需要OLAP这么复杂,只不过,因为某些目的(把项目搞大,骗投资,厂商蛊惑,显示自己牛),非说要OLAP。事实上他们的数据维度和数量,远远达不到,可能几年都未必能达到。那么。。。偷工减料吧!作项目,省点是点。

看完了本文,你未必学到了什么东西,但是,至少你应该学会吹牛。我坚信,国内80%的项目,其实根本用不到这么复杂的东西。你只要能应付好,其实都可以简单搞定。

-------
相关文章:
blog comments powered by Disqus
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2