CN113448965A - 一种全表扫描的结构化查询语句的确定方法、装置和设备 - Google Patents
一种全表扫描的结构化查询语句的确定方法、装置和设备 Download PDFInfo
- Publication number
- CN113448965A CN113448965A CN202110751806.4A CN202110751806A CN113448965A CN 113448965 A CN113448965 A CN 113448965A CN 202110751806 A CN202110751806 A CN 202110751806A CN 113448965 A CN113448965 A CN 113448965A
- Authority
- CN
- China
- Prior art keywords
- target
- structured query
- query statement
- determining
- field
- 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 46
- 238000005192 partition Methods 0.000 claims description 75
- 238000012216 screening Methods 0.000 claims description 11
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 230000009191 jumping Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013075 data extraction Methods 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 238000011068 loading method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 229910021532 Calcite Inorganic materials 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种全表扫描的结构化查询语句的确定方法、装置和设备,涉及大数据技术领域,其中,该方法包括:将目标结构化查询语句转换为语法树;遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;根据所述语法树,确定所述目标结构化查询语句筛选的字段;获取所述目标结构化查询语句涉及的表名对应的字段信息集;确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。在本说明书实施例中,可以高效、准确地确定目标结构化查询语句是否为全表扫描的结构化查询语句,进而可以确保数据库资源可以得到合理的利用。
Description
技术领域
本说明书实施例涉及大数据技术领域,特别涉及一种全表扫描的结构化查询语句的确定方法、装置和设备。
背景技术
在编写SQL(结构化查询语言)进行数据查询的过程中,有时会涉及全表扫描的情况。若在查询过程中,没有筛选过任意一个字段,则最终的扫描的结果是全表的数据。全表扫描是一个全量的过程,过程中会涉及到大量和结果完全无关的数据。因此,若查询触发了全表扫描,会消耗数据库资源,影响数据库响应速度,严重的会导致使用数据库的所用应用程序的卡顿。随着大数据领域的蓬勃发展,越来越多企业每天都有大量的基于数据库的数据分析需求,若有大量的SQL触发了全表扫描查询,则必然会影响整个分析的效率。
现有技术中通常是通过人工的方式检查SQL语句中是否有筛选过任意字段以确定是否是全表扫描SQL,采用该方式需要耗费较多人力和时间,随着SQL越来越复杂化会存在影响正常SQL的执行时间的问题。由此可见,采用现有技术中的技术方案无法高效地确定出全表扫描SQL。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书实施例提供了一种全表扫描的结构化查询语句的确定方法、装置和设备,以解决现有技术中无法高效地确定出全表扫描SQL的问题。
本说明书实施例提供了一种全表扫描的结构化查询语句的确定方法,包括:将目标结构化查询语句转换为语法树;遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;根据所述语法树,确定所述目标结构化查询语句筛选的字段;获取所述目标结构化查询语句涉及的表名对应的字段信息集;确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。
本说明书实施例还提供了一种全表扫描的结构化查询语句的确定装置,包括:转换模块,用于将目标结构化查询语句转换为语法树;筛选模块,用于遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;第一确定模块,用于根据所述语法树,确定所述目标结构化查询语句筛选的字段;获取模块,用于获取所述目标结构化查询语句涉及的表名对应的字段信息集;第二确定模块,用于确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;第三确定模块,用于在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。
本说明书实施例还提供了一种全表扫描的结构化查询语句的确定设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现本说明书实施例中任意一个方法实施例的步骤。
本说明书实施例提供了一种全表扫描的结构化查询语句的确定方法,可以通过将目标结构化查询语句转换为语法树,遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名。可以根据上述语法树,确定所述目标结构化查询语句筛选的字段。可以获取所述目标结构化查询语句涉及的表名对应的字段信息集,并确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配。在不匹配的情况下,则说明目标结构化查询语句筛选的字段中不存在字段信息集中的信息,目标结构化查询语句没有对该表名对应的数据表中的字段进行筛选查询,可以确定目标结构化查询语句为全表扫描的结构化查询语句。从而可以高效、准确地确定目标结构化查询语句是否为全表扫描的结构化查询语句,进而可以确保数据库资源可以得到合理的利用。
附图说明
此处所说明的附图用来提供对本说明书实施例的进一步理解,构成本说明书实施例的一部分,并不构成对本说明书实施例的限定。在附图中:
图1是根据本说明书实施例提供的全表扫描的结构化查询语句的确定方法的步骤示意图;
图2是根据本说明书实施例提供的确定是否为全表扫描的结构化查询语句的步骤示意图;
图3是根据本说明书实施例提供的全表扫描的结构化查询语句的确定装置的结构示意图;
图4是根据本说明书实施例提供的全表扫描的结构化查询语句的确定设备的结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本说明书实施例的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本说明书实施例,而并非以任何方式限制本说明书实施例的范围。相反,提供这些实施方式是为了使本说明书实施例公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本说明书实施例的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本说明书实施例公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
虽然下文描述流程包括以特定顺序出现的多个操作,但是应该清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。
请参阅图1,本实施方式可以提供一种全表扫描的结构化查询语句的确定方法。该全表扫描的结构化查询语句的确定方法可以用于高效、准确地确定目标结构化查询语句是否为全表扫描的结构化查询语句,进而可以确保数据库资源可以得到合理的利用。上述全表扫描的结构化查询语句的确定方法可以包括以下步骤。
S101:将目标结构化查询语句转换为语法树。
在本实施方式中,可以接收用户提交的目标结构化查询语句,为了确定目标结构化查询语句中涉及的数据库和表名,可以将结构化查询语句转换为抽象语法树。其中,上述目标结构化查询语句可以为待检测是否为全表扫描的结构化查询语句。
在本实施方式中,可以利用语法解析器生成语法树,语法解析器支持语法扩展,以支持Mysql、Oracle、Hive等多种数据源不同语法的解析需要。例如:开源的语法解析器antlr、javacc,通过扩展语法规则文件即可实现多数据源语法支持;解析器Calcite、Druid则可以内置编程式语法解析器。其中,上述语法树可以由一系列的节点串连而成。
S102:遍历语法树中的节点筛选出目标结构化查询语句涉及的表名。
在本实施方式中,可以遍历上述语法树中的节点从而筛选出目标结构化查询语句涉及的所有表名,上述表名可以为数据库中数据表的表名。
在本实施方式中,由于不同数据库中可能会存在同名表,为了进行区分通常表名会按照预设的格式记录,例如:数据库.表名,可以将数据库和表名拆分从而得到所有的表名。
在本实施方式中,目标结构化查询语句涉及的表名可以为一个或者多个。
S103:根据语法树,确定目标结构化查询语句筛选的字段。
在本实施方式中,可以根据上述语法树,确定目标结构化查询语句筛选的字段。当然在一些实施例中也可以直接根据目标结构化查询语句确定出其筛选的字段,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,筛选的字段可以根据目标结构化查询语句的语义确定,可以为在表中筛选的字段,例如:结构化查询语句where‘key’=***and‘pt_dt’=**中筛选的字段为pt_dt。
在本实施方式中,上述目标结构化查询语句筛选的字段也可以为空,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
S104:获取目标结构化查询语句涉及的表名对应的字段信息集。
在本实施方式中,可以获取目标结构化查询语句涉及的表名对应的字段信息集。其中,上述字段信息集中可以包含至少一个字段名。在一些实施例中,上述字段信息集中还可以包含每个字段名对应的表名,或者可以为不同的表名分别生成一个对应的字段信息集,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,将目标结构化查询语句涉及的表名筛选出来后,可以调用查询HIVE表的操作接口(API),从元数据库中查询涉及的各个表名对应的数据表中的字段信息。当然字段信息集获取的方式不限于上述举例,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。其中,HIVE是一个数据仓库工具,用来进行数据提取、转化、加载。
在本实施方式中,在将目标结构化查询语句涉及的表名筛选出来后,可以先调用查询HIVE表操作接口。如果连接失败,则退出查询,反馈检查失败。如果连接成功,则可以继续执行下一步操作。
在本实施方式中,HIVE是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。HIVE数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能。其中,Hadoop是一个分布式系统基础架构。
S105:确定目标结构化查询语句筛选的字段和字段信息集是否匹配。
在本实施方式中,可以进一步确定目标结构化查询语句筛选的字段和字段信息集是否匹配,即可以确定目标结构化查询语句筛选的字段中是否存在字段信息集中的信息。
S106:在不匹配的情况下,确定目标结构化查询语句为全表扫描的结构化查询语句。
在本实施方式中,在确定目标结构化查询语句筛选的字段和字段信息集不匹配的情况下,则说明目标结构化查询语句筛选的字段中不存在字段信息集中的信息,可以确定目标结构化查询语句为全表扫描的结构化查询语句。
在本实施方式中,可以分别确定目标结构化查询语句筛选的字段与各个表名对应的字段信息集是否匹配,如果目标结构化查询语句筛选的字段与目标表名对应的字段信息集是否匹配。如果不匹配则说明目标结构化查询语句没有对目标表名对应的数据表中的字段进行筛选查询,意味着目标结构化查询语句针对目标表名对应的数据表是全表扫描,从而可以确定目标结构化查询语句为全表扫描的结构化查询语句,需要对目标结构化查询语句进行优化。
在本实施方式中,在确定出结果后可以将确定的结果反馈给提交目标结构化查询语句的目标用户。在一些实施例中,如果确定目标结构化查询语句不是全表扫描可以执行目标结构化查询语句,不向用户反馈确定结果,而在执行完毕后将执行结果反馈给用户,以提高用户体验。具体的可以根据实际情况确定,本说明书实施例对此不作限定。
从以上的描述中,可以看出,本说明书实施例实现了如下技术效果:可以通过将目标结构化查询语句转换为语法树,遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名。可以根据上述语法树,确定所述目标结构化查询语句筛选的字段。可以获取所述目标结构化查询语句涉及的表名对应的字段信息集,并确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配。在不匹配的情况下,则说明目标结构化查询语句筛选的字段中不存在字段信息集中的信息,目标结构化查询语句没有对该表名对应的数据表中的字段进行筛选查询,可以确定目标结构化查询语句为全表扫描的结构化查询语句。从而可以高效、准确地确定目标结构化查询语句是否为全表扫描的结构化查询语句,进而可以确保数据库资源可以得到合理的利用。
在一个实施方式中,在将目标结构化查询语句转换为语法树之后,还可以包括:根据所述语法树,确定所述目标结构化查询语句是否为建表的结构化查询语句;在确定是建表的结构化查询语句的情况下,可以将所述目标结构化查询语句放行。
在本实施方式中,由于建表的结构化查询语句不涉及全表扫描,需要将该类型的结构化查询语句滤除后再进行检查,因此,可以先确定目标结构化查询语句的类型是否是CREATE VIEW(创建新视图),如果确定是则说明目标结构化查询语句为建表的结构化查询语句。
在本实施方式中,在确定目标结构化查询语句为建表的结构化查询语句的情况下,可以将目标结构化查询语句放行,直接执行目标结构化查询语句。
在一个实施方式中,在确定所述目标结构化查询语句是否为建表的结构化查询语句之后,还包括:在确定不是建表的结构化查询语句的情况下,遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名。
在本实施方式中,如果目标结构化查询语句不是建表的结构化查询语句,则需要进一步确定目标结构化查询语句是否为全表扫描的结构化查询语句,因此,可以遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名。
在一个实施方式中,在遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名之后,还包括:确定目标结构化查询语句涉及的目标表名是否符合目标格式,在确定不符合目标格式的情况下,可以将所述目标表名丢弃。
在本实施方式中,由于不同数据库中可能会存在同名表,为了进行区分通常表名会按照目标格式记录,例如:数据库.表名,如果目标结构化查询语句涉及的目标表名不符合目标格式,则会有很大几率判断错误,因此,可以将目标表名丢弃,直接跳过目标表名接着判断下一表名。
在本实施方式中,目标表名可以为目标结构化查询语句涉及的表名中的任意一个,如果目标结构化查询语句涉及的表名只有目标表名一个,如果目标表名不符合目标格式,则可以向用户反馈异常以提示用户目标表名是否需要修改,也可以直接放行目标结构化查询语句,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在一个实施方式中,获取所述目标结构化查询语句涉及的表名对应的字段信息集,可以包括:确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表,在确定为分区表的情况下,可以确定所述目标表名对应的数据表的分区字段,进一步的,可以根据所述目标表名对应的数据表的分区字段生成字段信息集。
在本实施方式中,如果通过检查结构化查询语句中是否有筛选过任意字段以确定是否是全表扫描的结构化查询语句会有些许局限性。因为,在某些业务场景下,部分需要查询的表可能是数据量比较小的表,该类型即使全表扫描查询的数据量也不会特别大,对系统的影响较小,这种情况下可以允许全表扫描操作。而一般创建规则会指定存在数据湖里的表如果是大表必须创建分区字段,使得大表都是分区表,但是不是所有分区表都是大表。基于此,可以先确定目标结构化查询语句涉及的目标表名对应的数据表是否为分区表。
在本实施方式中,在确定目标结构化查询语句涉及的目标表名对应的数据表为分区表的情况下,则说明目标结构化查询语句涉及的目标表名对应的数据表为大表,此时则不允许目标结构化查询语句为全表扫描的结构化查询语句。由于全表扫描的定义是结构化查询语句中的筛选字段不包含这个表的分区字段,因此,可以确定目标表名对应的数据表的分区字段。
在本实施方式中,例如:一个表的字段有pt_dt、key、value,解析后可以确定pt_dt是分区字段并且记录在了字段信息集中。由于目标结构化查询语句where‘key’=***and‘value’=***,没有筛选到分区字段pt_dt,目标结构化查询语句在执行时就会全表扫一遍去找他想要的值,这样就造成了全表扫描。如果目标结构化查询语句为where‘key’=***and‘pt_dt’=***,由于筛选了分区字段pt_dt,就不会触发全表扫描。pt_dt可以有1~12月度的选择,类似书的目录,在1月份找key=4的值会比在1~12月份找ket=4的值要快很多,因此,通过筛选分区字段可以避免全表扫描。
在一个实施方式中,在确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表之后,还可以包括:在确定不为分区表的情况下,确定所述目标表名的下一表名对应的数据表是否为分区表。
在本实施方式中,在确定所述目标结构化查询语句涉及的目标表名对应的数据表不是分区表的情况下,则说明目标表名对应的数据表不是大表,无需继续判断是否对目标表名对应的数据表进行全表扫描,可以跳过目标表名。
在本实施方式中,如果目标结构化查询语句涉及的表名仅有一个,在确定目标表名对应的数据表不是分区表的情况下,可以直接将目标结构化查询语句放行。如果目标结构化查询语句涉及的表名不止一个,可以继续确定所述目标表名的下一表名对应的数据表是否为分区表。
在一个实施方式中,确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表,可以包括:获取所述目标结构化查询语句涉及的目标表名对应的数据表中的字段名,在确定所述目标表名对应的数据表中的字段名存在重复的情况下,可以确定所述目标表名对应的数据表为分区表。
在本实施方式中,可以调用查询HIVE表的操作接口(API),从元数据库中查询目标表名对应的数据表中的所有字段名。
在本实施方式中,可以判断目标表名对应的数据表中的字段名中是否存在重复的字段,因为HIVE表查询后返回的字段结果是未经过筛选的字段,若是分区表,则会有相同的字段出现(比如常见的pt_dt,或者data_dt等)。如果存在重复的字段,则可以确定所述目标表名对应的数据表为分区表;如果不存在重复的字段,则说明目标表名对应的数据表不是分区表,可以继续判断下一个表名。
在一个实施方式中,在获取所述目标结构化查询语句涉及的目标表名对应的数据表中的字段名之后,还可以包括:在确定所述目标表名对应的数据表中的字段名中存在第一特征字段的情况下,确定所述目标表名对应的数据表为分区表。
在本实施方式中,通过判断目标表名对应的数据表中的字段名中是否存在重复的字段的方式,无法判断视图类型的表是否为分区表,因为视图的分区字段都是pt_dt,并且解析出来不会重复。因此,可以确定所述目标表名对应的数据表中的字段名中存在第一特征字段,如果存在则可以确定所述目标表名对应的数据表为分区表;如果不存在,则说明目标表名对应的数据表不是分区表,可以继续判断下一个表名。
在本实施方式中,上述第一特征字段pt_dt,从而可以通过pt_dt判断视图类型的表是否为分区表。
在一个实施方式中,在获取所述目标结构化查询语句涉及的目标表名对应的数据表中的字段名之后,还包括:在确定所述目标表名对应的数据表中的字段名中存在第二特征字段的情况下,确定所述目标表名对应的数据表是否为专用视图库。在确定为专用视图库的情况下,可以确定所述目标表名对应的数据表为分区表。
在本实施方式中,上述第二特征字段可以为end_dt(时间戳),在确定目标表名对应的数据表中的字段名中存在end_dt字段的情况下,可以确定所述目标表名对应的数据表是否为BDPVIEW专用视图库。如果确定为专用视图库的情况下,则可以确定所述目标表名对应的数据表为分区表;如果不是为专用视图库,则说明目标表名对应的数据表不是分区表,可以继续判断下一个表名。
在一个实施方式中,在确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表之后,还可以包括:在确定为分区表的情况下,将所述目标表名存入目标缓存。对应的,确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表,可以包括:确定目标缓存中是否存在目标表名,在确定存在的情况下,确定所述目标结构化查询语句涉及的目标表名对应的数据表为分区表。
在本实施方式中,在确定某一个表名对应的数据表为分区表得到情况下,可以将确定为分区表的表名写入目标缓存内,目标缓存内可以存有预设时间段内确定为分区表的相关判断信息。在后续确定表名对应的数据表是否为分区表时,可以先确定目标缓存中是否存在目标表名,如果存在则可以直接确定目标表名对应的数据表为分区表,进而可以提高判断的效率。
在本实施方式中,如果目标缓存中不存在目标表名,则可以按照上述实施例中的方式确定目标结构化查询语句涉及的目标表名对应的数据表是否为分区表。
在本实施方式中,上述预设时间段可以为近三个月,或者近半年等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
下面结合一个具体实施例对确定是否为全表扫描的结构化查询语句的步骤进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本说明书实施例,并不构成对本说明书实施例的不当限定。如图2所示,可以包括:
步骤S202:解析出目标结构化查询语句涉及的表名后,调用查询HIVE表操作接口API。其中,HIVE是一个数据仓库工具,用来进行数据提取、转化、加载。
如果连接失败,则跳转至步骤S203,退出查询,检查失败;如果连接成功,则跳转至S204。
步骤S204:传入需要查询的目标表名,跳转至S205。
步骤S205:通过传入的目标表名到元数据库中查询目标表名对应的所有字段名,根据读取到的字段名进行分组判断,分别跳转至步骤S206、S207、S208进行判断。
步骤S206:确定目标表名对应的字段名中是否存在重复的字段。
因为HIVE表查询后返回的字段结果是未经过筛选的字段,若是分区表,则会有相同的字段出现。如果存在重复的字段,则判断为分区表,跳转至步骤S209;如果不存在重复的字段,则判断为不是分区表,跳转至步骤S210。
步骤S207:确定目标表名对应的字段名中是否存在pt_dt字段。
如果存在,则判断为分区表,跳转至步骤S209;如果不存在pt_dt字段,则判断为不是分区表,跳转至步骤S210。
步骤S208:确定目标表名对应的字段名中是否存在end_dt字段,并且确定是否是BDPVIEW专用视图库。
如果存在且是,则判断为分区表,跳转至步骤S209;如果不存在或不是,则判断为不是分区表,跳转至步骤S210:continue(继续)判断下一个表名。
其中,步骤S206、S207、S208只要有一个步骤确定为分区表则可以,跳转至步骤S209。
步骤S209:确定是分区表后,将此表所有分区字段放入集合内,生成分区字段集合,跳转至S211。
步骤S211:判断目标结构化查询语句中筛选的字段与集合中的字段是否有匹配,如果匹配,则跳至步骤S212:continue(继续)判断下一个表名。如果不匹配,则跳转至S213。
步骤S213:如果集合中字段与目标结构化查询语句中筛选的字段不匹配,则命中全表扫描规则,确定目标结构化查询语句符合全表扫描。进一步的,可以将目标结构化查询语句写入缓存中。
步骤S214:循环结束,返回结果。
基于同一发明构思,本说明书实施例中还提供了一种全表扫描的结构化查询语句的确定装置,如下面的实施例所述。由于全表扫描的结构化查询语句的确定装置解决问题的原理与全表扫描的结构化查询语句的确定方法相似,因此全表扫描的结构化查询语句的确定装置的实施可以参见全表扫描的结构化查询语句的确定方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是本说明书实施例的全表扫描的结构化查询语句的确定装置的一种结构框图,如图3所示,可以包括:转换模块301、筛选模块302、第一确定模块303、获取模块304、第二确定模块305、第三确定模块306,下面对该结构进行说明。
转换模块301,可以用于将目标结构化查询语句转换为语法树;
筛选模块302,可以用于遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;
第一确定模块303,可以用于根据所述语法树,确定所述目标结构化查询语句筛选的字段;
获取模块304,可以用于获取所述目标结构化查询语句涉及的表名对应的字段信息集;
第二确定模块305,可以用于确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;
第三确定模块306,可以用于在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。
本说明书实施例实施方式还提供了一种电子设备,具体可以参阅图4所示的基于本说明书实施例提供的全表扫描的结构化查询语句的确定方法的电子设备组成结构示意图,所述电子设备具体可以包括输入设备41、处理器42、存储器43。其中,所述输入设备41具体可以用于输入目标结构化查询语句。所述处理器42具体可以用于将目标结构化查询语句转换为语法树;遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;根据所述语法树,确定所述目标结构化查询语句筛选的字段;获取所述目标结构化查询语句涉及的表名对应的字段信息集;确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。所述存储器43具体可以用于存储语法树等数据。
在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该电子设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本说明书实施例实施方式中还提供了一种基于全表扫描的结构化查询语句的确定方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时可以实现:将目标结构化查询语句转换为语法树;遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;根据所述语法树,确定所述目标结构化查询语句筛选的字段;获取所述目标结构化查询语句涉及的表名对应的字段信息集;确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本说明书实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本说明书实施例不限制于任何特定的硬件和软件结合。
虽然本说明书实施例提供了如上述实施例或流程图所述的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本说明书实施例提供的执行顺序。所述的方法的在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本说明书实施例的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本说明书实施例的优选实施例而已,并不用于限制本说明书实施例,对于本领域的技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。
Claims (12)
1.一种全表扫描的结构化查询语句的确定方法,其特征在于,包括:
将目标结构化查询语句转换为语法树;
遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;
根据所述语法树,确定所述目标结构化查询语句筛选的字段;
获取所述目标结构化查询语句涉及的表名对应的字段信息集;
确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;
在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。
2.根据权利要求1所述的方法,其特征在于,在将目标结构化查询语句转换为语法树之后,还包括:
根据所述语法树,确定所述目标结构化查询语句是否为建表的结构化查询语句;
在确定是建表的结构化查询语句的情况下,将所述目标结构化查询语句放行。
3.根据权利要求2所述的方法,其特征在于,在确定所述目标结构化查询语句是否为建表的结构化查询语句之后,还包括:
在确定不是建表的结构化查询语句的情况下,遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名。
4.根据权利要求1所述的方法,其特征在于,在遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名之后,还包括:
确定目标结构化查询语句涉及的目标表名是否符合目标格式;
在确定不符合目标格式的情况下,将所述目标表名丢弃。
5.根据权利要求1所述的方法,其特征在于,获取所述目标结构化查询语句涉及的表名对应的字段信息集,包括:
确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表;
在确定为分区表的情况下,确定所述目标表名对应的数据表的分区字段;
根据所述目标表名对应的数据表的分区字段生成字段信息集。
6.根据权利要求5所述的方法,其特征在于,在确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表之后,还包括:
在确定不为分区表的情况下,确定所述目标表名的下一表名对应的数据表是否为分区表。
7.根据权利要求5所述的方法,其特征在于,确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表,包括:
获取所述目标结构化查询语句涉及的目标表名对应的数据表中的字段名;
在确定所述目标表名对应的数据表中的字段名存在重复的情况下,确定所述目标表名对应的数据表为分区表。
8.根据权利要求7所述的方法,其特征在于,在获取所述目标结构化查询语句涉及的目标表名对应的数据表中的字段名之后,还包括:
在确定所述目标表名对应的数据表中的字段名中存在第一特征字段的情况下,确定所述目标表名对应的数据表为分区表。
9.根据权利要求8所述的方法,其特征在于,在获取所述目标结构化查询语句涉及的目标表名对应的数据表中的字段名之后,还包括:
在确定所述目标表名对应的数据表中的字段名中存在第二特征字段的情况下,确定所述目标表名对应的数据表是否为专用视图库;
在确定为专用视图库的情况下,确定所述目标表名对应的数据表为分区表。
10.根据权利要求5所述的方法,其特征在于,在确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表之后,还包括:
在确定为分区表的情况下,将所述目标表名存入目标缓存;
对应的,确定所述目标结构化查询语句涉及的目标表名对应的数据表是否为分区表,包括:
确定目标缓存中是否存在目标表名;
在确定存在的情况下,确定所述目标结构化查询语句涉及的目标表名对应的数据表为分区表。
11.一种全表扫描的结构化查询语句的确定装置,其特征在于,包括:
转换模块,用于将目标结构化查询语句转换为语法树;
筛选模块,用于遍历所述语法树中的节点筛选出所述目标结构化查询语句涉及的表名;
第一确定模块,用于根据所述语法树,确定所述目标结构化查询语句筛选的字段;
获取模块,用于获取所述目标结构化查询语句涉及的表名对应的字段信息集;
第二确定模块,用于确定所述目标结构化查询语句筛选的字段和所述字段信息集是否匹配;
第三确定模块,用于在不匹配的情况下,确定所述目标结构化查询语句为全表扫描的结构化查询语句。
12.一种全表扫描的结构化查询语句的确定设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110751806.4A CN113448965A (zh) | 2021-07-02 | 2021-07-02 | 一种全表扫描的结构化查询语句的确定方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110751806.4A CN113448965A (zh) | 2021-07-02 | 2021-07-02 | 一种全表扫描的结构化查询语句的确定方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113448965A true CN113448965A (zh) | 2021-09-28 |
Family
ID=77814985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110751806.4A Pending CN113448965A (zh) | 2021-07-02 | 2021-07-02 | 一种全表扫描的结构化查询语句的确定方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448965A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578583A (zh) * | 2023-07-12 | 2023-08-11 | 太平金融科技服务(上海)有限公司 | 异常语句识别方法、装置、设备、存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262636A (zh) * | 2010-05-25 | 2011-11-30 | 中国移动通信集团浙江有限公司 | 生成数据库分区执行计划的方法及装置 |
CN104572979A (zh) * | 2014-12-31 | 2015-04-29 | 北京锐安科技有限公司 | 一种处理结构化查询语言sql的方法及装置 |
CN107391739A (zh) * | 2017-08-07 | 2017-11-24 | 北京奇艺世纪科技有限公司 | 一种查询语句生成方法、装置及电子设备 |
CN107451153A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 输出结构化查询语句的方法和装置 |
CN110442602A (zh) * | 2019-07-02 | 2019-11-12 | 新华三大数据技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
WO2020259260A1 (zh) * | 2019-06-28 | 2020-12-30 | 华为技术有限公司 | 一种结构化查询语言sql注入检测方法及装置 |
-
2021
- 2021-07-02 CN CN202110751806.4A patent/CN113448965A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262636A (zh) * | 2010-05-25 | 2011-11-30 | 中国移动通信集团浙江有限公司 | 生成数据库分区执行计划的方法及装置 |
CN104572979A (zh) * | 2014-12-31 | 2015-04-29 | 北京锐安科技有限公司 | 一种处理结构化查询语言sql的方法及装置 |
CN107451153A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 输出结构化查询语句的方法和装置 |
CN107391739A (zh) * | 2017-08-07 | 2017-11-24 | 北京奇艺世纪科技有限公司 | 一种查询语句生成方法、装置及电子设备 |
WO2020259260A1 (zh) * | 2019-06-28 | 2020-12-30 | 华为技术有限公司 | 一种结构化查询语言sql注入检测方法及装置 |
CN110442602A (zh) * | 2019-07-02 | 2019-11-12 | 新华三大数据技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN111522816A (zh) * | 2020-04-16 | 2020-08-11 | 云和恩墨(北京)信息技术有限公司 | 基于数据库引擎的数据处理方法、装置、终端及介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578583A (zh) * | 2023-07-12 | 2023-08-11 | 太平金融科技服务(上海)有限公司 | 异常语句识别方法、装置、设备、存储介质 |
CN116578583B (zh) * | 2023-07-12 | 2023-10-03 | 太平金融科技服务(上海)有限公司 | 异常语句识别方法、装置、设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
KR101755365B1 (ko) | 레코드 포맷 정보의 관리 | |
AU2013329525B2 (en) | System and method for recursively traversing the internet and other sources to identify, gather, curate, adjudicate, and qualify business identity and related data | |
CN107368593B (zh) | 数据导入方法、装置及服务器 | |
US9037552B2 (en) | Methods for analyzing a database and devices thereof | |
CN113032362A (zh) | 数据血缘分析方法、装置、电子设备和存储介质 | |
CN111367595B (zh) | 数据处理方法、程序运行方法、装置及处理设备 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN111708805A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN111159264A (zh) | 一种数据处理方法及装置 | |
CN114116762A (zh) | 一种离线数据模糊搜索方法、装置、设备和介质 | |
US9390073B2 (en) | Electronic file comparator | |
CN110704472A (zh) | 数据查询统计方法及装置 | |
CN113448965A (zh) | 一种全表扫描的结构化查询语句的确定方法、装置和设备 | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
CN113778947A (zh) | 一种kafka流处理平台的数据导入方法、装置及设备 | |
CN116450655A (zh) | 树形结构数据处理方法、装置、电子设备及存储介质 | |
CN107633094B (zh) | 一种集群环境中数据检索的方法和装置 | |
CN115757174A (zh) | 一种数据库的差异检测方法及装置 | |
CN115357625A (zh) | 结构化数据比对方法、装置、电子设备及存储介质 | |
CN112115125A (zh) | 数据库访问对象名称解析方法、装置及电子设备 | |
CN113344023A (zh) | 一种代码推荐方法、装置及系统 | |
JP2017534992A (ja) | 正規化スキーマ比較のためのシステム及び方法 | |
CN114428789B (zh) | 数据的处理方法及装置 | |
CN113051329B (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 |