一種數(shù)據(jù)采集方法以及etl組件的制作方法
【專利摘要】本發(fā)明實(shí)施例公開了一種數(shù)據(jù)采集方法以及ETL組件,所述方法包括:數(shù)據(jù)采集周期到達(dá)時(shí),確定本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間;根據(jù)所述當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限;根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限;采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。應(yīng)用本發(fā)明,可以避免漏掉采集數(shù)據(jù),提高數(shù)據(jù)采集的完整性。
【專利說明】
一種數(shù)據(jù)采集方法以及ETL組件
技術(shù)領(lǐng)域
[0001]本發(fā)明實(shí)施例涉及數(shù)據(jù)采集技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)采集方法以及ETL組件。
【背景技術(shù)】
[0002]ETL(Extract1n-Transformat1n_Loading,數(shù)據(jù)抽取、轉(zhuǎn)換和加載)組件是構(gòu)建數(shù)據(jù)倉庫中極其重要的一部分。其按照預(yù)先設(shè)計(jì)的規(guī)則,提供對(duì)不同數(shù)據(jù)源的數(shù)據(jù)進(jìn)行抽取、轉(zhuǎn)換、清洗的功能,集成和凈化來自于多個(gè)不同系統(tǒng)的數(shù)據(jù),最后將轉(zhuǎn)換完的數(shù)據(jù)增量或全部載入目標(biāo)數(shù)據(jù)庫中。其從不同的異構(gòu)數(shù)據(jù)源流得到統(tǒng)一的目標(biāo)數(shù)據(jù),作為聯(lián)機(jī)分析處理、數(shù)據(jù)挖掘的基礎(chǔ)。
[0003]目前,ETL組件對(duì)數(shù)據(jù)進(jìn)行抽取的方式包括全量抽取方式和增量抽取方式。其中,增量抽取方式中包括:觸發(fā)器方式、時(shí)間戳方式、全表刪除方式。
[0004]以觸發(fā)器方式抽取數(shù)據(jù),需要在業(yè)務(wù)系統(tǒng)中要抽取的表上建立觸發(fā)器,建立插入、修改、刪除三個(gè)觸發(fā)器,每當(dāng)業(yè)務(wù)系統(tǒng)源表中的數(shù)據(jù)發(fā)生變化,就被相應(yīng)的觸發(fā)器將變化的數(shù)據(jù)寫入一個(gè)臨時(shí)表,抽取線程從臨時(shí)表中抽取數(shù)據(jù),臨時(shí)表中抽取過的數(shù)據(jù)被標(biāo)記或刪除。
[0005]以時(shí)間戳方式抽取數(shù)據(jù),則需要源表上具備時(shí)間戳字段,業(yè)務(wù)系統(tǒng)更新修改表數(shù)據(jù)的時(shí)候,同時(shí)修改時(shí)間戳字段的值。當(dāng)進(jìn)行數(shù)據(jù)抽取時(shí),通過比較當(dāng)前的系統(tǒng)時(shí)間與時(shí)間戳字段的值來決定抽取哪些數(shù)據(jù)。
[0006]以全表刪除方式抽取數(shù)據(jù),則在每次抽取一個(gè)目標(biāo)表的數(shù)據(jù)后,將該目標(biāo)表數(shù)據(jù)進(jìn)行刪除;之后,業(yè)務(wù)系統(tǒng)重新創(chuàng)建并保存后續(xù)的數(shù)據(jù)。
[0007]以全量抽取方式抽取數(shù)據(jù),則是對(duì)業(yè)務(wù)系統(tǒng)的整個(gè)數(shù)據(jù)表的數(shù)據(jù)進(jìn)行抽取。
[0008]然而,以觸發(fā)器方式、或者以全表刪除方式,或者以全量抽取方式抽取數(shù)據(jù)會(huì)存在以下問題:當(dāng)ETL組件抽取業(yè)務(wù)系統(tǒng)中數(shù)據(jù)量比較大的表中的數(shù)據(jù)時(shí),會(huì)對(duì)ETL組件所在的數(shù)據(jù)采集系統(tǒng)的內(nèi)存和1端口(輸入輸出端口)產(chǎn)生很大影響,導(dǎo)致內(nèi)存和1端口占用過多,系統(tǒng)出現(xiàn)卡頓現(xiàn)象,從而嚴(yán)重影響數(shù)據(jù)采集的執(zhí)行效率。
[0009]因此,目前ETL組件通常采用時(shí)間戳方式抽取數(shù)據(jù)。然而,本發(fā)明的發(fā)明人發(fā)現(xiàn),以時(shí)間戳方式抽取數(shù)據(jù)也存在一些問題:目前基于互聯(lián)網(wǎng)的關(guān)系數(shù)據(jù)的存儲(chǔ)大多采用分布式數(shù)據(jù)庫;分布式系統(tǒng)中的各業(yè)務(wù)系統(tǒng),通常相互間具有時(shí)間差,或者各業(yè)務(wù)系統(tǒng)因網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致記錄數(shù)據(jù)的時(shí)間延后;這就使得,ETL組件以時(shí)間戳方式采集各業(yè)務(wù)系統(tǒng)的數(shù)據(jù)時(shí),有些數(shù)據(jù)因網(wǎng)絡(luò)延遲或時(shí)間差的原因而沒被業(yè)務(wù)系統(tǒng)及時(shí)記錄而被漏掉,導(dǎo)致采集的數(shù)據(jù)不完整。
【發(fā)明內(nèi)容】
[0010]有鑒于此,本發(fā)明的目的在于提出一種數(shù)據(jù)采集方法以及ETL組件,用以在進(jìn)行數(shù)據(jù)采集時(shí)盡量避免漏掉數(shù)據(jù),提高數(shù)據(jù)采集的完整性。[0011 ]基于上述目的,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)采集方法方法,包括:
[0012]數(shù)據(jù)采集周期到達(dá)時(shí),確定本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間;
[0013]根據(jù)所述當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限;
[0014]根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限;
[0015]采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0016]較佳地,所述延遲時(shí)長與所述第一采集時(shí)長相等。
[0017]較佳地,在所述數(shù)據(jù)采集周期到達(dá)后,還包括:
[0018]確定所述各業(yè)務(wù)系統(tǒng)中待采集的數(shù)據(jù)表為全量數(shù)據(jù)表或增量數(shù)據(jù)表。
[0019]較佳地,所述采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)具體為:
[0020]采集所述各業(yè)務(wù)系統(tǒng)的增量數(shù)據(jù)表中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0021 ]較佳地,在所述數(shù)據(jù)采集周期到達(dá)后,還包括:
[0022]針對(duì)所述各業(yè)務(wù)系統(tǒng)中的全量數(shù)據(jù)表,進(jìn)行一次躍進(jìn)式的增量數(shù)據(jù)采集;
[0023]其中,在該次躍進(jìn)式的增量數(shù)據(jù)采集過程中,確定所述全量數(shù)據(jù)表已采集的次數(shù);
[0024]根據(jù)所述全量數(shù)據(jù)表中的最小時(shí)間戳、預(yù)設(shè)的第二采集時(shí)長,以及確定的已采集的次數(shù),計(jì)算起始時(shí)間戳;
[0025]根據(jù)所述起始時(shí)間戳,以及所述第二采集時(shí)長,計(jì)算終止時(shí)間戳;
[0026]采集所述全量數(shù)據(jù)表中所述起始時(shí)間戳與終止時(shí)間戳所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0027]較佳地,所述第二采集時(shí)長大于第一采集時(shí)長。
[0028]在本發(fā)明實(shí)施例的另一方面,還提供了一種ETL組件,包括:
[0029]系統(tǒng)時(shí)間確定模塊,用于在數(shù)據(jù)采集周期到達(dá)時(shí),確定本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間并發(fā)送采集通知;
[0030]第一時(shí)間戳計(jì)算模塊,用于接收到所述采集通知后,根據(jù)所述當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限;根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限;
[0031]第一數(shù)據(jù)采集模塊,用于采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0032]進(jìn)一步,所述ETL組件還包括:
[0033]數(shù)據(jù)表確定模塊,用于確定出所述各業(yè)務(wù)系統(tǒng)中待采集的數(shù)據(jù)表為全量數(shù)據(jù)表或增量數(shù)據(jù)表。
[0034]較佳地,第一數(shù)據(jù)采集模塊具體用于根據(jù)所述數(shù)據(jù)表確定模塊的確定結(jié)果,采集所述各業(yè)務(wù)系統(tǒng)中的增量數(shù)據(jù)表中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0035]進(jìn)一步,所述ETL組件還包括:
[0036]第二時(shí)間戳計(jì)算模塊,用于接收到所述采集通知后,針對(duì)所述數(shù)據(jù)表確定模塊判斷出的全量數(shù)據(jù)表,根據(jù)所述全量數(shù)據(jù)表中的最小時(shí)間戳、預(yù)設(shè)的第二采集時(shí)長,以及確定的已采集的次數(shù),計(jì)算起始時(shí)間戳;根據(jù)所述起始時(shí)間戳,以及所述第二采集時(shí)長,計(jì)算終止時(shí)間戳;
[0037]第二數(shù)據(jù)采集模塊,用于采集所述全量數(shù)據(jù)表中所述起始時(shí)間戳與終止時(shí)間戳所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0038]本發(fā)明實(shí)施例的技術(shù)方案中,由于將當(dāng)前系統(tǒng)時(shí)間延遲預(yù)設(shè)的延遲時(shí)長后作為時(shí)間戳上限,并依據(jù)此時(shí)間戳上限進(jìn)行數(shù)據(jù)采集;避免了業(yè)務(wù)系統(tǒng)因時(shí)間差或網(wǎng)絡(luò)延遲而沒有及時(shí)記錄當(dāng)前時(shí)間下的數(shù)據(jù)而使得采集的數(shù)據(jù)丟失一部分當(dāng)前時(shí)間的數(shù)據(jù)的情況;也就是說,當(dāng)前時(shí)間記錄的數(shù)據(jù)將延遲預(yù)設(shè)的延遲時(shí)長后才會(huì)被采集,從而提高數(shù)據(jù)采集的完整性。
[0039]進(jìn)一步,針對(duì)現(xiàn)有的全量數(shù)據(jù)表采集方法容易出現(xiàn)系統(tǒng)卡頓、死機(jī)的現(xiàn)象,本發(fā)明實(shí)施例的技術(shù)方案中,對(duì)于全量數(shù)據(jù)表采用躍進(jìn)式的增量數(shù)據(jù)采集方式,從而在一個(gè)數(shù)據(jù)采集周期中,僅采集起始時(shí)間戳與終止時(shí)間戳之間的數(shù)據(jù),限制了采集的數(shù)據(jù)量,避免因需要采集的數(shù)據(jù)量過大,而過多占用內(nèi)存、或1端口而出現(xiàn)系統(tǒng)卡頓、或死機(jī)的現(xiàn)象。
【附圖說明】
[0040]圖1為本發(fā)明實(shí)施例的ETL組件進(jìn)行數(shù)據(jù)采集的方法流程圖;
[0041]圖2為本發(fā)明實(shí)施例的ETL組件針對(duì)增量數(shù)據(jù)表進(jìn)行延遲式的增量數(shù)據(jù)采集的方法流程圖;
[0042]圖3為本發(fā)明實(shí)施例的ETL組件針對(duì)全量數(shù)據(jù)表進(jìn)行一次躍進(jìn)式的增量數(shù)據(jù)采集的方法流程圖;
[0043]圖4為本發(fā)明實(shí)施例的ETL組件內(nèi)部結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0044]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。
[0045]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。
[0046]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“親接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。
[0047]需要說明的是,本發(fā)明實(shí)施例中所有使用“第一”和“第二”的表述均是為了區(qū)分兩個(gè)相同名稱非相同的實(shí)體或者非相同的參量,可見“第一” “第二”僅為了表述的方便,不應(yīng)理解為對(duì)本發(fā)明實(shí)施例的限定,后續(xù)實(shí)施例對(duì)此不再一一說明。
[0048]本發(fā)明的發(fā)明人對(duì)現(xiàn)有技術(shù)進(jìn)行分析發(fā)現(xiàn),現(xiàn)有技術(shù)的ETL組件以時(shí)間戳方式進(jìn)行增量數(shù)據(jù)采集時(shí),通常根據(jù)本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間,對(duì)各業(yè)務(wù)系統(tǒng)中相應(yīng)時(shí)間戳的數(shù)據(jù)進(jìn)行采集。比如,當(dāng)前系統(tǒng)時(shí)間為8: OO,則采集各業(yè)務(wù)系統(tǒng)中7:59?8:00之間的數(shù)據(jù)。此時(shí),由于各業(yè)務(wù)系統(tǒng)的時(shí)間差,可能有的業(yè)務(wù)系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間還未到8:00,或者由于網(wǎng)絡(luò)原因延遲了 8:00的數(shù)據(jù)記錄,那么ETL組件將無法獲取到這些業(yè)務(wù)系統(tǒng)的8:00所記錄的數(shù)據(jù),導(dǎo)致數(shù)據(jù)采集的不完整。
[0049]由此,本發(fā)明的發(fā)明人考慮到,將采集數(shù)據(jù)的時(shí)間進(jìn)行一定的延遲;例如,將8:00的記錄數(shù)據(jù)延遲到8:01進(jìn)行采集;也就是說,將當(dāng)前系統(tǒng)時(shí)間減去一個(gè)延遲時(shí)長計(jì)算出一個(gè)采集數(shù)據(jù)的時(shí)間戳上限,進(jìn)而再計(jì)算時(shí)間戳下限,所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍進(jìn)行數(shù)據(jù)采集。例如,當(dāng)前系統(tǒng)時(shí)間為8:01,則采集各業(yè)務(wù)系統(tǒng)中7:59?8:00之間的數(shù)據(jù)。此時(shí),由于各業(yè)務(wù)系統(tǒng)8:00的記錄數(shù)據(jù)已延遲到8:01進(jìn)行采集;這樣,雖然業(yè)務(wù)系統(tǒng)有時(shí)間差,但適當(dāng)?shù)难舆t采集可以保證各業(yè)務(wù)系統(tǒng)均已記錄到8:00的數(shù)據(jù);同時(shí),雖然有的業(yè)務(wù)系統(tǒng)因網(wǎng)絡(luò)原因會(huì)延遲記錄數(shù)據(jù),而適當(dāng)?shù)难舆t采集也可以盡量保證在8:01時(shí),業(yè)務(wù)系統(tǒng)已記錄了延遲到達(dá)的8:00的數(shù)據(jù),從而盡量避免采集時(shí)漏掉數(shù)據(jù),提高數(shù)據(jù)采集的完整性。
[0050]基于上述的分析,本發(fā)明的主要思路為采用延遲式的增量數(shù)據(jù)采集方案:ETL組件在數(shù)據(jù)采集周期到達(dá)時(shí),確定本ETL組件所在系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間;根據(jù)確定的當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限;根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限;進(jìn)而,采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù);從而盡量避免采集時(shí)漏掉數(shù)據(jù),提高數(shù)據(jù)采集的完整性。
[0051]下面結(jié)合附圖詳細(xì)說明本發(fā)明的技術(shù)方案。
[0052]基于上述的思路,本發(fā)明實(shí)施例提供的一種ETL組件的數(shù)據(jù)采集方法,具體流程如圖1所示,包括如下步驟:
[0053 ]步驟S11: ETL組件在每次數(shù)據(jù)采集周期到達(dá)時(shí),確定本ETL組件所在系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間。
[0054]具體地,安裝有ETL組件的數(shù)據(jù)采集系統(tǒng)在每次數(shù)據(jù)采集周期到達(dá)時(shí),確定本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間。
[0055]步驟S102:ETL組件確定出各業(yè)務(wù)系統(tǒng)中待采集的數(shù)據(jù)表為全量數(shù)據(jù)表或增量數(shù)據(jù)表。
[0056]更優(yōu)地,本發(fā)明的發(fā)明人還考慮到雖然目前各業(yè)務(wù)系統(tǒng)中大多數(shù)數(shù)據(jù)表均為增量數(shù)據(jù)表(或稱增量同步數(shù)據(jù)表),但有時(shí)也存在全量數(shù)據(jù)表(或稱全量同步數(shù)據(jù)表)的情況。對(duì)于增量數(shù)據(jù)表,本發(fā)明上述思路中所提到的延遲式的增量數(shù)據(jù)采集方法,則可以盡量避免采集時(shí)漏掉數(shù)據(jù),提高數(shù)據(jù)采集的完整性;而對(duì)于全量數(shù)據(jù)表,目前通常的做法是進(jìn)行全量數(shù)據(jù)采集,但進(jìn)行全量數(shù)據(jù)采集時(shí),則容易出現(xiàn)過多占用內(nèi)存、1端口而導(dǎo)致系統(tǒng)卡頓、甚至死機(jī)的現(xiàn)象。
[0057]由此,本發(fā)明的技術(shù)方案中還提出了一種針對(duì)全量數(shù)據(jù)表進(jìn)行增量數(shù)據(jù)采集的方法,即后續(xù)步驟S104所述的躍進(jìn)式的增量數(shù)據(jù)采集方法,從而解決采集全量數(shù)據(jù)表時(shí)系統(tǒng)卡頓、甚至死機(jī)的現(xiàn)象。
[0058]因此,本步驟中,對(duì)各業(yè)務(wù)系統(tǒng)中的每個(gè)待采集的數(shù)據(jù)表,確定該數(shù)據(jù)表為全量數(shù)據(jù)表,還是增量數(shù)據(jù)表,以便于進(jìn)一步?jīng)Q定針對(duì)該表是采取延遲式的增量數(shù)據(jù)采集方法,還是采取躍進(jìn)式的增量數(shù)據(jù)采集方法。
[0059]事實(shí)上,可以預(yù)先針對(duì)各業(yè)務(wù)系統(tǒng)中待采集的數(shù)據(jù)表逐一判斷其為全量數(shù)據(jù)表還是增量數(shù)據(jù)表,并進(jìn)行記錄;在本步驟中,可以根據(jù)預(yù)先的記錄,確定每個(gè)待采集的數(shù)據(jù)表為全量數(shù)據(jù)表還是增量數(shù)據(jù)表。如何判斷全量數(shù)據(jù)表,以及增量數(shù)據(jù)表為本領(lǐng)域技術(shù)人員所熟知,此次不再贅述。
[0060]步驟S103:ETL組件針對(duì)增量數(shù)據(jù)表進(jìn)行延遲式的增量數(shù)據(jù)采集。
[0061]步驟S104:ETL組件針對(duì)全量數(shù)據(jù)表進(jìn)行一次躍進(jìn)式的增量數(shù)據(jù)采集。
[0062]上述步驟S103中提到的ETL組件針對(duì)增量數(shù)據(jù)表進(jìn)行延遲式的增量數(shù)據(jù)采集的具體方法,流程如圖2所示,包括如下步驟:
[0063]步驟S201:ETL組件根據(jù)當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限。
[0064]本步驟中,ETL組件將當(dāng)前系統(tǒng)時(shí)間減去預(yù)設(shè)的延遲時(shí)長,得到時(shí)間戳上限。例如,預(yù)設(shè)的延遲時(shí)長為I分鐘,當(dāng)前系統(tǒng)時(shí)間為8:01,則計(jì)算得到時(shí)間戳上限為8:00。
[0065]本領(lǐng)域技術(shù)人員可以根據(jù)經(jīng)驗(yàn)或?qū)嶋H情況設(shè)置延遲時(shí)長;較佳地,可設(shè)置延遲時(shí)長等于或大于I分鐘。
[0066]步驟S202:ETL組件根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限。
[0067]本步驟中,ETL組件將時(shí)間戳上限減去第一采集時(shí)長,計(jì)算得到時(shí)間戳下限。例如,計(jì)算的時(shí)間戳上限為8:00,預(yù)設(shè)的第一采集時(shí)長為I分鐘,則計(jì)算出時(shí)間戳下限為7:59。
[0068]本領(lǐng)域技術(shù)人員可以根據(jù)經(jīng)驗(yàn)或?qū)嶋H情況設(shè)置第一采集時(shí)長;
[0069]較佳地,可以設(shè)置第一采集時(shí)長等于上述的延遲時(shí)長,設(shè)置上述的延遲時(shí)長等于數(shù)據(jù)采集周期。
[0070]步驟S203:ETL組件采集各業(yè)務(wù)系統(tǒng)增量數(shù)據(jù)表中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0071]本步驟中,ETL組件根據(jù)計(jì)算的時(shí)間戳上、下限,針對(duì)各業(yè)務(wù)系統(tǒng)中的每個(gè)增量數(shù)據(jù)表,采集該增量數(shù)據(jù)表中時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0072]本發(fā)明實(shí)施例的技術(shù)方案中,針對(duì)全量數(shù)據(jù)表中的數(shù)據(jù)并不是一次性地進(jìn)行采集,而是進(jìn)行多次的增量式采集,從而避免對(duì)內(nèi)存、1端口過多占用。也就是說,則每次數(shù)據(jù)采集周期到達(dá)后,會(huì)對(duì)全量數(shù)據(jù)表進(jìn)行一次增量式采集,直到該全量數(shù)據(jù)表的數(shù)據(jù)完全被米集。
[0073]上述步驟S104中提到的ETL組件針對(duì)全量數(shù)據(jù)表進(jìn)行一次躍進(jìn)式的增量數(shù)據(jù)采集的具體方法,流程如圖3所示,包括如下步驟:
[0074]步驟S301:針對(duì)一個(gè)全量數(shù)據(jù)表,ETL組件在該次躍進(jìn)式的增量數(shù)據(jù)采集過程中,確定該全量數(shù)據(jù)表已采集的次數(shù)。
[0075]本步驟中,ETL組件針對(duì)一個(gè)全量數(shù)據(jù)表在當(dāng)前此次躍進(jìn)式的增量數(shù)據(jù)采集過程中,首先確定之前針對(duì)該全量數(shù)據(jù)表已采集的次數(shù)。
[0076]事實(shí)上,ETL組件針對(duì)該全量數(shù)據(jù)表每進(jìn)行一次躍進(jìn)式的增量數(shù)據(jù)采集時(shí),即可進(jìn)行采集計(jì)數(shù)的累加;ETL組件根據(jù)記錄的采集計(jì)數(shù),確定之前針對(duì)該全量數(shù)據(jù)表進(jìn)行躍進(jìn)式的增量數(shù)據(jù)采集的次數(shù)。
[0077]步驟S302:ETL組件根據(jù)該全量數(shù)據(jù)表中的最小時(shí)間戳、預(yù)設(shè)的第二采集時(shí)長,以及確定的已采集的次數(shù),計(jì)算起始時(shí)間戳。
[0078]本步驟中,ETL組件根據(jù)如下公式I計(jì)算起始時(shí)間戳:
[0079]Tstart = Tmin+ff Xm (公式 I)
[0080]其中,Tstart表示起始時(shí)間戳,Tmin表示最小時(shí)間戳,W表示第二采集時(shí)長,m表示已采集的次數(shù)。
[0081 ]例如,全量數(shù)據(jù)表中的最小時(shí)間戳為2014年I月I日O時(shí),第二采集時(shí)長為I小時(shí),確定的已采集的次數(shù)為10,則根據(jù)上述的公式,可以計(jì)算出本次采集的起始時(shí)間戳為2014年I月I日10時(shí)。
[0082]本領(lǐng)域技術(shù)人員可以根據(jù)經(jīng)驗(yàn)或?qū)嶋H情況設(shè)置第二采集時(shí)長;較佳地,第二采集時(shí)長可以大于上述的第一采集時(shí)長,比如,可以設(shè)置第二采集時(shí)長為30分鐘或I小時(shí)。
[0083]步驟S303:ETL組件根據(jù)所述起始時(shí)間戳,以及所述第二采集時(shí)長,計(jì)算終止時(shí)間戳。
[0084]本步驟中,ETL組件將起始時(shí)間戳與第二采集時(shí)長相加,得到終止時(shí)間戳。
[0085]例如,起始時(shí)間戳為2014年I月I日10時(shí),第二采集時(shí)長為I小時(shí),則計(jì)算出終止時(shí)間戳為2014年I月I日11時(shí)。
[0086]步驟S304:ETL組件采集該全量數(shù)據(jù)表中所述起始時(shí)間戳與終止時(shí)間戳所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0087]本步驟中,ETL組件在本次數(shù)據(jù)采集周期中僅采集全量數(shù)據(jù)表中起始時(shí)間戳與終止時(shí)間戳所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。例如,在本次的躍進(jìn)式的增量數(shù)據(jù)采集過程中,僅采集全量數(shù)據(jù)表中2014年I月I日10時(shí)至2014年I月I日11時(shí)記錄的數(shù)據(jù)。這樣,就限制了ETL組件在一次數(shù)據(jù)采集周期中采集的數(shù)據(jù)量,避免因?yàn)橐欢〞r(shí)間內(nèi)需要采集大量的數(shù)據(jù)而占用過多內(nèi)存和1端口導(dǎo)致系統(tǒng)的卡頓甚至死機(jī)。
[0088]本發(fā)明實(shí)施例的技術(shù)方案中,由于將當(dāng)前系統(tǒng)時(shí)間延遲預(yù)設(shè)的延遲時(shí)長后作為時(shí)間戳上限,并依據(jù)此時(shí)間戳上限進(jìn)行數(shù)據(jù)采集;避免了業(yè)務(wù)系統(tǒng)因時(shí)間差或網(wǎng)絡(luò)延遲而沒有及時(shí)記錄當(dāng)前時(shí)間下的數(shù)據(jù)而使得采集的數(shù)據(jù)丟失一部分當(dāng)前時(shí)間的數(shù)據(jù)的情況;也就是說,當(dāng)前時(shí)間記錄的數(shù)據(jù)將延遲預(yù)設(shè)的延遲時(shí)長后才會(huì)被采集,從而提高數(shù)據(jù)采集的完整性。
[0089]進(jìn)一步,針對(duì)現(xiàn)有的全量數(shù)據(jù)表采集方法容易出現(xiàn)系統(tǒng)卡頓、死機(jī)的現(xiàn)象,本發(fā)明實(shí)施例的技術(shù)方案中,對(duì)于全量數(shù)據(jù)表采用躍進(jìn)式的增量數(shù)據(jù)采集方式,從而在一個(gè)數(shù)據(jù)采集周期中,僅采集起始時(shí)間戳與終止時(shí)間戳之間的數(shù)據(jù),限制了采集的數(shù)據(jù)量,避免因需要采集的數(shù)據(jù)量過大,而過多占用內(nèi)存、或1端口而出現(xiàn)系統(tǒng)卡頓、或死機(jī)的現(xiàn)象。
[0090]基于上述的方法,本發(fā)明實(shí)施例提供的一種ETL組件的內(nèi)部結(jié)構(gòu),如圖4所示,其數(shù)據(jù)采集裝置中包括如下模塊:系統(tǒng)時(shí)間確定模塊401、第一時(shí)間戳計(jì)算模塊402、第一數(shù)據(jù)采集豐旲塊403。
[0091]其中,系統(tǒng)時(shí)間確定模塊401用于在數(shù)據(jù)采集周期到達(dá)時(shí),確定本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間并發(fā)送采集通知;
[0092]第一時(shí)間戳計(jì)算模塊402用于接收到所述采集通知后,根據(jù)所述當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限;根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限;較佳地,延遲時(shí)長與所述第一采集時(shí)長相等。
[0093]第一數(shù)據(jù)采集模塊403用于根據(jù)第一時(shí)間戳計(jì)算模塊402計(jì)算的時(shí)間戳,采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0094]更優(yōu)地,本發(fā)明實(shí)施例的ETL組件中還可以包括:數(shù)據(jù)表確定模塊404。
[0095]數(shù)據(jù)表確定模塊404可以確定出所述各業(yè)務(wù)系統(tǒng)中待采集的數(shù)據(jù)表為全量數(shù)據(jù)表或增量數(shù)據(jù)表。
[0096]相應(yīng)地,上述第一數(shù)據(jù)采集模塊403具體用于根據(jù)數(shù)據(jù)表確定模塊404的確定結(jié)果,采集所述各業(yè)務(wù)系統(tǒng)中的增量數(shù)據(jù)表中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0097]進(jìn)一步,本發(fā)明實(shí)施例的ETL組件中還可以包括:第二時(shí)間戳計(jì)算模塊405、第二數(shù)據(jù)采集模塊406。
[0098]第二時(shí)間戳計(jì)算模塊405用于接收到所述采集通知后,針對(duì)數(shù)據(jù)表確定模塊404確定出的全量數(shù)據(jù)表,根據(jù)所述全量數(shù)據(jù)表中的最小時(shí)間戳、預(yù)設(shè)的第二采集時(shí)長,以及確定的已采集的次數(shù),計(jì)算起始時(shí)間戳;根據(jù)所述起始時(shí)間戳,以及所述第二采集時(shí)長,計(jì)算終止時(shí)間戳;較佳地,第二采集時(shí)長大于上述的第一采集時(shí)長。
[0099]第二數(shù)據(jù)采集模塊406用于根據(jù)第二時(shí)間戳計(jì)算模塊405計(jì)算的起始、終止時(shí)間戳,采集所述全量數(shù)據(jù)表中起始時(shí)間戳與終止時(shí)間戳所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
[0100]其中各模塊對(duì)時(shí)間戳上、下限,或者起始、終止時(shí)間戳的具體計(jì)算可參照上述如圖1-3所示的方法流程中的具體計(jì)算方法,此處不再贅述。
[0101]本發(fā)明實(shí)施例的技術(shù)方案中,由于將當(dāng)前系統(tǒng)時(shí)間延遲預(yù)設(shè)的延遲時(shí)長后作為時(shí)間戳上限,并依據(jù)此時(shí)間戳上限進(jìn)行數(shù)據(jù)采集;避免了業(yè)務(wù)系統(tǒng)因時(shí)間差或網(wǎng)絡(luò)延遲而沒有及時(shí)記錄當(dāng)前時(shí)間下的數(shù)據(jù)而使得采集的數(shù)據(jù)丟失一部分當(dāng)前時(shí)間的數(shù)據(jù)的情況;也就是說,當(dāng)前時(shí)間記錄的數(shù)據(jù)將延遲預(yù)設(shè)的延遲時(shí)長后才會(huì)被采集,從而提高數(shù)據(jù)采集的完整性。
[0102]進(jìn)一步,針對(duì)現(xiàn)有的全量數(shù)據(jù)表采集方法容易出現(xiàn)系統(tǒng)卡頓、死機(jī)的現(xiàn)象,本發(fā)明實(shí)施例的技術(shù)方案中,對(duì)于全量數(shù)據(jù)表采用躍進(jìn)式的增量數(shù)據(jù)采集方式,從而在一個(gè)數(shù)據(jù)采集周期中,僅采集起始時(shí)間戳與終止時(shí)間戳之間的數(shù)據(jù),限制了采集的數(shù)據(jù)量,避免因需要采集的數(shù)據(jù)量過大,而過多占用內(nèi)存、或1端口而出現(xiàn)系統(tǒng)卡頓、或死機(jī)的現(xiàn)象。
[0103]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請(qǐng)中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、R0M(Read-0nly Memory,只讀存儲(chǔ)器)、RAM (Random Access Memory,隨即存儲(chǔ)器)、EPROM(Erasable ProgrammableRead-Only Memory,可擦寫可編程只讀存儲(chǔ)器)、EEPR0M(E1 ectricalIy ErasableProgrammable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。
[0104]本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實(shí)現(xiàn),從而通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。
[0105]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
[0106]所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上任何實(shí)施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于這些例子;在本發(fā)明的思路下,以上實(shí)施例或者不同實(shí)施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明它們沒有在細(xì)節(jié)中提供。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)采集方法,其特征在于,包括: 數(shù)據(jù)采集周期到達(dá)時(shí),確定本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間; 根據(jù)所述當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限; 根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限; 采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述延遲時(shí)長與所述第一采集時(shí)長相等。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在所述數(shù)據(jù)采集周期到達(dá)后,還包括: 確定所述各業(yè)務(wù)系統(tǒng)中待采集的數(shù)據(jù)表為全量數(shù)據(jù)表或增量數(shù)據(jù)表。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)具體為: 采集所述各業(yè)務(wù)系統(tǒng)的增量數(shù)據(jù)表中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。5.根據(jù)權(quán)利要求3所述的方法,其特征在于,在所述數(shù)據(jù)采集周期到達(dá)后,還包括: 針對(duì)所述各業(yè)務(wù)系統(tǒng)中的全量數(shù)據(jù)表,進(jìn)行一次躍進(jìn)式的增量數(shù)據(jù)采集; 其中,在該次躍進(jìn)式的增量數(shù)據(jù)采集過程中,確定所述全量數(shù)據(jù)表已采集的次數(shù); 根據(jù)所述全量數(shù)據(jù)表中的最小時(shí)間戳、預(yù)設(shè)的第二采集時(shí)長,以及確定的已采集的次數(shù),計(jì)算起始時(shí)間戳; 根據(jù)所述起始時(shí)間戳,以及所述第二采集時(shí)長,計(jì)算終止時(shí)間戳; 采集所述全量數(shù)據(jù)表中所述起始時(shí)間戳與終止時(shí)間戳所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述第二采集時(shí)長大于第一采集時(shí)長。7.一種ETL組件,其特征在于,包括: 系統(tǒng)時(shí)間確定模塊,用于在數(shù)據(jù)采集周期到達(dá)時(shí),確定本系統(tǒng)的當(dāng)前系統(tǒng)時(shí)間并發(fā)送采集通知; 第一時(shí)間戳計(jì)算模塊,用于接收到所述采集通知后,根據(jù)所述當(dāng)前系統(tǒng)時(shí)間,以及預(yù)設(shè)的延遲時(shí)長計(jì)算出時(shí)間戳上限;根據(jù)計(jì)算出的時(shí)間戳上限,以及預(yù)設(shè)的第一采集時(shí)長計(jì)算時(shí)間戳下限; 第一數(shù)據(jù)采集模塊,用于采集各業(yè)務(wù)系統(tǒng)中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。8.根據(jù)權(quán)利要求7所述的ETL組件,其特征在于,還包括: 數(shù)據(jù)表確定模塊,用于確定出所述各業(yè)務(wù)系統(tǒng)中待采集的數(shù)據(jù)表為全量數(shù)據(jù)表或增量數(shù)據(jù)表。9.根據(jù)權(quán)利要求8所述的ETL組件,其特征在于, 第一數(shù)據(jù)采集模塊具體用于根據(jù)所述數(shù)據(jù)表確定模塊的確定結(jié)果,采集所述各業(yè)務(wù)系統(tǒng)中的增量數(shù)據(jù)表中所述時(shí)間戳上限與時(shí)間戳下限所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。10.根據(jù)權(quán)利要求8所述的ETL組件,其特征在于,還包括: 第二時(shí)間戳計(jì)算模塊,用于接收到所述采集通知后,針對(duì)所述數(shù)據(jù)表確定模塊判斷出的全量數(shù)據(jù)表,根據(jù)所述全量數(shù)據(jù)表中的最小時(shí)間戳、預(yù)設(shè)的第二采集時(shí)長,以及確定的已采集的次數(shù),計(jì)算起始時(shí)間戳;根據(jù)所述起始時(shí)間戳,以及所述第二采集時(shí)長,計(jì)算終止時(shí)間戳; 第二數(shù)據(jù)采集模塊,用于采集所述全量數(shù)據(jù)表中所述起始時(shí)間戳與終止時(shí)間戳所標(biāo)示的時(shí)間范圍內(nèi)的數(shù)據(jù)。
【文檔編號(hào)】G06F17/30GK105893529SQ201610195446
【公開日】2016年8月24日
【申請(qǐng)日】2016年3月30日
【發(fā)明人】楊佳浩, 劉永華, 鮑大磊
【申請(qǐng)人】樂視控股(北京)有限公司, 樂視云計(jì)算有限公司