Distributed Transactions at Scale in Amazon DynamoDB——论文泛读

ATC 2023 Paper 论文阅读笔记整理

问题

NoSQL云数据库服务因其简单的键值操作、高可用性、高可扩展性和可预测的性能而广受欢迎。尽管NoSQL数据库很实用,但它们通常不支持事务。

键值存储等NoSQL数据库是关系数据库的一种替代方案,它强调可扩展性和性能,尤其是对于将核心数据迁移到云中的客户而言。牺牲了关系数据库的核心功能,包括SQL查询和事务,以提供自动分区以实现无限的可扩展性、复制以实现容错以及低延迟访问以实现可预测的性能。

挑战

  • 事务作为单一请求提交。DynamoDB事务包括一组作为单个请求提交的操作,这些操作要么成功,要么失败,而不会阻塞。与其他DynamoDB操作一样,事务在规模上提供可预测的性能,这是DynamoDB的架构原则。

  • 事务依赖于事务协调器,而非事务操作则绕过两阶段协调器。DynamoDB中的所有非事务操作都直接在存储服务器上执行,用于访问的数据,同时仍针对多项目事务进行序列化。

  • 事务原地更新项目。DynamoDB不支持同一项目的多个版本,添加多版本并发控制将需要对存储服务器进行大量更改,需要版本保留策略,并引入额外的存储成本,这些成本需要转嫁给我们的客户。用于事务处理的单一版本存储的含义是只读事务和读写事务可能会冲突。

  • 事务会获取锁。为了简化设计并利用低争用工作负载,DynamoDB使用了一种完全避免锁的乐观并发控制方案。

  • 事务使用时间戳按顺序排序。基本思想是为每个事务分配一个时间戳,该时间戳定义其在序列顺序中的位置,只要事务在指定的时间执行就可以实现序列化。DynamoDB事务设计中的一个关键创新是扩展时间戳排序,以适应和利用键值存储的语义。

本文方法

本文解释了如何使用时间戳排序协议将事务添加到Amazon DynamoDB,同时利用键值存储的语义来实现事务和非事务操作的低延迟。还说明了如何在实践中使用事务,还说明了事务通过服务的路径,描述了对混合事务和键值存储上的单例操作的工作负载的时间戳排序的优化。

针对生产实现的实验结果表明,可以在不影响性能、可用性或规模的情况下支持具有完整ACID属性的分布式事务。

实验

实验对比:吞吐量、延迟、事务和非事务对比、取消率

总结

目标在不影响客户所期望的规模、可用性、耐用性和可预测性的情况下,将事务添加到DynamoDB。作者时间戳排序将事务设计为具有乐观并发控制的单次操作,以确保事务既可串行化又可扩展。同时实现各种事务要求:事务作为单一请求提交;事务依赖于事务协调器,而非事务操作则绕过两阶段协调器;事务原地更新项目;事务不获取锁;事务使用时间戳按顺序排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博捷芯划片机在半导体芯片切割领域的领先实力

在当今高速发展的半导体行业中,芯片切割作为制造过程中的核心技术环节,对设备的性能和精度要求日益提升。在这方面,国内知名划片机企业博捷芯凭借其卓越的技术实力和持续的创新精神,成功研发出具备完全自主知识产权的半导体切割划…

FFmpeg教程:libswscale对图像进行简单处理

我们在FFmpeg简单总结对FFmpeg 组成模块,编码进行了简单介绍。 FFmpeg组成部分: libavcodec: 提供了音视频编解码器的库。 libavformat: 处理多媒体容器格式的库,包括封装和解封装。 libavutil: 包含一些公…

MySQL 8.3 发布,具体有哪些新增和删减?

MySQL 8.3 主要更新:用于标记事务分组的 GTID、JSON EXPLAIN 格式增强、一些功能删除等。 MySQL 是一款广泛使用的开源的关系型数据库管理系统,已推出其最新版本 MySQL 8.3。它带来了新功能和一些删除,有望简化数据库操作。让我们来看看有哪些…

基本的 Socket 模型

什么是Socket Socket 的中文名叫作插口,咋一看还挺迷惑的。事实上,双方要进行网络通信前,各自得创建一个 Socket,这相当于客户端和服务器都开了一个“口子”,双方读取和发送数据的时候,都通过这个“口子”…

用通俗易懂的方式讲解:太棒了!构建大模型 Advanced RAG(检索增强生成)的速查表和实战技巧最全总结来了!

新的一年开始了,也许您正打算通过构建自己的第一个RAG系统进入RAG领域。或者,您可能已经构建了基本的RAG系统,现在希望将它们改进为更高级的系统,以更好地处理用户的查询和数据结构。 无论哪种情况,了解从何处或如何开…

c++类与对象(五):友元、内部类、临时对象、匿名对象

上次重新再次补全了构造函数的内容,以及static成员:C类与对象(四):再谈构造函数(详解初始化列表)、Static成员 今天就来进行类与对象最后一部分的内容 文章目录 1.友元1.1友元函数1.2友元类 2.内…

JVM系列-4.类加载器

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理🔥如果感觉博主的文…

LeetCode670.最大交换

我真的怀疑他是不是难度等级评错了,因为感觉没到中级,总之先看题吧 给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。示例 2 : 输入: 9973 输出:…

常用的三维尺寸公差分析软件有哪些?各有什么特点?

公差分析软件主要用于产品设计和制造过程中,帮助工程师们评估和控制产品的尺寸和公差。以下是一些常用的公差分析软件: 1.DTAS3D是一种用于三维尺寸公差分析的软件系统。 DTAS软件可以帮助工程师和设计师对零件和装配体的尺寸公差进行分析,…

Python os模块

简介 Python的os模块是一个标准库模块,用于提供与操作系统相关的功能(相当于接口)。os模块允许Python程序与文件系统、目录结构、进程管理等操作系统级别的功能进行交互。 主要功能 文件和目录操作 创建、删除、重命名文件和目录&#xf…

centos7安装pip

centos7 没有python-pip包就执行命令 yum -y install epel-release 执行成功之后,再次执行 yum install python-pip 对安装好的pip进行升级 pip install --upgrade pip 至此,pip工具就安装好了。 所有的问题都是最后一刻解决,如果没有解决…

智慧工业园区建设方案-智慧化工园区物联网管理系统平台---豌豆云

将化工园区海量信息互联、互通、互融,结合化工园区建设管理经验,通过“动态感知、主动监测、政企联动、综合管理”。 将事件管理从事后处置变为事前防控,保障生产安全,提升环保水平,结合可视化大屏,帮助管…

静态路由实验

一:实验内容 二:实验分析 (一):实验要求 1、R6为ISP,接口IP地址均为公有地址;该设备只能配置IP地址,之后不能再对其进行其他任何配置; 2、R1-R5为局域网&#xff0c…

Vue.js代码检查

一、CSS 1、属性可安全的替换为速记形式 .el-dialog .el-dialog__header .el-dialog__body {padding: 0 40px;padding-top: 4px;}.el-dialog .el-dialog__header .el-dialog__body {padding: 4px 40px 0;} 2、度量单位冗余 padding: 0px 20px;// 修改后 padding: 0 20px; 3、…

过滤器监听器拦截器AOP

过滤器、监听器、拦截器、AOP的实现 一、过滤器 Filter ​ 在传统的Servlet容器中,可以使用过滤器和监听器,在Java框架中还可以使用拦截器。 ​ 过滤器,这里指的是Servlet过滤器,它是在Java Servlet中定义的,能够对…

EasyExcelFactory 导入导出功能的实战使用

EasyExcelFactory 导入导出功能的实战使用分享&#xff1a; 1、jar包引入 <!-- 阿里巴巴Excel处理--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.6</version></dependen…

1、Seaborn可视化库

你的数据可视化编程初体验! Seaborn是一个基于matplotlib的图形可视化Python库,它提供了一种高级的API接口,使得制作统计图形更加容易。 Seaborn的目标是使可视化成为探索和理解数据的核心部分,它面向数据集的绘图功能对整个数据集进行操作,并在内部执行必要的语义映射和统…

Python - 【Socket】消息粘包处理demo(一)

一. 前言 在网络编程中&#xff0c;粘包是指TCP协议在传输过程中&#xff0c;多条数据被合并成一条数据发送或者一条数据被拆分成多个数据发送的现象。 二. 粘包问题的常规处理方法&#xff1a; 使用固定长度的包头 可以在发送数据前先发送一个固定长度的包头&#xff0c;包…

个人云服务器docker搭建部署前后端应用-myos

var code "87c5235c-b551-45bb-a5e4-9593cb104663" mysql、redis、nginx、java应用、前端应用部署 本文以单台云服务器为例&#xff1a; 1. 使用腾讯云服务器 阿里或其他云服务器皆可&#xff0c;类似 安装系统&#xff0c;现在服务器系统都集成安装了docker镜像&a…

Vue中的模式和环境变量

文章目录 一、介绍二、配置1、环境文件2、变量使用 三、读取环境文件 一、介绍 vue官网&#xff1a;https://cli.vuejs.org/zh/guide/mode-and-env.html模式是 Vue CLI 项目中一个重要的概念。默认情况下&#xff0c;一个 Vue CLI 项目有三个模式 开发环境&#xff1a;develop…