数据库中数据的查询方法和装置、存储介质及电子设备

文档序号:168712 发布日期:2021-10-29 浏览:19次 >En<

阅读说明:本技术 数据库中数据的查询方法和装置、存储介质及电子设备 (Method and device for querying data in database, storage medium and electronic equipment ) 是由 袁建伟 于 2021-01-22 设计创作,主要内容包括:本发明公开了一种数据库中数据的查询方法和装置、存储介质及电子设备。其中,该方法包括:获取从多个查询项中确定出的目标查询项,其中,多个查询项中的每一个查询项与数据库中的一个字段对应;根据目标查询项生成目标查询语句,其中,目标查询语句用于从数据库中查询与目标查询项对应的目标字段下的数据;将目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,目标查询引擎为目标查询项对应的目标字段下的数据所在的目标数据库使用的查询引擎;在目标查询引擎中执行第一查询语句,得到与目标查询项对应的查询结果。本发明解决了查询数据库中数据效率低的技术问题。(The invention discloses a method and a device for querying data in a database, a storage medium and electronic equipment. Wherein, the method comprises the following steps: obtaining a target query item determined from a plurality of query items, wherein each query item in the plurality of query items corresponds to a field in a database; generating a target query statement according to the target query item, wherein the target query statement is used for querying data under a target field corresponding to the target query item from a database; converting the target query statement into a first query statement matched with a target query engine, wherein the target query engine is a query engine used by a target database in which data under a target field corresponding to a target query item is located; and executing the first query statement in the target query engine to obtain a query result corresponding to the target query item. The invention solves the technical problem of low data efficiency in database query.)

数据库中数据的查询方法和装置、存储介质及电子设备

技术领域

本发明涉及计算机领域,具体而言,涉及一种数据库中数据的查询方法和装置、存储介质及电子设备。

背景技术

现有技术中,当用户需要查询数据库中的数据时,由于不同的数据库的查询引擎有差异,因此,使用的查询语句也有差异。对于不同的查询引擎,用户需要对应输入与查询引擎对应的查询语句,才能查询对应数据库中的数据,查询效率低。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种数据库中数据的查询方法和装置、存储介质及电子设备,以至少解决查询数据库中数据效率低的技术问题。

根据本发明实施例的一个方面,提供了一种数据库中数据的查询方法,包括:获取从多个查询项中确定出的目标查询项,其中,上述多个查询项中的每一个查询项与数据库中的一个字段对应;根据上述目标查询项生成目标查询语句,其中,上述目标查询语句用于从上述数据库中查询与上述目标查询项对应的目标字段下的数据;将上述目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,上述目标查询引擎为上述目标查询项对应的上述目标字段下的数据所在的目标数据库使用的查询引擎;在上述目标查询引擎中执行上述第一查询语句,得到与上述目标查询项对应的查询结果。

根据本发明实施例的另一方面,还提供了一种数据库中数据的查询装置,包括:第一获取单元,用于获取从多个查询项中确定出的目标查询项,其中,上述多个查询项中的每一个查询项与数据库中的一个字段对应;生成单元,用于根据上述目标查询项生成目标查询语句,其中,上述目标查询语句用于从上述数据库中查询与上述目标查询项对应的目标字段下的数据;转换单元,用于将上述目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,上述目标查询引擎为上述目标查询项对应的上述目标字段下的数据所在的目标数据库使用的查询引擎;执行单元,用于在上述目标查询引擎中执行上述第一查询语句,得到与上述目标查询项对应的查询结果。

作为一种可选的示例,上述根据上述目标查询项生成目标查询语句包括:获取上述目标查询项的标识;从标识与查询字段的对应表中,确定出与上述标识对应的查询字段;将上述查询字段输入到原始查询语句的目标位置,得到上述目标查询语句,其中,上述原始查询语句为不包括上述查询字段的上述目标查询语句。

作为一种可选的示例,上述将上述查询字段输入到原始查询语句的目标位置,得到上述目标查询语句包括:在上述目标查询项包括多个的情况下,获取多个上述目标查询项之间的关系,其中,上述关系包括以下至少之一:互斥、和、或;按照上述关系获取上述原始查询语句;将上述查询字段输入到上述原始查询语句的上述目标位置,得到上述目标查询语句。

作为一种可选的示例,上述在上述目标查询引擎中执行上述第一查询语句,得到与上述目标查询项对应的查询结果包括:将上述第一查询语句确定为查询任务队列中的目标查询任务;将上述目标查询任务分配给分布式查询系统中的多个线程中的目标线程,由上述目标线程执行上述目标查询任务得到上述查询结果。

根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述数据库中数据的查询方法。

根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过上述计算机程序执行上述的数据库中数据的查询方法。

在本发明实施例中,采用了获取从多个查询项中确定出的目标查询项,其中,上述多个查询项中的每一个查询项与数据库中的一个字段对应;根据上述目标查询项生成目标查询语句,其中,上述目标查询语句用于从上述数据库中查询与上述目标查询项对应的目标字段下的数据;将上述目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,上述目标查询引擎为上述目标查询项对应的上述目标字段下的数据所在的目标数据库使用的查询引擎;在上述目标查询引擎中执行上述第一查询语句,得到与上述目标查询项对应的查询结果的方法,由于在上述方法中,在获取到目标查询语句之后,可以按照所要查询的目标数据库对应的目标查询引擎,将目标查询语句自动转换为目标查询引擎使用的第一查询语句,进而通过执行第一查询语句得到查询结果,提高了查询数据库中的数据的效率,进而解决了查询数据库中数据效率低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种可选的数据库中数据的查询方法的应用环境的示意图;

图2是根据本发明实施例的另一种可选的数据库中数据的查询方法的应用环境的示意图;

图3是根据本发明实施例的一种可选的数据库中数据的查询方法的流程的示意图;

图4是根据本发明实施例的一种可选的数据库中数据的查询方法的查询页面的示意图;

图5是根据本发明实施例的一种可选的数据库中数据的查询方法的查询结果的示意图;

图6是根据本发明实施例的一种可选的数据库中数据的查询方法的查询任务的示意图;

图7是根据本发明实施例的一种可选的数据库中数据的查询方法的系统框架图;

图8是根据本发明实施例的一种可选的数据库中数据的查询方法的查询项和id的映射示意图;

图9是根据本发明实施例的一种可选的数据库中数据的查询方法的多线程示意图;

图10是根据本发明实施例的一种可选的数据库中数据的查询方法的抢占任务锁的流程示意图;

图11是根据本发明实施例的一种可选的数据库中数据的查询方法的用户权限校验的流程示意图;

图12是根据本发明实施例的一种可选的数据库中数据的查询方法的执行任务的流程示意图;

图13是根据本发明实施例的一种可选的数据库中数据的查询方法的查询数据的示意图;

图14是根据本发明实施例的一种可选的数据库中数据的查询方法的查询结果映射的流程示意图;

图15是根据本发明实施例的一种可选的数据库中数据的查询装置的结构示意图;

图16是根据本发明实施例的一种可选的电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例的一个方面,提供了一种数据库中数据的查询方法,可选地,作为一种可选的实施方式,上述数据库中数据的查询方法可以但不限于应用于如图1所示的环境中。

如图1所示,终端设备102包括了存储器104,用于存储终端设备102运行过程中产生的各项数据、处理器106,用于处理运算上述各项数据、显示器108,用于显示查询项。终端设备102可以通过网络110与服务器112之间进行数据交互。服务器112包括数据库114,用于存储各项数据,处理引擎116,用于查询数据。步骤S102到步骤S106,终端设备102向服务器112发送目标查询语句,由服务器将目标查询语句转换为第一查询语句,并执行第一查询语句,得到查询结果。

作为一种可选的实施方式,上述数据库中数据的查询方法可以但不限于应用于如图2所示的环境中。

如图2所示,服务器202包括了数据库204,用于存储各项数据、查询引擎206,用于查询数据、服务器可以外接显示器208,用于显示查询项与查询结果。服务器202可以执行步骤S202到步骤S208,显示查询项并获取目标查询项,进而确定出第一查询语句,执行第一查询语句得到查询结果。

可选地,在本实施例中,上述终端设备可以是配置有客户端的终端设备,可以包括但不限于以下至少之一:手机(如Android手机、iOS手机等)、笔记本电脑、平板电脑、掌上电脑、MID(Mobile Internet Devices,移动互联网设备)、PAD、台式电脑、智能电视等。客户端可以是视频客户端、即时通信客户端、浏览器客户端、教育客户端等。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络。上述服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器。上述仅是一种示例,本实施例中对此不作任何限定。

服务器还可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

可选地,作为一种可选的实施方式,如图3所示,上述数据库中数据的查询方法包括:

S302,获取从多个查询项中确定出的目标查询项,其中,多个查询项中的每一个查询项与数据库中的一个字段对应;

S304,根据目标查询项生成目标查询语句,其中,目标查询语句用于从数据库中查询与目标查询项对应的目标字段下的数据;

S306,将目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,目标查询引擎为目标查询项对应的目标字段下的数据所在的目标数据库使用的查询引擎;

S308,在目标查询引擎中执行第一查询语句,得到与目标查询项对应的查询结果。

可选地,上述数据库中数据的查询方法可以应用于查询数据库中的数据的过程中。在查询数据时,可以在显示界面上显示查询项,用户可以从查询项中选择目标查询项,然后生成目标查询语句,通过将目标查询语句转换为第一查询语句,并运行第一查询语句来从数据库中查询数据,得到查询结果。由于在查询数据库中的数据的时候,可以自动的将目标查询语句转换为目标查询引擎所使用的第一查询语句,因此,提高了从数据库中查询数据的效率。

可选地,本实施例中的查询语句可以为用于从数据库中查询数据的SQL语句。通过在页面上显示查询项,从查询项中选择目标查询项,根据目标查询项生成对应的SQL语句,使用SQL语句来查询数据库中的数据。

可选地,本实施例中在显示查询页面之前,可以按照数据库中存储的数据,设置查询项。数据库中的数据可能包含多个表,每一个表又包含多个字段。可以将数据库中的不重复字段,每一个字段对应生成一个查询项,查询项可以为字段的名称或者为用于表示字段内容的名字。查询项可以按照数据类型或者数据的关联关系归类,分成不同的类别。

在显示查询页面,显示查询项时,可以按照不同的类别显示查询项,可以按照设置显示所有的查询项或者显示部分查询项,可以搜索要显示的查询项并显示查询项。查询项的显示数量与显示内容可以按照用户的设置进行增删,也可以通过权限账号进行设置。通过权限账号进行设置,可以减少用户的设置操作,而用户自己设置,可以实现个性化。在显示查询项之后,可以从查询项中确定出目标查询项。根据查询项与查询语句的对应关系,生成与目标查询项对应的目标查询语句,如SQL语句,将SQL语句转换为目标查询引擎中使用的SQL语句,即第一查询语句,通过运行第一查询语句从而从数据库中查找数据,得到查询结果。

可选地,本申请实施例中,将目标查询语句转换为第一查询语句可以有多种方法。

例如,可以在目标查询语句中添加目标查询引擎的目标数据库的名称或标志,从而标记目标查询引擎对应的目标数据库,以得到第一查询语句。目标查询语句可以为包括了查询的目标查询项的语句,然后,在该语句中,添加目标数据库的名称,组合得到第一查询语句。目标数据库的名称可以添加在查询语句中目标查询项之前,通过字符与目标查询项连接。例如,字符可以为“.”“/”等。

或者,在将目标查询语句转换为第一查询语句时,可以确定目标数据库,然后,确定目标查询语句中的目标查询项在目标数据库中的对应字段名称,然后将目标查询语句中的目标查询项转换为目标数据库中的对应字段的名称,得到第一查询语句。例如,时间字段在目标查询语句所在的数据库与目标数据库中表示是不同的。因此,通过目标查询项的转换,可以将目标查询语句转换为第一查询语句。当然,本实施例中是获取到目标查询项之后,先生成目标查询语句,在向目标数据库转换,生成第一查询语句。如果预先知晓所要查询的目标数据库,则可以直接使用目标查询项生成目标数据库下的字段,然后生成第一查询语句,从而可以提高生成第一查询语句的效率。

作为另一种实例,本申请实施例中,对于目标查询语句,可能对应的目标数据库有不同的多个,则可以将目标查询语句拆分为多个,每一个用于查询目标查询项中的一个或几个,然后,将拆分后的每一个目标查询语句生成一个第一查询语句,使用第一查询语句查询对应目标数据库下的数据。例如,目标查询项有三个,将生成的目标查询语句拆分成两个语句,一个用于查询一个目标查询项,另一个目标查询语句用于查询另外两个目标查询项。然后根据所要查询的目标查询项所在的目标数据库,将拆分后的目标查询语句转换为对应目标数据库下的第一查询语句。

可选地,在得到第一查询语句,并运行第一查询语句得到查询结果之后,可以显示查询结果,也可以将查询结果自动发送给目标接收账号。

