《从Paxos到ZooKeeper》读书笔记之第一章(二)

2023-11-16

《从Paxos到ZooKeeper》读书笔记之第一章(二)

1.2从ACID到CAP/BASE

这一节由三小节,从大家数值的数据库事务的四个特性,引出来分布式事务的概念。通过对ACID模型的讨论,提出如何构建一个兼顾可用性和一致性的分布式系统方案,于是出现了诸如CAP和BASE这样的分布式经典系统理论

1.2.1 ACID

事务:
	1.多个程序并发访问数据库时,事务提供了一种进程间的隔离方法,防止互相干扰
	2.未数据库操作序列提供了一个从失败中回复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持数据一致性的方法
四个特性:
	1.原子性(Atomicity):要么全部成功执行,要么全部不执行
	2.一致性(Consistency):事务执行前后,数据库都必须处于一致性状态
	3.隔离性(Isolation):一个事务的执行不被其他事务干扰。即:不同的事务并发操作相同的数据时,每个事务都有各自完整的数据空间。
	4.持久性(Durability):一旦某个事务成功结束,那么它对数据库所做的更新必须被永久保存下来。

附:4个事务隔离级别

1.未授权读取:也被称为读未提交。即:事务B可能读取到事务A操作过程中的所有中间值。
2.授权读取:也被称为读已提交。只允许获取已经被提交的数据。即:只能看到最终值而不能看到中间值。授权读取允许不可重复读取。
3.可重复读取:保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻是一致的。因此该事务级别禁止了不可重复读取和脏读取,但可能出现幻读
4.串行化:最严格的事务隔离级别,所有事务都被串行执行。

通常优先考虑将数据库系统的隔离级别设置为授权读取。至于不可重复读,幻读,第二类丢失更新等并发问题,可以由应用程序主动采用悲观锁和乐观锁来进行事务控制。

隔离级别对别

隔离级别 脏读 可重复读 幻读
未授权读取 存在 不可以 存在
授权读取 不存在 不可以 存在
可重复读取 不存在 可以 存在
串行化 不存在 可以 不存在
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《从Paxos到ZooKeeper》读书笔记之第一章(二) 的相关文章

  • 集训第一周 Linux

    1 创建一个用户user1 用root身份给user1修改密码为redhat 提示 创建用户用useradd user1 2 切换到user1用户 给自己修改一个密码 密码任意 3 在 root 目录中创建一个以自己的汉语拼音为名字的文件
  • QML学习一:QtCreator编译器主题背景设置

    效果如下 QML学习一 QtCreator编译器主题背景设置 前言 一 工具栏菜单栏背景设置 二 文本编辑区域设置 总结 前言 工欲善其事必先利其器 为了更好地开发代码 我们先将QtCreator界面改为模仿Vs2019主题样式 这样开发起
  • Unity3d中所有特殊的文件夹

    1 Editor Editor文件夹可以在根目录下 也可以在子目录里 只要名子叫Editor就可以 比如目录 xxx xxx Editor 和 Editor 是一样的 无论多少个叫Editor的文件夹都可以 Editor下面放的所有资源文件

随机推荐

  • svn清理本地已经删除的文件,注意事项

    点击项目目录下空白处点击trotoiseSVN后点击检查修改 在里面删除你想要删除的已删除文件即可 分支操作注意事项 在切换分支前记得提交本地代码的修改 否则会合并到切换后的分支去 切记 哎
  • Java使用MongoTemplate实现多条件、模糊查询、排序、范围、分页查询

    场景 查询客户列表 不同条件之间取交集 且的关系 单个条件内取并集 或的关系 实现细节如下 1 全等于 手机号全字匹配 2 模糊查询 客户名称模糊搜索 3 单个条件查询多个字段 客户编号 4 日期范围 近期消费时间 5 数值范围 消费总金额
  • Ubuntu使用haar+adaboost训练进行手势识别

    手势识别开源代码千千万 为啥我要用此方法 原因有三 首先 我们项目要求这个手势识别是不分环境的 也就是半夜三更黑灯瞎火也能用 这一下子就把纯RGB的方式给去除了 而且也要考虑用户戴手套 手套颜色不限制 使用 那么肤色过滤什么的咱们再见 其次
  • 毕业设计 2023-2024年最新python毕设选题题目推荐汇总

    文章目录 0 前言 1 python 算法类 毕设选题 2 python 数据挖掘 毕设选题 3 python 大数据处理 云计算 区块链 毕设选题 4 python 网络安全 毕设选题 5 python 游戏设计 动画设计类 毕设选题 适
  • Java实现Kruskal算法

    一 kruskal算法简介 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法 与prim算法不同 它的时间复杂度为O eloge e为网中的边数 所以 适合于求边稀疏的网的最小生成树 二 实现步骤 部分流程图 废话不多说 直接上代码 这张图
  • python绘制余弦曲线图_Python可视化中的Matplotlib绘图(1.画图,网格,子图,画正余弦图,坐标轴界限,画圆,)...

    1 一张基本的图标包含的元素 x轴和y轴 以及他们的刻度线 标签 绘图区域 import matplotlib pyplot as plt 导入绘图模块 import numpy as np 导入需要生成数据的numpy模块 只有一个曲线图
  • 计算机网络常见面试题总结(二)

    本文主要内容转载自 http blog csdn net u013408431 article details 62442670 locationNum 10 fps 1 面试中网络方面的知识被问到的概率很大 尤其是互联网公司 要熟悉osi
  • 垃圾短信识别python步骤详细_python数据挖掘第三篇-垃圾短信文本分类

    文本分类总体上包括8个步骤 数据探索分析 数据抽取 文本预处理 分词 去除停用词 文本向量化表示 分类器 模型评估 重要python库包括numpy 数组 pandas 用于处理结构化数据 matplotlib 绘制词云 便于直观表示 sk
  • java压缩包打不开_java.util.zip.ZipException: error in opening zip file 问题处理

    java util zip ZipException error in opening zip file 这个问题的字面意思是压缩包打不开 我这出现的问题是jar包损坏 打不开 linux系统可以使用命令判断jar 是否正常 jar vtf
  • Axure RP 万能的标签切换面板-动态面板切换

    切换面板在网页中算是非常常见的 如视频网站的电视剧分类标签 资讯网站的资讯分类等 这些交互效果都可以利用动态面板的几个状态来进行相互切换得来 下面来介绍一下如何制作这样的标签 步骤1 从部件库中拖拽一个动态面板到线框图编辑区中 并在 部件交
  • STM32Cube HAL库——ADC电压采集

    STM32Cube HAL库 ADC电压采集 一 ADC基本介绍 模拟数字转换器 即A D转换器 或简称ADC Analog to Digital Converter 通常是指一个将模拟信号转变为数字信号的电子元件 通常的模数转换器是将一个
  • 斗地主游戏

    牌属性类 package Java project 1 import java util Objects public class Card private String size 点数 private String color 花色 pr
  • UE4:自定义Slate 点击保存 出现USlot ReleaseSlateResources() 异常

    Error AssetLog Test uasset Leak Detected CustomWidget 43 CustomWidget still has living Slate widgets it or the parent Ca
  • pyQt5 学习笔记(19)QFrame 边框设置

    文章目录 一 QFrame 简介 二 QFrame 的创建 三 组合效果图 四 QFrame 的功能 API 1 功能 2 QFrame 结构 3 使用总结 1 挑选目标样式 2 根据参数写程序 五 信号 一 QFrame 简介 QFram
  • mysql 数组_MySQL如何实现数组功能

    前段时间想要用数组功能实现某些需求 结果发现mysql不支持数组 这个确实让人很头痛 查阅官方文档 也没有这一方面的资料 结果在网上 看到了某仁兄贴出了变相实现的一种方法 代码如下 DELIMITER DROP DATABASE IF EX
  • 【Ubuntu】使用grub2挂载NFS根文件系统(rootfs)

    经常调试arm开发板的同学应该比较熟悉uboot 它可以使用tftp自动下载内核并通过nfs挂载rootfs 其实 作为x86平台常见的bootloader grub也可以做到通过nfs挂载rootfs 安装grub2 目前新版的ubunt
  • 云vscode搭建--使用容器化部署

    Vscode作为一个轻量级的IDE 其支持丰富的插件 而通过这些插件我们就可以实现在Vscode中写任何语言的代码 Code Server是Vscode的网页版 启动Code Server之后我们就可以在浏览器中打开vscode来愉快的编写
  • java 分页page_java分页PageHelper的使用

    我以前写分页都是些工具类后面偶然的机会发现了这个pagehelper在github上开源框架 maven依赖 com github pagehelper pagehelper 5 1 6 只需要在service层加上然后在controlle
  • 网络安全单兵工具 -- YAKIT

    网络安全单兵工具 YAKIT 一 下载及安装 1 原作者及下载地址 https github com yaklang yakit 2 双击下载好的exe文件 点击核心引擎安装与升级 3 点击意见更新Yak引擎 4 以管理员启动 5 点击连接
  • 《从Paxos到ZooKeeper》读书笔记之第一章(二)

    从Paxos到ZooKeeper 读书笔记之第一章 二 1 2从ACID到CAP BASE 这一节由三小节 从大家数值的数据库事务的四个特性 引出来分布式事务的概念 通过对ACID模型的讨论 提出如何构建一个兼顾可用性和一致性的分布式系统方