中国IDC圈4月27日报道,互联网的发展使得大数据引起人们广泛关注。现如今大数据技术早已渗透到金融、通讯等行业以及生物学、物理学等领域。大数据在容量、多样性和高增速方面的爆炸式增长全面考验着现代企业的数据处理和分析能力,与此同时也为各个行业带来了准确洞察市场行为的机会。迄今为止大数据技术与产品有哪些创新,工业大数据应用面临哪些挑战,金融行业大数据应用现状如何等。围绕这一系列问题,4月27日至28日,由工业和信息化部指导、中国信息通信研究院主办的"2016大数据产业峰会"在北京国际会议中心盛大召开。28日上午,在中国信息通信研究院、数据中心联盟主办的大数据人才发展计划公开课上南大通用数据技术有限公司培训总监沈丽萍分享了大数据时代的数据库技术与应用。
南大通用数据技术有限公司培训总监沈丽萍
以下是沈丽萍演讲实录:
沈丽萍:大家下午好,非常荣幸谈到大数据产业联盟,也非常荣幸给大家介绍大数据产业中数据库的技术和应用。今天上午我也听了其他会场行业内建设大数据的情况汇报。
今天下午大家来参加人才的公开课,肯定大家有一个愿望,希望加入到大数据的时代中来,也要成为大数据人才,也要能够参与到大数据平台的建设之中。大家可能也在想,那么多行业都在建设大数据,我怎样来啊搭建一个大数据的体系。我主要给大家介绍数据库的技术和应用。
大家都是会大数据这个资源,它可以比作是一个“金矿”,我们这个数据库就相当于寻找“金矿”的挖掘工具。这个挖掘工具帮助客户寻找数据的内在价值。
我今天演讲的主题分为三个方面:第一方面,介绍一下大的趋势和背景,大数据推动了IT的架构变革。第二部分,给大家重点介绍一下MPP数据库的主流技术。第三部分,介绍一下大数据领域中数据库的一些应用案例。主要也是应用MPP数据库在我们的一些金融、电信、政府,这些行业里已经成功上线的一些案例,也希望通过这些案例给大家带来一些思考和借鉴。
我们说现在这个时代已经进入大数据时代了。那么,因为数据的体量呈爆发式的增长,主要还是在于互联网的发展,以及智能手机的普及。那么,从2008年开始基本上每两年数据就翻一倍。我们看到,2008年达到0.5ZB,2010年达到1.2ZB,按照IDC的预测,到2020年数据的总量要达到40ZB。这些概念可能对大家来说不好理解,我们说现在你的一个硬盘可能就是家用电脑可能1TB,我们企业级的服务器里头,可能一块硬盘也是3TB这种的架构。40ZB这真的是体量很大。而且预测其中22%将来自中国,中国一个是地大物博,另外一个就是人多,用的数据,产生的数量也是很多的。
大数据有四个特征,我们叫“4V”,主要是Value,价值是大家最关注的。我们看一下左边这个表,列出了一些行业,有互联网、电信、金融、交通、政府、医疗,还有其他行业。那么,还列出了一些销售额,从我们这个看,看一下市场的占比。我们右边这个图,就是把互联网这个单独给它作为一个纬度,然后其他行业单独作为一个数据做了一下分析。我们发现互联网的这个大概占到34%,其他行业65%。我们说这个行业大数据其实它也有很大的价值,不管是我们一说大数据,好像都是在互联网上产生的,而且中国对大数据的重点行业其实就是在电信、金融、交通、政府、医疗这些行业。
我们为什么要分互联网大数据和行业大数据两大类呢?因为我们知道,在互联网上它的大数据的数据类型主要是以非结构化为主,像我们看的网页属于半结构化,视频、照片、音频这些都是属于非结构化的,它的空间很大,要得取有价值的信息密度很小。但是,行业大数据,因为经过几十年的信息化系统的建设,行业大数据已经有很多的系统,像我们电信行业有详单,账单系统,企业有客户关系系统,还有很多的管理系统,以及银行有存贷业务,信用卡业务的各种各样的系统,这些系统随着时间积累,数据体量也是越来越大的。但是这些系统都是我们传统的关系型数据库,所以它里头的数据都是结构化的数据。
所以,我们这些数据把它整合到大数据平台上做分析,它的价值密度是很高的。当然,现在随着互联网的发展,各种服务器和各种设备也会产生大量的日志信息,以及人员使用中,浏览的各种内容,它也会产生很多的非结构化和半结构化数据。但是行业数据来说,大部分还是属于结构化数据。我们要解决大容量、高价值、密度结构化的大数据的存储、计算和分析课题。
既然很多行业的系统里头用了将近30年传统的关系型数据库,在数据体量小的时候大家用的都已经很成熟和很完备了。我们大数据现在爆炸式的增长,传统的关系型数据库是否可以支撑大数据的应用呢?因为传统的关系型数据库基本上是属于SMP的架构,基本是单机,或者共享存储的架构,这种架构难以处理海量数据,因为不能很好的扩展。数据体量这么大,其实它需要更多的资源,数据无限的扩充,它就需要无限快的处理器和无限容量和(无限带宽的存储,对客户来说他希望有这样的设备,而且不希望价格太贵。当然没有一个独立的服务器可以提供无限快的处理。那么,一个解决方法就是我们用有限快的服务器成立无限的数量能达到无限快的处理能力,这也就是我们说的分布式MPP。
我们看一下,我们刚才讲了以前一直都用传统的关系型数据库来支撑我们的各种系统的应用。这里头我们把应用分为事务类和分析类的应用,随着互联网的发展,我们也可以做一些互联网上的应用。当时因为数据体量比较小,所以一种架构支持多类应用,随着数据体量不断的增大,一种架构它在分析类以及互联网上都不适合了。我们说大数据时代导致这个架构的多元化,也需要把它的应用进行细分和拆分。对于事务类的NITP这类的应用还是可以使用传统的关系型数据库,我们称之为OldSQL。对于分析类的这种应用,像大数据平台它基本导入的都是历史数据,已经发生过的数据加载到大数据平台来,它主要做分析,像客户的营销、决策,靠这些分析来得到有力的数据支撑。这样我们就需要用一种新型的数据库。在互联网上大家有有目共识,现在很多互联网企业都用NoSQL,Hadoop为基础的架构支撑大数据的应用。
随着数据体量的增大,我们认为大数据平台应该使用可选择的平台,就是NewSQL MPP的数据库以及以Hadoop为主的NoSQL的架构。这三大阵营其实有很多产品,大家比较熟悉的事务型的OldSQL里面最典型的就是Oracle,还有DB2等。NewSQL领域老的就是TERADATA,银行以前建大数据平台的时候没有选择,只能选择TERADATA,这个不是说它不好,是因为它得用一体机设备。在互联网的NoSQL领域都是以Hadoop生态圈的一些产品为主,而且很多公司都在做这方面的,因为它是开源的,而且它不是一个产品,它是一系列的产品。所以,它不像NewSQL都是商业的数据库产品。后面还有Hadoop专门的公开课,所以我就不多做介绍了。
传统的关系型数据库存储方面以行存储,都是行存储,一行记录存在一个块里头,取数据的时候非常方便。架构基本上是SMP的架构。NewSQL是以列存储,按列进行存储,它也是支持关系型的。它的架构就已经扩展到MPP分布式架构上了。那么,NoSQL就是以SDFS,分布式存储进行存储的,另外它用Key-Value,它的架构也是MPP的。大数据来了,各个阵营的产品其实它们也都做了很多的技术创新。分别在内存计算、分布式计算,以及采用一些新的硬件,像我们说的闪存,还有高速网络,4GB的 Infiniband网络都可以支持,都是为了提升性能。
大数据的平台,具体这三个阵营里头应该有什么样的解决方案呢?目前大数据平台处理的数据应该是一个全量数据,而不是样本采集的一些个别的数据,是全量数据。而且它建立大数据平台,它不是说只是做这一个系统的这样一纬分析,是把多个数据源的数据都加载到这一个平台上来,进行多维的多元的分析,这么大的体量用一种架构肯定是不行的。我们有这三大阵营的产品,我们就要发挥他们各自的优势,取长补短。我们说传统事物型的数据库主要适用于下数据量,而且业务逻辑复杂,并发度高的事务型的业务场景,主要是OLTP。新型MPP的数据库适合处理大规模的复杂分析,而且是TB级别的数据的查询、关联这些场景。Hadoop NoSQL平台适合处理非结构化数据,还有流数据处理,以及大规模批量的目的作业,这是它的长项。所以,在大数据时代可以说要把应用做在分而治之数据处理的综合的解决方案。
既然这三个产品它们要混合使用,那么,它们也有一个选型从数据量来看。TB级别,关于OLTP的应用,处理高价值密度的结构化数据,我们还是采用传统的关系型数据库,在TB到PB级别的数量量上,我们处理分析类应用我们就用新型的MPP 数据库,对于更大规模数据处理的时候,它的价值密度其实已经很低了。我们这就需要用Hadoop为主的NoSQL。但是,我们可以用NoSQL的技术可以把低价值密度的数据经过一些转换、清洗,或者是一些它可以把它深度的汇总,或者抽取出有价值的这种数据,然后它体量就会减少,然后再加载到MPP数据库里头,然后再做复杂的分析、统计。所以,未来大数据应用的趋势是混搭架构。我们对于在线的OLTP业务有事务型的数据库,把数据可以加载到MPP的数据库里头。或者有Hadoop,它在处理的一些低价值密度的数据,处理完的数据要灌到MPP数据库里头,然后由MPP数据库做对上层的应用的核心支撑分析类的应用。
刚才我就给大家讲了一下我们整体的大数据推动IT架构变革的整个情况。下面给大家重点介绍一下MPP数据库的主流技术。可能大家有些人还不太明白,MPP究竟是什么意思?它就是大规模并行处理系统,系统有许多松偶合处理单元组成,每个单元内的CPU都有自己私有的资源,如总线、内存、硬盘等。在每个单元内都有操作系统和管理数据库的实例副本,这种结构大的特点在于不共享资源。MPP这个架构,对应有一个SMP,那个架构它的CPU是共享内存,所以它不容易扩展,因为每个CPU都要共享内存,MPP是在这个单元内的CPU不占内存,而彼此之间,每个单元之间是松偶合的,基本上我们认为每个单元就是一个独立的服务器,就是多个服务器的节点,把它组合起来进行并行处理。
对于MPP的数据库,它应该具有Shared Nothing架构,任务并行执行,数据分布式存储,分布式计算,横向扩展,这个横向扩展非常重要。MPP的架构它像我们新型的NoSQL的产品,它选用MPP架构,Hadoop产品也是MPP的架构。我们这里给大家讲的MPP数据库是指NewSQL这个阵营里的产品。
我们一般大数据的平台分为四层,分为基础设施层、采集和预处理层,还有数据处理平台,以及上层的应用平台。我们MPP数据库就是在处理平台上,它跟传统的事务型数据库,以及Hadoop它们一起都是做数据处理的。我们知道MPP技术不是说现在才提出来的,它是很早,在我们80年代的时候,大机时代学术界就已经提出它是解决数据的一种方式。但是,确实有这么多数据的时候,新一代的数据处理技术都要选择MPP这个架构呢?主要是来自于它支撑它的软硬件的发展。首先,是Internet推动了网络技术的发展,并且性价比不断的提升。我们知道现在的网络,千兆支持到万兆,甚至支持到四万兆的网络,相对来说交换机、网卡的价格确实在下滑的。另外,对于支撑我们数据库的服务器它也是在不断的发展,它现在基本上都能支持多核、多CPU的这种技术,而且支持大内存,现在有120G、256G的。所以,这块PC服务器价格本来就便宜,但是它的性能不断的提升,能达到类似小型机的性能,而且支持数据库产品的操作系统,Linux系统也是不断的成熟。这些都推动了MPP的技术有了可靠的基础。大数据它的数据爆炸式的增长,以前单个SMP系统已经无法应付数据增长带来的压力。所以,我们必须要有新的技术了。所以,基于的大数据平台技术一般都是训练MPP的架构。
MPP的数据库我们认为它要维持关系型的模型。SQL就像是我们在数据库的行业里头大家说的普通话,经过这么多年的发展,SQL已经成为大家做英文开发的一种标准的语言,如果新的数据库产品不支持,就听不懂人家说的话了,所以我们认为MPP数据库应该支持SQL92的标准,甚至要做一些扩充,另外它也必须支持存储过程,因为很多处理都是写到存储过程由数据库来完成运算的。所以,虽然是一个新的数据库也必须要支持这个过程。另外,我们也要支持事务,以及ACID的约束,ACID主要指一个事务执行的原则性、一致性、隔离性和持久性。分布式的架构自然也要遵守CAP的原则。主要是MPP厂家告诉我的,他们认为C就是一致性,A是可用性,P是分区容忍性。理论上说这三个在分布式架构里头不能三个都支持,只能三选二。我们作为一个分布式数据库,当你出现异常的情况,就要选你是支持C,还是支持。MPP数据库一般会选择C,就是一致性,当出现故障的时候,会有意识把一些功能让它减弱,然后用同步机制修复这个节点,等节点恢复以后它再正式的运行。我们知道传统的关系型数据库其实它支持的是CA,是一致性和可用性的。
数据库架构的发展趋势,就是从单机到分布式,最早是单机分布式,特点是计算集中、存储集中。后来要提升性能,出现了Shared DIS(音译)数据库,最单行的就是Oracle数据库,这个也能满足一定的大数据的需求,但是它有一个问题的,上层的节点数增加,都要到统一的磁盘上来取,瓶颈就会在共享数据这个磁盘上。另外,这种也无法避免单点故障,万一数据坏了,上层的节点数也多没有用。数据体量再大的情况下已经超出了你这样架构的限制了,已经存不下了,我们再发展就是MPP+Shared Nothing架构的。单台服务器的处理性能是有限的,我们的数据也是有限的,这样就是我正好数据也小,正好普通的PC服务器就能处理有限的数量的数据,我这个架构好处在于我可以扩展好多个节点,通过这些节点并行运算得出最终的结果。像Hadoop也是这种架构。从用户的角度来说,共享架构一般是采用小型机,硬件成本都是上千万的级别。我们现在用Shared Nothing和MPP架构可以用普通的低成本的X86 PC服务器就可以满足。后续数据量再大的时候还可以投入横向扩展,有扩展能力。所以,现在MPP数据库也成为大数据的选型之一。
既然介绍了一些技术,给大家介绍一下南大通用的GBase 8a,它们中间有万兆网络把它连接起来,它分为三个节点或者两个节点一组,用组进行管理。组管理的目的是在这个同组的数据还要互相备份,想通过多副本机制保证集群的高可用性。它的数据从哪里来?我们说基本上它的数据都是其他的数据源,生产系统、各个交易系统的数据,每天定时的会把数据跑出来,通过我们的分发节点,把数据分发以后,分发到我们的节点上。上层应用可以连到集群的任何一个节点,下达它的SQL命令,它在哪个节点执行的结果都是一样的。
MPP数据库还支持适合于分析类应用,它的另外一个特点是列存储的。行存储的数据库按行为一块唯一配置来存的,特点是小数据量,要改一个数,直接把一行数据取出来,把这些数据改了就可以。它的缺点就是它查询的时候,如果大家有经验,查询性能比较慢,它要单独列一些索引,数据和索引的分离。另外,行存数据基本上会压缩,另外,它查询的时候对某一列做操作,必须把整行的数据拎出来,然后找到那一列,这样它I/O占的比较多。列存数据库是按列进行存储的,优势在于查询、统计、分析。我们查询的时候可能一个宽表,可是我们只对其中的个别列进行分析,它分析哪一列,直接把那一列的数据读持续就可以了。另外,列存储基本上都是压缩的。所以,这块它就是占用的空间比较小,I/O也大量的减少。从行存转化成列存储以后,采取性能一般都有数十倍的提升,而且压缩比有的高达1:20。分布式的数据库有几种分布策略,有复制的还有分布的,假如我们有复制表,把一个小表,纬度表可以分别存储到各个节点上。分布表是完整的数存到各个节点上,分布表就是我要按照一定的分布策略,把这个表拆成小表分发到各个节点上。我们分随机分布表和hash分布表,hash就是去一列,把相同值的节点分发到各个节点上。对于我们一般常用的新型模型,假如说一些纬度表,我们就采用复制表的方式把整个表都放到各个节点上。同组的数据做一个互为备份,万一一个节点失败了,可以另外一个节点返回正确的结果。
刚才说了hash分布,对于分布式查询来说,其实比较难处理的在于两个大表的关联运算。我们分为静态hash和动态hash。假如都是按关联键事先把数据排在一个节点上,只要本地的两个小表进行关联,把结果上传给上层应用就可以了。还有一种情况,其中有表不是按照你这个hash等值关联键进行分布的,这时候要按照键重新动态把这个数据再做一次分布之后,再进行关联操作和其他预算,这就叫动态的hash。但是,因为它列存储,只把这一类数据传一下就可以了。
并行,单机版也可以有并行,算子里头,像扫描、关联,以及聚合这种操作都可以把它并行,大的利用单机的多核资源。我们说MPP是充分的利用了单机的并行,然后在多个节点上再一次更大规模的并行。像这样它就能够,假如说可以建立100个节点的这种架构的系统,那么它就能达到1000个核的运算能力,甚至I/O达到10GB/s,内存达到单节点,要支持这样大的能力,它的成本肯定是不可预想的。
高可用用组的方式存副本,节点正常的时候每个节点都参与运算,当其中一个节点出故障的时候,它就把这个任务发给其他有副本的节点来保证高可用性,就是节点出故障了也能返回正确的结果。我们说的扩展,传统的SMP的数据库都是纵向的扩展,MPP数据库是通过横向的,增加节点的方式来进行扩展。那么,扩展的目的一个是提升性能,再一个就是支持更大的数据量。MPP数据库的应用方向主要是适合机器查询、统计分析等。
下面给大家简单介绍一下案例。MPP数据库在金融行业已经有成功的上线的项目。主要说一下农行的数据仓库的项目,是真正的实现了PB级的大数据平台。它总体架构分为六层,最底下是数据来源层,都往这个平台上吐数据,底下做了数据初步的处理层,建了一个将近100个节点的Hadoop集群,做数据的抽取、转换,另外做银行系统拉链的加工。然后就是模型指标层,用Gbase Ba MPP Cluster。上层还有数据集市层,分别建了四个数据集市,每个集市都是用了一个MPP的数据库。那么,因为银行的业务非常复杂,它通过建多个集群,而且这么严格的按这个层来建立,主要是避免这次假如说这里失败就只影响我这一层,再失败可以从我的下一层再重新来一遍,所以保障了可用性。上层应用,当然它还有中间件,以及上层的应用。MPP物理架构是采用华为的国产设备,我们数据库也是国产数据库。在底下大的就是它的主仓库,数据仓库,是两个56集群,总共是112个节点,还有16个加载机,是双活的,一个写处理当天的数据,一个是查询的集群是查询昨天的数据。这个项目是2013年开始应用,一直连调。到2014年主库上线了,然后不断的做优化,2016年准备要建八个数据集市,总共的节点数加Hadoop要打造800个节点。所以,这个项目是针对一个海量数据处理,因为它数据处理量已经超过2PB了,而且有50多数据源于,目前节点数已经超过200个节点了。它的复杂业务是SQL 60000多个,将近15000多张表,整个成本是千万级的成本。
电信行业的应用,电信运营商都有我们的成功案例。这个是山东移动云经分项目,2013年9月开始测试,2014年1月20号试运行,2014年10月11号正式上线,因为云经分对移动来说也是一个重要的比较核心的系统,这个是替换的,以前这个系统是由两台小型机+DB2数据库。这个系统因为数据体量不断增大,它不能扩容,而且加载速度,DB2的加载比较慢,满足不了它时间窗口的要求。所以,山东移动考虑采用新型的数据库,主要数据分为两块,数据中心也是采用Hadoop,另外还有一些日志类的,它的数据都是非结构化,半结构化为主,而且数据体量比较大,他们也是专门用Hadoop的技术做的。它这个MPP数据库的架构用的是IBM的PC服务器,也是120G内存,16块硬盘,是26个节点做处理。我用26个节点的MPP数据库性能就相当于原来两台小型机的性能。
刚才那两个案例从整体上的大数据平台来说是混搭架构,具有传统的关系型数据库,也有MPP数据库,另外还有Hadoop的处理。第三个案例是海关总署二期项目,2014年测试,2015年逐步分阶段的上线了。这个数据量只有TB级,相对比较小,所以处理的时候很简单,从Oracle数据库直接通过ETR工具直接把Oracle每日的增量数据落地加载到MPP数据库里头,没有Hadoop的这层处理。所以,Hadoop这层是根据数据量来处理的。
做一下最后的总结,大数据时代推动技术的变革首先是打破了一元化,多种技术混合。另外,对于用户来说一定要选择最适合的产品和技术支撑大数据应用,因为目前还没有绝好的一种解决方案做总结,一定要看数据量和应用需求决定你采用哪种技术。我们对于TB到PB级别的分析类应用,我们推荐使用MPP的新型数据库产品。我的讲解就到这里,谢谢大家!