一种id生成方法及装置的制造方法

文档序号:8487887阅读:255来源:国知局
一种id生成方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据库技术领域,特别涉及一种ID生成方法及装置。
【背景技术】
[0002]ID (identity,身份识别号码)是某一体系中相对唯一的编码。
[0003]目前,服务器每请求一个ID就需要操作一次数据库,所有需要的ID都必须向数据库请求。
[0004]对于分布式系统,当每一台服务器在需要ID时,都会分别向数据库中请求获得ID进行使用,数据库只有为一个服务器生成请求数量的ID后,再处理其他服务器的ID请求。例如:数据库先收到服务器I的ID请求,又收到服务器2的ID请求,则数据库先为服务器I生成请求数量的ID后,再为服务器2生成请求数量的ID。
[0005]当多台服务器需要大量ID时,数据库生成ID压力较大,并受数据库性能的限制,数据库无法在短时间内生成大量的ID供多台服务器进行使用,8卩:数据库生成ID的数量远小于服务器需要使用的ID数量,进而影响服务器后续操作的执行。

【发明内容】

[0006]本发明实施例的目的在于提供一种ID生成方法及装置,以减小数据库的压力,提高ID的生成速度,避免因ID生成速度慢,影响服务器后续操作的执行。
[0007]为达到上述目的,本发明实施例公开了一种ID生成方法,应用于服务器,方法包括:
[0008]向数据库发送ID获得请求;
[0009]获得数据库返回的第一 ID值,其中,所述第一 ID值为数据库中当前最大的ID值,;
[0010]将所述第一 ID值与步长M做乘积运算,得到第二 ID值,其中,所述步长M为大于等于2的整数;
[0011]从所述第二 ID值起,顺序生成ID,在顺序生成ID过程中,当生成的ID值等于第二ID值与步长M之和时,返回所述向数据库发送ID获得请求继续执行,当接收到停止ID生成指令时,结束ID的生成。
[0012]较佳的,所述从所述第二 ID值起,顺序生成ID,在顺序生成ID过程中,当生成的ID值等于第二 ID值与步长M之和时,返回所述向数据库发送ID获得请求继续执行,当接收到停止ID生成指令时,结束ID的生成,包括:
[0013]将所述第一 ID值加I后与所述步长M做乘积运算,得到第三ID值;
[0014]判断所述第二 ID值是否等于所述第三ID值;
[0015]如果所述第二 ID值等于所述第三ID值,则返回所述向数据库发送ID获得请求继续执行;
[0016]如果所述第二 ID值不等于所述第三ID值,则将所述第二 ID值确定为新生成的ID,将第二 ID值赋值为第二 ID值加I,返回所述判断第二 ID值是否等于所述第三ID值的步骤继续执行,当接收到停止ID生成指令时,则结束ID的生成。
[0017]较佳的,所述步长M为:
[0018]2的P次方,其中,P为大于O的整数。
[0019]较佳的,所述服务器为:
[0020]分布式系统中所包含的服务器中的任意一台。
[0021]较佳的,所述步长M为:
[0022]预先进行设置的;或
[0023]根据用户输入的值确定的。
[0024]为达到上述目的,本发明实施例公开了一种ID生成装置,应用于服务器,包括:包括:ID获得请求发送模块、第一 ID值获得模块、第二 ID值获得模块和ID生成模块,其中,
[0025]所述ID获得请求发送模块,用于向数据库发送ID获得请求;
[0026]所述第一 ID值获得模块,用于获得数据库返回的第一 ID值,其中,第一 ID值为数据库中当前最大的ID值;
[0027]所述第二 ID值获得模块,用于将所述第一 ID值获得模块获得的第一 ID值与步长M做乘积运算,得到第二 ID值,其中,步长M为大于等于2的整数;
[0028]所述ID生成模块,用于从所述第二 ID值获得模块获得的第二 ID值起,顺序生成ID,在顺序生成ID过程中,当生成的ID值等于第二 ID值与步长M之和时,触发所述ID获得请求发送模块,当接收到停止ID生成指令时,结束ID的生成。
[0029]较佳的,所述ID生成模块,包括:第三ID值获得子模块、判断子模块和ID生成子模块,其中,
[0030]所述第三ID值获得子模块,用于将所述第一 ID值加I后与所述步长M做乘积运算,得到第三ID值;
[0031]判断子模块,用于判断所述第二 ID值是否等于所述第三ID值获得子模块获得第三ID值;
[0032]所述ID生成子模块,用于在所述判断子模块判断结果为否的情况下,将所述第二ID值确定为新生成的ID,将第二 ID值赋值为第二 ID值加1,触发所述判断子模块,当接收到停止ID生成指令时,结束ID的生成;
[0033]所述ID获得请求发送模块,还用于在所述判断子模块判断结果为是的情况下,触发执行。
[0034]较佳的,所述步长M为:
[0035]2的P次方,其中,P为大于O的整数。
[0036]较佳的,所述服务器为:
[0037]分布式系统中所包含的服务器中的任意一台。
[0038]较佳的,所述步长M为:
[0039]预先进行设置的;或
[0040]根据用户输入的值确定的。
[0041]由上述的技术方案可见,本发明实施例提供了一种应用于服务器的ID生成方法及装置,向数据库发送ID获得请求;获得数据库返回的第一 ID值;将所述第一 ID值与步长M做乘积运算,得到第二 ID值,其中,所述第一 ID值为数据库中当前最大的ID值,所述步长M为大于等于2的整数;从所述第二 ID值起,顺序生成ID,在顺序生成ID过程中,当生成的ID值等于第二 ID值与步长M之和时,返回所述向数据库发送ID获得请求继续执行,当接收到停止ID生成指令时,结束ID的生成。应用本发明实施例所提供的技术方案,将ID的生成由数据库转移到服务器中,生成ID由服务器执行,服务器每请求M个ID才对数据库进行一次操作,减小了数据库的压力;同时,在某一服务器生成ID时,其他服务器也可以并发生成ID,且无需等待数据库为该服务器发送生成该服务器请求数量的ID,提高了 ID生成速度,进而使得在短时间就可以生成服务器所需数量的ID,避免了因ID生成速度慢,影响服务器后续操作的执行。并且本发明实施例所提供的技术方案,基于数据库中ID自增字段,还可以保证各个服务器生成的ID的唯一性。
【附图说明】
[0042]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0043]图1为本发明实施例提供的一种应用于服务器的ID生成方法的流程示意图;
[0044]图2为本发明实施例提供的一种应用于服务器的ID生成装置的结构示意图。
【具体实施方式】
[0045]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046]下面通过具体实施例,对本发明进行详细说明。
[0047]图1为本发明实施例提供的一种应用于服务器的I
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1