浅谈Nosql数据库Word格式文档下载.docx
《浅谈Nosql数据库Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《浅谈Nosql数据库Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
换句话说,NoSQL并不单指一个产品或一种技术,而是指那些非关系性的、非结构化的数据、定义不是很明确的数据存储形式。
(二)NoSQL发展历史
最近几年,NoSQL这一概念倍受追捧,但通过查询了解到,NoSQL其实不是一个新概念。
经过考证NoSQL这个词最早出现在1998年,是在CarloStrozzi开发的一个基于文件的数据库系统中被提出来的。
但是他开发的这个数据库系统还是一个关系型数据库,只是没有面向SQL语言的接口而已。
推测他起名为NoSQL的原因无非是他的数据库系统是无需SQL接口的SQL数据库而已。
较真的说,CarloStrozzi的数据库系统并不能算作现在NoSQL的起源。
在2009年,NoSQL被EricEvans再次引用,用于描述不依赖于SQL技术的数据存储,这也是我们目前对NoSQL概念的普通认识。
其实,非关系型数据库技术及应用的发展还可以追溯到更早。
下面表1展示了非关系型数据库的发展过程。
数据库名称
发行年代
发行商
特点
备注
DBM
1979年
AT&
T
基于文件
hash的数据库
TDBM
20世纪80年代
支持原子性事务操作
NDMB
支持同时打开多个数据库
SDBM-DBM
为了解决DBM的发行版问题
GT.M
提供高效的事务处理
真正意义上的key-value存储
BerkeleyDB
Sleepycat
4.3BSD、4.4BSD的过渡版本
被Oracle收购
LotusNotes
1989年
IBM
真正意义上的文档数据库系统
已经完全演化成了一个办公协作套件
Mnesia
20世纪90年代
Ericsson
不支持SQL查询而是依赖于自身的Erlang语言
一个软实时的数据库系统,并被于用电信行业
Neo4j
2000年
一个高性能的图引擎
开始启动
db4o
面向java和.net的对象数据库系统
QDBM
MikioHirabayashi
DBM的又一个实现版本,他比QDBM更高效
Memcached
2003年
Danga
内在式存储
用于支持Livejournal
Memcachedb
支持文件存储
Memcached的更新版本
BigTable
2004年
Google
分布式数据存储系统
2006年发布了其研究文章
Infogrid
2005年
一个post关系web应用程序的平台
2008年开源
JackRabbit
2006年
Apache
基于JSR170和283的实现
TokyoCabinet
QDBM的一个成功典范
Dynamo
2007年
Amazon
一款可用的分布式Key-Value存储系统
2007年发行研究文章
CouchDB
2008年
Erlang
一个文档数据库系统
核心思想来源LotusNotes
Voldemort
Facebook
一个分布式数据库系统,他能有效的防止并点故障
Dynomite
2009年
Dynamo的实现
Terrastore
一个扩展性很强的文档存储系统
Redis
VMware
一个基于key-value的存储系统
Riak
支持多节点构建的系统
HBase
BigTable的克隆版本
被用在Hadoop分布式文件系统的实现中
Hypertable
一个开源、高性能、可伸缩BigTable类型的数据库
Vertexdb
一个graph数据库系统
表1
三、NoSQL发展现状及分类
(一)NoSQL发展现状
随着Web2.0的不断发展,各种和用户互动的应用层出不穷,特别是在这个大数据、云计算时代,迫使对数据存储和检索技术提出了更高的要求。
虽然关系型数据库已经在数据存储方面占据不可动摇的地位,但是由于其存在扩展困难、读写慢、成本高、有限的支撑容量等瓶颈,使其很难满足现阶段和未来爆炸式数据量和快速的存储、检索等需求。
NoSQL数据库的出现迎合了上面提出的几个需求,在设计上,NoSQL非常关注对数据高并发地读写和对海量数据的存储等,与关系型数据库相比,他们在架构和数据模型方面做了一些删减,而在扩展和并发等方面做了补充。
云计算和大数据时代的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状。
现在国内外致命的互联网公司都在大量应用NoSQL,例如:
Google应用的是BigTable;
Amazon应用的是Dynamo;
新浪应用的是Redis;
淘宝应用的是Oceanbase等。
(二)NOSQL分类
目前,NoSQL经过多年的发展,可以将众多的NoSQL数据库按照内部的数据组织形式进行如下分类:
面向列的NoSQL数据库:
Accumulo,Cassandra,Druid,Hbase。
面向文档的NoSQL数据库:
Clusterpoint,ApacheCouchDB,Couchbase,MarkLogic,MongoDB。
Key/Value的NoSQL数据库:
Dynamo,FoundationDB,MemcacheDB,Redis,Riak,FairComc-treeACE,Aerospike。
面向图的NoSQL数据库:
Allegro,Neo4J,InfiniteGraph,OrientDB,Virtuoso,Stardog。
四、NoSQL发展前景
(一)NoSQL的优点
1、灵活的数据模型
传统的关系型数据库,在存储数据库前必须对数据进行分析,建立数据表,并且确定表里的各个字段类型等。
但是往往一个应用随着时问的推移,需求有可能发生改变,即数据模型将发生改变。
然而,在一个成熟的应用且数据量庞大的数据库更改数据模型是令人头疼的事情。
可能仅仅是为了增加一个字段,或者修改一个字段的类型,都需要付出停机或者降低服务级别的代价。
NoSQL数据库从设计上打破了这种数据模型的限制。
在NoSQL数据库中,数据单元一般没有模型的限制,所以允许在一个数据单元中存入其想要的任何结构的数据。
2、弹性扩展
随着数据库的负载增加,关系型数据库的管理员一般采用向上扩展的方式提高性能。
即购买性能更好的服务器代替旧服务器,这针对负载缓慢增加的情况是较有效的。
然而负载可能一直增加,不可能每次都更换服务器。
这样,水平扩展的思想被提出来,把负载均衡的分到小同的主机上。
关系型数据库提供了水平扩展的功能,但对程序来说是半透明的,在水平扩展的时候,会大量的修改程序,甚至会停服。
NoSQL数据库在设计之初就考虑到了水平扩展,它对程序来说是透明的,可以随时添加节点,删除节点。
3、经济性
传统的关系型数据库通常被部署在价格比较高昂的高性能机器上,甚至是专用硬件上。
在云计算和大数据时代,数据量成爆炸式指数增长,采用关系型数据库的云提供商为了提供可靠的服务不得不大量采购昂贵的机器。
而NoSQL数据库通常使用廉价服务器集群来管理暴增的数据与事务规模。
廉价服务器集群的方案,相对高性能机器的RDBMS的集群有更多的数据节点,提供了更廉价、更可靠、更多备份的服务。
(二)NoSQL的缺点
1、不提供对SQL的支持
传统的关系型数据库已经存在了30多年了,经过实践的证明,关系型数据库满足了过去30年来的软件需求。
现阶段大部分企业仍以关系型数据库为存储工具,而NoSQL数据不支持SQL,造成企业从关系型数据库转向NoSQL数据过程中代价和所冒的风险太大。
2、缺乏商业支持
关系型数据库有着强大的商业支持。
Oracle、Microsoft和IBM等世界级的数据库厂商提供了完善的服务。
相比而言,大部分的NoSQL数据库都是开源项目,虽然也有一些商业公司的支持,但支持的效果小可预计。
如果出现故障,通常只能自己解决。
(三)NoSQL的未来
NoSQL数据库的崛起标志唯关系型数据库独大时代即将终结,但是关系型数据库依然会生存下去。
正如当今世界中美关系一样,虽然中国的经济总量正在逐渐地超过美国在不远的未来成为世界第一,但不可能成为新时期的霸主,而是要不断的和美国加强合作。
在大数据和云计算盛行的新时代,NoSQL数据库俨然成为了数据库领域中不可或缺的一部分,它正在弥补着关系型数据库在某些应用中的不足,但是他也并非万能,只有进一步和关系型数据库相结合使用,互相弥补短板,才能发挥出更高的效能。
五、参考文献
[1]卢冬海,何先波,浅谈NoSQL数据库,西华师范大学计算机学院,四川南充637002。
[2]李莉莎,关于NoSQL的思考,中国传媒科技前沿,2010年第4期。
[3]高源,NosQL非关系型数据库的发展和应用研究,武汉职业技术学院计算机学院。
[4]企业软件,NoSQL难以接受的七个真相,网络世界,2012年8第042版。
[5]谢然,中国有哪些公司在做大数据,联网周刊,2014年。
[6]NoSQL诞生的原因和优缺点,CSDN博客,
[7]NoSQL数据库渐入佳境国内应用案例盘点,IT168技术开发,
[8]NoSQL,维基百科,http:
//zh.wikipedia.org/zh/NoSQL。