1 NoSQL总览
1.1 介绍
NoSQL(Not Only SQL),意即“不仅仅是SQL”,非关系型的数据库
1.2 分类
- 键值(key-value)存储数据库
- 列存储数据库
- 文档型数据库
- 图形(Graph)数据库
2 Memcached
一个自由开源的,高性能,分布式内存对象缓存系统。
- 类型:key-value 存储数据库
- 优点
- 内存
- 多核,支持多线程操作
- 缺点
- 不支持持久化
- 本身不支持分布式,只能在客户端通过像一致性哈希类的分布式算法实现
- 单个 key-value 大小有限,一个value最大只支持 1MB
3 Redis
一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
- 类型:key-value 存储数据库
- 优点
- 内存
- 支持持久化(快照,AOF等)
- 支持服务器端分布式(主从复制方案)
- 支持多种数据结构
- 单个 key-value 大小有限,一个 value 最大只支持 512MB
- 支持pub/sub消息订阅机制
- 缺点
- 单核,不支持多核心多线程操作
4 MongoDB
一个基于分布式文件存储的数据库,文档型的非关系型数据库,与上面两者不同。
- 类型:文档存储数据库
- 优点
- 支持持久化(binlog)
- 缺点
- 不支持事务
5 应用场景
需要根据使用的具体场景分析:
- 需要数据持久化或主从复制,只能采用 Redis。
- 需要缓存的数据只是 key-value 这样简单的结构,采用 memcache;若涉及不同数据结构,排序等选用 Redis。
5.1 推荐
- Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。
- Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。
- MongoDB:主要解决海量数据的访问效率问题。