您的当前位置:首页正文

常用NoSQL比较

2020-11-09 来源:步旅网

公司最近正在做NoSQL选型,通过一周的时间对几种常用的NoSQL做了以下粗略的分析和比较

公司最近正在做NoSQL选型,通过一周的时间对几种常用的NoSQL做了以下粗略的分析和比较

名词解释:

分布式存储单元:在分布式存储中,通常要把比较大的数据文件切割成不同的块,以便放到不同的机器上分开存储,每一个分割块称之为一个存储单元。

一、CouchDB

CouchDB是一种面向文档(document-oriented)的nosql数据库,文档的存储格式通过JSON进行描述,在结构部署上采用的是peer-based方式,即每台机器在功能上来讲是同等重要的,没有master和slave的区分,所存储的数据也都是相同的(没有做到数据的分布式存储),类似于Subversion中版本库和工作拷贝的概念。

官方文档中所声明的功能特性主要有以下几个方面:

1.多平台部署,,包括Android和iOS

2.出色的数据完整性和可靠性支持

3.对BLOB数据类型提供原生支持

4.基于文档的版本管理功能

5.框架自带MapReduce组件

6.query查询支持(通过javascript)

7.提供Java API和REST API

优势:

多平台支持(移动平台)

在数据量较小的情况下,可作为单机版离线使用,而在必要的时候进行联网更新。

二、Redis

Redis是一种基于key-value存储格式的nosql数据库,在结构部署上采用了master/slave的方式,其中slave节点起到备份的作用,当master节点出现问题的时候,slave节点可替换成master,从而确保了系统安全稳定的特性。

分布式存储单元:slot(一组key/value存储记录的集合)

一个cluster里面可能会有多个matser节点,master节点通过互相通信来记录彼此之间所存储的slot信息,从而确保了client端可以通过任何master节点定位到需要的slot,获取到slot信息后,client端还会将该slot地址缓存到本地,从而加快了下次查询的效率。

部署结构如图所示:

注:图中没有画出slave节点(slave只是起到备份master的作用),所有的圆圈全部为master,并且master之间的通信呈网状结构。

显示全文