成都理工大学 雷宇辉 钟 雯 何 清 唐曼玲 刘超英
Nosql数据库研究文献综述
成都理工大学 雷宇辉 钟 雯 何 清 唐曼玲 刘超英
随着拥有海量数据写入的Web 2.0网络应用的兴起以及用户需求和现代硬件要求的提高,在传统关系型数据库因为自身限制而无法解决动态数据处理、实时数据插入等诸类问题的背景下,Nosql数据库毫无疑问成为解决此类办法的热门议题之一。
Nosql;web2.0;传统关系式数据库
1969年,Edgar Frank Codd首次提出了关系数据库模型的概念。关系型数据库以拥有较高事物可靠性的特点在各个行业中得到广泛运用。如果从web2.0网站的角度看关系型数据库,它的许多特征将无用武之地,因为传统关系型数据库不能完全负荷海量数据写入的web2.0网站。同时,关系型数据库难以进行横向扩展,当我们需要对数据进行增加、查找、删除等操作时,有时需要停机更改数据表结构,无法动态进行数据库数据变更操作。关系型数据库需要分析提出的SQL操作请求,再根据请求找到并解锁相关的数据表,与Nosql数据库相比,增加了一些多余的步骤。
Nosql,是指not only sql,运用非关系式的方法解决传统数据库无法解决的问题,而并非要取代现在广泛应用的传统关系式数据,。Nosql遵守CAP原则和BASE思想,CAP原则,指的是在分布式系统中,只可以同时满足Consistency(一致性)、Availability(可用性)、Tolerance(区分容错性)其中的两种要求,不能三种兼顾,因此,不同的Nosql数据库会根据自身的开发目的选择满足哪些要求,比如,Mongodb满足CP要求。BASE是基本可用(Basically Available)、软状态(Soft state)、最终一致性(Eventually consistent)三个术语的缩写,基本可用性是指在分布式系统出现故障时,同意系统部分失去可用性,保证核心部分的可用性,软状态是指同意系统不同节点同步有延时,最终一致性系统所有数据在最后能达到一致的状态的性能。大部分Nosql数据库都遵循BASE思想,舍去高一致性得到可用性和可靠性。
Nosql数据库种类繁多,如果只用一个Nosql标签来代表所有Nosql数据库就太笼统了,比如memcached和mongodbt这两种数据,尽管在都是Nosql数据库的同类比较下彼此也会显示出很大的区别,所以,Nosql数据库大致可以分为以下几类:
键值型数据库,该数据库会使用哈希表,数据以键值的形式存放,一个或多个键对应一个值。键值型数据库处理速度最快,但是必须通过匹配完全一致的键查询数据。
列存储数据库,以列为单位存放数据。目前大部分关系型数据库是以行为单位存放数据,当面对大量数据时,以行为单位的数据库操作会更加困难,写入速度降低。对以列存储的数据库来说,可以对大量数据进行读取,具有高扩展性,但因为思维方式与传统型数据库多有不同,应用困难。
文档型数据库,将数据封装存储到未严格定义的以JSON、XML等类型的文件中,虽然它与键值型数据库有相似点,每个文档存储一个或多个键值,但不同的是,其中值可以是文件类型。在文档型数据库中,即使没有提前定义数据表结构,也可以继续使用。键值型数据库必须通过匹配完全一致的键查询数据,文档型则可以通过复杂的查询条件进行操作。但是文档型数据库没有事务处理能力。
图形数据库,起源于欧拉公式和图论,应用图论的节点、关系、属性三个基本要素存放数据之间的关系信息,将点、线、面等基本图形元素按照一定结构排列的数据集合,在此类数据库中,程序员可以任意添加属性、节点、关系且不影响系统的初始状态,适用于处理复杂的、相互交叉的数据,解决复杂的图形问题。
4.1 高速响应的键值数据库memcached
memcached,是LiveJournal旗下的Danga Interactive公司开发的一款软件,适用于需要频繁访问的、共享数据的分布式系统。Memcached中mem代表memory(内存),cached代表缓存,它是高性能分布式内存缓存服务器,通过缓存服务器查询结果减少数据库访问次数,有效提高了动态web的响应速度,同时它也是一个高性能开源分布式内存对象缓存系统,mem-cached数据库的加载均在内存中进行,在动态中减少数据库负载提升性能。Memcached利用网络连接方式完成服务,可在高并发条件下迅速响应操作需求。Memcached将数据保存到内存当中,虽然是数据写入、读出非常快,但是当Memcached停止工作时,比如,操作超出内存容量等情况时,数据容易丢失。
4.2 高存储量的列存储数据库Hbase
Hbase,即Hadoop Database,是一个高性能、面向对象、分布式、面向列的开源数据库。在Hbase中主要以下两个主要概念,Row key和Column Family ,Row key用于检索数据,Column Family 是指列族且必须在Hbase表使用前定义。Hbase表可以存储上千万个行、支持列的独立搜索并且 null列不占据存储空间。Hbase有以下物理模型,Region、HLog、Store、客户端更新操作流程、Hmaster。当Hbase中数据达到一定程度,数据库将对数据水平切割并存储到多台服务器中去,不同用户来访时,会根据访问数据的不同将用户分配至相应的服务器中,有效提高了数据库访问性能。Hbase的数据和日志均存储在Hadoop 分布式文件系作为文件存储系统中,即使在应用过程中服务器停止服务,数据、日志均不会丢失。但是,Hbase只能按照Row key查询,并且当master停止工作时,整个系统过停止。
4.3 灵活、可扩展的文档型数据库Mongodb
Mongodb来源于humongous英文单词中间部分意为巨大的,可以看出Mongodb的主要目的是在于处理包含“大量”的操作,比如大量数据的存储,大量数据的写入等。Mongodb将传统关系型数据库中“行”替换成“文档”,它可以运行在Windows、linux、OSX等系统上, Mongodb还提供了多种编程语言支持,比如java、php、c#等。
在mongodb中,一个数据库由一个或多个集合组成,一个集合则由一个或以上的文档组成,其中集合可以看做是传统关系型数据库中的数据表。以文档存储可以在单独的记录中表示复杂的关系,存储文档内嵌对象以及数组等面向对象的数据类型。mongodb中,文档以二进制的JSON格式存储即BSON格式,支持二进制数据或大型数据的存储,轻巧、高效、灵活。Mongodb也支持在多个服务器中自动分片技术,在一群节点中按水平比例分割文档集,使负载均衡,使其拥有更高的读取速度,也可以避免程序员考虑扩展问题。同时,mongodb提供了主从式和副本集两种复制方式,在副本集中,所有节点都是彼此的备份节点,没有单点故障,可用于备份、故障修复、读扩展等。
4.4 高性能的图引擎Neo4j
Neo4j是基于Java的高性能的图形数据库,对比与传统关系型数据库,Neo4j将数据从数据表转移存储到图中。一个图包含节点和关系两种数据类型,节点通过关系相连形成关系型网络结构。Neo4j具备健壮数据库的所有特性,是高性能的图引擎,在图中,节点可以任意增加、删除、修改,适用于半结构化数据存储,解决其浪费内存问题。Neo4j,根据深度遍历接口,可以以相同的速度遍历边和节点,解决了拥有大量连接的传统RDBMS在查询时出现的性能衰退问题。
传统关系型数据库和NoSQL数据库的关系是互补的,对于这两类数据库,我们需要做到因人而异、因事而异、因时而异,通常情况下可以使用关系型数据库,但对于其不擅长的领域,则可以使用NoSQL数据库弥补不足。
[1]范凯.NoSQL数据库综述[J].程序员,2010(6):76-78.
[2]申德荣,于戈,王习特,等.支持大数据管理的NoSQL系统研究综述[J].软件学报,2013(8):1786-1803.
[3]陈莉莹,双锴.NoSQL数据库综述[J]. 2012.
[4]吾木提·那合曼.NoSQL数据库综述[J].电子世界,2015(17): 146-147.
[5]佐佐木达也罗勇.NoSQL数据库入门[M].人民邮电出版社,2012.
[6]蕭毅,劉景豊,林威廷,黃奕欽,蔡慶堂,雲端分散式資料庫技術之介紹-以MongoDB為例[J].電信研究雙月刊,第42卷第2期,281-294,2012.
[7]霍多罗夫.MongoDB权威指南[M].人民邮电出版社,2014.
[8]Jeelani Ahmed⋆, Raafiya Gulmeher. NEW TREND OF DATABASES,EMERGING REASONS,CLASSIFICATION AND SECURITY ISSUES[J]. International Journal of Engineering Sciences & Research Technology, Volume 30; 4(6): 176–184.
[9]Sharma S,Shandilya R,Patnaik S,et al.Leading NoSQL Models for Handling Big Data:A Brief Review[J].International Journal of Business Information Systems,2015.