数据库事务的提交方法、装置、服务器及介质与流程
未命名
10-09
阅读:132
评论:0
1.本说明书一个或多个实施例涉及数据库技术领域:
:,尤其涉及一种数据库事务的提交方法、装置、服务器及介质。
背景技术:
::2.数据库(database)是一种结构化的数据存储系统,可以有效地存储、检索、处理大量数据,为数据管理提供强有力的辅助。而数据库的事务处理过程作为保证数据库操作的一致性、可靠性和完整性的关键机制之一,在数据库管理过程中占据了非常重要的地位。3.按照数据库架构方式的不同,可以将数据库分为单机式数据库和分布式数据库,相较于单机式数据库而言,分布式数据库可以提供更好的容灾能力和更强的水平拓展能力,其应用范围也更加广泛。在分布式数据库中,通过两阶段提交(two-phasecommit,2pc)协议即可实现分布式事务的提交,原理简单且实现方便。4.但是,分布式数据库没有考虑到单机事务的处理需求,分布式事务提交过程中会涉及到额外的协调组件,如果按照上述分布式事务的提交方式来进行单机事务的提交,会由于这些协调组件的运行产生不必要的时延与开销,导致单机事务的处理效率较差。因此,亟需一种数据库事务的提交方法,以提供单机事务和分布式事务的提交能力,并保证在单机事务和分布式事务的提交过程中均可以有较好的性能表现。技术实现要素:5.有鉴于此,本说明书一个或多个实施例提供一种数据库事务的提交方法、装置、服务器及介质。6.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:7.根据本说明书一个或多个实施例的第一方面,提出了一种数据库事务的提交方法,包括:8.响应于获取到待提交的数据库事务,确定待提交的数据库事务对应的日志流类型,日志流类型用于指示待提交的数据库事务为单日志流任务或多日志流任务;9.基于待提交的数据库事务对应的日志流类型,确定目标时间源,其中,不同日志流类型对应的目标时间源不同;10.从目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的数据库事务进行提交。11.根据本说明书一个或多个实施例的第二方面,提出了一种数据库事务的提交装置,包括:12.第一确定模块,用于响应于获取到待提交的数据库事务,确定待提交的数据库事务对应的日志流类型,日志流类型用于指示待提交的数据库事务为单日志流任务或多日志流任务;13.第二确定模块,用于基于待提交的数据库事务对应的日志流类型,确定目标时间源,其中,不同日志流类型对应的目标时间源不同;14.提交模块,用于从目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的数据库事务进行提交。15.根据本说明书一个或多个实施例的第三方面,提出了一种服务器,包括:16.处理器;17.用于存储处理器可执行指令的存储器;18.其中,处理器通过运行可执行指令以实现如上述第一方面所描述的方法。19.根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,指令被处理器执行时实现如上述第一方面所描述的方法。20.本说明书通过在获取到待提交的数据库事务的情况下,基于待提交的数据库事务对应的是单日志流任务还是多日志流任务,来进行目标时间源的确定,从而可以从目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的数据库事务进行提交。其中,不同的目标时间源可以用于为日志流类型不同的数据库事务提供时间戳获取功能,以兼容单机式数据库和分布式数据库的事务提交需求,满足单机事务和分布式事务的提交能力,并且可以保证在单机事务和分布式事务的提交过程中均可以有较好的性能表现。附图说明21.图1是一示例性实施例提供的一种数据库事务的提交方法的流程图。22.图2是一示例性实施例提供的一种数据库事务的提交过程的流程示意图。23.图3是一示例性实施例提供的一种数据库事务的提交性能的对比图。24.图4是一示例性实施例提供的一种服务器的示意结构图。25.图5是一示例性实施例提供的一种数据库事务的提交装置的框图。具体实施方式26.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。27.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。28.本说明书所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。29.为帮助理解本说明书,首先对与本说明书所提供的方案相关的技术术语进行介绍。30.事务日志:数据库会维护一个事务日志,用于记录数据库中的所有事务以及每个事务中对数据库的修改内容。事务日志是数据库的关键组件,当系统发生故障时,需要借助该日志将数据库恢复到一致的状态。31.shared-everything:数据库架构的一种,在shared-everything架构中,所有的数据库节点共享所有可用资源,包括中央处理器(centralprocessingunit,cpu)资源、内存资源、输入/输出(input/output,io)资源等。32.shared-nothing:数据库架构的一种,类似于大规模并行处理(massivelyparallelprocessing,mpp)模式。在shared-nothing架构中,各数据库节点的硬件资源是私有的,各个数据库节点之间通过协议进行通信。在分布式数据库中,shared-nothing架构通常意味着将某个表进行水平分割,得到多个数据分片,并将这些数据分片分配给多台服务器。33.两阶段提交:简称2pc,是一个广泛应用于分布式系统内的一种协议,具有原理简单、实现方便等优点。34.垂直拓展:指通过升级硬件的方式提高单个服务器的性能,常用的垂直拓展手段有增加可用内存、增加cpu数量等。35.水平拓展:当单机通过垂直拓展达到性能极限时,通过添加服务器数量的方式实现更大的吞吐量。36.在介绍了本说明书的相关技术术语之后,下面对本说明书所提供的数据库事务的提交方法进行详细说明。37.近几年,随着大数据存储与治理需求的增长,分布式数据库的技术研发进程也逐渐加快。然而,分布式数据库应当设计为shared-everything架构还是shared-nothing架构,是目前仍然存在争论的一个问题。相关技术中,目前的分布式数据库既不完全是shared-everything架构,也不完全是shared-nothing架构。随着硬件水平的发展,现如今单个机器的性能已经非常强大,比如具有众多的cpu、超大内存、或是高速io总线,在这种情况下,如果简单地沿用shared-nothing架构,那么就无法充分调配单机的资源。38.而且,分布式数据库不应当只考虑水平拓展,还应当考虑垂直拓展的问题。目前的分布式数据库虽然可以有效应对大型企业处理海量业务数据的需求,但是对于中小型企业而言,在业务前期使用单机数据库就能满足其数据处理需求,但相关技术中并未关注中小型企业的需求。有鉴于此,亟需一种可以同时兼容单机模式和分布式模式的单机分布式一体化数据库,以同时满足大型企业和中小型企业的数据处理需求。而事务处理过程作为数据库系统中的一个关键机制,也亟待实现单一分布式一体化,以通过满足单机事务和分布式事务的事务处理需求。39.目前,大部分的分布式数据库的事务处理过程遵从标准的两阶段提交(2pc)协议。在两阶段提交协议中,可以将事务的提交过程分成两个阶段来进行处理,第一阶段是准备(prepare)阶段,第二阶段是提交(commit)阶段。在两阶段提交协议中会设置一个协调者,例如,可以由分布式事务管理器或分布式事务协议来扮演协调者,协调者可以负责协调参与者的行为,以确保事务的一致性和可靠性。40.相关技术中,在事务执行过程中,协调者会将相关的操作和决策记录到日志中,以便后续可以在系统宕机重启后根据体制中记录的内容进行回滚。在提交事务到事务提交成功这段时间内,协调者需要向日志中写入大量的日志数据,但对于单日志流事务而言,其无需维护过多的日志流,整个事务提交过程中仅会涉及到一个日志流,而单个日志流内提交的事务是不需要经过两阶段提交协议的。41.但是,在分布式数据库中,由于底层架构和处理逻辑的限制,即使提交单日志流事务仍需要经过两阶段提交,在分布式数据库中提交单日志流事务时,会写入大量非必要的日志数据,造成不必要的资源消耗,而且,会导致单日志流事务的处理过程产生不必要的开销和时延,使得单日志流事务的处理效率较低。42.有鉴于此,本说明书期望提供一种可以同时提供单机数据库的事务处理能力和分布式数据库的事务处理能力的事务处理方案,以使单日志流事务和多日志流事务的提交效率均可以得到有效保障。43.参见图1,图1是一示例性实施例提供的一种数据库事务的提交方法的流程图,如图1所示,该方法包括:44.步骤101、响应于获取到待提交的数据库事务,确定待提交的数据库事务对应的日志流类型,日志流类型用于指示待提交的数据库事务为单日志流任务或多日志流任务。45.在一种可能的实现方式中,可以基于待提交的数据库事务对应的数据库节点以及待提交的数据库事务的待处理数据量,确定待提交的数据库事务对应的日志流类型。46.例如,若待提交的数据库事务对应的数据库节点为一个且待提交的数据库事务的待处理数据量小于设定数据量阈值,则可以确定待提交的数据库事务为单日志流任务;若待提交的数据库事务对应的数据库节点为一个但待提交的数据库事务的待处理数据量大于等于设定数据量阈值,则可以确定待提交的数据库事务为多日志流任务;若待提交的数据库事务对应的数据库节点为多个,则可以确定待提交的数据库事务为多日志流任务。其中,设定数据量阈值可以为任意取值,本说明书对设定数据量阈值的具体取值不加以限定。47.上述仅为划分单日志流任务和多日志流任务的示例性方式,在更多可能的实现方式中,在划分单日志流任务和多日志流任务时,还可以考虑更多的因素,例如,还可以考虑数据库管理系统的并发控制需求、容灾和故障恢复需求等。48.步骤102、基于待提交的数据库事务对应的日志流类型,确定目标时间源,其中,不同日志流类型对应的目标时间源不同。49.可选地,目标时间源可以为本地时间源或全局时间源,可以基于数据库事务对应的日志流类型,确定获取事务时间戳时要使用本地时间源还是全局时间源。50.其中,本地时间源为是一个独立的、基于本机数据库节点的时间源。在数据库管理系统中,每个数据库节点都可以拥有自己的本地时间源,用于记录和管理该数据库节点上的时间。全局事件源是一个共享的、全局可靠的时间源提供节点,给分布式系统内的各个节点提供全局递增的逻辑时间戳(timestamp),各个数据库节点可以通过与全局时间源进行通信来获取事务提交所需要的唯一时间戳,从而使数据库系统对外保证外部一致性(externalconsistency)。51.步骤103、从目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的数据库事务进行提交。52.通过在获取到待提交的数据库事务的情况下,基于待提交的数据库事务对应的是单日志流任务还是多日志流任务,来进行目标时间源的确定,从而可以从目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的数据库事务进行提交。其中,不同的目标时间源可以用于为日志流类型不同的数据库事务提供时间戳获取功能,以兼容单机式数据库和分布式数据库的事务提交需求,满足单机事务和分布式事务的提交能力,并且可以保证在单机事务和分布式事务的提交过程中均可以有较好的性能表现。53.在介绍了本说明书的基本实现过程之后,下面对本说明书的具体实现过程进行详细介绍。54.在一些实施例中,对于步骤102,在基于待提交的数据库事务对应的日志流类型,确定目标时间源,可以包括如下两种实现方式:55.在一种可能的实现方式中,若待提交的数据库事务为单日志流任务,则将待提交的数据库事务所对应的本地时间源确定为目标时间源。56.需要说明的是,在待提交的数据库事务为单日志流任务的情况下,数据库事务的处理过程中仅会涉及到单个日志流,因此,直接以本地时间源作为获取时间戳的来源即可,而无需考虑不同数据库节点上的时间源的同步与否。57.在另一种可能的实现方式中,若待提交的数据库事务为多日志流任务,则将全局时间源作为目标时间源。58.需要说明的是,在待提交的数据库事务为多日志流任务的情况下,数据库事务的处理过程中会涉及到多个日志流,为保证数据库事务的一致性,采用全局一致的全局时间源作为获取时间戳的来源,可以保证多个数据库节点可以以一个统一的时间标准进行数据库事务的提交。59.在通过上述实施例确定出目标时间源之后,即可通过步骤103,从目标时间源中获取事务时间戳。60.在一些实施例中,对于步骤103,在从目标时间源中获取事务时间戳时,可以包括如下两种实现方式:61.在一种可能的实现方式中,在目标时间源为本地时间源的情况下,可以通过本地时间服务,从本地时间源中获取本地时间戳,作为事务时间戳。62.在另一种可能的实现方式中,在目标时间源为全局时间源的情况下,通过全局时间服务,从全局时间源中获取全局时间戳,作为事务时间戳。63.需要说明的是,在单日志流场景中,仅会涉及到一个日志流的处理,此时,无需访问全局时间服务,只需要访问本地特有的时间服务,即可实现事务时间全局一致性的保障。需要注意的是,无论是通过哪种方式获取到的事务时间戳,均可用于进行确定所提交的数据库事务的执行顺序,以便后续可以基于事务时间戳实现数据库事务的调度和顺序执行。64.在通过上述实施例获取到全局时间戳之后,即可通过步骤103,基于所获取到的事务时间戳对待提交的数据库事务进行提交。下面分别对单日志流事务下以本地时间戳作为事务时间戳以及多日志流事务下以全局时间戳作为事务时间戳的过程进行介绍。65.在一些实施例中,对于步骤103,对于单日志流事务下以本地时间戳作为事务时间戳的情况,在基于所获取到的事务时间戳对待提交的数据库事务进行提交时,可以通过如下步骤实现:66.步骤一、将待提交的数据库事务和所获取到的事务时间戳保存在缓冲区中。67.可选地,缓冲区为数据库管理系统中专门用于提供数据缓存能力的内存区域,通过将待提交的数据库事务和所获取到的事务时间戳先保存在缓冲区中,以便后续可以批量提交数据库事务。68.需要说明的是,缓冲区的大小可以基于数据库管理系统的硬件资源和数据工作负载确定,以使所设置的缓冲区的大小可以尽可能减少内存资源的浪费。69.步骤二、在缓冲区中所存储的待提交的数据库事务满足设定条件的情况下,基于缓冲区中所存储的待提交的数据库事务的事务时间戳,通过组提交的方式对缓冲区中所存储的数据库事务进行提交。70.其中,设定条件可以为没有新事务提交的时长达到设定时间阈值,或者,设定条件可以为缓冲区已满,等等,本说明书对设定条件的具体类型不加以限定。71.在一种可能的实现方式中,在基于缓冲区中所存储的待提交的数据库事务的事务时间戳,通过组提交的方式对缓冲区中所存储的数据库事务进行提交时,可以基于缓冲区中所存储的待提交的数据库事务的事务时间戳,对缓冲区中所存储的待提交的数据库事务进行排序及合并,得到待提交事务序列;通过批量写入操作将待提交事务序列写入分布式数据库中。72.事务的每次提交都会引发磁盘写入操作,组提交通过将多个事务的提交操作合并为一个批量写入操作,可以减少磁盘写入的频率,从而可以减少磁盘的资源损耗,提高事务提交效率。73.在上述单日志流事务的提交过程中,无需通过协调者来协调多个参与者的行为,从而使得在事务提交过程中无需由协调者写入日志数据,从而减少事务提交过程中非必要的写日志操作,降低事务提交过程的处理压力,提高事务提交速度和事务提交效率。74.此外,对于步骤103,对于多日志流事务下以全局时间戳作为事务时间戳的情况,在基于所获取到的事务时间戳对待提交的数据库事务进行提交时,可以通过如下方式实现:75.向待提交的数据库事务对应的多个参与节点发送提交指令,以使多个参与节点响应于提交指令,基于每个参与节点对应的事务时间戳,将待提交的数据库事务写入分布式数据库。76.需要说明的是,可以由协调者向待提交的数据库事务对应的多个参与节点(也即是参与者)发送提交指令,以使每个参与节点可以基于提交指令来进行数据库事务的提交。77.可选地,在基于每个参与节点对应的事务时间戳,将待提交的数据库事务写入分布式数据库时,可以按照每个参与节点对应的事务时间戳的先后顺序,将待提交的数据库事务写入分布式数据库。78.例如,可以由协调者基于每个参与节点对应的事务时间戳,向各个参与节点发送提交指令,以使各个参与节点可以按照各自的事务时间戳的先后顺序来进行事务的提交。79.可选地,协调者在事务提交过程中还收集响应,以根据参与节点的响应决定如何进行下一步操作。在协调者确认所有参与节点在提交阶段均成功完成了准备和提交操作的情况下,即可确定事务提交成功,如果有任何一个参与节点无法完成准备或提交操作,协调者会发出回滚指令以中止整个事务,以保证事务的一致性。80.需要说明的是,在多日志流事务的提交过程中,需要协调者协调多个参与节点的行为,但是,协调者可以不写日志数据,而仅由参与者进行日志数据库的写入,后续在有回滚需求时可以根据参与者写入的日志数据进行数据恢复,从而达到一种“参与者即协调者”的效果,相较于传统的两阶段提交过程,上述实施例所提供的两阶段提交过程在提交事务到事务提交成功的这段时间内需要写入的日志量更少,从而使得事务提交过程的处理压力更小,进而可以提高事务提交速度和事务提交效率。81.另外,需要说明的是,在上述数据库事务的提交过程中,可以通过paxos协议来实现节点之间的交互和操作决策,在应用paxos协议进行日志数据的写入时,可以为所写入的日志数据提供多个高可用的副本,以保障在事务提交失败时,可以基于高可用的副本实现回滚和数据恢复,以处理节点故障、网络延迟和消息丢失等问题,从而确保数据库的一致性和可靠性。82.本公开提供的数据库事务的提交方法可以被应用于分布式数据库的数据库管理系统的事务层,具体地,数据库事务的提交方法可以被应用于分布式数据库的数据库管理系统的事务引擎中,上述以使分布式数据库的数据库管理系统可以在事务提交过程中,基于待提交事务的日志流类型自适应地选择提交方式,实现事务引擎的单机分布式一体化,相对于传统的分布式事务引擎,单机一体化事务引擎可以具备更好的伸缩性(或称可控性),以满足数据库租户的多样化使用需求。例如,分布式数据库中的数据库租户并不是在所有情况下都需要使用分布式事务引擎,比如,对于中小型企业用户而言,小规模业务可以只靠单机事务引擎实现事务提交,此时,单一分布式事务处理引擎即可满足分布式数据库中的数据库租户提交单机事务的需求。另外,为保障单机分布式一体化事务引擎可以兼容单机事务和分布式事务的处理能力,可以通过提供表格分组(table-group)功能对各个数据表中的分区进行精准控制,这样,组内的表之间将不存在额外的分布式事务开销,从而可以保障单机事务的提交效率。83.参见图2,图2是一示例性实施例提供的一种数据库事务的提交过程的流程示意图,如图2所示,在获取到待提交的数据库事务后,即可认为事务开启,对于作为单日志流事务的单机事务,无需访问全局时间服务,而是直接访问本地时间服务,即可实现时间戳的读取,以成功开启事务;在从本地时间服务获取到时间戳之后,即可将所获取到的时间戳提交给全局版本号管理器,以由全局版本号管理器基于所获取到的时间戳为不同版本的变更和操作提供有序的时间线。而对于作为多日志流事务的分布式事务,可以通过低时延的两阶段提交协议进行事务的提交,也即是,在事务开启成功后,可以访问全局时间服务来获取时间戳,从而将所获取到的时间戳提交给全局版本号管理器,以由全局版本号管理器基于所获取到的时间戳为不同版本的变更和操作提供有序的时间线。84.需要说明的是,全局版本号在协调好待提交的数据库事务的时间线之后,协调者即可按照协调好的时间线来实现两阶段提交协议中的准备阶段,也即是,向待提交的数据库事务对应的各个参与节点(也即是参与者1和参与者2)发送prepare请求,在接收到参与者1和参与者2的prepare响应之后,即可确定事务提交成功,而不需要等待提交阶段的成功,从而可以事务提交过程所需的时间,提高事务提交速度和事务提交效率。这是由于事务提交过程中是采用paxos协议实现节点之间的交互和操作决策的,而paxos协议可以为所写入的日志数据提供多个高可用的副本,以保障在事务提交失败时,可以基于高可用的副本实现回滚和数据恢复,另外,即使基于一个副本恢复数据失败,还可以基于剩余副本再次进行重试,以保证数据可以得到恢复。85.另外,协调者在接收到prepare响应之后,还可以向待提交的数据库事务对应的各个参与节点(也即是参与者1和参与者2)发送commit请求,在接收到参与者1和参与者2的commit响应之后,即可确定基于待提交事务的修改已被持久化到数据库中。86.经实验表明,本说明书所提供的数据库事务的提交方法,相较于greenplummpp数据库的事务提交过程而言,在多个查询语句所对应的事务提交过程均可以表现出更好的性能。参见图3,图3是一示例性实施例提供的一种数据库事务的提交性能的对比图,如图3所示,在22个查询语句(也即是q1~q22)所对应的事务提交过程中,本说明书所提供的数据库事务的提交方法(也即是单一分布式一体化事务引擎)提交事务的时间均大大短于greenplummpp数据库中提交事务的时间,也即是,本说明书所提供的数据库事务的提交方法表现出了事务提交性能明显优于greenplummpp数据库中的事务提交性能。87.本说明书通过将单机模式和分布式模式统一的思想集成在传统的2pc协议中并予以实现,使得单机分布式一体化事务处理引擎可以充分发挥“惰性提交”的优势。单机分布式一体化事务引擎在单日志流事务的提交过程中可以避免繁琐的两阶段提交以及同步日志流的过程中,使得小型企业用户可以明显地感知到单机分布式一体化事务处理引擎所能带来的性能提升。并且,通过与greenplummpp数据库的事务提交过程的性能对比,也可以验证了本说明书所提供的单机分布式一体化事务处理引擎的高可用性。88.在一些实施例中,本说明书还提供了一种服务器,参见图4,图4是一示例性实施例提供的一种服务器的示意结构图。请参考图4,在硬件层面,服务器包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他任务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。89.在一些实施例中,本说明书还提供了一种数据库事务的提交装置,请参考图5,图5是一示例性实施例提供的一种数据库事务的提交装置的框图,该数据库事务的提交装置可以应用于如图4所示的服务器中,以实现本说明书的技术方案。其中,该数据库事务的提交装置可以包括:90.第一确定模块501,用于响应于获取到待提交的数据库事务,确定待提交的数据库事务对应的日志流类型,日志流类型用于指示待提交的数据库事务为单日志流任务或多日志流任务;91.第二确定模块502,用于基于待提交的数据库事务对应的日志流类型,确定目标时间源,其中,不同日志流类型对应的目标时间源不同;92.提交模块503,用于从目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的数据库事务进行提交。93.在一些实施例中,第二确定模块502,在用于基于待提交的数据库事务对应的日志流类型,确定目标时间源时,用于:94.若待提交的数据库事务为单日志流任务,则将待提交的数据库事务所对应的本地时间源确定为目标时间源;95.若待提交的数据库事务为多日志流任务,则将全局时间源作为目标时间源。96.在一些实施例中,提交模块503,在用于从目标时间源中获取事务时间戳时,用于:97.在目标时间源为本地时间源的情况下,通过本地时间服务,从本地时间源中获取本地时间戳,作为事务时间戳;98.在目标时间源为全局时间源的情况下,通过全局时间服务,从全局时间源中获取全局时间戳,作为事务时间戳。99.在一些实施例中,在待提交的数据库事务为单日志流任务的情况下,提交模块503,在用于基于所获取到的事务时间戳对待提交的数据库事务进行提交时,用于:100.将待提交的数据库事务和所获取到的事务时间戳保存在缓冲区中;101.在缓冲区中所存储的待提交的数据库事务满足设定条件的情况下,基于缓冲区中所存储的待提交的数据库事务的事务时间戳,通过组提交的方式对缓冲区中所存储的数据库事务进行提交。102.在一些实施例中,提交模块503,在用于基于缓冲区中所存储的待提交的数据库事务的事务时间戳,通过组提交的方式对缓冲区中所存储的数据库事务进行提交时,用于:103.基于缓冲区中所存储的待提交的数据库事务的事务时间戳,对缓冲区中所存储的待提交的数据库事务进行排序及合并,得到待提交事务序列;104.通过批量写入操作将待提交事务序列写入分布式数据库中。105.在一些实施例中,在待提交的数据库事务为多日志流任务的情况下,提交模块503,在用于基于所获取到的事务时间戳对待提交的数据库事务进行提交时,用于:106.向待提交的数据库事务对应的多个参与节点发送提交指令,以使多个参与节点响应于提交指令,基于每个参与节点对应的事务时间戳,将待提交的数据库事务写入分布式数据库。107.在一些实施例中,提交模块503,在用于基于每个参与节点对应的事务时间戳,将待提交的数据库事务写入分布式数据库时,用于:108.按照每个参与节点对应的事务时间戳的先后顺序,将待提交的数据库事务写入分布式数据库。109.上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。110.在一个典型的配置中,计算机包括一个或多个处理器(centralprocessingunit,cpu)、输入/输出接口、网络接口和内存。111.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(randomaccessmemory,ram)和/或非易失性内存等形式,如只读存储器(read-onlymemory,rom)或闪存(flashram)。内存是计算机可读介质的示例。112.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(phasechangerandomaccessmemory,pram)、静态随机存取存储器(staticrandomaccessmemory,sram)、动态随机存取存储器(dynamicrandomaccessmemory,dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(compactdiscread-onlymemory,cd-rom)、数字多功能光盘(digitalvideodisc,dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。113.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。114.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。115.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。116.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。117.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。当前第1页12当前第1页12
技术特征:
1.一种数据库事务的提交方法,包括:响应于获取到待提交的数据库事务,确定待提交的所述数据库事务对应的日志流类型,所述日志流类型用于指示待提交的所述数据库事务为单日志流任务或多日志流任务;基于待提交的所述数据库事务对应的日志流类型,确定目标时间源,其中,不同日志流类型对应的目标时间源不同;从所述目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的所述数据库事务进行提交。2.根据权利要求1所述的方法,所述基于待提交的所述数据库事务对应的日志流类型,确定目标时间源,包括:若待提交的所述数据库事务为单日志流任务,则将待提交的所述数据库事务所对应的本地时间源确定为所述目标时间源;若待提交的所述数据库事务为多日志流任务,则将全局时间源作为所述目标时间源。3.根据权利要求2所述的方法,所述从所述目标时间源中获取事务时间戳,包括:在所述目标时间源为本地时间源的情况下,通过本地时间服务,从所述本地时间源中获取本地时间戳,作为所述事务时间戳;在所述目标时间源为全局时间源的情况下,通过全局时间服务,从所述全局时间源中获取全局时间戳,作为所述事务时间戳。4.根据权利要求1所述的方法,在待提交的所述数据库事务为单日志流任务的情况下,所述基于所获取到的事务时间戳对待提交的所述数据库事务进行提交,包括:将待提交的所述数据库事务和所获取到的事务时间戳保存在缓冲区中;在所述缓冲区中所存储的待提交的数据库事务满足设定条件的情况下,基于所述缓冲区中所存储的待提交的数据库事务的事务时间戳,通过组提交的方式对所述缓冲区中所存储的数据库事务进行提交。5.根据权利要求4所述的方法,基于所述缓冲区中所存储的待提交的数据库事务的事务时间戳,通过组提交的方式对所述缓冲区中所存储的数据库事务进行提交,包括:基于所述缓冲区中所存储的待提交的数据库事务的事务时间戳,对所述缓冲区中所存储的待提交的数据库事务进行排序及合并,得到待提交事务序列;通过批量写入操作将所述待提交事务序列写入分布式数据库中。6.根据权利要求1所述的方法,在待提交的所述数据库事务为多日志流任务的情况下,所述基于所获取到的事务时间戳对待提交的所述数据库事务进行提交,包括:向待提交的所述数据库事务对应的多个参与节点发送提交指令,以使所述多个参与节点响应于所述提交指令,基于每个参与节点对应的事务时间戳,将待提交的所述数据库事务写入分布式数据库。7.根据权利要求1所述的方法,所述基于每个参与节点对应的事务时间戳,将待提交的所述数据库事务写入分布式数据库,包括:按照每个参与节点对应的事务时间戳的先后顺序,将待提交的所述数据库事务写入分布式数据库。8.一种数据库事务的提交装置,包括:第一确定模块,用于响应于获取到待提交的数据库事务,确定待提交的所述数据库事
务对应的日志流类型,所述日志流类型用于指示待提交的所述数据库事务为单日志流任务或多日志流任务;第二确定模块,用于基于待提交的所述数据库事务对应的日志流类型,确定目标时间源,其中,不同日志流类型对应的目标时间源不同;提交模块,用于从所述目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的所述数据库事务进行提交。9.一种服务器,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如权利要求1-7中任一项所述的方法。10.一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时实现如权利要求1-7中任一项所述的方法。
技术总结
本说明书一个或多个实施例提供一种数据库事务的提交方法、装置、服务器及介质。通过在获取到待提交的数据库事务的情况下,基于待提交的数据库事务对应的是单日志流任务还是多日志流任务,来进行目标时间源的确定,从而可以从目标时间源中获取事务时间戳,以基于所获取到的事务时间戳对待提交的数据库事务进行提交。其中,不同的目标时间源可以用于为日志流类型不同的数据库事务提供时间戳获取功能,以兼容单机式数据库和分布式数据库的事务提交需求,满足单机事务和分布式事务的提交能力,并且可以保证在单机事务和分布式事务的提交过程中均可以有较好的性能表现。交过程中均可以有较好的性能表现。交过程中均可以有较好的性能表现。
技术研发人员:杨志丰 徐泉清 杨传辉
受保护的技术使用者:北京奥星贝斯科技有限公司
技术研发日:2023.07.13
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种电力杆塔用加固装置的制作方法 下一篇:拒绝服务攻击的防护方法及装置与流程
