CN110489442A - 一种数据查询方法及系统 - Google Patents
一种数据查询方法及系统 Download PDFInfo
- Publication number
- CN110489442A CN110489442A CN201910778207.4A CN201910778207A CN110489442A CN 110489442 A CN110489442 A CN 110489442A CN 201910778207 A CN201910778207 A CN 201910778207A CN 110489442 A CN110489442 A CN 110489442A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- requested
- inquiry
- scene
- 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
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000008569 process Effects 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims description 8
- 238000005538 encapsulation Methods 0.000 claims description 5
- 238000013519 translation Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/2452—Query translation
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual databases
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种数据查询方法及系统,该方法包括:获取数据查询请求信息;其中,所述数据查询请求信息用于请求查询存在关联的不同类型数据;解析所述数据查询请求信息,确定所请求的数据所在的各个数据库;分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据。上述处理过程实现了跨越不同类型数据库进行关联数据查询,即实现了跨数据源的数据查询,将上述技术方案应用到微服务系统中,可以消除微服务数据读取的瓶颈。
Description
技术领域
本申请涉及数据处理技术领域,更具体地说,尤其涉及一种数据查询方法及系统。
背景技术
在微服务越来越普遍的情况下,一份数据,或者一系列有关联的数据,会分布地存储在不同的数据源中,比如同时存在于mysql、redis、mongodb、elasticsearch等数据库中。在这种情况下,数据查询和数据追踪成为业务开发的关键。
目前业界已有的方案主要是在同构数据库(指一种类型的数据库,比如都基于mysql,或者都基于redis)的情况下对数据进行建模,特别是关系型数据库方面。虽然关系数据库实现了一套完备的关系描述语言,可以满足查询、聚合、修改的定义,但是这种定义没有办法迁移到nosql中,也就是说无法迁移到其它类型的数据库中应用。因此,目前业界还无法实现跨数据源的数据查询,微服务化发展在数据查询和追踪方面仍存在瓶颈。
发明内容
基于上述现有技术的缺陷和不足,本申请提出一种数据查询方法及系统,能够实现跨数据源的数据查询。
一种数据查询方法,包括:
获取数据查询请求信息;其中,所述数据查询请求信息用于请求查询存在关联的不同类型数据;
解析所述数据查询请求信息,确定所请求的数据所在的各个数据库;
分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据。
可选的,当解析所述数据查询请求信息,确定所请求的数据所在的各个数据库时,所述方法还包括:
确定从所请求的数据所在的各个数据库中查询数据的查询场景;其中,所述查询场景用于表示从不同数据库中查询数据时的关联处理过程;
相应的,所述方法还包括:
根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果。
可选的,所述确定从所请求的数据所在的各个数据库中查询数据的查询场景,包括:
根据所请求的数据所在的各个数据库的数据要素,以及所述数据查询请求信息所请求的数据,确定从所请求的数据所在的各个数据库中查询数据的关联字段;
根据所述数据查询请求信息所请求的数据,以及所述关联字段,确定从所请求的数据所在的各个数据库中查询数据的查询场景。
可选的,所述分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据,包括:
将所述查询场景翻译成对应所请求的数据所在的各个数据库的数据查询语句;
将所述数据查询语句分别输入所请求的数据所在的各个数据库对应的数据源访问器,使所述数据源访问器从对应的数据库中查询数据。
可选的,所述根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果,包括:
将读取到的数据封装成预设形式的键值对;
根据所述查询场景中包含的关联字段,对封装得到的各个键值对进行拼接处理,得到数据拼接结果。
一种数据查询系统,包括:
前端模块,用于获取数据查询请求信息;其中,所述数据查询请求信息用于请求查询存在关联的不同类型数据;
请求解析模块,用于解析所述数据查询请求信息,确定所请求的数据所在的各个数据库;
查询引擎模块,用于分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据;
数据源访问器,用于从数据库中读取数据。
可选的,所述系统还包括:
场景定义模块,用于确定从所请求的数据所在的各个数据库中查询数据的查询场景;其中,所述查询场景用于表示从不同数据库中查询数据时的关联处理过程;
所述查询引擎模块还用于:根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果。
可选的,所述场景定义模块确定从所请求的数据所在的各个数据库中查询数据的查询场景时,具体用于:
根据所请求的数据所在的各个数据库的数据要素,以及所述数据查询请求信息所请求的数据,确定从所请求的数据所在的各个数据库中查询数据的关联字段;
根据所述数据查询请求信息所请求的数据,以及所述关联字段,确定从所请求的数据所在的各个数据库中查询数据的查询场景。
可选的,所述查询引擎模块包括:
场景翻译模块,用于将所述查询场景翻译成对应所请求的数据所在的各个数据库的数据查询语句;
调用处理模块,用于将所述数据查询语句分别输入所请求的数据所在的各个数据库对应的数据源访问器,使所述数据源访问器从对应的数据库中查询数据。
可选的,所述查询引擎模块根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果时,具体用于:
将读取到的数据封装成预设形式的键值对;根据所述查询场景中包含的关联字段,对封装得到的各个键值对进行拼接处理,得到数据拼接结果。
本申请提出的数据查询方法在获取请求查询存在关联的不同类型数据的数据查询请求信息后,对该数据查询请求信息进行解析,确定所请求的数据所在的各个数据库,然后分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所请求的数据。上述处理过程实现了跨越不同类型数据库进行关联数据查询,即实现了跨数据源的数据查询,将上述技术方案应用到微服务系统中,可以消除微服务数据读取的瓶颈。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请实施例提供的一种数据查询方法的流程示意图;
图2是本申请实施例提供的另一种数据查询方法的流程示意图;
图3是本申请实施例提供的又一种数据查询方法的流程示意图;
图4是本申请实施例提供的再一种数据查询方法的流程示意图;
图5是本申请实施例提供的一种数据查询系统的结构示意图;
图6是本申请实施例提供的另一种数据查询系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种数据查询方法,参见图1所示,该方法包括:
S101、获取数据查询请求信息;其中,所述数据查询请求信息用于请求查询存在关联的不同类型数据;
具体的,本申请实施例技术方案适用于同时从不同类型数据库中查询数据的应用场景。因此,上述数据查询请求信息,具体是指同时从不同类型数据库中查询数据的请求信息。
一般情况下,当用户需要从不同数据库中查询多项数据时,都是查询相互之间存在关联的多项数据,同时查询多项完全不相关的数据的情况比较少见。事实上,假如用户同时查询完全不相关的多项数据,并且多项数据存储于不同类型数据库时,完全可以分别设置处理进程来实现针对不同数据库的数据查询,也就是将跨数据库的单次数据查询拆分为多次针对不同数据库的数据查询,理论上只要实现分别从不同数据库中查询出所需数据即可,并不存在跨数据库的难点。
相反,如果用户所查询的多项数据之间存在关联关系,并且用户所查询的多项数据存储于不同数据库中,则存在关联关系的多项数据查询只能在单次数据查询中完成,并且该单次数据查询需要跨多类型数据库实现,在实际操作中仍存在困难。
而本申请实施例技术方案则是为了实现跨不同类型数据库查询多项关联数据,因此,本申请实施例中的上述数据查询请求信息,是用于请求查询存在关联的不同类型数据的请求信息,更具体的,是同时从不同类型数据库中,查询存在关联的多项数据。
需要说明的是,上述的数据查询请求信息,并不限定于是分别明确表示从某几个数据库中查询某几项不同数据的请求信息,也可以是直接请求综合型数据,当该综合型数据为不同类型数据库中的多项数据组合或拼接得到时,本申请实施例可以自动识别该综合型数据查询请求信息实际上是需要从不同类型的数据库中查询多项数据得到,因此将上述综合型数据查询请求信息拆分为同时从不同类型数据库中查询数据的多个请求信息。
S102、解析所述数据查询请求信息,确定所请求的数据所在的各个数据库;
具体的,由于本申请实施例技术方案的目的是从不同类型的数据库中查询具有关联的多项数据,因此,在获取上述的数据查询请求信息后,本申请实施例对该数据查询请求信息进行解析,从中确定该数据查询请求信息所请求的具体是哪些数据,以及,确定所请求的数据所在的各个数据库,也就是确定应当从哪些数据库中分别查询上述数据查询请求所请求的数据。
S103、分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据。
具体的,上述数据源访问器,是指用于访问数据源,并从数据源中读取数据的装置,其中,上述数据源一般以数据库的形式存在。可以理解,由于不同类型的数据库具有不同的特性,其中包括具有特定的数据存储和数据读取规则,因此,对应不同类型的数据库的数据源访问器也不同。
虽然不同的数据源访问器所实现的功能相同,即都是实现访问数据库、从访问的数据库中读取数据,但是适用于不同类型数据库的数据源访问器在访问数据库、读取数据时的具体实现过程不同,其具体实现过程应当与适用的数据库的数据存储形式和数据读取规则相匹配。因此,对于某种类型的数据库来说,能够从其中读取数据的数据源访问器,一定是具备从该种类型的数据库中读取数据的功能的数据源访问器,如果某数据源访问器仅具备从其它类型的数据库中读取数据的能力,但是并不具备从该种类型的数据库中读取数据的能力,则无法实现从该种数据库中读取数据。
为了能够实现从预设的不同类型数据库中都能读取数据,本申请实施例为多种不同类型的数据库分别设置对应的数据源访问器。需要说明的是,基于不同类型数据库的数据存储和数据读取规则不同,本申请实施例优先分别为不同类型的数据库设置一一对应的数据源访问器,即每个类型的数据库,都对应设置一个数据源访问器,用于访问数据库以及从数据库中查询、读取数据。
在此基础上,当本申请实施例确定获取的数据查询请求信息所请求的数据,以及确定所请求的数据所在的各个数据库后,本申请实施例分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所请求的数据。
可以理解,被调用的数据源访问器分别从对应的数据库中查询、读取上述数据查询请求信息所请求的部分数据,具体为存储在与被调用的数据源访问器对应的数据库中的部分请求数据,即实现了将上述数据查询请求信息所请求的各部分数据从数据库中读取出来的目的。在此基础上,对各个被调用的数据源访问器所读取出的数据进行数据组合等处理,即可得到上述数据查询请求信息所请求的完整数据。
通过上述介绍可见,本申请实施例在获取请求查询存在关联的不同类型数据的数据查询请求信息后,对该数据查询请求信息进行解析,确定所请求的数据所在的各个数据库,然后分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所请求的数据。上述处理过程实现了跨越不同类型数据库进行关联数据查询,即实现了跨数据源的数据查询,将上述技术方案应用到微服务系统中,可以消除微服务数据读取的瓶颈。
可选的,参见图2所示,在执行步骤S202、解析所述数据查询请求信息,确定所请求的数据所在的各个数据库时,所述方法还包括:
S203、确定从所请求的数据所在的各个数据库中查询数据的查询场景;其中,所述查询场景用于表示从不同数据库中查询数据时的关联处理过程;
具体的,本申请实施例在从获取的数据查询请求信息中解析确定所请求的数据所在的各个数据库后,还进一步确定从所请求的数据所在的各个数据库中查询数据的查询场景。
上述查询场景,具体为定义一组相关的查询,用于表示从不同数据库中查询数据时的关联处理过程。
可以理解,上述查询场景定义了数据查询请求信息所请求的数据之间的关联关系,并且定义了查询所请求的数据时的处理过程。因此,当执行步骤S204、分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据时,按照上述查询场景执行即可得到所请求的数据。
相应的,所述方法还包括:
S205、根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果。
具体的,在上述查询场景中定义了所请求的数据的关联关系,以及从不同数据库中查询数据的处理过程。在按照上述查询场景从不同类型的数据库中读取到所请求的数据后,本申请实施例还进一步对读取到的数据进行拼接处理。
可以理解,上述数据查询请求信息所请求的数据分开存储到了不同类型的数据库中,通过执行本申请实施例技术方案,可以从上述不同类型的数据库中分别读取出所请求的部分数据。而事实上,将读取到的各部分数据组合起来,才是上述数据查询请求所真正请求的数据。
因此,本申请实施例在从各个数据库中读取到所请求的部分数据后,还进一步根据上述查询场景,对查询、读取得到的数据进行数据拼接处理,得到数据拼接结果,也就是得到完整的数据查询结果。
本实施例中的步骤S201、S202、S204分别对应图1所示的方法实施例中的步骤S101、S102、S103,其具体内容请参见图1所示的方法实施例的内容,此处不再赘述。
在本申请的另一个实施例中,公开了上述的确定从所请求的数据所在的各个数据库中查询数据的查询场景的具体处理过程,参见图3所示,所述确定从所请求的数据所在的各个数据库中查询数据的查询场景,包括:
S303、根据所请求的数据所在的各个数据库的数据要素,以及所述数据查询请求信息所请求的数据,确定从所请求的数据所在的各个数据库中查询数据的关联字段;
具体的,上述数据要素,是指对数据库中的数据进行数据抽象得到的数据库中所存储的数据的要素。
当上述数据查询请求信息所请求的数据具有关联性时,可以根据所请求的数据的具体内容,确定所请求的数据中的各部分数据之间的关联要素,也就是从所请求的数据所在的各个数据库中查询数据的关联字段。
S304、根据所述数据查询请求信息所请求的数据,以及所述关联字段,确定从所请求的数据所在的各个数据库中查询数据的查询场景;
具体的,在确定所请求的数据,以及确定从所请求的数据所在的各个数据库中查询数据的关联字段后,就可以确定从所请求的数据所在的各个数据库中查询数据的先后处理顺序,以及确定从不同数据库中查询数据的关联关系,即确定从所请求的数据所在的各个数据库中查询数据的查询场景。
比如,假设mysql中有一张表user,标明用户信息,该表的数据可被抽象为:user_id:唯一索引,user_name:非索引字段;另外有一个redis数据库,其中包含了用户的消费记录.其中的记录可以被抽象为user_id:索引,consume_count:非索引字段。另外定义redis中的表和mysql中的表根据user_id字段关联。以上就是数据抽象的定义,在这个基础上可以定义一个查询场景,例如:场景id:用户消费信息,场景内容:user@mysql:user_id->user@redis:user_id,这样,前端的一个对“用户消费信息”的场景查询会先查询mysql中的信息,然后根据关联字段查找到redis中的信息。
在此基础上,当根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果时,具体包括:
S306、将读取到的数据封装成预设形式的键值对;
具体的,本申请实施例将读取到的数据都封装成“关键字→值”的键值对,使所读取到的不同类型的数据的表示形式都统一起来。
S307、根据所述查询场景中包含的关联字段,对封装得到的各个键值对进行拼接处理,得到数据拼接结果。
然后,本申请实施例将各键值对依据所请求的来自不同数据库的数据之间的关联关系进行拼接,得到数据拼接结果,也就是上述数据查询请求信息所请求的完整数据。
本实施例中的步骤S301、S302、S305分别对应图2所示的方法实施例中的步骤S201、S202、S204,其具体内容请参见图2所示的方法实施例的内容,此处不再赘述。
可选的,在本申请的另一个实施例中还公开了,参见图4所示,所述分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据,包括:
S404、将所述查询场景翻译成对应所请求的数据所在的各个数据库的数据查询语句;
具体的,在上述查询场景中,定义了从哪些数据库中查询数据,以及从不同数据库中查询数据的关联关系。实际上,各个不同的数据库都有其规定的数据查询、读取规范,即需要符合数据查询规范的查询语句,才能实现从数据库中查询、读取数据。
因此,当确定了用于从不同类型数据库中查询数据的查询场景后,本申请实施例将该查询场景翻译成对应所请求的数据所在的各个数据库的数据查询语句。具体的,上述数据查询请求需要从几个数据库中查询数据,就需要相应的几个数据查询语句,每个数据查询语句用于从一个对应的数据库中查询数据。
S405、将所述数据查询语句分别输入所请求的数据所在的各个数据库对应的数据源访问器,使所述数据源访问器从对应的数据库中查询数据。
具体的,将翻译出的数据查询语句分别输入所请求的数据所在的各个数据库对应的数据源访问器,则数据源访问器根据接收的数据查询语句,访问对应的数据库,并从中读取数据查询语句所指示查询的数据。
在图4所示的实施例中的步骤S401~S403、S406分别对应图2所示的方法实施例中的步骤S201~S203、S205,其具体内容请参见图2所示的方法实施例的内容,此处不再赘述。
本申请另一实施例还公开了一种数据查询系统,参见图5所示,该系统包括:
前端模块100,用于获取数据查询请求信息;其中,所述数据查询请求信息用于请求查询存在关联的不同类型数据;
请求解析模块110,用于解析所述数据查询请求信息,确定所请求的数据所在的各个数据库;
查询引擎模块120,用于分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据;
数据源访问器130,用于从数据库中读取数据。
可选的,在本申请的另一个实施例中,参见图6所示,所述系统还包括:
场景定义模块140,用于确定从所请求的数据所在的各个数据库中查询数据的查询场景;其中,所述查询场景用于表示从不同数据库中查询数据时的关联处理过程;
需要说明的是,在本申请实施例中设定,一种查询场景对应一个场景定义模块140。
所述查询引擎模块120还用于:根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果。
其中,所述场景定义模块140确定从所请求的数据所在的各个数据库中查询数据的查询场景时,具体用于:
根据所请求的数据所在的各个数据库的数据要素,以及所述数据查询请求信息所请求的数据,确定从所请求的数据所在的各个数据库中查询数据的关联字段;
根据所述数据查询请求信息所请求的数据,以及所述关联字段,确定从所请求的数据所在的各个数据库中查询数据的查询场景。
可选的,在本申请的另一个实施例中还公开了,所述查询引擎模块包括:
场景翻译模块,用于将所述查询场景翻译成对应所请求的数据所在的各个数据库的数据查询语句;
调用处理模块,用于将所述数据查询语句分别输入所请求的数据所在的各个数据库对应的数据源访问器,使所述数据源访问器从对应的数据库中查询数据。
所述查询引擎模块120根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果时,具体用于:
将读取到的数据封装成预设形式的键值对;根据所述查询场景中包含的关联字段,对封装得到的各个键值对进行拼接处理,得到数据拼接结果。
以一个商品数据库举例说明上述数据查询系统所实现的数据查询过程:
商品数据在关系数据库mysql中的结构为:
Goodsid:int64
Name:string
同时为了支持高并发访问,该实体会在redis缓存数据库中以goods_cache_{goodsid}为key存储,假设存储的内容为count字段,标明商品数目。
同时为了支持灵活检索,该数据会在elasticsearch(一种非关系型的数据库)中以goodid:int64,Document:string的格式存储。Document字段是该商品的文字描述。
在这种场景下,首先会定义三个不同的数据源访问器,分别负责访问mysql,redis,elasticsarch。然后在查询引擎模块中会定义如下关系:
@mysql.goods.goodsid:
@redis.goods_cache_{%goodsid}
@elasticsearch.goods.goodsid
同时在场景定义模块中定义如下场景:scenario(goods):mysql->redis,mysql->elasticsearch。
这个定义表示:对于goods数据,在mysql中的记录会通过goodsid(定义在查询引擎模块中)和redis中的数据关联。同时,在mysql中的数据会根据goodsid和elasticsearch中的数据关联。这样在前端发送一个getgoods({goodsid})(通过goodsid关键词查询“goods”这个查询场景的结果)的情况下,场景定义模块会先解析查询场景的定义,找出查询场景定义中包含了哪些实体,实体也就是在上面例子中的几个商品结构定义。
在查询引擎模块中找出几个实体的关系以及分别的检索条件,实体间关系就是上面例子中查询引擎模块中定义的关系。查询引擎模块通过解析检索条件,生成对应数据源访问器的查询请求。每个数据源访问器根据收到的请求执行对应查询。最后查询引擎模块模块负责把整个关系数据组合起来,生成级联的结构化数据。
其中的场景定义模块会根据查询引擎模块中定义的关系,决定查询的先后顺序,以及几个结果之间的关联关系。通过递归的解析关联关系就能计算出一个查询场景中涉及到的所有实体之间通过哪个字段进行关联,以此可以计算出多个实体之间的链式关系。在拿到统一格式的查询结果后,根据链式关系,将几个实体的键值对根据链式关系组装城一个树形的结构。对于例子中的场景,得到的结果类似于下面的结构:
Goodsid:100
Count@redis:10
Document@elasticsearch:‘苹果是一种水果’
Name@mysql:苹果
实现了异构数据库的数据拼装。
进一步的,上述数据查询系统的各个实施例中的各个单元的具体工作内容,还可参见上述方法实施例的内容,此处不再赘述。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
获取数据查询请求信息;其中,所述数据查询请求信息用于请求查询存在关联的不同类型数据;
解析所述数据查询请求信息,确定所请求的数据所在的各个数据库;
分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据。
2.根据权利要求1所述的方法,其特征在于,当解析所述数据查询请求信息,确定所请求的数据所在的各个数据库时,所述方法还包括:
确定从所请求的数据所在的各个数据库中查询数据的查询场景;其中,所述查询场景用于表示从不同数据库中查询数据时的关联处理过程;
相应的,所述方法还包括:
根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果。
3.根据权利要求2所述的方法,其特征在于,所述确定从所请求的数据所在的各个数据库中查询数据的查询场景,包括:
根据所请求的数据所在的各个数据库的数据要素,以及所述数据查询请求信息所请求的数据,确定从所请求的数据所在的各个数据库中查询数据的关联字段;
根据所述数据查询请求信息所请求的数据,以及所述关联字段,确定从所请求的数据所在的各个数据库中查询数据的查询场景。
4.根据权利要求2或3所述的方法,其特征在于,所述分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据,包括:
将所述查询场景翻译成对应所请求的数据所在的各个数据库的数据查询语句;
将所述数据查询语句分别输入所请求的数据所在的各个数据库对应的数据源访问器,使所述数据源访问器从对应的数据库中查询数据。
5.根据权利要求3所述的方法,其特征在于,所述根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果,包括:
将读取到的数据封装成预设形式的键值对;
根据所述查询场景中包含的关联字段,对封装得到的各个键值对进行拼接处理,得到数据拼接结果。
6.一种数据查询系统,其特征在于,包括:
前端模块,用于获取数据查询请求信息;其中,所述数据查询请求信息用于请求查询存在关联的不同类型数据;
请求解析模块,用于解析所述数据查询请求信息,确定所请求的数据所在的各个数据库;
查询引擎模块,用于分别调用所请求的数据所在的各个数据库对应的数据源访问器,从所请求的数据所在的各个数据库中读取所述数据查询请求信息所请求的数据;
数据源访问器,用于从数据库中读取数据。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
场景定义模块,用于确定从所请求的数据所在的各个数据库中查询数据的查询场景;其中,所述查询场景用于表示从不同数据库中查询数据时的关联处理过程;
所述查询引擎模块还用于:根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果。
8.根据权利要求7所述的系统,其特征在于,所述场景定义模块确定从所请求的数据所在的各个数据库中查询数据的查询场景时,具体用于:
根据所请求的数据所在的各个数据库的数据要素,以及所述数据查询请求信息所请求的数据,确定从所请求的数据所在的各个数据库中查询数据的关联字段;
根据所述数据查询请求信息所请求的数据,以及所述关联字段,确定从所请求的数据所在的各个数据库中查询数据的查询场景。
9.根据权利要求7或8所述的系统,其特征在于,所述查询引擎模块包括:
场景翻译模块,用于将所述查询场景翻译成对应所请求的数据所在的各个数据库的数据查询语句;
调用处理模块,用于将所述数据查询语句分别输入所请求的数据所在的各个数据库对应的数据源访问器,使所述数据源访问器从对应的数据库中查询数据。
10.根据权利要求8所述的系统,其特征在于,所述查询引擎模块根据所述查询场景,对读取到的数据进行数据拼接处理,得到数据拼接结果时,具体用于:
将读取到的数据封装成预设形式的键值对;根据所述查询场景中包含的关联字段,对封装得到的各个键值对进行拼接处理,得到数据拼接结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910778207.4A CN110489442A (zh) | 2019-08-22 | 2019-08-22 | 一种数据查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910778207.4A CN110489442A (zh) | 2019-08-22 | 2019-08-22 | 一种数据查询方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110489442A true CN110489442A (zh) | 2019-11-22 |
Family
ID=68551759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910778207.4A Pending CN110489442A (zh) | 2019-08-22 | 2019-08-22 | 一种数据查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489442A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159106A (zh) * | 2019-12-30 | 2020-05-15 | 亚信科技(中国)有限公司 | 一种数据查询方法及装置 |
CN112632115A (zh) * | 2020-07-31 | 2021-04-09 | 银盛支付服务股份有限公司 | 一种基于bi的数据查询方法及系统 |
CN113760942A (zh) * | 2020-06-04 | 2021-12-07 | 阿里巴巴集团控股有限公司 | 一种交互式分析中的数据处理方法及装置 |
CN114490663A (zh) * | 2022-02-14 | 2022-05-13 | 支付宝(杭州)信息技术有限公司 | 数据处理方法及装置 |
CN117555970A (zh) * | 2023-10-20 | 2024-02-13 | 大唐融合通信股份有限公司 | 数据混合检索方法、装置、设备和可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183735A (zh) * | 2014-06-18 | 2015-12-23 | 阿里巴巴集团控股有限公司 | 数据的查询方法及查询装置 |
CN105989150A (zh) * | 2015-03-02 | 2016-10-05 | 中国移动通信集团四川有限公司 | 一种基于大数据环境的数据查询方法及装置 |
CN107818127A (zh) * | 2017-09-09 | 2018-03-20 | 国网浙江省电力公司 | 一种用于多源数据的查询方法及系统 |
CN109508338A (zh) * | 2018-11-23 | 2019-03-22 | 成都四方伟业软件股份有限公司 | 数据报表关联方法及装置 |
-
2019
- 2019-08-22 CN CN201910778207.4A patent/CN110489442A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183735A (zh) * | 2014-06-18 | 2015-12-23 | 阿里巴巴集团控股有限公司 | 数据的查询方法及查询装置 |
CN105989150A (zh) * | 2015-03-02 | 2016-10-05 | 中国移动通信集团四川有限公司 | 一种基于大数据环境的数据查询方法及装置 |
CN107818127A (zh) * | 2017-09-09 | 2018-03-20 | 国网浙江省电力公司 | 一种用于多源数据的查询方法及系统 |
CN109508338A (zh) * | 2018-11-23 | 2019-03-22 | 成都四方伟业软件股份有限公司 | 数据报表关联方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159106A (zh) * | 2019-12-30 | 2020-05-15 | 亚信科技(中国)有限公司 | 一种数据查询方法及装置 |
CN111159106B (zh) * | 2019-12-30 | 2023-04-07 | 亚信科技(中国)有限公司 | 一种数据查询方法及装置 |
CN113760942A (zh) * | 2020-06-04 | 2021-12-07 | 阿里巴巴集团控股有限公司 | 一种交互式分析中的数据处理方法及装置 |
CN112632115A (zh) * | 2020-07-31 | 2021-04-09 | 银盛支付服务股份有限公司 | 一种基于bi的数据查询方法及系统 |
CN114490663A (zh) * | 2022-02-14 | 2022-05-13 | 支付宝(杭州)信息技术有限公司 | 数据处理方法及装置 |
CN117555970A (zh) * | 2023-10-20 | 2024-02-13 | 大唐融合通信股份有限公司 | 数据混合检索方法、装置、设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489442A (zh) | 一种数据查询方法及系统 | |
CN110032575A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN109614413B (zh) | 一种内存流式计算平台系统 | |
US10169471B2 (en) | Generating and executing query language statements from natural language | |
US9703830B2 (en) | Translation of a SPARQL query to a SQL query | |
JP6577588B2 (ja) | 向上したイベント処理のための構築されたデータストリーム | |
EP1522930A2 (en) | Method and apparatus for identifying semantic structures from text | |
CN112380180A (zh) | 数据同步处理方法、装置、设备及存储介质 | |
CN110688397B (zh) | 一种基于sql的分布式数据统一访问系统及方法 | |
US20030200501A1 (en) | Computer-implemented system and method for tagged and rectangular data processing | |
US20050066059A1 (en) | Propagating attributes between entities in correlated namespaces | |
CN104598550B (zh) | 一种网络视频索引的更新方法和装置 | |
US11106739B2 (en) | Document structures for searching within and across messages | |
WO2024041022A1 (zh) | 数据库表变更方法、装置、设备和存储介质 | |
JP2008537827A (ja) | 階層データベースのリレーショナル・クエリ | |
CN111400303A (zh) | 智能合约数据提取和同步方法、系统和平台 | |
CN110334156A (zh) | 一种数据库同步方法、装置、服务器和存储介质 | |
JP2001350656A (ja) | 異種データソース統合アクセス方法 | |
CN110378778A (zh) | 多数据源对账方法、系统、电子设备及存储介质 | |
CN108573171A (zh) | Greenplum数据脱敏方法、装置、设备及介质 | |
CN114416771A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN111666344A (zh) | 异构数据同步方法及装置 | |
CN108182204A (zh) | 基于房产交易多维度数据的数据查询的处理方法及装置 | |
US7103872B2 (en) | System and method for collecting and transferring sets of related data from a mainframe to a workstation | |
EP2948871A1 (en) | Method for accessing and automatically correlating data from a plurality of external data sources |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191122 |
|
RJ01 | Rejection of invention patent application after publication |