NoSQL 学习笔记

nosql(not only sql)git

1、NOSQLgithub

nosql和关系型数据库互补。web


2、4种Nosql数据库:memcached、Tokyo Tyrant、Redis、Mongodb.算法

Memcachedsql

memcached:临时性键值存储,无硬盘IO处理。数据库

高响应,做为高速缓存使用,数据在内存中。数组

经过LRU(Least Recently Used)顺序删除不使用的数据,自动清除。缓存

经过散列表(关联数组)来存储各类格式数据的键值存储,全部数据都被存储在内存中。服务器

当使用多台服务器运行memcached时会使用一致散列算法(Consistent Hashing)来分散数据。数据结构

不足:数据临时性(数据可能会丢失)


Tokyo Tyrant

Tokyo Tyrant:永久性键值存储,数据保存在硬盘中,速度快。

保存和读取数据时与硬盘的IO处理无关。

不足:安装麻烦


Redis

Redis:临时性/持久性键值存储,处理数组形式的数据。

自己做为数据存储设计出来的,经过命令明确删除数据,除非设定expires(失效时间),

不会自动清除数据。从2.1版本开始能够memcached那样过时自动清除数据。

Redis向硬盘写入数据时,提供了数据快照的永久化功能,内存中数据的快照被写入

文件(*.rdb)中,再启动时数据快照中的内容就会被读入内存中,这样恢复到上次数据快照时状态。

Redis能够处理字符串,链表list,集合set,有序集合zset,散列表等各类类型值数据,

但全部数据都被看成字符串进行处理。

从2.0之后的版本实现了独立的虚拟内存结构,能够把实际内存中保存不下的数据写入硬盘中。

使用实例:github、digg、新浪微博、微笑直播。

不足:实例少。


MongoDB

MongoDB:面向文档的数据库,无需定义表结构,可添加索引进行高速处理。没法进行join查询。

MongoDB在保存数据时会把数据和数据结构完整地以BSON(JSON的二进制化产物)保存

起来,并把它做为值和键进行关联。数据以数组形式进行保存.

MongoDB基本上是单独使用的,无需和关系型数据库配合使用,没必要再关心表结构和程序的一致性。

实例:字段不肯定的状况,如调查问卷。字段可能会发生流动变化的状况,

如分析结果数据。这些状况下使用Mongodb颇有效。

不足:使用MongoDB建立和更新数据时,数据不会实时写入硬盘中,有可能出现数据丢失状况。


3、4种Nosql数据库应用实例

Redis具体应用实例

时间线形式(用户发言后以时间序列形式显示)的web应用。

主要任务:实现用户登陆,注销,关注,发微博,显示微博等功能。


 


4、4种Nosql数据库性能



5、NOSQL实际应用问题点

待续。。。