大数据管理的需求与挑战
在这样的大数据时代,数据仍然是最关键的。如何将大数据管理好,仍然是对企业的考验。
无处不数据。手机通话、移动在产生数据,ATM在产生数据,商品上的RFID在产生数据,包裹从一个城市到另一个城市在产生数据。就算是一个小小的店铺,当它销售出去一瓶水,也可能会记录到Excel里面,产生了数据。数据记录这世界的存在和变化。
当企业的某项资产非常重要,数量巨大时,就需要有效管理。如今,数据已经成为这种资产。以前人们还不会将它看做是资产,而是一种附属物。客户来办理业务,在系统中产生了这种附属物。而现在,发现在客户办理业务这条信息中,蕴含这一些客户的需求,成千上万条这类信息累积下来,就能洞察客户所需,为设计新产品,为客户个性化营销产生新的价值。数据变成一种资产了,需要被管理起来。
数据仓库是管理数据的工具。在近二三十年里,以某种类似蜗牛的速度爬行,它始终还是贵族家的玩具。只有那些多金的买主才会为它买单。这让数据管理变得高高在上,数据当做资产只是停留在理念层面。人们还在争论着,数据仓库能够给我们带来什么?
我自己曾总结过一句话,体现数据仓库的六项价值——“能快速、及时、方便、准确而安全地访问整合过的数据。”现在看看,发现这个描述还蛮符合大数据时代,对数据管理的需求。
而这六方面价值也对应了不同的技术领域。
数据仓库硬件、软件、模型要保障对数据的快速访问。比如专用设备,按照数据温度选择数据是否高速存储,采用特殊存储技术;
DW模型确保数据的整合性,当你需要企业视图的数据,需要以年为周期的数据,需要数据模型的支持;
ETL保障数据及时性。批量的ETL已经不足够,需要准实时,甚至是数据流式处理;
元数据管理让数据访问更方便,不仅仅将数据以表、字段的方式管理,要将数据切分地更小,可管理;
数据质量管理保障数据的准确一致,让数据可信;
数据仓库架构、权限管理保障数据访问安全。
大数据时代对六项价值之一——快速访问数据的性能,有明显推动。人们最迫切的希望还是从无到有,从慢到快吧。让数据唾手可得。
数据库技术在变化
传统数据库并未专为数据分析而设计,数据仓库专用设备的兴起(Data Warehouse Appliance),如Teradata、Netezza、Greeplum、Sybase IQ等等,正表明面向事务性处理的传统数据库和面向分析的分析型数据库走向分离,泾渭分明。数据仓库专用设备,一般都会采用软硬一体,以提供非常好的性能。这类数据库会采用更适于数据查询的技术,以列式存储或MPP(大规模并行处理)两大成熟技术为代表。另外,新兴的互联网企业也在尝试一些新技术,比如MapReduce技术(这得感谢Google将它发扬光大),Yahoo的开源小组开发出Hadoop,就是一种基于MapReduce技术的并行计算框架。在2008年之前,Facebook就在Hadoop基础上开发出类似数据仓库的Hive,用来分析点击流和日志文件。几年下来,基于Hadoop的整套数据仓库解决方案已日臻成熟。目前在国内也有不少应用,尤其在互联网行业的数据分析,很多就是基于这个开源方案,比如淘宝的数据魔方。而在一些商业性的产品中,也已经融入MapReduce技术,如AsterData。
低廉的数据仓库解决方案降低了数据管理的门槛,长尾的中小企业不一定非得去跟Oracle、IBM这样的大公司去谈高高在上的价格。开源的产品,配置足够的硬件存储,有一支专业的服务团队,就可以架构一个数据仓库平台。在去年,就曾有多位朋友向我咨询的数据仓库方案,他们有一个不约而同的期望,价格不要太高。他们有服务团队。我没有其他推荐,只有推荐Hadoop。
还有一些其他的技术可以让数据访问性能提高,比如数据温度技术,可以区分经常被访问和很少被访问的数据,经常访问的就是高温数据,这类数据将存储在高速存储区,访问路径会非常直接,而低温数据则可以放在非高速存储区,访问路径也可一些相对复杂一些。近两年,存储访问的技术也在变化着,比如Teradata前几年推出固态硬盘数据仓库,用接近闪存的性能访问数据,比原来在磁盘上顺序读取数据快很多。后来又兴起一批内存数据库产品,这类产品在DBMS软件上进行优化,规避传统数据库(数据仓库)读取数据时的磁盘IO操作,再次大大节省访问时间。比如SAP的HanaBI、Oracle的TimesTen、SolidDB、extremeDB、Altibase。
文本、语音、图像、社交网络、地理位置…大数据时代的数据类型如此丰富。用关系型数据库存储这类数据,再深入去分析挖掘这些数据,开始有些负累。
于是,越来越多的NoSQL数据库涌现出来,其中很大一部分是用于分析用途。比如西班牙有个小厂商,叫illumnate,他们拥有一个叫Correlation DBMS的数据库产品。它不像关系数据库那样按照表、字段存储,那样冗余很大。CDMBS的做法是,针对每个不同的值,只有一个地方存储,而所有对这个值的引用,都在索引中记录。比如有个客户的姓名叫“张三”,而还有一个公司名字也叫“张三”,那么在CDBMS里面,只存有一个“张三”这个值,但在索引里面记录了有两个地方引用它。这种数据库是专门为分析而设计的。因为不存储冗余数据,所以它对于海量数据,非常节省空间。如果说这个有点不太吸引人的话,另一个据称的优点就是做ad-hoc查询非常快捷。
社交网络很火热,Facebook、Twitter、QQ、MSN,甚至是普通的电信通话、邮件,都构成社交网络。人们决策的一个重要依据其实就跟社交群体相关,周围人的决策会带动你的决策,用社交网络理论来做决策支持是一个重大方向。
用关系型数据库来存储社交数据有点吃力。我跟你打电话,“我”是一个“用户”的实体,“你”是另一个“用户”的实体,我们之间存在了“通话”的关系;“你”还可能跟“她”发生了关系。但社交网络的分析还需要关注圈子、关系紧密度…… 人们想从中找到人与人之间的关系、圈子,是不是一个家庭的,是不是一个公司的,是不是情侣关系。甚至还要去发现一个人的重要程度,是否具备某种影响力。用实体关系来表述这种社交网络需要绕些弯路转换。所以,自然出现了一种图数据库(Graph DBMS)。数据按照节点、关系和属性键值存储。开源产品Neo4j就是这类GDBMS。基本上这也是一种键值数据库,也就是说其最底层数据存储都是按照key-value存放的,这种存储方式是比较适合并行处理,适用于分析。而graph database的重要特点就是内置了常见的graph算法,它的存储结构让这类算法性能倍增。可想,未来也许会出现专为图像分析而出的数据库,专为视频分析的,等等。
数据的量越来越大,种类越来越丰富,大数据时代需要新的数据管理手段。列式、MPP的关系型数据仓库在改变着,NoSQL的CDBMS、GDBMS也试图在改变着。关系型数据库是企业IT建设时代的数据管理基石,而在Big Data时代,也许需要一种新的,正在探索中的数据管理基石。