NoSQL数据库,也叫做not only SQL,区别于关系数据库,它在整体设计上参考分布式理论CAP,这篇文章简单描述什么是NoSQL,它和关系数据库的区别等等。
1:为什么会出现NoSQL
从2000年开始,存储硬件的成本越来越便宜,同时云厂商的兴起,使用存储越来越容易,所以对存储的使用也增加了。
对数据的需求也不仅限于结构化的模式,应用越来越丰富,半结构化的数据需求也越来越多了,实现定义模式变得越来越不可行,而NoSQL允许存储海量非结构化数据,提供了极大的灵活性。
最后一点就是开发人员也需要以一种灵活的方式去管理数据,从而能够提升效率,这也是NoSQL兴起的原因。
2:NoSQL有什么特性
- 灵活的模式,定义数据结构非常方便和灵活
- 横向可扩展,能满足大量数据的存储
- 数据模型的变更导致查询非常快速
- 对于开发人员非常友好,非常容易使用
3:有什么类型的NoSQL
每一种类型能满足不同的应用场景:
- K/V,比如Redis
- 列式数据库,比如Cassandra,特别适合大数据的查询
- 文档数据库,比如MongoDB,文档类似于JSON对象
- 图数据库,比如Neo4j,以节点和边为单位存储数据
4:与RDBMS的一些区别
- 最大的区别就是模式设计不一样,关系数据库是以表格的方式设计,而NoSQL则无模式,非常灵活,节省空间
- NoSQL模式比较灵活,容易扩展
- NoSQL伸缩性非常好,数据规模变大也能轻松应对
- 支持事务方面有很大不同
- 数据检索方式不一样,对象映射不一样,比如一个是SQL语言,像Neo4j就是另外一种查询语言
5:什么时候使用NoSQL
如果你的应用有下面的一些特征,可以考虑使用NoSQL:
- 存储结构化和半结构化数据
- 希望快速开发的场景,因为NoSQL数据模式太方便了
- 数据增长非常快的场景
- 希望设计的应用架构是可扩展的,而NoSQL也是如此的
- 普遍认为NoSQL是一种新的应用模式,方便和一些新技术结合,比如Flink
6:对NoSQL的一些误区
主要两点:
- 它不能存储关系型数据
- 它不支持事务