数据查询方法、装置、设备和存储介质与流程

文档序号:17721944发布日期:2019-05-22 02:13阅读:148来源:国知局
数据查询方法、装置、设备和存储介质与流程

本发明实施例涉及数据库处理技术,尤其涉及一种数据查询方法、装置、设备和存储介质。



背景技术:

数据库是一个按照数据结构来组织并存储大量数据的仓库,其中,数据结构指的是数据的组织形式或数据之间的联系。用户可以依据具体需求对数据库中的数据执行查询、新增、截取、更新、删除等操作。

当需要查询数据库中的某些数据,但只有一两个与这些数据相关的字段名及对应字段值时,用户可以根据相关查询代码去查找对应的数据记录,查询耗时与数据库的数据存储量呈正比,也可以凭着记忆中的数据存储信息去直接查找。但是,上述两种查询方式都需要用户在服务器上执行相关操作,有可能导致服务器运行效率降低甚至性能阻塞的问题,一旦用户操作失误,还有可能发生一些数据库事故,例如是误删数据或误修改数据等。



技术实现要素:

本发明实施例提供一种数据查询方法、装置、设备和存储介质,以降低用户操作风险,同时解决根据字段名及对应字段值追踪数据记录耗时过多的问题。

第一方面,本发明实施例提供了一种数据查询方法,包括:

获取数据查询信息以及至少一条数据源信息,所述数据查询信息包括:字段名,以及与所述字段名对应的字段值;

在服务器中存储的与所述数据源信息匹配的至少一个数据库中,对所述数据查询信息进行数据查询,获取与所述数据查询信息匹配的至少一条数据记录;

根据所述数据记录,生成所述数据查询信息的反馈结果。

第二方面,本发明实施例还提供了一种数据查询装置,该装置包括:

获取模块,用于获取数据查询信息以及至少一条数据源信息,所述数据查询信息包括:字段名,以及与所述字段名对应的字段值;

查询模块,用于在服务器中存储的与所述数据源信息匹配的至少一个数据库中,对所述数据查询信息进行数据查询,获取与所述数据查询信息匹配的至少一条数据记录;

反馈模块,用于根据所述数据记录,生成所述数据查询信息的反馈结果。

第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任意实施例所述的数据查询方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任意实施例所述的数据查询方法。

本发明实施例中,根据获取的数据源信息将要访问的数据库限定为与数据源信息匹配的数据库,而不是服务器上存储的所有数据库,从而缩小了对数据查询信息进行数据查询的数据库范围,由此缩短了查询时间;通过根据数据源信息远程访问在服务器中存储的与数据源信息匹配的至少一个数据库,对数据查询信息进行数据查询的技术手段,对用户只开放查询权限,以使用户不必在服务器上直接操作,进而不对服务器的运行效率甚至性能产生影响,同时也避免了由于用户在服务器上输错代码而可能导致发生数据库事故的问题。由此,通过本发明实施例提供的数据查询方法进行数据查询时,可以降低用户对数据库的操作风险,而且能够解决只根据字段名及对应字段值追踪数据记录耗时过多的问题。

附图说明

图1是本发明实施例一提供的一种数据查询方法的流程图;

图2a是本发明实施例二提供的一种数据查询方法的流程图;

图2b是本发明实施例二提供的一种数据分库分表的结构示意图;

图2c是本发明实施例二提供的一种数据分库分表的结构示意图;

图3a是本发明实施例三提供的一种数据查询方法的流程图;

图3b是本发明实施例三提供的一种数据查询方法适用的一种应用界面示意图;

图3c是本发明实施例三提供的一种数据查询方法适用的一种应用界面示意图;

图4是本发明实施例四提供的一种数据查询装置的模块结构示意图;

图5是本发明实施例五提供的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1是本发明实施例一提供的一种数据查询方法的流程图,本实施例可适用于只针对一两个字段名以及对应字段值进行数据库查询,以获取与所述字段名以及对应字段值匹配的数据记录的情况,该方法可以由本发明任意实施例提供的数据查询装置来执行,该装置可由硬件和/或软件组成,并一般可集成在计算机设备的处理器中。

在软件开发和/或运营的过程中,不可避免地会遇到各种问题,故需要对与问题相关的数据进行定位,获取相关数据记录后进行问题排查,而软件的追踪日志中可能仅存在一两个字段名以及与其分别对应的字段值,此时,只能根据这个一两个字段名以及与其分别对应的字段值去数据库中查询相关数据记录。以订单支付问题为例,追踪日志中的字段名可以是订单号,字段值对应为xxxx(订单号明细);以账号登录问题为例,追踪日志中的字段名可以是登录账号,字段值对应为xxxx(登录账号明细)。

如图1所述,本实施例提供的数据查询方法包括以下步骤:

s110、获取数据查询信息以及至少一条数据源信息,数据查询信息包括字段名,以及与字段名对应的字段值。

数据查询信息具体指的是研发人员在日志中获取的字段名,以及与字段名对应的字段值,也即待查询字段名以及对应字段值,例如是字段名--订单号,与订单号对应的字段值—xxxx,再例如字段名--登录账号,与登录账号对应的字段值--xxxx。

数据源信息指的是连接访问相关数据库的信息,也即根据一条数据源信息可以连接访问至与这条数据源信息匹配的数据库。其中,一条数据源信息具体可以包括数据源名,统一资源定位符url,数据库端口号,数据库名,登陆用户名,登录密码,所在区域等。

为了缩短查询时间,获取的数据源信息具体指的是用户选择的与字段名关联的各个数据源的数据源信息,而非所有数据源的数据源信息。

作为本实施例一种可选的实施方式,在获取数据查询信息以及数据源信息之前,还包括:

获取用户输入的与字段名关联的至少一条数据源信息;

根据用户的测试请求对所述至少一条数据源信息进行测试。

首先,研发人员根据从日志中获取的字段名确定哪些数据库中存在与该字段名匹配的数据记录,进而将与这些数据库对应的数据源分别作为待查询数据源。如果数据源列表中存在待查询数据源,研发人员在数据源列表中直接选取即可;如果数据源列表中不存在待查询数据源,研发人员则需要先把待查询数据源的数据源信息进行录入,也即录入与各个待查询数据源分别对应的基本信息(数据源名,统一资源定位符url,端口号,数据库名,登陆用户名,登录密码,所在区域等)。其中,同一数据源下可能包括多个数据库。

为了保证研发人员录入的数据源信息的准确性,可以对数据源信息进行测试。当研发人员针对一条数据源信息发起测试请求后,系统会根据数据源信息去访问连接对应的数据库,如果访问连接成功,则提示测试成功,如果访问连接失败,则提示测试失败,并返回失败原因,例如是登录密码错误等。

当数据源信息测试成功后,将该数据源信息添加至数据源列表,以供研发人员将其选择作为待查询数据源。值得指出的是,数据源列表中的各数据源可随时被删除、修改、查询,以及重新测试。

当研发人员在数据源列表中选择完待查询数据源后,输入数据查询信息,也即输入待查询字段名以及与待查询字段名对应的字段值。其中,在研发人员输入字段名时,可以为研发人员提供字段名模糊提醒功能,以保证研发人员输入的字段名的正确性,因为只要研发人员输入的字段名中存在一个字符错误,都会导致数据查询失败。而且,不同研发人员可能具有各自不同的字段名英文命名习惯,故不同研发人员针对相同字段的英文命名也不尽相同,此时字段名模糊提醒功能也可为研发人员提示待查询数据源中正确字段命名。

典型的,在获取数据查询信息中的字段名之前,还包括:

获取用户针对字段名输入的至少一个字符;

根据与数据源信息匹配的至少一个数据库中所有数据表中的字段名,以及用户针对字段名输入的至少一个字符,生成字段名模糊提醒,以供用户参考或选择。

每当研发人员针对字段名输入一个字符,都会基于当前字段名中的各字符去模糊匹配待查询数据源中所有数据表中的所有字段名,并将模糊匹配的结果作为字段名模糊提醒提示给研发人员,供其参考或选择。当研发人员发现字段名模糊提醒中存在其想要输入的字段名,可以直接选择,不必自己再去输入。例如,研发人员针对字段名输入的字符是“time”,字段名模糊提醒中可以包括例如“testtime”、“logintime”等字段名。

作为本实施例另一种可选的实施方式,可以将获取数据查询信息以及至少一条数据源信息,具体为:

获取数据查询信息,数据查询信息包括字段名,以及与所述字段名对应的字段值;

根据数据查询信息中的字段名,遍历在服务器中存储的所有数据表结构,确定与字段名匹配的至少一个数据库;

根据至少一个数据库的关联信息生成至少一条数据源信息。

首先,研发人员输入从日志中获取的字段名和对应字段值。其次,系统访问服务器,根据研发人员输入的字段名遍历服务器中存储的所有数据表结构,确定哪些数据表结构中包括这个字段名,进而可以根据这些包括这个字段名的数据表结构确定与字段名匹配的数据库,也即,确定的这些数据库中会包括研发人员输入的字段名。再次,系统获取与这些数据库对应的关联信息,例如,数据库名、与数据库对应的数据源名、统一资源定位符url、端口号、登录用户名、登录密码、所在区域等,进而根据每个数据库的关联信息生成一条数据源信息,以使在根据字段名和对应字段值进行数据定位时可以根据数据源信息成功访问这些数据库。s120、在服务器中存储的与数据源信息匹配的至少一个数据库中,对数据查询信息进行数据查询,获取与数据查询信息匹配的至少一条数据记录。

根据每条数据源信息访问与其匹配的各个数据库,然后针对数据查询信息中的字段名和对应字段值,遍历该数据源中的所有数据表,以对数据查询信息进行数据查询,如果某数据表中的某条数据记录中包含数据查询信息中的字段名和对应字段值,则将该条数据记录作为与数据查询信息匹配的数据记录。

当将研发人员选择的所有待查询数据源中的所有数据表遍历完成后,获取到与数据查询信息匹配的数据记录,即可实现对字段名和对应字段值的数据定位。

s130、根据数据记录,生成数据查询信息的反馈结果。

根据获取到的与数据查询信息匹配的各条数据记录,生成与数据查询信息对应的定位信息,并将定位信息作为反馈结果返回给研发人员,以使研发人员可以根据定位信息获取到与数据查询信息相关的其他数据。

可选的,可以将各条数据记录所在数据表的信息作为与数据查询信息对应的定位信息,具体可以通过一个查询结果映射数据结构存放各条数据记录所在数据表的信息,并将查询结果映射数据结构作为反馈结果,进而研发人员根据查询结果映射结构即可获知与数据查询信息对应的定位信息,进而根据定位信息获取与数据查询信息相关的其他数据。

典型的,查询结果映射数据结构的形式可以为<数据表名+数据库名,数据源信息>,其中,数据表名为数据记录所在数据表的表名,数据库名为所述数据表所在的数据库的库名,数据源信息为与所述数据库对应的数据源的基本信息,例如包括数据源名、所在区域以及url等。

作为本实施例一种可选的实施方式,可以将根据至少一条数据记录,生成数据查询信息的反馈结果,具体为:

将每条数据记录所在数据表的关联信息分别作为与数据查询信息对应的数据记录条,各个数据记录条构成反馈结果;

根据每条数据记录生成一一对应的字段名字符串和字段值字符串,其中,字段名字符串中各不同字段名之间采用特殊字符间隔,字段值字符串中对应的不同字段值之间采用特殊字符间隔;

在每个数据记录条中添加超链接记录编号,以使用户根据超链接记录编号查看与每条数据记录匹配的字段名与字段值一一对应的数据表格,其中,数据表格通过将字段名字符串和字段值字符串分别根据特殊字符进行切割而生成。

其中,每条数据记录所在数据表的关联信息具体可以是每条数据记录所在数据表的表名,所述数据表所在的数据库的库名,与所述数据库对应的数据源的基本信息,例如包括数据源名、所在区域以及url等。

将这些关联信息整合成与数据查询信息对应的一个数据记录条,进而各个数据记录条组合构成反馈结果(例如是一个数据记录表),提供给研发人员。

进一步的,在每个数据记录条中添加超链接记录编号,超链接记录编号的数量即为与数据查询信息匹配的数据记录的数量。当研发人员点击超链接记录编号时,可以将与该超链接编号对应的数据记录的详细数据提供给研发人员。

与每条数据记录对应的详细数据为在该条数据记录所在数据表中获取的一一对应的多组字段名和对应字段值,具体的,将这多组字段名和对应字段值构造成一一对应的字段名字符串和字段值字符串,字段名字符串中各不同字段名之间采用特殊字符间隔,字段值字符串中对应的不同字段值之间同样采用特殊字符间隔,以两组字段名和对应字段值为例,“姓名--张三”,“年龄--20”,特殊符号为“#”,那么字段名字符串即为“姓名#年龄”和字段值字符串即为“张三#20”。当研发人员点击超链接记录编号,显示这一一对应的字段名字符串和字段值字符串时,根据特殊符号“#”分别对字段名字符串和字段值字符串进行切割,生成字段名与字段值一一对应的数据表格,进而将这字段名与字段值一一对应的数据表格显示给研发人员,至此实现了根据字段名和对应字段值进行数据定位,并将定位后获取的相关详细数据进行显示。

在上述技术方案中,首先构造一一对应的字段名字符串和字段值字符串,显示时分别根据特殊字符对字段名字符串和字段值字符串进行切割,生成字段名与字段值一一对应的数据表格,由此进行详细数据显示的好处在于,虽然是将与数据记录对应的详细数据用表的形式进行展示,但是无需将该数据表对应数据库中的实体类映射,只是将与详细数据对应的字段名以及对应字段值直接显示即可。

