【论文翻译】分布式并发控制中时间戳排序算法与本地计数器同步的改进方法

news2024/11/20 7:22:02

An Advanced Approach of Local Counter Synchronization to Timestamp Ordering Algorithm in Distributed Concurrency Control
DOI

目录

  • 1 介绍
  • 2 时间戳排序算法
  • 3 本地计数器同步的一种高级方法
    • 3.1 改进更新本地计数器的广播消息方式
    • 3.2 减少广播消息中的数据传输费用
  • 4 结论
  • 参考文献

摘要:并发控制是数据库管理系统(DBMS)特别是分布式DBMS遇到的困难问题。有两种主要的并发控制方法,例如基于锁定和基于时间戳。每种方法都有其自身的缺点,但基于锁定的方法通常在大多数分布式 DBMS 中实现,因为它的可行性和严格性减少了分布式环境中的危险。否则,由于分布式环境中站点之间的本地计数器同步问题,时间戳排序算法仅在中央DBMS中实现。常见的解决方案是通过分布式网络广播有关本地计数器(在一个站点)更改的消息,以便所有剩余站点“知道”更新自己的计数器。然而,这种解决方案带来了一些性能低下的缺点。因此,提出了一种先进的方法来克服这些缺点,方法是给出另一种称为活动数的措施,该措施负责协调分布式站点之间的本地计数器。此外,还提出了另一种方法来应用最小生成树来降低在分布式网络上广播消息的成本。

关键词:分布式并发控制、时间戳排序算法、本地计数器同步

学科领域:分布式计算、信息与通信理论与算法

1 介绍

并发控制保证了事务的一致性和可靠性属性。在讨论主要内容之前。我们应该浏览一些重要性定义。请注意,该研究是一种改进知名算法的建议方法。所以,定义和方法都被简单地提到了;有关分布式并发控制的更多详细信息,请参阅 [1]。调度 S 是一组事务:S={T1,T2,…,T3};每个事务 T i 都有数据操作 O ij (读或写)。如果其中一个是写入,则访问同一数据项 x 的两个操作会发生冲突。
在这里插入图片描述

如果一个调度与串行调度冲突等效并且串行执行称为序列化顺序,则它是可串行化的。所有并发控制算法都专注于生成可序列化的调度来归档两个目标:

  • 执行事务的顺序是确保事务执行结果良好的序列化顺序。
  • 利用并行处理。

有两种基本的并发控制方法,例如基于锁定和基于时间戳。两者各有优缺点,但基于时间戳的方法是本文的关键,因为该方法不存在死锁问题,并且在某些情况下比基于锁定的方法更有效。现在已经介绍了有关并发控制方法的一些主要方面,但是很难将这些方法从非分布式数据库“移动”到分布式数据库。当然,基于锁定的方法被修改以适应分布式环境,但我建议在分布式环境中对基于时间戳的方法进行一些改进。第 2 节讨论了基于时间戳的算法,第 3 节提出了它的改进。第 4 节是结论。

2 时间戳排序算法

与通过互斥保持可序列化的基于锁定的方法不同,基于时间戳的并发控制算法试图通过下列方案来维护可序列化:

  • 为每个事务分配唯一的时间戳。
  • 根据时间戳对事务进行排序。因此,有一个可序列化的事务顺序。
  • 根据此顺序执行事务。

时间戳是每笔事务的标识符,用于允许排序。时间戳有两个基本属性:唯一性和单调性。单调性是指由同一事务管理器 ™ 生成的时间戳的值单调递增。该属性允许区分时间戳和事务标识符。

生成时间戳的方法有两种:

  • 使用单调递增的全局计数器,但在分布式环境中维护全局计数器非常困难。
  • 每个站点都可以自由地在本地计数器上自行分配时间戳。为了保持唯一性,每个站点都将其标识符附加到本地计数器。因此,时间戳采用两部分形式 <local-counter-value, site-identifier> 或 <local-system-clock, site-identifier> [1]。站点标识符被放在最不重要的位置,以避免来自一个站点的一个时间戳总是大于或小于另一个站点的情况。

当事务已经被分配了时间戳时,对事务的操作(读、写)进行排序必须遵守时间戳排序(TO)规则“给定属于事务 T i 和 T 的两个冲突操作 O ij(x) 和 O kl(x) k 分别,如果 T i 的时间戳小于 T k 的时间戳,则 O ij(x) 在 O kl(x) 之前执行" [1]。这意味着较旧的事务首先执行。

一般来说,TO 算法通过两个主要步骤在下面简要描述 [1]:

  1. TM 接收来自应用程序的事务并为其分配时间戳值。之后,TM 将这些事务的操作(读、写)O ij 传递给调度程序(SC)。
    2)SC按TO规则调度数据操作。它检查每个新操作与已安排的冲突操作。如果新操作属于比所有冲突事务更年轻(晚)的事务,则接受它;否则拒绝它并使用新的时间戳重新启动整个事务。

可以断言,TO算法是按照时间戳顺序来维护执行顺序的。

3 本地计数器同步的一种高级方法

假设在每个站点的本地计数器上生成时间戳,则存在本地计数器同步的问题。请注意,如果安排了另一个较年轻的事务,SC 将重新启动事务。如果有网站不活跃或定期没有收到任何事务,这种情况会多次发生。在这种情况下,这些站点的本地计数器比其他站点小得多,大多数进入这些站点的事务将多次重新启动,直到它们的计数器与其他站点的本地计数器近似。此后,图 1 [1] 描述了一个关于如何在站点之间维护时间戳的示例。

站点 2 的事务 T 尝试读取存在于站点 1 并具有读写时间戳的数据项 x:rts(x) 和 wts(x)。如果 T 的时间戳记为 ts(T) 小于 wts(x),则拒绝读取并重新启动 T 并从站点 2 的计数器获取新的更大时间戳。当站点 2 的计数器太小时,T 没有机会被执行。

有必要在所有站点同步本地计数器。每当一个站点的 TM 因接受事务而增加其自己的计数器时,它就会广播一条消息,即更新其他站点的所有 TM 的计数器。之后,其他 TM 会将其本地计数器与即将到来的计数器进行比较,并将其计数器调整为比即将到来的计数器多 1(= 即将到来的计数器 + 1)。这是广播有关更新本地计数器的信息的机制。它确保没有运行太快或太慢的本地计数器。提出了计数器同步的两个改进:

  • 改进了更新本地计数器的广播消息的方式。
  • 降低了更新本地计数器的广播消息的数据传输开销。

3.1 改进更新本地计数器的广播消息方式

在分布式网络上广播更新本地计数器的消息是计数器同步中考虑最多的问题。给定站点 i 的事务管理器 TMi 在接收新事务时增加其自己的计数器。因此,TMi 有新的计数器计数器 (TM i) = 200,它分别向 TM1、TM2 和 TM3 发送三个消息,即 m1、m2 和 m3。

  • TM1 具有旧的本地计数器计数器 (TM1) = 1。
  • TM2 具有旧的本地计数器计数器 (TM2) = 150。
  • TM3 具有旧的本地计数器计数器 (TM3) = 170。

因为计数器 (TMi) 比计数器 (TM1) 大得多,所以计数器 (TM1) 得到新值 201 = 计数器 (TMi) + 1。通常情况下,剩余的计数器 (TM2)、计数器 (TM3) 也都重新计算分配新值 201。此时,计数器 (TMi) 被视为“里程碑”。然而,在 TM2 和 TM3 处于活动状态的情况下,请注意“活动”一词暗示 TM 收到了更多交易。如果我们选择计数器(T i)作为增加TM2和TM3计数器的“里程碑”,那么其他站点拒绝事务的频率就会变高,因为TM2和TM3收到的事务越来越多,而且它们的锁越来越快。结果,站点 2、3 的新事务的时间戳得到如此高的值,因此站点 2、3 的数据项 xk 的 rts(xk) 和 wts(x k) 突然升高。访问 x k 的事务(在其他站点具有低时间戳)将更频繁地被拒绝。当然,分布式数据库管理系统的性能明显下降。然而,忽略计数器(TM i)的“里程碑”角色几乎是不可能的,因为这将导致在其他情况下,TM2 和 TM3 不活动的情况下会导致错过结果。在这种情况下有什么解决方案?

