CN109697068A - 一种分库分表模式下逻辑sql语句翻译方法和装置 - Google Patents

一种分库分表模式下逻辑sql语句翻译方法和装置 Download PDF

Info

Publication number
CN109697068A
CN109697068A CN201711000959.5A CN201711000959A CN109697068A CN 109697068 A CN109697068 A CN 109697068A CN 201711000959 A CN201711000959 A CN 201711000959A CN 109697068 A CN109697068 A CN 109697068A
Authority
CN
China
Prior art keywords
library
point
sql statement
strategy
physics
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711000959.5A
Other languages
English (en)
Inventor
龚家兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201711000959.5A priority Critical patent/CN109697068A/zh
Publication of CN109697068A publication Critical patent/CN109697068A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分库分表模式下逻辑SQL语句翻译方法和装置,接收并输出逻辑SQL语句;对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。采用该技术方案,能提供便捷、高效的分库分表的物理SQL语句生成能力。

Description

一种分库分表模式下逻辑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语句,包括:
基于所述第一分库信息和所述第一分表信息,获取与所述语法分析树中表名对应的第一物理表名;
利用所述第一物理表名替换所述逻辑SQL语句中的表名从而获取第一物理SQL语句。
可选的,在所述判断所述语法分析树中表名是否与预设分库策略相匹配之后,所述方法还包括:
若所述语法分析树中表名与所述预设分库策略不匹配,判断所述语法分析树中表名是否与预设分表策略相匹配;
在为是时,从所述预设分表策略中获取与所述语法分析树中的表名匹配的第二分表信息。
可选的,所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句,包括:
基于所述第二分表信息,获取与所述语法分析树中的表名对应的第二物理表名;
利用所述第二物理表名替换所述逻辑SQL语句中的表名,从而获取第二物理SQL语句。
可选的,在所述接收并输出逻辑SQL语句之前,所述方法还包括:
进行分库分表策略配置,从而存储所述预设的分库分表策略。
可选的,在所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句之后,所述方法还包括:
输出所述物理SQL语句和所述物理SQL语句的物理库信息和/或物理表信息。
第二方面,本发明一实施例提供了一种分库分表模式下逻辑SQL语句翻译装置,其特征在于,所述装置包括:
接收模块,用于接收并输出的逻辑SQL语句;
第一获取模块,用于对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;
第二获取模块,用于对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;
翻译模块,用于基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。
可选的,所述第二获取模块包括:
判断子模块,用于判断所述语法分析树中的表名是否与预设分库策略相匹配,其中,所述预设的分库分表策略中包括所述预设分库策略和预设分表策略;
第一获取子模块,用于在为是时,从所述预设分库策略中获取与所述语法分析树中的表名匹配的第一分库信息;
第二获取子模块,用于从所述预设分表策略中获取与所述语法分析树中的表名匹配的第一分表信息。
可选的,所述翻译模块包括:
第三获取子模块,用于基于所述第一分库信息和所述第一分表信息,获取与所述语法分析树中表名对应的第一物理表名;
第四获取子模块,用于利用所述第一物理表名替换所述逻辑SQL语句中的表名从而获取第一物理SQL语句。
可选的,所述装置还包括:
判断模块,用于在所述判断所述语法分析树中表名是否与预设分库策略相匹配之后,若所述语法分析树中表名与所述预设分库策略不匹配,判断所述语法分析树中表名是否与预设分表策略相匹配;
第三获取模块,用于在为是时,从所述预设分表策略中获取与所述语法分析树中的表名匹配的第二分表信息。
可选的,所述翻译模块还包括:
第五获取子模块,用于基于所述第二分表信息,获取与所述语法分析树中的表名对应的第二物理表名;
第六获取子模块,用于利用所述第二物理表名替换所述逻辑SQL语句中的表名,从而获取第二物理SQL语句。
可选的,所述装置还包括:
配置模块,用于在所述接收并输出逻辑SQL语句之前,进行分库分表策略配置,从而存储所述预设的分库分表策略。
可选的,所述装置还包括:
输出模块,用于在所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句之后,输出所述物理SQL语句和所述物理SQL语句的物理库信息和/或物理表信息。
第三方面,本发明一实施例提供了一种基于数据块的索引信息的聚类装置,其特征在于,所述装置包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如第一方面实施例所述的方法。
第四方面,本发明一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面实施例所述方法的步骤。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
通过采用本发明采用的技术方案,能提供便捷、高效的分库分表的物理SQL语句生成能力,具体如下:
1、在分库分表模式下,编写逻辑SQL语句不需要考虑具体分库与分表规则,只需要输入编写的逻辑SQL语句,本方案可以根据预设的分库分表策略自动解析和翻译逻辑SQL语句,从而获取翻译后物理SQL语句及其分库分表信息。
2、本逻辑SQL语句翻译方法和装置可无缝内嵌至现有应用系统,降低分库分表SQL语句出错率,并且当分库分表规则变化后无需修改逻辑SQL语句代码。
附图说明
图1A为本发明实施例提供的分库分表模式下逻辑SQL语句翻译方法的第一流程图;
图1B为本发明实施例提供的语法分析树的示意图;
图2为本发明实施例提供的分库分表模式下逻辑SQL语句翻译方法的第一流程图;
图3为本发明实施例提供的分库分表模式下逻辑SQL语句翻译装置的示意图。
具体实施方式
为了解决上述技术问题,本发明实施例中的技术方案的总体思路如下:一种分库分表模式下逻辑SQL语句翻译方法和装置,接收并输出逻辑SQL语句;对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。采用该技术方案,能提供便捷、高效的分库分表的物理SQL语句生成能力。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
如图1A所示,本发明实施例一提供了一种分库分表模式下逻辑SQL语句翻译方法,所述方法包括:
S101,接收并输出逻辑SQL语句;
S102,对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;
S103,对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;
S104,基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。
在执行步骤S101之前,该方法还可以包括:进行分库分表策略配置,从而存储所述预设的分库分表策略。预设的分库分表策略包括预设分库策略和预设分表策略,分库策略主要有:
(1)按区域分库:如按省、市、区实现数据分库存储。该分库策略配置信息如下表示例所示:
区域编码 数据库名 数据库描述
A BUSI_A 业务A库
B BUSI_B 业务B库
C BUSI_C 业务C库
(2)按业务分库:如电商交易库、客户信息库、物资仓储库等。该分库策略配置信息如下表示例所示:
表名 数据库名 数据库描述
tb_orderinfo orderdb 电商交易库
tb_custinfo custdb 客户信息库
tb_custcontact custdb 客户信息库
(3)根据实际的应用需要,也可以采用其他分库规则。
分表策略则更加灵活,可以按表中的某个字段数据规则来进行分表、或按数据生成的时间规则来进行分表。分表策略一般有如下几种:
(1)按数字规则分表:如按用户ID字段的最后2位数字进行分表,则分成100张表。
(2)按时间规则分表:根据数据生成的时间规则可按年进行分表、或按月份进行分表、按日期进行分表等。
(3)根据实际的应用需要,也可以按其他规则分表。
为了快速、高效实现分库、分表规则计算,确定预设的分库分表策略后,需要将分库分表策略依赖的所有数据进行缓存,可使用redis、memcache或其他商业缓存软件实现。
缓存的分库分表策略的数据主要包括:
(1)分库分表策略信息。
(2)分库分表策略需要使用到的业务数据信息。
对于步骤S101,接收并输出逻辑SQL语句,逻辑SQL语句无需关心分库与分表规则。例如:
(1)用户信息表(逻辑表名:tb_userinfo)按用户ID(uid)后两位分表,共分为100张表,物理分表表名如:tb_userinfo_00、tb_userinfo_01、tb_userinfo_02、……、tb_userinfo_99。
(2)需要查询用户ID为119299931的用户信息,则逻辑SQL语句只需要写成如下形式即可:
select*from tb_userinfo where uid=119299931。
在执行完步骤S101之后,继续执行步骤S102,步骤S102具体如下:
采用词法、语法分析技术实现逻辑SQL语句分析,并输出语法分析树。
如逻辑SQL语句:select*from tb_userinfo where uid=119299931,其语法分析树如图1B所示。
在执行完步骤S102后,继续执行步骤S103,步骤S103具体包括:
判断所述语法分析树中的表名是否与预设分库策略相匹配,其中,所述预设的分库分表策略中包括所述预设分库策略和预设分表策略;
在为是时,从所述预设分库策略中获取与所述语法分析树中的表名匹配的第一分库信息;从所述预设分表策略中获取与所述语法分析树中的表名匹配的第一分表信息;
在为否时,判断所述语法分析树中表名是否与预设分表策略相匹配;
若匹配,从所述预设分表策略中获取与所述语法分析树中的表名匹配的第二分表信息;
若不匹配,说明该逻辑SQL语句不涉及分库分表,对该逻辑SQL语句不做翻译处理。
在执行完步骤S103之后,继续执行步骤S104,步骤S104具体包括:
基于所述第一分库信息和所述第一分表信息,获取与所述语法分析树中表名对应的第一物理表名;利用所述第一物理表名替换所述逻辑SQL语句中的表名从而获取第一物理SQL语句。或者
基于所述第二分表信息,获取与所述语法分析树中的表名对应的第二物理表名;利用所述第二物理表名替换所述逻辑SQL语句中的表名,从而获取第二物理SQL语句。
在执行完步骤S104之后,该方法还可以包括:
输出所述物理SQL语句和所述物理SQL语句的物理库信息和/或物理表信息
具体地,对于不涉及分库分表的逻辑SQL语句,对其不做翻译,将该逻辑SQL语句按照现有的转换方式转换为物理SQL语句,输出其对应的物理SQL语句以及相应的物理库和物理表信息。
对于涉及分库和分表的逻辑SQL语句,对其做翻译,将该逻辑SQL语句按照步骤S103和S104的方式转换为物理SQL语句,输出其对应的物理SQL语句以及相应的物理分库和物理分表信息。
对于不涉及分库但涉及分表的逻辑SQL语句,对其做翻译,将该逻辑SQL语句按照步骤S103和S104的方式转换为物理SQL语句,输出其对应的物理SQL语句以及相应的物理库和物理分表信息。
如图2所示,为了更好的理解本实施例,对该方法进行进一步的说明,具体步骤如下:
首先进行进行初始化,即进行S201,加载预设的分库分表策略缓存数据;
S202,读取逻辑SQL语句的语法分析树中表名;
S203,判断该表名与预设分库策略是否匹配,若是,执行步骤S2041-S2044;若否,执行步骤S205;
S2041-S2044:具体为,S2041,根据预设的分库策略读取表名对应的第一分库信息;S2042,根据预设的分表策略读取表名对应的第一分表信息;S2043,输出第一分库信息和第一分表信息,获取第一物理表名;S2044,利用所述第一物理表名替换逻辑SQL语句中的表名;然后执行步骤S208;
S205,判断该表名与预设分表策略是否匹配,若是,执行步骤S2061-S2063,若否,执行步骤S207;
S2061-S2063,具体为,S2061,根据预设的分表策略读取表名对应的第二分表信息;S2062,输出第二分表信息;S2063,利用所述第二物理表名替换逻辑SQL语句中的表名;
S207,对逻辑SQL不做分库分表的翻译处理;
S208,输出物理SQL语句及其物理库信息和/或物理表信息。
如图3所示,本发明实施例二提供了一种分库分表模式下逻辑SQL语句翻译装置,其特征在于,所述装置包括:
接收模块301,用于接收并输出的逻辑SQL语句;
第一获取模块302,用于对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;
第二获取模块303,用于对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;
翻译模块304,用于基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。
该装置还可以包括配置模块,在所述接收并输出逻辑SQL语句之前,进行分库分表策略配置,从而存储所述预设的分库分表策略。
具体地,配置模块进行分库分表策略配置,从而存储所述预设的分库分表策略。预设的分库分表策略包括预设分库策略和预设分表策略,分库策略主要有:
(1)按区域分库:如按省、市、区实现数据分库存储。该分库策略配置信息如下表示例所示:
区域编码 数据库名 数据库描述
A BUSI_A 业务A库
B BUSI_B 业务B库
C BUSI_C 业务C库
(2)按业务分库:如电商交易库、客户信息库、物资仓储库等。该分库策略配置信息如下表示例所示:
表名 数据库名 数据库描述
tb_orderinfo orderdb 电商交易库
tb_custinfo custdb 客户信息库
tb_custcontact custdb 客户信息库
(3)根据实际的应用需要,也可以采用其他分库规则。
分表策略则更加灵活,可以按表中的某个字段数据规则来进行分表、或按数据生成的时间规则来进行分表。分表策略一般有如下几种:
(1)按数字规则分表:如按用户ID字段的最后2位数字进行分表,则分成100张表。
(2)按时间规则分表:根据数据生成的时间规则可按年进行分表、或按月份进行分表、按日期进行分表等。
(3)根据实际的应用需要,也可以按其他规则分表。
为了快速、高效实现分库、分表规则计算,确定预设的分库分表策略后,需要将分库分表策略依赖的所有数据进行缓存,可使用redis、memcache或其他商业缓存软件实现。
缓存的分库分表策略的数据主要包括:
(1)分库分表策略信息。
(2)分库分表策略需要使用到的业务数据信息。
在配置完成后,接收模块301接收并输出逻辑SQL语句,逻辑SQL语句无需关心分库与分表规则。例如:
(1)用户信息表(逻辑表名:tb_userinfo)按用户ID(uid)后两位分表,共分为100张表,物理分表表名如:tb_userinfo_00、tb_userinfo_01、tb_userinfo_02、……、tb_userinfo_99。
(2)需要查询用户ID为119299931的用户信息,则逻辑SQL语句只需要写成如下形式即可:
select*from tb_userinfo where uid=119299931。
对于第一获取模块302,其具体用于:
采用词法、语法分析技术实现逻辑SQL语句分析,并输出语法分析树。
如逻辑SQL语句:select*from tb_userinfo where uid=119299931,其语法分析树如图1B所示。
对于第二获取模块303,其具体包括:
判断子模块,用于判断所述语法分析树中的表名是否与预设分库策略相匹配,其中,所述预设的分库分表策略中包括所述预设分库策略和预设分表策略;
第一获取子模块,用于在为是时,从所述预设分库策略中获取与所述语法分析树中的表名匹配的第一分库信息;
第二获取子模块,用于从所述预设分表策略中获取与所述语法分析树中的表名匹配的第一分表信息。
该装置还包括判断模块,用于在所述判断所述语法分析树中表名是否与预设分库策略相匹配之后,若所述语法分析树中表名与所述预设分库策略不匹配,判断所述语法分析树中表名是否与预设分表策略相匹配;
第三获取模块,用于在所述语法分析树中表名是否与预设分表策略相匹配时,从所述预设分表策略中获取与所述语法分析树中的表名匹配的第二分表信息。
若所述语法分析树中表名是否与预设分表策略不匹配时,说明该逻辑SQL语句不涉及分库分表,对该逻辑SQL语句不做翻译处理。
对于翻译模块304,其具体包括:
第三获取子模块,用于基于所述第一分库信息和所述第一分表信息,获取与所述语法分析树中表名对应的第一物理表名;
第四获取子模块,用于利用所述第一物理表名替换所述逻辑SQL语句中的表名从而获取第一物理SQL语句。
第五获取子模块,用于基于所述第二分表信息,获取与所述语法分析树中的表名对应的第二物理表名;
第六获取子模块,用于利用所述第二物理表名替换所述逻辑SQL语句中的表名,从而获取第二物理SQL语句。
该装置还可包括:输出模块,用于在所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句之后,输出所述物理SQL语句和所述物理SQL语句的物理库信息和/或物理表信息。
具体地,对于不涉及分库分表的逻辑SQL语句,对其不做翻译,将该逻辑SQL语句按照现有的转换方式转换为物理SQL语句,输出其对应的物理SQL语句以及相应的物理库和物理表信息。
对于涉及分库和分表的逻辑SQL语句,对其做翻译,将该逻辑SQL语句按照步骤S103和S104的方式转换为物理SQL语句,输出其对应的物理SQL语句以及相应的物理分库和物理分表信息。
对于不涉及分库但涉及分表的逻辑SQL语句,对其做翻译,将该逻辑SQL语句按照步骤S103和S104的方式转换为物理SQL语句,输出其对应的物理SQL语句以及相应的物理库和物理分表信息。
本实施例中的装置的工作原理的方法步骤与实施例一中的方法步骤相同,在此不再赘述。
本发明实施例三提供了一种基于数据块的索引信息的聚类装置,其特征在于,所述装置包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如实施例一所述的方法。
本发明实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一中所述方法的步骤。上述本发明实施例中的技术方案,至少具有如下的技术效果或优点:
通过采用本发明采用的技术方案,能提供便捷、高效的分库分表的物理SQL语句生成能力,具体如下:
1、在分库分表模式下,编写逻辑SQL语句不需要考虑具体分库与分表规则,只需要输入编写的逻辑SQL语句,本方案可以根据预设的分库分表策略自动解析和翻译逻辑SQL语句,从而获取翻译后物理SQL语句及其分库分表信息。
2、本逻辑SQL语句翻译方法和装置可无缝内嵌至现有应用系统,降低分库分表SQL语句出错率,并且当分库分表规则变化后无需修改逻辑SQL语句代码。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (16)