本发明实施例中,根据获取的数据源信息将要访问的数据库限定为与数据源信息匹配的数据库,而不是服务器上存储的所有数据库,从而缩小了对数据查询信息进行数据查询的数据库范围,由此缩短了查询时间;通过根据数据源信息远程访问在服务器中存储的与数据源信息匹配的至少一个数据库,对数据查询信息进行数据查询的技术手段,对用户只开放查询权限,以使用户不必在服务器上直接操作,进而不对服务器的运行效率甚至性能产生影响,同时也避免了由于用户在服务器上输错代码而可能导致发生数据库事故的问题。由此,通过本发明实施例提供的数据查询方法进行数据查询时,可以降低用户对数据库的操作风险,而且能够解决只根据字段名及对应字段值追踪数据记录耗时过多的问题。

实施例二

本实施例以上述实施例为基础进行具体化,其中,具体考虑数据源中存在分库分表的情况,将在服务器中存储的与所述数据源信息匹配的至少一个数据库中,对所述数据查询信息进行数据查询,具体为:

依次获取与所述数据源信息匹配的数据库,并在获取的数据库包括的至少一个数据表中,对数据查询信息进行数据查询;如果当前获取数据库与一个已查询数据库互为数据分库,则根据已查询数据库对字段名的命中情况,确定与当前获取数据库对应的查询策略进行数据查询;和/或,如果当前查询数据表与一个已查询数据表互为数据分表,则根据已查询数据表对字段名的命中情况,确定与当前查询数据表对应的查询策略进行数据查询。

下述以待查询数据源为一个数据源进行解释说明,如图2a所示,本实施例提供的数据查询方法包括以下步骤:

s210、获取数据查询信息以及至少一条数据源信息,数据查询信息包括字段名,以及与字段名对应的字段值。

s220、依次获取与数据源信息匹配的数据库,并在获取的数据库包括的至少一个数据表中,对数据查询信息进行数据查询;如果当前获取数据库与一个已查询数据库互为数据分库,则根据已查询数据库对字段名的命中情况,确定与当前获取数据库对应的查询策略进行数据查询;和/或,如果当前查询数据表与一个已查询数据表互为数据分表,则根据已查询数据表对字段名的命中情况,确定与当前查询数据表对应的查询策略进行数据查询。

随着时间和业务的发展,数据库中的数据量增长是不可控的,数据库和数据表中的数据会越来越大,随之带来的是更高的磁盘、输入输出、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和数据表进行拆分,以数据分库、数据分表的形式提供数据服务。

顾名思义,数据分库、数据分表就是按照一定的规则,对原有的数据库和表进行拆分,把原本存储于一个数据库的数据分块存储到多个数据库上,把原本存储于一个数据表的数据分块存储到多个数据表上,这多个数据库即为多个数据分库,多个数据表即为数据分表。

例如,如图2b所示,一个数据源可以对应多个数据库,例如图2b中所示的数据库a,数据库b_c,数据库b_d,其中,数据库b_c和数据库b_d互为数据分库,也即,数据库b_c和数据库b_d是针对某原有数据库进行拆分形成的。如果数据库b_c为已查询数据库,则可以根据数据库b_c对字段名的命中情况确定与数据库b_d对应的查询策略进行数据查询,也即根据数据库b_c对字段名的命中情况确定是否需要对数据库b_d进行数据查询。

一个数据库包括多个数据表,例如图2b中所示的数据表a,数据表b_c,数据表b_d,其中,数据表b_c和数据表b_d互为数据分表,也即,数据表b_c和数据表b_d是针对某数据表进行拆分形成的。如果数据表b_c为已查询数据表,则可以根据数据表b_c对字段名的命中情况确定与数据表b_d对应的查询策略进行数据查询,也即根据数据表b_c对字段名的命中情况确定是否需要对数据表b_d进行数据查询。

值得指出的是,互为数据分库的数据库可以有多个,互为数据分表的数据表也可以有多个,图2b中分别以两个数据库互为数据分库,两个数据表互为数据分表为例进行示出。

具体的,在数据源中,除去后缀名后的数据库名相同的至少两个数据库互为数据分库;在数据源中的同一个数据库中,除去后缀名后的数据表名相同的至少两个数据表互为数据分表。

其中,后缀名的除去规则根据数据库项目的分片规则所定。例如,如图2c所示,以按年月进行分库分表为例,数据源对应数据库nimo_server、数据库nimo_user_2018和数据库nimo_user_2019,数据库nimo_user_2018中包括数据表jd_pay、数据表tb_pay_201801和数据表tb_pay_201802,其中,数据库nimo_user_2018和数据库nimo_user_2019除去后缀名后的数据库名均为nimo_user,那么这两个数据库互为数据分库(按照年份进行拆分而形成的数据分库),数据表tb_pay_201801和数据表tb_pay_201802除去后缀名后的数据表名均为tb_pay,那么这两个数据表互为数据分表(按照月份进行拆分而形成的数据分表)。

