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实际应用问题点
待续。。。