一种分布式内存数据库数据路由和分库分表的方法及装置制造方法及图纸

技术编号:29310355 阅读:66 留言:0更新日期:2021-07-17 02:13
本发明专利技术公开了一种分布式内存数据库数据路由和分库分表的方法及装置,本发明专利技术装置主要对单点内存数据库的分布式路由和分库分表方法,用于解决目前低实时性给电信业务处理带来的问题。该方法包括:通过路由层实现单点数据库的分布式路由规则处理,提供分库分表逻辑分配,使下层数据库可以水平伸缩,大幅提升数据处理性能。处理性能。处理性能。

【技术实现步骤摘要】
一种分布式内存数据库数据路由和分库分表的方法及装置


[0001]本专利技术涉及电信行业计费系统分布式内存数据库
,具体为一种分布式内存数据库数据路由和分库分表的方法及装置。

技术介绍

[0002]随着电信行业计费业务的不断发展,特别是数据流量业务的高速发展,数量量级不断扩大,目前已经达到每天1

2亿的级别,那么系统的处理性能就要去不断的提高。传统物理数据库无法满足分布式系统的高速读取,但集中式内存数据库又无法满足分布式系统的高并发操作。另外目前的分布式内存数据存在不支持跨库关联查询,不具备跨库事务的能力,也无法满足分布式业务系统的业务处理要求。

技术实现思路

