CN116303581A - 异构数据库间分流查询负载适配方法、系统、设备及介质 - Google Patents
异构数据库间分流查询负载适配方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN116303581A CN116303581A CN202310564559.6A CN202310564559A CN116303581A CN 116303581 A CN116303581 A CN 116303581A CN 202310564559 A CN202310564559 A CN 202310564559A CN 116303581 A CN116303581 A CN 116303581A
- Authority
- CN
- China
- Prior art keywords
- query
- field
- request
- sql
- processing
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 65
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000005192 partition Methods 0.000 claims description 21
- 238000013507 mapping Methods 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000001914 filtration Methods 0.000 claims description 12
- 230000006978 adaptation Effects 0.000 claims description 9
- 230000002776 aggregation Effects 0.000 claims description 8
- 238000004220 aggregation Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008901 benefit Effects 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000005012 migration Effects 0.000 abstract description 5
- 238000013508 migration Methods 0.000 abstract description 5
- 230000009466 transformation Effects 0.000 abstract description 5
- 238000011161 development Methods 0.000 abstract description 3
- 101100328884 Caenorhabditis elegans sqt-3 gene Proteins 0.000 description 12
- 101100114365 Caenorhabditis elegans col-8 gene Proteins 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 5
- 101100328895 Caenorhabditis elegans rol-8 gene Proteins 0.000 description 5
- 101100114362 Caenorhabditis elegans col-7 gene Proteins 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000000779 smoke Substances 0.000 description 2
- 241000208125 Nicotiana Species 0.000 description 1
- 235000002637 Nicotiana tabacum Nutrition 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 229920001971 elastomer Polymers 0.000 description 1
- 239000000806 elastomer Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
- G06F16/24522—Translation of natural language queries to structured queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了异构数据库间分流查询负载适配方法、系统、设备及介质,属于大数据技术领域,本发明要解决的技术问题为如何实现大数据平台分析库数据查询接口的开发更加便捷,降低迁移改造成本,技术方案为:①该方法具体如下:在查询接口自定义查询分流规则进行查询分流;针对默认查询ES的请求进行ES查询处理:解析分流到ES的查询请求,通过JestHttpClient客户端请求进行ES查询;针对分流至starRocks的查询请求进行SQL查询处理:解析分流至starRocks的查询请求并翻译为SQL,执行SQL查询。②该系统包括分流规则定义及解析处理模块、ES查询处理模块及starRocks的SQL生成模块。
Description
技术领域
本发明涉及大数据技术领域,具体地说是一种异构数据库间分流查询负载适配方法、系统、设备及介质。
背景技术
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Elasticsearch(ES)采用JSON形式的查询请求,而starRocks支持MySQL协议,采用SQL进行查询,由于业务以及技术架构的变化,需要starRocks分流一部分本来在ES上的查询负载,采用传统方法势必需要对业务代码进行较大的修改,需要投入较多的时间和人力。
故如何实现大数据平台分析库数据查询接口的开发更加便捷,降低迁移改造成本及工作量是目前亟待解决的技术问题。
发明内容
本发明的技术任务是提供一种异构数据库间分流查询负载适配方法、系统、设备及介质,来解决如何实现大数据平台分析库数据查询接口的开发更加便捷,降低迁移改造成本及工作量的问题。
本发明的技术任务是按以下方式实现的,一种异构数据库间分流查询负载适配方法,该方法具体如下:
在查询接口自定义查询分流规则进行查询分流;
针对默认查询ES的请求进行ES查询处理:解析分流到ES的查询请求,通过JestHttpClient客户端请求进行ES查询;
针对分流至starRocks的查询请求进行SQL查询处理:解析分流至starRocks的查询请求并翻译为SQL,执行SQL查询。
作为优选,查询分流规则采用的模式串为:
“TABLE1:PART_COL1,1,0,4:#extdb|TABLE2:PART_COL2,1,0,4|TABLE3:PART_COL3,1,0,4:#extdb”;
其中,模式串定义了TABLE1、TABLE2、TABLE3共三个表的分流规则,相邻两分流规则之间以符号“|”作为分隔符;
以TABLE1的分流规则“TABLE1:PART_COL1,1,0,4:#extdb”为例说明:使用“:”为分隔符将TABLE1的分流规则分为三部分,第一部分的”TABLE1”表示查询请求中要查询的表名;第二部分“PART_COL1,1,0,4”用于指定表的分区字段以及分区字段的截取规则,其中“PART_COL1”为分区字段,“1”代表开启分区字段截取,“0,4”表示截取分区字段的前4位,即日期分区字段的年份,以第二部分为依据提取请求中的分区字段,并进行截取,解析后的信息作为ES中业务表的不同年份或月份分表的查询选择依据;第三部分的“#extdb”表示将查询TABLE1的查询请求分流至starRocks库;若分流规则无第三部分,则默认查询ES。
更优地,针对默认查询ES的请求进行ES查询处理具体如下:
解析查询请求中的条件,组织ES查询参数;
调用ES的JestHttpClient客户端执行查询;
对查询结果集进行解析,封装接口返回给查询调用方。
更优地,针对分流至starRocks的查询请求进行SQL查询处理具体如下:
由于不指定数据源时,默认查询ES数据源,查询请求中的表名默认为ES的索引名,当指定查询starRocks时,可能存在两数据源表名不同的情况,对此,增加表名映射关系,在对查询请求进行处理时,检索表名映射关系:
若存在请求携带的表,则根据映射关系取出该表在starRocks中的表名,进行后续查询;
若不存在请求携带的表,则按照默认的转换规则进行转换即可,默认转换是指ES的索引名即表名,而starRocks按照“库名.表名”进行查询。
更优地,映射关系的形式如下:
{ TABLE1: "ADSDB.SR_TABLE1", TABLE2: "ADSDB.SR_TABLE2@JSON"};
映射关系中表名之后的“@JSON”表示该表包含JSON类型的字段,一个表最多一个JSON类型字段;当请求中查询字段或过滤字段在表结构中找不到时,即认为该字段系JSON类型字段中的一个KEY成员;
在生成SQL时,对JSON类型字段进行特殊语法处理,具体如下:
CAST(col_JSON->'col_sel' AS string) AS col_sel ;
对JSON类型字段的特殊语法处理是starRocks获取JOSN类型字段的成员的特殊SQL语法;其中,col_JSON为表的JSON类型字段名;col_sel为请求查询或过滤的JSON的成员字段,采用JSON类型字段的优点是当表新增标签或指标的业务字段时,直接在JSON类型字段中增加,而不必做表结构的变更。
更优地,完成表名转换后,依据请求参数进行SQL生成,具体如下:
(1)解析查询请求的各个参数,获取查询的表名,下一步执行步骤(2);
(2)请求中过滤条件处理:是否有坐标条件和赋值位置计算标志(是否有位置和距离计算的信息),根据表名获取表是否含有JSON类型的列信息,并进行SQL的组装,下一步执行步骤(3);
(3)判断查询是否是聚合(query)查询:
①若是非聚合查询,则执行步骤(4);
②若是聚合查询,则执行步骤(7);
(4)进行位置计算处理,下一步执行步骤(5);
(5)字段增查:当任一个字段是排序条件但不是查询字段时,将其加入查询字段,便于外层SQL中进行排序操作,下一步执行步骤(6);
(6)JSON类型字段处理:将不在表结构中的查询字段进行JSON类型字段的特殊语法的替换,下一步执行步骤(9);
(7)对查询结果中聚合查询字段进行处理,即对JSON类型字段处理,替换为ES的返回字段格式,下一步执行步骤(8);
(8)对聚合结果字段进行处理,如查询max(col_a),则结果集中对应列名应为max_col_a,下一步执行步骤(9);
(9)生成合计和明细查询两个SQL(total_SQL及detail_SQL)。
一种异构数据库间分流查询负载适配系统,该系统包括:
分流规则定义及解析处理模块,用于在查询接口自定义查询分流规则进行查询分流;
ES查询处理模块,用于针对默认查询ES的请求进行ES查询处理,即将解析分流到ES的查询请求,通过JestHttpClient客户端请求进行ES查询;
starRocks的SQL生成模块,用于针对分流至starRocks的查询请求进行SQL查询处理,即将解析分流至starRocks的查询请求并翻译为SQL,执行SQL查询。
作为优选,所述ES查询处理模块包括:
条件解析子模块,用于解析查询请求中的条件,组织ES查询参数;
调用子模块,用于调用ES的JestHttpClient客户端执行查询;
结果集解析子模块,用于对查询结果集进行解析,封装接口返回给查询调用方;
所述starRocks的SQL生成模块包括:
参数解析子模块,用于解析查询请求的各个参数,获取查询的表名;
过滤条件处理子模块,用于请求中过滤条件处理,即判断是否有坐标条件和赋值位置计算标志(是否有位置和距离计算的信息),根据表名获取表是否含有JSON类型的列信息,并进行SQL的组装;
判断子模块,用于判断查询是否是聚合(query)查询:
若是非聚合查询,则判断是否有位置计算需求:若有,则进行位置计算的处理,接着进行字段的增查,当任一字段是排序条件但不是查询字段时,将其加入查询字段,便于外层SQL中进行排序操作;JSON类型字段处理将不在表结构中的查询字段进行上文中提到的特殊语法的替换,最终生成合计和明细查询两个SQL;
若是聚合查询,则不存在位置计算的情况,对查询结果中聚合查询字段进行处理,替换为ES的返回字段格式,如查询max(col_a),则结果集中对应列名应为max_col_a,最终生成合计和明细查询两个SQL(total_SQL及detail_SQL)。
一种电子设备,包括:存储器和至少一个处理器;
其中,所述存储器上存储有计算机程序;
所述至少一个处理器执行所述存储器存储的计算机程序,使得所述至少一个处理器执行如上述的异构数据库间分流查询负载的适配方法。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如上述的异构数据库间分流查询负载的适配方法。
本发明的异构数据库间分流查询负载适配方法、系统、设备及介质具有以下优点:
(一)本发明在原有ES处理逻辑基础上加入自定义规则进行查询分流,使得业务应用代码不做修改的情况下,仅通过数据服务侧的配置就可以在表粒度上变更实际查询的数据源;
(二)本发明通过调节各表分流查询的规则,可以灵活调节各数据源的查询负载,为数据库的运维工作提供了便利,提升了数据服务的稳定性,可用性,也为今后大数据平台架构的迭代提供了便利;
(三)本发明在进行Elasticsearch查询处理前,引入自定义查询分流规则,将Elasticsearch的查询请求依据既定规则进行查询分流;
(四)本发明解析查询请求分离出查询参数,并以此为依据生成查询starRocks的业务SQL;
(五)为了使大数据平台分析库数据查询接口的开发更加便捷,降低未来迁移改造成本,本发明在原有ES查询请求的处理逻辑基础上,增加查询请求的自定义规则进行查询分流和SQL生成逻辑,在接收到JSON形式的查询请求后,路由逻辑通过读取自定义配置(业务表的数据源及表名映射关系),灵活地实现查询负载的分流;并根据分流的结果,JSON形式的查询请求会被解析并翻译为ES的查询请求或者starRocks的SQL语句,分别在不同的数据库执行查询;
(六)本发明可以在业务代码不做任何修改的情况下,通过灵活配置,进行Elasticsearch和starRocks查询负载的数据表级切换,同时大幅降低数据库迁移的工作量,为后续大数据平台技术架构迭代降低改造成本。
附图说明
下面结合附图对本发明进一步说明。
附图1为SQL生成的流程示意图。
具体实施方式
参照说明书附图和具体实施例对本发明的异构数据库间分流查询负载适配方法、系统、设备及介质作以下详细地说明。
实施例1:本实施例提供了一种异构数据库间分流查询负载适配方法,该方法具体如下:
S1、在查询接口自定义查询分流规则进行查询分流;
S2、针对默认查询ES的请求进行ES查询处理:解析分流到ES的查询请求,通过JestHttpClient客户端请求进行ES查询;
S3、针对分流至starRocks的查询请求进行SQL查询处理:解析分流至starRocks的查询请求并翻译为SQL,执行SQL查询。
本实施例步骤S1中的查询分流规则采用的模式串为:
“TABLE1:PART_COL1,1,0,4:#extdb|TABLE2:PART_COL2,1,0,4|TABLE3:PART_COL3,1,0,4:#extdb”;
其中,模式串定义了TABLE1、TABLE2、TABLE3共三个表的分流规则,相邻两分流规则之间以符号“|”作为分隔符;
以TABLE1的分流规则“TABLE1:PART_COL1,1,0,4:#extdb”为例说明:使用“:”为分隔符将TABLE1的分流规则分为三部分,第一部分的”TABLE1”表示查询请求中要查询的表名;第二部分“PART_COL1,1,0,4”用于指定表的分区字段以及分区字段的截取规则,其中“PART_COL1”为分区字段,“1”代表开启分区字段截取,“0,4”表示截取分区字段的前4位,即日期分区字段的年份,以第二部分为依据提取请求中的分区字段,并进行截取,解析后的信息作为ES中业务表的不同年份或月份分表的查询选择依据;第三部分的“#extdb”表示将查询TABLE1的查询请求分流至starRocks库;若分流规则无第三部分,则默认查询ES。
本实施例步骤S2中的针对默认查询ES的请求进行ES查询处理具体如下:
S201、解析查询请求中的条件,组织ES查询参数;
S202、调用ES的JestHttpClient客户端执行查询;
S203、对查询结果集进行解析,封装接口返回给查询调用方。
本实施例步骤S3中的针对分流至starRocks的查询请求进行SQL查询处理具体如下:
由于不指定数据源时,默认查询ES数据源,查询请求中的表名默认为ES的索引名,当指定查询starRocks时,可能存在两数据源表名不同的情况,对此,增加表名映射关系,在对查询请求进行处理时,检索表名映射关系:
若存在请求携带的表,则根据映射关系取出该表在starRocks中的表名,进行后续查询;
若不存在请求携带的表,则按照默认的转换规则进行转换即可,默认转换是指ES的索引名即表名,而starRocks按照“库名.表名”进行查询。
本实施例中的映射关系的形式如下:
{ TABLE1: "ADSDB.SR_TABLE1", TABLE2: "ADSDB.SR_TABLE2@JSON"};
映射关系中表名之后的“@JSON”表示该表包含JSON类型的字段,一个表最多一个JSON类型字段;当请求中查询字段或过滤字段在表结构中找不到时,即认为该字段系JSON类型字段中的一个KEY成员;
在生成SQL时,对JSON类型字段进行特殊语法处理,具体如下:
CAST(col_JSON->'col_sel' AS string) AS col_sel ;
对JSON类型字段的特殊语法处理是starRocks获取JOSN类型字段的成员的特殊SQL语法;其中,col_JSON为表的JSON类型字段名;col_sel为请求查询或过滤的JSON的成员字段,采用JSON类型字段的优点是当表新增标签或指标的业务字段时,直接在JSON类型字段中增加,而不必做表结构的变更。
如附图1所示,本实施例中,完成表名转换后,依据请求参数进行SQL生成,具体如下:
(1)解析查询请求的各个参数,获取查询的表名,下一步执行步骤(2);
(2)请求中过滤条件处理:是否有坐标条件和赋值位置计算标志(是否有位置和距离计算的信息),根据表名获取表是否含有JSON类型的列信息,并进行SQL的组装,下一步执行步骤(3);
(3)判断查询是否是聚合(query)查询:
①若是非聚合查询,则执行步骤(4);
②若是聚合查询,则执行步骤(7);
(4)进行位置计算处理,下一步执行步骤(5);
(5)字段增查:当任一个字段是排序条件但不是查询字段时,将其加入查询字段,便于外层SQL中进行排序操作,下一步执行步骤(6);
(6)JSON类型字段处理:将不在表结构中的查询字段进行JSON类型字段的特殊语法的替换,下一步执行步骤(9);
(7)对查询结果中聚合查询字段进行处理,即对JSON类型字段处理,替换为ES的返回字段格式,下一步执行步骤(8);
(8)对聚合结果字段进行处理,如查询max(col_a),则结果集中对应列名应为max_col_a,下一步执行步骤(9);
(9)生成合计和明细查询两个SQL(total_SQL及detail_SQL)。
举例说明:
查询请求1:
{"query_size":10,"dis_count_cols":"COL_3","query_type":"agg","index_type":"all","agg_cols":"COL_1","filter_cols":"and:COL_2:eq:12345678,not:COL_1:eq:","from_size":0,"index_name":"table1"}。
依据查询请求1生成总计SQL:
totalSQL为select count(1) total_count from (select 1 from ADSDB.SR_TABLE1 where COL_2 ='12345678' and CAST(tag_ JSON ->'COL_1' AS string) !=''group by CAST(tag_ JSON ->'COL_1' AS string)) a。
依据查询请求1生成明细SQL:
select * from (select CAST(tag_JSON->'COL_1' AS string) AS COL_1,count(distinct COL_3) COL_3_dis_count from ADSDB.SR_TABLE1 COL_2 ='12345678'and CAST(tag_ JSON ->'COL_1' AS string) !='' group by CAST(tag_ JSON ->'COL_1' AS string)) a order by COL_1。
查询请求2:
{"query_size":9999,"query_type":"query","index_type":"all","filter_cols":"and:COL_1:eq:0123456789,and:COL_5:eq:01,and:COL_6:eq:20|30,and:COL_8:eq:已使用客户端|02,and:COL_9:eq:标准店|02,and:COL_4:lk:烟酒,and:TAG_GEO_CUST:geo:36.660|117.026|3000","query_cols":"COL_2,COL_3,COL_4,COL_5,COL_6,COL_7,COL_8","from_size":0,"index_name":"table2"}。
依据查询请求2生成总计SQL:
select count(1) total_count from (select ST_Distance_Sphere(LONGITUDE, LATITUDE,117.026, 36.66) AS DISTANCE from ADSDB.SR_TABLE2 whereCOL_1 ='0123456789' and COL_5 ='01' and COL_6 in ('20','30') and CAST(tag_JSON ->'COL_8' AS string) in ('已使用客户端','02') and COL_9 in ('标准店','02') and COL_4 like '%烟酒%' ) a where DISTANCE<=3000。
依据查询请求2生成明细SQL:
select * from (select ST_Distance_Sphere(LONGITUDE, LATITUDE,117.026, 36.66) AS DISTANCE, COL_2,COL_3,COL_4,COL_5,COL_6, CAST(tag_JSON->'COL_7' AS string) AS COL_7, CAST(tag_JSON->'COL_8' AS string) AS COL_8 fromADSDB.SR_TABLE2 where COL_1 ='0123456789' and COL_5 ='01' and COL_6 in ('20','30') and CAST(tag_JSON->'COL_8' AS string) in ('已使用客户端','02') andCOL_9 in ('标准店','02') and COL_4 like '%烟酒%' ) a where DISTANCE<=3000order by DISTANCE ASC limit 0,9999。
实施例2:本实施例提供了一种异构数据库间分流查询负载适配系统,该系统包括:
分流规则定义及解析处理模块,用于在查询接口自定义查询分流规则进行查询分流;
ES查询处理模块,用于针对默认查询ES的请求进行ES查询处理,即将解析分流到ES的查询请求,通过JestHttpClient客户端请求进行ES查询;
starRocks的SQL生成模块,用于针对分流至starRocks的查询请求进行SQL查询处理,即将解析分流至starRocks的查询请求并翻译为SQL,执行SQL查询。
本实施例中的ES查询处理模块包括:
条件解析子模块,用于解析查询请求中的条件,组织ES查询参数;
调用子模块,用于调用ES的JestHttpClient客户端执行查询;
结果集解析子模块,用于对查询结果集进行解析,封装接口返回给查询调用方;
本实施例中的starRocks的SQL生成模块包括:
参数解析子模块,用于解析查询请求的各个参数,获取查询的表名;
过滤条件处理子模块,用于请求中过滤条件处理,即判断是否有坐标条件和赋值位置计算标志(是否有位置和距离计算的信息),根据表名获取表是否含有JSON类型的列信息,并进行SQL的组装;
判断子模块,用于判断查询是否是聚合(query)查询:
若是非聚合查询,则判断是否有位置计算需求:若有,则进行位置计算的处理,接着进行字段的增查,当任一字段是排序条件但不是查询字段时,将其加入查询字段,便于外层SQL中进行排序操作;JSON类型字段处理将不在表结构中的查询字段进行上文中提到的特殊语法的替换,最终生成合计和明细查询两个SQL;
若是聚合查询,则不存在位置计算的情况,对查询结果中聚合查询字段进行处理,替换为ES的返回字段格式,如查询max(col_a),则结果集中对应列名应为max_col_a,最终生成合计和明细查询两个SQL(total_SQL及detail_SQL)。
实施例3:本实施例还提供了一种电子设备,包括:存储器和处理器;
其中,存储器存储计算机执行指令;
处理器执行所述存储器存储的计算机执行指令,使得处理器执行本发明任一实施例中的异构数据库间分流查询负载的适配方法。
处理器可以是中央处理单元(CPU),还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通过处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可用于储存计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现电子设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器还可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,只能存储卡(SMC),安全数字(SD)卡,闪存卡、至少一个磁盘存储期间、闪存器件、或其他易失性固态存储器件。
实施例4:本发明实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的异构数据库间分流查询负载的适配方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RYM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种异构数据库间分流查询负载适配方法,其特征在于,该方法具体如下:
在查询接口自定义查询分流规则进行查询分流;
针对默认查询ES的请求进行ES查询处理:解析分流到ES的查询请求,通过JestHttpClient客户端请求进行ES查询;
针对分流至starRocks的查询请求进行SQL查询处理:解析分流至starRocks的查询请求并翻译为SQL,执行SQL查询。
2.根据权利要求1所述的异构数据库间分流查询负载适配方法,其特征在于,查询分流规则采用的模式串为:
“TABLE1:PART_COL1,1,0,4:#extdb|TABLE2:PART_COL2,1,0,4|TABLE3:PART_COL3,1,0,4:#extdb”;
其中,模式串定义了TABLE1、TABLE2、TABLE3共三个表的分流规则,相邻两分流规则之间以符号“|”作为分隔符;
以TABLE1的分流规则“TABLE1:PART_COL1,1,0,4:#extdb”为例说明:使用“:”为分隔符将TABLE1的分流规则分为三部分,第一部分的”TABLE1”表示查询请求中要查询的表名;第二部分“PART_COL1,1,0,4”用于指定表的分区字段以及分区字段的截取规则,其中“PART_COL1”为分区字段,“1”代表开启分区字段截取,“0,4”表示截取分区字段的前4位,即日期分区字段的年份,以第二部分为依据提取请求中的分区字段,并进行截取,解析后的信息作为ES中业务表的不同年份或月份分表的查询选择依据;第三部分的“#extdb”表示将查询TABLE1的查询请求分流至starRocks库;若分流规则无第三部分,则默认查询ES。
3.根据权利要求1或2所述的异构数据库间分流查询负载适配方法,其特征在于,针对默认查询ES的请求进行ES查询处理具体如下:
解析查询请求中的条件,组织ES查询参数;
调用ES的JestHttpClient客户端执行查询;
对查询结果集进行解析,封装接口返回给查询调用方。
4.根据权利要求3所述的异构数据库间分流查询负载适配方法,其特征在于,针对分流至starRocks的查询请求进行SQL查询处理具体如下:
增加表名映射关系,在对查询请求进行处理时,检索表名映射关系:
若存在请求携带的表,则根据映射关系取出该表在starRocks中的表名,进行后续查询;
若不存在请求携带的表,则按照默认的转换规则进行转换即可,默认转换是指ES的索引名即表名,而starRocks按照“库名.表名”进行查询。
5.根据权利要求4所述的异构数据库间分流查询负载适配方法,其特征在于,映射关系的形式如下:
{ TABLE1: "ADSDB.SR_TABLE1", TABLE2: "ADSDB.SR_TABLE2@JSON"};
映射关系中表名之后的“@JSON”表示该表包含JSON类型的字段,一个表最多一个JSON类型字段;当请求中查询字段或过滤字段在表结构中找不到时,即认为该字段系JSON类型字段中的一个KEY成员;
在生成SQL时,对JSON类型字段进行特殊语法处理,具体如下:
CAST(col_JSON->'col_sel' AS string) AS col_sel ;
对JSON类型字段的特殊语法处理是starRocks获取JOSN类型字段的成员的特殊SQL语法;其中,col_JSON为表的JSON类型字段名;col_sel为请求查询或过滤的JSON的成员字段,采用JSON类型字段的优点是当表新增标签或指标的业务字段时,直接在JSON类型字段中增加。
6.根据权利要求5所述的异构数据库间分流查询负载适配方法,其特征在于,完成表名转换后,依据请求参数进行SQL生成,具体如下:
(1)解析查询请求的各个参数,获取查询的表名,下一步执行步骤(2);
(2)请求中过滤条件处理:是否有坐标条件和赋值位置计算标志,根据表名获取表是否含有JSON类型的列信息,并进行SQL的组装,下一步执行步骤(3);
(3)判断查询是否是聚合查询:
①若是非聚合查询,则执行步骤(4);
②若是聚合查询,则执行步骤(7);
(4)进行位置计算处理,下一步执行步骤(5);
(5)字段增查:当任一个字段是排序条件但不是查询字段时,将其加入查询字段,便于外层SQL中进行排序操作,下一步执行步骤(6);
(6)JSON类型字段处理:将不在表结构中的查询字段进行JSON类型字段的特殊语法的替换,下一步执行步骤(9);
(7)对查询结果中聚合查询字段进行处理,即对JSON类型字段处理,替换为ES的返回字段格式,下一步执行步骤(8);
(8)对聚合结果字段进行处理,下一步执行步骤(9);
(9)生成合计和明细查询两个SQL。
7.一种异构数据库间分流查询负载适配系统,其特征在于,该系统包括:
分流规则定义及解析处理模块,用于在查询接口自定义查询分流规则进行查询分流;
ES查询处理模块,用于针对默认查询ES的请求进行ES查询处理,即将解析分流到ES的查询请求,通过JestHttpClient客户端请求进行ES查询;
starRocks的SQL生成模块,用于针对分流至starRocks的查询请求进行SQL查询处理,即将解析分流至starRocks的查询请求并翻译为SQL,执行SQL查询。
8.根据权利要求7所述的异构数据库间分流查询负载适配系统,其特征在于,所述ES查询处理模块包括:
条件解析子模块,用于解析查询请求中的条件,组织ES查询参数;
调用子模块,用于调用ES的JestHttpClient客户端执行查询;
结果集解析子模块,用于对查询结果集进行解析,封装接口返回给查询调用方;
所述starRocks的SQL生成模块包括:
参数解析子模块,用于解析查询请求的各个参数,获取查询的表名;
过滤条件处理子模块,用于请求中过滤条件处理,即判断是否有坐标条件和赋值位置计算标志,根据表名获取表是否含有JSON类型的列信息,并进行SQL的组装;
判断子模块,用于判断查询是否是聚合查询:
若是非聚合查询,则判断是否有位置计算需求:若有,则进行位置计算的处理,接着进行字段的增查,当任一字段是排序条件但不是查询字段时,将其加入查询字段,便于外层SQL中进行排序操作;JSON类型字段处理将不在表结构中的查询字段进行上文中提到的特殊语法的替换,最终生成合计和明细查询两个SQL;
若是聚合查询,则不存在位置计算的情况,对查询结果中聚合查询字段进行处理,替换为ES的返回字段格式,最终生成合计和明细查询两个SQL。
9.一种电子设备,其特征在于,包括:存储器和至少一个处理器;
其中,所述存储器上存储有计算机程序;
所述至少一个处理器执行所述存储器存储的计算机程序,使得所述至少一个处理器执行如权利要求1至6任一项所述的异构数据库间分流查询负载适配方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序可被处理器执行以实现如权利要求1至6中任一项所述的异构数据库间分流查询负载适配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310564559.6A CN116303581B (zh) | 2023-05-19 | 2023-05-19 | 异构数据库间分流查询负载适配方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310564559.6A CN116303581B (zh) | 2023-05-19 | 2023-05-19 | 异构数据库间分流查询负载适配方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116303581A true CN116303581A (zh) | 2023-06-23 |
CN116303581B CN116303581B (zh) | 2023-08-04 |
Family
ID=86818917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310564559.6A Active CN116303581B (zh) | 2023-05-19 | 2023-05-19 | 异构数据库间分流查询负载适配方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303581B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053975A (zh) * | 2009-10-30 | 2011-05-11 | 国际商业机器公司 | 数据库系统和跨数据库查询优化方法 |
CN102750354A (zh) * | 2012-06-11 | 2012-10-24 | 清华大学 | 一种非结构化数据查询操作语言的解析与处理方法 |
US20180089260A1 (en) * | 2016-09-26 | 2018-03-29 | Illinois Institute Of Technology | Heterogenous string search structures with embedded range search structures |
CN110324333A (zh) * | 2019-06-29 | 2019-10-11 | 北京启迪区块链科技发展有限公司 | 一种数据处理方法、装置、终端及存储介质 |
US20210390103A1 (en) * | 2020-06-15 | 2021-12-16 | Blue Light LLC | Federated search of heterogeneous data sources |
CN113810466A (zh) * | 2021-08-12 | 2021-12-17 | 北京科东电力控制系统有限责任公司 | 用于多源异构数据的中间件、应用该中间件的系统和方法 |
CN114064684A (zh) * | 2021-10-13 | 2022-02-18 | 中国电子科技集团公司第十五研究所 | 一种异构数据源的统一访问方法 |
-
2023
- 2023-05-19 CN CN202310564559.6A patent/CN116303581B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053975A (zh) * | 2009-10-30 | 2011-05-11 | 国际商业机器公司 | 数据库系统和跨数据库查询优化方法 |
CN102750354A (zh) * | 2012-06-11 | 2012-10-24 | 清华大学 | 一种非结构化数据查询操作语言的解析与处理方法 |
US20180089260A1 (en) * | 2016-09-26 | 2018-03-29 | Illinois Institute Of Technology | Heterogenous string search structures with embedded range search structures |
CN110324333A (zh) * | 2019-06-29 | 2019-10-11 | 北京启迪区块链科技发展有限公司 | 一种数据处理方法、装置、终端及存储介质 |
US20210390103A1 (en) * | 2020-06-15 | 2021-12-16 | Blue Light LLC | Federated search of heterogeneous data sources |
CN113810466A (zh) * | 2021-08-12 | 2021-12-17 | 北京科东电力控制系统有限责任公司 | 用于多源异构数据的中间件、应用该中间件的系统和方法 |
CN114064684A (zh) * | 2021-10-13 | 2022-02-18 | 中国电子科技集团公司第十五研究所 | 一种异构数据源的统一访问方法 |
Non-Patent Citations (2)
Title |
---|
RAJESWARI V ET AL: "Heterogeneous Database Integration for Web Application", 《INTERNATIONAL JOURNAL ON COMPUTER SCIENCE AND ENGINEERING》, pages 227 - 234 * |
胡继磊: "基于Web服务封装的异构数据库集成与同步设计", 《万方学位论文》, pages 1 - 75 * |
Also Published As
Publication number | Publication date |
---|---|
CN116303581B (zh) | 2023-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402988B (zh) | 一种分布式NewSQL数据库系统和半结构化数据查询方法 | |
JP6617117B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
US8700605B1 (en) | Estimating rows returned by recursive queries using fanout | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US20210209098A1 (en) | Converting database language statements between dialects | |
US20100293196A1 (en) | Method and system for analyzing ordered data using pattern matching in a relational database | |
WO2021179722A1 (zh) | Sql语句解析方法、系统、计算机设备和存储介质 | |
US9229961B2 (en) | Database management delete efficiency | |
US9930113B2 (en) | Data retrieval via a telecommunication network | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN114064690A (zh) | 数据处理方法及装置 | |
CN114625732A (zh) | 基于结构化查询语言sql的查询方法和系统 | |
CN110569243B (zh) | 一种数据查询方法、数据查询插件和数据查询服务器 | |
US9514184B2 (en) | Systems and methods for a high speed query infrastructure | |
CN113268500B (zh) | 业务处理方法、装置及电子设备 | |
CN113704300B (zh) | 供数据检索方法使用的数据印记技术 | |
CN111198898B (zh) | 大数据查询方法及大数据查询装置 | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
US20230153455A1 (en) | Query-based database redaction | |
CN116795859A (zh) | 数据分析方法、装置、计算机设备和存储介质 | |
WO2023086322A1 (en) | Late materialization of queried data in database cache | |
US7689542B2 (en) | Dynamic return type generation in a database system | |
CN116303581B (zh) | 异构数据库间分流查询负载适配方法、系统、设备及介质 | |
CN112463814A (zh) | 一种数据查询方法及装置 | |
US7512599B2 (en) | Query duration types |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: No. 527 Dongyue Street, Tai'an Tourism and Economic Development Zone, Tai'an City, Shandong Province, 271000 Patentee after: Shandong Inspur Digital Business Technology Co.,Ltd. Address before: 250000 Langchao Science Park, No. 1036, Langchao Road, high tech Zone, Jinan, Shandong Patentee before: Shandong Inspur Digital Business Technology Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |