萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> SQL Server 2005 數據轉換服務中的模糊查找和模糊分組

SQL Server 2005 數據轉換服務中的模糊查找和模糊分組

Surajit Chaudhuri, Kris Ganjam, Venky Ganti, Vivek Narasayya, and Theodore Vassilakiswww.yestar2000iTbulo.comiUFMof7

本文所指的是 sql server?2005 Beta 2 版,在最終版本之前內容可能會更改。www.yestar2000iTbulo.comiUFMof7

簡介

由於拼寫錯誤、截斷、缺少或插入的標記、空字段、意外的縮略語和其他不規則問題,實際的數據是“有問題”的。 因此,在數據倉庫項目中,很大一部分的時間和金錢都花費在了提取、轉換和加載 (ETL) 階段。 在 ETL 階段,新數據被清理、標准化,並使其與現有數據一致。 在 Microsoft SQL Server?2005 中可用的模糊查找和模糊分組轉換,有助於使 ETL 過程在遇到若干種在實際數據中觀測到的常見錯誤時更易復原。 它們解決一般的匹配和分組問題,而無需特定於域的規則和腳本的專家集合。 通過為您的域自定義模糊查找和模糊分組,您可以利用數據轉換服務 (Data Transformation Services,DTS) 設計器內的通用數據清理算法,並避免創建復雜的自定義規則和代碼。www.yestar2000iTbulo.comiUFMof7

模糊查找使得您能夠將輸入記錄與引用表中的無錯的、標准化的記錄匹配。 匹配過程對於在輸入記錄中存在的錯誤有復原功能。模糊查找返回最相近的匹配並指出匹配的質量。 例如,由於輸入數據中的錄入錯誤或其他錯誤,在一次新的銷售交易中輸入的客戶信息(名稱和地址)可能與包含所有當前客戶的客戶引用表中的任何記錄都不完全匹配。即使不存在完全匹配,模糊查找也會從客戶引用表返回最佳匹配記錄,並提供度量值以表明匹配質量。www.yestar2000iTbulo.comiUFMof7

模糊分組使您能夠標識一個表中的記錄的組 — 在這個表中每個組都可能對應相同的實際實體。 分組對在實際數據中觀測到的常見錯誤有復原功能,因為每組中的記錄可能彼此不相同但彼此很相似。 例如,對於將一個客戶引用表中描述每個實際客戶的所有記錄歸類到一起,模糊分組是很有用的。 www.yestar2000iTbulo.comiUFMof7

模糊查找和模糊分組為復雜的、常遇到的數據清理問題提供易用的解決方案。 盡管它們與現有的諸如 soundex、基於規則的系統、基於編輯距離的系統及全文搜索等現有方法有一些聯系,但是模糊查找和模糊分組有一些優勢: www.yestar2000iTbulo.comiUFMof7

模糊查找和模糊分組使用一個自定義的、考慮編輯距離(例如,“hits”與“bit”的距離為 2)、標記數、標記順序以及相對頻率的獨立於域的距離函數。 結果,與全文搜索相比,模糊查找和模糊分組獲得的辨別力要精細得多,因為它們捕獲了更詳細的數據結構。 www.yestar2000iTbulo.comiUFMof7

由於它們完全是標記驅動的,模糊查找和模糊分組不像 soundex 那樣有依賴於語言的組件。 www.yestar2000iTbulo.comiUFMof7

因為它們不只使用編輯距離,模糊查找和模糊分組不容易被變換誤導,而且與只使用編輯距離的方法相比,能夠檢測出更高級的模式。 www.yestar2000iTbulo.comiUFMof7

模糊查找和模糊分組緊密集成在 DTS 中,這使它們對 SQL Server 2005 的 ETL 任務來說易於使用,而且無需或只需很少的自定義編程。 www.yestar2000iTbulo.comiUFMof7

