4. 关系型数据库-基础理论
文章目录
- 前言
- 一、ORM框架
- 二、ACID、CAP、BASE
- 1. ACID
- 2. CAP
- 3. BASE
- 三、N+1问题
- 四、Normalization三范式
- 1. 第一范式(1st NF -列不可再分,原子性)
- 2. 第二范式(2nd NF-记录的唯一性约束,主键约束 )
- 3. 第三范式(3rd NF- 字段冗余性的约束,外键约束)
- 五、FMEA方法论(Failure Mode and Effects Analysis)
- 六、Profiling和PerformanceSchema查询分析
前言
基础理论
ORM框架、ACID原则、事务Transaction、N+1问题、Normalization三范式、FMEA方法论(Failure Mode and Effects Analysis)、Profiling和PerformanceSchema查询分析等
一、ORM框架
ORM全称为对象关系映射(Object-Relational Mapping),是一种将对象模型和关系数据库之间进行映射的技术。
它的主要目的是为了简化开发人员在应用程序中访问数据库的过程,通过将面向对象的语言中的对象和类转化为关系型数据库中的表和行,使得开发人员可以使用面向对象的思维来操作数据库。
- 分类有三种:
基于数据查询的ORM:通过将数据库查询结果映射为对象,以实现数据的读取、过滤和转换。
基于对象操作的ORM:通过将对象转化为对应的SQL语句,以实现数据的增删改查操作。
基于事务的ORM:通过将对象操作组合为一个事务,以确保数据的一致性和完整性。
- 优势:
简化数据库操作:ORM工具隐藏了底层数据库的细节,使开发人员可以更加专注于业务逻辑的实现,而不必关心数据库操作的细节。
提高开发效率:ORM工具自动生成数据库操作的代码,减少了手动编写SQL语句的工作量,同时还提供了很多常用的操作方法和功能,加快了开发速度。
提高代码的可维护性:ORM工具将数据库操作和业务逻辑代码分离,使得代码更加清晰和易于维护。
跨数据库的支持:ORM工具可以屏蔽不同数据库之间的差异,开发人员可以在不同的数据库之间切换而无需修改代码。
提供缓存和性能优化:ORM工具通常具有缓存机制和性能优化功能,可以提高数据库查询的效率和性能。
- 应用场景:
Web应用开发:ORM工具可以方便地与前端开发技术(如HTML、CSS、JavaScript)结合,用于开发各种类型的Web应用。
移动应用开发:ORM工具可以用于移动应用的后端开发,实现与数据库的交互。
数据分析与报表生成:ORM工具可以用于从数据库中提取数据,并进行统计分析和报表生成。
企业级应用开发:ORM工具可以与其他企业级框架(如Spring、Hibernate等)结合使用,实现大规模企业应用的开发和管理。
二、ACID、CAP、BASE
1. ACID
数据库事务中的四大特性ACID
ACID 是用来描述数据库事务的属性。反过来说,满足 ACID 属性的一系列数据库操作被称为事务。
A:原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成。
事务是一个不可分割的最小操作单元,意味着 “全有或全无”(All or Nothing)。C:一致性(Consistency):在一个事务执行之前和执行之后,也就是事务开始和完成时,数据都必须保持一致状态。意味着数据库总是从一个一致性的状态转换到另外一个一致性的状态。
I:隔离性(Isolation):在并发环境中,当不同的事务同时操作相同的数据时,事务之间互不影响。
事务通常来说是不可见的,意味着一个事务所做的修改在最终提交以前,对其他事务是不可见的。D:持久性(Durability):只要事务成功结束,它对数据库所做的更新就必须永久的保存下来。
数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元,该执行单元中的所有操作要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚。
下图解释了 ACID 在数据库事务中的含义。
对于单个节点的事务,数据库都是通过并发控制和恢复机制(日志技术)保证事务的ACID特性。
对于跨多个节点的分布式事务,通过两阶段提交协议(two phase commiting)来保证事务的ACID。
神书 DDIA (Designing Data Intensive Applications) 中关于 ACID 有几点很好的见地,值得我们思考:
一致性其实是应用程序的责任,而不是数据库的职责范围。应用程序可以使用原子性和隔离来保证数据的一致性。而数据库系统只能保证各种数据库规则被执行了。
ACID 四个属性中只有隔离是用来描述并发情况的,原子性并不描述并发情况。
各个弱隔离级别都会带来一些限制,我们需要清楚其底层机制。
2. CAP
CAP理论是分布式系统设计中的基础理论,由计算机科学家Eric Brewer在2000年提出。该理论指出,任何分布式系统,最多只能同时满足,一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个特性中的两个。
一致性(C):
所有节点在同一时间看到的数据完全相同。对分布式系统来说,写入操作成功后,所有读取操作都应该获得最新的数据。可用性(A):
系统提供的服务必须一直处于可用状态,对于用户的每一个请求总能在有限时间内返回结果(不保证是最新数据)。分区容忍性(P):
相对于传统单机数据库,分布式系统在遇到网络分区(节点间网络故障导致消息丢失或延迟)时,仍然能够继续对外提供服务。
3. BASE
BASE理论是对CAP中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
Basically Available(基本可用)
Soft state(软状态)
Eventually consistent(最终一致性)
三、N+1问题
四、Normalization三范式
三范式是具有最小冗余的表结构。具体如下:
1. 第一范式(1st NF -列不可再分,原子性)
第一范式的目标是确保每列的原子性,每列都是不可再分的最小数据单元(也称为最小的原子单元)。
2. 第二范式(2nd NF-记录的唯一性约束,主键约束 )
第二范式要求每个表只描述一件事情。满足第一范式,并且表中非主键列不存在对主键的部分依赖。
3. 第三范式(3rd NF- 字段冗余性的约束,外键约束)
第三范式定义是,要求字段无冗余。满足第二范式,并且表中的列不存在对非主键列的传递依赖。
除了主键订单编号外,顾客姓名依赖于非主键顾客编号。
五、FMEA方法论(Failure Mode and Effects Analysis)
六、Profiling和PerformanceSchema查询分析
本文的引用仅限自我学习如有侵权,请联系作者删除。
参考知识