高效加载大型高维索引的新算法
在数据处理领域,索引构建是一项关键任务,尤其是对于大型高维数据集。传统的批量加载方法在索引构建或查询评估方面存在性能问题,或者不适用于无法完全放入主内存的索引。本文将介绍一种新的算法,用于在二级存储上快速构建索引,该算法能提供高效的查询处理,并且可以轻松更换分割策略。
1. 相关工作
在多维索引结构的批量加载方面,已经提出了几种方法:
- Hilbert R - 树 :使用空间填充曲线对数据点进行排序,根据希尔伯特值对数据点排序后,将其分解为连续子序列存储在数据页中。但页区域之间存在较高的重叠。
- VAM - Split 树 :采用分层空间划分的概念来批量加载 R - 树或 KDB - 树,使用排序算法,但不利用数据集的先验知识,缺乏适应性。
- Buffer 树 :是一种通用技术,通过在缓冲区收集插入操作,当缓冲区溢出时将操作传播到树的下一层,以提高动态插入算法的构建性能,同时保留底层索引结构的属性。
2. 新算法技术
新算法在批量加载操作期间,将完整数据集保存在二级存储中,仅需主内存中的小缓存,同时最小化随机寻道等成本高昂的磁盘操作。该算法严格将分割策略与构建算法的核心分离,便于更换分割策略,为给定的存储利用率创建无重叠分区。
索引构建是一个递归算法,包括以下子任务:
1. 确定树的拓扑结构 :树的高度和目录节点的扇出等。树的高度计算公式为:$h = \log_{C_{eff,dir}}(\frac{n}{C_{
超级会员免费看
订阅专栏 解锁全文
1840

被折叠的 条评论
为什么被折叠?



