CN105117442A - 一种基于概率的大数据查询方法 - Google Patents

一种基于概率的大数据查询方法 Download PDF

Info

Publication number
CN105117442A
CN105117442A CN201510492377.8A CN201510492377A CN105117442A CN 105117442 A CN105117442 A CN 105117442A CN 201510492377 A CN201510492377 A CN 201510492377A CN 105117442 A CN105117442 A CN 105117442A
Authority
CN
China
Prior art keywords
data
trunk
probability
file
block
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
Application number
CN201510492377.8A
Other languages
English (en)
Other versions
CN105117442B (zh
Inventor
宋杰
伍晋博
张一川
张莉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Northeastern University China
Original Assignee
Northeastern University China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Northeastern University China filed Critical Northeastern University China
Priority to CN201510492377.8A priority Critical patent/CN105117442B/zh
Publication of CN105117442A publication Critical patent/CN105117442A/zh
Application granted granted Critical
Publication of CN105117442B publication Critical patent/CN105117442B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种基于概率的大数据查询方法,属于数据库技术领域。该方法包括:根据数据模型,对具有多个属性的数据集进行划分的步骤;将划分后的数据集按照数据概率放置模型进行装载的步骤;对数据集进行概率查询的步骤。该方法为一种近似完整性的查询方法,通过适当地损失查询完整性来提高数据的查询性能;通过一种基于概率的数据放置模型,实现了数据的概率放置以及数据在各个存储文件存在概率的求解;通过一种启发式数据查询方法,使得数据库***可以通过查全概率来查询数据;且通过概率计算保证了概率查询的查询误差。

Description

一种基于概率的大数据查询方法
技术领域
本发明属于数据库技术领域,特别涉及一种基于概率的大数据查询方法。
背景技术
人、机、物三元世界的高度融合引发了数据规模的***式增长和数据模式的高度复杂化,世界已进入网络化的大数据时代。大数据时代的到来给传统的数据管理***带来了极大的挑战,NoSQL(NotonlySQL)数据库凭借其高扩展、高可用以及灵活的数据模型等特点得到了学术界和工业界的广泛青睐。数据查询技术作为数据库***的核心技术之一,伴随着云计算技术以及NoSQL数据库技术的发展,基于NoSQL的数据查询技术备受关注,而且在业界也得到了广泛的研究。
众所周知,当前主流的NoSQL数据库主要基于MapReduce编程模型、分布式文件***等技术来对大数据进行管理,其中,分布式文件***主要用于大数据的存储,MapReduce编程模型用于大数据的处理。NoSQL数据库的数据查询性能与数据存储与索引设计、基于MapReduce的查询处理、查询优化等问题密切相关,目前大数据查询技术的研究主要集中在这些关键技术的性能优化上,而且关于这些问题目前已经得到了广泛深入的研究,拥有许多优秀的解决方案,论文“云数据管理***中查询技术研究综述”从索引管理、查询处理、查询优化以及在线聚集等多个方面对云数据管理***中查询技术的研究工作进行了总结分析。然而,就数据的查询方式而言,无论是传统的关系型数据库还是新型的NoSQL数据库,其所采用的查询方式都是完整查询,即对于给定的查询条件,无论如何定义查询条件的匹配算法(精确或近似),无论如何对查询结果集排序,查询都将确定地返回所有匹配数据。例如,某一用户信息表包括身份证号、姓名、年龄等字段,对于任一给定的查询条件,如查询年龄大于30岁的所有用户或者所有姓名是张三的用户,查询都将确定地返回所有满足查询条件的数据。
在大数据环境下,由于数据规模较大以及数据结构的复杂性,完整查询需要消耗较大的时间代价。许多实际应用表明,人们并不需要确定完整的查询结果,也不需要对查询结果精确排序(如Top-k查询),仅仅需要满足一定完整性要求的部分查询结果,或者可以适当地损失查询完整性来满足性能要求。例如,人们在机场查询满足某条件的酒店时,他们并不需要返回的结果集是全部数据,相反他们对响应时间的要求会更高。而当前数据库***采用的完整查询方式已无法满足这种查询需求,亟需定义一种近似完整性查询技术来弥补这一空缺。近似完整性查询不同于传统的完整查询,其近似性主要体现在数据查全的可能性上,即查询到满足查询条件的所有数据的概率,在此将其称之为查全概率,查全概率描述了查询结果集是完整数据集的可能性。
发明内容
针对现有技术存在的不足,本发明的目的是提供一种基于概率的大数据查询方法,以满足在大数据环境中近似完整性查询的需求。
本发明的技术方案是这样:
一种基于概率的大数据查询方法,包括以下步骤:
步骤1:对具有多个属性的数据集进行划分;
步骤1.1:选择数据集的一个或者多个属性作为数据集的查询属性,给定每个查询属性值域的等宽划分粒度;
步骤1.2:填补数据集中查询属性取值空缺的数据,通常情况下,将这些查询属性的取值设为该查询属性在其值域的最小值、最大值或者空值;
步骤1.3:判断查询属性取值的数据类型,查询属性取值的数据类型共有数值和文本两种类型;如果是数值类型,则执行步骤1.4,如果是文本类型,则执行步骤1.5;
步骤1.4:按照查询属性取值的大小进行排序,根据查询属性的划分粒度对查询属性进行等宽划分,继续执行步骤1.6;
步骤1.5:按照查询属性取值首字母的字典序进行排序,根据查询属性的划分粒度对查询属性进行等宽划分,继续执行步骤1.6;
步骤1.6:将各个维的维信息存储在分布式文件***中,维信息主要包括维名称、维值取值类型以及维的划分粒度。
步骤2:对经过划分后的数据集进行装载;
步骤2.1:对数据集中所有划分得到的数据分块进行分组;
将每个查询属性作为多维数据空间的一个维,那么该数据集中的数据分布在一个多维数据空间中,对查询属性的值域进行等宽划分其实也就是对每个维的取值空间进行等宽划分,基于每个维的划分,分布在多维数据空间中的数据被划分为多个小的数据块,在此将划分得到的每个小的数据块称作一个block;
基于多维空间线性化方法对多维数据空间中的block进行编号,按照编号的大小顺序将block划分一个或者多个block小组;
步骤2.2:创建数据集在分布式文件***中的存储目录;
步骤2.2.1:判断数据库***存储数据的根目录root目录是否存在,如果不存在,则执行步骤2.2.2;如果存在,则执行步骤2.2.3;
步骤2.2.2:创建数据库***数据存储数据根目录root目录,执行步骤2.2.3;
步骤2.2.3:在根目录root目录下创建该存储该数据的特定目录table目录,该目录以该数据集所指定的名称命名;
步骤2.2.4:为每个block小组创建m个bucket子目录来存放数据,这m个子目录的命名规则为“block小组编号.子目录bucket编号”;
步骤2.3:将每个block小组中各个block中的数据分别以m个不同的放置概率放置到table目录中的m个不同的bucket子目录中,数据存储在bucket子目录的trunk文件中;
对于block中的任意一条数据,数据可能存放在m个bucket子目录中的不同的trunk文件中,在此称这m个trunk文件为一个trunk小组;对于放置到该trunk小组的任意一个block的数据,需要记录block数据在该trunk小组的放置次数;
如果trunk小组中任意一个trunk文件达到了指定的大小,则执行步骤2.4;否则,继续执行步骤2.3;
如果完成数据集中的所有数据的放置,则执行步骤2.5;
步骤2.4:在m个bucket子目录中分别创建新的trunk文件存储数据,执行步骤2.3;
步骤2.5:将每个block小组中各个block在所有trunk小组的放置次数存放在分布式文件***中。
步骤3:对数据集进行概率查询;
步骤3.1:用户通过输入查询语句设置查询条件;
查询语句包括select、from、where和recall四个子句,其中,select子句表示需要查询的属性以及聚集操作的类型,包括avg,min,max,sum和count;from子句表示需要查询的目标数据集;where子句表示查询属性及其取值;recall子句表示查全概率,pr表示查全概率的大小,查全概率是一个取值大于0小于等于1的数,表示查询到满足查询条件的所有数据的可能性的大小;
步骤3.2:判断步骤3.1设置好的查询条件是否满足如下约束条件:
约束1:目标数据集必须存在于数据库***中;
约束2:查询属性是指定的查询属性,且是查询属性集合的一个非空子集;
约束3:聚集方式是指定的聚集方法中的一个;
约束4:查全概率必须是一个大于0小于等于1的小数;
若满足约束1~约束3,未指定或不满足约束4,则执行步骤3.3;若同时满足上述4个约束,则执行步骤3.4;若不满足约束1~约束3的任意一个约束条件,则查询失败,结束;
步骤3.3:将查全概率设为1,执行步骤3.4;
步骤3.4:根据查询语句所指定的数据表以及查询属性确定查询数据所属的block以及block小组;
步骤3.5:读取block小组中该block的数据在各个trunk小组的放置次数;
步骤3.6:求解查询数据在各个trunk文件的存在概率;
存在概率的求解公式为其中pi表示该block数据在第i个bucket子目录的放置概率,wk表示该block数据在第k个trunk小组的放置次数;
步骤3.7:根据数据在各个trunk文件的存在概率,启发式地选择trunk文件,使所选的trunk文件满足以下两个约束条件;
约束1:查询数据在所选择的trunk文件上的查全概率大于或者等于查全概率pr
约束2:对于相同的查询条件,每次查询所选择的trunk文件不完全相同,使得每次的查询结果具有一定的随机性,保证满足查询条件的所有数据都有可能被查询到;
trunk文件的启发式选择方法具体步骤描述如下:
步骤3.7.1:对可能存储查询数据的所有trunk文件的存在概率进行归一化处理;
步骤3.7.2:选择不存在概率1-pe小于或者等于查全概率pr的trunk文件,将其添加到MapSelect<trunk,pe>集合中,将其它的trunk文件添加到MapNonSelect<trunk,pe>集合中;
步骤3.7.3:在MapNonSelect<trunk,pe>集合中随机选择两个trunk文件,设查询数据在这两个trunk文件的不存在概率分别为p1,p2,求解p1与p2的乘积p;
步骤3.7.4:如果其不存在概率之积p大于查全概率pr,则执行步骤3.7.5;
如果其不存在概率之积p小于查全概率pr,则执行步骤3.7.6;
如果其不存在概率之积p等于查全概率pr,则执行步骤3.7.7;
如果MapNonSelect<trunk,pe>集合没有可以选择的trunk文件,则执行步骤3.8;
步骤3.7.5:从MapNonSelect<trunk,pe>集合中删除这两个元素,继续在MapNonSelect<trunk,pe>集合中随机选择一个不存在概率大于p的trunk文件,令p=p·(1-pe),pe为所选择的trunk文件的存在概率,执行步骤3.7.4;
步骤3.7.6:将在MapNonSelect<trunk,pe>集合中的不存在概率1-pe≤{min|p1,p2}的所有trunk文件添加到MapSelect<trunk,pe>集合中,并将这些trunk文件在MapNonSelect<trunk,pe>集合中删除;在MapNonSelect<trunk,pe>集合中剩余的trunk文件中继续去选择比{min|p1,p2}更大的trunk文件,令执行步骤3.7.4;
步骤3.7.7:如果在MapNonSelect<trunk,pe>集合中有未被选择的trunk文件全部添加到MapSelect<trunk,pe>集合中,执行步骤3.8;
步骤3.8:通过公式计算查询误差,其中trunkik表示第i个bucket子目录中第k个trunk小组的中的trunk文件,pi表示block数据在第i个bucket子目录的放置概率,wk表示block数据在第k个trunk小组的放置次数;s表示所有trunk小组的总数;
步骤3.9:基于MapReduce编程模型并行处理MapSelect<trunk,pe>集合中的trunk文件,查询满足查询属性的数据。
本发明的有益效果:本发明一种基于概率的大数据查询方法,具有如下优点:
1、本发明提出了一种近似完整性查询方法,通过适当地损失查询完整性来提高数据的查询性能。
2、本发明设计了一种基于概率的数据放置模型,实现了数据的概率放置以及数据在各个存储文件存在概率的求解。
3、本发明设计了一种启发式数据查询方法,使得数据库***可以通过查全概率来查询数据。
4、本发明通过概率计算保证了概率查询的查询误差。
附图说明
图1为本发明具体实施方式的基于概率的大数据查询方法流程图;
图2为本发明具体实施方式的数据模型图,其中:
图2(a)图为本发明具体实施方式的数据模型的逻辑模型结构示意图;
图2(b)图为图2(a)图的部分放大展示图;
图2(c)图为本发明具体实施方式的数据模型的物理模型结构示意图;
图3为本发明具体实施方式的数据物理存储格式示意图;
图4为本发明具体实施方式的概率放置模型图;
图5为本发明具体实施方式某时刻数据在文件***中的概率分布图;
图6为本发明具体实施方式的启发式查询算法流程图;
图7为本发明具体实施方式的启发式选择策略图,其中:
图7(a)图为本发明具体实施方式的启发式trunk选择过程中,查询数据在所选trunk文件中不存在概率之积大于查全概率的情形图;
图7(b)图为发明具体实施方式在启发式trunk选择过程中,查询数据在所选trunk文件中不存在概率之积小于查全概率的情形图;
图8为本发明具体实施方式的在不同查全概率下实际查询时间与最佳查询时间性能的实验结果图;
图9为本发明具体实施方式的在查全概率分别为1和0.5时,与其它数据库的性能对比实验结果图。
具体实施方式
本发明提出了一种基于概率的大数据查询方法,在查询过程中通过指定查全概率,损失查询数据的完整性来提高数据的查询性能,是一种新型的数据查询技术,而且具有较好的通用性、适用性和可扩展性。下面结合附图和具体实施方式对本发明作进一步详细说明。本实施方式的一种基于概率的大数据查询方法,如图1所示,包括:根据数据模型,对具有多个属性的数据集进行划分的步骤;将数据集按照数据概率放置模型进行装载的步骤;对数据集进行概率查询的步骤。
数据模型定义了数据在数据库***中的组织方式,主要包括数据的逻辑模型和物理模型两个部分。图2为本实施方式的数据模型图,图2(a)表示数据的逻辑模型,图2(c)表示数据的物理模型。在具体实施过程中,可以根据逻辑模型对具有多个属性的数据集进行划分;根据物理模型对数据集在分布式文件***的组织方式以及存储格式进行定义。
逻辑模型表示了数据在逻辑上的组织方式,对于存储到数据库***的任意一个数据集,数据集本身往往包含多个属性,根据先验知识或专家知识(先验知识是对数据集进行操作的历史经验的积累,专家知识是领域专家对数据集的理解),选择数据集的一个或者多个属性作为数据集的查询属性(查询属性是用户在查询数据时所依赖的属性),例如,对于学生信息表,包括学生姓名、学号、性别、年龄以及学分等多个字段,可以根据以往的历史经验或者由学校学生信息管理人员,选择学生信息表的学号、姓名这些经常被查询到的属性作为数据集的查询属性。然后,给定每个查询属性值域的等宽划分粒度,并分别将每个查询属性作为多维数据空间的一个维,那么数据集中的数据依据这几个查询属性分布在一个多维数据空间中。
对于数据空间的每个维,其取值的数据类型可能是数值数据或者文本数据,根据给定的划分粒度分别对每个维的值域进行等宽划分,划分方法具体描述为:如果维的取值是数值数据,按照数值数据的大小进行排序,然后根据给定的划分粒度对数据的值域进行等宽划分;如果维的取值是文本数据,那么按照文本数据首字母的字典序进行排序,然后根据给定的划分粒度对数据的值域进行等宽划分。
基于每个维的划分,多维数据空间被划分为多个小的称之为block的数据块,由于在大数据环境下,数据结构的多样性以及复杂性,数据集中的数据可能某些查询属性上不存在取值,将数据在该维上的取值设为数据在该维取值的最小值、最大值或者空值,基于此数据集中的每条数据都被划分到一个确定的block中。图2(a)表示一个具有三个查询属性的数据集,其数据分布在一个三维数据空间中,通过对d1、d2、d3三个维进行等宽划分,数据集中的每条数据都分布在一个确定的block中。
物理模型描述了数据在物理上的组织方式,即在分布式文件***中的组织与存储方式。本发明在物理上将一个数据集中的数据组织为table、bucket和trunk。table表示一个数据集的存储目录,与逻辑模型中的一个多维数据空间相对应;bucket是table目录的子目录,是block中的数据进行概率放置的单元,一个block中的数据可能概率放置到多个bucket目录中;trunk是数据集数据存储的基本单元,包含在bucket目录中,且每个trunk文件可能存储多个block中的数据。在大数据环境下,由于数据的多样性,每条数据的结构不完全相同,因此数据在物理上以SequenceFile中定义的格式进行数据的存储。SequenceFile是记录了一系列键值对的序列化的二进制文件,对于数据库***中的每条数据,优先将查询属性的键值对放在最前,然后依次存储其它键值对,其存储格式如图3所示。
通过上述描述可知,数据模型将数据在逻辑上组织在一个多维的数据空间中,并将数据划分到一个确定的block中;在物理上将每个block中的数据概率放置到相应table目录的多个bucket子目录中。block中的数据在各个bucket子目录的放置方式是至关重要的,其放置方式由数据的概率放置模型决定,即数据集中的数据是按照概率放置模型装载到数据库***中。图4展示了本实施方式中数据的概率放置模型。
如图4所示,假设数据集中一个block中的数据概率放置到bucket1~mm个bucket子目录中,其在各个bucket上的放置概率分别为p1~m,那么block中的数据在一次放置过程中可能放置到m个bucket目录的m个trunk文件中,将这m个trunk文件称作一个trunk分组,图3共有G1~ss个trunk分组。在数据的放置过程中,当一个trunk分组中的任意一个文件达到了指定的文件大小,记录block中的数据在该trunk分组的放置次数,并创建一个新的trunk分组来存放数据,图5描述了在某时刻在分布式文件***中数据的概率分布情况。
在图4所描述的概率放置模型中,每个bucket目录可能概率放置多个block的数据。在此,需要对多维数据空间的block基于线性化的方法进行编号,按照编号的大小顺序将数据空间中的block划分为一个或者多个block分组,每个block小组的block个数相同。将一个block分组中不同block的数据概率放置在相同的m个bucket目录中。
每个block小组中block的数据概率放置在m个bucket目录中,数据在m个bucket目录放置概率是基于阿姆达尔定律来求解的。阿姆达尔定律描述了计算任务被并行化处理后,计算任务的加速比与并行处理节点的个数之间的关系,其函数表达式如公式(1)所示,其中,n是计算节点的个数,p是计算任务可以被并行化处理的部分,并且p由在ns个计算节点上被度量的加速比speedupm决定,表达式如公式(2)所示。基于阿姆达尔定律,即可求得数据在m个bucket目录的放置概率,其求解公式如公式(3)所示。
f ( n ) = 1 ( 1 - p ) + p / n - - - ( 1 )
p = 1 / speedup m - 1 1 / n s - 1 - - - ( 2 )
p i = &Integral; i - 1 i f ( n ) d n &Integral; 0 m f ( n ) d n , 1 &le; i &le; m - - - ( 3 )
由于一个block小组中各个block的数据概率放置在相同的m个bucket目录中,在数据的概率放置或者查询过程中,为了防止出现热点读与热点写的问题,概率放置模型要求一个block小组中各个block中的数据在同一个bucket中的放置概率不完全相同,因此对于block小组中的每个block,只需要保证其在m个bucket目录的放置概率的顺序不完全相同即可。最简单的方式是,如果block的编号为奇数,则按照放置概率的升序顺序将该block中的数据概率放置在m个bucket目录中;如果block的编号为偶数,则按照放置概率的降序顺序将该block中的数据概率放置在m个bucket目录中。
本发明的核心是设计了一种基于概率的大数据查询方法,在查询过程中可以通过给定查全概率来降低数据查全的可能性,提高数据的查询性能。在数据的查询过程中,用户需要输入查询语句来设置查询条件,查询语句的格式如表1所示,select子句表示需要查询的属性以及聚集操作的类型,包括avg,min,max,sum和count;from子句表示需要查询的目标数据集;where子句表示查询属性及其取值;recall子句表示查全概率,查全概率是一个取值大于0小于等于1的数,表示查询到满足查询条件的所有数据的可能性的大小。
表1查询语句
显而易见,当通过表1所示的查询语句给定查询条件时,通过指定的目标数据集名称以及查询属性及其取值,通过数据模型很容易判断数据所在block以及该block所在的block小组,从而确定查询数据所在bucket目录。基于概率的大数据查询的关键在于在这些bucket目录中选择满足查全概率的trunk文件来进行数据查询。
为了选择满足查全概率的trunk文件,首先需要求解查询数据在各个trunk文件存在概率的大小,其求解公式如公式(4)所示,其中pe表示数据的存在概率,pi表示该block数据在第i个bucket子目录的放置概率,wk表示该block数据在第k个trunk小组的放置次数。在求解到查询数据在所有trunk文件的存在概率之后,需要对存在概率进行归一化处理,归一化公式如公式(5)所示,n表示trunk文件的总数,pej表示第j个trunk文件的存在概率。
p e = 1 - ( 1 - p i ) w k , 1 &le; i &le; m - - - ( 4 )
p e j &prime; = p e j &Sigma; j = 1 n p e j - - - ( 5 )
在求解得到查询数据在各个trunk文件的存在概率之后,需要根据查询数据在各个trunk文件的存在概率启发式地选择trunk文件,并使选择得到trunk文件满足以下两个约束条件:①查询数据在所选择的trunk文件的查全概率大于或者等于查全概率pr,保证查询结果满足查询条件;②对于相同的查询条件,每次查询所选择到的trunk文件不完全相同,使得每次的查询结果具有一定的随机性,保证满足查询条件的所有数据都有可能被查询到。
图6为本实施方式的启发式查询算法流程图,启发式查询算法的伪码描述如表2所示。首先,通过归一化公式对查询数据在各个trunk文件的存在概率进行归一化处理,其次,选择不存在概率1-pe小于或者等于查全概率pr的trunk文件,将其添加到MapSelect<trunk,pe>集合中,将其它未被选择的trunk文件添加到MapNonSelect<trunk,pe>集合中,最后,利用heuristicTrunkSelect()函数在MapNonSelect<trunk,pe>集合中选择trunk文件添加到MapSelect<trunk,pe>集合中,使得MapSelect<trunk,pe>中的trunk文件满足查全概率的要求。
表2启发式查询算法
heuristicTrunkSelect()函数利用启发式选择策略进行trunk文件的选择,在选择的过程中,可能出现图7(a)图中、图7(b)图中两种情形,首先,在MapNonSelect<trunk,pe>集合中随机选择两个trunk文件,如果其不存在概率之积p1·p2>pr,则将这两个trunk文件从MapNonSelect<trunk,pe>集合中移除,继续去选择1-pe>p1·p2的trunk文件,如图7(a)图中所示,如果其不存在概率之积p1·p2<pr,则移除1-pe≤{min|p1,p2}的所有trunk文件,并将这些trunk文件添加到MapSelect<trunk,pe>集合中,继续去选择比1-pe更大的trunk文件,如图7(b)图中所示。直至没有可选择的trunk文件或不存在概率之积等于pr时停止选择,将MapNonSelect<trunk,pe>中集合未被选择的trunk文件添加到MapSelect<trunk,pe>中,那么MapSelect<trunk,pe>中的trunk文件即为满足查全概率pr的所有trunk文件。
启发式trunk文件选择方法的原理被描述如下:由于block中的数据被存储在这n个trunk文件中,所以查询数据在这n个trunk文件的查全概率为1,即pe(pe1,pe2,pe3,…pen)=1。查询数据在这n个trunk文件的不存在概率分别为pe1',pe2',pe3',…pen',那么block中的数据存放在trunk1~n-1上的概率为pen',即查全概率为pen',查询数据存放在trunk1~n-2上的概率为pen'·pen-1',即查全概率为pen'·pen-1',以此类推,数据存放在trunk1~n-m上的概率为即查全概率为由此可知,block中的数据在任意多个trunk文件的查全概率为该block数据在剩余的trunk文件中数据的不存在概率之积。
通过计算查询数据在每个trunk文件的查全率可以对查询误差来进行估计,在MapSelect<trunk,pe>集合中所选择的trunk文件中查询数据所造成的查询误差可由公式(6)来求解,其中trunkik表示第i个bucket子目录中第k个trunk小组的中的trunk文件,pi表示block数据在第i个bucket子目录的放置概率,wk表示block数据在第k个trunk小组的放置次数;s表示所有trunk小组的总数。
q e = 1 - &Sigma; trunk i k &Element; M a p S e l e c t p i &CenterDot; w k &Sigma; t = 1 s w t - - - ( 6 )
最后,将选择的trunk文件通过MapReduce编程模型进行并行化处理,选择满足查询条件的数据。如果需要在某些属性上进行聚集操作,则利用MapReduce编程模型在特定的属性上进行聚集操作,返回查询结果。
基于Hadoop-2.6.0对本发明的具体实施方式进行实现,在Hadoop异构集群环境为37台内存为8G的PC机的实验环境下对本发明进行实验验证,其中,12台机器使用Inteli3处理器,12台机器使用Inteli5处理器,13台机器使用Inteli7处理器,一台使用i7处理器的机器作为NameNode,其余36台机器作为DataNode。
在实验中共采用S1,S2两个数据集进行实验,S1,S2为随机生成的数据集,数据量分别40G和50G。分别选取S1,S2数据集的3个属性作为数据的查询属性,基于这些查询属性,数据集数据分布在一个3维数据空间中,将该数据空间等宽划分为64个block,每8个block为一个block小组,并将每个block的数据概率放置在44个bucket目录中,其放置概率分别为0.001到0.0043,以及0.054。
本实施方式分别通过图8和图9两组实验对本发明进行验证。图8采用S2作为实验数据集,展示了在不同查全概率下数据的查询性能,并与理想的最快查询时间进行了比较。最快查询时间为去除了trunk文件的随机选择因素的影响,按照不存在概率由大到小的顺序选择trunk文件,那么被舍弃的trunk文件个数将达到最大,数据查询性能也达到最佳。通过图8所展示的实验结果可知,无论是否去trunk文件的随机化选择,数据查询性能与查全概率呈线性递减的关系。
图9分别采用S1和S2作为实验数据集,设定数据的查全概率分别为1和0.5(图中分别以“概率查询-1”和“概率查询-0.5”表示),与HBase、Cassandra、Hive和MongoDB数据库的数据查询性能进行比较。通过图9展示的实验结果可知,当查全概率为1时,数据查询性能接近于除HBase外的其它数据库;当查全概率为0.5时,数据查询性能基本上优于所有进行实验的数据库。

Claims (6)

1.一种基于概率的大数据查询方法,其特征在于:包括以下步骤:
步骤1:对具有多个属性的数据集进行划分;
步骤2:对经过划分后的数据集进行装载;
步骤3:对数据集进行概率查询。
2.根据权利要求1所述的基于概率的大数据查询方法,其特征在于:所述的步骤1包括如下步骤:
步骤1.1:选择数据集的一个或者多个属性作为数据集的查询属性,给定每个查询属性值域的等宽划分粒度;
步骤1.2:填补数据集中查询属性取值空缺的数据,通常情况下,将这些查询属性的取值设为该查询属性在其值域的最小值、最大值或者空值;
步骤1.3:判断查询属性取值的数据类型,查询属性取值的数据类型共有数值和文本两种类型,如果是数值类型,则执行步骤1.4,如果是文本类型,则执行步骤1.5;
步骤1.4:按照查询属性取值的大小进行排序,根据查询属性的划分粒度对查询属性进行等宽划分,继续执行步骤1.6;
步骤1.5:按照查询属性取值首字母的字典序进行排序,根据查询属性的划分粒度对查询属性进行等宽划分,继续执行步骤1.6;
步骤1.6:将各个维的维信息存储在分布式文件***中,维信息主要包括维名称、维值取值类型以及维的划分粒度。
3.根据权利要求1所述的基于概率的大数据查询方法,其特征在于:所述的步骤2包括如下步骤:
步骤2.1:对数据集中所有划分得到的数据分块进行分组;
将每个查询属性作为多维数据空间的一个维,那么该数据集中的数据分布在一个多维数据空间中,对查询属性的值域进行等宽划分其实也就是对每个维的取值空间进行等宽划分,基于每个维的划分,分布在多维数据空间中的数据被划分为多个小的数据块,在此将划分得到的每个小的数据块称作一个block;
基于多维空间线性化方法对多维数据空间中的block进行编号,按照编号的大小顺序将block划分一个或者多个block小组;
步骤2.2:创建数据集在分布式文件***中的存储目录;
步骤2.2.1:判断数据库***存储数据的根目录root目录是否存在,如果不存在,则执行步骤2.2.2;如果存在,则执行步骤2.2.3;
步骤2.2.2:创建数据库***数据存储数据根目录root目录,执行步骤2.2.3;
步骤2.2.3:在根目录root目录下创建该存储该数据的特定目录table目录,该目录以该数据集所指定的名称命名;
步骤2.2.4:为每个block小组创建m个bucket子目录来存放数据,这m个子目录的命名规则为“block小组编号.子目录bucket编号”;
步骤2.3:将每个block小组中各个block中的数据分别以m个不同的放置概率放置到table目录中的m个不同的bucket子目录中,数据存储在bucket子目录的trunk文件中;
对于block中的任意一条数据,数据可能存放在m个bucket子目录中的不同的trunk文件中,在此称这m个trunk文件为一个trunk小组;对于放置到该trunk小组的任意一个block的数据,需要记录block数据在该trunk小组的放置次数;
如果trunk小组中任意一个trunk文件达到了指定的大小,则执行步骤2.4;否则,继续执行步骤2.3;
如果完成数据集中的所有数据的放置,则执行步骤2.5;
步骤2.4:在m个bucket子目录中分别创建新的trunk文件存储数据,执行步骤2.3;
步骤2.5:将每个block小组中各个block在所有trunk小组的放置次数存放在分布式文件***中。
4.根据权利要求1所述的基于概率的大数据查询方法,其特征在于:所述的步骤3包括如下步骤:
步骤3.1:用户通过输入查询语句设置查询条件;
步骤3.2:判断步骤3.1设置好的查询条件是否满足如下约束条件:
约束1:目标数据集必须存在于数据库***中;
约束2:查询属性是指定的查询属性,且是查询属性集合的一个非空子集;
约束3:聚集方式是指定的聚集方法中的一个;
约束4:查全概率必须是一个大于0小于等于1的小数;
若满足约束1~约束3,未指定或不满足约束4,则执行步骤3.3;若同时满足上述4个约束,则执行步骤3.4;若不满足约束1~约束3的任意一个约束条件,则查询失败,结束;
步骤3.3:将查全概率设为1,执行步骤3.4;
步骤3.4:根据查询语句所指定的数据表以及查询属性确定查询数据所属的block以及block小组;
步骤3.5:读取block小组中该block的数据在各个trunk小组的放置次数;
步骤3.6:求解查询数据在各个trunk文件的存在概率;
步骤3.7:根据数据在各个trunk文件的存在概率,启发式地选择trunk文件,使所选的trunk文件满足以下两个约束条件;
约束1:查询数据在所选择的trunk文件上的查全概率大于或者等于查全概率pr
约束2:对于相同的查询条件,每次查询所选择的trunk文件不完全相同,使得每次的查询结果具有一定的随机性,保证满足查询条件的所有数据都有可能被查询到;
trunk文件的启发式选择方法具体步骤描述如下:
步骤3.7.1:对可能存储查询数据的所有trunk文件的存在概率进行归一化处理;
步骤3.7.2:选择不存在概率1-pe小于或者等于查全概率pr的trunk文件,将其添加到MapSelect<trunk,pe>集合中,将其它的trunk文件添加到MapNonSelect<trunk,pe>集合中;
步骤3.7.3:在MapNonSelect<trunk,pe>集合中随机选择两个trunk文件,设查询数据在这两个trunk文件的不存在概率分别为p1,p2,求解p1与p2的乘积p;
步骤3.7.4:如果其不存在概率之积p大于查全概率pr,则执行步骤3.7.5;
如果其不存在概率之积p小于查全概率pr,则执行步骤3.7.6;
如果其不存在概率之积p等于查全概率pr,则执行步骤3.7.7;
如果MapNonSelect<trunk,pe>集合没有可以选择的trunk文件,则执行步骤3.8;
步骤3.7.5:从MapNonSelect<trunk,pe>集合中删除这两个元素,继续在MapNonSelect<trunk,pe>集合中随机选择一个不存在概率大于p的trunk文件,令p=p·(1-pe),pe为所选择的trunk文件的存在概率,执行步骤3.7.4;
步骤3.7.6:将在MapNonSelect<trunk,pe>集合中的不存在概率1-pe≤{min|p1,p2}的所有trunk文件添加到MapSelect<trunk,pe>集合中,并将这些trunk文件在MapNonSelect<trunk,pe>集合中删除;在MapNonSelect<trunk,pe>集合中剩余的trunk文件中继续去选择比{min|p1,p2}更大的trunk文件,令执行步骤3.7.4;
步骤3.7.7:如果在MapNonSelect<trunk,pe>集合中有未被选择的trunk文件全部添加到MapSelect<trunk,pe>集合中,执行步骤3.8;
步骤3.8:通过公式计算查询误差,其中trunkik表示第i个bucket子目录中第k个trunk小组的中的trunk文件,pi表示block数据在第i个bucket子目录的放置概率,wk表示block数据在第k个trunk小组的放置次数;s表示所有trunk小组的总数;
步骤3.9:基于MapReduce编程模型并行处理MapSelect<trunk,pe>集合中的trunk文件,查询满足查询属性的数据。
5.根据权利要求4所述的基于概率的大数据查询方法,其特征在于:所述步骤3.1中所述的查询语句,包括select、from、where和recall四个子句,其中,select子句表示需要查询的属性以及聚集操作的类型,包括avg,min,max,sum和count;from子句表示需要查询的目标数据集;where子句表示查询属性及其取值;recall子句表示查全概率,pr表示查全概率的大小,查全概率是一个取值大于0小于等于1的数,表示查询到满足查询条件的所有数据的可能性的大小。
6.根据权利要求4所述的基于概率的大数据查询方法,其特征在于:所述步骤3.6中查询数据在各个trunk文件的存在概率的求解公式为1≤i≤m,其中pi表示该block数据在第i个bucket子目录的放置概率,wk表示该block数据在第k个trunk小组的放置次数。
CN201510492377.8A 2015-08-12 2015-08-12 一种基于概率的大数据查询方法 Active CN105117442B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510492377.8A CN105117442B (zh) 2015-08-12 2015-08-12 一种基于概率的大数据查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510492377.8A CN105117442B (zh) 2015-08-12 2015-08-12 一种基于概率的大数据查询方法

Publications (2)

Publication Number Publication Date
CN105117442A true CN105117442A (zh) 2015-12-02
CN105117442B CN105117442B (zh) 2018-05-04

Family

ID=54665432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510492377.8A Active CN105117442B (zh) 2015-08-12 2015-08-12 一种基于概率的大数据查询方法

Country Status (1)

Country Link
CN (1) CN105117442B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677840A (zh) * 2016-01-06 2016-06-15 东北大学 一种基于多维渐增数据模型的数据查询方法
CN106021488A (zh) * 2016-05-19 2016-10-12 乐视控股(北京)有限公司 键值数据库的管理方法和装置
CN106294665A (zh) * 2016-08-05 2017-01-04 浪潮软件股份有限公司 一种学籍数据存储的方法和装置
CN107480220A (zh) * 2017-08-01 2017-12-15 浙江大学 一种基于在线聚集的快速文本查询方法
CN107798019A (zh) * 2016-09-07 2018-03-13 阿里巴巴集团控股有限公司 一种用于提供加速服务节点的节点服务数据的方法与设备
CN110489449A (zh) * 2019-07-30 2019-11-22 北京百分点信息科技有限公司 一种图表推荐方法、装置和电子设备
CN111931200A (zh) * 2020-07-13 2020-11-13 车智互联(北京)科技有限公司 一种数据序列化方法、移动终端和可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073718A (zh) * 2011-01-10 2011-05-25 清华大学 一种对概率数据库查询结果予以解释与擦改的***及方法
CN103442331A (zh) * 2013-08-07 2013-12-11 华为技术有限公司 终端设备位置确定方法和终端设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073718A (zh) * 2011-01-10 2011-05-25 清华大学 一种对概率数据库查询结果予以解释与擦改的***及方法
CN103442331A (zh) * 2013-08-07 2013-12-11 华为技术有限公司 终端设备位置确定方法和终端设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王鹏鸣: ""一种深层网络不确定性概率模型研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677840A (zh) * 2016-01-06 2016-06-15 东北大学 一种基于多维渐增数据模型的数据查询方法
CN105677840B (zh) * 2016-01-06 2019-02-05 东北大学 一种基于多维渐增数据模型的数据查询方法
CN106021488A (zh) * 2016-05-19 2016-10-12 乐视控股(北京)有限公司 键值数据库的管理方法和装置
CN106294665A (zh) * 2016-08-05 2017-01-04 浪潮软件股份有限公司 一种学籍数据存储的方法和装置
CN107798019A (zh) * 2016-09-07 2018-03-13 阿里巴巴集团控股有限公司 一种用于提供加速服务节点的节点服务数据的方法与设备
CN107480220A (zh) * 2017-08-01 2017-12-15 浙江大学 一种基于在线聚集的快速文本查询方法
CN107480220B (zh) * 2017-08-01 2021-01-12 浙江大学 一种基于在线聚集的快速文本查询方法
CN110489449A (zh) * 2019-07-30 2019-11-22 北京百分点信息科技有限公司 一种图表推荐方法、装置和电子设备
CN111931200A (zh) * 2020-07-13 2020-11-13 车智互联(北京)科技有限公司 一种数据序列化方法、移动终端和可读存储介质
CN111931200B (zh) * 2020-07-13 2024-02-23 车智互联(北京)科技有限公司 一种数据序列化方法、移动终端和可读存储介质

Also Published As

Publication number Publication date
CN105117442B (zh) 2018-05-04

Similar Documents

Publication Publication Date Title
CN105117442B (zh) 一种基于概率的大数据查询方法
CN102722531B (zh) 一种云环境中基于分片位图索引的查询方法
US10318551B2 (en) Reporting and summarizing metrics in sparse relationships on an OLTP database
CN104021161B (zh) 一种聚簇存储方法及装置
CN105404634B (zh) 基于Key-Value数据块的数据管理方法及***
CN104090962B (zh) 面向海量分布式数据库的嵌套查询方法
CN111767303A (zh) 一种数据查询方法、装置、服务器及可读存储介质
CN110275920A (zh) 数据查询方法、装置、电子设备及计算机可读存储介质
CN109062936B (zh) 一种数据查询方法、计算机可读存储介质及终端设备
CN106326475A (zh) 一种高效的静态哈希表实现方法及***
CN102169491B (zh) 一种多数据集中重复记录动态检测方法
CN103902701A (zh) 一种数据存储***和存储方法
CN104391908B (zh) 一种图上基于局部敏感哈希的多关键字索引方法
CN102999637B (zh) 根据文件特征码为文件自动添加文件标签的方法及***
Goyal et al. Cross platform (RDBMS to NoSQL) database validation tool using bloom filter
JP2019520627A (ja) データベース中にグラフ情報を記憶するためのb木使用
CN108874873B (zh) 数据查询方法、装置、存储介质及处理器
CN104794237A (zh) 网页信息处理方法及装置
CN112540987A (zh) 一种基于数据集市的配用电大数据管理***
CN106055690A (zh) 一种基于属性匹配的快速检索与获取数据特征方法
Pedersen Managing complex multidimensional data
Wang et al. A resume recommendation model for online recruitment
Bicevska et al. NoSQL-based data warehouse solutions: sense, benefits and prerequisites
CN102968467A (zh) 一种多层Bloom Filter的优化方法及查询方法
CN102306187A (zh) 二维表hash排序方法

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