进一步的,根据已查询数据库对字段名的命中情况,确定与所述当前获取数据库对应的查询策略进行数据查询,具体包括:

判断已查询数据库中是否有至少一个目标数据表命中数据查询信息中的字段名;

若是,则仅在当前获取数据库中与目标数据表名称相同的数据表中进行数据查询;否则,不再对当前获取数据库进行数据查询。

如果数据源中包括数据库nimo_user_2018和数据库nimo_user_2019这两个互为数据分库的数据库,当针对数据查询信息对数据库nimo_user_2018中所有数据表完成查询之后,则根据数据库nimo_user_2018中所有数据表对数据查询信息中字段名的命中情况,确定与互为数据分库的数据库nimo_user_2019的数据查询策略,对数据查询信息进行数据查询。

判断已查询数据库nimo_user_2018中是否至少有一个数据表命中数据查询信息中的字段名,若否,则意味着与其互为数据分库的数据库中也没有这个字段名,进而在查询至数据源中与数据库nimo_user_2018互为数据分库的数据库nimo_user_2019时,无需再针对字段名在数据库nimo_user_2019中进行查询,由此,去除了没有必要的查询,减少了查询次数,提高了查询效率。若是,则确定这些可以命中字段名的数据表的表名,例如是表a、表b和表c可以命中数据查询信息中的字段名,则在查询至数据源中与数据库nimo_user_2018互为数据分库的数据库nimo_user_2019时,针对字段名在数据库nimo_user_2019中与这些命中字段名的数据表名称相同的数据表(也即表a、表b和表c)中进行查询即可。也即,当数据库nimo_user_2018只有表a、表b和表c这三个表中存在数据查询信息中的字段名,那么在数据库nimo_user_2019中也仅是这三个表中会存在数据查询信息中的字段名,进而无需在数据库nimo_user_2019中其他数据表中针对该字段名进行查询,由此,去除了没有必要的查询,减少了查询次数,提高了查询效率。

进一步的,根据已查询数据表对字段名的命中情况,确定与当前查询数据表对应的查询策略进行数据查询,具体包括:

判断所述已查询数据表是否命中所述数据查询信息中的字段名;

若是,则对所述当前查询数据表进行数据查询;否则,不再对所述当前查询数据表进行数据查询。

如果数据库中包括数据表tb_pay_201801和数据表tb_pay_201802这两个互为数据分表的数据表,当针对数据查询信息对数据表tb_pay_201801完成查询之后,则根据已查询数据表tb_pay_201801对数据查询信息中字段名的命中情况,确定与其互为数据分表的数据表tb_pay_201802的数据查询策略,对数据查询信息进行数据查询。

判断已查询数据表tb_pay_201801是否命中数据查询信息中的字段名,若否,则意味着与其互为数据分表的数据表tb_pay_201802中也不存在这个字段名,进而在查询至与数据表tb_pay_201802时,无需再针对字段名在数据表tb_pay_201802中进行查询,由此,去除了没有必要的查询,减少了查询次数,提高了查询效率。若是,则意味着与其互为数据分表的数据表tb_pay_201802中不存在这个字段名,进而在查询至与数据表tb_pay_201802时,仍需针对字段名在数据表tb_pay_201802中进行查询。

s230、获取与数据查询信息匹配的至少一条数据记录。

将数据表中与数据查询信息中字段名和对应字段值均一致的数据记录,作为与数据查询信息匹配的数据记录。

s240、根据数据记录,生成所述数据查询信息的反馈结果。

本实施例未尽详细解释说明之处,请详见前述实施例,在此不再赘述。

在本发明实施例中,通过根据已查询的目标数据分库中的各个数据表对数据查询信息中字段名的命中情况,确定与目标数据分库匹配的各个关联数据分库的数据查询策略,通过根据已查询的目标数据分表对数据查询信息中字段名的命中情况,确定与目标数据分表匹配的各个关联数据分表的数据查询策略,以此实现对各个数据分库以及数据分表的去重数据查询,最大限度地减少查询次数,去除没有必要的查询,极大地提高了数据查询效率,在数据量较大、分表分库较多的项目汇总尤为明显。基于上述去重查询的技术方案,实现了在众多数据源且存在分库分表的项目中,对数据查询信息中的字段名和对应字段值的快速定位,进而使研发人员根据定位信息快速获取与数据查询信息相关的其他数据。

实施例三