下面的部分提供了使用並了解模糊查找和模糊分組的分步指南,並且包括了這些轉換的一些實現和性能方面的內容,這對用戶來說很有用。 本文意在通過更詳細地解釋模糊查找和模糊分組的某些方面來補充在線書籍。 有關更多關於選項和配置參數方面的信息,請參閱在線書籍項。 這些項包括的信息有:列寬、層次結構、標記處理選項以及其他有用的參數,這些參數提供一些方法,以加入可用來提高某些方案的准確性的域知識。www.yestar2000iTbulo.comiUFMof7

返回頁首返回頁首

模糊查找入門

模糊查找可以通過使用損壞的或不完整的字符串關鍵字查找大型表中的數據。 例如,如果您想要按名稱和地址查找客戶信息,您可以使用模糊查找來查找這些信息,即使您的輸入與您的引用表中所存儲的記錄並不完全匹配。 用於模糊查找的最簡單的包是由包含一個源、一個模糊查找轉換和一個目標的單個 DTS 數據流任務組成(圖 1)。www.yestar2000iTbulo.comiUFMof7


1. 最簡單的模糊查找包www.yestar2000iTbulo.comiUFMof7

 

要構造最簡單的模糊查找包:

1.www.yestar2000iTbulo.comiUFMof7

打開 DTS 設計器。 www.yestar2000iTbulo.comiUFMof7

2.www.yestar2000iTbulo.comiUFMof7

創建一個新的 ETL 項目,添加一個新包,單擊 Data Flow 選項卡,然後接受 add a data flow 項選項。 www.yestar2000iTbulo.comiUFMof7

3.www.yestar2000iTbulo.comiUFMof7

在數據流圖上,從 Toolbox 拖動 OLE DB 源和目標轉換,然後通過使用一個模糊查找的實例連接它們。 www.yestar2000iTbulo.comiUFMof7

4.www.yestar2000iTbulo.comiUFMof7

通過選擇一個連接和包含有問題的數據的輸入表,將 OLE DB 源指向您的新數據。 您的數據必須包含一些字符串列。 www.yestar2000iTbulo.comiUFMof7

5.www.yestar2000iTbulo.comiUFMof7

雙擊 Fuzzy Lookup 打開自定義用戶界面 (UI)。 從 Reference table name 下拉菜單選擇您希望轉換的連接和表,指向已經存儲的引用數據。 www.yestar2000iTbulo.comiUFMof7

6.www.yestar2000iTbulo.comiUFMof7

Columns 選項卡上,將您想要比較的項從 Available Input Columns(來自 OLE DB 源)拖動到 Available Lookup Columns(來自引用表)。 例如,您可能希望將輸入中的 StreetAddress 與引用表中的 Address 相比較。 www.yestar2000iTbulo.comiUFMof7

7.www.yestar2000iTbulo.comiUFMof7

Available Lookup Columns 中的所有項選擇復選框,然後單擊 OKwww.yestar2000iTbulo.comiUFMof7

8.www.yestar2000iTbulo.comiUFMof7

OLE DB 目標指向您可以為其編寫新表的連接,然後單擊 New。 接受默認創建語句,現在您已經准備好運行模糊查找了。 www.yestar2000iTbulo.comiUFMof7

9.www.yestar2000iTbulo.comiUFMof7

要運行您剛剛創建的包,在“解決方案資源管理器”窗口中鼠標右擊其名稱,然後選擇 Executewww.yestar2000iTbulo.comiUFMof7

DTS 設計器運行此包,並提供關於管道的詳細的可視反饋。 取決於引用數據的大小,您可能會注意到在容錯索引 (Error-Tolerant Index,ETI) 創建時的延遲。 ETI 是模糊查找在運行時使用的主數據結構。 www.yestar2000iTbulo.comiUFMof7

在 ETI 創建後,所有輸入行都被處理然後結果被寫入到目標。 通過顯示由每個組件處理的行數,DTS 設計器為您提供關於管道進度的反饋。 您也可以通過鼠標右擊模糊查找和 OLE DB 目標之間的連接器將一個 DataViewer 放置在管道上。 這允許您實時看到那些模糊查找與您的輸入行匹配的行。 除了匹配元組,模糊查找還輸出可信度和相似性百分比。 有關更多關於可信度和相似性百分比的信息,請參閱本文後面的解釋結果。www.yestar2000iTbulo.comiUFMof7

返回頁首返回頁首

最有效地使用模糊查找

運行模糊查找的主要步驟是創建 ETI、執行查找和檢查輸出。 下列部分提供了關於這些步驟的每一步的詳細信息。www.yestar2000iTbulo.comiUFMof7

了解容錯索引

模糊查找通過索引在引用數據和引用行 ID 中出現的標記創建 ETI。 如果您將 ETI 存儲在了服務器上,您可以通過從中選擇一些行來查看其內容。 每個行由一個索引標記和包含該標記的引用行 ID 序列組成。 在地址示例中,如果您的引用數據包含 13831 N.E. 8th St,ETI 將包含 13831NE8thSt. 的標記項。 以下是 ETI 如何隨引用數據而增長: 在引用表中有越多的唯一標記和越多的行,ETI 中就會有越多的項和越長的列表。 有關更多關於 ETI 的大小如何隨引用數據而增長的信息,請參閱本文後面的了解性能。 標記化過程是通過模糊查找自定義屬性 delimiter string 控制的。 例如,如果您想要索引 N.E.,而不是 NE,則請將句點從分隔符列表刪除。 結果是 N.E. 作為一個單獨的標記在 ETI 中顯示,而且會在運行時作為一個單元被查找。 由於分隔符的全局應用,如 First.Avenue 也作為一個單獨的標記顯示。 www.yestar2000iTbulo.comiUFMof7

由於 ETI 的構造成本因引用數據大小的增長而變得更加昂貴,模糊查找提供一個選項,可以將 ETI 存儲在服務器上,日後可以重新使用。 這個選項使您能夠避免在每次運行模糊查找時都重新創建一個 ETI。 如果您的 ETI 會花費太多的時間而不能每次運行都重建,考慮創建一次而在接下來的運行中對其進行重用。 要做到這一點,在 Reference Table 選項卡上選擇 Store new index,然後指定一個表名稱。 www.yestar2000iTbulo.comiUFMof7

ETI 可能會變得相當巨大,所以規劃服務器空間可能是必要的。 在最壞的情況下,ETI 可能會是引用表的索引行中的數據大小的兩倍。www.yestar2000iTbulo.comiUFMof7

如果您想要存儲 ETI 但是引用數據不時地更改,您還可以啟用 Maintain stored index。 這個功能在您的 ETI 上安裝一個觸發器,它檢測對基礎引用數據的修改。 只要這樣的修改發生,此觸發器將相應的更改傳遞到 ETI,從而使其保持為最新。 如果您不安裝表維護,對您的引用表所做的更改將在沒有警告的情況下使任何關聯的 ETI 無效。www.yestar2000iTbulo.comiUFMof7

表維護功能在 Beta 2 版中不可用。www.yestar2000iTbulo.comiUFMof7

在運行時發生了什麼

在運行時,模糊查找使用 ETI 查找其輸入的最佳匹配。 在確定最佳匹配時,最重要的參數是 MinSimilarity 閥值。 您可以通過使用模糊查找UI 來設置這個自定義屬性。 引用元組只有在其與輸入足夠相似時才會被返回。 因此,如果您設置了一個很高的相似性要求,模糊查找考慮的候選也會較少,而且結果可能是不返回任何匹配。 如果您將 MinSimilarity 設置得低,模糊查找將考慮更多的候選,而更有可能找到一個匹配,但搜索可能會用去更長的時間。 www.yestar2000iTbulo.comiUFMof7

匹配條件包括: www.yestar2000iTbulo.comiUFMof7

為匹配給出的引用元組而需要對輸入元組做的標記或字符插入、刪除、替換以及重新排序的數量。 例如,輸入 122 First Lane 很可能被認為比輸入 22 N.E. 1st Ln & Leary Way 更接近引用 122 First Lnwww.yestar2000iTbulo.comiUFMof7

