[发明专利]一种分库分表模式下逻辑SQL语句翻译方法和装置在审
申请号: | 201711000959.5 | 申请日: | 2017-10-24 |
公开(公告)号: | CN109697068A | 公开(公告)日: | 2019-04-30 |
发明(设计)人: | 龚家兵 | 申请(专利权)人: | 中移(苏州)软件技术有限公司;中国移动通信集团公司 |
主分类号: | G06F8/40 | 分类号: | G06F8/40;G06F8/41 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 郭润湘 |
地址: | 215163 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分表 语法分析树 方法和装置 翻译 输出逻辑 语句分析 预设 匹配 输出 | ||
本发明公开了一种分库分表模式下逻辑SQL语句翻译方法和装置,接收并输出逻辑SQL语句;对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。采用该技术方案,能提供便捷、高效的分库分表的物理SQL语句生成能力。
技术领域
本发明涉及数据库领域,尤其涉及一种分库分表模式下逻辑SQL语句翻译方法和装置。
背景技术
对于通信行业大型应用系统、或大型互联网应用系统,数据库单表的记录数可能达到千万级甚至是亿级,并且数据库还面临着极高的并发访问压力。对于访问极为频繁且数据量巨大的单表来说,我们的解决方案首先就是分库分表,通过分库分表来减少单表的记录条数,提高数据查询时间、提高数据库的吞吐量。
分库分表之前,我们需要选择适当的分库分表策略,使得数据能够较为均衡地分到多张表中,并且不影响正常的查询。目前常用的分库策略有:按业务分库、按地域分库,常用的分表策略有:按用户ID规则分表、按年月分表、按业务数据规则分表、其他基于复杂规则的分表。
在这种分库分表模式下,SQL(结构化查询语言,Structured Query Language)语句的编写就变得极为繁琐和复杂,如按用户ID规则进行的分表,在编写查询用户信息的SQL语句就必须考虑该用户在那个分表中。现有的技术方案大体流程如下:
(1)明确需要操作的数据存放在哪个分库中,需要人为根据分库规则进行判断。
(2)明确需要操作的数据存放在哪个分表中,需要人为根据分表规则进行判断。
(3)如果需要操作的数据不能直接判断出归属那个分表,则还需要对数据做相关分表属性的查询,然后根据分表属性来做分表判断。
(4)明确了数据归属的分库与分表后,编写SQL语句。
现有技术至少存在以下技术问题:需要人为根据数据规则判定需要操作的数据的归属的分库与分表,编写SQL效率低且容易出错;当需要查询跨多个分表的数据时,SQL编写变得非常繁琐。
发明内容
本发明实施例通过提供一种分库分表模式下逻辑SQL语句翻译方法和装置,用于解决现有技术中需要人为根据数据规则判定需要操作的数据的归属的分库与分表,编写SQL效率低且容易出错;当需要查询跨多个分表的数据时,SQL编写变得非常繁琐的技术问题。
第一方面,本发明一实施例提供了一种分库分表模式下逻辑SQL语句翻译方法,所述方法包括:
接收并输出逻辑SQL语句;
对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;
对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;
基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。
可选的,所述对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息,包括:
判断所述语法分析树中的表名是否与预设分库策略相匹配,其中,所述预设的分库分表策略中包括所述预设分库策略和预设分表策略;
在为是时,从所述预设分库策略中获取与所述语法分析树中的表名匹配的第一分库信息;
从所述预设分表策略中获取与所述语法分析树中的表名匹配的第一分表信息。
可选的,所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中移(苏州)软件技术有限公司;中国移动通信集团公司,未经中移(苏州)软件技术有限公司;中国移动通信集团公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711000959.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据打包方法及装置
- 下一篇:一种H5应用的打包方法及终端