CN104111936B - 数据查询方法和系统 - Google Patents
数据查询方法和系统 Download PDFInfo
- Publication number
- CN104111936B CN104111936B CN201310135330.7A CN201310135330A CN104111936B CN 104111936 B CN104111936 B CN 104111936B CN 201310135330 A CN201310135330 A CN 201310135330A CN 104111936 B CN104111936 B CN 104111936B
- Authority
- CN
- China
- Prior art keywords
- data
- slave unit
- main equipment
- querying command
- query result
- 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.)
- Active
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/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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据查询方法和系统。该方法包括:计算机集群中的主设备接收查询命令;所述主设备将所述查询命令分发到所述计算机集群中的多个从设备;根据所述查询命令,所述多个从设备中的每一个从设备分别针对数据集合中的各自对应的数据块执行预查询处理,以得到各自对应的候选查询结果;所述多个从设备中的每一个从设备将各自得到的所述候选查询结果返回给所述主设备;所述主设备根据所述查询命令对所述候选查询结果中的数据进行最终查询处理,得到最终查询结果;以及所述主设备将所述最终查询结果返回。根据本申请的技术方案,由于通过计算机设备集群来分摊现有技术中单一设备的数据查询量,因此大大提高了数据查询速度。
Description
技术领域
本申请涉及数据分析和处理领域,更具体地涉及一种数据查询方法和系统。
背景技术
这里的内容尽管是在背景技术标题下阐述的,但是其中也包含了本发明人的发现和构思,所以不应被完全视为现有技术。
随着云时代的来临,大数据吸引了越来越多的关注,大数据技术不在于掌握海量数据,而更着眼于在合理的时间内达到采集、处理并整理成为用户所需要的数据。
TOPN数据查询是海量数据处理中经常遇到的问题,其是指,按照某个维度或维度组合对相关数据进行排序,获取其中最靠“前”的一批子结果集的过程。在目前的TOPN数据查询处理中,通过单一设备来完成查询。具体而言,某一处理设备在接收到用户的查询命令之后,基于该查询命令,在本地或远程的数据库中查询出相关数据,并对相关数据进行挑选、分析、归类等处理,以获得符合查询命令的数据并返回。
在上述TOPN数据查询处理中,通常使用诸如Oracle公司的MySQL数据库之类的关系型数据库,其中包括一个或多个表,一个表是一个关系。在采用关系型数据库的方案中,当数据库中的数据增加到一定量级的时候,查询效率会急剧降低。例如,数据库数据量达到500万,并且所要查询的关键字在60万组时,系统就会由于数据库内存消耗速度上升导致查询无响应,若不中止任务,则会导致系统宕机。
于是通常用数据库分库的方式应对这一问题,但是,这对于数据存储和未来查询的扩展都会造成不便,因为数据库分库的关键字是某种业务的主键,这就要求所有需要进行查询处理的数据必须位于同一个关键字下。如果业务需求变化,关键字需要改变为其他维度,那么就会造成数据需要全量按新关键字重新组织,因此耗时耗存储。
为了克服上述关系型数据库中的问题,目前还研究使用了诸如Hbase数据库之类的非关系型数据库。在这种非关系型数据库中,可以处理超大量的数据。但是,对于多个维度的关键字查询处理而言,由于该非关系型数据库使用二级索引表,所以在海量数据更新时需要相应地动态更新索引文件的情况下,索引文件的可维护性和可操作性将会变得非常复杂,并且容易出错。
因此,期望一种能够克服上述缺陷以便提高数据查询速度和系统工作效率的技术。
发明内容
因此,本申请的主要目的在于,提供一种改进的数据查询处理技术,以解决上述现有技术存在的问题,提高数据查询速度和系统工作效率。
本申请发明人注意到,在目前的数据查询系统中,由于单一设备的数据查询量过大,造成系统性能瓶颈,从而导致数据查询速度和系统工作效率都难以得到提高。于是本申请发明人想到,通过计算机设备集群来分摊目前单一设备的数据查询量,并且在数据的处理上做TOPN过滤,由此来提高数据查询速度和效率。
根据本申请的一个方面的实施例,提供一种数据查询方法,包括:
计算机集群中的主设备接收查询命令;所述主设备将所述查询命令分发到所述计算机集群中的多个从设备;根据所述查询命令,所述多个从设备中的每一个从设备分别针对数据集合中的各自对应的数据块执行预查询处理,以得到各自对应的候选查询结果;所述多个从设备中的每一个从设备将各自得到的所述候选查询结果返回给所述主设备;所述主设备根据所述查询命令对所述候选查询结果中的数据进行最终查询处理,得到最终查询结果;以及所述主设备将所述最终查询结果返回。
根据本申请的另一方面的实施例,提供一种数据查询系统,包括主设备和多个从设备,所述主设备接收查询命令;所述主设备将所述查询命令分发到所述多个从设备;根据所述查询命令,所述多个从设备中的每一个从设备分别针对数据集合中的各自对应的数据块执行预查询处理,以得到各自对应的候选查询结果;所述多个从设备中的每一个从设备将各自得到的所述候选查询结果返回给所述主设备;所述主设备根据所述查询命令对所述候选查询结果中的数据进行最终查询处理,得到最终查询结果;以及所述主设备将所述最终查询结果返回。
在一个具体实施例中,所述数据集合对应的索引文件存储于每一个从设备的本地存储装置或远程存储装置中。
在一个具体实施例中,所述预查询处理包括:过滤步骤,用于根据所述查询命令中的条件特征和所述数据集合对应的索引文件,从对应的数据块中筛选出符合条件的数据;以及排序和选取步骤,用于根据所述查询命令中的顺序和数量特征,对筛选出的数据进行排序,并从排序后的数据中选取相应数量的数据作为所述候选查询结果。
在一个具体实施例中,所述最终查询处理包括:排序和选取步骤,用于根据所述查询命令的顺序和数量特征,对所述候选查询结果中的数据进行排序并从排序后的数据中选取相应数量的数据作为所述最终查询结果。
在一个具体实施例中,所述排序和选取步骤是通过有序数据堆缓冲区实现的,其中所述有序数据堆缓冲区是根据所述查询命令中的顺序和数量特征而构建的。
在一个具体实施例中,所述有序数据堆缓冲区包括小顶堆、大顶堆或基于平衡树的堆。
在一个具体实施例中,根据数据更新信息,主设备命令多个从设备之一构建新的数据集合对应的索引文件;所述从设备之一构建新的数据集合对应的索引文件并替换原有的索引文件;以及所述从设备之一将新的数据集合对应的索引文件传送给其它从设备,以替换所述其它从设备上的原有的索引文件。
与现有技术相比,根据本申请的技术方案,由于通过计算机设备集群来分摊现有技术中单一设备的数据查询量,并且在集群的多个设备上针对各自数据块并行进行TOPN过滤处理,因此大大提高了数据查询速度。
另外,根据本申请的技术方案,使用有序数据堆缓冲区处理海量数据,在节省系统内存的同时,提高了数据查询效率。
此外,根据本申请的技术方案,当数据库更新的情况下需要相应更新索引库时,通过在一个从设备上保留原有索引文件的同时建立新的索引文件,然后用新的索引文件替换原有索引文件,并且将新的索引文件复制到其它从设备上以替换其它从设备上的原有索引文件,因此相比现有技术而言,可以在构建索引的同时不影响查询速度。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出根据本申请构思的用于数据查询处理的计算机集群的总体架构图;
图2示出根据本申请实施例的数据查询系统的示意框图;
图3示出根据本申请实施例的数据查询方法的流程图;
图4示出根据本申请实施例的预查询处理步骤的流程图;以及
图5示出根据本申请实施例的索引重构过程的流程图。
具体实施方式
如上所述,本申请发明人注意到,在现有的TOPN数据查询技术中,通过单一设备接收查询命令,并基于该查询命令,由该单一设备从数据库中查找出用户所需的前N条数据。当数据库中包含超大量数据时,该单一设备上的数据查询量将达到极限,由此会由于系统内存消耗过大导致数据查询速度慢甚至宕机的问题。
本申请的主要思想就在于,构建一计算机集群系统,通过多个设备分摊上述单一设备上的数据查询量,由此提高数据查询速度和系统工作效率。为清晰起见,图1示出根据本申请构思的用于数据查询处理的计算机集群的总体架构图。如图1所示,该计算机集群可以包括一个主设备和多个从设备(从设备1-N,N为大于1的任意整数),其中,主设备是计算机集群中用于接收查询命令的设备,并且该主设备可以是计算机集群中的任一设备。相应地,主设备以外的设备都为从设备。在图1所示的架构中,由主设备接收来自用户(终端1)的查询命令并将查询命令分发到每个从设备;基于该查询命令,由每个从设备分别针对数据集合(即,数据库)中的各自对应的数据块执行预查询处理,以获得各自对应的候选查询结果;每一个从设备将候选查询结果返回给主设备;再由主设备针对候选查询结果中的数据做最终查询处理,并将该最终查询处理结果返回。在此过程中,对数据库的数据查询由多个从设备进行分担,并且在多个设备上并行进行TOPN过滤处理,从而减轻了单个设备的负荷,加快了运算速度,也即是加快了数据查询速度,所以,本申请的技术方案优于现有技术的单台设备进行数据查询的技术方案。
为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。
对应于图1所示的计算机集群的总体架构,下面结合图2进行具体描述。
图2示出根据本申请实施例的数据查询系统200的示意框图。如图2所示,数据查询系统200可以包括一个主设备201和多个从设备202-210。尽管图中仅示出9个从设备,但本领域技术人员可以理解到,从设备的数目并不限于此,而是可以为大于1的任意整数。
具体而言,主设备201可以用于接收查询命令并将查询命令分发到计算机集群中的多个从设备202-210。另外,主设备201可以用于接收多个从设备202-210根据查询命令执行预查询处理而得到的各个候选查询结果,并对这些候选查询结果中的数据执行最终查询处理,以得到最终查询结果,并返回。
与此同时,从设备202-210中的每一个从设备可以用于,根据接收到的查询命令,分别针对数据集合(即数据库)中的各自对应的数据块执行预查询处理,以得到各自对应的候选查询结果并返回给主设备201。
在一个实施例中,主设备201以及从设备202-210可以分别在单独的计算机设备上实现,换言之,主设备201可以在与从设备202-210不同的计算机设备上实现。在另一个实施例中,主设备201可以与从设备202-210中的任意一个或多个从设备在同一计算机设备上实现。
在上述本申请实施例的数据查询系统200中,从设备202-210中的每一个从设备可以都关联有一个与数据库中的数据(数据集合)对应的相同索引文件,通过索引文件可以方便数据的查询。该索引文件可以存储在每个从设备的本地存储装置或远程存储装置中。例如,该索引文件可以存储于每个从设备计算机的内部存储器或诸如SATA存储设备之类的外部存储装置中,也可以存储在与每个从设备远程连接的计算机的内部存储器或诸如SATA存储设备的外部存储装置中。
进一步地,上述索引文件可以根据数据集合中的数据变化而做出相应的更新。根据本申请的实施例,在数据集合中的数据更新时,根据数据更新信息,主设备201可以命令多个从设备202-210之一构建新的数据集合对应的索引文件,然后接受命令的从设备例如从设备202构建新的数据集合对应的索引文件并替换其关联的原有索引文件,接着从设备202将构建好的新索引文件传送给其它从设备203-210以替换这些从设备上的原有索引文件。
从设备202-210中的每个从设备的预查询处理类似,区别仅在于所处理的数据不同。根据本申请的一个实施例,从设备202-210的预查询处理可以包括:过滤步骤,用于根据查询命令中包含的条件特征和数据集合对应的索引文件,从对应的数据块中筛选出符合条件的数据;以及排序和选取步骤,用于根据查询命令中包含的顺序和数量特征,对筛选出的数据进行排序,并从排序后的数据中选取相应数量的数据作为候选查询结果。
根据本申请的一个实施例,主设备201的最终查询处理可以包括:排序和选取步骤,用于根据查询命令中包含的顺序和数量特征,对候选查询结果中的数据进行排序并从排序后的数据中选取相应数量的数据作为最终查询结果。该最终查询处理过程类似于上述预查询处理过程中的排序和选取步骤,区别仅在于所处理的数据不同。
进一步地,主设备201和从设备202-210在进行查询处理时,均要进行多个数据的排序和选取。在本申请的一个实施例中,该排序和选取的步骤可以是通过有序数据堆缓冲区实现的,其中,有序数据堆缓冲区是根据查询命令中包含的顺序和数量特征而构建的。例如,有序数据堆缓冲区可以包括小顶堆、大顶堆或基于平衡树的堆等。
上面描述了根据本申请实施例的数据查询系统。相应地,本申请还提供一种数据查询方法。上述数据查询系统的工作流程对应于该数据查询方法的步骤,关于数据查询系统的操作细节,可以参考结合图3及其对应的该数据查询方法的下述描述。
图3示出根据本申请实施例的数据查询方法的流程图。
如图3所示,在步骤S301处,由计算机集群中的主设备接收来查询命令。
具体而言,用户可以使用手机、平板电脑、计算机等终端搜索想要的信息,具体地可以通过诸如键盘、鼠标、触摸屏、麦克风之类的输入装置来输入查询命令,此外该查询命令也可以来自其他设备。在本申请实施例的TOPN数据查询环境下,查询命令可以包括条件特征、顺序和数量特征。例如,用户搜索“计算机专业、年龄在20岁以上、分数在90分以上的前10名男同学”。其中,条件特征为“计算机专业、年龄在20岁以上、分数在90分以上、男同学”,而顺序和数量特征为“前10名”。
相应地,可以由如图1和图2所示的计算机集群中的主设备接收该查询命令。如前面结合图1和图2描述的那样,主设备可以在计算机集群中包含的多个计算机设备中的任一计算机设备上实现。在一个实施例中,主设备可以在单独的计算机设备上实现。在另一个实施例中,主设备可以与任一从设备在同一计算机设备上实现。
在步骤S302处,主设备将查询命令分发到计算机集群中的多个从设备。
具体而言,主设备将接收到的查询命令分发给每一个从设备,而不是直接根据查询命令在数据库中进行查找。如前面提到的,本申请的主要思想在于通过多个设备来分摊单一设备的数据查询量,并且在该多个设备上并行TOPN过滤处理。这里,主设备将查询命令分发给每个从设备,以便每个从设备根据查询命令从特定数据块中查询相关数据,从而实现分摊查询任务,下面将对此进行详细描述。
接下来,在步骤S303处,根据查询命令,多个从设备中的每一个从设备分别针对数据集合中的各自对应的数据块执行预查询处理,以得到各自对应的候选查询结果。
如上面提到的,根据本申请的数据查询处理技术,通过多个设备分摊现有技术中单一设备上的数据查询量,从而提高数据查询速度。在本步骤S303中正是体现了这一点。其中每个从设备只针对数据集合(也就是数据库)中的一部分数据进行处理,这样可以实现并行处理整个数据集合中的数据。
具体而言,每个从设备的处理对象只是整个数据集合中的一个预定数据块,每个从设备对应的预定数据块是不同的,并且所有从设备处理的对应预定数据块的总和即为整个数据库中的数据。
更具体而言,每个从设备可以从对应的数据块范围中执行查询命令,从而得到对应的候选查询结果,本申请中将这个过程称为从设备的预查询处理。
其中,由各个从设备搜索的数据块可以通过本领域已知或未来开发的任意合适方式来划分。
在一个实施例中,可以根据计算机集群中的设备数量m,预先将数据集合(数据库)划分为m个数据块,并且每一个数据块关联m个设备中的一个。每一个设备所关联的数据块中的多个数据可以随机选取,但是任意两个设备之间所关联的数据互相不重复,以这样的方式避免重复的数据查询。
在一个优选实施例中,可以采用平均分配的方法划分数据集合。在一个更优选实施例中,可以在平均分配数据处理量的前提下,根据计算机设备各自的相对处理能力(设备性能权重系数)来调整数据处理量的分配,即每个数据块的数据量=(数据总量n/设备数量m)*设备性能权重系数。例如,在计算机集群中包含有3个设备,其中,设备1的性能权重系数为0.8,设备2的性能权重系数为1,设备3的性能权重系数为1.2。当根据所述3个设备的性能权重系数划分一个具有120个数据的数据集合时,n=120、m=3,则设备1可以关联(120/3)*0.8=32个数据,设备2可以关联(120/3)*1=40个数据,设备3可以关联(120/3)*1.2=48个数据。由此考虑了每一个从设备的设备性能,这有助于提高从设备的并行处理速度,进而提高数据查询效率。
根据本申请的一个实施例,在预查询处理中,为了提高数据查询效率,可以针对数据集合中的数据构建一个或多个索引文件。在一个索引文件中可以包含多个索引字段,每个索引字段通常对应于一条数据。在一个优选实施例中,在初始构建索引文件时,可以对数据集合中的所有数据的字段(条件特征,维度)进行排列组合,将每种组合都作为一个索引字段,由此可以建立虚拟数据索引字段,使得通过这样的方式扩充索引字段,以减少新增索引字段的几率,从而避免在索引文件中缺少某个索引字段时所需的索引重建过程。例如,假设第一条数据中包括维度A和维度B,第二条数据中包括维度B和维度C,对这两条数据中的维度A、B、C进行排列组合得到7种组合(A、B、C、AB、AC、BC、ABC),将这7种组合中的每一种都作为一个单独的索引字段,其中,索引字段AB对应于第一条数据,索引字段BC对应于第二条数据,而索引字段A、B、C、AC、ABC为虚拟数据索引字段,它们在数据库中暂时没有对应的数据。如果后续数据库中增加的数据包括维度A、B、C,则无需如现有技术中那样再重建索引文件,因为本申请实施例的索引文件在初始建立时已经包含了索引字段ABC,此时该索引字段ABC在数据库中就有了对应数据。
这些对应于数据集合的索引文件(索引库)可以存储于每一个从设备的本地存储装置或远程存储装置中。例如,该索引文件(索引库)可以存储于每个从设备计算机的内部存储器,或者诸如USB存储设备之类的外部存储装置中;该索引文件(索引库)还可以存储在与每个从设备远程连接的计算机的内部存储器,或诸如USB存储设备的外部存储装置中。
在一个更具体实施例中,随机地或按照某种规则来为每一个索引字段添加标签,该标签用于建立索引字段对应的数据与其处理设备(从设备)之间的对应关系,使得每一个从设备只针对与之对应的索引字段(数据)进行查询,这也就实现了每个从设备对应处理的数据块的划分。在一种实施例中,该标签可以是计算机集群中的每个从设备的唯一性设备标识,由此从设备只针对与其标识对应的索引字段(数据)进行查询处理,换言之,从设备与索引字段的对应关系是预先确定的。在另一种实施例中,该标签可以是唯一地标识数据(索引字段)的序列号,例如为1-120的序号,由此,当主设备向从设备分发查询命令时,可以同时指定需要该从设备处理的数据(例如,指定从设备1处理标签序号为1-32的数据,指定从设备2处理标签序号为33-72的数据,指定从设备3处理标签序号为73-120的数据),由此从设备只针对主设备分配的索引字段(数据)进行查询处理,换言之,从设备与索引字段的对应关系是由主设备动态指定的。应注意的是,除了上述方式之外,可以通过其它任意合适方式来关联从设备和需要其处理的数据。
下面结合图4详细描述根据本申请实施例的预查询处理过程。
如图4所示,在过滤步骤S401中,根据查询命令中的条件特征和数据集合对应的索引文件,从对应的数据块中筛选出符合条件的数据。
如前面提到的,在本申请实施例的TOPN数据查询环境下,查询命令可以包含条件特征、顺序和数量特征。这里,每个从设备可以基于该条件特征在索引文件的对应范围(对应数据块的索引字段)中查询与该条件特征相匹配的索引字段,根据找到的索引字段从数据库中获取对应数据,从而筛选出符合用户查询条件的数据。
例如,主设备接收到的查询命令是想得到“计算机专业、年龄在20岁以上、分数在90分以上的前10名男同学”,该主设备将该查询命令分发至多个从设备。每一个从设备根据条件特征“计算机专业、年龄在20岁以上、分数在90分以上、男同学”,在对应的索引文件中查询到与该条件特征相应的多个索引字段,然后根据索引字段在数据库中找到相应的数据。假设数据库中总共存在120条数据,系统中总共存在3个从设备。从设备1在其对应处理的序号为1-32的数据中查询到符合条件的20条数据,从设备2在其对应处理的序号为33-72的数据中查询到符合条件的15条数据,从设备3在其对应处理的序号为73-120的数据中查询到符合条件的18条数据。
接下来,在排序和选取步骤S402中,根据查询命令中的顺序和数量特征,对筛选出的数据进行排序,并从排序后的数据中选取相应数量的数据作为候选查询结果。
查询命令中包含的顺序和数量特征,用于提供一个排序规则(例如,前10名、后10名,即正序还是倒序),以对符合条件的数据进行排序,以及提供一个选取数量,用以在排序结果中获取相应数据的前N个数据(TOPN)。
在一种实施例中,排序和选取步骤可以通过有序数据堆缓冲区实现,其中有序数据堆缓冲区可以根据查询命令中的顺序和数量特征而构建。有序数据堆缓冲区可以包括小顶堆、大顶堆或基于平衡树的堆,也可以理解为,根据所述排序规则选取有序数据堆的形式,例如从大到小的顺序就选小顶堆、从小到大的顺序就选大顶堆,并且根据选取数量确定缓冲区的容量。另外,该有序数据堆也可以采用固定类型和/或具有固定容量。
具体而言,将经过过滤步骤筛选出的数据放入该有序数据堆缓冲区中,其中会根据构建的排序规则将数据放入该缓冲区的对应位置。当数据超出该有序数据堆缓冲区的容量时,自动从堆顶移除数据。例如,根据查询命令中的顺序和数量特征“前10名”,构建一可容纳10个数据的有序数据堆缓冲区例如小顶堆。若在数据集合中过滤出30个符合条件的数据,则先在该小顶堆中填入过滤出的10个数据,并根据关键字“分数”对这10个数据进行排序。然后,当第11个数据填入该小顶堆缓冲区时,若该数据大于堆顶的数据,则自动移除堆顶的数据(小顶堆的堆顶的键值是所有堆结点键值中最小者),并根据小顶堆的排序规则,将该第11个数据插入该小顶堆的相应位置中,当第12个数据填入该小顶堆缓冲区时,仿照第11个数据填入该小顶堆缓冲区的做法,以此类推,反复执行数据填入、数据移除的步骤,对数据堆缓冲区中的数据边排序边滤除,以保证缓冲区中的数据等于顺序和数量特征中的相应的选取数量,最终可以得到所述“前10名”的数据(按分数排列的前10个数据),以作为候选查询结果。
例如,在上面的示例中,从设备1从其查询到的符合条件的20条数据中排序并选取出前10条数据作为其候选查询结果,从设备2在其查询到的符合条件的15条数据中排序并选取出前10条数据作为其候选查询结果,从设备3在其查询到的符合条件的18条数据中排序并选取出前10条数据作为其候选查询结果。
需要说明的是,上述堆排序是本领域技术人员所熟知的一种排序算法,这里将其用于海量数据的查询处理中,可以实现快速过滤大量数据同时极少消耗设备内存的有益效果。应注意,上述排序和选取的步骤可以通过本领域已知或未来开发的其它任意合适的方式来实现。
例如,本申请的排序和选取步骤也可以根据顺序和数量特征对多个数据进行整体排序,以得到有序序列,当有新数据进入该序列时,对序列整体进行分析,将该新数据与序列中的每一个数据进行比较,并将新数据插入相应位置,最后,在排序结果中获取符合条件的前N个数据。但是,这种方法要求缓冲区容量较大,而且,对系统性能要求较高。所以,利用有序数据堆缓冲区对多个数据进行排序和选取是一种优选实施方式,可以有效地提高数据查询效率,并减少系统内存消耗。
当在索引文件中不具有与查询命令中的条件特征对应的索引字段时,或是数据集合中的数据产生了新增、更新等操作时,则需要构建新的索引文件来替换原有的索引文件,用于保证在数据查询过程中获取到正确的数据。图5示出了根据本申请实施例的索引重构过程。
如图5所示,在步骤S501处,根据数据更新信息,主设备命令多个从设备之一构建新的数据集合对应的索引文件。
在本申请的实施例中,在计算机集群中的任意一个从设备都具有构建索引文件的能力。主设备在获取到数据更新信息或者索引文件中没有对应条件特征的索引字段时,可以随机地或者按照某种规则向从设备之一发出索引构建命令,指示该从设备构建新的索引文件。
接下来,在步骤S502处,所述从设备之一构建新的数据集合对应的索引文件并替换原有的索引文件。
在现有技术中,索引构建过程与数据查询过程分步进行,也就是,当系统需要重新构建索引文件时,需要暂停数据查询过程,等待索引文件构建完毕再重新执行数据查询。与现有技术不同,在本申请的实施例中,多个从设备中的一个从设备在其新建内存空间中构建索引文件,并不影响数据查询过程中对原有索引文件的使用。也就是,该索引文件构建过程与数据查询过程并行进行,所以并不影响数据查询速度。具体构建过程类似于前面描述的初始构建索引文件中的过程,这里不再赘述。
在从设备构建完新的索引文件之后,用该新索引文件替换该从设备上的原有索引文件,从而也使得索引构建过程不影响该从设备的数据查询速度。
然后,在步骤S503处,所述从设备之一将新的数据集合对应的索引文件传送给其它从设备,以替换所述其它从设备上的原有的索引文件。
在一个实施例中,上述从设备之一完成新索引文件的构建后,可以向其余的每一个从设备分发索引拷贝命令,基于该索引拷贝命令,其余的每一个从设备拷贝新构建的索引文件,并替换原有索引文件。由于其余的多个从设备未参与索引文件的重新构建,而且只是将拷贝的新索引文件替换原有索引文件,所以,数据查询速度也未受到影响。可见,这样的索引重构过程不影响数据查询速度,也是本申请的发明点之一。
另外,还可以在索引文件中采用时间戳来标识所述索引文件的版本,以便于拷贝处理,使得多个从设备相对应的索引文件的版本都相同。
至此,通过步骤S303,每个从设备对数据库中各自对应的数据块中的数据执行了预查询处理,得到了各自的候选查询结果。
接下来,回到图3,在步骤S304处,多个从设备中的每一个从设备将各自得到的候选查询结果返回给主设备。
本申请意在使用多个设备分摊单一设备的数据查询量,并且在多个设备上并行进行TOPN过滤处理。在本申请实施例中,多个从设备中的每一个从设备基于相同的查询命令在各自对应的数据块中查询符合条件的前N个数据,这样可以在从设备端得到针对查询命令的局部最优解,大大缩小数据查询范围,减少了主设备的数据查询量,以此提高了数据查询速度。
接下来,在步骤S305处,主设备根据查询命令对候选查询结果中的数据进行最终查询处理,得到最终查询结果。
具体而言,主设备接收到多个从设备各自返回的候选查询结果(局部最优解)之后,针对该多个候选查询结果的数据范围根据查询命令再次执行查询处理(最终查询处理),该最终查询处理可以包括排序和选取步骤。
在一个更具体实施例中,主设备可以根据查询命令中的顺序和数量特征,对候选查询结果中的所有数据进行排序并从排序后的数据中选取相应数量的数据(TOPN)作为最终查询结果。主设备的该排序和选取过程类似于从设备执行的排序和选取过程。如上所述,在一个实施例中,可以对返回的候选查询结果采用有序数据堆缓冲区的方法来得到最终查询结果。
例如,在上面的示例中,针对从设备1-3返回的候选查询结果(总共30条数据),按照查询命令的顺序和数量特征“前10名”构建一个容量为10的有序数据堆缓冲区,例如小顶堆,对该30个数据进行排序和选取,获取排在前10个的数据,即为用户想要查询的最终结果(最终查询结果)。
在一种优选实施例中,可以为主设备预设一等待时间,在该等待时间内,若未收到来自从设备的候选查询结果,则放弃该候选查询结果,而对其余从设备返回的候选查询结果做最终查询处理,以得到最终查询结果。由此可以提高数据查询效率,而对数据查询准确率的影响几乎可以忽略不计。
最终,在步骤S306处,主设备将最终查询结果返回。
在上述本申请的数据查询方法中,通过建立计算机集群,由多个设备分摊针对一个查询请求的数据查询量,并且在数据的处理上做TOPN过滤,从而并行得到局部最优解,最后由一个主设备合并这些局部最优解并通过最终处理得到查询结果,由此大大缩短了数据查询时间,提高了数据查询效率。
尽管在上述实施例中,只阐述了一个主设备和多个从设备的两级架构,实际上根据这里公开的内容,本领域技术人员可以想到本申请的方案也可以实施为主设备和从设备的多级架构。例如,可以存在一个最高级设备,其可以关联多个主设备,每个主设备又可以关联多个从设备等等。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
计算机集群中的主设备接收查询命令;其中,所述计算机集群包括主设备和多个从设备,所述主设备为所述计算机集群中的设备,所述从设备为所述主设备以外的设备;
所述主设备将所述查询命令分发到所述计算机集群中的多个从设备;所述从设备关联有一个与数据集合对应的相同索引文件;
根据所述查询命令,所述多个从设备中的每一个从设备分别针对数据集合中的各自对应的数据块执行预查询处理,以得到各自对应的候选查询结果;
所述多个从设备中的每一个从设备将各自得到的所述候选查询结果返回给所述主设备;
所述主设备根据所述查询命令对所述候选查询结果中的数据进行最终查询处理,得到最终查询结果;以及
所述主设备将所述最终查询结果返回。
2.根据权利要求1所述的方法,其特征在于,所述数据集合对应的索引文件存储于每一个从设备的本地存储装置或远程存储装置中。
3.根据权利要求2所述的方法,其特征在于,所述预查询处理包括:
过滤步骤,用于根据所述查询命令中的条件特征和所述数据集合对应的索引文件,从对应的数据块中筛选出符合条件的数据;以及
排序和选取步骤,用于根据所述查询命令中的顺序和数量特征,对筛选出的数据进行排序,并从排序后的数据中选取相应数量的数据作为所述候选查询结果。
4.根据权利要求1所述的方法,其特征在于,所述最终查询处理包括:
排序和选取步骤,用于根据所述查询命令的顺序和数量特征,对所述候选查询结果中的数据进行排序并从排序后的数据中选取相应数量的数据作为所述最终查询结果。
5.根据权利要求3或4所述的方法,其特征在于,所述排序和选取步骤是通过有序数据堆缓冲区实现的,其中所述有序数据堆缓冲区是根据所述查询命令中的顺序和数量特征而构建的。
6.根据权利要求5所述的方法,其特征在于,所述有序数据堆缓冲区包括小顶堆、大顶堆或基于平衡树的堆。
7.根据权利要求2所述的方法,其特征在于,还包括:
根据数据更新信息,主设备命令多个从设备之一构建新的数据集合对应的索引文件;
所述从设备之一构建新的数据集合对应的索引文件并替换原有的索引文件;以及
所述从设备之一将新的数据集合对应的索引文件传送给其它从设备,以替换所述其它从设备上的原有的索引文件。
8.一种数据查询系统,其特征在于,包括含主设备和多个从设备的计算机集群,所述主设备为所述计算机集群中的设备,所述从设备为所述主设备以外的设备,
所述主设备接收查询命令;
所述主设备将所述查询命令分发到所述多个从设备,所述从设备关联有一个与数据集合对应的相同索引文件;
根据所述查询命令,所述多个从设备中的每一个从设备分别针对数据集合中的各自对应的数据块执行预查询处理,以得到各自对应的候选查询结果;
所述多个从设备中的每一个从设备将各自得到的所述候选查询结果返回给所述主设备;
所述主设备根据所述查询命令对所述候选查询结果中的数据进行最终查询处理,得到最终查询结果;以及
所述主设备将所述最终查询结果返回。
9.根据权利要求8所述的系统,其特征在于,所述数据集合对应的索引文件存储于每一个从设备的本地存储装置或远程存储装置中。
10.根据权利要求9所述的系统,其特征在于,所述预查询处理包括:
过滤步骤,用于根据所述查询命令中的条件特征和所述数据集合对应的索引文件,从对应的数据块中筛选出符合条件的数据;以及
排序和选取步骤,用于根据所述查询命令中的顺序和数量特征,对筛选出的数据进行排序,并从排序后的数据中选取相应数量的数据作为所述候选查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310135330.7A CN104111936B (zh) | 2013-04-18 | 2013-04-18 | 数据查询方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310135330.7A CN104111936B (zh) | 2013-04-18 | 2013-04-18 | 数据查询方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104111936A CN104111936A (zh) | 2014-10-22 |
CN104111936B true CN104111936B (zh) | 2017-12-05 |
Family
ID=51708731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310135330.7A Active CN104111936B (zh) | 2013-04-18 | 2013-04-18 | 数据查询方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104111936B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677652B (zh) * | 2014-11-19 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 一种数据管理方法及装置 |
CN104850618B (zh) * | 2015-05-18 | 2018-06-01 | 北京京东尚科信息技术有限公司 | 一种提供有序数据的系统和方法 |
CN105760477A (zh) * | 2016-02-15 | 2016-07-13 | 中国建设银行股份有限公司 | 面向多个数据源的数据查询方法、系统及其相关设备 |
CN105975331A (zh) * | 2016-04-26 | 2016-09-28 | 浪潮(北京)电子信息产业有限公司 | 一种数据并行处理方法及装置 |
CN108073592B (zh) * | 2016-11-10 | 2022-09-06 | 惠州市康冠科技有限公司 | 判断序列号是否重复的方法及电视机序列号的写入方法 |
CN107301208A (zh) * | 2017-06-02 | 2017-10-27 | 北京奇虎科技有限公司 | 一种数据表处理方法和装置 |
CN109299219B (zh) * | 2018-08-31 | 2022-08-12 | 北京奥星贝斯科技有限公司 | 数据查询方法、装置、电子设备及计算机可读存储介质 |
CN111581237B (zh) * | 2019-02-15 | 2023-06-09 | 阿里巴巴集团控股有限公司 | 数据查询方法、装置、系统及电子设备 |
CN110781269B (zh) * | 2019-09-29 | 2023-03-31 | 上海连尚网络科技有限公司 | 一种在阅读应用中进行书籍搜索的方法与设备 |
CN113051068A (zh) * | 2019-12-27 | 2021-06-29 | 中兴通讯股份有限公司 | 数据库查询方法、装置、设备和存储介质 |
CN113032400B (zh) * | 2021-03-31 | 2022-11-08 | 上海天旦网络科技发展有限公司 | 海量数据的高性能TopN查询方法、系统及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581227B1 (en) * | 2004-03-31 | 2009-08-25 | Google Inc. | Systems and methods of synchronizing indexes |
CN101950297A (zh) * | 2010-09-10 | 2011-01-19 | 北京大学 | 一种海量语义数据的存储和查询方法及装置 |
CN102323957A (zh) * | 2011-10-26 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 基于垂直划分模式的分布并行Skyline查询方法 |
-
2013
- 2013-04-18 CN CN201310135330.7A patent/CN104111936B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581227B1 (en) * | 2004-03-31 | 2009-08-25 | Google Inc. | Systems and methods of synchronizing indexes |
CN101950297A (zh) * | 2010-09-10 | 2011-01-19 | 北京大学 | 一种海量语义数据的存储和查询方法及装置 |
CN102323957A (zh) * | 2011-10-26 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 基于垂直划分模式的分布并行Skyline查询方法 |
Non-Patent Citations (1)
Title |
---|
海量结构化数据存储检索系统;吴广君等;《计算机研究与发展》;20120522;第49卷(第z1期);第1节、第2.2节、第3.1节,图2 * |
Also Published As
Publication number | Publication date |
---|---|
CN104111936A (zh) | 2014-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104111936B (zh) | 数据查询方法和系统 | |
CN110199273B (zh) | 用于在多维数据库环境中的一次扫描中进行加载、聚合和批量计算的系统和方法 | |
US9372882B2 (en) | Partitioning online databases | |
US9223820B2 (en) | Partitioning data for parallel processing | |
Khalifa et al. | The six pillars for building big data analytics ecosystems | |
US9195701B2 (en) | System and method for flexible distributed massively parallel processing (MPP) database | |
CN107710193A (zh) | 分布式计算环境的数据放置控制 | |
US9813490B2 (en) | Scheduled network communication for efficient re-partitioning of data | |
Ngu et al. | B+-tree construction on massive data with Hadoop | |
Humbetov | Data-intensive computing with map-reduce and hadoop | |
CN103246749A (zh) | 面向分布式计算的矩阵数据库系统及其查询方法 | |
US10078697B2 (en) | Computer-implemented method of and system for searching an inverted index having a plurality of posting lists | |
US10489386B2 (en) | Managing transactions requesting non-existing index keys in database systems | |
Liroz-Gistau et al. | Dynamic workload-based partitioning for large-scale databases | |
CN108287889B (zh) | 一种基于弹性表模型的多源异构数据存储方法和系统 | |
Tao et al. | Clustering massive small data for IOT | |
US10289723B1 (en) | Distributed union all queries | |
Haque et al. | Distributed RDF triple store using hbase and hive | |
Liroz-Gistau et al. | Dynamic workload-based partitioning algorithms for continuously growing databases | |
Perwej et al. | An extensive investigate the mapreduce technology | |
Shabeera et al. | A novel approach for improving data locality of mapreduce applications in cloud environment through intelligent data placement | |
CN108170846B (zh) | 基于弹性表模型的大规模多源异构数据持久化方法 | |
US20220309112A1 (en) | Building a base index for search | |
Li et al. | Query-driven frequent Co-occurring term computation over relational data using MapReduce | |
Huynh et al. | Improving the B+-tree construction for transaction log data in bank system using Hadoop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |