一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法【專利摘要】本發(fā)明提供了一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,按照一定周期和數(shù)量限定接收組播報文,將所需報文存入一個一級緩存數(shù)據(jù)文件中,以信號量觸發(fā)對一級緩存數(shù)據(jù)文件的解析,將報文存入對應(yīng)型號的二級緩存數(shù)據(jù)文件,對各型號建立對應(yīng)的二級緩存數(shù)據(jù)文件存儲目錄及相關(guān)數(shù)據(jù)文件和控制文件;各型號入庫線程根據(jù)信號量可同步觸發(fā)入庫操作,解析待入庫二級緩存數(shù)據(jù)文件,將解析后的數(shù)據(jù)通過調(diào)用SQL*Loader和入庫控制文件數(shù)據(jù)錄入對應(yīng)的數(shù)據(jù)庫。本發(fā)明實現(xiàn)了海量組播數(shù)據(jù)實時、穩(wěn)定地接收處理,實現(xiàn)了多目標(biāo)數(shù)據(jù)庫同步高效地入庫,提升了實際應(yīng)用中對海量組播數(shù)據(jù)的處理能力,保證了數(shù)據(jù)的完整性,提高了應(yīng)用系統(tǒng)的效能?!緦@f明】一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明屬于計算機數(shù)據(jù)采集領(lǐng)域,具體涉及一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法?!?br>背景技術(shù):
】[0002]在大型系統(tǒng)多型號批量并行測試時,面臨任務(wù)重、型號多和大量重復(fù)測試等情況,測試產(chǎn)生的海量測試數(shù)據(jù)需要實時地接收并保存到各型號的數(shù)據(jù)庫中,這種海量數(shù)據(jù)的處理具有實時性強、數(shù)據(jù)量大、數(shù)據(jù)格式復(fù)雜和入庫壓力大的特點。[0003]通常組播數(shù)據(jù)的入庫按數(shù)據(jù)緩存方式的不同,有基于共享緩沖區(qū)和基于數(shù)據(jù)文件兩種入庫方式?;诠蚕砭彌_區(qū)的入庫,一般采用“生產(chǎn)者-消費者”模型或其變型,“生產(chǎn)者”將接收到的組播數(shù)據(jù)存入緩沖內(nèi)存,“消費者”訪問共享內(nèi)存,取出數(shù)據(jù)解析后存入數(shù)據(jù)庫。基于數(shù)據(jù)文件的入庫,采用多線程異步操作的方式完成報文接收、解析和入庫,接收線程監(jiān)聽網(wǎng)絡(luò)端口,接收組播報文,按一定周期將報文寫入緩存數(shù)據(jù)文件,生成原始數(shù)據(jù)文件;解析線程解析原始數(shù)據(jù)文件,生成入庫準備文件;入庫線程使用SQL*L0ader技術(shù)將入庫準備文件錄入數(shù)據(jù)庫。[0004]在大型系統(tǒng)多型號批量并行測試中,數(shù)據(jù)庫有多個且異構(gòu),在這種情況下以上兩種入庫方式各有不足:[0005]第一種基于共享緩沖區(qū)的入庫,存在的缺陷是:緩存大小不易確定,容易溢出,特別是在大數(shù)據(jù)量時,系統(tǒng)極不穩(wěn)定,無法保證數(shù)據(jù)的完整性和安全性;共享緩沖區(qū)的讀寫是同步操作,效率低;數(shù)據(jù)入庫效率不如采用SQL*L0ader時效率高,在數(shù)據(jù)庫是多個且異構(gòu)的情況下,無法保證入庫速率。[0006]第二種基于數(shù)據(jù)文件的入庫方式,雖然能保證數(shù)據(jù)的接收效率、穩(wěn)定性和完整性,采用SQL*L0ader技術(shù)錄入數(shù)據(jù),在入庫效率也有所提升,但是在面對海量數(shù)據(jù)的解析和入庫,特別是多個異構(gòu)數(shù)據(jù)庫的入庫時,無法保證高效性?!?br/>發(fā)明內(nèi)容】[0007]針對大型系統(tǒng)多型號批量并行測試時,產(chǎn)生的海量組播數(shù)據(jù)需要錄入多個異構(gòu)數(shù)據(jù)庫的情況,本發(fā)明提出一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法。通過兩級緩存數(shù)據(jù)文件對組播數(shù)據(jù)進行存儲和分類,通過多線程入庫的方式保證每個型號的數(shù)據(jù)的解析和入庫都有專屬入庫線程完成,在提高了數(shù)據(jù)處理效率的同時,解決了多個異構(gòu)數(shù)據(jù)庫入庫的問題。[0008]本發(fā)明提供的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,包括以下步驟:[0009]步驟一:啟動組播報文接收線程,開始接收組播報文;[0010]步驟二:對接收到的組播報文首先進行完整性判斷,如果不完整,繼續(xù)接收;如果完整,則對報文的類型進行檢驗,如果不是所需要的類型,丟棄該報文,繼續(xù)接收新的組播報文;如果是所需的報文,將報文存入當(dāng)前待寫入的一級緩存數(shù)據(jù)文件中;當(dāng)接收組播報文的時間達到接收周期或接收的組播報文數(shù)量達到指定數(shù)量時,記錄已完成接收的一級數(shù)據(jù)文件數(shù),關(guān)閉并重命名當(dāng)前待寫入的一級緩存數(shù)據(jù)文件,同時生成新的待寫入的一級緩存數(shù)據(jù)文件;[0011]步驟三:判斷是否有需要解析的一級緩存數(shù)據(jù)文件,若有,讀取待解析一級緩存數(shù)據(jù)文件中的組播報文,開始預(yù)解析;否則,繼續(xù)等待;[0012]預(yù)解析的方法是:解析組播報文報頭中的信息來源字段,獲取報文所屬的型號,判斷該型號對應(yīng)的信息是否已在型號隊列中,如果不在型號隊列中,則獲取該型號的信息并添加到型號隊列中,并創(chuàng)建該型號對應(yīng)的二級緩存數(shù)據(jù)文件存儲目錄及相關(guān)數(shù)據(jù)文件和控制文件,將組播報文寫入二級緩存數(shù)據(jù)文件,同時調(diào)用線程池,啟動該型號入庫線程;如果在型號隊列中,則直接將組播報文寫入對應(yīng)二級緩存數(shù)據(jù)文件中;[0013]當(dāng)一個一級緩存數(shù)據(jù)文件預(yù)解析完成后,記錄已完成解析的一級緩存數(shù)據(jù)文件數(shù),關(guān)閉并重命名當(dāng)前所有待寫入二級緩存數(shù)據(jù)文件,更新型號隊列中各型號對應(yīng)的已完成保存二級緩存數(shù)據(jù)文件數(shù),同時生成新的待寫入二級緩存數(shù)據(jù)文件,等待下一次預(yù)解析時存儲數(shù)據(jù);[0014]步驟四:各型號入庫線程判斷對應(yīng)型號的已完成保存二級緩存數(shù)據(jù)文件數(shù)是否大于已入庫二級緩存數(shù)據(jù)文件數(shù),如果否,說明沒有新的需要入庫的數(shù)據(jù),繼續(xù)等待;如果是,根據(jù)已入庫二級緩存數(shù)據(jù)文件數(shù)獲取下一個待入庫二級緩存數(shù)據(jù)文件,解析該二級緩存數(shù)據(jù)文件,將解析后的數(shù)據(jù)保存至對應(yīng)型號的入庫準備數(shù)據(jù)文件中,解析完成后,調(diào)用數(shù)據(jù)加載工具SQL*L0ader和入庫控制文件將入庫準備數(shù)據(jù)文件中的數(shù)據(jù)錄入對應(yīng)數(shù)據(jù)庫,同時更新型號隊列中對應(yīng)的已入庫二級緩存數(shù)據(jù)文件數(shù)。[0015]所述的步驟二中,當(dāng)前待寫入的一級緩存數(shù)據(jù)文件唯一且具有固定文件名;處于已完成寫入狀態(tài)的一級緩存數(shù)據(jù)文件的命名與已完成接收的一級緩存數(shù)據(jù)文件數(shù)相關(guān)。[0016]所述的步驟三中,所述的型號的信息包括型號編號、對應(yīng)的數(shù)據(jù)庫用戶名和密碼、保存數(shù)據(jù)的表名、已完成保存二級緩存數(shù)據(jù)文件數(shù)以及已入庫二級緩存數(shù)據(jù)文件數(shù)。所述的型號對應(yīng)的相關(guān)數(shù)據(jù)文件和控制文件包括二級緩存數(shù)據(jù)文件、入庫準備數(shù)據(jù)文件、入庫控制文件和錯誤數(shù)據(jù)記錄文件。[0017]所述的步驟三中,根據(jù)已完成解析的一級緩存數(shù)據(jù)文件數(shù)獲取下一個待解析一級緩存數(shù)據(jù)文件。在啟動型號入庫線程時,將該型號的信息作為參數(shù)傳遞給入庫線程。[0018]所述的入庫控制文件,根據(jù)入庫控制文件模版和對應(yīng)型號的入庫準備數(shù)據(jù)文件路徑、數(shù)據(jù)表名和數(shù)據(jù)表中的屬性名創(chuàng)建。[0019]本發(fā)明的面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法的優(yōu)點在于:[0020](I)數(shù)據(jù)接收實時性:組播接收、組播報文預(yù)解析和入庫操作異步工作,保證實時接受并保存組播報文;[0021](2)數(shù)據(jù)完整性:接收組播報文時的報文完整性判斷保證單條報文的完整性,接收報文后直接將其存入一級緩存數(shù)據(jù)文件保證了數(shù)據(jù)接收的完整性;[0022](3)穩(wěn)定性:以緩存文件的形式保存組播報文,而不是將其保存在內(nèi)存中,屏蔽了內(nèi)存管理的復(fù)雜性和可能出現(xiàn)的內(nèi)存溢出等錯誤,增強了系統(tǒng)的穩(wěn)定性;[0023](4)屏蔽數(shù)據(jù)庫異構(gòu)性:根據(jù)異構(gòu)數(shù)據(jù)庫中數(shù)據(jù)表的不同結(jié)構(gòu),生成對應(yīng)結(jié)構(gòu)的入庫準備數(shù)據(jù)文件,調(diào)用入庫控制文件模版自動生成對應(yīng)入庫控制文件,實現(xiàn)了針對異構(gòu)數(shù)據(jù)庫的統(tǒng)一入庫;[0024](5)數(shù)據(jù)入庫高效性:采用多線程技術(shù),使每一個型號都有專屬入庫線程進行數(shù)據(jù)解析和入庫,同時采用SQL*Loader技術(shù),保證了系統(tǒng)入庫的高效性?!緦@綀D】【附圖說明】[0025]圖1為實現(xiàn)本發(fā)明的面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法的模塊示意圖;[0026]圖2為本發(fā)明的面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法的流程圖;[0027]圖3為本發(fā)明的面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法的文件系統(tǒng)示意圖;[0028]圖4為本發(fā)明的面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法中入庫控制文件模板格式圖?!揪唧w實施方式】[0029]下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明的技術(shù)方案。[0030]本發(fā)明提出的面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,通過按照一定周期或數(shù)量限制接收組播數(shù)據(jù),將數(shù)據(jù)分列緩存至一級緩存數(shù)據(jù)文件,并以信號量觸發(fā)方式完成對一級緩存數(shù)據(jù)文件的預(yù)解析,根據(jù)目錄索引分型號將數(shù)據(jù)緩存至二級緩存數(shù)據(jù)文件,運用線程池技術(shù)定制專屬入庫線程,以信號量觸發(fā)方式完成對二級緩存數(shù)據(jù)文件的解析和入庫,實現(xiàn)了海量組播數(shù)據(jù)實時穩(wěn)定接收和保存。通過預(yù)解析將一級緩存數(shù)據(jù)文件按型號拆分成多個二級緩存數(shù)據(jù)文件,大大減輕報文解析的負擔(dān)。使用多線程使型號、入庫線程和數(shù)據(jù)庫之間一一對應(yīng),避免了入庫線程在數(shù)據(jù)庫間頻繁切換的問題,保證了系統(tǒng)的穩(wěn)定性和高效性。[0031]如圖1所示,本發(fā)明提供的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其所應(yīng)用的軟件系統(tǒng),包含組播接收模塊1、組播報文預(yù)解析模塊2和入庫模塊3。[0032]組播接收模塊I主要功能包括組播報文接收與過濾和組播報文保存。[0033]組播報文接收與過濾:監(jiān)聽組播接收端口,對接收到的組包報文的類型進行鑒別,過濾掉不需要的報文。[0034]組播報文保存:將所需報文保存到一級緩存數(shù)據(jù)文件。組播接收模塊I按接收周期或接收組播數(shù)劃分一級緩存數(shù)據(jù)文件,且當(dāng)前處于寫入狀態(tài)的一級緩存數(shù)據(jù)文件具有固定文件名,處于已完成寫入狀態(tài)的一級緩存數(shù)據(jù)文件的命名與已完成接收的一級緩存數(shù)據(jù)文件數(shù)相關(guān)。[0035]組播報文預(yù)解析模塊2主要功能包括組播報文預(yù)解析與分發(fā)和型號隊列管理。[0036]組播報文預(yù)解析與分發(fā):讀取一級緩存數(shù)據(jù)文件中的組播報文,根據(jù)組播報文來源型號的不同將報文分別保存到各型號對應(yīng)的二級緩存數(shù)據(jù)文件中。[0037]型號隊列管理:型號隊列保存所有組播報文來源型號的信息,包括型號編號、對應(yīng)數(shù)據(jù)庫的用戶名和密碼、保存數(shù)據(jù)的表名、數(shù)據(jù)表屬性、已完成保存二級數(shù)據(jù)文件數(shù)和已入庫二級數(shù)據(jù)文件數(shù),型號隊列管理的主要功能是型號信息的查詢、保存和刪除,為入庫模塊3提供必要的數(shù)據(jù)支撐。[0038]入庫模塊3的主要功能包括入庫線程管理、組播報文解析、入庫控制文件構(gòu)造和SQL^Loader入庫。[0039]入庫線程管理:維護入庫線程池,控制入庫線程創(chuàng)建、啟動、掛起、恢復(fù)和回收。[0040]組播報文解析:讀取二級緩存數(shù)據(jù)文件,解析組播報文。[0041]入庫控制文件構(gòu)造:調(diào)用入庫控制文件模版,創(chuàng)建型號對應(yīng)入庫控制文件,根據(jù)型號隊列中的信息,構(gòu)造入庫控制文件。[0042]SQL^Loader入庫:調(diào)用SQL*Loader和入庫控制文件,將數(shù)據(jù)錄入對應(yīng)數(shù)據(jù)庫。[0043]結(jié)合圖1和圖2,對本發(fā)明的面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法進行說明。[0044]步驟一:啟動組播報文接收線程,開始接收組播報文。入庫程序讀取配置信息,初始化組播接收模塊1、組播報文預(yù)解析模塊2和入庫模塊3,組播接收模塊I啟動組播報文接收線程,開始接收組播報文。本發(fā)明實施例中的數(shù)據(jù)組播通訊機制為UDP組播通信。所述的配置信息包括播地址及端口、數(shù)據(jù)庫地址、端口及SID(SecurityIdentifiers,安全標(biāo)識符)。[0045]步驟二:組播接收模塊I監(jiān)聽網(wǎng)絡(luò)端口,接收組播報文。首先進行完整性判斷,如果組播報文不完整,則繼續(xù)接收,直到接收完整;如果組播報文完整,則對接收到的組播報文的類型進行檢驗,如果不是所需要的類型,則丟棄報文,繼續(xù)接收新的報文;如果是所需的報文,則將報文信息保存到當(dāng)前指定的一級緩存數(shù)據(jù)文件中;當(dāng)接收組播報文的時間達到接收周期或接收的組播報文數(shù)量達到指定數(shù)量,則關(guān)閉當(dāng)前一級緩存數(shù)據(jù)文件,并按既定規(guī)則重命名該一級緩存數(shù)據(jù)文件,并記錄已完成接收的一級數(shù)據(jù)文件數(shù),同時生成新的一級緩存數(shù)據(jù)文件,等待新接收的組播報文數(shù)據(jù)的寫入。[0046]如圖3所示,本發(fā)明中的文件目錄分為兩級,一級緩存數(shù)據(jù)文件屬于一級目錄下的文件。一級緩存數(shù)據(jù)文件按狀態(tài)分為兩類:[0047]a)第一類是正在接收組播報文寫入的緩存文件:在第一次有組播報文需要寫入緩存文件時,由系統(tǒng)自動生成,當(dāng)組播報文接收周期或數(shù)量達到設(shè)定值時關(guān)閉;此類數(shù)據(jù)緩沖文件具有固定文件名,且唯一;[0048]b)第二類是已完成數(shù)據(jù)寫入的緩存文件:此類一級緩存數(shù)據(jù)文件在第一類一級緩存數(shù)據(jù)文件關(guān)閉時,根據(jù)已完成接收的一級數(shù)據(jù)文件數(shù)和既定命名規(guī)范重命名后產(chǎn)生,同時生成新的第一類一級緩存數(shù)據(jù)文件。[0049]所述接收的組播報文包括報頭和信息體。報頭主要包括長度、型號編號、時間、信息類型、信息來源和信息目的等字段。[0050]長度字段表示除長度字段外報文的長度,為無符號二進制數(shù),占2個字節(jié),低字節(jié)在前,高字節(jié)在后。[0051]型號編號字段用于標(biāo)識信息所屬型號,占8字節(jié)。[0052]時間字段用于表示該信息的產(chǎn)生時間,精確到0.1ms,無符號二進制數(shù),占6個字節(jié),各字節(jié)定義如下:[0053]1-2字節(jié)用于表示基于2010年I月I日的積日,無符號整型,低字節(jié)在前;[0054]3-6字節(jié)用于表示當(dāng)日累計的0.1ms數(shù),無符號短整型,低字節(jié)在前。[0055]信息類型字段用于標(biāo)識組播報文的類型和功能,占4個字節(jié),用ASCII字符串表/Jnο[0056]信息來源字段用于標(biāo)識組播報文的原始產(chǎn)生者,占3個字節(jié)。[0057]信息目的字段用于標(biāo)識組播報文的發(fā)送目的地,占3個字節(jié)。[0058]信息體是一個變長的數(shù)據(jù)結(jié)構(gòu),為組播報文的具體內(nèi)容,可由ASCII字符組成也可由二進制數(shù)組成,格式由報頭中的信息類型確定。[0059]步驟三:判斷是否有待解析的一級緩存數(shù)據(jù)文件,若有,則預(yù)解析一級緩存數(shù)據(jù)文件,否則,繼續(xù)等待。[0060]組播報文預(yù)解析模塊2判斷步驟二中的已完成接收的一級緩存數(shù)據(jù)文件數(shù)是否大于已完成解析的一級緩存數(shù)據(jù)文件數(shù),如果二者相等,說明沒有新的需要處理的數(shù)據(jù),繼續(xù)等待;如果前者大于后者,則根據(jù)已完成解析的一級緩存數(shù)據(jù)文件數(shù)獲取下一個待解析一級緩存數(shù)據(jù)文件,讀取組播報文數(shù)據(jù),開始預(yù)解析。預(yù)解析時,僅解析報頭中的信息來源字段,獲得產(chǎn)生該報文的型號,查詢數(shù)據(jù)庫獲取該型號相關(guān)的數(shù)據(jù)庫信息和數(shù)據(jù)表信息。[0061]組播報文預(yù)解析模塊2對第二類一級緩存數(shù)據(jù)文件進行預(yù)解析,按信息來源型號將報文分發(fā)并保存至各型號對應(yīng)的二級緩存數(shù)據(jù)文件中。[0062]組播報文預(yù)解析模塊2解析組播報文報頭中的信息來源字段,獲取報文所屬的型號,判斷該型號的信息是否已在型號隊列中,如果不在型號隊列中,則獲取該型號的信息并添加到型號隊列中,創(chuàng)建該型號對應(yīng)的二級緩存數(shù)據(jù)文件存儲目錄及相關(guān)數(shù)據(jù)文件和控制文件,將組播報文寫入二級緩存數(shù)據(jù)文件,同時調(diào)用線程池,啟動該型號入庫線程;如果在型號隊列中,則直接將組播報文寫入該型號對應(yīng)的二級緩存數(shù)據(jù)文件中。[0063]所述的型號的信息包括型號編號、對應(yīng)的數(shù)據(jù)庫用戶名和密碼、保存數(shù)據(jù)的表名、已完成保存二級緩存數(shù)據(jù)文件數(shù)以及已入庫二級緩存數(shù)據(jù)文件數(shù)。[0064]所述的型號對應(yīng)的相關(guān)數(shù)據(jù)文件和控制文件包括二級緩存數(shù)據(jù)文件、入庫準備數(shù)據(jù)文件、入庫控制文件和錯誤數(shù)據(jù)記錄文件。[0065]在啟動型號入庫線程時,將該型號信息作為參數(shù)傳遞給入庫線程。[0066]當(dāng)一個一級緩存數(shù)據(jù)文件預(yù)解析完成后,記錄已完成解析的一級緩存數(shù)據(jù)文件數(shù),關(guān)閉所有當(dāng)前待寫入二級緩存數(shù)據(jù)文件,并按既定規(guī)則重命名二級緩存數(shù)據(jù)文件,更新型號隊列中對應(yīng)的已完成保存二級緩存數(shù)據(jù)文件數(shù),同時生成新的二級緩存數(shù)據(jù)文件,等待下一次預(yù)解析時存儲數(shù)據(jù)。[0067]如圖3所示,二級緩存數(shù)據(jù)文件屬于文件目錄中的數(shù)據(jù)文件,二級目錄即是型號目錄,型號隊列中的每一個型號對應(yīng)一個二級目錄。二級目錄包含對應(yīng)型號的二級緩存數(shù)據(jù)文件、入庫準備數(shù)據(jù)文件、入庫控制文件和錯誤數(shù)據(jù)記錄文件。[0068]以某型號為例,二級緩存數(shù)據(jù)文件按狀態(tài)分為兩類:[0069]a)第一類正在寫入組播報文的緩存文件:此類二級緩存數(shù)據(jù)文件對應(yīng)一個正在預(yù)解析的一級緩存數(shù)據(jù)文件,在創(chuàng)建該型號目錄時,由系統(tǒng)自動生成,當(dāng)一級緩存數(shù)據(jù)文件預(yù)解析完畢后關(guān)閉,此類數(shù)據(jù)文件具有固定文件名,且唯一;[0070]b)第二類是已完成數(shù)據(jù)寫入的緩存文件:此類二級緩存數(shù)據(jù)文件是當(dāng)?shù)谝活惗壘彺鏀?shù)據(jù)文件關(guān)閉時,根據(jù)已完成接收的二級數(shù)據(jù)文件數(shù)和既定命名規(guī)范重命名后產(chǎn)生,同時生成新的第一類二級緩存數(shù)據(jù)文件。[0071]步驟四:入庫模塊3對第二類二級緩存數(shù)據(jù)文件進行解析,并將解析后的數(shù)據(jù)保存到對應(yīng)型號的入庫準備數(shù)據(jù)文件中,調(diào)用數(shù)據(jù)加載工具SQL*L0ader方法和入庫控制文件,將入庫準備數(shù)據(jù)文件中的數(shù)據(jù)錄入型號對應(yīng)的數(shù)據(jù)庫。[0072]各型號入庫線程判斷對應(yīng)型號的已完成保存二級緩存數(shù)據(jù)文件數(shù)是否大于已入庫二級緩存數(shù)據(jù)文件數(shù),如果否,說明沒有新的需要入庫的數(shù)據(jù),繼續(xù)等待;如果是,根據(jù)已入庫二級緩存數(shù)據(jù)文件數(shù)獲取下一個待入庫二級緩存數(shù)據(jù)文件,解析該二級緩存數(shù)據(jù)文件,將解析后的數(shù)據(jù)保存至對應(yīng)型號的入庫準備數(shù)據(jù)文件中,解析完成后,調(diào)用SQL*L0ader和入庫控制文件將入庫準備數(shù)據(jù)文件中的數(shù)據(jù)錄入對應(yīng)數(shù)據(jù)庫,同時更新型號隊列中對應(yīng)型號的已入庫二級緩存數(shù)據(jù)文件數(shù)。采用多線程技術(shù)管理入庫線程,使每一個型號都有專屬入庫線程進行數(shù)據(jù)解析和入庫。[0073]入庫準備數(shù)據(jù)文件、錯誤數(shù)據(jù)記錄文件和入庫控制文件同屬文件系統(tǒng)中第二級目錄下的文件,如圖3所示。入庫準備數(shù)據(jù)文件的格式與對應(yīng)型號的數(shù)據(jù)庫中的數(shù)據(jù)表結(jié)構(gòu)一一對應(yīng),入庫控制文件通過調(diào)用入庫控制文件模版,根據(jù)對應(yīng)型號的數(shù)據(jù)庫的信息和具體數(shù)據(jù)表結(jié)構(gòu)而創(chuàng)建,從而實現(xiàn)異構(gòu)數(shù)據(jù)庫的入庫。[0074]入庫準備數(shù)據(jù)文件在創(chuàng)建該型號的二級緩存數(shù)據(jù)文件存儲目錄時,由系統(tǒng)自動生成,根據(jù)對應(yīng)數(shù)據(jù)庫中數(shù)據(jù)表的格式,將解析出的數(shù)據(jù)寫入入庫準備數(shù)據(jù)文件,文件為CSV格式,當(dāng)該入庫數(shù)據(jù)準備文件中的數(shù)據(jù)入庫完成后,清空該文件;此類數(shù)據(jù)文件具有固定文件名,且在型號的二級緩存數(shù)據(jù)文件存儲目錄下唯一。[0075]錯誤數(shù)據(jù)記錄文件在創(chuàng)建該型號的二級緩存數(shù)據(jù)文件存儲目錄時,由系統(tǒng)自動生成,當(dāng)調(diào)用SQL*L0ader將數(shù)據(jù)錄入數(shù)據(jù)庫時,如果出現(xiàn)錯誤數(shù)據(jù),則將該數(shù)據(jù)寫入錯誤數(shù)據(jù)記錄文件。[0076]入庫控制文件在創(chuàng)建該型號的二級緩存數(shù)據(jù)文件存儲目錄時,根據(jù)入庫控制文件模板和型號隊列中對應(yīng)型號的數(shù)據(jù)庫相關(guān)信息,由系統(tǒng)自動生成。[0077]入庫控制文件模版屬于文件系統(tǒng)中第一級目錄下的文件,入庫控制文件模版如圖4所不,其中“$file_path$”、“$table_name$”和“$table_element$”分別代表待錄入數(shù)據(jù)庫的入庫準備數(shù)據(jù)文件路徑、數(shù)據(jù)表名和數(shù)據(jù)表中的屬性名,在入庫控制文件模版被調(diào)用生成具體的入庫控制文件時,“$f丨16_口&1:11$”、“$七31316_的1116$”和“$七31316_61611161^$”將對應(yīng)的被替換為實際值。【權(quán)利要求】1.一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,包括以下步驟:步驟一:啟動組播報文接收線程,開始接收組播報文;步驟二:對接收到的組播報文首先進行完整性判斷,如果不完整,則繼續(xù)接收;如果完整,則對報文的類型進行檢驗,如果不是所需要的類型,丟棄該報文,繼續(xù)接收新的組播報文;如果是所需的報文,將報文存入當(dāng)前待寫入的一級緩存數(shù)據(jù)文件中;當(dāng)接收組播報文的時間達到接收周期或接收的組播報文數(shù)量達到指定數(shù)量時,記錄已完成接收的一級數(shù)據(jù)文件數(shù),關(guān)閉并重命名當(dāng)前待寫入的一級緩存數(shù)據(jù)文件,同時生成新的待寫入的一級緩存數(shù)據(jù)文件;步驟三:判斷是否有需要解析的一級緩存數(shù)據(jù)文件,若有,讀取待解析一級緩存數(shù)據(jù)文件中的組播報文,開始預(yù)解析;否則,繼續(xù)等待;預(yù)解析的方法是:解析組播報文報頭中的信息來源字段,獲取報文所屬的型號,判斷該型號對應(yīng)的信息是否已在型號隊列中,如果不在型號隊列中,則獲取該型號的信息并添加到型號隊列中,并創(chuàng)建該型號對應(yīng)的二級緩存數(shù)據(jù)文件存儲目錄及相關(guān)數(shù)據(jù)文件和控制文件,將組播報文寫入二級緩存數(shù)據(jù)文件中,同時調(diào)用線程池,啟動該型號入庫線程;如果在型號隊列中,直接將組播報文寫入對應(yīng)型號的二級緩存數(shù)據(jù)文件中;所述的型號對應(yīng)的相關(guān)數(shù)據(jù)文件和控制文件包括:二級緩存數(shù)據(jù)文件、入庫準備數(shù)據(jù)文件、入庫控制文件和錯誤數(shù)據(jù)記錄文件;當(dāng)一個一級緩存數(shù)據(jù)文件預(yù)解析完成后,記錄已完成解析的一級緩存數(shù)據(jù)文件數(shù),關(guān)閉并重命名當(dāng)前所有待寫入二級緩存數(shù)據(jù)文件,更新型號隊列中各型號對應(yīng)的已完成保存二級緩存數(shù)據(jù)文件數(shù),同時生成新的待寫入二級緩存數(shù)據(jù)文件;步驟四:各型號入庫線程判斷對應(yīng)型號的已完成保存二級緩存數(shù)據(jù)文件數(shù)是否大于已入庫二級緩存數(shù)據(jù)文件數(shù),如果否,說明沒有新的需要入庫的數(shù)據(jù),繼續(xù)等待;如果是,根據(jù)已入庫二級緩存數(shù)據(jù)文件數(shù)獲取下一個待入庫二級緩存數(shù)據(jù)文件,解析該二級緩存數(shù)據(jù)文件,將解析后的數(shù)據(jù)保存至對應(yīng)型號的入庫準備數(shù)據(jù)文件中,解析完成后,調(diào)用數(shù)據(jù)加載工具SQL*Loader和入庫控制文件將入庫準備數(shù)據(jù)文件中的數(shù)據(jù)錄入對應(yīng)數(shù)據(jù)庫,同時更新型號隊列中對應(yīng)型號的已入庫二級緩存數(shù)據(jù)文件數(shù)。2.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,所述的步驟二中,當(dāng)前待寫入的一級緩存數(shù)據(jù)文件唯一且具有固定文件名,處于已完成寫入狀態(tài)的一級緩存數(shù)據(jù)文件的命名與已完成接收的一級緩存數(shù)據(jù)文件數(shù)相關(guān)。3.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,步驟二中所述的組播報文,包括報頭和信息體;報頭包括長度、型號編號、時間、信息類型、信息來源和信息目的字段;長度字段表示除長度字段外報文的長度,為無符號二進制數(shù),占2個字節(jié),低字節(jié)在iu,聞字節(jié)在后;型號編號字段用于標(biāo)識報文所屬型號,占8字節(jié);時間字段用于表示報文的產(chǎn)生時間,精確到0.1ms,為無符號二進制數(shù),占6個字節(jié),各字節(jié)定義如下:1-2字節(jié)用于表示基于2010年I月I日的積日,為無符號整型,低字節(jié)在前;3-6字節(jié)用于表示當(dāng)日累計的0.1ms數(shù),為無符號短整型,低字節(jié)在前;信息類型字段用于標(biāo)識報文的類型和功能,占4個字節(jié),用ASCII字符串表示;信息來源字段用于標(biāo)識報文的原始產(chǎn)生者,占3個字節(jié);信息目的字段用于標(biāo)識報文的發(fā)送目的地,占3個字節(jié);信息體是一個變長的數(shù)據(jù)結(jié)構(gòu),為報文的具體內(nèi)容,由ASCII字符或二進制數(shù)組成,格式由報頭中的信息類型確定。4.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,步驟三中所述的型號的信息包括型號編號、對應(yīng)的數(shù)據(jù)庫用戶名和密碼、保存數(shù)據(jù)的表名、已完成保存二級緩存數(shù)據(jù)文件數(shù)以及已入庫二級緩存數(shù)據(jù)文件數(shù)。5.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,所述的步驟三,根據(jù)已完成解析的一級緩存數(shù)據(jù)文件數(shù)獲取下一個待解析一級緩存數(shù)據(jù)文件。6.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,步驟三中所述的啟動型號入庫線程時,將該型號的信息作為參數(shù)傳遞給入庫線程。7.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,步驟三和步驟四中所述的入庫準備數(shù)據(jù)文件,該文件的格式與對應(yīng)型號的數(shù)據(jù)庫中的數(shù)據(jù)表結(jié)構(gòu)一一對應(yīng),且各型號對應(yīng)的入庫準備數(shù)據(jù)文件唯一,并具有固定文件名。8.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,步驟三和步驟四中所述的錯誤數(shù)據(jù)記錄文件,在調(diào)用SQL*L0ader將數(shù)據(jù)錄入數(shù)據(jù)庫出現(xiàn)錯誤數(shù)據(jù)時,將錯誤數(shù)據(jù)寫入。9.根據(jù)權(quán)利要求1所述的一種面向異構(gòu)數(shù)據(jù)庫的海量組播數(shù)據(jù)入庫實現(xiàn)方法,其特征在于,步驟三和步驟四中所述的入庫控制文件,根據(jù)入庫控制文件模版和對應(yīng)型號的入庫準備數(shù)據(jù)文件路徑、數(shù)據(jù)表名和數(shù)據(jù)表中的屬性名創(chuàng)建?!疚臋n編號】G06F17/30GK103559217SQ201310488096【公開日】2014年2月5日申請日期:2013年10月17日優(yōu)先權(quán)日:2013年10月17日【發(fā)明者】劉平原,高世偉,呂江花,馬世龍申請人:北京航空航天大學(xué)