《Survey on NoSQL Database》翻译

来源:互联网 发布:ug线切割编程教程 编辑:程序博客网 时间:2024/05/22 01:30

Survey on NoSQLDatabase

 

摘要

随着互联网和云计算的发展,越来越要求数据库能够高效地存储和处理大规模数据,特别是读写的性能,因此,传统的关系数据库正面临许多新挑战。特别是在大规模,高并发应用程序中,诸如搜索引擎和SNS,使用关系数据库来存储和查询动态用户数据已经显得不够。在这种情况下,NoSQL数据库诞生了。本文描述了NoSQL的背景,基本特征以及数据模型。另外,本文根据CAP理论对NoSQL数据库进行了分类。最后,本文详细介绍了一些主流的数据库,并且提取一些属性,以帮助企业选择NoSQL

 

1.  介绍

随着互联网和云计算的不断发展,各种类型的应用已经出现,这对数据库技术提出了更多的需求,主要体现在一下几个方面:

l  高并发,低延迟的读写

数据库被需求高并发,低延迟的读写,与此同时,为了大大提升客户体验,也要求数据库去帮助应用做出更快的反应。

l  高效的大数据存储和访问需求

像SNS和搜索引擎之类的大的应用,需要数据库能够有效的存储数据(PB级别),并且可以对数以百万计的查询作出反应。

l  高扩展性和高可用性

随着越来越多的并发请求和数据,数据库需要能够支持容易扩展和升级,确保快速不间断的服务。

l  降低管理和运营成本

随着数据量的动态的增长,数据库成本的急剧增加,包括硬件成本,软件费用和运营成本。因此需要低成本存储大数据。

 

虽然关系数据库已经在数据存储领域占据很高的位置,但面对上述问题时,它有一些固有的局限性:

l  读写太慢

关系数据库本身具有一定的逻辑复杂性,随着数据规模的增加,很容易出现死锁和其他并发问题,这导致了读写效率的快速下降;

l  容量有限

传统的关系型数据库不能处理搜索引擎,SNS或大系统中的数据。

l  难于扩展

关系数据库中的多表关联机制成为制约数据库扩展的主要因素。

 

  为了解决上述传统数据库遇到的问题,一大批新型的数据库系统出现了。大体上看,这些新的数据库跟传统的数据库系统有着很大的区别,我们把他叫做NoSQL数据库。NoSQL也被解释为“NOTONLY SQL”,以说明NoSQL的优势。介绍完背景之后,我们将注意力集中在NoSQL数据库的优势和缺点上。

 

 

 

2.  特征,数据模型和分类

2.1NoSQL的特征

NoSQL的主要优点有如下方面:

1)  快速读写数据

2)  支持大容量存储

3)  易于扩展

4)  低成本

同时,NoSQL也有一些不足之处,比如不支持业界的SQL标准,缺乏事务支持,缺乏报告及其他额外特征,绝大部分近年诞生的NoSQL数据库系统仍然不够成熟。上述的NoSQL数据库的特点是常见的,在现实中,每个产品符合不同的数据模型和CAP定理。因此,我们将要介绍NoSQL数据库的数据模型,然后根据CAP定理将NoSQL进行分类。

 

2.2数据模型

传统数据库的数据模型,主要是关系,特别是支持连带类操作和ACID事务,但在NoSQL中,主流数据模型如下:

2.2.1  键值模型

键值的数据模型意味着值对应于键,尽管这种结构很简单,但是其查询速度要远高于关系型数据库,并且支持大规模和高并发。通过主键对数据的查询和修改操作也能够很好的支持。

2.2.2  面向列

列数据库使用表作为数据模型,但是不支持表的关联。面向列的数据库有以下几个特征:

1)  数据以列存储,即将数据按列分别存储;

2)  数据的每一列都是数据库的索引;

3)  只访问查询涉及到列,以减小系统的I/O

4)  并发进程的查询,即,每一列由一个进程处理;

5)  每列具有相同的类型的数据,有类似的特性和良好的压缩比

总的来说,该数据模型的优点在于它更适用于基于聚合和数据仓库的应用。

2.2.3  文件

文件和键值模型在结构上非常的相似,但是文件数据库的值是带有语义的,通常以JSON或者XML格式存储。另外,文件数据库可以建立一个辅助索引以方便上层应用程序,但是键值数据库不能做到这点。

 

 

2.3CAP理论和数据库分类

2000年Eric Brewer教授提出著名的CAP理论。CAP分别指的是:一致性(Consistency),可用性(Availability)和网络分区容忍(tolerance of networkPartition)。CAP理论的核心思想是分布式系统不能同时满足以上3个方面,最多同时满足其中的两点。

根据CAP理论和对于NoSQL系统的不同关注点,可以对NoSQL数据库做一个初步的分类,如下所示:

l  关注一致性和可用性(CA)

部分数据库不关注分区容忍性,它们主要使用复制的方法来确保数据的一致性和可用性。属于CA的系统有:传统的关系型数据库,Vertica(面向列),Aster Data(关系型),GreenPlum(关系型)等等。

l  关注一致性和分区容忍性(CP)

这样的数据库系统将数据存储在分布式节点当中,并且保证这些数据的一致性,但是对于可用性的主持做得不够好。主要的CP系统有:BigTable(面向列),HyperTable(面向列),HBase(面向列),MongoDB(文件),Terrastore(文件),Redis(键值),Scalaris(键值),MemcacheDB(键值),BerkeleyDB(键值)。

l  关注可用性和分区容忍性(AP)

这种系统主要通过实现一致性,确保可用性和分区容忍性,AP系统有:Voldemort(键值),Tokyo Cabinet(键值),KAI(键值),CouchDB (文件),SimpleDB(文件),Riak(文件)。

 

 

