什么是NoSQL数据库

101 阅读2分钟

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的一些误区

主要两点:

  • 它不能存储关系型数据
  • 它不支持事务

欢迎关注我的公众号,搜索:虞大胆的叽叽喳喳 或者 yudadanwx,文章比较杂,涉及到编程语言、Linux、大数据、分布式、DevOps、AI、微服务、K8s/Docker等等,希望全方位给初学者一点帮助,积累或巩固知识,体验到技术的美妙。