首页 > 数据库 >非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解

非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解

时间:2022-10-11 20:34:23浏览次数:49  
标签:关系 NOSQL 数据库 SQL 数据 数据模型

前言:

在我们的日常开发中,关系型数据库和非关系型数据库的使用已经是一个成熟的软件产品开发过程中必不可却的存储数据的工具了。那么用了这么久的关系数据库和非关系型数据库你们都知道他们之间的区别了吗?下面我们来详细的介绍一下。

关系型数据库(SQL):

什么是(SQL)关系型数据库:

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

什么是关系模型:

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

常见关系型数据库管理系统(ORDBMS):

Oracle
MySql
Microsoft SQL Server
SQLite
PostgreSQL
IBM DB2

关系型数据库的优势:

  1. 采用二维表结构非常贴近正常开发逻辑(关系型数据模型相对层次型数据模型和网状型数据模型等其他模型来说更容易理解);

  2. 支持通用的SQL(结构化查询语言)语句;

  3. 丰富的完整性大大减少了数据冗余和数据不一致的问题。并且全部由表结构组成,文件格式一致;

  4. 可以用SQL句子多个表之间做非常繁杂的查询;

  5. 关系型数据库提供对事务的支持,能保证系统中事务的正确执行,同时提供事务的恢复、回滚、并发控制和死锁问题的解决。

  6. 数据存储在磁盘中,安全可靠。

关系型数据库存在的不足:

随着互联网企业的不断发展,数据日益增多,因此关系型数据库面对海量的数据会存在很多的不足。

  1. 高并发读写能力差:网站类用户的并发性访问非常高,而一台数据库的最大连接数有限,且硬盘 I/O 有限,不能满足很多人同时连接。

  2. 海量数据情况下读写效率低:对大数据量的表进行读写操作时,需要等待较长的时间等待响应。

  3. 可扩展性不足:不像web server和app server那样简单的添加硬件和服务节点来拓展性能和负荷工作能力。

  4. 数据模型灵活度低:关系型数据库的数据模型定义严格,无法快速容纳新的数据类型(需要提前知道需要存储什么样类型的数据)。

非关系型数据库(NOSQL):

什么是(NOSQL)非关系型数据库:

非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定,常用于存储非结构化的数据。

常见的NOSQL数据库:

  1. 键值数据库:Redis、Memcached、Riak

  2. 列族数据库:Bigtable、HBase、Cassandra

  3. 文档数据库:MongoDB、CouchDB、MarkLogic

  4. 图形数据库:Neo4j、InfoGrid

非关系型数据库的优势:

  1. 非关系型数据库存储数据的格式可以是 key-value 形式、文档形式、图片形式等。使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。

  2. 速度快,效率高。 NoSQL 可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。

  3. 海量数据的维护和处理非常轻松,成本低。

  4. 非关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势。

  5. 可以实现数据的分布式处理。

非关系型数据库存在的不足:

  1. 非关系型数据库暂时不提供 SQL 支持,学习和使用成本较高。

  2. 非关系数据库没有事务处理,无法保证数据的完整性和安全性。适合处理海量数据,但是不一定安全。

  3. 功能没有关系型数据库完善。

  4. 复杂表关联查询不容易实现。

标签:关系,NOSQL,数据库,SQL,数据,数据模型
From: https://www.cnblogs.com/java-six/p/16782455.html

相关文章

  • MySQL动态执行字符串
    需求表中存有按天维度字符串表达式字段,需要取出,然后计算出字符串表达式的结果,最后得到一个结果集,并且保留结果例:表达式字段值为value>1,需要先replace掉value为实际......
  • 八.mongodb数据库的使用
    MongoDB  官网  安装案例 ==>查看安装案例就可以安装成功了是什么?一个基于文件存储的分布式NoSQL数据库系统数据结构由键值对组成......
  • 抽象类与接口的比较?构造方法,构造方法重载,什么是复制构造方法?求N的阶乘?Java环境搭建:J
    大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来......
  • mybatis返回值乱码(mysql数据库编码正确)
    解决办法:在springmvc.xml文件里面插入<!--解决乱码问题--><mvc:annotation-driven><mvc:message-converters><beanclass="org.springfram......
  • linux笔记_1_db2数据库创建初始化
    1、创建用户compgen-uuseraddbank_bl-d/home/bank_bl-gdb2iadm1passwdbank_bl2、进入实例用户su-db2inst13、数据库操作db2listdbdirectory(查看......
  • SQL基础篇
    SQL基础及安装配置SQL(StructuredQueryLanguage):结构化查询语言,用于访问和处理数据库的标准的计算机语言,可面向数据库执行查询、读取、插入、更新、删除数据,还可以创建......
  • Mybatis实现@Select@Update等注解动态查询或更新SQL语句
    通过自己实现LanguageDriver,在服务器启动的时候,就会将我们自定义的标签解析为动态SQL语句。例如,写个构造updatein的动态sql更新,代码如下:packagecom.ljw.web.common.my......
  • MySQL实现随机查询一条或多条数据
    一、随机查询一条数据SELECT*FROM`table`ASt1JOIN(SELECTROUND(RAND()*((SELECTMAX(id)FROM`table`)-(SELECTMIN(id)FROM`table`))+(SELECTMIN(id......
  • mysql 时间函数
    时间格式转换标准时间格式:2017-05-1211:41:55--字符串转换为日期函数:str_to_date(str,format)SELECTSTR_TO_DATE('06.05.201719:40:30','%m.%d.%Y%H:%i:%s');--......
  • 浅谈MySQL、Hadoop、BigTable、Clickhouse数据读写机制
    个人理解,欢迎指正数据库引擎写数据读数据补充MySqlInnoDB:支持事务,高速读写性能一般Myisam:不支持事务,高速读写性能好以InnoDB更新一条记录为例1、B+Tree......