`
﹏〆雨中漫步メ
  • 浏览: 16215 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

我的数据仓库之路

阅读更多

     数据仓库是什么?BI是什么?自己的数据仓库之路如何继续下去?BI到底有没有前途?虽然从开始到现在已经过去两年了,但是我的疑问还在继续也将继续下去.......

 

     曾经在国内某民族通信企业(通过CMM5级认证)工作过一段时间,因厌倦了客户无休止的需求导致程序无休止的修改,也厌倦了某不懂编码X士项目经理无休止的加班要求(一个月只休息了一天),便走上了BI这条不归路。

 

     最初的BI知识,是由在公司接受了2周培训的哥们给我培训的,两个人两眼一抹黑便开始广东XX局点BI的开局工作,大家对BI知识懵懵懂懂的,还好对SQLServer2000和Oracle我还不陌生,毕竟也用了4、5年的时间做过数据库程序开发(不管怎么样写个SQL脚本还是没问题的)。XX局点的数据仓库现在看起来并不太复杂,ETL工具是使用微软SQLServer2000的DTS作了一层包装,然后调用了SQLServer2000写的一堆存储过程,还有公司内部开发的一个数据迁移和处理二进制话单的工具,配置起来颇有些麻烦(开发者颇有些功底,但以后也不会再使用了);业务数据库只有Oracle,还有些二进制文件;报表工具是国内一家厂商提供的,说实话开发效率挺高的,但土了点,稳定性也差了点;OLAP就是Analysis Service了。那时候不懂架构,只知道比葫芦画瓢,按照原来的样子进行代码编写。有一件比较搞笑的事,用户要求出一类报表,我和同事还不会OLAP,我就灵机一动写了数十张报表,满足不同维度和层次的要求,虽然效率很低。培训了两周后,就让我到某某移动开局去了,当然什么都没搞起来,这让我很没面子,同时也很没绩效。

 

     现在已经离开了那家曾经有过过劳死的企业(也许程序员就是IT民工吧,今天可以招上10000万,明天也可以离去3000人,反正民工多的是啊),该结的都结清了,谁也不再欠谁,我也失去了憎恨和爱戴的心情了。

 

     这些都成为历史了,还是写写数据仓库的所谓架构吧。

 

     数据仓库的设计主要是这样的:

 

     业务系统—>ETL(DTS)—>原始数据库—>事实数据库—>OLAP—>前端报表。

 

     业务系统就是用户的Oracle数据库了,里面有一些业务数据(当然自己的系统数据字典还是有的),此外还有一些二进制话单文件。

     ETL过程就是一堆存储过程(维度的抽取、原始数据的抽取、事实数据的日结),然后通过DTS任务包调度起来。

 

     原始数据库就应该是ODS数据库了,负责把数据原封不动的从业务系统抽取过来(部分也经过转化和清洗);出于对SQLServer2000性能的考虑,将每个业务数据表都分成历史表和当前表,当前表根据数据量的情况决定保留数据周期并定时转移到历史表中。

 

     事实数据库保存着聚合信息的数据,完成KPI指标的计算,以及维度的抽取工作;同时在进行聚合的同时完成数据清洗工作。其实清洗很简单的,就是对NULL的处理,连对主外键的判断都没有,也许是业务系统的数据质量还算不错吧,维度的处理仅作更新和插入处理,来保证外键数据的匹配。不过 SQLServer2000的性能实在不敢恭维,大于1000万的数据表处理的勉勉强强的,只好建了许多了分区表(实际上就是每个月一张数据表,用视图Union起来,这也是微软推荐的方式)。

 

     OLAP采用VBScript脚本对CUBE进行数据增量更新,说实话到现在也没太看明白每条语句的意思,对于每个分析主题建立分区(按月),主要是对MSOLAP的性能实在太不放心了。

报表工具采用国内一家专业厂商的报表工具,有一个应用服务器,定义知识库和报表权限之类的内容,报表的开发还是比较容易的,托托拽拽的就成了,二次开发的函数有点困难,还好用户要求不高,经过摸索作了一些自定义处理。就是应用服务器有点不稳定,在我的长期摸索下也逐渐掌握了规律,写了一些案例;哎现在再也用不到了。说实话其实OLAP功能还是蛮强大的(主要是能够满足国内企业的报表功能和变态查询要求),OLTP报表功能就不敢恭维了。

 

     对于业务数据到原始数据的处理,完全采用增量抽取的原则(因为每个表都有了时间点);对于原始数据到事实数据的处理,则增加了一张log表,记录每次抽取的周期、跨度、与当前时间的差距和状态等等。对于OLAP的增量处理也是靠一张日志表决定处理的范围。唯一比较独特的可能是部分业务数据用户可能会更新,需要重新抽取、聚集和OLAP处理,这个时候在处理之前首先删除这段时间的数据,重新抽取、聚集和OLAP处理,当然是靠脚本来完成的。

 

     总体来讲这就是我一年多做BI的经验和所谓架构吧,当然也有许多问题,例如SQLServer2000的稳定性、性能考验等等问题,DTS处理过程中来时发生任务中断,需要察看日志,作进一步处理,对于源抽取、事实日结、OLAP处理的中断处理方式均不一致。对于SQLServer2000的死锁以及内存泄漏等问题也有了一定经验。对报表工具的理解也是我后来对各种报表工具学习的基础。

经过一年多7、8个局点的锻炼,脸皮也变厚了,学习也麻木了,现成的版本,统一的流程,自己以为这就是BI的全部了,总之自己就是搞过数据仓库的人了,加上做过那么点数据库优化和数据迁移,感觉自己算是小牛一个了,呵呵。

 

     不幸的是今年年初又折腾到老路上去了,拼了老命干了1个月的java和WebService,搞得心神俱疲,才发现自己不年轻了,也不是做编码的料。

 

     于是乎辞职了,不管好歹也是从国内数一数二的大公司出来的,找个世界五百强还是没什么问题的,而且专业对口,属于那种天生就可以外出和客户交流的人,这可能是新公司对我的期望,要不然英语那么差劲,怎么可能轻易进来呢,待遇也还算不错,是原公司的1.5倍。其实我根本就不是那样的人,呵呵,不太喜欢和客户交流,不善于言辞,技术也是样样都知道样样不精通的那种。

既然进来了,又开始搞BI了,不过已经下班了,回去后再续写新公司的BI篇章,呵呵。

在新公司转眼已经呆了5个月,前三个月除了培训就是学习,向领导要了几次活干之后再也不要活干了,因为大家都无活可干,于是每天上上itpub学习一下Oracle,或者交流一下数据仓库,积累一下人脉(刚学会的名词),英语本来是一个很重要的目标,可惜我总是不开窍,而且连半个假洋鬼子英语也说不好,现在要做国内项目了,英语成了我永远的痛。

 

     数据仓库知识没学到多少,Oracle知识却感觉长进了不少,每天培训不少,可有质量的培训却不多,当然即使有质量的培训也轮不到我等刚入公司的去学习。外企就是外企,每天总是拿着工资不干活,天天喝着咖啡、橙汁,总感觉像是被恩赐似的,很不爽,还是得找点事来做,不过三个月的懈怠确确实实把我从一个勤勤恳恳兢兢业业的老黄牛变成了一个彻头彻尾的懒虫了,每天早9晚6准时的很,也许这才是生活,名片也打印了,上面没有手机,就是八个小时之外不用来找我的意思吧。

 

     国外项目谈了将近一年了没谈成,我就失业了;另外一个国内外企的项目因为领导感觉我不善言辞,把我换掉了;只好做一个彻头彻尾的国内项目了,做一个小小的工程师也很不错,不用担责任想事情,反正我就是一个懒惰的人。一个月就换了3个工作,虽然什么都还没做。

 

     言归正传,国内企业就是国内企业,外表很光鲜,做起项目来尾巴就露出来了,大概是一个应景之作吧,客户要求一个数据仓库项目1个半月就要完成,半个月的需求,一个月的设计开发和测试;更要命的是现在需求丝毫没有些许的概念,客户要求用国际化的行业经验来帮助制定相应的KPI,理论联系实际,怎么招,我也不知道怎么招,反正有售前人员请的国外顾问,能忽悠就忽悠吧。不过说归说,前期的工作还是要开展的。

 

     所谓的数据仓库架构,我也是第一次听说,改改一些概念,干脆一起来分享一下吧,没准还能成为行业标准,呵呵!该架构主要分为四层结构体系:


> ODS层
     主要负责采集业务系统并保存一定期限内的相关业务数据。当然也可以满足用户对明细数据的查询要求,姑且也可以算作明细数据仓库。
> 数据仓库层
     将ODS层经过质量检查、清洗、转换后,形成符合质量要求的公共数据中心。实际上与ODS层差别不大,都是建立以ER为中心的数据关系,方便以后的数据的聚合。
> 明细数据集市层即前面所说的事实层
     按主题及KPI指标对数据仓库层数据进行进一步转换,将指标与维度组成数据集市。这是OLAP的数据基础。
> 聚合数据集市层即OLAP
     在明细数据集市层的基础上,提供基于联机分析处理(OLAP)引擎的多维分析能力,解决联机分析功能和决策支持要求。
> 数据展现层
     按照用户报表要求,提供用户报表界面及预警分发机制。

 

     其中前3层都是属于ETL层的,问题是层次出来了我的疑问也出来了,都是属于那种别人不操心我瞎操心的事。毕竟算是搞数据库出身的(搞过一些索引和简单的SQL调优),最关心的还是性能问题。数据仓库是企业级的数据中心,每天上G的数据的企业不在少数,那么多的层次,使用工具能抽的完数据吗?说实话我实在不信任ETL工具,总感觉他没我写的SQL语句效率高;即使抽的完数据,那么多的层次转换能处理的完吗;即使处理完,如果万一一个环节出现问题,能回退或重新处理吗;处理完后那OLAP该怎么调度啊;数据质量(清洗转换)到底在哪个环节处理;数据质量到底包括哪些东西(除了主外键缺失和NULL值),兄弟比较愚笨,一直想不明白;不合质量要求的数据如何处理;入库的数据在业务库发生更改怎么办;业务数据没有时间戳怎么办;数据核对和校验工作如何进行;不管工具也好代码也好,到底有没有通用的处理流程(比如维度数据处理,原始业务数据抽取,事实表日结处理);还有就是到现在也没搞到合适的需求设计文档的模板(如果哪位兄弟有可以帮忙提供一下)。这一系列问题我是横竖想不明白的,反正我的问题总是比别人多,学东西总比别人慢,还是人年龄大了真的退化了。

 

     关于数据仓库的逐步学习,发现不懂得越来越多了,希望大家多提点提点,数据挖掘我是一窍不通,高等数学没学好,算法自然也学不会,只怪我高中文科出身,信息管理系的文凭拿的还是文学学士,简直没脸见人了;业务建模和需求分析也不是我擅长的,因此我只能关心纯技术的东西,可是ETL工具把人写代码的权力也剥夺了,因此我只能关心一些大的方面了,这难道就是所谓的架构吗?不知道,哎,学吧!

 

分享到:
评论
2 楼 remoteJavaSky 2012-10-29  
数据仓库相关的资料甚少,看了博主的文章有很多帮助。不知道现在你还搞不搞数据仓库,如果是,你后面提的问题,应该有一定的见解了,再发一博文?哈哈
1 楼 fyting 2010-04-13  
......

相关推荐

    数据仓库与数据挖掘课程实验

    ### 数据仓库与数据挖掘课程实验知识点解析 #### 一、数据仓库基础知识 **1.1 数据仓库的概念** 数据仓库是一种用于存储和管理大量历史数据的系统,主要用于支持业务决策过程。它通过收集、整理和组织来自不同源...

    【推荐】数据仓库建设学习资料合集(38份).zip

    数据仓库之数据质量建设方案 数据仓库ETL工具箱 数据人进化宝典-813页(数据分析+数据仓库+数据架构+数据治理等等) 数据治理:数据仓库的数据质量管理规范 数据治理及数据仓库模型设计 搜狐智能媒体在数据仓库体系...

    数据仓库之路:数据仓库方法论

    ### 数据仓库方法论详解 #### 一、引言 数据仓库是现代企业信息化的重要组成部分,其建设不仅是技术问题,更是管理问题。数据仓库方法论旨在为数据仓库的建设提供一套科学、合理的指导思想和实施方案。本文将从...

    数据仓库,数据仓库入门

    1.12 监控数据仓库环境 17 1.13 小结 19 第2章 数据仓库环境 20 2.1 数据仓库的结构 22 2.2 面向主题 23 2.3 第1天到第n天的现象 26 2.4 粒度 28 2.4.1 粒度的一个例子 29 2.4.2 粒度的双重级别 31 2.5 分割问题 34 ...

    数据仓库设计-221页.pdf

    数据仓库设计是一个复杂而关键的过程,它涉及到决策支持系统(DSS)的发展和信息技术的演进。DSS的起源可以追溯到20世纪60年代,最初是基于主文件和穿孔卡的数据处理,主要使用COBOL语言。随着技术的进步,数据存储...

    数据仓库与数据挖掘(陈志泊)课后习题答案1

    数据仓库与数据挖掘是现代企业决策支持系统的关键组成部分。数据仓库是存储历史数据的系统,设计目的是为了支持决策分析,而数据挖掘则是从大量数据中发现有价值信息的过程。以下是这两个领域的核心概念及其特点: ...

    数据仓库与数据挖掘-实验报告 数据仓库的设计、实现及多维分析 共14页.pdf

    数据仓库与数据挖掘是现代信息技术领域中的重要组成部分,它们在数据驱动决策的背景下扮演着关键角色。本实验报告主要探讨了数据仓库的设计、实现及多维分析,涉及到的关键概念包括数据仓库、多维数据模型、ETL过程...

    数据仓库数据湖数据中台建设详解-4.9

    全面详解数据仓库、数据湖、数据中台。全面详解数据仓库、数据湖、数据中台。全面详解数据仓库、数据湖、数据中台。全面详解数据仓库、数据湖、数据中台。全面详解数据仓库、数据湖、数据中台。全面详解数据仓库、...

    IBM数据仓库需求建模方法及行业数据仓库模型

    IBM数据仓库需求建模方法及行业数据仓库模型的知识点主要涵盖了数据仓库的建设、企业级数据仓库建模、软硬件配置、行业数据仓库模型以及市场趋势和相关技术。 首先,IBM数据仓库需求建模方法强调了企业级数据仓库...

    数据仓库设计说明书

    1.12 监控数据仓库环境 17 1.13 小结 19 第2章 数据仓库环境 20 2.1 数据仓库的结构 22 2.2 面向主题 23 2.3 第1天到第n天的现象 26 2.4 粒度 28 2.4.1 粒度的一个例子 29 2.4.2 粒度的双重级别 31 2.5 分割问题 34 ...

    数据治理及数据仓库模型设计.pdf

    在当今的信息时代,数据治理和数据仓库模型设计是企业管理和信息技术领域中的两个关键概念。随着大数据技术的快速发展,企业需要处理的数据量不断增加,数据治理和数据仓库模型设计成为了确保数据得到合理管理和高效...

    数据仓库与数据挖掘(华电)

    数据仓库与数据挖掘是信息技术领域中的重要组成部分,尤其在当今大数据时代,这两个概念的重要性日益凸显。华北电力大学开设的这门研究生课程,由郑玲老师主讲,旨在深入讲解这两方面的理论与实践。 数据仓库(Data...

    数据仓库 电子书

    主要内容包括数据仓库的设计与建造步骤,传统系统到数据仓库的迁移,数据仓库的数据粒度、数据分割、元数据管理、外部数据与非结构化数据,分布式数据仓库、高级管理人员信息系统和数据仓库的设计评审等。...

    数据仓库与数据挖掘课程设计.docx

    ### 数据仓库与数据挖掘课程设计知识点详解 #### 一、项目背景及提出问题 - **项目背景**: 在当前的大数据时代背景下,无论是哪个行业都需要对商品及其相关环节的数据进行有效的收集与处理。特别是零售行业,通过对...

    数据仓库需求文档.pdf

    "数据仓库需求文档.pdf" 数据仓库是企业关键业绩指标报告系统的核心内容,能够从大量的企业经营的关键知识及信息中抽取出潜在的、有价值的知识或规则的过程。数据仓库的主要功能是建立集中存储的基于业务主题的统一...

    数据仓库和数据集市

    ### 数据仓库和数据集市 #### 一、背景与起源 数据仓库的概念最早出现在20世纪80年代中期,它的出现主要是为了解决企业内部决策支持系统中存在的诸多问题。早期的企业决策支持系统通常由一系列分散的报表系统组成...

    大数据中台、数据仓库、大数据平台、数据治理经验总结.rar

    数据中台则在数据仓库之上,提供数据服务,连接业务应用和数据仓库。 5. **0-1建设数据仓库**:从无到有建立数据仓库的步骤,包括需求分析、数据源整合、模型设计、实施部署和持续优化。 6. **数据治理及数据仓库...

    《数据仓库与数据挖掘》课程设计方案报告模板.pdf

    数据仓库与数据挖掘是信息技术领域中的重要组成部分,尤其在大数据时代,它们的作用愈发显著。这份《数据仓库与数据挖掘》课程设计方案报告模板旨在为学生提供一个实践导向的学习框架,通过实际项目来理解并掌握这两...

Global site tag (gtag.js) - Google Analytics