一种数据处理方法及装置与流程

文档序号:14870793发布日期:2018-07-06 23:27阅读:155来源:国知局

本发明涉及大数据处理技术领域,尤其涉及一种数据处理方法及装置。



背景技术:

elasticsearch(简称es)是一个分布式、面向列的搜索引擎,提供了一个分布式多用户能力的全文搜索引擎,是当前流行的企业级搜索引擎。

然而实践发现,目前的es实现中,不存在异构查询的相关技术。



技术实现要素:

本发明提供一种数据处理方法及装置,以解决现有es实现中不存在异构查询的相关技术的问题。

根据本发明实施例的第一方面,提供一种数据处理方法,包括:

分别建立搜索引擎与多个数据库的java数据库连接jdbc连接;

创建对应所述多个数据库的关联视图,所述关联视图中包括对应所述多个数据库的描述信息;

当接收到针对所述关联视图的查询请求时,通过与所述多个数据库的jdbc连接分别从所述多个数据库中获取与所述查询请求关联的数据,并输出包括所获取到的数据的查询结果。

根据本发明实施例的第二方面,提供一种数据处理装置,包括前端视图层、restapi、业务实现层以及数据接入层:其中:

所述数据接入层,用于分别建立搜索引擎与多个数据库的java数据库连接jdbc连接;

所述前端视图层,用于创建对应所述多个数据库的关联视图,所述关联视图中包括对应所述多个数据库的描述信息;

所述前端视图层,还用于当接收到针对所述关联视图的查询请求时,通过所述restapi将所述查询请求传递给所述业务实现层;

所述业务实现层,用于将所述查询请求传递给所述数据接入层;

所述数据接入层,还用于通过与所述多个数据库的jdbc连接分别从所述多个数据库中获取与所述查询请求关联的数据,并将获取到的数据合并传输至所述业务实现层;

所述业务实现层,用于当接收到数据接入层传输的数据时,按照预设数据模型进行组装,并通过restapi将组装后的数据传输至所述前端视图层;

所述前端视图层,用于展示组装后的数据。

应用本发明实施例,通过分别建立搜索引擎与多个数据库的jdbc连接,并创建对应该多个数据库的关联视图,当接收到针对关联视图的查询请求时,通过与该多个数据库的jdbc连接分别从多个数据库中获取与查询请求关联的数据,并输出包括所获取到的数据的查询结果,实现了搜索引擎的异构查询。

附图说明

图1是本发明实施例提供的一种数据处理装置的结构示意图;

图2a是本发明实施例提供的一种异构数据库中的数据格式示意图;

图2b是本发明实施例提供的一种合并后的数据格式示意图;

图3是本发明实施例提供的一种数据处理装置的结构示意图;

图4是本发明实施例提供的一种数据处理装置的硬件结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。

请参见图1,为本发明实施例提供的一种数据处理方法的流程示意图,其中,该数据处理方法可以应用于搜索引擎,如es,如图1所示,该数据处理方法可以包括以下步骤:

步骤101、分别建立搜索引擎与多个数据库的jdbc连接。

本发明实施例中,为了实现搜索引擎的异构查询,可以对搜索引擎进行功能扩展,使其能够与其它数据库建立jdbc连接,并建立对应的视图。

相应地,当搜索引擎接收到与多个数据库进行关联的配置指令时,搜索引擎可以分别建立自身与多个数据库的jdbc(javadatabaseconnectivity,java数据库连接)连接。

可选地,在本发明实施例中,与搜索引擎建立jdbc连接的多个数据库可以为异构数据库。

步骤102、创建对应该多个数据库的关联视图。

本发明实施例中,搜索引擎分别建立自身与多个数据库的jdbc连接之后,还可以创建对应该多个数据库的关联视图,并在该关联视图中添加对应该多个数据库的描述信息,如,在关联视图中添加分别与各数据库对应的主题,以便用户能够根据该描述信息确定该视图对应的数据库中的数据类型。

步骤103、当接收到针对该关联视图的查询请求时,通过与该多个数据库的jdbc连接分别从该多个数据库中获取与查询请求关联的数据,并输出包括所获取到的数据的查询结果。

