时间:2022-12-04 06:30:01 | 来源:信息时代
时间:2022-12-04 06:30:01 来源:信息时代
移动对象查询 : 针对移动对象的一种查询技术。移动对象包含了空间和时间两方面的属性,因此对移动对象的查询是指指明时空谓词,搜索满足这些谓词的移动对象。空间谓词通常指定一个空间点或是空间范围;而时间谓词通常包含一个时间点或是时间范围。
根据查询谓词的不同,可以将移动对象的查询划分为下面的几种类型:
(1)范围查询: 查找在某一时刻(或时间段)在给定区域内的所有对象。范围查询是最基本的、应用最广泛的查询类型,可以作为其他复杂查询的基础和组成部分,大部分移动对象索引都支持移动对象的范围查询处理。
(2)最邻近查询: 查找某一时刻(或时间段)哪些对象距离给定点最近。邻近查询中最通常的类型是K邻近查询(KNN),即查找最靠近查询点的K个对象。邻近查询中的另一种查询为逆最近邻查询(RNN)。这种查询查找其最近邻是查询点的移动对象,即对于查询结果中的每一个点,距它最近的点是查询点。例如: 一个行人可能想知道距自己最近的出租车,而对于出租车,他想知道对于哪些行人,自己是距其最近的出租车,这些行人就是出租车的逆最近邻查询结果。
(3)聚集查询: 查找在某一时刻(或时间段),有多少对象通过了区域R,如聚集最近邻查询(ANN)。ANN查询查找距离给定查询点集合的聚集距离最小的对象集合。这是一类多查询点多对象的查询类型。这种查询的目的是找出综合评估最优的位置。例如,利用一个求和函数,可以查找出饭店的最优位置,这个位置距离所有居民区的距离和最小; 或者利用一个最大值函数,可以确定约会的最佳地点,使得最后一个人到达的时间最短。
(4)多处理查询: 同时处理多个查询。可以将这些查询分类,有些查询可共享同一个查询结果或其查询结果的超集,而有些查询不必交给服务器终端处理,只需对某类中的几个查询进行计算和处理。这样大大减少了服务器的工作量,提高了计算效率。例如,多处理单范围查询和多处理单KNN查询。
(5)连续查询:在某个时间区域内持续有效的查询。在给定时间区域内,由于移动对象位置的改变,查询的结果也在不断变化,系统需要随时将查询结果的变化信息传递给查询用户,使得用户能够实时地监控最新的查询结果。例如,在高速公路上行进的救护车可以提交一个持续查询: “在未来20min之内随时查询距离最近的医院”,这个查询将在未来20min的行进过程中不断地动态返回离救护车最近的医院。
连续查询跟一般查询最重要的区别是对象的动态性或者查询本身的动态性(查询窗口的运动)使得查询结果与时间属性相关。对于数据的每一次更新或者查询点的连续变化,所有连续查询的结果都要重新考虑。在这里,查询成为了“数据”被索引,而数据更新成为了“查询”。连续时空查询评价方法大概包括四种:
(1)无效查询的重复评价。查询结果有一个附加参数,用于确认查询结果的有效性。这个参数或者是关于时间的(例如,有效时间,即查询结果在多长时间内有效,在多长时间后将改变),或者是关于空间的(例如,有效区域,即查询点在怎样的区域内会保持查询结果不变,而离开这个区域查询结果将发生改变; 或者安全区域,即被查询的数据点在怎样的区域内可以保证所有查询点的查询结果均有效,当数据点在这样的有效区域内运动时,每一个查询点的查询结果保持不变)。如果查询结果不在有效参数范围内,那么这个查询需要重新提交并评价。
(2)缓存结果。先前的查询结果为后续查询剪枝搜索空间。为了利用先前的查询结果来缩小后续查询的范围、缩小查询空间,有必要将查询结果缓存起来。结果或者缓存在服务器端,这将要额外花费从服务器读取数据的时间; 或者在客户端有存储和计算能力的情况下,把结果缓存在客户端,然而大量的重复信息将导致较多的空间浪费。
(3)在已知查询轨迹情况下,预计算查询结果。只要查询轨迹不发生变化,通过利用静态对象的可计算几何信息或者移动对象的速度信息来识别查询结果集。根据每个对象的速度、移动方向信息预测它在一定时间后的位置,进而计算当时的查询结果。
(4)增量式评价。当有更新出现时,不是重新评价查询和产生整个查询结果,而是查询执行器输出前一查询结果的正和负更新。一个正更新指一个新对象被加入到查询结果中,而一个负更新指明一个老对象移出查询结果。通过分析这些更新,可以知道查询结果的个数的变化,即查询结果的范围是增大了还是减小了,从而确定是否需要扩大查询空间。