41、网页数据变更检测与表示

网页数据变更检测与表示

1. 变更检测问题概述

在网页数据处理中,变更检测是一个重要的问题。由于相关网页数据的变化会反映在网页表中,所以我们可以在网页表的上下文中解决检测和表示网页数据变更的问题。

为了简化问题,我们假设一个网页表有一个单一的网页模式来绑定所有的网页元组。形式上,如果 (W = \langle Z, U \rangle) 是一个网页表,那么 (U = {U}),其中 (U = \langle S, T \rangle),因此网页表可以表示为 (W = \langle Z, S, T \rangle)。

下面通过一个例子来说明变更检测问题。假设用户从网站 http://www.panacea.gov/ 开始,希望找到各种疾病的药物列表、它们的副作用和用途。用户指定了一个轮询耦合查询,轮询时间为 (t_1 = 2001 年 1 月 15 日) 和 (t_2 = 2001 年 2 月 15 日)。在 (t_1) 时,全局网页耦合操作检索到一组相互链接的文档,并将它们以名为 Drugs 的网页表形式具体化。该表中的每个网页元组包含特定疾病的药物副作用和用途信息。

在 (t_2) 之前,网站 http://www.panacea.gov/ 进行了修改。因此,在 (t_2) 时,轮询耦合查询的结果 New Drugs 包含了 (t_1) 和 (t_2) 之间发生的相关变更。例如,与心脏病药物 “Niacin” 相关的信息(文档 (u3) 和 (k4))在 Drugs 中未被具体化,因为它不满足耦合查询;但在 New Drugs 中被具体化了,因为在 2 月 15 日,由于网站添加了与 “Niacin” 副作用相关的文档 (d7),它满足了耦合查询。同时,由于网站移除了文档 (b3)、(d4)、(k5)、(d12) 和 (k12),与糖尿病和阿尔茨海默病相关的网页元组在 New Drugs 中未被具体化。

给定包含相关网页数据两个版本快照的两个网页表 Drugs New Drugs ,变更检测问题就是找到包含插入到 Drugs 中、从 Drugs 中删除或在 Drugs 中被修改的节点的网页元组集合,这些网页元组将反映与用户相关的网站变更。

2. 变更类型

网页表的变更反映在 Whoweda 中的各个网页元组中。Whoweda 中的不同变更操作类型可以定义如下:
- 插入节点(Insert Node) :直观地说,该操作在网页表 (W) 的一个网页元组中创建一组节点 (N)。这些节点必须是新的,即 (N) 之前不能在 (W) 中出现过。(N) 可以是添加到 (W) 的新网页元组,也可以是插入到 (W) 中现有网页元组的一组节点。
- 删除节点(Delete Node) :该操作是插入节点操作的逆操作,它从 (W) 中移除一组节点。
- 更新节点(Update Node) :该操作修改网页元组中节点的内容。节点内容的修改可以是节点的文本内容、结构或嵌入在节点中的链接属性发生变化。
- 插入链接(Insert Link) :该操作在网页表 (W) 的一个网页元组中创建一组链接 (L)。这些链接必须是新的,即 (L) 之前不能在该网页元组中出现过。在网页表中,新链接可以通过两种方式出现:一种是新链接连接现有节点和新节点(此时,插入链接操作会导致插入节点操作);另一种是新链接连接网页元组中的现有节点(此时,插入链接操作相当于更新节点操作,因为链接的源节点必须被修改以包含新链接)。因此,插入链接操作可以通过插入节点或更新节点操作来表示。
- 删除链接(Delete Link) :该操作从 (W) 中移除一组链接。与插入链接类似,在网页表中删除链接可能基于两种情况。移除一个链接可能会移除到现有节点的唯一链接,此时相当于删除节点操作;另一种情况是两个由多个链接连接的节点之间删除一个链接,此时该操作本质上是更新节点操作。因此,删除链接操作可以通过删除节点或更新节点操作来表示。
- 更新链接(Update Link) :该操作涉及修改链接的锚点,因此本质上是更新节点操作。

3. 变更表示

为了表示网页变更,我们定义了一种称为增量网页表(delta web table)的结构。增量网页表封装了相对于用户查询在网页中发生的相关变更。我们定义了以下三种类型的增量网页表来表示上述变更操作:
- (\Delta^+)-网页表((W_{\Delta^+})) :包含一组元组,这些元组包含为了将 (W_1) 转换为 (W_2) 而插入到 (W_1) 中的新节点。该网页表表示插入节点操作。
- (\Delta^-)-网页表((W_{\Delta^-})) :包含一组元组,这些元组包含通过删除节点操作从 (W_1) 中删除的节点。需要注意的是,(W_{\Delta^-}) 中的网页元组并不一定意味着这些相互链接的网页文档从网站中被删除。这些文档可能仍然存在于网页中,但由于这些页面的内容或相互链接结构的修改,它们可能不再与用户的查询相关。
- (\Delta_M)-网页表((W_{\Delta_M})) :包含一组网页元组,这些元组表示通过更新节点操作修改的节点的先前和当前集合。

定义 10.1(增量网页表) :设 (W_1 = \langle Z_1, S_1, T_1 \rangle) 和 (W_2 = \langle Z_2, S_2, T_2 \rangle) 是由轮询耦合查询 (G) 在时间 (t_1) 和 (t_2) 生成的两个网页表。设 (A)、(D) 和 (U) 分别是在 (t_1) 和 (t_2) 期间为了将 (W_1) 转换为 (W_2) 而添加、删除和更新的节点集合。则:
- (W_{\Delta^+} = \langle Z_{\Delta^+}, S_{\Delta^+}, T_{\Delta^+} \rangle) 称为 (\Delta^+)-网页表,其中 (S_{\Delta^+} = S_2),(T_{\Delta^+} \subseteq T_2),并且对于每个网页元组 (w_i \in T_{\Delta^+}),(\forall 0 < i \leq |T_{\Delta^+}|),存在一个节点 (n(w_i)) 使得 (n(w_i) \notin T_1) 且 (n(w_i) \in A)。
- (W_{\Delta^-} = \langle Z_{\Delta^-}, S_{\Delta^-}, T_{\Delta^-} \rangle) 称为 (\Delta^-)-网页表,其中 (S_{\Delta^-} = S_1),(T_{\Delta^-} \subseteq T_1),并且对于每个网页元组 (w_i \in T_{\Delta^-}),(\forall 0 < i \leq |T_{\Delta^-}|),存在一个节点 (n(w_i)) 使得 (n(w_i) \notin T_2) 且 (n(w_i) \in D)。
- (W_{\Delta_M} = \langle Z_{\Delta_M}, S_{\Delta_M}, T_{\Delta_M} \rangle) 称为 (\Delta_M)-网页表,其中 (S_{\Delta_M}) 由 (S_1) 和 (S_2) 生成,并且对于每个网页元组 (w_i \in T_{\Delta_M}),(\forall 0 < i \leq |T_{\Delta_M}|),至少满足以下条件之一:
1. 如果存在一个节点 (n_1(w_i)) 使得 (n_1(w_i) \in U) 且 (n_1(w_i) \notin (D \cup A)),则必须存在一个节点 (n_2(w_i)) 使得 (url(n_1(w_i)) = url(n_2(w_i))) 且 (date(n_1(w_i)) \neq date(n_2(w_i)))。
2. 如果存在一个节点 (n_3(w_i)) 使得 (n_3(w_i) \notin U),则 (n_3(w_i) \in (D \cup A)) 必须为真。在这种情况下,必须不存在一个节点 (n_4(w_i)) 使得 (url(n_3(w_i)) = url(n_4(w_i)))。
3. 如果存在一个节点 (n_4(w_i)) 使得 (n_4(w_i) \notin (D \cup A \cup U)),则必须不存在另一个节点 (n_5(w_i)) 使得 (url(n_4(w_i)) = url(n_5(w_i)))。

通常,增量网页表反映了网站修改的净效果,即它们只包含网页中一组相关文档连续修改的净结果。在大多数情况下,这些增量网页表的大小将比 (W_1) 或 (W_2) 小得多。以增量网页表的形式表示变更使我们能够将网页表的历史视为单个网页表快照和一组增量网页表的组合。我们可以从单个网页表开始,通过应用一系列网页增量来获得网页表的各种状态。此外,为了最小化存储成本,我们只具体化单个网页表和一组增量网页表,而不是网页表的各种状态。

增量网页表对网页变更的表示类似于关系模型中的增量关系。在关系数据库中,增量通常使用增量关系来表示。对于关系 (R),增量关系 (inserted(R)) 和 (deleted(R)) 分别包含插入到 (R) 和从 (R) 中删除的元组,而增量关系 (old - updated(R)) 和 (new - updated(R)) 分别包含更新元组的旧值和新值。类似地,我们分别在 (\Delta^+)、(\Delta^-) 和 (\Delta_M)-网页表中存储添加、删除或修改的网页文档。

4. 变更检测问题的分解

检测和表示变更的问题可以分解为以下几个部分:
1. 构建 (W_1) 和 (W_2) 的连接和外连接网页表 :由于之前已经讨论过,这里不再详细阐述。需要注意的是,这些连接网页表的网页模式在网页增量生成中并不起关键作用,因此在构建连接和外连接网页表时忽略了模式生成过程。
2. 使用连接和外连接网页表生成一组增量网页表 :即 (W_{\Delta^+})、(W_{\Delta^-}) 和 (W_{\Delta_M}),包含网页增量。这部分将在后续详细讨论。

5. 生成增量网页表的算法概述

生成增量网页表的算法可以分为四个阶段:

graph LR
    A[连接表生成阶段] --> B[增量节点识别阶段]
    B --> C[增量元组识别阶段]
    C --> D[增量网页表生成阶段]
  • 连接表生成阶段(Join Tables Generation Phase) :该阶段以两个网页表(新版本和旧版本)为输入,生成连接、右外连接和左外连接网页表。右外连接操作在 (W_1) 和 (W_2) 上可能会创建几类悬空网页元组:

    • 轮询时间 (t_1) 和 (t_2) 期间添加到 (W_1) 的网页元组(这些元组可能包含一些新节点,其余节点的内容可能已更改)。
    • 所有节点都经过内容修改的元组。
    • 一些节点是新的,其余节点的内容已更改,但这些元组在 (W_1) 中已经存在。

    连接操作在 (W_1) 和 (W_2) 上可能包含以下类型的网页元组:
    - 所有节点都是可连接节点的网页元组(这些元组是 (W_1) 和 (W_2) 中在 (t_1) 和 (t_2) 期间保持不变的网页元组的两个版本连接的结果)。
    - 一些节点是可连接节点,其余节点是在过渡期间插入、删除或修改操作的结果的网页元组。
    - 一些节点是可连接节点,其余节点中一些是插入、删除或修改的结果,其余节点在该网页元组中不可连接但在过渡期间保持不变的网页元组。在生成增量网页表时,算法会忽略连接网页表中第一类网页元组,因为它们不反映任何变更。

    左外连接表可能包含以下类别的网页元组:
    - 从 (W_1) 中删除的网页元组(这些元组在 (W_2) 中不出现)。
    - 每个节点都经过内容修改的元组。
    - 一些节点从 (W_1) 中删除,其余节点已被修改的元组。

  • 增量节点识别阶段(Delta Nodes Identification Phase) :该阶段识别在 (t_1) 和 (t_2) 期间添加、删除或修改的节点。它以网页表 (W_1) 和 (W_2) 以及连接表中的可连接节点集合为输入,生成在该时间间隔内添加、删除或修改的节点集合。存在于 (W_2) 但不在 (W_1) 中的节点是添加到 (W_1) 的新节点;只存在于 (W_1) 但不在 (W_2) 中的节点是从 (W_1) 中移除的节点;在 (W_1) 和 (W_2) 中都存在但不可连接的节点是在 (t_1) 和 (t_2) 期间经过内容修改的节点。例如,({b3, u4, u5, u6, u8, d4, d5, d12, k5, k6, k12}) 是出现在 Drugs 但不在 New Drugs 中的节点的 id,因此这些节点在过渡期间被移除;({k4, u9, k8, d8, d7, u3, u12, d9, k9, u10, u11, d10, k10}) 是存在于 New Drugs 但不在 Drugs 中的节点的 id,因此这些节点在 (t_1) 和 (t_2) 期间被添加;而 id 为 (a0)、(b1)、(d2)、(k2)、(u2)、(d3)、(k3)、(b4) 和 (u7) 的节点出现在两个网页表中但不可连接,因此这些节点经过了内容修改。

以下是相关节点的分类表格:
| 变更类型 | 节点 id 集合 |
| ---- | ---- |
| 移除 | ({b3, u4, u5, u6, u8, d4, d5, d12, k5, k6, k12}) |
| 添加 | ({k4, u9, k8, d8, d7, u3, u12, d9, k9, u10, u11, d10, k10}) |
| 修改 | ({a0, b1, d2, k2, u2, d3, k3, b4, u7}) |

网页数据变更检测与表示

6. 增量元组识别阶段(Delta Tuples Identification Phase)

在增量元组识别阶段,我们的目标是识别那些包含在过渡期间添加、删除或修改节点的网页元组。这不仅仅是简单地识别这些网页元组,还需要考虑节点之间的关联以及它们与未变更节点的关系。具体目标如下:
- 对于添加或删除的节点,不仅要识别包含这些节点的元组,还要明确这些节点与现有节点的链接或关联关系,以及新节点或删除节点之间的相互关系。
- 对于内容发生修改的节点,要确定这些节点之间以及它们与未变更节点的链接关系。同时,将修改节点的旧版本和新版本呈现在单个元组中,以便用户更有效地查看,并突出由于内容修改导致的整体超链接结构的变化。

为了实现这些目标,我们需要扫描连接和外连接网页表。该阶段以这些网页表以及在增量节点识别阶段确定的添加、删除和修改节点集合为输入,输出分别包含添加、删除和修改节点的元组集合,分别记为 insertTupleSet deleteTupleSet updateTupleSet

