关系型数据库与非关系型数据库的区别

目录Contents

  • 关系型数据库与非关系型数据库区别(SQL VS NoSQL)
  • 1. 引言(Introduction)
  • 2. 关系型数据库(NoSQL)
    • 2.1. 基本概念(Basic Concept)
    • 2.2. 优点(Advantage)
    • 2.3. 缺点(Disadvantage)
    • 2.4. 常见的关系型数据库(Normal SQL)
  • 3. 非关系型数据库(NoSQL)
    • 3.1. 基本概念(Basic Concept)
    • 3.2. 优点(Advantage)
    • 3.3. 缺点(Disadvantage)
    • 3.4. 常见的非关系数据库(Normal NoSQL)
  • 4. 对比(Compared)
  • 5. 总结(Conclusion)
  • 6. 参考资料(Reference)
  • 版权声明

关系型数据库与非关系型数据库区别(SQL VS NoSQL)

本文主要说明了关系型数据库与非关系型数据库之间的区别,本文仅代表本人对关系型数据库与非关系型数据库的浅薄认识,如有错误,欢迎纠正。

1. 引言(Introduction)

数据库(Database)是按照一定数据结构来存储和管理数据的仓库,按照数据结构的不同可以分为关系型数据库(SQL)与非关系型数据库(NoSQL)。本文先分别讲解二者之间的区别,之后进行对比分析,最后总结。

2. 关系型数据库(NoSQL)

2.1. 基本概念(Basic Concept)

关系型数据库是指采用了关系模型来组织数据的数据库,关系模型指的就是二维表格模型,数据按照表的形式存储,然后多组表构成了一个数据库。
关系模型中常用的概念有:

  1. 关系:指代一张二维表格,每张表格都有一个关系名,即表名
  2. 元组:二维表格中的一行,在数据库中被称为记录
  3. 属性:二维表格中的一列,在数据库中被称为字段(包括字段名,数据类型);
  4. 域:二维表格中每一列的取值范围;
  5. 关键字:表示特定元组(某一行)的属性,数据库中常称为主键,由一列或多列的值组成;
  6. 关系模型:对关系的描述。其格式为:关系名(属性1,属性2, …, 属性N),在数据库中为表结构。

2.2. 优点(Advantage)

  1. 存储方式:采用表格的储存方式,数据以行和列的方式进行存储,要读取和查询都十分方便,并且容易理解;
  2. 存储结构:按照结构化的方法存储数据,每个数据表都必须先对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据。这样做的好处就是由于数据的形式和内容在存入数据之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高;
  3. 存储规范:为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储,这样数据管理的就可以变得很清晰、一目了然;
  4. 查询方式:使用结构化查询语言(SQL)对数据库进行查询,SQL能够支持数据库的CRUD(增删查改)的操作,具有非常强大的功能;
  5. 规范化:在关系型数据库中,一个数据实体(包括数组、列表和嵌套数据)一般首先要分割成多个部分,然后再对分割的部分进行规范化,规范化以后再分别存入到多张关系型数据表中,这是一个复杂的过程;
  6. 事务性:强调ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。因为关系型数据库十分强调数据的强一致性,所以其对于事务的操作有很好的支持。并且关系型数据库可以控制事务原子性细粒度,一旦操作有误或者有需要,可以马上回滚事务。

2.3. 缺点(Disadvantage)

  1. 难于修改表格。因为关系型数据库在存储数据前,需要先对各个字段定义好,而在存入数据后,如果需要修改数据表的结构就会十分困难,所以在对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移;
  2. 难于扩展:由于关系型数据库将数据存储在数据表中,所以当数据表越多时,越难于进行数据操作。如果要缓解这个问题,只能提高处理能力,也就是选择速度更快性能更高的计算机,这样的方法虽然可以一定的拓展空间,但这样的拓展空间一定有非常有限的,也就是关系型数据库只具备纵向扩展能力;
  3. 难于管理:主要是针对多张关联数据表的情况。如果需要操作的数据涉及到多张数据表,数据表之间又会存在着复杂的关系,所以随着数据表数量的增加,数据管理会越来越复杂,这会降低数据库的性能;
  4. 难于处理高并发事务:当用户并发性非常高的时候,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈;除此之外,在一张包含海量数据的表中查询,效率是非常低的。

2.4. 常见的关系型数据库(Normal SQL)

当今十大主流的关系型数据库有Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,
Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP。

3. 非关系型数据库(NoSQL)

3.1. 基本概念(Basic Concept)

非关系型数据库是指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。所以,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

3.2. 优点(Advantage)

  1. 易扩展:NoSQL的数据之间无关系,这样就非常容易扩展。这可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载;
  2. 数据存储模式灵活:无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。这使得它非常适用于SNS(Social Networking Services)中,例如facebook,微博这些需要经常进行更新与用户数据更新的系统。

3.3. 缺点(Disadvantage)

  1. 只适合存储一些较为简单的数据,较难查询复杂的数据;
  2. 不适合持久存储海量数据。

3.4. 常见的非关系数据库(Normal NoSQL)

非关系型数据库都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:

  1. 面向高性能并发读写的key-value数据库:key-value数据库的主要特点是具有极高的并发读写性能,主流代表为Redis, Amazon DynamoDB, Memcached,Microsoft Azure Cosmos DB和Hazelcast;
  2. 面向海量数据访问的面向文档数据库:文档存储通常使用内部表示法,可以直接在应用程序中处理,主要使用的是JSON。JSON文档也可以作为纯文本存储在键值存储或关系数据库系统中。主流代表为MongoDB,Amazon DynamoDB,Couchbase,Microsoft Azure Cosmos DB和CouchDB;
  3. 面向搜索数据内容的搜索引擎:搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统,主要是用于对海量数据进行近实时的处理和分析处理,可用于机器学习和数据挖掘。主流代表为Elasticsearch,Splunk,Solr,MarkLogic和Sphinx;
  4. 面向可扩展性的分布式数据库:这类数据库的主要特点是具有很强的可拓展性。可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。主流代表为Cassandra,HBase,Microsoft Azure Cosmos DB,Datastax Enterprise和Accumulo。

4. 对比(Compared)

  1. 数据存储方式不同。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据;与其相反,非关系型数据通常存储在数据集中,就像文档、键值对或者图结构;
  2. 数据模式不同。在sql中,必须先定义好表结构,才能够添加数据,例如定义表的主键、索引、外键等。表结构可以在定义之后更新,但是如果有比较大的结构变更,就会变的比较复杂;在Nosql数据库中,数据可以在任何时候任何地方添加,不需要预先定义;
  3. 扩展方式不同。要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了,但这种方式最终肯定会达到纵向扩展的上限;而NoSQL数据库是横向扩展的,其扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载;
  4. 对事务性的支持不同。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务;在Nosql中没有事务这个概念,每一个数据集都是原子级别的;
  5. 查询速度不同。关系型数据库将数据存储在硬盘中,查询速度较慢;Nosql数据库将数据存储于缓存之中,而且不需要经过SQL层的解析,查询速度快。

5. 总结(Conclusion)

本文的主要讲述了关系式数据库与非关系式数据库各自的特点,并对比了它们之间的差异。

6. 参考资料(Reference)

关系型数据库百度百科
非关系型数据库百度百科
简述关系型数据库和非关系型数据库
关系型数据库和非关系型数据库区别?
关系型数据库 VS 非关系型数据库

版权声明

转载请注明出处

你可能感兴趣的:(#,SQL,数据库,mysql,nosql)