NoSQL
是什么
- Not Only SQL
- 泛指非关系型数据库
为什么会出现
- 关系数据库存在的缺点
- 关系数据库存储的是行数据,无法存储数据结构
- 关系数据库的schema扩展不方便(schema:数据库对象,包括表、视图、索引、存储过程等)
- 关系数据库读取时会将同一行数据一次读出,造成I/O高
- 关系数据库的全文搜索功能比较弱,like的整表扫描,性能不能满足复杂业务下的需求
- NoSQL的优势
- 易扩展
- 大数据量、高性能、高可用
- 灵活的数据模型
常见的NoSQL
- K-V存储:解决关系数据库只能存储行数据,无法存储数据结构的问题
- 如Redis
- 文档存储:解决关系数据库中强schema的问题
- 如MongoDB
- 列式存储:解决关系数据库中I/O高的问题
- 如HBase
- 【全文搜索】新方式
- 如ES(ElasticSearch)
NoSQL细节
NoSQL模式 | 技术代表 | 关键点 | 不足 |
---|---|---|---|
K-V存储 | Redis | Key-Value存储,Key是数据的标识,Value是具体的数据;Redis的Value数据结构可以是string、hash、list、set、sorted set、bitmap和hyperloglog | Redis的事务只能保证一致性和独立性,不能保证原子性持久性,即不能满足ACID(原子性、一致性、独立性、持久性) |
文档存储 | MongoDB | 特点no-schema,采用JSON或BSON格式(加强版的JSON,可以存储ByteArray数据),属性及属性的类型增删改非常的灵活 | 不支持事务;不支持join |
列式存储 | HBase | 离线大数据分析或统计的场景中;压缩率高,节约空间,节省I/O | 更新列效率低--操作不连续的空间和更新压缩的数据需要先解压进行修改 |
全文搜索 | ES | 倒排索引--建立单词到文档的索引(即根据关键词搜索所在的所有文档) |