这是几年前在与某客户交流时写的命题作文,是为了客户用大数据替代掉在业务应用使用的关系数据库的想法的回复。也只是整理了网络上已有的材料,以让客户就这个命题的真伪做判断找到客观的依据。
关于大数据
研究机构Gartner、麦肯锡全球研究等多方机构都给出了关于“大数据”的定义,总体上大同小异,代表性的是Garner的定义:”大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。换而言之,如果把大数据比作一种产业,那么这种产业实现盈利的关键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。1)
大数据具有5V特点(IBM提出)包括:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。这些特点对本已有的处理手段(关系型数据库)提出了挑战,特别是在大量,多样,低价值密度的要求下需要能以低价设备,并行的处理多种形态(非结构化)的数据,随后一些大数据处理技术和产品应运而生,如:Hadoop, MapReduce, Hive, Pig, HBase, Spark等分别对应于海量数据的分别存储,并行处理,数据分析等。
基于大数据的应用的技术架构
随大数据发展产生的这些新的工具被应用于大数据处理平台中,而基于大数据的业务应用的技术架构应该是什么样的呢?这可以从大数据应用的架构和大家的实践中求解。
如下是一个关于大数据处理平台的一般性架构2)
可看到在如上的架构中,数据的方向是从下向上,也就是来源于业务应用系统,数据从业务数据库,日志,等通过Sqoop、Flume、MQ、Java NIO等技术手段导入到上面的大数据平台中进行数据的处理,在这个图中突出的是大数据处理能力,但底层也体现出了与业务应用的关系。
案例一 3) : 电商基于大数据的商业智能(BI)
在这个例子中包含两类数据,用户行为数据和业务数据。商品、会员、交易、库存等x些是业务数据,它们多数存储在my sql数据库里,而用户行为数据则被采集到大数据平台中进行数据分析,分析形成的结果数据输出到BI系统中,BI通过展现层和应用层为电商提供了报表,及风险和增值的服务,比如识别”黄牛党”、服务推荐等。
案例二 4):基于大数据分析的配电网主动检修业务
在这个案例的系统架构中开关动作、保护信号、电流、电压、有功、无功等海量实时数据存在分布式数据库,大数据平台进行分析处理,之后将故障信息、事件信息、重过载信息、电压越限信息等转存在关系型数据库中,关系型数据库中存储了设备台账、故障信息、事件信息、重过载信息、电压越限信息、缺陷信息、检修计划信息等结构化信息。
大数据和关系数据库的特点
在以上的案例中都使用了大数据和关系数据库的组合,其原因应该是它们各有自己的特长。以下是对大数据和关系数据的一般性的比较。
(1)关系数据库
优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。
劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等。
(2)大数据
优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等。
劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。9),10)
大数据工具比较适合解决需要以批处理方式分析整个数据集的问题,尤其是一些特定场景的分析。关系数据库适用于索引后数据集的点查询和更新,建立索引的数据库系统能够提供对小规模数据的低延迟数据检索和快速更新。大数据适用一次写入,多次读取数据的应用场景,关系数据库则更合适持续更新的数据集。可见关系数据库和NoSQL数据库(含大数据)各有优缺点,彼此无法取代。8)
长期以来关系数据库应用在需要保证强事务一致性的场景,比如电信、银行等领域的关键业务系统中,正是因为其长期发展形成了以下的特征:
1)数据集中控制,在文件管理方法中,文件是分散的,每个用户或每种处理都有各自的文件,这些文件之间一般是没有联系的,因此,不能按照统一的方法来控制、维护和管理。而数据库则很好地克服了这一缺点,可以集中控制、维护和管理有关数据。
2)数据独立,数据库中的数据独立于应用程序,包括数据的物理独立性和逻辑独立性,给数据库的使用、调整、优化和进一步扩充提供了方便,提高了数据库应用系统的稳定性。
3)数据共享,数据库中的数据可以供多个用户使用,每个用户只与库中的一部分数据发生联系;用户数据可以重叠,用户可以同时存取数据而互不影响,大大提高了数据库的使用效率。
4)减少数据冗余,数据库中的数据不是面向应用,而是面向系统。数据统一定义、组织和存储,集中管理,避免了不必要的数据冗余,也提高了数据的一致性。
5)数据结构化,整个数据库按一定的结构形式构成,数据在记录内部和记录类型之间相互关联,用户可通过不同的路径存取数据。
6)统一的数据保护功能,在多用户共享数据资源的情况下,对用户使用数据有严格的检查,对数据库规定密码或存取权限,拒绝非法用户进入数据库,以确保数据的安全性、一致性和并发控制。
这些应该算是关系数据库在业务应用中不可或缺的根本原因吧。
大数据技术是否会全面替代关系数据库
由以上的案例和各自特点的分析可知:大数据一般用于分析数据,一般只做查询,不修改数据,关系型数据库,则侧重于事务的处理,更适于在线的业务应用系统。
关系数据库将被代替的说法并不是在大数据兴盛时才提出的,从NoSQL的概念演变可知,最初说的是NoSQL=No SQL,即去SQL,但发展到现在它已变为了Not only SQL,成为了优势互补。
而技术的创新还在继续,随着GraphDB(图数据库)的出现和应用,也已经有人提出”Hadoop将死,图数据库成为新趋势” 11)。但是它的出现也只是面向特定的领域,为之提供擅长的解决方案,而不是用一个创新颠覆整个世界,我们要做的就是从足够丰富的技术手段中针对自己业务场景进行最适合的选择6)。
参考文档: