一种面向刻面的学术大数据存储查询方法与流程

文档序号:18464564发布日期:2019-08-17 02:20阅读:252来源:国知局
一种面向刻面的学术大数据存储查询方法与流程

本发明涉及学术大数据技术领域,尤其涉及一种面向刻面的学术大数据存储查询方法。



背景技术:

随着互联网开放存取运动的发展,世界上越来越多的组织和个人为学术数据资源(指由世界各地的研究人员和学生每天撰写的研究论文,技术报告和学术文件等形式的学术文件)的发展做出了巨大的贡献,由此使得世界范围内的学术数据的数据量呈现指数形式的增长。学术数据大量,多样且对时效性要求较高,所以将其命名为学术大数据。

众所周知,查询可以通过减少搜索空间或提高命中率来进行优化,目前学术大数据查询方法分为两种,即基于特定属性的查询和搜索引擎式查询。基于特定属性的查询是基于关系型数据库的,但关系数据库高并发读写io是瓶颈,在海量数据下效率低,且关系数据库预定义分区良好,意味着不够灵活,而搜索引擎式查询是基于nosql的,虽然nosql比关系型数据库灵活,且在海量数据下性能较好,但nosql缺乏成熟的索引和分区机制。



技术实现要素:

本发明要解决的技术问题是针对上述现有技术的不足,提供一种面向刻面的学术大数据存储查询方法,根据学术大数据的特点设计分区和索引,用来减少搜索空间,从而优化查询。

为解决上述技术问题,本发明所采取的技术方案是:

一种面向刻面的学术大数据存储查询方法,该方法中将一个刻面视为一个维度,该刻面的不同值视为维度值,则每条数据记录均表示为一个刻面立方体,并按刻面划分为小单元,单元作为分区,映射到学术文献的地址;刻面立方体是一个逻辑地址模型,该模型为一个多维逻辑数据模型,实际中并不存在;所述刻面为从各种学术文献中都能提取的共同属性,即必须属性;只是某种或某些类型的学术文献所具有的属性,即可选属性,为平凡属性;提取出刻面数据中具有代表性的词汇作为特征词,以这些特征词构建的元素索引为刻面树;刻面树通过映射到地址映射表构成一系列逻辑地址,从而得到物理地址;

该方法的具体步骤如下:

步骤1:数据预处理及特征词提取;

对学术文献进行解析,将刻面属性数据的每个单词采用nlp技术得到准特征词,用以构建磁盘刻面树;根据基于正态分布的高频词阈值f计算方法计算高频词阈值,将准特征词中高于该阈值的单词作为特征词抽取出来,用以构建内存刻面树;特征词应尽可能地少,尽可能地完整,即每一个特征词都是一个完整的单词;所述特征词包含在查询条件和查询目标中;

步骤2:构建刻面树;

刻面树分为两个版本,即磁盘版本和内存版本;磁盘版本用于全盘数据索引,即对所有元素进行索;内存版本是根据刻面数据抽取出的最频繁的关键字建立的,用于索引查询刻面中最频繁最常用的数据,通过索引的多维度组合的逻辑地址映射到对应的物理地址;

所述内存版本的刻面树,是采用radix树作为索引,所述磁盘版本的刻面树,是在b+树上进行拓展的,两者皆是每个特征词都对应一个数字标识符;

步骤3:寻址操作;

寻址是定位包含搜索关键字的文件的过程,寻址操作采用地址映射表;将每个刻面视为一个维度,每个维度的值都包含所有刻面提取出来的特征词,但标识符不同;地址映射表是一个包括m+1列的表,最多包括nm行数据,其中m为维度数,即刻面数,n为特征词个数,前m列分别存储第一个维度的特征词标识符到第m个维度的特征词标识符,最后一列存储对应的物理目录;

步骤4:数据的装载及存储;将解析后的数据通过与刻面树的映射关系按照一定的格式存储在hdfs上,具体的步骤如下:

步骤4.1:对于每一条数据,将每条数据中的字符串与内存刻面树的索引做匹配,如果匹配,则根据内存刻面树的编码将该条数据的各刻面标识符的信息存入内存地址映射表,并将通过内存刻面树根据刻面立方体映射组成的逻辑地址同样写入内存地址映射表,如果与内存刻面树的索引不匹配,则根据磁盘刻面树的编码将该条数据的各刻面标识符的信息存入磁盘地址映射表,并将通过磁盘刻面树根据刻面立方体映射组成的逻辑地址同样写入磁盘地址映射表;

步骤4.2:在把信息保存到对应的地址映射表后,需要将数据存储到hdfs中,将刻面数据和平凡属性数据垂直分区,存储在两个不同的文件中,两个文件以行号连接;对于刻面数据,键是已知且确定的,只需要按照顺序存储值即可;对于平凡属性,存储键值对;

步骤5:查询;

包括两种查询方式,指定属性式查询和搜索引擎式查询;所述指定属性式查询中,查询条件由刻面、刻面对应的关键字和所选择的逻辑与或者逻辑或组成,对于查询条件中的每个值,查询刻面树通过刻面立方体的映射得到,再通过数据库表得到确切的一系列逻辑地址,转换为对应的物理地址,然后通过执行mapreduce任务,并行搜索块文件,通过行号将刻面数据和平凡属性数据连接成一条完整的数据内容,并将指定刻面包含指定关键字的完整数据内容的搜索结果返回给客户端;对于搜索引擎式查询,每个关键字通过索引刻面树去查找地址映射表,得到一系列的逻辑地址,继而得到物理地址,执行mapreduce任务并行搜索区块文件,检索其中任一刻面包含关键字的记录,并将这些记录返回给客户端。

采用上述技术方案所产生的有益效果在于:本发明提供的一种面向刻面的学术大数据存储查询方法,基于hadoophdfs的键值对形式对数据进行存储,且结合了关系型数据库的性能优势,nosql的灵活性和分布式文件系统的并行性,并提供指定属性和搜引擎式查询这两种查询方式,根据学术大数据的特点设计分区和索引,用来减少搜索空间,从而优化查询。

附图说明

图1为本发明实施例提供的基于正态分布的高频词阈值f计算方法的流程图;

图2为本发明实施例提供的内存刻面树的一个简单示例;

图3为本发明实施例提供的存储流程图;

图4为本发明实施例提供的查询流程图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

本发明中涉及的定义包括:

刻面:从学术文献中提取的属性的稀疏性是各种各样的,各种学术文献都有的一些共同的属性,即必须属性,如作者姓名和标题,定义必需属性为刻面。

平凡属性:从学术文献中提取的属性只是某种或某些类型的文献所具有的,即可选的属性,如项目的发布日期等,定义可选属性为平凡属性。

刻面立方体:该方法中将一个刻面视为一个维度,该刻面的不同值视为维度值,则每条数据记录都可以表示为一个刻面立方体,并按刻面划分为小单元,单元作为分区,映射到学术文献的地址。刻面立方体是一个逻辑地址模型,该模型为一个多维逻辑数据模型,实际中并不存在。

刻面树:若将刻面的所有关键字都作为索引关键字以此构建刻面树的索引,检索时效果不好,速度过慢,所以需要提取出刻面数据中具有代表性的词汇作为特征词。以这些特征词构建的元素索引就是刻面树。刻面树通过映射到地址映射表构成一系列逻辑地址,从而得到物理地址。

为了保证灵活性和提高查询性能,本发明将每个刻面作为一个维度结合在一起,并提供一个查询入口,学术文献根据刻面进行分区,从而在不丧失灵活性的情况下缩小查询范围。在此基础上,本发明提出了刻面树的概念,它是一个文本辅助索引,它有两个版本,即磁盘版本和内存版本,前者基于b+树实现,用于全盘数据索引,后者是根据刻面数据抽取出的最频繁的关键字建立的,基于radix树实现,用于索引查询刻面中最频繁最常用的数据。将查询内容利用刻面立方体的概念通过刻面树映射地址映射表根据逻辑地址得到具体的一系列物理地址。对于存储,将学术大数据以键值对的形式存储在hdfs上,并将刻面数据和平凡数据分开存储,之间通过id连接。为了节省存储空间,对于刻面属性,只存储值(因为任何一条数据的刻面属性的键是相同且确定的,只需要按照刻面在相应维度中的顺序存储值即可),对于平凡属性,存储键与值,从而组成一种根据学术大数据特点进行存储的高效存储模式。

本实施例以在学术界声誉很高的dblp数据集为例进行说明。dblp是计算机领域的英文文献数据库,收录了国际期刊和会议等公开发表的论文。它以xml的形式储存学术文献的相关元数据,如标题、作者、发表日期等。dblp数据集广泛用于学术研究,且很适用于大型数据的分析实验,所以本实施例以dblp数据集的存储和查询为例。

面向刻面的学术大数据存储查询方法的具体步骤如下:

步骤1:数据预处理及特征词提取。

学术文献是各种各样的,需要对学术文献进行解析,将刻面属性数据的每个单词采用nlp技术,如分词、词干提取和停止词去除等,得到准特征词,用以构建磁盘刻面树。

若将所有单词建立索引结构,检索时效果不好,速度过慢,所以需要提取出单词中具有代表性的词汇作为特征词,由特征词建立索引结构。对于特征词,一方面,它们应该尽可能地少,另一方面,它们每一个都尽可能地完整(每一个都是一个完整的单词)。特征词包含在查询条件和查询目标中。

根据基于正态分布的高频词阈值f计算方法计算高频词阈值,将准特征词中高于该阈值的单词作为特征词抽取出来,用以构建内存刻面树。

本实施例中,dblp的数据集格式如下:

<articlekey=″journals/cacm/szalay08″mdate=″2008-11-03″>

<author>alexanders.szalay</author>

<title>jimgray,astronomer.</title>

<pages>58-65</pages>

<year>2008</year>

<volume>51</volume>

<publisher>commun.acm</publisher>

<number>11</number>

<ee>http://doi.acm.org/10.1145/1400214.1400231</ee>

<url>db/journals/cacm/cacm51.html#szalay08</url>

</article>

对dblp数据集的采用javasax对其进行解析,将其中的author、title、publisher、year、type标签作为刻面属性,其余的标签为平凡属性,将刻面属性的数据利用python对其进行去除特殊字符、去停用词、去重、去无意义词和归一化处理得到,得到准特征词,使用基于正态分布的高频词阈值f计算方法从准特征词中抽取特征词。抽取特征词的步骤如下:(1)求出整个文件中单个单词的最大词频;如果存在一个单词词频大于当前最大词频,则替换;(2)算出文件单词词频的期望值;(3)算出文件单词词频的方差值;(4)算出文件单词词频的标准差值;(5)判断一个单词的词频是否达到临界值,是则存入特征词文件,不是则进行下一行数据比较。图1为基于正态分布的高频词阈值f计算方法的流程图。

步骤2:构建刻面树。

对于内存刻面树,是基于radix树扩展而来的,与二叉搜索树不同,内存刻面树中没有结点存储与该结点关联的元素,相反,它在树中的位置定义了与之关联的特征词。结点的所有子结点都具有与该结点关联的特征词的公共前缀,在树中,查找元素的时间并不取决于树结点的数量,而是取决于元素的长度,对于共享长前缀的特征词来说,以空间换时间,非常适合于做本发明中的内存索引树。

图2为内存刻面树的一个简单示例,以搜索热频词reliability,reliable,report,review,revise,robot为例作为特征词构建内存索引树,它们公共根结点为r,对于reliability,reliable,report,review,revise,除了已经成为根结点的r还有公共字符串e,所以e为r的一个子结点,对于reliability和reliable,除了r和e还有公共字符串liab,所以liab为r的一个子结点,接下来单独的ility和le分别为liab的两个子结点,每个特征词对应的一个唯一的递增的数字标识符,其他特征词在内存刻面树中的构建同理。

对于磁盘刻面树,与内存刻面树的作用相同,构建过程相似,但是从b+树扩展而来的,一个字符为一个结点,并且在构建前会利用语言学的规律基于python对元素进行分类,减少b+树叶子数量,并且为了保证磁盘i/o的频率相同,用元素首字母对元素进行聚类,为每个聚类构建了b+树,并且还将每个b+树的顺序设置为不同的顺序,并针对特定的聚类进行了优化。刻面树将哈希索引和b+树索引集成在一起。元素根据其初始值散列到不同的b+树。磁盘刻面树存储在分布式管理器中,它被划分为物理块,并根据哈希函数确定的数据位置存储在不同的服务器中。当查询涉及多个刻面时,如果这些元素的首字母不同,则这些元素将被并行索引。

