【数据库】关系数据库与非关系数据库的优缺点汇总

1、关系数据库

1.1、什么是关系数据库?

  • 关系型数据库是依据关系模型来创建的数据库。
  • 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
  • 关系型数据可以很好地存储一些关系模型的数据,比如学校老师和学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)。
  • 关系模型是我们生活中能经常遇见的模型,存储这类数据一般用关系型数据库。
  • 关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。

1.2、关系数据库的代表

(1)Oracle :

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。

(2)SQL Server

美国Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。

(3)Sybase

基于客户/服务器体系结构的数据库。
一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。
而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。

(4)Access

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。

(5)DB2

DB2是IBM一种分布式数据库解决方案。
DB2就是IBM开发的一种大型关系型数据库平台。它支持多用户或应用程序在同一条SQL语句中查询不同database甚至不同DBMS中的数据

(6)MySQL

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。

(7)VFP

Visual FoxPro ,是Microsoft公司从Fox公司的FoxBase数据库软件经过数次改良,并且移植到Windows之后,得来的应用程序开发软件,主要用于开发数据管理与运算等方面的软件。VFP是Microsoft公司推出的最新可视化数据库管理系统平台,是功能特别强大的32位数据库管理系统。它提供了功能完备的工具、极其友好的用户界面、简单的数据存取方式、独一无二的跨平台技术,具有良好的兼容性、真正的可编译性和较强的安全性,是目前最快捷、最实用的数据库管理系统软件之一。

(8)FoxPro

FoxPro是一种功能强大的数据库,是当今最受欢迎的数据库管理软件之一.
FoxPro比FoxBASE在功能和性能上又有了很大的改进,主要是引入了窗口、按纽、列表框和文本框等控件,进一步提高了系统的开发能力。

1.3、优缺点

优点:

(1)数据之间有关系,进行数据的增删改查的时候是非常方便的

(2)关系型数据库是有事务操作的,保证数据的完整性和一致性。

缺点:

(1)因为数据和数据是有关系的,底层是运行了大量的算法

(2)大量算法会降低系统的效率,会降低性能

(3)面对海量数据的增删改查的时候会显的无能为力

(4)海量数据对数据进行维护变得非常的无力

2、非关系数据库

2.1、什么是非关系数据库?

  • 非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)
  • 非关系型模型比如有:
    • 列模型:存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,数据即索引,IO很快,主要是一些分布式数据库)
    • 键值对模型:存储的数据是一个个“键值对”,比如name:liming,那么name这个键里面存的值就是liming
    • 文档类模型:以一个个文档来存储数据,有点类似“键值对”。

2.2、 非关系数据库的分类

2.3、 常见的NoSQL数据库

(1)MongoDB:面向文档的数据库

MongoDB是个面向文档的数据库,使用JSON风格的数据格式。它非常适合于网站的数据存储、内容管理与缓存应用,并且通过配置可以实现复制与高可用性功能。

MongoDB具有很强的可伸缩性,性能表现优异。它使用C++编写,基于文档存储。此外,MongoDB还支持全文检索、跨WAN与LAN的高可用性、易于实现的复制、水平扩展、基于文档的丰富查询、
在数据处理与聚合等方面具有很强的灵活性。

(2)CouchDB:面向文档的数据库

这也是Apache软件基金会的一个项目,CouchDB是另一个面向文档的数据库,以JSON格式存储数据。它兼容于ACID,像MongoDB一样,CouchDB也可以用于存储网站的数据与内容,以及提供缓存等。
你可以通过JavaScript在CouchDB上运行MapReduce查询。此外,CouchDB还提供了一个非常方便的基于Web的管理控制台。它非常适合于Web应用。

(3)Redis:键值存储

这是个开源、高级的键值存储。由于在键中使用了hash、set、string、sorted set及list,因此Redis也称作数据结构服务器。这个系统可以帮助你执行原子操作,比如说增加hash中的值、集合的交集运算、字符串拼接、差集与并集等。Redis通过内存中的数据集实现了高性能。此外,该数据库还兼容于大多数编程语言。

(4)Riak

Riak是最为强大的分布式数据库之一,它提供了轻松且可预测的伸缩能力,向用户提供了快速测试、原型与应用部署能力,从而简化应用的开发过程。

(5)Cassandra:面向列的数据库

这是个Apache软件基金会的项目,Cassandra是个分布式数据库,支持分散的数据存储,可以实现容错以及无单点故障等。换句话说,“Cassandra非常适合于那些无法忍受数据丢失的应用”。

2.4、优缺点

优点:

(1)海量数据的增删改查是可以的

(2)海量数据的维护和处理非常轻松

缺点:

(1)数据和数据没有关系,他们之间就是单独存在的

(2)非关系数据库没有关系,没有强大的事务关系,没有保证数据的完整性和安全性

3、两种数据库对比