NoSQL 学习笔记

nosql(not only sql)

一、NOSQL

nosql和关系型数据库互补。


二、4种Nosql数据库:memcached、Tokyo Tyrant、Redis、Mongodb.

Memcached

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创建和更新数据时,数据不会实时写入硬盘中,有可能出现数据丢失情况。


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

Redis具体应用实例

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

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


 


四、4种Nosql数据库性能



五、NOSQL实际应用问题点

待续。。。

你可能感兴趣的:(NoSQL 学习笔记)