步骤3:寻址操作。

寻址是定位包含搜索关键字的文件的过程。传统上,可以通过空间填充曲线将刻面立方体线性化为连续地址,然后将这些地址视为文件位置。然而,在考虑规模和灵活性的情况下,线性化并不是一个好的解决方案。因此,本发明的寻址放弃了线性化方法,采用地址映射表;将每个刻面视为维度,每个维度的值都包含所有刻面提取出来的特征词,但标识符不同;地址映射表是一个包括m+1列的表,最多包括nm行数据,其中m为维度数,即刻面数,n为特征词个数,前m列分别存储第一个维度的特征词标识符到第m个维度的特征词标识符,最后一列存储对应的物理目录。

本实施例中,采用sqlite内存和磁盘数据库分别作为内存和磁盘刻面树的地址映射表,区别在于内存地址映射表只有特征词的映射关系,而磁盘地址映射表是准特征词的映射关系。数据库的字段设计如下:author、title、publisher、year、type和logicaladd,分别存储dblp数据集中的各个刻面属性数据的标识符和通过刻面立方体映射组成的逻辑地址。

步骤4:数据的装载及存储。将解析后的数据通过与刻面树的映射关系按照一定的格式存储在hdfs上,整体的存储流程图如图3所示,具体的步骤如下。

步骤4.1:对每一条dblp数据,将其从xml中解析出来,并查询内存刻面树中是否有该条记录的关键词,如果有,就对该条记录建立索引,将步骤3所提到的字段的关键字对应的标识符存储进内存数据库,并将根据刻面立方体映射组合成的逻辑地址也存入内存数据库,如果内存刻面树中不存在该条记录的关键字,就使用磁盘刻面树建立索引,并将步骤3提到的字段的关键字对应的标识符存储到磁盘数据库中,将根据刻面立方体映射组合成的逻辑地址也存入磁盘数据库。

步骤4.2:在hadoophdfs中,arrayfile用于存储数组,sequencefile用于存储二进制键/值对。本实施例将arrayfile扩展为刻面数据文件存储的格式,sequencefile扩展为平凡数据文件存储的格式,并将它们组合在一起作为完整的数据文件。当数据文件用于存储刻面数据时,文件头中的keyclass是“fac”,文件名以地址映射表中的逻辑地址加上“fac”作为文件名。由于刻面数据中每个刻面的列顺序已知,因此只需要存储值就行,则不需要存储键的名称,其中每个字段存储的为对应的信息,每个字段之间使用‘|’符号进行分隔;当用于存储平凡数据时,文件头中的keyclass是“tri”,文件名以地址映射表中的逻辑地址加上“tri”作为文件名,键和值都存储(因为不确定哪些平凡属性会出现),每个字段之间同样用‘|’符号进行分隔。

步骤5:查询。整体的查询流程图如图4所示。

本发明提供了两种查询实现方式,一种是指定属性式查询,例如,客户端在author这一栏输入“tom”,title这一栏输入“scholary”,做查询时通过刻面树索引,author和title这两个刻面的逻辑地址组合是确定的,但不是最终完整的包含各个刻面的逻辑地址,再从地址映射表查询得到确切的一系列逻辑地址,转换为对应的物理地址,通过执行mapreduce任务,并行搜索块文件,通过行号将刻面数据和可选属性数据连接,并返回给客户端,返回给客户端的是author包含“tom”,title包含“scholary”的数据。对于搜索引擎式查询,例如,客户端输入“tom”、“scholary”,这两个关键字都会去刻面树中查询,根据地址映射表得到的是任一刻面包含“tom”和“scholary”的一系列逻辑地址,映射成一系列物理地址,通过执行mapreduce任务,并行搜索块文件,通过id将刻面数据和可选属性数据连接,并返回给客户端,返回给客户端的是任一刻面(可能是author,也可能是title,或者是type等其余刻面)包含“tom”和“scholary”的数据。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1