The invention provides a distributed database primary key generation method and system, which is used to solve the problem that the primary key word length of the existing distributed database is limited. The method includes: S1, receiving the primary key to generate the request; S2, generating the unique primary key according to the request generated by the primary key; the primary key is composed of the seed part and the self growing part. The invention can simultaneously satisfy the global uniqueness of the primary key, the continuous distribution of a single database and the high efficiency of concurrent performance, and the primary key word length of the generated key is not limited.
【技术实现步骤摘要】
一种分布式数据库主键生成方法及系统
本专利技术涉及分布式数据库领域,尤其涉及一种分布式数据库主键生成方法及系统。
技术介绍
在数据库软件系统中,需要在数据库范围内生成唯一的一串数字或字符串,作为数据库中一条记录的身份标识号(ID),即数据库术语中的主键。在单机数据库中,往往直接使用数据库自增特性生成主键ID,该方法操作简单,便于使用。而在分布式数据库环境中,数据分布在不同的数据库上,不能再借助各数据库自增长特性直接生成,否则会造成不同分片上的数据表主键会重复。对数据库的主键要求除了全局唯一,还要求在一个分数据库中的主键尽量连续分布,同时还要求生成ID的算法的并发性能要高效。如果一个程序只需要单体数据库,那数据库自带的sequence功能就能很好满足这三个要求,但在分布式数据库中,数据是分布在多个数据库中,同时满足这三个要求的方案和实现很难。或者有其他缺陷。目前针对分布式数据库的全局ID的主流两种方案:1.UUID/GUID:它是32位26个字母和数字组成的字符串。这种方案大部分程序语言和数据库均提供直接支持。如果用这种方式,全局唯一ID不需要额外任何开发工作量。但 ...
【技术保护点】
一种分布式数据库主键生成方法,其特征在于,包括步骤:S1、接收主键生成请求;S2、根据所述主键生成请求生成唯一的主键;所述主键由种子部分及自增长部分组成。
【技术特征摘要】
1.一种分布式数据库主键生成方法,其特征在于,包括步骤:S1、接收主键生成请求;S2、根据所述主键生成请求生成唯一的主键;所述主键由种子部分及自增长部分组成。2.根据权利要求1所述的一种分布式数据库主键生成方法,其特征在于,所述主键通过分隔符将种子部分及自增长部分隔开。3.根据权利要求1所述的一种分布式数据库主键生成方法,其特征在于,所述生成主键的种子部分的步骤具体包括:生成九进制数字;查询所述九进制数字是否存在于数据库中,若是,重新生成一个九进制数字,否则,分配所述九进制数字于所述主键的种子部分;将所述九进制数字保存至数据库。4.根据权利要求3所述的一种分布式数据库主键生成方法,其特征在于,所述生成主键的自增长部分的步骤具体包括:将起始值为零的九进制数字存储在所述种子部分对应的数据库中;按照增加记录的顺序依次增加所述自增长部分的值。5.根据权利要求4所述的一种分布式数据库主键生成方法,其特征在于,当所述自增长部分增加到预设最大值,所述种子部分再次生成新的九进制数字;所述九进制数字不存在于数据库中。6.一种分布式数据库主键生成系统,其特征...
【专利技术属性】
技术研发人员:仇亚东,
申请(专利权)人:上海斐讯数据通信技术有限公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。