第六章时态数据库的特殊实现技术.doc
文本预览下载声明
时态数据库的分史存储技术 (国家自然科学基支持项目)
唐常杰 于中华,张天庆,徐代刚,杨 峰
四川大学计算机系
摘要:根据应用中时态数据使用频率特点。本文提出三史制存储技术,将对象历史分为远、中、近三期,分介质、变粒度存储,并设置两个过渡期,提出了时代转移算法和压缩采样算法。定量分析了三史制时空效益,用实例说明时态存储密度和时态查询速度提高了一到二个数量级。
关键词:时态数据库,分史存储,时态转移算法,压缩采样,时态存储密度。
在TDB中,保存了被处理对象的历史,历史只能追加,不能删除。但除了以考古为目的的TDB,大多数TDB应用都是厚今薄古的,即当前或不久前的这些数据用得多,而历史久远的数据用得少。根据这一观察,本文提出三史制存储技术,将对象历史分为远、中、近三期,分介质、变粒度存储,本文将介绍作者在这一方案中???存储结构、算法、和显著的时空效益。HBase是国家自然科学基金支持的项目,项目背景和技术细节请参见文献[2]—[4]。
1 HBase的分史策略
HBase中,个历史按事务时间排序。 HBase把被管理对象按事务时间在[0,Now]上的历史划分为三个时期和两个过渡区间,如图1。这一存储制式又称为三史制,而传统的不划分时间的制式又称为单史制。HBase的三史制与文献[5]中分割 “TDB = 快照 + 历史” 有本质不同。HBase模型的当前期不是快照,而是[CB, Now]区间的历史,这保证了能高速分析当前期中对象间的联系,而HBase特有的过渡区及稍后要介绍的时期转换算法保证了多时期多介质的平滑、高效的过渡。
三史制的要点如下∶
(1)分段 近代开始时刻记为MidAgeBegin (缩写为MB),近代终止时刻记为MidAgeEnd
(缩写为ME),区间[MB,ME]称为近代(或中期)。 现代开始时刻记为CurrAgeBegin (缩写为CB)。区间[CB,Now]称为现代(或当前期)。 古代终止时刻记为OldAgeEnd (缩写为OE),区间[0,OE]称为古代(或远期)。
现代
古代
OE CB Now
近代
0
MB ME
图1 三个时期、两个过渡区间
(2) 过渡期.系统要求MBOE和 CBME。区间 [MB,OE].记为Old_Mid,称为 古—近过渡期。 Old_Mid_Len = OE-MB 称为古—近过渡期长度。区间Mid_Curr = [CB,ME]称为近-现过渡期,而Mid_Curr_Len = ME-CB称为近—现过渡期长度。
(3)存储介质. 现代史全部保存在内存,采用主存数据库技术(main memory DB)。不需Cache 。 在内存中为近代史、古代史设置高速缓存 M_Cache, O_Cache,二者大小比例和使用 频度相同,默认为1∶10。 近代史保存在硬盘中。古代史保存在可不停机更换盘片的活动硬盘上或CDROM中。(9) 过渡期中的历史数据在两个相关历史时代中各存一份。由专门的时代转移模块自动而平滑地转移过渡期中超期的历史数据。
(4) 用户可根据情况设置古代史、近代史、现代史的使用频率。系统默认值为
古代;近代∶现代 = 1∶10∶100。
通过设置 MidAgeBegin (或MB), OldAgeEnd (或OE) 及古—近过渡期长度Old_Mid_Len 这三个变量中的任意两个,可以划分古代和近代及其过渡期。
例1 下列语句采用了相对时刻∶
Set MidAgeBegin = Ago (5 years)
Set Old_Mid_Len =60 Days
系统以执行时间作为基准,其5年之前的时刻作为近代的开始时刻MB,而[MB, MB+60 Days]这60天时间作为古代—近代过渡期。注意,Ago是一个时态宏。对于宏Ago(5 years),TDBMS将根据系统内部日历,根据闰年法则准确地计算出执行时的5年前准确时刻。因此用Ago(…)宏来划分的时代间隔是动态的。
例2 下列语句采用绝对时刻
Set MidAgeBegin = “12-31-1996”
Set OldAgeEnd = “01-13-1997”
将[0, “01-13-1997”]设置为古代,且将 [“12-31-1996”, “01-13-1997”]这一个月设置为古代—近代过渡期。
通过设置CurrAgeBegin (或CB),MidA
显示全部