• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

Redis、MongoDB、BerkeleyDB、Memcached等NoSQL数据库总结

JAVA web前端中文站 2年前 (2017-11-12) 714次浏览 已收录 0个评论

随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,于是 NoSQL 就应用而生。目前常用的NoSQL数据库有 10 种(?Cassandra、Mongodb、CouchDB、Redis、?Riak、Membase、Neo4j、memcached、BerkeleyDB 和?HBase),本文将介绍它们各自的特点,共各位架构师在项目开始时就选择好一个适合的NoSQL 数据库

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

NoSQL数据库一度成为高并发、海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机。由于每种产品所拥有的特征不同,因此它们的应用场景也存在着一定的差异,下面我们对它们来个简单的总结:

Redis

  • 所用语言:C/C++
  • 特点:运行异常快
  • 使用许可: BSD
  • 协议:类 Telnet
  • 有硬盘存储支持的内存数据库
  • 但自 2.0 版本以后可以将数据交换到硬盘(注意, 2.4 以后版本不支持该特性!)
  • Master-slave 复制(见编注 3)
  • 虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如 ZREVRANGEBYSCORE。
  • INCR & co (适合计算极限值或统计数据)
  • 支持 sets(同时也支持 union/diff/inter)
  • 支持列表(同时也支持队列;阻塞式 pop 操作)
  • 支持哈希表(带有多个域的对象)
  • 支持排序 sets(高得分表,适用于范围查询)
  • Redis 支持事务
  • 支持将数据设置成过期数据(类似快速缓冲区设计)
  • Pub/Sub 允许用户实现消息机制

Redis,典型的NoSQL数据库服务器,和 BerkeleyDB 相比,它可以作为服务程序独立运行于自己的服务器主机。在很多时候,人们只是将 Redis 视为 Key/Value数据库服务器,然而事实并非如此,在目前的版本中,Redis 除了 Key/Value 之外还支持 List、Hash、Set 和 Ordered Set 等数据结构,因此它的用途也更为宽泛。对于此种误解,Redis 官网也进行了相应的澄清。和以上两种产品不同的是,Redis 的 License 是 Apache License,就目前而言,它是完全免费。

适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。

MongoDB

  • 所用语言:C++
  • 特点:保留了 SQL 一些友好的特性(查询,索引)。
  • 使用许可: AGPL(发起者: Apache)
  • 协议: Custom, binary( BSON)
  • Master/slave 复制(支持自动错误恢复,使用 sets 复制)
  • 内建分片机制
  • 支持 javascript 表达式查询
  • 可在服务器端执行任意的 javascript 函数
  • update-in-place 支持比 CouchDB 更好
  • 在数据存储时采用内存到文件映射
  • 对性能的关注超过对功能的要求
  • 建议最好打开日志功能(参数 –journal)
  • 在 32 位操作系统上,数据库大小限制在约 2.5Gb
  • 空数据库大约占 192Mb
  • 采用 GridFS 存储大数据或元数据(不是真正的文件系统)

适用于需要动态查询支持;需要使用索引而不是 map/reduce 功能;需要对大数据库有性能要求;需要使用 CouchDB 但因为数据改变太频繁而占满内存的应用程序。

对 MongoDB 的定义为 Oriented-Document 数据库服务器,和 BerkeleyDB 不同的是该数据库可以像其他关系型数据库服务器那样独立的运行并提供相关的数据服务。从该产品的官方文档中我们可以获悉,MongoDB 主要适用于高并发的论坛或博客网站,这些网站具有的主要特征是并发访问量高、多读少写、数据量大、逻辑关系简单,以及文档数据作为主要数据源等。和 BerkeleyDB 一样,该产品的 License 同为 GPL。

BerkeleyDB

  • 所用语言:C/C++
  • 特点:拥有极好的并发伸缩性,支持事务及嵌套事务,海量数据存储等重要特征
  • 使用许可: GPL

BerkeleyDB 是一种极为流行的开源嵌入式数据库,在更多情况下可用于存储引擎,比如 BerkeleyDB 在被 Oracle 收购之前曾作为 MySQL 的存储引擎,由此可以预见,该产品拥有极好的并发伸缩性,支持事务及嵌套事务,海量数据存储等重要特征,在用于存储实时数据方面具有极高的可用价值。然而需要指出的是,该产品的 Licence 为 GPL,这就意味着它并不是在所有情况下都是免费使用的。

Memcached

  • 所用语言:C/C++
  • 特点:运行异常快
  • 使用许可: GPL

memcached 只是提供了数据缓存服务,一旦服务器宕机,之前在内存中缓存的数据也将全部消失,因此可以看出 memcached 没有提供任何形式的数据持久化功能,而 Redis 则提供了这样的功能。再有就是 Redis 提供了更为丰富的数据存储结构,如 Hash 和 Set。至于它们的相同点,主要有两个,一是完全免费,再有就是它们的提供的命令形式极为接近。

相比较而言,Redis 的使用率更高。Memcached 主要用作缓存使用。

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Redis、MongoDB、BerkeleyDB、Memcached 等 NoSQL 数据库总结
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址