來自引用表的標記頻率。 非常頻繁的標記通常被認為幾乎不會提供對匹配有用的信息。 相對稀少的標記被認為是它們在其中出現的行的特性。 www.yestar2000iTbulo.comiUFMof7

設置正確的閥值取決於您的應用程序和數據的性質。 如果您要求一個在您的輸入和引用之間的相近的匹配,您應該考慮為 MinSimilarity 設置一個大值,如 0.95。 如果您在進行一個研究性的項目,您可能會對檢查弱匹配與相近匹配一樣感興趣,那麼您應該將 MinSimilarity 設置為一個較低的值,如 0.1。 並沒有可以用於確定這個范圍的固定規則,所以建議您對數據設置進行試驗。 查看幾次運行的輸出可以供設置最優值考慮。 例如,您執行第一次運行使用的閥值為 0.1。 您觀測到一個特定的輸入與一個相似性為 0.2 的特定的輸出匹配。 如果對於您的應用程序來說此元組過於不相似(詳細信息請參閱解釋結果),第二次運行您可以將 MinSimilarity 設置為 0.3,從而排除與其過於不相似的匹配。 在一個小的測試集上重復此過程並反復數次測試設置,這會幫助您確定什麼設置對於您的應用程序是合適的。www.yestar2000iTbulo.comiUFMof7

如果您想查看每個輸入的多個匹配,您可以將 Maximum matches to output per lookup 屬性設置為一個大於 1 的值 n。那麼模糊查找會返回頂部的 n 個匹配。 不過,為每個輸入記錄查找匹配所需的時間也增加了。 選擇一個高 n 值不一定總是返回 n 個匹配,因為即使當 MinSimilarity 設置為 0 時,模糊查找也可能會認為某些行過於不相似而不返回。 有關更多關於對性能的影響的信息,請參閱本文後面的了解性能。 www.yestar2000iTbulo.comiUFMof7

模糊查找還為每個匹配引用記錄返回一個置信量度。 如果所有匹配都同樣相近,它們每一個的置信度約等於 1/n。 置信度與相似性的不同之處在於,它不僅是輸入行和其所限定的引用行的一個函數,它取決於返回的整個結果集,可能還取決於下一個最佳可用引用行。 www.yestar2000iTbulo.comiUFMof7

解釋結果

如何解釋結果取決於您的應用程序目標。 如果您想顯示存在一些相似的匹配,您應該設置一個高相似性閥值要求並篩選高置信度的匹配。 當引用表有一個輸入元組的相近匹配時,相似性為高。 如果在所有引用元組中有一個記錄很相近地匹配輸入元組,那麼置信度也為高。 因此,您可以使用相似性和置信度值來確定您想要如何進一步處理一個模糊查找的結果。 www.yestar2000iTbulo.comiUFMof7

您可能還想要了解為什麼沒有獲取某些行。 主要的原因是 ETI 和模糊查找檢索策略。 當模糊查找索引一個標記(如 committee)時,它也索引子標記元素 comm.、ommimmitmittittettee。 這個方案有助於提高檢索和從輸入錯誤恢復的速度。 例如,如果 committee 出現在引用數據中,而輸入的是 comittee(只有一個 m),模糊查找可能能夠通過查找子標記 mitt 來找到正確的引用行,即使沒有檢索到完整輸入標記。 這就是模糊查找索引被稱為“容錯”的原因之一。 www.yestar2000iTbulo.comiUFMof7

不過,這個檢索過程並不是完美的。 例如,如果引用標記 Pattel 在輸入中被誤拼為 Patel(只有一個 t),沒有一個輸入標記片段(Pateatel)會匹配索引引用片段(Pattattettel)。 結果是,模糊查找必須依賴存在於元組中的其他標記來執行正確的檢索。 如果在行中不存在其他標記,模糊查找將不能恢復正確的引用行。 但是,對於包含多於一個標記的行來說,模糊查找通常能夠基於輸入中的標記和片段獲取幾個候選行。www.yestar2000iTbulo.comiUFMof7

列寬

在一些情況下,您可能需要更嚴密地檢查數據。 例如,模糊查找可能會認為 CA WA 相互近似,即使在地址表的狀態列中這兩個字符串在語義上相差甚遠。 因為模糊查找是獨立於域的,您必須將一些知識編碼到您的 DTS 管道中。 在此例中,您可能希望查找一個 State 的精確匹配或將此列的 MatchContribution 改為一個更大的數,比如 5,這可通過使用高級編輯器(要打開高級編輯器,單擊設計器中的模糊查找組件,然後單擊 Properties 窗格中的 ShowAdvanced Editor)完成。 另一種方法是,您可以使用 Conditional Split 轉換首先查找 State 的精確匹配,然後如果不存在精確匹配,再執行模糊查找。www.yestar2000iTbulo.comiUFMof7

返回頁首返回頁首

模糊分組入門

您可以使用模糊分組來檢測有字符串屬性的行的集合中的“模糊”或近似的副本。 例如,您可以使用模糊分組合並來自不同部門的客戶表。 模糊分組使用的最簡單的包由一個包含一個源、一個模糊分組轉換和一個目標的單個 DTS 數據流任務組成(圖 2)。www.yestar2000iTbulo.comiUFMof7


2. 最簡單的模糊分組包www.yestar2000iTbulo.comiUFMof7

 

要構建最簡單的模糊分組包:

1.www.yestar2000iTbulo.comiUFMof7

打開 DTS 設計器。 www.yestar2000iTbulo.comiUFMof7

2.www.yestar2000iTbulo.comiUFMof7

把 OLE DB 源和目標轉換拖動到一個數據流上,並通過使用模糊分組的一個實例連接它們。 www.yestar2000iTbulo.comiUFMof7

3.www.yestar2000iTbulo.comiUFMof7

通過選擇一個連接和表名稱,將 OLE DB 源指向包含有可能重復的數據的表。 www.yestar2000iTbulo.comiUFMof7

這個表必須包含一些可供模糊分組進行分析的字符串列。 www.yestar2000iTbulo.comiUFMof7

4.www.yestar2000iTbulo.comiUFMof7

雙擊模糊分組來打開自定義 UI,選擇 Available Input Columns(來自 OLE DB 源)中所有項的復選框,然後單擊 OK。 www.yestar2000iTbulo.comiUFMof7

5.www.yestar2000iTbulo.comiUFMof7

將 OLE DB 目標指向您可以為其編寫新表的連接,然後單擊 New。 接受默認創建語句,現在您已經准備好運行模糊分組了。 www.yestar2000iTbulo.comiUFMof7

6.www.yestar2000iTbulo.comiUFMof7

要運行您剛剛創建的包,在“解決方案資源管理器”窗口中鼠標右擊其名稱,然後選擇 Executewww.yestar2000iTbulo.comiUFMof7

取決於您輸入數據的大小,您可能會在模糊分組緩沖數據時遇到延遲。 在行進一步沿管道流動之前,模糊分組調用模糊查找來為輸入數據創建一個 ETI,並將 ETI 存儲在臨時連接上。 結果是,可調大小的對象可能會被放置在該連接上。 輸入上的 ETI 創建後,所有的輸入行都被處理然後結果被寫入到目標。 有關分組是如何執行的更多信息,請參閱本文後面的最有效地使用模糊分組。 www.yestar2000iTbulo.comiUFMof7

在默認情況下,模糊分組輸出一些名為 _key_out_key_in 的附加列。 當行流經管道時,模糊分組為其每一個分配一個 ID,即 _key_in。 當模糊分組將某一行集合分組時,它確定哪個行應該作為代表。 它然後將組中的行的所有 _key_out 列分配為該代表的 _key_in 值。 結果是,如果您希望只將代表行寫入到您的輸出,您可以通過一個只選擇 _key_in 等於 _key_out 的行的條件拆分轉換來篩選模糊分組輸出。www.yestar2000iTbulo.comiUFMof7

返回頁首返回頁首

