大数据时代,如何构建企业数据仓库?

1

大数据是我的主要研究方向之一,目前也在带相关方向的研究生,所以我来一下这个问题。

首先,数据仓库对于企业来说是比较传统的数据管理方案,具有一定规模的企业通过建立数据仓库能够解决一定的“数据孤岛”问题,从而能够让企业的数据有一个更加合理的利用,同时也能够让多个系统通过数据仓库完成互联互通。

但是在大数据时代,企业的数据仓库无论从规模、数据类型、响应速度还是部署架构上来看,都将面临较大的调整,这些调整主要体现在以下几个方面:

第一:数据仓库将以云计算为基础进行构建。云计算的出现从某种程度上来说改变了整个IT行业对于技术资源和存储资源使用的理解,云计算弹性的服务模式和廉价的使用策略让更多的企业愿意采用云计算服务,同时云计算也能够提供一站式解决方案,为企业进行信息化升级降低了门槛。把数据仓库搭建在云计算平台上,是目前云计算能够解决的一个重要问题之一。

第二:数据仓库的存储结构由Sql向NoSql转换。虽然目前大量企业的数据仓库依然以结构化数据为主,但是随着物联网的发展,未来数据仓库中必然会出现大量的非结构化数据和半结构化数据,在这种情况下,数据仓库必然要跟着进行调整,数据库类型必将从Sql型数据库向NoSql型数据库转换,未来将出现Sql数据库和NoSql数据库并行的情况。

2

我这文章不讲如何构建企业的数据仓库,因为我的文章里面有,所以就没有什么说的必要,在这里,我想讲一个我个人的,有关数据仓库的小故事。

2010年,我到上海的第一年。年底回老家的时候,在火车站碰到一位之前的老同事。闲聊之中,发现他在寻找新的机会,原单位是老企业,没什么活力,年轻人上升空间有限。他30+岁的年纪,上有老,下有小,也是逼急了没办法。要不,他的位置,是个轻松活儿。

我是当时唯一从无锡这家名企跳到上海外企的。在他眼里,我比较另类,做了他不敢做的事情。相差5-6岁,却拿着比他多3倍的工资,此时的他,眼里充满求知欲。请我喝了30多块钱一杯的星巴克,在咖啡馆谈了1个都小时。我知道,其实他平常也就喝点超市里卖的茶。

看在这么有诚意的份儿上,我怎么都要把自己知道的那些都倾囊相送,是不是!

事实上,事业单位里的每个人,多多少少基本沟通之道是晓得的,只是不愿意用。不像现在的小朋友,问我问题,麻烦我办事,上来都是“我要怎么怎么样”,好像我欠他的。对于这种没礼貌的,我即使不拉黑,也选择不予理会。

3

大数据时代,如何构建企业数据仓库?个人认为,目前数据仓库类型主要分为两种,一种是离线数据仓库,一种是实时数据仓库,这两种数据仓库的主要区别在于业务对于数据计算延迟的敏感度。离线数据仓库一般计算的数据是 T-1天,既今天只能看到昨天的计算数据,适合对数据产出时间不是那么敏感的业务,比如你现在看到的一些网站对你文章阅读量的统计信息。实时数仓在于对数据的实时性计算,业务同学可以实时监测到业务指标的变化,从而及时的做出相应决策来应对业务的调整。这两种数仓虽然从技术实现上有一定差异,但是整体模型构建上,却有很多的相似点。


离线数据仓库设计


离线数据仓库的设计,主要分为三层结构,ODS层(原始数据层),DWD层(公共明细层)和DWS(公共汇总层),APP层(业务数据应用层)。一般ODS层的数据是直接来源于线上业务,没有经过任何的加工处理,所以你在进行模型构建的时候,第一步需要对ODS层的数据进行处理转换,加工出你所需要的数据。

4

在大数据的时代,我们如果想要建立数据仓库,那么一定需要适应多种的数据情况,接受更多来源的数据,这样,数据才能够产生更多的价值。

我以我曾经做过的一个大数据项目来举例吧。

我们建立了一个数据中心,这个数据中心每天会汇总所有有关销售、财务、客服、用户的各种数据,然后定期的输出各种维度的结果,为销售人员的提成核算、财务的系统所需要的各种数据、客服反馈的进度处理情况,用户对于系统的使用情况,行为作出全程的分析处理。

而我们这个数据中心,需要对接前端的柜台的销售系统、线上的多种销售系统、工单系统、电子合同、还有用户的客户端,所以数据来源多而杂乱。

为了保证数据系统的健康和强健,那么我们自然不能什么数据都往里面塞,因此,我们需要对数据仓库进行分级。

5

数据仓库Data Warehouse,简称DW。数仓是数据库的一种概念上的升级,它可以容纳更多的数据、更加庞大的数据集。为企业中高层级别的决策制定提供所有类型数据支撑的战略集合,主要是用于数据挖掘和数据分析,以消灭信息孤岛和支持决策为目的而创建的。

数仓特性

1.面向主题:数仓首先是面对主题的,而每个主题是跨业务系统的,是企业系统信息中的数据综合、归类并进行分析的一个抽象,对应企业中某一个宏观分析领域所涉及的分析对象。例如说地产行业销售主题,那么这里面包含客户、签约、合同等综合数据,对这些数据要进行归类并分析,分析这个对象数据的完整性、一致性以及统一性。

2.数据集成:数仓是具有很强的数据集成性的,因为数仓中的数据均是从各个业务系统(包含线下数据)中来的,数仓中的数据一般来说是从业务系统获取,但是进入数仓时需要进行数据的加工,所以数仓是具有很强的数据集成的。

3.历史数据不可更新:进入数仓的数据的历史数据一般是允许更新的,如果有一块进行修改影响的将是整个历史数据。以下是数仓构建的过程:

6

老规矩,先看是什么,再说怎么做。

其实很多企业做数据仓库的时候,都忽略了数仓与BI、数据库的差异,只去搞底层数据,不去做数据服务和应用,其实就是把数据仓库给狭义化了。

其实数据仓库可以看成是BI的基础版本、数据库的升级版本,我们可以把公司里的数据都想象成一个个文件夹,数据库就是这一个个文件柜,这个文件柜存放着非常多的数据,无论这个数据是什么、或者是如何组织的。而当我们的文件非常多、种类非常复杂的时候,我们的就想要寻找某个文件夹的时候,如果每个文件柜每个文件柜的去找,实际上是非常耗费成本的,因此我们不妨建立一个档案室,对不同的文件柜进行编号、归类、分组,方便我们快速定位数据源,这个档案室就是数据仓库。

所以这时候我们需要更为庞大的数据仓库,帮助我们去对多个数据源的数据库数据进行抓取,而抓取数据源的过程就可以理解为ETL的工作,这样去理解一个企业的数据架构就会简单很多。

因此数据仓库的本质,其实就是整合多个数据源的历史数据进行细粒度的、多维的分析,帮助高层管理者或者业务分析人员做出商业战略决策或商业报表。

7

首先大家都知道数据仓库建设的目的,解决了什么样的问题,为什么用它,如果连这个都还不清楚,那么就是在瞎搞。

说白了数据仓库要解决的问题就是减少数据查询的重复性操作,更具体点就是提高查询效率。

要知道如果没有数仓,那么那些bi产品展示的指标就没法得到吗?不是,完全可以得到,换句话说,业务数据的聚合操作完全可以在常规数据库如mysql里做关联查询,但是我们都知道这么做的话效率非常低,甚至mySQL是出不来数据的。所以为了提高查询性能才有了数据仓库,提前做聚合,把一些指标在数仓里面跑完,然后给应用层做展示。当然数仓的另一个目的是把零散的数据汇总起来做个关联,然后查询出有用的数据做展示,也就是打通数据,让以前孤立的数据关联起来,产生有用的价值。那么究竟怎么建立呢?

简单的说,首先要知道数据的来源,因为不同的来源数据处理方式是不一样的。比如你的数据是从业务来源也就是mysql这样的常规数据库,还是来源于日志。然后数据同步到数仓的第1层也就是ods,这一层就是将原始的数据导入到数据仓库中,当然导入的方式根据数据分flume或者是sqoop,这一层本身对数据不做任何处理,只是将数据导入到数仓,以及做一些简单的etl。

然后是dwd层,在dwd层当中要对上游的每一张表做具体的处理,注意这里面只是对有关联的主题的相关表做处理,跨主题的表不会做关联。比如订单表和订单明细表,这就是两张表要各自处理各自的,然后在各自表中做聚合操作的是降维处理,也就是维度表才会做关联的处理,本身dwd层的目的就是以事实表为中心,周围鼓曲关联维度表,那么维度表比较多的话,才会将相关的维度表做聚合,也就是降维形成一张维度表和事实表的关系。

8

一、什么是数据库?

1.数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库

2.数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定

   的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性

   的特点并可在一定范围内为多个用户共享

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章