图3a为本发明实施例三提供的一种数据查询方法的流程图。本实施例以上述实施例为基础,提供了一种具体的实施方式,仍以待查询数据源为一个数据源进行解释说明,如图3a所示,本实施例提供的数据查询方法包括以下步骤:

s310、获取数据查询信息以及至少一条数据源信息,数据查询信息包括字段名,以及与字段名对应的字段值。

s320、根据数据源信息访问连接与数据源信息匹配的至少一个数据库。

s330、根据数据源名构建源库映射数据结构,源库映射数据结构的形式为<数据源名,数据库名列表>,数据库名列表的初始值为空。

构建源库映射数据结构的意义在于根据其存储的数据库名列表判断即将查询的数据库是否为与某个已查询数据库互为数据分库。由于数据库名列表中存储的均是除去后缀名后的数据库名,所以数据库名列表中如果包括即将查询的数据库的除去后缀名后的数据库名,这个即将查询的数据库即与某个已查询数据库互为数据分库。

s340、按照数据库遍历顺序依次获取与所述数据源对应的一个数据库作为当前获取数据库。

当前获取数据库指的是即将查询的数据库,例如是数据库nimo_user_2019。

s350、判断源库映射数据结构中的数据库名列表中是否存在当前获取数据库的除去后缀名后的数据库名,若否,则执行s360,若是,则执行s3150。

s360、在数据库名列表中添加当前获取数据库的除去后缀名后的数据库名。

如果数据库名列表中不包括当前获取数据库nimo_user_2019的除去后缀名后的数据库名nimo_user,则当前获取数据库nimo_user_2019不是与某个已查询数据库对应的数据分库,也即需要对当前获取数据库nimo_user_2019进行数据查询。

值得指出的是,如果当前获取数据库的数据库名没有后缀(也即不是分库),则在数据库名列表中直接添加当前获取数据库的数据库名即可。

s370、根据当前获取数据库的除去后缀名后的数据库名,构建与当前获取数据库的除去后缀名后的数据库名匹配的目标库表映射数据结构,库表映射数据结构的形式为<数据库名,数据表名列表>,数据表名列表的初始值为空。

构建库表映射数据结构的意义在于根据其存储的数据表名列表判断即将查询的数据表是否与某个已查询数据表互为数据分表。由于数据表名列表中存储的均是除去后缀名后的数据表名,所以数据表名列表中如果包括即将查询的数据表的除去后缀名后的数据表名,这个即将查询的数据表即与某个已查询数据表互为数据分表。

根据当前获取数据库nimo_user_2019的除去后缀名后的数据库名nimo_user构建与nimo_user匹配的库表映射数据结构<nimo_user,空>。

s380、按照数据表遍历顺序依次获取与当前获取数据库对应的一个数据表作为当前查询数据表。

当前查询数据表指的是即将查询的数据表,例如是数据表tb_pay_201802。

s390、判断目标库表映射数据结构中的数据表名列表中是否存在当前查询数据表的除去后缀名后的数据表名,若否,则执行s3100,若是,则执行s3130。

s3100、在数据表名列表中添加当前查询数据表的除去后缀名后的数据表名。

如果数据表名列表中不包括当前查询数据表tb_pay_201802的除去后缀名后的数据表名tb_pay,则当前查询数据表tb_pay_201802不与某个已查询数据表互为数据分表,也即需要对当前查询数据表tb_pay_201802进行数据查询。

s3110、根据字段名查询当前查询数据表,并将查询结果作为与当前查询数据表的除去后缀名后的数据表名对应的去重查询参考。

查询结果具体指的是当前查询数据表中是否包括该字段名,进而将当前查询数据表中是否包括该字段名作为与tb_pay对应的去重查询参考。如果包括,则与tb_pay对应的去重查询参考即为需对与其互为数据分表的数据表进行查询,如果不包括,则与tb_pay对应的去重查询参考即为无需对与其互为数据分表的数据表进行查询。

s3120、如果当前查询数据表中包括与字段名以及对应字段值匹配的数据记录,则获取该数据记录并保存,执行s3140。

如果当前查询数据表中包括与字段名以及对应字段值匹配的数据记录,则可实现对字段名以及对应字段值的一次数据定位。

s3130、根据与当前查询数据表的除去后缀名后的数据表名对应的去重查询参考对当前查询数据表执行或不执行查询操作。

如果数据表名列表中包括当前查询数据表tb_pay_201802的除去后缀名后的数据表名tb_pay,则根据与tb_pay对应的去重查询参考确定对当前查询数据表tb_pay_201802是否执行查询操作,若是,则对当前查询数据表tb_pay_201802进行查询,若否,则对当前查询数据表tb_pay_201802不进行查询。

