关系型数据库和非关系型数据库的比较
86 浏览量
更新于2024-08-28
收藏 182KB PDF 举报
关系型数据库和非关系型数据库
关系型数据库是指使用表来存储和管理数据的数据库系统。其核心概念是关系,即表内数据之间的关系和表之间的关系。表内数据是严格的对应关系,字段缺一不可,值缺一不可,也就是一致的数据结构。这也就是 Django 新增字段时,需要删掉数据,重新 migrate。表之间的关系有三种:一对一、一对多、多对多。关系模型指的就是二维表格模型。
关系型数据库以行和列的形式存储数据,行和列的形式被称为表,表是由一组相关实体组成的集合。一组表组成了数据库。表中的一行称为关系的一个元组,用来存储事物的一个实例;表中的一列称为关系的一个属性,用来描述实体的某一特征。表内字段的组成一样,即便某个数据不需要某个字段,系统也会强加上这个字段及默认值,这种结构便于表与表之间进行操作,但它也是关系数据库性能瓶颈的一个因素。
关系型数据库理论-ACID:
关系型数据库理论是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。
1. 原子性(Atomicity):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有被执行过一样。
2. 一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
3. 隔离性(Isolation):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
4. 持久性(Durability):事务一旦提交成功,数据库将确保事务对数据的更改是持久的,即使在系统崩溃或断电的情况下,也不会丢失事务所做的更改。
关系型数据库的优点:
* 结构化的数据存储方式使得数据之间的关系变得清晰
* 支持事务处理,确保数据的一致性和可靠性
* 支持多用户并发访问,提高系统的性能和效率
关系型数据库的缺点:
* 由于数据之间的关系限制,导致数据的灵活性和可扩展性不强
* 数据库的设计和实现需要考虑到数据之间的关系,增加了设计和实现的难度
* 数据库的性能可能会受到影响,特别是在大规模数据的情况下
非关系型数据库:
非关系型数据库是指不使用表来存储和管理数据的数据库系统。非关系型数据库可以存储大量的非结构化数据,例如图片、视频、文本等。非关系型数据库的优点是灵活性和可扩展性强,可以存储大量的数据,且可以很好地处理大规模数据。
非关系型数据库的优点:
* 灵活性和可扩展性强,可以存储大量的非结构化数据
* 可以很好地处理大规模数据
* 数据库的设计和实现相对简单
非关系型数据库的缺点:
* 数据之间的关系不明确,可能会导致数据的一致性和可靠性下降
* 由于数据之间的关系不明确,可能会导致数据的冗余和重复
* 数据库的性能可能会受到影响,特别是在大规模数据的情况下
关系型数据库和非关系型数据库各有其优缺点,选择哪种数据库系统取决于实际应用场景和需求。
2022-07-14 上传
2021-10-13 上传
2021-10-07 上传
2023-04-04 上传
2024-12-27 上传
2024-12-27 上传
weixin_38724349
- 粉丝: 5
- 资源: 916
最新资源
- Wiki-Definition-crx插件
- python官方3.9.0b4-amd64版本exe安装包
- python:Python书籍和课程
- gh-actions:体验GitHub动作
- Auto-Convert CSV to XLSX-crx插件
- pycrumbs:来自互联网的Python的点点滴滴
- Tag-Cloud-in-TipStory-Explore-Page
- 学习:劳兹的学习阶段
- FingerLock:开源密码保护器应用
- cvxpy:针对凸优化问题的Python嵌入式建模语言
- 仿网易新闻XHNewsFramework开发框架
- 聊天js插件layim.js
- nodejs-certification-training:NodeJS应用程序开发人员认证的培训概念
- gotovimvkusno
- 云雀:云雀是Python的解析工具包,专注于人体工程学,性能和模块化
- Reddit-Effect:交互式图表显示加密货币价格与Reddit上该加密货币的帖子数量