数据库和ACID

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 数据库和ACID

数据库的简介

数据库技术的发展可以追溯到20世纪60年代。以下是数据库的历史介绍:

  1. 层次数据库模型(1960年代):最早的数据库模型之一是层次数据库模型,由IBM研究员Charles Bachman在1960年代提出。该模型将数据组织为一个层次结构,通过父子关系连接数据。然而,这种模型存在不足之处,无法灵活处理复杂的数据关系。
  2. 网状数据库模型(1960年代):在层次模型的基础上,网状数据库模型于1960年代被提出。这种模型允许多个实体之间建立复杂的关联关系,形成一个网状结构。但是,网状数据库模型复杂度高,管理和维护较为困难。
  3. 关系数据库模型(1970年代):在1970年代,IBM的研究员Edgar F. Codd提出了关系数据库模型,奠定了现代数据库管理系统的基础。关系模型使用关系表来组织数据,其中包含了行和列。这种模型具有数据的一致性、完整性和可扩展性等优点,并由此诞生了SQL(Structured Query Language)作为数据库操作语言。
  4. 面向对象数据库(1980年代):随着面向对象编程方法的兴起,面向对象数据库(OODB)模型也应运而生。这种模型将数据组织为对象的集合,与面向对象程序设计紧密结合,以更好地存储和处理对象数据。面向对象数据库可以更自然地表示和处理复杂的对象关系。
  5. 键值存储和文档数据库(2000年代):随着Web的快速发展,大规模的分布式系统和非结构化数据的存储需求增加。键值存储和文档数据库成为了应对这些挑战的解决方案。键值存储数据库使用简单的键-值对存储数据,而文档数据库则以类似JSON或XML的格式存储非结构化数据。
  6. NoSQL和NewSQL(2010年代):在过去的几年中,随着云计算、大数据和实时数据处理的兴起,NoSQL(Not Only SQL)数据库和NewSQL数据库得到了广泛的关注。NoSQL数据库提供了非关系型的灵活性和可伸缩性,适用于大规模和分布式环境。而NewSQL数据库则是对传统关系数据库进行扩展和优化,以更好地满足高并发和高吞吐量的需求。

数据库的发展经历了层次数据库、网状数据库、关系数据库、面向对象数据库、键值存储和文档数据库,以及NoSQL和NewSQL等不同阶段。每个阶段的数据库模型都在不同的应用场景中发挥了重要作用,并推动了数据库技术的进步和创新。

数据库分类和ACID原则

ACID原则

是指数据库事务的四个关键特性,用于确保数据的一致性和可靠性。下面是各个特性的解释:

  1. 原子性(Atomicity):事务被视为一个不可分割的操作单元,要么全部执行成功,要么全部回滚。如果事务中的任何一个操作失败,整个事务都会被回滚到原始状态,保证数据的完整性。
  2. 一致性(Consistency):在事务开始和结束之间,数据库的状态必须保持一致。这意味着事务执行前后数据库中的数据必须满足所有预定义的规则、约束和完整性条件。事务执行后,无论成功还是失败,数据库都应处于一致的状态。
  3. 隔离性(Isolation):并发执行的多个事务之间应该互不干扰,每个事务是独立的,不会对其他事务产生影响。并发事务的执行结果应当与串行执行时的结果一致。隔离性可以通过锁机制或多版本并发控制(MVCC)等方式实现。
  4. 持久性(Durability):一旦事务成功提交,它对数据库的修改应该是永久性的,即使在系统故障或重启之后也是如此。通过将事务的修改记录在持久化介质(如磁盘)上,以确保数据的持久存储,从而提供持久性。

ACID原则是数据库管理系统(DBMS)确保事务正确执行和保护数据完整性的基础。它们为开发人员提供了一种可靠的方式来设计和管理事务操作,以避免数据损坏或不一致的情况。

值得注意的是,ACID原则可能会降低数据库的并发性能,因为为了保证隔离性和一致性,可能需要对某些资源进行锁定。因此,在某些高并发、大规模和分布式的应用场景中,可以考虑使用一些弱化ACID的技术,如BASE(Basically Available, Soft state, Eventually consistent)等。这些技术通常着重于可用性和分区容忍性,并牺牲了一致性的要求。

关系型数据库(RDBMS):

关系型数据库支持ACID原则;

数据以表格的形式组织,由行和列构成的结构。每个表代表一个实体集合,行表示记录,列表示属性。

数据模型基于关系模型,使用SQL进行数据操作,支持复杂的查询和事务处理。

关系型数据库对数据的强一致性和完整性提供了良好的支持,适用于需要保持数据一致性的应用场景。

著名的关系型数据库包括Oracle、MySQL、Microsoft SQL Server等。