s3140、返回执行按照数据表遍历顺序依次获取与当前获取数据库对应的一个数据表作为当前查询数据表,直至遍历完成与当前获取数据库对应的所有数据表,并将与当前获取数据库对应的至少一个数据表中是否包含字段名的判断结果作为与当前获取数据库的除去后缀名后的数据库名对应的去重查询参考,执行s3160。

如果当前获取数据库nimo_user_2019中所有数据表中都不包含字段名,则与nimo_user对应的去重查询参考即为无需对与其互为数据分库的数据库进行重复查询;如果当前获取数据库nimo_user_2019中至少一个数据表中包含字段名,则与nimo_user对应的去重查询参考即为需要对与其互为数据分库的数据库进行查询。

s3150、根据与当前获取数据库的除去后缀名后的数据库名对应的去重查询参考对当前获取数据库执行或不执行查询操作,若执行,则根据与当前获取数据库的除去后缀名后的数据库名匹配的目标库表映射数据结构,以及与各个数据表的除去后缀名后的数据表名对应的去重查询参考对匹配的数据表执行或不执行查询操作。

如果数据库名列表中包括当前获取数据库nimo_user_2019的除去后缀名后的数据库名nimo_user,则根据与nimo_user对应的去重查询参考确定对当前获取数据库nimo_user_2019是否执行查询操作,若否,则对当前获取数据库nimo_user_2019不进行查询,若是,则对当前获取数据库nimo_user_2019进行查询,同时,根据nimo_user匹配的库表映射数据结构,以及该库表映射数据结构中与各个数据表的除去后缀名后的数据表名对应的去重查询参考(例如与tb_pay对应的去重查询参考),确定对当前获取数据库nimo_user_2019中的各个数据表是否进行查询操作。

s3160、返回按照数据库遍历顺序依次获取与所述数据源对应的一个数据库作为当前获取数据库的操作,直至遍历完成与数据源对应的所有数据库。

本实施例未尽详细解释说明之处,请详见前述实施例,在此不再赘述。

典型的,可以将本发明实施例提供的数据查询方法包装为一个数据定位工具,研发人员在如图3b所示的界面中字段名值输入区31处输入需要进行数据定位的字段名busorderid和字段值201812071549051971465043662512,然后点击定位,得到如图3b所示的界面中定位显示区32中的反馈结果(字段名busorderid和字段值201812071549051971465043662512所在数据表的关联信息),如果研发人员想看详细数据,点击定位显示区32中的记录数编号(超链接记录编号)321,可以弹出如图3c所示的弹框,进而研发人员可以通过如图3c所示的弹框查看与字段名busorderid和字段值201812071549051971465043662512匹配的数据详情。其中,如图3b所示的界面中数据源详情列表是预先选定并被测试成功的,或是根据字段名busorderid遍历服务器中所有表结构后自动生成的。

在本发明实施例中,通过源库映射数据结构来实现对互为数据分库的数据库的去重查询,通过库表映射数据结构来实现对互为数据分表的数据表的去重查询,以此最大限度的减少数据查询次数,去除没有必要的查询,极大地提高了查询效率,解决了根据字段名及对应字段值追踪数据记录耗时过多的问题,进而使得研发人员在测试环节以及排故环节都能快速定位数据,提高了开发效率。

实施例四

图4是本发明实施例四提供的一种数据查询装置的模块结构示意图,本实施例可适用于只针对字段名以及对应字段值进行数据库查询,以获取与所述字段名以及对应字段值匹配的数据记录的情况,该装置可以采用软件和/或硬件的方式实现,并一般可集成在计算机设备的处理器中。如图4所示,该装置包括:获取模块410、查询模块420和反馈模块430,其中,

获取模块410,用于获取数据查询信息以及数据源信息,所述数据查询信息包括:字段名,以及与所述字段名对应的字段值;

查询模块420,用于在服务器中存储的与所述数据源信息匹配的至少一个数据库中,对所述数据查询信息进行数据查询,获取与所述数据查询信息匹配的至少一条数据记录;

反馈模块430,用于根据所述至少一条数据记录,生成所述数据查询信息的反馈结果。

本发明实施例中,根据获取的数据源信息将要访问的数据库限定为与数据源信息匹配的数据库,而不是服务器上存储的所有数据库,从而缩小了对数据查询信息进行数据查询的数据库范围,由此缩短了查询时间;通过根据数据源信息远程访问在服务器中存储的与数据源信息匹配的至少一个数据库,对数据查询信息进行数据查询的技术手段,对用户只开放查询权限,以使用户不必在服务器上直接操作,进而不对服务器的运行效率甚至性能产生影响,同时也避免了由于用户在服务器上输错代码而可能导致发生数据库事故的问题。由此,通过本发明实施例提供的数据查询方法进行数据查询时,可以降低用户对数据库的操作风险,而且能够解决只根据字段名及对应字段值追踪数据记录耗时过多的问题。

