1 .一种基于两层ART树的数据存储方法,其特征在于:按Key值范围分区的方式拆分数
据,使用两级ART树索引结构,第一级ART索引用于Key值范围分区,第二级ART索引用于索引
范围分区内的数据;
所述范围分区内的数据集是真实的数据集或数据的指针形成的数据集;
包括以下步骤:
第一步,数据库存储引擎刚启动时,创建第一个范围分区,其存储Key值的范围为(MIN,
MAX),并且使用该范围分区最大值MAX作为Key值,将范围分区挂载到第一层ART树上,
第二步,将待插入的数据挂载到范围分区的第二层ART树上,启动待拆分队列处理线程
作为后台线程,异步优化索引结构;
数据插入流程如下:
S1 .1:查询第一层的ART树,找到大于等于待插入的Key值对应的范围分区,存入变量
curRangeArea中;
S1 .2:判断范围分区curRangeArea的状态,如果状态为“待删除”,则返回S1 .1;
S1 .3:将待插入的数据挂载到范围分区curRangeArea的第二层ART树上;
S1 .4:判断范围分区curRangeArea的状态,如果状态为“正在拆分”,则将数据放入该范
围分区curRangeArea的增量数据队列中,结束并退出,否则跳转到S1 .5;
S1 .5:判断范围分区curRangeArea中数据量是否大于设置的范围分区最大数据量阈值
RANGE_AREA_MAX_KVS,如果不大于,则结束并退出;如果大于,则将范围分区curRangeArea
放入待拆分队列中,结束并退出;
待拆分队列处理线程处理流程如下:
S2 .1:判断当前程序是否正在关闭,如果是,则退出线程;
S2 .2:判断待拆分队列长度,如果长度为0,则沉睡特定时间,然后重新跳转到S2 .2;
S2 .3:从待拆分队列中弹出一个范围分区存储到变量curRangeArea中,修改该范围分
区的状态为“正在拆分”;
S2 .4:遍历范围分区curRangeArea的ART树,并将数据按照Key值的字节序升序存储到
队列Q中,统计队列中数据量存储到变量S中;
S2 .5:计算拆分成的新的范围分区的数量以及每个范围分区的数据量;
新的范围分区的数量N的计算公式如下:
第i个新的范围分区的分配到的数据量Di计算公式如下:
公式中,变量S为范围分区curRangeArea的数据量;变量M为全局参数范围分区最大数
据量RANGE_AREA_MAX_KVS;变量P为每个分区分得的数据量比例;
每个分区分得的数据量比例P的计算公式如下:
权 利 要 求 书
1/2 页
2
评论