[发明专利]一种分库分表方法及设备在审
申请号: | 201911425873.6 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111209280A | 公开(公告)日: | 2020-05-29 |
发明(设计)人: | 杨磊;吴代科;邢益伟;周洋;李令建 | 申请(专利权)人: | 上海钧正网络科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/242 |
代理公司: | 上海唯源专利代理有限公司 31229 | 代理人: | 汪家瀚 |
地址: | 201199 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分库分表 方法 设备 | ||
1.一种分库分表方法,其特征在于,所述方法包括:
创建基于计算机编程语言golang的服务作为golang中间件;
启动所述golang中间件,拦截并解析应用程序发送的SQL语句,以获取所述SQL语句待处理的目的数据库逻辑表对应的目的分库分表规则;
根据所述目的分库分表规则改写所述SQL语句,得到改写后的SQL语句及对应的多个目的物理表;
将所述改写后的SQL语句发送至所述目的物理表所属的数据库;
将所述数据库返回的数据进行处理后,发送给所述应用程序对应的用户。
2.如权利要求1所述的方法,其特征在于,所述启动所述golang中间件,拦截并解析应用程序发送的SQL语句,以获取所述SQL语句待处理的目的数据库逻辑表对应的目的分库分表规则,包括:
启动所述golang中间件,拦截所述应用程序发送的所述SQL语句;
对所述SQL语句进行解析,得到所述SQL语句的抽象语法树;
根据所述抽象语法树,获取所述SQL语句待处理的所述目的数据库逻辑表对应的目的分库分表规则。
3.如权利要求2所述的方法,其特征在于,所述对所述SQL语句进行解析,得到所述SQL语句的抽象语法,包括:
对所述SQL语句进行分片分析或路由分析,得到所述SQL语句的抽象语法树。
4.如权利要求2所述的方法,其特征在于,所述方法还包括:
预置用于分库分表的分库分表规则;
其中,所述根据所述抽象语法树,获取所述SQL语句待处理的所述目的数据库逻辑表对应的目的分库分表规则,包括:
根据所述抽象语法树,从预置的所述分库分表规则中,对所述目的数据库逻辑表进行分库分表规则匹配,得到所述目的数据库逻辑表对应的目的分库分表规则。
5.如权利要求4所述的方法,其特征在于,所述分库分表规则包括表与数据库之间的映射关系、分表的数量、所述表的拆分规则及分库分表时所采用的分库分表算法。
6.如权利要求5所述的方法,其特征在于,所述分库分表算法包括以下任一项:
哈希分表算法、自然月分表算法、日期分表算法及范围分表算法。
7.如权利要求4所述的方法,其特征在于,所述分库分表规则存储于配置文件中。
8.如权利要求1所述的方法,其特征在于,所述根据所述目的分库分表规则改写所述SQL语句,得到改写后的SQL语句及对应的多个目的物理表,包括:
根据所述目的分库分表规则,对所述SQL语句进行改写得到所述改写后的SQL语句,并将所述SQL语句待处理的所述目的数据库逻辑表改写成对应的多个所述目的物理表。
9.如权利要求1所述的方法,其特征在于,所述将所述数据库返回的数据进行处理后,发送给所述应用程序对应的用户,包括:
接收所述目的物理表所属的数据库返回的数据;
将所述数据库返回的数据进行汇聚,得到所述SQL语句对应的输出数据;
将所述SQL语句对应的输出数据发送给所述应用程序对应的用户。
10.如权利要求1至9中任一项所述的方法,其特征在于,所述方法还包括:
获取测试程序;
启动所述测试程序测试原有业务流程和数据是否正确。
11.如权利要求10所述的方法,其特征在于,所述启动所述测试程序测试原有业务流程和数据是否正确,包括:
启动所述测试程序,判断所述SQL语句按照所述原有业务流程执行后得到的原有数据,与将所述数据库返回的数据进行处理后得到的所述SQL语句对应的输出数据是否一致。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海钧正网络科技有限公司,未经上海钧正网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911425873.6/1.html,转载请声明来源钻瓜专利网。