一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)etl方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法及系統(tǒng),所述方法包括以下步驟:步驟1,設(shè)計數(shù)據(jù)處理任務(wù),并將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群,并進行ETL集群和數(shù)據(jù)處理任務(wù)的管理;步驟2,ETL集群從OLTP業(yè)務(wù)數(shù)據(jù)庫中抽取數(shù)據(jù)處理任務(wù)中指定的數(shù)據(jù),并根據(jù)數(shù)據(jù)處理任務(wù)建立存儲過程,按數(shù)據(jù)處理任務(wù)設(shè)置的規(guī)則將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲;步驟3,分布式數(shù)據(jù)庫存儲從OLTP業(yè)務(wù)數(shù)據(jù)庫中抽取出來的數(shù)據(jù),執(zhí)行存儲過程對數(shù)據(jù)進行分析處理,并存儲或返回分析處理結(jié)果。本發(fā)明解決了現(xiàn)在ETL技術(shù)在處理海量數(shù)據(jù)時存在的速度慢、效率低、易用性低等問題。
【專利說明】一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式數(shù)據(jù)庫、數(shù)據(jù)挖掘及云計算領(lǐng)域,特別是涉及一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法及系統(tǒng)。
【背景技術(shù)】
[0002]ETL, Extract1n-Transformat1n-Loading 的縮寫,即數(shù)據(jù)提取、轉(zhuǎn)換和加載,是海量數(shù)據(jù)分析處理過程中的重要步驟。
[0003]傳統(tǒng)的ETL技術(shù)在需要對0LTP (聯(lián)機事務(wù)處理系統(tǒng))產(chǎn)生的業(yè)務(wù)數(shù)據(jù)進行分析統(tǒng)計處理時,采用集中式部署方案。通過執(zhí)行存儲于業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫上的存儲過程,直接在業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫上對數(shù)據(jù)進行分析、篩選等操作,再將整理后的數(shù)據(jù)填充到自身數(shù)據(jù)庫中。整個操作過程在同一業(yè)務(wù)環(huán)境中實施,其業(yè)務(wù)流程圖如圖1所示,系統(tǒng)結(jié)構(gòu)圖如圖2所
/j、l Ο
[0004]但是,隨著互聯(lián)網(wǎng)、電信行業(yè)的迅速發(fā)展,0LTP業(yè)務(wù)量急速增加,需要處理的數(shù)據(jù)也越來越多,傳統(tǒng)ETL技術(shù)方案在處理海量數(shù)據(jù)時的存在弊端也愈發(fā)明顯,主要表現(xiàn)在以下幾個方面。
[0005]1)集中式部署影響0LTP業(yè)務(wù)性能。
[0006]數(shù)據(jù)分析篩選存儲過程就在業(yè)務(wù)數(shù)據(jù)庫上直接執(zhí)行,運行存儲過程期間對數(shù)據(jù)庫主機的CPU、內(nèi)存、磁盤1/0等資源占用極大,直接影響到0LTP業(yè)務(wù)正常運行。
[0007]2)單機執(zhí)行數(shù)據(jù)統(tǒng)計分析效率低。
[0008]所有需要分析的業(yè)務(wù)數(shù)據(jù)都在同一數(shù)據(jù)庫上,數(shù)據(jù)分析的存儲過程必須按順序依次執(zhí)行,無法并行運算。否則會相互影響效率大幅降低,還有可能造成部分表死鎖等情況。
[0009]3)數(shù)據(jù)量大分析、統(tǒng)計執(zhí)行速度慢。
[0010]由于0LTP業(yè)務(wù)非常繁忙,產(chǎn)生的數(shù)據(jù)量非常大,使得單個表的數(shù)據(jù)量常常是以億計的,數(shù)據(jù)庫查找統(tǒng)計等操作的速度是和數(shù)據(jù)量的大小成反比的,這樣在分析,統(tǒng)計過程中的耗時就會很長。
[0011]4)存在于數(shù)據(jù)庫中的大量存貯過程不易管理。
[0012]由于同一數(shù)據(jù)庫中大量不同業(yè)務(wù)數(shù)據(jù)需要分析,每項業(yè)務(wù)各自有許多不同的存儲過程,很難管理,修改編輯也很不方便。而且很難直觀的了解各個存儲過程的作用以及執(zhí)行的先后關(guān)聯(lián)關(guān)系等等。
[0013]5)中間表占用業(yè)務(wù)數(shù)據(jù)庫空間太大。
[0014]在數(shù)據(jù)篩選后生成大量中間數(shù)據(jù),需要保存到中間表里,這些數(shù)據(jù)在處理結(jié)束后占用大量數(shù)據(jù)庫空間,不及時清理有可能造成數(shù)據(jù)庫空間不足,影響到業(yè)務(wù)系統(tǒng)。
【發(fā)明內(nèi)容】
[0015]本發(fā)明所要解決的技術(shù)問題是提供一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法及系統(tǒng),用于解決現(xiàn)在ETL技術(shù)在處理海量數(shù)據(jù)時存在的局限性問題。
[0016]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法,包括以下步驟:
[0017]步驟1,設(shè)計數(shù)據(jù)處理任務(wù),并將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群,并進行ETL集群和數(shù)據(jù)處理任務(wù)的管理;
[0018]步驟2,ETL集群從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取數(shù)據(jù)處理任務(wù)中指定的數(shù)據(jù),并根據(jù)數(shù)據(jù)處理任務(wù)建立存儲過程,按數(shù)據(jù)處理任務(wù)設(shè)置的規(guī)則將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲;
[0019]步驟3,分布式數(shù)據(jù)庫存儲從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取出來的數(shù)據(jù),執(zhí)行存儲過程對數(shù)據(jù)進行分析處理,并存儲或返回分析處理結(jié)果。
[0020]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。
[0021]進一步,所述步驟1中將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群具體包括:將多個數(shù)據(jù)處理任務(wù)發(fā)送到ETL集群的不同服務(wù)器運行,或者以集群方式運行同一個數(shù)據(jù)處理任務(wù)。
[0022]進一步,所述步驟2中將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲具體包括:按自定義的數(shù)據(jù)切分規(guī)則對抽取的數(shù)據(jù)進行切分,將切分后的數(shù)據(jù)導(dǎo)入分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點。
[0023]進一步,以XML文件格式保存設(shè)計的數(shù)據(jù)處理任務(wù)。
[0024]進一步,采用可視化的流程圖界面設(shè)計數(shù)據(jù)處理任務(wù)。
[0025]進一步,所述步驟2還包括:對抽取的數(shù)據(jù)進行數(shù)據(jù)格式轉(zhuǎn)換,將不同格式的數(shù)據(jù)轉(zhuǎn)換為相同格式存儲在分布式數(shù)據(jù)庫。
[0026]進一步,所述步驟3還包括:將數(shù)據(jù)分析處理結(jié)果通過ETL集群返回給0LTP業(yè)務(wù)數(shù)據(jù)庫。
[0027]進一步,所述步驟3還包括:將數(shù)據(jù)分析處理過程中產(chǎn)生的中間數(shù)據(jù)存儲在分布式數(shù)據(jù)庫中。
[0028]本發(fā)明的技術(shù)方案還包括一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL系統(tǒng),包括:
[0029]ETL控制端,用于設(shè)計數(shù)據(jù)處理任務(wù),將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群,并進行ETL集群和數(shù)據(jù)處理任務(wù)的管理;
[0030]ETL集群,用于從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取數(shù)據(jù)處理任務(wù)中指定的數(shù)據(jù),并根據(jù)數(shù)據(jù)處理任務(wù)建立存儲過程,按數(shù)據(jù)處理任務(wù)設(shè)置的規(guī)則將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲;
[0031]分布式數(shù)據(jù)庫,用于存儲從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取出來的數(shù)據(jù),執(zhí)行存儲過程對數(shù)據(jù)進行分析處理,并存儲或返回分析處理結(jié)果。
[0032]進一步,所述ETL控制端采用可視化的流程圖界面設(shè)計數(shù)據(jù)處理任務(wù)。
[0033]本發(fā)明的有益效果是:
[0034]一、高效性
[0035]1)在數(shù)據(jù)處理的業(yè)務(wù)流程中多處使用并行處理,極大的提高的數(shù)據(jù)處理的速度;
[0036]2)通過數(shù)據(jù)切分減小的單個數(shù)據(jù)表的規(guī)模,極大的減少了各種數(shù)據(jù)操作的耗時;
[0037]3)采用分布式數(shù)據(jù)庫存儲數(shù)據(jù),解決了單磁盤讀寫時存在磁盤I/O瓶頸的問題;
[0038]二、易用性
[0039]1)采用可視化界面與腳本相結(jié)合的方式進行業(yè)務(wù)流程的設(shè)計,極大的簡化了技術(shù)人員的開發(fā)難度,解決了單存儲過程人工調(diào)度混亂的問題;
[0040]2)采用多項工作組合成一項任務(wù),這樣分層級管理的設(shè)計模式,便于技術(shù)人員靈活合理的設(shè)計安排任務(wù)的執(zhí)行過程。
[0041]3)采用XML格式文件傳輸和保存任務(wù),結(jié)構(gòu)清晰、易懂,便于技術(shù)人員批量的通過文件進行直接的修改。
[0042]4)采用控制端直接控制遠程服務(wù)器并發(fā)布、啟動、停止、清除任務(wù),免去了技術(shù)人員逐個的在服務(wù)器上進行文件操作。
[0043]三、數(shù)據(jù)復(fù)用
[0044]在應(yīng)用與業(yè)務(wù)系統(tǒng)獨立的分布式數(shù)據(jù)庫,不擠占業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫空間,所以不必經(jīng)常去清除數(shù)據(jù),這樣許多數(shù)據(jù)可以保留下來以便于其他系統(tǒng)再次使用。
【專利附圖】
【附圖說明】
[0045]圖1為現(xiàn)有技術(shù)中處理0LTP產(chǎn)生的業(yè)務(wù)數(shù)據(jù)的流程示意圖;
[0046]圖2為現(xiàn)有技術(shù)中處理0LTP產(chǎn)生的業(yè)務(wù)數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖;
[0047]圖3為本發(fā)明所述的一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法及系統(tǒng)的數(shù)據(jù)處理過程不意圖。
【具體實施方式】
[0048]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0049]如圖3所示,一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法,其特征在于,包括以下步驟:
[0050]步驟1,設(shè)計數(shù)據(jù)處理任務(wù),并將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群,并進行ETL集群和數(shù)據(jù)處理任務(wù)的管理;
[0051 ] 步驟2,ETL集群從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取數(shù)據(jù)處理任務(wù)中指定的數(shù)據(jù),并根據(jù)數(shù)據(jù)處理任務(wù)建立存儲過程,按數(shù)據(jù)處理任務(wù)設(shè)置的規(guī)則將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲;
[0052]步驟3,分布式數(shù)據(jù)庫存儲從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取出來的數(shù)據(jù),執(zhí)行存儲過程對數(shù)據(jù)進行分析處理,并存儲或返回分析處理結(jié)果。
[0053]需說明的是:“存儲過程”是指數(shù)據(jù)庫中的概念,是一組為了完成特定功能的SQL語句集,設(shè)計、建立、調(diào)用、執(zhí)行存儲過程的最終目的是處理數(shù)據(jù)。
[0054]對應(yīng)地,同樣如圖3所示,本實施例還給出了一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL系統(tǒng),包括:
[0055]ETL控制端,用于設(shè)計數(shù)據(jù)處理任務(wù),將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群,并進行ETL集群和數(shù)據(jù)處理任務(wù)的管理;
[0056]ETL集群,用于從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取數(shù)據(jù)處理任務(wù)中指定的數(shù)據(jù),并根據(jù)數(shù)據(jù)處理任務(wù)建立存儲過程,按數(shù)據(jù)處理任務(wù)設(shè)置的規(guī)則將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲;
[0057]分布式數(shù)據(jù)庫,用于存儲從0LTP業(yè)務(wù)數(shù)據(jù)庫中抽取出來的數(shù)據(jù),執(zhí)行存儲過程對數(shù)據(jù)進行分析處理,并存儲或返回分析處理結(jié)果。
[0058]對于該業(yè)務(wù)ETL系統(tǒng),ETL控制端、ETL集群和分布式數(shù)據(jù)庫還有其余功能,各構(gòu)成部分完成的功能如下所述。
[0059]ETL控制端,是用戶進行數(shù)據(jù)分析業(yè)務(wù)流程設(shè)計開發(fā)的界面,它可以對數(shù)據(jù)源、業(yè)務(wù)流程、數(shù)據(jù)抽取腳本、數(shù)據(jù)轉(zhuǎn)換腳本等資源進行管理。它還是ETL集群的控制臺,可以將任務(wù)發(fā)送到ETL集群上,控制任務(wù)的啟停、定時運行等等。
[0060]ETL集群,是具體運行執(zhí)行數(shù)據(jù)篩選抽取任務(wù)的一組服務(wù)器。用戶設(shè)計好工作流程,從ETL控制端以XML文件的形式發(fā)送到ETL集群的指定服務(wù)器上,服務(wù)器解析這些文件后,根據(jù)控制臺指令或定時信息運行相關(guān)處理流程。
[0061]分布式數(shù)據(jù)庫,接收并存儲ETL集群從業(yè)務(wù)數(shù)據(jù)庫中篩選出的數(shù)據(jù),然后根據(jù)ETL集群任務(wù)腳本建立、調(diào)用、啟動數(shù)據(jù)分析處理的存儲過程,并將結(jié)果存儲下來等待其他系統(tǒng)查詢使用,或發(fā)送回業(yè)務(wù)數(shù)據(jù)庫。
[0062]根據(jù)上述基本步驟,具體的實施過程如下:
[0063]1)建立數(shù)據(jù)處理任務(wù)
[0064]在ETL控制端有可視化的界面用于建立管理編輯數(shù)據(jù)處理任務(wù)。
[0065]一項簡單的數(shù)據(jù)處理任務(wù)中應(yīng)包含至少一個輸入。輸入的種類有很多種,主要劃分為文件輸入、表輸入兩大類型。
[0066]文件輸入,包含文件路徑,分割格式,篩選條件等等設(shè)置。文件輸入是以XML、Excel、CSV、GZIP等各種格式的數(shù)據(jù)文件為數(shù)據(jù)源的。
[0067]任務(wù)中通常采用表輸入,其中包含數(shù)據(jù)鏈接以及對應(yīng)的查詢SQL腳本,在SQL腳本中通過設(shè)置不同查詢條件來實現(xiàn)數(shù)據(jù)的篩選。此過程首先針對業(yè)務(wù)需求,為每個表制定一個數(shù)據(jù)切分規(guī)則,在編輯查詢SQL的時候就按照這個規(guī)則將數(shù)據(jù)查詢出來。這些數(shù)據(jù)被按照規(guī)則拆分開以文件流的形式傳輸?shù)椒植际綌?shù)據(jù)庫對應(yīng)的節(jié)點上。數(shù)據(jù)切分條件根據(jù)數(shù)據(jù)量和表關(guān)聯(lián)關(guān)系來確定(例如在客戶表和訂單表中,以客戶ID取模,取模數(shù)為分布式數(shù)據(jù)庫節(jié)點數(shù) η,即 mod (CID, η) = 0,mod (CID, η) = 1,...,mod(CID, n) =n_l 作為查詢條件,將從這兩個表抽取出來的數(shù)據(jù)均等的切分成η份)。在添加表輸入時將數(shù)據(jù)切分條件加入SQL腳本中,設(shè)置多個相似但切分條件不同的表輸入來實現(xiàn)將大數(shù)據(jù)切分成多份。
[0068]每個表輸入應(yīng)該對應(yīng)一個數(shù)據(jù)輸出,這個輸出包含目的表的鏈接以及數(shù)據(jù)轉(zhuǎn)換格式、數(shù)據(jù)類型等信息,主要用于指示輸出的目標(biāo)和類型。
[0069]每個輸入和一個或多個輸出構(gòu)成一組轉(zhuǎn)換工作,每組轉(zhuǎn)換工作可以單獨運行,也可以將多組轉(zhuǎn)換工作按一定順序組織排列成一項任務(wù)。在任務(wù)中除了能安排各組轉(zhuǎn)換工作并行或串行執(zhí)行,還可以通過可視化界面在轉(zhuǎn)換工作前后添加各種腳本,判斷條件,分支路徑,定時啟動,存儲過程調(diào)用等組件。這樣便構(gòu)成一個完整的數(shù)據(jù)處理任務(wù),這個任務(wù)是以XML文件格式進行描述和保存的,便于傳輸和再次編輯。
[0070]在可視化界面上可以非常方便的對任務(wù)中的轉(zhuǎn)換工作、各種腳本、判斷條件、分支路徑、定時啟動和存儲過程調(diào)用等組件進行編輯管理。以任務(wù)的形式對數(shù)據(jù)處理中的各種資源進行組織管理,解決了各種資源、流程的分布和依賴關(guān)系混亂,難以實施系統(tǒng)的維護和管理的問題。
[0071]本實施例中,設(shè)計數(shù)據(jù)處理任務(wù)為表輸入,且所述表輸入包括數(shù)據(jù)鏈接及對應(yīng)的查詢SQL腳本,再在添加表輸入時將數(shù)據(jù)切分規(guī)則加入查詢SQL腳本中,按數(shù)據(jù)切分規(guī)則將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群的各個服務(wù)器中。
[0072]2)數(shù)據(jù)處理任務(wù)發(fā)送
[0073]在用戶打算運行發(fā)布任務(wù)時,會出現(xiàn)ETL集群服務(wù)器的控制臺界面,用于選擇由哪一臺或多臺服務(wù)器執(zhí)行此項任務(wù),同時也可以管理該任務(wù)的啟停、監(jiān)控運行狀態(tài)、查看錯誤息等等。
[0074]選定服務(wù)器后點擊運行,描述任務(wù)的XML文件就被傳輸?shù)椒?wù)器上,服務(wù)器對這個文件進行解析,并啟動此項任務(wù)。任務(wù)運行期間ETL控制端可以收到相關(guān)運行狀態(tài)信息。如果控制端關(guān)閉,這些信息保存在服務(wù)器的日志文件中。
[0075]任務(wù)啟動后ETL集群的服務(wù)器根據(jù)設(shè)計好的任務(wù)流程判斷即時開始任務(wù)還是指定時間開始,并依次執(zhí)行相關(guān)轉(zhuǎn)換工作。用戶也可以在控制端停止或清除某任務(wù)。
[0076]3)數(shù)據(jù)抽取
[0077]每個任務(wù)中的轉(zhuǎn)換工作主要內(nèi)容就是數(shù)據(jù)抽取,即將需要的數(shù)據(jù)從業(yè)務(wù)平臺的數(shù)據(jù)庫中查詢出來,存儲到分布式數(shù)據(jù)庫中。具體為:按數(shù)據(jù)切分規(guī)則將表輸入中的目的表的數(shù)據(jù)鏈接設(shè)置為分布式數(shù)據(jù)庫的數(shù)據(jù)節(jié)點,將抽取的數(shù)據(jù)導(dǎo)入分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點。
[0078]在轉(zhuǎn)換工作中通常采用Bulk Loader模式的輸出,這種模式下查詢出的數(shù)據(jù)以文件流的方式輸出到ETL集群的服務(wù)器上,在ETL集群的服務(wù)器上只暫存部分正在傳輸而尚未導(dǎo)入到數(shù)據(jù)庫中的部分?jǐn)?shù)據(jù),占用磁盤空間非常小,目的數(shù)據(jù)庫以文件導(dǎo)入的方式將數(shù)據(jù)加載到目的庫中,省去了 SQL語句解析執(zhí)行的過程,其速度遠高于使用SQL進行插入數(shù)據(jù)的方式。
[0079]在這里就把目的表的鏈接設(shè)置為分布式數(shù)據(jù)庫的數(shù)據(jù)節(jié)點,這樣每個別切分開的數(shù)據(jù)就被導(dǎo)入到不同的分布式數(shù)據(jù)庫的數(shù)據(jù)節(jié)點上。而通常情況下把每組表輸入輸出指定到不同的ETL服務(wù)器上,這樣多臺ETL服務(wù)器可以并行運行將數(shù)據(jù)切分到分布式數(shù)據(jù)庫的多個數(shù)據(jù)節(jié)點上,實現(xiàn)分布式運算。通過分布式并行處理以及文件數(shù)據(jù)導(dǎo)入的方式極大的提高數(shù)據(jù)抽取的效率。
[0080]4)數(shù)據(jù)轉(zhuǎn)換
[0081]由于數(shù)據(jù)輸入源眾多,輸入數(shù)據(jù)的格式千差萬別,要把這些數(shù)據(jù)都導(dǎo)入到分布式數(shù)據(jù)庫中存儲,勢必要經(jīng)過數(shù)據(jù)文件解析以及數(shù)據(jù)類型轉(zhuǎn)換,即對抽取的數(shù)據(jù)進行數(shù)據(jù)格式轉(zhuǎn)換,將不同格式的數(shù)據(jù)轉(zhuǎn)換為相同格式存儲在分布式數(shù)據(jù)庫。
[0082]數(shù)據(jù)轉(zhuǎn)換的實現(xiàn)是,首先在輸入源中定義了數(shù)據(jù)源的類型(即:數(shù)據(jù)源是文件數(shù)據(jù)源還是表輸入數(shù)據(jù)源,文件數(shù)據(jù)源采用的是何種文件格式,表輸入數(shù)據(jù)是何種數(shù)據(jù)庫),以便系統(tǒng)正確的識別當(dāng)前輸入的數(shù)據(jù)。然后,在表輸出部分則要定義目標(biāo)庫類型,解析輸入數(shù)據(jù)的格式定義(即分隔符、結(jié)束符、換行符等),各個字段數(shù)據(jù)類型對應(yīng)關(guān)系。服務(wù)器在執(zhí)行數(shù)據(jù)轉(zhuǎn)換工作時就依照定義和的輸入輸出完成數(shù)據(jù)的導(dǎo)出導(dǎo)入,以及中間的數(shù)據(jù)轉(zhuǎn)換工作。
[0083]5)數(shù)據(jù)分布式存儲
[0084]在數(shù)據(jù)抽取過程中就將數(shù)據(jù)切分成多個部分存儲到分布式數(shù)據(jù)庫上。使用分布式數(shù)據(jù)庫作為存儲容器,可以充分利用多主機、多磁盤I/O帶寬大,整體讀取、寫入速度高的優(yōu)勢進行大數(shù)據(jù)量傳輸交換。
[0085]另外數(shù)據(jù)被切分成較小的單元進行存儲,在檢索、查詢、統(tǒng)計、建立索引等操作時速度相對于大數(shù)據(jù)表操作成幾何倍數(shù)減少。所以針對于大數(shù)據(jù)表操作時一定要在任務(wù)設(shè)計時根據(jù)數(shù)據(jù)量將數(shù)據(jù)切分成多份,以減少后續(xù)操作的執(zhí)行時間。
[0086]此外,將數(shù)據(jù)分析處理過程中產(chǎn)生的中間數(shù)據(jù)也存儲在分布式數(shù)據(jù)庫中。
[0087]6)數(shù)據(jù)統(tǒng)計分析
[0088]數(shù)據(jù)統(tǒng)計分析,是整個流程的關(guān)鍵步驟也是最終目的。這個步驟具體的執(zhí)行過程是——由ETL集群根據(jù)任務(wù)流程在分布式數(shù)據(jù)庫中建立數(shù)據(jù)分析處理業(yè)務(wù)的存儲過程,然后在流程中調(diào)用相應(yīng)的存儲過程進行數(shù)據(jù)分析處理。
[0089]在分布式數(shù)據(jù)庫各個節(jié)點上運行的存儲過程不會產(chǎn)生相互影響,造成表死鎖等問題,也不會競爭磁盤I/o影響讀取寫入速度。所以各不同節(jié)點上的存儲過程可以同時運行,這樣多任務(wù)并行處理極大的減少了數(shù)據(jù)分析處理所需的時間。
[0090]7)數(shù)據(jù)統(tǒng)計結(jié)果
[0091]數(shù)據(jù)統(tǒng)計分析完成其結(jié)果可以直接存儲在分布式數(shù)據(jù)庫中也可以通過ETL集群返回給業(yè)務(wù)平臺(0LTP業(yè)務(wù)數(shù)據(jù)庫),包括數(shù)據(jù)處理是產(chǎn)生的中間數(shù)據(jù)以及最終結(jié)果如果都存儲在分布式數(shù)據(jù)庫中,就不占用業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫空間,而且因為分布式數(shù)據(jù)庫大容量的特點不用及時的清理這些數(shù)據(jù),甚至可以較長期的保留這些數(shù)據(jù),以便其他業(yè)務(wù)系統(tǒng)或者后續(xù)處理業(yè)務(wù)重復(fù)使用。
[0092]結(jié)合【背景技術(shù)】及上述具體實施過程,本實施例為了解決傳統(tǒng)技術(shù)方案在處理海量數(shù)據(jù)時存在的弊端,主要從以下幾個方面進行了技術(shù)改進:
[0093]一、變集中式部署為分布式部署
[0094]將原本都在0LTP業(yè)務(wù)環(huán)境下處理運行的整個流程拆分,把數(shù)據(jù)篩選、分析、統(tǒng)計的過程與業(yè)務(wù)環(huán)境分離,只在數(shù)據(jù)抽取的過程中對業(yè)務(wù)系統(tǒng)做讀取操作,其他數(shù)據(jù)分析過程都在分布式數(shù)據(jù)庫系統(tǒng)上進行,減少了對業(yè)務(wù)正常運行的影響。
[0095]二、改單節(jié)點串行操作為多節(jié)點并行計算
[0096]將原本在一個數(shù)據(jù)庫上運行的數(shù)據(jù)分析、轉(zhuǎn)換腳本部署到分布式數(shù)據(jù)庫的多個數(shù)據(jù)節(jié)點上,通過合理的規(guī)劃和調(diào)度,使原本單線串行執(zhí)行的流程變?yōu)槎嗑€分批次并行執(zhí)行。避免了在單一節(jié)點上運行多任務(wù)資源競爭,和數(shù)據(jù)表死鎖等待問題,使得并行處理成為可能,極大的提高了數(shù)據(jù)處理的效率。
[0097]三、對大數(shù)據(jù)表進行拆分
[0098]根據(jù)數(shù)據(jù)關(guān)系,制定拆分規(guī)則對表進行拆分,將一個大表拆分為多個小表,并且各個小表的分析處理采用并行處理的方式進行,然后將各表的處理結(jié)果合并得到需要的結(jié)果,以提高數(shù)據(jù)庫運行查詢分析處理的速度。
[0099]四、采用流程圖方式設(shè)計規(guī)劃數(shù)據(jù)分析統(tǒng)計業(yè)務(wù)
[0100]采用可視化的流程圖界面來設(shè)計編輯每個數(shù)據(jù)分析業(yè)務(wù),將存儲過程作為流程中的一個步驟,在使用時生成,結(jié)束后刪除。這樣可以向管理普通軟件項目代碼一樣管理數(shù)據(jù)庫中的存儲過程。并且在可視化的流程圖界面可以直觀的了解到各個步驟的關(guān)聯(lián)關(guān)系,便于維護修改。
[0101]五、數(shù)據(jù)分析生成的中間數(shù)據(jù)單獨存貯
[0102]將數(shù)據(jù)分析過程中產(chǎn)生的中間數(shù)據(jù)存儲到分布式數(shù)據(jù)庫中,不占用業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫空間,不影響業(yè)務(wù)系統(tǒng)正常使用,也不需要及時的去清除這些數(shù)據(jù),減少了數(shù)據(jù)清除操作的頻率,而且這些保留下來的數(shù)據(jù)還可以提供其他系統(tǒng)復(fù)用。
[0103]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL方法,其特征在于,包括以下步驟: 步驟1,設(shè)計數(shù)據(jù)處理任務(wù),并將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群,并進行ETL集群和數(shù)據(jù)處理任務(wù)的管理; 步驟2,ETL集群從OLTP業(yè)務(wù)數(shù)據(jù)庫中抽取數(shù)據(jù)處理任務(wù)中指定的數(shù)據(jù),并根據(jù)數(shù)據(jù)處理任務(wù)建立存儲過程,按數(shù)據(jù)處理任務(wù)設(shè)置的規(guī)則將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲; 步驟3,分布式數(shù)據(jù)庫存儲從OLTP業(yè)務(wù)數(shù)據(jù)庫中抽取出來的數(shù)據(jù),執(zhí)行存儲過程對數(shù)據(jù)進行分析處理,并存儲或返回分析處理結(jié)果。
2.根據(jù)權(quán)利要求1所述的業(yè)務(wù)ETL方法,其特征在于,所述步驟I中將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群具體包括:將多個數(shù)據(jù)處理任務(wù)發(fā)送到ETL集群的不同服務(wù)器運行,或者以集群方式運行同一個數(shù)據(jù)處理任務(wù)。
3.根據(jù)權(quán)利要求2所述的業(yè)務(wù)ETL方法,其特征在于,所述步驟2中將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲具體包括:按自定義的數(shù)據(jù)切分規(guī)則對抽取的數(shù)據(jù)進行切分,將切分后的數(shù)據(jù)導(dǎo)入分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點。
4.根據(jù)權(quán)利要求1至3中任一所述的業(yè)務(wù)ETL方法,其特征在于,以XML文件格式保存設(shè)計的數(shù)據(jù)處理任務(wù)。
5.根據(jù)權(quán)利要求1至3中任一所述的業(yè)務(wù)ETL方法,其特征在于,采用可視化的流程圖界面設(shè)計數(shù)據(jù)處理任務(wù)。
6.根據(jù)權(quán)利要求1所述的業(yè)務(wù)ETL方法,其特征在于,所述步驟2還包括:對抽取的數(shù)據(jù)進行數(shù)據(jù)格式轉(zhuǎn)換,將不同格式的數(shù)據(jù)轉(zhuǎn)換為相同格式存儲在分布式數(shù)據(jù)庫。
7.根據(jù)權(quán)利要求1所述的業(yè)務(wù)ETL方法,其特征在于,所述步驟3還包括:將數(shù)據(jù)分析處理結(jié)果通過ETL集群返回給OLTP業(yè)務(wù)數(shù)據(jù)庫。
8.根據(jù)權(quán)利要求1所述的業(yè)務(wù)ETL方法,其特征在于,所述步驟3還包括:將數(shù)據(jù)分析處理過程中產(chǎn)生的中間數(shù)據(jù)存儲在分布式數(shù)據(jù)庫中。
9.一種基于分布式數(shù)據(jù)庫的業(yè)務(wù)ETL系統(tǒng),其特征在于,包括: ETL控制端,用于設(shè)計數(shù)據(jù)處理任務(wù),將數(shù)據(jù)處理任務(wù)發(fā)送至ETL集群,并進行ETL集群和數(shù)據(jù)處理任務(wù)的管理; ETL集群,用于從OLTP業(yè)務(wù)數(shù)據(jù)庫中抽取數(shù)據(jù)處理任務(wù)中指定的數(shù)據(jù),并根據(jù)數(shù)據(jù)處理任務(wù)建立存儲過程,按數(shù)據(jù)處理任務(wù)設(shè)置的規(guī)則將抽取的數(shù)據(jù)發(fā)送至分布式數(shù)據(jù)庫的不同數(shù)據(jù)節(jié)點進行存儲; 分布式數(shù)據(jù)庫,用于存儲從OLTP業(yè)務(wù)數(shù)據(jù)庫中抽取出來的數(shù)據(jù),執(zhí)行存儲過程對數(shù)據(jù)進行分析處理,并存儲或返回分析處理結(jié)果。
10.根據(jù)權(quán)利要求9中任一所述的業(yè)務(wù)ETL系統(tǒng),其特征在于,所述ETL控制端采用可視化的流程圖界面設(shè)計數(shù)據(jù)處理任務(wù)。
【文檔編號】G06F17/30GK104317928SQ201410602087
【公開日】2015年1月28日 申請日期:2014年10月31日 優(yōu)先權(quán)日:2014年10月31日
【發(fā)明者】邢兆飛 申請人:北京思特奇信息技術(shù)股份有限公司