关系型数据库与非关系型数据库的区别(学习了解记录)

前言

​ 在工作中经常遇到不同的使用,对他们彼此间的关系不甚清楚,所以抽时间整理一下网络大神的详解,作为自己的学习笔记。

关系型数据库(SQL)

​ 关系型数据库是指使用关系模型(二维表格模型)来组织的数据库

什么是关系模型

​ 简单理解就是二维表格模型,一个关系型数据库是由二维表及其之间的关系组成一个数据组织。

常见关系型数据库管理系统

  • Oracle
  • MySQL
  • Microsoft SQL Server
  • SQLite
  • PostgreSQL
  • IBM DB2

关系型数据库优势

  1. 符合正常开发逻辑
  2. 有很好的生态开发环境与支持
  3. 可以处理非常复杂的数据关系
  4. 提供对事务的支持,能保证系统中的事务正确执行,同时提供事务的恢复,回滚,并发控制和死锁问题的解决。
  5. 数据存储在磁盘,安全可靠(怀疑)。

关系型数据库的不足

  1. 高并发读写能力差
  2. 海量数据情况下读写效率低
  3. 可扩展性不足
  4. 数据模型灵活度低
  5. 面对海量数据存在不足

非关系型数据库(NOSQL)

​ 非关系型数据是指数据以对象形式储存在数据库中,而对象间的关系由每个对象自身的属性来决定,常存储非结构化数据。

常见的非关系型数据库

  1. 键值数据库:Redis, Memcached, Riak
  2. 列族数据库:Bigtable, HBase, Cassandra
  3. 文档数据库:MongoDB, CouchDB, MarkLogic
  4. 图形数据库: Neo4j, InfoGrid

非关系型数据库的优势

  1. 以key-value形式为存储格式,使用灵活,应用场景广泛。
  2. 速度快,效率高
  3. 海量数据的维护和处理非常轻松,成本低
  4. 非关系型数据库具有扩展简单,高并发,高稳定性,成本低的优势
  5. 可以实现数据的分布式处理
  6. 非关系型数据库天然是分布式的,可以通过集群实现负载均衡

非关系型数据库的不足

  1. 暂时不提供SQL支持,学习与使用成本高
  2. 非关系型数据库没有事务处理,无法保障数据的完整性和安全性。事故和处理海量数据,但不一定安全。
  3. 功能没有关系型数据库完善
  4. 复杂表关联查询不容易实现

如何选择?

目前大多数大型互联网都会选择使用MySQL+NoSQL的组合方式,因为各有优缺

关系型数据库适合存储结构化数据:比如:用户的帐户,地址

  1. 数据通常需要结构化查询
  2. 数据规模,增长速度可以预期
  3. 事务性,一致性,适合存储比较复杂的数据

NoSQL适合存储非结构化的数据,比如:文章,评论:

  1. 数据通常需要用于模糊处理,例如全文搜素,机器学习等,适合较为简单的数据
  2. 数据是海量的,并且增长难以预期
  3. 按照key值获取数据效率高,但对于join或其他结构化查询的支持就比较差

总结

其实最主要的区别在于事务的使用,与数据量的大小,如何选择全依需求而定,但就目前学习和使用过一段时间的我而言,两者中非关系型数据好像更适合后端程序开发。

但随着技术的发展,单从某些特性定义他是不是关系型数据库已经不准确,也没有意义了,我们只需了解传统意义的关系型数据库是哪几个,有啥显著特点即可。

posted on 2022-12-26 16:47  yunkuang  阅读(165)  评论(0编辑  收藏  举报