国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)結轉的方法和系統(tǒng)的制作方法

      文檔序號:10569958閱讀:556來源:國知局
      數(shù)據(jù)結轉的方法和系統(tǒng)的制作方法【專利摘要】本發(fā)明公開了一種數(shù)據(jù)結轉的方法和系統(tǒng),其中,所述方法包括:配置數(shù)據(jù)結轉信息;根據(jù)所述調度任務配置信息及相關的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,生成對應的采集任務;執(zhí)行所述采集任務,根據(jù)所述采集任務中的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,從源數(shù)據(jù)源中抓取待結轉源數(shù)據(jù),生成多個分片任務;并行執(zhí)行所述多個分片任務,將待結轉數(shù)據(jù)從源數(shù)據(jù)庫結轉到目標數(shù)據(jù)庫。所述系統(tǒng)包括配置模塊、調度引擎、數(shù)據(jù)采集模塊和執(zhí)行引擎。本發(fā)明通過一系列的規(guī)則配置,通過解析規(guī)則可以動態(tài)實現(xiàn)數(shù)據(jù)結轉,極大地提高了開發(fā)人員的效率,降低了應用系統(tǒng)開發(fā)維護的成本?!緦@f明】數(shù)據(jù)結轉的方法和系統(tǒng)
      技術領域
      [0001]本發(fā)明涉及信息數(shù)據(jù)處理
      技術領域
      ,具體地說,涉及一種將數(shù)據(jù)從某一信息系統(tǒng)的數(shù)據(jù)庫中轉移到其他數(shù)據(jù)庫的數(shù)據(jù)結轉的方法和系統(tǒng)?!?br>背景技術
      】[0002]目前,對于一些業(yè)務處理量比較大的信息系統(tǒng),為了減少系統(tǒng)實時業(yè)務數(shù)據(jù)量來減輕數(shù)據(jù)庫壓力、提升系統(tǒng)穩(wěn)定性及響應速度,通常使用的方法是進行數(shù)據(jù)庫數(shù)據(jù)結轉,即將系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)轉移到指定數(shù)據(jù)庫中。[0003]由于不同數(shù)據(jù)表結轉的處理邏輯不一樣,傳統(tǒng)解決數(shù)據(jù)結轉的方案,是根據(jù)需要結轉的數(shù)據(jù)庫表以及數(shù)據(jù)關聯(lián)規(guī)則開發(fā)一個定時結轉任務,由系統(tǒng)定時調度來驅動執(zhí)行。因而,傳統(tǒng)的解決方案不得不針對每個需要結轉的數(shù)據(jù)表開發(fā)一個定時結轉任務,再由系統(tǒng)定時調度該結轉策略實現(xiàn)數(shù)據(jù)的結轉。[0004]對于稍微復雜一些的信息系統(tǒng)而言,由于很多數(shù)據(jù)表都需要結轉,因而需要針對每一個數(shù)據(jù)表或者多個關聯(lián)的數(shù)據(jù)表都要開發(fā)一個定時任務來定期執(zhí)行,因而開發(fā)和維護成本比較高?!?br/>發(fā)明內容】[0005]本發(fā)明要解決的技術問題在于,針對現(xiàn)有技術的不足,提供一種數(shù)據(jù)結轉的方法和系統(tǒng),動態(tài)地實現(xiàn)數(shù)據(jù)結轉,在增加結轉任務時,不需要新開發(fā)或修改已有程序功能,從而提高開發(fā)人員效率,減低應用系統(tǒng)的開發(fā)、維護成本。[0006]為解決上述技術問題,根據(jù)本發(fā)明的一個方面,本發(fā)明提供了一種數(shù)據(jù)結轉方法,其中,包括以下步驟:[0007]配置數(shù)據(jù)結轉信息,包括調度任務配置信息、數(shù)據(jù)源配置信息、結轉任務配置信息和批次結轉任務配置信息;[0008]根據(jù)所述調度任務配置信息及相關的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,生成對應的采集任務;[0009]執(zhí)行所述采集任務,根據(jù)所述采集任務中的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,從源數(shù)據(jù)源中抓取待結轉源數(shù)據(jù),生成多個分片任務;和[0010]并行執(zhí)行所述多個分片任務,按照結轉任務配置信息或批次結轉任務配置信息,將待結轉數(shù)據(jù)從源數(shù)據(jù)庫結轉到目標數(shù)據(jù)庫。[0011]優(yōu)選地,從源數(shù)據(jù)源中抓取的待結轉源數(shù)據(jù)為主鍵數(shù)據(jù);在生成多個分片任務后,將每一個分片任務的主鍵數(shù)據(jù)寫入采集數(shù)據(jù)表中。[0012]優(yōu)選地,所述執(zhí)行所述分片任務,按照結轉任務配置信息,將結轉數(shù)據(jù)從源數(shù)據(jù)源結轉到目標數(shù)據(jù)源的步驟具體包括:[0013]從所述采集數(shù)據(jù)表中讀取所述分片任務的數(shù)據(jù)列表,獲取相應的多個主鍵數(shù)據(jù);[0014]加載所述結轉任務配置信息,獲取數(shù)據(jù)庫信息及與所述分片任務對應的數(shù)據(jù)表信息;[0015]從源數(shù)據(jù)庫中的源數(shù)據(jù)源中依次獲取與所述主鍵數(shù)據(jù)對應的源數(shù)據(jù),并將所述源數(shù)據(jù)寫入目標數(shù)據(jù)庫中;和[0016]從所述源數(shù)據(jù)源中刪除所述源數(shù)據(jù)。[0017]優(yōu)選地,如果所述分片任務為批次結轉任務時,在將每一主鍵數(shù)據(jù)對應的源數(shù)據(jù)成功結轉到目標數(shù)庫中后,還包括:根據(jù)批次結轉任務配置信息中的關聯(lián)規(guī)則,生成對應的子表任務。[0018]優(yōu)選地,本發(fā)明所述方法還包括多個子表任務的并行執(zhí)行。[0019]優(yōu)選地,在將所述源數(shù)據(jù)寫入目標數(shù)據(jù)庫中之前,還包括:根據(jù)配置信息,構建由源數(shù)據(jù)到目標數(shù)據(jù)的數(shù)據(jù)類型轉換、字段映射、目標數(shù)據(jù)庫寫入字段及值。[0020]優(yōu)選地,所述根據(jù)數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,從源數(shù)據(jù)源中抓取待結轉源數(shù)據(jù)的步驟具體包括:[0021]根據(jù)數(shù)據(jù)源配置信息中的數(shù)據(jù)庫信息創(chuàng)建數(shù)據(jù)庫訪問連接,并連接到所述數(shù)據(jù)庫;[0022]根據(jù)結轉任務配置信息或批次結轉任務配置信息獲取源數(shù)據(jù)源和數(shù)據(jù)篩選規(guī)則,從所述源數(shù)據(jù)源中抓取符合所述數(shù)據(jù)篩選規(guī)則的待結轉源數(shù)據(jù)。[0023]優(yōu)選地,在配置調度任務配置信息時,建立所述調度任務配置信息與相應的結轉任務配置信息或批次結轉任務配置信息的關聯(lián)。[0024]為解決上述技術問題,根據(jù)本發(fā)明的另一個方面,本發(fā)明提供了一種數(shù)據(jù)結轉系統(tǒng),其中,包括:[0025]配置模塊,用于配置數(shù)據(jù)結轉信息,包括數(shù)據(jù)源配置信息、調度任務配置信息、結轉任務配置信息和批次結轉任務配置信息;[0026]調度引擎,與所述配置模塊相連接,用于根據(jù)相應的數(shù)據(jù)結轉信息,通過發(fā)送觸發(fā)信息控制數(shù)據(jù)的采集及結轉;[0027]數(shù)據(jù)采集模塊,與所述配置模塊和所述調度引擎相連接,用于根據(jù)所述調度任務配置信息生成對應的采集任務,根據(jù)所述調度引擎的觸發(fā)信息和數(shù)據(jù)源配置信息,執(zhí)行所述采集任務,從源數(shù)據(jù)源中抓取待結轉數(shù)據(jù)的主鍵數(shù)據(jù),生成多個分片任務,并將所述多個分片任務注冊到所述調度引擎;和[0028]執(zhí)行引擎,與所述配置模塊和所述調度引擎相連接,用于根據(jù)所述調度引擎的觸發(fā)信息執(zhí)行相應的分片任務,按照相應的結轉任務配置信息或批次結轉任務配置信息,將待結轉源數(shù)據(jù)從源數(shù)據(jù)庫結轉到目標數(shù)據(jù)庫,或生成子表任務注冊到所述調度引擎。[0029]優(yōu)選地,所述系統(tǒng)還包括數(shù)據(jù)接口,分別與所述數(shù)據(jù)采集模塊和所述執(zhí)行引擎相連接,用于提供所述數(shù)據(jù)采集模塊與數(shù)據(jù)庫之間、所述執(zhí)行引擎與數(shù)據(jù)庫之間的數(shù)據(jù)操作處理。[0030]優(yōu)選地,所述配置模塊包括:[0031]數(shù)據(jù)源配置單元,用于配置源數(shù)據(jù)庫和目標數(shù)據(jù)庫的相關信息;[0032]結轉任務配置單元,用于配置結轉任務需要結轉的數(shù)據(jù)表信息;[0033]批次結轉任務配置單元,用于配置批次結轉任務中多個相互關聯(lián)的數(shù)據(jù)表的結轉任務關聯(lián)信息;和[0034]調度任務配置單元,用于配置調度任務策略信息,并將所述調度任務和結轉任務或批次結轉任務建立關聯(lián)。[0035]優(yōu)選地,所述調度引擎包括:[0036]任務注冊單元,分別與所述數(shù)據(jù)采集模塊和所述執(zhí)行引擎相連接,用于接收所述數(shù)據(jù)采集模塊生成的采集任務和分片任務及所述執(zhí)行引擎生成的子表任務;和[0037]任務觸發(fā)單元,分別與所述任務注冊單元、所述配置模塊、所述數(shù)據(jù)采集模塊和所述執(zhí)行引擎相連接,根據(jù)相應的數(shù)據(jù)結轉信息及任務注冊單元接收的分片任務和子表任務,向所述數(shù)據(jù)采集模塊和/或所述執(zhí)行引擎發(fā)送觸發(fā)信息。[0038]優(yōu)選地,所述數(shù)據(jù)采集模塊包括:[0039]采集任務生成單元,與所述配置模塊相連接,根據(jù)所述調度任務配置信息及相關的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,生成采集任務;[0040]數(shù)據(jù)抓取單元,與所述調度引擎相連接,用于根據(jù)所述調度引擎的觸發(fā)信息執(zhí)行相應的采集任務,從源數(shù)據(jù)源中抓取待結轉數(shù)據(jù)的主鍵數(shù)據(jù);和[0041]分片任務創(chuàng)建單元,與所述數(shù)據(jù)抓取單元相連接,用于根據(jù)抓取的待結轉數(shù)據(jù)的主鍵數(shù)據(jù),創(chuàng)建多個分片任務,并將所述多個分片任務注冊到所述調度引擎。[0042]優(yōu)選地,所述執(zhí)行引擎包括:[0043]任務接收單元,與所述的調度引擎相連接,用于根據(jù)所述調度引擎發(fā)送來的觸發(fā)Ia息,獲得具體的任務信息;[0044]配置信息加載單元,分別與所述任務接收單元和所述配置模塊相連接,用于根據(jù)所述任務接收單元接收的任務信息,從所述配置模塊獲取相應的數(shù)據(jù)結轉信息;和[0045]數(shù)據(jù)迀移處理單元,分別與所述配置信息加載單元和任務接收單元相連接,用于根據(jù)所述相應的數(shù)據(jù)結轉信息和所述任務信息,將源數(shù)據(jù)庫中對應的源數(shù)據(jù)迀移到目標數(shù)據(jù)源庫,并將所述源數(shù)據(jù)從源數(shù)據(jù)庫中刪除。[0046]優(yōu)選地,所述執(zhí)行引擎還包括:[0047]子表任務創(chuàng)建單元,與所述數(shù)據(jù)迀移處理單元相連接,用于在所述數(shù)據(jù)迀移處理單元將源數(shù)據(jù)成功結轉到目標數(shù)庫中后,根據(jù)批次結轉任務配置信息中的關聯(lián)規(guī)則,創(chuàng)建相應的子表任務,并將所述子表任務注冊到所述調度引擎;[0048]所述執(zhí)行引擎的任務接收單元得到的所述任務信息包括分片任務信息和子表任務?目息O[0049]本發(fā)明通過一系列的規(guī)則配置,設定了周期性數(shù)據(jù)結轉規(guī)則,通過解析規(guī)則可以動態(tài)實現(xiàn)數(shù)據(jù)結轉。在新增結轉任務時,不需要對本系統(tǒng)重新開發(fā)或做大的修改,只需要通過配置規(guī)則即可實現(xiàn),因而極大地提高了開發(fā)人員的效率,減低了應用系統(tǒng)開發(fā)、維護的成本?!靖綀D說明】[0050]通過參照以下附圖對本發(fā)明實施例的描述,本發(fā)明的上述以及其它目的、特征和優(yōu)點將更為清楚,在附圖中:[0051]圖1為本發(fā)明所述數(shù)據(jù)結轉方法的總體流程圖;[0052]圖2為本發(fā)明所述數(shù)據(jù)結轉系統(tǒng)的結構原理框圖;[0053]圖3為本發(fā)明所述配置模塊的結構原理框圖;[0054]圖4為本發(fā)明所述調度引擎的結構原理框圖;[0055]圖5為本發(fā)明所述數(shù)據(jù)采集模塊的結構原理框圖;[0056]圖6為本發(fā)明用于執(zhí)行單一結轉任務時的執(zhí)行引擎的結構原理框圖;[0057]圖7為本發(fā)明用于執(zhí)行批次結轉任務時的執(zhí)行引擎的結構原理框圖;[0058]圖8為本發(fā)明所述數(shù)據(jù)采集具體實施例的流程示意圖;和[0059]圖9為本發(fā)明所述執(zhí)行引擎執(zhí)行結轉任務時的具體實施例的流程示意圖?!揪唧w實施方式】[0060]以下基于實施例對本發(fā)明進行描述,但是本發(fā)明并不僅僅限于這些實施例。在下文對本發(fā)明的細節(jié)描述中,詳盡描述了一些特定的細節(jié)部分。對本領域技術人員來說沒有這些細節(jié)部分的描述也可以完全理解本發(fā)明。為了避免混淆本發(fā)明的實質,公知的方法、過程、流程沒有詳細敘述。另外附圖不一定是按比例繪制的。[0061]附圖中的流程圖、框圖圖示了本發(fā)明實施例的系統(tǒng)、方法、裝置的可能的體系框架、功能和操作,流程圖和框圖上的方框可以代表一個模塊、程序段或僅僅是一段代碼,所述模塊、程序段和代碼都是用來實現(xiàn)規(guī)定邏輯功能的可執(zhí)行指令。也應當注意,所述實現(xiàn)規(guī)定邏輯功能的可執(zhí)行指令可以重新組合,從而生成新的模塊和程序段。因此附圖的方框以及方框順序只是用來更好的圖示實施例的過程和步驟,而不應以此作為對發(fā)明本身的限制。[0062]本發(fā)明提供了一種數(shù)據(jù)結轉方法,所述結轉方法如圖1所示,包括:[0063]步驟SI,配置數(shù)據(jù)結轉信息,具體包括數(shù)據(jù)源配置信息、調度任務配置信息、結轉任務配置信息和批次結轉任務配置信息。這些信息包括了各種規(guī)則。[0064]步驟S2,根據(jù)調度任務配置信息及相關的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,生成對應的采集任務TCi。并將采集任務TCi注冊到調度引擎,注冊的同時將調度任務配置信息中的調度時間策略發(fā)送給調度引擎,調度引擎根據(jù)該調度時間策略來調度米集任務的執(zhí)行。[0065]步驟S3,執(zhí)行所述采集任務,根據(jù)數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,從源數(shù)據(jù)源中抓取待結轉源數(shù)據(jù)的主鍵數(shù)據(jù),并將抓取到的數(shù)據(jù)進行分片,生成分片任務TDi,將每一個分片任務TDi的主鍵數(shù)據(jù)寫入采集數(shù)據(jù)表中。[0066]步驟S4,并行執(zhí)行所述多個分片任務TDi,按照結轉任務配置信息或批次結轉任務配置信息,將結轉數(shù)據(jù)從源數(shù)據(jù)庫結轉到目標數(shù)據(jù)庫。例如,根據(jù)采集到的主鍵數(shù)據(jù)構造查詢sql語句,去源庫里查詢完整的數(shù)據(jù)。其中,所述的主鍵,是表示該項數(shù)據(jù)值唯一性的一個字段,可以是一個表自增id,也可以是其他字段,具體規(guī)則可以在結轉任務配置里進行配置。[0067]如圖2所示,本發(fā)明提供了一種數(shù)據(jù)結轉系統(tǒng),其中,所述系統(tǒng)包括配置模塊1、調度引擎2、數(shù)據(jù)采集模塊3和執(zhí)行引擎4。其中,配置模塊I用于配置數(shù)據(jù)結轉信息,包括數(shù)據(jù)源配置信息、調度任務配置信息、結轉任務配置信息和批次結轉任務配置信息。[0068]調度引擎2與所述配置模塊I相連接,用于根據(jù)相應的數(shù)據(jù)結轉信息,通過發(fā)送觸發(fā)信息控制數(shù)據(jù)的采集及結轉。[0069]數(shù)據(jù)采集模塊3與所述配置模塊I和所述調度引擎2相連接,用于根據(jù)所述調度任務配置信息生成對應的采集任務TCi,根據(jù)所述調度引擎2的觸發(fā)信息和數(shù)據(jù)源配置信息,執(zhí)行所述采集任務TCi,從源數(shù)據(jù)源6中抓取待結轉數(shù)據(jù)的主鍵數(shù)據(jù),生成多個分片任務TDi,并將所述多個分片任務TDi注冊到所述調度引擎2。[0070]執(zhí)行引擎4與所述配置模塊I和所述調度引擎2相連接,用于根據(jù)所述調度引擎2的觸發(fā)信息執(zhí)行相應的分片任務TDi,按照相應的結轉任務配置信息或批次結轉任務配置信息,將待結轉源數(shù)據(jù)從源數(shù)據(jù)庫6結轉到目標數(shù)據(jù)庫7,或生成子表任務注冊到所述調度引擎2。[0071]本發(fā)明所述的數(shù)據(jù)結轉系統(tǒng)還包括數(shù)據(jù)接口5,連接在數(shù)據(jù)庫與前述的數(shù)據(jù)采集模塊之間或執(zhí)行引擎與數(shù)據(jù)庫之間。該數(shù)據(jù)接口5負責數(shù)據(jù)庫的連接、查詢、寫入、數(shù)據(jù)封裝、轉換等工作,從而屏蔽了不同數(shù)據(jù)庫之間的差異對結轉處理邏輯造成的影響。[0072]具體地,如圖3所示,為本發(fā)明所述配置模塊I的結構原理框圖。所述配置模塊包括:數(shù)據(jù)源配置單元11、調度任務配置單元12、結轉任務配置單元13和批次結轉任務配置單元14。[0073]其中,數(shù)據(jù)源配置單元11用于配置與數(shù)據(jù)庫連接相關的信息,如數(shù)據(jù)庫的IP地址、用戶名、密碼和編碼格式等。其中,可以配置多個不同的數(shù)據(jù)庫,從而可以支持多個業(yè)務系統(tǒng)的數(shù)據(jù)庫之間的數(shù)據(jù)結轉。[0074]調度任務配置單元12用于配置調度任務策略信息,并將調度任務和結轉任務或批次結轉任務建立關聯(lián)。所述調度任務策略信息包括任務執(zhí)行時間范圍、執(zhí)行頻率和執(zhí)行間隔時間等參數(shù)。由于將所述調度任務策略和結轉任務或批次結轉任務建立關聯(lián),這樣,在每一個調度任務執(zhí)行時,會執(zhí)行相關聯(lián)的結轉任務或批次任務,從而完成任務的自動執(zhí)行。[0075]結轉任務配置單元13用于配置需要結轉的數(shù)據(jù)表信息,如源表名、目標表名、源數(shù)據(jù)源、目標數(shù)據(jù)源和結轉數(shù)據(jù)篩選規(guī)則等。[0076]批次結轉任務配置單元14用于配置多個相互關聯(lián)數(shù)據(jù)表的結轉任務關聯(lián)信息。通常來說,數(shù)據(jù)庫中會有多個具有相互關聯(lián)的數(shù)據(jù)表,在結轉數(shù)據(jù)時,需要將這些關聯(lián)的數(shù)據(jù)表一起結轉,因而,批次結轉任務配置單元14用于配置結轉數(shù)據(jù)表之間的字段關聯(lián)規(guī)則、表結轉順序等,并指定一個表作為主表,這樣在批次結轉任務執(zhí)行時可以先從主表開始結轉,并根據(jù)主表與子表的關聯(lián)規(guī)則,結轉子表的數(shù)據(jù)。[0077]如圖4所示,為本發(fā)明所述調度引擎2的結構原理框圖。所述調度引擎2包括任務注冊單元21和任務觸發(fā)單元22。[0078]所述任務注冊單元21分別與所述數(shù)據(jù)采集模塊3和所述執(zhí)行引擎4相聯(lián)接,用于接收所述數(shù)據(jù)采集模塊3生成的采集任務和分片任務及所述執(zhí)行引擎4生成的子表任務。任務觸發(fā)單元22分別與所述配置模塊1、所述數(shù)據(jù)采集模塊2和所述執(zhí)行引擎3相連接,根據(jù)相應的數(shù)據(jù)結轉信息中的調度任務策略信息,發(fā)送觸發(fā)信息給所述數(shù)據(jù)采集模塊3,觸發(fā)所述數(shù)據(jù)采集模塊3執(zhí)行所述采集任務,和/或發(fā)送觸發(fā)信息給所述執(zhí)行引擎4,由所述執(zhí)行引擎4執(zhí)行所述分片任務和/或子表任務。[0079]如圖5所示,為本發(fā)明所述數(shù)據(jù)采集模塊3的結構原理框圖。所述數(shù)據(jù)采集模塊I包括采集任務生成單元31、數(shù)據(jù)抓取單元32和分片任務創(chuàng)建單元33。[0080]其中,采集任務生成單元31與所述配置模塊相連接,根據(jù)所述的調度任務配置信息及相應的結轉任務配置信息或批次結轉任務配置信息生成采集任務,并將所述采集任務注冊到所述調度引擎2的所述任務注冊單元21。[0081]所述數(shù)據(jù)抓取單元32與所述調度引擎2相連接,根據(jù)所述調度引擎2的觸發(fā)信息執(zhí)行所述采集任務。具體地,根據(jù)配置模塊I的配置信息,如根據(jù)數(shù)據(jù)源配置信息,可以得到需要連接的數(shù)據(jù)庫地址、用戶名及數(shù)據(jù)庫名。從而創(chuàng)建數(shù)據(jù)庫訪問鏈接,連接到待結轉數(shù)據(jù)源庫6,并根據(jù)結轉任務配置信息中需要結轉的數(shù)據(jù)表信息,如源表名、目標表名、源數(shù)據(jù)源、目標數(shù)據(jù)源和結轉數(shù)據(jù)篩選規(guī)則等,查詢符合條件的結轉數(shù)據(jù),從所述源數(shù)據(jù)源中抓取主鍵數(shù)據(jù)。[0082]分片任務創(chuàng)建單元33與所述數(shù)據(jù)抓取單元32相連接,用于根據(jù)抓取的待結轉數(shù)據(jù)的主鍵數(shù)據(jù),創(chuàng)建多個分片任務,并將每一個分片任務的主鍵數(shù)據(jù)寫入采集數(shù)據(jù)表中,同時將所述多個分片任務注冊到所述調度引擎2。所述采集數(shù)據(jù)表也是一個分片任務總表,所有的分片任務都記錄在所述分片任務總表中。每個分片任務中記錄有源數(shù)據(jù)的主鍵數(shù)據(jù)信息。[0083]對于批次結轉任務,在進行數(shù)據(jù)采集時只采集主表數(shù)據(jù),不采集子表數(shù)據(jù),并將采集的主表數(shù)據(jù)存入采集數(shù)據(jù)表中。[0084]在本發(fā)明中,在整個系統(tǒng)啟動時,查詢配置的所有調度任務,逐個生成對應的采集任務并注冊到調度引擎中心。也可以人工增加新的調度任務。當系統(tǒng)運行時有新增的調度任務,可以人工觸發(fā)啟動該任務,數(shù)據(jù)采集模塊3根據(jù)該任務生成對應的采集任務,并注冊到調度引擎中心2。[0085]在本發(fā)明的一個具體應用實施例中,通過一個單獨的分片任務執(zhí)行器來執(zhí)行分片任務。該執(zhí)行器由調度引擎進行調度,并且分布式執(zhí)行。[0086]調度引擎2觸發(fā)分片任務執(zhí)行器執(zhí)行分片任務時,調度引擎2告知執(zhí)行器需要執(zhí)行哪幾個分片任務,執(zhí)行器在分片任務表(即前述的采集數(shù)據(jù)表)里獲取對應分片的待執(zhí)行任務。得到待執(zhí)行任務后,將任務逐個交給執(zhí)行弓I擎4進行處理。[0087]執(zhí)行引擎4得到分片任務后,加裝任務配置信息、批次信息、數(shù)據(jù)源配置信息等必要的配置信息,然后執(zhí)行結轉,如果任務是批次任務,生成對應的關聯(lián)子表任務。[0088]具體地,如圖6所示,為本發(fā)明用于執(zhí)行結轉任務時的執(zhí)行引擎4的結構原理框圖。所述執(zhí)行引擎4在執(zhí)行結轉任務時包括任務接收單元41、配置信息加載單元42和數(shù)據(jù)迀移處理單元43。[0089]其中,所述任務接收單元41與所述的調度引擎2相連接,用于根據(jù)所述調度引擎發(fā)送來的觸發(fā)信息從所述的采集數(shù)據(jù)表中獲得相應的分片任務。所述任務接收單元41在具體實施時可以采用前述的分片任務執(zhí)行器。[0090]配置信息加載單元42根據(jù)所述任務接收單元41得到的分片任務,從所述配置模塊I獲取相應的配置信息,如數(shù)據(jù)庫連接相關的信息,例如數(shù)據(jù)庫地址、用戶名或數(shù)據(jù)庫名稱等和數(shù)據(jù)表信息,如源表名稱、目標表名稱、源數(shù)據(jù)源、目標數(shù)據(jù)源和結轉數(shù)據(jù)篩選規(guī)則。[0091]所述數(shù)據(jù)迀移處理單元43根據(jù)所述配置信息,創(chuàng)建與數(shù)據(jù)庫的鏈接,并連接到數(shù)據(jù)庫中,根據(jù)源表名稱,找到源表及源數(shù)據(jù)源,根據(jù)分片任務的主鍵數(shù)據(jù),將源數(shù)據(jù)源中與所述主鍵數(shù)據(jù)對應的源數(shù)據(jù)迀移到目標數(shù)據(jù)庫7的目標表的目標數(shù)據(jù)源中,并將所述源數(shù)據(jù)從源數(shù)據(jù)源中刪除。[0092]如果結轉任務為批次結轉任務時,執(zhí)行引擎的結構如圖7所示,為本發(fā)明用于執(zhí)行批次結轉任務時的執(zhí)行引擎的結構原理框圖。此時所述執(zhí)行引擎4包括任務接收單元41、配置信息加載單元42、數(shù)據(jù)迀移處理單元43和子表任務創(chuàng)建單元44。[0093]其中,所述任務接收單元41和配置信息加載單元42與圖6所示的結構類似,不同的是,所述配置信息加載單元42從所述配置模塊I獲取的是相應的批次結轉任務配置信息,如主表信息、各個關聯(lián)數(shù)據(jù)表之間的字段關聯(lián)規(guī)則、表結轉順序、指定主表等及主表信息。[0094]當按照圖6及上一實施例完成分片任務的一個主鍵數(shù)據(jù)結轉后,如果本次任務為批次結轉任務,則由所述子表任務創(chuàng)建單元44創(chuàng)建相應的關聯(lián)表子任務,并記錄在子任務表中。由于一個任務的主表會有多個主鍵數(shù)據(jù),而根據(jù)每一個條主鍵數(shù)據(jù)創(chuàng)建一個關聯(lián)表子任務,所以,會產(chǎn)生多個關聯(lián)子表任務,并將他們注冊到所述調度引擎2。[0095]即,主表數(shù)據(jù)成功結轉后,根據(jù)批次配置里定義的表關聯(lián)規(guī)則,生成對應的子表任務。[0096]舉例來說:[0097]table_master為主表,主鍵為id,表名后文用tm代表。[0098]table_slave為主表關聯(lián)子表,主鍵為id,表名后文用ts代表。[0099]根據(jù)批次結轉任務配置信息中對主表與子表的關聯(lián)關系的規(guī)定,本實施例主子表關耳關關系為:ts.master_id=tm.1d。[0?00]當tm表成功結轉一條id=10000的數(shù)據(jù),那么會生成一條對應的ts表的任務,并在任務表里附帶上關聯(lián)主表字段值。[0101]在執(zhí)行批次結轉任務時,共有兩種任務在并行執(zhí)行,一種是由主表數(shù)據(jù)生成的分片任務,另一種是用于結轉與主表相關聯(lián)的子表任務。主表分片任務的一條主鍵數(shù)據(jù)成功結轉后,生成對應的子表任務,并寫入到子表任務表中。主表的分片任務是由分片任務執(zhí)行器獲取,并由執(zhí)行引擎來執(zhí)行,子表任務是由子表任務執(zhí)行器獲取,并由執(zhí)行引擎來執(zhí)行。[0102]子表任務的執(zhí)行與前述分片任務的執(zhí)行相類似,在此不再贅述。[0103]根據(jù)以上對數(shù)據(jù)結轉系統(tǒng)的具體結構的介紹,在具體實現(xiàn)時,可以使用現(xiàn)有一些技術來實現(xiàn)上述一種或多種結構。例如,本發(fā)明的調度引擎用于任務調度,所述任務調度是指基于給定時間點,給定時間間隔或者給定執(zhí)行次數(shù)自動執(zhí)行任務。目前有很多種實現(xiàn)方案,如Timer,Scheduler,Quartz以及JCronTab。對于數(shù)據(jù)采集模塊和執(zhí)行引擎,在進行具體的數(shù)據(jù)抓取和任務執(zhí)行時,可以通過創(chuàng)建的worker來實現(xiàn)前述的部分模塊、單元的功能。[0104]在圖1所示的步驟S3中,執(zhí)行所述采集任務,根據(jù)數(shù)據(jù)源配置信息和結轉任務配置信息從源數(shù)據(jù)源中抓取待結轉數(shù)據(jù)的主鍵數(shù)據(jù),并將抓取到的數(shù)據(jù)進行分片,生成分片任務TDi,可以通過如圖8所示的流程具體實現(xiàn)。[0105]步驟S31,生成采集任務。[0106]步驟S32,根據(jù)所述調度引擎發(fā)送的觸發(fā)信息,從所述配置模塊獲取相應的采集任務的配置信息。[0107]步驟S33,自動構建采集worker,根據(jù)數(shù)據(jù)源配置信息中的數(shù)據(jù)庫連接信息,自動構建數(shù)據(jù)庫訪問連接,并連接到該數(shù)據(jù)庫中。[0108]步驟S34,根據(jù)結轉任務配置信息中的數(shù)據(jù)表信息,確定源表、源數(shù)據(jù)源。[0109]步驟S35,并根據(jù)結轉數(shù)據(jù)篩選規(guī)則,在源表中的源數(shù)據(jù)源中查詢、抓取源數(shù)據(jù)。[0110]步驟S36,抓取了源數(shù)據(jù)后,對抓取的數(shù)據(jù)進行分片,創(chuàng)建相應的分片任務,并將所述分片任務注冊到調度引擎。[0111]步驟S37,將每一個分片任務的主鍵數(shù)據(jù)寫入采集數(shù)據(jù)表中。當執(zhí)行完上述步驟后,返回執(zhí)行下一個采集任務。[0112]在圖1中的步驟S4中,來執(zhí)行分片任務TDi時,具體實現(xiàn)流程如圖9所示。在該流程中,通過構建迀移worker和迀移處理器來實現(xiàn)數(shù)據(jù)的結轉,即單一結轉任務的數(shù)據(jù)結轉。[0113]步驟S41,當調度引擎調用分片執(zhí)行器,即圖中的迀移worker時,迀移worker進行初始化,使迀移worker處理工作狀態(tài)。[0114]步驟S42,通過查詢采集數(shù)據(jù)表獲取分片任務的數(shù)據(jù)列表。[0115]步驟S43,判斷分片任務的數(shù)據(jù)列表的大小是否大于0,如果大于0,說明有數(shù)據(jù)需要迀移,則進行步驟S44,如果不大于O,則說明沒有數(shù)據(jù)需要迀移,使worker休眠。[0116]步驟S44,加載配置信息。如數(shù)據(jù)庫信息,數(shù)據(jù)表信息等。[0117]步驟S45,初始化迀移處理器。[0118]步驟S46,根據(jù)主鍵信息找到源數(shù)據(jù),并查詢源數(shù)據(jù)庫的源數(shù)據(jù),其中主鍵是由一個或一組字段構成的、能標識數(shù)據(jù)唯一性的數(shù)據(jù)。[0119]步驟S47,判斷是否獲取了指定源數(shù)據(jù),如果獲取了指定源數(shù)據(jù),則進行步驟S48,如果沒有,在步驟S51更新分片任務狀態(tài)。這里所述的分片任務狀態(tài)指的是執(zhí)行狀態(tài),分片任務狀態(tài)分為待執(zhí)行、執(zhí)行完成和執(zhí)行失敗三種狀態(tài),用于標明當前分片任務的執(zhí)行情況。[0120]步驟S48,將源數(shù)據(jù)寫入目標數(shù)據(jù)庫,如果寫入成功,則在步驟S49刪除源數(shù)據(jù),如果沒有成功寫入,則在步驟S50更新分片任務的執(zhí)行信息,即將原來的狀態(tài)更新為執(zhí)行失敗。[0121]步驟S49,刪除源數(shù)據(jù),如果成功刪除了源數(shù)據(jù),則在步驟S51更新分片任務狀態(tài)。如果刪除失敗了,則在步驟S50更新分片任務的執(zhí)行信息,即將當前分片任務的執(zhí)行信息修改為執(zhí)行失敗,并記錄失敗主要信息,執(zhí)行時間,累計執(zhí)行次數(shù)等。執(zhí)行失敗后,在分片任務啟動后下次還會執(zhí)行,累計執(zhí)行超過最大重試次數(shù),則放棄任務,狀態(tài)為執(zhí)行失敗。[0122]當處理完當前數(shù)據(jù)后,在步驟S52判斷此任務是否是批次結轉任務,如果是,則在步驟S53生成對應的子表任務,并寫入子表任務表。[0123]關于子表任務的執(zhí)行,與分片任務的執(zhí)行類似,子表任務執(zhí)行器接收到調度引擎的觸發(fā)信息,查詢子表任務表,確定是否有待處理子數(shù)據(jù)任務,并取得待處理的子表任務,加載初始化當前子表任務對應的結轉任務配置信息,并構造初始化結轉處理器進行處理,具體數(shù)據(jù)結轉處理邏輯與分片任務執(zhí)行邏輯基本相同,不再重復說明。子表任務根據(jù)情況也會再次生成關聯(lián)數(shù)據(jù)表的子表任務。[0124]本發(fā)明通過進行一系列的規(guī)則配置,設定了周期性數(shù)據(jù)結轉規(guī)則,通過解析規(guī)則可以動態(tài)實現(xiàn)數(shù)據(jù)結轉。在新增結轉任務時,不需要對本系統(tǒng)重新開發(fā)或做大的修改,只需要通過配置規(guī)則即可實現(xiàn),因而極大地提高了開發(fā)人員的效率,減低了應用系統(tǒng)開發(fā)維護的成本。[0125]以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,對于本領域技術人員而言,本發(fā)明可以有各種改動和變化。凡在本發(fā)明的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內?!局鳈囗棥?.一種數(shù)據(jù)結轉方法,其中,包括以下步驟:配置數(shù)據(jù)結轉信息,包括調度任務配置信息、數(shù)據(jù)源配置信息、結轉任務配置信息和批次結轉任務配置信息;根據(jù)所述調度任務配置信息及相關的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,生成對應的采集任務;執(zhí)行所述采集任務,根據(jù)所述采集任務中的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,從源數(shù)據(jù)源中抓取待結轉源數(shù)據(jù),生成多個分片任務;和并行執(zhí)行所述多個分片任務,按照結轉任務配置信息或批次結轉任務配置信息,將待結轉數(shù)據(jù)從源數(shù)據(jù)庫結轉到目標數(shù)據(jù)庫。2.如權利要求1所述的數(shù)據(jù)結轉方法,其中,從源數(shù)據(jù)源中抓取的待結轉源數(shù)據(jù)為主鍵數(shù)據(jù);在生成多個分片任務后,將每一個分片任務的主鍵數(shù)據(jù)寫入采集數(shù)據(jù)表中。3.如權利要求2所述的數(shù)據(jù)結轉方法,其中,執(zhí)行所述分片任務,按照結轉任務配置信息,將結轉數(shù)據(jù)從源數(shù)據(jù)庫結轉到目標數(shù)據(jù)庫具體包括如下步驟:從所述采集數(shù)據(jù)表中讀取所述分片任務的數(shù)據(jù)列表,獲取相應的多個主鍵數(shù)據(jù);加載所述結轉任務配置信息,獲取數(shù)據(jù)庫信息及與所述分片任務對應的數(shù)據(jù)表信息;從源數(shù)據(jù)庫中的源數(shù)據(jù)源中依次獲取與所述主鍵數(shù)據(jù)對應的源數(shù)據(jù),并將所述源數(shù)據(jù)寫入目標數(shù)據(jù)庫中;和從所述源數(shù)據(jù)庫中刪除所述源數(shù)據(jù)。4.如權利要求3所述的數(shù)據(jù)結轉方法,其中,如果所述分片任務為批次結轉任務時,在將每一主鍵數(shù)據(jù)對應的源數(shù)據(jù)成功結轉到目標數(shù)庫中后,還包括:根據(jù)批次結轉任務配置信息中的關聯(lián)規(guī)則,生成對應的子表任務。5.如權利要求4所述的數(shù)據(jù)結轉方法,其中,還包括多個子表任務并行執(zhí)行的步驟。6.如權利要求4或5所述的數(shù)據(jù)結轉方法,其中,在將所述源數(shù)據(jù)寫入目標數(shù)據(jù)庫中之前,還包括:根據(jù)配置信息,構建由源數(shù)據(jù)到目標數(shù)據(jù)的數(shù)據(jù)類型轉換、字段映射、目標數(shù)據(jù)庫寫入字段及值。7.如權利要求1所述的數(shù)據(jù)結轉方法,其中,根據(jù)數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,從源數(shù)據(jù)源中抓取待結轉源數(shù)據(jù)包括以下步驟:根據(jù)數(shù)據(jù)源配置信息中的數(shù)據(jù)庫信息創(chuàng)建數(shù)據(jù)庫訪問連接,并連接到所述數(shù)據(jù)庫;根據(jù)結轉任務配置信息或批次結轉任務配置信息獲取源數(shù)據(jù)源和數(shù)據(jù)篩選規(guī)則,從所述源數(shù)據(jù)源中抓取符合所述數(shù)據(jù)篩選規(guī)則的待結轉源數(shù)據(jù)。8.如權利要求1所述的數(shù)據(jù)結轉方法,其中,在配置調度任務配置信息時,建立所述調度任務配置信息與相應的結轉任務配置信息或批次結轉任務配置信息的關聯(lián)。9.一種數(shù)據(jù)結轉系統(tǒng),其中,包括:配置模塊,用于配置數(shù)據(jù)結轉信息,包括數(shù)據(jù)源配置信息、調度任務配置信息、結轉任務配置信息和批次結轉任務配置信息;調度引擎,與所述配置模塊相連接,用于根據(jù)相應的數(shù)據(jù)結轉信息,通過發(fā)送觸發(fā)信息控制數(shù)據(jù)的采集及結轉;數(shù)據(jù)采集模塊,與所述配置模塊和所述調度引擎相連接,用于根據(jù)所述調度任務配置信息生成對應的采集任務,根據(jù)所述調度引擎的觸發(fā)信息和數(shù)據(jù)源配置信息,執(zhí)行所述采集任務,生成多個分片任務,并將所述多個分片任務注冊到所述調度引擎;和執(zhí)行引擎,與所述配置模塊和所述調度引擎相連接,用于根據(jù)所述調度引擎的觸發(fā)信息執(zhí)行相應的分片任務或子表任務,按照相應的結轉任務配置信息或批次結轉任務配置信息,將待結轉源數(shù)據(jù)從源數(shù)據(jù)庫結轉到目標數(shù)據(jù)庫。10.如權利要求9所述的數(shù)據(jù)結轉系統(tǒng),其中,還包括數(shù)據(jù)接口,分別與所述數(shù)據(jù)采集模塊和所述執(zhí)行引擎相連接,用于提供所述數(shù)據(jù)采集模塊與數(shù)據(jù)庫之間、所述執(zhí)行引擎與數(shù)據(jù)庫之間的數(shù)據(jù)操作處理。11.如權利要求9或10所述的數(shù)據(jù)結轉系統(tǒng),其中,所述配置模塊包括:數(shù)據(jù)源配置單元,用于配置源數(shù)據(jù)庫和目標數(shù)據(jù)庫的相關信息;結轉任務配置單元,用于配置結轉任務需要結轉的數(shù)據(jù)表信息;批次結轉任務配置單元,用于配置批次結轉任務中多個相互關聯(lián)的數(shù)據(jù)表的結轉任務關聯(lián)息;和調度任務配置單元,用于配置調度任務策略信息,并將所述調度任務和結轉任務或批次結轉任務建立關聯(lián)。12.如權利要求9或10所述的數(shù)據(jù)結轉系統(tǒng),其中,所述調度引擎包括:任務注冊單元,分別與所述數(shù)據(jù)采集模塊和所述執(zhí)行引擎相連接,用于接收所述數(shù)據(jù)采集模塊生成的采集任務和分片任務及所述執(zhí)行引擎生成的子表任務;和任務觸發(fā)單元,分別與所述任務注冊單元、所述配置模塊、所述數(shù)據(jù)采集模塊和所述執(zhí)行引擎相連接,根據(jù)相應的數(shù)據(jù)結轉信息及任務注冊單元接收的分片任務和子表任務,向所述數(shù)據(jù)采集模塊和/或所述執(zhí)行引擎發(fā)送觸發(fā)信息。13.如權利要求9或10所述的數(shù)據(jù)結轉系統(tǒng),其中,所述數(shù)據(jù)采集模塊包括:采集任務生成單元,與所述配置模塊相連接,根據(jù)所述調度任務配置信息及相關的數(shù)據(jù)源配置信息和結轉任務配置信息或批次結轉任務配置信息,生成采集任務;數(shù)據(jù)抓取單元,與所述調度引擎相連接,用于根據(jù)所述調度引擎的觸發(fā)信息執(zhí)行相應的采集任務,從源數(shù)據(jù)源中抓取待結轉數(shù)據(jù)的主鍵數(shù)據(jù);和分片任務創(chuàng)建單元,與所述數(shù)據(jù)抓取單元相連接,用于根據(jù)抓取的待結轉數(shù)據(jù)的主鍵數(shù)據(jù),創(chuàng)建多個分片任務,并將所述多個分片任務注冊到所述調度引擎。14.如權利要求9所述的數(shù)據(jù)結轉系統(tǒng),其中,所述執(zhí)行引擎包括:任務接收單元,與所述的調度引擎相連接,用于根據(jù)所述調度引擎發(fā)送來的觸發(fā)信息,獲得具體的任務ig息;配置信息加載單元,分別與所述任務接收單元和所述配置模塊相連接,用于根據(jù)所述任務接收單元接收的任務信息,從所述配置模塊獲取相應的數(shù)據(jù)結轉信息;和數(shù)據(jù)迀移處理單元,分別與所述配置信息加載單元和任務接收單元相連接,用于根據(jù)所述相應的數(shù)據(jù)結轉信息和所述任務信息,將源數(shù)據(jù)庫中對應的源數(shù)據(jù)迀移到目標數(shù)據(jù)庫,并將所述源數(shù)據(jù)從源數(shù)據(jù)庫中刪除。15.如權利要求14所述的數(shù)據(jù)結轉系統(tǒng),其中,所述執(zhí)行引擎還包括:子表任務創(chuàng)建單元,與所述數(shù)據(jù)迀移處理單元相連接,用于在所述數(shù)據(jù)迀移處理單元將源數(shù)據(jù)成功結轉到目標數(shù)庫中后,根據(jù)批次結轉任務配置信息中的關聯(lián)規(guī)則,創(chuàng)建相應的子表任務,并將所述子表任務注冊到所述調度引擎;所述執(zhí)行引擎的任務接收單元得到的所述任務信息包括分片任務信息和子表任務信息?!疚臋n編號】G06F17/30GK105930389SQ201610232604【公開日】2016年9月7日【申請日】2016年4月14日【發(fā)明人】王新武【申請人】北京京東尚科信息技術有限公司,北京京東世紀貿(mào)易有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1