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