不同变更类型的节点可能出现在不同的网页表中:
- 插入节点
- 在右外连接表中,如果包含新节点的元组中其余节点已被修改且不可连接,那么这些元组包含插入节点。例如,图 8.48 中的第二、三、四个网页元组就属于这种情况。
- 在连接网页表中,如果包含新节点的元组中一些节点在过渡期间保持不变且可连接,那么这些元组也包含插入节点。例如,图 8.25 中的第四个网页元组,其中 (k4)、(u3) 和 (d7) 是新节点,而 (b2) 在过渡期间保持不变且可连接。
- 删除节点
- 在左外连接表中,如果包含删除节点的元组中其余节点已被修改且不可连接,那么这些元组包含删除节点。例如,图 8.47 中的第二、三、四个网页元组就属于这种情况。
- 在连接网页表中,如果包含删除节点的元组中一些节点在过渡期间保持不变且可连接,那么这些元组也包含删除节点。例如,图 8.23 中的第七个网页元组包含被删除的节点 (u8),由于 (d6) 和 (k7) 在过渡期间保持不变且可连接,因此可以从图 8.25 中的连接网页表(第三个网页元组)中检测到包含该删除节点的元组。
- 修改节点 :可以通过检查所有三个网页表来识别修改节点:
- 左外连接表和右外连接表中不包含任何新节点或删除节点的元组,分别代表这些节点的旧版本和新版本。这些网页元组不会出现在连接表中,因为所有节点都已被修改。例如,图 8.47 和 8.48 中的第一个网页元组就属于这种情况。
- 左外连接表和右外连接表中包含修改节点以及插入或删除节点的元组。如果没有其他可连接的网页元组包含这些修改节点,那么这些修改节点可能不会出现在连接网页表中。
- 连接网页表中一些节点代表修改节点的旧版本和新版本的元组。例如,图 8.25 中的第一个网页元组包含 (a0) 的旧版本和新版本。

7. 增量网页表生成阶段(Delta Web Tables Generation Phase)

最后一个阶段是生成三种类型的增量网页表。该阶段以增量元组识别阶段生成的三个元组集合 insertTupleSet deleteTupleSet updateTupleSet 为输入,根据这些集合生成增量网页表。具体生成过程如下:
- 将 insertTupleSet 中的元组存储在 (\Delta^+)-网页表((W_{\Delta^+}))中。
- 将 deleteTupleSet 中的元组存储在 (\Delta^-)-网页表((W_{\Delta^-}))中。
- 将 updateTupleSet 中的元组存储在 (\Delta_M)-网页表((W_{\Delta_M}))中。

下面通过一个例子来说明增量网页表的生成过程。

示例 10.2 :考虑图 8.23 和 8.24 中的两个网页表 Drugs New Drugs ,我们要找出将 Drugs 转换为 New Drugs 的各种变更操作,包括插入、删除和更新节点。对于每种变更类型,我们创建 (W_{\Delta^+})、(W_{\Delta^-}) 和 (W_{\Delta_M}) 表。

图 10.1 展示了 (\Delta_M)-网页表。该图中每个网页元组中的图案框表示节点的旧版本和新版本。例如,图 10.1 中的第二个网页元组包含节点 (a0)、(u2)、(d3) 和 (k3) 的旧版本和新版本,以及可连接节点 (u2)((u2) 的内容在过渡期间保持不变)。每个网页元组展示了修改节点集合之间以及它们与可连接节点的关系。其中,前四个网页元组是从图 8.25 中的连接网页表中提取的,最后一个网页元组(用虚线框包围)是图 8.47 中的左外连接网页表和图 8.48 中的右外连接表中的两个网页元组集成的结果。

总结

整个网页数据变更检测和表示的过程可以用以下流程图来概括:

graph LR
    A[输入 W1 和 W2] --> B[连接表生成阶段]
    B --> C[增量节点识别阶段]
    C --> D[增量元组识别阶段]
    D --> E[增量网页表生成阶段]
    E --> F[输出 WΔ+、WΔ- 和 WΔM]

通过以上步骤,我们可以有效地检测和表示网页数据的变更。这种方法将变更检测问题分解为多个阶段,利用连接和外连接网页表来识别增量节点和元组,并最终生成增量网页表来表示变更。以增量网页表的形式表示变更具有许多优点,如反映网站修改的净效果、减少存储成本以及方便查看网页表的历史状态等。同时,这种方法类似于关系模型中的增量关系表示,为网页数据的变更管理提供了一种有效的解决方案。

在实际应用中,我们可以根据具体需求对这些增量网页表进行进一步的处理和分析,例如监控网页数据的变化趋势、及时发现重要的变更信息等。通过不断优化和改进这个过程,我们可以更好地应对网页数据动态变化的挑战。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值