最有效地使用模糊分組

與模糊查找相比,模糊分組需要調整的外部參數較少,不過,了解它的一些內部機制會幫助您獲得最佳性能。模糊分組在後台使用模糊查找來執行分組。 例如,模糊分組將其標記化的字符串原封不動地傳遞給模糊查找。 在運行時,模糊分組依據輸入數據使用模糊查找創建一個臨時 ETI,並用其確定哪些輸入行是彼此相近的。模糊分組檢查每個輸入行,並對數據執行多種模糊查找查詢,同時自適應地設置 MinSimilarity 閥值。 依據得回的結果數,由它生成組。www.yestar2000iTbulo.comiUFMof7

正如使用模糊查找,模糊分組要求您設置 MinSimilarity 閥值。 只有元組彼此的相似性高於在 UI 中設置的閥值時,它們才會被分組,記住這一點是很重要的。 因此,如果您用一個低閥值運行模糊分組並發現很不近似的元組被分組到一起,那麼就提高相似性設置。模糊分組將每個元組的相似性報告給該組的代表元組。 代表元組的選擇是無法影響的。 如果您想要拆分一個組,將所需的相似性設置為高於報告數。 如果被分組的元組過少,您可以對相似性值執行一個二進制搜索,以確定為對某些元組進行分組,將相似性閥值設置為多低合適。 例如,如果設置為 0.9 導致組太少,而 0.7 導致組太多,那麼試一下 0.8www.yestar2000iTbulo.comiUFMof7

是無法強制模糊分組對兩個元組分組的。 即使將相似性設置為零也不一定會返回帶有所有元組的一個單個組。 因為組的質量極大地取決於您的數據的特定語義,所以試驗是找出您的應用程序的正確設置的唯一方法。www.yestar2000iTbulo.comiUFMof7

您還可以嘗試使用模糊查找為您的輸入數據創建一個 ETI,並通過使用一個大值以返回該數量的匹配和高閥值以達到所需的相似性,來查找特定的行。 不過,模糊分組合並了以下兩項內容:將元組適當地歸類為多個重復項的集合的附加智能及使代表規范化的建議。 www.yestar2000iTbulo.comiUFMof7

返回頁首返回頁首

了解性能

盡管其界面簡單,但模糊查找和模糊分組是復雜的過程,了解其性能需要一些分析。 下列各節解釋了常見性能問題並提供了一些措施的示例。 正如您將要看到的,模糊查找和模糊分組性能的主要決定因素是數據大小。 對於模糊查找和模糊分組來說,這是指輸入行、標記和字節的數量。 對於模糊查找,還有關於引用數據大小的附加注意事項。 次要的決定因素是可用的計算資源,包括內存、數據庫服務器上的空間、網絡帶寬,以及設置這些資源的方法。www.yestar2000iTbulo.comiUFMof7

設置注意事項

要從模糊查找和模糊分組獲得最佳性能,遵循關於內存使用和體系結構的一些原則是很有用處的。www.yestar2000iTbulo.comiUFMof7

要將在您計算機上的內存要求最小化:

使用更輕量的 DTExec.exe 而非完整的 DTS 設計器來在生產中執行包。 www.yestar2000iTbulo.comiUFMof7

去除您管道中未使用的列,因為其需要內存。 www.yestar2000iTbulo.comiUFMof7

避免在輸入中使用長 varchar 列,因為它們由 DTS 管道轉換為固定寬度的 char 列。 www.yestar2000iTbulo.comiUFMof7

通過限制 varchar 字段的轉換,將所有數據傳遞到長度與列中最長的項相等的固定長度 char 字段。 www.yestar2000iTbulo.comiUFMof7

如果您選擇在同一台計算機上運行 DTS 客戶端和服務器,您將會避免潛在的網絡問題,但是可能遇到內存爭用。 您可以使用 sp_configure 並將 set max server memory 設置設為 256 以減輕兩個進程之間的內存爭用。 您還可以使用 DTS 設計器中的高級編輯器設置 MaxMemoryUsage Fuzzy Lookup 自定義屬性。www.yestar2000iTbulo.comiUFMof7

