CN115982188A - 数据库全局标识生成方法、装置、电子设备和存储介质 - Google Patents

数据库全局标识生成方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN115982188A
CN115982188A CN202211684303.0A CN202211684303A CN115982188A CN 115982188 A CN115982188 A CN 115982188A CN 202211684303 A CN202211684303 A CN 202211684303A CN 115982188 A CN115982188 A CN 115982188A
Authority
CN
China
Prior art keywords
thread
machine number
global
database
machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211684303.0A
Other languages
English (en)
Inventor
陈旭洪
曹传峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinzhuan Xinke Co Ltd
Original Assignee
Jinzhuan Xinke Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinzhuan Xinke Co Ltd filed Critical Jinzhuan Xinke Co Ltd
Priority to CN202211684303.0A priority Critical patent/CN115982188A/zh
Publication of CN115982188A publication Critical patent/CN115982188A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据库全局标识生成方法、装置、电子设备和存储介质。获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。本申请实施例增强了数据库全局标识的全局唯一性、并发性和可用性。

Description

数据库全局标识生成方法、装置、电子设备和存储介质
技术领域
本申请实施例涉及数据库技术,尤其涉及一种数据库全局标识生成方法、装置、电子设备和存储介质。
背景技术
分布式数据库是将物理上分散的多个节点连接起来组成逻辑上统一的数据库,数据被划分成多个子集并分布到不同的节点上,将单个节点的压力分散到多个节点,以实现读写能力扩展,但是会使得分布式数据库生成全局唯一标识变得困难。
现有技术中,主要分为两种分布式数据库全局唯一标识生成方法,一种为SnowFlake算法(专业术语,一种数据库唯一标识生成算法),由时间戳信息、机器标识、序列号和符号位组成;另一种为UUID(Universally Unique Identifier,通用唯一识别码),包含32个16进制数字,以连字号分为五段。
SnowFlake算法强依赖于机器时钟,假如执行作业服务机器的机器时钟与标准时钟不一致需要进行机器时钟回拨,这会导致重复标识生成,全局唯一性差,并行性差,而UUID超过了大多数主流的编程语言的基本数据类型的长度,导致很多场景不适用,可用性差。
发明内容
本申请提供一种数据库全局标识生成方法、装置、电子设备和存储介质,以增强数据库全局标识的全局唯一性、并发性和可用性。
第一方面,本申请实施例提供了一种数据库全局标识生成方法,该数据库全局标识生成方法包括:
获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;
判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;
根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;
根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
第二方面,本申请实施例还提供了一种数据库全局标识生成装置,该数据库全局标识生成装置包括:
请求获取模块,用于获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;
序列号判断模块,用于判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;
标识更新模块,用于根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;
标识生成模块,用于根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
第三方面,本申请实施例还提供了电子设备,该电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如本申请实施例提供的任意一种数据库全局标识生成方法。
第四方面,本申请实施例还提供了一种包括计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如本申请实施例提供的任意一种数据库全局标识生成方法。
本申请通过获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。业务线程通过维护一组序列号,可以提高分布式数据库的并发性,通过机器号保障全局的唯一性,通过根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识,不依赖机器时钟,保证全局唯一性,结构简单,可用性强。因此通过本申请的技术方案,解决了SnowFlake算法强依赖于机器时钟导致重复标识生成,全局唯一性差,并行性差,和UUID可用性差的问题,达到了增强数据库全局标识的全局唯一性、并发性和可用性的效果。
附图说明
图1是本申请实施例一中的一种数据库全局标识生成方法的流程图;
图2是本申请实施例二中的一种数据库全局标识生成方法的流程图;
图3是本申请实施例三中的一种数据库全局标识生成方法的流程图;
图4是本申请实施例四中的一种数据库全局标识生成装置的结构示意图;
图5是本申请实施例五中的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本申请实施例一提供的一种数据库全局标识生成方法的流程图,本实施例可适用于为分布式数据库中的各数据节点的执行线程生成全局唯一标识的情况,该方法可以由数据库全局标识生成装置执行,该装置可以采用软件和/或硬件实现,并具体配置于分布式数据库的数据节点中,例如,服务器。
参见图1所示的数据库全局标识生成方法,具体包括如下步骤:
S110、获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识。
业务线程可以为分布式数据库的数据节点中实现一种业务的线程。全局唯一标识可以为在整个分布式数据库中的具有唯一性的标识。示例性的,全局唯一标识可以是一个unsigned long long(专业名词,一种数据类型的名称)类型值。业务线程在执行的过程中需要至少一个数据库全局标识,用于对该线程或者线程中的数据或者消息进行唯一性标识。当业务线程备数据库访问需求时,生成获取数据库全局标识的标识获取请求,并将该标识获取请求发送给需要访问的数据库节点。具体的,标识获取请求中包括需要获取的标识的数量,以及该业务线程获取的数据库的历史全局标识。历史全局标识可以为业务线程在发送标识获取请求前最后获取的全局标识。
S120、判断历史全局标识中业务线程对应的序列号是否存在未分配序列号。
序列号可以为每个业务线程维护的一组序号,用于生成全局标识。未分配序列号可以为历史全局标识中未分配过的序列号。具体的,序列号在分配时可以是每次递增1,则可以根据序列号的位数确定最大序列号,当历史全局标识中业务线程对应的序列号小于最大序列号时,可以确定存在未分配序列号;当历史全局标识中业务线程对应的序列号等于最大序列号时,可以确定不存在未分配序列号。序列号的位数可以根据需求预先设定,例如,序列号可以为32位,则约为42.9亿个。
S130、根据判断结果,控制更新业务线程的序列号以及业务线程的机器号。
机器号可以为表示全局唯一性的标识。具体的,机器号可以由分布式数据库中的GTM(专业名词,全局事务管理)组件生成,可以保证机器号在全局内唯一,且可以并行维护多个不同业务线程的机器号。此外,生成的机器号可以固化在磁盘中,当分布式数据库系统进行重启操作对全局标识的生成不会产生任何的影响。
根据是否存在未分配序列号的判断,确定业务线程的序列号和业务线程的机器号的更新方式。具体的,若不存在未分配序列号,则需要获取新的机器号,此时因为机器号发生了变化,所以序列号可以与之前相同,例如,序列号可以重新从0开始递增;若存在未分配序列号,则不需要获取新的机器号,此时,机器号保持不变,序列号可以按照预设规则进行递增,例如,序列号在原来的基础上增加1。
S140、根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
业务线程的线程标识可以为对业务线程进行唯一标识的标识号。全局唯一标识的位数可以根据实际需求进行设定。示例性的,全局唯一标识的位数可以根据编程语言的基本数据类型的长度;或者还可以根据应用领域进行设定。例如,应用领域可以为:数据库、分布式数据库、中间件、分布式中间件和分布式存储等领域。例如,全局唯一标识可以为64位,由32位序列号、11位线程标识和21位机器号组成。
将更新后的序列号、机器号和业务线程的线程标识按照预设的顺序进行组合,生成数据库全局标识。序列号、机器号和线程标识三个部分之间的先后顺序,可以根据实际需求进行调整,本申请对此不作具体限定。
随着数字技术的迅速发展,作为底层基础设施的数据库迎来新的挑战。传统集中式数据库因其单点瓶颈越来越无法适应数字化发展的需要。分布式数据库具有水平扩展性、高可用性和强一致性等特性,能够解决数据量爆发式增长与传统集中式数据库有限容量和性能之间的矛盾。相较于集中式,分布式数据库是将物理上分散的多个节点连接起来组成逻辑上统一的数据库,数据被划分成多个子集并分布到不同的节点上,将单个节点的压力分散到多个节点,以实现读写能力扩展,但是同时这给如何生成全局标识带来了挑战。
追踪代码执行的过程中,需要一个唯一值和对应的业务操作相关联,这便是全局标识的作用。对于集中式数据库,可以用数据库的自增标识或者时间戳再加一个在本机递增的值,即可实现全局标识的唯一值。但是对于分布式系统,具有不同的应用,不同的节点,不同的集群和不同的机房,因此不能使用集中式数据库的全局标识的生成方式。
现有技术中,主要分为两种分布式数据库全局唯一标识生成方法。一种方法为SnowFlake算法,生成long(专业术语,一种数据类型的名称)型全局标识,由41比特t的时间戳信息、10比特的机器标识、12比特的序列号、1比特的符号位,共64bit组成。SnowFlake算法强依赖于机器时钟,假如执行作业服务机器的机器时钟与标准时钟不一致需要进行机器时钟回拨,这会导致重复全局标识生成。另一种方法为UUID,其标准结构式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符,16字节128位,超过了大多数主流的编程语言的基本数据类型的长度,导致很多场景不适用。
本实施例的技术方案,通过获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。业务线程通过维护一组序列号,可以提高分布式数据库的并发性,通过机器号保障全局的唯一性,通过根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识,不依赖机器时钟,保证全局唯一性,结构简单,可用性强。因此通过本申请的技术方案,解决了SnowFlake算法强依赖于机器时钟导致重复标识生成,全局唯一性差,并行性差,和UUID可用性差的问题,达到了增强数据库全局标识的全局唯一性、并发性和可用性的效果。
实施例二
图2为本申请实施例二提供的一种数据库全局标识生成方法的流程图方法的流程图,本实施例的技术方案在上述技术方案的基础上进一步细化。
进一步地,将“根据判断结果,控制更新业务线程的序列号以及业务线程的机器号”,细化为:“若不存在未分配的序列号,则通过全局事务管理组件更新业务线程的机器号;将业务线程的序列号置零,并对置零后的序列号进行自增值,以更新序列号”,以更新序列号;
相应的,将“根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识”,细化为:“根据更新后的序列号、更新后的机器号和业务线程的线程标识,生成数据库全局标识”,以生成数据库全局标识。
参见图2所示的一种数据库全局标识生成方法,包括:
S210、获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识。
S220、判断历史全局标识中业务线程对应的序列号是否存在未分配序列号。
S230、若不存在未分配的序列号,则通过全局事务管理组件更新业务线程的机器号。
全局事务管理组件用于生成分布式数据库中的机器号,可以保证机器号在全局内唯一,可以并行维护多个不同线程的机器号,而且,同时,全局事务管理组件生成的机器号可以固化在磁盘中,当系统进行重启操作时,对机器号的生成不会产生任何的影响。
若不存在未分配的序列号,也即当前机器号对应的序列号已经全部使用过,此时为了保障生成的全局标识的唯一性,需要通过全局事务管理组件更新业务线程的机器号,以保证全局标识的唯一性。
在一个可选实施实例中,通过全局事务管理组件更新业务线程的机器号,包括:若业务线程的机器号与本地机器号线程中的第一机器号相同,则根据机器号线程中的第二机器号更新业务线程的机器号;第一机器号和第二机器号由全局事务管理组件生成;通过全局事务管理组件,分别更新机器号线程中的第一机器号和第二机器号。
第一机器号为本地机器号线程中存储的一个机器号,用于对业务线程的机器号进行更新。第二机器号也为本地机器号线程中存储的一个机器号,用于对第一机器号进行更新。本地机器号线程为业务线程所在数据库节点维护的线程,用于维护从全局事务管理组件中获取的两个机器号,以便于提高对业务线程获取机器号的响应速度。具体的,在分布式数据的数据节点启动时,数据节点中的本地机器号线程,从全局事务管理组件中获取的两个机器号,并分别存储为第二机器号和第一机器号,进入等待状态,其中,第一机器号的生成时间在第二机器号的生成时间之前。
若业务线程的机器号与本地机器号线程中的第一机器号相同,说明第一机器号已经被业务线程使用,因此,根据机器号线程中的第二机器号更新业务线程的机器号。业务线程获取第二机器号后,则机器号线程中维护的两个机器号都已经使用过,此时机器号线程通过全局事务管理组件获取新的机器号更新机器号线程中的第一机器号和第二机器号。
通过若业务线程的机器号与本地机器号线程中的第一机器号相同,则根据机器号线程中的第二机器号更新业务线程的机器号,保障机器号不会重复使用;第一机器号和第二机器号由全局事务管理组件生成,保障机器号的全局唯一性;通过全局事务管理组件,分别更新机器号线程中的第一机器号和第二机器号,为业务线程下次获取机器号做准备,提高业务线程获取机器号的效率。
在一个可选实施实例中,通过全局事务管理组件更新业务线程的机器号,包括:若业务线程的机器号与机器号线程中的第一机器号不同,则根据机器号线程中的第一机器号更新业务线程的机器号。
若业务线程的机器号与机器号线程中的第一机器号不同,此时,说明第一机器号未被业务线程使用,因此,根据机器号线程中的第一机器号更新业务线程的机器号。
需要说明的是,根据机器号线程中的第一机器号更新业务线程的机器号后,不需要更新机器号线程中的第一机器号和第二机器号,可以使得其他业务线程获取机器号时,仍然可以再次获取第一机器号,提高第一机器号的利用效率。
通过若业务线程的机器号与机器号线程中的第一机器号不同,则根据机器号线程中的第一机器号更新业务线程的机器号,可以直接获取第一机器号,提高机器号更新效率。
S240、将业务线程的序列号置零,并对置零后的序列号进行自增值,以更新序列号。
因为在获取新的机器号之前,序列号已经是最大值,在更新机器号后,将业务线程的序列号置零,以便于利用该新的机器号,重新对应一组序列号生成新的全局标识。对置零后的序列号进行自增值可以是,在有一个获取全局标识的需求时,对置零后的序列号增加1,以更新序列号。
S250、根据更新后的序列号、更新后的机器号和业务线程的线程标识,生成数据库全局标识。
根据更新后的序列号、更新后的机器号和业务线程的线程标识,按照预设的组合顺序,生成数据库全局标识。
本实施例的技术方案,通过若不存在未分配的序列号,则通过全局事务管理组件更新业务线程的机器号,在不存在未分配的序列号时,获取新的机器号,保证机器号和序列号的组合是唯一的,保证全局标识的唯一性;将业务线程的序列号置零,并对置零后的序列号进行自增值,以更新序列号,在更新机器号后,维护一组自增的序列号,提高全局标识生成的并发性。根据更新后的序列号、更新后的机器号和业务线程的线程标识,生成数据库全局标识,保障全局标识的唯一性。
在一个可选实施例中,根据判断结果,控制更新业务线程的序列号以及业务线程的机器号,包括:若存在未分配的序列号,则对业务线程对应的序列号按照预设步长进行自增值,以更新序列号;相应的,根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识,包括:根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
若存在未分配的序列号,也即当前机器号对应的序列号还未全部使用过,此时,对业务线程对应的序列号按照预设步长进行自增值,以更新序列号。预设步长可以为预先设定的自增值的数值,一般为了充分利用序列号,将预设步长设置为1,便于计算,提高生成全局标识的效率。若存在未分配的序列号,不需要更新机器号,因此,相应的,根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
通过若存在未分配的序列号,则对业务线程对应的序列号按照预设步长进行自增值,以更新序列号,可以快速更新序列号;相应的,根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识,保障数据库全局标识的唯一性。
实施例三
图3为本申请实施例三提供的一种数据库全局标识生成方法的流程图方法的流程图,本实施例的技术方案在上述技术方案的基础上进一步细化。
进一步地,将“若业务线程的机器号与机器号线程中的第一机器号不同,则根据机器号线程中的第一机器号更新业务线程的机器号”,细化为:“通过全局事务管理组件生成新的机器号;通过机器号线程根据第二机器号更新第一机器号,并根据新的机器号,更新第二机器号”,以更新机器号。
参见图3所示的一种数据库全局标识生成方法,包括:
S310、获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识。
S320、判断历史全局标识中业务线程对应的序列号是否存在未分配序列号。
S330、若业务线程的机器号与本地机器号线程中的第一机器号相同,则根据机器号线程中的第二机器号更新业务线程的机器号;第一机器号和第二机器号由全局事务管理组件生成。
S340、通过全局事务管理组件生成新的机器号。
若业务线程的机器号与本地机器号线程中的第一机器号相同,此时机器号线程从等待状态转换为启动状态,向全局事务管理组件发送获取请求,全局事务管理组件生成新的机器号,发送给机器号线程。
在一个可选实施例中,通过全局事务管理组件生成新的机器号,包括:通过全局事务管理组件对第二机器号进行自增值,得到新的机器号。
全局事务管理组件获取机器号线程中的新的机器号获取请求,对第二机器号进行自增值操作,将增值后的结果作为新的机器号。具体的,全局事务管理组件可以维护一个机器号自增值序列,当有新的机器号获取请求时,全局事务管理组件对其记录的上次发送的机器号进行增加1的运算,将得到的结果作为新的机器号发送给业务线程,并更新自身的机器号发送记录。需要说明的是,通过全局事务管理组件对第二机器号进行自增值,自增值每次增加的数值可以不相同。
通过全局事务管理组件对第二机器号进行自增值,得到新的机器号,可以快速生成新的机器号,逻辑简单,易于实现,且不会出现重复,提高新机器号生成效率。
S350、通过机器号线程根据第二机器号更新第一机器号,并根据新的机器号,更新第二机器号。
机器号线程将第二机器号赋值给第一机器号,更新第一机器号,将新的机器号赋值给第二机器号,更新第二机器号。这样在后续业务线程获取机器号时,依次对比第一机器号和第二机器号,保证两个机器号都被利用。
S360、将业务线程的序列号置零,并对置零后的序列号进行自增值,以更新序列号。
S370、根据更新后的序列号、更新后的机器号和业务线程的线程标识,生成数据库全局标识。
本实施例的技术方案,通过全局事务管理组件生成新的机器号,保证生成的新的机器号的全局性;通过机器号线程根据第二机器号更新第一机器号,并根据新的机器号,更新第二机器号,实现对两个机器号的更新,在业务线程更新机器号时依次对比第一机器号和第二机器号,保证两个机器号都被利用。
实施例四
图4所示为本申请实施例四提供的一种数据库全局标识生成装置的结构示意图,本实施例可适用于为分布式数据库中的各数据节点的执行线程生成全局唯一标识的情况,配置于分布数据库的数据节点中,该数据库全局标识生成装置的具体结构如下:
请求获取模块410,用于获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;
序列号判断模块420,用于判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;
标识更新模块430,用于根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;
标识生成模块440,用于根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
本实施例的技术方案,通过请求获取模块获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;通过序列号判断模块判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;通过标识更新模块根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;通过标识生成模块根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。业务线程通过维护一组序列号,可以提高分布式数据库的并发性,通过机器号保障全局的唯一性,通过根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识,不依赖机器时钟,保证全局唯一性,结构简单,可用性强。因此通过本申请的技术方案,解决了SnowFlake算法强依赖于机器时钟导致重复标识生成,全局唯一性差,并行性差,和UUID可用性差的问题,达到了增强数据库全局标识的全局唯一性、并发性和可用性的效果。
可选的,标识更新模块430,包括:
机器号更新单元,用于若不存在未分配的序列号,则通过全局事务管理组件更新业务线程的机器号;
序列号更新单元,用于将业务线程的序列号置零,并对置零后的序列号进行自增值,以更新序列号;
相应的,标识生成模块440,包括:
标识组合单元,用于根据更新后的序列号、更新后的机器号和业务线程的线程标识,生成数据库全局标识。
可选的,序列号更新单元,包括:
第二机器号替换子单元,用于若业务线程的机器号与本地机器号线程中的第一机器号相同,则根据机器号线程中的第二机器号更新业务线程的机器号;第一机器号和第二机器号由全局事务管理组件生成;
本地机器号更新子单元,用于通过全局事务管理组件,分别更新机器号线程中的第一机器号和第二机器号。
可选的,线程机器号更新子单元,包括:
第一机器号替换子单元,用于若业务线程的机器号与机器号线程中的第一机器号不同,则根据机器号线程中的第一机器号更新业务线程的机器号。
本地机器号更新子单元,具体用于通过全局事务管理组件生成新的机器号;通过机器号线程根据第二机器号更新第一机器号,并根据新的机器号,更新第二机器号。
本地机器号更新子单元,具体还用于通过全局事务管理组件对第二机器号进行自增值,得到新的机器号。
可选的,标识更新模块430,包括:
序列号自增值单元,用于若存在未分配的序列号,则对业务线程对应的序列号按照预设步长进行自增值,以更新序列号;
相应的,标识生成模块440,包括:
标识组合单元,用于根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
本申请实施例所提供的数据库全局标识生成装置可执行本申请任意实施例所提供的数据库全局标识生成方法,具备执行数据库全局标识生成方法相应的功能模块和有益效果。
实施例五
图5为本申请实施例五提供的一种电子设备的结构示意图,如图5所示,该电子设备包括处理器510、存储器520、输入装置530和输出装置540;电子设备中处理器510的数量可以是一个或多个,图5中以一个处理器510为例;电子设备中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的数据库全局标识生成方法对应的程序指令/模块(例如,请求获取模块410、序列号判断模块420、标识更新模块430和标识生成模块440)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的数据库全局标识生成方法。
存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
实施例六
本申请实施例六还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种数据库全局标识生成方法,该方法包括:获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和业务线程获取的数据库的历史全局标识;判断历史全局标识中业务线程对应的序列号是否存在未分配序列号;根据判断结果,控制更新业务线程的序列号以及业务线程的机器号;根据更新后的序列号、机器号和业务线程的线程标识,生成数据库全局标识。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本申请任意实施例所提供的数据库全局标识生成方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

Claims (10)

1.一种数据库全局标识生成方法,其特征在于,包括:
获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和所述业务线程获取的所述数据库的历史全局标识;
判断所述历史全局标识中所述业务线程对应的序列号是否存在未分配序列号;
根据判断结果,控制更新所述业务线程的序列号以及所述业务线程的机器号;
根据更新后的序列号、机器号和所述业务线程的线程标识,生成所述数据库全局标识。
2.根据权利要求1所述的方法,其特征在于,所述根据判断结果,控制更新所述业务线程的序列号以及所述业务线程的机器号,包括:
若不存在未分配的序列号,则通过全局事务管理组件更新所述业务线程的机器号;
将所述业务线程的序列号置零,并对置零后的序列号进行自增值,以更新所述序列号;
相应的,所述根据更新后的序列号、机器号和所述业务线程的线程标识,生成所述数据库全局标识,包括:
根据更新后的序列号、更新后的机器号和所述业务线程的线程标识,生成所述数据库全局标识。
3.根据权利要求2所述的方法,其特征在于,所述通过全局事务管理组件更新所述业务线程的机器号,包括:
若所述业务线程的机器号与本地机器号线程中的第一机器号相同,则根据所述机器号线程中的第二机器号更新所述业务线程的机器号;所述第一机器号和所述第二机器号由所述全局事务管理组件生成;
通过全局事务管理组件,分别更新所述机器号线程中的第一机器号和第二机器号。
4.根据权利要求2所述的方法,其特征在于,所述通过全局事务管理组件更新所述业务线程的机器号,还包括:
若所述业务线程的机器号与所述机器号线程中的第一机器号不同,则根据所述机器号线程中的第一机器号更新所述业务线程的机器号。
5.根据权利要求3所述的方法,其特征在于,所述通过全局事务管理组件,分别更新所述机器号线程中的第一机器号和第二机器号,包括:
通过全局事务管理组件生成新的机器号;
通过所述机器号线程根据所述第二机器号更新所述第一机器号,并根据所述新的机器号,更新所述第二机器号。
6.根据权利要求5所述的方法,其特征在于,所述通过全局事务管理组件生成新的机器号,包括:
通过所述全局事务管理组件对所述第二机器号进行自增值,得到所述新的机器号。
7.根据权利要求1所述的方法,其特征在于,
所述根据判断结果,控制更新所述业务线程的序列号以及所述业务线程的机器号,包括:
若存在未分配的序列号,则对所述业务线程对应的序列号按照预设步长进行自增值,以更新所述序列号;
相应的,所述根据更新后的序列号、机器号和所述业务线程的线程标识,生成所述数据库全局标识,包括:
根据更新后的序列号、所述机器号和所述业务线程的线程标识,生成所述数据库全局标识。
8.一种数据库全局标识生成装置,其特征在于,包括:
请求获取模块,用于获取业务线程具备数据库访问需求时所生成的,用于获取数据库全局标识的标识获取请求,和所述业务线程获取的所述数据库的历史全局标识;
序列号判断模块,用于判断所述历史全局标识中所述业务线程对应的序列号是否存在未分配序列号;
标识更新模块,用于根据判断结果,控制更新所述业务线程的序列号以及所述业务线程的机器号;
标识生成模块,用于根据更新后的序列号、机器号和所述业务线程的线程标识,生成所述数据库全局标识。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任一所述的数据库全局标识生成方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一所述的数据库全局标识生成方法。
CN202211684303.0A 2022-12-27 2022-12-27 数据库全局标识生成方法、装置、电子设备和存储介质 Pending CN115982188A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211684303.0A CN115982188A (zh) 2022-12-27 2022-12-27 数据库全局标识生成方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211684303.0A CN115982188A (zh) 2022-12-27 2022-12-27 数据库全局标识生成方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN115982188A true CN115982188A (zh) 2023-04-18

