[发明专利]分布式数据库下全局主键生成方法和系统有效
| 申请号: | 201410091029.5 | 申请日: | 2014-03-13 |
| 公开(公告)号: | CN104915353B | 公开(公告)日: | 2018-03-23 |
| 发明(设计)人: | 华竹轩;王桂荣;徐楠;刘智琼;刘斌;伍运珍;俞科峰;池炜成 | 申请(专利权)人: | 中国电信股份有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 中国国际贸易促进委员会专利商标事务所11038 | 代理人: | 许蓓 |
| 地址: | 100033 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 分布式 数据库 全局 主键 生成 方法 系统 | ||
技术领域
本发明涉及数据库领域,特别涉及一种分布式数据库下全局主键生成方法和系统。
背景技术
水平切分是搭建基于关系型数据库的分布式数据库集群的关键技术之一,主要是通过将数据库中数据量较大的表拆分为多个结构相同的小表,小表分散存储在多个物理数据库中,并通过中间层软件将客户端对大表的请求路由到多个小表所在的物理数据库中执行。由于各个小表分散在多个物理库中,所以在新增数据时无法保证每个小表的主键在全局的唯一性,因此当数据库实施了水平切分后,需要为分布式数据库提供生成唯一且有序全局主键的服务。
全局主键目前有以下几种生成方法:
一,应用层自己产生唯一主键,这样会增加应用复杂度,并且数据库的写入操作必须依赖应用。
二,通过一个节点提供独立的主键生成服务,一旦该节点发生故障,则造成整个系统无法提供主键生成服务,因此存在单点故障问题以及性能瓶颈问题。
三,通过多个节点提供主键生成服务,可能产生主键不连续或顺序颠倒问题。例如,采用划分主键段的模式保持主键的不重复,A节点采用1000开头,B节点采用2000开头,这种模式虽然可以确保主键不重复,但是可能会导致有些大的主键先产生,小的主键还未产生,存在主键不连续或顺序颠倒等问题,对于索引或排序带来困扰,不符合数据库的使用规范。
发明内容
本发明实施例所要解决的一个技术问题是:通过多个节点提供主键生成服务时主键的有序和连续性问题。
根据本发明实施例的一个方面,提出一种分布式数据库下全局主键生成方法,包括:主键服务器集群中的任意主键服务器接收到客户端发起的主键申请请求时,将主键申请请求转发给主键服务器集群中的主主键服务器;主主键服务器对主键申请请求进行排序,并将排序结果依次同步给主键服务器集群中的所有主键服务器;主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键;主键服务器集群中的任意主键服务器在主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端。
在一个实施例中,主键服务器集群中的所有主键服务器预先设置有相同的主键信息和配置信息;其中,主键信息是客户端在用的最大全局主键,配置信息包括面向客户端的主键生成规则、以及作为主主键服务器时对主键申请请求的排序规则。
在一个实施例中,主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键包括:主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,将客户端在用的最大全局主键作为面向客户端的主键生成规则的输入,生成相同的全局主键。
在一个实施例中,主主键服务器通过动态选举的方式从主键服务器集群中选举产生,在当前主主键服务器宕机时触发选举的操作,被选举出来的主主键服务器在主键服务器集群中广播自身的位置信息,所有主键服务器接收到广播信息后更新本地的主主键服务器的位置信息。
在一个实施例中,主主键服务器对主键申请请求进行排序包括:主主键服务器按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序。
在一个实施例中,该方法还包括:负载均衡设备接收客户端发起的主键申请请求,并将客户端发起的主键申请请求均衡地路由给主键服务器集群中的主键服务器。
根据本发明实施例的再一个方面,提出一种分布式数据库下全局主键生成系统,包括:由主键服务器组成的主键服务器集群,该主键服务器集群中有一个主主键服务器;主键服务器包括请求处理模块、主键生成模块和请求响应模块,请求处理模块用于在接收到客户端发起的主键申请请求时,将主键申请请求转发给主主键服务器,主键生成模块用于响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键,请求响应模块用于在主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端;主主键服务器包括请求排序模块和请求同步模块,请求排序模块用于对主键申请请求进行排序,请求同步模块用于将主键申请请求的排序结果依次同步给主键服务器集群中的所有主键服务器。
在一个实施例中,主键服务器还包括存储模块,用于存储预先设置的相同的主键信息和配置信息;其中,主键信息是客户端在用的最大全局主键,配置信息包括面向客户端的主键生成规则、以及作为主主键服务器时对主键申请请求的排序规则。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电信股份有限公司,未经中国电信股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410091029.5/2.html,转载请声明来源钻瓜专利网。





