查看: 12207|回复: 20

[转载] NoSQL数据库面面观

[复制链接]
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
跳转到指定楼层
1#
发表于 2013-11-18 22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Alexey Vasiliev是一位知名的Web开发者与Linux系统管理员,曾参与开发过多个项目,如falcon、mongodb_logger、sht_rails及piro等项目。近日,Vasiliev就当前各种NoSQL数据库的优势与劣势撰文进行了详尽的分析。这些分析与比较将会对广大开发者项目的NoSQL数据库选型提供一定的帮助与指导作用。

NoSQL数据库现在已经变得非常流行了,在NoSQL这个大概念下实际上包含了大量的方式与项目,旨在实现各种数据库模型,他们与传统的关系型数据库管理系统存在着非常大的差别,而传统的关系型数据库系统是通过SQL的方式来访问数据的。在NoSQL领域中,传统观念中的模式可以通过不同的数据结构来实现,如散列表、数组、树、图等等。

术语“NoSQL”最早出现在上个世纪90年代末期,然而真正为大家所熟知则是在2009年中期。起初,它只是由Carlo Strozzi创建的一个小型开源数据库,将所有数据以ASCII文件的形式存储,并使用shell脚本而非SQL来访问这些数据。这个数据库与当前的“NoSQL”概念并没有任何相似之处。

Johan Oskarsson在2009年6月于旧金山组织了一场会议,讨论IT市场的新技术、数据存储与处理等主题。之所以会举办这场会议的主要原因在于BigTable和Dynamo等新产品的出现。“NoSQL”这个术语则是由来自RackSpace的Eric vans提出的。这个术语原本就是用在这场会议当中的,也没有什么更深层次的含义。不过最后的结果却是它迅速在互联网上蔓延开来,成为IT领域的一个新趋势。随后,Pramod J.Sadalage与Martin Fowler编写了“NoSQL Distilled”一书,旨在对日益庞大的NoSQL世界进行组织。

现在大约有150多种NoSQL数据库(nosql-database.org),下面就来探讨一下NoSQL的主要发展方向。


论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
2#
 楼主| 发表于 2013-11-18 22:26 | 只看该作者
列簇存储

面向列的DBMS是这样一种数据库管理系统,它将数据表存储为数据列而非行的形式。从物理上来说,表是列的集合,每一列从本质上来说都是只有一个字段的表。这些数据库通常用于分析系统、商业智能与分析型数据存储。

优点:
1) 可以比较数据,因为在表的一列中,数据通常都是同种类型的。
2) 可以通过便宜、性能一般的硬件实现高速的查询性能;由于压缩的原因,相对于关系型数据库来说,这种方式磁盘上的数据所占据的空间要少5到10倍。

缺点:
1) 通常没有事务。
2) 对于熟悉传统RDBMS的开发者来说存在不少限制。

典型代表:
1) HBase
2) Cassandra
3) Accumulo
4) Amazon SimpleDB

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
3#
 楼主| 发表于 2013-11-18 22:27 | 只看该作者
键值存储

你可以通过这种数据库将键值对存储到持久化存储中,随后使用键来读取值。那么对于这种初看起来用途非常有限的解决方案来说有哪些好处呢?在根据键来保存/读取值时,系统是非常高效的,因为它没有SQL处理器、索引系统以及分析系统等诸多限制。这种解决方案提供了最高效的性能,代价最低的实现以及可伸缩性。

优点:
1) RDBMS太慢了,SQL游标的负担过于沉重。
2) 采用RDBMS的解决方案来存储少量数据的代价有些大。
3) 没必要使用SQL查询、索引、触发器、存储过程、临时表、表单以及视图等等。
4) 由于其轻量级的设计,键值数据库可以很容易实现可伸缩性以及高性能。

缺点:
1) 关系型数据库的限制可以从底层就确保数据的完整性,而键值存储就没有这些限制,数据的完整性是由应用来控制的。在这种情况下,数据的完整性可能会由于应用代码的错误而做一些妥协。
2) 在RDBMS中,如果模型设计良好,那么数据库的逻辑结构就能完全反映出存储数据的结构,并且与应用的结构有所不同(数据是独立于应用的)。对于键值存储来说,要想取得这种效果是非常困难的事情。

典型代表:
1) Amazon DynamoDB
2) Riak
3) Redis
4) LevelDB
5) Scalaris
6) MemcacheDB
7) Kyoto Cabinet

使用道具 举报

回复
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:42:48
4#
发表于 2013-11-19 14:14 | 只看该作者
不全啊

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
5#
 楼主| 发表于 2013-11-19 15:17 | 只看该作者
文档存储

文档存储指的是用于存储、搜索与管理面向文档的信息(半结构化数据)的程序,其中心概念就是文档。具体的面向文档数据库的实现是不同的,不过总的来说,他们都会以各种标准化格式对数据(文档)进行封装与加密,主要格式有XML、YAML、JSON、BSON、PDF等等。

优点:
1) 足够灵活的查询语言。
2) 易于水平扩展。

缺点:
在很多时候原子性是得不到保障的。

典型代表:
1) MongoDB
2) Couchbase
3) CouchDB
4) RethinkDB

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
6#
 楼主| 发表于 2013-11-19 15:18 | 只看该作者
图型数据库

图型数据库指的是使用图结构的数据库,通过结点、边与属性来表示和存储数据。根据定义,图型数据库是一种提供了无需索引而彼此邻接的存储系统。这意味着每个元素都包含了直接指向邻接元素的指针,因此没必要再通过索引进行查找了。

优点:
1) 对于关联数据集的查找速度更快。
2) 可以很自然地扩展为更大的数据集,因为他们无需使用代价高昂的连接运算符。

缺点:
RDBMS可以用在更为通用的场景下,图型数据库只适合类似于图的数据。

典型代表:
1) Neo4j
2) FlockDB
3) InfoGrid
4) OrientDB

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
7#
 楼主| 发表于 2013-11-19 15:18 | 只看该作者
多模数据库

这些数据库包含了多种数据库的特性。

有两种不同的产品分组可以认为是多模的:
1) 支持多种数据模型和用例的多模数据库。 比如说,ArangoDB宣称它拥有键值存储的好处,同时还提供了面向文档以及图型数据库的支持。
2) 支持多种模式的通用目的的数据库。 比如说,Oracle的MySQL 5.6支持SQL方式的访问,也可以通过Memcached API实现键值访问。

典型代表:
1) ArangoDB
2) Aerospike
3) Datomic

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
8#
 楼主| 发表于 2013-11-19 15:20 | 只看该作者
对象数据库

数据库中的数据都建模为对象、属性、方法以及类。面向对象的数据库通常适合于需要高性能数据处理的应用,这种应用一般都有非常复杂的结构。

优点:
1) 相比于关系元组来说,对象模型最适合于展现现实世界,对于复杂、多方位的对象来说尤为如此。
2) 使用层次特性来组织数据。
3) 访问数据时并不需要专门的查询语言,因为访问是直接面向对象的。然而,有时也是需要使用查询的。

缺点
1) 在RDBMS中,由于表的创建、修改或是删除而导致的模式修改通常并不依赖于应用。在使用对象数据库的应用中,模式修改类通常意味着还要对与当前类关联的其他应用类进行修改。这会导致对整个系统进行修改。
2) 对象数据库通常会通过单独的API与特定的语言绑定,只有通过该API才能查询数据。在这方面,RDBMS就做得很好,这要归功于它所使用的通用查询语言。

典型代表:
1) VelocityDB
2) Objectivity
3) ZODB
4) Siaqodb
5) EyeDB

使用道具 举报

回复
论坛徽章:
2
设计板块每日发贴之星
日期:2009-01-24 01:01:14ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:37
9#
发表于 2013-11-19 23:24 | 只看该作者
太好了,正在系统学习Nosql!

使用道具 举报

回复
论坛徽章:
4752
季节之章:冬
日期:2019-07-13 22:29:26季节之章:春
日期:2019-07-13 22:29:26季节之章:夏
日期:2019-07-13 22:29:26季节之章:秋
日期:2019-07-13 22:29:26嫦娥
日期:2019-08-03 07:05:29玉石琵琶
日期:2019-08-03 08:17:02铁扇公主
日期:2019-08-03 21:12:36九尾狐狸
日期:2019-08-05 21:05:25玉石琵琶
日期:2019-08-06 06:36:05玉兔
日期:2019-08-06 16:05:50
10#
发表于 2013-11-20 07:43 来自手机 | 只看该作者
学习。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表