进一步的,查询模块420包括获取单元、第一查询单元和第二查询单元,其中,

获取单元,用于依次获取与所述数据源信息匹配的数据库,并在获取的所述数据库包括的至少一个数据表中,对所述数据查询信息进行数据查询;

第一查询单元,具体用于如果当前获取数据库与一个已查询数据库互为数据分库,则根据所述已查询数据库对所述字段名的命中情况,确定与所述当前获取数据库对应的查询策略进行数据查询;

第二查询单元,具体用于如果当前查询数据表与一个已查询数据表互为数据分表,则根据所述已查询数据表对所述字段名的命中情况,确定与所述当前查询数据表对应的查询策略进行数据查询。

具体的,在数据源中,除去后缀名后的数据库名相同的至少两个数据库互为数据分库;在数据源中的同一个数据库中,除去后缀名后的数据表名相同的至少两个数据表互为数据分表。

进一步的,第一查询单元具体用于判断所述已查询数据库中是否有至少一个目标数据表命中所述数据查询信息中的字段名;若是,则仅在所述当前获取数据库中与所述目标数据表名称相同的数据表中进行数据查询;否则,不再对所述当前获取数据库进行数据查询。

进一步的,第二查询单元具体用于判断所述已查询数据表是否命中所述数据查询信息中的字段名;若是,则对所述当前查询数据表进行数据查询;否则,不再对所述当前查询数据表进行数据查询。

一种可选的实施方式,该装置还包括:数据源获取测试模块,用于获取用户输入的与所述字段名关联的至少一条数据源信息;根据用户的测试请求对所述至少一条数据源信息进行测试。

进一步的,该装置还包括:字段名模糊提醒模块,用于获取用户针对字段名输入的至少一个字符;根据与所述数据源信息匹配的至少一个数据库中所有数据表中的字段名,以及所述用户针对字段名输入的至少一个字符,生成字段名模糊提醒,以供所述用户参考或选择。

另一种可选的实施方式,获取模块410具体包括:数据查询信息获取单元、数据库确定单元和数据源信息生成单元,其中,

数据查询信息获取单元,用于获取所述数据查询信息;

数据库确定单元,用于根据所述数据查询信息中的字段名,遍历在所述服务器中存储的所有数据表结构,确定与所述字段名匹配的至少一个数据库;

数据源信息生成单元,用于根据所述至少一个数据库的关联信息生成至少一条数据源信息。

进一步的,反馈模块430具体用于将每条数据记录所在数据表的关联信息分别作为与所述数据查询信息对应的数据记录条,所述各个数据记录条构成所述反馈结果;

根据每条数据记录生成一一对应的字段名字符串和字段值字符串,其中,所述字段名字符串中各不同字段名之间采用特殊字符间隔,所述字段值字符串中对应的不同字段值之间采用所述特殊字符间隔;

在每个所述数据记录条中添加超链接记录编号,以使用户根据所述超链接记录编号查看与每条数据记录匹配的字段名与字段值一一对应的数据表格,其中,所述数据表格通过将所述字段名字符串和字段值字符串分别根据所述特殊字符进行切割而生成。

本发明实施例所提供的数据查询装置可执行本发明任意实施例所提供的数据查询方法,具备执行方法相应的功能模块和有益效果。

实施例五

图5是本发明实施例五提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括处理器50、存储器51、输入装置52和输出装置53;计算机设备中处理器50的数量可以是一个或多个,图5中以一个处理器50为例;计算机设备中的处理器50、存储器51、输入装置52和输出装置53可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据查询方法对应的程序指令/模块(例如,数据查询装置中的获取模块410、查询模块420和反馈模块430)。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的数据查询方法。

存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置52可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置53可包括显示屏等显示设备。

实施例六

本发明实施例六还提供一种存储有计算机程序的计算机可读存储介质,计算机程序在由计算机处理器执行时用于执行一种数据查询方法,该方法包括:

获取数据查询信息以及至少一条数据源信息,所述数据查询信息包括:字段名,以及与所述字段名对应的字段值;

在服务器中存储的与所述数据源信息匹配的至少一个数据库中,对所述数据查询信息进行数据查询,获取与所述数据查询信息匹配的至少一条数据记录;

根据所述数据记录,生成所述数据查询信息的反馈结果。

当然,本发明实施例所提供的存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上的方法操作,还可以执行本发明任意实施例所提供的数据查询方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。

值得注意的是,上述数据查询装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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