Ø VoltDB是基于内存的关系型数据库,其采用NewSQL体系架构,既追求与NoSQL体系架构系统具有相匹配的系统可展性,又维护了传统关系型数据库系统的事务特性和SQL语言访问特性,在执行高速并发事务时比传统的关系型数据库系统快45倍。
Ø MemSQL有符合ACID特性的事务处理功能、SQL兼容性以及高度优化的SQL存储引擎,提供了与MySQL相同的编程接口,但速度比MySQL快30倍。
Ø 还有一些在云端提供存取服务的NewSQL数据库(亦可称为云数据库),例如Amazon RDS和Microsoft SQL Azure。
1.2.3 大数据处理模式
大数据具有数据体量大、产生速度快的特点,因而传统的单机串行处理模式往往难以完成对大数据的高效处理,必须借助并行分布式处理方法。根据大数据应用类型的不同,大数据处理模式分为批处理(Batch processing)和流处理(Stream processing)两种。下面以Apache的Hadoop和Storm为例分别介绍批处理和流处理的典型处理模式。
1. 分布式批处理模式的代表——Hadoop
批处理则是对数据先存储后统一处理。Hadoop是一个由Apache基金会用Java语言开发的开源分布式批处理架构,其中实现了MapReduce批处理编程模型。Google公司在2004年提出的MapReduce编程模式是最具代表性的分布式数据批处理模式。
MapReduce模型包含三种角色:Master进程、Map进程和Reduce进程,其中Master进程负责任务的划分与调度,Map进程用于执行Map任务,Reduce进程用于执行Reduce任务。该模型的主要思想是Master进程把大规模的数据划分成多个较小的部分,分别映射到多个Map进程进行并行处理得到中间结果,之后由Reduce进程对这些中间结果进行规约、整理,进而得到最终结果,如图1.4所示。
一个MapReduce作业(MapReduce Job)的执行流程如下:
(1)首先从用户提交的程序创建出Master进程,Master进程启动后划分任务并根据输入文件所在位置和集群信息选择机器创建出Map进程或Reduce进程;
(2)Master进程将划分好的任务分配给Map进程和Reduce进程执行,任务划分和任务分配可以并行执行;
(3)Map进程执行Map任务,即读取相应的输入文件,根据指定的输入格式不断地读取<key, value>对,并对每一个<key, value>对执行用户自定义的Map函数;
(4)Map进程不断往本地内存缓冲区输出中间<key, value>对结果,等到缓冲区超过一定大小时写入到本地磁盘中,Map进程将中间结果组织成文件,便于后续Reduce进程获取;
(5)Map任务执行完成后向Master进程汇报,Master进程进一步将该消息通知Reduce进程。Reduce进程向Map进程请求传输生成的中间结果数据,当Reduce进程获取完所有的中间结果后,需要进行排序操作;
(6)Reduce进程执行Reduce任务,即对中间结果的每一个相同的key及value集合,执行用户自定义的Reduce函数,Reduce函数的输出结果被写入到最终的输出文件。
除了使用MapReduce批处理编程框架,Hadoop的核心内容还包括HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)。
HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合处理大规模数据集的应用程序。
Hadoop的优点包含以下几个方面:
(1)方便部署。Hadoop可以方便部署在由一般商用机器构成的大型集群或者云计算服务之上。
(2)容错健壮。即使集群中的计算机硬件频繁出现失效,Hadoop也能够处理大多数此类故障。
(3)容易扩展。Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据集。
(4)使用简单。Hadoop允许用户快速编写出高效的并行代码。
(5)免费、开源。Hadoop是一款开源批处理框架,可以免费使用。
Hadoop的典型应用包括网络搜索、日志处理、推荐系统、数据分析、视频图像分析和数据集成等。
2. 分布式流处理模式的代表——Storm
和先存储再处理的批处理模式不同,流处理将源源不断产生的数据视为数据流,每当新的数据到达系统时就立刻对数据进行处理并返回结果。可见,流处理适合包括网页点击数统计、股票交易数据分析和传感器网络事件检测等实时分析应用。Apache Storm是一个免费、开源的分布式实时流处理系统。Storm在流处理中的地位相当于Hadoop对于批处理的重要地位。