斯坦福實體解析框架(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結果,而不是取決於聚集虛擬引用的過程。