今天要和大家分享一 些南大通用CTO武新所总结的底层数据处理技术的发展趋势和正在经历的巨大变革。 这个领域过去5年发展很快、热度很高,目前还在起步阶段。
1.数据价值的发现与使用
先不说什么是大数据,这个争议很多,我也说不清楚。不过我个人认为在大数据的4个V中,最显著的特征应该是Value(价值),其他几个V都很模糊。也就是说,不管数据多大,是什么结构,来源如何,能给使用者带来价值的数据是最重要的数据。
我们都知道对数据价值的挖掘一直是用户在做的事情,这个在IT出现之前古人已经在实践了,而且有不少成功案例。“眼观六路,耳听八方”可能是最形象的数据采集方法。我跟数据打了20多年的交道,从来没感觉到搞数据的地位有今天这么高。
那么到底什么变了,让我们这么热衷“大数据”?我感觉是整个社会对数据的认知变了,开玩笑说大数据是什么很难说清楚,但它目前最大的贡献至少是让社会各个层面开始认识到数据的重要性,包括最高领导和底层的老百姓。奥巴马搞了个“Big DataInitiative”,有点类似布什当年的“InformationHighway”(这个推动了互联网的发展),让世界发现美国人在动真格了。
目前大家基本达成共识:数据象石油、煤一样是宝贵的资产,其内在的价值非常巨大。另外一个显著的贡献无疑是互联网企业对于数据的巧妙使用和价值体现,这里面的案例就很多了。
2. 数据处理技术的回顾
互联网的数据“大”是不争的事实,现在分析一下数据处理技术面临的挑战。目前除了互联网企业外,数据处理领域还是传统关系型数据库(RDBMS)的天下。传统RDBMS的核心设计思想基本上是30年前形成的。过去30年脱颖而出的无疑是Oracle公司。全世界数据库市场基本上被Oracle,IBM/DB2,Microsoft/SQL Server 垄断,其他几家市场份额都比较小。SAP去年收购了Sybase,也想成为数据库厂商。有份量的独立数据库厂商现在就剩下Oracle和Teradata。开源数据库主要是MySQL,PostgreSQL,除了互联网领域外,其他行业用的很少。
这些数据库当年主要是面向OLTP交易型需求设计、开发的,是用来开发人机会话应用为主的。这些传统数据库底层的物理存储格式都是行存储,比较适合数据频繁的增删改操作,但对于统计分析类的查询,行存储其实效率很低。在这些成熟的数据库产品中,有2个典型特例:一个是Teradata,一个是Sybase IQ(卢总是专家)。
Teradata一开始就使用MPP(MassiveParallel Processing)架构,以软硬一体机的产品方式提供给客户,其定位是高端客户的数据仓库和决策分析系统,Teradata在全世界的客户只有几千个。 在这个数据分析高端市场上,Teradata一直是老大,在数据分析技术上Oracle和IBM打不过Teradata。Sybase IQ是一款最早基于列存储的关系型数据库产品,其定位跟Teradata类似,不过是以软件方式销售的。Teradata和Sybase IQ在数据分析应用上的性能其实都比Oracle,DB2等要普遍好。
图1 数据库发展历史
3.数据增长加速,数据多样化,大数据时代来临
现在看看为什么数据的量突然在快速增长。如果说现在是大数据时代了,其实是数据来源发生了质的变化。在互联网出现之前,数据主要是人机会话方式产生的,以结构化数据为主。所以大家都需要传统的RDBMS来管理这些数据和应用系统。那时候的数据增长缓慢、系统都比较孤立,用传统数据库基本可以满足各类应用开发。
互联网的出现和快速发展,尤其是移动互联网的发展,加上数码设备的大规模使用(CCD,CMOS技术的大规模产业化),今天数据的主要来源已经不是人机会话了,而是通过设备、服务器、应用自动产生的。传统行业的数据同时也多起来了,这些数据以非结构、半结构化为主,而真正的交易数据量并不大,增长并不快。机器产生的数据正在几何级增长,比如基因数据、各种用户行为数据、定位数据、图片、视频、气象、地震、医疗等等。
另外,我们每个人也在不知不觉中不断产生着大量的数据(比如这个论坛,除了我正在写的内容,后台可以产生10倍以上的数据和衍生的信息:谁在关注、在哪里、关注的这些人有哪些共性、用的是什么终端。系统甚至可以实时分析出大家对我讲的内容情绪是什么,可以预测最终给打多少分等。如果我有这类实时的系统反馈,那么可以实时调整要讲的内容,等等,想象空间可以很大)。
所谓的“大数据应用”主要是对各类数据进行整理、交叉分析、比对,对数据进行深度挖掘,对用户提供自助的即席、迭代分析能力。还有一类就是对非结构化数据的特征提取(指纹、图像、语音自动识别、基因数据比对等),以及半结构化数据的内容检索(搜索)、理解(语义分析)等。
传统数据库对这类需求和应用无论在技术上还是功能上都几乎束手无策。这样其实就给类似Hadoop的技术和平台提供了很好的发展机会和空间。互联网公司自然就选择能支撑自己业务的开源技术了,反过来又推动了开源技术的快速发展。
4.新的数据处理技术、产品和创新
为了应对数据处理的压力,过去十年间在数据处理技术领域有了很多的创新和发展。除了面向高并发、短事务的OLTP内存数据库外(Altibase,Timesten),其他的技术创新和产品都是面向数据分析的,而且是大规模数据分析的,也可以说是大数据分析的。
在这些面向数据分析的创新和产品中,除了基于Hadoop环境下的各种NoSQL外,还有一类是基于Shared Nothing架构的面向结构化数据分析的新型数据库产品(可以叫做NewSQL),如:Greenplum(EMC收购),Vertica(HP 收购),Asterdata(TD 收购),以及我们在国内开发的GBase 8a MPP Cluster等。目前可以看到的类似开源和商用产品达到几十个,而且还有新的产品不断涌出。一个有趣的现象是这些新的数据库厂商多数都还没有10年历史,而且发展好的基本都被收购了。收购这些新型数据库厂商的公司,比如EMC、HP,都希望通过收购新技术和产品进入大数据处理市场,是新的玩家。SAP除了收购Sybase外,自己开发了一款叫HANA的新产品,这是一款基于内存、面向数据分析的内存数据库产品。
这类新的分析型数据库产品的共性主要是:
* 架构基于大规模分布式计算(MPP)
* 硬件基于X86 PC 服务器
* 存储基于服务器自带的本地硬盘
* 操作系统主要是Linux
* 拥有极高的横向扩展能力(scale out)和内在的故障容错能力和数据高可用保障机制
* 能大大降低每TB数据的处理成本,为“大数据”处理提供技术和性价比支撑。
总的来看,数据处理技术进入了一个新的创新和发展高潮,机会很多。这里的主要原因是一直沿用了30年的传统数据库技术遇到了技术瓶颈,而市场和用户的需求在推动着技术的创新,并为此创造了很多机会。在大数据面前,越来越多的用户愿意尝试新技术和新产品,不那么保守了,因为大家开始清晰地看到传统技术的瓶颈,选择新的技术才有可能解决他们面临的新问题。
现在的总体趋势是在数据量快速增长、多类数据分析并存的需求压力下,数据处理技术朝着细分方向发展,过去30年一种平台满足所有应用需求的时代已经过去。我们必须开始根据应用需求和数据量选择最适合的产品和技术来支撑应用。世界数据处理市场格局正在发生革命性的变化,传统数据库(OldSQL)一统天下变成了OldSQL+NewSQL+NoSQL+其他新技术(流、实时、内存等)共同支撑多类应用的局面。在大数据时代,需要的是“八仙过海”,是数据驱动最优平台和产品的选择。
图2 数据处理的市场格局变化
5. MPP关系型数据库(New SQL)与Hadoop的非关系型数据库(NoSQL)
新的技术主要是MPP架构的新型数据库和Hadoop生态环境,我对MPP比较熟悉,Hadoop略知一点,主要谈谈MPP的优势。
大数据存储技术路线最典型的共有三种:
第一种是采用MPP架构的新型数据库集群,重点面向行业大数据,采用Share Nothing架构,通过列存储、粗粒度索引等多项大数据处理技术,再结合MPP架构高效的分布式计算模式,完成对分析类应用的支撑,运行环境多为低成本PCServer,具有高性能和高扩展性的特点,在企业分析类应用领域获得极其广泛的应用。
这类MPP产品可以有效支撑PB级别的结构化数据分析,这是传统数据库技术无法胜任的。对于企业新一代的数据仓库和结构化数据分析,目前最佳选择是MPP数据库。
图3 MPP架构图
第二种是基于Hadoop的技术扩展和封装,围绕Hadoop衍生出相关的大数据技术,应对传统关系型数据库较难处理的数据和场景,例如针对非结构化数据的存储和计算等,充分利用Hadoop开源的优势,伴随相关技术的不断进步,其应用场景也将逐步扩大,目前最为典型的应用场景就是通过扩展和封装Hadoop来实现对互联网大数据存储、分析的支撑。 这里面有几十种NoSQL技术,也在进一步的细分。对于非结构、半结构化数据处理、复杂的ETL流程、复杂的数据挖掘和计算模型,Hadoop平台更擅长。
第三种是大数据一体机,这是一种专为大数据的分析处理而设计的软、硬件结合的产品,由一组集成的服务器、存储设备、操作系统、数据库管理系统以及为数据查询、处理、分析用途而特别预先安装及优化的软件组成,高性能大数据一体机具有良好的稳定性和纵向扩展性。
6.数据仓库的案例
个人对数据仓库比较熟悉,所以可讲讲。我们拿大家熟悉的数据仓库(Data Warehouse=DW)来看看数据分析的价值。
在互联网高速发展之前,无论是电信运营商,还是大银行,保险公司等都花费了巨额资金建立了自己的企业级数据仓库。这些仓库主要是为企业决策者生成企业的一些关键指标(KPI),有的企业有几千张、甚至上万张KPI报表,有日表,周表,月表等等。这些系统有几个主要特征:
技术架构主要基于传统RDBMS + 小型机 + 高端阵列 (就是大家说的IOE),当然数据库有部分DB2,Teradata等。
报表基本都是固定的静态报表,产生的方式是T+1 (无法即时产生)。
数据量增长相对缓慢,DW的环境变化很少。
最终用户只能看汇总的报表,很少能够基于汇总数据做动态drilldown (钻取)。
多数领导基本上认为花了很多钱,但看不出是否值得做,有鸡肋的感觉。最后大家对大量的报表都视而不见了。
这类系统属于“高富帅”,是有钱的企业给领导用的。
目前多数企业和部门根本就没有数据仓库。其实大家对传统数据的分析还没做得太好、还没有普及,现在又遇上了大数据。
用3个案例,讲讲数据分析能力和分析结果的巧妙使用比数据大更重要。
第一个案例:
在90年代后期,法国电信决定建立自己的核心数据仓库(项目的名字很有诗意,叫“Symphony”),把当时法国用户全部的话单数据(固网电话,那时还没有现在的移动手机)汇集到一个数据库中,用话单数据跟用户的其他属性做交叉统计,看看有什么消费行为和规律。项目需求是负责Marketing的部门提出的,技术部门负责实施。
这个项目当时在世界上是最大的民用数据库,30TB数据规模,光磁盘阵列就占了很大的一个机房。经过大量的投资和艰苦的建设(第一期使用的是Oracle 7, 刚开始有分区功能),第一批统计数据终于跑出来了。我记得最清楚的一个是通话时长的分布。 大家惊奇的发现有很大一部分通话不超过1分钟(大概是30%以上,不记得准确的数字了),而且跟用户其他特征关联不大。
随后,为了推动消费,Marketing部门想出了一招,很快法国电信推出广告,大致是“为了给大家提供更好的社交便利,我们决定从xx日起降低电话通讯费用30%,大家可以多打电话,可多跟家人、朋友聊天了……”。
从广告发布的第二个月开始,统计显示大家打电话的次数增加了,这给法电带来了更多的收入。这里面的猫腻是第一分钟的话费没有降,是从第二分钟开始降低30%,而大家觉得打电话便宜了,自然打的次数就多了。
第二个案例是个相反的案例:
说明技术平台对需求的满足有时很难。这个案例不是自己经历过的,是听比较靠谱的朋友讲的。
大家每年过春节都发很多短信。运营商因此挣很多钱。中国早就是世界上短信第一大国。据说有一年的春节期间,某电信运营商的老大突然问IT部门老大要每个小时一共发了多少短信的实时统计数据。IT老大找底下的运营部门要,居然没有人能把这个简单的数据按时统计出来。大家可想像那个电信运营商老大是什么反应:投资了上百亿的系统,竟然连个这么简单的问题都回答不了。
我分析当时的原因可能有2个:一是运营商是按省份建立数据仓库的,而全国的数据需要汇总所有省份的统计,很难;二是在每个省的数据仓库里统计这个数据没有可用的报表,临时用SQL统计可能要跑很长时间(虽然是个简单的select count(*),但要全表扫描肯定不会快的)。这是个典型的技术拖了需求后腿的案例。
第三个案例
这是法国一家著名超市集团在90年代就通过A/B试验和数据分析总结出的一个商品在超市最佳摆放位置的案例。这个案例肯定没有比大家都知道的“尿布与啤酒”那么经典,但实用性很强,今天仍然在使用,大家不信下次可以去超市买东西时验证下。
问题的起源是“针对同一类型中不同品牌、不同价格、不同利润的商品,摆在货架的什么位置最容易销售出去?”。为了科学的回答这个问题,这家超市组织了真实试验以获得真实数据。试验很简单,比如把1个商品先摆在货架高处,然后摆在中间、最后摆在底下的位置,每次摆放的时间一样长。试验期间不断收集不同商场的销售数据,最后的统计结果发现当把商品摆放在跟多数人视野水平高度接近的位置时,商品卖的最好。据说后来还咨询了心里学专家解释这个现象,原因好像大家无意中关注的重点就是视野的水平方向。
大家可以试验下,今天多数超市都把最贵或者利润最高的商品放在跟多数人视野水平高度接近的位置,而最便宜的同类商品放在最底层,其他的放在最高层。当然,这个规律可以进一步细化,比如给小孩的糖果都摆的比较低、在结帐台附近等等。知道了这个规律,大家可以省些钱的,哈哈!
从这3个案例可以看出,在没有“大数据”概念之前,大家已经在用不同手段从数据中获得有价值的信息并推动了企业的业务发展。今天的“大数据”可能是把数据挖掘方法、用数据思维的方式更广泛的使用而已。
7.数据处理技术的核心问题到底是什么?
其实我们一直面临着数据处理中最核心、最大的问题,那就是性能问题。性能不好的技术和产品是没有生命力的。数据处理性能问题不是因为大数据才出现,也不会有了大数据技术而消失。这是个“道高一尺,魔高一丈”的问题:处理性能的提升将促进对数据价值的挖掘和使用,而数据价值挖掘的越多、越深入,对处理技术要求就越高。
上面的案例其实已经说明了因为性能问题,目前的数据仓库只能满足一些静态统计需求,而且是T+1模式;也是因为性能问题,运营商无法有效构造超过PB级别的大数据仓库,无法提供即席查询、自助分析、复杂模型迭代分析的能力,更无法让大量一线人员使用数据分析手段。
今天如果做“大数据”数据仓库,运营商面临的挑战比上个10年要大的多。目前没有单一技术和平台能够满足类似运营商的数据分析需求。可选的方案只能是混搭架构,用不同的分布式技术来支撑一个超越PB级的数据仓库系统。这个混搭架构主要的核心是新一代的MPP并行数据库集群+ Hadoop集群,再加上一些内存计算、甚至流计算技术等。
为什么今天的挑战更大,主要是下面几个原因:
第一个原因是数据量已经是上一代的一个数量级了,1个省份级运营商1年就可超越1PB结构化数据,其中尤其是数据业务产生的日志数据在智能终端普及下爆炸式增长,而这些数据其实跟互联网企业采集到的移动数据完全一样,运营商可以获得甚至比互联网企业更多的数据。这些数据还属于正常业务产生的数据。如果把交换机、基站等产生的数据(部分非结构化)加进来(关注网络服务质量),把内容数据也加进来(关注用户访问的内容),最终的数据量可能还要上一个数量级。明天何鸿陵会详细介绍运营商面临的数据和技术挑战,我也是班门弄斧了。
第二个原因是“大数据”关注的更多是用户行为、群体趋势、事件之间的相关性等,而不仅仅是过去的KPI,说穿了就是开始关注最终用户的行为,为精细化营销、优化企业流程、降低运营成本等做支撑。这就对数据分析平台对数据的分析能力和性能提出了新的要求和挑战。这些要求跟上一代数据仓库相比不仅仅是量的改变,而是质的改变。比如对大表之间的关联、复杂的OLAP函数、复杂的数据挖掘函数等。
所以我想讲的是我们需要多元化的技术来支撑大数据了。
图4 未来大数据处理的核心技术
这个图可能就是未来几年大数据处理的核心技术所在。当然互联网公司另论了。
下面是招标书中对业务需求的描述:
“模型必须包含用户轨迹模型和用户交往圈模型。用户轨迹模型是指记录用户在通信网络中的xxx等信息,分析用户的移动路径,了解用户的生活轨迹,以更好地为精确营销类应用提升数据支撑,同时为网络可管理的科学选址奠定位置基础。用户交往圈分析是指对CDR清单数据中蕴含的用户之间的社会关系进行分析挖掘,得出基于用户通话行为的社交网络交往圈,同时结合用户位置轨迹信息,发掘交往圈中经常处于同一位置范围内的用户,并对交往圈中的用户进行分群,从而以交往圈的角度,深入了解客户,提升客户价值,为用户维系挽留,离网预警,精确营销提供支撑”
而招标书中对数据挖掘的需求更是关系型数据很难解决的:
“大数据平台具备非结构化数据处理能力(文本分词),支持多维社交网络分析、路径分析等大数据深度分析功能,支持经典数据挖掘算法,包括:逻辑回归、聚类、决策树。”
从上面标书内容可以看出,无论是对数据处理平台的技术,还是业务需求都跟上一代数据分析平台有了巨大的差别。比如需要MPP与Hadoop Map Reduce的融合,需要分析用户的交往圈、移动路径等等。这些互联网企业在做的大数据分析,传统企业也开始做了。
8. 总结 - 新型MPP数据库的价值
技术:基于列存储+MPP架构的新型数据库在核心技术上跟传统数据库有巨大差别,是为面向结构化数据分析设计开发的,能够有效处理PB级别的数据量。在技术上为很多行业用户解决了数据处理性能问题。
用户价值:新型数据库是运行在x-86PC服务器之上的,可以大大降低数据处理的成本(1个数量级)。
未来趋势:新型数据库将逐步与Hadoop生态系统结合混搭使用,用MPP处理PB级别的、高质量的结构化数据,同时为应用提供丰富的SQL和事务支持能力;用Hadoop实现半结构化、非结构化数据处理。这样可同时满足结构化、半结构化和非结构化数据的处理需求。
下面这个图是我们正在做的产品架构图,将逐步把MPP与Hadoop技术融合在一起,为用户提供透明的数据管理平台。
图5 MPP与Hadoop技术融合的产品架构图