一种数据库归档模式下跨库查询方法和装置制造方法及图纸

技术编号:23983451 阅读:31 留言:0更新日期:2020-04-29 12:24
本公开提供了一种数据库归档模式下跨库查询方法和装置,划定逻辑数据库区域,划分归档域和非归档域,定义跨域子查询语法;对基于跨域子查询语法的sql语句进行解析处理,解析成语法树,并进行跨域子查询处理,形成相应的临时表,利用临时表消除原Sql中的跨域子查询,得到原生sql语句,执行原生sql语句并得到查询结果,能够打破生产库和多个归档数据库的不同实例限制,通过sql相互连通进行查询。

A cross database query method and device under the mode of database archiving

【技术实现步骤摘要】
一种数据库归档模式下跨库查询方法和装置
本公开属于计算机
,涉及一种数据库归档模式下跨库查询方法和装置。
技术介绍
本部分的陈述仅仅是提供了与本公开相关的
技术介绍
信息,不必然构成在先技术。在互联网、电信等许多关键领域,随着企业业务的不断发展,企业的I/T环境也在不断进行演变,单个存储设备有容量限制,尤其是云数据库的容量限制,无法满足日益增长的业务数据,这要求我们必须将数据进行归档处理,分别存储在多个数据库中。然而,数据进行归档、分库存储后,仍有一些业务需要从生产库和多个归档数据库中查询数据;但是由于生产库和多个归档数据库分别在不同的数据库实例中,不同数据库实例之间不能通过sql相互连通进行查询,即无法进行跨生产库与归档数据库查询,也就满足不了业务的需求。
技术实现思路
本公开为了解决上述问题,提出了一种数据库归档模式下跨库查询方法和装置,本公开可以实现数据库归档模式下跨库查询。根据一些实施例,本公开采用如下技术方案:一种数据库归档模式下跨库查询方法,包括以下步骤:划定逻辑数据库区域,划分归档域和非归档域,定义跨域子查询语法;对基于跨域子查询语法的sql语句进行解析处理,解析成语法树,并进行跨域子查询处理,形成相应的临时表,利用临时表消除原Sql中的跨域子查询,得到原生sql语句,执行原生sql语句并得到查询结果。作为进一步的限定,所述划定逻辑数据库区域,其中生产库和多个归档数据库中所有归档表组成归档域,生产库中所有非归档表组成非归档域;通过在主查询sql语句中加入自定义跨域子查询语句来同时访问归档域和非归档域实现跨库查询。作为进一步的限定,所述sql解析成语法树,判断语法正确性,如果sql语法不正确则直接结束,否则进行跨域子查询预处理。作为进一步的限定,跨域子查询预处理的过程包括对所有First跨域子查询和Medial跨域子查询,判断数据是否进行过归档,从而确定跨域子查询是否需要在归档数据库中执行;如果数据尚未进行过归档,则直接将该跨域子查询去除跨域子查询语法、转化为只在生产库执行的原生sql。作为进一步的限定,对于所有First跨域子查询,去除包含父查询列的where表达式,之后分别在生产库和归档数据库执行,合并结果形成First临时表,如果存在嵌套的First跨域子查询,先做内层,再做外层。作为进一步的限定,计算Medial跨域子查询中涉及到的主查询列的取值,形成Bridge临时表,取所有Medial跨域子查询中涉及到的主查询相关列作为主查询的列,组织成新sql在生产库执行,形成Bridge临时表。作为进一步的限定,Medial跨域子查询处理,形成Medial临时表,具体为,对于所有Medial跨域子查询,借助Bridge临时表替换掉Medial跨域子查询中涉及到的主查询列,之后分别在生产库和归档数据库执行,合并结果形成Medial临时表。一种数据库归档模式下跨库查询系统,包括:跨库查询预处理模块,被配置为划定逻辑数据库区域,划分归档域和非归档域,定义跨域子查询语法;跨库查询Sql处理模块,被配置为对基于跨域子查询语法的sql语句进行解析处理,解析成语法树,并进行跨域子查询处理,形成相应的临时表,利用临时表消除原Sql中的跨域子查询,得到原生sql语句;跨库查询Sql执行模块,被配置为执行得到的原生sql语句,得到查询结果。一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行所述的一种数据库归档模式下跨库查询方法的步骤。一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行所述的一种数据库归档模式下跨库查询方法的步骤。与现有技术相比,本公开的有益效果为:本公开能够打破生产库和多个归档数据库的不同实例限制,通过sql相互连通进行查询。附图说明构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。图1是数据库归档模式下跨库查询系统结构示意图;图2是跨库查询Sql处理模块的流程示意图。具体实施方式:下面结合附图与实施例对本公开作进一步说明。应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属
的普通技术人员通常理解的相同含义。需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。如图1所示,本专利技术提供一种数据库归档模式下跨库查询方法,本实施例包括以下步骤:步骤101,跨库查询预处理模块自定义跨域子查询语法。数据库归档模式下,生产库中存在归档表和非归档表,而归档数据库中只存在归档表。为了满足同时对归档表和非归档表进行查询的业务需求、实现跨生产库与归档数据库查询,需要划定逻辑数据库区域,其中生产库和多个归档数据库中所有归档表组成归档域,生产库中所有非归档表组成非归档域;通过在主查询sql语句中加入自定义跨域子查询语句来同时访问归档域和非归档域实现跨库查询。跨域子查询语法包括:First跨域子查询和Medial跨域子查询;两者的区别为编译执行方式不同,其中First跨域子查询适用于数据量相对较小的跨域子查询,Medial跨域子查询适用于数据量相对较大的跨域子查询。步骤102,跨库查询Sql处理模块对使用跨域子查询语法编写的sql语句进行解析处理,得到原生sql语句;跨库查询Sql处理模块的流程示意图,如图2,包括以下步骤:步骤1021:sql解析成语法树,判断语法正确性。如果sql语法不正确则直接结束,否则转向1022步骤进行处理。步骤1022:跨域子查询预处理。具体为,对所有First跨域子查询和Medial跨域子查询,判断数据是否进行过归档,从而确定跨域子查询是否需要在归档数据库中执行;如果数据尚未进行过归档,则直接将该跨域子查询去除跨域子查询语法、转化为只在生产库执行的原生sql。步骤1023:First跨域子查询处理,形成First临时表。具体为,对于所有First跨域子查询,去除包含父查询列的where表达式,之后分别在生产库和归档数据库执行,合并结果形成First临时表。如果存在嵌套的First跨域子查询,先做内层,再做外层。步骤1024:计算Medial跨域子查询中涉及到的主查询列的取值,形成Bridge临时表。具体为,取所有Medial跨域子查询中涉及到的主查询相关列作为主查询的列,组织成新sql在生本文档来自技高网
...

