斯坦福实体解析框架(SERF)是由HectorGarcia-Molina领导的研究小组(Benjelloun, Garcia-Molina, Kawai, Larson, Menestrina,Su, Thavisomboon, and Widom,
2006)在斯坦福信息实验室开发出来的。SERF模型中,两个引用的成对解析被抽象成一个匹配方法(match function M),该方法通过操作一对实体引用返回一个布尔类型的真假值,这个值表明该引用对是否是等价的。除了匹配方法M,SERF模型还介绍到了一个合并方法(merge function μ),这个方法通过对等价引用对进行操作而生成第三个引用,也就是说这个引用是由原有的两个引用对衍生出来的。
给定一组初始的实体引用R,SERF模型的目的是为了定义什么是R的通用实体解析,表示为ER(R),并且能够找到一组条件确保ER(R)是真实存在的,有限的,并且是独特的。
匹配M和合并μ方法
D代表匹配函数M的域,那么
与FSM不同,SERF模型并没有指定一个特定的匹配方法。然而,为了实现一个唯一定义的ER(R),M必须满足后面即将讨论到的一些特定约束。
合并方法μ通过结合两个引用的属性值抽象出概念。它也同样运行在与方法M相同的域D中,但是只用来匹配引用。
这意味着衍生出来的引用不仅相对于初始的引用R具有可比性,而且对于其他的派生引用也是具有可比性的。方法M和μ可以被认为是由递归生产规则所组成的,即从R开始生成D,然后增加来自于匹配引用对的派生引用。
在下面这种情况下:
这种情况下r1主导r2。考虑到合并方法是一种整合属性值的方法,r1主导r2说明了r2没有除了r1的属性以外的新的属性值可以贡献到派生(合并的)引用中,也就是r1的属性值包含了所有r2的属性值。
一般的ER定义
根据SERFER模型,一般ER可以定义如下:给定一组引用R,一个如之前定义的域为D的匹配方法M和合并方法μ,即:
那么:
· 来自于R的任何记录不是在ER(R)中,就是被ER(R)中的某一条记录所主导
· ER(R) 中的任意两条记录都是不匹配的(非等价),ER(R)中的任何记录都不能被其中的其他记录所主导
然而,在匹配和合并方法上没有进一步的约束,对于给定的R,ER(R)可能就不存在,或者不是唯一的。一个简单的定义R,M和μ的例子如下:
a)R={x, y}
b)M(x, x) =M(y, y) =M(x, y) =M(y, x) =True
c)μ(x, x) =μ(x, y) =x
d) μ(y, x) =μ(y, y) =y
这种情况下,有两种截然不同的结果:
由于x与y是相互匹配的,一般ER的第二个规则就限制了x和y都存在于ER(R)中。然而,因为上面的c)条件中x主导y,结果中ER(R)仅包含x就足够了。同时,d)条件中表明y主导x,也允许了ER(R)仅包含y作为一种方案。
上面两种结果都是有可能的,因为合并方法缺乏对称性的定义。所以对于我们对合并方法直观的预期是忽略它们的顺序。在匹配和合并方法上添加这个条件还有其他的一些约束可以缓解这些问题。
一致的ER
根据SERF模型,当匹配函数M和合并函数μ满足某些条件时,ER(R)可以说是一致的,这意味着ER(R)是存在的,有限的,并且是独一无二的。在M和μ上用来定义一致的ER的附加约束如下:
1. Ifr1, r2 ∈ D, then M (r1, r2) = M (r2, r1) and μ (r1, r2) = μ (r2, r1)
2. Ifr ∈D, then M(r, r) =True and μ(r, r) =r
3. Ifr1, r2 ∈ D, then M (r1, μ (r1, r2)) = M (r2, μ (r1, r2)) =True
4. If r1, r2, r3 ∈ D, then μ (r1,μ (r2, r3)) = μ (μ (r1, r2), r3)
R-Swoosh算法
除了定义通用的ER和一致的ER,信息研究小组还研究出了一系列的系统应用匹配和合并方法来实现ER(R)。最基本的就是R-Swoosh算法(Benjelloun, et al., 2006)。R-Swoosh算法的输入是初始的引用集R,输出就是ER(R)
。R-Swoosh算法的步骤可以描述如下:
1. 令 D = R , ER(R) = ?
2. 从D中取第一个引用x,从ER(R)中取第一个引用y
3. 求值M(x, y)
a. 若M(x, y)的值为True
i. 生成z=μ(x,y)
ii. 从ER(R)中移除y,D中移除x
iii. 添加z到D中
iv. 重新执行步骤2
b. 否则用ER(R)中的下一个y,重新执行步骤3
4. 如果对于ER(R)中的任意一个y,M(x, y)结果都不为真,那么
a. 将D中的x移到ER(R)中,
b. 如果D中有其他的引用可以处理,那么重新执行步骤2,否则该算法结束。
下面是R-Swoosh算法的一个例子,表3.1中的五组引用集R,代表了学生登记记录信息。
First |
Last |
DOB |
SCode |
|
r1 |
Edgar |
Jones |
20001104 |
G34 |
r2 |
Mary |
Smith |
19990921 |
G55 |
r3 |
Eddie |
Jones |
20001104 |
G34 |
r4 |
Mary |
Smith |
19990921 |
H17 |
r5 |
Eddie |
Jones |
20001104 |
H15 |
表3.1 引用集R
若x和y代表两个引用,那么匹配函数M(x,y)只有当其中一个或两个都满足以下条件时才返回结果为真:
1. (x.First = y.First) and (x.Last=y.Last) and(x.DOB = y.DOB)
2. (x.Last = y.Last) and (x.DOB = y.DOB) and(x.SCode = y.SCode)
R中的10个不同的引用对,只有三对 (r1,r3),(r3,35)和(r2,r4)的匹配函数会返回结果真。
合并函数被定义为通过收集x和y的不同属性值来创建一个新的引用,那么
· μ(x,y).First={x.First, y.First}
· μ(x,y).Last={x.Last, y.Last}
· μ(x,y).Last={x.DOB, y.DOB}
· μ(x,y).Last={x.SCode, y.SCode}
使用表3.1中定义的R,还有之前定义的M和μ,R-Swoosh算法步骤1中D和ER(R)的初始状态如表3.2所示。
D |
ER(R) |
||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
r1 |
Edgar |
Jones |
20001104 |
G34 |
|||
r2 |
Mary |
Smith |
19990921 |
G55 |
|||
r3 |
Eddie |
Jones |
20001104 |
G34 |
|||
r4 |
Mary |
Smith |
19990921 |
H17 |
|||
r5 |
Eddie |
Jones |
20001104 |
H15 |
表3.2 R-Swoosh算法的初始状态
步骤2中,因为ER(R)中没有可选择的值,所以步骤3中ER(R)不满足任何条件。因此,到了步骤4,第一个第一个引用r1就被移到了ER(R)中,如表3.3中所示。
D |
ER(R) |
||||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
||
r2 |
Mary |
Smith |
19990921 |
G55 |
r1 |
Edgar |
Jones |
20001104 |
G34 |
r3 |
Eddie |
Jones |
20001104 |
G34 |
|||||
r4 |
Mary |
Smith |
19990921 |
H17 |
|||||
r5 |
Eddie |
Jones |
20001104 |
H15 |
表3.3 处理完r1后的R-Swoosh
下一次循环到步骤2,r2作为D中的第一个引用被选出,但是它与ER(R)中的r1并不匹配,所以根据步骤4,r2也从中被移到了ER(R)中。结果如表3.4所示。
D |
ER(R) |
||||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
||
r3 |
Eddie |
Jones |
20001104 |
G34 |
r1 |
Edgar |
Jones |
20001104 |
G34 |
r4 |
Mary |
Smith |
19990921 |
H17 |
r2 |
Mary |
Smith |
19990921 |
G55 |
r5 |
Eddie |
Jones |
20001104 |
H15 |
表3.4 处理完r2后的R-Swoosh
下一次循环到步骤2,r3作为D中的第一个引用被选出,这种情况下,r3与r1匹配。根据步骤3,r3和r1分别从D和ER(R) 中被移除,并且μ(r3, r1) 被增加到D中。结果如表3.5所示。
D |
ER(R) |
||||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
||
r4 |
Mary |
Smith |
19990921 |
H17 |
r2 |
Mary |
Smith |
19990921 |
G55 |
r5 |
Eddie |
Jones |
20001104 |
H15 |
|||||
r6 |
{Eddie, Edgar} |
Jones |
20001104 |
G34 |
表3.5 处理完r3后的R-Swoosh
下一次循环到步骤2,r4作为D中的第一个引用被选出,这种情况下,r4与r2匹配。根据步骤3,r4和r2分别从D和ER(R) 中被移除,并且μ(r4, r2) 被增加到D中。结果如表3.6所示。
D |
ER(R) |
||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
r5 |
Eddie |
Jones |
20001104 |
H15 |
|||
r6 |
{Eddie, Edgar} |
Jones |
20001104 |
G34 |
|||
r7 |
Mary |
Smith |
19990921 |
{H17,G55} |
表3.6 处理完r4后的R-Swoosh
下一次循环到步骤2,r5作为D中的第一个引用被选出,然而,ER(R)是空的,所以根据步骤4,r5从D中被移到ER(R)中。结果如表3.7所示。
D |
ER(R) |
||||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
||
r6 |
{Eddie, Edgar} |
Jones |
20001104 |
G34 |
r5 |
Eddie |
Jones |
20001104 |
H15 |
r7 |
Mary |
Smith |
19990921 |
{H17,G55} |
表3.7处理完r5后的R-Swoosh
下一次循环到步骤2,合并的引用r6作为D中的第一个引用被选出,这种情况下,r6与r5匹配。根据步骤3,r6和r5分别从D和ER(R) 中被移除,并且μ(r6, r5) 被增加到D中。结果如表3.8所示。
D |
ER(R) |
||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
r7 |
Mary |
Smith |
19990921 |
{H17,G55} |
|||
r8 |
{Eddie, Edgar} |
Jones |
20001104 |
{G34, H15} |
表3.8处理完r6后的R-Swoosh
下一次循环到步骤2,r7作为D中的第一个引用被选出,但是,ER(R)又变成空的,所以r7从D中被移到ER(R)中。结果如表3.9所示。
D |
ER(R) |
||||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
||
r8 |
{Eddie, Edgar} |
Jones |
20001104 |
{G34, H15} |
r7 |
Mary |
Smith |
19990921 |
{H17,G55} |
表3.9处理完r7后的R-Swoosh
最后一次循环到步骤2, r8作为D中的第一个引用被选出,因为r8与ER(R)中的任意一个记录都不匹配,所以r8从D中被移到ER(R)中。现在D为空的,算法执行结束。最终结果如表3.10所示。
D |
ER(R) |
||||||||
First |
Last |
DOB |
SCode |
First |
Last |
DOB |
SCode |
||
r7 |
Mary |
Smith |
19990921 |
{H17,G55} |
|||||
r8 |
{Eddie, Edgar} |
Jones |
20001104 |
{G34, H15} |
表3.10处理完r8后的R-Swoosh执行完成的最终结果
FSM中不存在的,而在SERF模型中存在的一个可区分的特征就是合并方法。在FSM中,是否等价取决于一对一的两两比较。简而言之,FSM匹配方法的输出结果为True,意味着两个引用是等价的,为Fasle说明引用是不等价的。这样做的原因是底层的FSM假设在链接的两个列表之中没有等价引用,而等价引用仅存在于两个列表之间。这就消除了列表A中的两个不同引用与列表B中的一个单个引用匹配的情况,若使列表A中的两个引用等价就违背了上面的假设。
R-Swoosh算法中,的确任何两个原始引用匹配就被认为是等价的。但是,如果两个引用不匹配,它们是否等价应该等到算法执行结束后决定。R-Swoosh算法的净效果是最终的ER(R)集合中相同合并记录中的任何两个引用都是等价的。在上面的例子中,虽然M(r1,r5)的结果为False,也就是,r1与r5不匹配,但是原始引用r1,r3和r5都被合并到了单一记录r8中。通过保留合并记录,R-Swoosh算法能够执行传递链接并且创建在第一章中描述到的r1,r3和r5的传递闭包。这是第一章讨论到的身份捕获ER架构的基础,也是第六章讨论到的OYSTER开源实体解析系统的内在逻辑。
其他的Swoosh算法
除了基本的R-Swoosh算法,信息实验室的研究小组还开发出了一些其他的算法,目的是在并行和分布式系统架构中优化ER性能。D-Swoosh算法(Benjelloun, Garcia-Molina, Kawai, Larson, Menestrina,Thavisomboon,
2006)是为了分布式处理架构研究的,P-Swoosh算法(Kawai, Garcia-Molina, Benjelloun, Menestrina, Whang,Gong, 2006)是为并行架构研究出来的。Bufoosh算法(Kawai,
Garcia-Molina, Benjelloun, Larson, Menestrina,Thavisomboon, 2006)是为了解决ER中缓存算法相关的问题。
其他ER算法
除了Swoosh算法,还有许多其他的方法通过系统地比较引用对来确定等价引用。大多数算法是关注在用最低成本实现来提高算法的效率。假设一个引用集N,最坏的情况是所以可能的记录对都进行了比较,导致了比较对的总数等于
这就意味着比较对的数目以引用数目的平方增加,也就是,引用数目的加倍导致了比较对增加了四倍。Brizan
和 Tansel (2006)称这个方法为”brute force” ,他们还讨论了其他的一些算法方法,例如“canopy,”“sliding window,” “bucketing,” 和 “hierarchical,”,以及这些算法的相对计算效率。以上这些算法,包括Swoosh算法,都属于merge-purge算法,尽管合并操作通常都是虚拟的,而不是显示发生的。当等价记录被一个通用的链接成功组合后,虚拟合并就发生了,而不是把他们真实地合并到一个结构中。若引用等价于一个组当中的任何一个引用(通过匹配或其他方法),那么它就被认为与一个组中的所有引用等价,并且它也成为了这个组中的一个成员。
除了真实引用的合并与整合虚拟引用到一个组相关实现之间的不同,还有一个逻辑上的差异。即从不同引用合并身份属性可以创建”phantom”引用。比如说,一个引用的属性A1的值为x,属性A2的值为y。类似的第二个引用使相应的属性A1的值为z,属性A2的值为w。这意味着合并引用在交叉结合A1,A2的值的情况下也是匹配,即(x,w)和(z,y)匹配。这些值的结合可能不会出现在一个虚拟合并的情形下,因为组合这些值是与真实的引用输入直接相关的。因为这个原因出现了许多这样的场景,ER流程创建合并引用将会生成一个不同的ER结果,而不是取决于聚集虚拟引用的过程。