常见NoSQL的特点分析与比较

3.分类:

3.1(最常见的键值存储)

a.临时性的:保存在内存中,可以进行快速的保存和读取操作, 数据有可能丢失

b.永久性:在磁盘上保存数据,可以进行快读的读写(没有内存中快),数据不会丢失

c.两者兼具:内存和硬盘同时保存数据,可以进行快速的读写操作, 硬盘上有数据不会丢失, 适合处理数组类型的数据

 

3.2(面向文档的(MongoDB,CouchDB))

a.存储方式:没有表结构,类似于jason。

b.可以进行复杂的查询条件

 

3.3(面向列的数据库Hbase)

a.关系型数据库是面向行的,对少量行进读写,而面向列的数据库,对大量行少数列进行读写,对所有特定的列进行通时更新。

b.高拓展性(特别是写入)

c.应用十分困难

d.对大量数据更新和查询有优势

 

 

3.1详解:memcached(临时性键值存储):

a.高速的响应

b.作为高速缓存使用(通过关系型数据库建立索引也可以获得高速响应):在处理大量的数据时候,他可以当作关系型数据库中间量,充当缓存来获得高速的响应速度,通过快速的读取里面的数据来弥补可能丢掉数据的可能性。

c.存储方式:散列表方式存储在内

d.通信:简单的文本协议,对数据的操作就是类似于保存和键值相对应的值,只能对字符类型数据进行操作(其它格式的数据可以利用jason来处理进行格式化,这样就可以跨平台传输)。

e.对数据操作简单,

f.memcached增加服务器时的经典算法:一致性散列:

g.缺点:因为他的数据时在内存中的,1.所以容易造成数据的丢失。解决方法:只用它来解决数据的拷贝,而把原始的数据放在安全的地方。2.web服务用的多(国外的网站基本都会引入memcached),

 

两种情况下它的威力大:1.有些网页需要执行一些好使的SQL文,响应很慢,有些网页访问率高,负载大,(关系型数据库解决这种问题的方法:增加临时表,批处理)

 

Tokyo Tyrant(永久性键值存储,是存储在硬盘上的)

1.优势:他的数据虽然是存储在银盘上的,但是它数据的操作硬盘的io处理无关,可以实现高速的访问(而且还不用担心数据会丢失)

2.它还有一个优点就是它能根据数据的类型选着存储的结构,所以它在查询时就有了自己优势,不仅能像关系型数据库范围查询还能进行key—value进行完全一致条件的查询。

3.数据类型:a.缓存数据库 ,以key-value形式来存储 b.

4.它把复制作为作为一项标准的功能

5.缺点:安装难度大(ruby)

 

Redis(临时性/持久性键值存储)

1.快速处理数组形式的数据

2.通过虚拟内存可以和操作系统进行互换结构,通过内存中的保存的所有数据的键来实现高效的处理。

3.引用;github, 微笑直播的观众人数统计

4,.应用:时间线形式的web应用

5.适合处理时间序列的数据

 

MongoDB(高性能和可扩展)

1.面向文档

2.关系型数据库的结构是事先定义好的,碰到不需要改变表结构的的信息存储的时候,还是挺可观的,但是如果在后来的处理中碰到了要改变表结构才能存储的数据,那时候,处理起来就比较麻烦了。

3.普通的关系型数据库实现(反复的表结构变换),可以通过json把数据进行系列化,然后保存到表格中,然后读取数据的时候反系列化,然后筛选出自己需要的数据也可以解决,但是这下来时间开销就会增大。

3。不需要定义表结构的数据库,可以根据KEY值可以进行关系数据库那样的查询亦可以添加索引。

4.数据的保存形式:BSON(JSON的二进制产物)把值和键进行制关联。

5,他不能进行jion查询,但是它可以通过嵌套达到同样的效果。

6.优势:没有表结构,可以灵活的指定查询条件。比如正则表达式查询或者对特定数组元素的查询都可以

7.实例应用:问卷调查数据的保存

 

几种基本的NoSQL的数据库的性能验证:

 

 

 

NoSQL化的关系型数据库

1.将MySQL数据库NoSQL化的HandlerSocket的方法:

 

特征:

1.高速地完成单纯的数据的插入和读取处理

2.可以使用SQL和Handlersocket对同一数据访问

3.可以通过协议独立访问MySQL的数据

4.不支持事物处理

 

handlesocket机构图:

 

它可以直接访问Handler的接口,但是一般的都要通过SQL层来实现访问(免去了解析SQL和锁表和解锁的处理)

 

不足:只能支持带有索引的查询数据,

 

总结:插入数据部分:比一般的关系型数据库快,虽然没memcached快。读取速度可以和Redis相仿

 

 

Berkeley DB

1.存储形式:key-多value形式

2.不支持网络访问,程序是通过进程内的API访问的

3.架构及其简单,

4,介于内存数据库和关系数据库之间

选用四种算法:B+数算法:平衡的二叉树,按其关键字有序存储,和HASH算法

1.访问速度快。

2.节约硬盘空间

3.大多数系统都用它,支持多进程和事物

4.有XMl接口,可以存储XML数据

5,兼容一些老的Unix数据库(DBM)

时间: 2024-11-14 10:55:25

常见NoSQL的特点分析与比较的相关文章

几种常见 容器 比较和分析

几种常见 容器 比较和分析 hashmap, map, vector, list ...hash&n list支持快速的插入和删除,但是查找费时; vector支持快速的查找,但是插入费时. map查找的时间复杂度是对数的,这几乎是最快的,hash也是对数的. 如果我自己写,我也会用二叉检索树,它在大部分情况下可以保证对数复杂度,最坏情况是常数复杂度,而std::map在任何情况下都可以保证对数复杂度,原因是它保证存诸结构是完全二叉检索树,但这会在存诸上牺牲一些时间. STL 中的 map 内部

[转]常见的动态规划问题分析与求解

动态规划(Dynamic Programming,简称DP),虽然抽象后进行求解的思路并不复杂,但具体的形式千差万别,找出问题的子结构以及通过子结构重新构造最优解的过程很难统一,并不像回溯法具有解决绝大多数问题的银弹(全面解析回溯法:算法框架与问题求解).为了解决动态规划问题,只能靠多练习.多思考了.本文主要是对一些常见的动态规划题目的收集,希望能有所帮助.难度评级受个人主观影响较大,仅供参考. 目录(点击跳转) 动态规划求解的一般思路 备忘录法 1.硬币找零 扩展1:单路取苹果 扩展2:装配线

常见nosql整理

一.常见的nosql 二.Redis,Memcache,MongoDb的特点 1.Redis 优点: 1.支持多种数据结构,如 string(字符串). list(双向链表).dict(hash表).set(集合).zset(排序set).hyperloglog(基数估算)2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失 的手段.3.支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步

常见的内存问题分析思路

一 系统内存不足 Java 应用一般都有单机或者集群的内存水位监控,如果单机的内存利用率大于 95%,或者集群的内存利用率大于80%,就说明可能存在潜在的内存问题(注:这里的内存水位是系统内存). 除了一些较极端的情况,一般系统内存不足,大概率是由 Java 应用引起的.使用 top 命令时,我们可以看到 Java 应用进程的实际内存占用,其中 RES 表示进程的常驻内存使用,VIRT 表示进程的虚拟内存占用,内存大小的关系为:VIRT > RES > Java 应用实际使用的堆大小.除了堆内

【理论】【转】App工程结构搭建:几种常见Android代码架构分析

关于Android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的. 从艺术的角度看,其实我们是在追求一种美. 本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板. 1. 微盘 微盘的架构比较简单,我把最基本,最主干的画了出来: 第一层:com.sina.VDisk:com.sina(公司域名)+app(应用程序名称) . 第二层:各模块名称(主模块VD

几种常见 容器 比较和分析 hashmap, map, vector, list .

list支持快速的插入和删除,但是查找费时; vector支持快速的查找,但是插入费时. map查找的时间复杂度是对数的,这几乎是最快的,hash也是对数的. 如果我自己写,我也会用二叉检索树,它在大部分情况下可以保证对数复杂度,最坏情况是常数复杂度,而std::map在任何情况下都可以保证对数复杂度,原因是它保证存诸结构是完全二叉检索树,但这会在存诸上牺牲一些时间. STL   中的   map   内部是平衡二叉树,所以平衡二叉树的性质都具备.查找数据的时间也是对数时间.vector,在分配

MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总结

一.主从复制搭建方法参考 1.MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解请参考: http://blog.csdn.net/xlgen157387/article/details/51331244#comments 2.使用mysqlreplicate命令快速搭建 Mysql 主从复制: http://blog.csdn.net/xlgen157387/article/details/52452394 二.Mysql 主从复制的常用拓扑结构 2.1.一主一从 是最

几种常见 容器 比较和分析 hashmap, map, vector, list ...hash table

转自:http://www.haogongju.net/art/1543058 list支持快速的插入和删除,但是查找费时; vector支持快速的查找,但是插入费时. map查找的时间复杂度是对数的,这几乎是最快的,hash也是对数的. 如果我自己写,我也会用二叉检索树,它在大部分情况下可以保证对数复杂度,最坏情况是常数复杂度,而std::map在任何情况下都可以保证对数复杂度,原因是它保证存诸结构是完全二叉检索树,但这会在存诸上牺牲一些时间. STL   中的   map   内部是平衡二叉

Java常见内存溢出异常分析(OutOfMemoryError)

链接地址:http://my.oschina.net/sunchp/blog/369412 1.背景知识 1).JVM体系结构 2).JVM运行时数据区 JVM内存结构的相关可以参考: http://my.oschina.net/sunchp/blog/369707 2.堆溢出(OutOfMemoryError:java heap space) 堆(Heap)是Java存放对象实例的地方. 堆溢出可以分为以下两种情况,这两种情况都会抛出OutOfMemoryError:java heap spa