业务场景元素序列号生成方法、装置、介质和计算机设备与流程

文档序号:17358300发布日期:2019-04-09 21:52阅读:179来源:国知局
业务场景元素序列号生成方法、装置、介质和计算机设备与流程

本发明涉及数据库序列号领域,具体而言,本发明涉及一种基于oracle数据库的业务场景元素序列号生成方法、装置、计算机可读存储介质和计算机设备。



背景技术:

分布式系统中,经常有对于同时具备唯一性以及有序性的序列号的需求。在分布式系统中通常包含了多种业务场景,而不同的业务场景因其本身场景特性,对于序列号的格式有特殊要求。

而目前序列号的生成方案中,序列号的格式通常只有一种,如十进制的序列号,而业务场景获得序列号之后就需要将序列号的格式进行处理,以使序列号的格式满足业务场景自身对序列号格式的要求。

因此需要一种能够满足不同业务场景要求的序列号生成方法,以提高在业务场景使用序列号的效率。



技术实现要素:

本发明针对现有技术的缺点,提供了一种基于oracle数据库的业务场景元素序列号生成方法、装置、计算机可读存储介质和计算机设备,能够实现同时生成序列号格式符合不同业务场景要求的序列号,各个业务场景获得序列号后能够直接使用,无须将序列号进行转换,提高了在业务场景使用序列号的效率。

本发明实施例根据第一方面提供了一种基于oracle数据库的业务场景元素序列号生成方法,包括:

接收oracle数据库的业务场景元素的序列号获取请求,序列号获取请求中携带业务场景标识;

获取所述序列号获取请求中的业务场景标识;

根据所述业务场景标识,生成所述业务场景元素的格式类型与业务场景标识对应的业务场景元素序列号。

进一步地,所述根据所述业务场景标识,生成所述业务场景元素的格式类型与业务场景标识对应的业务场景元素序列号,包括:

查询序列号分配表格,确定当前可分配序列号;

将所述当前可分配序列号转换为与业务场景标识对应格式类型,得到格式类型与业务场景标识对应的业务场景元素序列号。

更进一步地,所述序列号分配表格记录可分配序列号项和可分配序列号最大值项;

其中,所述查询序列号分配表格,确定当前可分配序列号,包括:

若所述可分配序列号项的值不大于所述可分配序列号最大值项的值,则将所述可分配序列号项的值确定为当前可分配序列号;把所述序列号分配表格中的可分配序列号项的值加1;

若所述可分配序列号项的值大于所述可分配序列号最大值项的值,则向oracle数据库发送序列号获取请求,并根据oracle数据库的反馈消息确定当前可分配序列号。

更进一步地,所述向oracle数据库发送的序列号获取请求中包括表示本次请求的序列号数量的序列号步长值;

所述根据oracle数据库的反馈消息确定当前可分配序列号,步骤包括:

接收oracle数据库的反馈消息,所述反馈消息包括oracle数据库反馈的序列号值;

将序列号分配表格中可分配序列号项的值更新为oracle数据库反馈的序列号值,将可分配序列号最大值项的值更新为所述oracle数据库反馈的序列号值与所述序列号步长值的和;

将更新后的序列号分配表格中的可分配序列号项的值确定为当前可分配序列号;把所述序列号分配表格中的可分配序列号项的值加1;。

进一步地,所述根据业务场景标识,生成格式类型与业务场景标识对应的业务场景元素序列号,之后,还包括:

把具有同一业务场景元素的包含业务场景元素序列号的业务场景元素汇集成一个业务场景元素组,对所述业务场景元素组进行集中处理。

进一步地,每个业务场景具有唯一的业务场景标识,每个业务场景包含若干业务场景元素,每个业务场景标识对应一个格式类型。

进一步地,所述格式类型中包含标识信息和系列号信息;

所述将所述当前可分配序列号转换为与业务场景标识对应格式类型,包括:

获取所述业务场景标识对应的格式类型,将所述当前可分配序列号转换为所述格式类型;

把具有同一业务场景标识的包含业务场景元素序列号的业务场景元素汇集成一个业务场景元素组,对所述业务场景元素组进行集中处理,包括:

根据格式类型,筛选出具有同一格式类型的业务场景元素序列号,把筛选出的业务场景元素序列号对应的业务场景元素汇集成一个业务场景元素组;统一对格式类型包含的标识信息和/或系列号信息进行修改。

本发明实施例根据第二方面提供了一种基于oracle数据库的业务场景元素序列号生成装置,包括:

获取请求接收模块,用于接收oracle数据库的业务场景元素的序列号获取请求,序列号获取请求中携带业务场景标识;

场景标识获取模块,用于获取所述序列号获取请求中的业务场景标识;

序列号生成模块,用于根据业务场景标识,生成格式类型与业务场景标识对应的业务场景元素序列号。

本发明实施例根据第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的基于oracle数据库的业务场景元素序列号生成方法。

本发明实施例根据第四方面提供了一种计算机设备,所述计算机设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的基于oracle数据库的业务场景元素序列号生成方法。

在本发明实施例中,通过接收oracle数据库的业务场景元素的序列号获取请求,序列号获取请求中携带业务场景标识,之后获取所述序列号获取请求中的业务场景标识,最后根据业务场景标识,生成格式类型与业务场景标识对应的业务场景元素序列号,能够实现同时生成序列号格式符合不同业务场景要求的序列号,各个业务场景获得序列号后能够直接使用,无须将序列号进行转换,提高了在业务场景使用序列号的效率。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明一个实施例的基于oracle数据库的业务场景元素序列号生成方法流程示意图;

图2为本发明一个实施例的基于oracle数据库的业务场景元素序列号生成装置的结构示意图;

图3为本发明一种实施例的计算机设备的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本发明实施例提供了一种基于oracle数据库的业务场景元素序列号生成方法,应用于分布式系统中,所述分布式系统中包含至少一个应用服务器。

以下从应用服务器的角度,结合附图对本发明的具体实施方式进行详细介绍。

如图1所示,在一个实施例中,一种基于oracle数据库的业务场景元素序列号生成方法,包括以下步骤:

s110:接收oracle数据库的业务场景元素的序列号获取请求,序列号获取请求中携带业务场景标识。

在本发明实施例中,所述分布式系统包含多个应用服务器,并且将序列号的生成操作从oracle数据库转移到各个应用服务器中,即分布式系统中的所有业务场景元素向应用服务器请求序列号而不向数据库请求序列号,数据库只需要为各个应用服务器提供索引值,保证各个应用服务器所分配给业务场景元素的序列号能够在整个分布式系统中具备唯一性,而各个应用服务器负责执行序列号单调递增的操作,以及在接收到序列号获取请求后反馈序列号。通过数据库和应用服务器的配合,能够为多个业务场景提供同时具备唯一性、有序性的序列号,并且提高了给序列号获取请求的反馈速度。

s120:获取所述序列号获取请求中的业务场景标识。

s130:根据所述业务场景标识,生成所述业务场景元素的格式类型与业务场景标识对应的业务场景元素序列号。

具体地,在一种实施方式中,步骤s130:所述根据所述业务场景标识,生成所述业务场景元素的格式类型与业务场景标识对应的业务场景元素序列号,具体包括以下步骤:

s1301:查询序列号分配表格,确定当前可分配序列号。

各个应用服务器都会维护一个序列号分配表格,该序列号分配表格中包括可分配序列号项和可分配序列号最大值项两个项目。

具体地,步骤s1301:查询序列号分配表格,确定当前可分配序列号,包括以下步骤:

若所述可分配序列号项的值不大于所述可分配序列号最大值项的值,则将所述可分配序列号项的值确定为当前可分配序列号;把所述序列号分配表格中的可分配序列号项的值加1;

若所述可分配序列号项的值大于所述可分配序列号最大值项的值,则向oracle数据库发送序列号获取请求,并根据oracle数据库的反馈消息确定当前可分配序列号。

当应用服务器接收到来自业务场景的序列号获取请求时,会先判断可分配序列号是否大于可分配序列号最大值,如果可分配序列号不大于可分配序列号最大值,则应用服务器会将可分配序列号反馈给该请求,并且反馈后,将原来的可分配序列号值加1,替换原先的可分配序列号。比如,在上述例子基础上,应用服务器接收序列号获取请求后,判断可分配序列号值为101,而可分配序列号最大值是200,那么将可分配序列号值101反馈给该请求,之后将已分配序列号值101加1生成新的可分配序列号值102,并将可分配序列号项的值更新为102。如果可分配序列号大于可分配序列号最大值,则应用服务器不将当前的可分配序列号进行分配,而会向数据库发出序列号获取请求,并在接收到数据库反馈的序列号后,更新原先的序列号分配表格,再从更新过的序列号分配表格中获取可分配序列号反馈给该请求。比如,在上述例子基础上,原先的序列号分配表格的可分配序列号值是201,可分配序列号最大值是200,经过判断发现原先的可分配序列号值大于可分配序列号最大值,那么应用服务器向数据库请求序列号,如果这次请求的序列号步长是50,而数据库返回的序列号是500,则应用服务器在接收到数据库反馈的序列号后,将原先的序列号分配表格更新为可分配序列号值为500,可分配序列号最大值为549,而反馈给该请求的序列号不是201,而是500。

在一种实施方式中,所述向oracle数据库发送的序列号获取请求中包括表示本次请求的序列号数量的序列号步长值;

所述根据oracle数据库的反馈消息确定当前可分配序列号,步骤包括:

接收oracle数据库的反馈消息,所述反馈消息包括oracle数据库反馈的序列号值;

将序列号分配表格中可分配序列号项的值更新为oracle数据库反馈的序列号值,将可分配序列号最大值项的值更新为所述oracle数据库反馈的序列号值与所述序列号步长值的和;

将更新后的序列号分配表格中的可分配序列号项的值确定为当前可分配序列号;把所述序列号分配表格中的可分配序列号项的值加1。

具体地,应用服务器分配的序列号值并不是随机值,而是需要先向oracle数据库请求一个序列号,并以oracle反馈的序列号为基础来分配序列,应用服务器发送给oracle的请求中还包括序列步长值,oracle收到应用服务器的请求后,在反馈给应用服务器一个序列后,还会记录这个序列步长值,当oracle再收到应用服务器的请求时,反馈的序列号值就是上次反馈序列号加上上次记录的序列步长值,相当于应用服务器是向oracle请求了一批序列号。比如,数据库接收到一个应用服务器的序列号获取请求,请求中的序列号步长是100,如果数据库反馈给该应用服务器的序列号是101,则下次接收到序列号获取请求时所反馈的序列号值等于201,即上次反馈序列号值101加上序列号步长100的和。需要说明的是,这个请求可以来自是上次发送请求的应用服务器,也可以是另外的应用服务器,所以oracle数据库能够保证各个应用服务器所分配的序列号不会与其他应用服务器分配的序列号重复。

s1302:将所述当前可分配序列号的格式类型转换为与业务场景标识对应的格式类型,得到格式类型与业务场景标识对应的业务场景元素序列号。

某些业务场景对于序列号的类型有特殊要求,比如,有的业务场景需要在序列号开头拼上年月日,有的业务场景需要将序列号转换为字符串类型等。以往,业务场景需要使用序列号时,需要向oracle数据库请求序列号,然而oracle反馈的序列号是十进制的整数,业务场景在接收到oracle反馈的序列号后,再根据自己的要求将序列号的类型进行转换,比如将oracle反馈的序列号转换为字符串类型,或者在序列号开头拼上年月日。而本方案将序列号的生成操作转移到应用服务器上,以降低oracle性能上的负荷,即业务场景在需要使用序列号时,向跟应用服务器请求序列号而不是向oracle请求序列号;并且应用服务器还承担转换序列号类型的任务,使得业务场景在获得应用服务器反馈的序列号时,直接使用序列号而不需要对序列号进行转换。

具体地,应用服务器维护一个用于确定序列号转换类型的表格,表格包括各个业务场景标识,以及与各个业务场景对应的序列号类型要求;各个业务场景发送给应用服务器的序列号获取请求中包含业务场景标识,当应用服务器接收到序列号获取请求后,生成序列号,之后获取请求中的业务场景标识,根据业务场景标识从表格中找到对应的序列号类型要求,根据序列号类型要求判断是否需要将生成的序列号的类型进行转换,若需要,则将生成的序列号的类型转换为符合序列号类型要求的类型,并将转换后的序列号反馈给相应的请求;若不需要,则直接将生成的序列号反馈给相应的请求。

比如,应用服务器在收到包含a业务场景标识的序列号获取请求后,生成序列号100,根据a业务场景标识从表格中确定对应的序列号类型要求是年月日+序列号,则获取当前年月日为20180525,并将其拼到初始序列号100的开头,生成转换了类型的序列号20180525100,再将该序列号反馈给该序列号获取请求。

在另一种实施方式中,步骤s130:所述根据业务场景标识,生成格式类型与业务场景标识对应的业务场景元素序列号,之后还包括:

把具有同一业务场景元素的包含业务场景元素序列号的业务场景元素汇集成一个业务场景元素组,对所述业务场景元素组进行集中处理。

比如,把优惠卷的元素,作为一个优惠卷组,统计发出了多少张优惠卷、或优惠卷的总额;因为是同一场景,故便于集中计算,提高同类场景的处理效率。

具体地,每个业务场景具有唯一的业务场景标识,每个业务场景包含若干业务场景元素,每个业务场景标识对应一个格式类型。

在分布式系统中,包含有多种业务场景,每一个业务场景对于序列号的格式都有不同的要求。比如发送短信的业务场景,对于序列号的格式要求是,再序列号的开头拼接上当时的时间点,如20180505+序列号的格式类型。

具体地,在一种实施方式中,所述格式类型中包含标识信息和系列号信息;

所述将所述当前可分配序列号的格式类型转换为与业务场景标识对应的格式类型,包括:

获取所述业务场景标识对应的格式类型,将所述当前可分配序列号转换为所述格式类型;

把具有同一业务场景标识的包含业务场景元素序列号的业务场景元素汇集成一个业务场景元素组,对所述业务场景元素组进行集中处理,包括:

根据格式类型,筛选出具有同一格式类型的业务场景元素序列号,把筛选出的业务场景元素序列号对应的业务场景元素汇集成一个业务场景元素组;统一对格式类型包含的标识信息和/或系列号信息进行修改。

为了更好地理解本发明技术方案,本发明还提供了一种基于oracle数据库的业务场景元素序列号生成装置,如图2所示,包括以下模块:

获取请求接收模块110,用于接收oracle数据库的业务场景元素的序列号获取请求,序列号获取请求中携带业务场景标识。

场景标识获取模块120,用于获取所述序列号获取请求中的业务场景标识。

序列号生成模块130,用于根据所述业务场景标识,生成所述业务场景元素的格式类型与业务场景标识对应的业务场景元素序列号。

具体地,所述序列号生成模块130包括以下子模块:

序列号确定子模块1301,用于查询序列号分配表格,确定当前可分配序列号;

具体地,所述序列号分配表格记录可分配序列号项和可分配序列号最大值项;

具体地,所述序列号确定子模块1301包括:

第一序列号确定单元,用于当所述可分配序列号项的值不大于所述可分配序列号最大值项的值时,将所述可分配序列号项的值确定为当前可分配序列号;把所述序列号分配表格中的可分配序列号项的值加1;

第二序列号确定单元,用于当所述可分配序列号项的值大于所述可分配序列号最大值项的值时,向oracle数据库发送序列号获取请求,并根据oracle数据库的反馈消息确定当前可分配序列号。

在一种实施方式中,所述向oracle数据库发送的序列号获取请求中包括表示本次请求的序列号数量的序列号步长值;

所述第二序列号确定单元,包括:

反馈消息接收子单元,用于接收oracle数据库的反馈消息,所述反馈消息包括oracle数据库反馈的序列号值;

表格更新子单元,用于将序列号分配表格中可分配序列号项的值更新为oracle数据库反馈的序列号值,将可分配序列号最大值项的值更新为所述oracle数据库反馈的序列号值与所述序列号步长值的和;

序列号确定子单元,用于将更新后的序列号分配表格中的可分配序列号项的值确定为当前可分配序列号;把所述序列号分配表格中的可分配序列号项的值加1。

格式类型转换子模块1302,用于将所述当前可分配序列号的格式类型转换为与业务场景标识对应的格式类型,得到格式类型与业务场景标识对应的业务场景元素序列号。

在一种实施方式中,所述基于oracle数据库的业务场景元素序列号生成装置,还包括,元素组处理模块,用于把具有同一业务场景元素的包含业务场景元素序列号的业务场景元素汇集成一个业务场景元素组,对所述业务场景元素组进行集中处理。

具体地,每个业务场景具有唯一的业务场景标识,每个业务场景包含若干业务场景元素,每个业务场景标识对应一个格式类型。

在分布式系统中,包含有多种业务场景,每一个业务场景对于序列号的格式都有不同的要求。比如发送短信的业务场景,对于序列号的格式要求是,再序列号的开头拼接上当时的时间点,如20180505+序列号的格式类型。

具体地,在一种实施方式中,所述格式类型中包含标识信息和系列号信息;

所述格式类型转换子模块1302,包括:

格式类型转换单元,用于获取所述业务场景标识对应的格式类型,将所述当前可分配序列号转换为所述格式类型;

元素组处理模块,还用于根据格式类型,筛选出具有同一格式类型的业务场景元素序列号,把筛选出的业务场景元素序列号对应的业务场景元素汇集成一个业务场景元素组;统一对格式类型包含的标识信息和/或系列号信息进行修改。

需要说明的是,本发明实施例提供的基于oracle数据库的业务场景元素序列号生成装置能够实现上述基于oracle数据库的业务场景元素序列号生成方法实施例所实现的功能,功能的具体实现参照上述基于oracle数据库的业务场景元素序列号生成方法中的描述,在此不再赘述。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述基于oracle数据库的业务场景元素序列号生成方法。其中,所述存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd-rom、和磁光盘)、rom(read-onlymemory,只读存储器)、ram(randomaccessmemory,随即存储器)、eprom(erasableprogrammableread-onlymemory,可擦写可编程只读存储器)、eeprom(electricallyerasableprogrammableread-onlymemory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。可以是只读存储器,磁盘或光盘等。

本发明实施例还提供一种计算机设备,所述计算机设备包括:

一个或多个处理器510;

存储装置520,用于存储一个或多个程序500,

当所述一个或多个程序500被所述一个或多个处理器510执行,使得所述一个或多个处理器510实现上述基于oracle数据库的业务场景元素序列号生成方法。

如图3所示为本发明计算机设备的结构示意图,包括处理器510、存储装置520、输入单元530以及显示单元540等器件。本领域技术人员可以理解,图3示出的结构器件并不构成对所有计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储装置520可用于存储应用程序500以及各功能模块,处理器510运行存储在存储装置520的应用程序500,从而执行设备的各种功能应用以及数据处理。存储装置520可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、zip盘、u盘、磁带等。本发明所公开的存储装置包括但不限于这些类型的存储装置。本发明所公开的存储装置520只作为例子而非作为限定。

输入单元530用于接收信号的输入,以及接收用户输入的选择语音文件等相关请求。输入单元530可包括触控面板以及其它输入设备。触控面板可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元540可用于显示用户输入的信息或提供给用户的信息以及计算机设备的各种菜单。显示单元540可采用液晶显示器、有机发光二极管等形式。处理器510是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储装置520内的软件程序和/或模块,以及调用存储在存储装置内的数据,执行各种功能和处理数据。

在一实施方式中,计算机设备包括一个或多个处理器510,以及一个或多个存储装置520,一个或多个应用程序500,其中所述一个或多个应用程序500被存储在存储装置520中并被配置为由所述一个或多个处理器510执行,所述一个或多个应用程序500配置用于执行以上实施例所述的基于oracle数据库的业务场景元素序列号生成方法。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

应该理解的是,在本发明各实施例中的各功能单元可集成在一个处理模块中,也可以各个单元单独物理存在,也可以两个或两个以上单元集成于一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1