本发明实施例中,搜索引擎创建关联视图之后,用户可以通过选择视图,并输入查询请求的方式,从关联视图对应的多个数据库中查询相关联的数据。

例如,用户可以根据关联视图中包括的数据库的描述信息确定所需数据对应的关联视图,并选择该关联视图,输入查询请求,以获取对应的数据。

相应地,当搜索引擎接收到针对关联视图的查询请求时,可以查询该关联视图对应的jdbc连接,并通过查询到的jdbc连接分别从对应的数据库中获取与查询请求关联的数据。

搜索引擎获取到与查询请求关联的数据之后,可以输出包括所获取到的数据的查询结果,例如,搜索引擎可以将所获取到的数据展示在指定web页面中。

需要说明的是,在本发明实施例中,搜索引擎创建多个数据库对应的关联视图之后,需要记录关联视图与该多个数据库对应的jdbc连接的对应关系,进而,当搜索引擎接收到针对关联视图的查询请求时,搜索引擎可以根据自身记录的关联视图与jdbc连接的对应关系,确定用户选择的关联视图对应的jdbc连接,并通过所确定的jdbc连接从对应的数据库中获取与查询请求关联的数据。

可见,在图1所示方法流程中,搜索引擎通过建立自身与多个数据库分别建立jdbc连接,并创建对应的多个数据库的关联视图,从而,用户可以直接通过该关联视图触发搜索引擎从多个数据库中获取关联数据,实现了搜索引擎的异构查询。此外,由于搜索引擎可以直接从多个关联数据库中读取关联数据,与将关联数据库中的数据同步至本地数据库,然后从本地数据库中读取数据的实现相比,提高了关联数据查询的时效性。

在本发明其中一个实施例中,用户进行数据查询时,输入的查询请求中还可以携带查询条件,以查询满足查询条件的数据。其中,该查询条件包括指定字段以及指定字段的值。

相应地,搜索引擎接收到针对关联视图的查询请求时,可以根据该查询请求中携带的查询条件对该关联视图对应的数据库中的数据进行筛选,并输出包括筛选后的数据的查询结果。

具体地,在本发明实施例中,当搜索引擎接收到针对关联视图的查询请求时:

搜索引擎可以根据所述查询请求中携带的查询条件在所述多个数据库中查询匹配的数据;

查询到与所述查询条件匹配的数据时,

确定是否存在待查询数据库,所述待查询数据库为所述关联视图对应的除已查询到的数据所属数据库之外的剩余数据库;

若存在待查询数据库,则根据与所述查询条件匹配的数据中除所述查询条件中包含的字段之外的剩余字段生成查询请求;根据所生成的查询请求在待查询数据库中查询匹配的数据;若查询到匹配的数据,则返回所述确定是否存在待查询数据库的步骤;若未查询到匹配的数据,则将已查询到的数据输出;

若不存在待查询数据库,则将已查询到的数据输出。

举例来说,假设视图a对应数据库1、数据库2和数据库3,es接收到针对视图a的查询请求,且查询请求中携带有查询条件“字段1的值为a1”,进而,搜索引擎可以通过与数据库1、数据库2和数据库3的jdbc连接,从数据库1、数据库2和数据库3中搜索满足“字段1的值为a1”的数据,假设在数据库1中搜索到满足“字段1的值为a1”的数据,且该数据中还包括“字段2的值为b2”,则搜索引擎可以根据“字段2的值为b2”生成对应的查询请求(该查询请求包括的查询条件为“字段2的值为b2”),并根据所生成的查询请求在待查询数据库(由于已经从数据库1中查询到匹配的数据,因此,待查询数据库为数据库2和数据库3)中搜索匹配的数据,假设在数据库2中搜索到匹配的数据,且该数据中还包括“字段3的值为c3”以及“字段4的值为d4”,则搜索引擎还可以分别根据“字段3的值为c3”以及“字段4的值为d4”生成对应的查询请求(其中一个查询请求包括的查询条件为“字段3的值为c3”,另一个查询请求包括的查询条件为“字段4的值为d4”,当然也可以一个查询请求中携带上述两个查询条件),并根据所生成的查询请求在待查询数据库(由于已经从数据库1、数据库2中查询到匹配的数据,因此,待查询数据库为数据库3)中搜索匹配的数据,假设搜索到匹配的数据,且该数据中还包括“字段5的值为e5”以及“字段6的值为f6”,由于本次查询之后,不存在待查询数据库,则搜索引擎可以输出查询结果,包括:

“字段1:a1

字段2:b2

字段3:c3

字段4:d4

字段5:e5

字段6:f6”

假设上述在数据库3中未搜索到匹配的数据,则搜索引擎可以输出查询结果,包括:

“字段1:a1

字段2:b2

字段3:c3

字段4:d4”

此外,在本发明实施例中,用户进行数据查询时还可以专门查询满足条件的数据中的部分字段。

例如,仍以上述示例为例,用户也可以专门在视图a对应的数据库1、数据库2和数据库3中查询满足条件“字段1的值为a1”的数据中的字段2和字段5,则搜索引擎接收到查询请求时,可以先按照上一示例中所描述的方式分别在数据库1、数据2和数据库3中查询匹配的数据,假设搜索引擎查询到的为:

“字段1:a1

字段2:b2

字段3:c3

字段4:d4

字段5:e5

字段6:f6”

然后,搜索引擎可以从查询到的数据筛选出所需字段,并进行输出。

在该实施例中,搜索引擎输出的查询结果可以包括:

“字段2:b2

字段5:d5”

其中,为了体现查询结果与搜索条件的关联,搜索引擎输出的查询结果中还可以包括查询条件中包括的字段的值,即搜索引擎输出的查询结果可以为:

“字段1:a1

字段2:b2

字段5:d5”

此外,当搜索引擎接收到的查询请求中未指定需要输出的字段,且未携带查询条件时,搜索引擎需要输出所选择的视图对应的多个数据库中的所有数据,其具体实现在此不做赘述。

在本发明其中一个实施例中,上述接收到针对关联视图的查询请求之前,还可以包括:

当检测到针对关联视图的选择指令时,通过与该关联视图对应的多个数据库的jdbc连接分别从该多个数据库中加载预设数量的数据至内存;

相应地,上述步骤103中,当接收到针对关联视图的查询请求时,通过与多个数据库的jdbc连接分别从该多个数据库中获取与查询请求关联的数据,可以包括:

当接收到针对关联视图的查询请求时,从内存中获取与查询请求关联的数据。

在该实施例中,用户可以根据关联视图的描述信息以及数据访问需求选择关联视图进行数据获取。

当搜索引擎检测到针对任一关联视图的选择指令时,搜索引擎可以查询该关联视图对应的jdbc连接,并通过该关联视图对应的jdbc连接分别从对应的数据库中获取预设数量(可以根据实际场景设定,如1000条)的数据,加载至内存,如加载至dataset(内存中的数据库)。

可选地,es通过异步加载的方式从数据库中加载数据至dataset。

在该实施例中,用户选择关联视图之后,可以实际需求输入查询请求,以获取所需数据。

搜索引擎接收到针对关联视图的查询请求时,可以从内存中获取与查询请求关联的数据,例如,从dataset获取与查询请求关联的数据。

需要说明的是,当搜索引擎通过异步加载的方式从数据库中加载数据到dataset中时,搜索引擎接收到针对关联视图的查询请求时,查询请求关联的数据可能还未被加载至dataset,因此,当搜索引擎在dataset中未获取到与查询请求关联的数据时,搜索引擎可以通过jdbc连接从数据库中获取与查询请求关联的数据。

在本发明其中一个实施例中,搜索引擎接收到查询请求,且需要从数据库中获取数据时,可以将查询请求转化为sql(structuredquerylanguage,结构查询语句)语句,并通过该sql语句从数据库中获取对应的数据。

为了实现上述目的,搜索引擎创建对应多个数据库的关联视图时,还需要生成多个数据库间的数据关联查询语句(sql语句)。

相应地,当搜索引擎接收到针对关联视图的查询请求时,搜索引擎可以根据所生成的多个数据库间的数据关联查询语句将该查询请求转化为对应的sql语句,并在关联视图对应的多个数据库中分别查询匹配的数据,其具体实现将在下文中结合具体实例进行说明。

为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体实例对本发明实施例提供的技术方案进行说明。

