精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx

上传人:b****4 文档编号:14304545 上传时间:2022-10-21 格式:DOCX 页数:42 大小:1.65MB
下载 相关 举报
精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx_第1页
第1页 / 共42页
精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx_第2页
第2页 / 共42页
精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx_第3页
第3页 / 共42页
精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx_第4页
第4页 / 共42页
精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx

《精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。

精选几款主流 NoSQL 数据库的对比 doc资料Word文档下载推荐.docx

⑴RDBMS方案:

其中Article表格式:

Author表格式:

⑵等价的HBase方案:

对于前端而言,这里的ColumnKeys和ColumnFamily可以看为这样的关系:

columId1={//id=1的行

article:

{//ColumnFamily-article

title:

XXX,//ColumnFamily-article下的key之一

content:

XXX,

tags:

XXX

},

author:

{//ColumnFamily-author

name:

nickname:

}

2

3

4

5

6

7

8

9

10

11

XXX,//ColumnFamily-article下的key之一content:

1.2性能

HStore存储是HBase存储的核心,它由两部分组成,一部分是MemStore,一部分是StoreFiles。

MemStore是SortedMemoryBuffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile,当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBaseI/O的高性能。

1.3数据版本

Hbase还能直接检索到往昔版本的数据,这意味着我们更新数据时,旧数据并没有即时被清除,而是保留着:

Hbase中通过row+columns所指定的一个存贮单元称为cell。

每个cell都保存着同一份数据的多个版本——版本通过时间戳来索引。

时间戳的类型是64位整型。

时间戳可以由Hbase(在数据写入时自动赋值,此时时间戳是精确到毫秒的当前系统时间。

时间戳也可以由客户显式赋值。

如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。

每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

为了避免数据存在过多版本造成的的管理(包括存贮和索引负担,Hbase提供了两种数据版本回收方式。

一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近七天。

用户可以针对每个列族进行设置。

1.4CAP类别

属于CP类型(了解更多。

2.Node下的使用

HBase的相关操作可参考下表:

在node环境下,可通过node-hbase来实现相关访问和操作,注意该工具包依赖于PHYTHON2.X(3.X不支持和Coffee。

如果是在window系统下还需依赖.NETframwork2.0,64位系统可能无法直接通过安装包安装。

官方示例:

varassert=require('

assert'

;

varhbase=require('

hbase'

.table('

my_table'

//创建一个ColumnFamily

.create('

my_column_family'

function(err,success{

this.row('

my_row'

//定位到指定行

.put('

my_column_family:

my_column'

'

myvalue'

this.get('

function(err,cells{

this.exists(function(err,exists{

assert.ok(exists;

};

1

12

13

14

15

16

varhbase=require('

function(err,success{this.get('

数据检索:

client

node_table'

.scan({

startRow:

'

//起始行

maxVersions:

1//版本

},function(err,rows{

console.log(err,rows;

另有hbase-client也是一个不错的选择,具体API参照其文档。

3.优缺点

优势

1.存储容量大,一个表可以容纳上亿行,上百万列;

2.可通过版本进行检索,能搜到所需的版本数据;

3.负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS和海量数据分析的高性能(MapReduce;

4.在第3点的基础上可有效避免单点故障的发生。

缺点

1.基于Java语言实现及Hadoop架构意味着其API更适用于Java项目;

2.node开发环境下所需依赖项较多、配置麻烦(或不知如何配置,如持久化配置,缺乏文档;

3.占用内存很大,且鉴于建立在为批量分析而优化的HDFS上,导致读取性能不高;

4.API相比其它NoSql的相对笨拙。

适用场景

1.bigtable类型的数据存储;

2.对数据有版本查询需求;

3.应对超大数据量要求扩展简单的需求。

Redis

Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

目前由VMware主持开发工作。

Redis通常被称为数据结构服务器,因为值(value可以是字符串(String,哈希

(Hash/Map,列表(list,集合(sets和有序集合(sortedsets五种类型,操作非常方便。

比如,如果你在做好友系统,查看自己的好友关系,如果采用其他的key-value系统,则必须把对应的好友拼接成字符串,然后在提取好友时,再把value进行解析,而redis

则相对简单,直接支持list的存储(采用双向链表或者压缩链表的存储方式。

我们来看下这五种数据类型。

⑴String

string是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

string类型是二进制安全的。

意思是Redis的string可以包含任何数据。

比如

jpg图片或者序列化的对象。

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

实例:

OK

"

zfpx"

在以上实例中我们使用了Redis的SET和GET命令。

键为name,对应的值为”zfpx”。

注意:

一个键最大能存储512MB。

⑵Hash

Redishash是一个键值对集合。

Redishash是一个string类型的field和value的映射表,hash特别适合用于

存储对象。

1"

username"

2"

3"

password"

4"

123"

以上实例中hash数据类型存储了包含用户脚本信息的用户对象。

实例中我们使用了RedisHMSET,HGETALL命令,user:

1为键值。

每个hash可以存储232–1键值对(40多亿。

⑶List

Redis列表是简单的字符串列表,按照插入顺序排序。

你可以添加一个元素导列表的头部(左边或者尾部(右边。

(integer1

(integer2

(integer3

zfpx3"

zfpx2"

zfpx1"

列表最多可存储232–1元素(4294967295,每个列表可存储40多亿

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1