广东工业大学学报  2014, Vol. 31Issue (3): 102-108, 129.  DOI: 10.3969/j.issn.1007-7162.2014.03.018.
0

引用本文 

陈磊, 封朝永. HBase下时态信息索引策略研究[J]. 广东工业大学学报, 2014, 31(3): 102-108, 129. DOI: 10.3969/j.issn.1007-7162.2014.03.018.
Chen Lei, Feng Chao-yong. Research on the Strategy for Temporal Information Index Based on HBase[J]. Journal of Guangdong University of Technology, 2014, 31(3): 102-108, 129. DOI: 10.3969/j.issn.1007-7162.2014.03.018.

基金项目:

广东省自然科学基金资助项目(S2011040004281,S2013010014457)

作者简介:

陈磊(1989-), 男, 硕士研究生, 主要研究方向为时态信息处理和粒度计算。

文章历史

收稿日期:2014-04-09
HBase下时态信息索引策略研究
陈磊, 封朝永     
广东工业大学 计算机学院, 广州 510006
摘要: 针对海量非结构化时态信息存储与快速检索的需求,提出使用Hadoop平台下的分布式、非结构化数据库HBase对海量时态数据进行存储,构造以时态集合为时态存储单元的时态数据存储模型;设计了多级分布式哈希索引表算法(tDHT),实现对时态列族的时态属性值的高效、快速的检索.通过将时态属性值向二维空间映射,实现时态数据向空间对象的转化,采用对空间数据的处理方法对时态数据区域进行划分,生成多级时态数据子区域,利用分布式哈希表思想设计HBase存储的多级索引表目录.实验结果表明,该索引策略具有较高的性能,可以在一定程度上加快对HBase中时态信息的检索速度.
关键词: 时态信息    HBase    数据存储    时态索引    分布式哈希表    
Research on the Strategy for Temporal Information Index Based on HBase
Chen Lei, Feng Chao-yong     
School of Computers, Guangdong University of Technology, Guangzhou 510006, China
Abstract: To meet the needs for storing and quick retrieving mass unstructured temporal information, it proposed using the distributed and unstructured database HBase, which was on the Hadoop platform, to store temporal data. Then, it built the temporal data storage model with the store unit as the temporal set, and designed a Multi level indexed Distributed Hash Table (tDHT) algorithm to realize the retrieval for the temporal attribute value of temporal column quickly and efficiently. By mapping from temporal attribute value to the two-dimensional space, the conversion from temporal data to space object was achieved, the temporal data area was divided by using the processing method for spatial data, Multi level temporal data sub-areas were generated, and the Multi level indexed DHT directory was constructed, which was stored by HBase, using the methodology of DHT. The experiment results show that the index strategy can achieve a good performance, and it can be used to accelerate temporal data retrieval in the HBase table to a certain extent.
Key words: temporal information    HBase    data storage    temporal index    distributed hash table (DHT)    

随着互联网技术的不断发展演变,信息呈现爆炸性增长,如何在信息的海洋中提取、挖掘有效信息成为各个领域和行业分析、处理以及应用的关键.几乎所有信息都显式或隐式地具备时态特征,如当前热点事件“马航客机失联”,就是按照时间节点呈现事件发展最新动态的.在海量信息库中按照时间属性快速、高效地检索到用户所需要的时态信息成为研究的焦点,目前的研究主要集中于在时态数据库理论基础上对时态属性构建索引,对此学者们从不同角度进行了大量的研究.文献[1]提出3层结构的针对有效时间的树形索引模型VTIDM;文献[2]扩展了时态数据库中对于不确定时态信息的表示方法并创建索引机制;文献[3]给出了一种以B+树为基本存储结构基于结构摘要的时态索引方法CMap-tree;文献[4]提出一种基于签名的索引方法来优化存储和检索海量的相对时态模式;文献[5-6]针对时态XML数据,构建不同的时态索引模型以支持时态查询;对于快速活动产生大量、随机的时间戳数据流,文献[7]提出时态索引结构(tMAGIC),实现对快速活动各个动作层面的检测;文献[8]则针对时态文本数据,构建了动态的、可扩展的时态索引(DyST)模型.

这些研究侧重于传统的结构化时态数据的索引方式,数据规模较小且高度结构化.然而随着互联网中信息量的急速增长,数据的复杂性不断增加,数据之间的逻辑结构更加多样化,传统数据库对于海量时态数据的存储和处理的难度不断加大.如何在规模庞大且动态增长的海量时态信息中进行高效的时态查询、检索成为时态信息处理的关键问题.利用云计算框架Hadoop下的分布式存储系统HBase能有效地解决海量非结构化数据的存储难题[9].HBase是一个面向列、版本化的、可伸缩的、以键值对形式存储数据的分布式存储系统,能提供大数据集的实时读取和随机访问,具有高效的存储和简单的查询功能.文献[10]使用HBase存储跨区域的无线传感网络数据和全局数据存储管理目录,实现一个近实时的存储系统;文献[11]设计了基于HBase矢量空间的存储模型,并在Map/Reduce编程模式下构建空间网格索引;文献[12]给出了一种海量空间文本数据在HBase中的存储模式,并提出了基于关键字的空间文本索引SK-HBase;在文献[13]中,FaceBook将面向用户的应用程序建立在Hadoop平台上,使用HBase存储系统运行过程中每天产生的数10亿用户消息记录,并分析了Hadoop在海量数据的存储和处理方面的巨大优势;文献[14]设计了基于HBase的分布式存储模型应用于电子病历文本的存储;文献[15]针对在HBase中大批量数据写入和数据访问延迟的等数据处理业务,提出了内存的预写日志、分布式缓存系统等相应的解决方案;文献[16]分别设计了架构在HBase和MySQL之上的可伸缩的资源描述框架(RDF),并从设计、架构、存储和查询等方面对两者进行性能评估,得出了HBase在非结构化大规模数据集上的数据管理优势.

HBase在存储海量非结构化时态数据具有巨大的性能优势.然而,当前HBase系统没有提供索引功能,当用户基于非主键査询数据时,只能通过Scan全表扫描或者使用Map/Reduce架构全表扫描获取满足条件的数据;对于复杂的条件查询,使用Hadoop环境下的Hive建立数据仓库,将HBase数据存储表的数据结构映射为对应的关系模型,再使用Map/Reduce编程实现对数据的处理.但这些方式效率太低,无法满足实时査询的需要.为了实现海量时态信息的实时查询,需要构建在HBase下针对时态属性值的索引结构.

本文采用电子医疗数据作为测试数据,而时态元素构成该类型数据最为重要的部分.在此基础上提出使用Hadoop下非结构化数据库HBase进行海量时态信息存储,根据时态语义的完备性、具体的医疗背景以及节省存储空间的需求,以时态集合作为时态信息存储和处理的基本对象,并利用Hadoop强大的计算能力构建算法对HBase中存储的时态信息集进行索引构建,以满足对时态信息高效的查询、检索需求.本文第1节给出了海量时态信息在HBase中的时态数据存储模型,第2节将HBase中时态信息存储的基本单元时态集合进行空间转化,映射为时态数据区域,第3节根据HBase的分布式特性建立分布式哈希表多级索引结构.

1 时态信息在HBase的存储模型

Hadoop是一个开源的云计算框架,向用户提供系统底层细节透明的分布式基础架构.Hadoop生态系统中的Commom、Avro、Chukwa、Hive、HBase等子项目提供了互补性服务或是核心层上提供了更高级的服务.HBase适于存储松散型的非结构化数据,即是介于映射(key/value)和关系型数据之间的数据.其表索引由行关键字、列关键字和时间戳组成,表中的数据可以有多个版本(通过时间戳区分),并且能动态地实现数据列族的添加.不同于RDBMS具有丰富的数据类型和存储方式,HBase只有简单的字符串类型,所有的用户所需的类型都额外自行处理获得,同时由于HBase的非事务性,是通过牺牲一些高级的查询能力以换取更好的在分布式环境下的性能,故不支持多表连接进行复杂的查询操作,也没有时态语义的约束.HBase向下提供了存储,以分布式文件系统(HDFS)为底层框架,向上提供了运算,能使用MapReduce计算模式来并行处理大规模数据.