3.  主流NoSQL数据库系统

3.1键值数据库

3.1.1  Redis

Redis是一个非常新的项目,有如下几个特征:

1)  Redis是一个键值存储的数据库:当Redis运行的时候,数据都被加载到内存当中,因此所有的操作都是在内存当中完成的,然后周期异步的将数据保存到磁盘上。这种纯内存的操作使得Redis有着优异的性能。Redis能够在1s内同时处理一百万读写操作。

2)  Redis支持List和Set还有许多相关的操作。

3)  最高值限制1GB;

4)  Redis最大缺点是数据库的大小受制于物理内存的大小,因此Redis不能够处理大规模数据,它的可扩展性较差。

因此,Redis适用于那些小规模数据的处理,并且有较好的性能。

3.1.2  Tokyo Cabinet- Tokyo Tyrant

TC和TT由Mikio Hirabayashi开发,主要用在日本最大SNS网站mixi.jp ,这两个系统已经发展的较为成熟了。TC是一款高性能存储引擎,而TT提供多线程高并发服务器,它可以处理4-5万次每秒读写操作。TC保证了高性能高并发读写,而且使用可靠的数据持久化机制。TC不仅仅支持键值,而且支持类似关系型数据库中hashtable,另外,还支持简单操作,如like条件查询,分页和排序操作。

TC最大的缺点是当数据量增长到十亿级别的时候,并发写的性能会急剧下降。

3.1.3  Flare

Flare是由日本第二大SNS网站green.jp开发。Flare比TC要强,因为它延伸了数据库的可扩展性。Flare添加了一个node server去管理data server,因此,用户可以动态的添加删除data server,并且也提供了一定的容错性。然而,Falre仅支持memcached协议,当使用Flare的时候,我们不能使用TC的表数据结构,只能够使用TC的键值数据结构。

 

3.2列数据库

虽然现在面向列的数据库还没有颠覆传统的面向行的数据库,但是在以数据压缩,无共享,大规模并行处理的架构下,列数据库仍可以保持数据分析能力和商业智能处理的高性能。面向列的数据有HBase,耶鲁大学的HadoopDB,Facebook的Cassandra,Hypertable,Google的Bigtable和Yahoo的Punts等等。

3.2.1  Cassandra

Cassandra是facebook的开源数据库。

它有如下特点:

1)  数据库模式是非常灵活的,并且不需要提前设计数据库的模式,非常便于添加或删除字段。

2)  支持范围查询,也就是说查询某个范围的键值

3)  高扩展性,单点故障不会影响整个集群提供服务,能够支持线性扩展。

Cassandra是一个分布式数据库系统,它由许多分布式数据库节点组成,一个写操作能够复制到其他节点当中,读请求也能够路由到中心节点上。对于一个Cassandra集群,添加节点可以实现可扩展性的目标。另外,Cassandra还支持丰富的数据结构和强大的查询语言。

3.2.2  Hypertable

Zvents 搜索引擎仿照Bigtable开发了开源的分布式存储系统Hypertable。这个系统被设计成包含1000个节点,能够部署在HDFS或者KFS上。虽然Hypertable的仍处于处于起步阶段,但表现并不差:当往Hypertable中写入28M的列数据时,它的写入速度能够达到7MB每秒,读的速度能够达到1M cell每秒。然而,并没有许多高负载,大存储量的应用使用Hypertable。

3.3文件数据库

3.3.1  MongoDB

MongoDB是一个介于传统数据库和非关系型数据库之间的数据库产品,它的特征如下:

1)  它是一个非关系型数据库,却有着最像关系型数据库的特征;

2)  支持复杂的数据类型:MongoDB支持存储复杂数据类型的bjson数据结构;

3)  强大的查询语言:它几乎支持所有传统关系型数据库中单表上的功能型查询,而且能够支持索引。

4)  高速访问海量数据:当数据规模超过50GB的时候,MongoDB的访问速度是MySQL的速度的10倍。

正是由于以上的因素,有很多数据量正在增长的项目正考虑使用MongoDB代替传统的关系型数据库。

3.3.2  CouchDB

Apache CouchDB是一个可伸缩的,支持容错的数据库,它能够支持JSON和AtomPub格式,提供REST风格的API。为了保证数据的一致性,CouchDB提供P2P为基础的支持双向复制的分布式数据库解决方案。然而,CouchDB也有一些缺陷,比如说仅仅提供一个基于Http REST的接口,并发读写性能不理想等等。

4 结论

基于以上对于主流NoSQL数据库的分析,商业公司决定使用NoSQL的时候,它需要考虑如下因素:商业模型,ACID事务的需求,成本以及其他的需求。

此外,还要从以下几个方面:

l  数据模型

l  CAP支持

l  多数据中心支持

l  容量

l  性能

l  查询接口

l  可靠性

l  数据持久

l  平衡性

l  商业支持

本文首先描述了NoSQL的背景,再明白既存应用的需求和传统数据库的限制之后,可以更好的分析NoSQL数据库的优点和缺点。根据NoSQL的特点,总结NoSQL数据库的数据模型。简单介绍了CAP理论之后,根据CAP理论对NoSQL数据库作了一个分类。最后依据数据模型,介绍了当前主流的NoSQL数据库,客观的分析了他们长处和缺点,这会更好地帮助用户选择使用什么样的数据库系统。然而,NoSQL数据库也有许多局限性,在云计算中使用NoSQL技术的思想也不够清晰。我们仍然会在这两个方面加强研究。


[原文] 点击打开链接 

http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6106531

0 0
原创粉丝点击