AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
Java
SQL & Hibernate
级别 18
并发事务的问题
SQL & Hibernate
等级 18,
课时 0
1.1 简介 现在乐趣开始了——交易如何运作的理论。当您在不同线程中更改相同数据时,如何保持系统正常工作?或者您想在另一笔交易中执行一笔交易?我们将开始通过研究事务的隔离性来寻找这些问题的答案…… 事务隔离级别是一个条件值,它决定了由于 DBMS 中逻辑并行事务的执行,允许不一致数据的程度。事务隔离级别的规模包含许多值,从低到高排列;更高的隔离级别对应于更好的数据一致性,但它的使用可能会减少物理上并行事务的数量。 相反,较低的隔离级别允许更多并行事务,但会降低数据准确性。因此
事务隔离级别
SQL & Hibernate
等级 18,
课时 1
2.1 读未提交 “事务隔离级别”是指DBMS内部机制(即不需要特殊编程)对事务并行执行过程中出现的上述所有或部分类型的数据不一致的保护程度。SQL-92 标准定义了四个隔离级别的范围: 读取未提交 读提交 可重复读 可序列化 第一个是最弱的,最后一个是最强的,后面的每一个都包含了前面的所有。 最低(第一)隔离级别。如果多个并行事务试图修改同一个表行,那么最后一行的值将由整个成功完成的事务集决定。在这种情况下,不仅可以读取逻辑上不一致的数据,还可以读取尚未记录更改的数据。 实
酸概念
SQL & Hibernate
等级 18,
课时 2
3.1 酸的出现 缩写词 ACID于 1983 年首次出现在 Theo Haerder 和 Andreas Reuter 的一篇文章中。为了简化文字并使其更具说服力,我将对本文的一个片段进行翻译(略有删减)。此代码段使用银行交易示例,其中资金从一个帐户转移到另一个帐户。 事务的概念,在示例中包括$BEGIN_TRANSACTION和之间与数据库的所有交互$COMMIT_TRANSACTION,要求所有操作不可分割地执行:要么所有操作都正确反映在数据库状态中,要么什么都不发生。
C.A.P.定理
SQL & Hibernate
等级 18,
课时 3
4.1 关于 Brewera 的一致性 首先,Eric Brewer 不是,也从未声称自己是数据库专家。他属于分布式系统社区,他在“分布式计算原理”会议上发表了著名的演讲,其中出现了 CAP“定理”。(顺便说一下,十年后的 2010 年,他再次在同一个会议上作了受邀演讲,在这次演讲中,他特别给出了一些分布式系统的例子,其发展考虑到了“定理”的 CAP。)在这方面对数据库领域中使用的术语有自己的解释。 特别地,术语“立即一致性”是指在用户收到系统关于某个数据更新操作成功完成的通
交易等
SQL & Hibernate
等级 18,
课时 4
5.1 同时性问题 让我们从一个遥远的理论开始。 程序员创建的任何信息系统(或简单地说,一个应用程序)都由几个典型的块组成,每个块都提供一部分必要的功能。例如,缓存用于记住资源密集型操作的结果以确保客户端更快地读取数据,流处理工具允许您将消息发送给其他组件进行异步处理,批处理工具用于“以一定的周期性“耙”累积的数据量。 . 在几乎每个应用程序中,数据库 (DB) 都以一种或另一种方式涉及,它们通常执行两个功能:从您那里收到数据时存储数据,然后根据请求提供给您。很少有人会想到创
碱与酸
SQL & Hibernate
等级 18,
课时 5
6.1 缩写之战:BASE vs. 酸 “在化学中,pH 测量水溶液的相对酸度。pH 范围从 0(强酸性物质)到 14(强碱性物质);25°C 的纯水的 pH 值为 7,呈中性。 数据工程师用这个比喻来比较数据库的交易可靠性。” 可能的想法是:pH 值越高,即 数据库越接近“碱性”(“BASE”),交易越不可靠。 流行的关系型数据库,如MySQL,就是在ACID的基础上出现的。但是在过去的十年里,所谓的 NoSQL 数据库,在这个名称下结合了几种非常不同类型的数据库,在没有
如何在您的应用程序中实施 ACID:理论
SQL & Hibernate
等级 18,
课时 6
7.1 为什么需要 我们已经详细讨论了 ACID 的所有属性、它们的用途和用例。如您所见,并非所有数据库都提供 ACID 保证,为了更好的性能而牺牲它们。因此,很可能在您的项目中选择了不提供 ACID 的数据库,并且您可能需要在应用程序端实现一些必要的 ACID 功能。而且,如果您的系统被设计为微服务或某种其他类型的分布式应用程序,那么一个服务中的正常本地事务现在将变成分布式事务——当然,将失去其 ACID 特性,即使数据库每个单独的微服务都是 ACID。 我不想为您提供有关
如何在应用程序中实现 ACID:实践
SQL & Hibernate
等级 18,
课时 7
8.1 交易 ID 它被指定为 XID 或 TxID(如果有区别,请告诉我)。时间戳可以用作 TxID,如果我们想将所有操作恢复到某个时间点,它可以发挥作用。如果时间戳不够精细,可能会出现问题 - 然后事务可以获得相同的 ID。 因此,最可靠的选择是生成唯一的 UUID prod ID。在 Python 中这很容易: >>> import uuid
Please enable JavaScript to continue using this application.