本实施例提出一种显示查询页面的示例。如图4所示,图4为一种可选的查询页面的示意图。查询页面中显示有广告主id、代理商id等多个查询项,多个查询项按照流量相关、广告主相关、广告相关进行了分类显示。查询项之前包括了两个方形选择框,任意一个选择框被选择,表示可选项被选为目标可选项。两个方形选择框中,第一个选择框被选择,表示查询项之间的关系为和,而第二个选择框被选择,表示查询项之间的关系为互斥。还可以显示更多的选择框,如在显示第三个选择框的情况下,第三个选择框被选择可以表示查询项之间的关系为或。通过该查询页面,不仅仅可以获取目标查询项,还可以获取目标查询项之间的关系。任务名称为本次查询的任务的标识,用于区分不同的任务。目标接收账号可以为查询后的查询结果的接收账号。枚举值反馈方式可以为查询结果中的内容的语言设置。可以同时输出中英文。通过点击提交任务按钮从而提交任务,系统获取到目标查询项。

在查询页面中选择目标查询项后,生成第一查询语句并执行第一查询语句后,得到查询结果。查询结果可以跳转到显示页面或者新建显示页面进行显示,或者在当前页面(查询页面或者其他页面上)弹出浮层显示查询结果。弹出的浮层会遮挡住当前页面,弹出的浮层可以关闭。例如,如图5所示,以日期、资源站点、广告位名称和客户名称为目标查询项为例,通过查询得到查询结果,以浮层的方式弹出查询结果。可以点击浮层空白处或者点击查询页面的空白处来关闭浮层。

采用上述实施例中的方法,首先,可以在前台的显示界面上显示多个查询项,然后由用户选择目标查询项。则用户可以直接从多个查询项中选择目标查询项。系统获取到目标查询项之后,可以按照目标查询项对应的字段,生成目标查询语句。目标查询语句可以有一句或多句,可以按照目标查询项的数据类型划分。例如,用于查询一个类型的目标查询项的目标查询语句划分为一句目标查询语句。当然,也可以使用一句目标查询语句查询多个类型的目标查询项。本实施例不做限定。接着,系统将目标查询语句转换为第一查询语句。转换时,用户无需参与,系统可以确定出目标查询语句所要查询的目标查询项所在的目标数据库,然后将目标查询语句中添加目标数据库的名称或标志,以将目标查询语句转换为目标数据库下使用的第一查询语句。使用第一查询语句查询目标数据库中的目标查询项的数据。在此过程中,用户只需要选择目标查询项后,就可以等待查看查询结果,无需过度参与,大大提高了查询数据库中数据的查询效率。

通过本实施例,通过上述方法,从而实现了可以按照所要查询的目标数据库对应的目标查询引擎,将目标查询语句自动转换为目标查询引擎使用的第一查询语句,进而通过执行第一查询语句得到查询结果,提高了查询数据库中的数据的效率的效果。

作为一种可选的示例,在将目标查询语句转换为与目标查询引擎匹配的第一查询语句之前,方法还包括:

确定目标查询项对应的目标字段下的数据的第一数据类型;

根据第一数据类型,从多个数据库中确定出目标数据库,其中,目标数据库中的数据的第二数据类型与第一数据类型一致;

将查询目标数据库所使用的查询引擎确定为目标查询引擎。

可选地,本实施例中,数据库中的数据可能有不同的类型,不同类型的数据可能存储在不同的表或者不同的数据库中。在获取到目标查询语句之后,可以根据目标查询语句所要查询的数据的第一数据类型,自动匹配对应的目标数据库,匹配手段为,目标数据库中存储的数据的第二数类型与第一数据类型一致。匹配成功后,则目标数据库使用的查询引擎为目标查询引擎。使用目标查询引擎来查询目标数据库中的数据,得到查询结果。在自动匹配的时,可以获取每一个数据库中存储的数据的第一数据类型,和从目标查询语句中获取所要查询的数据的第一数据类型,完成匹配。

作为一种可选的实施例,将目标查询语句转换为与目标查询引擎匹配的第一查询语句包括:

按照目标查询引擎的类型,从查询语句转换表中查询目标转换规则,其中,查询语句转换表中记录有目标查询语句与各个查询引擎下使用的查询语句的转换规则;

使用目标转换规则将目标查询语句转换为目标查询引擎使用的第一查询语句。

可选地,本实施例中,在使用目标查询引擎,在目标数据库中查询对应的数据时,可以对目标查询语句进行语句的转换,转换为目标查询引擎所使用的第一查询语句。转换目标查询语句到第一查询语句的目的在于,将标准的目标查询语句转换为特定的查询引擎下所使用的第一查询语句,提高查询效率。

在具体的转换时,可以通过预定的转换关系进行转换。如预先设置目标查询语句向各个查询引擎转换的转换规则,然后按照转换规则转换得到第一查询语句。

作为一种可选的实施例,在目标查询引擎中执行第一查询语句,得到与目标查询项对应的查询结果包括:

在目标查询引擎有多个的情况下,使用多个目标查询引擎中的每一个目标查询引擎执行与每一个目标查询引擎对应的第一查询语句,得到多个第一结果;

将多个第一结果汇总为查询结果。

可选地,如果在确定目标查询语句所要查询的数据的第一数据类型之后,所要查询的数据分布在不同的目标服务器,则使用不同的目标服务器对应的目标查询引擎分别查询各自的目标服务器中的数据,实现并行查询。在查询结束后,得到多个目标数据库的第一结果,将第一结果汇总为查询结果。

在汇总的时候,可以按照字段的名称将相同字段的数据汇总到一个字段下,将不同的字段按照字段的名称进行排序。

当然,在查询时,需要将目标查询语句分别转换为不同的目标查询引擎所使用的第一查询语句。

作为一种可选的实施例,根据目标查询项生成目标查询语句包括:

获取目标查询项的标识;

从标识与查询字段的对应表中,确定出与标识对应的查询字段;

将查询字段输入到原始查询语句的目标位置,得到目标查询语句,其中,原始查询语句为不包括查询字段的目标查询语句。

可选地,本实施例中,可以为每一个查询项生成一个唯一标识,通过该唯一标识,可以确定出该查询项对应的是数据库中的哪一个字段的数据。或者,本实施例中,可以预先建立查询项和查询字段的对应关系,在获取到查询项之后,可以根据对应关系自动匹配出对应的查询字段。查询字段可以为SQL语句中查询所使用的字段。在获取到查询字段之后,可以将查询字段与原始查询语句合并为目标查询语句。合并时,可以将查询字段输入到原始查询语句的目标位置,或者,将查询字段经过数据处理,输入到原始查询语句的目标位置。原始查询语句可以为不包括查询字段的目标查询语句,原始查询语句可以包括查询所使用的固定的SQL语句,通过与查询字段的结合,可以查询查询字段对应的数据。

作为一种可选的示例,将查询字段输入到原始查询语句的目标位置,得到目标查询语句包括:

在目标查询项包括多个的情况下,获取多个目标查询项之间的关系,其中,关系包括以下至少之一:互斥、和、或;

按照关系获取原始查询语句;

将查询字段输入到原始查询语句的目标位置,得到目标查询语句。

也就是说,由于在查询数据库中的数据时,查询的目的不同,因此,可能会在选择目标查询项之后,需要查看目标查询项之间的关系,例如,在确定目标查询项为广告主名称和广告播放时间之后,需要查看两者关系。如两者关系为和,则获取用于查询两个字段的交集的原始查询语句,并与广告主名称和广告播放时间进行组合得到目标查询语句,查询得到广告主名称和广告播放时间的交集。如广告主名称和广告播放时间的关系为或,则获取查询广告主名称和广告播放时间中的任意一者的原始查询语句,和广告主名称和广告播放时间组合得到目标查询语句,查询得到广告主名称和广告播放时间的并集。

作为一种可选的示例,在目标查询引擎中执行第一查询语句,得到与目标查询项对应的查询结果包括:

将第一查询语句确定为查询任务队列中的目标查询任务;

将目标查询任务分配给分布式查询系统中的多个线程中的目标线程,由目标线程执行目标查询任务得到查询结果。

可选地,本实施例中可以在选择目标查询项之后,无论选择一个还是多个目标查询项,无论是否选择了各个目标查询项之间的关系,只要确定了当前选择的目标查询项,就可以生成一条查询任务。该查询任务会被分配给分布式查询系统中多个线程的一个线程进行查询,分布式查询系统包括了多个线程,以实现对多个查询任务的并行查询。例如,如图6所示,图6为多个查询任务。查询任务可以分为普通任务和周期任务,周期任务每一个周期查询一次。可以通过任务的信息来查询任务。显示可以显示一部分任务,也可以显示所有的任务,显示不全时,分页显示。每一个任务都可以被预览、下载、复制等,普通任务可以被周期化,周期化任务可以被设置为普通任务。未完成的任务可以被停止。每一个任务还可以被预览、查看查询语句也就是SQL语句或者查看点选条件也就是目标查询项等。

作为一种可选的示例,在由目标查询引擎执行第一查询语句,得到与目标查询项对应的查询结果之前,方法还包括:获取用于接收查询结果的目标接收账号的账号标识;在由目标查询引擎执行第一查询语句,得到与目标查询项对应的查询结果之后,方法还包括:将查询结果发送给目标接收账号。

可选地,在获取目标查询项时,还可以获取目标接收账号的账号标识,也就是说,本实施例中,可以在查询得到查询结果之后,自动将查询结果发送到目标接收账号,可以显示查询结果或者不显示查询结果。发送给目标接收账号的查询结果可以被目标接收账号查看,其他账号可以设置没有查看权限。

结合一个具体示例进行解释。本实施例中,可以显示如图4所示的查询页面,查询页面中显示查询项。用户可以点选其中的任意查询项,来获得目标查询项。用户可以输入本次查询的任务名称,已做后续的追踪和操作,还可以输入目标接收账号的账号标识,在查询完成后,可以将查询结果自动发送给目标接收账号。图5、6为显示查询结果和显示查询任务的示意图。

图7为本实施例的系统框架图。用户在前端界面点选所需要查询的目标查询项,得到查询任务,前端子系统将会将查询任务的任务信息存入数据库,后台子系统异步从数据库中获取任务,解析计算之后进行查询,返回查询结果,最后前端子系统展示查询结果。

一:前台子系统

前台子系统负责用户的交互,用户能在可视化界面选择数据模型和各类目标查询项,用户提交查询任务之后,前端模块将会将用户可视化选择的目标查询项转化为统一的查询协议。前端子系统会把目标查询项分成客户相关、广告相关、流量相关等不同的类别,不同类别目标查询项能够实现互斥选择,另一方面前端子系统还负责目标查询项的身份标识号(identity document,简称为id)到名字或者名字到id的映射,并且还支持各类自定义目标查询项的参数输入。id和中文名字的前端映射如图8所示。

图8中,通过浮层显示有目标查询项的名称和id的映射关系。浮层可以关闭。

前后端交互的统一查询协议如下图所示,主要包括筛选项,聚合项,时间项,自定义项等。如下表所示:

以下为一个示例性代码:

二:后台子系统

后台子系统主要负责获取前端提交的查询任务,将查询任务解析权限校验之后,生成计算引擎能够运行的sql语句,计算执行反馈之后返回查询结果。后台服务采用分布式多线程实现,每个线程单独处理一个查询任务,彼此之间相互独立,无感知,采用分布式调度管理(zookeeper,简称为zk),整个系统具有高可用性和较好的水平拓展能力。结构如图9所示。

DB中主要有任务接口表、字段映射meta表、实体映射表,数据分区表、字段名称表等等。任务接口表设计如下:

抢锁解析模块

抢锁解析模块主要负责获取前端提交的任务,抢任务锁,解析校验任务语法和内容是否合法,相关的数据源是否ready等。主要流程如图10的步骤S1012到S1020所示:开始带哦度任务时,mysql获取task,然后判断zk抢占任务是否成功,若抢占任务成功,则修改数据库flag状态,并校验任务是否合法,如果任务合法,则校验数据源是否ready,如果数据源ready,则继续执行任务。在此过程中,如果zk抢占任务锁失败,则休眠1秒,返回mysql获取task的步骤。如果校验任务不合法,则修改BD状态为失败并释放zk锁,并返回mysql获取task的步骤。如果简要数据源未ready,则标记下次运行时间,释放zk所,并返回mysql获取task的步骤。

权限校验模块

权限校验模块主要功能是校验用户是否有相关数据的查询权限,并且对实际查询的数据做限制。对于查询数据的限制主要有两种a)静态限制,通过改写sql直接将过滤条件加入到where条件中,限制结果数据。b)动态限制,在每次查询的过程中实时的join相关配置,并且筛选相关结果。流程如图11的步骤S1102到S1108所示:根据用户id获取用户权限,校验用户权限,在用户有权限的情况下,生成权限限制sql片段,若是用户无权限,则提示用户无权限返回失败的消息。

生成改写模块

该模块主要负责将任务解析改写成物理引擎能执行的sql。主要分为几步:a)多表路由,一个模型可能对应多个表,根据用户选择指标纬度的不同和数据库中的路由图(路由图记录每个表有哪些指标纬度,每个模型能对应哪些表),映射到不同实体表。b)字段映射,将前端选择的指标纬度转化成后台实际的sql字段,根据字段mapping路由表,一个字段可能是从底表直接获取的,也可能是维表join出来的,也可能根据复杂的计算逻辑计算出来的。c)最终sql生成和优化,将实体表和sql字段改写成真正能执行的sql。流程如图12的步骤S1202到S1208所示。

任务执行模块

