專利名稱:Etl中數據主鍵號的生成方法及計數器的制作方法
技術領域:
本發明涉及數據處理技術領域,尤其涉及一種ETL中數據主鍵號的生成方法及計數器。
背景技術:
在數據采集過程中采用的ETL(Extraction-Transformation-Loading,數據提取、 轉換和加載)工具,均提供了數據轉換功能,即從一種格式的數據流轉為另一種格式的數據流,通過組裝一系列功能轉換節點流程,可完成一項從數據源至目標數據的數據轉換任務,其中,計數器節點常用于數據庫表數據主鍵的生成,即將從上節點抽取的每條數據生成其對應的主鍵號,以存儲在數據庫中。現有技術的ETL中數據主鍵號的生成方法為在抽取數據后,根據固定的起始值和增長根據對數據從起始值到最大值進行主鍵步增。如圖1所示,如果起始值和增長根據均為1,則抽取的第一條數據生成的主鍵號為1,第二條數據的主鍵號為2,一直到數據抽取完畢,最大主鍵號即為抽取數據的最大條數。然而,當上述主鍵號生成方法應用于數據量十分巨大的情況時,必須對所有數據進行全量抽取,從第一條數據一直步增至最后一條數據,該方法降低了數據抽取的性能。
發明內容
本發明實施例提供一種ETL中數據主鍵號的生成方法及計數器,能夠實現數據的增量抽取,增強數據抽取的性能。為了解決上述技術問題,本發明實施例的技術方案如下一種ETL中數據主鍵號的生成方法,包括根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值;根據所述第二次抽取數據的主鍵號的起始值和預設的增長根據,進行主鍵步增生成第二次抽取數據的主鍵號。進一步,所述根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值,具體為根據第一次抽取數據生成的最大主鍵號,設定所述第二次抽取數據的主鍵號的起始值。進一步,所述根據第一次抽取數據生成的最大主鍵號,設定所述第二次抽取數據的主鍵號的起始值,具體為將所述第一次抽取數據生成的最大主鍵號加一,設定為所述第二次抽取數據的主鍵號的起始值。進一步,所述預設的增長根據為1。進一步,所述第二次抽取數據的主鍵號的最大值不大于999999999。一種計數器,包括
設定模塊,用于根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值;生成模塊,用于根據所述第二次抽取數據的主鍵號的起始值和預設的增長根據, 進行主鍵步增生成第二次抽取數據的主鍵號。進一步,所述設定模塊,具體用于根據第一次抽取數據生成的最大主鍵號,設定所述第二次抽取數據的主鍵號的起始值。進一步,所述設定模塊,具體用于將所述第一次抽取數據生成的最大主鍵號加一, 設定為所述第二次抽取數據的主鍵號的起始值。進一步,所述預設的增長根據為1。進一步,所述第二次抽取數據的主鍵號的最大值不大于999999999。現有技術的ETL中數據主鍵號生成方法,對于數據量十分巨大的情況,由于起始值的固定設置決定了對數據量的全量抽取方式,從而降低了數據抽取的性能。本發明實施例所提供的數據主鍵號的生成方法及計數器通過動態設置起始值,解決了主鍵沖突問題, 實現了對大量數據的增量抽取方式,增強了數據抽取的性能。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1是本發明實施例一種ETL中數據主鍵號的生成方法流程圖;圖2是本發明實施例另一種ETL中數據主鍵號的生成方法流程圖;圖3是本發明實施例一種ETL中計數器的結構示意圖。
具體實施例方式為了使本領域技術人員能進一步了解本發明的特征及技術內容,請參閱以下有關本發明的詳細說明與附圖,附圖僅提供參考與說明,并非用來限制本發明。發明人研究發現,現有技術的ETL中數據主鍵號的生成方法由于起始值是固定值,所以每次抽取的第一條數據的主鍵號是相同的也即起始值,對于數據量十分巨大的情況,如果采用增量抽取也即分多次抽取數據,則每次抽取的第一條數據的主鍵號均是相同的,這樣會引起主鍵沖突,在后續應用主鍵號處理該大量數據時就會出現運行錯誤。例如,2010年一月份進行第一次數據抽取,即抽取2010年一月份與所有的2010年一月份前的所有數據,使用計數器生成所有數據的主鍵號,但當到2010年二月份再次對數據進行抽取工作時,如果不對二月份以前的所有數據進行全量抽取,而只抽取2010年二月份的數據,則在對二月份的數據生成主鍵號時,計數器又開始從“起始值”進行計算,二月份第一條數據的主鍵號與第一次抽取時第一條數據的主鍵號相同,發生了主鍵沖突。因此,現有ETL的數據主鍵號的生成方法,對于數據量十分巨大的情況,由于起始值的固定設置決定了對數據量的全量抽取方式,從而降低了數據抽取的性能。本發明實施例所提供的數據主鍵號的生成方式通過動態設置起始值,解決了主鍵沖突問題,實現了對大量數據的增量抽取方式,增強了數據抽取的性能。下面結合附圖和實施例,對本發明的技術方案進行描述。參照圖1,為本發明實施例一種ETL中數據主鍵號的生成方法流程圖。在不適于對所有數據進行一次性全量抽取的情況下,例如,數據量十分巨大的情況,應用本實施例方法可以實現對數據的多次抽取也即增量抽取,避免主鍵沖突。該方法可以包括步驟101,根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值。其中,“第一次”和“第二次”僅是為了區別連續的兩次抽取,并非表示ETL進行的首次及第二次抽取,亦非特定的抽取順序。在本實施例中,計數器在生成第一次抽取數據的主鍵號后,對該主鍵號進行存儲。然后根據第一次抽取數據的主鍵號設定第二次抽取數據的主鍵號的起始值。該起始值需要設定為與第一次抽取數據的所有主鍵號不同,并且根據該起始值和增長根據進行主鍵步增后獲得的第二次抽取數據的主鍵號與第一次抽取數據的主鍵號不同。例如,第一次抽取數據生成的最大主鍵號為N,則第二次抽取數據的主鍵號的起始值設定為N+1,其具體設定過程請參照后續實施例的描述。步驟102,根據第二次抽取數據的主鍵號的起始值和預設的增長根據進行主鍵步增生成第二次抽取數據的主鍵號。在計數器設定起始值后,根據預設的增長根據對起始值進行主鍵步增,生成第二次抽取數據的主鍵號。例如,如果第二次抽取數據的主鍵號的起始值設定為N+1,則,第二次抽取的數據中的第一條數據的主鍵號即為N+1,主鍵步增后生成的第二條數據的主鍵號即為“N+1+增長根據”。以此類推,此處不再贅述。如果還存在第N次抽取數據,則第N次抽取數據的主鍵號的生成仍然可以采用上述方法進行,其中,第N次抽取數據的主鍵號的起始值可以繼續采用步驟101的方法,即根據第N-I次抽取數據生成的主鍵號設定第N次抽取數據的主鍵號的起始值,主鍵步增后生成的第N次抽取數據的主鍵號即為根據增長根據對起始值進行迭代遞增所獲得的值。本發明實施例通過動態設置起始值,使得在增量抽取時每次獲得的數據的主鍵號均與其它次抽取時獲得的主鍵號不同,從而避免了主鍵沖突,因此在大數據量的情況下,可以通過增量抽取方式增強數據抽取的性能。參照圖2,為本發明實施例另一種ETL中數據主鍵號的生成方法流程圖。本實施例以2010年每月的數據抽取為例進行說明,該方法可以包括步驟201,第N次抽取上節點傳入的數據。該次抽取可以在2010年的第N個月進行,上節點傳入的數據可以是在一系列數據轉換節點流程中位于計數器上一節點所傳入的數據。該數據抽取過程與現有技術類似,此處不再贅述。步驟202,讀取第N-I次抽取數據的主鍵號的最大值。計數器可以在每次生成抽取數據的主鍵號后,存儲最近一次抽取數據的主鍵號的最大值,在本實施例中,計數器內存儲有第N-I次抽取數據的主鍵號的最大值,假設為a。步驟203,設定第N次抽取數據的主鍵號的起始值。在本實施例中,可以將第N-I次抽取數據生成的最大主鍵號加一,設定為用于生成第N次抽取數據的主鍵號的起始值,也即將a+Ι作為生成第N次抽取數據的主鍵號的起始值。另外,若第N次抽取數據即為第一次抽取數據,例如,步驟201中,第N次抽取數據為抽取2010年1月份的數據,該情況下仍可以按步驟202 203的方法進行,計數器中并未存儲有1月份之前數據的主鍵號最大值,則可以預設該情況下最近一次抽取數據的主鍵號的最大值為“0”,則根據步驟203,生成1月份抽取數據的主鍵號的起始值即為“0+1”。以上步驟201與步驟202、203之間的順序可以根據需要調整,在此并不限定。步驟204,根據起始值和預設的增長根據,對第N次抽取數據進行主鍵步增,生成第N次抽取數據的主鍵號。根據上步驟,起始值為a+Ι,預設的增長根據可以為1,當然也可以為其它數值,則主鍵步增即可獲得第N次抽取數據的主鍵號,也即根據增長根據對起始值進行迭代遞增。 第N次抽取的數據中第1條數據的主鍵號為a+Ι,第2條數據的主鍵號為a+1+l,第3條數據的主鍵號為a+1+l+l......,還可以設定主鍵號的最大值,一般不大于999999999。若第N+1次抽取上節點傳入的數據,則按照步驟201 204所述的方法繼續執行。本發明實施例通過根據上一次抽取數據的主鍵號的最大值動態設置生成本次抽取數據的主鍵號的起始值,使得在增量抽取時每次獲得的數據的主鍵號均與其它次抽取時獲得的主鍵號不同,從而避免了主鍵沖突,因此在大數據量的情況下,可以通過增量抽取方式增強數據抽取的性能。以上方法可以應用于ETL工具中計數器生成數據主鍵號的方法中。以上是對本發明方法實施例的詳細描述,上述方法應用于ETL中,對于源于不同數據庫中的數據均可以采用上述方法生成主鍵號,因此可以支持跨數據庫的應用,數據源與目標數據庫類型的改動均無需更改本抽取數據主鍵號的生成流程。下面對實現上述方法的計數器進行簡單介紹。參見圖3,為本發明實施例一種計數器的結構示意圖。本實施例中,計數器包括以下模塊設定模塊301,用于根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值。生成模塊302,用于根據所述第二次抽取數據的主鍵號的起始值和預設的增長根據,進行主鍵步增生成第二次抽取數據的主鍵號。本實施例中,“第一次”和“第二次”也僅是為了區別連續兩次抽取的數據,并非特指某一次。計數器在生成第一次抽取數據的主鍵號后,可以對該主鍵號進行存儲,然后在抽取第二次數據之前或之后,通過設定模塊301設定用于生成第二次抽取數據的主鍵號的起始值,該起始值需要設定為與第一次抽取數據的所有主鍵號不同,并且根據該起始值和增長根據進行主鍵步增后獲得的第二次抽取數據的主鍵號與第一次抽取數據的主鍵號不同。 在計數器設定起始值后,即可通過生成模塊302進行主鍵步增,即根據增長根據對起始值進行迭代遞增,生成第二次抽取數據的主鍵號。在本發明的另一實施例中,設定模塊301,可以用于根據第一次抽取數據生成的最大主鍵號,設定第二次抽取數據的主鍵號的起始值,具體的,可以用于將所述第一次抽取數據生成的最大主鍵號加一,設定為第二次抽取數據的主鍵號的起始值。
本發明實施例通過設定模塊301動態設置起始值,使得在增量抽取時生成模塊 302每次獲得的數據的主鍵號均與其它次抽取時獲得的主鍵號不同,從而避免了主鍵沖突, 因此,在大數據量的情況下,可以通過增量抽取方式增強數據抽取的性能。以上裝置可以應用于ETL工具中的計數器轉換節點。以上計數器各模塊的具體實現過程是可以參照前述方法實施例部分的描述,此處不再贅述。上述方法、裝置實施例可支持跨數據庫的抽取,數據源與目標數據庫類型的改動均無需更改本抽取數據主鍵號的生成流程。以上所述的本發明實施方式,并不構成對本發明保護范圍的限定。任何在本發明的精神和原則之內所作的修改、等同替換和改進等,均應包含在本發明的權利要求保護范圍之內。
權利要求
1.一種ETL中數據主鍵號的生成方法,其特征在于,包括根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值; 根據所述第二次抽取數據的主鍵號的起始值和預設的增長根據,進行主鍵步增生成第二次抽取數據的主鍵號。
2.根據權利要求1所述的方法,其特征在于,所述根據第一次抽取數據生成的主鍵號, 設定第二次抽取數據的主鍵號的起始值,具體為根據第一次抽取數據生成的最大主鍵號,設定所述第二次抽取數據的主鍵號的起始值。
3.根據權利要求2所述的方法,其特征在于,所述根據第一次抽取數據生成的最大主鍵號,設定所述第二次抽取數據的主鍵號的起始值,具體為將所述第一次抽取數據生成的最大主鍵號加一,設定為所述第二次抽取數據的主鍵號的起始值。
4.根據權利要求1至3中任意一項所述的方法,其特征在于,所述預設的增長根據為1。
5.根據權利要求1至3中任意一項所述的方法,其特征在于,所述第二次抽取數據的主鍵號的最大值不大于999999999。
6.一種計數器,其特征在于,包括設定模塊,用于根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值;生成模塊,用于根據所述第二次抽取數據的主鍵號的起始值和預設的增長根據,進行主鍵步增生成第二次抽取數據的主鍵號。
7.根據權利要求6所述的計數器,其特征在于,所述設定模塊,具體用于根據第一次抽取數據生成的最大主鍵號,設定所述第二次抽取數據的主鍵號的起始值。
8.根據權利要求7所述的計數器,其特征在于,所述設定模塊,具體用于將所述第一次抽取數據生成的最大主鍵號加一,設定為所述第二次抽取數據的主鍵號的起始值。
9.根據權利要求6至8中任意一項所述的計數器,其特征在于,所述預設的增長根據為1。
10.根據權利要求6至8中任意一項所述的計數器,其特征在于,所述第二次抽取數據的主鍵號的最大值不大于999999999。
全文摘要
本發明實施例提供一種ETL中數據主鍵號的生成方法及計數器。該ETL中數據主鍵號的生成方法,包括根據第一次抽取數據生成的主鍵號,設定第二次抽取數據的主鍵號的起始值;根據所述第二次抽取數據的主鍵號的起始值和預設的增長根據,進行主鍵步增生成第二次抽取數據的主鍵號。本發明實施例所提供的數據主鍵號的生成方法及計數器通過動態設置起始值,解決了主鍵沖突問題,實現了對大量數據的增量抽取方式,增強了數據抽取的性能。
文檔編號G06F17/30GK102419754SQ20101029686
公開日2012年4月18日 申請日期2010年9月27日 優先權日2010年9月27日
發明者劉岳嘉 申請人:金蝶軟件(中國)有限公司