201137646 六、發明說明: 【發明所屬之技術領域】 本案涉及資料庫技術領域,尤其涉及一種資料回流的 方法和裝置。 【先前技術】 資料庫是一個主題導向、整合、不可更新的、隨時間 不斷變化的資料集合,它用於支援企業或組織的決策分析 處理。 生產系統的正常運行需要資料庫的支援。資料回流就 是指將資料庫的計算結果表中的資料導入生產系統資料庫 的對應表的過程。隨著生產系統複雜度和生產率的大幅提 高’生產系統自身的資料庫的負載越來越繁重。爲了緩解 生產系統自身資料庫的壓力,現有技術中在生產系統自身 的資料庫中採取了將原本位於一個資料庫中的一個大表按 照特定的規則劃分到多台廉價主機上的多個獨立資料庫中 的多個小表裏。顯然,透過這種方式降低了對生產系統自 身資料庫單機的硬體要求和機器負載,但是因爲生產系統 中的資料庫中的資料儲存模式發生了從一到多的變化,必 然導致資料從資料庫回流到生產系統資料庫的方式發生相 應的變化。這是因爲,原本資料主要是從資料庫系統的一 個表回流到生產資料庫的一個表中即可,現在因爲生產系 統資料庫已經從一個大表變成了多個小表,這就需要將資 料庫的一個表中的資料回流到生產系統中的多個分表中。 -5- 201137646 例如,當某個資料庫表對應的生產系統的資料庫分表 個數非常多的時候(例如有的大表會分成1 024個分表) ’現有的資料回流方法是,針對每一個生產系統資料庫的 分表都在資料庫裏建一個對應的分表,然後將資料從資料 庫的分表同步到生產系統資料庫對應的分表中。 發明人透過硏究發現,現有的資料回流方法會導致資 料庫的表數量暴漲,從而使資料庫中表的維護數量和難度 就大大提高,而且在資料庫裏將一個表的資料分佈到多個 分表的過程非常繁雜,極易出錯,會導致表的資料計算和 回流時間變長,成爲回流的瓶頸,嚴重的可能會導致回流 時間非常長。如果回流資料的時間被延遲到生產系統資料 庫負載高峰期的時段,還將影響到生產系統的穩定。 【發明內容】 有鑒於此,本案實施例的目的是提供一種資料回流的 方法和裝置,實現快速、高效的資料回流。 爲實現上述目的,本案實施例提供了如下技術方案: 一種資料回流的方法,包括: 將待回流資料從資料庫擷取到記憶體中; 根據待回流資料的回流規則確定所擷取的每個待回流 資料在生產系統中的目的表;按照所確定的每個待回流資 料在生產系統中的目的表將待回流資料進行發送》 將待回流資料從資料庫擷取到記億體中具體爲: 透過多個執行緒同時將待回流資料從資料庫擷取到記 201137646 憶體中。 按照所確定的每個待回流資料在生產系統中的目的表 將待回流資料進行發送具體爲: 將所有的待回流資料按照在生產系統中的目的表進行 分組; , 透過多個執行緒將待回流資料按該分組進行發送,其 中每個執行緒中每個分組中的待回流資料都被發送至生產 系統中的同一個目的表。 該資料回流規則根據該生產系統中的目的表的數目以 及該待回流資料的屬性確定。 該待回流資料的屬性包括:該待回流資料的中數位位 元的數値或者該待回流資料某個字串類型欄位某一位元或 者幾位的値。 —種資料回流的裝置,包括: 擷取單元’用於將待回流資料從資料庫擷取到記憶體 中; 確定單兀,用於根據待回流資料的回流規則確定所擷 取的每個待回流資料在生產系統中的目的表; 分發單兀,用於按照所確定的每個待回流資料在生產 系統中的目的表將待回流資料進行發送。 該擷取單元,具體透過多個執行緒同時將待回流資料 從資料庫擷取到記憶體中。 該分發單元包括: 分組子單兀,用於將所有的待回流資料按照在生產系 201137646 統中的目的表進行分組; 發送子單元’用於透過多個執行緒將待回流資料按該 分組進行發送’其中每個執行緒中每個分組中的待回流資 料都被發送至生產系統中的同一個目的表。 該資料回流規則根據該生產系統中的目的表的數目以 及該待回流資料的屬性確定。 該待回流資料的屬性包括:該待回流資料的中數位位 元的數値或者該待回流資料某個字串類型欄位某一位元或 者幾位的値。 可見’在本案實施例中,將待回流資料從資料庫擷取 到記憶體中;根據資料回流規則確定所擷取的每個待回流 資料在生產系統中的目的表;按照所確定的每個待回流資 料在生產系統中的目的表將待回流資料進行發送。本案實 施例有效解決了回流過程中資料庫大表中的資料回流到多 個生產系統中小表的問題。本案實施例所提供的方法使得 資料回流過程中,資料庫表只需要將待回流資料準備好即 可’避免了現有技術中將資料庫的一個大表分成與生產系 統對應的多個小表的冗餘操作,極大的提高了回流的配置 效率,也極大的降低了回流耗費的時間。 【實施方式】 爲了使本技術領域的人員更好地理解本案中的技術方 案,下面將結合本案實施例中的附圖,對本案實施例中的 技術方案進行清楚、完整地描述,顯然,所描述的實施例 -8- 201137646 僅僅是本案一部分實施例, 案中的實施例,本領域普通 動前提下所獲得的所有其他 的範圍。 請參考圖1,爲本案實 以下步驟: S 1 0 1,將待回流資料從 而本案實施例中,首先 到記憶體中。 實際應用中,將待回流 ’可以透過多個執行緒同時 從資料庫中同時擷取待回流 高資料擷取的速率。將待回 次將資料庫中的所有資料均 擷取,當處理完當前批次的 的待回流資料,這樣可以提 S1 〇2,根據資料回流規 料在生產系統中的目的表; 資料回流規則規定了資 系統中的哪個目的表,資料 目的表的數目以及待回流資 待回流資料的某數位欄位的 料得到的餘數來確定;或者 欄位某幾位元的値來確定; 而不是全部的實施例。基於本 技術人員在沒有作出創造性勞 實施例,都應當屬於本案保護 施例一方法流程圖,可以包括 資料庫擷取到記憶體中; 將待回流的資料從資料庫擷取 資料從資料庫擷取到記憶體時 進行’例如透過1 0個執行緒 資料到記憶體中。這樣可以提 流資料擷取到記憶體中可以一 擷取到記憶體中,也可以分批 待回流資料後再處理下一批次 高處理的效率。 則確定所擷取的每個待回流資 料庫中的資料具體回流到生產 回流規則可以根據生產系統中 料的屬性確定。例如可以根據 値除以生成系統中目的表的資 根據待回流資料某個字串類型 或者透過對行資料中一列或多 -9 - 201137646 列的値進行特殊的函數變化後的結果來確定。 資料庫中的每個待回流的資料在生產系統中都有目的 表,即一個待回流資料要被送往的生產系統中的資料庫中 的具體的表。一個待回流資料可能只有一個目的表,也可 能有多個目的表。 透過S102就確定了每個待回流資料在生產系統中的 目的表,就相當於給所有的待回流資料打上了標籤。 S 1 0 3 ’按照所確定的每個待回流資料在生產系統中的 目的表將待回流資料進行發送。 如前該’透過S 1 0 2 ’已經爲待回流資料都打好了標 籤’此時’就是根據每個待回流資料的標籤將它們從記憶 體中分別進行發送’發送到它們在生產系統中的目的表中 去。貫際應用中可以分批將待回流資料擺取到記憶體中, 當確定了該批次中的每個待回流資料在生產系統中的目的 表後’將該批次待回流資料從記憶體發送到相應的目的表 中,透過這種方式可以提高資料回流的效率。 可選地’爲了提高資料的發送效率,仍然可以透過多 個執行緒對待回流的資料進行同時發送。 進一步地’可以透過如下方式進行: 首先,按照待回流資料在生產系統中的目的表對所有 的待回流資料進行分組。 例如,現在有1〇〇個待回流資料,透過sl〇2之後, 確定它們在生產系統中共有15個目的表,編號分別爲 〇〇1〜015 ’那麼就將目的表爲001的待回流資料歸爲〇〇1 -10- 201137646 組,將目的表爲002的待回流資料歸爲〇〇2組,依次 ,直至將目的表爲015的資料歸爲〇15組。 然後,透過多個執行緒將待回流資料進行發送, 每個執行緒中每個分組的待回流資料都被發送至生產 中的同一個目的表。 仍然以上面的Ίη況爲例’例如可以透過一個5個 緒同時發送上述100個待回流資料,分三批次發送, 批次發送5個組的資料’例如〇 〇〗〜〇 〇 5組的待回流資 爲第一個批次進行發送。其中執行緒1可以用來發送 組的待回流資料,這組資料的目的表都是編號爲〇〇 J 產系統中的目的表。依此類推,執行緒5可以用來 〇〇5組的待回流資料,這組資料的目的表都是編號爲 的生產系統中的目的表。 當然’每個組的待回流資料的資料流程可能是不 ’那麼可能有的執行緒的資料發送的快,有的發送的 應用中可以根據實際情況對每個執行緒發送的組次進 節,例如可以將資料最多的組與資料最少的組放在同 執行緒中發送’這樣從整體上使各個執行緒發送的資 達到平衡’最終實現在最短的時間內將所有的待發送 發送完。. 現有的生產系統的資料庫將一個邏輯表資料分佈 個物理表中’這使得資料庫中資料的回流面臨了極大 戰’現有的方法是在資料庫建立與生產系統中對應的 物理表,即針對生產系統中每一個分表在資料庫中建 類推 其中 系統 執行 每個 料作 00 1 的生 發送 005 等的 慢, 行調 一個 料量 資料 到多 的挑 多個 立對 -11 - 201137646 應表,首先將資料庫中大表的資料分別插入到多個分表裏 ,然後將資料庫中分表中的資料回流到生產系統中對應的 生產分表裏,這導致在初始化的時候要在資料庫產生大量 的分表和配置工作,配置規則和數量異常龐大,也導致了 整體回流時間的延長和複雜度的提高,從而嚴重的影響了 將資料庫中的資料同步到生產系統中的效率和簡便性。 本案實施例有效解決了回流過程中資料庫大表中的資 料回流到多個生產系統中小表的問題。本案實施例所提供 的方法使得資料回流過程中,資料庫表只需要將待回流資 料準備好即可,避免了現有技術中將資料庫的一個大表分 成與生產系統對應的多個小表的冗餘操作,極大的提高了 回流的配置效率,也極大的降低了回流耗費的時間。 下面以一個網路中的應用爲例對本案實施例所提供的 方法進行進一步的說明。 例如現在要統計電子商務網站上某個用戶在近期可能 感興趣的商品,參見圖2,對統計結果進行資料分流操作 具體包括: S201 ’將用戶感興趣的商品放到推薦商品表裏,並在 資料庫中生成一個結果表recommend_item_list。 結果表的結構可以參見表1。 表1
User id 用戶ro Item id 商品ID -12- 201137646 從表1中可以看出,結果表包括用戶ID以及用戶所 感興趣的商品的ID。 S 2 0 2,從資料庫中將待回流的結果表中的資料擺取到 記憶體中。 本案貫施例中’爲了提高資料擺取速度,透過1〇執 行緒同時從資料庫的結果表中擷取資料。 當採用多執行緒從資料庫中擷取資料時,爲了避免資 料被重複擷取,可以預先設定每個執行緒的資料擷取範圍 ’這樣多個執行緒分工協作’就能夠高效地實現待回流資 料的擷取工作。 S 2 0 3 ’根據用戶的數位I d與1 〇 2 4相除得到的餘數( 處理函數爲用戶數位ID與1024相除得到的餘數)進行分 表,不同的餘數分到不同的目的表中。如果id是字串,則 可以對字串進行函數處理,將待回流資料對應到目的表中 。例如如果目的表爲2 4個,則可以根據字串的第一位的 字母將待回流資料與24個目的表進行對應。 本案實施例中’生產系統中存在1 024張表,編號爲 r e c 〇 m m e n d _ i t e m 一 1 i s t _ 0 0 0 1 〜r e c 〇 m m e n d item list 1024 — — — — ) 結構與資料庫中的結果表相同。 本案實施例中採用的回流規則爲根據用戶的數位ID 與1024相除得到的餘數進行分表的。實際上,當分流完 成後’每個目的表中的資料內容僅是資料庫中結果表資料 的一個子集’是根據用戶的數位ID與1024相除得到的餘 數進行分表的,不同的餘數分到不同的目的表中。 •13- 201137646 S204 ’按照待回流資料在生產系統中的目的表將所有 的待回流資料分成1 024個組。 S2〇5’透過16個執行緒將待回流資料進行發送,其 中每個執行緒中每個分組的待回流資料都被發送至生產系 統中的同一個目的表。 在本案實施例中,待回流資料被分成1 〇24個組,每 個組中的資料都有相同的目的表。爲了提高待回流資料的 回流速度’本案實施例透過1 6個執行緒來同時發送待回 流的資料。每個執行緒發送64組待回流資料。 具體的執行緒數和每個執行緒發送的待回流資料的分 組個數可以根據實際設備的情況確定,本案對此不做限定 〇 現有技術在進行資料回流時會根據生產系統的要求在 資料庫中生成對應的丨02 4張表,對表結構的變更可能導 致表的資料計算和回流時間變長,成爲回流的瓶頸,嚴重 的可能會導致回流時間非常長。如果回流資料的時間被延 遲到生產系統資料庫負載高峰期的時段,還將影響到生產 系統的穩定,本案實施例所提供的方法只需要在資料庫中 生成一個結果表即可,然後確定每個待回流資料的目的表 ’根據待回流資料的目的表發送資料,避免了在資料庫中 建立眾多分表的過程,從而保存了資料庫原有的資料結構 ’從而避免了因爲對資料庫結構的改變而可能導致的表的 資料計算和回流時間變長,回流時間非常長,甚至影響到 生產系統的穩定的問題,極大地縮短了資料回流的時間, -14- 201137646 提高了資料回流的效率。 參見圖3,本案實施例還提供一種資料回流的裝置, 包括: 擷取單元3 Ο 1,用於將待回流資料從資料庫擷取到記 憶體中; 確疋單兀3 0 2 ’用於根據待回流資料的回流規則確定 所擷取的每個待回流資料在生產系統中的目的表; 資料回流規則可以根據生產系統中的目的表的數目以 及該待回流資料的屬性確定。待回流資料的屬性包括:該 待回流資料的中數位位元的數値或者該待回流資料某個字 串類型欄位某一位元或者幾位的値。 例如’本案一實施例中的資料規則就根據目的表數目 以及待回流資料的數位位元的資料値確定。 分發單元3 0 3,用於按照所確定的每個待回流資料在 生產系統中的目的表將待回流資料進行發送。 實際應用中,爲了提高本案實施例所提供的進行資 料回流操作的效率,該擷取單元3 〇丨具體透過多個執行緒 同時將待回流資料從資料庫擷取到記億體中。 參見圖4’本案另一實施例中,該分發單元303包括 分組子單元40 1,用於將所有的待回流資料按照在生 產系統中的目的表進行分組; 發送子單元402,用於透過多個執行緒將待回流資料 進行發送’其中每個執行緒中的待回流資料都被發送至生 -15- 201137646 產系統中的同一個目的表。 例如’現在有100個待回流資料,透過確定單元302 確定了每個待回流資料的目的表首先透過分組子單元4〇1 對它們進行分組’假設確定單元302確定它們在生產系統 中共有15個目的表’編號分別爲〇〇1〜〇15,則分組子單元 4〇1就將目的表爲001的待回流資料歸爲〇〇1組,將目的 表爲002的待回流資料歸爲〇〇2組,依次類推,直至將目 的表爲015的資料歸爲〇15組。發送子單元透過一個5個 執行緒同時發送上述100個待回流資料,分三批次發送, 每個批次5各組,例如〇〇 1〜〇〇5組的待回流資料作爲第― 個批次進行發送。其中執行緒1可以用來發送〇 〇丨組的待 回流資料’這組資料的目的表都是編號爲〇〇1的生產系統 中的目的表。依此類推,執行緒5可以用來發送〇〇5組的 待回流資料,這組資料的目的表都是編號爲〇〇5的生產系 統中的目的表。 當然,每個組的待回流資料的資料流程可能是不等的 ’那麼可能有的執行緒的資料發送的快,有點發送的慢, 實際應用中發送子單元可以根據實際情況對每個執行緒發 送的組次進行調節,例如可以將資料最多的組與資料最少 的組放在同一個執行緒中發送,這樣從整體上使各個執行 緒發送的資料量達到平衡,最終實現在最短的時間內將所 有的待發送資料發送完。 本案實施例所提供的裝置避免了在資料庫中建立眾多 分表的過程,保存了資料庫原有的資料結構,從而避免了 -16- 201137646 因爲對資料庫結構的改變而可能導致的表的資料計算和回 流時間變長,回流時間非常長,甚至影響到生產系統的穩 定的問題,極大地縮短了資料回流的時間,提高了資料回 流的效率。有效解決了回流過程中資料庫大表中的資料回 流到多個生產系統中小表的問題。 爲了描述的方便,描述以上裝置時以功能分爲各種單 元分別描述。當然,在實施本案時可以把各單元的功能在 同一個或多個軟體和/或硬體中實現。 透過以上的實施方式的描述可知,本領域的技術人員 可以清楚地瞭解到本案可借助軟體加必需的通用硬體平臺 的方式來實現。基於這樣的理解,本案的技術方案本質上 或者說對現有技術做出貢獻的部分可以以軟體產品的形式 體現出來’該電腦軟體產品可以儲存在儲存媒體中,如 ROM/RAM、磁碟、光碟等,包括若干指令用以使得一台 電腦設備(可以是個人電腦,伺服器,或者網路設備等) 執行本案各個實施例或者實施例的某些部分該的方法。 本說明書中的各個實施例均採用遞進的方式描述,各 個實施例之間相同相似的部分互相參見即可,每個實施例 重點說明的都是與其他實施例的不同之處。尤其,對於系 統實施例而言’由於其基本相似於方法實施例,所以描述 的比較簡單,相關之處參見方法實施例的部分說明即可。 本案可用於眾多通用或專用的計算系統環境或配置中 。例如:個人電腦、伺服器電腦、手持設備或可攜式設備 、平板型設備、多處理器系統、基於微處理器的系統、置 -17- 201137646 頂盒、可編程的消費電子設備、網路PC、小型電腦、大 型電腦、包括以上任何系統或設備的分散式計算環境等等 〇 本案可以在由電腦執行的電腦可執行指令的一般上下 文中描述’例如程式模組。一般地,程式模組包括執行特 定任務或實現特定抽象資料類型的常式、程式、物件、元 件、資料結構等等。也可以在分散式計算環境中實踐本案 ’在追些分散式計算環境中,由透過通信網路而被連接的 遠端處理設備來執行任務。在分散式計算環境中,程式模 組可以位於包括儲存設備在內的本地和遠端電腦儲存媒體 中〇 雖然透過實施例描繪了本案,本領域普通技術人員知 道’本案有許多變形和變化而不脫離本案的精神,希望所 附的申請專利範圍包括這些變形和變化而不脫離本案的精 神。 【圖式簡單說明】 爲了更清楚地說明本案實施例或現有技術中的技術方 案,下面將對實施例或現有技術描述中所需要使用的附圖 作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 案中記載的一些實施例,對於本領域普通技術人員來講, 在不付出創造性勞動性的前提下,還可以根據這些附圖獲 得其他的附圖。 圖1爲本案一實施例所提供的方法流程圖; -18- 201137646 圖2爲本案另一實施例所提供的方法流程圖; 圖3爲本案一實施例所提供的裝置的結構示意圖; 圖4爲本案一實施例提供的裝置中一單元的結構示意 圖。 【主要元件符號說明】 3 0 1 :擷取單元 3 0 2 :確定單元 3 03 :分發單元 401 :分組子單元 402 :發送子單元 -19-