CN112650915A - 一种基于实时查询的数据交互方法及装置 - Google Patents
一种基于实时查询的数据交互方法及装置 Download PDFInfo
- Publication number
- CN112650915A CN112650915A CN202011375913.3A CN202011375913A CN112650915A CN 112650915 A CN112650915 A CN 112650915A CN 202011375913 A CN202011375913 A CN 202011375913A CN 112650915 A CN112650915 A CN 112650915A
- Authority
- CN
- China
- Prior art keywords
- query
- long
- short
- database
- request
- 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
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9532—Query formulation
-
- 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/242—Query formulation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于实时查询的数据交互方法及装置,包括:解析接收的客户端数据查询请求,判断所述客户端数据查询请求为长查询或短查询;若为长查询,则依据生成的查询记录对数据库进行查询,并将长查询结果存储至分布式文件***中;若为短查询,则通过转换得到的***sql语句对数据库进行查询,得到短查询结果;将获取的长查询结果或短查询结果返回至客户端。本发明支持短查询和长查询两种不同的请求方式,可以根据业务的紧急程度做不同速度的处理;短查询可以跳过中间***直接访问数据源并返回结果数据,以达到更快的速度;长查询的结果以较小单位依次返回给请求方达到更高的时效性。
Description
技术领域
本发明属于计算机网络领域,尤其涉及一种基于实时查询的数据交互方法及装置。
背景技术
随着当前信息时代的数据量越来越多,信息量越来越庞大,各企业中以及其他业务对象中的信息***愈发繁杂,相互之间的信息交互也变得更加繁琐与困难,因此更容易造成数据的延迟,导致某些重要请求无法以所需的速度到达,从而影响重要业务的时效性与准确性。
通常所见的数据交换往往是由一种统一的访问方式处理所有接到的请求,即接收各请求后,处理所有请求并一次性返回所有结果。
因此,现有数据交换技术在高并发期时往往会达到***的设计瓶颈,例如遇到优先级较高的请求需要尽快返回结果时,可能会出现该请求延迟反应的情况,严重影响到了此请求所要求的时效,从而不能达到业务端所需求的速度。
发明内容
为解决上述问题,本发明提出一种基于实时查询的数据交互方法及装置,通过用户控制请求方式达到与后台交互,最终产生不同的处理速度与处理方式。
为实现上述目的,本发明技术解决方案包括:
一种基于实时查询的数据交互方法,其步骤包括:
1)解析接收的客户端数据查询请求,判断所述客户端数据查询请求为长查询或短查询;
2)若为长查询,则依据生成的查询记录对数据库进行查询,并将长查询结果存储至分布式文件***中;若为短查询,则通过转换得到的***sql语句对数据库进行查询,得到短查询结果;
3)将获取的长查询结果或短查询结果返回至客户端。
进一步地,客户端发送客户端数据查询请求的方法包括:post方法。
进一步地,所述客户端数据查询请求包括:用户id、原始sql语句、长短查询标识、请求唯一标识。
进一步地,通过长短查询标识,判断所述客户端数据查询请求为长查询或短查询。
进一步地,通过以下步骤生成查询记录:
1)将原始sql语句转换为***sql语句及***sql语句中各字段与输出时外部字段的映射关系;
2)依据长短查询标识和当前时间戳生成的任务id;
3)根据任务id和用户id,将获取的数据库配置信息、消息队列ip、消息队列的队列名、分布式文件***ip、分布式文件***中存储的绝对路径、元数据服务的url、启动docker任务所需的容器名和启动docker任务所需的任务名封装,得到封装后的数据;
4)通过http协议对封装后的数据编码,得到查询记录。
进一步地,所述数据库配置信息包括:数据库ip、数据库库名、登入数据库的用户名和登入数据库的密码。
进一步地,依据生成的查询记录,通过以下步骤对数据库进行查询:
1)通过http协议对查询记录解码,得到封装后的数据;
2)依据启动docker任务所需的容器名和启动docker任务所需的任务名,启动一个docker实例,并将***sql语句、元数据服务的url、分布式文件***ip和分布式文件***中存储的绝对路径传至该docker实例;
3)根据数据库配置信息,使用docker实例中的***sql语句对数据库进行查询。
进一步地,所述分布式文件***包括:龙存。
进一步地,将接收客户端数据查询请求到返回长查询结果或短查询结果之间的用时,返回客户端。
一种基于实时查询的数据交互装置,包括:
接口模块,用以接收客户端数据查询请求;将长查询结果或短查询结果返回至客户端;
服务代理模块,用以判断所述客户端数据查询请求为长查询或短查询;若为长查询,则生成查询记录;若为短查询,则转换得到的***sql语句;
任务执行模块,用以若为长查询,则依据生成的查询记录对数据库进行查询,并将长查询结果存储至分布式文件***中;若为短查询,则通过转换得到的***sql语句对数据库进行查询,得到短查询结果。
与现有技术相比,本发明具有如下优势:
1、本发明支持短查询和长查询两种不同的请求方式,可以根据业务的紧急程度做不同速度的处理;
2、短查询可以跳过中间***直接访问数据源并返回结果数据,以达到更快的速度;
3、长查询的结果以较小单位依次返回给请求方达到更高的时效性。
附图说明
图1为本发明方法的数据流程图。
具体实施方式
以下结合具体实施例和附图对本发明进行详细说明。
本发明的基于实时查询的数据交互方法采用两种不同回传速度的请求方式,达到不同重要性或优先级请求可以分别处理的要求,即长查询和短查询方式。在处理具有较高优先级的请求时,短查询能够更加快速、高效的返回所需要的数据,不会造成紧急请求产生较大的延迟,而长查询可以适用于平时的业务请求,并能在返回时分割处理结果,分批返回给请求方,达到更加高效的方式。因此本技术能够更好的面对不同业务场景和业务需求。
方案共分为3个过程:接收请求、根据请求参数不同做不同效率的处理、返回结果。
1、接受请求
发送短查询请求或长查询请求,由数据交换***的接口服务端接收到请求,交由数据交换***处理此请求。
2、处理请求
请求共分为两种:长查询和短查询。
a)处理长查询:解析请求、验证请求正确性、生成查询记录、启动查询子***执行查询操作并产生结果。
b)处理短查询:解析请求、验证请求正确性、查询数据源产生查询结果。
3、返回结果
结果数据分成等份大小的子结果集分批返回给请求方。
下述为本发明的一实施例的测试过程:
1、测试说明:
a)本发明的测试均采用相同环境、相同配置的服务器,具体配置如下:
Cpu:24Intel(R)Xeon(R)cpu e5-2630 [email protected]
内存:128g
网卡:千兆网卡
磁盘:5T
b)本次测试采用的数据源由一百万条模拟数据组成,模拟的查询请求将会产生一千条左右的数据结果集。
c)开启数据交换***。
2、测试用例
实例1长查询测试
1)模拟用户的多条post请求经过http协议编码,发送到数据交换***中。
2)用户发送的请求到达数据交换***的接口模块后,经过http解码,获取到请求中的uid(用户id)、content(sql语句)、scopeEnum(长短查询标识)、uniq_key(请求唯一标识),并将字段封装为DataProxyRequest对象,通过http协议编码,发送到数据交换***的服务代理模块。
3)接口模块的请求到达服务代理模块后,经过http解码,获取到封装为DataProxyRequest的对象,对象包括uid(用户id)、sql(原始sql语句)、scopeEnum(长短查询标识)、uniq_key(请求唯一标识)。根据scopeEnum的值将请求判断为长查询或短查询:如果值为3,则为长查询;如果值为6,则为短查询,此次测试scopeEnum的值均为3;根据sql解析服务将原始sql转换为***内使用的字段的sql以及***内字段与输出时外部的字段的映射关系columnMap。服务代理模块依据scopeEnum和当前时间戳生成唯一任务id为taskId,从服务代理模块的配置文件中获取数据库的ip为dbHosts、登入数据库的用户名dbUser和密码dbPwd、数据库的库名dbName等数据库的配置信息以及消息队列的ip为namesrv、用于统计的队列名为topic、龙存的ip为storeHosts、龙存中存储的绝对路径storePath、元数据服务的url为metaUrl、用于启动docker任务所需的k8s容器名k8sNameSpace和任务名k8sPodName。将上述所有字段封装为DockerPrams对象,通过http协议编码,发送到任务执行模块。同时将任务记录写入元数据服务中并向接口服务返回taskId。
4)服务代理模块的请求到达任务执行模块后,通过http解码,获取到封装为DockerPrams的对象。通过对象中的k8sNameSpace、k8sPodName等配置,启动一个docker实例,并将sql、元数据服务的url、龙存的ip和存储的绝对路径传至docker实例中。
5)Docker实例被创建后,通过任务执行模块传至的sql对数据库进行查询,获取查询到的结果数据,将数据放至分布式文件***(龙存)中,并更新元数据服务中的任务状态为“完成”。
6)接口服务通过服务代理模块返回的taskId查询元数据服务,等待至任务状态为“完成”,则在对应的龙存路径中读取结果文件数据,返回给用户。
7)通过程序日志获取每个请求从数据交换***的接口模块收到请求的时间到返回给用户的用时。
实例2短查询测试
1)模拟用户的多条post请求经过http协议编码,发送到数据交换***中。
2)用户发送的请求到达数据交换***的接口模块后,经过http解码,获取到请求中的uid(用户id)、content(sql语句)、scopeEnum(长短查询标识)、uniq_key(请求唯一标识),并将字段封装为DataProxyRequest对象,通过http协议编码,发送到数据交换***的服务代理模块。
3)接口模块的请求到达服务代理模块后,经过http解码,获取到封装为DataProxyRequest的对象,对象包括uid(用户id)、sql(原始sql语句)、scopeEnum(长短查询标识)、uniq_key(请求唯一标识)。根据scopeEnum的值将请求判断为长查询或短查询:如果值为3,则为长查询;如果值为6,则为短查询,此次测试scopeEnum的值均为6;根据sql解析服务将原始sql转换为***内使用的字段的sql,使用转换后的sql对数据库进行查询,获取结果数据集results,将results通过http编码后返回至接口模块。
4)接口模块接收到结果数据集通过http协议返回给用户。
5)通过程序日志获取每个请求从数据交换***的接口模块收到请求的时间到返回给用户的用时。
实例3混合查询测试
1)模拟用户的多条post请求经过http协议编码,发送到数据交换***中。
2)用户发送的请求到达数据交换***的接口模块后,经过http解码,获取到请求中的uid(用户id)、content(sql语句)、scopeEnum(长短查询标识)、uniq_key(请求唯一标识),并将字段封装为DataProxyRequest对象,通过http协议编码,发送到数据交换***的服务代理模块。
3)接口模块的请求到达服务代理模块后,经过http解码,获取到封装为DataProxyRequest的对象,对象包括uid(用户id)、sql(原始sql语句)、scopeEnum(长短查询标识)、uniq_key(请求唯一标识)。根据scopeEnum的值将请求判断为长查询或短查询:如果值为3,则为长查询;如果值为6,则为短查询,此次测试scopeEnum的值为个数不等的3或6;根据scopeEnum的值分别执行上述的长查询和短查询测试流程。
4)通过程序日志获取每个请求从数据交换***的接口模块收到请求的时间到返回给用户的用时。
3、测试数据:
分别测试一千次三种测试用例,得出每种用例单次请求的平均耗时:
长查询:2.4s/次
短查询:0.28s/次
混合查询中的长查询:2.2s/次
混合查询中的短查询:0.28s/次
4、测试结论:
a)长、短查询均可正确返回所需查询的结果。
b)去除时间有明显异常的用例,取剩余每个查询用例中每次查询所用时间的平均值,
通过比对观察到短查询所花费时间明显小于长查询时间,符合本发明设计预期。
本次涉及的数据交换***包括接口模块、服务代理模块、任务执行模块、docker查询实例、龙存存储、元数据服务、sql解析服务和鉴权服务。其中,接口模块负责将用户的请求接收,字段映射为内部使用字段,发送至服务代理模块;服务代理模块负责接收接口模块的请求,并通过sql解析服务和鉴权服务后,生成任务查询时所需字段,通过http协议发送至任务执行模块;任务执行模块负责通过http接收服务模块的请求,创建docker实例进行查询;docker查询实例是启动于k8s容器中,通过查询外部数据库对数据进行查询,并将产生的结果数据放入龙存的基本查询单元;龙存负责存储docker实例产生的结果;元数据服务负责将各个模块产生的任务状态更新至元数据库中;sql解析服务负责将用户发送的sql解析为本***内部使用的sql;鉴权服务负责验证用户是否有权限使用本***的查询服务。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (10)
1.一种基于实时查询的数据交互方法,其步骤包括:
1)解析接收的客户端数据查询请求,判断所述客户端数据查询请求为长查询或短查询;
2)若为长查询,则依据生成的查询记录对数据库进行查询,并将长查询结果存储至分布式文件***中;若为短查询,则通过转换得到的***sql语句对数据库进行查询,得到短查询结果;
3)将获取的长查询结果或短查询结果返回至客户端。
2.如权利要求1所述的方法,其特征在于,客户端发送客户端数据查询请求的方法包括:post方法。
3.如权利要求1所述的方法,其特征在于,所述客户端数据查询请求包括:用户id、原始sql语句、长短查询标识、请求唯一标识。
4.如权利要求3所述的方法,其特征在于,通过长短查询标识,判断所述客户端数据查询请求为长查询或短查询。
5.如权利要求3所述的方法,其特征在于,通过以下步骤生成查询记录:
1)将原始sql语句转换为***sql语句及***sql语句中各字段与输出时外部字段的映射关系;
2)依据长短查询标识和当前时间戳生成的任务id;
3)根据任务id和用户id,将获取的数据库配置信息、消息队列ip、消息队列的队列名、分布式文件***ip、分布式文件***中存储的绝对路径、元数据服务的url、启动docker任务所需的容器名和启动docker任务所需的任务名封装,得到封装后的数据;
4)通过http协议对封装后的数据编码,得到查询记录。
6.如权利要求5所述的方法,其特征在于,所述数据库配置信息包括:数据库ip、数据库库名、登入数据库的用户名和登入数据库的密码。
7.如权利要求5所述的方法,其特征在于,依据生成的查询记录,通过以下步骤对数据库进行查询:
1)通过http协议对查询记录解码,得到封装后的数据;
2)依据启动docker任务所需的容器名和启动docker任务所需的任务名,启动一个docker实例,并将***sql语句、元数据服务的url、分布式文件***ip和分布式文件***中存储的绝对路径传至该docker实例;
3)根据数据库配置信息,使用docker实例中的***sql语句对数据库进行查询。
8.如权利要求1所述的方法,其特征在于,所述分布式文件***包括:龙存。
9.如权利要求1所述的方法,其特征在于,将接收客户端数据查询请求到返回长查询结果或短查询结果之间的用时,返回客户端。
10.一种基于实时查询的数据交互装置,包括:
接口模块,用以接收客户端数据查询请求;将长查询结果或短查询结果返回至客户端;
服务代理模块,用以判断所述客户端数据查询请求为长查询或短查询;若为长查询,则生成查询记录;若为短查询,则转换得到的***sql语句;
任务执行模块,用以若为长查询,则依据生成的查询记录对数据库进行查询,并将长查询结果存储至分布式文件***中;若为短查询,则通过转换得到的***sql语句对数据库进行查询,得到短查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011375913.3A CN112650915B (zh) | 2020-11-30 | 2020-11-30 | 一种基于实时查询的数据交互方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011375913.3A CN112650915B (zh) | 2020-11-30 | 2020-11-30 | 一种基于实时查询的数据交互方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650915A true CN112650915A (zh) | 2021-04-13 |
CN112650915B CN112650915B (zh) | 2023-03-10 |
Family
ID=75349817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011375913.3A Active CN112650915B (zh) | 2020-11-30 | 2020-11-30 | 一种基于实时查询的数据交互方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650915B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279849A (zh) * | 2010-06-09 | 2011-12-14 | 中兴通讯股份有限公司 | 一种大数据查询的方法及*** |
US20130073538A1 (en) * | 2011-09-15 | 2013-03-21 | Oracle International Corporation | Query explain plan in a distributed data management system |
CN107301205A (zh) * | 2017-06-01 | 2017-10-27 | 华南理工大学 | 一种大数据分布式实时查询方法及*** |
CN107480268A (zh) * | 2017-08-17 | 2017-12-15 | 北京奇虎科技有限公司 | 数据查询方法及装置 |
CN107766381A (zh) * | 2016-08-22 | 2018-03-06 | 北京京东尚科信息技术有限公司 | 数据查询方法、***及电子设备 |
-
2020
- 2020-11-30 CN CN202011375913.3A patent/CN112650915B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279849A (zh) * | 2010-06-09 | 2011-12-14 | 中兴通讯股份有限公司 | 一种大数据查询的方法及*** |
US20130073538A1 (en) * | 2011-09-15 | 2013-03-21 | Oracle International Corporation | Query explain plan in a distributed data management system |
CN107766381A (zh) * | 2016-08-22 | 2018-03-06 | 北京京东尚科信息技术有限公司 | 数据查询方法、***及电子设备 |
CN107301205A (zh) * | 2017-06-01 | 2017-10-27 | 华南理工大学 | 一种大数据分布式实时查询方法及*** |
CN107480268A (zh) * | 2017-08-17 | 2017-12-15 | 北京奇虎科技有限公司 | 数据查询方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112650915B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109344172B (zh) | 一种高并发数据处理方法、装置及客户端服务器 | |
WO2019141134A1 (zh) | 一种数据查询方法、装置及设备 | |
CN109033206B (zh) | 一种规则匹配方法、云服务器及规则匹配*** | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
US11188443B2 (en) | Method, apparatus and system for processing log data | |
US20080065588A1 (en) | Selectively Logging Query Data Based On Cost | |
CN113901078A (zh) | 业务订单关联查询方法、装置、设备及存储介质 | |
CN112765117A (zh) | 基于微服务架构的工业互联网标识解析*** | |
CN112632129A (zh) | 一种码流数据管理方法、装置及存储介质 | |
CN110019444B (zh) | 一种操作请求处理方法、装置、设备及*** | |
CN112835930A (zh) | 一种数据库的查询方法及设备 | |
CN112035405A (zh) | 一种文档转码方法、装置、调度服务器和存储介质 | |
CN109388651B (zh) | 一种数据处理方法和装置 | |
CN112650915B (zh) | 一种基于实时查询的数据交互方法及装置 | |
CN112637130A (zh) | 一种基于消费队列的数据交换方法及*** | |
CN111209263A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN114793244B (zh) | 一种区块链的资源处理方法、装置、设备和介质 | |
CN116186082A (zh) | 基于分布式的数据汇总方法、第一服务器和电子设备 | |
CN113742364B (zh) | 数据访问方法、装置、电子设备、存储介质及程序产品 | |
CN112650767B (zh) | 一种数据过滤前置的数据交换方法及*** | |
CN113742359A (zh) | 一种即席查询方法、装置、电子设备及存储介质 | |
KR101648707B1 (ko) | 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법 | |
CN109101440B (zh) | 一种基于jvm缓存处理追溯数据并发请求的方法 | |
CN113254476B (zh) | 请求的处理方法和装置、电子设备和存储介质 | |
CN116244332A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |