一种数据查询方法、装置及设备与流程

文档序号:21456480发布日期:2020-07-10 17:52阅读:121来源:国知局
本申请涉及互联网
技术领域
:,尤其涉及一种数据查询方法、装置及设备。
背景技术
::数据湖分析(datalakeanalytics)用于为用户提供无服务器化(serverless)的查询分析服务,能够对海量的数据进行任意维度的分析和查询,数据湖分析支持高并发、低延时(毫秒级响应)、实时在线分析、海量数据查询等功能。目前,针对文本分析、内容过滤、内容拦截等需求,数据湖分析系统可以进行如下服务:接收用户输入的sql(structuredquerylanguage,结构化查询语言)语句,这个sql语句可以携带多个关键字。查询数据库的目标字段(如微博、博客、商品详情信息等)是否存在所述多个关键字,如目标字段的每行数据是否存在所述多个关键字,并根据查询结果进行处理。在上述方式中,查询操作的计算复杂度与每行数据的内容成正比,与关键字的数量成正比,与目标字段的行数成正比,如果每行数据的内容比较多,或者关键字比较多,或者目标字段的行数比较多,则查询操作需要消耗很长时间,计算复杂度比较高,而且,查询操作的工作量非常大,需要使用大量资源。技术实现要素:本申请提供一种数据查询方法,所述方法包括:获取数据请求,所述数据请求包括多个关键字;根据所述多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;将所述执行计划发送给计算节点,以使所述计算节点获取所述执行计划中的索引标识对应的数据结构,并查询是否存在与所述数据结构对应的数据。本申请提供一种数据查询方法,所述方法包括:获取执行计划;其中,所述执行计划包括数据结构的索引标识,所述数据结构是根据数据请求包括的多个关键字生成的;获取所述执行计划中的所述索引标识对应的数据结构;查询是否存在与所述数据结构对应的数据。本申请提供一种数据查询方法,所述方法包括:获取数据请求,所述数据请求包括多个关键字;根据所述多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;针对待处理的执行计划,获取所述执行计划中的所述索引标识对应的数据结构,并查询数据库中是否存在与所述数据结构对应的数据。本申请提供一种数据查询方法,所述方法包括:获取数据请求,所述数据请求包括多个关键字;根据所述多个关键字生成数据结构;查询数据库中是否存在与所述数据结构对应的数据。本申请提供一种数据查询方法,应用于数据湖分析平台,所述数据湖分析平台用于为用户提供无服务器化的查询分析服务,所述方法包括:获取数据请求,所述数据请求包括多个关键字;根据所述多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;针对待处理的所述执行计划,获取所述执行计划中的所述索引标识对应的数据结构,并查询数据库中是否存在与所述数据结构对应的数据;其中,所述数据库包括所述数据湖分析平台提供的云数据库。本申请提供一种数据查询装置,所述装置包括:获取模块,用于获取数据请求,所述数据请求包括多个关键字;生成模块,用于根据所述多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;发送模块,用于将所述执行计划发送给计算节点,以使所述计算节点获取所述执行计划中的索引标识对应的数据结构,并查询数据库中是否存在与所述数据结构对应的数据。本申请提供一种数据查询装置,所述装置包括:获取模块,用于获取执行计划;其中,所述执行计划包括数据结构的索引标识,所述数据结构是根据数据请求包括的多个关键字生成的;获取所述执行计划中的所述索引标识对应的数据结构;查询模块,用于查询是否存在与所述数据结构对应的数据。本申请提供一种前端节点设备,包括:处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:获取数据请求,所述数据请求包括多个关键字;根据所述多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;将所述执行计划发送给计算节点,以使所述计算节点获取所述执行计划中的索引标识对应的数据结构,并查询是否存在与所述数据结构对应的数据。本申请提供一种计算节点设备,包括:处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:获取执行计划;其中,所述执行计划包括数据结构的索引标识,所述数据结构是根据数据请求包括的多个关键字生成的;获取所述执行计划中的所述索引标识对应的数据结构;查询是否存在与所述数据结构对应的数据。基于上述技术方案,本申请实施例中,针对待查询的多个关键字,可以根据多个关键字生成数据结构,并查询数据库中是否存在与该数据结构对应的数据。这样,查询操作的计算复杂度比较低,降低查询操作的时间开销,节省数据湖分析系统的计算资源,提高处理性能,节省计算性能和用户成本。附图说明为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。图1是本申请一种实施方式中的数据查询方法的流程图;图2是本申请另一种实施方式中的数据查询方法的流程图;图3是本申请一种实施方式中的数据湖分析系统的结构示意图;图4是本申请一种实施方式中的数据查询方法的流程图;图5a和图5b是本申请一种实施方式中的数据结构的示意图;图6是本申请一种实施方式中的数据查询装置的结构图;图7是本申请一种实施方式中的前端节点设备的硬件结构图;图8是本申请另一种实施方式中的数据查询装置的结构图;图9是本申请一种实施方式中的计算节点设备的硬件结构图。具体实施方式在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。本申请实施例中提出一种数据查询方法,该方法可以应用于数据湖分析系统中的前端节点,参见图1所示,为该方法的流程图,该方法可以包括:步骤101,获取数据请求,该数据请求包括多个关键字。步骤102,根据多个关键字生成数据结构,为该数据结构分配索引标识。在一个例子中,根据多个关键字生成数据结构,可以包括但不限于:基于特定算法,生成包括所述多个关键字的数据结构。其中,该数据结构可以包括:多模式匹配的数据结构。进一步的,多模式匹配的数据结构可以包括但不限于:字典树结构,或者,ac(aho-corasick)自动机结构,或者,双数组字典树结构。当然,上述只是多模式匹配的数据结构的几个示例,对此不做限制。步骤103,根据该数据请求生成执行计划,该执行计划包括该索引标识。步骤104,将该执行计划发送给计算节点,以使计算节点获取该执行计划中的索引标识对应的数据结构,并查询是否存在与该数据结构对应的数据。在一个例子中,根据多个关键字生成数据结构,为该数据结构分配索引标识之后,还可以建立该数据结构与该索引标识的映射关系。进一步的,可以在指定存储位置存储该映射关系,以使计算节点从该指定存储位置的映射关系中获取该执行计划中的索引标识对应的数据结构。或者,将该映射关系发送给计算节点,以使计算节点在本计算节点存储该映射关系,这样,计算节点可以从自身存储的映射关系中获取该执行计划中的索引标识对应的数据结构。其中,建立该数据结构与该索引标识的映射关系,可以包括:在数据请求的上下文中建立该数据结构与该索引标识的映射关系。基于此,可以将数据请求的上下文存储在指定存储位置,或,将数据请求的上下文发送给计算节点。在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。基于上述技术方案,本申请实施例中,针对待查询的多个关键字,可以根据多个关键字生成数据结构,并查询数据库中是否存在与该数据结构对应的数据。这样,查询操作的计算复杂度比较低,降低查询操作的时间开销,节省数据湖分析系统的计算资源,提高处理性能,节省计算性能和用户成本。本申请实施例中提出一种数据查询方法,该方法可以应用于数据湖分析系统中的计算节点,参见图2所示,为该方法的流程图,该方法可以包括:步骤201,获取执行计划;其中,该执行计划可以包括数据结构的索引标识,且该数据结构是根据数据请求包括的多个关键字生成的。步骤202,获取该执行计划中的索引标识对应的数据结构。具体的,若前端节点将映射关系存储在指定存储位置,则可以从该指定存储位置的映射关系中,获取与该索引标识对应的数据结构;或者,若前端节点将映射关系发送给计算节点(即计算节点本地存储有映射关系),则可以从计算节点本地存储的映射关系中,获取与该索引标识对应的数据结构。其中,该映射关系可以为数据结构与索引标识的映射关系。步骤203,查询是否存在与该数据结构对应的数据。在一个例子中,该执行计划还可以包括目标字段信息,基于此,查询是否存在与该数据结构对应的数据,可以包括但不限于:从数据库中确定与该目标字段信息对应的目标字段。进一步的,针对所述目标字段的每个数据行,可以查询所述数据行中是否存在与该数据结构对应的数据。在一个例子中,该执行计划还可以包括查询类型,基于此,查询是否存在与该数据结构对应的数据,可以包括但不限于:若该查询类型是和类型(即and类型),当数据行中包括与该数据结构的所有关键字匹配的数据时,则可以确定该数据行存在与该数据结构对应的数据,反之,确定该数据行不存在与该数据结构对应的数据。或者,若该查询类型是或类型(即or类型),当数据行中包括与该数据结构的任一关键字匹配的数据时,则可以确定该数据行存在与该数据结构对应的数据,反之,确定该数据行不存在与该数据结构对应的数据。在上述实施例中,该数据结构可以包括:多模式匹配的数据结构。进一步的,多模式匹配的数据结构可以包括但不限于:字典树结构,或者,ac自动机结构,或者,双数组字典树结构。当然,上述只是几个示例,对此不做限制。在一个例子中,计算节点还可以启动多个实体,针对所述多个实体中的每个实体,该实体可以获取该执行计划中的索引标识对应的数据结构,并查询是否存在与该数据结构对应的数据,即由每个实体执行步骤201-步骤203。其中,实体可以包括但不限于:进程、或者线程、或者容器、或者虚拟机。在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。基于上述技术方案,本申请实施例中,针对待查询的多个关键字,可以根据多个关键字生成数据结构,并查询数据库中是否存在与该数据结构对应的数据。这样,查询操作的计算复杂度比较低,降低查询操作的时间开销,节省数据湖分析系统的计算资源,提高处理性能,节省计算性能和用户成本。基于与上述方法同样的申请构思,本申请实施例中还提出一种数据查询方法,该方法可以应用于数据湖分析系统,该方法可以包括:获取数据请求,该数据请求可以包括多个关键字。根据所述多个关键字生成数据结构,并为该数据结构分配索引标识。根据该数据请求生成执行计划,该执行计划可以包括该索引标识。进一步的,针对待处理的执行计划,获取该执行计划中的索引标识对应的数据结构,并查询数据库中是否存在与该数据结构对应的数据。其中,本实施例与上述实施例的区别在于:本实施例中,由数据湖分析系统实现数据查询方法,不再区分数据湖分析系统中的前端节点和计算节点,即数据湖分析系统实现相关步骤,具体实现方式参见上述实施例,在此不再赘述。基于与上述方法同样的申请构思,本申请实施例中还提出另一种数据查询方法,该方法可以应用于数据湖分析系统中,该方法可以包括:获取数据请求,该数据请求可以包括多个关键字,然后根据所述多个关键字生成数据结构。进一步的,可以查询数据库中是否存在与该数据结构对应的数据。其中,本实施例与上述实施例的区别在于:本实施例中,由数据湖分析系统实现数据查询方法,不再区分数据湖分析系统中的前端节点和计算节点,即数据湖分析系统实现相关步骤。本实施例中,没有为该数据结构分配索引标识,数据湖分析系统直接获取数据结构,并查询数据库中是否存在与该数据结构对应的数据;具体的,可以直接关联执行计划与该数据结构,针对待处理的执行计划,可以直接获取与该执行计划对应的数据结构,并查询数据库中是否存在与该数据结构对应的数据。具体实现方式参见上述实施例,在此不再赘述。基于与上述方法同样的申请构思,本申请实施例还提出另一种数据查询方法,可以应用于数据湖分析平台(即数据湖分析系统中的云计算平台),所述数据湖分析平台用于为用户提供无服务器化的查询分析服务,该方法包括:获取数据请求,该数据请求包括多个关键字;根据多个关键字生成数据结构,并为该数据结构分配索引标识;根据该数据请求生成执行计划,该执行计划包括该索引标识;针对待处理的执行计划,获取该执行计划中的索引标识对应的数据结构,并查询数据库中是否存在与该数据结构对应的数据。其中,本实施例与上述实施例的区别在于:本实施例中,由数据湖分析平台实现数据查询方法,不再区分前端节点和计算节点,在此不再重复赘述。其中,上述数据库可以包括数据湖分析平台提供的云数据库,且云数据库用于提供无服务器化的查询分析服务。数据湖分析平台可以是以数据存储为主的存储型云平台,或者,以数据处理为主的计算型云平台,或者,计算和数据存储处理兼顾的综合云计算平台,对此数据湖分析平台不做限制。针对数据湖分析平台提供的云数据库,可以用于为用户提供无服务器化(serverless)的查询分析服务,能够对海量的数据进行任意维度的分析和查询,支持高并发、低延时(毫秒级响应)、实时在线分析、海量数据查询等功能。以下结合具体的应用场景,对上述技术方案进行进一步的说明。参见图3所示,为数据湖分析(datalakeanalytics)系统的结构示意图,数据湖分析系统可以包括客户端、负载均衡设备、前端节点(frontnode,也可以称为前端服务器)、计算节点(computenode,也可以称为计算服务器)和数据库,当然,数据湖分析系统还可以包括其它服务器,对此不做限制。在图3中,以3个前端节点为例,在实际应用中,前端节点的数量还可以为其它数量,对此不做限制。在图3中,以4个计算节点为例,在实际应用中,计算节点的数量还可以为其它数量,对此不做限制。由于每个前端节点的处理流程相同,每个计算节点的处理流程相同,因此,为了方便描述,后续实施例中,以1个前端节点的处理流程为例,以1个计算节点的处理流程为例。图3中以5个数据库为例,数据库的数量还可以为其它数量,对此不做限制。这些数据库可以是相同类型的数据库,也可以是不同类型的数据库。这些数据库可以是关系型数据库,也可以是非关系型数据库。对于每个数据库来说,数据库的类型可以包括但不限于:oss(objectstorageservice,对象存储服务)、tablestore(表格存储)、hbase(hadoopdatabase,hadoop数据库)、hdfs(hadoopdistributedfilesystem,hadoop分布式文件系统)、mysql等,当然,上述只是数据库类型的几个示例,对此数据库类型不做限制。其中,客户端可以是终端设备(如pc(personalcomputer,个人计算机)、笔记本电脑、移动终端等)包括的app(application,应用),也可以是终端设备包括的浏览器,对此不做限制。负载均衡设备330用于对客户端的数据请求进行负载均衡,如接收到数据请求后,将数据请求负载均衡到各前端节点。在一个例子中,多个前端节点可以用于提供相同的功能,形成前端节点的资源池。针对资源池中的每个前端节点,用于接收客户端发送的数据请求,并对数据请求进行sql(structuredquerylanguage,结构化查询语言)解析,根据解析结果生成多个执行计划,并处理这些执行计划。例如,前端节点可以将这些执行计划发送给一个或者多个计算节点,由计算节点处理执行计划。在一个例子中,多个计算节点用于提供相同的功能,形成计算节点的资源池。针对资源池中的每个计算节点,若该计算节点接收到前端节点发送的执行计划,则该计算节点可以处理该执行计划,并将处理结果返回给前端节点。在上述应用场景下,如图4所示,为数据查询方法的流程图,该方法包括:步骤401,前端节点获取数据请求,该数据请求包括多个关键字。例如,用户可以通过客户端发送数据请求,负载均衡设备在接收到该数据请求后,可以将该数据请求发送给前端节点,这样,前端节点可以接收到该数据请求。其中,该数据请求可以包括但不限于:sql语句等。在一个例子中,针对文本分析、内容过滤、内容拦截等需求,数据请求可以包括一个或者多个关键字,后续以多个关键字为例进行说明。例如,该数据请求可以包括xx、yy、zz,而xx、yy、zz均可以是关键字,也就是说,存在关键字xx、关键字yy、关键字zz。例如,数据请求的一个示例可以为:contentlike‘%xx%’andcontentlike‘%yy%’andcontentlike‘%zz%’,从数据请求中可以得到关键字xx、yy、zz。或者,数据请求的另一个示例可以为:contentlike‘%xx%’orcontentlike‘%yy%’orcontentlike‘%zz%’,从数据请求中可以得到关键字xx、yy、zz。其中,like语句用于表示查询数据行中是否存在关键字。例如,contentlike‘%xx%’andcontentlike‘%yy%’andcontentlike‘%zz%’,表示查询数据库的数据行中,是否存在关键字xx、且存在关键字yy、且存在关键字zz。此外,contentlike‘%xx%’orcontentlike‘%yy%’orcontentlike‘%zz%’,表示查询数据库的数据行中,是否存在关键字xx、或者存在关键字yy、或者存在关键字zz。当然,上述只是数据请求的示例,对此数据请求不做限制。例如,数据请求的示例可以为:contentlike‘xx%’andcontentlike‘yy%’andcontentlike‘zz%’,或者,contentlike‘%xx’andcontentlike‘%yy’andcontentlike‘%zz’等。步骤402,前端节点根据所述多个关键字生成数据结构。具体的,前端节点可以基于特定算法,生成包括所述多个关键字的数据结构。其中,该数据结构可以包括:多模式匹配的数据结构,例如,字典树结构,或者,ac自动机结构,或者,双数组字典树结构(dat)等。当然,上述只是多模式匹配的数据结构的几个示例,对此数据结构不做限制。例如,前端节点可以基于字典树结构的生成算法,生成包括所述多个关键字的字典树结构。或者,前端节点可以基于ac自动机结构的生成算法,生成包括所述多个关键字的ac自动机结构。或者,前端节点可以基于双数组字典树结构的生成算法,生成包括所述多个关键字的双数组字典树结构,以此类推。参见图5a所示,为字典树结构(trie结构)的示意图。当数据请求包括poor、prize、preview、prepare、produce、progress等关键字时,可以基于字典树结构的生成算法,生成图5a所示的字典树结构,该字典树结构可以包括poor、prize、preview、prepare、produce、progress,对此字典树结构的生成过程不做限制。基于数据请求包括的多个关键字,可以基于ac自动机结构的生成算法,生成图5b所示的ac自动机结构,对此ac自动机结构的生成过程不做限制。当然,上述只是数据结构的两个示例,对此不做限制,当数据请求包括多个关键字时,就可以生成包括多个关键字的数据结构,对此生成过程不做限制。步骤403,前端节点为该数据结构分配索引标识。其中,数据结构的索引标识具有唯一性,也就是说,不同的数据结构可以对应不同的索引标识。例如,前端节点在接收到数据请求后,若该数据请求包括contentlike‘%xx%’andcontentlike‘%yy%’andcontentlike‘%zz%’,以及,contentlike‘%aa%’orcontentlike‘%bb%’orcontentlike‘%cc%’,则前端节点可以生成包括关键字xx、yy、zz的数据结构a,并生成包括关键字aa、bb、cc的数据结构b。然后,前端节点为数据结构a分配索引标识a,并为数据结构b分配索引标识b。步骤404,前端节点建立该数据结构与该索引标识的映射关系。例如,前端节点可以建立数据结构a与索引标识a的映射关系,并建立数据结构b与索引标识b的映射关系,参见表1所示,为映射关系的示例。表1索引标识数据结构索引标识a数据结构a索引标识b数据结构b在一个例子中,前端节点可以在数据请求的上下文中建立该数据结构与该索引标识的映射关系。例如,在数据请求的上下文信息中,记录数据结构a与索引标识a的映射关系,并记录数据结构b与索引标识b的映射关系。步骤405,前端节点根据数据请求生成执行计划,该执行计划包括索引标识。在一个例子中,前端节点可以根据数据请求生成执行计划,对此生成过程不做限制。该执行计划可以包括但不限于数据结构的索引标识、目标字段信息、查询类型。进一步的,该查询类型可以包括但不限于和类型(and类型)、或类型(or类型)。当然,上述只是几个示例,执行计划还可以包括其它内容。例如,数据库可以包括多个字段(如数据库的多个列,每个列就是一个字段),如数据库包括字段a、字段b、字段c等,在需要查询字段a的数据时,则数据请求可以携带字段a的信息,而字段a的信息就是目标字段信息,表示需要查询字段a的每个数据行,是否存在与多个关键字匹配的数据。例如,若数据请求包括contentalike‘%xx%’andcontentalike‘%yy%’andcontentalike‘%zz%’,以及,contentblike‘%aa%’orcontentblike‘%bb%’orcontentblike‘%cc%’,则该数据请求对应的执行计划可以包括但不限于:(a,索引标识a,和类型)以及(b,索引标识b,或类型)。其中,上述执行计划可以包括两个子计划,第一个子计划是(a,索引标识a,和类型),a表示目标字段信息是字段a,索引标识a对应的数据结构为数据结构a,查询类型是和类型。第二个子计划是(b,索引标识b,或类型),b表示目标字段信息是字段b,索引标识b对应的数据结构为数据结构b,查询类型是或类型。在一个例子中,前端节点可以配置处理逻辑,该处理逻辑用于自动发现like子句结构,并将该like子句结构转换成like函数(andlike函数或者orlike函数),该like函数包括数据结构的索引标识、目标字段信息、查询类型。基于此,在根据数据请求生成执行计划时,当该数据请求中包括like子句结构时,则这个like子句结构可以与处理逻辑相匹配,继而将like子句结构转换成like函数。例如,处理逻辑可以包括但不限于:将content…like‘%…%’andcontent…like‘%…%’转换为andlike函数(s,t),将content…like‘%…%’orcontent…like‘%…%’转换为orlike函数(s,t),s表示目标字段信息,t表示索引标识。基于此,若数据请求包括contentalike‘%xx%’andcontentalike‘%yy%’andcontentalike‘%zz%’,以及,contentblike‘%aa%’orcontentblike‘%bb%’orcontentblike‘%cc%’。基于处理逻辑,可以将contentalike‘%xx%’andcontentalike‘%yy%’andcontentalike‘%zz%’,转换为andlike函数(a,索引标识a)。基于处理逻辑,可以将contentblike‘%aa%’orcontentblike‘%bb%’orcontentblike‘%cc%’,转换为orlike函数(b,索引标识b)。综上所述,执行计划可以包括andlike函数(a,索引标识a),orlike函数(b,索引标识b)。步骤406,前端节点将该执行计划发送给计算节点,并将上述数据结构与索引标识的映射关系(参见表1所示的映射关系)发送给该计算节点。步骤407,计算节点接收该执行计划和该映射关系,并存储该映射关系。步骤408,计算节点从执行计划中获取索引标识、目标字段信息、查询类型。例如,若执行计划包括两个子计划,第一个子计划是(a,索引标识a,和类型),第二个子计划是(b,索引标识b,或类型)。基于第一个子计划,索引标识是索引标识a、目标字段信息是字段a、查询类型是和类型。基于第二子计划,索引标识是索引标识b、目标字段信息是字段b、查询类型是或类型。步骤409,计算节点通过该索引标识查询该映射关系,得到与该索引标识对应的数据结构。例如,计算节点可以通过索引标识a查询该映射关系,得到与该索引标识a对应的数据结构是数据结构a;以及,计算节点可以通过索引标识b查询该映射关系,得到与该索引标识b对应的数据结构是数据结构b。步骤410,计算节点查询数据库中是否存在与该数据结构对应的数据。在一个例子中,基于目标字段信息,计算节点可以从数据库中确定与该目标字段信息对应的目标字段,针对所述目标字段的每个数据行,可以查询所述数据行中是否存在与该数据结构对应的数据。此外,基于查询类型,若该查询类型是和类型,当数据行中包括与该数据结构的所有关键字匹配的数据时,则可以确定该数据行存在与该数据结构对应的数据,反之,确定该数据行不存在与该数据结构对应的数据;或者,若该查询类型是或类型,当数据行中包括与该数据结构的任一关键字匹配的数据时,则可以确定该数据行存在与该数据结构对应的数据,反之,确定该数据行不存在与该数据结构对应的数据。例如,针对索引标识是索引标识a、目标字段信息是字段a、查询类型是和类型的执行计划,计算节点可以从数据库中查询到字段a(即列属性是字段a)的每个数据行。针对每个数据行,查询该数据行中是否存在与该数据结构对应的数据,对此查询过程不做限制,与数据结构的类型有关。总之,若该数据行中包括与该数据结构的所有关键字匹配的数据时,则可以确定该数据行存在与该数据结构对应的数据,反之,确定该数据行不存在与该数据结构对应的数据。例如,可以为数据结构设置与关键字数量等长的bitset(位标记数组),假设关键字数量为n,则bitset有n个比特,每个比特的初始值为0,每个关键字对应一个比特。例如,数据结构包括关键字xx、关键字yy、关键字zz时,关键字xx对应第一个比特,关键字yy对应第二个比特,关键字yy对应第三个比特。在数据行的扫描过程中,若扫描到数据行包括关键字xx,则将第一个比特置为1;若扫描到数据行包括关键字yy,则将第二个比特置为1;若扫描到数据行包括关键字zz,则将第三个比特置为1。显然,在数据行的扫描过程结束后,若bitset的每个比特均为1,则说明数据行中包括与所有关键字匹配的数据;若bitset的任一比特为0,则说明数据行中不包括与所有关键字匹配的数据。又例如,针对索引标识是索引标识b、目标字段信息是字段b、查询类型是或类型的执行计划,计算节点可以从数据库中查询到字段b(即列属性是字段b)的每个数据行。针对每个数据行,查询该数据行中是否存在与该数据结构对应的数据,对此查询过程不做限制,与数据结构的类型有关。总之,若该数据行中包括与该数据结构的任一关键字匹配的数据时,则可以确定该数据行存在与该数据结构对应的数据,反之,确定该数据行不存在与该数据结构对应的数据。在上述实施例中,数据结构与索引标识的映射关系可以是只读的,允许任意转移、复制、缓存等,支持集群间共享复用。综上所述,计算节点可以启动多个实体,针对所述多个实体中的每个实体,均可以获取该映射关系,并根据该映射关系确定与索引标识对应的数据结构,继而查询数据库中是否存在与该数据结构对应的数据。因此,多个实体可以并行执行数据查询操作,从而可以提高查询效率,大大降低整个匹配的性能开销,提高计算节点的整体处理性能。其中,实体可以包括但不限于:进程、或者线程、或者容器、或者虚拟机。在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。基于上述技术方案,本申请实施例中,针对待查询的多个关键字,可以根据多个关键字生成数据结构,并查询数据库中是否存在与该数据结构对应的数据。这样,查询操作的计算复杂度比较低,降低查询操作的时间开销,节省数据湖分析系统的计算资源,提高处理性能,节省计算性能和用户成本。具体的,在传统方式中,假设目标字段的平均长度为m,单个关键字的平均长度为n,关键字的数量为k,数据行的行数为h,则单个数据行的计算复杂度为:n*m*k,所有数据行的计算复杂度为:n*m*k*h。本申请实施例中,通过构建包括多个关键字的数据结构(如ac自动机),并查询数据库中是否存在与该数据结构对应的数据,基于ac自动机的查询原理,则单个数据行的计算复杂度为:n*k+m,所有数据行的计算复杂度为:n*k+m*h。综上所述,单个数据行的计算复杂度比传统方式有明显性能提升,所有数据行的计算复杂度比传统方式有明显性能提升,也就是说,上述方式可以显著降低查询操作的计算复杂度。基于与上述方法同样的申请构思,本申请实施例还提供一种数据查询装置,如图6所示,为所述数据查询装置的结构图,所述数据查询装置包括:获取模块61,用于获取数据请求,所述数据请求包括多个关键字;生成模块62,用于根据多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;发送模块63,用于将所述执行计划发送给计算节点,以使所述计算节点获取所述执行计划中的索引标识对应的数据结构,并查询数据库中是否存在与所述数据结构对应的数据。在一个例子中,所述数据查询装置,还包括(在图中未示出):建立模块,用于建立所述数据结构与所述索引标识的映射关系;处理模块,用于在指定存储位置存储所述映射关系,以使所述计算节点从所述指定存储位置的映射关系中获取所述执行计划中的索引标识对应的数据结构;或者,将所述映射关系发送给所述计算节点,以使所述计算节点从自身的映射关系中获取所述执行计划中的索引标识对应的数据结构。所述生成模块62根据所述多个关键字生成数据结构时具体用于:基于特定算法,生成包括所述多个关键字的数据结构;所述数据结构包括多模式匹配的数据结构;其中,所述多模式匹配的数据结构包括:字典树结构,或者,ac自动机结构,或者,双数组字典树结构。基于与上述方法同样的申请构思,本申请实施例还提供一种前端节点设备,包括:处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:获取数据请求,所述数据请求包括多个关键字;根据所述多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;将所述执行计划发送给计算节点,以使所述计算节点获取所述执行计划中的索引标识对应的数据结构,并查询是否存在与所述数据结构对应的数据。本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令;所述计算机指令被执行时进行如下处理:获取数据请求,所述数据请求包括多个关键字;根据所述多个关键字生成数据结构,为所述数据结构分配索引标识;根据所述数据请求生成执行计划,所述执行计划包括所述索引标识;将所述执行计划发送给计算节点,以使所述计算节点获取所述执行计划中的索引标识对应的数据结构,并查询是否存在与所述数据结构对应的数据。参见图7所示,为本申请实施例中提出的前端节点设备的结构图,所述前端节点设备70可以包括:处理器71,网络接口72,总线73,存储器74。存储器74可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据等等。例如,存储器74可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等)。基于与上述方法同样的申请构思,本申请实施例还提供一种数据查询装置,如图8所示,为所述数据查询装置的结构图,所述数据查询装置包括:获取模块81,用于获取执行计划;其中,所述执行计划包括数据结构的索引标识,所述数据结构是根据数据请求包括的多个关键字生成的;获取所述执行计划中的所述索引标识对应的数据结构;查询模块82,用于查询是否存在与所述数据结构对应的数据。所述获取模块81获取所述执行计划中的所述索引标识对应的数据结构时具体用于:若前端节点将映射关系存储在指定存储位置,则从所述指定存储位置的映射关系中,获取与所述索引标识对应的数据结构;或者,若前端节点将映射关系发送给计算节点,则从所述计算节点本地存储的映射关系中,获取与所述索引标识对应的数据结构;其中,所述映射关系为数据结构与索引标识的映射关系。基于与上述方法同样的申请构思,本申请实施例还提供一种计算节点设备,包括:处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:获取执行计划;其中,所述执行计划包括数据结构的索引标识,所述数据结构是根据数据请求包括的多个关键字生成的;获取所述执行计划中的所述索引标识对应的数据结构;查询是否存在与所述数据结构对应的数据。本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令;所述计算机指令被执行时进行如下处理:获取执行计划;其中,所述执行计划包括数据结构的索引标识,所述数据结构是根据数据请求包括的多个关键字生成的;获取所述执行计划中的所述索引标识对应的数据结构;查询是否存在与所述数据结构对应的数据。参见图9所示,为本申请实施例中提出的计算节点设备的结构图,所述计算节点设备90可以包括:处理器91,网络接口92,总线93,存储器94。存储器94可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据等等。例如,存储器94可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等)。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1