NoSQL数据库概述
NoSQL(Not Only SQL),泛指“非关系型数据库”,NoSQL不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
- 不遵循SQL标准;
- 不支持ACID;
- 远超于SQL的性能。
NoSQL适用场景
- 对数据高并发的读写;
- 海量数据的读写;
- 对数据高可扩展性的。
NoSQL不适用场景
- 需要事务支持
- 基于SQL的结构化查询存储,处理复杂的关系,需要即席查询。
- 用不着SQL的和用了SQL也不行的情况,考虑用NoSQL。
常见的NoSQL
Memcache
- 数据都在内存中,一般不持久化;
- 支持简单的key-value模式,支持类型单一;
- 一般是作为缓存数据库辅助持久化的数据库;
Redis
- 几乎覆盖了Memcache的绝大部分功能;
- 数据都在内存中,支持持久化,主要用作备份恢复;
- 除了支持简单的key-value模式,还支持多种数据结构的存储,比如list、set、hash、zset等;
- 一般是作为缓存数据库辅助持久化的数据库。
MongoDB
- 高性能、开源、模式自由的文档型数据库;
- 数据都在内存中,如果内存不足,把不常用的数据保存到硬盘;
- 虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能;
- 支持二进制数据以及大型对象;
- 可以根据数据的特点替代RDBMS,成为独立的数据库,或者配合RDBMS,存储特定的数据。
行式存储数据库
行式数据库
查询某个id对应的一行数据,很方便,但求某一列的数据,就很慢。
列式数据库
查某一项的平均值很快,而查询某一行的话,需要多次查询。
图关系型数据库
主要应用于:社会关系,公共交通网络、地图及网络拓扑