CN114722036A - 数据处理方法、装置、电子设备及可读存储介质 - Google Patents
数据处理方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN114722036A CN114722036A CN202210468422.6A CN202210468422A CN114722036A CN 114722036 A CN114722036 A CN 114722036A CN 202210468422 A CN202210468422 A CN 202210468422A CN 114722036 A CN114722036 A CN 114722036A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- request field
- request
- 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
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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法、装置、电子设备及可读存储介质,属于数据处理技术领域。该数据处理方法包括:接收针对已存储的数据的查询请求,查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;对查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中展开查询,得到每个请求字段对应的数据;基于每个请求字段对应的数据输出与查询请求对应的查询响应。采用本申请实施例可提高查询效率。
Description
技术领域
本申请属于数据处理技术领域,具体涉及一种数据处理方法、装置、电子设备及可读存储介质。
背景技术
基于GraphQL(Graph Query Language,针对图状数据进行查询的查询语言)的数据查询是基于图算法实现的高级查询方案,可以实现客户端根据业务需要来动态指定所需字段进行查询,而非服务端来指定有限范围的返回字段,减少服务端接口开发量,降低前后端沟通成本,适用于数据管理类应用场景。GraphQL是通过递归的方式层级深入进行查询的,查询条件散落在各个请求字段上,查询时只能将查询条件放在每个层级的对象上,当使用这种方案进行查询时,需要对每个层级分别设置条件,增加了请求构建的复杂性,查询效率较低。因此,在基于GraphQL的数据查询领域中,如何提高查询效率成为研究的热点问题之一。
发明内容
本申请实施例提供一种数据处理方法、装置、电子设备及可读存储介质,能够提高查询效率。
第一方面,提供了一种数据处理方法,包括:
接收针对已存储的数据的查询请求,所述查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;所述已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;
对所述查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级;
基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据;
基于每个请求字段对应的数据输出与所述查询请求对应的查询响应。
第二方面,提供了一种数据处理装置,所述装置包括:
接收单元,用于接收针对已存储的数据的查询请求,所述查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;所述已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;
解析单元,用于对所述查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级;
查询单元,用于基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据;
输出单元,用于基于每个请求字段对应的数据输出与所述查询请求对应的查询响应。
第三方面,提供了一种电子设备,该电子设备包括处理器、计算机可读存储介质及存储在所述计算机可读存储介质上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法的步骤。
在本申请实施例中,首先接收针对已存储的数据的携带多个请求字段的查询请求每个请求字段可以请求查询一种类型的数据,且已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同,将数据按照数据类型以层级进行存储,可以使得后续查找时更加方便,提高查询效率,然后对查询请求进行解析,确定基础查询条件关联查询条件以及各个请求字段对应的层级之间的层级关系,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级,可以更好地将各个请求字段关联,以便后续查询时可以关联查询,不需要对每个层级分别设置条件,并且将字段的层级与数据存储的层级相对应,可以使得查询更加简单快捷,再基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中展开查询,得到每个请求字段对应的数据,可以简化客户端构建GraphQL请求的难度,仅需要根据基础查询条件和关联查询条件,按照层级关系进行查询即可,不需要和动态字段一一对应,最后基于每个请求字段对应的数据输出与查询请求对应的查询响应。本申请实施例通过解析查询请求,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系,基于基础查询条件和关联查询条件,对各个请求字段进行关联查询,并且按照层级关系在已存储的数据中展开查询,可以使查询更加有序进行,提高查询效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请的一个实施例提供的一种数据处理方法的流程图;
图2是本申请的一个实施例提供的一种数据处理方法的整体流程图;
图3是本申请的一个具体实施例提供的一种数据处理方法的整体流程图;
图4是本申请的一个实施例提供的一种数据处理装置的示意图;
图5是本申请的一个实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
目前常用的数据查询流程可以概括为:对客户端发出的请求字段进行查询的过程为对请求进行分析,根据不同的层级进行分别处理,分析完成后,调用解析器进行数据查询,解析器返回数据,若返回的数据为实体对象,则会根据请求中指定的字段进行筛选处理,仅保留需要的字段对应的数据,若解析器返回的数据为标量数据,则本次查询结束;若解析器返回的数据为非标量数据则继续迭代获取下一层级数据。这种查询方式的查询条件散落在各个请求字段上,不利用开发,且将查询条件放在每个层级的对象上,当有查询发起时,需要对每个层级分别设置条件,增加了请求构建的复杂性,查询效率较低。
为了解决上述问题,本方案提出了一种数据处理方法、装置、电子设备及可读存储介质,通过对查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系,使得查询的效率更高,同时删除不满足条件的数据,减少数据的传输量,提高传输效率。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的数据处理方法、装置、电子设备及可读存储介质进行详细地说明。
如图1所示,本申请实施例提供了一种数据处理方法,该数据处理方法可由电子设备执行,具体可由电子设备的处理器执行。电子设备可以是终端,比如平板电脑、笔记本电脑、台式计算机、车载终端等;或者,电子设备还可以是服务器,比如独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。该数据处理方法可以包括S101至S104所示的内容:
在S101中,接收针对已存储的数据的查询请求。该查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同。
也就是说,本申请提供的数据处理方法,可以对用户输入的携带有多个请求字段进行查询,每个请求字段均可以用于查询一种类型的数据,例如查询请求为查找2021年10月10日在某城市入职的XXX条件的员工,其中的请求字段为2021年10月10日、某城市、XXX条件。
其中,已存储的数据是指存储于数据库中的数据,例如,公司入职一个新员工,就会将该员工的信息存储至数据库中,本申请可以查找数据库中存储的数据,即入职本公司的员工,无法查询数据库中没有存储的数据,即未入职本公司的员工。且存储的数据是按照各个数据所对应的类型以层级的形式进行存储的,一个层级存储一种类型的数据,例如,一个层级中存储有员工的入职时间,另一个层级中存储有员工的入职地点等等,将数据分层级分类型进行存储,可以使得后续查找时更加方便,提高查询效率。
在S102中,对查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系。其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级。
其中,基础查询条件用于指示每个请求字段所请求查询的数据所在层级,可以根据基础查询条件生成相应的基础查询条件表,其中,基础查询条件表可以包括查询表达式、查询操作、查询表达式值、查询路径等。关联查询(join)条件是指请求字段之间是否存在关联关系,若存在关系,可以通过join条件关联在一起查询。各个请求字段对应的层级之间的层级关系是指哪个字段为第一层级,哪个为第二层级等等,层级关系还包括了层级查询顺序,可以通过层级查询顺序逐层进行查询,避免查询数据的遗漏。
本申请实施例,通过解析上述多个内容,可以更好地将各个请求字段关联,以便后续查询时可以关联查询,不需要对每个层级分别设置条件,使得查询更加简单快捷。
在S103中,基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中展开查询,得到每个请求字段对应的数据。
在本实施例中,基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中逐层展开查询是调用每个层级对应的解析器执行的。举例来说,假设有第一请求字段和第二请求字段,分别对应了第一层级和第二层级,层级查询顺序只是先查询第一层级,再查询第二层级,那么就先调用第一层级对应的解析器,在第一层级中基于基础查询条件和关联查询条件进行查询处理,得到第一请求字段对应的数据;继续的,再调用第二层级对应的解析器在第二层级中基于基础查询条件和关联查询条件进行查询处理,得到第二请求字段对应的数据。如此可以简化客户端构建GraphQL请求的难度,仅需要根据基础查询条件和关联查询条件,按照层级关系进行查询即可,不需要和动态字段一一对应。
其中,层级关系可以包括层级查询顺序,基础查询条件用于指示每个请求字段所请求查询的数据所在的层级;S103具体可以包括:按照层级查询顺序依次调用每个层级对应的解析器,基于基础查询条件和关联查询条件对相应的层级中数据进行查询数据,得到每个请求字段对应的数据。
其中,层级查询顺序是指按照什么顺序进行查询,例如请求字段包括三个层级,层级查询顺序就是指先查询第一层级对应的数据,再查询第二层级对应的数据,最后查询第三层级对应的数据。
本申请实施例按照层级查询顺序依次调用每个层级对应的解析器,再基于基础查询条件和关联查询条件确定当前层级是否满足关联查询,进而对相应的层级中数据进行查询数据,得到每个请求字段对应的数据。通过利用层级查询顺序、基础查询条件以及关联查询条件,可以逐层的对请求字段进行数据查询,根据关联查询条件可以使得不同层级之间相关联,可以进行关联查询,无需对每个层级分别设置条件,使得查询更加简单快捷。
进一步地,多个请求字段包括目标请求字段,基础查询条件包括以基础查询条件表形式存储的每个请求字段对应的基础查询信息,每个请求字段对应的基础查询信息中包括查询操作信息,查询操作信息包括查询表达式、查询表达式值、查询操作以及查询路径。
通过解析查询请求,可以生成基础查询条件表,并存放入钥匙(Key)为路径(Path),价值(Value)为条件表达式的数据源存放地(state)中,例如,查询请求是“查询入职日期为X年X月X日,入职地点为某城市,第三条件为XXX的公司员工”,可以根据该查询请求确定基础查询条件,形成基础查询条件表,表格中存储编码、查询表达式、查询表达式值、查询操作以及查询路径(Path)等信息,具体地如表一所示。
表一
其中,XXX可以代表第三条件对应的表达式值,及路径等信息,第三条件可以是其他的附加条件,本申请中不做具体限定,以实际应用为准。
相应的,按照层级查询顺序依次调用每个层级对应的解析器,基于基础查询条件和关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据。由于每个请求字段的查询处理相同,本申请实施例中以目标请求字段的查询处理为例,进行介绍,目标请求字段为查询请求中的任意一个请求字段。对目标请求字段进行查询处理的步骤可以如下:
步骤一、获取目标请求字段对应的目标层级所对应的解析器,并基于目标请求字段对应的目标层级所对应的解析器的路径,确定基础查询条件中与目标请求字段对应的基础查询信息。
也就是说,先获取目标请求字段对应的目标层级对应的解析器,然后基于目标请求字段对应的目标层级所对应的解析器的路径,匹配到基础查询条件中的某个具体的基础查询信息,以使得目标层级对应的解析器解析的条件为查询请求中的某个具体的基础查询信息。例如,解析上述实施例中的查询请求是“查询入职日期为X年X月X日,入职地点为某城市,第三条件为XXX的公司员工”,可以得到三个层级关系,第一层级为入职日期,第二层级为员工,第三层级为入职地点和第三条件,具体地如表二所示。
表二
层级 | 层级路径 |
1 | personPosition |
2 | person |
3 | contactMethod |
3 | XXX |
例如,目标层级为第一层级,获取第一层级所对应的解析器PersonPositionResolver,基于目标请求字段对应的第一层级所对应的解析器的路径为personPostion,可以匹配到表一中的编码C1,进而确定基础查询条件中与目标请求字段对应的基础查询信息为查询表达式为personPosition.enterDate,查询操作为eq(等于),查询表达式值为X-X-X,查询路径为personPosition。
步骤二、如果基于目标请求字段对应的基础查询信息和关联查询条件确定目标请求字段对应的目标层级不满足关联查询,则调用目标请求字段对应的目标层级所对应的解析器基于目标请求字段对应的基础查询信息在目标请求字段对应的目标层级中进行数据查询,得到目标请求字段对应的数据。
也就是说,在确定出基础查询条件中与目标请求字段对应的基础查询信息之后,可以根据目标请求字段对应的基础查询信息和关联查询条件判断目标请求字段对应的目标层级是否满足关联查询,若是不满足,则直接调用目标层级对应的解析器基于上述基础查询信息在目标请求字段对应的目标层级中进行数据查询,得到目标请求字段对应的数据。也即,若是没有与目标层级相关联的层级,则直接查询基础查询信息对应的数据。
本申请实施例将目标请求字段对应的目标层级所对应的解析器与基础查询条件中与目标请求字段对应的基础查询信息相对应,可以使得查询数据更加准确。
在本申请的另一个可能的实施方式中,该数据处理方法还可以包括:
步骤三、如果基于目标请求字段对应的基础查询信息和关联查询条件确定目标请求字段对应的目标层级满足关联查询,且目标层级的前一个层级存在,则根据关联查询条件获取目标层级的前一层级的数据标识,结合目标层级的标识进行关联查询,得到目标层级对应的数据。
也就是说,根据目标请求字段对应的基础查询信息和关联查询条件判断目标请求字段对应的目标层级是否满足关联查询后,可能存在满足的情况,并且目标层级存在前一层级,则根据关联查询条件获取前一层级的数据标识,再结合目标层级的标识进行关联查询,查询出对应的数据。
例如,目标层级为第二层级,获取第二层级所对应的解析器PersonResolver,根据条件匹配,满足关联查询,获取第二层级的前一层级,即第一层级PersonPosition的数据标识fpersonId,结合目标层级person的标识fid进行关联查询,得到目标层级对应的数据。
进一步地,在本申请的一个可能的实施方式中,关联查询条件包括以关联查询表存储的左值、左值路径、右值以及右值路径。相应的,该数据处理方法还可以包括:如果关联查询条件中右值路径与目标请求字段对应的基础查询信息中查询路径不匹配,则确定目标请求字段对应的目标层级不满足关联查询;如果关联查询条件中右值路径与目标请求字段对应的基础查询信息中查询路径相匹配,则确定目标请求字段对应的目标层级满足关联查询。
其中,关联查询条件中的左值和右值指的是前一层级的数据标识和后一层级的标识,左值可以是前一层级的数据标识,也可以是后一层级的标识,可根据实际应用确定。左值路径为左值对应的查询数据,右值路径为右值对应的查询数据。例如,解析上述实施例中的查询请求是“查询入职日期为X年X月X日,入职地点为某城市,第三条件为XX的公司员工”,可以得到关联查询条件如表三所示。
表三
例如,目标层级为第二层级,获取第二层级所对应的解析器PersonResolver,关联查询条件中的右值路径为person,与目标请求字段对应的基础查询信息中的查询路径person相匹配,则确定目标请求字段对应的目标层级满足关联查询。
通过对不同请求字段对应的不同层级进行关联查询,不需要对每个层级分别设置条件,使得查询更加简单快捷。
进一步地,按照层级查询顺序依次调用每个层级对应的解析器,基于基础查询条件和关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据,可以包括:按照层级查询顺序调用在前的层级对应的解析器,基于基础查询条件和关联查询条件对相应的层级中数据进行查询,得到在前的层级对应的请求字段所对应的数据;如果在前的层级对应的请求字段所对应的数据的类型为对象类型,则按照层级查询顺序调用在后的层级对应的解析器,基于基础查询条件和关联查询条件在相应的层级数据进行查询,得到在后的层级对应的请求字段所对应的数据。
也就是说,若是查询的数据为对象类型,则说明查询出的数据不是标量数据,还可以进一步查询,则继续调用后面的层级对应的解析器进行数据查询,直至将所有数据均查询出来。
进一步地,该数据处理方法还可以包括:如果在前的层级对应的请求字段所对应的数据的类型为标量类型,则执行基于每个请求字段对应的数据输出与查询请求对应的查询响应的步骤。
其中,标量是指GraphQL规范提供的标量,例如int、float、string、boolean、id,其中,int是指32位有符号整型,float是指有符号双精度浮点数,string是指字符串,boolean是指bool(布尔型变量)值,id是指资源唯一标志符。
在本申请的一个可能的实施方式中,在得到目标请求字段对应的数据之后,该数据处理方法还可以包括以下步骤。
查找目标层级的父层级;若目标请求字段对应的数据为空,则基于查找到的父层级确定目标层级是否存在兄弟层级;如果目标层级不存在兄弟层级,或者目标层级存在兄弟层级且与兄弟层级对应的请求字段所对应的数据为空,则为父层级对应的请求字段所对应的数据添加删除标记。
也就是说,本实施例中的目标请求字段不存在对应的数据,根据join关系查询其父层级,然后确定该目标层级是否存在其他的兄弟对象,也即判定目标层级的父层级是否存在其他的子层级,若不存在兄弟层级或兄弟层级不存在对应的数据,则可以将该父层级对应的请求字段所对应的数据添加删除标记,以保证不会输出仅满足部分查询条件的查询结果,减少数据的传输量。
进一步地,该数据处理方法还可以包括:若目标请求字段对应的数据为非空,则确定父层级对应的请求字段所对应的数据是否存在删除标记;如果确定父层级对应的请求字段所对应的数据存在删除标记,则将删除标记修改为不可删除标记。
也就是说,若是查询的目标请求字段存在对应的数据,则需要根据关联查询关系查询其上层对象,即父层级对应的请求字段所对应的数据是否存在删除标记,若是查询到存在删除标记,则需要将该删除标记修改为不可删除标记,以避免删除不可删除字段,造成数据的缺失。
在S104中,基于每个请求字段对应的数据输出与查询请求对应的查询响应。
根据上述实施例可以查询出每个请求字段对应的数据,可以将该数据反馈至发送查询请求的用户。
进一步地,在本申请的一个可能的实施方式中,基于每个请求字段对应的数据输出与查询请求对应的查询响应具体可以包括:遍历每个请求字段对应的数据,将添加了删除标记的数据进行删除;输出删除处理后剩余的数据作为与查询请求对应的查询响应。
也就是说,当所有数据均获取完成后,在向用户返回结果之前,将所有添加了删除标记的数据删除,以减少数据的传输,提升传输速率,减少非必要数据占用存储空间。
在本申请实施例中,首先接收针对已存储的数据的携带多个请求字段的查询请求每个请求字段可以请求查询一种类型的数据,且已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同,将数据按照数据类型以层级进行存储,可以使得后续查找时更加方便,提高查询效率,然后对查询请求进行解析,确定基础查询条件关联查询条件以及各个请求字段对应的层级之间的层级关系,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级,可以更好地将各个请求字段关联,以便后续查询时可以关联查询,不需要对每个层级分别设置条件,并且将字段的层级与数据存储的层级相对应,可以使得查询更加简单快捷,再基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中展开查询,得到每个请求字段对应的数据,可以简化客户端构建GraphQL请求的难度,仅需要根据基础查询条件和关联查询条件,按照层级关系进行查询即可,不需要和动态字段一一对应,最后基于每个请求字段对应的数据输出与查询请求对应的查询响应。本申请实施例通过解析查询请求,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系,基于基础查询条件和关联查询条件,对各个请求字段进行关联查询,并且按照层级关系在已存储的数据中展开查询,可以使查询更加有序进行,提高查询效率。
如图2所示,为本申请的一个整体流程图。具体如下所示。
首先,接收查询请求;然后解析查询请求,确定基础查询条件,存储于数据源存放地(state)中;解析查询请求,确定关联查询(join)条件,生成join条件列表;解析查询请求,确定各个请求字段对应的层级之间的层级关系;调用解析器(Resolver)查询数据;判断当前对象是否为空,若为空,则查找其父层级对应的数据是否有删除标记,若是没有,且父层级没有其他对应数据的子层级,则将父层级对应的数据添加删除标记;若是不为空,则获取用户指定的请求字段对应的数据,判断其父层级对应的数据是否有删除标记,若是存在,则将删除标记修改为不可删除标记,对数据进行解析,判断该数据是否为标量,若是为标量则本次递归结束,否则继续调用解析器查询数据,本次递归结束后将添加了删除标记的数据进行删除,即从结果中删除,再输出删除处理后剩余的数据作为与查询请求对应的查询响应,即反馈至用户,以减少数据传输。
本申请实施例通过解析请求字段,确定请求字段之间的层级关系,对层级件条件进行关联查询,使得查询的效率更高,同时删除不满足条件的数据,减少数据的传输量,提高传输效率。
本申请实施例提供的数据处理方法可以应用于任一种需要进行数据查询的场景,例如,在一个公司中查询一个特定的员工,或是在图书馆中查询某本不知道名字,但知道一些特殊属性的书等等。
如图3所示,为本申请的一个具体实施例的整体流程图。下面本申请以查询一个入职地点为“某城市”,入职日期为“X年X月X日”,第三条件为XX的员工。具体地如下所述。
步骤一、接收针对已存储的数据的查询请求,该查询请求携带多个请求字段,即入职地点为“某城市”、入职日期为“X年X月X日”、第三条件为XXX的员工。
步骤二、解析查询请求,确定基础查询条件,基础查询条件包括以基础查询条件表形式存储的每个请求字段对应的基础查询信息,每个请求字段对应的基础查询信息中包括查询操作信息,查询操作信息包括查询表达式、查询表达式值、查询操作以及查询路径。基础查询条件表如表一所示,并将该表存储于数据源存放地(state)中,具体地如上述表一所示。
解析查询请求,确定关联查询(join)条件,生成join条件列表,并存放入state中,具体地如上述表三所示。
解析查询请求,确定各个请求字段对应的层级之间的层级关系,共三层,分别为personPosition、person、contactMethod和XXX,后续按照该层级关系进行递归数据查询,具体地如上述表二所示。
步骤三、按照层级关系进行递归调用,首先调用层级1对应的解析器(Resolver),也即人员位置解析器personPositionResolver查询指定日期的入职记录,判断查询列表是否为空,为空则结束,否则列表循环、获取用户指定字段的数据,获取enterDate,判断出该字段对应的数据为标量类型,则输出该数据。获取人员数据person,对数据解析,该字段对应的数据为对象类型,则继续递归获取层级2对应的解析器,即person对应的解析器personResolve,查询符合条件的数据,从state中获取join条件,判断是否满足关联查询,若是不满足,则直接调用目标请求字段对应的目标层级所对应的解析器基于目标请求字段对应的基础查询信息在目标请求字段对应的目标层级中进行数据查询,得到目标请求字段对应的数据,然后查找其父层级personPosition对应的数据是否有删除标记,若是没有,且父层级没有其他对应数据的子层级,则将父层级对应的数据添加删除标记。若是满足关联查询,则逆向查找其父层级personPosition对应的数据是否有删除标记,若是有,则将删除标记修改为不可删除标记。获取用户指定的请求字段对应的数据,获取contactMethod,解析数据,为对象类型,则继续递归获取contactMethod对象,然后调用contactMethodResolve获取contactMethod实例,判断是否为空,若为空,则判断其父层级对应的数据是否有删除标记,若是没有,且父层级没有其他对应数据的子层级,则将父层级对应的数据添加删除标记;若不为空,则确定父层级对应的请求字段所对应的数据是否存在删除标记,若是存在,则将删除标记修改为不可删除标记,获取用户指定的请求字段数据,获取addressName,若该字段对应的数据为标量,则输出该数据。获取XXX,过程与上述获取contactMethod相同,本申请实施例中不再赘述。
具体地,按照层级关系进行递归调用,首先调用层级1对应的解析器(Resolver),也即人员位置解析器personPositionResolver查询指定日期的入职记录,根据条件匹配,当前Resolver的Path为personPosition,匹配到条件为编码C1,若不存在右值路径为personPosition的join条件,则表示该日期没有人员入职信息,则结束查询,若是存在,则继续进行递归查询,根据层级关系调用层级2对应的解析器,根据条件匹配,存在右值路径为person的join条件,则根据join条件,获取其父对象(层级1)的fpersonId,结合person的fpersonId进行join查询,直至查询结束。
判断查询数据是否为空,若为空,则进行全链路可删除标记,也就是将本查询字段标记为可删除字段,然后将其父对象(也即上一层级)也标记为可删除字段。但是若是该父对象的列表属性中存在其他的子对象,且该子对象存在对应的查询数据,则不可将该父对象标记为可删除字段,以免丢失数据。
若是查询数据存在,即查询数据不为空,则需要与其父对象通过双向链表建立引用关系,其需要对父对象的标记进行查询,若其父对象标记为可删除字段,则需要将该标记修改为不可删除字段,若可删除字段标记为1,不可删除字段标记为0,则需要将该父对象标记为0,以避免删除不可删除字段,造成数据的缺失。
继续按照层级递归查询,知道当前查询请求中的所有数据均查询完成,且为标量时,完成当前实例的递归查询,可以进入下一实例查询,直至全部查询完成为止。
步骤四、当所有实例的数据均获取完成后,可以先将添加了删除标记的数据进行删除,即从结果中删除,再输出删除处理后剩余的数据作为与查询请求对应的查询响应,即反馈至用户,以减少数据传输。
上述各个步骤的顺序可以是上述顺序,也可以是其他顺序,可以根据实际应用为准,本申请不做具体限定。
本申请实施例通过解析请求字段,确定请求字段之间的层级关系,对层级件条件进行关联查询,使得查询的效率更高,同时删除不满足条件的数据,减少数据的传输量,提高传输效率。
如图4所示,本申请实施例还提供了一种数据处理装置,该数据处理装置可以包括:接收单元301、解析单元302、查询单元303和输出单元304。
其中,接收单元301,用于接收针对已存储的数据的查询请求,查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;
解析单元302,用于对查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级;
查询单元303,用于基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中展开查询,得到每个请求字段对应的数据;
输出单元304,用于基于每个请求字段对应的数据输出与查询请求对应的查询响应。
可选地,层级关系包括层级查询顺序,基础查询条件用于指示每个请求字段所请求查询的数据所在层级;所述查询单元303在基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据时,执行如下步骤:
按照层级查询顺序依次调用每个层级对应的解析器,基于基础查询条件和关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据。
可选地,多个请求字段包括目标请求字段;基础查询条件包括以基础查询条件表形式存储的每个请求字段对应的基础查询信息,每个请求字段对应的基础查询信息中包括查询操作信息,查询操作信息包括查询表达式、查询表达式值、查询操作以及查询路径;查询单元303在按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和所述关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据时,执行如下步骤:
获取目标请求字段对应的目标层级所对应的解析器,并基于目标请求字段对应的目标层级所对应的解析器的路径,确定基础查询条件中与目标请求字段对应的基础查询信息;如果基于目标请求字段对应的基础查询信息和关联查询条件确定目标请求字段对应的目标层级不满足关联查询,则调用目标请求字段对应的目标层级所对应的解析器基于目标请求字段对应的基础查询信息在目标请求字段对应的目标层级中进行数据查询,得到目标请求字段对应的数据。
可选地,查询单元303还用于:
如果基于目标请求字段对应的基础查询信息和关联查询条件确定目标请求字段对应的目标层级满足关联查询,且目标层级的前一个层级存在,则根据关联查询条件获取目标层级的前一层级的数据标识,结合目标层级的标识进行关联查询,得到目标层级对应的数据。
可选地,关联查询条件包括以关联查询表存储的左值、左值路径、右值以及右值路径;查询单元303还用于:
如果关联查询条件中右值路径与目标请求字段对应的基础查询信息中查询路径不匹配,则确定目标请求字段对应的目标层级不满足关联查询;如果关联查询条件中右值路径与目标请求字段对应的基础查询信息中查询路径相匹配,则确定目标请求字段对应的目标层级满足关联查询。
可选地,所述查询单元303在按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据时,执行如下步骤:
按照层级查询顺序调用在前的层级对应的解析器,基于基础查询条件和关联查询条件对相应的层级中数据进行查询,得到在前的层级对应的请求字段所对应的数据;如果在前的层级对应的请求字段所对应的数据的类型为对象类型,则按照层级查询顺序调用在后的层级对应的解析器,基于基础查询条件和关联查询条件在相应的层级数据进行查询,得到在后的层级对应的请求字段所对应的数据。
可选地,所述输出单元304在基于每个请求字段对应的数据输出与所述查询请求对应的查询响应时,执行如下步骤:
如果在前的层级对应的请求字段所对应的数据的类型为标量类型,则基于每个请求字段对应的数据输出与查询请求对应的查询响应。
可选地,该数据处理装置还可以包括:查找单元305、确定单元306和添加单元307。
其中,查找单元305,用于查找目标层级的父层级;确定单元306,用于若目标请求字段对应的数据为空,则基于查找到的父层级确定目标层级是否存在兄弟层级;添加单元307,用于如果目标层级不存在兄弟层级,或者目标层级存在兄弟层级且与兄弟层级对应的请求字段所对应的数据为空,则为父层级对应的请求字段所对应的数据添加删除标记。
可选地,数据处理装置还包括修改单元308;确定单元306,还用于若目标请求字段对应的数据为非空,则确定父层级对应的请求字段所对应的数据是否存在删除标记;修改单元308,用于如果确定父层级对应的请求字段所对应的数据存在删除标记,则将删除标记修改为不可删除标记。
可选地,输出单元304,用于:
遍历每个请求字段对应的数据,将添加了删除标记的数据进行删除;输出删除处理后剩余的数据作为与查询请求对应的查询响应。
在本申请实施例中,首先接收单元301接收针对已存储的数据的携带多个请求字段的查询请求每个请求字段可以请求查询一种类型的数据,且已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同,将数据按照数据类型以层级进行存储,可以使得后续查找时更加方便,提高查询效率,然后解析单元302对查询请求进行解析,确定基础查询条件关联查询条件以及各个请求字段对应的层级之间的层级关系,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级,可以更好地将各个请求字段关联,以便后续查询时可以关联查询,不需要对每个层级分别设置条件,并且将字段的层级与数据存储的层级相对应,可以使得查询更加简单快捷,查询单元303再基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中展开查询,得到每个请求字段对应的数据,可以简化客户端构建GraphQL请求的难度,仅需要根据基础查询条件和关联查询条件,按照层级关系进行查询即可,不需要和动态字段一一对应,最后输出单元304基于每个请求字段对应的数据输出与查询请求对应的查询响应。本申请实施例通过解析查询请求,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系,基于基础查询条件和关联查询条件,对各个请求字段进行关联查询,并且按照层级关系在已存储的数据中展开查询,可以使查询更加有序进行,提高查询效率。
基于上述的数据处理方法实施例以及数据处理装置实施例,本申请实施例提供了一种电子设备,如图5所示,为本申请实施例还提供一种电子设备400的示意图。电子设备400包括处理器401,计算机可读存储介质402,存储在计算机可读存储介质402上并可在所述处理器401上运行的计算机程序,该计算机程序被处理器401执行时实现上述数据处理方法的实施例的各个过程,且能达到相同的技术效果。计算机程序被处理器401执行时用于实现:
接收针对已存储的数据的查询请求,所述查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;所述已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;
对所述查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级;
基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据;
基于每个请求字段对应的数据输出与所述查询请求对应的查询响应。
在本申请实施例中,首先接收针对已存储的数据的携带多个请求字段的查询请求每个请求字段可以请求查询一种类型的数据,且已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同,将数据按照数据类型以层级进行存储,可以使得后续查找时更加方便,提高查询效率,然后对查询请求进行解析,确定基础查询条件关联查询条件以及各个请求字段对应的层级之间的层级关系,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级,可以更好地将各个请求字段关联,以便后续查询时可以关联查询,不需要对每个层级分别设置条件,并且将字段的层级与数据存储的层级相对应,可以使得查询更加简单快捷,再基于基础查询条件和关联查询条件,按照层级关系在已存储的数据中展开查询,得到每个请求字段对应的数据,可以简化客户端构建GraphQL请求的难度,仅需要根据基础查询条件和关联查询条件,按照层级关系进行查询即可,不需要和动态字段一一对应,最后基于每个请求字段对应的数据输出与查询请求对应的查询响应。本申请实施例通过解析查询请求,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系,基于基础查询条件和关联查询条件,对各个请求字段进行关联查询,并且按照层级关系在已存储的数据中展开查询,可以使查询更加有序进行,提高查询效率。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器401执行时实现如上述任一实施例提供的数据处理方法的实施例的各个过程。且能达到相同的技术效果。
计算机程序被处理器401执行时实现:
接收针对已存储的数据的查询请求,所述查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;所述已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;
对所述查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级;
基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据;
基于每个请求字段对应的数据输出与所述查询请求对应的查询响应。
在一个实施例中,所述层级关系包括层级查询顺序,所述基础查询条件用于指示每个请求字段所请求查询的数据所在层级;所述处理器401在基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据时,执行如下步骤:
按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和所诉关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据。
在一个实施例中,所述多个请求字段包括目标请求字段;所述基础查询条件包括以基础查询条件表形式存储的每个请求字段对应的基础查询信息,每个请求字段对应的基础查询信息中包括查询操作信息,查询操作信息包括查询表达式、查询表达式值、查询操作以及查询路径;
所述处理器401在按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和所述关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据时,执行如下步骤:
获取所述目标请求字段对应的目标层级所对应的解析器,并基于所述目标请求字段对应的目标层级所对应的解析器的路径,确定所述基础查询条件中与所述目标请求字段对应的基础查询信息;
如果基于所述目标请求字段对应的基础查询信息和所述关联查询条件确定所述目标请求字段对应的目标层级不满足关联查询,则调用所述目标请求字段对应的目标层级所对应的解析器基于所述目标请求字段对应的基础查询信息在所述目标请求字段对应的目标层级中进行数据查询,得到目标请求字段对应的数据。
在一个实施例中,所述处理器401还用于:
如果基于所述目标请求字段对应的基础查询信息和所述关联查询条件确定所述目标请求字段对应的目标层级满足关联查询,且所述目标层级的前一个层级存在,则根据所述关联查询条件获取所述目标层级的前一层级的数据标识,结合所述目标层级的标识进行关联查询,得到所述目标层级对应的数据。
在一个实施例中,所述关联查询条件包括以关联查询表存储的左值、左值路径、右值以及右值路径;所述处理器401还用于:
如果所述关联查询条件中所述右值路径与所述目标请求字段对应的基础查询信息中查询路径不匹配,则确定所述目标请求字段对应的目标层级不满足关联查询;
如果所述关联查询条件中所述右值路径与所述目标请求字段对应的基础查询信息中查询路径相匹配,则确定所述目标请求字段对应的目标层级满足关联查询。
在一个实施例中,所述处理器401在按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据时,执行如下步骤:
按照所述层级查询顺序调用在前的层级对应的解析器,基于所述基础查询条件和关联查询条件对相应的层级中数据进行查询,得到在前的层级对应的请求字段所对应的数据;
如果在前的层级对应的请求字段所对应的数据的类型为对象类型,则按照所述层级查询顺序调用在后的层级对应的解析器,基于所述基础查询条件和关联查询条件在相应的层级数据进行查询,得到在后的层级对应的请求字段所对应的数据。
在一个实施例中,所述处理器401还用于:
如果在前的层级对应的请求字段所对应的数据的类型为标量类型,则执行基于每个请求字段对应的数据输出与所述查询请求对应的查询响应的步骤。
在一个实施例中,在得到目标请求字段对应的数据之后,所述处理器401还用于:
查找所述目标层级的父层级;
若所述目标请求字段对应的数据为空,则基于查找到的父层级确定所述目标层级是否存在兄弟层级;
如果所述目标层级不存在兄弟层级,或者所述目标层级存在兄弟层级且与所述兄弟层级对应的请求字段所对应的数据为空,则为所述父层级对应的请求字段所对应的数据添加删除标记。
在一个实施例中,所述处理器401还用于:
若所述目标请求字段对应的数据为非空,则确定所述父层级对应的请求字段所对应的数据是否存在删除标记;
如果确定所述父层级对应的请求字段所对应的数据存在删除标记,则将删除标记修改为不可删除标记。
在一个实施例中,所述处理器401在基于每个请求字段对应的数据输出与所述查询请求对应的查询响应时,执行如下步骤:
遍历所述每个请求字段对应的数据,将添加了删除标记的数据进行删除;
输出删除处理后剩余的数据作为与所述查询请求对应的查询响应。
其中,所述处理器401为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,电子设备,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (13)
1.一种数据处理方法,其特征在于,包括:
接收针对已存储的数据的查询请求,所述查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;所述已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;
对所述查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级;
基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据;
基于每个请求字段对应的数据输出与所述查询请求对应的查询响应。
2.根据权利要求1所述的数据处理方法,其特征在于,所述层级关系包括层级查询顺序,所述基础查询条件用于指示每个请求字段所请求查询的数据所在层级;所述基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据,包括:
按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和所述关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据。
3.根据权利要求2所述的数据处理方法,其特征在于,所述多个请求字段包括目标请求字段;所述基础查询条件包括以基础查询条件表形式存储的每个请求字段对应的基础查询信息,每个请求字段对应的基础查询信息中包括查询操作信息,查询操作信息包括查询表达式、查询表达式值、查询操作以及查询路径;
所述按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和所述关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据,包括:
获取所述目标请求字段对应的目标层级所对应的解析器,并基于所述目标请求字段对应的目标层级所对应的解析器的路径,确定所述基础查询条件中与所述目标请求字段对应的基础查询信息;
如果基于所述目标请求字段对应的基础查询信息和所述关联查询条件确定所述目标请求字段对应的目标层级不满足关联查询,则调用所述目标请求字段对应的目标层级所对应的解析器基于所述目标请求字段对应的基础查询信息在所述目标请求字段对应的目标层级中进行数据查询,得到目标请求字段对应的数据。
4.根据权利要求3所述的数据处理方法,其特征在于,所述方法还包括:
如果基于所述目标请求字段对应的基础查询信息和所述关联查询条件确定所述目标请求字段对应的目标层级满足关联查询,且所述目标层级的前一个层级存在,则根据所述关联查询条件获取所述目标层级的前一层级的数据标识,结合所述目标层级的标识进行关联查询,得到所述目标层级对应的数据。
5.根据权利要求4所述的数据处理方法,其特征在于,所述关联查询条件包括以关联查询表存储的左值、左值路径、右值以及右值路径;所述方法还包括:
如果所述关联查询条件中所述右值路径与所述目标请求字段对应的基础查询信息中查询路径不匹配,则确定所述目标请求字段对应的目标层级不满足关联查询;
如果所述关联查询条件中所述右值路径与所述目标请求字段对应的基础查询信息中查询路径相匹配,则确定所述目标请求字段对应的目标层级满足关联查询。
6.根据权利要求3所述的数据处理方法,其特征在于,所述按照所述层级查询顺序依次调用每个层级对应的解析器,基于所述基础查询条件和关联查询条件对相应的层级中数据进行查询处理,得到每个请求字段对应的数据,包括:
按照所述层级查询顺序调用在前的层级对应的解析器,基于所述基础查询条件和关联查询条件对相应的层级中数据进行查询,得到在前的层级对应的请求字段所对应的数据;
如果在前的层级对应的请求字段所对应的数据的类型为对象类型,则按照所述层级查询顺序调用在后的层级对应的解析器,基于所述基础查询条件和关联查询条件在相应的层级数据进行查询,得到在后的层级对应的请求字段所对应的数据。
7.根据权利要求6所述的数据处理方法,其特征在于,所述方法还包括:
如果在前的层级对应的请求字段所对应的数据的类型为标量类型,则执行基于每个请求字段对应的数据输出与所述查询请求对应的查询响应的步骤。
8.根据权利要求3所述的数据处理方法,其特征在于,在得到目标请求字段对应的数据之后,所述方法还包括:
查找所述目标层级的父层级;
若所述目标请求字段对应的数据为空,则基于查找到的父层级确定所述目标层级是否存在兄弟层级;
如果所述目标层级不存在兄弟层级,或者所述目标层级存在兄弟层级且与所述兄弟层级对应的请求字段所对应的数据为空,则为所述父层级对应的请求字段所对应的数据添加删除标记。
9.根据权利要求8所述的数据处理方法,其特征在于,所述方法还包括:
若所述目标请求字段对应的数据为非空,则确定所述父层级对应的请求字段所对应的数据是否存在删除标记;
如果确定所述父层级对应的请求字段所对应的数据存在删除标记,则将删除标记修改为不可删除标记。
10.根据权利要求9所述的数据处理方法,其特征在于,所述基于每个请求字段对应的数据输出与所述查询请求对应的查询响应,包括:
遍历所述每个请求字段对应的数据,将添加了删除标记的数据进行删除;
输出删除处理后剩余的数据作为与所述查询请求对应的查询响应。
11.一种数据处理装置,其特征在于,所述装置包括:
接收单元,用于接收针对已存储的数据的查询请求,所述查询请求携带多个请求字段,每个请求字段用于请求查询一种类型的数据;所述已存储的数据是按照各个数据所对应的类型以层级形式进行存储的,不同层级存储的数据的类型不同;
解析单元,用于对所述查询请求进行解析,确定基础查询条件、关联查询条件以及各个请求字段对应的层级之间的层级关系;其中,每个字段对应的层级是指每个请求字段所要查询的目标类型的数据所存储的层级;
查询单元,用于基于所述基础查询条件和所述关联查询条件,按照所述层级关系在所述已存储的数据中展开查询,得到每个请求字段对应的数据;
输出单元,用于基于每个请求字段对应的数据输出与所述查询请求对应的查询响应。
12.一种电子设备,其特征在于,所述电子设备包括处理器、计算机可读存储介质及存储在所述计算机可读存储介质上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-10任一项所述的方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-10任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210468422.6A CN114722036A (zh) | 2022-04-29 | 2022-04-29 | 数据处理方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210468422.6A CN114722036A (zh) | 2022-04-29 | 2022-04-29 | 数据处理方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114722036A true CN114722036A (zh) | 2022-07-08 |
Family
ID=82246206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210468422.6A Pending CN114722036A (zh) | 2022-04-29 | 2022-04-29 | 数据处理方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114722036A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969131A (zh) * | 2022-08-02 | 2022-08-30 | 昆仑智汇数据科技(北京)有限公司 | 一种信息的查询方法、装置及设备 |
CN117193750A (zh) * | 2023-11-08 | 2023-12-08 | 深圳大数信科技术有限公司 | 一种基于CraphQL的全栈低代码平台实现方法 |
-
2022
- 2022-04-29 CN CN202210468422.6A patent/CN114722036A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969131A (zh) * | 2022-08-02 | 2022-08-30 | 昆仑智汇数据科技(北京)有限公司 | 一种信息的查询方法、装置及设备 |
CN117193750A (zh) * | 2023-11-08 | 2023-12-08 | 深圳大数信科技术有限公司 | 一种基于CraphQL的全栈低代码平台实现方法 |
CN117193750B (zh) * | 2023-11-08 | 2024-03-15 | 深圳大数信科技术有限公司 | 一种基于CraphQL的全栈低代码平台实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
CN108228817B (zh) | 数据处理方法、装置和系统 | |
CN114722036A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN111027295B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN107798017B (zh) | 分布式数据库中的执行计划信息生成方法和系统 | |
US7869585B2 (en) | Declarations for transformations within service sequences | |
US20120158807A1 (en) | Matching data based on numeric difference | |
CN112287013B (zh) | 数据转换方法及适配器 | |
CN107015987B (zh) | 一种更新和搜索数据库的方法及设备 | |
CN113094387A (zh) | 一种数据查询方法、装置、电子设备及机器可读存储介质 | |
CN110109981B (zh) | 工作队列的信息展示方法、装置、计算机设备和存储介质 | |
CN114327493A (zh) | 数据处理方法及装置、电子设备、计算机可读介质 | |
CN108196921B (zh) | 单据开发方法、装置、计算机设备和存储介质 | |
CN109697234B (zh) | 实体的多属性信息查询方法、装置、服务器和介质 | |
CN107463618B (zh) | 一种索引创建方法和装置 | |
CN113468446B (zh) | 一种支持识别第三方二维码数据的方法、系统及设备 | |
CN117009430A (zh) | 数据管理方法、装置和存储介质及电子设备 | |
CN115017185A (zh) | 一种数据处理方法、装置及存储介质 | |
CN112597105A (zh) | 文件关联对象的处理方法、服务端设备及存储介质 | |
CN111880773A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN112596719A (zh) | 一种生成前后端代码的方法和系统 | |
CN112035581A (zh) | 基于模型的任务处理方法、装置、设备和介质 | |
CN108733668B (zh) | 用于查询数据的方法和装置 | |
CN108322380B (zh) | 调用数据的方法和装置以及推送信息的方法和装置 | |
CN115659406B (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 |