Family

ID=85959123

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211684303.0A Pending CN115982188A (zh) 2022-12-27 2022-12-27 数据库全局标识生成方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN115982188A (zh)

Similar Documents

Publication Publication Date Title
CN110096336B (zh) 数据监控方法、装置、设备和介质
CN110427386B (zh) 数据处理方法、装置及计算机存储介质
CN110309161B (zh) 一种数据同步方法、装置及服务器
CN111399764B (zh) 数据存储方法、读取方法、装置、设备及存储介质
CN110020272B (zh) 缓存方法、装置以及计算机存储介质
CN108520401B (zh) 用户名单管理方法、装置、平台及存储介质
CN108762979B (zh) 一种基于匹配树的终端信息备份方法及备份设备
CN112052144B (zh) 信息管理方法、装置、电子设备及存储介质
CN112866339B (zh) 数据传输方法、装置、计算机设备和存储介质
CN111400301A (zh) 一种数据查询方法、装置及设备
CN110515979B (zh) 数据查询方法、装置、设备和存储介质
CN104717280A (zh) 数据同步的标记方法和装置
CN111625617A (zh) 一种数据索引方法、装置及计算机可读存储介质
CN110990360A (zh) 基于网络存储设备的文件同步方法及相关组件
CN115982188A (zh) 数据库全局标识生成方法、装置、电子设备和存储介质
CN115526586A (zh) 一种基于智能运算的业务流程处理方法
CN113312412A (zh) 一种统计数据的获取方法、装置、电子设备及存储介质
JP7133037B2 (ja) メッセージ処理方法、装置およびシステム
CN111061719A (zh) 数据收集方法、装置、设备和存储介质
CN107332679B (zh) 一种无中心信息同步方法及装置
CN111679899A (zh) 任务调度方法、装置、平台设备及存储介质
CN108206933B (zh) 一种基于视频云存储系统的视频数据获取方法及装置
CN107168685B (zh) 更新脚本的方法及装置、计算机终端
CN115827659A (zh) 数据库行标识生成方法、装置、电子设备和存储介质
CN112817766B (zh) 一种内存管理方法、电子设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination