首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于两层ART树的数据存储方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:上海沄熹科技有限公司

摘要:本发明特别涉及一种基于两层ART树的数据存储方法。该基于两层ART树的数据存储方法,按Key值范围分区的方式拆分数据,使用两级ART树索引结构,第一级ART索引用于Key值范围分区,第二级ART索引用于索引范围分区内的数据。该基于两层ART树的数据存储方法,通过优化存储引擎的索引结构,提升了存储引擎的性能,解决了使用原始的一层ART树索引结构带来的索引结构查询性能随着数据量增大而大幅降低的问题。

主权项: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的计算公式如下: 公式中,变量S指范围分区curRangeArea的数据量;变量M指全局参数范围分区最大数据量RANGE_AREA_MAX_KVS;变量τ为衰减因子,控制衰减速度,默认配置为10;e为自然常数;S2.6:将队列Q中的数据按照顺序插入新的范围分区中;当第i个新范围分区的数据量等于Di时,将第i个新范围分区最后插入的Key值作为该范围分区的Key值,将该新范围分区挂载到第一层ART树上,并且停止第i个新范围分区插入数据,改为向第i+1个新范围分区插入;S2.7:将范围分区curRangeArea的状态置为“待删除”;S2.8:处理范围分区curRangeArea增量数据队列,对于增量数据队列中的每条记录,首先判断记录是否在队列Q中,如果存在则跳过,如果不存在,则使用数据插入流程将数据插入到索引结构中;S2.9:删除范围分区curRangeArea,释放该范围分区的空间,跳转到S2.1。

全文数据:

权利要求:

百度查询: 上海沄熹科技有限公司 一种基于两层ART树的数据存储方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。