常见的关系型数据库和非关系型数据及其区别

本文深入探讨了关系型数据库与非关系型数据库(NoSQL)的区别,包括各自的优点、缺点及适用场景,特别关注了大数据时代下NoSQL数据库的兴起。
数据库
  1. 简单来说,就是存放各种数据的一个仓库,也就是一些数据按照某种模型存放到存储器的一个数据集合。简称DB,DataBase
  2. 那么,数据有了,就需要管理,用来操纵和管理数据的软件就是数据管理系统 简称DBMS,DataBase Managent System
  3. 那么 把上面这两个放到一起,也就是带有数据库并配置了管理系统的计算机系统 就是数据库系统 简称DBS,DataBase System
导读:

在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来解释数据库中抽象的数据架构。然而,在信息技术爆炸式发展的今天,大数据已经成为了继云计算,物联网后新的技术革命,关系型数据库在处理大数据量时已经开始吃力,在一个以传统机械硬盘为主导的年代,硬盘很可能会成为性能的短板,开发者只能通过不断地优化数据库来解决数据量的问题,但优化毕竟不是一个长期方案,所以人们提出了一种新的数据库解决方案来迎接大数据时代的到来——NoSQL(非关系型数据库)。

关系型数据库

在这里插入图片描述
相互之间有关系的数据集合到一起 就是关系型数据库,需要建表,建库,也就是事先要有组织结构

优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

非关系型数据库

在这里插入图片描述

非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言),不需要事先定义结构,也就是不需要建表建库等,每条记录可以又不同的类型和约束条件。

优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。

缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠

mysql VS MongoDB

传统数据库设计思维中,项目的设计阶段需要对数据库表中的字段名称、字段类型、进行规定,如果尝试插入不符合设计的数据,数据库不会接受这条数据以保证数据的完整性。

--数据库字段:NAME, SONG

INSERT INTO T_INFO VALUES('John','Come Together');  --成功

INSERT INTO T_INFO VALUES('小明', 20, 'xiaoming@111.com');  --失败

NoSQL采用的是对集合(类似"表")中的文档(类似于"行")进行动态追加,在创建集合之初不会对数据类型进行限定,任何文档都可以追加到任何集合中去,例如我们可以将这样两条文档添加到一个集合中去:

{"name" : "John", "song" : "Come Together"}

{"name" : "小明",  "age":"20", "email" : "xiaoming@111.com"}

MongoDB中文档的格式类似于我们常见的JSON,由此可见,我们第一个拥有"name"、“song"两个字段,而第二个拥有"name”、“age”、"email"三个字段,这在预设计模式中的数据库是不可能插入成功的,但在MongoDB的动态模式是可以的,这样做的优势是我们不必为一些数量很少,但种类很多的字段单独设计一张表,可以将他们集中在单独一张表进行存储,但这样做的弊病也是显而易见的,我们在获取数据时需要对同一张表的不同文档进行区分,增加了开发上的代码量。所以在设计之初需要权衡动态模式的优劣来选择表中的数据类型。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

### 常见的关系型数据库非关系型数据库对比 #### 关系型数据库的特点 关系型数据库(RDBMS),如Oracle、DB2、Microsoft SQL Server MySQL,遵循ACID属性(原子性、一致性、隔离性持久性)。这些系统通过表格来存储数据,并利用SQL作为查询语言。它们能够处理复杂的事务操作以及提供强大的数据一致性完整性约束。 - **结构化模式**:定义固定的表结构,在创建之前就需要确定好列名及其类型[^1]。 - **复杂查询能力**:支持JOIN等高级查询功能,可以轻松实现跨多个表之间的联接检索。 - **严格的一致性模型**:确保每次更新都能立即反映在整个系统中,即所谓的强一致性[^2]。 ```sql -- 创建一个简单的员工信息表的例子 CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), department_id INT, FOREIGN KEY (department_id) REFERENCES departments(id) ); ``` #### 非关系型数据库的特点 非关系型数据库(NoSQL)则更加灵活多样,适用于大规模分布式环境下的海量数据分析场景。这类数据库通常不强制要求预设固定架构,允许动态扩展字段;而且很多情况下会牺牲一定的即时一致性换取更高的性能表现可用度。 - **多种数据模型**:包括键值对(Key-value),文档(Document),宽列(Column-family) 及图(Graph)等形式[^3]。 - **高可扩展性**:易于水平分割(sharding), 能够快速适应增长中的业务需求变化。 - **最终一致性**:对于某些特定应用场景来说可能更合适的选择,因为其允许多版本并发控制(MVCC)。 | 数据库种类 | 特征描述 | | --- | --- | | 键值存储 | Redis, DynamoDB 提供高效的缓存机制服务端session管理等功能| | 文档导向 | MongoDB, Couchbase 支持JSON/BSON格式的数据表示方式| | 宽列家族 | Cassandra, HBase 设计用于处理非常大的数据集| | 图形网络 | Neo4j, Amazon Neptune 专注于实体间关系建模| #### 对比总结 当面对需要频繁执行复杂查询的应用程序时,应该优先考虑采用传统意义上的关系型数据库解决方案;而对于那些追求极致吞吐量或是有着特殊领域特性的项目,则可以根据实际情况选用合适的非关系型产品来进行优化部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值