关系型数据库序列号应用方法和系统技术方案

技术编号:8533099 阅读:241 留言:0更新日期:2013-04-04 16:16
本发明专利技术公开了一种关系型数据库序列号应用方法和系统,所述方法包括:序列定义,预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;序列取值,根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。这样一来,消除了不同类型数据库序列号生成规则差异导致的程序代码差异,有效降低了数据库迁移时的程序改造成本。

【技术实现步骤摘要】

本专利技术涉及数据库
,具体涉及一种关系型数据库的序列号应用方法和系统。
技术介绍
关系型数据库是建立在关系模型基础上的数据库,是当今最主流的数据库产品。经过几十年的发展,关系型数据库已被广泛应用于不同行业和领域,如,甲骨文公司的Oracle、MySQL,微软公司的 SQLServer,IBM 公司的 DB2 等。在关系型数据库中,数据表用来存储数据对象,一般包括字段名称,取值和数据类型等属性。数据表中,主键是一个字段或者一个字段集合用于唯一的标识表中每一行数据。一般而言,数据表会自动生成等间隔数值的序列号作为表中的主键。而不同公司的数据库产品都有其各自的序列号管理和生成方式,例如Oracle的序列被定义成一个对象进行管理,使用时遵循Oracle定义语法,如通过Sequence_name. nextval获取序列号当前值;SQLServer使用Identity属性创建自增数据列,由数据库自动管理序列号的递增;MySQL使用Auto_increment属性创建自增数据列,由数据库自动管理序列号的递增;DB2使用的序列被定义成一个对象进行管理,使用时遵循DB2定义语法。在不同的行业应用和项目中,由于项目规模和需求的不同,往往会使用不同的数据库产品,这就导致在跨类型数据库程序迁移时,需要通过对程序中大量数据库操作代码进行相应的改造,才能适应不同数据库序列号生成和使用方式造成的差异。总之,需要本领域技术人员解决的技术问题就是在跨类型数据库程序迁移时,如何降低因序列号生成和使用方式差异造成的代码改造成本。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的关系型数据库序列号应用方法和相应的系统。依据本专利技术的一个方面,提供了一种关系型数据库序列号应用方法,包括序列定义,预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;序列取值,根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。可选地,所述序列号映射表记录的字段还包括序列号当前状态;所述序列取值中,若存在匹配记录之后还包括判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信肩、O可选地,所述序列取值还包括若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;若不为锁定,则修改所述序列号当前状态为锁定状态;以及在计算出序列号返回值后,将所述序列号当前状态置为可用状态。可选地,所述方法还包括序列池定义,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;所述序列池还包括对指定序列号名称的序列操作方法,包括新增序列号,用于向所述序列号映射表中增加一条新的序列记录;和/或删除序列号,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或获取序列号,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。可选地,所述序列池中的序列操作方法还包括序列池初始化,包括从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;所述获取序列号中,返回序列号返回值后还包括判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。根据本专利技术的另一方面,提供了一种关系型数据库序列号应用系统,包括序列定义模块,用于预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;序列取值模块,用于根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。可选地,所述序列号映射表记录的字段还包括序列号当前状态;所述序列取值模块还用于,若存在匹配记录之后还包括判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信肩、O可选地,所述序列取值模块还用于若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;若不为锁定,则修改所述序列号当前状态为锁定状态;以及在计算出序列号返回值后,将所述序列号当前状态置为可用状态。可选地,所述系统还包括序列池模块,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;所述序列池模块还包括新增序列号单元,用于向所述序列号映射表中增加一条新的序列记录;和/或删除序列号单元,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或获取序列号单元,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。可选地,所述序列池模块还包括序列池初始化单元,用于从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;所述获取序列号单元,还用于判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。现有技术中,由于不同类型数据库对序列号使用方式存在的差异,因此,当程序在不同类型数据库间迁移时,必须对程序中原有的数据库操作代码进行适应性改造,导致迁移成本大幅增加。而本专利技术通过定义序列号映射表存储各数据表对应的序列号,并按照统一规则对序列号进行取值和更新,其所获取的序列号可被应用于任一类型数据库,消除了不同类型数据库中序列号的生成机制带来的差异,程序代码可按统一的规则使用序列号,即使改变数据库也无需对程序代码做出修改,因此,取得了降低数据库迁移改造成本的有益效果。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了根据本专利技术一个实施例的一种关系型数据库序列号应用方法的流程示意图;图2示出了根据本专利技术一个实施例的一种关系型数据库序列号应用方法中序列取值的流程示意图;图3示出了根据本专利技术一个实施例的一种关系型数据库序列号应用系统的结构示意图。具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反本文档来自技高网...

【技术保护点】
一种关系型数据库序列号应用方法,其特征在于,包括:序列定义,预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;序列取值,根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。

【技术特征摘要】
1.一种关系型数据库序列号应用方法,其特征在于,包括序列定义,预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;序列取值,根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。2.如权利要求1所述的方法,其特征在于,所述序列号映射表中记录的字段还包括序列号当前状态;所述序列取值中,若存在匹配记录之后还包括判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信息。3.如权利要求2所述的方法,其特征在于,所述序列取值还包括若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;若不为锁定,则修改所述序列号当前状态为锁定状态;以及在计算出序列号返回值后,将所述序列号当前状态置为可用状态。4.如权利要求1、2或3所述的方法,其特征在于,所述方法还包括序列池定义,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录; 所述序列池还包括对指定序列号名称的序列操作方法,包括新增序列号,用于向所述序列号映射表中增加一条新的序列记录;和/或删除序列号,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或获取序列号,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。5.如权利要求4所述的方法,其特征在于,所述序列池中的序列操作方法还包括 序列池初始化,包括从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;所述获取序列号中,返回序列号返回值后还包括判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值; 若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列...

【专利技术属性】
技术研发人员:栗增光周训波
申请(专利权)人:大唐软件技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1