CN103020268A - 关系型数据库序列号应用方法和系统 - Google Patents
关系型数据库序列号应用方法和系统 Download PDFInfo
- Publication number
- CN103020268A CN103020268A CN2012105746368A CN201210574636A CN103020268A CN 103020268 A CN103020268 A CN 103020268A CN 2012105746368 A CN2012105746368 A CN 2012105746368A CN 201210574636 A CN201210574636 A CN 201210574636A CN 103020268 A CN103020268 A CN 103020268A
- Authority
- CN
- China
- Prior art keywords
- sequence number
- sequence
- value
- mapping table
- record
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013507 mapping Methods 0.000 claims abstract description 64
- 238000012217 deletion Methods 0.000 claims description 19
- 230000037430 deletion Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000006872 improvement Effects 0.000 abstract description 5
- 230000005012 migration Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 239000002773 nucleotide Substances 0.000 description 5
- 125000003729 nucleotide group Chemical group 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001846 repelling effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种关系型数据库序列号应用方法和系统,所述方法包括:序列定义,预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;序列取值,根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。这样一来,消除了不同类型数据库序列号生成规则差异导致的程序代码差异,有效降低了数据库迁移时的程序改造成本。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种关系型数据库的序列号应用方法和系统。
背景技术
关系型数据库是建立在关系模型基础上的数据库,是当今最主流的数据库产品。经过几十年的发展,关系型数据库已被广泛应用于不同行业和领域,如,甲骨文公司的Oracle、MySQL,微软公司的SQLServer,IBM公司的DB2等。
在关系型数据库中,数据表用来存储数据对象,一般包括字段名称,取值和数据类型等属性。数据表中,主键是一个字段或者一个字段集合用于唯一的标识表中每一行数据。一般而言,数据表会自动生成等间隔数值的序列号作为表中的主键。而不同公司的数据库产品都有其各自的序列号管理和生成方式,例如:
Oracle的序列被定义成一个对象进行管理,使用时遵循Oracle定义语法,如通过Sequence_name.nextval获取序列号当前值;
SQLServer使用Identity属性创建自增数据列,由数据库自动管理序列号的递增;
MySQL使用Auto_increment属性创建自增数据列,由数据库自动管理序列号的递增;
DB2使用的序列被定义成一个对象进行管理,使用时遵循DB2定义语法。
在不同的行业应用和项目中,由于项目规模和需求的不同,往往会使用不同的数据库产品,这就导致在跨类型数据库程序迁移时,需要通过对程序中大量数据库操作代码进行相应的改造,才能适应不同数据库序列号生成和使用方式造成的差异。
总之,需要本领域技术人员解决的技术问题就是:在跨类型数据库程序迁移时,如何降低因序列号生成和使用方式差异造成的代码改造成本。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的关系型数据库序列号应用方法和相应的系统。
依据本发明的一个方面,提供了一种关系型数据库序列号应用方法,包括:
序列定义,预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;
序列取值,根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。
可选地,所述序列号映射表记录的字段还包括:序列号当前状态;
所述序列取值中,若存在匹配记录之后还包括:
判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信息。
可选地,所述序列取值还包括:
若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,
若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;
若不为锁定,则修改所述序列号当前状态为锁定状态;以及
在计算出序列号返回值后,将所述序列号当前状态置为可用状态。
可选地,所述方法还包括:
序列池定义,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;所述序列池还包括对指定序列号名称的序列操作方法,包括:
新增序列号,用于向所述序列号映射表中增加一条新的序列记录;和/或
删除序列号,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或
获取序列号,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。
可选地,所述序列池中的序列操作方法还包括:
序列池初始化,包括:从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;
所述获取序列号中,返回序列号返回值后还包括:
判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。
根据本发明的另一方面,提供了一种关系型数据库序列号应用系统,包括:
序列定义模块,用于预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;
序列取值模块,用于根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。
可选地,所述序列号映射表记录的字段还包括:序列号当前状态;
所述序列取值模块还用于,若存在匹配记录之后还包括:
判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可 用提示信息。
可选地,所述序列取值模块还用于:
若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,
若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;
若不为锁定,则修改所述序列号当前状态为锁定状态;以及
在计算出序列号返回值后,将所述序列号当前状态置为可用状态。
可选地,所述系统还包括:
序列池模块,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;
所述序列池模块还包括:
新增序列号单元,用于向所述序列号映射表中增加一条新的序列记录;和/或
删除序列号单元,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或
获取序列号单元,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。
可选地,所述序列池模块还包括:
序列池初始化单元,用于从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;
所述获取序列号单元,还用于判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。
现有技术中,由于不同类型数据库对序列号使用方式存在的差异,因此,当程序在不同类型数据库间迁移时,必须对程序中原有的数据库操作代码进行适应性改造,导致迁移成本大幅增加。而本发明通过定义序列号映射表存 储各数据表对应的序列号,并按照统一规则对序列号进行取值和更新,其所获取的序列号可被应用于任一类型数据库,消除了不同类型数据库中序列号的生成机制带来的差异,程序代码可按统一的规则使用序列号,即使改变数据库也无需对程序代码做出修改,因此,取得了降低数据库迁移改造成本的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种关系型数据库序列号应用方法的流程示意图;
图2示出了根据本发明一个实施例的一种关系型数据库序列号应用方法中序列取值的流程示意图;
图3示出了根据本发明一个实施例的一种关系型数据库序列号应用系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参见图1,图1示出了本发明提供的一种关系型数据库序列号应用方法 实施例一的流程示意图,本实施例的内容具体包括:
步骤101,序列定义,包括:预置序列号映射表,所述序列号映射表中存储有与序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值。
本领域技术人员容易理解,本发明实施例中所述的序列号映射表可基于多种数据格式文件,只要能实现对序列记录的存储、读取即可,例如:可扩展标记(Extensible Markup Language,XML)文件、文本文件等。在本发明另一优选实施例中,序列号映射表采用数据库中的数据表,并使用结构化查询语言(Structured Query Language,SQL)对该表中的记录执行新增、修改、删除操作,下面给出所述序列号映射表的一个结构定义示例:
其中,序列号名称用于定义序列号的唯一标识;当前值随着该序列号被使用而不断更新。应当理解,若所述序列号映射表为XML格式,则所述表中的记录和字段即相当于XML文件中的标记和对应的键值。
步骤102,序列取值,包括:根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。
现有技术中,由于不同类型数据库对序列号使用方式存在的差异,因此,当程序在不同类型数据库间迁移时,必须对程序中原有的数据库操作代码进行适应性改造,导致迁移成本大幅增加。而本发明实施例通过定义序列号映射表存储各数据表对应的序列号,并按照统一规则对序列号进行取值和更新,其所获取的序列号可被应用于任一类型数据库,屏蔽了不同类型数据库中序列号的生成机制带来的差异,程序代码可按统一的规则使用序列号,即使改变数据库也无需对程序代码做出修改,因此,大大降低了数据库迁移的 改造成本。
在实施本发明时,对于已经失效的序列号,直接从序列号映射表中将该序列记录删除可能会导致数据完整性问题,因此可在记录中设置“当前状态”以标识该序列号是否可用。具体的,在本发明的另一优选实施例中,所述记录中的字段还包括:序列号当前状态;所述序列取值中,若存在匹配记录之后还包括:判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信息。
为了保证序列号取值的全局唯一性,避免同一时间对序列号重复取值导致的数据错误,在本发明的另一优选实施例中,所述序列取值还包括:
若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,
若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;
若不为锁定,则修改所述序列号当前状态为锁定状态;以及
在计算出序列号返回值后,将所述序列号当前状态置为可用状态。
在实施本发明时,本领域技术人员可使用单进程对序列号映射表进行访问
为提高对序列号的维护和使用效率,在本发明的另一优选实施例中,通过程序框架来管理和维护序列号,具体包括:
序列池定义,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;所述序列池还包括对指定序列号名称的序列操作方法,包括:
新增序列号,用于向所述序列号映射表中增加一条新的序列记录;和/或
删除序列号,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或
获取序列号,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。
进一步的,所述序列池中的序列操作方法还包括:
序列池初始化,包括:从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;
所述获取序列号中,返回序列号返回值后还包括:
判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。
基于上述方法,在序列号的当前值超出其更新阈值前,对序列号的取值和更新都只在缓存中完成,减少了对数据库的访问次数,因此有效保证了大并发访问情况下对序列号的使用效率。
为便于本领域技术人员更好的理解本发明的内容,下面结合应用场景通过具体的例子对本发明的内容作进一步描述:
首先,以对员工信息表STAFF进行新增数据为例,说明不同类型数据库对序列号的使用差异,其STAFF表结构内容示例如下:
现有不同类型数据库由于各自不同的序列号生成规则,造成在对STAFF表新增记录时的SQL代码差异,具体表现在:
Oracle数据库新增时处理逻辑:
首先Sequence_name.nextval建立序列SEQ_STAFF_ID。新增数据时执行SQL语句insertinto Staff(ID,NAME)VALUES(SEQ_STAFF_ID.NEXTVAL,’张三’)。
SQL SERVER数据库新增时处理逻辑:
在创建表STAFF时,指定ID为自增序列,ID int IDENTITY(1,1)。新增数据时执行SQL语句insertinto Staff Values(‘张三’)。
DB2数据库新增时处理逻辑:
首先建立序列号SEQ_STAFF_ID。新增数据时执行SQL语句inert intoStaff(ID,NAME)VALUES(nextval for SEQ_SATFF_ID,’张三’)
MySQL数据库新增时处理逻辑:
在创建表STAFF时,指定ID为自增序列,ID int NOT NULLAUTO_INCREMENT。新增数据时执行SQL语句inertinto STAFF(NAME)Values(’张三’)。
从以上可以看出,基于不同数据库对序列的处理差异,导致对表Staff新增数据时的SQL代码也完全不同。因此当需要将应用迁移至不同的数据库时,程序中之前的SQL代码就必须进行改造以适应新的数据库,造成高昂的改造成本。
在下面的实施例描述中,使用Java编程语言和标准SQL语句,通过定义序列号数据表Sequenceinfo来存储和维护序列号,表Sequenceinfo的概念模型如下:
序列号名称:字符型,定义序列号的唯一名称。
最小值:数值型,定义当前序列号初始最小值。
最大值:数值型,定义当前序列号的最大值。
增长值:数值型,定义每次取值后当前值增长的幅度。
当前值:数值型,定义当前序列号取值。
状态:字符型,标示当前序列号状态。其中状态包括以下内容:
-在用:表示当前序列号为可用状态,取值“A”;
-作废:表示当前序列号为作废状态,取值“P”;
-锁定:表示当前序列号为占用锁定状态,取值“L”。
在程序中,当需要对员工信息表STAFF增加一条数据时,首先通过查询序列号表Sequenceinfo来获取当前记录对应的序列号值。下面基于以上数据模型,参照图2,对表STAFF当前序列号取值流程如下:
步骤201,根据序列号名称SEQ_STAFF_ID从序列号表Sequenceinfo查询对应的当前序列基础信息,例如查询到序列号名称为SEQ_STAFF_ID的序列信息如下表:
字段名称 | 取值 |
序列号名称 | SEQ_STAFF_ID |
最小值 | 1 |
最大值 | 999999 |
增长值 | 1 |
当前值 | 1000 |
状态 | A |
步骤202,根据当前序列状态判断是否可用,如果为非可用状态,则返回当前序列不可用提示信息。
步骤203,根据当前序列状态判断是否为锁定状态,如果为锁定状态则执行步骤2031。
步骤2031,查询线程等待0.5秒,持续等待3秒钟后,查询状态仍为锁定状态则返回当前序列已被死锁不可用提示信息。
步骤204,修改当前序列状态为锁定状态。
步骤205,获取当前序列取值和计算值,根据当前取值和增长值计算当前返回值。
从查询到的序列信息中取得当前值为1000,增长值为1.取值计算公式=当前值+增长值。计算结果为1001。
步骤206,判断当前取值是否超出预定义序列号最大值,若超出,执行步骤2061;否则,执行207。
步骤2061,如果当前取值大于预定义序列号最大值,返回取值超过允许最大值信息,解除序列号锁定状态。
步骤207,更新数据库当前序列取值,解除当前序列锁定状态。
步骤208,返回序列号取值。
至此,可以看出,使用本发明提供的序列号应用方法,在定义数据表时,无需将表中的序列号设置为IDENTITY或自增属性,只需根据实际情况考虑其数据类型和长度即可,例如本例中表STAFF的主键ID,仅定义了其数据类型为Number(5),在程序中需要对表STAFF新增数据时:首先,对SEQ_STAFF_ID取值为'1001';然后,执行SQL:insertinto Staff(ID,NAME)VALUES(‘1001’,’张三’),而该SQL代码适用于任一类型数据库,因此,即使后来需要迁移数据库,程序中的SQL代码也无需做任何修改。
为降低序列号使用和维护成本,在本发明另一实施例中通过定义程序框架来管理和维护序列号,以下为该实施例的具体描述:
首先,定义类和方法,其中类可包括:
序列池类SequencePool,用于提供全部在用序列号的生命周期管理。业务程序中序列使用取值通过序列池进行存储。序列池为单例模式实现。在大并发量场景下,为保证效率使用缓存的方式使用,即加大增长值,在增长值范围内取值,直到增长值数据用尽,以便减少访问数据库次数。
为了方便数据的存储和操作,我们将序列池类定义为哈希表(HashMap)结构。哈希表以键和数值对的形式存储数据。以下是上述类结构示意:
其中的方法说明:
初始化:初始化序列号管理类,内容包括SequencePool的初始化等;
新增序列号:新增指定名称的序列号;
删除序列号:删除指定名称的序列号;
获取序列号:返回指定序列号取值。
序列号类Sequence,用于提供一条序列信息的存储。其定义如下:
序列号管理类SequenceManager,用于提供对指定名称序列的维护。
下面举例说明序列的存储和使用,假设当前序列表Sequenceinfo中存储的数据如下:
序列号名称 | 最小值 | 最大值 | 当前值 | 状态 |
SEQ_STAFF_ID | 1 | 999999 | 1000 | A |
SEQ_USER_ID | 1 | 999999 | 898 | P |
SEQ_DEPARTMENT_ID | 1 | 999999 | 99 | L |
初始化时,查询序列表Sequenceinfo中的所有数据存储到HashMap,即SequencePool中:sequencePool.put(Key,Value)=(序列号名称,系列号value object)。
新增序列号时,调用新增序列函数指定相关参数:sequenceManager.insertSeq(序列名称,最小值,最大值,增长值,当前值);函数执行SQL:insertinto Sequenceinfo(序列名称,最小值,最大值,增长值,当前值)values(’SEQ_ST_ID’,1,999999,1,1);执行插入。
删除序列号时,调用删除序列函数指定相关参数sequenceManager.deleteSeq(序列名称);函数执行SQL delete fromSequenceinfo where sequence_name=序列名称;执行删除。
序列号取值时,首先判断序列池sequencePool中是否存在指定名称SEQ_STAFF_ID的序列号,若不存在,则根据序列号名称SEQ_STAFF_ID查询序列号信息,并将该序列号信息初始化到内存中;最后,从内存中获取序列号信息计算返回值并返回数据。
以上对本发明所提供的一种关系型数据库序列号应用方法做了描述,下面参见上述方法实施例的内容,对本发明的一种关系型数据库序列号应用系统进行描述:
参照图3,图3示出了本发明所述一种关系型数据库序列号应用系统结构示意图,所述系统包括:
序列定义模块310,用于预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;
序列取值模块320,用于根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。
其中,所述序列号映射表记录的字段还包括:序列号当前状态;
所述序列取值模块还用于,若存在匹配记录之后还包括:
判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信息。
其中,所述序列取值模320块还用于:
若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,
若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;
若不为锁定,则修改所述序列号当前状态为锁定状态;以及
在计算出序列号返回值后,将所述序列号当前状态置为可用状态。
其中,所述系统还包括:
序列池模块330,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;
所述序列池模块330还包括:
新增序列号单元3301,用于向所述序列号映射表中增加一条新的序列记录;和/或
删除序列号单元3302,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或
获取序列号单元3303,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。
其中,所述序列池模块330还包括:
序列池初始化单元3304,用于从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;
所述获取序列号单元3303,还用于判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相 似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的关系型数据库序列号应用系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种关系型数据库序列号应用方法,其特征在于,包括:
序列定义,预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;
序列取值,根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。
2.如权利要求1所述的方法,其特征在于,所述序列号映射表中记录的字段还包括:序列号当前状态;
所述序列取值中,若存在匹配记录之后还包括:
判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信息。
3.如权利要求2所述的方法,其特征在于,所述序列取值还包括:
若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,
若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;
若不为锁定,则修改所述序列号当前状态为锁定状态;以及
在计算出序列号返回值后,将所述序列号当前状态置为可用状态。
4.如权利要求1、2或3所述的方法,其特征在于,所述方法还包括:
序列池定义,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;所述序列池还包括对指定序列号名称的序列操作方法,包括:
新增序列号,用于向所述序列号映射表中增加一条新的序列记录;和/或
删除序列号,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或
获取序列号,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。
5.如权利要求4所述的方法,其特征在于,所述序列池中的序列操作方法还包括:
序列池初始化,包括:从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;
所述获取序列号中,返回序列号返回值后还包括:
判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。
6.一种关系型数据库序列号应用系统,其特征在于,包括:
序列定义模块,用于预置序列号映射表,所述序列号映射表中存储有与数据表序列标识对应的一条或多条记录,所述记录包括一个或多个字段,所述字段包括序列号名称、序列号当前值;
序列取值模块,用于根据序列号名称匹配所述序列号映射表,若存在匹配记录,则从所述记录中获取对应的序列号当前值,按照对应的序列号增长值计算序列号返回值;返回所述序列号返回值;使用所述序列号返回值更新所述记录中对应的序列号当前值。
7.如权利要求6所述的系统,其特征在于,所述序列号映射表记录的字段还包括:序列号当前状态;
所述序列取值模块还用于,若存在匹配记录之后还包括:
判断序列号当前状态是否可用,若为非可用状态,则返回当前序列不可用提示信息。
8.如权利要求7所述的系统,其特征在于,所述序列取值模块还用于:
若所述序列号当前状态为可用状态,则进一步判断所述序列号当前状态是否为锁定状态,
若为锁定,则等待预定时间间隔后重新判断所述当前序列号状态是否为锁定状态,直到超出等待时间阈值,并返回当前序列不可用的提示信息;
若不为锁定,则修改所述序列号当前状态为锁定状态;以及
在计算出序列号返回值后,将所述序列号当前状态置为可用状态。
9.如权利要求6、7或8所述的系统,其特征在于,所述系统还包括:
序列池模块,所述序列池以键和数值对的结构存储所述序列号映射表中对应的记录;
所述序列池模块还包括:
新增序列号单元,用于向所述序列号映射表中增加一条新的序列记录;和/或
删除序列号单元,用于按照指定的序列号名称,从所述序列号映射表中删除一条对应的序列记录;和/或
获取序列号单元,用于将所述序列取值中包括的步骤封装在所述获取序列号的方法中。
10.如权利要求9所述的系统,其特征在于,所述序列池模块还包括:
序列池初始化单元,用于从所述序列号映射表中获取全部有效记录按照键和数值对的结构存储到内存中;
所述获取序列号单元,还用于判断当前返回值是否超出更新阈值,若未超出,则仅更新内存中对应的序列号当前值;若超出更新阈值,则同时更新内存和所述序列号映射表中对应的序列号当前值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210574636.8A CN103020268B (zh) | 2012-12-26 | 2012-12-26 | 关系型数据库序列号应用方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210574636.8A CN103020268B (zh) | 2012-12-26 | 2012-12-26 | 关系型数据库序列号应用方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103020268A true CN103020268A (zh) | 2013-04-03 |
CN103020268B CN103020268B (zh) | 2016-05-04 |
Family
ID=47968871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210574636.8A Expired - Fee Related CN103020268B (zh) | 2012-12-26 | 2012-12-26 | 关系型数据库序列号应用方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103020268B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239486A (zh) * | 2014-09-05 | 2014-12-24 | 广州华多网络科技有限公司 | 一种数据处理的方法、系统以及相关设备 |
CN104281704A (zh) * | 2014-10-22 | 2015-01-14 | 新华瑞德(北京)网络科技有限公司 | 数据库数据拷贝方法和装置 |
CN104462206A (zh) * | 2014-10-31 | 2015-03-25 | 国云科技股份有限公司 | 一种通用的数据库序列生成方法 |
CN104699779A (zh) * | 2015-03-11 | 2015-06-10 | 北京京东尚科信息技术有限公司 | 一种对象编号的生成方法和装置 |
CN105446976A (zh) * | 2014-06-25 | 2016-03-30 | 北大方正集团有限公司 | 业务表的处理方法及装置 |
CN105630927A (zh) * | 2015-12-22 | 2016-06-01 | 北京奇虎科技有限公司 | 链接生成方法和装置 |
CN105808632A (zh) * | 2015-12-22 | 2016-07-27 | 北京奇虎科技有限公司 | 链接生成方法和装置 |
CN106844288A (zh) * | 2015-12-07 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种随机字符串生成方法及装置 |
CN107038191A (zh) * | 2016-11-15 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 一种数据库序列的数据处理方法、装置及服务器 |
CN107766557A (zh) * | 2017-11-03 | 2018-03-06 | 金蝶软件(中国)有限公司 | 一种数据库序列的生成方法及相关装置 |
CN108897811A (zh) * | 2018-06-19 | 2018-11-27 | 广州地铁集团有限公司 | 一种地铁设备维修数据的标准化方法及装置 |
CN109656920A (zh) * | 2018-10-19 | 2019-04-19 | 中国建设银行股份有限公司 | 序列号处理方法及系统、装置和存储介质 |
CN111046057A (zh) * | 2019-12-26 | 2020-04-21 | 京东数字科技控股有限公司 | 服务器集群的数据处理方法、装置、计算机设备和介质 |
CN111382140A (zh) * | 2018-12-29 | 2020-07-07 | 方正国际软件(北京)有限公司 | 数据库序列迁移的方法及电子设备 |
CN111723092A (zh) * | 2020-06-08 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN112104743A (zh) * | 2020-09-21 | 2020-12-18 | 北京金山云网络技术有限公司 | 序列生成方法、装置和电子设备 |
CN112925787A (zh) * | 2019-12-06 | 2021-06-08 | 中国电信股份有限公司 | 数据处理方法、装置和计算机可读存储介质 |
CN112948399A (zh) * | 2021-05-17 | 2021-06-11 | 太平金融科技服务(上海)有限公司深圳分公司 | 序列号生成方法、装置、计算机设备和存储介质 |
CN114443054A (zh) * | 2022-01-28 | 2022-05-06 | 北京京东振世信息技术有限公司 | 用于生成信息的方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070081980A (ko) * | 2006-02-14 | 2007-08-20 | 삼성전자주식회사 | 네트워크 관리 시스템과 네트워크 요소간 피엘디 동기화시스템 및 그 방법 |
CN101127047A (zh) * | 2006-07-14 | 2008-02-20 | 国际商业机器公司 | 管理产品电子代码编序的方法和数据库系统 |
CN101350030A (zh) * | 2007-07-20 | 2009-01-21 | 株式会社东芝 | 用于缓存数据的方法及装置 |
CN101470887A (zh) * | 2007-12-24 | 2009-07-01 | 阿里巴巴集团控股有限公司 | 一种贷中预警系统及方法 |
CN101533414A (zh) * | 2009-04-15 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种数据库记录唯一标识符生成的方法及装置 |
CN101661509A (zh) * | 2009-09-29 | 2010-03-03 | 金蝶软件(中国)有限公司 | 一种生成数据库表主键字段的方法及装置 |
CN101916296A (zh) * | 2010-08-29 | 2010-12-15 | 武汉天喻信息产业股份有限公司 | 基于文件的海量数据处理方法 |
CN102043669A (zh) * | 2010-12-22 | 2011-05-04 | 中国农业银行股份有限公司 | 一种工作流并发模式的控制方法及装置 |
JP2012234354A (ja) * | 2011-04-28 | 2012-11-29 | Nippon Telegr & Teleph Corp <Ntt> | データベース増設方法、及びデータベース減設方法 |
CN102999525A (zh) * | 2011-09-16 | 2013-03-27 | 深圳市金蝶中间件有限公司 | 数据表处理方法及系统 |
-
2012
- 2012-12-26 CN CN201210574636.8A patent/CN103020268B/zh not_active Expired - Fee Related
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070081980A (ko) * | 2006-02-14 | 2007-08-20 | 삼성전자주식회사 | 네트워크 관리 시스템과 네트워크 요소간 피엘디 동기화시스템 및 그 방법 |
CN101127047A (zh) * | 2006-07-14 | 2008-02-20 | 国际商业机器公司 | 管理产品电子代码编序的方法和数据库系统 |
CN101350030A (zh) * | 2007-07-20 | 2009-01-21 | 株式会社东芝 | 用于缓存数据的方法及装置 |
CN101470887A (zh) * | 2007-12-24 | 2009-07-01 | 阿里巴巴集团控股有限公司 | 一种贷中预警系统及方法 |
CN101533414A (zh) * | 2009-04-15 | 2009-09-16 | 阿里巴巴集团控股有限公司 | 一种数据库记录唯一标识符生成的方法及装置 |
CN101661509A (zh) * | 2009-09-29 | 2010-03-03 | 金蝶软件(中国)有限公司 | 一种生成数据库表主键字段的方法及装置 |
CN101916296A (zh) * | 2010-08-29 | 2010-12-15 | 武汉天喻信息产业股份有限公司 | 基于文件的海量数据处理方法 |
CN102043669A (zh) * | 2010-12-22 | 2011-05-04 | 中国农业银行股份有限公司 | 一种工作流并发模式的控制方法及装置 |
JP2012234354A (ja) * | 2011-04-28 | 2012-11-29 | Nippon Telegr & Teleph Corp <Ntt> | データベース増設方法、及びデータベース減設方法 |
CN102999525A (zh) * | 2011-09-16 | 2013-03-27 | 深圳市金蝶中间件有限公司 | 数据表处理方法及系统 |
Non-Patent Citations (1)
Title |
---|
雷军程等: "《数据库主键生成策略研究》", 《计算机时代》 * |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446976A (zh) * | 2014-06-25 | 2016-03-30 | 北大方正集团有限公司 | 业务表的处理方法及装置 |
CN104239486B (zh) * | 2014-09-05 | 2017-09-29 | 广州华多网络科技有限公司 | 一种数据处理的方法、系统以及相关设备 |
CN104239486A (zh) * | 2014-09-05 | 2014-12-24 | 广州华多网络科技有限公司 | 一种数据处理的方法、系统以及相关设备 |
CN104281704A (zh) * | 2014-10-22 | 2015-01-14 | 新华瑞德(北京)网络科技有限公司 | 数据库数据拷贝方法和装置 |
CN104462206A (zh) * | 2014-10-31 | 2015-03-25 | 国云科技股份有限公司 | 一种通用的数据库序列生成方法 |
CN104699779A (zh) * | 2015-03-11 | 2015-06-10 | 北京京东尚科信息技术有限公司 | 一种对象编号的生成方法和装置 |
CN106844288A (zh) * | 2015-12-07 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种随机字符串生成方法及装置 |
KR102111871B1 (ko) | 2015-12-07 | 2020-05-18 | 알리바바 그룹 홀딩 리미티드 | 랜덤 문자열을 생성하기 위한 방법 및 장치 |
KR20180088895A (ko) * | 2015-12-07 | 2018-08-07 | 알리바바 그룹 홀딩 리미티드 | 랜덤 문자열을 생성하기 위한 방법 및 장치 |
CN105808632A (zh) * | 2015-12-22 | 2016-07-27 | 北京奇虎科技有限公司 | 链接生成方法和装置 |
CN105630927A (zh) * | 2015-12-22 | 2016-06-01 | 北京奇虎科技有限公司 | 链接生成方法和装置 |
CN105630927B (zh) * | 2015-12-22 | 2019-06-18 | 北京奇虎科技有限公司 | 链接生成方法和装置 |
CN105808632B (zh) * | 2015-12-22 | 2019-03-01 | 北京奇虎科技有限公司 | 链接生成方法和装置 |
CN107038191A (zh) * | 2016-11-15 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 一种数据库序列的数据处理方法、装置及服务器 |
CN107766557A (zh) * | 2017-11-03 | 2018-03-06 | 金蝶软件(中国)有限公司 | 一种数据库序列的生成方法及相关装置 |
CN108897811A (zh) * | 2018-06-19 | 2018-11-27 | 广州地铁集团有限公司 | 一种地铁设备维修数据的标准化方法及装置 |
CN109656920A (zh) * | 2018-10-19 | 2019-04-19 | 中国建设银行股份有限公司 | 序列号处理方法及系统、装置和存储介质 |
CN109656920B (zh) * | 2018-10-19 | 2021-08-27 | 中国建设银行股份有限公司 | 序列号处理方法及系统、装置和存储介质 |
CN111382140A (zh) * | 2018-12-29 | 2020-07-07 | 方正国际软件(北京)有限公司 | 数据库序列迁移的方法及电子设备 |
CN111382140B (zh) * | 2018-12-29 | 2023-06-16 | 方正国际软件(北京)有限公司 | 数据库序列迁移的方法及电子设备 |
CN112925787A (zh) * | 2019-12-06 | 2021-06-08 | 中国电信股份有限公司 | 数据处理方法、装置和计算机可读存储介质 |
CN111046057A (zh) * | 2019-12-26 | 2020-04-21 | 京东数字科技控股有限公司 | 服务器集群的数据处理方法、装置、计算机设备和介质 |
CN111723092A (zh) * | 2020-06-08 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN111723092B (zh) * | 2020-06-08 | 2024-08-27 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN112104743A (zh) * | 2020-09-21 | 2020-12-18 | 北京金山云网络技术有限公司 | 序列生成方法、装置和电子设备 |
CN112948399A (zh) * | 2021-05-17 | 2021-06-11 | 太平金融科技服务(上海)有限公司深圳分公司 | 序列号生成方法、装置、计算机设备和存储介质 |
CN112948399B (zh) * | 2021-05-17 | 2021-08-03 | 太平金融科技服务(上海)有限公司深圳分公司 | 序列号生成方法、装置、计算机设备和存储介质 |
CN114443054A (zh) * | 2022-01-28 | 2022-05-06 | 北京京东振世信息技术有限公司 | 用于生成信息的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103020268B (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103020268B (zh) | 关系型数据库序列号应用方法和系统 | |
CN110651264B (zh) | 具有时态关系数据库的关系数据库管理系统中的查询计划生成和执行 | |
CN102918530B (zh) | 数据集市自动化 | |
CN105630865B (zh) | 用于内存列式存储的n比特压缩版本化列数据阵列 | |
US8156107B2 (en) | System and method for join-partitioning for local computability of query over shared-nothing clusters | |
US8010521B2 (en) | Systems and methods for managing foreign key constraints | |
US7346628B2 (en) | Time in databases and applications of databases | |
US9384202B1 (en) | Gateway module to access different types of databases | |
US20090055439A1 (en) | Flexible Dimension Approach In A Data Warehouse | |
US7181460B2 (en) | User-defined aggregate functions in database systems without native support | |
EP2444906A1 (en) | Mapping of table data to hierarchical format for graphical representation | |
US20100235334A1 (en) | Time in databases and applications of databases | |
US8719266B2 (en) | Data perturbation of non-unique values | |
CN103902698A (zh) | 一种数据存储系统和存储方法 | |
CN106611037A (zh) | 用于分布式图计算的方法与设备 | |
US9171036B2 (en) | Batching heterogeneous database commands | |
CN111125229A (zh) | 数据血缘生成方法、装置、电子设备 | |
US8892502B2 (en) | Parallel processing of semantically grouped data in data warehouse environments | |
CN105653716A (zh) | 一种基于分类-属性-值的数据库构造方法和构造系统 | |
CN106557307A (zh) | 业务数据的处理方法及处理系统 | |
US20190340272A1 (en) | Systems and related methods for updating attributes of nodes and links in a hierarchical data structure | |
CN105389346A (zh) | 一种电子评标系统中的清标方法和装置 | |
US20080071730A1 (en) | Method and Apparatus to Calculate Relational Database Derived Fields During Data Modification | |
US10540331B2 (en) | Hierarchically stored data processing | |
Schildgen et al. | NotaQL is not a query language! it’s for data transformation on wide-column stores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160504 |
|
CF01 | Termination of patent right due to non-payment of annual fee |