paper6《数据流上连续动态skyline查询研究》阅读笔记
前提
- 这篇文章不是很喜欢,没仔细写笔记
- 文章中有关于基于网格索引的skyline算法的一些时间复杂度和空间复杂的的数学分析
创新点
有两种情况需要更新skyline结果:新元组的到达和旧元组的失效.无论对于约束skyline还是一般动态skyline处理的方法是一致的.
当新元组p到达时,将p插入到相应网格的元组队列中.如果p落入某查询的影响区域,则需要检查p与现有SK的关系,如果p被SK中的某个元组支配,则SK不受影响,若p不被SK中任一元组支配,则p为新的skyline元组,将p加入到SK中,并将p所支配的SK中的元组以及影响列表中的网格删除.
当旧元组p失效时,将p从相应的网格删除.若p是SK中的一个元组,还需要寻找是否存在仅被p支配的元组.在所有可能包含被p支配的网格内,按照初始计算模块的思想计算skyline元组,修改相应查询的影响区域.
算法
如图6所示的约束查询q(l1,l2)(l3,l4),定义了查询区域(O1,O2,O3,O4).O1,O4所在网格坐标分别为(0,0),(5,4).从O1所在的网格开始,将O1至O3之间的网格以及O1至O2之间的边界网格加入候选队列H中,并依次处理,这些网格中没有包含skyline元组.将这些网格加入到查询q的影响区域列表IL中,未来落入这些网格的元组有可能是新的skyline元组.然后处理网格(1,1),将B加入到skyline集合SK中,将网格(1,2),(1,3)以及(2,1),(2,2),(2,3)加入到候选队列H中,并依次处理.由于B支配D,因此D不能加入到SK中,但是这些网格未来有可能会包含skyline元组,因此将这些网格加入到IL中.剩余网格的LB点均被B支配,因此不需要继续处理.SK={B},IL={(0,0),(01),(0,2),(0,3),(1,0),(2,0),(3,0),(4,0),(1,2),(1,3),(2,1),(2,2),(2,3)}.