在以下各節中報告的所有實驗趨勢線都是使用下列設置獲得的: www.yestar2000iTbulo.comiUFMof7

一台有 Intel Pentium III 1 千兆赫 (GHz) 處理器的服務器、 512 兆字節 (MB) 的 RAM,以及 Microsoft Windows Server 2003 企業版。 www.yestar2000iTbulo.comiUFMof7

與 DTS 客戶端運行在同一台機器上的 SQL Server。 www.yestar2000iTbulo.comiUFMof7

對於反復出現的其引用表比通常的輸入表大很多的模糊查找任務,您應該考慮預計算索引。 在這些情況下,重新創建索引會在實際查找所花費的運行時間中占支配地位,而這使得管理附加表非常值得。www.yestar2000iTbulo.comiUFMof7

對於大的模糊查找輸入任務,您可能想要考慮將多個 DTS 客戶端與一台中央服務器一起使用。 在這個設置中,此中央服務器承載引用表和預計算的 ETI。 通過使用中央引用表和 ETI,每個 DTS 客戶端對該大輸入表任務的一部分執行模糊查找。 當模糊查找完成後,您重新合並由各個 DTS 客戶端生成的所有輸出表。 www.yestar2000iTbulo.comiUFMof7

這個體系結構不適用於模糊分組。www.yestar2000iTbulo.comiUFMof7

措施

對模糊查找和模糊分組性能的最大影響來自於所使用數據的大小。 在模糊查找中,這是指引用和輸入表的大小。 在模糊分組中,這是指輸入表的大小。 輸入的大小與兩個方面有關系: www.yestar2000iTbulo.comiUFMof7

行和列的數量對性能有最大的影響。 您有的數據越多,模糊查找和模糊分組所需要的資源就越多。 以下各節中的數字展示了不同方案下的特定數據。 www.yestar2000iTbulo.comiUFMof7

每個模糊匹配在其上執行的字符串列的平均標記數也對性能有影響。 模糊轉換並不意味著文檔檢索。 對於較長的字段(多於 20 個標記),使用 SQL Server 全文索引功能可能會更有效率。 www.yestar2000iTbulo.comiUFMof7

以下各節展示了一些詳細的模糊查找和模糊分組性能圖表。 這些圖表旨在建議轉換的趨勢,而不是給出絕對數字。 一些圖表表達對一個基准度量值增加或減少的比例。 在這些情況下,該圖表能夠被用於粗略推斷多大的輸入大小增長會導致運行時間的加倍。www.yestar2000iTbulo.comiUFMof7

模糊查找性能

決定模糊查找性能的兩個主要變量是引用數據的大小和輸入數據的大小。 這些變量與模糊查找的兩個階段對應: 創建 ETI 和實際執行查找。 總的來說,這些任務在其各自的輸入大小上是線性變化的。 取決於您的輸入的大小,實際的查找時間可能少於或多於 ETI 創建時間。www.yestar2000iTbulo.comiUFMof7

圖 3 說明了與引用表大小相對的創建 ETI 所需的時間。 如前面所解釋的,創建 ETI 可以執行一次並將結果保存,從而避免每次都因為創建造成開銷。 由此得到的 ETI 的大小最高是索引引用列的大小的兩倍。 注意一些 DTS 管道計數器在創建大型 ETI 的時候可能看來是凍結的。 您可以通過觀測服務器上表的增長來跟蹤進展。www.yestar2000iTbulo.comiUFMof7


3. 與引用表大小相對的 ETI 創建時間www.yestar2000iTbulo.comiUFMof7

 

ETI 的大小也影響運行時間。 ETI 包含的數據越多,它的使用就越昂貴,因為這表示需要更大的搜索空間。 圖 4 說明了與固定輸入大小的引用表大小相對的模糊查找的運行時間性能。 圖 4 中的曲線也取決於對在查找時間中扮演重要角色的不同行的標記分布。 有更多內存的話能夠減輕大的引用表和 ETI 的影響。 在運行時,模糊查找將部分 ETI 緩存在內存裡,其值最高等於 MaxMemoryUsage 自定義屬性中指定的約束大小。 必須使用高級編輯器來設置這個限制。 www.yestar2000iTbulo.comiUFMof7