1.一种分库分表模式下逻辑SQL语句翻译方法,其特征在于,所述方法包括:
接收并输出逻辑SQL语句;
对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;
对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;
基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。
2.如权利要求1所述的方法,其特征在于,所述对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息,包括:
判断所述语法分析树中的表名是否与预设分库策略相匹配,其中,所述预设的分库分表策略中包括所述预设分库策略和预设分表策略;
在为是时,从所述预设分库策略中获取与所述语法分析树中的表名匹配的第一分库信息;
从所述预设分表策略中获取与所述语法分析树中的表名匹配的第一分表信息。
3.如权利要求2所述的方法,其特征在于,所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句,包括:
基于所述第一分库信息和所述第一分表信息,获取与所述语法分析树中表名对应的第一物理表名;
利用所述第一物理表名替换所述逻辑SQL语句中的表名从而获取第一物理SQL语句。
4.如权利要求3所述的方法,其特征在于,在所述判断所述语法分析树中表名是否与预设分库策略相匹配之后,所述方法还包括:
若所述语法分析树中表名与所述预设分库策略不匹配,判断所述语法分析树中表名是否与预设分表策略相匹配;
在为是时,从所述预设分表策略中获取与所述语法分析树中的表名匹配的第二分表信息。
5.如权利要求4所述的方法,其特征在于,所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句,包括:
基于所述第二分表信息,获取与所述语法分析树中的表名对应的第二物理表名;
利用所述第二物理表名替换所述逻辑SQL语句中的表名,从而获取第二物理SQL语句。
6.如权利要求1-5任一项所述的方法,其特征在于,在所述接收并输出逻辑SQL语句之前,所述方法还包括:
进行分库分表策略配置,从而存储所述预设的分库分表策略。
7.如权利要求1-5任一项所述的方法,其特征在于,在所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句之后,所述方法还包括:
输出所述物理SQL语句和所述物理SQL语句的物理库信息和/或物理表信息。
8.一种分库分表模式下逻辑SQL语句翻译装置,其特征在于,所述装置包括:
接收模块,用于接收并输出的逻辑SQL语句;
第一获取模块,用于对所述输出的逻辑SQL语句进行语句分析,获取所述逻辑SQL语句的语法分析树;
第二获取模块,用于对所述语法分析树中表名与预设的分库分表策略进行匹配,获取所述语法分析树中表名的分库分表信息;
翻译模块,用于基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句。
9.如权利要求8所述的装置,其特征在于,所述第二获取模块包括:
判断子模块,用于判断所述语法分析树中的表名是否与预设分库策略相匹配,其中,所述预设的分库分表策略中包括所述预设分库策略和预设分表策略;
第一获取子模块,用于在为是时,从所述预设分库策略中获取与所述语法分析树中的表名匹配的第一分库信息;
第二获取子模块,用于从所述预设分表策略中获取与所述语法分析树中的表名匹配的第一分表信息。
10.如权利要求9所述的装置,其特征在于,所述翻译模块包括:
第三获取子模块,用于基于所述第一分库信息和所述第一分表信息,获取与所述语法分析树中表名对应的第一物理表名;
第四获取子模块,用于利用所述第一物理表名替换所述逻辑SQL语句中的表名从而获取第一物理SQL语句。
11.如权利要求10所述的装置,其特征在于,所述装置还包括:
判断模块,用于在所述判断所述语法分析树中表名是否与预设分库策略相匹配之后,若所述语法分析树中表名与所述预设分库策略不匹配,判断所述语法分析树中表名是否与预设分表策略相匹配;
第三获取模块,用于在为是时,从所述预设分表策略中获取与所述语法分析树中的表名匹配的第二分表信息。
12.如权利要求11所述的装置,其特征在于,所述翻译模块还包括:
第五获取子模块,用于基于所述第二分表信息,获取与所述语法分析树中的表名对应的第二物理表名;
第六获取子模块,用于利用所述第二物理表名替换所述逻辑SQL语句中的表名,从而获取第二物理SQL语句。
13.如权利要求8-12任一项所述的装置,其特征在于,所述装置还包括:
配置模块,用于在所述接收并输出逻辑SQL语句之前,进行分库分表策略配置,从而存储所述预设的分库分表策略。
14.如权利要求8-12任一项所述的装置,其特征在于,所述装置还包括:
输出模块,用于在所述基于所述分库分表信息,将所述逻辑SQL语句翻译为物理SQL语句之后,输出所述物理SQL语句和所述物理SQL语句的物理库信息和/或物理表信息。
15.一种基于数据块的索引信息的聚类装置,其特征在于,所述装置包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,执行如权利要求1-7任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述方法的步骤。
CN201711000959.5A 2017-10-24 2017-10-24 一种分库分表模式下逻辑sql语句翻译方法和装置 Pending CN109697068A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711000959.5A CN109697068A (zh) 2017-10-24 2017-10-24 一种分库分表模式下逻辑sql语句翻译方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711000959.5A CN109697068A (zh) 2017-10-24 2017-10-24 一种分库分表模式下逻辑sql语句翻译方法和装置