[0003]本专利技术的目的在于提供一种分布式内存数据库数据路由和分库分表的方法及装置,以解决上述
技术介绍
中提出的问题。
[0004]为实现上述目的,本专利技术提供如下技术方案:一种分布式内存数据库数据路由和分库分表装置,包括接口层,所述接口层提供JDBC、ODBC和自主的DBDriver SDK接口,兼容MySQL协议,供多语言开发;数据路由层;所述数据路由层提供分库分表逻辑,使下层数据库可以水平伸缩;分库存储节点层,所述分库存储节点层提供传统单机内存数据库的分库分表存储。
[0005]优选的,一种分布式内存数据库数据路由和分库分表的方法,包括以下步骤:
[0006]1)、首先进行请求语法解析和审计:应用层会话接入,接口层收到请求发送给数据路由层,首先会对SQL进行解析,是否符合SQL92标准,并对相关语法进行校验;
[0007]2)、数据路由层配置加载:将数据路由层的规则实时加载到缓存中,读取配置规则进行分库分表处理,配置的数据可以存放在内存数据库中;
[0008]3)、分库分表规则查找;
[0009]4)、数据读取结果返回。
[0010]优选的,分表分库规则查找流程如下:
[0011]A、分库分表:
[0012](1)根据sql语句中带的虚表名查找tdal_table_instance表,得到对应的分库规则ID;
[0013](2)通过规则ID到tdal_split_field和tdal_split_value_range中查找具体的拆分规则,这两个表之间存在着递归查找,直到不能在另一个表中找到规则记录即结束查找;
[0014](3)根据找到的规则,依次获取所在库,所在库中的分表后缀,如果没有分表,则直接使用tdal_table_instance中的tb_prefix作为物理表名,拼接实际物理表名替换sql中的表,并在对应库上执行该sql语句;
[0015](4)比如现有客户资料表tb_client,数据量很大,单库容量不足,需拆分为三个库
db1、db2、db3,则可根据需要制定分库规则,例如按客户id取模法进行分库分表,客户Peter、Sumny的id分别为30、33,取模3得0,路由到db1,而客户Jim的id为34,模3得1,路由到db2
……
依此类推。具体到分库后再进行分表,db1中不再做分表,Peter、Sumny直接写道tb_client表;而db2分两张表,Jim路由到db2后应用分表规则用id取模2得到0,所以写到tb_client01;而Tom由到db2后应用分表规则用id取模2得到1,于是写到tb_client02;其他客户资料依此类推;
[0016]B、不存在分库或分表
[0017](1)根据sql语句中带的虚表名在tdal_table_instance表中无法查到记录;
[0018](2)直接查找tdal_objects_location表,获取所在的数据库信息,直接在库上执行sql语句。
[0019]优选的,所述步骤D具体流程如下:
[0020](1)分库分表方式,查询的结果可能来自不同的个分表、分库,该装置会将各个分库分表的结果进行组装为结果集;
[0021](2)分库分表方式,当查询结果比较大,而应用层通过SQL指明分页规则时,分页操作将不能再依赖底层数据库实现,此时路由层将对结果进行分页处理;
[0022](3)分库分表方式,从各个分表、分库返回的结果按照配置要求将对结果进行排序。
[0023]与现有技术相比,本专利技术的有益效果是:
[0024](1)本专利技术支持多级多列拆分,每一次对列的值域拆分即为一个拆分规则(将列的取值范围分成不同的子区间);同时子区间可再次应用其他拆分规则对子区间再次划分。
[0025](2)本专利技术支持垂直拆分和水平拆分,可以按照按业务域进行垂直拆分,根据配置的每个数据库连接信息,自动加载各个业务域的业务表,应用根据业务域分库信息,自动建立与实际的物理库连接;可以进行水平拆分,对表中字段或者虚拟字段进行规则拆分,拆分到对映的库和对于的表中。
[0026](3)本专利技术支持插件化部署,具有分层清晰明了,业务进程处理较少;升级简洁,易维护,具备数据库连接负载均衡等优点。
[0027](4)本专利技术动态加载分库分表规则,动态扫描配置内存库实例所有表,写入到分库分表的路由规则表中,实现业务无感知切换,提高运维效率和减低事故发生率。
[0028](5)本专利技术可有效提升计费业务吞吐量和扩容,减少了硬件设备的投入,提高了运维效率,减少了人工工时投入;由于提高了业务的实时处理效率,使终端用户能及时感知自己业务使用情况,以及能通过及时和大批量的数据读取,降低终端用户异常高额费用的产生,也降低了给电信带来的欠费风险。
附图说明
[0029]图1为本专利技术装置示意图;
[0030]图2为本专利技术流程图。
具体实施方式
[0031]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0032]在本专利技术的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本专利技术的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0033]在本专利技术的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本专利技术中的具体含义。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式内存数据库数据路由和分库分表装置,其特征在于:包括接口层,所述接口层提供JDBC、ODBC和自主的DBDriver SDK接口,兼容MySQL协议,供多语言开发;数据路由层;所述数据路由层提供分库分表逻辑,使下层数据库可以水平伸缩;分库存储节点层,所述分库存储节点层提供传统单机内存数据库的分库分表存储。2.一种分布式内存数据库数据路由和分库分表的方法,其特征在于:包括以下步骤:1)、首先进行请求语法解析和审计:应用层会话接入,接口层收到请求发送给数据路由层,首先会对SQL进行解析,是否符合SQL92标准,并对相关语法进行校验;2)、数据路由层配置加载:将数据路由层的规则实时加载到缓存中,读取配置规则进行分库分表处理,配置的数据可以存放在内存数据库中;3)、分库分表规则查找;4)、数据读取结果返回。3.根据权利要求2所述的一种分布式内存数据库数据路由和分库分表的方法,其特征在于:分表分库规则查找流程如下:A、分库分表:(1)根据sql语句中带的虚表名查找tdal_table_instance表,得到对应的分库规则ID;(2)通过规则ID到tdal_split_field和tdal_split_value_range中查找具体的拆分规则,这两个表之间存在着递归查找,直到不能在另一个表中找到规则记录即结束查找;(3)根据找到的规则,依次获取所在库,所在库中的分表后缀,如果没有分表,则直接使用tdal_table_instance中的tb_prefix作为物理表名,拼接实际物理表名替换sql中的表,...

【专利技术属性】
技术研发人员:肖永韧徐建军周凯张自云徐真朱明辉
申请(专利权)人:中国电信股份有限公司江西分公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1