对于电子医疗时态信息数据集 $R = \sum\limits_{k = 1}^r {{R_k}\left({k = 1, 2, \ldots, r} \right)} $ 的存储,在HBase中进行数据模型的构建:将时态数据所描述的对象(患者)的根本特征作为主键,即KeyRow,可表示为病人的姓名或编号ID;列族是对事务属性的扩展性描述,能更详尽地描述事物所抽象出来的各种属性,HBase的灵活性可以实现对列族的自由添加.为了对临床医疗数据的时态特性进行描述,本文引入时态列族用于记录患者在就诊过程不同时段内病况信息的时态属性值,即Column:Temporal,它可以用时间点、时态区间或者时态集合作为时态信息的描述对象,本文基于具体医疗应用背景使用时态集合作为时态信息存储的基本单元;对于病人信息的非时态属性值的描述,可以通过添加列族Column:No-temporal实现,它可以用来描述患者的病症、年龄、既往病史、用药情况、主治医生等其他信息,但这些信息对于不同的患者来说并不具备高度的一致性,若无相关联的信息,则该列族中所对应的数据项可设置为空.为保证电子医疗数据的完整性,也可继续动态添加类似的列族.构建以时态集合为医疗时态数据存储单元的时态数据模型(T-HBase)如表 1所示.

表 1 时态数据在HBase中的存储模型(T-HBase) Table 1 A storage model for medical temporal data(T-HBase)

医疗信息中时态属性值的表示方式由具体医疗背景决定.由于患者在诊疗活动中的时态信息往往由若干在时序上间断的信息构成,比如病人发烧时间,可能仅仅某些天若干时段高烧,又如某些流行性疾病如伤寒、癫痫病等通常表现出反复发作的特性.因此为了兼顾信息的语义分析处理,采用时态集合作为医疗信息的时态属性值的描述手段.时态集合是时间点和时态区间在时序上的叠加,相对于时间点和时态区间的单一表达性,它可根据对象在时态论域的多样性特征变化更为灵活和精确体现出其时态性,适于诊疗信息对象整个病理周期的全程记录,清晰明了,若将时态元素拆分通常不能满足正确性、完备性需要,往往会失去时态语义.另一方面通过合并时间点和时态区间这两种时态数据类型,在数据库中进行海量信息存储能够最大限度地压缩存储空间并减少数据冗余.

2 时态集合的聚类策略

由于Hadoop的分布式特征,数据是按分块的形式存储在集群的各个节点上.HBase将逻辑上很大的一张数据表在存储实现时以一定的方式进行“切割”形成不同的区域,即时态信息存储表根据行键被分成了多个HRegions,每个HRegions又包含一个较大的数据集.若以列族作为查询条件,只能根据行键从第一行数据开始查找,扫描全表直到查询到相关的数据为止,这样显然是十分低效的.

对于海量数据的快速检索方法,目前的研究成果包括B树及其变形树的检索、哈希检索、分布式哈希表(Distribute Hash Table,简称DHT)检索等.因此结合Hadoop体系特性,本文采用分布式哈希表作为海量时态信息的索引方式.由于T-HBase模型以时态集合作为存储对象,其数据结构较为复杂,直接在该类型的数据上构建索引难度较大.考虑到现阶段较为成熟的空间索引模式更适于海量非结构化数据的组织,本文首先需将时态数据向空间数据转化,对以时态集合为存储对象的时态信息进行空间映射,构造二维空间上的时态数据区域集;在此基础上再作数据集划分、数据的聚类操作,得到若干层次的时态数据域,并以这些时态数据域作为各级索引表的主键.

2.1 时态集合的空间映射

在HBase中,对于任意一条电子医疗时态记录Rf,其时态变量的统一以时态集合 ${D_{{R_f}}} = \sum\limits_{j = 1}^L {{I_j}^{{R_f}}\left({j = 1, 2, \ldots, L} \right)} $ 的形式存储,在HBase中实际的存储形式为 $\{ {I_1}^{{R_f}}, {I_2}^{{R_f}}, \ldots, {I_j}^{{R_f}}, \ldots, {I_L}^{{R_f}}\} $ ,其中 ${I_1}^{{R_f}}$ ${I_2}^{{R_f}}$ ${I_j}^{{R_f}}$ 均为时间点或是时态区间,因为时间点可以形式化地表示为起点和终点重叠的时态跨度为零的时态区间,所以 ${I_j}^{{R_f}}\left({j = 1, 2, \ldots, L} \right)$ 统一以时态区间[Ps, Pe]描述.PsPe均代表时间点,其中Ps代表时间的起点,Pe记录时间的终点,且PsPe.由于作为时态信息描述对象的时态集合是由若干时间点和时态区间构成,结构较为复杂,对于任意DRt,其维度(包含的时间点和时态区间的数目)并不恒定,若对时态属性进行索引构建,需简化其表示方法.借鉴空间索引的实现方式,将其映射到二维空间,再以空间数据划分方式实现聚类.

