在目標(biāo)服務(wù)器構(gòu)建etl系統(tǒng)的處理方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法及裝置。ETL系統(tǒng)包括:臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫,臨時數(shù)據(jù)庫為用于臨時存儲數(shù)據(jù)的數(shù)據(jù)庫,源數(shù)據(jù)庫為用于存儲原始數(shù)據(jù)的數(shù)據(jù)庫,數(shù)據(jù)倉庫用于存儲經(jīng)過ETL處理后的數(shù)據(jù),臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫均存儲在源服務(wù)器中,該方法包括:將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器;在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼;根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。通過本發(fā)明,解決了現(xiàn)有技術(shù)中在保證源服務(wù)器的ETL正常運行的情況下,無法在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的問題。
【專利說明】在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法及裝置。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)時代的來臨,數(shù)據(jù)庫的高可用性變得越來越重要。在大數(shù)據(jù)領(lǐng)域中,數(shù)據(jù)倉庫技術(shù)占據(jù)著重要地位,而數(shù)據(jù)倉庫技術(shù)的一大核心技術(shù)就是數(shù)據(jù)抽取、轉(zhuǎn)換和裝載(Extract Transform Load,簡稱為ETL)。ETL依據(jù)臨時數(shù)據(jù)庫對源數(shù)據(jù)進行抽取、清洗、轉(zhuǎn)換和裝載等工作,然后將處理好的數(shù)據(jù)存入被稱為“數(shù)據(jù)倉庫”的數(shù)據(jù)庫中。在實際生產(chǎn)環(huán)境中,ETL系統(tǒng)往往包含三種數(shù)據(jù)庫,即源數(shù)據(jù)庫,臨時數(shù)據(jù)庫,數(shù)據(jù)倉庫。源數(shù)據(jù)庫提供數(shù)據(jù)源;臨時數(shù)據(jù)庫用于存儲各類臨時數(shù)據(jù);數(shù)據(jù)倉庫包含事實表和維度表,存儲經(jīng)過處理的數(shù)據(jù)。
[0003]數(shù)據(jù)庫復(fù)制技術(shù)(Implicat1n)是一種常見的高可用性技術(shù),它用于將發(fā)布者數(shù)據(jù)庫的數(shù)據(jù)同步到目標(biāo)服務(wù)器上。該技術(shù)功能強大,比如可以實時同步,也可以進行負(fù)載均衡、沖突處理等。目前許多基于R印Iicat1n的高可用性方案,都是針對數(shù)據(jù)倉庫的,即對數(shù)據(jù)倉庫做同步,這樣,當(dāng)發(fā)布者數(shù)據(jù)庫宕機的時候,目標(biāo)服務(wù)器的數(shù)據(jù)倉庫依然可以訪問。在很多場景下,當(dāng)發(fā)布者數(shù)據(jù)庫宕機的時候,不僅需要目標(biāo)服務(wù)器中的數(shù)據(jù)倉庫可以被訪問,還希望在目標(biāo)服務(wù)器中執(zhí)行ETL操作。單單使用Replicat1n技術(shù)并不能順利達到這個目的。因為在目標(biāo)服務(wù)器中執(zhí)行ETL,需要把臨時數(shù)據(jù)庫表結(jié)構(gòu)復(fù)制過去。若通過Replicat1n技術(shù)來同步臨時數(shù)據(jù)庫,就會影響發(fā)布者數(shù)據(jù)庫正常的ETL運行。因為,若一個數(shù)據(jù)表配置了 R印licat1n,就無法對它執(zhí)行清空操作。而在ETL執(zhí)行時,在臨時數(shù)據(jù)庫儲存數(shù)據(jù)前,會對該數(shù)據(jù)庫的表做一次清空操作以清空臟數(shù)據(jù)。所以,這種情況下,發(fā)布者數(shù)據(jù)庫的ETL會執(zhí)行出錯。若這些臨時數(shù)據(jù)庫通過其他方式移動到目標(biāo)服務(wù)器上,又各有缺陷。通常,ETL系統(tǒng)包含三種數(shù)據(jù)庫,即源數(shù)據(jù)庫,臨時數(shù)據(jù)庫和數(shù)據(jù)倉庫。因此現(xiàn)有技術(shù)中無法在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng),更無法在目標(biāo)服務(wù)器中執(zhí)行ETL。
[0004]針對現(xiàn)有技術(shù)中在保證源服務(wù)器的ETL正常運行的情況下,無法在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的主要目的在于提供一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法及裝置,以解決現(xiàn)有技術(shù)中在保證源服務(wù)器的ETL正常運行的情況下,無法在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的問題。
[0006]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法。
[0007]根據(jù)本發(fā)明的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法包括:該ETL系統(tǒng)包括:臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫,臨時數(shù)據(jù)庫為用于臨時存儲數(shù)據(jù)的數(shù)據(jù)庫,源數(shù)據(jù)庫為用于存儲原始數(shù)據(jù)的數(shù)據(jù)庫,數(shù)據(jù)倉庫用于存儲經(jīng)過ETL處理后的數(shù)據(jù),臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫均存儲在源服務(wù)器中,該方法包括:將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器;在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼;以及根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。
[0008]進一步地,根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫包括:在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)數(shù)據(jù)庫;以及在目標(biāo)數(shù)據(jù)庫中執(zhí)行腳本代碼,得到臨時表;根據(jù)臨時表構(gòu)成目標(biāo)臨時數(shù)據(jù)庫。
[0009]進一步地,將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器之前,該方法還包括:確定源數(shù)據(jù)庫和數(shù)據(jù)倉庫;以及分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置,得到配置源數(shù)據(jù)庫和配置數(shù)據(jù)倉庫,其中,配置源數(shù)據(jù)庫是用于將源數(shù)據(jù)庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫,配置數(shù)據(jù)倉庫是用于將數(shù)據(jù)倉庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫。
[0010]進一步地,分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置包括:分別獲取源數(shù)據(jù)庫和數(shù)據(jù)倉庫中已有的配置指令,其中,配置指令為用于指示對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的指令;以及通過配置指令分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置,或者,接收外部輸入的配置代碼,其中,配置代碼為用于對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的代碼;以及根據(jù)配置代碼生成的相應(yīng)配置指令分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置。
[0011]進一步地,將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器包括:分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第一預(yù)設(shè)代理程序,其中,第一預(yù)設(shè)代理程序為用于生成數(shù)據(jù)庫快照的程序;根據(jù)第一預(yù)設(shè)代理程序分別生成與源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第二預(yù)設(shè)代理程序,其中,第二預(yù)設(shè)代理程序為用于同步源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;以及根據(jù)第二預(yù)設(shè)的代理程序分別將源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照同步至目標(biāo)服務(wù)器。
[0012]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置。
[0013]根據(jù)本發(fā)明的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處裝置包括:ETL系統(tǒng)包括:臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫,臨時數(shù)據(jù)庫為用于臨時存儲數(shù)據(jù)的數(shù)據(jù)庫,源數(shù)據(jù)庫為用于存儲原始數(shù)據(jù)的數(shù)據(jù)庫,數(shù)據(jù)倉庫用于存儲經(jīng)過ETL處理后的數(shù)據(jù),臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫均存儲在源服務(wù)器中,該裝置包括:同步單元,用于將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器;獲取單元,用于在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼;以及創(chuàng)建單元,用于根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。
[0014]進一步地,創(chuàng)建單元包括:創(chuàng)建模塊,用于在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)數(shù)據(jù)庫;以及執(zhí)行模塊,用于在目標(biāo)數(shù)據(jù)庫中執(zhí)行腳本代碼,得到臨時表;組成模塊,用于臨時表構(gòu)成目標(biāo)臨時數(shù)據(jù)庫。
[0015]進一步地,該裝置還包括:確定單元,用于確定源數(shù)據(jù)庫和數(shù)據(jù)倉庫;以及配置單元,用于分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置,得到配置源數(shù)據(jù)庫和配置數(shù)據(jù)倉庫,其中,配置源數(shù)據(jù)庫是用于將源數(shù)據(jù)庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫,配置數(shù)據(jù)倉庫是用于將數(shù)據(jù)倉庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫。
[0016]進一步地,配置單元包括:第一獲取模塊,用于分別獲取源數(shù)據(jù)庫和數(shù)據(jù)倉庫中已有的配置指令,其中,配置指令為用于指示對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的指令;以及第一配置模塊,用于通過配置指令分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置,或者,接收模塊,用于接收外部輸入的配置代碼,其中,配置代碼為用于對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的代碼;以及第二配置模塊,用于配置代碼生成的相應(yīng)配置指令分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置。
[0017]進一步地,同步單元包括:第二獲取模塊,用于分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第一預(yù)設(shè)代理程序,其中,第一預(yù)設(shè)代理程序為用于生成數(shù)據(jù)庫快照的程序;生成模塊,用于第一預(yù)設(shè)代理程序分別生成與源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;第三獲取模塊,用于分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第二預(yù)設(shè)代理程序,其中,第二預(yù)設(shè)代理程序為用于同步源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;以及同步模塊,用于根據(jù)第二預(yù)設(shè)的代理程序分別將源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照同步至目標(biāo)服務(wù)器。
[0018]通過本發(fā)明,將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器;在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼;根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫,解決了現(xiàn)有技術(shù)中在保證源服務(wù)器的ETL正常運行的情況下,無法在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的問題,進而達到了在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的效果。
【專利附圖】
【附圖說明】
[0019]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0020]圖1是根據(jù)本發(fā)明實施例的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法的流程圖;以及
[0021]圖2是根據(jù)本發(fā)明實施例的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置的示意圖。
【具體實施方式】
[0022]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。
[0023]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本申請方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分的實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本申請保護的范圍。
[0024]需要說明的是,本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請的實施例。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0025]根據(jù)本發(fā)明的實施例,提供了一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法。
[0026]圖1是根據(jù)本發(fā)明實施例的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法的示意圖。ETL系統(tǒng)包括:臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫,臨時數(shù)據(jù)庫為用于臨時存儲數(shù)據(jù)的數(shù)據(jù)庫,源數(shù)據(jù)庫為用于存儲原始數(shù)據(jù)的數(shù)據(jù)庫,數(shù)據(jù)倉庫用于存儲經(jīng)過ETL處理后的數(shù)據(jù),臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫均存儲在源服務(wù)器中,如圖1所示,該方法包括如下的步驟SlOl至步驟S103:
[0027]步驟S101,將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器。
[0028]將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器。
[0029]在本發(fā)明實施例提供的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法中,將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器包括:分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第一預(yù)設(shè)代理程序,其中,第一預(yù)設(shè)代理程序為用于生成數(shù)據(jù)庫快照的程序;根據(jù)第一預(yù)設(shè)代理程序分別生成與源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第二預(yù)設(shè)代理程序,其中,第二預(yù)設(shè)代理程序為用于同步源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;以及根據(jù)第二預(yù)設(shè)的代理程序分別將源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照同步至目標(biāo)服務(wù)器。
[0030]具體地,根據(jù)源數(shù)據(jù)庫生成數(shù)據(jù)庫快照,其中,數(shù)據(jù)庫快照是源數(shù)據(jù)庫的只讀靜態(tài)視圖。優(yōu)選地,源據(jù)庫為SQL Server數(shù)據(jù)庫。生成數(shù)據(jù)庫快照之后,數(shù)據(jù)庫快照在事務(wù)上與源數(shù)據(jù)庫一致。在本發(fā)明實施例中的數(shù)據(jù)庫快照用于將源數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)移至目標(biāo)數(shù)據(jù)庫。在數(shù)據(jù)庫快照中包括用于執(zhí)行同步操作的腳本文件。獲取第一預(yù)設(shè)代理程序,其中,第一預(yù)設(shè)代理程序為用于生成數(shù)據(jù)庫快照的程序;根據(jù)第一預(yù)設(shè)代理程序生成數(shù)據(jù)庫快照。
[0031]優(yōu)選地,源數(shù)據(jù)庫為SQL Server數(shù)據(jù)庫,獲取用于生成數(shù)據(jù)庫快照的第一預(yù)設(shè)代理程序為SQL Server目錄下的snapshot, exe代理程序,根據(jù)SQL Server目錄下的snapshot, exe代理程序生成數(shù)據(jù)庫快照。在生成數(shù)據(jù)庫快照之后,讀取事務(wù)日志,其中,每次對數(shù)據(jù)庫的更改,系統(tǒng)都會記錄事務(wù)日志,replicat1n會把對數(shù)據(jù)庫的更改傳送到目標(biāo)服務(wù)器,目標(biāo)服務(wù)器利用這些事務(wù)日志來進行同步。運行系統(tǒng)自帶的logread.exe代理程序即可讀取事務(wù)日志。
[0032]獲取第二預(yù)設(shè)代理程序,其中,第二預(yù)設(shè)代理程序為用于同步數(shù)據(jù)庫快照的程序;根據(jù)第二預(yù)設(shè)代理程序?qū)⑿薷暮蟮臄?shù)據(jù)庫快照同步至目標(biāo)數(shù)據(jù)庫。
[0033]優(yōu)選地,源數(shù)據(jù)庫為SQL Server數(shù)據(jù)庫,獲取用于同步數(shù)據(jù)庫快照的第二預(yù)設(shè)代理程序為SQL Server目錄下的Distrib.exe代理程序,根據(jù)SQL Server目錄下的Distrib.exe代理程序同步數(shù)據(jù)庫快照。
[0034]需要說明的是,上述同步源數(shù)據(jù)庫的方法也同樣適用于同步數(shù)據(jù)倉庫。
[0035]將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器之前,該方法還包括:確定源數(shù)據(jù)庫和數(shù)據(jù)倉庫;以及分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置,得到配置源數(shù)據(jù)庫和配置數(shù)據(jù)倉庫,其中,配置源數(shù)據(jù)庫是用于將源數(shù)據(jù)庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫,配置數(shù)據(jù)倉庫是用于將數(shù)據(jù)倉庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫。
[0036]優(yōu)選地,為了提升對未進行配置的數(shù)據(jù)庫進行配置,在本發(fā)明實施例提供的數(shù)據(jù)庫批量同步處理方法中,該方法還包括:獲取數(shù)據(jù)庫中已有的配置指令,其中,配置指令為用于指示對未進行配置的數(shù)據(jù)庫進行預(yù)先配置執(zhí)行同步操作的指令;以及通過配置指令分別對未進行配置的數(shù)據(jù)庫進行配置,或者,接收外部輸入的配置代碼,其中,配置代碼為用于對未進行配置的數(shù)據(jù)庫進行預(yù)先配置執(zhí)行同步操作的代碼;以及根據(jù)配置代碼生成的相應(yīng)配置指令分別對未進行配置的數(shù)據(jù)庫進行配置。
[0037]優(yōu)選地,待同步數(shù)據(jù)庫為SQL Server數(shù)據(jù)庫。若待同步數(shù)據(jù)庫未進行初始化,先進行初始化。然后調(diào)用sp_adddistributor和sp_addsitribut1ndb等等存儲過程,即對未進行配置的數(shù)據(jù)庫進行了配置。
[0038]需要說明的是,定期執(zhí)行數(shù)據(jù)同步,也可以通過SSMS的復(fù)制監(jiān)視器,打開SSMS,右擊replicat1n目錄,選擇Launch Replicat1n Monitor,選擇控制按鈕執(zhí)行復(fù)制操作。
[0039]步驟S102,在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼。
[0040]在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼。
[0041]例如,在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼的操作代碼為:
[0042]var dbCreateScripts = sourceDatabase.Script O
[0043]通過該步驟,在源服務(wù)器中獲取到臨時數(shù)據(jù)庫中臨時表的腳本代碼。
[0044]步驟S103,根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。
[0045]根據(jù)上述在源服務(wù)器中獲取到臨時數(shù)據(jù)庫中臨時表的腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。
[0046]具體地,根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫包括:在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)數(shù)據(jù)庫;以及在目標(biāo)數(shù)據(jù)庫中執(zhí)行腳本代碼,得到臨時表;根據(jù)臨時表構(gòu)成目標(biāo)臨時數(shù)據(jù)庫。
[0047]通過上述步驟,在目標(biāo)服務(wù)器上創(chuàng)建了臨時數(shù)據(jù)庫、將源服務(wù)器上的源數(shù)據(jù)庫和數(shù)據(jù)倉庫同步至目標(biāo)服務(wù)器。因此實現(xiàn)了在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)。
[0048]本發(fā)明實施例提供的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法,通過將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器;在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼;根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫,解決了現(xiàn)有技術(shù)中在保證源服務(wù)器的ETL正常運行的情況下,無法在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的問題。進而達到了在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的效果。
[0049]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0050]本發(fā)明實施例還提供了一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置,需要說明的是,本發(fā)明實施例的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置可以用于執(zhí)行本發(fā)明實施例所提供的用于在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法。以下對本發(fā)明實施例提供的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置進行介紹。
[0051]圖2是根據(jù)本發(fā)明實施例的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置的示意圖。ETL系統(tǒng)包括:臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫,臨時數(shù)據(jù)庫為用于臨時存儲數(shù)據(jù)的數(shù)據(jù)庫,源數(shù)據(jù)庫為用于存儲原始數(shù)據(jù)的數(shù)據(jù)庫,數(shù)據(jù)倉庫用于存儲經(jīng)過ETL處理后的數(shù)據(jù),臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫均存儲在源服務(wù)器中,如圖2所示,裝置包括:同步單元10、獲取單元20和創(chuàng)建單元30。
[0052]同步單元10,用于將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器。
[0053]具體地,該同步單元10包括:第二獲取模塊,用于分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第一預(yù)設(shè)代理程序,其中,第一預(yù)設(shè)代理程序為用于生成數(shù)據(jù)庫快照的程序;生成模塊,用于第一預(yù)設(shè)代理程序分別生成與源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;第三獲取模塊,用于分別針對源數(shù)據(jù)庫和數(shù)據(jù)倉庫獲取第二預(yù)設(shè)代理程序,其中,第二預(yù)設(shè)代理程序為用于同步源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;以及同步模塊,用于根據(jù)第二預(yù)設(shè)的代理程序分別將源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照同步至目標(biāo)服務(wù)器。
[0054]獲取單元20,用于在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼。
[0055]創(chuàng)建單元30,用于根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。
[0056]具體地,創(chuàng)建單元30包括:創(chuàng)建模塊,用于在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)數(shù)據(jù)庫;以及執(zhí)行模塊,用于在目標(biāo)數(shù)據(jù)庫中執(zhí)行腳本代碼,得到臨時表;組成模塊,用于臨時表構(gòu)成目標(biāo)臨時數(shù)據(jù)庫。
[0057]本發(fā)明實施例提供的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置,通過同步單元10將源數(shù)據(jù)庫和數(shù)據(jù)倉庫分別從源服務(wù)器同步至目標(biāo)服務(wù)器;獲取單元20在源服務(wù)器中獲取臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,臨時數(shù)據(jù)庫包括臨時表,腳本代碼為用于創(chuàng)建臨時表的代碼;創(chuàng)建單元30根據(jù)腳本代碼在目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫,解決了現(xiàn)有技術(shù)中在保證源服務(wù)器的ETL正常運行的情況下,無法在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的問題。進而達到了在目標(biāo)服務(wù)器中構(gòu)建ETL系統(tǒng)的效果。
[0058]優(yōu)選地,在本發(fā)明實施例提供的在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置中,該裝置還包括:確定單元,用于確定源數(shù)據(jù)庫和數(shù)據(jù)倉庫;以及配置單元,用于分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置,得到配置源數(shù)據(jù)庫和配置數(shù)據(jù)倉庫,其中,配置源數(shù)據(jù)庫是用于將源數(shù)據(jù)庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫,配置數(shù)據(jù)倉庫是用于將數(shù)據(jù)倉庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫。具體地,該配置單元包括:第一獲取模塊,用于分別獲取源數(shù)據(jù)庫和數(shù)據(jù)倉庫中已有的配置指令,其中,配置指令為用于指示對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的指令;以及第一配置模塊,用于通過配置指令分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置,或者,接收模塊,用于接收外部輸入的配置代碼,其中,配置代碼為用于對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的代碼;以及第二配置模塊,用于配置代碼生成的相應(yīng)配置指令分別對源數(shù)據(jù)庫和數(shù)據(jù)倉庫進行配置。
[0059]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0060]以上僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理方法,其特征在于,所述ETL系統(tǒng)包括:臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫,所述臨時數(shù)據(jù)庫為用于臨時存儲數(shù)據(jù)的數(shù)據(jù)庫,所述源數(shù)據(jù)庫為用于存儲原始數(shù)據(jù)的數(shù)據(jù)庫,所述數(shù)據(jù)倉庫用于存儲經(jīng)過ETL處理后的數(shù)據(jù),所述臨時數(shù)據(jù)庫、所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫均存儲在源服務(wù)器中,所述方法包括: 將所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫分別從所述源服務(wù)器同步至所述目標(biāo)服務(wù)器; 在所述源服務(wù)器中獲取所述臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,所述臨時數(shù)據(jù)庫包括所述臨時表,所述腳本代碼為用于創(chuàng)建所述臨時表的代碼;以及根據(jù)所述腳本代碼在所述目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述腳本代碼在所述目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫包括: 在所述目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)數(shù)據(jù)庫;以及 在所述目標(biāo)數(shù)據(jù)庫中執(zhí)行所述腳本代碼,得到臨時表; 根據(jù)所述臨時表構(gòu)成所述目標(biāo)臨時數(shù)據(jù)庫。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫分別從所述源服務(wù)器同步至所述目標(biāo)服務(wù)器之前,所述方法還包括: 確定所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫;以及 分別對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行配置,得到配置源數(shù)據(jù)庫和配置數(shù)據(jù)倉庫,其中,所述配置源數(shù)據(jù)庫是用于將所述源數(shù)據(jù)庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫,所述配置數(shù)據(jù)倉庫是用于將所述數(shù)據(jù)倉庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,分別對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行配置包括: 分別獲取所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫中已有的配置指令,其中,所述配置指令為用于指示對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的指令;以及通過所述配置指令分別對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行配置, 或者, 接收外部輸入的配置代碼,其中,所述配置代碼為用于對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的代碼;以及 根據(jù)所述配置代碼生成的相應(yīng)配置指令分別對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行配置。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫分別從所述源服務(wù)器同步至所述目標(biāo)服務(wù)器包括: 分別針對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫獲取第一預(yù)設(shè)代理程序,其中,所述第一預(yù)設(shè)代理程序為用于生成數(shù)據(jù)庫快照的程序; 根據(jù)所述第一預(yù)設(shè)代理程序分別生成與所述源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和所述數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照; 分別針對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫獲取第二預(yù)設(shè)代理程序,其中,所述第二預(yù)設(shè)代理程序為用于同步所述源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和所述數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;以及 根據(jù)所述第二預(yù)設(shè)的代理程序分別將所述源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和所述數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照同步至所述目標(biāo)服務(wù)器。
6.一種在目標(biāo)服務(wù)器構(gòu)建ETL系統(tǒng)的處理裝置,其特征在于,所述ETL系統(tǒng)包括:臨時數(shù)據(jù)庫、源數(shù)據(jù)庫和數(shù)據(jù)倉庫,所述臨時數(shù)據(jù)庫為用于臨時存儲數(shù)據(jù)的數(shù)據(jù)庫,所述源數(shù)據(jù)庫為用于存儲原始數(shù)據(jù)的數(shù)據(jù)庫,所述數(shù)據(jù)倉庫用于存儲經(jīng)過ETL處理后的數(shù)據(jù),所述臨時數(shù)據(jù)庫、所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫均存儲在源服務(wù)器中,所述裝置包括: 同步單元,用于將所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫分別從所述源服務(wù)器同步至所述目標(biāo)服務(wù)器; 獲取單元,用于在所述源服務(wù)器中獲取所述臨時數(shù)據(jù)庫中臨時表的腳本代碼,其中,所述臨時數(shù)據(jù)庫包括所述臨時表,所述腳本代碼為用于創(chuàng)建所述臨時表的代碼;以及創(chuàng)建單元,用于根據(jù)所述腳本代碼在所述目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)臨時數(shù)據(jù)庫。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述創(chuàng)建單元包括: 創(chuàng)建模塊,用于在所述目標(biāo)服務(wù)器上創(chuàng)建目標(biāo)數(shù)據(jù)庫;以及 執(zhí)行模塊,用于在所述目標(biāo)數(shù)據(jù)庫中執(zhí)行所述腳本代碼,得到臨時表; 組成模塊,用于所述臨時表構(gòu)成所述目標(biāo)臨時數(shù)據(jù)庫。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 確定單元,用于確定所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫;以及 配置單元,用于分別對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行配置,得到配置源數(shù)據(jù)庫和配置數(shù)據(jù)倉庫,其中,所述配置源數(shù)據(jù)庫是用于將所述源數(shù)據(jù)庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫,所述配置數(shù)據(jù)倉庫是用于將所述數(shù)據(jù)倉庫預(yù)先進行配置執(zhí)行同步操作后的數(shù)據(jù)庫。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述配置單元包括: 第一獲取模塊,用于分別獲取所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫中已有的配置指令,其中,所述配置指令為用于指示對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的指令;以及 第一配置模塊,用于通過所述配置指令分別對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行配置, 或者, 接收模塊,用于接收外部輸入的配置代碼,其中,所述配置代碼為用于對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行預(yù)先配置執(zhí)行同步操作的代碼;以及 第二配置模塊,用于所述配置代碼生成的相應(yīng)配置指令分別對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫進行配置。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述同步單元包括: 第二獲取模塊,用于分別針對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫獲取第一預(yù)設(shè)代理程序,其中,所述第一預(yù)設(shè)代理程序為用于生成數(shù)據(jù)庫快照的程序; 生成模塊,用于所述第一預(yù)設(shè)代理程序分別生成與所述源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和所述數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照; 第三獲取模塊,用于分別針對所述源數(shù)據(jù)庫和所述數(shù)據(jù)倉庫獲取第二預(yù)設(shè)代理程序,其中,所述第二預(yù)設(shè)代理程序為用于同步所述源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和所述數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照;以及 同步模塊,用于根據(jù)所述第二預(yù)設(shè)的代理程序分別將所述源數(shù)據(jù)庫相應(yīng)的數(shù)據(jù)庫快照和所述數(shù)據(jù)倉庫相應(yīng)的數(shù)據(jù)倉庫快照同步至所述目標(biāo)服務(wù)器。
【文檔編號】G06F17/30GK104462344SQ201410736286
【公開日】2015年3月25日 申請日期:2014年12月4日 優(yōu)先權(quán)日:2014年12月4日
【發(fā)明者】儲雨知 申請人:北京國雙科技有限公司