非关系型数据库(NoSQL):

非关系型数据库不保证支持ACID原则;

非关系型数据库采用不同的数据组织方式,如文档、键值对、列族、图等。数据模型灵活,并不依赖于固定的表结构。

非关系型数据库通常不使用结构化查询语言(SQL),而是使用更简单的API进行数据操作。

非关系型数据库提供高可扩展性和分布式处理能力,适用于大规模数据的存储和处理。

非关系型数据库适用于需要高吞吐量和低延迟的应用场景,如Web应用、大数据分析等。

著名的非关系型数据库包括MongoDB、Redis、Cassandra、Neo4j等。

使用场景

关系型数据库和非关系型数据库各自适用于不同的使用场景。以下是它们常见的应用场景:

关系型数据库的使用场景:

  1. 事务处理系统:关系型数据库适用于需要保持数据一致性和完整性的事务处理系统,如企业资源计划(ERP)系统、在线银行系统等。
  2. 数据分析和报表:关系型数据库能够高效地执行复杂查询,并支持多表连接和聚合查询,适用于数据分析和生成报表的应用。
  3. 数据一致性要求高的应用:如果应用需要高度一致性并强调数据准确性,例如电子商务的订单管理、库存管理等,关系型数据库是一个较好的选择。
  4. 复杂查询和灵活的数据模型:关系型数据库通过SQL提供了强大的查询能力和灵活的数据模型设计,适用于需要复杂数据操作和关联查询的应用。

非关系型数据库的使用场景:

  1. 大规模和高并发的应用:非关系型数据库具有良好的可扩展性和高吞吐量特性,适用于大规模用户和高并发访问的应用,如社交媒体平台、实时数据处理系统等。
  2. 非结构化数据存储:非关系型数据库能够高效地存储和管理非结构化或半结构化的数据,如日志文件、传感器数据、文档、各种类型的媒体文件等。
  3. 高度可变的数据模型:非关系型数据库的灵活性使其适用于需要频繁更改和调整数据模型的应用,无需预先定义严格的表结构。
  4. 时效性要求高的应用:非关系型数据库对实时数据的处理速度较快,可在大数据环境中实现低延迟和高速度的读写操作,适用于需要快速响应和处理实时数据的应用。

需要根据具体的业务需求,对数据模型、查询需求、数据结构和性能要求进行综合考虑,选择合适的数据库类型。有时候也可以采用混合型数据库方案,如将非关系型数据库与关系型数据库结合使用,以满足不同的数据存储和查询需求。

#include <iostream>
int main() {
    std::cout << "数据库是基本技能 !" << std::endl;
    return 0;
}

关注我,不迷路,共学习,同进步

关注我,不迷路,同学习,同进步

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
数据库 数据库管理
理解数据库的ACID原则:确保数据完整性与一致性的基石
【5月更文挑战第20天】ACID原则是数据库事务处理的核心,包括原子性、一致性、隔离性和持久性。原子性保证事务操作全完成或全不完成,保持数据完整;一致性确保事务前后数据库保持一致性状态,不破坏完整性约束;隔离性防止并发事务相互影响,通过锁等技术实现;持久性则保证事务提交后的修改永久保存,即使系统故障也能恢复。这些原则确保了数据的可靠性和安全性。
|
12月前
|
关系型数据库 数据库
数据库如何保证事务的ACID特性?
数据库如何保证事务的ACID特性?
90 0
|
存储 SQL 缓存
【数据库】事务 ACID 实现原理 - 原子性 & 持久性
数据库 ACID 实现原理,Atomicity 原子性 和 Durability 持久性实现原理
275 1
|
关系型数据库 数据库 数据库管理
数据库必知词汇:ACID
对于关系型数据库的事务而言,具有四个强一致性(Strong Consistency)要求,也称为ACID.
689 0
|
关系型数据库 数据库 MySQL
|
存储 关系型数据库 MySQL
MySQL之数据库存储引擎及事务ACID特性
1、存储引擎 2、事务 3、事务语法 4、事务简单原理
1129 0
|
数据库
数据库事物四大特性-ACID
事务的:原子性、一致性、分离性、持久性   事物(transaction)是由一些列操作序列构成的执行单元,这些单元要么都做,要么不做,是一个不可分割的工作单元。数据库事物的四个基本性质(ACID)1.原子性(Atomicity)  指的是事物中包含的所有操作要么全做,要么全不做(all or none)。
931 0
|
SQL 数据库 数据库管理
谈谈数据库的ACID
谈谈数据库的ACID                                                                                                                                                                   帅宏军 一.事务        定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
1271 0
|
6天前
|
存储 关系型数据库 MySQL
|
6天前
|
存储 SQL 关系型数据库