来源查询检索的研究
来源查询的方式主要有:基于内容索引的查询—>基于时间局部性的上下文增强搜索查询—>基于因果关系的查询(根据provenance提供上下文有关的索引,即因果关系)。
(1)传统的来源查询检索方式为基于内容索引的查询。在这种方式中,用户通过一些定义好的查询语言通过提交查询来和搜索工具交互。搜索工具然后从文件内容中或一个来自文件内容的先前计算的索引来查看,将结果等级排序,然后将这个排名列表的结果返回给用户。在许多搜索工具里,查询语言是一些关键字列表。然而,更多先进的搜索工具提供可扩展的、描述性的查询语言来提高用户查询的结果。出于性能方面的一些原因,许多基于内容的搜索工具执行离线内容分析,将分析的结果存储在一个预先计算好的索引中,可以在查询的时候查看到。
基于内容查询索引的架构图如图1所示:
(2)基于时间局部性的上下文增强搜索查询是对基于内容搜索方法的一个改进。这个搜索算法通过维持一个文件访问的滑动关系窗口(设定为t秒内)。窗口的任何写操作绑定到该窗口中先前的读操作,这就是所谓的利用直接链读/写操作过滤。基于时间局部性的上下文增强搜索查询举例如图2:
图2
如上图所示,有三个进程A,B,C并发执行。C读文件u和v,A读文件x和y,B读w和将数据通过剪贴板IPC方式拷贝到A,最后A写文件z。利用基于时间局部性的上下文增强搜索查询的方法来进行的话,就可以得到:在Relation window里写操作z包含读操作y,w和v。时间局部性算法是过程不可知的和将系统范围内的读和写视为一体,区别在不同的用户之间。
(3)因果关系(根据provenance得到)的查询算法:有一种方案提出在因果关系中将每一个进程视为一个过滤器。这个因果算法追踪输入流(进程的粒度上)来构建亲属关系,决定什么输出和输入相关。当一个写操作事件发生时,将会形成下面的关系:同一进程内先前的文件读都绑定到当前的写文件;根据数据流向确定。举例如图3:
图3
如图3所示:在同一个进程中所有的读可以得到x—>z,y—>z。根据数据流向确定可以得到w—>z。
根据因果关系可以得到Relation Graph,也就是关系的形成编码在关系图中。
(4)来源的查询索引可以结合上面所见的来源查询方法。方案就是结合传统的基于内容的搜索和基于provenance得到的因果关系来提高来源查询效率。当一个查询请求发出时,工具首先运行在传统的基于内容的搜索上,通过用户输入关键字。然后使用provenance关系图来记录结果和识别额外的提示信息。工具运行叫做基本的BFS算法来对搜索的结果进行重排序和扩展。在这里用到的排序权重的计算公式为:
上述公式的说明:工具运行基本的BFS算法进行P次迭代。Em是节点m的所有输入边。enm ∈ Em 是一个指定的n到m的边。γ (enm)是n到m输出边权重所占的概率比。运行P次迭代算法,该节点m总权重为:
对于上面的BFS算法举一个例子如下所示:
根据上图知道budget.xls(a)的一些初始值: ,计算expenserep.doc(d),有:
最终的结果为:
最终的重排结果顺序为:按值从大到小排列。
(5)现给出一个将基于内容搜索和基于因果关系(也成为上下文关系)结合在一起进行查询的架构如图4:
图4