NoSQL
发布时间:2022-05-24 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了NOSQL选择与比较,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样非关系数据库,特别是键值 数据库(Key-Value Store DB)风起云涌,多得让人眼花缭乱。大约有10多个开源的NosqlDB,例如:
redis,Tokyo Cabinet,Cassandra,Voldemort,@H_915_22@mongoDB,HBase,CouchDB,Flare, @H_915_22@memcachdb
@H_
607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@
redis
是一个很新的项目,刚刚发布了
2.4.8
版本。
redis
本质上是一个
Key-Value
类型的内存
数据库,很像
@H_64_93
@memcached
,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据
库数据
flush
到硬盘上进行保存。因为是纯内存操作,
redis
的性能非常出色,每秒可以处理超过
10
万次读写操作,是我知道的性能最快的
Key-Value DB
。
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@ redis的出色之处不仅仅是性能,redis最大的魅力是支持保存List链表和Set集合的数据结构,而且还支持对List进行各种操作,例如从 List两端push和pop数据,取List区间,排序等等,对Set支持各种集合的并集交集操作,此外单个value的最大限制是1GB。redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的@H_64_93@memcached来用。
@H_607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@ Memcached
是
danga.com
(运营
LiveJournal
的技术团队)开发的一套分布式内存对象缓存系统
,用于在动态系统中减少数据库负载,提升性能。
特点
协议简单
基于
libevent
的事件处理
内置内存存储方式
@H_64_93
@memcached
不互相通信的分布式
@H_607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@
它是新浪互动社区事业部为在
@H_64_93
@memcached
基础上,增加
Berkeley DB
存储层而开发一款支持高
并发的分布式持久存储系统,对任何原有
@H_64_93
@memcached
客户端来讲,它仍旧是个
@H_64_93
@memcached
,但是
,它的数据是可以持久存储的。
其中
Berkeley DB百度百科后:
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、sql解析等步骤
@H_607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@
Cassandra
项目是
Facebook
在
2008
年开源出来的,随后
Facebook
自己使用
Cassandra
的另外
一个不开源的分支。目前除了
Facebook
之外,
twitter
和
digg.com
都在使用
Cassandra
。
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@
Cassandra
的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式
网络服务,对
Cassandra
的一个写操作,会被复制到
其他节点上去,对
Cassandra
的读操作,也会
被路由到某个节点上面去读取。对于一个
Cassandra
群集来说,扩展性能是比较简单的事情,只管
在
群集里面添加节点就可以了
.
@H_
607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@
Cassandra
也支持比较丰富的数据结构和功能强大的查询语言,和
@H_64_93
@mongoDB
比较类似,查询
功能比
@H_64_93
@mongoDB
稍弱一些。
Cassandra
以单个节点来衡量,其节点的并发读写性能不是特别好,
Cassandra
每秒大约不到
1
万次读写请求。
@H_
607_91@
@H_607_91@
7
、
@H_64_93
@mongoDB
@H_607_91@
@H_607_91@@H_607_91@@H_607_91@
MongoDB
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富
,最像关系数据库的。他支持的数据结构非常松散,是类似
Json
的
bson
格式,因此可以存储比较
复杂的数据类型。
@H_64_93
@mongo
最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的
查询语言,几
乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
。
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@
@H_
607_91@
@H_607_91@
@H_607_91@
@H_607_91@@H_607_91@@H_607_91@
@H_64_93
@mongo
主要解决的是海量数据的访问效率问题,根据官方的文档,当数据量达到
50GB
以上的
时候,
@H_64_93
@mongo
的数据库访问速度是
@H_64_93
@mysqL
的
10
倍以
上。
@H_64_93
@mongo
的并发读写效率不是特别出色,根
据官方提供的性能测试表明,大约每秒可以处理
0.5
万-
1.5
次读写请求。
@H_607_91@
由于
@H_64_93
@mongo
可以支持复杂
的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎,很多项目都考虑用
@H_64_93
@mongoDB
来
替代
@H_64_93
@mysqL
来实现不是
特别复杂的
Web
应用。
@H_607_91@
@H_
607_91@
@H_524_653@mongoDB vs Cassandra简单比较:@H_607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@ MongoDB使用文档型存储,其数据结构为与JsON类似的BSON结构,而Cassandra支持的是key-value式存储,而每个key-value还会保存一个时间戳,这个时间戳实际上起到了版本控制的作用。
2.索引结构
@H_64_93@mongoDB的索引几乎与关系型数据库完全一样,其普通索引、联合索引、唯一索引的意义和实现上都可以参考对@H_64_93@mysqL索引的理解。而 Cassandra由于其是一个key-value结构的存储,如果你要对value进行条件查找,那么就必须建立反向索引,重新建立一个 value-key的键值对。
@H_
607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@ MongoDB
提供了
Replica Sets
的高可用部署方式,配置好
RS
的节点后,整个集群会自动选举
出
PriMary
机器供写入操作,并自动复制数据到其它节点。它还具有故障后自动选举新的主机的机
制。而
Cassandra
提供的策略更为灵活,它通过一种对网络结构可感知的机制,它让你可以配置数
据是备份在本地网络中的其它节点还是备份到远端的数据中心。
@H_
607_91@
@H_607_91@
@H_607_91@@H_607_91@@H_607_91@@H_607_91@@H_607_91@
新华网目前用于满足海量存储需求和访问的
Nosql
数据库是
@H_64_93
@mongoDB
。由于现在新华网的应
用很多是为了满足高并发的需求,满足极高读写性能需求。满足这样需求的产品必须具有分布式缓
存的功能。因而根据需求选择了的
Key-Value
数据库
:redis
,
Tokyo Cabinet
,
@H_64_93
@memcached,memcachdb
进行比较。
大佬总结
以上是大佬教程为你收集整理的NOSQL选择与比较全部内容,希望文章能够帮你解决NOSQL选择与比较所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。