4. 與引用表的大小相對的模糊查找運行時間www.yestar2000iTbulo.comiUFMof7

 

排在數據大小對性能的影響之後,對性能的最大影響來自於剩下的轉換參數,如要返回的匹配數、所需的相似性閥值,以及對其進行匹配的列的數量。www.yestar2000iTbulo.comiUFMof7

要求模糊查找返回的匹配越多,搜索就越慢。 這是因為會連續搜索到候選元組的列表中,直至找到足夠的匹配。www.yestar2000iTbulo.comiUFMof7

要求的相似性因子越大,模糊查找搜索就越快。 這是因為在要求高相似性的搜索中,模糊查找更積極地放棄元組。www.yestar2000iTbulo.comiUFMof7

模糊分組性能

模糊分組比模糊查找依賴的變量更少。 影響模糊分組性能的主要變量是輸入數據大小。 圖 5 展示了當輸入數據變大後,成本變化呈線性。 圖表前面部分的非線性是由於 ETI 的創建時間。 隨著匹配閥值的增大,因為找不到相似的元組來創建分組,執行時間最終會減小。 這顯示在圖 6 中。圖 6 展示出數據的分布扮演了重要角色,而且可能導致運行時間的一些非線性變化。 要注意的是,運行大的模糊分組任務,會導致您指定作為臨時連接的服務器上的臨時對象也很大。 在模糊分組預處理步驟中,DTS 管道可能看來是凍結的。 如果發生這種情況,您可以通過觀測服務器上臨時對象的大小來跟蹤進展。www.yestar2000iTbulo.comiUFMof7


5. 與 MinSimilarity=0.8 的輸入大小相對的模糊分組時間www.yestar2000iTbulo.comiUFMof7

 

6. 與 20K 行的 MinSimilarity 閥值相對的模糊分組時間www.yestar2000iTbulo.comiUFMof7

  返回頁首返回頁首

小結

模糊查找和模糊分組轉換是獨立於域的基元,可以有助於數據清理和准備。 它們采用基於標記的距離概念 — 您可用於對您的數據執行細致的查找和分組操作。 關於距離函數和該組件的整體體系結構的進一步的詳細信息,可以在下面引用的研究論文中找到。 因為模糊查找和模糊分組是作為 DTS 組件實現的,您可以在較大的 ETI 過程中透明地使用它們,並利用 DTS 基礎結構,如日志記錄、事件和錯誤跟蹤,無須使用自定義編程,從而避免了相關費用。 盡管需要一些資源來計算轉換,但模糊查找和模糊分組將曾幾何時、不用大量手動干預和自定義工具就難於完成或無法完成的操作自動化了。www.yestar2000iTbulo.comiUFMof7

返回頁首返回頁首

更多信息

研究論文

Eliminating Fuzzy Duplicates in Data Warehouses。在香港舉行的第 28 屆超大數據庫 (Very Large Databases,VLDB 2002)國際會議的會議報告。 Rohit Ananthakrishna、Surajit Chaudhuri、Venkatesh Ganti。 www.yestar2000iTbulo.comiUFMof7

Robust and Efficient Fuzzy Match for Online Data Cleaning。ACM SIGMOD 2003,San Diego。 Surajit Chaudhuri、Kris Ganjam、Venkatesh Ganti、Rajeev Motwani。 www.yestar2000iTbulo.comiUFMof7

SQL Server 在線書籍

模糊查找和模糊分組部分 www.yestar2000iTbulo.comiUFMof7

DTS 部分www.yestar2000iTbulo.comiUFMof7

轉到原英文頁面www.yestar2000iTbulo.comiUFMof7



關鍵詞:查找 

copyright © 萬盛學電腦網 all rights reserved