本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)對(duì)比方法、裝置和系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)和商業(yè)活動(dòng)的日益繁盛,系統(tǒng)維護(hù)人員需要越來越頻繁地對(duì)系統(tǒng)進(jìn)行重構(gòu)和迭代以滿足例如系統(tǒng)升級(jí)或是商業(yè)合并等的需要。系統(tǒng)級(jí)重構(gòu)通常需要對(duì)操作前后及不同版本間的數(shù)據(jù)進(jìn)行對(duì)比,以驗(yàn)證系統(tǒng)的正確性。但是系統(tǒng)的多樣化導(dǎo)致需要處理的數(shù)據(jù)格式多樣化、數(shù)據(jù)存儲(chǔ)方式的多樣化及數(shù)據(jù)量大小的不同。另外,對(duì)于大型系統(tǒng)而言,由于數(shù)據(jù)量規(guī)模巨大(例如,PB級(jí)的數(shù)據(jù)量),無法通過目前主流軟件工具在合理時(shí)間內(nèi)進(jìn)行管理,因此通常需要上千甚至幾萬臺(tái)計(jì)算機(jī)通過網(wǎng)絡(luò)連接來共同完成特定數(shù)據(jù)處理任務(wù)。
針對(duì)數(shù)據(jù)對(duì)比,現(xiàn)有的解決方式是為每個(gè)系統(tǒng)產(chǎn)生的數(shù)據(jù)專門開發(fā)一個(gè)腳本進(jìn)行數(shù)據(jù)對(duì)比。這種現(xiàn)有方案具有諸多缺點(diǎn)。首先,由于開發(fā)的腳本是針對(duì)單一系統(tǒng)產(chǎn)生的數(shù)據(jù),對(duì)于不同的系統(tǒng)產(chǎn)生的數(shù)據(jù)很難直接復(fù)用。其次,使用腳本進(jìn)行數(shù)據(jù)對(duì)比造成處理效率低下,對(duì)于大型系統(tǒng)而言通常耗時(shí)過長(zhǎng)。第三,問題排除不便,即便在數(shù)據(jù)對(duì)比完成后發(fā)現(xiàn)問題,也很難快速找到數(shù)據(jù)對(duì)比前的原始數(shù)據(jù)。第四,部分?jǐn)?shù)據(jù)格式用腳本難以讀取。正式的線上系統(tǒng)一般不會(huì)以腳本語言為主要開發(fā)語言,導(dǎo)致這些系統(tǒng)產(chǎn)生的數(shù)據(jù)格式只有用該系統(tǒng)開發(fā)語言編寫的對(duì)應(yīng)接口庫讀取才會(huì)比較方便。
由此,需要一種新的數(shù)據(jù)處理方法、裝置和系統(tǒng),尤其適用于大數(shù)據(jù)(例如,PB級(jí)數(shù)據(jù))和系統(tǒng)級(jí)的操作。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述至少一個(gè)問題,本發(fā)明提出了一種新的數(shù)據(jù)對(duì)比方法、裝置和系統(tǒng)。本發(fā)明利用分布式數(shù)據(jù)對(duì)比平臺(tái)對(duì)數(shù)據(jù)進(jìn)行讀取、統(tǒng)一格式轉(zhuǎn)換和對(duì)比,用戶只需在前端進(jìn)行簡(jiǎn)單配置和操作,就能夠?qū)Ω鞣N類型的海量數(shù)據(jù)進(jìn)行快速對(duì)比,并且并實(shí)現(xiàn)對(duì)比結(jié)果的直觀查看。
根據(jù)本發(fā)明的一個(gè)方面,提出了一種數(shù)據(jù)對(duì)比方法,包括:轉(zhuǎn)換步驟,利用分布式計(jì)算架構(gòu)對(duì)獲取的第一數(shù)據(jù)集和第二數(shù)據(jù)集中各自包含的多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,使得轉(zhuǎn)換后的數(shù)據(jù)項(xiàng)具有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),其中所述統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)包括多個(gè)字段;對(duì)比步驟,利用所述分布式計(jì)算架構(gòu)根據(jù)數(shù)據(jù)對(duì)比配置文件對(duì)所述轉(zhuǎn)換后的第一數(shù)據(jù)集和第二數(shù)據(jù)集中的所述多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比。
這樣,用戶只需配置文件就能夠利用分布式計(jì)算架構(gòu)來實(shí)現(xiàn)對(duì)數(shù)據(jù),尤其是大數(shù)據(jù)的格式轉(zhuǎn)換和對(duì)比,由此免除了對(duì)開發(fā)數(shù)據(jù)對(duì)比任務(wù)腳本的需要,并且能夠通過分布式的并行計(jì)算提升數(shù)據(jù)對(duì)比效率。
優(yōu)選地,所述數(shù)據(jù)對(duì)比配置文件定義了用于區(qū)分各數(shù)據(jù)項(xiàng)的關(guān)鍵字段,并且所述對(duì)比步驟可以包括:對(duì)第一數(shù)據(jù)集和第二數(shù)據(jù)集中關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)的其他至少一個(gè)字段進(jìn)行比較。由此實(shí)現(xiàn)對(duì)數(shù)據(jù)集中各個(gè)數(shù)據(jù)項(xiàng)的對(duì)比。
優(yōu)選地,對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)中的其他至少一個(gè)字段進(jìn)行比較包括:所述分布式計(jì)算架構(gòu)按照所述關(guān)鍵字段對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中多個(gè)數(shù)據(jù)項(xiàng)的排序來對(duì)關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)進(jìn)行比較。所述排序可由所述分布式計(jì)算架構(gòu)進(jìn)入對(duì)比步驟時(shí)自行做出的。由此,能夠明確分布式系統(tǒng)中各計(jì)算終端所需進(jìn)行對(duì)比操作的對(duì)象,由此提升對(duì)比效率。
優(yōu)選地,所述數(shù)據(jù)對(duì)比配置文件定義了所述數(shù)據(jù)結(jié)構(gòu)中至少一個(gè)字段的比較方式;或者所述數(shù)據(jù)對(duì)比配置文件和默認(rèn)設(shè)置各自定義了所述數(shù)據(jù)結(jié)構(gòu)中至少一個(gè)字段的比較方式。由此,通過默認(rèn)或是外部配置,就能夠?qū)崿F(xiàn)對(duì)各類數(shù)據(jù)的對(duì)比,由此提升本發(fā)明對(duì)比方案的功能性并減小分布式架構(gòu)的實(shí)現(xiàn)成本。
優(yōu)選地,述數(shù)據(jù)對(duì)比配置文件還包括用于實(shí)現(xiàn)至少一個(gè)字段比較的擴(kuò)展腳本,并且所述對(duì)比步驟還包括基于所述擴(kuò)展腳本對(duì)所述至少一個(gè)字段進(jìn)行對(duì)比。由此進(jìn)一步拓展本發(fā)明對(duì)比方案的可用性。
優(yōu)選地,所述轉(zhuǎn)換步驟可以包括利用分布式計(jì)算架構(gòu)基于所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中各自包括的多個(gè)數(shù)據(jù)項(xiàng)的初始數(shù)據(jù)類型使用工廠函數(shù)將所述多個(gè)數(shù)據(jù)項(xiàng)轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。由此,通過工廠函數(shù)定制不同類型的讀取模塊并轉(zhuǎn)化為統(tǒng)一的內(nèi)部數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)了對(duì)于不同類型數(shù)據(jù)的通用性數(shù)據(jù)對(duì)比。
優(yōu)選地,所述分布式計(jì)算架構(gòu)包括多個(gè)計(jì)算端,在所述轉(zhuǎn)換步驟中每個(gè)計(jì)算端對(duì)所述第一數(shù)據(jù)集和/或所述第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,在所述對(duì)比步驟中每個(gè)計(jì)算端對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,并且每個(gè)計(jì)算端在所述轉(zhuǎn)換步驟和所述對(duì)比步驟中處理相同或不同的數(shù)據(jù)項(xiàng)。由此,通過在各計(jì)算端之間、各任務(wù)之間靈活分配數(shù)據(jù)項(xiàng),實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的高效對(duì)比。
根據(jù)本發(fā)明的另一個(gè)發(fā)明,提出了一種數(shù)據(jù)對(duì)比裝置,包括:數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元,用于利用分布式計(jì)算架構(gòu)對(duì)獲取的第一數(shù)據(jù)集和第二數(shù)據(jù)集中各自包含的多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,使得轉(zhuǎn)換后的數(shù)據(jù)項(xiàng)具有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),其中所述統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)包括多個(gè)字段;數(shù)據(jù)項(xiàng)對(duì)比單元,用于利用分布式計(jì)算架構(gòu)根據(jù)數(shù)據(jù)對(duì)比配置文件對(duì)所述轉(zhuǎn)換后的第一數(shù)據(jù)集和第二數(shù)據(jù)集中的所述多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比。
優(yōu)選地,所述數(shù)據(jù)對(duì)比配置文件定義了用于區(qū)分各數(shù)據(jù)項(xiàng)的關(guān)鍵字段,并且,所述數(shù)據(jù)項(xiàng)對(duì)比單元對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)的其他至少一個(gè)字段進(jìn)行比較。
優(yōu)選地,所述數(shù)據(jù)項(xiàng)對(duì)比單元根據(jù)所述關(guān)鍵字段對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中多個(gè)數(shù)據(jù)項(xiàng)的排序來對(duì)關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)的其他至少一個(gè)字段進(jìn)行比較。
優(yōu)選地,所述數(shù)據(jù)對(duì)比配置文件還包括用于實(shí)現(xiàn)至少一個(gè)字段比較的擴(kuò)展腳本,并且所述數(shù)據(jù)項(xiàng)對(duì)比單元基于所述擴(kuò)展腳本對(duì)所述至少一個(gè)字段進(jìn)行對(duì)比。
優(yōu)選地,所述數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元基于所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中各自包括的多個(gè)數(shù)據(jù)項(xiàng)的初始數(shù)據(jù)類型使用工廠函數(shù)將所述多個(gè)數(shù)據(jù)項(xiàng)轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。
優(yōu)選地,所述分布式計(jì)算架構(gòu)包括分布式連接的多個(gè)計(jì)算端,每個(gè)計(jì)算端中的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元對(duì)所述第一數(shù)據(jù)集和/或所述第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,每個(gè)計(jì)算端的數(shù)據(jù)項(xiàng)對(duì)比單元對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,并且每個(gè)計(jì)算端在所述數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元和所述數(shù)據(jù)項(xiàng)對(duì)比單元處理相同或不同的數(shù)據(jù)項(xiàng)。
根據(jù)本發(fā)明的又一個(gè)方面,提出了一種數(shù)據(jù)對(duì)比系統(tǒng),包括分布式計(jì)算架構(gòu)和客戶端,其中,客戶端選擇要進(jìn)行對(duì)比的第一數(shù)據(jù)集和第二數(shù)據(jù)集,配置數(shù)據(jù)對(duì)比配置文件并將所述數(shù)據(jù)對(duì)比配置文件發(fā)送至分布式計(jì)算架構(gòu),分布式計(jì)算架構(gòu)包括分布式連接的多個(gè)計(jì)算端,每個(gè)計(jì)算端對(duì)獲取的第一數(shù)據(jù)集和第二數(shù)據(jù)集中各自包含的多個(gè)數(shù)據(jù)項(xiàng)中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,使得轉(zhuǎn)換后的數(shù)據(jù)項(xiàng)具有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),其中所述統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)包括多個(gè)字段,并且每個(gè)計(jì)算端根據(jù)數(shù)據(jù)對(duì)比配置文件對(duì)所述轉(zhuǎn)換后的第一數(shù)據(jù)集和第二數(shù)據(jù)集中的所述多個(gè)數(shù)據(jù)項(xiàng)中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行對(duì)比。
優(yōu)選地,所述客戶端可以在web頁面上實(shí)現(xiàn)對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集的選擇以及對(duì)所述數(shù)據(jù)對(duì)比配置文件的配置。
優(yōu)選地,所述客戶端在所述數(shù)據(jù)對(duì)比配置文件中定義了用于區(qū)分各數(shù)據(jù)項(xiàng)的關(guān)鍵字段,并且所述多個(gè)計(jì)算端在從轉(zhuǎn)換任務(wù)進(jìn)入對(duì)比任務(wù)時(shí),根據(jù)所述關(guān)鍵字段對(duì)數(shù)據(jù)項(xiàng)進(jìn)行排序,并且每個(gè)計(jì)算端所對(duì)比的是所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中關(guān)鍵字段相同或相應(yīng)的部分?jǐn)?shù)據(jù)項(xiàng)。
優(yōu)選地,所述客戶端指明了所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中各自包括的多個(gè)數(shù)據(jù)項(xiàng)的初始數(shù)據(jù)類型,所述多個(gè)計(jì)算端基于所述初始數(shù)據(jù)類型使用工廠函數(shù)將所述多個(gè)數(shù)據(jù)項(xiàng)轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。
優(yōu)選地,所述客戶端在所述數(shù)據(jù)對(duì)比配置文件中定義了所述數(shù)據(jù)結(jié)構(gòu)中至少一個(gè)字段的比較方式和/或用于實(shí)現(xiàn)至少一個(gè)字段比較的擴(kuò)展腳本,所述多個(gè)計(jì)算端根據(jù)所述比較方式和/或所述擴(kuò)展腳本對(duì)所述至少一個(gè)字段進(jìn)行比較。。
優(yōu)選地,每個(gè)計(jì)算端在轉(zhuǎn)換任務(wù)和對(duì)比任務(wù)中處理相同或不同的數(shù)據(jù)項(xiàng)。
根據(jù)本發(fā)明的數(shù)據(jù)對(duì)比方法、裝置和系統(tǒng),能夠?yàn)楹A繑?shù)據(jù)對(duì)比提供一個(gè)分布式對(duì)比平臺(tái),由此提升數(shù)據(jù)處理效率并減輕對(duì)人為編寫對(duì)比任務(wù)腳本的需求。
附圖說明
通過結(jié)合附圖對(duì)本公開示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
圖1示出了可以實(shí)施本發(fā)明方案的系統(tǒng)的例子。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)對(duì)比方法。
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)對(duì)比裝置。
圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)對(duì)比系統(tǒng)。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
大型系統(tǒng)數(shù)據(jù)對(duì)比由于需要處理的數(shù)據(jù)量特別大,通常由于內(nèi)存限制而無法在單機(jī)上實(shí)現(xiàn)。另外,現(xiàn)有技術(shù)中為每個(gè)系統(tǒng)專門開發(fā)的對(duì)比腳本運(yùn)行一次時(shí)間過長(zhǎng)。在數(shù)據(jù)類型多樣的情況下,還需要開發(fā)多個(gè)腳本。上述問題都導(dǎo)致了現(xiàn)有技術(shù)中針對(duì)大數(shù)據(jù)(例如,PB級(jí)數(shù)據(jù),即,2的50次方字節(jié)的數(shù)據(jù))的數(shù)據(jù)對(duì)比方案效率低下。
鑒于上述問題,本發(fā)明通過開發(fā)一個(gè)分布式數(shù)據(jù)對(duì)比系統(tǒng),并配套提供一個(gè)客戶端(例如,使用前端),使得只需在客戶端進(jìn)行一些配置操作就能夠?qū)崿F(xiàn)高效快速的數(shù)據(jù)對(duì)比并能實(shí)現(xiàn)對(duì)比結(jié)果的直觀查看。
本發(fā)明實(shí)施例所提供數(shù)據(jù)一致性對(duì)比方法可應(yīng)用于如圖1所示的系統(tǒng)。參考圖1所示,需要進(jìn)行對(duì)比的數(shù)據(jù)集A和數(shù)據(jù)集B可以是計(jì)算機(jī)集群中的數(shù)據(jù),比如,分別可以是大數(shù)據(jù)集群進(jìn)行系統(tǒng)更替時(shí)的更替前和更替后的大數(shù)據(jù),分別可以是集群中進(jìn)行算法優(yōu)化所對(duì)應(yīng)的優(yōu)化前的計(jì)算結(jié)果和優(yōu)化后的計(jì)算結(jié)果,也分別可以是從一個(gè)計(jì)算機(jī)集群遷移到另一個(gè)計(jì)算機(jī)集群所對(duì)應(yīng)的遷移前的數(shù)據(jù)和遷移后的數(shù)據(jù),等等。需要進(jìn)行對(duì)比的數(shù)據(jù)集A和數(shù)據(jù)集B可能會(huì)具有不同的數(shù)據(jù)格式,不同的數(shù)據(jù)存儲(chǔ)方式,并且其數(shù)據(jù)量的大小也可能不同。
分布式計(jì)算架構(gòu)106通常包括多個(gè)計(jì)算設(shè)備,例如能夠并行執(zhí)行計(jì)算任務(wù)的上千甚至幾萬臺(tái)通過網(wǎng)絡(luò)連接的計(jì)算機(jī)。能夠?qū)崿F(xiàn)本發(fā)明數(shù)據(jù)對(duì)比方案的分布式行計(jì)算架構(gòu)106可以從例如存儲(chǔ)有數(shù)據(jù)集A和數(shù)據(jù)集B的計(jì)算機(jī)集群102和104中讀取數(shù)據(jù)集A和B,并將數(shù)據(jù)集中包含的數(shù)據(jù)項(xiàng)轉(zhuǎn)換為統(tǒng)一格式。隨后,分布式計(jì)算架構(gòu)106可以根據(jù)例如來自客戶端110的數(shù)據(jù)對(duì)比配置文件來對(duì)在前讀取并轉(zhuǎn)換格式的數(shù)據(jù)集A和數(shù)據(jù)集B進(jìn)行對(duì)比。在數(shù)據(jù)對(duì)比過程中,可以為每個(gè)數(shù)據(jù)項(xiàng)建立索引方便后續(xù)查詢,并收集相關(guān)數(shù)據(jù)并最后生成一份數(shù)據(jù)對(duì)比統(tǒng)計(jì)數(shù)據(jù)。上述索引和統(tǒng)計(jì)數(shù)據(jù)可以放入數(shù)據(jù)庫108,并由客戶端110在需要時(shí)讀取??蛻舳?10也可以直接從分布式計(jì)算架構(gòu)106獲取上述統(tǒng)計(jì)數(shù)據(jù)或索引。雖然未在圖1中示出具體網(wǎng)絡(luò),但本領(lǐng)域人員應(yīng)該理解的是,圖中箭頭指示可以表示網(wǎng)絡(luò)連接,由此實(shí)現(xiàn)如箭頭所示的數(shù)據(jù)傳送。例如,圖中的各部分可以都連接在因特網(wǎng)內(nèi),或是同一企業(yè)的內(nèi)部網(wǎng)絡(luò)內(nèi),由此實(shí)現(xiàn)圖中的數(shù)據(jù)收發(fā)。
如下將結(jié)合圖2詳述根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)對(duì)比方法。該方法可以利用分布式計(jì)算架構(gòu)(例如,圖1中的106)實(shí)現(xiàn),并且能夠?qū)Υ髷?shù)據(jù)進(jìn)行快速高效的處理。
在步驟210,利用分布式計(jì)算架構(gòu)對(duì)獲取的第一數(shù)據(jù)集和第二數(shù)據(jù)集中各自包含的多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,使得轉(zhuǎn)換后的數(shù)據(jù)項(xiàng)具有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),其中所述統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)包括多個(gè)字段。
在一個(gè)實(shí)施例中,例如圖1的分布式計(jì)算架構(gòu)106可以根據(jù)來自用戶(經(jīng)由客戶端110)的需要進(jìn)行對(duì)比的數(shù)據(jù)路徑來讀取第一數(shù)據(jù)集和第二數(shù)據(jù)集(例如,圖1中的數(shù)據(jù)集A和B)。分布式計(jì)算架構(gòu)也可以根據(jù)預(yù)先存儲(chǔ)或是獲取的數(shù)據(jù)路徑信息讀取數(shù)據(jù)集A和B。在一個(gè)實(shí)施例中,數(shù)據(jù)集A和B可以分別對(duì)應(yīng)于系統(tǒng)升級(jí)前和升級(jí)后的用戶數(shù)據(jù)。數(shù)據(jù)集A和B通常分別含有多個(gè)數(shù)據(jù)項(xiàng)。對(duì)于大型系統(tǒng)而言,可能是幾千、幾萬、甚至百萬或是上億的數(shù)據(jù)項(xiàng)。
例如,數(shù)據(jù)集A對(duì)應(yīng)于地圖應(yīng)用(例如,高德地圖)升級(jí)前以格式a存儲(chǔ)的1000萬條用戶信息(對(duì)應(yīng)于1000萬個(gè)數(shù)據(jù)項(xiàng))。每個(gè)數(shù)據(jù)項(xiàng)都含有多個(gè)字段,例如分別用來存儲(chǔ)用戶ID、用戶名、密碼、頭像、收藏地點(diǎn)和導(dǎo)航歷史等信息。數(shù)據(jù)集B可以對(duì)應(yīng)于該地圖應(yīng)用升級(jí)后以格式b存儲(chǔ)的用戶信息(可以同樣是1000萬條,也可以更多或是更少),并且數(shù)據(jù)集B中的每個(gè)數(shù)據(jù)項(xiàng)也含有多個(gè)字段。根據(jù)實(shí)際情況,數(shù)據(jù)集B中各數(shù)據(jù)項(xiàng)所包含的字段可以與數(shù)據(jù)集A中的相同或是不同。例如,如果系統(tǒng)在升級(jí)后上線了付費(fèi)用戶功能,則數(shù)據(jù)集B中的部分或是全部數(shù)據(jù)項(xiàng)會(huì)多出一個(gè)或多個(gè)有關(guān)付費(fèi)用戶信息的字段。分布式計(jì)算架構(gòu)可以根據(jù)數(shù)據(jù)路徑來讀取分別包括多個(gè)數(shù)據(jù)項(xiàng)且數(shù)據(jù)項(xiàng)內(nèi)包括多個(gè)字段的數(shù)據(jù)集A和數(shù)據(jù)集B。
在數(shù)據(jù)讀取任務(wù)中,可以通過工廠方法實(shí)現(xiàn)數(shù)據(jù)的讀取。在一個(gè)實(shí)施例中,利用分布式計(jì)算架構(gòu)基于第一數(shù)據(jù)集和第二數(shù)據(jù)集中各自包括的多個(gè)數(shù)據(jù)項(xiàng)的初始數(shù)據(jù)類型使用工廠函數(shù)將多個(gè)數(shù)據(jù)項(xiàng)轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。例如,用戶可以在客戶端指定要讀取的數(shù)據(jù)集中各數(shù)據(jù)項(xiàng)的存儲(chǔ)格式(例如,以json格式或是xml格式存儲(chǔ)的數(shù)據(jù)),分布式計(jì)算架構(gòu)可以根據(jù)用戶指定或者自行選擇不同的讀取方法,利用工廠函數(shù)定制不同類型的讀取模塊,將各種類型的原始數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一的對(duì)比程序內(nèi)部數(shù)據(jù)結(jié)構(gòu)。在實(shí)際應(yīng)用中,例如可以采用c++的map結(jié)構(gòu),python的dict結(jié)構(gòu)等用作統(tǒng)一數(shù)據(jù)結(jié)構(gòu)。
在步驟220,利用所述分布式計(jì)算架構(gòu)根據(jù)數(shù)據(jù)對(duì)比配置文件對(duì)轉(zhuǎn)換后的第一數(shù)據(jù)集和第二數(shù)據(jù)集中的多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比。
數(shù)據(jù)對(duì)比配置文件是用戶用來配置數(shù)據(jù)對(duì)比任務(wù)的文件。用戶可以在客戶端110上來對(duì)要進(jìn)行的數(shù)據(jù)對(duì)比任務(wù)進(jìn)行配置,并且根據(jù)具體實(shí)現(xiàn)該配置文件可以簡(jiǎn)單也可以詳盡。用戶可以選取已有的配置文件模板,也可以自行對(duì)配置文件進(jìn)行編輯。在一個(gè)實(shí)施例中,配置文件可以額外包含用于在前數(shù)據(jù)獲取或轉(zhuǎn)換步驟的信息。例如,配置文件可以包括用于獲取第一數(shù)據(jù)集和第二數(shù)據(jù)集的路徑,還可以指定要獲取或是要轉(zhuǎn)換的數(shù)據(jù)類型。上述用于在前數(shù)據(jù)獲取或轉(zhuǎn)換步驟的信息也可以單獨(dú)發(fā)送而不位于該數(shù)據(jù)對(duì)比配置文件內(nèi)。在一個(gè)優(yōu)選實(shí)施例中,用戶可以僅僅通過配置一個(gè)數(shù)據(jù)對(duì)比配置文件,就能夠利用分布式計(jì)算架構(gòu)實(shí)現(xiàn)數(shù)據(jù)的獲取、轉(zhuǎn)換、對(duì)比以及統(tǒng)計(jì)內(nèi)容的推送。
在一個(gè)實(shí)施例中,數(shù)據(jù)對(duì)比配置文件定義了用于區(qū)分各數(shù)據(jù)項(xiàng)的關(guān)鍵字段。優(yōu)選地,關(guān)鍵字段可以是用于描述一條數(shù)據(jù)項(xiàng)的唯一性的字段,例如上述地圖應(yīng)用升級(jí)例子中的用戶ID。關(guān)鍵字段也可以是用于區(qū)分?jǐn)?shù)據(jù)項(xiàng)的其他字段,例如,重復(fù)使用的編號(hào),只要在單次對(duì)比中能夠與其他數(shù)據(jù)項(xiàng)加以區(qū)分即可。在定義了關(guān)鍵字段的情況下,數(shù)據(jù)項(xiàng)的對(duì)比就可以是對(duì)第一數(shù)據(jù)集和第二數(shù)據(jù)集中關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)的其他至少一個(gè)字段進(jìn)行比較,由此確保進(jìn)行兩兩對(duì)比的數(shù)據(jù)項(xiàng)是所指相同數(shù)據(jù)項(xiàng)。系統(tǒng)升級(jí)前后的用戶ID格式可能不一樣,例如,從升級(jí)前的ID 1234567變?yōu)樯?jí)后的ID GD1234567,但只要指示相同用戶的數(shù)據(jù)項(xiàng)仍然能夠?qū)?yīng)的上,則數(shù)據(jù)對(duì)比仍能順利進(jìn)行。
在一個(gè)實(shí)施例中,分布式計(jì)算架構(gòu)按照所述關(guān)鍵字段對(duì)第一數(shù)據(jù)集和第二數(shù)據(jù)集中多個(gè)數(shù)據(jù)項(xiàng)的排序來對(duì)關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)進(jìn)行比較。例如,分布式計(jì)算架構(gòu)可以根據(jù)一定的法則對(duì)關(guān)鍵字段進(jìn)行排序,由此使得分布式計(jì)算架構(gòu)中的每個(gè)計(jì)算端能夠?qū)Φ谝粩?shù)據(jù)集和第二數(shù)據(jù)集中ID相同或相應(yīng)的多個(gè)用戶數(shù)據(jù)進(jìn)行對(duì)比。
在這里,“排序”可以指代任何規(guī)則下的排序,只要分布式計(jì)算架構(gòu)內(nèi)的各計(jì)算端知曉即可。例如,可以按照用戶ID對(duì)1000萬個(gè)用戶進(jìn)行順序排序,分布式計(jì)算架構(gòu)中的每一個(gè)計(jì)算端可以讀取ID連續(xù)的多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比。例如,某個(gè)計(jì)算端可以從數(shù)據(jù)集A和B中分別獲取ID從30001到40000的10000個(gè)數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比。在其他的實(shí)施例中,也可以按照其他的規(guī)則來進(jìn)行排序。
在一個(gè)實(shí)施例,按照關(guān)鍵字段對(duì)第一數(shù)據(jù)集和第二數(shù)據(jù)集中多個(gè)數(shù)據(jù)項(xiàng)的排序是由分布式計(jì)算架構(gòu)進(jìn)入對(duì)比步驟時(shí)自行做出的。分布式程序在任務(wù)間傳遞數(shù)據(jù)時(shí)會(huì)對(duì)數(shù)據(jù)進(jìn)行自動(dòng)排序,利用這一特點(diǎn),本發(fā)明的數(shù)據(jù)對(duì)比方案能夠?qū)⑥D(zhuǎn)換成統(tǒng)一結(jié)構(gòu)的數(shù)據(jù)從數(shù)據(jù)讀取任務(wù)傳遞到數(shù)據(jù)對(duì)比任務(wù)時(shí)按關(guān)鍵字段進(jìn)行排序,使得關(guān)鍵字段值相同或相應(yīng)的數(shù)據(jù)項(xiàng)在數(shù)據(jù)對(duì)比任務(wù)中取數(shù)據(jù)時(shí),一定是被連續(xù)取出來。例如,可以以每個(gè)整數(shù)萬作為關(guān)鍵字,并將這1000個(gè)關(guān)鍵字(例如,針對(duì)1000萬個(gè)用戶)按照計(jì)算端的數(shù)量進(jìn)行哈希操作(hash),并且按照哈希值分配每個(gè)計(jì)算端要對(duì)比的數(shù)據(jù),由此確保所有關(guān)鍵字相同的數(shù)據(jù)項(xiàng)都落在同一個(gè)計(jì)算端上進(jìn)行對(duì)比。
在一個(gè)實(shí)施例中,用戶可以在數(shù)據(jù)對(duì)比配置文件中定義數(shù)據(jù)結(jié)構(gòu)中至少一個(gè)字段的比較方式。例如,用戶可以定義包括關(guān)鍵字段在內(nèi)的每個(gè)字段的比較方式,例如使用整數(shù)對(duì)比用戶ID和年齡,使用二進(jìn)制值對(duì)比用戶性別,使用字符串對(duì)比用戶姓名等等。在一個(gè)實(shí)施例中,可以是數(shù)據(jù)對(duì)比配置文件和默認(rèn)設(shè)置各自定義了數(shù)據(jù)結(jié)構(gòu)中至少一個(gè)字段的比較方式。例如,針對(duì)用戶沒有指定的字段,可以根據(jù)默認(rèn)設(shè)置來進(jìn)行對(duì)比。
在一個(gè)實(shí)施例中,數(shù)據(jù)對(duì)比配置文件還可以包括用于實(shí)現(xiàn)至少一個(gè)字段比較的擴(kuò)展腳本。分布式計(jì)算架構(gòu)可以基于所述擴(kuò)展腳本對(duì)所述至少一個(gè)字段進(jìn)行對(duì)比。例如,用戶頭像可以使用在擴(kuò)展腳本里自定義的圖像對(duì)比方法進(jìn)行對(duì)比。通過擴(kuò)展腳本的引入,實(shí)現(xiàn)了分布式對(duì)比平臺(tái)的擴(kuò)展性。
本發(fā)明中的數(shù)據(jù)對(duì)比配置文件,可以從最簡(jiǎn)單的僅指明數(shù)據(jù)類型,到詳述對(duì)于哪些字段使用哪些數(shù)據(jù)對(duì)比方法。數(shù)據(jù)對(duì)比方法可以是簡(jiǎn)單的字符串相等,也可以是用戶自行開發(fā)的一段腳本代碼。由此,為本發(fā)明的分布式數(shù)據(jù)對(duì)比平臺(tái)提供了極大的靈活性和可塑性。
本發(fā)明的數(shù)據(jù)對(duì)比方案基于分布式計(jì)算架構(gòu),例如可以是阿里內(nèi)部的飛天系統(tǒng),也可以是開源的hadoop系統(tǒng)。分布式計(jì)算架構(gòu)通常包括多個(gè)用于執(zhí)行具體的轉(zhuǎn)換和對(duì)比任務(wù)的計(jì)算端。在轉(zhuǎn)換步驟中,每個(gè)計(jì)算端對(duì)第一數(shù)據(jù)集和/或第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換。例如,一個(gè)計(jì)算端可以只對(duì)第一數(shù)據(jù)集的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,只對(duì)第二數(shù)據(jù)集的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,或是對(duì)第一和第二數(shù)據(jù)集的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換。在具體實(shí)踐中對(duì)其沒有規(guī)定。在對(duì)比步驟中,每個(gè)計(jì)算端對(duì)第一數(shù)據(jù)集和第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行對(duì)比。例如,對(duì)關(guān)鍵字段相同或相應(yīng)的分別來自第一和第二數(shù)據(jù)集的數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比。由于分布式系統(tǒng)在進(jìn)入對(duì)比任務(wù)時(shí)自動(dòng)排序的特點(diǎn)(例如,利用關(guān)鍵字進(jìn)行哈希操作),因此每個(gè)計(jì)算端在轉(zhuǎn)換步驟和對(duì)比步驟中處理的通常是完全不同的數(shù)據(jù)項(xiàng)。
如上參考圖2描述了根據(jù)本發(fā)明的數(shù)據(jù)對(duì)比方法,如下將參考圖3-4描述根據(jù)本發(fā)明的數(shù)據(jù)對(duì)比裝置和系統(tǒng)。
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)對(duì)比裝置。數(shù)據(jù)對(duì)比裝置300可以包括數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元310和數(shù)據(jù)項(xiàng)對(duì)比單元320。
數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元310利用分布式計(jì)算架構(gòu)對(duì)獲取的第一數(shù)據(jù)集和第二數(shù)據(jù)集中各自包含的多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,使得轉(zhuǎn)換后的數(shù)據(jù)項(xiàng)具有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),其中所述統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)包括多個(gè)字段。
數(shù)據(jù)項(xiàng)對(duì)比單元320利用分布式計(jì)算架構(gòu)根據(jù)數(shù)據(jù)對(duì)比配置文件對(duì)所述轉(zhuǎn)換后的第一數(shù)據(jù)集和第二數(shù)據(jù)集中的所述多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行對(duì)比。
在一個(gè)實(shí)施例中,數(shù)據(jù)對(duì)比配置文件定義了用于區(qū)分各數(shù)據(jù)項(xiàng)的關(guān)鍵字段。數(shù)據(jù)項(xiàng)對(duì)比單元320對(duì)第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)的其他至少一個(gè)字段進(jìn)行比較。
在一個(gè)實(shí)施例中,數(shù)據(jù)項(xiàng)對(duì)比單元320根據(jù)所述關(guān)鍵字段對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中多個(gè)數(shù)據(jù)項(xiàng)的排序來對(duì)關(guān)鍵字段相同或相應(yīng)的數(shù)據(jù)項(xiàng)的其他至少一個(gè)字段進(jìn)行比較。
在一個(gè)實(shí)施例中,數(shù)據(jù)對(duì)比配置文件還可以包括用于實(shí)現(xiàn)至少一個(gè)字段比較的擴(kuò)展腳本,并且所述數(shù)據(jù)項(xiàng)對(duì)比單元基于所述擴(kuò)展腳本對(duì)所述至少一個(gè)字段進(jìn)行對(duì)比。
在一個(gè)實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元310基于第一數(shù)據(jù)集和第二數(shù)據(jù)集中各自包括的多個(gè)數(shù)據(jù)項(xiàng)的初始數(shù)據(jù)類型使用工廠函數(shù)將所述多個(gè)數(shù)據(jù)項(xiàng)轉(zhuǎn)換成統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。
在一個(gè)實(shí)施例中,數(shù)據(jù)對(duì)比裝置300例如可以是位于分布式計(jì)算架構(gòu)中計(jì)算端上的功能性裝置。每個(gè)計(jì)算端中的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元對(duì)所述第一數(shù)據(jù)集和/或所述第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,每個(gè)計(jì)算端的數(shù)據(jù)項(xiàng)對(duì)比單元對(duì)所述第一數(shù)據(jù)集和所述第二數(shù)據(jù)集中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,并且每個(gè)計(jì)算端在所述數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換單元和所述數(shù)據(jù)項(xiàng)對(duì)比單元處理相同或不同的數(shù)據(jù)項(xiàng)。
圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)對(duì)比系統(tǒng)。數(shù)據(jù)對(duì)比系統(tǒng)包括分布式計(jì)算架構(gòu)410和客戶端420。該數(shù)據(jù)對(duì)比系統(tǒng)可以是圖1中分布式計(jì)算架構(gòu)106和客戶端110的一個(gè)具體實(shí)現(xiàn)。
客戶端420選擇要進(jìn)行對(duì)比的第一數(shù)據(jù)集和第二數(shù)據(jù)集,配置數(shù)據(jù)對(duì)比配置文件并將配置好的數(shù)據(jù)對(duì)比配置文件發(fā)送至分布式計(jì)算架構(gòu)410。
在一個(gè)實(shí)施例中,客戶端420可以在web頁面上實(shí)現(xiàn)對(duì)所述第一數(shù)據(jù)集和第二數(shù)據(jù)集的選擇。例如,可以在web頁面上填寫需要進(jìn)行對(duì)比的數(shù)據(jù)路徑,并指定數(shù)據(jù)類型。客戶端420還可以在web頁面上實(shí)現(xiàn)對(duì)數(shù)據(jù)對(duì)比配置文件的配置。例如,客戶端420可以編寫自定義的配置文件模板,并根據(jù)需要選取合適的模板,指定關(guān)鍵字段,選擇對(duì)哪些字段使用哪些對(duì)比方法,并在需要時(shí)編寫擴(kuò)展腳本以實(shí)現(xiàn)對(duì)比方法的擴(kuò)展性。
分布式計(jì)算架構(gòu)410包括分布式連接的多個(gè)計(jì)算端410_1…N。分布式計(jì)算架構(gòu)410在獲取用戶提交的數(shù)據(jù)對(duì)比請(qǐng)求之后,將獲取的用戶請(qǐng)求信息填充到數(shù)據(jù)對(duì)比程序的啟動(dòng)配置文件中,并啟動(dòng)數(shù)據(jù)對(duì)比程序。
在數(shù)據(jù)對(duì)比任務(wù)中,按配置文件的描述,對(duì)數(shù)據(jù)的每個(gè)字段進(jìn)行對(duì)比,在數(shù)據(jù)對(duì)比過程中,可以為每條數(shù)據(jù)項(xiàng)建立索引方便后續(xù)查詢,并收集相關(guān)數(shù)據(jù)并最后生成一份數(shù)據(jù)對(duì)比統(tǒng)計(jì)數(shù)據(jù)。上述索引也可以僅針對(duì)對(duì)比結(jié)果不同的數(shù)據(jù)項(xiàng)來建立。具體地,每個(gè)計(jì)算端對(duì)獲取的第一數(shù)據(jù)集和/或第二數(shù)據(jù)集中各自包含的多個(gè)數(shù)據(jù)項(xiàng)中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行轉(zhuǎn)換,使得轉(zhuǎn)換后的數(shù)據(jù)項(xiàng)具有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),其中統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)包括多個(gè)字段。每個(gè)計(jì)算端根據(jù)數(shù)據(jù)對(duì)比配置文件對(duì)轉(zhuǎn)換后的第一數(shù)據(jù)集和第二數(shù)據(jù)集中的所述多個(gè)數(shù)據(jù)項(xiàng)中的部分?jǐn)?shù)據(jù)項(xiàng)進(jìn)行對(duì)比。待數(shù)據(jù)對(duì)比程序運(yùn)行結(jié)束,獲取數(shù)據(jù)對(duì)比程序生成的統(tǒng)計(jì)數(shù)據(jù),將統(tǒng)計(jì)數(shù)據(jù)返回至客戶端420進(jìn)行展示。
上文中已經(jīng)參考附圖詳細(xì)描述了根據(jù)本發(fā)明的數(shù)據(jù)對(duì)比方法、裝置和系統(tǒng)。本發(fā)明通過提供一個(gè)分布式數(shù)據(jù)對(duì)比平臺(tái)來滿足大型系統(tǒng)內(nèi)部的大數(shù)據(jù)對(duì)比需求,例如可以支持高德地圖的信息流重構(gòu)全量數(shù)據(jù)對(duì)比測(cè)試。通過以平臺(tái)的方式開放數(shù)據(jù)對(duì)比服務(wù),還解決了數(shù)據(jù)對(duì)比沒法復(fù)用的問題。本平臺(tái)支持多種數(shù)據(jù)類型,并能夠通過工廠函數(shù)讀取并轉(zhuǎn)化為統(tǒng)一格式。由于數(shù)據(jù)對(duì)比后臺(tái)為分布式運(yùn)行,還提升了對(duì)比效率。通過為每個(gè)數(shù)據(jù)項(xiàng)建立索引,還能夠方便問題的排查。另外,數(shù)據(jù)對(duì)比平臺(tái)可以采用常用語言,例如c++開發(fā),以便與大部分系統(tǒng)開發(fā)代碼兼容,由此解決數(shù)據(jù)讀取不方便的問題。
此外,根據(jù)本發(fā)明的方法還可以實(shí)現(xiàn)為一種計(jì)算機(jī)程序,該計(jì)算機(jī)程序包括用于執(zhí)行本發(fā)明的上述方法中限定的上述各步驟的計(jì)算機(jī)程序代碼指令。或者,根據(jù)本發(fā)明的方法還可以實(shí)現(xiàn)為一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì),在該計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)有用于執(zhí)行本發(fā)明的上述方法中限定的上述功能的計(jì)算機(jī)程序。本領(lǐng)域技術(shù)人員還將明白的是,結(jié)合這里的公開所描述的各種示例性邏輯塊、模塊、電路和算法步驟可以被實(shí)現(xiàn)為電子硬件、計(jì)算機(jī)軟件或兩者的組合。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)和方法的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)記的功能也可以以不同于附圖中所標(biāo)記的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中的技術(shù)的改進(jìn),或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。