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