CN116860772A - 数据查询方法、装置、计算机设备和存储介质 - Google Patents
数据查询方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116860772A CN116860772A CN202210310287.2A CN202210310287A CN116860772A CN 116860772 A CN116860772 A CN 116860772A CN 202210310287 A CN202210310287 A CN 202210310287A CN 116860772 A CN116860772 A CN 116860772A
- Authority
- CN
- China
- Prior art keywords
- data
- type
- query
- query statement
- target
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 230000014509 gene expression Effects 0.000 claims abstract description 165
- 238000006243 chemical reaction Methods 0.000 claims abstract description 46
- 238000004590 computer program Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 107
- 230000002776 aggregation Effects 0.000 claims description 39
- 238000004220 aggregation Methods 0.000 claims description 39
- 238000013500 data storage Methods 0.000 claims description 34
- 239000003795 chemical substances by application Substances 0.000 claims description 24
- 238000010276 construction Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 13
- 239000002356 single layer Substances 0.000 claims description 11
- 230000010474 transient expression Effects 0.000 claims description 6
- 230000003044 adaptive effect Effects 0.000 claims description 5
- 230000004931 aggregating effect Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 description 45
- 230000008569 process Effects 0.000 description 26
- 239000010410 layer Substances 0.000 description 23
- 230000006870 function Effects 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 12
- 238000007781 pre-processing Methods 0.000 description 8
- 230000000007 visual effect Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 239000002243 precursor Substances 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000013480 data collection Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000013499 data model Methods 0.000 description 3
- 238000013079 data visualisation Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 229940022409 overtime Drugs 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010195 expression analysis Methods 0.000 description 1
- 238000010230 functional analysis Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/24526—Internal representations for queries
-
- 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/2455—Query execution
-
- 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/248—Presentation of query results
-
- 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)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据查询方法、装置、计算机设备、存储介质和计算机程序产品。方法包括:获取第一类查询语句,确定第一类查询语句所对应的语法表达式和期望数据格式;基于第一类查询语句所查询数据所在的目标数据库,按照语法表达式所表征的数据查询内容,构造与目标数据库相适配的第二类查询语句;执行第二类查询语句,对目标数据库进行数据查询,得到目标数据格式的目标数据,目标数据格式与第二类查询语句相匹配;按照期望数据格式与目标数据格式间的数据转换逻辑,对目标数据进行数据格式转换,得到与第一类查询语句相匹配的查询结果。采用本方法能够实现对目标数据库中所存储数据的便捷准确查询。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据查询方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,数据存储和数据查询在数据监测过程中是非常重要的一环。但由于数据监测系统所需要监测数据的分布范围广且数据量大,数据监测系统自身的数据库无法实现对庞大数据的存储,导致数据监测过程受到限制。
为解决数据存储受限的问题,提出了采用第三方数据库进行数据存储的处理方案,但由第三方数据库提供的数据存储空间,受制于第三方数据库的数据存储方式,监测系统无法实现对第三方数据库中所存储数据的便捷准确查询。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现便捷准确查询的数据查询方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据查询方法。所述方法包括:
获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
第二方面,本申请还提供了一种数据查询装置。所述装置包括:
语句获取模块,用于获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
语句构造模块,用于基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
数据查询模块,用于执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
数据转换模块,用于按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
上述数据查询方法、装置、计算机设备、存储介质和计算机程序产品,通过获取第一类查询语句,确定第一类查询语句所对应的语法表达式和期望数据格式,按照语法表达式所表征的数据查询内容,构造与第一类查询语句所查询数据所在目标数据库相适配的第二类查询语句,实现查询语句的转换,便于进行数据查询,通过执行第二类查询语句,对目标数据库进行数据查询,实现对存储数据的获取,以得到数据格式与第二类查询语句相匹配的目标数据,按照期望数据格式与目标数据格式间的数据转换逻辑,对目标数据进行数据格式转换,以使得查询结果能够与第一类查询语句相匹配,实现了对数据库中所存储数据的便捷准确查询。
附图说明
图1为一个实施例中数据查询方法的应用环境图;
图2为一个实施例中数据查询方法的流程示意图;
图3为一个实施例中查询语句重构的流程示意图;
图4为一个实施例中基于结构化语法树构造语法表达式的流程示意图;
图5为一个实施例中数据查询方法中数据重构和查询的流程示意图;
图6为一个实施例中查询对象与目标数据库的交互示意图;
图7为一个实施例中数据查询系统的结构示意图;
图8为一个实施例中数据查询方法的流程示意图;
图9为一个实施例中目标数据库中数据存储的流程示意图;
图10为另一个实施例中数据查询系统的结构示意图;
图11为一个实施例中数据查询装置的结构框图;
图12为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
本申请实施例提供的数据查询方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。以终端102上运行有可视化显示数据监测结果的监测系统为例,监测系统向服务器104发送与监测系统相适配的第一类查询语句,服务器104获取第一类查询语句,确定第一类查询语句所对应的语法表达式和期望数据格式,基于第一类查询语句所查询数据所在的目标数据库,按照语法表达式所表征的数据查询内容,构造与目标数据库相适配的第二类查询语句;执行第二类查询语句,对目标数据库进行数据查询,得到目标数据格式的目标数据,目标数据格式与第二类查询语句相匹配;按照期望数据格式与目标数据格式间的数据转换逻辑,对目标数据进行数据格式转换,得到与第一类查询语句相匹配的查询结果,并将查询结果反馈至监测系统进行监测结果显示。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一个实施例中,如图2所示,提供了一种数据查询方法,以该方法可以应用于计算机设备,以上述方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,获取第一类查询语句,确定第一类查询语句所对应的语法表达式和期望数据格式。
其中,查询语句是一种数据库查询和程序设计语言,用于对数据库进行数据存放、查询和管理等操作。数据库是按照一定的数据存储规则进行数据存储的数据空间,不同的数据库所对应的数据存储规则可以不同,而不同数据库中数据的查询可以基于具有相应语法的查询语言来实现。例如,数据库A是按照第一类规则进行数据存储的,其可以按照A类查询语句在数据库A中进行数据查询,数据库B是按照第二类规则进行数据存储的,其可以按照B类查询语句在数据库B中进行数据查询。
第一类查询语句的语句类别与发出该查询语句的查询对象相适配,查询对象可以是与用户进行交互的客户端,例如数据查询系统、数据监测系统中的数据查询模块等。第一类查询语句可以是用户通过客户端编辑直接输入的语句,也可以是客户端响应用户所触发的查询操作所生成的语句。
语法表达式是由数字、算符、数字分组符号、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。通过语法表达式可以表征第一类查询语句所需要查询的数据范围,即数据查询内容。具体地,语法表达式可以是函数表达式,其输入为自由变量的定值,而其输出则为调用函数进行数据查找之后所得到的结果。
期望数据格式是与第一类查询语句所具备的数据处理功能相匹配的数据查询结果的数据格式。期望数据格式基于查询语句的类别和功能来确定。例如,A类查询语句具有数据聚合功能,则A类查询语句所对应查询结果的期望数据格式为聚合数据,再例如B类查询语句具有数据统计功能,则A类查询语句所对应查询结果的期望数据格式为统计数据。
具体地,计算机设备将与查询对象相适配的第一类查询语句发送至服务器,服务器对所获取的第一类查询语句进行语法和功能解析,确定第一类查询语句所对应的语法表达式和期望数据格式。其中,语法解析和功能解析可以是同步进行的处理过程,也可以是异步进行的处理过程,两者互不干扰。服务器通过对第一类查询语句进行语法解析,得到第一类查询语句的语法表达式,通过对第一类查询语句进行功能解析,确定第一类查询语句的期望数据格式。进一步地,功能解析可以通过第一类查询语句的语句类别,通过查询语句类别与期望数据格式之间的预设关联关系,来确定第一类查询语句的期望数据格式。
步骤204,基于第一类查询语句所查询数据所在的目标数据库,按照语法表达式所表征的数据查询内容,构造与目标数据库相适配的第二类查询语句。
其中,目标数据库是用于存储第一类查询语句所查询数据的数据库。一个查询语句所查询的数据存储在指定的数据库中,其中,指定数据库可以是单个数据库,也可以是同类别的多个数据库。同类别的数据库支持相同的查询语句进行数据查询。目标数据库可以是列式数据库、时序数据库等类型的数据库中的一种,其中,列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询,如ClickHouse数据库。时序数据库是时间序列数据库的简称,时间序列数据库指主要用于处理带时间标签的数据,各数据按照时间的顺序变化,即时间序列化,带时间标签的数据即为时间序列数据,如TSDB(一种时序数据库名称)、CTSDB(一种时序数据库名称)等时序数据库。
服务器所接收的查询语句或是包括查询语句的查询请求,可以携带有数据库标识,数据库标识用于表征其所查询数据所在的目标数据库。目标数据库可以是获取第一类查询语句的服务器中的数据库,也可以是与获取第一类查询语句的第一服务器进行交互的第二服务器中的数据库。
第二类查询语句是与目标数据库相适配的查询语句,通过第二类查询语句可以实现对目标数据库中所存储数据的查询。需要说明的是,第一类查询语句和第二类查询语句旨在指代不同类别的查询语句,不对具体的查询语句进行限定,在其他实施例中,第一类查询语句和第二类查询语句所指代的查询语句类别可以互换。
具体地,服务器接收查询对象所发起的查询请求,提取查询请求中所携带的数据库标识以及与查询对象相适配的第一类查询语句,基于数据库标识,确定第一类查询语句所查询数据所在的目标数据库,服务器基于与目标数据库相适配的目标查询语句类别,按照第一类查询语句的语法表达式所表征的数据查询内容,构建属于目标查询语句类别的第二类查询语句。
步骤206,执行第二类查询语句,对目标数据库进行数据查询,得到目标数据格式的目标数据,目标数据格式与第二类查询语句相匹配。
其中,目标数据是指从数据库中所获取的数据,目标数据格式是与第二类查询语句相匹配的数据格式,目标数据格式与期望数据格式分别属于不同的数据格式类别,目标数据格式的数据与期望数据格式的数据间可以进行数据格式转换。
具体地,目标数据格式与期望数据格式之间的数据格式转换可以为单向转换,即服务器可以将目标数据格式的数据转换为期望数据格式的数据,但无法将期望数据格式的数据逆向转换为目标数据格式的数据。目标数据格式与期望数据格式之间的数据格式转换可以为双向转换,即服务器可以将目标数据格式的数据转换为期望数据格式的数据,也可以将期望数据格式的数据逆向转换为目标数据格式的数据。
在一个具体的应用中,以获取第一类查询语句的服务器与目标数据库所在的服务器为相同服务器为例,服务器执行第二类查询语句,基于第二类查询语句的语法特点,对目标数据库进行数据查询,得到目标数据格式的目标数据。当第二类查询数据所对应的目标数据格式为原始的存储格式时,服务器执行第二类查询语句,直接从目标数据库中提取出符合第二类查询语句所对应的查询条件的原始数据,即为目标数据。当第二类查询数据所对应的目标数据格式为非原始的存储格式时,服务器执行第二类查询语句,从目标数据库中确定出符合第二类查询语句所对应的查询条件的原始数据,并将原始数据转换为目标数据格式的目标数据。
步骤208,按照期望数据格式与目标数据格式间的数据转换逻辑,对目标数据进行数据格式转换,得到与第一类查询语句相匹配的查询结果。
其中,数据转换逻辑是将目标数据格式的数据转换为期望数据格式的数据的数据处理逻辑。数据转换逻辑可以是预先配置的数据处理逻辑。数据格式转换是指将当前数据格式的数据转换为指定数据格式的数据的处理过程,数据格式转换的具体处理原则可以遵循数据转换逻辑来执行实现。
具体地,服务器在确定第一类查询语句所对应的期望数据格式和第二类查询语句所对应的目标数据格式之后,以目标数据格式为转换前的格式且期望数据格式的转换后的格式为查找目标,从配置数据中查找到期望数据格式与目标数据格式间的数据转换逻辑,服务器将目标数据格式的目标数据,按照数据转换逻辑转换为期望数据格式的数据,即为与第一类查询语句相匹配的查询结果。
上述数据查询方法,通过获取第一类查询语句,确定第一类查询语句所对应的语法表达式和期望数据格式,按照语法表达式所表征的数据查询内容,构造与第一类查询语句所查询数据所在目标数据库相适配的第二类查询语句,实现查询语句的转换,便于进行数据查询,通过执行第二类查询语句,对目标数据库进行数据查询,得到数据格式与第二类查询语句相匹配的目标数据,从而实现对存储数据的获取,按照期望数据格式与目标数据格式间的数据转换逻辑,对目标数据进行数据格式转换,以使得查询结果能够与第一类查询语句相匹配,实现了对数据库中所存储数据的便捷准确查询。
在一个实施例中,获取第一类查询语句,确定第一类查询语句的语法表达式,包括:对获取的第一类查询语句进行语法解析,确定第一类查询语句的语法层级架构;按照语法层级架构,构造第一类查询语句的语法表达式。
其中,语法解析是根据一定的语法规则,分析查询语句的语法结构,并给出查询语句的结构表达的处理过程。语法解析涉及查询语句语法在计算机中的表达与存储方法以及语法解析的算法。语法解析的过程,可以基于查询语句中的表达符号进行层级剥离,从而得到查询语句的语法层级架构。
语法层级架构是对查询语句进行层级剥离后各个层级之间的关联关系,其中,不同层级之间的关联关系可以包括嵌套关系和并列关系。存在嵌套关系的两个层级所对应的数据为上下层级,例如数据库中的文件夹与子文件夹之间的关系即为嵌套关系。存在并列关系的两个层级所对应的数据为同一层级,例如,数据库中属于同一个文件夹中的两个子文件夹之间的关系即为并列关系,再例如,数据表中的不用列数据之间的关系也为并列关系。语法层级架构具体可以通过语法树来表示,也可以通过结构表来表示。
具体地,服务器对获取的第一类查询语句通过层级分离进行语法解析,得到第一类查询语句的语法层级架构以及每一层级的语法结构体,以通过语法层级架构来表达各个层级之间的关系联系,服务器按照各个层级之间的关系联系,将每一层级的语法结构体进行嵌套归集,得到第一类查询语句的语法表达式。
在一个具体的应用中,第一类查询语句输入是一段文本,服务器通过解析该文本,将其转化为一个结构化的语法树对象,进而实现相应的数据计算逻辑,具体地,当第一类查询语句表达的语义为在预设时长范围内对监测系统中并行触发的相同实例的平均触发次数进行统计时,可以将语法元素拆分为三层含义,第一层可以表示统计的监测对象为实例,第二层是统计属性为平均触发次数,第三层是定义监测对象所在的位置和监测时间范围,解析后的各层级内容及其嵌套关系即为第一类查询语句的语法表达式,基于嵌套关系以及各层级含义,可以重组得到具有不同表达方式的第二类查询语句。与第一类查询语句表达的语义相对应,第二类查询语句所表达的语义可以是从指定起始时间戳的时间范围内,对监测系统中的并行触发的实例进行筛选。
在一个具体的应用中,如图3所示,以第一类查询语句的代码语法为sum(avg_over_time(go_goroutines{job=“prometheus”}[5m]))by(instance)为例,其表达的意思是统计prometheus系统中在5分钟内并行触发的实例的次数,上述第一类查询语句可以从外往内分解为三层:第一层为sum(…)by(instance):其表示包含相同的instance会分配到一组;第二层为avg_over_time(…),其表示统计平均触发次数,第三层为go_goroutines{job=“prometheus”}[5m],其表示监测范围为prometheus中的并发进程,统计时间范围是5分钟。构造的第二类查询语句为Select::field form go_goroutines where job="prometheus"and timestamp>t-5m and timestamp<t,其实质是基于第二类查询语句的嵌套关系,对第一类查询语句解析后所得到的各层语法表达内容的进行重组,第二类查询语句实际表达的含义是从时间戳为t-5m至t的时间范围内,对prometheus中的并行触发的实例进行筛选,其与第一类查询语句采用的是不同的查询语句,但所表达的筛选对象是相同的。
在本实施例中,通过对第一类查询语句进行语法解析,确定第一类查询语句的语法层级架构,以通过解析清楚地表达各个层级之间的关系联系,按照语法层级架构,能够实现对第一查询语句进行快速准确地解析,便于实现对查询语句的重构,提高数据处理效率。
在一个实施例中,语法表达式包括瞬时表达式或范围表达式。按照语法层级架构,构造第一类查询语句的语法表达式,包括:按照语法层级架构,将第一类查询语句转换为结构化语法树;当结构化语法树为单层语法树时,确定与第一类查询语句对应的瞬时表达式;当结构化语法树为多层级语法树时,遍历结构化语法树的每一层级,得到与第一类查询语句对应的范围表达式。
其中,结构化语法树是源代码的语法结构的树状表现形式,不同的语言,对应不同的语法分析器,语法分析器是把源代码作为字符串读入、解析,并建立语法树的程序,语法的设计和语法分析器的实现是决定语言外在表现的重要因素。具体地,第一类查询语句的结构化语法树可以是函数调用关系树,每一个节点都是一个函数,其子节点是函数的参数,参数的类型可以是函数本身。
瞬时表达式是指返回值中只会包含该时间序列中的最新的一个样本值的表达式。例如在一组时间序列中,其中的每个时间序列包含单个样本,该组时间序列共享相同的时间戳,即该单个样本对应的时间戳。当结构化语法树为单层语法树时,即结构化语法树没有嵌套的层级结构时,基于该单层语法树的结构体,确定与第一类查询语句对应的瞬时表达式。
范围表达式又称区间表达式,是指返回值中会包含一段时间范围内的样本数据的表达式。当结构化语法树为多层级语法树时,即结构化语法树包括嵌套的层级结构时,基于该多层级语法树的结构体,逐层遍历结构化语法树的每一层级,得到与第一类查询语句对应的范围表达式。
具体地,服务器对获取的第一类查询语句进行语法解析,得到第一类查询语句的语法层级架构和每一层级的语法结构体,其中,语法结构体是按照语句的语法结构进行层级拆分所得到的结果,然后服务器按照语法层级架构归集每一层级的语法结构体,将第一类查询语句转换为结构化语法树,并根据结构化语法树的层级数量,确定第一类查询语句对应的表达式类型以及语法表达式。具体地,当结构化语法树为单层语法树时,服务器基于该单层语法树的结构体,确定与第一类查询语句对应的瞬时表达式;当结构化语法树为时,服务器逐层遍历结构化语法树的每一层级的语法结构体,构造与第一类查询语句对应的范围表达式。
在本实施例中,通过将第一类查询语句转换为结构化语法树,利用结构化语法树的直观表达,按照结构化语法树的层级数量,快速准确地确定第一类查询语句对应的表达式类型以及语法表达式,能够有效减少确定语法表达式的数据处理流程,减少数据处理资源的占用,提高数据处理速度。
在一个实施例中,遍历结构化语法树的每一层级,得到与第一类查询语句对应的范围表达式,包括:针对结构化语法树中每一层级的结构体,确定所针对层级所表征的子表达式;归集每一层级的子表达式,得到与第一类查询语句对应的范围表达式。
其中,子表达式是一个完整表达式的一部分,把一个完整表达式划分为一系列子表达式,可以把每一个子表达式当作一个独立元素来使用,子表达式之间允许多重嵌套。结构体是由一批数据组合而成的结构型数据,组成结构型数据的每个数据称为结构型数据的成员。结构化语法树中每一层级的结构体是按照语法树的语法规则,对按照层级结构对第一类查询语句进行拆分后的结果进行处理后所得到的结果。
具体地,在多层级语法树中,下一层级的结构体是上一层级的结构体的一部分,下一层级的语法结构体所对应的子表达式、与上一层级的语法结构体所对应的子表达式属于嵌套关系。归集每一层级的子表达式,具体可以是对每一层级的子表达式进行嵌套、合并等处理方式中的至少一种处理,从而得到第一类查询语句对应的范围表达式。
在本实施例中,对于多层级语法树,通过分别确定每一层级的子表达式,实现各个层级的数据处理过程的独立进行,能够将表达式的确定过程拆分成多个独立步骤,使得各步骤可以同步进行,有效提高数据处理效率,快速得到多层级语法树所对应的范围表达式。
在一个实施例中,子表达式包括向量表达式或标量表达式。针对结构化语法树的每一层级的结构体,确定所针对层级所表征的子表达式,包括:针对结构化语法树的每一层级的结构体,确定所针对层级的期望数据类型;当期望数据类型为向量数据时,确定所针对层级的向量表达式;当期望数据类型为标量数据时,确定所针对层级的标量表达式。
其中,期望数据类型是指能够获取到的返回结果的数据类型,期望数据类型包括向量数据和标量数据。具体地,向量数据是时间序列数据,目标数据库中的向量数据可以通过向量表达式进行查询得到;标量数据是浮点型的数据值或字符串值。目标数据库中的标量数据可以通过标量表达式进行查询得到。
在一个具体的应用中,基于结构化语法树,得到第一类语法数据的语法表达式的数据处理过程如图4所示,服务器针对结构化语法树,首先基于结构化语法树的层级数量,判断是否为瞬时查询,若结构化语法树是单层语法树,即第一类语法数据为瞬时查询,则直接基于单层语法树,构建瞬时表达式,若结构化语法树是多层级语法树,即第一类语法数据不为瞬时查询,则确定需要构建的表达式为范围表达式,遍历多层级语法树的每一层级,针对每一层级的处理过程包括:基于该层级的结构体确定其期望数据类型为标量数据还是向量数据,若是标量数据,则构建标量子表达式或是浮点子表达式,若是向量数据,则构建向量表达式,当多层级语法树的各层级遍历结束时,得到第一类语法数据对应的范围表达式。
在本实施例中,服务器针对结构化语法树的每一层级的结构体,确定所针对层级的期望数据类型,能够有针对性地按照表达式类型来进行表达式构建,以确保所得到的查询数据的准确性。
在一个实施例中,归集每一层级的子表达式,得到与第一类查询语句对应的范围表达式,包括:归集每一层级的子表达式,确定待查询的数据时间范围和数据标签;按照数据时间范围和数据标签,构造与第一类查询语句对应的范围表达式。
其中,目标数据库中的数据是按照时间戳和值的序列顺序存放的时间序列数据,每条时间序列数据的数据标签包括指标名称和一组标签集。时间序列数据由指标、时间戳和样本值三部分组成,其中数据标签包括指标名称和描述数据特征的标签集。指标名称用于反映数据的含义,具体可以由ASCII字符、数字、下划线以及冒号组成且符合正则表达式。标签集中的每一个标签用于反映数据的特征维度,通过特征维度可以对查询数据进行过滤、聚合等处理。
具体地,服务器通过归集每一层级的子表达式,基于目标数据库中存储数据的数据结构,确定待查询的数据时间范围和数据标签,从而锁定数据库中待查选的数据范围,按照数据时间范围和数据标签,构造与第一类查询语句对应的范围表达式,使得范围表达式与目标数据库中的数据结构相匹配,便于进一步构造与目标数据库相适配的第二类查询语句。
在本实施例中,通过确定待查询的数据时间范围和数据标签来构造第一类查询语句对应的范围表达式,能够使得范围表达式与目标数据库中的数据结构相匹配,以确保构造的第二类查询语句与目标数据库的适配度,提高数据查询结果的准确性。
在一个实施例中,基于第一类查询语句所查询数据所在的目标数据库,按照语法表达式所表征的数据查询内容,构造与目标数据库相适配的第二类查询语句,包括:基于第一类查询语句所查询数据所在的目标数据库,确定与目标数据库相适配的语句类别;按照语句类别所对应的语句构造方式,基于语法表达式所表征的数据时间和数据标签,构造第二类查询语句。
其中,用于对目标数据库进行数据查询的查询语句的类别可以是一种,也可以是两种或两种以上。当用于对目标数据库进行数据查询的查询语句的类别为一种时,与目标数据库相适配的语句类别即为该类别的查询语句,当用于对目标数据库进行数据查询的查询语句的类别为两种或两种以上时,与目标数据库相适配的语句类别,可以是从该两种或两种以上类别的查询语句中,预先确定出唯一的目标类别的查询语句。该目标类别可以是与目标数据库适配度最高的查询语句类别,也可以是查询效率最快的查询语句类别,具体可以根据的实际应用场景进行设定,通过确定查询语句的语句类别,确保所构造的第二类查询语句与目标数据库具有较高的适配度,便于后续针对目标数据库进行数据查询。
语句构造方式与语句类别相对应,不同的语句类别所对应的语句构造方式可能存在差异,通过确定目标数据库相适配的语句类别,使得基于语句类别所对应语句构造方式所构造得到的第二类查询语句,能够在目标数据库中进行数据查询。
具体地,服务器基于第一类查询语句所查询数据所在的目标数据库,基于数据库与查询语句的语句类别的匹配关系,确定与目标数据库相适配的目标语句类别,按照目标语句类别所对应的语句构造方式,基于语法表达式所表征的数据时间和数据标签,构造第二类查询语句,以便基于与目标数据库相适配的第二类查询语句,对目标数据库中的时间序列数据进行数据查询。
在本实施例中,语法表达式所表征的数据时间和数据标签构造第二类查询语句,能够使得第二类查询语句与目标数据库中的数据结构相匹配,提高数据查询结果的准确性。
在一个实施例中,期望数据格式的数据包括聚合数据;目标数据格式的数据包括稀疏数据;按照期望数据格式与目标数据格式间的数据转换逻辑,对目标数据进行数据格式转换,得到与第一类查询语句相匹配的查询结果,包括:按照期望聚合数据的数据类别,将稀疏数据中属于数据类别的进行聚合处理,得到与第一类查询语句相匹配的查询结果。
其中,聚合数据是指对原始数据进行数据聚合处理后所得到的数据,稀疏数据是相对与聚合数据而言的。具体地,稀疏数据可以是从目标数据库中所查询的原始数据,对稀疏数据进行聚合处理所得到的结果即为聚合数据。
具体地,服务器按照期望聚合数据的数据类别,将稀疏数据中属于数据类别的进行聚合处理。当期望聚合数据的数据类别包括两个或两个以上的类别时,针对每一个目标数据类别,将稀疏数据中属于该目标数据类别的稀疏数据分别进行聚合处理,得到多个数据类别的查询结果。
具体地,如图5和图6所示,服务器接收查询对象发送的第一类查询语句,通过计算第一类查询语句所查询数据的步长,当步长满足查询条件时,对第一类查询语句进行表达式解析,得到结构化语法树,然后基于结构化语法树的层级数量,判断是否为瞬时查询,若结构化语法树是单层语法树,即第一类语法数据为瞬时查询,则直接基于单层语法树,构建瞬时表达式,若结构化语法树是多层级语法树,即第一类语法数据不为瞬时查询,则确定需要构建的表达式为范围表达式,遍历多层级语法树的每一层级,针对每一层级的处理过程包括:基于该层级的结构体确定其期望数据类型为标量数据还是向量数据,若是标量数据,则构建标量子表达式或是浮点子表达式,若是向量数据,则构建向量表达式,当多层级语法树的各层级遍历结束时,得到第一类语法数据对应的范围表达式。针对范围表达式或是瞬时表达式,计算出表达式对应的时间范围、指标和标签值,基于时间范围、指标和标签值构造与目标数据库相适配的第二类查询语句,基于第二类查询语句进行数据查询,得到查询数据,由于第一类查询语句所期望的数据格式为聚合数据,在得到查询数据后再次进行聚合运算,得到聚合结果,并反馈至查询对象。
在一个具体的应用中,以第一类查询语句为监测系统prometheus所支持的查询语句的语句类型为PromQL(Prometheus Query Language,prometheus监测系统所支持的一种查询语句,简称PromQL)为例,监测系统内置一个可视化管理界面,通过可视化管理界面,用户能够轻松的了解监测系统当前的配置,监测任务运行状态,通过可视化管理界面可以实现对存储与第三方数据库中的数据的监测。具体地,通过监测系统的可视化面板,用户还能直接使用PromQL实时查询监测数据,例如查询主机负载变化情况,可以使用关键字node_load1可以从存储有主机负载的样本数据的第三方数据库中查询到样本数据,在可视化管理界面中,查询到的样本数据可以按照时间先后顺序展示,形成了主机负载随时间变化的趋势图表。
PromQL是监测系统自定义的一套强大的数据查询语言,除了使用监测指标作为查询关键字以为,还内置了大量的函数,帮助用户进一步对时序数据进行处理。例如使用增长率函数如rate()函数,可以计算在单位时间内样本数据的变化情况即增长率,因此通过该函数可以近似的通过数据处理资源的使用时间计算数据处理资源的利用率。
如果PromQL要查询的结果是不包含目标标签的数据,而针对与目标数据库相适配的查询语句所查询到的数据是携带有目标标签的,只需要使用without表达式,将所查询到的数据所携带的目标标签去除后进行数据聚合处理即可得到不包含目标标签的数据,即与PromQL相匹配的查询结果。
在本实施例中,通过按照期望聚合数据的数据类别,将稀疏数据中属于数据类别的进行聚合处理,能够对第二类查询语句所查询到的数据进行二次处理,使得处理后的结果与第一类查询语句相适配,从而达到不改变输入的查询语句的情况下,能够对不支持输入的查询语句的数据库进行数据查询,且得到的结果与输入的查询语句相匹配。对于计算机设备来说,能够支持更多的数据库进行数据存储,扩大了数据存储范围,对于用户来说,不需要改变常用的查询语句的输入方式且无需针对每一个数据库开发查询界面,提高了数据查询的便捷性。
在一个实施例中,数据查询方法还包括数据存储过程,数据存储过程包括以下步骤:响应于数据采集事件,采用目标数据采集方式进行原始数据采集和数据预处理,得到预处理数据;按照与目标数据采集方式相匹配的数据上报方式,对预处理数据进行数据上报;目标数据库中所存储的目标数据,是对所上报的预处理数据进行二次处理后写入目标数据库的数据。
其中,原始数据采集是指对要监测的原始数据进行采集的过程,在数据采集过程中,通过将原始数据的翻译、格式化和聚合等预处理操作前移,放在数据上报之前进行。在数据采集做数据的ETL(Extract-Transform-Load,将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程)操作和第一次聚合计算,一方面减少服务器的复杂操作,另一方面减少上报流量和服务器的计算资源,从使用角度看,能简化使用监测系统的复杂度和节约使用成本。在将数据写入数据库之前,进行数据的二次处理。例如针对预处理数据再次进行数据聚合处理或是针对预处理数据进行数据的过滤、降维、级联计算和指标间计算等多维处理。
在本实施例中,通过在数据上报之前,对数据进行预处理,能够减低服务器的数据处理复杂度、减少上报流量以及对服务器的计算资源的占用,将数据写入数据库之前,进行数据的二次处理,能够提升数据库的查询性能,分摊存储压力。
在一个实施例中,采用目标数据采集方式进行原始数据采集,包括:采用定时采集、数据推送以及代理采集中的至少两种数据采集方式,协同进行数据采集;其中,定时采集的数据采集方式相对应的数据上报方式为通过网关上报;数据推送的数据采集方式相对应的数据上报方式为按照目标协议上报;代理采集的数据采集方式相对应的数据上报方式为基于代理模块上报。
其中,目标数据库中所存储的数据可以是监测系统的监测数据。定时采集是指按照指定的时间条件,在当前时间满足时间条件的情况下,对监测系统的数据进行采集的过程。例如agent定时采集或消费kafka数据采集方式,agent定时采集主要应用于采集系统指标或第三方组件的指标,telegraph自带了多种采集插件。对于消费kafka数据的场景,可以针对业务上报的数据开发独立的采集插件,实现预聚合。
数据推送是指被监测对象基于与服务器之间的网络连接,按照协议直接将数据主动推送至服务器的数据处理过程。例如http的push上报。http的push上报方式,其支持line-protocol协议,line-protocol协议是influxdb支持的数据上报协议。监测系统支持的line-protocol协议在协议中定义了指标统计方式,定义@作为指标名和对应的统计方式的分隔符,支持的统计方式包括:min、max、sum、first、last、avg。http上报方式的使用场景是端侧上报,如网页、应用程序、小程序等在客户端独立存在并对资源占用有苛刻要求的上报场景。另一类是短暂任务场景,如无函数服务和定时任务这类用完即毁的服务。
代理采集是指通过插件与代理模块相配合进行数据采集的处理方式,例如SDK与agent结合方式,其支持prometheus和datadog-statsd的SDK,agent基于telegraph开发支持以上两种SDK插件。其中,prometheus SDK是在SDK侧做聚合,持久占用业务进程内存空间缓存维度和指标数据。如果维度和指标数据过多,存在造成内存溢出风险。datadog-statsdSDK在agent侧做聚合,业务代码调用SDK时,SDK将数据缓存在队列,定时或累积到一定量后发送给agent。进一步地,agent与业务进程部署在同一个节点,以避免网络传输影响。
在一个具体的应用中,如图7所示,数据采集支持http的push上报、SDK与agent结合、agent定时采集或消费kafka数据方式系统进行数据采集。采集终端响应于数据采集事件,采用上述至少两种目标数据采集方式协同进行原始数据采集,并对采集后的数据进行预处理,得到预处理数据,按照与目标数据采集方式相匹配的数据上报方式,将预处理数据上报至服务器;服务器对所上报的预处理数据进行二次处理后,将得到的数据写入目标数据库进行数据存储,为后续的数据查询过程提供数据源。
在本实施例中,通过采用至少两种目标数据采集方式协同进行原始数据采集,能够实现针对不同监测对象的监测数据同步采集,扩大了监测范围,有利于实现监测过程中数据处理资源的整合,提高资源利用率。
在一个实施例中,二次处理包括数据聚合处理或数据多维处理;方法还包括:基于预处理数据的数据存储条件,确定针对预处理数据的目标数据处理通道;目标数据处理通道为聚合处理通道和多维处理通道中的任意一种;基于目标数据处理通道的数据处理流程,对预处理数据进行二次数据处理。
具体地,服务器在接收到上报的预处理数据之后,为了提升查询性能和分摊存储压力,需要对预处理数据进行数据的二次处理。其中二次处理提供有两条数据处理通道,一条通道是用于处理按标准监测数据模型上报的数据,仅对数据做二次聚合,合并数据减少数据存储量。另一条通道是基于flink实现,除实现数据的二次聚合外,还提供数据的过滤、降维、级联计算和指标间计算等多维处理,对预处理数据进行多维处理,一方面能够降低数据存储量,另一方面根据业务查询性能要求提供结果数据,以应对高并发查询和异常检测。
在一个具体的应用中,如图8所示,提供了一种数据查询方法,具体包括以下步骤
步骤802,获取第一类查询语句,对第一类查询语句进行语法解析,确定第一类查询语句的语法层级架构。
步骤804,按照语法层级架构,将第一类查询语句转换为结构化语法树。
步骤806,当结构化语法树为单层语法树时,确定与第一类查询语句对应的瞬时表达式。
步骤808,当结构化语法树为多层级语法树时,针对结构化语法树的每一层级的结构体,确定所针对层级的期望数据类型。
步骤810,当期望数据类型为向量数据时,确定所针对层级的向量表达式,当期望数据类型为标量数据时,确定所针对层级的标量表达式。
步骤812,归集标量表达式和向量表达式,确定待查询的数据时间范围和数据标签。
步骤814,按照数据时间范围和数据标签,构造与第一类查询语句对应的范围表达式。
步骤816,基于第一类查询语句所查询数据所在的目标数据库,确定与目标数据库相适配的语句类别。
步骤818,按照语句类别所对应的语句构造方式,基于瞬时表达式或区间表达式所表征的数据时间和数据标签,构造第二类查询语句。
步骤820,执行第二类查询语句,对目标数据库进行数据查询,得到目标数据格式的目标数据,目标数据格式与第二类查询语句相匹配。
步骤822,当第一类查询语句的期望数据格式为聚合数据时,将目标数据中属于符合聚合条件的进行聚合处理,得到与第一类查询语句相匹配的查询结果。
在一个具体的实施例中,如图9所示,在数据查询过程开始之前,还包括目标数据库中的数据存储过程,具体包括以下步骤:
步骤902,响应于数据采集事件,采用定时采集、数据推送以及代理采集中的至少两种数据采集方式,协同进行数据采集。
步骤904,对采集的原始数据进行数据预处理,得到预处理数据。
步骤906,按照与目标数据采集方式相匹配的数据上报方式,对预处理数据进行数据上报。
步骤908,基于预处理数据的数据存储条件,确定针对预处理数据的目标数据处理通道,目标数据处理通道为聚合处理通道和多维处理通道中的任意一种。
步骤910,基于目标数据处理通道的数据处理流程,对预处理数据进行二次数据处理,将二次处理后的数据写入目标数据库。
本申请还提供一种监测系统中应用上述数据查询方法的应用场景。具体地,该数据查询方法在监测系统中的应用如下:
如图10所示,监测系统包括数据采集、数据处理、数据存储、数据查询和数据展示等模块。其中,数据采集支持http的push上报、SDK与agent结合、agent定时采集或消费kafka数据方式进行数据采集。采集终端响应于数据采集事件,采用上述至少两种目标数据采集方式协同进行原始数据采集,并对采集后的数据进行预处理,得到预处理数据,按照与目标数据采集方式相匹配的数据上报方式,将预处理数据上报至服务器;服务器对所上报的预处理数据进行二次处理后,将得到的数据写入目标数据库进行数据存储,数据展示模块通过向目标数据库发送第一类查询语句请求进行数据查询,通过将第一类查询语句转换为与目标数据库适配的第二类查询语句,对目标数据库中的数据进行查询和格式转换,得到与第一类查询语句的期望数据格式相匹配的查询结果,并反馈至数据展示模块进行显示。
具体地,数据采集过程包括原始数据采集和数据上报,原始数据采集是指对要监测的原始数据进行采集的过程,在数据采集过程中,通过将对原始数据的翻译、格式化和聚合等预处理操作前移,放在数据上报之前进行。在数据采集做数据的ETL操作和第一次聚合计算,一方面减少服务器的复杂操作,另一方面减少上报流量和服务器的计算资源,从使用角度看,能简化使用监测系统的复杂度和节约使用成本。在将数据写入数据库之前,进行数据的二次处理。例如针对预处理数据再次进行数据聚合处理或是针对预处理数据进行数据的过滤、降维、级联计算和指标间计算等多维处理。
数据处理过程包括服务器在接收到上报的预处理数据之后,对预处理数据进行数据的二次处理,以提升查询性能和分摊存储压力。其中二次处理提供有两条数据处理通道,一条通道是用于处理按标准监测数据模型上报的数据,仅对数据做二次聚合,合并数据减少数据存储量。另一条通道是基于flink实现,除实现数据的二次聚合外,还提供数据的过滤、降维、级联计算和指标间计算等多维处理,对预处理数据进行多维处理,一方面能够降低数据存储量,另一方面根据业务查询性能要求提供结果数据,以应对高并发查询和异常检测。
数据查询过程包括接收查询对象发送的第一类查询语句,通过计算第一类查询语句所查询数据的步长,当步长满足查询条件时,对第一类查询语句进行表达式解析,得到结构化语法树,然后基于结构化语法树的层级数量,判断是否为瞬时查询,若结构化语法树是单层语法树,即第一类语法数据为瞬时查询,则直接基于单层语法树,构建瞬时表达式,若结构化语法树是多层级语法树,即第一类语法数据不为瞬时查询,则确定需要构建的表达式为范围表达式,遍历多层级语法树的每一层级,针对每一层级的处理过程包括:基于该层级的结构体确定其期望数据类型为标量数据还是向量数据,若是标量数据,则构建标量子表达式或是浮点子表达式,若是向量数据,则构建向量表达式,当多层级语法树的各层级遍历结束时,得到第一类语法数据对应的范围表达式。针对范围表达式或是瞬时表达式,计算出表达式对应的时间范围、指标和标签值,基于时间范围、指标和标签值构造与目标数据库相适配的第二类查询语句,基于第二类查询语句进行数据查询,得到查询数据,由于第一类查询语句所期望的数据格式为聚合数据,在得到查询数据后再次进行聚合运算,得到聚合结果,并反馈至查询对象。
在一个具体的应用中,查询对象为prometheus监测系统中的数据可视化模块,数据可视化模块响应于用户的数据查询请求,将第一类查询语句promQL发送至服务器,服务器计算promQL所查询数据的步长,当步长满足查询条件时,对promQL进行表达式解析,得到promQL对应的结构化语法树,然后基于结构化语法树的层级数量,判断是否为瞬时查询,若结构化语法树是单层语法树,即promQL为瞬时查询,则直接基于单层语法树,构建瞬时表达式,若结构化语法树是多层级语法树,即promQL为区间查询,则确定需要构建的表达式为范围表达式,遍历多层级语法树的每一层级,针对每一层级的处理过程包括:基于该层级的结构体确定其期望数据类型为标量数据还是向量数据,若是标量数据,则构建标量子表达式或是浮点子表达式,若是向量数据,则构建向量表达式,当多层级语法树的各层级遍历结束时,得到promQL对应的范围表达式。针对promQL对应的范围表达式或瞬时表达式,计算出表达式对应的时间范围、指标和标签值,基于时间范围、指标和标签值构造与clickHouse数据库以及CTSDB数据库相适配的influxQL,基于influxQL对clickHouse数据库以及CTSDB数据库中的数据进行查询,得到查询结果,由于promQL所期望的数据格式为聚合数据,在得到查询数据后再次进行聚合运算,得到聚合结果,并反馈至数据可视化模块。
其中,clickHouse数据库以及CTSDB数据库的数据存储过程包括:采集终端响应于数据采集事件,采用http的push上报、SDK与agent结合、agent定时采集或消费kafka数据方式中的至少两种目标数据采集方式,协同进行原始数据采集,并对采集后的数据进行预处理,得到预处理数据,按照与目标数据采集方式相匹配的数据上报方式,将预处理数据上报至服务器,服务器在接收到上报的预处理数据之后,对预处理数据进行数据的二次处理,其中二次处理提供有两条数据处理通道,一条通道是用于处理按标准监测数据模型上报的数据,仅对数据做二次聚合,合并数据减少数据存储量。另一条通道是基于flink实现,用于对数据进行二次聚合、数据过滤、降维、级联计算和指标间计算等多维处理,将二次处理后的数据,按数据存储条件存储至clickHouse数据库或CTSDB数据库。
该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据查询方法的数据查询装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据查询装置实施例中的具体限定可以参见上文中对于数据查询方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种数据查询装置1100,包括:语句获取模块1102、语句构造模块1104、数据查询模块1106和数据转换模块1108,其中:
语句获取模块1102,用于获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
语句构造模块1104,用于基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
数据查询模块1106,用于执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
数据转换模块1108,用于按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
在一个实施例中,语句获取模块,还用于对获取的第一类查询语句进行语法解析,确定所述第一类查询语句的语法层级架构;按照所述语法层级架构,构造所述第一类查询语句的语法表达式。
在一个实施例中,所述语法表达式包括瞬时表达式或范围表达式;语句获取模块,还用于按照所述语法层级架构,将所述第一类查询语句转换为结构化语法树;当所述结构化语法树为单层语法树时,确定与所述第一类查询语句对应的瞬时表达式;当所述结构化语法树为多层级语法树时,遍历所述结构化语法树的每一层级,得到与所述第一类查询语句对应的范围表达式。
在一个实施例中,语句获取模块,还用于针对所述结构化语法树中每一层级的结构体,确定所针对层级所表征的子表达式;归集每一层级的子表达式,得到与所述第一类查询语句对应的范围表达式。
在一个实施例中,所述子表达式包括向量表达式或标量表达式;语句获取模块,还用于针对所述结构化语法树的每一层级的结构体,确定所针对层级的期望数据类型;当所述期望数据类型为向量数据时,确定所针对层级的向量表达式;当所述期望数据类型为标量数据时,确定所针对层级的标量表达式。
在一个实施例中,语句获取模块,还用于归集每一层级的子表达式,确定待查询的数据时间范围和数据标签;按照所述数据时间范围和所述数据标签,构造与所述第一类查询语句对应的范围表达式。
在一个实施例中,语句构造模块,还用于基于所述第一类查询语句所查询数据所在的目标数据库,确定与所述目标数据库相适配的语句类别;按照所述语句类别所对应的语句构造方式,基于所述语法表达式所表征的数据时间和数据标签,构造第二类查询语句。
在一个实施例中,所述期望数据格式的数据包括聚合数据;所述目标数据格式的数据包括稀疏数据;
所述数据转换模块,还用于按照期望聚合数据的数据类别,将所述稀疏数据中属于所述数据类别的进行聚合处理,得到与所述第一类查询语句相匹配的查询结果。
在一个实施例中,所述装置还包括数据存储模块,用于响应于数据采集事件,采用目标数据采集方式进行原始数据采集和数据预处理,得到预处理数据;按照与所述目标数据采集方式相匹配的数据上报方式,对所述预处理数据进行数据上报;所述目标数据库中所存储的目标数据,是对所上报的预处理数据进行二次处理后写入所述目标数据库的数据。
在一个实施例中,所述数据存储模块,还用于采用定时采集、数据推送以及代理采集中的至少两种数据采集方式,协同进行数据采集;其中,所述定时采集的数据采集方式相对应的数据上报方式为通过网关上报;所述数据推送的数据采集方式相对应的数据上报方式为按照目标协议上报;所述代理采集的数据采集方式相对应的数据上报方式为基于代理模块上报。
在一个实施例中,所述二次处理包括数据聚合处理或数据多维处理;所述数据存储模块,还用于:基于所述预处理数据的数据存储条件,确定针对所述预处理数据的目标数据处理通道;所述目标数据处理通道为聚合处理通道和多维处理通道中的任意一种;基于所述目标数据处理通道的数据处理流程,对所述预处理数据进行二次数据处理。
上述数据查询装置,通过获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式,按照所述语法表达式所表征的数据查询内容,构造与第一类查询语句所查询数据所在目标数据库相适配的第二类查询语句,实现查询语句的转换,便于进行数据查询,通过执行所述第二类查询语句,对所述目标数据库进行数据查询,得到数据格式与第二类查询语句相匹配的目标数据,从而实现对存储数据的获取,按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,以使得查询结果能够与第一类查询语句相匹配,实现了对数据库中所存储数据的便捷准确查询。
上述数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储监测数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询方法。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (15)
1.一种数据查询方法,其特征在于,所述方法包括:
获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述获取第一类查询语句,确定所述第一类查询语句的语法表达式,包括:
获取第一类查询语句,对所述第一类查询语句进行语法解析,确定所述第一类查询语句的语法层级架构;
按照所述语法层级架构,构造所述第一类查询语句的语法表达式。
3.根据权利要求2所述的方法,其特征在于,所述语法表达式包括瞬时表达式或范围表达式;
所述按照所述语法层级架构,构造所述第一类查询语句的语法表达式,包括:
按照所述语法层级架构,将所述第一类查询语句转换为结构化语法树;
当所述结构化语法树为单层语法树时,确定与所述第一类查询语句对应的瞬时表达式;
当所述结构化语法树为多层级语法树时,遍历所述结构化语法树的每一层级,得到与所述第一类查询语句对应的范围表达式。
4.根据权利要求3所述的方法,其特征在于,所述遍历所述结构化语法树的每一层级,得到与所述第一类查询语句对应的范围表达式,包括:
针对所述结构化语法树中每一层级的结构体,确定所针对层级所表征的子表达式;
归集每一层级的子表达式,得到与所述第一类查询语句对应的范围表达式。
5.根据权利要求4所述的方法,其特征在于,所述子表达式包括向量表达式或标量表达式;
所述针对所述结构化语法树的每一层级的结构体,确定所针对层级所表征的子表达式,包括:
针对所述结构化语法树的每一层级的结构体,确定所针对层级的期望数据类型;
当所述期望数据类型为向量数据时,确定所针对层级的向量表达式;
当所述期望数据类型为标量数据时,确定所针对层级的标量表达式。
6.根据权利要求4所述的方法,其特征在于,所述归集每一层级的子表达式,得到与所述第一类查询语句对应的范围表达式,包括:
归集每一层级的子表达式,确定待查询的数据时间范围和数据标签;
按照所述数据时间范围和所述数据标签,构造与所述第一类查询语句对应的范围表达式。
7.根据权利要求1所述的方法,其特征在于,所述基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句,包括:
基于所述第一类查询语句所查询数据所在的目标数据库,确定与所述目标数据库相适配的语句类别;
按照所述语句类别所对应的语句构造方式,基于所述语法表达式所表征的数据时间和数据标签,构造第二类查询语句。
8.根据权利要求1所述的方法,其特征在于,所述期望数据格式的数据包括聚合数据;所述目标数据格式的数据包括稀疏数据;
所述按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果,包括:
按照期望聚合数据的数据类别,将所述稀疏数据中属于所述数据类别的进行聚合处理,得到与所述第一类查询语句相匹配的查询结果。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:
响应于数据采集事件,采用目标数据采集方式进行原始数据采集和数据预处理,得到预处理数据;
按照与所述目标数据采集方式相匹配的数据上报方式,对所述预处理数据进行数据上报;
所述目标数据库中所存储的目标数据,是对所上报的预处理数据进行二次处理后写入所述目标数据库的数据。
10.根据权利要求9所述的方法,其特征在于,所述采用目标数据采集方式进行原始数据采集,包括:
采用定时采集、数据推送以及代理采集中的至少两种数据采集方式,协同进行数据采集;
其中,所述定时采集的数据采集方式相对应的数据上报方式为通过网关上报;所述数据推送的数据采集方式相对应的数据上报方式为按照目标协议上报;所述代理采集的数据采集方式相对应的数据上报方式为基于代理模块上报。
11.根据权利要求9所述的方法,其特征在于,所述二次处理包括数据聚合处理或数据多维处理;所述方法还包括:
基于所述预处理数据的数据存储条件,确定针对所述预处理数据的目标数据处理通道;所述目标数据处理通道为聚合处理通道和多维处理通道中的任意一种;
基于所述目标数据处理通道的数据处理流程,对所述预处理数据进行二次数据处理。
12.一种数据查询装置,其特征在于,所述装置包括:
语句获取模块,用于获取第一类查询语句,确定所述第一类查询语句所对应的语法表达式和期望数据格式;
语句构造模块,用于基于所述第一类查询语句所查询数据所在的目标数据库,按照所述语法表达式所表征的数据查询内容,构造与所述目标数据库相适配的第二类查询语句;
数据查询模块,用于执行所述第二类查询语句,对所述目标数据库进行数据查询,得到目标数据格式的目标数据,所述目标数据格式与所述第二类查询语句相匹配;
数据转换模块,用于按照所述期望数据格式与所述目标数据格式间的数据转换逻辑,对所述目标数据进行数据格式转换,得到与所述第一类查询语句相匹配的查询结果。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210310287.2A CN116860772A (zh) | 2022-03-28 | 2022-03-28 | 数据查询方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210310287.2A CN116860772A (zh) | 2022-03-28 | 2022-03-28 | 数据查询方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116860772A true CN116860772A (zh) | 2023-10-10 |
Family
ID=88229096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210310287.2A Pending CN116860772A (zh) | 2022-03-28 | 2022-03-28 | 数据查询方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116860772A (zh) |
-
2022
- 2022-03-28 CN CN202210310287.2A patent/CN116860772A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11567978B2 (en) | Hybrid structured/unstructured search and query system | |
CN111526060B (zh) | 业务日志的处理方法及系统 | |
CN108038222B (zh) | 用于信息系统建模和数据访问的实体-属性框架的系统 | |
CN107451149B (zh) | 流量数据查询任务的监控方法及其装置 | |
US11941034B2 (en) | Conversational database analysis | |
CN106682147A (zh) | 一种基于海量数据的查询方法及装置 | |
US11494395B2 (en) | Creating dashboards for viewing data in a data storage system based on natural language requests | |
US10901811B2 (en) | Creating alerts associated with a data storage system based on natural language requests | |
CN114356971A (zh) | 数据处理方法、装置以及系统 | |
CN115039090A (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN110659283A (zh) | 数据标签处理方法、装置、计算机设备及存储介质 | |
CN117251414B (zh) | 一种基于异构技术的数据存储及处理方法 | |
CN115098029A (zh) | 数据处理方法及装置 | |
CN116860772A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN112306421B (zh) | 一种用于存储分析测量数据格式mdf文件的方法和系统 | |
CN111680072B (zh) | 基于社交信息数据的划分系统及方法 | |
CN111159203B (zh) | 一种数据关联分析的方法、平台、电子设备及存储介质 | |
CN114138821A (zh) | 一种数据库查询方法、系统和电子设备 | |
US20190034555A1 (en) | Translating a natural language request to a domain specific language request based on multiple interpretation algorithms | |
CN116795663B (zh) | 一种跟踪分析trino引擎执行性能的方法 | |
CN117573741A (zh) | 数据检索方法、装置、终端设备以及存储介质 | |
CN117472940A (zh) | 数据血缘关系构建方法和装置、电子设备及存储介质 | |
CN117573678A (zh) | 一种数据查询位图索引的构建方法、数据查询方法及装置 | |
CN115048059A (zh) | 数据处理方法及装置 | |
CN118260273A (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 |