分布式数据库访问控制方法和设备、分布式数据库系统及其扩容方法

文档序号:9667436阅读:426来源:国知局
分布式数据库访问控制方法和设备、分布式数据库系统及其扩容方法【
技术领域
】[0001]本发明涉及分布式数据库领域,具体地涉及一种分布式数据库访问控制方法和设备、分布式数据库系统及其扩容方法。【
背景技术
】[0002]近年来,随着互联网行业的兴起,互联网用户群越来越庞大。需要存储的数据量也在飞速增长。如何存储和快速检索海量用户数据成了大型互联网研发人员新的挑战。MySQL作为一款优秀的开源数数据库,由于其开源,性能高,易用性强受到了很多互联网公司的欢迎。但是MySQL单机存储和检索能力有限,在大型互联网应用中必须做分布式设计。[0003]目前互联网公司MySQL分布式系统是通过实现一套MySQL代理服务器实现的。其实现方式如图1所示。[0004]图1中在应用层和三个分布式MySQL数据库之间设置了一个代理层[0005]通过在应用和MySQL数据库中间增加一层代理层,该代理层负责解析MySQL协议,将sql转发到后端具体的MySQL实例,以及转发和合并请求。[0006]但是,MySQL代理层实现太复杂,所以随着MySQL版本的升级,代理层的维护成本太高。并且,在对这种分布式数据库系统进行扩容时,需要重新安排库表关系,整个过程显得凌乱复杂。【
发明内容】[0007]为了解决现有技术中存在的上述问题,本发明提出了一种分布式数据库访问控制方法和设备、分布式数据库系统及其扩容方法。[0008]根据本发明的一个方面,提出了一种分布式数据库访问控制方法,所述分布式数据库包括分布在网络中不同位置处的两个或更多个数据库,所述方法包括:向分布式数据库中的每个表指定全局的唯一表标识;基于所述表标识,建立所述分布式数据库中的各个数据库与表之间的映射关系;以及根据所述映射关系来路由针对所述分布式数据库中的内容的访问请求。[0009]优选地,根据以下方式路由访问请求:将针对内容标识Id的访问请求路由到第i个表,其中i为Id除以表总数N的余数,Id和N是正整数。[0010]优选地,所述表标识为0到N-ι的整数。[0011]根据本发明的另一方面,提供了一种分布式数据库访问控制设备,所述分布式数据库包括分布在网络中不同位置处的两个或更多个数据库,所述设备包括:指定装置,用于向分布式数据库中的每个表指定全局的唯一表标识;映射建立装置,用于基于所述表标识建立所述分布式数据库中的各个数据库与表之间的映射关系;以及路由控制装置,用于根据所述映射关系来路由针对所述分布式数据库中的内容的访问请求。[0012]根据本发明的又一方面,提供了一种分布式数据库系统,包括:应用层;分布在网络中不同位置处的两个或更多个数据库;数据库控制层,连接在所述应用层与所述两个或更多个数据库之间。所述数据库控制层包括:库表设置模块,用于向所述两个或更多个数据库中的每个表指定全局的唯一表标识,并基于所述表标识建立所述分布式数据库中的各个数据库与表之间的映射关系;数据路由模块,用于根据所述映射关系来路由针对所述分布式数据库中的内容的访问请求。[0013]优选地,所述数据路由模块被配置为通过以下方式路由访问请求:将针对内容标识Id的访问请求路由到第i个表,其中i为Id除以表总数N的余数,Id和N是正整数。[0014]优选地,所述数据库控制层还包括:数据库操作模块,用于对将所述访问请求路由到的库进行操作,其中根据所述映射关系确定将所述访问请求路由到的库。[0015]根据本发明的另一方面,提供了一种对如上所述的分布式数据库系统进行扩容的方法,所述方法包括:将一个或多个表移动到扩容增加的每个数据库中,并相应地修改库与表之间的映射关系。[0016]优选地,所述方法还包括:保持每个库在扩容后都包含至少一个表。[0017]通过使用本发明所提出的分布式数据库访问控制方法和设备、分布式数据库系统及其扩容方法,解决了现有技术中代理层复杂性过高且扩容起来复杂繁琐的问题。【附图说明】[0018]图1示出了一种现有的分布式数据库系统的结构;[0019]图2示出了根据本发明的一种实施例的分布式数据库访问控制方法的流程图;[0020]图3示出了根据本发明的一种实施例的分布式数据库访问控制设备的结构框图;[0021]图4示出了根据本发明的一种实施例的分布式数据库系统的结构框图;[0022]图5示出了对图4所示的分布式数据库系统进行扩容方法的流程图。【具体实施方式】[0023]以下参考附图对本发明进行具体描述。[0024]首先,图2示出了根据本发明的一种实施例的分布式数据库访问控制方法200的流程图。所述分布式数据库包括分布在网络中不同位置处的两个或更多个数据库中。所述分布式数据库访问控制方法200开始于步骤S210,在步骤S210中,向分布式数据库中的每个表指定全局的唯一表标识。然后,在步骤S220中,基于所述表标识,建立所述分布式数据库中的各个数据库与表之间的映射关系。最后,在步骤S230中,根据所述映射关系来路由针对所述分布式数据库中的内容的访问请求。[0025]具体地,在步骤S210中,所指定的全局唯一表标识意味着每一个表在由各个分布式数据库构成的数据库系统中具有唯一的标识。所述标识可以是全局排序的(一元标识,比如table_l),也可以是结合库标识设置的(二元标识:库标识+库内排序,比如db_l_table_l,其中db_l为库标识)。[0026]在步骤S220中,所述映射关系表明每个库对应于具有哪些表标识的表。[0027]举例来讲,当MySQL库的数量为20,单个库中表的数量为32时,库和表的对应规则如下:[0028]库的编号从db_0到db_19,[0029]db_0库中的表编号从table_0到table_31,[0030]db_l库中的表编号从table_32到table_63,[0031]...[0032]以此类推。[0033]在步骤S230中,根据所述映射关系来路由针对所述分布式数据库中的内容的访问请求。数据库中的内容存储在表中,根据要访问的内容标识Id能够确定该内容所位于的表。基于库表之间的映射关系,可以找到该表所位于的库,即确定了所要访问的内容位于哪个分布式数据库中,进而将访问请求路由到该数据库。[0034]在一种优选实施例中,可以根据以下方式路由访问请求:将针对内容标识Id的访问请求路由到第i个表当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1