【技术保护点】
1.一种数据库归档模式下跨库查询方法,其特征是:包括以下步骤:/n划定逻辑数据库区域,划分归档域和非归档域,定义跨域子查询语法;/n对基于跨域子查询语法的sql语句进行解析处理,解析成语法树,并进行跨域子查询处理,形成相应的临时表,利用临时表消除原Sql中的跨域子查询,得到原生sql语句,执行原生sql语句并得到查询结果。/n

【技术特征摘要】
1.一种数据库归档模式下跨库查询方法,其特征是:包括以下步骤:
划定逻辑数据库区域,划分归档域和非归档域,定义跨域子查询语法;
对基于跨域子查询语法的sql语句进行解析处理,解析成语法树,并进行跨域子查询处理,形成相应的临时表,利用临时表消除原Sql中的跨域子查询,得到原生sql语句,执行原生sql语句并得到查询结果。


2.如权利要求1所述的一种数据库归档模式下跨库查询方法,其特征是:所述划定逻辑数据库区域,其中生产库和多个归档数据库中所有归档表组成归档域,生产库中所有非归档表组成非归档域;通过在主查询sql语句中加入自定义跨域子查询语句来同时访问归档域和非归档域实现跨库查询。


3.如权利要求1所述的一种数据库归档模式下跨库查询方法,其特征是:所述sql解析成语法树,判断语法正确性,如果sql语法不正确则直接结束,否则进行跨域子查询预处理。


4.如权利要求1所述的一种数据库归档模式下跨库查询方法,其特征是:跨域子查询预处理的过程包括对所有First跨域子查询和Medial跨域子查询,判断数据是否进行过归档,从而确定跨域子查询是否需要在归档数据库中执行;如果数据尚未进行过归档,则直接将该跨域子查询去除跨域子查询语法、转化为只在生产库执行的原生sql。


5.如权利要求1所述的一种数据库归档模式下跨库查询方法,其特征是:对于所有First跨域子查询,去除包含父查询列的where表达式,之后分别在生产库和归档数据库执行,合并结果形成First临时表,如果存在嵌套的First跨域子查询,先做内层,再做外层。


6.如权利...

【专利技术属性】
技术研发人员:赵永光朱晓洪钱进宋喆于秋波闫中敏孟子成
申请(专利权)人:山大地纬软件股份有限公司
类型:发明
国别省市:山东;37

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

1