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

2214                                                       软件学报  2026  年第  37  卷第  5  期



                    因为移动对象往往包含多个位置点, 尤其是时间周期长的对象, 所以时间复杂度                           O(M) 代价依然很高. 例如,
                 采样频率为    10 s, 一天的移动对象具有      M=8640  个位置点. 为此, 设计了两种优化方法: (1) 前缀编码分组; (2) 子轨
                 迹估计表示. 采用前缀编码分组使得所有移动对象点根据前                   5  次二分后所在网格的编码前缀被分配到不同的数组
                 中. 通过数组规模判断聚集程度高或低的网格, 避免遍历密度显著高于密度阈值的分组, 降低访问开销. 子轨迹估
                 计表示通过最小矩形框        Bbox 表示时空范围, 通过不同时间区间划分, 用            Bbox 的中心点代表指定区间内的所有数

                 据点, 减少移动对象点数量, 将时间复杂度从           O(M) 降低到  O(M/m), 其中  m  是子轨迹  Bbox 中含轨迹点数量的平均值.
                  4   非均匀网格学习索引

                    学习索引的核心理念在于索引不再是静态的数据结构或文本文件, 而是一个可以预测查询键位置的机器学习
                 模型, 模型可以被训练, 因而数据库索引也可以被训练和学习. 但是现有的学习索引多面向静态只读数据或一维数
                 据, 本工作所构建的非均匀网格降维学习索引面向移动对象, 基于通过                      NUGC  降维后的值进行查询键预测. 同时,
                 考虑到移动对象位置的更新特点, 如果使用传统的学习索引, 每插入新的位置数据就需要重新训练索引模型, 会导
                 致查询成本显著提高, 因此        NUGC_LI 还支持插入、更新和删除操作. 为应对数据更新与新增数据引起的冲突, 节
                 点内预留了足够的空隙, 并设定节点阈值, 以便在数据插入时能够直接在预测位置附近进行微调, 减少因全局重训
                 练带来的开销. 采用局部数据平移以及扩展分裂两种策略, 以避免每一次数据更新时都进行大范围的模型重训练,
                 从而降低更新成本, 提高索引的实时性. 基于预测位置误差控制方法, 确保更新过程中的查询准确性, 并通过统计
                 误差信息动态调整节点分裂策略, 从而兼顾高效查询和低更新延迟, 能够初步满足在线场景的需求.
                  4.1   相关定义
                    定义  9. 误差区间   ErrINR.

                                               ErrINR = [PrePos−err,PrePos+err]                      (14)
                 其中, PrePos 为学习索引预测的查询值所在数组中的位置, err 为误差值, 每次通过学习索引预测到查询值的位置
                 后, 在误差区间内用二分查找算法进行遍历搜索, 以保证查询准确性.
                    定义  10. 非均匀网格学习索引       NUGC_LI.
                    NUGC_LI 学习索引由     3  部分模型组成, 第   1  部分由一个线性回归模型构成的根节点模型; 第              2  部分是若干个
                 可扩展的内部节点, 每个节点中存在一个线性回归模型; 第                 3  部分是叶子节点, 也可以被视为数据节点模型.

                                                   {                           }
                                         NUGC_LI = Root model , Expandable Int model , Leaf          (15)
                                                                            model
                    指定一个查询键, NUGC_LI 中的第        1  部分是一个回归模型用来预测下一部分应选择哪个子模型, 第                   2  部分的
                 所有内部节点都是回归子模型, 用来预测符合查询键所在范围的叶子节点, 第                        3  部分是叶子节点用来预测有序数
                 组中查询键所在的准确位置. 这          3  层模型均是选择适应数据分布的机器学习模型, 通过数据训练得到较高的预测
                 准确率.
                    定义  11. 学习索引节点阈值      NodeTHR.
                    因为学习索引支持数据插入及更新, 所以为每个节点设置节点阈值, 当该节点中包含的数据位置信息已经超
                 过阈值, 则该节点模型需要进行分裂, 分裂机制见第               4.4  节索引插入机制. 节点阈值计算公式如下:

                                                           M
                                              NodeTHR =          ×X, X ∈ (0,1)                       (16)
                                                       Count(LR leaf )
                 其中, M  为移动对象点个数, 即查询数据集中对象总数, LR lea 是作为叶子节点的回归模型, Count(LR leaf ) 则是作为
                                                               f
                 叶子节点的回归模型的个数. 同时, 因为索引在更新和插入阶段, 为保持移动对象的空间位置关系会造成其他数据
                 的移动和存储位置变换, 键值及指针数组中需要保留一定的间隙空间, 因此需乘以一个变量                             X  使得节点总是未被
                 完全插满, 为数据的移动操作提供空间.
                    在移动对象数据库中, 例如城市车辆位置跟踪的场景下, 数据需要频繁更新和插入. 传统索引结构在节点满时
                 通过分裂来适应新的数据插入, 在静态数据集上表现良好, 但在当前问题场景下, 调低阈值允许索引在构建阶段就
   330   331   332   333   334   335   336   337   338   339   340