Publications (1)

Publication Number Publication Date
CN109697068A true CN109697068A (zh) 2019-04-30

Family

ID=66227711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711000959.5A Pending CN109697068A (zh) 2017-10-24 2017-10-24 一种分库分表模式下逻辑sql语句翻译方法和装置

Country Status (1)

Country Link
CN (1) CN109697068A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825739A (zh) * 2019-10-30 2020-02-21 京东数字科技控股有限公司 建表语句生成方法、装置、设备及存储介质
CN110990400A (zh) * 2019-11-20 2020-04-10 浙江大搜车软件技术有限公司 数据库查询方法、装置、计算机设备和存储介质
CN111209280A (zh) * 2019-12-31 2020-05-29 上海钧正网络科技有限公司 一种分库分表方法及设备
CN112632085A (zh) * 2021-01-05 2021-04-09 南方电网深圳数字电网研究院有限公司 动态分表方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778133A (zh) * 2012-10-18 2014-05-07 阿里巴巴集团控股有限公司 一种数据库对象的变更方法及装置
CN104714972A (zh) * 2013-12-17 2015-06-17 中国银联股份有限公司 数据库分表建立及查询方法
CN106294565A (zh) * 2016-07-27 2017-01-04 中国农业银行股份有限公司 一种数据库访问方法及系统
US20170031818A1 (en) * 2015-07-30 2017-02-02 Emc Corporation Memory Centric Database Architecture

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103778133A (zh) * 2012-10-18 2014-05-07 阿里巴巴集团控股有限公司 一种数据库对象的变更方法及装置
CN104714972A (zh) * 2013-12-17 2015-06-17 中国银联股份有限公司 数据库分表建立及查询方法
US20170031818A1 (en) * 2015-07-30 2017-02-02 Emc Corporation Memory Centric Database Architecture
CN106294565A (zh) * 2016-07-27 2017-01-04 中国农业银行股份有限公司 一种数据库访问方法及系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825739A (zh) * 2019-10-30 2020-02-21 京东数字科技控股有限公司 建表语句生成方法、装置、设备及存储介质
CN110990400A (zh) * 2019-11-20 2020-04-10 浙江大搜车软件技术有限公司 数据库查询方法、装置、计算机设备和存储介质
CN110990400B (zh) * 2019-11-20 2023-07-04 浙江大搜车软件技术有限公司 数据库查询方法、装置、计算机设备和存储介质
CN111209280A (zh) * 2019-12-31 2020-05-29 上海钧正网络科技有限公司 一种分库分表方法及设备
CN112632085A (zh) * 2021-01-05 2021-04-09 南方电网深圳数字电网研究院有限公司 动态分表方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN109697068A (zh) 一种分库分表模式下逻辑sql语句翻译方法和装置
CN106528165B (zh) 代码生成方法及代码生成系统
CN104685498B (zh) 聚合/分组操作的硬件实现方式:散列表方法
US9471633B2 (en) Eigenvalue-based data query
CN107239479A (zh) 一种基于区块链的数据存储以及查询的方法及装置
CN100550020C (zh) 一种用于解决中文软件多语言支持问题的方法和装置
CN1661593B (zh) 一种计算机语言翻译方法及其翻译系统
CN105094707A (zh) 一种数据存储、读取方法及装置
US9852453B2 (en) High-throughput message generation
CN105335412A (zh) 用于数据转换、数据迁移的方法和装置
CN104573022A (zh) 一种HBase的数据查询方法及装置
CN104360865A (zh) 一种序列化方法、反序列化方法及相关设备
CN103810275A (zh) 用于非关系与关系型数据库间数据交互的方法和装置
CN101661481A (zh) 存储xml数据的方法、执行xml查询的方法及其装置
CN104750727A (zh) 一种列式内存存储查询装置及列式内存存储查询方法
CN106528896B (zh) 一种数据库优化方法和装置
US20140019472A1 (en) Encoded data processing
CN106933845A (zh) 使用sql实现mdx查询效果的方法和装置
CN103853714A (zh) 一种数据处理方法和装置
CN104424219A (zh) 一种数据文件的管理方法及装置
CN201402459Y (zh) 一种测试用例管理装置
CN102521332B (zh) 基于强模拟的图模式匹配方法、装置及系统
CN104881461A (zh) 一种快速数据保存方法
CN101441654A (zh) 数据库检索方法及系统
CN107766258A (zh) 内存存储方法与装置、内存查询方法与装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190430

RJ01 Rejection of invention patent application after publication