任务执行模块主要负责将查询语句根据执行引擎拆分成不同子查询并将结果聚合返回。主要分为以下几步a)查询拆分,采用深度优先遍历递归下推,按照union和join拆分成逻辑子拆分,基于逻辑子查询根据不同的执行引擎拆分成物理子查询。b)查询重写与分发,使用SQLAlchemy dialect将原始SQL和目标查询引擎的语法差异进行适配,分发到叶子节点查询。c)执行引擎汇总,将子查询得到的结果进行汇总聚合得到最终查询结果。

查询示例如图13所示:1302为全局汇总节点,1304为逻辑原子查询,1306为物理原子查询,1308为逻辑原子查询中的pivot查询,1310为逻辑原子查询中的tdw查询,1312为逻辑原子查询中的druid查询,1314为逻辑原子查询中的excel查询。

任务反馈模块

任务反馈模块主要负责将查询结果补充必要的中文解释并最终输出。由于原始数据为了减少存储和提高查询效率往往采用英文字母或者数字进行保存,如果直接返回字母或者数字可读性较差,因此需要进行id到中文的mapping过程。首先通过数据库中的meta信息判断某列是否需要从到id到中文的映射,如需要映射则从redis中获取相关的映射关系进行反馈。主要流程如图14的步骤S1402到步骤S1410所示。通过该过程,可以将因为结果映射为中文结果,输出中英文结果。当然也可以输出中文结果或英文结果,可以根据设置确定输出的查询结果。

本实施例能够大大减少数据的查询和使用门槛,用户不需要懂SQL就能方便的取数;并且屏蔽了底层的字段业务逻辑和数据差异,使用更加简单;用户不需要写复杂的SQL语句,大大减少了工作量,提高了工作效率;并且能对特定的SQL进行优化,提高了执行效率;最后能对查询结果进行必要的数据补充,大大提高了数据的可读性;新增修改字段简单,可维护性高,大大提高了开发效率,减低了开发成本。本方法和系统能够支持跨数据源和跨引擎的异构查询和关联,能够实现pb级别的大数据查询,查询速度快可靠性高,指标维度丰富,可定制性强,使用简单,支持多种结果数据反馈方式。基于本方法和系统实现的greenspan点选系统,提供ams丰富的广告数据查询能力。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

根据本发明实施例的另一个方面,还提供了一种用于实施上述数据库中数据的查询方法的数据库中数据的查询装置。如图15所示,该装置包括:

第一获取单元1502,用于获取从多个查询项中确定出的目标查询项,其中,多个查询项中的每一个查询项与数据库中的一个字段对应;

生成单元1504,用于根据目标查询项生成目标查询语句,其中,目标查询语句用于从数据库中查询与目标查询项对应的目标字段下的数据;

转换单元1506,用于将目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,目标查询引擎为目标查询项对应的目标字段下的数据所在的目标数据库使用的查询引擎;

执行单元1508,用于在目标查询引擎中执行第一查询语句,得到与目标查询项对应的查询结果。

可选地,上述数据库中数据的查询装置可以应用于查询数据库中的数据的过程中。在查询数据时,可以在显示界面上显示查询项,用户可以从查询项中选择目标查询项,然后生成目标查询语句,通过将目标查询语句转换为第一查询语句,并运行第一查询语句来从数据库中查询数据,得到查询结果。由于在查询数据库中的数据的时候,可以自动的将目标查询语句转换为目标查询引擎所使用的第一查询语句,因此,提高了从数据库中查询数据的效率。

可选地,本实施例中的查询语句可以为用于从数据库中查询数据的SQL语句。通过在页面上显示查询项,从查询项中选择目标查询项,根据目标查询项生成对应的SQL语句,使用SQL语句来查询数据库中的数据。

可选地,本实施例中在显示查询页面之前,可以按照数据库中存储的数据,设置查询项。数据库中的数据可能包含多个表,每一个表又包含多个字段。可以将数据库中的不重复字段,每一个字段对应生成一个查询项,查询项可以为字段的名称或者为用于表示字段内容的名字。查询项可以按照数据类型或者数据的关联关系归类,分成不同的类别。

在显示查询页面,显示查询项时,可以按照不同的类别显示查询项,可以按照设置显示所有的查询项或者显示部分查询项,可以搜索要显示的查询项并显示查询项。查询项的显示数量与显示内容可以按照用户的设置进行增删,也可以通过权限账号进行设置。通过权限账号进行设置,可以减少用户的设置操作,而用户自己设置,可以实现个性化。在显示查询项之后,可以从查询项中确定出目标查询项。根据查询项与查询语句的对应关系,生成与目标查询项对应的目标查询语句,如SQL语句,将SQL语句转换为目标查询引擎中使用的SQL语句,即第一查询语句,通过运行第一查询语句从而从数据库中查找数据,得到查询结果。