在该实施例中,假设es中存放有日志数据(即本地数据库中存放日志数据),数据库1为postgresql(一种对象-关系数据库管理系统)数据库,存放有资产表数据,数据库2为mysql(一种关系型数据库管理系统)数据库,存放有用户表数据。其中,日志、资产表以及用户表数据的格式可以如图2a所示。

在该实施例中,数据处理流程实现如下:

1、分别建立es与数据库1的jdbc连接(本文中称为jdbc连接1)以及建立es与数据库2的jdbc连接(本文中称为jdbc连接2),并将jdbc连接1和jdbc连接2添加到连接池中;

其中,建立es与数据库的jdbc连接时,需要配置包括连接名、主机名、端口号、用户名、连接类型等信息,其具体实现在此不做赘述;

2、创建对应本地数据库、数据库1以及数据库2的关联视图(假设为视图a),并生成数据源间的数据关联查询语句(sql语句);

其中,由于日志数据与资产表数据中均包括ip字段,而资产表数据和用户表数据中均包括userid(用户标识)字段,因此,在生成数据关联查询语句时,可以通过leftjoin(左连接)的方式实现连接查询。

例如,通过leftjoinasset(资产表)onlog(日志).ip=log.ip将资产表与日志通过ip字段关联;

通过leftjoinuser(用户表)onasset.userid=user.userid将用户表与资产表通过用户标识字段关联;

进而,搜索引擎可以通过sql语句“select(选择)data(数据),ip,sepc_1_pc09kdm(问题描述),assetname(资产名),username(用户名),location(位置),useridfromlog”从本地数据库、数据库1和数据库2中获取到相互关联的“data,ip,sepc_1_pc09kdm,assetname,username,location,userid”等数据;

3、当检测到针对视图a的选择指令时,将视图a关联的本地数据库、数据库1和数据库2的数据加载到dataset;

其中,以图2a所示的数据为例,其加载到dataset中的数据格式可以如图2b所示;

4、当接收到针对视图a的查询请求时,从dataset中获取与查询请求关联的数据;

其中,搜索引擎接收到查询请求时,可以将查询请求转化为对应的数据关联查询语句,并根据该数据关联查询语句从dataset获取关联数据。

例如,假设用户输入的查询请求中携带的查询条件为“username为张三”,则es可以通过sql语句(select*fromawhereusername=‘张三’)从dataset中获取与“username为张三”匹配的数据,即图2b所示的数据;其中,“select*”表示需要获取与“username为张三”匹配的数据中的所有字段的值。

通过以上描述可以看出,在本发明实施例提供的技术方案中,通过分别建立搜索引擎与多个数据库的jdbc连接,并创建对应该多个数据库的关联视图,当接收到针对关联视图的查询请求时,通过与该多个数据库的jdbc连接分别从多个数据库中获取与查询请求关联的数据,并输出包括所获取到的数据的查询结果,实现了搜索引擎的异构查询。

以上对本发明提供的方法进行了描述。下面对本发明提供的装置进行描述:

请参见图3,为本发明实施例提供的一种数据处理装置的结构示意图,其中,该数据处理装置可以应用于上述方法实施例中的搜索引擎,如图3所示,该数据处理装置可以包括:前端视图层310、rest(representationalstatetransfer,表述性状态转移)api(applicationprogramminginterface,应用程序编程接口)320、业务实现层330以及数据接入层340;其中:

所述数据接入层340,用于分别建立搜索引擎与多个数据库的jdbc连接;

所述前端视图层310,用于创建对应所述多个数据库的关联视图,所述关联视图中包括对应所述多个数据库的描述信息;

所述前端视图层310,还用于当接收到针对所述关联视图的查询请求时,通过所述restapi320将所述查询请求传递给所述业务实现层330;

所述业务实现层330,用于将所述查询请求传递给所述数据接入层340;

所述数据接入层340,还用于通过与所述多个数据库的jdbc连接分别从所述多个数据库中获取与所述查询请求关联的数据,并将获取到的数据合并传输至所述业务实现层330;

所述业务实现层330,用于当接收到数据接入层340传输的数据时,按照预设数据模型进行组装,并通过restapi320将组装后的数据传输至所述前端视图层310;

所述前端视图层310,用于展示组装后的数据。

