CN115794861A - 基于特征摘要的离线数据查询复用方法及其应用 - Google Patents
基于特征摘要的离线数据查询复用方法及其应用 Download PDFInfo
- Publication number
- CN115794861A CN115794861A CN202211483102.4A CN202211483102A CN115794861A CN 115794861 A CN115794861 A CN 115794861A CN 202211483102 A CN202211483102 A CN 202211483102A CN 115794861 A CN115794861 A CN 115794861A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- sql
- data query
- feature
- 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
Images
Classifications
-
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出了基于特征摘要的离线数据查询复用方法及其应用,包括以下步骤:S00、获取查询SQL语句;S10、构建SQL解析语法树;S20、解析SQL语句用到的所有数据表并进行滤重排序;S30、遍历滤重排序后的所有数据表,获取每张数据表的最后更新时间的字符串组合;S40、将SQL进行重组格式化;S50、将字符串组合与格式化SQL文本进行组合;S60、生成特征摘要文本;S70、从数仓查询历史表中查找相同特征摘要文本的记录;S80、根据特征摘要文本从数仓查询历史表中获取SQL查询状况。本申请具有查询历史结果可以永久追溯,并且最大限度地避免数据重复存储的优点。
Description
技术领域
本申请涉及大数据技术领域,特别是涉及基于特征摘要的离线数据查询复用方法及其应用。
背景技术
随着大数据时代的到来,数据量发生了显著的增加,业务系统越来越复杂,数据分析的要求也越来越高。此时,继续在业务系统做数据分析就变得不是很合适,原因之一是业务系统的架构并不擅长处理大量的历史数据分析和多维度的数据建模,二是数据分析对业务系统的性能造成非常大的挑战,甚至影响正常交易进行。
基于这样一个情况,政府、企事业单位等纷纷构建了自己的数据仓库,这些数据仓库对数据的实时性要求没有那么高往往是T+1或者T+N,基于这些数据仓库进行的数据建模分析不断地涌现和频繁使用,使得数仓往往需要不断地扩容计算能力来满足用户的分析需求或者限制用户的查询请求、复用查询结果,或者排队机制来保证上层应用的稳定,扩容计算能力往往需要不断提高数仓的维护成本,而限制查询请求和排队机制通常会带来不好的用户体验,尽管应用侧在提高查询复用方面做了一些努力,但是仍然有进一步提升的空间。
而且目前技术的查询复用方案基于查询SQL进行数据缓存,即基于查询SQL作为数据缓存Key,查询结果作为Value缓存到缓存中间件或者文件系统,存在如下缺陷:
1、缓存往往具有时效性,时间过长,SQL涉及的相关表更新后不能及时取得最新数据,时间过短,缓存过期后往往需要二次查询甚至同一个SQL在同一个数据周期内多次查询;
2、由于SQL写法上有差异,导致完全相同语义的SQL可能因为字段、表名称、大小写、空格、换行导致SQL不同,而不能对查询结果进行复用;
3、如果数据查询历史可追溯,往往现有方案会产生重复的数据副本。
综上,亟待一种基于特征摘要的离线数据查询复用方法及其应用,以解决上述问题。
发明内容
本申请实施例提供了基于特征摘要的离线数据查询复用方法及其应用,针对目前技术用户体验不好的问题。
本申请核心技术主要是采用预分析数据查询SQL,构建SQL解析语法树,获取查询数据表和格式化SQL,然后基于格式化SQL和率重数据表和数据表更新时间形成的组合文本,提取摘要,作为特征摘要。同摘要的查询SQL从文件系统中获取数据,非同摘要的查询SQL则从数仓中查询结果,并将结果写入文件系统,并记录数仓查询结果,最终将查询结果返回。
第一方面,本申请提供了基于特征摘要的离线数据查询复用方法,所述方法包括以下步骤:
S00、响应数仓查询指令,以获取查询SQL语句;
S10、基于查询SQL构建SQL解析语法树;
S20、通过SQL解析语法树解析SQL用到的所有数据表,并进行滤重排序;
S30、遍历滤重排序后的所有数据表,获取每张数据表的最后更新时间的字符串组合;
S40、通过SQL解析语法树,将SQL语句进行重组格式化,得到相同语义的格式化SQL文本;
S50、将字符串组合与格式化SQL文本进行组合,形成组合字符串表;
S60、基于组合字符串表生成特征摘要文本;
S70、根据特征摘要文本,从数仓查询历史表中查找相同特征摘要文本的记录;
S80、若查到记录则获取对应的文件数据作为查询结果,记录数据查询历史并返回结果;
若未查到记录,则在数仓中查询格式化的SQL语句,获取查询的数据并将结果写入文件系统,同时将特征摘要文本和文件路径写入数仓查询历史表,记录数据查询历史并返回结果。
进一步地,S30步骤中,数仓更新情况表由ID、表名称、最后更新时间字段组成,当数仓的数据表的数据更新后表更新情况表同步进行更新,即数仓中新表加入、或者周期更新后,将数据的最后更新时间同步到表更新情况表中。
进一步地,S40步骤中,重组格式化具体为:
将空白符数量、SQL关键词大小写、表名称大小写、字段大小写、输出字段顺序、as表定义以及关联表条件按设定规则统一格式。
进一步地,重组格式化具体为:
将空白符统一转换为一个空格、SQL关键词统一为大写、表名称统一为小写、字段统一为小写、输出字段顺序按照Ascii码升序、as表重定义以及关联表条件按as表的Ascii码升序重新排序。
进一步地,S60步骤中,通过摘要算法MD5生成特征摘要文本。
进一步地,S70步骤中,数仓查询历史表的字段包括ID、SQL摘要、查询时间、文件路径及格式化SQL。
第二方面,本申请提供了一种基于特征摘要的离线数据查询复用装置,包括:
数据分析服务模块,用于发送SQL查询请求和接收返回的查询结果;
数据查询服务模块,分别与数据分析服务模块、数据查询服务数据库、数仓模块及文件服务模块通信连接,用于执行权利要求1-6任意一项的基于特征摘要的离线数据查询复用方法;
数据查询服务数据库,用于存储数据和响应数据查询服务模块和数仓模块的请求以及向数据查询服务模块返回结果;
数仓模块,用于响应数据查询服务模块的请求、进行数仓操作、向数据查询服务数据库发送请求以及向数据查询服务模块返回结果;
文件服务模块,用于响应数据查询服务模块的请求和向数据查询服务模块返回结果。
第三方面,本申请提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述的基于特征摘要的离线数据查询复用方法。
第四方面,本申请提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据上述的基于特征摘要的离线数据查询复用方法。
本申请的主要贡献和创新点如下:1、与现有技术相比,本申请通过格式化SQL可避免因为SQL写法上的差异导致的不能对查询结果进行复用的问题,不再需要像现有技术一样基于查询SQL作为数据缓存Key,查询结果作为Value缓存到缓存中间件或者文件系统;
2、与现有技术相比,本申请在同一个数据更新周期内,同一语义的SQL只在数仓中进行一次查询,而且数据更新周期内做到一次查询永久有效,减少同语义SQL查询请求对数仓底层的查询压力。借助文件系统,查询历史结果可以永久追溯,并且最大限度地避免数据重复存储。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的基于特征摘要的离线数据查询复用方法的流程图;
图2是基于特征摘要的离线数据查询复用的装置的架构图;
图3是基于SQL特征摘要生成流程图;
图4是根据本申请实施例的电子装置的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
现有的查询复用方案基于查询SQL进行数据缓存,即基于查询SQL作为数据缓存Key,查询结果作为Value缓存到缓存中间件或者文件系统。
1、缓存往往具有时效性,时间过长,SQL涉及的相关表更新后不能及时取得最新数据,时间过短,缓存过期后往往需要二次查询甚至同一个SQL在同一个数据周期内多次查询。
2、由于SQL写法上有差异,导致完全相同语义的SQL可能因为字段、表名称、大小写、空格、换行导致SQL不同,而不能对查询结果进行复用。
3、如果数据查询历史可追溯,往往现有方案会产生重复的数据副本。
基于此,本申请基于特征摘要以解决上述问题。
实施例一
本申请旨在提出一种基于特征摘要的离线数据查询复用方法,具体地,参考图1,所述方法包括以下步骤:
S00、响应数仓查询指令,以获取查询SQL语句;
S10、基于查询SQL构建SQL解析语法树;
在本实施例中,使用开源的工具如Duird或者Jsqlparser可以很方便快捷的构建出语法树。SQL语法树是将SQL语言转换成有层级结构,方便操作的一种形式。
S20、通过SQL解析语法树解析SQL用到的所有数据表,并进行滤重排序;
其中,从表更新情况表获取用到数据表的最后更新时间,数仓更新情况表由ID、表名称、最后更新时间字段组成,当数仓的数据表的数据更新后表更新情况表同步进行更新,即数仓中新表加入、或者周期更新后,将数据的最后更新时间同步到表更新情况表中。
S30、遍历滤重排序后的所有数据表,获取每张数据表的最后更新时间的字符串组合;
在本实施例中,遍历上一步排序后的表,进行如表1:表1的最后更新时间(yyyy-MM-dd HH:mm:ss);表2:表2的最后更新时间;...表n:表n的最后更新时间的字符串组合。
在此步骤中,为了提取表的更新时间,是为了标识SQL查询所在的数据周期。
S40、通过SQL解析语法树,将SQL语句进行重组格式化,得到相同语义的格式化SQL文本;
在本实施例中,基于第二步的SQL解析语法树,空白符统一转换成一个空格、SQL关键词大写、表名称大小写统一为小写、字段大小写统一为小写、输出字段顺序按照Ascii码升序、as表重定义、关联表条件按照as表的Ascii码升序重新排序,产生格式化SQL文本。如下例中的SQL1和SQL2语义完全相同但在字段输出顺序、大小写、空格、条件顺序等存在差异,最终格式化为相同的SQL。
SQL1:SELECT category_name,product_name FROM categories INNER J OINproducts ON categories.category_id=products.category_id;
SQL2:SELECT p.PRODUCT_NAME as PRODUCT_NAME,c.CATEGORY_NAME asCATEGORY_NAME\n FROM CATEGORIES c INNER JOIN PR ODUCTS p\n ON p.CATEGORY_ID=c.CATEGORY_ID;
格式化SQL为:SELECT ta.category_name as category_name,tb.product_na meas product_name FROM categories ta INNER JOIN products tb ON ta.cate gory_id=tb.category_id。
其中,as表为如一条SQL语句select a.entry_id from bas_entry a;a就是as表就是bas_entry在本SQL语句中的别名。
S50、将字符串组合与格式化SQL文本进行组合,形成组合字符串表;
在本实施例中,将S40的组合字符串和格式化SQL文本进行组合,形成组合字符串表1:表1的最后更新时间(yyyy-MM-dd HH:mm:ss);表2:表2的最后更新时间;...表n:表n;格式化SQL。
在此步骤中,将标识了SQL查询周期信息的字符串和格式化的SQL文本进行组合可以完整标识SQ在什么周期下查询的,因为这个组合字符串会很长,检索比较性能不好,因此进行S60的摘要提取。
S60、基于组合字符串表生成特征摘要文本;
在本实施例中,对组合字符串进行摘要计算(如MD5)形成特征摘要文本。
S70、根据特征摘要文本,从数仓查询历史表中查找相同特征摘要文本的记录;
S80、若查到记录则获取对应的文件数据作为查询结果,记录数据查询历史并返回结果;
若未查到记录,则在数仓中查询格式化后的SQL语句,获取查询的数据并将结果写入文件系统,同时将特征摘要文本和文件路径写入数仓查询历史表,记录数据查询历史并返回结果。
在本实施例中,表更新情况表:是本申请情况表中记录后数据更新周期的表,会记录表的名称、最后更新时间结构;同实施例二中的步骤S204。
离线数仓也是数据库系统,里面会存储业务系统同步过来的数据,比如海关搭建的数仓系统有企业、报关单、仓单等。
数仓表是指上述这些企业、报关单、仓单等表的统称。
实施例二
基于相同的构思,本申请还提出了一种基于特征摘要的离线数据查询复用装置,包括:
数据分析服务模块101,用于发送SQL查询请求和接收返回的查询结果;
数据查询服务模块102,分别与数据分析服务模块101、数据查询服务数据库103、数仓模块104及文件服务模块105通信连接,用于执行实施例一的基于特征摘要的离线数据查询复用方法;
数据查询服务数据库103,用于存储数据和响应数据查询服务模块102和数仓模块104的请求以及向数据查询服务模块102返回结果;
数仓模块104,用于响应数据查询服务模块102的请求、进行数仓操作、向数据查询服务数据库103发送请求以及向数据查询服务模块102返回结果;
文件服务模块105,用于响应数据查询服务模块102的请求和向数据查询服务模块102返回结果。
在本实施例中,如图2-3所示,示出了SQL特征摘要的生成流程,主要步骤如下:
步骤201、数据查询服务模块102根据数据分析服务模块101发送的请求SQL进行语法树解析。解析目的是获取SQL查询用到的所有表和格式化SQL;
步骤202、基于SQL语法树,遍历获取用到的所有表;
步骤203、对上一步中获取的表过滤掉重复存在的表并按照ASCII码升序进行排序;
步骤204、根据上一步获取的数据表从数据查询服务数据库103中获取每张表的最后更新时间;
优选地,在数据查询服务数据库103中维护一张表更新情况表,字段定义如下表:
表更新情况表
在本实施例中以滤重排序后的表集合作为条件查询出数据表的最后更新时间,具体内容如下:
SELECT table_ename,last_updatetime FROM[表更新情况表]
WHERE table_ename in[滤重排序后的表集合]
需要明白,表更新情况表记录了数仓模块104中的所有表的更新情况,数仓数据的某张表更新后需要同步写入数据查询情况表;
步骤205、滤重排序后的表集合,形成如组合字符串如组合文本1;
具体内容为,表1:表1的最后更新时间(yyyy-MM-dd HH:mm:ss);表2:表2的最后更新时间;...表n:表n最后更新时间;
步骤206、基于步骤201的语法树,对SQL进行结构进行重组,主要包括空白符统一转换成一个空格、SQL关键词大写、表名称大小写统一为小写、字段大小写统一为小写、输出字段顺序按照Ascii码升序、as表重定义、关联表条件按照as表的Ascii码升序重新排序,产生格式化SQL文本。
步骤207、基于步骤205和步骤206的输出组合文本1和格式化SQL,进行字符串拼接,具体内容为表1:表1的最后更新时间;表2:表2的最后更新时间;...表n:表n最后更新时间;格式化SQL;
步骤208、基于上一步产生的字符串组合,使用摘要算法MD5生成特征摘要文本;
步骤301、记录数据分析服务的查询记录,便于后续查询历史追踪;
在本实施例中,在数据查询服务数据库103中维护一张数据查询历史表,字段定义如下:
数据查询历史表
步骤302、从数仓查询历史表中获取数仓查询结果;
在本实施例中,在数据查询服务数据库103中维护一张数据查询历史表,字段定义如下:
数仓查询历史表
以步骤208生成的文本摘要作为条件查询文件路径,具体内容如下:
SELECT file_path FROM[数仓查询历史表]
WHERE sql_summary=[步骤208生成的文本摘要]
进一步地,判断步骤302的查询情况,如有查询到结果,说明数据周期同语义的SQL在数仓模块104中进行过查询;
步骤401、使用步骤302获取的文件路径,从文件服务模块105中获取数据文件;
步骤402、解析从文件服务模块105中获取的文件,获取数据结果;
步骤403、将数据结果返回给数据查询服务模块102;
进一步地,判断302步骤的查询情况,如没有查询到结果,说明数据周期同语义的SQL在数仓中还没有进行过查询;
步骤501、连接数仓,执行格式化SQL进行数据查询,获取数仓查询结果数据;
步骤502、将上一步获取的数据结果,写成CSV格式的文件,并将该文件上传到文件服务器(文件服务模块105)并获取文件的上传位置;
步骤503、将数仓的查询结果记录到数仓查询历史表中;
在具体实例中,往[数仓查询历史表]中插入一条记录,[id]数据库自动生成,[sql_summary]步骤208生成的摘要文本,[query_time]当前系统日期,[file_path]为步骤502的文件服务模块105上的文件位置,[format_sql]为步骤207的格式化的SQL;
步骤504、将数据结果返回给数据查询服务模块102。
实施例三
本实施例还提供了一种电子装置,参考图4,包括存储器404和处理器402,该存储器404中存储有计算机程序,该处理器402被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
具体地,上述处理器402可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器404可以包括用于数据或指令的大容量存储器404。举例来说而非限制,存储器404可包括硬盘驱动器(HardDiskDrive,简称为HDD)、软盘驱动器、固态驱动器(SolidStateDrive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器404可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器404可在数据处理装置的内部或外部。在特定实施例中,存储器404是非易失性(Non-Volatile)存储器。在特定实施例中,存储器404包括只读存储器(Read-OnlyMemory,简称为ROM)和随机存取存储器(RandomAccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-OnlyMemo ry,简称为PROM)、可擦除PROM(ErasableProgrammableRead-OnlyMemory,简称为EPROM)、电可擦除PROM(ElectricallyErasableProgrammableRead-Onl yMemory,简称为EEPROM)、电可改写ROM(ElectricallyAlterableRead-Only Memory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(StaticRandom-Acc essMemory,简称为SRAM)或动态随机存取存储器(DynamicRandomAccessM emory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器404(FastPageModeDynamicRandomAccessMemory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDateOutDynamicRandomAccessMe mory,简称为EDODRAM)、同步动态随机存取内存(SynchronousDynamicRa ndom-AccessMemory,简称SDRAM)等。
存储器404可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的计算机程序指令。
处理器402通过读取并执行存储器404中存储的计算机程序指令,以实现上述实施例中的任意基于特征摘要的离线数据查询复用方法。
可选地,上述电子装置还可以包括传输设备406以及输入输出设备408,其中,该传输设备406和上述处理器402连接,该输入输出设备408和上述处理器402连接。
传输设备406可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备406可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
输入输出设备408用于输入或输出信息。在本实施例中,输入的信息可以是数仓请求等,输出的信息可以是数据结果等。
实施例四
本实施例还提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序包括用于控制过程以执行过程的程序代码,过程包括根据实施例一的基于特征摘要的离线数据查询复用方法。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
通常,各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。本申请的一些方面可以以硬件来实现,而其他方面可以以可以由控制器、微处理器或其他计算设备执行的固件或软件来实现,但是本申请不限于此。尽管本申请的各个方面可以被示出和描述为框图、流程图或使用一些其他图形表示,但是应当理解,作为非限制性示例,本文中描述的这些框、装置、系统、技术或方法可以以硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备或其某种组合来实现。
本申请的实施例可以由计算机软件来实现,该计算机软件由移动设备的数据处理器诸如在处理器实体中可执行,或者由硬件来实现,或者由软件和硬件的组合来实现。包括软件例程、小程序和/或宏的计算机软件或程序(也称为程序产品)可以存储在任何装置可读数据存储介质中,并且它们包括用于执行特定任务的程序指令。计算机程序产品可以包括当程序运行时被配置为执行实施例的一个或多个计算机可执行组件。一个或多个计算机可执行组件可以是至少一个软件代码或其一部分。另外,在这一点上,应当注意,如图中的逻辑流程的任何框可以表示程序步骤、或者互连的逻辑电路、框和功能、或者程序步骤和逻辑电路、框和功能的组合。软件可以存储在诸如存储器芯片或在处理器内实现的存储块等物理介质、诸如硬盘或软盘等磁性介质、以及诸如例如DVD及其数据变体、CD等光学介质上。物理介质是非瞬态介质。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以作出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (9)
1.基于特征摘要的离线数据查询复用方法,其特征在于,包括以下步骤:
S00、响应数仓查询指令,以获取查询SQL语句;
S10、基于所述查询SQL构建SQL解析语法树;
S20、通过所述SQL解析语法树解析SQL用到的所有数据表,并进行滤重排序;
S30、遍历滤重排序后的所有数据表,获取每张数据表的最后更新时间的字符串组合;
S40、通过所述SQL解析语法树,将SQL语句进行重组格式化,得到相同语义的格式化SQL文本;
S50、将所述字符串组合与所述格式化SQL文本进行组合,形成组合字符串表;
S60、基于所述组合字符串表生成特征摘要文本;
S70、根据所述特征摘要文本,从数仓查询历史表中查找相同特征摘要文本的记录;
S80、若查到记录则获取对应的文件数据作为查询结果,记录数据查询历史并返回结果;
若未查到记录,则在数仓中查询格式化的SQL语句,获取查询的数据并将结果写入文件系统,同时将特征摘要文本和文件路径写入数仓查询历史表,记录数据查询历史并返回结果。
2.如权利要求1所述的基于特征摘要的离线数据查询复用方法,其特征在于,S30步骤中,数仓更新情况表由ID、表名称、最后更新时间字段组成,当数仓的数据表的数据更新后表更新情况表同步进行更新,即数仓中新表加入、或者周期更新后,将数据的最后更新时间同步到表更新情况表中。
3.如权利要求1所述的基于特征摘要的离线数据查询复用方法,其特征在于,S40步骤中,重组格式化具体为:
将空白符数量、SQL关键词大小写、表名称大小写、字段大小写、输出字段顺序、as表定义以及关联表条件按设定规则统一格式。
4.如权利要求3所述的基于特征摘要的离线数据查询复用方法,其特征在于,重组格式化具体为:
将空白符统一转换为一个空格、SQL关键词统一为大写、表名称统一为小写、字段统一为小写、输出字段顺序按照Ascii码升序、as表重定义以及关联表条件按as表的Ascii码升序重新排序。
5.如权利要求1所述的基于特征摘要的离线数据查询复用方法,其特征在于,S60步骤中,通过摘要算法MD5生成特征摘要文本。
6.如权利要求1所述的基于特征摘要的离线数据查询复用方法,其特征在于,S70步骤中,数仓查询历史表的字段包括ID、SQL摘要、查询时间、文件路径及格式化SQL。
7.一种基于特征摘要的离线数据查询复用装置,其特征在于,包括:
数据分析服务模块,用于发送SQL查询请求和接收返回的查询结果;
数据查询服务模块,分别与数据分析服务模块、数据查询服务数据库、数仓模块及文件服务模块通信连接,用于执行权利要求1-6任意一项所述的基于特征摘要的离线数据查询复用方法;
数据查询服务数据库,用于存储数据和响应数据查询服务模块和数仓模块的请求以及向数据查询服务模块返回结果;
数仓模块,用于响应数据查询服务模块的请求、进行数仓操作、向数据查询服务数据库发送请求以及向数据查询服务模块返回结果;
文件服务模块,用于响应数据查询服务模块的请求和向数据查询服务模块返回结果。
8.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至6任一项所述的基于特征摘要的离线数据查询复用方法。
9.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序包括用于控制过程以执行过程的程序代码,所述过程包括根据权利要求1至6任一项所述的基于特征摘要的离线数据查询复用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211483102.4A CN115794861A (zh) | 2022-11-24 | 2022-11-24 | 基于特征摘要的离线数据查询复用方法及其应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211483102.4A CN115794861A (zh) | 2022-11-24 | 2022-11-24 | 基于特征摘要的离线数据查询复用方法及其应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794861A true CN115794861A (zh) | 2023-03-14 |
Family
ID=85441064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211483102.4A Pending CN115794861A (zh) | 2022-11-24 | 2022-11-24 | 基于特征摘要的离线数据查询复用方法及其应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794861A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991877A (zh) * | 2023-09-25 | 2023-11-03 | 城云科技(中国)有限公司 | 一种结构化查询语句的生成方法、装置及应用 |
-
2022
- 2022-11-24 CN CN202211483102.4A patent/CN115794861A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991877A (zh) * | 2023-09-25 | 2023-11-03 | 城云科技(中国)有限公司 | 一种结构化查询语句的生成方法、装置及应用 |
CN116991877B (zh) * | 2023-09-25 | 2024-01-02 | 城云科技(中国)有限公司 | 一种结构化查询语句的生成方法、装置及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10489454B1 (en) | Indexing a dataset based on dataset tags and an ontology | |
US9710517B2 (en) | Data record compression with progressive and/or selective decomposition | |
US8959075B2 (en) | Systems for storing data streams in a distributed environment | |
US8738572B2 (en) | System and method for storing data streams in a distributed environment | |
US11023452B2 (en) | Data dictionary with a reduced need for rebuilding | |
CN106407360B (zh) | 一种数据的处理方法及装置 | |
US8301650B1 (en) | Bloom filter compaction | |
CN110659282B (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
AU2017243870B2 (en) | "Methods and systems for database optimisation" | |
CN109669925B (zh) | 非结构化数据的管理方法及装置 | |
WO2018097846A1 (en) | Edge store designs for graph databases | |
US20080010238A1 (en) | Index having short-term portion and long-term portion | |
CN112231321B (zh) | 一种Oracle二级索引及索引实时同步方法 | |
CN104731945A (zh) | 一种基于HBase的全文检索方法及装置 | |
CN111817722A (zh) | 数据压缩方法、装置及计算机设备 | |
CN114610708A (zh) | 一种向量数据处理方法及装置、电子设备及存储介质 | |
CN115794861A (zh) | 基于特征摘要的离线数据查询复用方法及其应用 | |
CN115080684B (zh) | 网盘文档索引方法、装置、网盘及存储介质 | |
CN116303628A (zh) | 基于Elasticsearch的告警数据查询方法、系统及设备 | |
CN109299106A (zh) | 数据查询方法和装置 | |
US11550777B2 (en) | Determining metadata of a dataset | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN115809248B (zh) | 数据查询方法和装置以及存储介质 | |
CN117149914B (zh) | 一种基于ClickHouse的存储方法 | |
EP3436988A1 (en) | "methods and systems for database optimisation" |
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 |