6种主流Nosql数据库系统对比关系型数据库Nosql目录前言什么是Nosql数据库Nosql数据库的四大分类6种主流Nosql数据库系统对比谢谢观赏前言虽然,SQL数据库是被最为广泛性应用的数据库,但今年来关系型数据库–Nosql,因为其易扩展、高性能、高可用、数据模型灵活等特色更适合互联网公司用于开发。本文就6种主流Nosql数据库系统来进行全方位的对比。什么是Nosql数据库NoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。Nosql数据库的四大分类键值(Key-Value)存储数据库这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。如Redis,Voldemort,OracleBDB.列存储数据库。这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra,HBase,Riak.文档型数据库文档型数据库的灵感是来自于LotusNotes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB,MongoDb.国内也有文档型数据库SequoiaDB,已经开源。图形(Graph)数据库图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如Neo4J。6种主流Nosql数据库系统对比Nosql数据库之CouchDBCouchDB使用的开发语言为Erlang,遵循Apache许可,使用HTTP/REST协议。主要优点是可保持数据一致性和易用性,同时允许多站部署。适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。Nosql数据库之RedisRedis使用的开发语言为C/C++,遵循BSD许可,使用Telnet-like协议。主要优点运行速度非常快。适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序,但内存占用较大。常用于股票价格、数据分析、实时数据搜集、实时通讯。Nosql数据库之MongoDBMongoDB使用的开发语言为C++,遵循AGPL(Drivers:Apache),使用Custom,binary(BSON)协议。MongoDB可在任何Mysql/PostgreSQL的环境下使用。适用于需要动态查询支持;需要使用索引而不是map/reduce功能;需要对大数据库有性能要求;需要使用CouchDB但因为数据改变太频繁而占满内存的应用程序。Nosql数据库之Riak使用的开发语言是Erlang&C、Javascript。遵循Apache,使用HTTP/REST协议。Riak优点是具有高容错性。适用于想使用类似Cassandra(类似Dynamo)数据库但无法处理bloat及复杂性的情况。适用于你打算做多站点复制,但又需要对单个站点的扩展性,可用性及出错处理有要求的情况。所以常用于销售数据录入、工控系统等一些不允许宕机的场合。Nosql数据库之Neo4j使用的开发语言为Java,遵循GPL,其中一些特性使用AGPL/商业许可,使用HTTP/REST协议。特点是基于关系的图形数据库,适用于图形一类数据。这是Neo4j与其他nosql数据库的最显著区别。常用于社会关系,公共交通网络,地图及网络拓谱。Nosql数据库之HBase使用的开发语言为Java,遵循Apache,使用HTTP/REST协议。HBase可支持高达数十亿的列。如果你喜爱BigTable并且需要一个能提供随机实时读写访问你海量数据的数据库,HBase是不错的选择。HBase现被Facebook邮件数据库所使用。谢谢观赏!