可选地,在得到第一查询语句,并运行第一查询语句得到查询结果之后,可以显示查询结果,也可以将查询结果自动发送给目标接收账号。

本实施例提出一种显示查询页面的示例。如图4所示,图4为一种可选的查询页面的示意图。查询页面中显示有广告主id、代理商id等多个查询项,多个查询项按照流量相关、广告主相关、广告相关进行了分类显示。查询项之前包括了两个方形选择框,任意一个选择框被选择,表示可选项被选为目标可选项。两个方形选择框中,第一个选择框被选择,表示查询项之间的关系为和,而第二个选择框被选择,表示查询项之间的关系为互斥。还可以显示更多的选择框,如在显示第三个选择框的情况下,第三个选择框被选择可以表示查询项之间的关系为或。通过该查询页面,不仅仅可以获取目标查询项,还可以获取目标查询项之间的关系。任务名称为本次查询的任务的标识,用于区分不同的任务。目标接收账号可以为查询后的查询结果的接收账号。枚举值反馈方式可以为查询结果中的内容的语言设置。可以同时输出中英文。通过点击提交任务按钮从而提交任务,系统获取到目标查询项。

在查询页面中选择目标查询项后,生成第一查询语句并执行第一查询语句后,得到查询结果。查询结果可以跳转到显示页面或者新建显示页面进行显示,或者在当前页面(查询页面或者其他页面上)弹出浮层显示查询结果。弹出的浮层会遮挡住当前页面,弹出的浮层可以关闭。例如,如图5所示,以日期、资源站点、广告位名称和客户名称为目标查询项为例,通过查询得到查询结果,以浮层的方式弹出查询结果。可以点击浮层空白处或者点击查询页面的空白处来关闭浮层。

通过本实施例,通过上述方法,从而实现了可以按照所要查询的目标数据库对应的目标查询引擎,将目标查询语句自动转换为目标查询引擎使用的第一查询语句,进而通过执行第一查询语句得到查询结果,提高了查询数据库中的数据的效率的效果。

本实施例的其他示例请参见上述示例,在此不再赘述。

根据本发明实施例的又一个方面,还提供了一种用于实施上述数据库中数据的查询方法的电子设备,该电子设备可以是图16所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图16所示,该电子设备包括存储器1602和处理器1604,该存储器1602中存储有计算机程序,该处理器1604被设置为通过计算机程序执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

获取从多个查询项中确定出的目标查询项,其中,多个查询项中的每一个查询项与数据库中的一个字段对应;

根据目标查询项生成目标查询语句,其中,目标查询语句用于从数据库中查询与目标查询项对应的目标字段下的数据;

将目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,目标查询引擎为目标查询项对应的目标字段下的数据所在的目标数据库使用的查询引擎;

在目标查询引擎中执行第一查询语句,得到与目标查询项对应的查询结果。

可选地,本领域普通技术人员可以理解,图16所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图16其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图16中所示更多或者更少的组件(如网络接口等),或者具有与图16所示不同的配置。

其中,存储器1602可用于存储软件程序以及模块,如本发明实施例中的数据库中数据的查询方法和装置对应的程序指令/模块,处理器1604通过运行存储在存储器1602内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据库中数据的查询方法。存储器1602可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1602可进一步包括相对于处理器1604远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1602具体可以但不限于用于存储数据库中的数据等信息。作为一种示例,如图16所示,上述存储器1602中可以但不限于包括上述数据库中数据的查询装置中的第一获取单元1502、生成单元1504、转换单元1506和执行单元1508。此外,还可以包括但不限于上述数据库中数据的查询装置中的其他模块单元,本示例中不再赘述。

可选地,上述的传输装置1606用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1606包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1606为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

此外,上述电子设备还包括:外接显示器1608,用于显示查询结果;和连接总线1610,用于连接上述电子设备中的各个模块部件。

在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。

根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:

获取从多个查询项中确定出的目标查询项,其中,多个查询项中的每一个查询项与数据库中的一个字段对应;

根据目标查询项生成目标查询语句,其中,目标查询语句用于从数据库中查询与目标查询项对应的目标字段下的数据;

将目标查询语句转换为与目标查询引擎匹配的第一查询语句,其中,目标查询引擎为目标查询项对应的目标字段下的数据所在的目标数据库使用的查询引擎;

在目标查询引擎中执行第一查询语句,得到与目标查询项对应的查询结果。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

30页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种数据处理方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!