CN110532282A - 数据查询方法及装置 - Google Patents
数据查询方法及装置 Download PDFInfo
- Publication number
- CN110532282A CN110532282A CN201910735289.4A CN201910735289A CN110532282A CN 110532282 A CN110532282 A CN 110532282A CN 201910735289 A CN201910735289 A CN 201910735289A CN 110532282 A CN110532282 A CN 110532282A
- Authority
- CN
- China
- Prior art keywords
- equipment
- rule
- query
- value
- key
- 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.)
- Granted
Links
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/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据查询方法及装置。其中,该方法包括:获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;根据所述第一查询请求确定第一目标规则集;遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;基于所述第一目标规则查询对应的第一目标设备标识;从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;根据所述第一查询结果确定目标结果。本申请解决了现有技术中,利用MapReduce框架针对大规模数据查询效率较低的技术问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种数据查询方法及装置。
背景技术
随着互联网的持续发展,我们可收集获取的数据呈***式增长,数据规模在不断增大。尽管数据的收集存储技术还在不断进步和日趋成熟,但是如何快速的查询并获取如此庞大的数据变成了一个新的问题。在传统的单机数据库中,通常都是通过建立索引的方法以提高数据的查询效率,但是随着数据规模的不断增大和查询语句的逐渐复杂化和多样化,传统数据库的查询方法已经很难满足大规模数据的查询需求。
MapReduce是一种分布式架构模型,用于大规模的数据的并行处理。MapReduce模型借鉴了函数式程序设计语言中的内置函数Map和Reduce,主要思想为将大规模数据处理作业拆分成多个可独立运行的Map任务,分布到多个处理机上运行,产生一定量的中间结果,再通过Reduce任务混洗合并产生最终的输出文件。MapReduce的出现,较好的解决了大规模数据的查询和计算等问题。并且作为第一代分布式架构,MapReduce已经比较好的考虑了数据存储、调度、通信、容错管理、负载均衡等很多问题,并且提供了相对规范的编程结构,用户可以通过Java、C++或Python等编程语言编写Map和Reduce函数就可以实现对海量数据的处理,而不需要考虑分布式***的执行细节。
面对持续增长的业务数据总量以及日益复杂的实际应用需求,MapReduce也逐渐被用于大规模数据的查询问题中,特别是针对大规模数据的复杂查询问题,MapReduce可以通过将复杂的查询语句分布到多台设备进行并行查找以获得较快的响应速度。与单机数据查询相比,MapReduce查询有着更快的查询效率,同时对设备的性能要求更低,因此被广泛的应用在不同的查询场景中。
但是基于MapReduce框架的查询方案也存在一些缺陷:首先在MapReduce框架中,Map阶段和Reduce阶段的中间结果需要存储在磁盘上,过多的读写操作会影响***的查询效率;同时Map阶段和Reduce阶段的中间结果也需要通过网络进行数据传输,如果数据量过大或者子查询语句较多,并且会因为网络拥塞导致查询性能的降低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据查询方法及装置,以至少解决现有技术中,利用MapReduce框架针对大规模数据查询效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种数据查询方法,包括:获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;根据所述第一查询请求确定第一目标规则集;遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;基于所述第一目标规则查询对应的第一目标设备标识;从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;根据所述第一查询结果确定目标结果。
可选地,根据所述第一查询请求确定第一目标规则集包括:获取预设规则库中第一规则集的第二属性名称;判断所述第二属性名称是否与所述第一属性名称相同,若是,则将所述第一规则集作为所述第一目标规则集。
可选地,所述第一规则集包括第二规则集与第三规则集,所述第二规则集包括所述第二属性名称,所述第三规则集包括:所述第二属性名称、所述第二属性名称对应的第二属性值,以及所述第二属性值对应的设备标识;遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则包括:遍历所述第一目标规则集中的所述第三规则集中的各个规则,将所述第三规则集中包括所述第一属性值的规则作为所述第一目标规则。
可选地,从所述第一目标设备标识对应的第一目标设备中获取第一查询结果包括:从所述第一目标设备标识对应的第一目标设备中获取所述第一属性值对应的第一数据标识;将所述第一数据标识作为所述第一查询结果。
可选地,从所述第一目标设备标识对应的第一目标设备中获取第一查询结果之后,所述方法还包括:删除所述第一查询请求中所述第一数据标识对应的第三属性名称与第三属性值,得到第二查询请求;判断所述第二查询请求中是否包括第四属性名称,与所述第四属性名称对应的第四属性值,其中,所述第四属性名称为所述第一属性名称中除所述第三属性名称之外的属性名称;若是,则判断所述预设规则库中是否存在包括所述第四属性名称的第二目标规则集,若所述预设规则库中存在所述第二目标规则集,则遍历所述第二目标规则集中的各个规则,查找与所述第四属性值关联的第二目标规则;基于所述第二目标规则查询对应的第二目标设备标识;从所述第二目标设备标识对应的第二目标设备中获取第二查询结果;根据所述第一查询结果确定目标结果包括:获取所述第一查询结果与所述第二查询结果的第一交集;将所述第一交集作为所述目标结果。
可选地,所述方法还包括:若所述预设规则库中不存在所述第二目标规则集,则将所述第二查询请求拆分为多个查询语句,得到多个待查属性信息,每个待查属性信息包括一个所述第四属性名称与一个所述第四属性值;获取所述第四属性名称;采集预设数据库中对应的属性名称与所述第四属性名称相同的第五属性值,以及与所述第五属性值对应的第二数据标识;将所述第二数据标识与所述第五属性值组成第一键值对,其中,所述第二数据标识为所述第一键值对的键,所述第五属性值为所述第一键值对的值;将所述第一键值对分发至多个第一设备,获取各个所述第一设备的设备标识;将所述第一键值对进行键值互换,得到第二键值对;按照第一预设规则对所述第二键值对进行分区,其中,所第一预设规则包括:在各个所述第一设备中将包括所述第四属性值的所述第二键值对分为一个区,分区的区数与所述第一设备的数目相同;将分区后的所述第二键值对按照第二预设规则归并至第二设备,获取第二设备的设备标识,所述第二预设规则包括:将包括所述第四属性值的所述第二键值对归并至同一个设备,所述第二设备的数目与所述区数相同;将归并至所述第二设备的所述第二键值对进行键值互换,得到第三键值对,将所述第三键值对存储至第三设备,得到第三设备的设备标识;将所述第三键值对按照第三预设规则归并至第四设备,得到所述第四设备的设备标识,所述第三预设规则包括:将包括所述第四属性值的所述第三键值对归并至同一设备;在所述第四设备中查找包括所述第四属性值的第三查询结果;根据所述第一查询结果确定目标结果包括:获取所述第一查询结果与所述第三查询结果的第二交集;将所述第二交集作为所述目标结果。
可选地,根据所述第一查询结果确定目标结果之后,所述方法还包括:获取所述第一设备、第二设备、第三设备以及所述第四设备中各个设备中包括的第六属性名称、所述第六属性名称对应的第六属性值、以及第一设备、第二设备、第三设备以及所述第四设备的设备标识;建立所述第六属性名称、所述第六属性值,与所述各个设备的设备标识的对应关系;将所述对应关系作为第四规则集添加至所述预设规则库。
根据本申请实施例的一个方面,提供了一种数据查询装置,包括:第一获取模块,用于获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;第一确定模块,用于根据所述第一查询请求确定第一目标规则集;查找模块,用于遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;查询模块,用于基于所述第一目标规则查询对应的第一目标设备标识;第二获取模块,用于从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;第二确定模块,用于根据所述第一查询结果确定目标结果。
根据本申请实施例的一个方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述的数据查询方法。
根据本申请实施例的一个方面,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的数据查询方法。
在本申请实施例中,采用通过获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;根据所述第一查询请求确定第一目标规则集;遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;基于所述第一目标规则查询对应的第一目标设备标识;从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;根据所述第一查询结果确定目标结果的方式,达到了通过预先建立属性名称、属性值与预设规则的对应关系,根据预设规则实现数据的快速查找的技术效果,进而解决了现有技术中,利用MapReduce框架针对大规模数据查询效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的数据查询方法的流程示意图;
图2是根据本申请实施例的一种可选的基于MapReduce的数据查询方法的流程示意图;
图3是根据本申请实施例的一种可选的数据查询装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
MapReduce:一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和”Reduce(归约)”,是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式***上。
现有的通过MapReduce分布式框架进行数据查询的方案是将一个复杂的查询语句切分成多个相对简单的查询语句,并将这些查询语句分布到多台设备上进行并行查询,以获得较快的查询速率。下面将通过一个具体的查询例子对传统查询方法和基于MapReduce的查询方法进行分析和比较。
假设现有一个人物信息数据库,如表1所示。该库中保存了6个人物信息,其中每个人物分别对应5个属性名称:姓名、姓氏、性别、年龄和籍贯,以及与该五个属性名称对应的属性值。
表1 人物信息数据库
ID | 姓名 | 姓氏 | 性别 | 年龄 | 籍贯 |
0 | 张一 | 张 | 男 | 15 | 安徽 |
1 | 张二 | 张 | 女 | 62 | 北京 |
2 | 张三 | 张 | 男 | 71 | 安徽 |
3 | 王二 | 王 | 男 | 24 | 安徽 |
4 | 李一 | 李 | 女 | 55 | 北京 |
5 | 李二 | 李 | 男 | 37 | 北京 |
现假设需要查询库中的张姓男子,则该查询语句的形式化表示如下所示(以Cypher查询语言为例):
MATCH(n)
WHERE n.姓氏=’张’AND n.性别=’男’
RETURN n
以下为普通的查询方案:
在普通单机的数据库中通常通过遍历的方式进行查找,因为该例的查询语句中包含2个属性值的查询,分别是姓氏、性别对应的属性值,因此需要对数据库进行2次访问才能获得最终的人物ID。查找流程包括以下步骤S12与步骤S14,
步骤S12,遍历数据库所有人物中查找姓氏为“张”的人物,本次查找结果的人物ID为0,1和2,其中,ID为区分不同人物结果的数据标识。
步骤S14,遍历ID为0,1和2的人物信息,筛选性别为男的人物,本次查找结果的人物ID为0和2,即为最终结果。
可以看到在上述查找流程中,需要对数据库中的人物信息访问2次,每次基于不同的属性值进行筛选和查询,并得到最终的查询结果。这种传统的查询方法虽然实现简单且易于操作,但也存在一些不可避免的缺点。首先该查询方法需要对数据库中的人物信息进行多次遍历,随着数据库中数据规模不断增大,该方法的查询效率会呈指数级的降低;同时,在该方法中,查询语句越复杂或限定条件越多,访问数据库的次数也越多,即查询效率也会越慢。综上所述,传统的数据查询方法并不适合处理大规模数据的复杂查询问题。
另外,对于上述查询语句还包括基于MapReduce的查询方案,具体方案如下:
MapReduce中的操作只有两种:Map和Reduce,而这两种操作都是由用户定义的。Map和Reduce的输入与输出数据都是键值对<key/value>,可以用两个公式对它们进行简单的描述:
Map(k1,v1)→list(k2,v2)
Reduce(k2,list(v2))→list(v2)
在一个问题的计算过程中,Map操作将数据自动的进行分区并分布到多台处理机上进行并行处理,Reduce操作会根据中间数据的key值通过分区函数(如Hash函数)处理并分布到不同处理机上进行相同的计算,完成一个MapReduce计算过程。针对上述查询语句,本申请提供了一种基于MapReduce框架的查询方式,图2为根据本申请实施例中的一种基于MapReduce的数据查询方法的流程示意图,该数据查询方法包括以下步骤S202至步骤S214。
步骤S202,首先MapReduce会将上述复杂查询语句拆分为2个简单的子查询语句,即姓氏为“张”,性别为“男”;并将拆分后的2个子查询语句各自分布到多台设备上进行并行查询。步骤S204,在“作业一”中,当查询姓氏为“张”的人物时,在Map阶段,***会从完整的数据库中提取人物ID和人物的姓氏属性值作为键值对,即<ID/姓氏>,并进行切分并分发到多台设备上,即图2中的设备1和设备2,图2是根据本申请实施例的一种可选的基于MapReduce的数据查询方法的流程示意图;当查询性别为“男”的人物时,在Map阶段,***会从完整的数据库中提取人物ID和人物的性别属性值作为键值对,即<ID/性别>,并进行切分并分发到多台设备上,即图2中的设备13和设备14。
步骤S206,在切分后会将每台设备上的键值对进行转换,即转换为<姓氏/ID>、<性别/ID>;
步骤S208,进一步基于key(姓氏)、key(性别)进行内部排序并分区,至此完成作业一的Map阶段。
步骤S210,在作业一中的Reduce阶段,MapReduce会根据key(姓氏)对Map阶段中各设备的键值对进行归并操作,归并后所有键值对会被聚集到新的设备上,如图2中的设备3和设备4。至此作业一完成,此时***已经将所有的键值对根据姓氏进行筛选并分布到不同设备上(设备3和设备4);另外,MapReduce会根据key(性别)对Map阶段中各设备的键值对进行归并操作,归并后所有键值对会被聚集到新的设备上,如图2中的设备15和设备16。至此作业一完成,此时***已经将所有的键值对根据性别进行筛选并分布到不同设备上(设备15和设备16);
步骤S212,在作业二中的Map阶段,***会将作业一得到的所有键值对再次进行键值转换操作,以人物ID为key。此时图2中设备5和设备7中的键值对分别满足步骤202的2个子查询语句。
步骤S214,在作业二中的Reduce阶段,***会将各台满足子查询语句的设备上的键值对进行归并,如图2中的设备5和设备6、设备7和设备8,并对这些键值对根据key(ID)求交集。归并后在设备9上的键值对为满足要求的人物,即人物ID为0和2的人物。
通过以上分析可以看出,基于MapReduce框架的查询方案较之传统的查询方法存在很多优点。首先基于MapReduce框架进行查询时,可以将数据分布至多台设备上,有效的减小了单台设备的查询压力,适合大规模的数据查询问题;同时该方案将原复杂的查询语句拆分为多个简单的子查询语句,并在不同设备上并行查询,同样适合复杂的查询问题。
根据本申请实施例,提供了一种数据查询方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本申请中提出一种新的基于规则集的MapReduce查询方案,该方案可以根据MapReduce的查询流程自动建立相应的查询规则集,并将规则集以Query Rule Schema+Query Rule Body结构进行存储。当***需要进行新的数据查询操作时,可以根据现有的查询规则集有效的减少***中的查询步骤,提高运行效率。
首先:我们以一个具体的例子初步解释本方案的查询过程。假设数据库仍然如表1所示,现***中依次需要执行如下三个查询语句,分别为:
Query 1:查找张姓男子;
Query 2:查找张姓人物;
Query 3:查找安徽男子;
首先***需要基于MapReduce框架执行Query 1,具体执行步骤与上述基于MapReduce的数据查询方法相同。在执行完Query 1后,由图2可以看出***已经针对“姓氏”和“性别”对数据库中的所有人物进行分类,并保存在不同设备上。此时我们可以得到如下8条查询规则:
Query Rule#1:IF姓氏=“张”THEN machine5
Query Rule#2:IF姓氏=“李”OR姓氏=“王”THEN machine6
Query Rule#3:IF性别=“男”THEN machine7
Query Rule#4:IF姓氏=“女”THEN machine8
Query Rule#5:IF姓氏=“张”AND性别=“男”THEN machine9
Query Rule#6:IF姓氏=“张”AND性别=“女”THEN machine10
Query Rule#7:IF(姓氏=“李”OR姓氏=“王”)AND性别=“男”THEN machine11
Query Rule#8:IF(姓氏=“李”OR姓氏=“王”)AND性别=“女”THEN machine12
当***继续执行查询语句Query 2时,由Query Rule#1可以得出在设备5上保存的即为姓氏为“张”的人物ID,无需查询数据库便可直接获得相应结果,即ID为0,1和2。
当***执行查询语句Query 3时,会首先将Query 3分解为两个简单的子查询语句,即查找籍贯为“安徽”的人物ID和查找性别为“男”的人物ID。而由Query Rule#3可知设备7上存储的即为性别为“男”的人物ID,此时***只需要利用上述基于MapReduce的数据查询方法在数据库中分布式查询籍贯为“安徽”的人物ID,并与设备7上存储的ID做交集,便可得到满足查询条件的人物ID。
同时,因为在执行Query 3时***运行了新的查询语句,因此在Query 3完成后,同样可以建立如下规则:
Query Rule#9:IF籍贯=“北京”THEN machine…
Query Rule#10:IF籍贯=“安徽”THEN machine…
Query Rule#11:IF性别=“男”AND籍贯=“北京”THEN machine…
Query Rule#12:IF姓氏=“女”AND籍贯=“北京”THEN machine…
Query Rule#13:IF性别=“男”AND籍贯=“安徽”THEN machine…
Query Rule#14:IF姓氏=“女”AND籍贯=“安徽”THEN machine…
通过以上分析可以看出,在本方案中,每当***执行一条查询语句Query i时,都会在已有的查询规则库中进行搜索,搜索结果可能会出现以下三种情况:
1)规则库中没有与Query i相匹配的Query Rule。此时***需要重新利用上述基于MapReduce的数据查询方法进行分布式查询。在查询完成后,针对本次查询建立新的Query Rule并加入到已有的规则库中。如上例中的Query 1执行过程。
2)规则库中存在与Query i完全匹配的Query Rule。此时***可以直接通过QueryRule得到查询结果,无需对原数据库进行分布式查询。如上例中的Query 2执行过程。
3)规则库中存在与Query i部分匹配的Query Rule。此时已匹配的查询内容***无需执行查询操作便可得到查询结果,而针对未匹配的查询内容***需要利用上述基于MapReduce的数据查询方法对原数据库进行分布式查询。在查询完成后,针对本次未匹配的查询建立新的Query Rule并加入到已有的规则库中。如上例中的Query 3执行过程。
可以看出通过每次查询得到的查询规则,我们可以建立一个相对完善的查询规则库,每次***接受到新的查询要求时会首先在查询规则库中搜索满足查询要求的查询规则。该方法可以有效的提高***的查询效率,缩短***响应时间。
本申请提供了一种数据查询方法,图1是根据本申请实施例的数据查询方法的流程示意图,如图1所示,该方法至少包括如下步骤:
步骤S102,获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;
在本申请的一些可选的实施例中,***获取一条新的查询语句Qi,具体语句内容如下所示,其中A1-An为需要查询的属性名称,a1-an为每一个属性名称对应的具体属性值。我们称集合{A1,A2,…,An}为查询语句Qi的第一属性名称集合,其中,A1,A2,…,An为第一属性名称,a1-an分别为A1-An对应的第一属性值,记该第一属性名称集合为Pi;具体查询语句如下所示:
MATCH(people)
WHERE A1=a1 AND A2=a2 AND…AND An=an
RETURN people
步骤S104,根据所述第一查询请求确定第一目标规则集;
在本申请的一些可选的实施例中,在预设规则库中进行匹配,寻找满足或者部分满足查询语句Qi的规则集。假设当前规则库中已有x条规则集(Rule Set),每条规则集都对应一个Query Rule Schema和一个Query Rule Body。具体地,规则集Rule Set#j结构如下:
Query Rule Schema#j:
IF B1 AND B2 AND…ANDBm THEN machine
Query Rule Body#j:
IF B1=b11 AND B2=b21 AND…AND Bm=bm1 THEN machine…
IF B1=b12 AND B2=b22 AND…AND Bm=bm2 THEN machine…
IF B1=b13AND B2=b23 AND…AND Bm=bm3 THEN machine…
…
可选地,遍历预设规则库中所有未匹配的Rule Set,针对Query Rule Schema#j(j∈(1,x)),将Query Rule Schema#j中的B1-Bm与Qi的属性名集合Pi进行比较,若集合{B1,B2,…,Bm}为集合Pi的子集,则确定该Query Rule Schema#j为第一目标规则集。
步骤S106,遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;
可选地,第一目标规则集中的包括多个属性名称与各个属性名称对应的属性值,以及该属性值对应的设备标识,第一属性值与第一目标规则的关联关系可以为第一目标规则中包括所述第一属性值。
步骤S108,基于所述第一目标规则查询对应的第一目标设备标识;
可选地,第一目标规则对应的第一目标设备标识,可以为第一目标规则内包括的第一目标设备标识。
具体地,可遍历Query Rule Body#j中的所有规则,寻找满足或部分满足查询语句Qi的规则。若存在满足查询语句Qi的查询规则Query Rule#k,则通过查询规则Query Rule#k得到对应的设备ID,该设备ID则为第一目标设备标识。
步骤S110,从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;
在本申请的一些可选的实时例中,确定第一目标设备标识之后,可在第一目标设备标识对应的第一目标设备中直接获取第一查询结果。
可选地,第一查询结果可以为所述第一属性名称与第一属性值对应的数据标识,该数据标识可以为人物ID。
具体地,可从第一目标设备上获得满足或部分满足查询语句Qi的数据ID集合result#k,若不存在满足查询语句Qi的查询规则,则继续在预设规则库中查找第一目标规则集,例如,继续对预设规则库中的Rule Set进行查找。
步骤S112,根据所述第一查询结果确定目标结果。
在本申请的一些可选的实施例中,目标结果为第一查询请求对应的最终查询结果。
可选地,根据所述第一查询请求确定第一目标规则集可以通过以下方式进行实现:获取预设规则库中第一规则集的第二属性名称;判断所述第二属性名称是否与所述第一属性名称相同,若是,则将所述第一规则集作为所述第一目标规则集。
其中,预设规则库中包括多个第一规则集,第一规则集中的包括的属性名称为第二属性名称。判断所述第二属性名称是否与所述第一属性名称相同可以通过判断第一规则集中的第二属性名称的集合是否为第一属性名称集合的方式进行判断。
在本申请的一些可选的实施例中,预设规则库中可存储有多个第一规则集;可逐个判断第一规则集中是否包括与第一属性名称相同的第二属性名称,具体地,可以判断预设规则库中的第一规则集中是否有存在第二属性名称的集合为上述Pi的子集的规则集,当存在时,则将包括第二属性名称的集合为上述Pi的子集的第一规则集作为第一目标规则集。
可选地,所述第一规则集包括第二规则集与第三规则集,所述第二规则集包括所述第二属性名称,所述第三规则集包括:所述第二属性名称、所述第二属性名称对应的第二属性值,以及所述第二属性值对应的设备标识;确定第一目标规则集,可以通过判断第一规则集下的第二规则集是否包括第一属性名称集合的子集的方式进行确定,若是,则确定当前第一规则集为第一目标规则集。根据第二规则集确定第一目标规则集之后,遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则可以通过下方式进行实现:遍历所述第一目标规则集中的所述第三规则集中的各个规则,将所述第三规则集中包括所述第一属性值的规则作为所述第一目标规则。
在本申请的一些可选的实施例中,第二规则集可以为以下的Query Rule Schema#j:第三规则集为以下的Query Rule Body#j:
Query Rule Schema#j:
IF B1 AND B2 AND…ANDBm THEN machine
Query Rule Body#j:
IF B1=b11 AND B2=b21 AND…AND Bm=bm1 THEN machine…
IF B1=b12 AND B2=b22 AND…AND Bm=bm2 THEN machine…
IF B1=b13 AND B2=b23 AND…AND Bm=bm3 THEN machine…
通过上述第一规则集包括第二规则集与第二规则集的设置方式,可以实现规则的嵌套,提高规则匹配的速度,提高***的运行效率。
具体的第一规则集“Query Rule Schema+Query Rule Body”结构可以为如下结构:
假设现有两条规则:
Query Rule#n:IF A=0 AND B=1 THEN C=1
Query Rule#m:IF A=1 AND B=1 THEN C=2
则针对Query Rule#n和Query Rule#m可建立Query Rule Schema+Query RuleBody结构,其中
Query Rule Schema:IF A AND B THEN C
Query Rule Body:IF A=0 AND B=1 THEN C=1
IF A=1 AND B=1 THEN C=2
即将多条具有相同结构的规则进行合并,并提取出共有的逻辑结构关系存储在Query Rule Schema中,而具体的规则细节存储在Query Rule Body中。上述中的QueryRule#1-Query Rule#8可以表示为如下Query Rule Schema+Query Rule Body结构,其中一个Query Rule Schema+Query Rule Body被称为规则集(Rule Set):
Rule Set#1
Query Rule Schema#1:IF姓氏THEN machine
Query Rule Body#1:IF姓氏=“张”THEN machine5
IF姓氏=“李”OR姓氏=“王”THEN machine6
Rule Set#2
Query Rule Schema#2:IF性别THEN machine
Query Rule Body#2:IF性别=“男”THEN machine7
IF姓氏=“女”THEN machine8
Rule Set#3
Query Rule Schema#3:IF姓氏AND性别THEN machine
Query Rule Body#3:IF姓氏=“张”AND性别=“男”THEN machine9
IF姓氏=“张”AND性别=“女”THEN machine10
IF(姓氏=“李”OR姓氏=“王”)AND性别=“男”THEN machine11
IF(姓氏=“李”OR姓氏=“王”)AND性别=“女”THEN machine12
可选地,从所述第一目标设备标识对应的第一目标设备中获取第一查询结果可以通过以下方式进行实现:从所述第一目标设备标识对应的第一目标设备中获取所述第一属性值对应的第一数据标识;将所述第一数据标识作为所述第一查询结果。
可选地,上述第一数据标识可以为人物ID。
可选地,从所述第一目标设备标识对应的第一目标设备中获取第一查询结果之后,所述方法还需执行以下步骤:删除所述第一查询请求中所述第一数据标识对应的第三属性名称与第三属性值,得到第二查询请求;判断所述第二查询请求中是否包括第四属性名称,与所述第四属性名称对应的第四属性值,其中,所述第四属性名称为所述第一属性名称中除所述第三属性名称之外的属性名称;若是,则判断所述预设规则库中是否存在包括所述第四属性名称的第二目标规则集,若所述预设规则库中存在所述第二目标规则集,则遍历所述第二目标规则集中的各个规则,查找与所述第四属性值关联的第二目标规则;基于所述第二目标规则查询对应的第二目标设备标识;从所述第二目标设备标识对应的第二目标设备中获取第二查询结果;
根据所述第一查询结果确定目标结果可以通过以下方式进行实现:获取所述第一查询结果与所述第二查询结果的第一交集;将所述第一交集作为所述目标结果。
在本申请的一些可选的实施例中,上述第三属性名称可以为与第一属性名称相同的第二属性名称,第三属性名称的属性值为第三属性值。
删除所述第一查询请求中所述第一数据标识对应的第三属性名称与第三属性值,得到的第二查询请求中,包括第四属性名称的集合,第四属性名称的属性值为第四属性值,具体地,可将B1-Bm从集合Pi中删除,得到新的属性名称集合Pi′。若则判断规则库中是否有未匹配的第一规则集,若有,则判断所述预设规则库中是否存在所述第二目标规则集,若有,则遍历所述第二目标规则集中的各个规则,查找与所述第四属性值关联的第二目标规则;基于所述第二目标规则查询对应的第二目标设备标识;从所述第二目标设备标识对应的第二目标设备中获取第二查询结果;
可选地,若所述预设规则库中不存在包括所述第四属性名称的第二目标规则集,则使用上述基于MapReduce的数据查询方法对第四属性名称与第四属性名称对应的第四属性值进行查询。
可选地,所述方法还可以执行以下步骤:若所述预设规则库中不存在所述第二目标规则集,将所述第二查询请求拆分为多个查询语句,得到多个待查属性信息,每个待查属性信息包括一个所述第四属性名称与一个所述第四属性值;获取所述第四属性名称;采集预设数据库中对应的属性名称与所述第四属性名称相同的第五属性值,以及与所述第五属性值对应的第二数据标识;将所述第二数据标识与所述第五属性值组成第一键值对,其中,所述第二数据标识为所述第一键值对的键,所述第五属性值为所述第一键值对的值;将所述第一键值对分发至多个第一设备,获取所述各个第一设备的设备标识;将所述第一键值对进行键值互换,得到第二键值对;按照第一预设规则对所述第二键值对进行分区,其中,所第一预设规则包括:在各个所述第一设备中将包括所述第四属性值的所述第二键值对分为一个区,分区的区数与所述第一设备的数目相同;将分区后的所述第二键值对按照第二预设规则归并至第二设备,获取第二设备的设备标识,所述第二预设规则包括:将包括所述第四属性值的所述第二键值对归并至同一个设备,所述第二设备的数目与所述区数相同;将归并至所述第二设备的所述第二键值对进行键值互换,得到第三键值对,将所述第三键值对存储至第三设备,得到第三设备的设备标识;将所述第三键值对按照第三预设规则归并至第四设备,得到所述第四设备的设备标识,所述第三预设规则包括:将包括所述第四属性值的所述第三键值对归并至同一设备;在所述第四设备中查找包括所述第四属性值的第三查询结果;根据所述第一查询结果确定目标结果包括:获取所述第一查询结果与所述第三查询结果的第二交集;将所述第二交集作为所述目标结果。
在本申请的一些可选的实施例中,若第一属性名称为“姓名”、“性别”、“年纪”,对应的第一属性值分别“张”、“男”、“18”时,若已经根据预设规则库查询出“年纪”,“18”的第一数据标识之后,假如该第一数据标识为“0”,“4”,即第一查询结果为“0”,“4”,而在预设规则库中未查询到包含“姓名”,“性别”的规则集时,需对“姓名”和“性别”进行补充查询,具体地,查询“姓名”,“性别”的数据标识的过程可如下所示:
具体地,第二查询语句可以为:
MATCH(n)
WHERE n.姓氏=’张’AND n.性别=’男’
RETURN n
其中,“姓氏”与“性别”为第四属性名称,“张”“男”为第四属性值。
拆分为2个简单的子查询语句,即姓氏为“张”,性别为“男”;并将拆分后的2个子查询语句各自分布到多台设备上进行并行查询。
具体地,可将预设数据库中与所述第四属性名称相同的第五属性名称对应的第五属性值进行采集,例如:将预设数据库中属性名称与“姓氏”,“性别”相同的第五属性名称的所有的第五属性值,以及所有第五属性值对应的第二数据标识进行采集。
当查询姓氏为“张”的人物时,***会从预设数据库中提取第二数据标识和姓氏的属性值作为第一键值对,即<ID/姓氏>,并进行切分并分发到多台第一设备上,如图2中的设备1和设备2;当查询性别为“男”的人物时,***会从预设数据库中提取第二数据标识和性别的属性值作为第一键值对,即<ID/性别>,并进行切分并分发到多台第一设备上,如图2中的设备13和设备14。
具体地,在切分后会将每台第一设备上的第一键值对进行互换,即转换为<姓氏/ID>、<性别/ID>,其中,<姓氏/ID>、<性别/ID>为第二键值对;
可选地,可进一步基于key(姓氏)、key(性别)对第二键值对进行内部排序并分区。
可选地,会根据key(姓氏)对Map阶段中各设备的键值对进行归并操作,归并后所有键值对会被聚集到新的设备上,即第二设备,如图2中的设备3和设备4。此时***已经将所有的键值对根据姓氏进行筛选并分布到不同设备上。
另外,会根据key(性别)对Map阶段中各设备的键值对进行归并操作,归并后所有键值对会被聚集到新的设备上,即第二设备,如图2中的设备15和设备16。此时***已经将所有的键值对根据性别进行筛选并分布到不同设备上。
可选地,***会将得到的第二设备上的所有第二键值对再次进行键值互换操作,得到第三键值对,以人物ID为key,存储至第三设备。
可选地,***会将各台满足子查询语句的第三设备上的键值对进行归并,如图2中的设备5和设备6、设备7和设备8为第三设备,并对这些键值对根据key(ID)求交集。图2中的设备9、设备10、设备11和设备12为第四设备,归并后,可查询出满足要求的人物,即ID为0和2的人物。该结果则为第三查询结果。具体地,可将第一查询结果“0”,“4”与第三查询结果“0”,“2”求交集,该交集“0”即为第三查询结果。
可选地,根据所述第一查询结果确定目标结果之后,所述方法还需执行以下步骤:获取所述第一设备、第二设备、第三设备以及所述第四设备中各个设备中包括的第六属性名称、所述第六属性名称对应的第六属性值、以及各个设备的设备标识;建立所述第六属性名称、所述第六属性值,与所述第一设备、第二设备、第三设备以及所述第四设备的设备标识的对应关系;将所述对应关系作为第四规则集添加至所述预设规则库。
与现有的普通数据查询申请相比,本申请采用了一种基于分布式架构的数据查询方法,首先本申请可以将查询问题分布式到多台设备上进行分布式查询,相较于单设备的查询申请,本申请可以有效的降低设备的性能要求,更加适合大规模数据的查询问题;同时,本申请可以将单个复杂的查询语句拆分成多条简单的子查询语句,并分布到多台设备上并行查询,有效的提高了***的查询速度,也更加适合复杂的查询问题。
其次,与现有的分布式数据查询申请相比,本申请采用了一种基于规则的查询方法。与普通的分布式查询申请相比,本申请的区别如下:首先本申请通过分布式***的查询流程自动生成相应的规则,无需人工干预;其次本申请创新性的将规则库中的所有规则分为两层结构,即“Query Rule Schema+Query Rule Body”结构,该结构将有相同逻辑结构的规则合并为一个规则集(Rule Set),可以有效的降低规则匹配的时间复杂度,同时也更加便于***管理;最后本申请可以通过快速的规则匹配有效降低***的查询数据次数,提高***的运行效率。
在本申请实施例中,采用通过获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;根据所述第一查询请求确定第一目标规则集;遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;基于所述第一目标规则查询对应的第一目标设备标识;从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;根据所述第一查询结果确定目标结果的方式,达到了通过预先建立属性名称、属性值与预设规则的对应关系,根据预设规则实现数据的快速查找的技术效果,进而解决了现有技术中,利用MapReduce框架针对大规模数据查询效率较低的技术问题。
根据本申请实施例,还提供了一种用于实施上述数据查询方法的数据查询装置,如图3所示,该装置包括:第一获取模块32、第一确定模块34、查找模块36、查询模块38、第二获取模块310、第二确定模块312;其中:
第一获取模块32,用于获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;
第一确定模块34,用于根据所述第一查询请求确定第一目标规则集;
查找模块36,用于遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;
查询模块38,用于基于所述第一目标规则查询对应的第一目标设备标识;
第二获取模块310,用于从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;
第二确定模块312,用于根据所述第一查询结果确定目标结果。
可选地,第一确定模块34用于获取预设规则库中第一规则集的第二属性名称;判断所述第二属性名称是否与所述第一属性名称相同,若是,则将所述第一规则集作为所述第一目标规则集。
可选地,所述第一规则集包括第二规则集与第三规则集,所述第二规则集包括所述第二属性名称,所述第三规则集包括:所述第二属性名称、所述第二属性名称对应的第二属性值,以及所述第二属性值对应的设备标识;
具体地,查找模块36用于遍历所述第一目标规则集中的所述第三规则集中的各个规则,将所述第三规则集中包括所述第一属性值的规则作为所述第一目标规则。
具体地,第二获取模块38,用于从所述第一目标设备标识对应的第一目标设备中获取所述第一属性值对应的第一数据标识;将所述第一数据标识作为所述第一查询结果。
所述装置还用于从所述第一目标设备标识对应的第一目标设备中获取第一查询结果之后,删除所述第一查询请求中所述第一数据标识对应的第三属性名称与第三属性值,得到第二查询请求;判断所述第二查询请求中是否包括第四属性名称,与所述第四属性名称对应的第四属性值,其中,所述第四属性名称为所述第一属性名称中除所述第三属性名称之外的属性名称;若是,则判断所述预设规则库中是否存在包括所述第四属性名称的第二目标规则集,若所述预设规则库中存在所述第二目标规则集,则遍历所述第二目标规则集中的各个规则,查找与所述第四属性值关联的第二目标规则;基于所述第二目标规则查询对应的第二目标设备标识;从所述第二目标设备标识对应的第二目标设备中获取第二查询结果;根据所述第一查询结果确定目标结果包括:获取所述第一查询结果与所述第二查询结果的第一交集;将所述第一交集作为所述目标结果。
可选地,所述装置还用于若所述预设规则库中不存在所述第二目标规则集,将所述第二查询请求拆分为多个查询语句,得到多个待查属性信息,每个待查属性信息包括一个所述第四属性名称与一个所述第四属性值;获取所述第四属性名称;采集预设数据库中对应的属性名称与所述第四属性名称相同的第五属性值,以及与所述第五属性值对应的第二数据标识;将所述第二数据标识与所述第五属性值组成第一键值对,其中,所述第二数据标识为所述第一键值对的键,所述第五属性值为所述第一键值对的值;将所述第一键值对分发至多个第一设备,获取各个所述第一设备的设备标识;将所述第一键值对进行键值互换,得到第二键值对;按照第一预设规则对所述第二键值对进行分区,其中,所第一预设规则包括:在各个所述第一设备中将包括所述第四属性值的所述第二键值对分为一个区,分区的区数与所述第一设备的数目相同;将分区后的所述第二键值对按照第二预设规则归并至第二设备,获取第二设备的设备标识,所述第二预设规则包括:将包括所述第四属性值的所述第二键值对归并至同一个设备,所述第二设备的数目与所述区数相同;将归并至所述第二设备的所述第二键值对进行键值互换,得到第三键值对,将所述第三键值对存储至第三设备,得到第三设备的设备标识;将所述第三键值对按照第三预设规则归并至第四设备,得到所述第四设备的设备标识,所述第三预设规则包括:将包括所述第四属性值的所述第三键值对归并至同一设备;在所述第四设备中查找包括所述第四属性值的第三查询结果;根据所述第一查询结果确定目标结果包括:获取所述第一查询结果与所述第三查询结果的第二交集;将所述第二交集作为所述目标结果。
可选地,根据所述第一查询结果确定目标结果之后,所述装置还用于获取所述第一设备、第二设备、第三设备以及所述第四设备中各个设备中包括的第六属性名称、所述第六属性名称对应的第六属性值、以及第一设备、第二设备、第三设备以及所述第四设备的设备标识;建立所述第六属性名称、所述第六属性值,与所述各个设备的设备标识的对应关系;将所述对应关系作为第四规则集添加至所述预设规则库。
需要说明的是,图3所示实施例的优选实施方式可以参见图1所示实施例的相关描述,此处不再赘述。
根据本申请实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;根据所述第一查询请求确定第一目标规则集;遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;基于所述第一目标规则查询对应的第一目标设备标识;从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;根据所述第一查询结果确定目标结果。
根据本申请实施例的另一个方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时可以执行应用程序的数据查询方法中以下步骤的程序代码:
获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;根据所述第一查询请求确定第一目标规则集;遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;基于所述第一目标规则查询对应的第一目标设备标识;从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;根据所述第一查询结果确定目标结果。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;
根据所述第一查询请求确定第一目标规则集;
遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;
基于所述第一目标规则查询对应的第一目标设备标识;
从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;
根据所述第一查询结果确定目标结果。
2.根据权利要求1所述的方法,其特征在于,根据所述第一查询请求确定第一目标规则集包括:
获取预设规则库中第一规则集的第二属性名称;
判断所述第二属性名称是否与所述第一属性名称相同,若是,则将所述第一规则集作为所述第一目标规则集。
3.根据权利要求2所述的方法,其特征在于,所述第一规则集包括第二规则集与第三规则集,所述第二规则集包括所述第二属性名称,所述第三规则集包括:所述第二属性名称、所述第二属性名称对应的第二属性值,以及所述第二属性值对应的设备标识;
遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则包括:遍历所述第一目标规则集中的所述第三规则集中的各个规则,将所述第三规则集中包括所述第一属性值的规则作为所述第一目标规则。
4.根据权利要求3所述的方法,其特征在于,从所述第一目标设备标识对应的第一目标设备中获取第一查询结果包括:
从所述第一目标设备标识对应的第一目标设备中获取所述第一属性值对应的第一数据标识;
将所述第一数据标识作为所述第一查询结果。
5.根据权利要求4所述的方法,其特征在于,从所述第一目标设备标识对应的第一目标设备中获取第一查询结果之后,所述方法还包括:
删除所述第一查询请求中所述第一数据标识对应的第三属性名称与第三属性值,得到第二查询请求;
判断所述第二查询请求中是否包括第四属性名称,与所述第四属性名称对应的第四属性值,其中,所述第四属性名称为所述第一属性名称中除所述第三属性名称之外的属性名称;
若是,则判断所述预设规则库中是否存在包括所述第四属性名称的第二目标规则集,若所述预设规则库中存在所述第二目标规则集,则
遍历所述第二目标规则集中的各个规则,查找与所述第四属性值关联的第二目标规则;
基于所述第二目标规则查询对应的第二目标设备标识;
从所述第二目标设备标识对应的第二目标设备中获取第二查询结果;
根据所述第一查询结果确定目标结果包括:获取所述第一查询结果与所述第二查询结果的第一交集;将所述第一交集作为所述目标结果。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:若所述预设规则库中不存在所述第二目标规则集,
则将所述第二查询请求拆分为多个查询语句,得到多个待查属性信息,每个待查属性信息包括一个所述第四属性名称与一个所述第四属性值;
获取所述第四属性名称;
采集预设数据库中对应的属性名称与所述第四属性名称相同的第五属性值,以及与所述第五属性值对应的第二数据标识;
将所述第二数据标识与所述第五属性值组成第一键值对,其中,所述第二数据标识为所述第一键值对的键,所述第五属性值为所述第一键值对的值;
将所述第一键值对分发至多个第一设备,获取各个所述第一设备的设备标识;
将所述第一键值对进行键值互换,得到第二键值对;
按照第一预设规则对所述第二键值对进行分区,其中,所第一预设规则包括:在各个所述第一设备中将包括所述第四属性值的所述第二键值对分为一个区,分区的区数与所述第一设备的数目相同;
将分区后的所述第二键值对按照第二预设规则归并至第二设备,获取第二设备的设备标识,所述第二预设规则包括:将包括所述第四属性值的所述第二键值对归并至同一个设备,所述第二设备的数目与所述区数相同;
将归并至所述第二设备的所述第二键值对进行键值互换,得到第三键值对,将所述第三键值对存储至第三设备,得到第三设备的设备标识;
将所述第三键值对按照第三预设规则归并至第四设备,得到所述第四设备的设备标识,所述第三预设规则包括:将包括所述第四属性值的所述第三键值对归并至同一设备;
在所述第四设备中查找包括所述第四属性值的第三查询结果;
根据所述第一查询结果确定目标结果包括:获取所述第一查询结果与所述第三查询结果的第二交集;将所述第二交集作为所述目标结果。
7.根据权利要求6所述的方法,其特征在于,根据所述第一查询结果确定目标结果之后,所述方法还包括:
获取所述第一设备、第二设备、第三设备以及所述第四设备中各个设备中包括的第六属性名称、所述第六属性名称对应的第六属性值、以及各个设备的设备标识;
建立所述第六属性名称、所述第六属性值,与所述第一设备、第二设备、第三设备以及所述第四设备的设备标识的对应关系;
将所述对应关系作为第四规则集添加至所述预设规则库。
8.一种数据查询装置,其特征在于,包括:
第一获取模块,用于获取第一查询请求,所述第一查询请求包括至少一个第一属性名称与至少一个第一属性值,其中,所述第一属性名称与所述第一属性值一一对应;
第一确定模块,用于根据所述第一查询请求确定第一目标规则集;
查找模块,用于遍历所述第一目标规则集中的各个规则,查找与所述第一属性值关联的第一目标规则;
查询模块,用于基于所述第一目标规则查询对应的第一目标设备标识;
第二获取模块,用于从所述第一目标设备标识对应的第一目标设备中获取第一查询结果;
第二确定模块,用于根据所述第一查询结果确定目标结果。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至7中任意一项所述的数据查询方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910735289.4A CN110532282B (zh) | 2019-08-09 | 2019-08-09 | 数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910735289.4A CN110532282B (zh) | 2019-08-09 | 2019-08-09 | 数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532282A true CN110532282A (zh) | 2019-12-03 |
CN110532282B CN110532282B (zh) | 2022-09-23 |
Family
ID=68662186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910735289.4A Active CN110532282B (zh) | 2019-08-09 | 2019-08-09 | 数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532282B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112037874A (zh) * | 2020-09-03 | 2020-12-04 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112380275A (zh) * | 2021-01-15 | 2021-02-19 | 北京金山云网络技术有限公司 | 数据查询方法、装置及电子设备 |
CN114201525A (zh) * | 2022-02-15 | 2022-03-18 | 支付宝(杭州)信息技术有限公司 | 查询数据的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678609A (zh) * | 2013-12-16 | 2014-03-26 | 中国科学院计算机网络信息中心 | 一种基于分布式关系-对象映射处理的大数据查询的方法 |
US8873836B1 (en) * | 2012-06-29 | 2014-10-28 | Emc Corporation | Cluster-based classification of high-resolution data |
CN104462351A (zh) * | 2014-12-05 | 2015-03-25 | 河海大学 | 一种面向MapReduce范型的数据查询模型与方法 |
CN105488043A (zh) * | 2014-09-15 | 2016-04-13 | 南京理工大学 | 基于Key-Value数据块的数据查询方法及*** |
-
2019
- 2019-08-09 CN CN201910735289.4A patent/CN110532282B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8873836B1 (en) * | 2012-06-29 | 2014-10-28 | Emc Corporation | Cluster-based classification of high-resolution data |
CN103678609A (zh) * | 2013-12-16 | 2014-03-26 | 中国科学院计算机网络信息中心 | 一种基于分布式关系-对象映射处理的大数据查询的方法 |
CN105488043A (zh) * | 2014-09-15 | 2016-04-13 | 南京理工大学 | 基于Key-Value数据块的数据查询方法及*** |
CN104462351A (zh) * | 2014-12-05 | 2015-03-25 | 河海大学 | 一种面向MapReduce范型的数据查询模型与方法 |
Non-Patent Citations (2)
Title |
---|
CHENYANG BU: "A Hybrid Genetic Algorithm for Vehicle Routing Problems with Dynamic Requests", 《 2017 IEEE SYMPOSIUM SERIES ON COMPUTATIONAL INTELLIGENCE》 * |
吴信东,嵇圣硙: "MapReduce与Spark用于大数据分析之比较", 《软件学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112037874A (zh) * | 2020-09-03 | 2020-12-04 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112037874B (zh) * | 2020-09-03 | 2022-09-13 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
CN112380275A (zh) * | 2021-01-15 | 2021-02-19 | 北京金山云网络技术有限公司 | 数据查询方法、装置及电子设备 |
CN114201525A (zh) * | 2022-02-15 | 2022-03-18 | 支付宝(杭州)信息技术有限公司 | 查询数据的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110532282B (zh) | 2022-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109189901B (zh) | 一种智能客服***中自动发现新分类以及对应语料的方法 | |
CN106156127B (zh) | 选择数据内容向终端推送的方法及装置 | |
CN107609052A (zh) | 一种基于语义三角的领域知识图谱的生成方法及装置 | |
CN104731945B (zh) | 一种基于HBase的全文检索方法及装置 | |
CN110532282A (zh) | 数据查询方法及装置 | |
CN108304444A (zh) | 信息查询方法及装置 | |
CN104239513A (zh) | 一种面向领域数据的语义检索方法 | |
JP2001014329A (ja) | データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体 | |
CN113190687B (zh) | 知识图谱的确定方法、装置、计算机设备及存储介质 | |
CN108304382A (zh) | 基于制造过程文本数据挖掘的质量分析方法与*** | |
CN109947804A (zh) | 数据集合查询的优化方法、装置、服务器和存储介质 | |
CN114817243A (zh) | 数据库联合索引的建立方法、装置、设备及存储介质 | |
CN110737805A (zh) | 图模型数据的处理方法、装置和终端设备 | |
CN111026709A (zh) | 基于集群访问的数据处理方法及装置 | |
CN107133274B (zh) | 一种基于图知识库的分布式信息检索集合选择方法 | |
CN114265957A (zh) | 基于图数据库的多种数据源联合查询方法及*** | |
CN106933919A (zh) | 数据表的连接方法及装置 | |
CN111159559A (zh) | 根据用户需求和用户行为构建推荐引擎的方法 | |
CN110874366A (zh) | 数据处理、查询方法和装置 | |
CN111460257A (zh) | 专题生成方法、装置、电子设备和存储介质 | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和*** | |
CN116467291A (zh) | 一种知识图谱存储与搜索方法及*** | |
CN111813918B (zh) | 一种科技资源推荐处理方法及装置 | |
CN113836395A (zh) | 一种基于异构信息网络的服务开发者按需推荐方法及*** | |
US9646099B2 (en) | Generating resources for support of online services |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |