Page 328 - 《软件学报》2026年第5期
P. 328

王撷阳 等: 基于数据分布的移动对象学习索引及查询算法                                                     2207


                 工作负载而忽略了可变字符串键的问题, SIndex            使用共享前缀对键进行分组, 并使用每个键的唯一部分进行模型
                 训练, 有效降低了模型推理和数据访问的成本. Ding             等人  [35] 提出了一种基于内存可更新的学习型索引方法             ALEX.
                 ALEX  通过引入固定数据布局和就地插入策略, 解决了传统索引在动态插入操作中的效率问题. ALEX                             采用自适
                 应的  RMI 结构, 能够处理新键的插入操作, 并且通过在初始化时执行根模型来对键空间进行分区. 每个非根节点
                 被分配一个固定数量的分区, 当分区大小合适时, 叶节点以间隙数组或压缩内存数组的形式创建以支持插入操作.
                 Ferragina 等人  [36] 提出了一个有最坏情况保证的学习型索引结构           PGM-index, 采用分段线性模型并通过增量缓冲
                 区插入策略支持动态更新. PGM-index        通过计算最优分段并递归构建, 实现了稳定的查询性能. Marcus 等人                  [37] 将
                 RMI 与其他几种经典索引结构进行对比. 2021            年, Zhang  等人  [38] 提出了  CARMI (cache-aware recursive model
                 index) 索引, 固定每个节点大小, 确保数据查询的内存访问次数为最小最优值, 有效提升查询效率的同时, 具有更
                 相似的空间使用量. 同年, Wu       等人  [39] 提出了一种精确的键到位置映射学习索引            LIPP, 通过避免误预测后的局部
                 搜索来提升查询性能, 其核心在于采用核化线性模型确保映射均匀分布, 并利用最快最小冲突度算法                                   (fastest
                 minimum conflict degree, FMCD) 优化冲突处理. 与  ALEX  相似, LIPP  也采用了就地插入策略, 在动态数据更新时
                 展现出高效性. 2023    年, Li 等人  [40] 利用线性回归模型构建了一种基于数据分布的索引结构               DILI, 保证了动态数据
                 分布下的高效就地插入.
                  1.2.2    多维学习索引
                    多维学习索引与一维学习索引最大的不同在于排序难度显著提升. 在一维学习索引中, 只有单一的属性值, 可
                 以简单地对数据对象进行排序, 但多维数据存在逻辑顺序不强的问题, 这会影响学习模型对查找键预测的准确性.
                 现有的多维学习索引可以划分为: 映射一维、网格划分以及自定义布局. 在一维学习索引已经奠定坚实基础的情
                 况下, 研究者们认为对于多维数据的处理同样可以先转化为一维数据, 在此一维序列上建立学习索引, 根据索引预
                 测值在多维数据的误差范围内展开搜索.
                    2019  年, Wang  等人  [41] 提出了  ZM  索引, 借助  Z-order 空间填充曲线对移动对象数据进行降维, 并得到与空间
                 位置关系相关的有序数列, 构建机器学习模型来学习数据分布, 预测查询键位置. ZM                         索引有效提升了查询效率和
                 存储占用率, 但其在实现查询过程中会对大量冗余点执行操作. 为解决这一问题, 2020                        年, Davitkova 等人  [42] 提出
                 了多维度学习     (multidimensional learned, ML) 索引, 由两个重要组件组成, 首先是索引构建, 使用聚类算法得到参
                 考点, 基于距离函数和参考点将数据点降至一维, 得到排列后的一维值; 然后使用递归层次模型中的线性回归模型
                 对排列后的一维值分布进行学习. 实验证明, 此方法在范围查询时具有优势. 2022                      年, Wang  等人  [43] 基于动态框架
                 提出时空跳跃连接模型        (spatio-temporal skip-connection model, STSM), 将时间和空间信息正确地结合起来. STSM
                 中包含时间模块和空间模块, 以及一个跳跃连接到原始输入融合时间、空间和全球信息的数据. 对比实验结果表
                 明, STSM  不仅优于单独的时间或空间模块, 而且比其他传统方法预测更准确.
                    将多维数据映射为一维的方法, 舍弃了部分空间特征, 为解决这一问题, 产生了网格划分多维数据的方法.
                 2020  年, Ding  等人  [44] 在  Flood  基础上提出了  Tsunami 索引, Tsunami 在构造的网格树的各分支中, 构造增强网格
                 对与该分支区域内相关的查询操作进行性能优化. 2021                 年, Zhang  等人  [45] 提出了基于网格索引的空间插值函数
                 (spatial interpolation function based grid index, SPRIG), 采用了最近点剪枝技术和基于枢轴的过滤来提高最近邻问
                 题的查询性能, 通过在真实的数据集上实验得到, SPRIG              在查询时所用时间比        ZM  索引高出一个数量级, 在索引建
                 立、范围查询和      KNN  查询方面分别比     Flood  快  2.7  倍、3  倍和  9  倍, 但是消耗的空间更多.
                    虽然上述方法在查询时间和空间成本上都进行了一系列的优化, 但都不支持插入, 索引插入的位置将直接影
                 响查询性能. 自定义数据布局的含义是在初始多维数据的基础上, 更改数据的布局, 以解决索引插入的问题.
                 2020  年, Li 等人  [46] 提出了  LISA (learned index structure for spatial data), 在外存中将任意数据集布局为可查询状态,
                 LISA  使用机器学习模型建立可支持动态更新的数据布局, 实现了数据更新、插入和删除功能. 同时, 其还支持范
                 围查询, 并结合范围查询实现了最近邻查询, 通过实验可知, LISA                 的  I/O  消耗仅为  R  树的  80%  左右, 同时占用磁
                 盘存储空间仅为      R  树的  90%. 与  LISA  相似, Qi 等人  [47] 同年提出一个基于磁盘的可更新学习型空间索引         RSMI, 支
   323   324   325   326   327   328   329   330   331   332   333