加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

NOSQL选择与比较

发布时间:2020-12-13 13:45:46 所属栏目:百科 来源:网络整理
导读:关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样 非关系数据库,特别是键值 数据库 (Key-Value Store DB) 风起云涌,多得让人眼花缭乱。大约有 10 多个开源的 NoSQLDB ,例如: Redis

关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样非关系数据库,特别是键值 数据库(Key-Value Store DB)风起云涌,多得让人眼花缭乱。大约有10多个开源的NoSQLDB,例如:
RedisTokyo CabinetCassandraVoldemortMongoDBHBaseCouchDBFlare memcachdb

Redis
Redis 是一个很新的项目,刚刚发布了 2.4.8 版本。 Redis 本质上是一个 Key-Value 类型的内存 数据库,很像 memcached ,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据 库数据 flush 到硬盘上进行保存。因为是纯内存操作, Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是我知道的性能最快的 Key-Value DB
Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存List链表和Set集合的数据结构,而且还支持对List进行各种操作,例如从 List两端pushpop数据,取List区间,排序等等,对Set支持各种集合的并集交集操作,此外单个value的最大限制是1GBRedis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的memcached来用。
MemCached
Memcached danga.com (运营 LiveJournal 的技术团队)开发的一套分布式内存对象缓存系统 ,用于在动态系统中减少数据库负载,提升性能。
特点
协议简单
基于 libevent 的事件处理
内置内存存储方式
memcached 不互相通信的分布式
3MemCacheDB
它是新浪互动社区事业部为在 Memcached 基础上,增加 Berkeley DB 存储层而开发一款支持高 并发的分布式持久存储系统,对任何原有 Memcached 客户端来讲,它仍旧是个 Memcached ,但是 ,它的数据是可以持久存储的。
其中 Berkeley DB百度百科后:
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤
5 Cassandra
Cassandra 项目是 Facebook 2008 年开源出来的,随后 Facebook 自己使用 Cassandra 的另外 一个不开源的分支。目前除了 Facebook 之外, twitter digg.com 都在使用 Cassandra Cassandra 的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式 网络服务,对 Cassandra 的一个写操作,会被复制到 其他节点上去,对 Cassandra 的读操作,也会 被路由到某个节点上面去读取。对于一个 Cassandra 群集来说,扩展性能是比较简单的事情,只管 群集里面添加节点就可以了 .
Cassandra 也支持比较丰富的数据结构和功能强大的查询语言,和 MongoDB 比较类似,查询 功能比 MongoDB 稍弱一些。 Cassandra 以单个节点来衡量,其节点的并发读写性能不是特别好, Cassandra 每秒大约不到 1 万次读写请求。
7 MongoDB
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富 ,最像关系数据库的。他支持的数据结构非常松散,是类似 json bson 格式,因此可以存储比较 复杂的数据类型。 Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的 查询语言,几 乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
Mongo 主要解决的是海量数据的访问效率问题,根据官方的文档,当数据量达到 50GB 以上的 时候, Mongo 的数据库访问速度是 MySQL 10 倍以 上。 Mongo 的并发读写效率不是特别出色,根 据官方提供的性能测试表明,大约每秒可以处理 0.5 万- 1.5 次读写请求。 由于 Mongo 可以支持复杂 的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎,很多项目都考虑用 MongoDB 替代 MySQL 来实现不是 特别复杂的 Web 应用。
MongoDB vs Cassandra简单比较
1.数据结构
MongoDB使用文档型存储,其数据结构为与JSON类似的BSON结构,而Cassandra支持的是keyvalue式存储,而每个keyvalue还会保存一个时间戳,这个时间戳实际上起到了版本控制的作用。
2.索引结构
MongoDB的索引几乎与关系型数据库完全一样,其普通索引、联合索引、唯一索引的意义和实现上都可以参考对MySQL索引的理解。而 Cassandra由于其是一个keyvalue结构的存储,如果你要对value进行条件查找,那么就必须建立反向索引,重新建立一个 valuekey的键值对。
3. 部署
MongoDB 提供了 Replica Sets 的高可用部署方式,配置好 RS 的节点后,整个集群会自动选举 Primary 机器供写入操作,并自动复制数据到其它节点。它还具有故障后自动选举新的主机的机 制。而 Cassandra 提供的策略更为灵活,它通过一种对网络结构可感知的机制,它让你可以配置数 据是备份在本地网络中的其它节点还是备份到远端的数据中心。
新华网目前用于满足海量存储需求和访问的 NoSql 数据库是 mongoDB 。由于现在新华网的应 用很多是为了满足高并发的需求,满足极高读写性能需求。满足这样需求的产品必须具有分布式缓 存的功能。因而根据需求选择了的 Key-Value 数据库 :Redis Tokyo Cabinet memcached,memcachdb 进行比较。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读