数据集市搭建
❶ 怎样选择数据平台的建设方案
一、为何而搭建数据平台
业务跑的好好的,各系统稳定运行,为何还要搭建企业的数据平台?
这样的问题,心里想想就可以了,不要大声问出来。我来直接回答一下,公司一般在什么情况下需要搭建数据平台,对各种数据进行重新架构。
从业务上的视角来看:
1、业务系统过多,彼此的数据没有打通。这种情况下,涉及到数据分析就麻烦了,可能需要分析人员从多个系统中提取数据,再进行数据整合,之后才能分析。一次两次可以忍,天天干这个能忍吗?人为整合出错率高怎么控制?分析不及时效率低要不要处理?
从系统的视角来看:
2、业务系统压力大,而不巧,数据分析又是一项比较费资源的任务。那么自然会想到的,通过将数据抽取出来,独立服务器来处理数据查询、分析任务,来释放业务系统的压力。
3、性能问题,公司可以越做越大,同样的数据也会越来越大。可能是历史数据的积累,也可能是新数据内容的加入,当原始数据平台不能承受更大数据量的处理时,或者是效率已经十分低下时,重新构建一个大数据处理平台就是必须的了。
上面我列出了三种情况,但他们并非独立的,往往是其中两种甚至三种情况同时出现。一个数据平台的出现,不仅可以承担数据分析的压力,同样可以对业务数据进行整合,也会不同程度的提高数据处理的性能,基于数据平台实现更丰富的功能需求。
二、数据平台的建设有哪些方案可以选择
下文中的优缺点仅从企业选型的角度,并非方案本身的技术角度。
如果一句话回答的话,那就是:太多了(这是一句废话,我承认),但确实有非常多的方案可供选择,我懂的少,肯定是无法一一介绍,所以就分成了下面几类,相信也一定程度上覆盖了大部分企业的需求了。
1、 常规数据仓库:
概念不说了,既然是做数据这一行的,相信你比我还要清楚,不清楚的可以网络。它的重点在于数据整合,同时也是对业务逻辑的一个梳理。虽然它也可以打 包成ssas那种cube一类的东西来提升数据的读取性能,但是数据仓库的作用,更多的是为了解决公司的业务问题,而不仅仅是性能问题。这一点后面会详细 介绍。
关于这一方案的优缺点,直接说重点:
优点:
方案成熟,关于数据仓库的架构,不管是Inmon架构还是Kimball架构,都有着非常广泛的应用,而且相信能将这两种架构落地的人也不少。
实施简单,涉及的技术层面主要是仓库的建模以及etl的处理,很多软件公司具备数据仓库的实施能力,实施难度的大小更多的取决于业务逻辑的复杂程度,而并非技术上的实现。
灵活性强,说这句话要有对应场景的,数据仓库的建设是透明的,如果需要,可以对仓库的模型、etl逻辑进行修改,来满足变更的需求(当然,最好设计之初考虑的周全一点)。同时对于上层的分析而言,通过sql或者mdx对仓库数据的分析处理具备极强的灵活性。
缺点:
“实施周期长”,注意,我加了引号,对应下面的敏捷型数据集市,而且这点是相对的,实施周期的长与短要取决于业务逻辑的复杂性,时间是花在了业务逻辑的梳理,并非技术上的瓶颈。关于这点,后面会详细介绍。
数据的处理能力有限,这个有限,也是相对的,海量数据的处理它肯定不行,非关系型数据的处理它也不行,但是TB以下级别的数据,还是搞得定的(也取决于所采用的数据库系统),这个量级的数据,而相当一部分企业的数据,还是很难超过这个级别的。
2、 商业敏捷型数据集市:
底层的数据产品与分析层绑定,使得应用层可以直接对底层数据产品中的数据进行拖拽式分析。这一类产品的出现,其初衷是为了对业务数据进行简单的、快速的整合,实现敏捷建模,并且大幅提升数据的处理速度。目前来看,这些产品都达到了以上的目的。但它的优缺点也比较明显。
优点:
部署简单,敏捷开发,这也是这类产品最大的优点,和数据仓库相比,实施周期要短的多。实际上它也没什么严格的实施的概念,因为这类产品只是针对需要分析的数据,进行局部的关联,只考虑眼前要解决的问题就够了,迭代的能力更强些。
与上层的分析工具结合较好,上层的分析工具接入这类数据产品后,可直接实现数据的图形化展示和olap分析。对数据处理性能的提高,这类产品都对 数据的分析性能做了处理,虽然方式不尽相同,有内存映射文件存储的,也有分布式架构、列数据存储的。但无疑都一定程度上提高了数据的处理性能。
缺点:
首先,它是要收费的。
无法处理复杂的业务逻辑,这只是一个工具,它无法解决业务问题。这类工具中自带简单的etl功能,实现简单的数据处理和整合,而如果考虑到历史数 据,考虑到整体的数据之间的逻辑和关系,它一定是解决不了的。一个简单的例子,当某个表中,有两个字段,一个要保留历史数据,一个要更新历史数据,要怎样 实现自动处理。有一个观念是需要清楚的,不能指望一款工具来解决业务问题。这种数据产品仅仅是对当前的业务数据进行简单的整合,第一,数据是局部的,第 二,时间是当前的(其涵带的增量更新或者全量更新,是无法应对复杂的逻辑的,相信熟悉etl的人都知道这个过程有多复杂)。当然,对于一些公司来说,可能 需求只是对当前业务数据进行整合分析,那么这类产品就够了。(说实话,很多公司真的是懒得更长远的考虑,有一天没一天的,谁说的准呢)
l 灵活性低,这个也是没法避免的,越是操作简单的工具,他的灵活性肯定受限,因为封装住了,产品是不透明的,常规的需求用起来非常方便,但是遇到复杂的,发现对他内部不了解,你也没法修改,只有蛋疼的份。
从我的角度看,它是很难成为公司的数据中心的。
3、 MPP(大规模并行处理)架构的数据产品,以最近开源的greenplum为例
传 统的主机计算模式在海量数据面前,显得弱鸡。造价非常昂贵,同时技术上也无法满足高性能的计算,smp架构难于扩展,在独立主机的cpu计算和io吞吐 上,都没办法满足海量数据计算的需求。分布式存储和分布式计算正是解决这一问题的关键,不管是后面的MapRece计算框架还是MPP计算框架,都是 在这一背景下产生的。
greenplum的数据库引擎是基于postgresql的,并且通过Interconnnect神器实现了对同一个集群中多个Postgresql实例的高效协同和并行计算。
同时,基于greenplum的数据平台建设,可以实现两个层面的处理,显而易见的一个是对数据处理性能的处理,greenplum的网络中宣称支 持50PB级海量数据的处理,考虑它有吹牛的成分,对目前greenplum实际应用情况的了解,100tb级左右的数据,是非常轻松的。另一个是数据仓 库可以搭建在greenplum中,这一层面上也是对业务逻辑的梳理,对公司业务数据的整合。
优点:
海量数据的支持,大量成熟的应用案例,所以我想这一点是不用怀疑的。
扩展性,据说可线性扩展到10000个节点,并且每增加一个节点,查询、加载性能都成线性增长。
易用性,不需要复杂的调优需求,并行处理由系统自动完成。依然是sql作为交语言,简单、灵活、强大。
高级功能,greenplum还研发了很多高级数据分析管理功能,例如人气很高的外部表,还有Primary/Mirror镜像保护机制,行/列混合存储等。
稳定性,greenplum原本作为一个纯商业数据产品,具有很长的历史,其稳定性相比于其他产品以及敏捷性数据集市是更加有保障的。 greenplum有非常多的应用案例,纳斯达克、纽约证券交易所、平安银行、建设银行、华为等都建立了基于greenplum的数据分析平台。其稳定性 是可以从侧面验证的,在15年9月份开源后,各大互联网公司也是一片欢腾,现在也接触了几家在使用greenplum的客户,对其评价都很高。
缺点:
本身来说,它的定位在olap领域,不擅长oltp交易系统。当然我们搭建公司的数据中心也不会是用来做交易系统的。
成本,两个方面的考虑,一是硬件成本,greenplum有其推荐的硬件规格,对内存、网卡都有要求。当然,在硬件选型上,需要达到一个平衡, 要在性能、容量、成本等多方面考虑,毕竟不能一味的追求性能,把采购部门吓到吧。另一个是实施成本,这里主要是人了,基本的是greenplum的安装配 置,再到greenplum中数据仓库的构建,都需要人和时间。(但是必须要说的是,人家软件都开源了,也省下了一笔钱啊)
技术门槛,这里是相对于上一个敏捷型数据集市的,greenplum的门槛肯定是要高一点了。
4、 hadoop分布式系统架构
关于hadoop,已经火的要爆炸了,greenplum的开源跟它也是脱不了关系的。有着高可靠性、高扩展性、高效性、高容错性的口碑。在互联网 领域有非常广泛的运用,雅虎、facebook、网络、淘宝等等等等。hadoop生态体系非常庞大,各公司基于hadoop所实现的也不仅限于数据分 析,也包括机器学习、数据挖掘、实时系统等。
当企业数据规模达到一定的量级,我想hadoop是各大企业的首选方案,到达这样一个层次的时候,我想企业所要解决的也不仅是性能问题,还会包括时效问题、更复杂的分析挖掘功能的实现等。非常典型的实时计算体系也与hadoop这一生态体系有着紧密的联系。
近些年来hadoop的易用性也有了很大的提升,sql-on-hadoop技术大量涌现,包括hive、impala、spark-sql等。尽 管其处理方式不同,但普遍相比于原始基于文件的Maprece,不管是性能还是易用性,都是有所提高的。也因此对mpp产品的市场产生了压力。
对于企业构建数据平台来说,hadoop的优势与劣势非常明显:它的大数据的处理能力、高可靠性、高容错性、开源性以及低成本(为什么说低成本,要 处理同样规模的数据,换一个其他方案试试呢)。缺点也就是他的体系的复杂,技术门槛较高(能搞定hadoop的公司规模一般都不小了)。
关于hadoop的优缺点对于公司的数据平台选型来说,影响已经不大了。需要上hadoop的时候,也没什么其它的方案好选择(要么太贵,要么不行),没到达这个数据量的时候,也没人愿意碰这东西。总之,不要为了大数据而大数据。
三、方案很多,企业要怎样选择呢?
环境太复杂,但是我想至少要从下面这几个方面去考虑吧。
1、 目的:
什么样的目的?就是文中开始部分的三种情况呀(不好意思,自大了,肯定有其它情况,欢迎向“jiago王”补充),或者是其中几个的组合。
做事方法都一样,哪怕是中午出去吃饭,也是要在心里有个目的,这顿饭是为了吃饱,还是吃爽,或者为了拍别人的马屁,然后才好选择去吃什么。
当然,要明确数据平台的建设目的,哪里是那么容易的,初衷与讨论后确认的目标或许是不一致的。
公司要搭建一个数据平台的初衷可能很简单,只是为了减轻业务系统的压力,将数据拉出来后再分析,如果目的真的就这么单纯,还真的没有必要大动干戈 了。如果是独立系统的话,直接将业务系统的数据库复制出来一份就好了;如果是多系统,选类似finecube那种型敏捷型的商业数据产品也够了,快速建 模,直接用finebi或者finereport接入进去就能实现数据的可视化与olap分析。
但是,既然已经决定要将数据平台独立出来了,就不再多考虑一点吗?多个系统的数据,不趁机梳理整合一下?当前只有分析业务数据的需求,以后会不会考虑到历史数据呢?这种敏捷的方案能够支撑明年、后年的需求吗?
任何公司要搭建数据平台,都不是一件小事,多花一两个月实施你可能觉得累,多花一周两周的时间,认真的思考一下总可以的吧。雷军不是说过这样一句话:不能以战术上的勤奋,掩盖战略上的懒惰。
2、 数据量:
根据公司的数据规模选择合适的方案,这里说多了都是废话。
3、 成本:
包括时间成本和金钱,不必多说。但是这里有一个问题想提一下,发现很多公司,要么不上数据平台,一旦有了这样的计划,就恨不得马上把平台搭出来用起来,时间成本不肯花,这样的情况很容易考虑欠缺,也容易被数据实施方忽悠。
关于方案选择的建议,举以下3 1个场景
场景a:
要实现对业务数据的快速提取和分析,多个业务系统,没有达到海量数据,不考虑历史数据,不需要依照业务逻辑对数据进行系统的梳理,这种情况下,可以考虑敏捷型的bi工具自带的数据底层。
简单来讲,这种场景仅仅是在技术层面上,完成对数据的整合与提速,并没有从业务层面上对数据进行建模。他可以满足一定的分析需求,但是不能成为公司的数据中心。
场景b:
要搭建公司级的数据中心,打通各系统之间的数据。非常明显的,需要搭建一个数据仓库。这时就需要进一步考虑公司数据的量级了,如果是小数据量,TB 级以下,那么在传统数据库中建这样一个数据仓库就可以了,如果数据量达到几十上百TB,或者可见的在未来几年内数据会达到这样一个规模,可以将仓库搭在 greenplum中。
这种场景应该是适用于大部分公司,对于大部分企业来说,数据量都不会PB级别,更多的是在TB级以下。
场景c:
公司数据爆发式增长,原有的数据平台无法承担海量数据的处理,那么就建议考虑hadoop这种大数据平台了。它一定是公司的数据中心,这样一个角 色,仓库是少不了的,可以将原来的仓库直接搬到hive中去。这种数据量比较大的情况要怎样呈现,因为hive的性能较差,它的即席查询可以接 impala,也可以接greenplum,因为impala的并发量不是那么高,而greenplum正好有它的外部表(也就是greenplum创建 一张表,表的特性叫做外部表,读取的内容是hadoop的hive里的),正好和hadoop完美的融合(当然也可以不用外部表)。
场景d:
这个是后面补充的,当公司原本有一个数据仓库,但历史数据了堆积过多,分析性能下降,要怎么办?两个方案可以考虑,比较长远的,可以将仓库以及数据 迁移到greenplum中,形成一个新的数据平台,一个独立的数据平台,可以产生更多的可能性;比较快速的,是可以将类似finecube那种敏捷型数 据产品接入原来的仓库,这样来提升数据的处理性能,满足分析的要求。
四、关于方案选型时可能会出现的误区
(忽略业务的复杂性,要用工具来解决或者是绕开业务的逻辑。)
这个是我最近遇到过的,客户要做报表平台,有三个业务系统的数据需要整合。但是急于变现,不想搭建传统的数据仓库,所以从敏捷型的bi工具中选型。 工具厂商对自己数据产品的描述,一般着重于他的快速实施、性能的优化、以及自带的基本etl功能。这样容易给客户造成误区,就是通过这一产品可快速搭建出 一个公司级别的数据中心,满足于顶层对数据的需求。
然而在后期突然意识到,工具所解决的,仅仅是在技术层面上简化了工具的使用的复杂性,把etl和数据集市封装在一起,并且提高了数据的性能,但是并没有从业务层面上实现数据的建模,很多细节问题无法处理。
虽然敏捷开发非常诱人,如果业务系统简单,或者只需要分析当前状态的业务数据,不需要公司级的数据中心,那么确实是一个非常好的方案。然而这些问题还没有考虑清楚,对敏捷产品有了过高的期望,后面是会遇到些麻烦的。
除此之外,可能还会有为了大数据而大数据的,但是这些我在实际的工作中还没有遇到。
最后总结一下,企业选择数据平台的方案,有着不同的原因,要合理的选型,既要充分的考虑搭建数据平台的目的,也要对各种方案有着充分的认识。
仅从个人的角度,对于数据层面来说,还是倾向于一些灵活性很强的方案的,因为数据中心对于公司来说太重要了,我更希望它是透明的,是可以被自己完全掌控的,这样才有能力实现对数据中心更加充分的利用。因为,我不知道未来需要它去承担一个什么样的角色。
希望可以帮助你,望点赞
❷ 数据集市的案例分析
通过吉林市等城市的成功试点,中国移动已经决定将数据集市作为2006年移动地市级公司的建设重点之一。这也同时意味着,电信行业建立在数据仓库基础上的BI应用已经进入到更加深入挖掘的阶段,其产生的结果将直接服务于一线的生产销售……
数据集市:深化挖掘第一步
电信行业对于数据仓库并不陌生,为了实现从产品导向往客户导向的转变,电信公司纷纷建立以客户为中心的数据仓库,希望依据客户的需要、期望及喜好来制订策略,提升企业竞争力。简单说,数据仓库就是为了保证数据查询和分析的效率,按照主题将所有的数据分门别类进行存储,需要的时候,可以按主题提取数据并做进一步的分析处理。
数据集市,可以称作小数据仓库,是用来分析相关专门业务问题或功能目标而做的专项的数据集合。它建立在具有统一数据存储模型的数据仓库下,各级业务人员按照各部门特定的需求把数据进行复制、处理、加工,并最终统一展现为有部门特点的数据集合,数据集市的应用是对数据仓库应用的补充。
经过近几年的努力,吉林移动通信有限责任公司已经成功在省级公司建立起了面向决策支持的经营分析系统,BI系统也逐渐完善。省级公司从业务系统中将相关业务数据进行抽取、清洗、加工、整理、加载到数据仓库中,在数据仓库中形成基础的分析数据的存储,对地市一级公司的营销策略进行指导。
问题也随之产生,由于下属分公司在客户群体、市场容量、利润来源等地域差异明显,省级公司通过全省范围内分公司数据的汇总和分析,难以对单个地市级分公司产生个性化决策支持。另一方面,地市一级的分公司在开拓终端市场的过程中,激发了旺盛的应用需求,具体表现为对数据粒度的要求更加精细、需求更加灵活多变、要求更强的可操作性。
2005年6月,中国移动通信有限公司制定了《中国移动经营分析系统数据集市(试点)业务技术建议书》。为了使经营分析系统在地市级公司日常生产经营中发挥更大作用,吉林移动最终决定与亚信科技合作,全面进行数据集市的搭建。吉林省吉林市成为12个试点中第一个吃螃蟹的城市。
吉林移动希望通过数据集市的建设及时准确地了解掌握地市公司的分析需求,更好地为一线地市公司的生产营销服务。吉林市分公司也希望提升自身的经营分析水平,落实集团公司的精细化营销战略。
在总体设计方面,吉林移动希望通过吉林市的试点为吉林省其它分公司建设统一的数据集市的模型,基本涵盖地市固定统计报表及分析的需求,统一建模,统一管理。在功能上,为地市分公司的市场营销行为提供客户个体分析,提高经营分析结果的可实施能力,支持精细化营销,支持地市开发过灵活专题分析。开发标准化、开放的数据平台,满足省内不同地市分公司更多个性化的、临时性的分析需求。
总体来说,吉林移动对亚信科技提出了很实际的业务描述,就是以提供丰富的数据为基础,以提供简要分析功能、提高日常分析能力为主要手段,以解决各类业务目标为最终目的,大力提升地市公司数据综合运用、分析能力,大力提升分公司主动服务、主动营销效能。
数据集市项目从2005年6月开始组织需求调研,经历了5个月的建设时间,于2005年11月底上线使用,完成了中国移动集团公司试点所要求完成的所有基本集功能以及符合吉林本地特色的扩展集的内容。
作为实施方,亚信科技在吉林数据集市建设过程中遵循了平台标准化、业务个性化的原则。亚信一方面在数据集市基础平台采用标准的系统软件,使数据集市的逻辑数据模型统一、标准;另一方面,在地市分公司开发应用功能时,结合本地的实际情况,体现了本地的需求特色。在项目建设期间,吉林移动曾两次就该项目建设的方法与思路向中国移动集团公司领导汇报,亚信的建设思路及建设成果得到了移动总公司的高度认可。
随着吉林移动、云南移动等公司数据集市项目的成功试点,中国移动31个省的上百家地市级公司将纷纷上马数据集市项目。可以预见,2006年将是移动公司进一步深入挖掘BI应用,提升BI建设水平的一年,数据集市作为专项的数据集合与分析系统,对中国移动地市级分公司的日常经营管理将产生至关重要的作用,成为中国移动落实精细化经营策略的重点工程。