我建议时间戳以 <site-identifier, local-counter, active-number> 的三部分形式表示。零件的位置与其重要性相对应,例如第二个位置的 local-counter 比第三个位置的 active-number 更重要。因此,站点 i 的每个 TM i 都有一个新的活跃数,该活跃数负责衡量站点 i 的活跃程度。接收到的事务站点 i 越多,活跃数量就越高,因此给定站点的活跃数量可以通过到达该站点的事务频率来更新。假设站点即 TM1、TM2 和 TM3 在 TM i 具有新计数器 (TMi) 并分别向 TM1、TM2、TM3 发送三个消息 m1、m2、m3 的情况下更新自己的本地计数器,我的建议有两个以下步骤给定两个整数参数 α > 0 和 β > 0:
公式
例如,我们有计数器 (TMi) = 200,计数器 (TM1) = 1,计数器 (TM2) = 150,计数器 (TM3) = 170,活动数 (TM1) = 10,活动数 (TM2) = 60 , 有效数 (TM3) = 100, α = 50 和 β = 80。应用上述算法,我们有:
公式

最后,如果该站点处于活动状态,则该站点的本地计数器的增加率将降低。换句话说,在活动站点增加的锁定被延迟。很容易推断,使用活跃数的目的是为了协调本地计数器的增加。如果给定站点的活动号丢失,则将其重置为零。请注意,时间戳 <site-identifier, local-counter, active-number> 的三元组仅由 local-counter 和 site-identifier 标识。活动号码是辅助部分。当事务重新启动时,active-number 也被重置为零。

3.2 减少广播消息中的数据传输费用

假设分布式数据库中的所有站点组成网络,包括与 TM (s) 对应的节点。每当一个节点调整自己的计数器时,它就会在整个网络上发布消息。所以这会消耗很多系统资源。如何减少消息传输的开销,同时保证消息必须到达每个节点?

我们将 TM 网络视为一个图,其中每个节点都是一个 TM,并且每条边都附加到权重,该权重表示从源 TM 节点到目标 TM 节点的传输费用。通过应用一些算法,如 PRIM 和 Krussal [2],不难找到此类图的最小生成树 [2]。最后,在这棵树上广播消息。因此,所有 TM 节点都以最低的传输费用接收到消息。图 2 描绘了 TM 图和以粗线绘制的最小生成树。

4 结论

本地计数器同步是并发控制中基于时间戳的方法的本质。在本文中,对这种同步提出了如下两个改进:

  • 时间戳以三部分的形式表示:<site-identifier, local-counter, active-number>。本地计数器是否更新取决于活动数量和其他两个参数 α 和 β。其思想是延迟站点本地计数器的增加,直到完全满足由活动数α和β组成的条件,这样如果站点处于活动状态,则该站点的本地计数器的增加率将降低。
  • 降低费用通过将TM网络视为图并在该图的最小生成树上广播消息来实现消息传输。

当然,我的技术并没有彻底解决通过网络广播消息时性能较低的缺点。它只是改进了基于时间戳的方法。总的来说,本文是对众所周知的时间戳排序算法进行改进的一个正在进行中的研究。如果与现有的方法相比,它需要大量的评估,而不仅仅是一个提案。

参考文献

[1] Ozsu, M.T. and Valduriez, P. (2011) Principles of Distributed Database Systems. 3rd Edition, Springer, Berlin.
[2] Wikipeadia (2014) Minimum Spanning Tree. http://en.wikipedia.org/wiki/Minimum_spanning_tree

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

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

相关文章

时间复杂度与空间复杂度

文章目录1.什么是数据结构2.什么是算法3.如何学好数据结构呢3.1写代码3.2 多去动手画图4.算法效率4.1如何评判一个算法的好与坏呢4.2算法的复杂度5.时间复杂度5.1 概念5.2大O渐进法6常见的时间复杂度6.1常数阶6.2线性阶6.3 对数阶6.4平方阶6.5函数调用6.5.1普通调用6.5.2递归调…

1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo

文章目录&#x1f353;&#x1f353;BRVAH 上部&#x1f344;&#x1f353;动态图结果展示&#x1f344;&#x1f344;myAdapter.java【第一个布局适配器】&#x1f344;&#x1f344;youAdapter.java【第二个布局适配器】&#x1f344;&#x1f344;MainActivity.java【主活动…

【Android】自制静音App,解决他人手机外放问题

契源 看到一个粉丝留言&#xff0c;吐槽舍友深夜手机外放&#xff0c;打扰别人休息&#xff0c;想设计一款软件阻止舍友行径。于是我就来简单设计一下。 需求实现分析 实际上&#xff0c;我之前有篇博文提到过一个类似的Android APP&#xff0c;主要功能是将手机声音强制开到…

内存函数 memcpy、memmove 的简单模拟实现

一、memcpy 函数 数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。注意是以字节为单位进行拷贝。函数声明如下&#xff1a; 1、参数返回值解析 第二个参数 src&#xff1a;源地址&#xff0c;即你要从哪开始拷贝。 第三个参数 count&#xff1a…

Qt 物联网系统界面开发 “ 2022湖南省大学生物联网应用创新设计竞赛技能赛 ——应用物联网的共享电动自行车 ”

文章目录前言一、实现效果二、程序设计1. 界面背景图设计2. 信号槽设计3. 定时器设计4. 动态曲/折线图的设计5. 摄像头扫码6. 注册设计7. 登录设计8. 巡检人员设计三、综合分析前言 本篇源于 “ 2022 湖南省大学生物联网应用创新设计竞赛技能赛参考样题 ” ——应用物联网的共享…

【git】git ssh 公钥私钥 在 windows和mac 双系统分别如何生成 以及对接各个平台说明

win和mac 双系统分别如何生成 git ssh 一、windows 生成 ssh 公钥私钥 windows版本需要下载git bash&#xff1a;https://gitforwindows.org/ 在 git bash 中输入如下指令&#xff1a; # 创建全局名称&#xff08;将会在你的git提交作者中显示&#xff09;git config --glo…

【allegro 17.4软件操作保姆级教程三】布局操作基础二

4精准定位与坐标定位 在设计中经常会有一些器件或结构孔要摆放在指定位置&#xff0c;如果用move命令用鼠标去移则很难定位完全&#xff0c;这时候就需要精准定位。 操作步骤为&#xff1a; 1、点击move命令&#xff0c;在option面板选择器件原点&#xff0c;这时器件就会悬停在…

策略分析中缺失值的处理方法

在日常的策略分析中&#xff0c;经常会碰到分析的变量出现缺失值的情况&#xff0c;如果对这些缺失值视而不见&#xff0c;则会对策略分析的结果造成一定的影响。那么我们如何处理缺失值呢&#xff1f;关注“金科应用研院”&#xff0c;回复“CSDN”领取“风控资料合集” 首先…

本地数据库IndexedDB - 学员管理系统之登录(一)

IndexedDB是浏览器提供的本地数据库&#xff0c;它可以被网页脚本创建和操作。IndexedDB允许存储大量数据&#xff0c;提供查找接口&#xff0c;还能建立索引。这些都是LocalStorage或Cookie不具备的。就数据库类型而言&#xff0c;IndexedDB不属于关系型数据库&#xff08;不支…

