CN104063376A - 多维度分组运算方法及系统 - Google Patents
多维度分组运算方法及系统 Download PDFInfo
- Publication number
- CN104063376A CN104063376A CN201310086336.XA CN201310086336A CN104063376A CN 104063376 A CN104063376 A CN 104063376A CN 201310086336 A CN201310086336 A CN 201310086336A CN 104063376 A CN104063376 A CN 104063376A
- Authority
- CN
- China
- Prior art keywords
- data
- dimension
- inquiry request
- grouping
- dimensions
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种多维度分组运算方法及系统。所述多维度分组运算方法,包括:对海量数据以分布式进行分片以形成多个数据分片;在每个数据分片中,按照每个维度对数据创建索引,将创建的多个所述索引生成为索引文件;在每个数据分片中,使用所述索引文件对所述数据进行在线多维度分组运算;以及对所述每个数据分片的运算结果进行合并运算。通过采用本申请,能够实现对海量数据进行在线多维度分组的运算,使得可在毫秒级时间内返回对10亿级别的海量数据进行的多维度分组运算结果。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种对海量数据执行的多维度分组运算方法及系统。
背景技术
当前,在数据仓库的应用系统中有各种各样的对海量数据进行多维度分组的分析需求。所谓的多维度分组就是以多个维度对海量数据(10亿级别的数据)进行分组,并对分组后的结果进行汇总计算,汇总运算包括求sum、max、min、avg等。面对各种分析需求,以往采用了分布式的离线计算方式。例如,传统的Map-Reduce计算方式由于是离线计算,所以延迟性很高。而作为在线的应用系统,其对服务响应时间要求较高,尤其是对于应用多维度分组的在线系统而言,要求在毫秒级时间内返回分析结果。因而,传统的离线计算方式无法应用于服务响应时间较高的在线系统。
此外,Hadoop离线计算是一种能够对大量数据进行分布式处理的分布式计算平台,在对海量数据的多维度统计分析运算中要借助于Hadoop的离线计算能力,因为传统关系型数据库是无法计算大规模数据,然而众所周知基于Hadoop计算是一种高吞吐、高延迟的运算,该方式无法满足用户在线分析的需求。目前,对数据仓库而言,为了减少用户等待的时间,往往是依靠ETL工程师先在Hadoop上将一些要计算的指标事先计算出来并将计算结果导入到关系型数据库中,然后在用户提出分析需求时由开发工程师将计算结果在页面上展现出来。但是,这样的流程存在的缺点是无法更灵活地对数据进行统计运算,也就是说必须要事先知道要做哪些运算,然后依靠Hadoop事先预计算好结果再将结果展现到页面。
关系型数据库系统例如Mysql、Oracle等是可以进行多维度分析的,但是它们所处理的数据量很小,根本无法支持海量数据的多维度分析。虽然Hadoop可以进行海量数据的多维度分析,但是它的多维度分析耗时非常长,要想达到在线的分析只能如上述那样事先在设定了维度组合条件下的结果在Hadoop中计算好再直接提供查询。
发明内容
本申请的主要目的在于提供一种能够实时提供对海量数据进行在线多维度分组的多维度分组运算方法及系统,以解决现有技术存在的数据库系统处理能力差、多维度分组运算仅能采用离线计算而导致的延迟性高、维度组合条件不灵活等问题,其中:
本申请的一个方面,提供一种对海量数据的多维度分组运算方法。其包括:对海量数据以分布式进行分片以形成多个数据分片;在每个数据分片中,按照每个维度对数据创建索引,将创建的多个所述索引生成为索引文件;在每个数据分片中,使用所述索引文件对所述数据进行在线多维度分组运算;以及对所述每个数据分片的运算结果进行合并运算。
根据本申请的所述方法,还包括:接收来自用户端的与预定多个维度相关的查询请求,并将所述查询请求发送到每个数据分片中;以及将所述合并运算的结果返回给用户端,在每个数据分片中,使用所述索引文件对所述数据进行在线多维度分组运算是按照所述查询请求进行的。
根据本申请的所述方法,所述每个数据分片具有多个文档,所述在线多维度分组运算包括:在每个数据分片中,从所述索引文件中获取多个与所述预定多个维度中的每个维度对应的枚举值表;建立所述预定多个维度的分组结果和与所述查询请求对应的运算结果之间的对应关系;按照每个所述文档的序号,从多个所述枚举值表中分别获取与所述预定多个维度对应的维度值,并将获取到的多个所述维度值进行维度组合;使用所述对应关系,根据维度组合的结果来计算所述与所述查询请求对应的运算结果。
根据本申请的所述方法,所述在线多维度分组运算还包括:对与所述查询请求对应的运算结果进行排序的步骤。
根据本申请的所述方法,在所述对海量数据以分布式进行分片的步骤中,使用MurmurHash运算将海量数据划分为多个数据分片。
根据本申请的所述方法,所述索引是按照每个维度生成的倒排词表。
根据本申请的所述方法,所述倒排词表中存储有每个维度值与所述文档的序号之间的映射关系。
本申请的另一方面,提供一种对海量数据的多维度分组运算系统。其包括:数据分片装置,被配置成对海量数据以分布式进行分片以形成多个数据分片;索引生成装置,被配置成在每个数据分片中,按照每个维度对数据创建索引,将创建的多个所述索引生成为索引文件;运算装置,被配置成在每个数据分片中使用所述索引文件对所述数据进行在线多维度分组运算;以及合并装置,被配置成对所述每个数据分片的运算结果进行合并运算。
根据本申请的系统,还包括:接收装置,被配置成接收来自用户端的与预定多个维度相关的查询请求,并将所述查询请求发送到每个数据分片中;以及发送装置,被配置成将所述合并运算的结果返回给用户端,所述运算装置按照所述查询请求进行多维度分组运算。
根据本申请的系统,所述每个数据分片具有多个文档,所述运算装置包括:获取装置,被配置成在每个数据分片中,从所述索引文件中获取多个与所述预定多个维度中的每个维度对应的枚举值表;建立装置,被配置成建立所述预定多个维度的分组结果和与所述查询请求对应的运算结果之间的对应关系;组合装置,被配置成按照每个所述文档的序号,从多个所述枚举值表中分别获取与所述预定多个维度对应的维度值,并将获取到的多个所述维度值进行维度组合;计算装置,被配置成使用所述对应关系,根据维度组合的结果来计算所述与所述查询请求对应的运算结果。
根据本申请的系统,所述运算还包括用于对与所述查询请求对应的运算结果进行排序的排序装置。
根据本申请的系统,所述数据分片装置使用MurmurHash运算将海量数据划分为多个数据分片。
根据本申请的系统,所述索引是按照每个维度生成的倒排词表。
根据本申请的系统,所述倒排词表中存储有每个维度值与文档的序号之间的映射关系。
与现有技术相比,根据本申请的技术方案,能够实现对海量数据进行在线多维度分组的运算,使得可在毫秒级时间内返回对10亿级别的海量数据进行的多维度分组运算结果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例的多维度分组运算方法的示意流程图;
图2是本申请实施例的在线多维度分组运算的流程图;
图3是本申请实施例的合并运算的结构示意图;
图4是本申请实施例的多维度分组系统的结构示意图;
图5是本申请实施例的运算装置的结构示意图。
具体实施方式
本申请的主要思想在于,底层使用Solr的分片(Sharding)功能,将海量数据分散到不同的数据分片(以下,也称作“shard”)中,并且使用Solr对每个数据分片中的海量数据创建索引,并生成倒排索引文件,以达到分布式检索的目的。但是,众所周知Solr的Facet Query(分面查询)功能具有只支持单维度分组的查询特性,它无法支持多维度分组查询,而本申请采用哈希表的数据结构来实现对海量数据的多维度分组。另外,关于Solr,在后面对其进行详细说明。
为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。
〔传统的离线计算方式〕
首先,对使用传统的离线计算方式进行多维度分组运算的例子进行说明。
例如,数据仓库中存储有全站的全量数据,其数据量是海量级别。很多的分析工作均是针对海量级别的数据进行分析的。例如,预测到用户端有可能提出“在北京地区使用X产品的男性用户有多少人?”这样的查询请求。从这个查询请求可以看出,该查询请求具有固定的维度组合,即:维度组合是北京、X产品、男性。在这种情况下,传统的计算方法是:事先通过Hadoop离线计算方式将X产品的使用记录中属于北京地区的男性用户的数量计算出来并将计算结果保存到传统关系型数据库中,当从用户端发出上述在线的查询请求时,直接将预先保存在传统关系型数据库中的计算结果返回给用户端。但是,这种预测的分析需求是有限的,对于在线系统来说,来自用户端的查询请求具有任意性,往往是任意的多个维度的组合,因此,Hadoop离线计算方式远远无法满足这种复杂多样的分析需求。再例如,面对在任意城市(340个城市)*使用A网站的任意产品(假设500个站上产品)*任意性别(男、女)的用户有多少人这样的查询请求,按照传统的离线计算方法,需要将340个城市、500个产品、男女用户这些维度的组合全部通过离线计算方式计算出来,对于维度组合方式来说,就有340*500*2=340000种组合方式,也就是说仅仅一个分析场景下的计算结果的数据就有340000个,假设增加了一个分析场景即增加年龄这个维度,那么,计算结果的数据的集合便成笛卡儿积式增长,这样的维度组合的计算效率和计算结果的存储成本是无法接受的。而且,应用系统存在各种各样的对海量数据进行多维度分组的分析需求,无法穷举出维度的组合来进行分析运算,如上述的例子,就有可能出现(任意城市*使用的任意产品*任意性别)、(任意城市*任意性别)、(任意城市*使用的任意产品)或(任意城市*使用的任意产品*任意性别*任意年龄)等等的维度组合方式。因此,必须实现一个在线的多维度分组运算的系统,当用户提出查询请求时系统能立刻进行多维度分组的运算,并且能够在秒级时间内将结果计算出来。
在此,上述的数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境。数据仓库研究和解决从数据库中获取信息的问题。数据仓库的特征在于面向主题、集成性、稳定性和时变性。数据仓库与数据库的区别点之一是:数据库的数据是实时更新的数据,而数据仓库的数据是按预定时间(例如一日)进行更新的数据。
〔Solr的单维度分组的原理〕
其次,对Solr的单维度分组的原理进行说明。
Solr是指一个基于Lucene的分布式全文搜索服务器。简单来说,Solr是一个全文检索系统,它可以对原始的文本数据进行加工,建立倒排索引,从而实现数据的快速查询。Solr作为一个全文检索系统,其本身仅支持单维度分组,也叫分面查询(Facet Query)。它可以从不同的角度(即单维度)对数据进行归类整合,有助于用户进一步了解需要获取的数据信息。例如,当针对大批量用户的数据信息需要从性别角度进行归类时,可以使用Solr将该数据信息分为男用户的信息和女用户的信息。但是,面对从例如性别和年龄的角度将上述数据信息进行归类,即将数据信息分为<男—1~10岁>、<男—11~20岁>…等这样的需求时,由于Solr不支持交叉面(即多维度分组)的数据归类,所以在这种情况无法使用Solr。
Solr的单维度分组的原理是:简单来说,就是从倒排索引文件中取得单个维度的倒排词表,这个倒排词表就是单维度分组的结果。例如,在对性别这个维度建立倒排索引时,这个维度的倒排词表就是男和女。当然,倒排词表只是按照单个维度对数据进行分组,往往在对数据进行分组的同时还伴随着分组后的计算,比如男性用户数是多少,女性用户数是多少。
根据本申请的实施例,提供了一种多维度分组运算方法。
〔多维度分组运算方法的流程〕
参考图1,图1是本申请实施例的多维度分组运算方法的示意流程图。下面,详细地说明本申请涉及的多维度分组运算方法的流程。
如图1所示,在步骤S101中,对海量数据以分布式进行分片以形成多个数据分片。具体来说,本申请采用了Hadoop分布式系统,其包括多个计算节点和一个合并节点。因此,“对海量数据进行分片”实际上就是将海量数据分散到不同的计算节点上。换句话说,就是将海量数据分成多个部分,并将每个部分存储到Hadoop分布式系统中的每个计算节点上。以下,有时也将每个计算节点称为每个数据分片。
这里的“海量数据”是指一批数据量非常大的数据,其来自于数据仓库,并存储在Hadoop系统中。由于普通单机运算是无法实现对海量数据的计算,所以对海量数据的运算只能通过Hadoop的分布式计算方式来进行,因此本申请借助于Hadoop的分布式计算方式来实现对海量数据的多维分组运算。
在该步骤中,为了将海量数据均匀地分散到多个计算节点上,本申请采用了MurMurHash算法来作为分散海量数据的方法。这种MurMurHash算法是一种非加密一致性HASH(哈希)算法,具有高运算性能。通过对海量数据中的每一条数据执行MurMurHash算法,就能够将海量数据分别映射到不同的计算节点上。举例来说,例如一条用户信息包括名字、性别、年龄、出生地等属性,那么经过MurMurHash算法后就可以得到<刘文,男,25,哈尔滨>这样的一条记录。通过执行MurMurHash算法,可以保证数据能够均匀地分散到各计算节点中。
接着,在步骤S102中,在每个数据分片中,按照每个维度对数据创建索引,并将创建的多个所述索引生成为索引文件。换句话说,在每个计算节点上均生成一个索引文件,而该索引文件中包含多个与单维度对应的索引。
具体来说,在每个数据分片中,每一条数据称为一个文档,因此每个数据分片均具有多个文档。通过使用Solr对每个数据分片中的数据进行加工,建立倒排索引。建立倒排索引是由于这种存储结构查询效率高、实时性高的缘故。使用倒排索引,能够加快数据查询的速度。实际上,建立的每个索引都是按照单个维度生成的倒排词表。该倒排词表中存储有每个维度值与文档的序号之间的映射关系。
下面,举例来说明倒排词表。
[例1]假设有如下5个文档:
1.(A,a,I)
2.(A,b,I)
3.(B,c,II)
4.(C,d,III)
5.(C,d,III)
其中,1~5表示文档序号,(A~C)、(a~d)、(I~III)表示三种不同的维度对应的维度值,则由这5个文档建立的倒排词表为:
A→1,2 a→1 I→1,2
B→3 b→2 II→3
C→4,5 c→3 III→4,5
d→4,5
如上述这样,例如,在该倒排词表中存在维度值A与文档序号1、2的映射关系。通过使用倒排词表,能够直接得到每个维度值的具体位置信息,从而使得查询的速度更快。
接着,在步骤S103中,接收来自用户端的与预定多个维度相关的查询请求,并将所述查询请求发送到每个数据分片中。也就是说,这里的查询请求就是由用户端任意指定的维度组合。预定多个维度是至少两个以上的维度。为了在每个数据分片中针对用户端指定的维度组合进行多维度分组运算,需要将用户端的查询请求分发到各数据分片中。
此外,在该步骤S102中,针对每个数据分片中所有的维度生成索引文件,而在后述的步骤S104中仅针对用户端任意指定的多个维度进行多维度分组运算。当然,即使用户端不指定多个维度,也可以针对所有的维度进行多维度分组运算。
接着,在步骤S104中,在每个数据分片中,按照来自用户端的查询请求,使用索引文件对数据进行在线多维度分组运算。
〔在线多维度分组运算〕
图2是本申请实施例的在线多维度分组运算的流程图。具体来说,如图2所示,在线多维度分组运算包括:
在步骤S201中,在每个数据分片中,从索引文件中获取多个与预定多个维度中的每个维度对应的枚举值表。也就是说,由于索引文件中包含所有维度的倒排词表,所以从在步骤S102中生成的索引文件中可以获取到每个维度的枚举值表,每个枚举值表与用户端指定的多个维度中的每个维度相对应。在此,枚举值表示从倒排词表中获取到的每个维度的所有值的意思,枚举值表是包含每个维度的所有值的列表。实际上,这一步骤是求出单维度的分组结果。
基于上述例1来进行说明。在每一个数据分片中,针对用户指定的多个维度,根据Solr单维度分组的原理,分别从各个维度所对应的倒排词表中获得每个维度的枚举值表。即:{A,A,B,C,C};{a,b,c,d,d};{I,I,II,III,III}。
在步骤S202中,建立预定多个维度的分组结果和与查询请求对应的运算结果之间的对应关系。换句话说,建立预定多个维度的分组结果与分组后的相应的运算结果之间的对应关系。在该步骤中,通过定义一个“哈希表”数据结构来建立对应关系。建立对应关系的目的是,当获得多维度分组的结果时,可以通过所建立的对应关系得到分组后的运算结果。哈希表(Hashtable)也称为散列表,它是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。在本申请中,哈希表的key保存有多维分组的结果,value保存有多维分组后的计算结果,这里的计算包括sum、max、min、avg、count等。也就是说,通过定义哈希表,建立了多维度分组的结果与分组后的计算结果之间的对应关系。当然,建立对应关系的方法不限于哈希表的数据结构,只要能够建立多维度分组的结果与分组后的计算结果之间的对应关系,可以采用任意的方法。
在步骤S203中,按照每个文档的序号,从多个枚举值表中分别获取与预定多个维度对应的维度值,并将获取到的多个维度值进行维度组合。换句话说,先按照文档的序号,从枚举值表中分别获取多个维度值,然后通过将获取到的多个维度值进行组合,就得到了预定多个维度的分组结果。实际上,该步骤就是使用枚举值表来获取多维度分组的结果。
下面,基于上述例1来进行说明。首先,按照文档序号1,从三个枚举值表{A,A,B,C,C}、{a,b,c,d,d}、{I,I,II,III,III}中分别获取到A、a、I这三个维度值。然后,将A、a、I进行维度组合,得到(A、a、I)。同样地,按照文档序号2从枚举值表中能得到(A、b、I),按照文档序号3从枚举值表中能得到(B、c、II),按照文档序号4和5分别从枚举值表中得到(C,d,III)。
在步骤S204中,使用建立的对应关系,根据维度组合的结果来计算与查询请求对应的运算结果。也就是说,在步骤S203中求出了多个维度的分组的结果之后,根据在步骤S202中所建立的预定多个维度的分组结果和与查询请求对应的运算结果之间的对应关系,就能容易地得到与用户端的查询请求对应的运算结果。进而,在该步骤中,根据通过步骤S203得到的维度组合的结果计算出与查询请求对应的运算结果之后,在哈希表中查找是否已有与每个维度组合对应的计算结果,如果已有计算结果,则将新的计算结果与已有的计算结果进行合并运算,反之如果没有计算结果,则将新的结果插入到哈希表中。
下面,基于例1进行说明。
假设用户端提出的查询请求是在大写字母、小写字母、罗马数字这三个维度下求出交叉组count数。
首先,在步骤S201中得到了枚举值表{A,A,B,C,C}、{a,b,c,d,d}、{I,I,II,III,III},接着,在步骤S202中建立一个空白的哈希表。然后,在步骤S203中得到了维度的分组结果即(A、b、I),(B、c、II),(C,d,III),(C,d,III)。接着,在步骤S204中,由第一个交叉组(A、a、I)得到该交叉组的count数为1,然后在哈希表中查找是否存在交叉组(A、a、I),由于该哈希表是一个空白表,所以该表中没有查找到交叉组(A、a、I),因此将交叉组(A、a、I)的count数即1插入到哈希表中。同样地,第二个交叉组(B、c、II)的count数也为1,并将交叉组(B、c、II)的count数即1插入到哈希表中。同样地,第三个交叉组(C,d,III)的count数为1,在哈希表中也查找不到该交叉组,所以将交叉组(C,d,III)count数插入到哈希表中。接下来,第四个交叉组(C,d,III)的count数也为1,但由于在哈希表中能够查找到交叉组(C,d,III),所以将第四个交叉组的count数“1”与已有的计算结果“1”相加而得到2。即可得到:
如上所述,通过步骤S204能够得到与用户端的查询请求对应的运算结果。
此外,当用户端存在需要对计算结果进行排序的情况下,可以继续执行步骤S205。例如,用户端想要知道北京地区使用A网站的男性用户的比例是多少。
在步骤S205中,对与用户端的查询请求对应的运算结果进行排序。此时,可以使用堆排序来执行步骤S205。这里的堆排序又称为堆积排序(Heapsort),它是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。由于本申请采用了用Solr创建索引的方法,所以最适合采用堆排序。当然,排序的方法不限于此,只要能达到对计算结果进行排序的效果,可以使用其他公知的排序方法。
以上述例子为例来进行说明时,通过对步骤S204的计算结果进行堆排序后可以得到如下结果:
C,d,II→2
A,a,I→1
A,b,I→1
B,c,II→1
此外,在对每个多维度分组后的count数进行堆排序后,将分组后的count数排在前几名的多维度的分组结果通过后述的步骤S105的运算后返回给用户端。
接着,在步骤S105中,对每个数据分片的运算结果进行合并运算。如图3所示,图3示出了本申请实施例的合并运算的结构示意图。也就是说,先在每个数据分片(即图3中的本地计算节点1~本地计算节点3)中对数据进行在线多维度分组运算(即图3中的多维度本地计算),然后再将各数据分片的计算结果(即3中的计算结果1、计算结果2以及计算结果3)发送到合并节点,通过合并节点对各计算结果进行合并运算。该合并运算包括求sum、max、min、avg等的运算。
最后,在步骤S106中,将合并运算的结果返回给用户端。也就是说,将合并节点计算出的合并结果即最终结果返回给用户端。
如上所述,通过采用本申请涉及的多维度分组运算,能够实现对海量数据进行在线多维度分组的运算,使得可在毫秒级时间内返回对10亿级别的海量数据进行的多维度分组运算结果。并且,可以通过如下式子计算时间复杂度,即:
O(Kn+mlogm)
其中,O为时间复杂度,K为维度数,n为文档数,m为交叉后的分组数。
〔多维度分组系统〕
下面,对本申请涉及的多维度分组系统进行说明。
图4是本申请实施例的多维度分组系统的结构示意图。如图4所示,多维度分组系统400包括数据分片装置401、索引生成装置402、接收装置403、运算装置404、合并装置405以及发送装置406。
数据分片装置401,被配置成对海量数据以分布式进行分片以形成多个数据分片。该数据分片装置401使用MurmurHash运算将海量数据划分为多个数据分片,使得保证数据能够均匀地分散到各数据分片中。
索引生成装置402,被配置成在每个数据分片中,按照每个维度对数据创建索引,将创建的多个索引生成为索引文件。所述索引是按照每个维度生成的倒排词表。在该倒排词表中存储有每个维度值与文档的序号之间的映射关系。
接收装置403,被配置成接收来自用户端的与预定多个维度相关的查询请求,并将查询请求发送到每个数据分片中。
运算装置404,被配置成在每个数据分片中使用索引文件对数据进行在线多维度分组运算。所述运算装置按照所述查询请求进行多维度分组运算。
合并装置405,被配置成对每个数据分片的运算结果进行合并运算。
发送装置406,被配置成将合并运算的结果返回给用户端。
图5是本申请实施例的运算装置404的结构示意图。如图5所示,运算装置404进一步包括:获取装置
获取装置501,被配置成在每个数据分片中,从索引文件中获取多个与预定多个维度中的每个维度对应的枚举值表。
建立装置502,被配置成建立预定多个维度的分组结果和与查询请求对应的运算结果之间的对应关系。
组合装置503,被配置成按照每个文档的序号,从多个枚举值表中分别获取与预定多个维度对应的维度值,并将获取到的多个维度值进行维度组合。
计算装置504,被配置成使用对应关系,根据维度组合的结果来计算与查询请求对应的运算结果。
排序装置505,被配置成对与查询请求对应的运算结果进行排序。
本申请的系统400所包括的各个装置的具体实施与本申请的方法中的步骤的具体实施是相对应的,为了不模糊本申请,在此不再对各个装置的具体细节进行描述。
本申请的多维度分组运算方法及系统能够在任何可以对海量数据进行在线多维度分组处理的应用系统中应用。所述应用系统可以包括但不限于:移动终端设备、膝上型电脑、平板电脑、个人数字助理等。
通过采用本申请的多维度分组运算方法及系统,既弥补了传统数据库在进行实时运算时无法处理海量数据的缺点,又弥补了借助Hadoop以多维度计算海量数据时无法达到实时性的缺点,还弥补了Solr在做海量数据实时计算时无法处理多维度计算的缺陷。即,本申请实现了对海量数据实时地进行多维度分组运算。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元、装置及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
应当注意,本申请的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本申请的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
应当注意,尽管在上文详细描述中提及了设备的若干模块或子模块,但是这种划分仅仅并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
以上所述仅为本申请的实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种对海量数据的多维度分组运算方法,包括:
对海量数据以分布式进行分片以形成多个数据分片;
在每个数据分片中,按照每个维度对数据创建索引,将创建的多个所述索引生成为索引文件;
在每个数据分片中,使用所述索引文件对所述数据进行在线多维度分组运算;以及
对所述每个数据分片的运算结果进行合并运算。
2.根据权利要求1所述的方法,还包括:
接收来自用户端的与预定多个维度相关的查询请求,并将所述查询请求发送到每个数据分片中;以及
将所述合并运算的结果返回给用户端,
在每个数据分片中,使用所述索引文件对所述数据进行在线多维度分组运算是按照所述查询请求进行的。
3.根据权利要求2所述的方法,其中,所述每个数据分片具有多个文档,
所述在线多维度分组运算包括:
在每个数据分片中,从所述索引文件中获取多个与所述预定多个维度中的每个维度对应的枚举值表;
建立所述预定多个维度的分组结果和与所述查询请求对应的运算结果之间的对应关系;
按照每个所述文档的序号,从多个所述枚举值表中分别获取与所述预定多个维度对应的维度值,并将获取到的多个所述维度值进行维度组合;
使用所述对应关系,根据维度组合的结果来计算所述与所述查询请求对应的运算结果。
4.根据权利要求3所述的方法,其中,所述在线多维度分组运算还包括:对与所述查询请求对应的运算结果进行排序的步骤。
5.根据权利要求1所述的方法,其中,在所述对海量数据以分布式进行分片的步骤中,使用MurmurHash运算将海量数据划分为多个数据分片。
6.根据权利要求1所述的方法,其中,所述索引是按照每个维度生成的倒排词表。
7.根据权利要求6所述的方法,其中,所述倒排词表中存储有每个维度值与所述文档的序号之间的映射关系。
8.一种对海量数据的多维度分组运算系统,包括:
数据分片装置,被配置成对海量数据以分布式进行分片以形成多个数据分片;
索引生成装置,被配置成在每个数据分片中,按照每个维度对数据创建索引,将创建的多个所述索引生成为索引文件;
运算装置,被配置成在每个数据分片中使用所述索引文件对所述数据进行在线多维度分组运算;以及
合并装置,被配置成对所述每个数据分片的运算结果进行合并运算。
9.根据权利要求8所述的系统,还包括:
接收装置,被配置成接收来自用户端的与预定多个维度相关的查询请求,并将所述查询请求发送到每个数据分片中;以及
发送装置,被配置成将所述合并运算的结果返回给用户端,
所述运算装置按照所述查询请求进行多维度分组运算。
10.根据权利要求9所述的系统,其中,所述每个数据分片具有多个文档,
所述运算装置包括:
获取装置,被配置成在每个数据分片中,从所述索引文件中获取多个与所述预定多个维度中的每个维度对应的枚举值表;
建立装置,被配置成建立所述预定多个维度的分组结果和与所述查询请求对应的运算结果之间的对应关系;
组合装置,被配置成按照每个所述文档的序号,从多个所述枚举值表中分别获取与所述预定多个维度对应的维度值,并将获取到的多个所述维度值进行维度组合;
计算装置,被配置成使用所述对应关系,根据维度组合的结果来计算所述与所述查询请求对应的运算结果。
11.根据权利要求10所述的系统,其中,所述运算还包括用于对与所述查询请求对应的运算结果进行排序的排序装置。
12.根据权利要求8所述的系统,其中,所述数据分片装置使用MurmurHash运算将海量数据划分为多个数据分片。
13.根据权利要求8所述的系统,其中,所述索引是按照每个维度生成的倒排词表。
14.根据权利要求13所述的系统,其中,所述倒排词表中存储有每个维度值与文档的序号之间的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310086336.XA CN104063376A (zh) | 2013-03-18 | 2013-03-18 | 多维度分组运算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310086336.XA CN104063376A (zh) | 2013-03-18 | 2013-03-18 | 多维度分组运算方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104063376A true CN104063376A (zh) | 2014-09-24 |
Family
ID=51551092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310086336.XA Pending CN104063376A (zh) | 2013-03-18 | 2013-03-18 | 多维度分组运算方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104063376A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105354272A (zh) * | 2015-10-28 | 2016-02-24 | 中通服公众信息产业股份有限公司 | 一种基于维度组合的指标计算方法和系统 |
CN106055691A (zh) * | 2016-06-12 | 2016-10-26 | 成都科来软件有限公司 | 一种分布式数据存储处理方法及存储处理系统 |
CN106250564A (zh) * | 2016-08-29 | 2016-12-21 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的处理方法 |
CN106354813A (zh) * | 2016-08-29 | 2017-01-25 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的定位方法 |
CN106407215A (zh) * | 2015-07-31 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN106446543A (zh) * | 2016-09-21 | 2017-02-22 | 北京顺源开华科技有限公司 | 健康数据处理方法、装置及服务器集群 |
CN106933906A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据多维度的查询方法及装置 |
CN107025542A (zh) * | 2016-10-27 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 提供渠道组合的集成能力的方法和装置 |
CN107729399A (zh) * | 2017-09-21 | 2018-02-23 | 北京京东尚科信息技术有限公司 | 数据处理的方法和装置 |
CN107861998A (zh) * | 2017-10-19 | 2018-03-30 | 用友网络科技股份有限公司 | 业务数据的导入方法、装置和计算机设备 |
CN108230070A (zh) * | 2016-12-21 | 2018-06-29 | 天脉聚源(北京)科技有限公司 | 一种管理互联网商品枚举信息的方法和系统 |
CN108427675A (zh) * | 2017-02-13 | 2018-08-21 | 阿里巴巴集团控股有限公司 | 构建索引的方法及设备 |
WO2020088262A1 (zh) * | 2018-10-30 | 2020-05-07 | 华为技术有限公司 | 数据分析方法、设备及存储介质 |
CN111782645A (zh) * | 2019-11-29 | 2020-10-16 | 北京沃东天骏信息技术有限公司 | 数据处理方法和装置 |
CN111815101A (zh) * | 2020-01-15 | 2020-10-23 | 北京嘀嘀无限科技发展有限公司 | 一种信息处理方法、装置、存储介质及电子设备 |
CN112860729A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | 一种运算方法、装置、电子设备和可读存储介质 |
CN113220719A (zh) * | 2021-06-04 | 2021-08-06 | 上海天旦网络科技发展有限公司 | 一种海量维度数据关联查询优化方法及系统 |
CN113641713A (zh) * | 2021-08-30 | 2021-11-12 | 北京沃东天骏信息技术有限公司 | 一种数据处理的方法和装置 |
WO2022218033A1 (zh) * | 2021-04-13 | 2022-10-20 | 华为技术有限公司 | 一种数据处理的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080033934A1 (en) * | 2006-08-07 | 2008-02-07 | Bea Systems, Inc. | Distributed query search |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | 中国移动通信集团公司 | 分布式数据库系统、在其中建立索引的方法和查询方法 |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102779160A (zh) * | 2012-06-14 | 2012-11-14 | 中金数据系统有限公司 | 海量数据信息索引系统和索引构建方法 |
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
-
2013
- 2013-03-18 CN CN201310086336.XA patent/CN104063376A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080033934A1 (en) * | 2006-08-07 | 2008-02-07 | Bea Systems, Inc. | Distributed query search |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | 中国移动通信集团公司 | 分布式数据库系统、在其中建立索引的方法和查询方法 |
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102779160A (zh) * | 2012-06-14 | 2012-11-14 | 中金数据系统有限公司 | 海量数据信息索引系统和索引构建方法 |
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
Non-Patent Citations (1)
Title |
---|
郭峻峰: "数据仓库查询优化方法及索引技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407215A (zh) * | 2015-07-31 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN105354272B (zh) * | 2015-10-28 | 2018-08-28 | 中通服公众信息产业股份有限公司 | 一种基于维度组合的指标计算方法和系统 |
CN105354272A (zh) * | 2015-10-28 | 2016-02-24 | 中通服公众信息产业股份有限公司 | 一种基于维度组合的指标计算方法和系统 |
CN106933906A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据多维度的查询方法及装置 |
CN106933906B (zh) * | 2015-12-31 | 2020-05-22 | 北京国双科技有限公司 | 数据多维度的查询方法及装置 |
CN106055691A (zh) * | 2016-06-12 | 2016-10-26 | 成都科来软件有限公司 | 一种分布式数据存储处理方法及存储处理系统 |
CN106354813A (zh) * | 2016-08-29 | 2017-01-25 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的定位方法 |
CN106250564A (zh) * | 2016-08-29 | 2016-12-21 | 北京首信科技股份有限公司 | 一种对海量数据的维度用户的处理方法 |
CN106446543A (zh) * | 2016-09-21 | 2017-02-22 | 北京顺源开华科技有限公司 | 健康数据处理方法、装置及服务器集群 |
CN107025542A (zh) * | 2016-10-27 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 提供渠道组合的集成能力的方法和装置 |
CN108230070A (zh) * | 2016-12-21 | 2018-06-29 | 天脉聚源(北京)科技有限公司 | 一种管理互联网商品枚举信息的方法和系统 |
CN108427675A (zh) * | 2017-02-13 | 2018-08-21 | 阿里巴巴集团控股有限公司 | 构建索引的方法及设备 |
CN107729399A (zh) * | 2017-09-21 | 2018-02-23 | 北京京东尚科信息技术有限公司 | 数据处理的方法和装置 |
CN107729399B (zh) * | 2017-09-21 | 2020-06-05 | 北京京东尚科信息技术有限公司 | 数据处理的方法和装置 |
CN107861998B (zh) * | 2017-10-19 | 2020-05-15 | 用友网络科技股份有限公司 | 业务数据的导入方法、装置和计算机设备 |
CN107861998A (zh) * | 2017-10-19 | 2018-03-30 | 用友网络科技股份有限公司 | 业务数据的导入方法、装置和计算机设备 |
WO2020088262A1 (zh) * | 2018-10-30 | 2020-05-07 | 华为技术有限公司 | 数据分析方法、设备及存储介质 |
CN111782645A (zh) * | 2019-11-29 | 2020-10-16 | 北京沃东天骏信息技术有限公司 | 数据处理方法和装置 |
CN111782645B (zh) * | 2019-11-29 | 2024-07-16 | 北京沃东天骏信息技术有限公司 | 数据处理方法和装置 |
CN111815101A (zh) * | 2020-01-15 | 2020-10-23 | 北京嘀嘀无限科技发展有限公司 | 一种信息处理方法、装置、存储介质及电子设备 |
CN111815101B (zh) * | 2020-01-15 | 2024-05-03 | 北京嘀嘀无限科技发展有限公司 | 一种信息处理方法、装置、存储介质及电子设备 |
CN112860729A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | 一种运算方法、装置、电子设备和可读存储介质 |
WO2022218033A1 (zh) * | 2021-04-13 | 2022-10-20 | 华为技术有限公司 | 一种数据处理的方法和装置 |
CN113220719A (zh) * | 2021-06-04 | 2021-08-06 | 上海天旦网络科技发展有限公司 | 一种海量维度数据关联查询优化方法及系统 |
CN113641713A (zh) * | 2021-08-30 | 2021-11-12 | 北京沃东天骏信息技术有限公司 | 一种数据处理的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104063376A (zh) | 多维度分组运算方法及系统 | |
CN108509547B (zh) | 一种信息管理方法、信息管理系统及电子设备 | |
Chen et al. | Top-k term publish/subscribe for geo-textual data streams | |
US9747349B2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
Chen et al. | Location-aware top-k term publish/subscribe | |
US20140358845A1 (en) | Data warehouse compatibility | |
CN102214208B (zh) | 一种基于非结构化文本生成结构化信息实体的方法与设备 | |
CN103838756A (zh) | 一种确定推送信息的方法及装置 | |
CN103440288A (zh) | 一种大数据存储方法及装置 | |
CN105843841A (zh) | 一种小文件存储方法和系统 | |
CN110837520A (zh) | 一种数据处理方法、平台及系统 | |
CN104391908B (zh) | 一种图上基于局部敏感哈希的多关键字索引方法 | |
CN113407785B (zh) | 一种基于分布式储存系统的数据处理方法和系统 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN104620241A (zh) | 多语言文档聚类 | |
CN103559258A (zh) | 基于云计算的网页排序方法 | |
CN115145871A (zh) | 文件查询方法、装置和电子设备 | |
CN104794237A (zh) | 网页信息处理方法及装置 | |
CN110705816B (zh) | 基于大数据的任务分配方法和装置 | |
CN110442614B (zh) | 元数据的搜索方法及装置、电子设备、存储介质 | |
Xu et al. | Efficient similarity join based on Earth mover’s Distance using Mapreduce | |
CN113821514B (zh) | 数据拆分方法、装置、电子设备和可读存储介质 | |
Cao | Design and Implementation of Human‐Computer Interaction System in Parallel Digital Library System Based on Neural Network | |
EP2082317A2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
CN113722296A (zh) | 一种农业信息处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140924 |