究竟什么是数据仓库

来源:互联网 发布:一句话网络段子精选 编辑:程序博客网 时间:2024/05/18 19:21
什么是Data Warehouse,为什么需要它。存在里面的数据做什么用?

上面是我在读书时就有的最原始最基本的疑问。因为我没有办法理解。业务做的多了,慢慢有了自己的理解。在这里和大家分享下,欢迎讨论。

数据仓库的存在是为了统一一个管理数据的中心。伴随着的是后续进行的数据分析,挖掘,BI等。也许你还要问,数据库最多有几个?数据分析挖掘,直接在业务相关的数据库上进行就可以了,为什么还有特别费力的把各个DB中的数据导入进数据仓库呢?

我的理解是这样。一个公司尤其一个集团形式的全球化大公司,其内部系统构成会非常的复杂且混乱。有能统一管理的人事系统,但更多时候会因为快速扩张(合并其他公司),或系统构架时考虑不全面而存在各种独立的,低关联的系统构成。从数据的角度来看,这里有几个问题?

1.主数据在哪里?(Master Data)

业务的数据,客户数据,各种数据存放在不同的系统里。有可能一些事MainFrame这种远古级别的东西。比如兼并小公司A,A社中管理产品,客户信息,契约信息等均为Mainframe+DB2。并且每天都会有新的客户和契约进来。已经运行的非常稳定,我们很难在短时间放弃掉他,也很难把他完全的移植到一个统合好的平台,DB上。

兼并A社后,为了适应快速的发展,我司还开发ipad上契约的系统,这些新的东西完全有自己的一套东西,DB,并且也一样每天在发挥作用,产生新客户,新契约信息。

好,问题来了。同样都是客户信息,如何通过统一的管理,统合起来。否则,我司的marketing,call center会疯掉,因为要找一个客户数据,需要打开好多系统,在各个系统中查找。对于marketing和call center的人,他们关心的就是我如何能快速的正确的找到我目标的客户。

一个好的解决的方法,就是MDM,在此不做详述。

2.数据没有统合在一起,发挥不了更大的作用。

同样,数据没有集中,没有做cleansing,就很难在此上做分析,做报表,做挖掘。所以把数据集中也是一个大事儿。重要的事儿。

3.MetaData,就是描述同样事物的数据在各个系统中分散,各个系统中的叫法,备注各自不同。详细文档的缺失和随着时间推移,很难知道A系统中的数据和B系统中的数据是不是说的一个事儿。

上诉问题有各自的方法解决,也绝非购买昂贵的数据产品就能够轻松解决。更多的时候还是在于公司内部的整合,可花费多大精力人力物力来做这些事情。

言归正传,问题2,数据仓库应运而生,谈到data warehouse,我们说他不是一个特别的什么工具,而是存在数据的一个想法。在我司,我们用的就是oracle。

而导入的数据,全是靠批处理(batch),在夜晚将各个独立系统中产生的新数据抽出,导入到Data warehouse中。可以是各个系统输出差分文件,也可以直接接入各个系统的DB,读取出差分数据。更理想的就是各个系统中各自去产生CDC(变动数据抽出),将CDC数据同步过来。还有就是按照数据产生的频度,可以是daily,weekly,monthly。

加工么?

好问题,一般在导入数据仓库的时候,90%以上都是使用ETL工具的。抽取,变形,存储。这个T是否需要。我只能说case by case。有时候数据仓库中的表,比如说具体些,电话号码的存储,是15字节长的varchar2,我们对其的定义是不包含-,·等符号。而在Input文件或InputDB中是XXX-XXXX-XXXX这种存储电话的方式,就需要T(加工)把-去掉。你也可以理解为data cleansing的一部分任务。这也是网络上有过的,数据仓库存储信息半成品的说法。data warehouse累积信息,基本不做删除等工作。之后才是在此基础上做BI,数据分析挖掘等。

但是,随着bigdata等概念的流行。目前也有不同的声音。就是Raw Data。把原始数据就这么放进数据仓库。不做任何的加工,有噪音,也一样放进去。在我们需要分析时,再把相应的数据用ETL抽出,清洗干净,放入datamart。分析工具从datamart(数据集市)上来做工作。这种观点实现起来就可以是ELT,SQL Loader等。当然这种观点更多在于非结构型数据上。在NoSQL上看,确实加工会比较困难,还是rawdata进来的比较好。

单纯的谈数据仓库,前者。我一直纠结于上面的2中观点,利弊。欢迎大家发言,讨论。
0 0
原创粉丝点击