在可选实施例中,所述查询请求中包括查询条件;所述查询条件包括指定字段以及所述指定字段的值;

相应地,所述数据接入层340,具体用于根据所述查询请求中携带的查询条件在所述多个数据库中查询匹配的数据;

查询到与所述查询条件匹配的数据时,

确定是否存在待查询数据库,所述待查询数据库为所述关联视图对应的除已查询到的数据所属数据库之外的剩余数据库;

若存在待查询数据库,则根据与所述查询条件匹配的数据中除所述查询条件中包含的字段之外的剩余字段生成查询请求;根据所生成的查询请求在待查询数据库中查询匹配的数据;若查询到匹配的数据,则返回所述确定是否存在待查询数据库的步骤;若未查询到匹配的数据,则将已查询到的数据传输至所述业务实现层330;

若不存在待查询数据库,则将已查询到的数据传输至所述业务实现层330。

在可选实施例中,所述前端视图层310,还用于将针对关联视图的选择指令通过所述restapi320传递给所述业务实现层;

所述业务实现层330,还用于将所述针对关联视图的选择指令传递给所述数据接入层340;

所述数据接入层340,还用于通过与所述多个数据库的jdbc连接分别从所述多个数据库中获取预设数量的数据,并加载至内存;

所述数据接入层340,具体用于当接收到查询请求时,从内存中获取与所述查询请求关联的数据,并传输至所述业务实现层330。

在可选实施例中,所述业务实现层330,还用于生成对应所述关联视图的数据关联查询语句;其中,所述数据关联查询语句为结构查询语句sql语句;

所述业务实现层330,还用于当接收到查询请求时,将所述查询请求转化为对应的数据关联查询语句,并传递给所述数据接入层340;

所述数据接入层340,具体用于根据所述数据关联查询语句通过与所述多个数据库的jdbc连接分别从所述多个数据库中获取与所述查询请求关联的数据。

在可选实施例中,所述多个数据库为异构数据库。

在本发明实施例中,为了实现搜索引擎的访问,需要先在搜索引擎上搭建一个web容器,然后构建一个nodejs(一种javascript运行环境)开发的web应用程序,该web应用程序通过jdbc的方式与搜索引擎进行交互,查看前端视图层展示的关联视图,并进行视图选择以及数据查询。

具体地,搜索引擎可以通过数据接入层建立自身与多个数据库的jdbc连接,并通过前端视图层创建对应该多个数据库的关联视图。

用户可以通过web应用程序查看搜索引擎的前端视图层展示的关联视图,并进行视图选择以及数据查询。

当搜索引擎的前端视图层接收到针对关联视图的查询请求时,通过调用restapi将该查询请求传递给业务实现层。

搜索引擎的业务实现层接收到该查询请求时,可以将该查询请求转发为对应的数据关联查询语句,并将该数据关联查询语句传递给数据接入层。

搜索引擎的数据接入层接收到数据关联查询语句时,根据其中携带的查询条件,通过与多个数据库的jdbc连接分别从多个数据库中查询匹配的数据,并当查询到与该查询条件匹配的数据时,根据与查询条件匹配的数据中的其它字段的值在用户选择的关联视图对应的其它数据块中查询匹配的数据,并将查询到的数据合并输出至业务实现层。

搜索引擎的业务实现层接收到数据接入层输出的数据时,按照预设数据模型进行组装,并通过restapi将组装后的数据传输至前端视图层,由前端视图层展示给用户。

图4为本公开示例提供的一种数据处理装置的硬件结构示意图。该数据处理装置可包括处理器401、存储有机器可执行指令的机器可读存储介质402。处理器401与机器可读存储介质402可经由系统总线403通信。并且,通过读取并执行机器可读存储介质402中与数据处理逻辑对应的机器可执行指令,处理器401可执行上文描述的数据处理方法。

本文中提到的机器可读存储介质402可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

由上述实施例可见,通过分别建立搜索引擎与多个数据库的jdbc连接,并创建对应该多个数据库的关联视图,当接收到针对关联视图的查询请求时,通过与该多个数据库的jdbc连接分别从多个数据库中获取与查询请求关联的数据,并输出包括所获取到的数据的查询结果,实现了搜索引擎的异构查询。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1