插入排序图解

七大排序之插入排序 文章目录七大排序之插入排序前言一、直接插入排序1.1 算法图解1.2 算法稳定性1.3 插入排序和选择排序相比到底优在哪&#xff1f;二、折半插入排序总结前言 博主个人社区&#xff1a;开发与算法学习社区 博主个人主页&#xff1a;Killing Vibe的博客 欢迎大…

springboot:实现文件上传下载实时进度条功能【附带源码】

0. 引言 记得刚入行的时候&#xff0c;做了一个文件上传的功能&#xff0c;因为上传时间较久&#xff0c;为了用户友好性&#xff0c;想要添加一个实时进度条&#xff0c;显示进度。奈何当时技术有限&#xff0c;查了许久也没用找到解决方案&#xff0c;最后不了了之。 近来偶…

全网最全面的pytest测试框架进阶-conftest文件重写采集和运行测试用例的hook函数

【文章末尾有.......】 使用pytest不仅仅局限于进行单元测试&#xff0c;作为底层模块可扩展性强&#xff0c;有必要理解其运行机制&#xff0c;便于进行二次开发扩展&#xff0c;通过文档的学习很容易理解。 构建一个简单的测试脚本 import pytest import requestsdef add(…

Hive数据倾斜常见场景及解决方案(超全!!!)

Hive数据倾斜常见问题和解决方案 文章目录 前言、一、Explain二、数据倾斜&#xff08;常见优化&#xff09;前言 Hive数据倾斜是面试中常问的问题&#xff0c;这里我们需要很熟练地能举出常见的数据倾斜的例子并且给出解决方案。 一、Explain 我们可以通过sql语句前面加expa…

公众号网课查题搭建方法

公众号网课查题搭建方法 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;…

QLC 闪存给主控带来了很大的难题?

前言 世界各大主流闪存厂商&#xff0c;如美光、海力士、铠侠和长江存储积极致力于QLC的研发&#xff0c;并相继推出了QLC SSD 产品。随着技术的不断进步&#xff0c;人们普遍担心的QLC擦写寿命少正逐渐被改善。QLC SSD 成本是最大的优势&#xff0c;不指望说替代 TLC SSD&…

408 | 【2011年】计算机统考真题 自用回顾知识点整理

选择题 T3&#xff1a;循环队列 不同指针指向&#xff0c;队列判空/判满条件 1. rear:指向队尾元素 front:指向队头元素前一个位置 &#xff08;1&#xff09;牺牲一个存储空间 &#xff08;2&#xff09;判空条件&#xff1a;front rear &#xff08;3&#xff0…

【RHCSA】管理Linux的联网

目录 rhel8与旧版本的区别 NetworkManager的特点 配置网络 (1)使用P命令配置临时生效的网络连接 (2)修改配置文件&#xff0c;前提是需要有network服务[不推荐] (3)nmcli(命令行工具) 网络测试命令 Ⅰ、使用ping命令测试网络的连通性 Ⅱ、使用tracepath命令跟踪并显示网…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java危险品运输车辆信息管理系统b2z1o

大学毕业设计&#xff0c;一般都是自己或者几个同学一起弄&#xff0c;lunwen都是去&#xff0c;百度&#xff0c;图书馆找很多资料参考&#xff0c;&#xff08;就是把里面都了&#xff0c;自己再按照各个意思重新表达&#xff09;&#xff0c;但是前提&#xff0c;提纲要想好…

【附源码】计算机毕业设计SSM微课程服务系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

神经网络芯片的单片机,什么是神经网络芯片

1、神经网络做图像分类一定要用到gpu吗&#xff1f; GPU最大的价值一直是“accelerating”(加速)&#xff0c;GPU不是取代CPU&#xff0c;而是利用GPU的并行计算架构&#xff0c;来将并行计算的负载放到GPU上来处理从而极大的提升处理速度。GPU本质上在异构计算架构上属于协处…