定义1  (时态数据区域)  将时态属性值映射到二维空间所得到的二维空间区域.

任意的时态数据RfIjRf是时态集合DRt任意一个时间点或时态区间,以(0, 0)为原点,时态集合中各时态区间起始点所代表的时间轴为X轴、各时态区间终止点所代表的时间轴为Y轴,建立二维空间上的XY垂直坐标系.

(1) 对于时态区间IjRf=[PRf, sPRf, e],PRf, s所在为横坐标(X坐标),PRf, e所在为纵坐标(Y坐标).那么,时态区间IjRf在空间坐标系中则可以表示为时态数据区域S(IjRf),该区域是由XPRf, sYPRf, e以及YX共同围成的区域构成.事实上,由于时态信息具有一定的粒度性,该区域包含若干独立的、离散的时间点,如图 1所示.

图 1 时态区间在XY坐标系上的映射 Figure 1 Temporal interval mapping in XY coordinates

(2) 由于时间点可表示为起始时间与终止时间一致的时态区间,因此,时间点在二维空间上可表示为时态数据点.

由此,时态集合 ${D_{{R_f}}} = \sum\limits_{j = 1}^L {{I_j}^{{R_f}}\left({j = 1, 2, \ldots, L} \right)} $ 的任意时间点或时态区间都可以映射为二维平面上若干时态数据区域.形式化表示为: $T({D_{{R_f}}}) \to S{({D_{{R_f}}})_{XY}}$ ,即将时态集合DRf映射为二维空间数据区域S(DRf)XY.

同理,T-HBase中任意的时态记录,其时态属性值均可以映射为XY坐标系上若干个独立的时态数据区域.通过这种关联映射,时态属性值被转化为时态数据区域的集合,设为S(t).即有 $T(\sum\limits_{k = 1}^r {{D_{{R_k}}}}) \to S{(\sum\limits_{k = 1}^r {{D_{{R_k}}}})_{XY}}$ .

2.2 时态数据区域的划分策略

在设计HBase海量时态数据索引结构时,数据或数据空间的划分是至关重要的环节,好的数据划分策略会提高数据库I/O吞吐性能及系统数据吞吐能力,从而提高整个系统的检索性能.在将T-HBase中所有的时态集合映射为时态数据区域集合S(t)后,如何对已空间化的时态数据区域进行数据组织?针对时态数据区域S(t)结构复杂、数据量大以及数据之间存在着空间拓扑关系等特点,本文在K-均值聚类算法的基础上,提出在分布式系统下的时态数据区域S(t)的数据划分方案如下:

(1) 获取时态数据区域S(t)对象信息,如所包含的对象总数M、对象S(DRf)XY(f=1, 2, 3, …, M)的RowKey、对象S(DRf)XY的MBR(最小外接矩形)中心坐标Mi(x, y);

(2) 任意选取K个对象,获取MBR{S(DRf)XY(f=2, 3, …, M)}的中心坐标,分别设为C1, C2, …, CK;

(3) 分别计算其他M-K个对象S(DRf)XY的MBR中心坐标MiC1, C2, …, CK的欧氏距离d $d({M_i}, {C_j}) = \sqrt {{{({M_i}x - {C_j}x)}^2} + {{({M_i}y - {C_j}y)}^2}} $ ,若d(Mi, Cj)≤∀d(Mi, Cg)(gj),则Mi∈(Cj-r, Cj-r);

(4) 得到分别以C1, C2, …, CK为聚类的中心的K个样本时态区域集合W1, W2, …, WK, 计算质心 ${C_j}\prime = \frac{1}{n}\sum\limits_{x \in Wi} {x\left({j = 1, 2, \ldots, K} \right)} $ ,作为下一次的聚类中心;

(5) 重复步骤(3)和(4),直到各集合质心不再发生变化或者平方差最小,得到以该不变质心为聚类中心的一级时态子区域ri(1) (i = 1, 2, …, K);

(6) 令 $S\left(t \right) = \sum\limits_{i = 1}^K {r_i^{\left(1 \right)}} $ $K = \frac{K}{2}$ ,转入步骤(1);

(7) 当 $K \ge \frac{K}{{{2^{N - 1}}}}$ ,重复以上步骤,获取各级时态子区域ri(n) (i = 1, 2, …, N).

通过上述算法,实现对时态数据区域对象的划分,时态集合的聚类策略如图 2所示.

图 2 时态集合的聚类策略 Figure 2 Clustering strategyof temporal sets

将时态数据区域进行聚类操作后,构建独立的、互不重叠的一级时态数据子区域ri(1),这些时态子区域均由矩形空间构成.将该层次的时态子区域ri(1)作为初始的时态数据区域,继续迭代操作,逐层递归最终得到n级矩形区域ri(n)(i = 1, 2, …, k; n = 1, 2, …, N).

将时态数据区域进行对象划分后,使用HBase多级索引表分别存储各级时态子区域信息,由于二维空间矩形可以简化地使用其对角线上的两个顶点来表示,因此各级时态子区域在ri(n)在HBase的实际存储形式可表示为ri(n)=R{(xni, yni)LB, (xni, yni)RU},其中,(xni, yni)LB、(xni, yni)RU分别表示ri(n)所代表矩形的左下、右上角顶点.

3 基于HBase多级哈希索引表的设计

在分布式集群存储系统中,数据的组织优化是提高存储系统性能的有效方法之一.而索引是存储系统重要的部分,它直接决定数据的存取效率,影响数据分析与应用效率.在HBase分布式存储结构中,对时态信息构建索引可以极大地提高对HBase中数据的访问速度,有效地避免对非主键的全表扫描所产生的巨大系统开销.同时由于HBase“一次写入多次读取”的特点,并不需要频繁进行表结构的更新和数据的添加、删除操作,因此为海量时态信息存储表建立索引是十分必要的.本文在分布式哈希表(DHT)的基础上,提出T-HBase模型下的多级索引表DHT算法(tDHT).设 $\overrightarrow D $ 为T-HBase所存储的时态集合值域,DRk代表时态记录Rk的时态属性值, $T(\sum\limits_{k = 1}^r {{D_{{R_k}}}})$ $S{(\sum\limits_{k = 1}^r {{D_{{R_k}}}})_{XY}}$ $\overrightarrow D $ 分别在时态论域与映射空间下的表示方式,ri(n)表示时态数据在经过映射、聚类等操作后生成的第n级、编号为i的时态数据子区域,RowKey(R)、Column:Temporal index(T)是第n级哈希索引表T-Index-(n)的主键和时态索引列族取值,RT代表属性值变量.则算法构建如下:

(1) Get $\overrightarrow D = \sum\limits_{k = 1}^r {{D_{{R_k}}}} $ ; /*全表扫描,获取全体时态集合对象 $\overrightarrow D $ */;

(2) Set $S{(\sum\limits_{k = 1}^r {{D_{{R_k}}}})_{XY}} \leftarrow T(\sum\limits_{k = 1}^r {{D_{{R_k}}}})$ ; /*将时态集合映射到二维空间*/;

(3) $\sum\limits_{n = 1}^N {\sum\limits_{i = 1}^k {r_i^{\left(n \right)}} } \leftarrow S{(\sum\limits_{k = 1}^r {{D_{{R_k}}}})_{XY}}$ ; /*时态数据区域划分,构建各级时态数据子区域集*/;

(4) T-Index-1← {(RowKey( $\sum\limits_{i = 1}^k {r_i^{\left(1 \right)}} $ ),(Column:Temporal index (RowKey (T-HBase))}; /*以一级时态子区域 $\sum {r_i^{\left(1 \right)}} $ 为KeyRow,T-HBase的KeyRow为列族,构建一级哈希索引表T-Index-1 */;

(5) T-Index-(n)← { (RowKey( $\sum\limits_{j = 1}^v {r_j^{\left(n \right)}} $ ),(Column:Temporal index (RowKey (T-Index-(n-1))),(n=2, 3, …, N)}; /*以n级时态子区域 $\sum\limits_{j = 1}^v {r_j^{\left(n \right)}} $ 为KeyRow,T-Index-(n-1)的KeyRow为列族,构建n级HBase索引表T-Index-(n)*/;

(6) when n < N,return Step5;/*当n=N时,完成多级索引目录表的构建*/.

对于多级哈希索引表构建,本文提出的tDHT算法将T-HBase时态列族Column:Temporal的时态属性值进行聚类,并以此作为行键,即KeyRow,并以T-HBase的KeyRow作为列族重新构造数据表.对于T-HBase时态信息的检索,索引结构可实现根据列值快速地定位相关数据所在的行,由此构成T-HBase的一级索引,再以一级索引表为原表,按照上述方式构建多级索引表.这样,各级HBase索引表除了以上一级的时态数据子区域作为KeyRow之外,仅需要再构建时态索引列族Column:T-Index作为新的时态索引列族即可.

如此,索引表结构以及所包含的信息比原表要精简得多,访问索引表所消耗的时间也较少.

3.1 一级索引表结构的设计

根据T-HBase模型以及HBase存储结构的特点,首先构建HBase的一级时态索引结构T-Index-1.以时态数据区域聚类生成的一级时态子区域ri(1) (i=1, 2, …, K)为KeyRow,即T-Index-1的主键,同时建立时态索引列族Column:T-index,以T-HBase的主键KeyRow(患者编号)作为该列族的(Key,Value)取值.则构建的HBase一级索引表目录如表 2所示.

表 2 HBase一级索引表结构:T-Index-1 Table 2 One-indexed DHT stored by HBase:T-Index-1

定义2  (时态检索域)  将用户的时态检索请求(通常是时态区间或时态集合)按照上文所述的方式映射为时态数据域,称为时态检索域.

索引表与原表通过原表的KeyRow(患者编号)建立映射关系.用户进行时态检索时,将时态检索域分别与一级索引表的所有RowKey(一级时态子区域)进行运算:

(1) 若两者存在交集,则读取列族T-Index-1的值,获取此值后以该值作为HBase时态信息存储表(T-HBase)的KeyRow,读取相应的时态信息;

(2) 若不存在交集,则不再读取该RowKey对应的列族T-Index-1的值,时态检索域与索引表的下一行RowKey值进行比较.

3.2 多级索引表结构的设计

采用多级哈希表索引可以进一步提升检索性能.根据本文所提出的(tDHT)算法,设计的二级哈希索引表目录T-Index-2以二级时态子区域 $r_i^{\left(2 \right)}\left({i = 1, 2, \ldots, \frac{K}{2}} \right)$ 为主键,时态列族Column:T-index以一级哈希索引表结构T-Index-1的主键 $r_i^{\left(1 \right)}\left({i = 1, 2, \ldots, K} \right)$ 为键值,构建二级哈希索引表目录.如此,以上一级索引表T-Index-(n-1)(n=2, 3, …, N)的RowKey所代表的n-1级时态子区域 $\sum\limits_{i = 1}^{\frac{K}{{{2^{n - 2}}}}} {r_i^{\left({n - 1} \right)}} $ 作为时态列族Column:T-Index的值,同时以n级时态子区域 $\sum\limits_{i = 1}^{\frac{K}{{{2^{n - 1}}}}} {r_i^{\left(n \right)}} $ 作为n级哈希索引表T-Index-n的主键,逐层拓展,当n=N时,完成N级索引表的构造.

当用户提交涉及时态信息的查询请求时,首先进入第N级的哈希索引表中快速检索,根据时态检索域与N级索引表KeyRow主键ri(n)的空间重叠性,若存在重叠区域,则扫描时态索引列族Column:T-Index,继续判断两者是否存在交集,然后根据(Key, Value)中Key所对应的Value值进入N-1级哈希索引表,由此通过上一级索引表的时态索引列族与下一级索引表主键建立哈希映射关系,以时态检索域与各级时态数据子区域ri(n)进行各层索引表的关联条件判断,以此类推直到获取用户需数据的地址信息并定位到数据为止.

这种方式将各级时态子区域的映射关系所对应的信息存储到多级索引表.算法的时间复杂度为 $O({\rm{log}}(K + \frac{K}{2} + \ldots + \frac{K}{{{2^{N - 1}}}}))$ ,根据时态数据区域的划分策略, $K, \frac{K}{2}, \ldots, \frac{K}{{{2^{N - 1}}}}$ 分别代表了各级索引表的数据量,且构成以1/2为公比的N项等比数列,KN均是恒定的数值,其取值由海量时态数据的特征和用户对索引结构的性能需求确定.这显然要比从数据量为千万级以上时态信息数据表中通过全表扫描的方式定位所需数据的RowKey具有更好的性能.

4 性能测试

搭建测试平台进行多级分布式哈希表索引结构的性能验证.本文采用HBase-0.94.1和Hadoop-0.21.0进行实验,将其部署在5个物理计算机节点上,搭建Hadoop集群,其中1个节点作为Master节点,其余4个作为Slave节点.每台PC机的系统参数配置为:CPU(Inter(R)Core(TM) i3 M350 @2.27 GHz)、RAM(4.00 GB)和硬盘(500 GB).为了获取更好的稳定性,实验在Linux系统(ubuntu-11.04-desktop-i386)下进行,使用openssh实现系统内节点无密码互访.

本文采用的是以时态集合方式进行重构的电子医疗时态数据,将其写入到HBase中作为测试数据,并进一步对设计的不同N值的多级索引表tDHT算法与HBase按主键扫描方法进行查询时间的性能比较.实验中用来进行查找时间对比的基础时态数据量分别为10万、1 000万、2 000万和4 000万,由于HBase只能根据RowKey进行查询,不支持对非主键(如列族)条件查询.在获取所要查询的时态数据主键或是按照某些列族的属性取值一致性的前提下,抽取、过滤所得时态列族的时态属性值,通过并、交等操作完成Map/Reduce并行编程模式下的时态集合关系代数演算,实现对时态数据的查找.

在不构建索引以及构建不同级数的分布式哈希索引表索引(N=3,5)的时态数据检索时间如表 3所示.为了更直观地展示实验结果,绘制时态数据查找的时间对比折线如图 3所示.

表 3 时态数据时间查找比较1) Table 3 Time of searching for temporal date searching
图 3 时态检索的性能对比折线图 Figure 3 Performance comparisons of temporal retrieval

表 3图 3的时态检索的时间对比分析可知,相对于全表的条件查找,使用HBase进行存储的分布式哈希表索引能较大程度地改善系统对于时态信息查询的性能,特别是当时态数据量达到千万级以上时,构建索引在查找时具有非常巨大性能优势,能极大地缩短检索所需时间;而索引级数N的取值不同,也在一定程度上影响时态检索的性能,当数据量不大时,索引级数越高,各级索引表的数据量则较小,多表映射所造成的时间损耗抵消了部分由于更精细的数据集划分带来的优势,N值的大小对索引性能的提升不够明显,但当存储的时态数据量加大,各级索引表长度急剧增长时,索引结构tDHT(N=5)相对于tDHT(N=3)在进行时态信息搜索时所需的查询时间几乎呈几何递减趋势,当数据量达到千万级以上时差异性更为突出.由此可得,构建分布式哈希索引能较大程度地改善时态检索性能,索引级数的不同也在一定程度上影响时态查询所需时间.

5 结语

时态属性,作为刻画事物的一个重要维度,对时态信息检索、时态知识推理、时态数据挖掘等研究领域均有深远的影响.针对海量的非结构化电子医疗时态数据,以时态集合作为基本的时态数据存储结构,本文提出使用Hadoop平台下分布式存储系统HBase进行数据存取,并在此基础上构建多级分布式哈希表以提升对海量时态信息检索的性能.鉴于以时态集合为基本存储元素的时态信息结构复杂,故借鉴对空间数据的处理方法将时态信息映射为空间数据区域,进行数据集的聚类以及划分等数据重构和组织操作,构建N级时态数据子区域.并设计基于HBase的多级分布式哈希表索引(tDHT)算法,以各级时态子区域作为对应索引表的主键,并通过时态索引列族建立上、下级索引表主键的映射关系,实现N级索引目录与原时态信息存储表的关联,完成多级分布式哈希表的构造.通过测试验证了所构建的索引结构在Hadoop平台下对于海量时态信息进行检索的有效性.需要指出的是,本文是在单一时间粒度的前提下开展的确定性时态信息的研究,针对的是公历系统,显然这是较为理想的时态数据处理模型.然而在现实生活中涉及的多粒度、模糊的、不确定的时态信息,不仅需要进行不同时态粒层的映射转换,还需额外地增加时态因子以描述时态信息的不确定性程度,这还需要另行研究.另外,针对不同的时态数据集,索引级数N的取值大小与性能提升程度的对应关系仍然需要进一步研究.

参考文献
[1]
叶小平, 汤庸, 陈铠原. 基于有效时间的时态索引技术[J]. 计算机研究与发展, 2006, 43(Sl): 517-520.
Ye X P, Tang Y, Chen K Y. Temporal data indexing technology based on valid time[J]. Journal of Computer Research and Development, 2006, 43(Sl): 517-520.
[2]
林嘉宜, 彭宏, 李浩明, 等. 基于不确定信息的时态索引技术[J]. 计算机工程, 2006, 32(6): 50-52.
Lin J Y, Peng H, Li H M, et al. A temporal index tree for uncertain temporal information[J]. Computer Engineering, 2006, 32(6): 50-52.
[3]
郭欢, 汤庸, 叶小平. 基于结构摘要的时态索引技术[J]. 计算机研究与发展, 2011, 48(11): 2177-2186.
Guo H, Tang Y, Ye X P. Temporal indexing technique based on structural summmary[J]. Journal of Computer Research and Development, 2011, 48(11): 2177-2186.
[4]
Winarko E, Roddick J F. A signature-based indexing method for efficient content-based retrieval of relative temporal patterns[J]. IEEE Transactions on Knowledge and Data Engineering, 2008, 20(6): 825-835. DOI: 10.1109/TKDE.2008.20.
[5]
Zhang F, Wang X J, Ma S L. Temporal XML indexing based on suffix tree[C]// 7th ACIS International Conference on Software Engineering Research, Management and Applications. Haikou: IEEE, 2009: 140-144.
[6]
Bin-Thalab R, El-Tazi N, EI-Sharkawi M E. TMIX: temporal model for indexing XML documents[C]// 2013 ACS International Conference on Computer Systems and Applications (AICCSA). Ifrane: IEEE, 2013: 1-8.
[7]
Albanese M, Pugliese A, Subrahmanian V S. Fast activity detection: indexing for temporal stochastic automaton-based activity models[J]. IEEE Transactions on Knowledge and Data Engineering, 2013, 25(2): 360-373. DOI: 10.1109/TKDE.2011.246.
[8]
Norvag K, Nybo A O. TMIX: DyST: Dynamic and scalable temporal text indexing [C]// 13th International Symposium on Temporal Representation and Reasoning. Budapest: IEEE, 2006: 204-211.
[9]
White T. Hadoop: the Definitive Guide[M]. 3rd ed. [S. l. ]: O'Reilly Media, Inc, 2009: 1-16.
[10]
陈庆奎, 周利珍. 基于HBase的大规模无线传感网络数据存储系统[J]. 计算机应用, 2012, 32(7): 1920-1923, 1977.
Chen Q K, Zhou L Z. HBase-based storage system for large-scale data in wireless sensor network[J]. Journal of Computer Applications, 2012, 32(7): 1920-1923, 1977.
[11]
范建永, 龙明, 熊伟. 基于HBase的矢量空间数据分布式存储研究[J]. 地理与地理信息科学, 2012, 28(5): 39-42.
Fan J Y, Long M, Xiong W. Research of vetor spatial data distributed storage based on HBase[J]. Geography and Geo-Informatiaon Science, 2012, 28(5): 39-42.
[12]
张榆, 马友忠, 孟小峰. 一种基于HBase的高效空间关键字查询策略[J]. 小型微型计算机系统, 2012, 33(10): 2141-2146.
Zhang Y, Ma Y Z, Meng X F. Efficient processing of spatial Keyword queries on HBase[J]. Journal of Chinese Computer System, 2012, 33(10): 2141-2146. DOI: 10.3969/j.issn.1000-1220.2012.10.005.
[13]
Borthakur D, Gary J, Sarma J S, et al. Apache hadoop goes realtime at facebook[C]// Proceedings of ACM SIGMOD International Conference on Management of Data. New York: ACM Press, 2011: 1071-1080.
[14]
Yang J, Tang D Y, Zhou Y. A distributed storage model for EHR Based on HBase: Information Management[C]// Innovation Management and Industrial Engineering(ICⅢ). Shenzhen: IEEE, 2011: 369-372.
[15]
Fong L L, Gao Y, Guerin X R, et al. Toward a scale-out data-management middleware for low-latency enterprise computing[J]. IBM Journal of Research and Development, 2013, 57(3/4): 1-14.
[16]
France C, Morin S, Chebotko A, et al. Efficient processing of semantic web queries in HBase and MySQL cluster[J]. IT Professional, 2013, 15(3): 36-43. DOI: 10.1109/MITP.2012.42.