專利名稱:數據處理方法及裝置的制作方法
技術領域:
本發明實施例涉及數據處理技術領域,尤其是一種數據處理方法及裝置。
背景技術:
實際應用中,文件系統中存儲的數據具有很大的隨機性,且數據之間缺乏必要的關聯性,因此,數據的存儲、刪除、修改通常是以單項數據為單位進行操作,每次操作至少需要一次磁盤的讀寫操作,也稱為磁盤輸入輸出(Input Output,簡稱10)。圖1為現有技術中磁盤數據操作的一種應用示意圖。如圖1所示,時刻1,數據樹中包含待處理數據a、b、c、d、e、f、g、h、i、j、k的數據信息,分別以a、b、c、d、e、f、g、h、i、 j、k表示;時刻2,處理數據a后,將數據a的數據信息從數據樹中刪除,需要至少一次磁盤 IO ;時刻3 (圖中未示出),處理數據f后,將數據f的數據信息從數據樹中刪除,需要至少一次磁盤IO ;時刻4,有新數據ζ需處理,將新數據ζ的數據信息插入數據樹中。可以看出, 每處理一項數據都需要至少一次磁盤IO去刪除數據樹中該項數據的數據信息。在實現本發明的過程中,發明人發現現有技術中至少存在如下問題由于磁盤的操作性能相對較低,因此降低了磁盤數據樹的整體性能。
發明內容
本發明實施例提供一種數據處理方法及裝置,用以解決現有技術中以由于磁盤的操作性能相對較低,降低了磁盤數據樹的整體性能的問題。一方面,本發明實施例提供了一種數據處理方法,包括將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中,所述待處理數據的數據信息用于唯一標識所述待處理數據;將所述多個待處理數據分成所述至少兩組,在預先生成的管理數據中添加各組的狀態值,以指示各組的待處理數據待處理;在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后,實時更新所述管理數據中每組待處理數據的狀態值,以指示每組待處理數據已處理;根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。另一方面,本發明實施例提供了一種數據處理裝置,包括讀取模塊,用于將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中,所述待處理數據的數據信息用于唯一標識所述待處理數據;分組模塊,用于將所述多個待處理數據分成所述至少兩組,在預先生成的管理數據中添加各組待處理數據的狀態值,以指示各組待處理數據待處理;處理模塊,用于在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后,實時更新所述管理數據中每組待處理數據的狀態值,以指示每組待處理數據已處理;
刪除模塊,用于根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。以上多個技術方案中的至少一個技術方案具有如下優點或有益效果本發明實施例采用在內存中將多個待處理數據分組,對各組待處理數據進行處理后更新磁盤中該組的狀態值以指示該組的待處理數據已處理,再根據更新后的各組的狀態值確定各組的待處理數據已處理后,刪除磁盤中第一數據樹中保存所述多個待處理數據的數據信息的節點的技術手段,克服了現有技術中以單項數據為單位進行磁盤IO大大地降低了磁盤數據樹的整體性能的問題,每處理完一組待處理數據處理后只需通過一次磁盤IO 修改狀態值,且所有待處理數據處理完后只需通過一次磁盤IO刪除保存所述多個待處理數據的數據信息的所有節點,避免了大量的磁盤10,提高了磁盤數據樹的操作性能。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為現有技術中磁盤數據操作的一種應用示意圖;圖2為本發明實施例提供的一種數據處理方法的流程示意圖;圖3為本發明實施例提供的一種數據處理方法的又一流程示意圖;圖4為一個3階B+樹的示意圖;圖5為本發明實施例中新的數據結構的示意圖;圖6為本發明實施例提供的數據處理裝置的結構示意圖。
具體實施例方式為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。圖2為本發明實施例提供的一種數據處理方法的流程示意圖。如圖2所示,該方法包括步驟101、將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中, 所述待處理數據的數據信息用于唯一標識所述待處理數據。舉例來說,數據處理裝置將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中。這里的第一數據樹是預先建立的,可以是平衡樹(Balanced Tree,簡稱B 樹)。B樹是一種平衡的多叉樹,作為一種最適合磁盤陣列的數據結構,其穩定快速的性能被廣泛應用于文件系統中。這里的數據信息可以包含待處理數據的對象號,每個待處理數據均有一個唯一的對象號,可以將該待處理數據的對象號保存在第一數據樹的節點中,作為該節點的關鍵字 (key)ο
步驟102、將所述多個待處理數據分成至少兩組,在預先生成的管理數據中添加各組的狀態值,以指示各組的待處理數據待處理。具體地,可以根據預設的分組規則將所述多個待處理數據分成至少兩組。預設的分組規則可以是按照一定的順序將一定數量的數據分為一組,比如按照對象號從小到大的順序3個為一組,剩余的不夠3個的為一組。舉例來說,若待處理數據為a、b、c、d、e、f、g、 h、i、j、k,一共有11個,其對象號依次從小到大,則可以分為4組,第一組包括a、b、c,第二組包括d、e、f,第三組包括g、h、i,第四組包括j、k。其中,至少一組包含至少兩個待處理數據。具體地,每一組都有各自的狀態值,舉例來說,狀態值為1表示待處理,狀態值為2 表示已處理。可選地,各組還有各自的組標識,比如第一組的組標識是1,第二組的組標識是 2,以此類推。步驟102中可以將各個組標識和與各組標識對應的各組的狀態值一起添加到
管理數據中。步驟103、在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后, 實時更新所述管理數據中每組待處理數據的狀態值,以指示每組待處理數據已處理。具體地,對待處理數據的處理可以有多種方式,比如刪除、修改等。在處理完每一組的待處理數據后,通過磁盤IO更新管理數據中的該組的狀態值。步驟104、根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。具體地,當管理數據中的各組的狀態值均指示該組的待處理數據已處理時,通過一次磁盤IO刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。這里,一個節點可以保存至少一個待處理數據的數據信息,保存所述多個待處理數據的數據信息的所述節點可以是多個。本發明實施例采用在內存中將多個待處理數據分組,對各組的待處理數據進行處理后更新磁盤中該組的狀態值以指示該組的待處理數據已處理,再根據更新后的各組的狀態值確定各組的待處理數據已處理后,刪除磁盤中第一數據樹中保存所述多個待處理數據的數據信息的節點的技術手段,克服了現有技術中以單項數據為單位進行磁盤IO大大地降低了磁盤數據樹的整體性能的問題,每處理完一組待處理數據處理后只需通過一次磁盤 IO修改狀態值,且所有待處理數據處理完后只需通過一次磁盤IO刪除保存所述多個待處理數據的數據信息的所有節點,避免了大量的磁盤10,提高了磁盤數據樹的操作性能。圖3為本發明實施例提供的一種數據處理方法的又一流程示意圖。對圖2所示的流程進行擴展,如圖3所示,該方法包括步驟201、在磁盤中建立第一數據樹,生成管理數據。舉例來說,數據處理裝置在磁盤中建立第一數據樹,生成管理數據。管理數據可以以任意數據結構的形式保存在磁盤中,比如B樹,鏈表等。步驟202、確定多個待處理數據,將所述多個待處理數據的數據信息分別保存到所述第一數據樹的節點中。通常,建立第一數據樹時可以先只確定根節點,當有待處理數據的數據信息需要保存時,再基于該根節點擴展其子節點以保存數據信息。每確定一個待處理數據,就將該待處理數據的數據信息保存到第一數據樹的一個節點中。具體的,可以根據接收到的數據處理請求確定與數據處理請求對應的待處理數據。進一步地,若第一數據樹為B+樹,則保存在第一數據樹的葉子節點中,當待處理數據的對象號一個一個地保存到第一數據樹時,第一數據樹可以按照B+樹的分裂原則分裂出更多的節點。圖4為一個3階B+樹的示意圖。如圖3所示,葉子節點中的數值為葉子節點保存的數據,在本實施例中為待處理數據的對象號,葉子節點中的Q為該葉子節點的指針,各葉子節點的指針連接起來構成了一個鏈表形式的數據索引;其他節點中的數值分別為該節點的各子節點中保存的數據的索弓丨,其他節點中的PI、P2、P3分別為指向該節點的各子節點的指針。圖4所示B+樹的分裂原則為1)當一個節點滿時,分配一個新的節點,并將原節點中1/2的數據復制到新節點, 最后在父節點中增加新節點的指針。2)為了讓樹在磁盤上的起始偏移不變,對于根節點,一般新生成兩個節點,將原根節點的內容一分為二,原根節點內容清空,并將取代它原有內容的兩個節點作為子節點。步驟203、將所述第一數據樹的根節點地址寫入所述管理數據。需要說明的是,步驟203啟動了對待處理數據的處理流程,可以由時間或事件觸發執行,比如,每天中午12:00執行步驟205,或者,根據管理員的指令執行步驟203。相當于將動態變化的數據,由時間或事件觸發獲取一個靜態點,類似快照,后再進行處理。這里將所述第一數據樹的根節點地址寫入所述管理數據,使得在發生硬件故障內存數據丟失的情況下,可以根據管理數據中的根節點找到第一數據樹,還原內存映射。步驟204、將所述第一數據樹的節點中保存的所述多個待處理數據的數據信息寫入內存中。步驟205、根據預設的分組規則將所述多個待處理數據分成所述至少兩組,在所述第一數據樹的管理數據中添加各組待處理數據的狀態值,以指示各組待處理數據待處理。步驟206、在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后, 實時更新所述管理數據中每組待處理數據的狀態值,以指示每組待處理數據已處理;步驟207、根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。具體地,步驟204-207可參照步驟101-104執行。步驟208、刪除所述管理數據中的所述第一數據樹的根節點地址和所述各組待處理數據的狀態值。可選地,步驟208中也可以將所述管理數據中的所述第一數據樹的根節點地址修改為一個無效值。若在執行步驟204-步驟208的期間,發生硬件故障內存數據丟失的情況下,重啟后仍可以根據管理數據中的所述第一數據樹的根節點地址和各組的狀態值繼續數據處理流程,無需重復處理數據。具體地,在重啟后可以執行如下步驟從磁盤中讀取所述管理數據,若所述管理數據中存在所述第一數據樹的根節點地址,根據所述第一數據樹的根節點地址查找到所述第一數據樹,執行步驟204 ;對應地,步驟205具體包括若所述管理數據中缺少至少一組的狀態值,在所述管理數據中添加所述至少一組的狀態值,以指示所述至少一組的待處理數據待處理;
步驟206中在內存中對各組的待處理數據進行處理具體包括根據所述管理數據中各組待處理數據的狀態值對所述各組待處理數據進行處理。具體的,若所述至少兩組中某一組的狀態值指示該組待處理數據待處理,則對該組待處理數據進行處理,若所述狀態值指示該組待處理數據已處理,則對狀態值指示待處理的其他組待處理數據進行處理。舉例來說,正常工作狀態時,假設步驟205中將多個待處理數據分成了 4組,步驟 206中對第一、二組的數據進行處理,并更新了管理數據中該兩組的狀態值后,發生硬件故障導致掉電重啟,內存數據丟失。在上電重啟后,先讀取管理數據,此時的管理數據中包含第一數據樹的根節點地址,以及第一、二組的狀態值,且第一、二組的狀態值均指示對應組的待處理數據已處理,然后執行步驟204,仍是將多個待處理數據的數據信息寫入內存中, 包含已處理的待處理數據的數據信息。接著,在步驟205中,僅將第三、四組的狀態值添加到管理數據中,以指示第三、四組的待處理數據待處理,然后依次對第三、四組的待處理數據進行處理,處理完后更新所述管理數據中第三、四組的狀態值,最后執行步驟207。需要說明的是,不論是正常工作狀態還是存數據丟失時,在內存中對待處理數據的分組規則都是一樣的。本實施例有多種應用場景。舉例來說,分布式文件系統中,數據寫雙份,若數據寫單,即一份數據寫成功,而另一份數據寫失敗,則可以將寫失敗或寫成功的數據記錄下來, 比如記錄寫失敗或寫成功的數據的對象號。后臺再將寫失敗的數據鏡像為寫成功的數據, 鏡像成功后將記錄的寫失敗或寫成功的數據的對象號刪掉。在這種場景下,步驟202中確定多個待處理數據具體為將文件系統中多個寫失敗的數據確定為所述多個待處理數據;步驟206中在內存中對各組的待處理數據進行處理具體包括將所述各組的寫失敗的數據分別鏡像為對應的多個寫成功的數據。進一步地,在執行步驟203之前確定的待處理數據的數據信息均可以保存到所述第一數據樹上,而啟動步驟203之后,若有新的待處理數據,則不便再將其數據信息保存到所述第一數據樹上。這種場景下,可以將新的待處理數據的數據信息保存到另一數據樹上。在本發明的又一可選的實施例中,步驟203之前還可以包括在磁盤中建立第二數據樹;步驟203之后還可以包括將索引中保存的所述第一數據樹的根節點地址修改為所述第二數據樹的根節點地址;若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中;步驟207具體包括根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。具體地,在正常工作狀態時,每次確定待處理數據后都是根據索引中保存的地址找到數據樹,并將待處理數據的數據信息保存到數據樹的節點中;并且,當觸發執行數據處理流程時,也是根據索引中保存的地址找到數據樹以執行步驟203。因此,步驟203之后,由于索引中保存的是第二數據樹的根節點地址,再次啟動對待處理數據的處理流程時可以將所述第二數據樹的根節點地址寫入所述管理數據,從而對新的待處理數據進行處理。較優地,可以在建立第一數據樹時,就建立所述第二數據樹。另外,也可以在執行步驟203之前的某個時間點就不再往第一數據樹上插入新的待處理數據的數據信息,而是將新的待處理數據的數據信息保存到第二數據樹,具體可以由管理員設定。在本發明的又一可選的實施例中,可以在有新的待處理數據時再建立第二數據樹。對應地,步驟203之后還包括刪除索引中保存的所述第一數據樹的根節點地址;若有新的待處理數據,建立第二數據樹,將所述第二數據樹的根節點地址保存到所述索引中,將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中;步驟207具體包括根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。為了避免維護多顆數據樹,在本發明的又一可選的實施例中,還可以在第一數據樹的基礎上,構造一種新的數據結構,以區分步驟203-208中需處理的待處理數據和新的待處理數據。圖5為本發明實施例中新的數據結構的示意圖,該新的數據結構除了 B+樹原有的分裂特性,還具有一種特殊的根分裂1)分裂一次,節點狀態變化一次,圖中以填充條紋代表節點狀態;2)分裂時新產生一個節點,作為新根節點,新根節點作為一個子節點插入到原根節點中。新根節點的key為一個不使用的固定值,比如關鍵字的最大或最小值,如0。3)原樹的所有節點和新根節點的狀態不一樣。4)新插入節點與新根節點的狀態一樣;5)查找新的待處理數據時,只找與新根節點狀態一致的節點。具體地,步驟203之前還可以包括將所述第一數據樹上所有節點的狀態均設置為第一狀態,對所述第一數據樹進行根分裂,將分裂出來的新根節點和所述新根節點的新子節點的狀態設為第二狀態;步驟203之后還可以包括若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述新根節點和新子節點形成的新樹的節點中,并設置所述新樹上所有節點的狀態為第二狀態; 步驟207具體可以包括根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除節點狀態為第一狀態的節點。舉例來說,若圖5中斜條紋節點構成的樹為第一數據樹,在步驟203之前對其進行根分裂,得到了作為第一數據的根節點的父節點的豎條紋節點(新根節點)和作為第一數據的根節點的兄弟節點的豎條紋節點(新子節點)。另外,由于根分裂時根節點的地址不變,而該根節點地址指向的節點卻改變了,即從指向第一數據樹的根節點變為指向新根節點,因此可以不用修改索引中保存的第一數據樹根節點的原地址,對應地,在根分裂后執行步驟203時寫入管理數據的是第一數據樹根節點的新地址。在第一數據樹對應的待處理數據均處理完畢后,可以將斜條紋節點構成的樹整體刪除,剩下豎條紋節點構成的樹(新根節點和新子節點形成的新樹)。另外,也可以在執行步驟203之前的某個時間點就不再往第一數據樹上插入新的待處理數據的數據信息,而將新的待處理數據的數據信息保存到新樹上,具體可以由管理員設定。進一步地,在將所述第一數據樹中節點狀態為第一狀態的節點刪除之前,還可以對新樹上再進行根分裂,擴展上一級新樹,在這種場景下,可以將該上一級新樹上的節點的狀態設置為第一狀態或第三狀態,當設置為第一狀態時,步驟207中根據所述管理數據中保存的所述第一數據樹的根節點地址,刪除節點狀態為第一狀態的節點,由于根據第一數據樹的根節點地址不指向上一級新樹,因此不會刪除上一級新樹中節點狀態同樣為第一狀態的節點。本發明實施例采用在內存中將多個待處理數據分組,對各組的待處理數據進行處理后更新磁盤中該組的狀態值以指示該組的待處理數據已處理,再根據更新后的各組的狀態值確定各組的待處理數據已處理后,刪除磁盤中第一數據樹中保存所述多個待處理數據的數據信息的節點的技術手段,克服了現有技術中以單項數據為單位進行磁盤IO大大地降低了磁盤數據樹的整體性能的問題,每處理完一組待處理數據處理后只需通過一次磁盤 IO修改狀態值,且所有待處理數據處理完后只需通過一次磁盤IO刪除保存所述多個待處理數據的數據信息的所有節點,避免了大量的磁盤10,提高了磁盤數據樹的操作性能。進一步地,本實施例通過在管理數據中保存數據樹的根節點地址,在發生硬件故障內存數據丟失的情況下,可以根據管理數據找到數據樹,還原內存映射。進一步地,本實施例將待處理數據按照預設的分組規則分組進行處理,在發生硬件故障內存數據丟失的情況下,可以仍然按照預設的分組規則進行分組,組內成員不變,再根據管理數據中保存的各組的狀態值, 從斷點繼續處理數據,無需重復處理數據,提高了數據處理的效率。圖6為本發明實施例提供的數據處理裝置的結構示意圖。如圖6所示,該裝置包括讀取模塊41,用于將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中,所述待處理數據的數據信息用于唯一標識所述待處理數據;分組模塊42,用于將所述多個待處理數據分成所述至少兩組,在預先生成的管理數據中添加各組待處理數據的狀態值,以指示各組待處理數據待處理;處理模塊43,用于在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后,實時更新所述管理數據中每組待處理數據的狀態值,以指示每組待處理數據已處理;刪除模塊44,用于根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。在本發明的一個可選的實施例中,還包括建立模塊,用于在磁盤中建立所述第一數據樹,生成管理數據;確定模塊,用于確定多個待處理數據,將所述多個待處理數據的數據信息分別保存到所述第一數據樹的節點中。在本發明的又一可選的實施例中,正常工作狀態時,讀取模塊41還用于在將所述第一數據樹的節點中保存的所述多個待處理數據的數據信息寫入內存中之前,將所述第一數據樹的根節點地址寫入所述管理數據;刪除模塊44還用于
1
在根據管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點之后,刪除所述管理數據中的所述第一數據樹的根節點地址和所述各組待處理數據的狀態值。在本發明的又一可選的實施例中,掉電重啟時,讀取模塊41還用于在將所述第一數據樹的節點中保存的所述多個待處理數據的數據信息寫入內存中之前,讀取所述管理數據,若所述管理數據中存在所述第一數據樹的根節點地址,根據所述第一數據樹的根節點地址查找到所述第一數據樹;分組模塊42具體用于若所述管理數據中缺少至少一組的狀態值,在所述管理數據中添加所述至少一組的狀態值,以指示所述至少一組的待處理數據待處理;處理模塊43具體用于根據所述管理數據中各組待處理數據的狀態值對所述各組待處理數據進行處理。在本發明的又一可選的實施例中,所述建立模塊還用于在讀取模塊41將所述第一數據樹的根節點地址寫入所述管理數據之后,刪除索引中保存的所述第一數據樹的根節點地址;所述確定模塊還用于在讀取模塊41將所述第一數據樹的根節點地址寫入所述管理數據之后,若有新的待處理數據,建立第二數據樹,將所述第二數據樹的根節點地址保存到所述索引中,將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中;刪除模塊44具體用于根據管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。在本發明的又一可選的實施例中,所述建立模塊還用于在磁盤中建立第二數據樹;所述確定模塊還用于在讀取模塊41所述第一數據樹的根節點地址寫入所述管理數據之后,將索引中保存的所述第一數據樹的根節點地址修改為所述第二數據樹的根節點地址;若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中;刪除模塊44具體用于根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。在本發明的又一可選的實施例中,所述建立模塊還用于在讀取模塊41將所述第一數據樹的根節點地址寫入所述管理數據之前,將所述第一數據樹上的所有節點的狀態均設置為第一狀態,對所述第一數據樹進行根分裂,將分裂出來的新根節點和所述新根節點的新子節點的狀態設為第二狀態;所述確定模塊還用于在讀取模塊41將所述第一數據樹的根節點地址寫入所述管理數據之后,若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述新根節點和新子節點形成的新樹的節點中,并設置所述新樹上所有節點的狀態為第二狀態;刪除模塊44具體用于根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除節點狀態為第一狀態的節點。在本發明的又一可選的實施例中,所述確定模塊具體用于將文件系統中多個寫失敗的數據確定為所述多個待處理數據;處理模塊43具體用于將所述各組的寫失敗的數據分別鏡像為對應的寫成功的數據。上述數據處理裝置的具體實現參照圖1或圖2所示的本發明實施例提供的一種數據處理方法。本發明實施例采用在內存中將多個待處理數據分組,對各組的待處理數據進行處理后更新磁盤中該組的狀態值以指示該組的待處理數據已處理,再根據更新后的各組待處理數據的狀態值確定各組的待處理數據已處理后,刪除磁盤中第一數據樹中保存所述多個待處理數據的數據信息的節點的技術手段,克服了現有技術中以單項數據為單位進行磁盤IO大大地降低了磁盤數據樹的整體性能的問題,每處理完一組待處理數據處理后只需通過一次磁盤IO修改狀態值,且所有待處理數據處理完后只需通過一次磁盤IO刪除保存所述多個待處理數據的數據信息的所有節點,避免了大量的磁盤10,提高了磁盤數據樹的操作性能。進一步地,本實施例通過在管理數據中保存數據樹的根節點地址,在發生硬件故障內存數據丟失的情況下,可以根據管理數據找到數據樹,還原內存映射。進一步地,本實施例將待處理數據按照預設的分組規則分組進行處理,在發生硬件故障內存數據丟失的情況下,可以仍然按照預設的分組規則進行分組,組內成員不變,再根據管理數據中保存的各組待處理數據的狀態值,從斷點繼續處理數據。本領域普通技術人員可以理解實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。最后應說明的是以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。
權利要求
1.一種數據處理方法,其特征在于,包括將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中,所述待處理數據的數據信息用于唯一標識所述待處理數據;將所述多個待處理數據分成至少兩組,在預先生成的管理數據中添加各組待處理數據的狀態值,以指示各組待處理數據待處理;在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后,更新所述管理數據中每組待處理數據的狀態值,以指示每組待處理數據已處理;根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的節點。
2.根據權利要求1所述的方法,其特征在于,正常工作狀態時,所述將所述第一數據樹的節點中保存的所述多個待處理數據的數據信息寫入內存中之前還包括將所述第一數據樹的根節點地址寫入所述管理數據;所述根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的節點之后還包括刪除所述管理數據中的所述第一數據樹的根節點地址和所述各組待處理數據的狀態值。
3.根據權利要求2所述的方法,其特征在于,內存數據丟失重新上電后,所述將所述第一數據樹的節點中保存的所述多個待處理數據的數據信息寫入內存中之前還包括讀取所述管理數據,若所述管理數據中存在所述第一數據樹的根節點地址,根據所述第一數據樹的根節點地址查找到所述第一數據樹;所述在預先生成的管理數據中添加各組待處理數據的狀態值,以指示各組待處理數據待處理具體包括若所述管理數據中缺少至少一組待處理數據的狀態值,則在所述管理數據中添加所述至少一組待處理數據的狀態值,以指示所述至少一組待處理數據待處理; 所述在內存中對各組的待處理數據進行處理具體包括根據所述管理數據中各組待處理數據的狀態值對所述各組待處理數據進行處理。
4.根據權利要求2或3中所述的方法,其特征在于,所述將所述第一數據樹的根節點地址寫入所述管理數據之后還包括刪除索引中保存的所述第一數據樹的根節點地址;若有新的待處理數據,建立第二數據樹,將所述第二數據樹的根節點地址保存到所述索引中,將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中;所述根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的節點具體包括根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。
5.根據權利要求2或3所述的方法,其特征在于,所述將所述第一數據樹的根節點地址寫入所述管理數據之前還包括在磁盤中建立第二數據樹;所述將所述第一數據樹的根節點地址寫入所述管理數據之后還包括將索引中保存的所述第一數據樹的根節點地址修改為所述第二數據樹的根節點地址;若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中;所述根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的節點具體包括根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。
6.根據權利要求2或3所述的方法,其特征在于,所述將所述第一數據樹的根節點地址寫入所述管理數據之前還包括將所述第一數據樹上所有節點的狀態均設置為第一狀態,對所述第一數據樹進行根分裂,將分裂出來的新根節點和所述新根節點的新子節點的狀態設為第二狀態;所述將所述第一數據樹的根節點地址寫入所述第一數據樹的管理數據之后還包括 若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述新根節點和新子節點形成的新樹的節點中,并設置所述新樹上所有節點的狀態為第二狀態;所述根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點具體包括根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除節點狀態為第一狀態的節點。
7.一種數據處理裝置,其特征在于,包括讀取模塊,用于將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中,所述待處理數據的數據信息用于唯一標識所述待處理數據;分組模塊,用于將所述多個待處理數據分成所述至少兩組,在預先生成的管理數據中添加各組待處理數據的狀態值,以指示各組待處理數據待處理;處理模塊,用于在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后, 實時更新所述管理數據中每組待處理數據的狀態值,以指示每組待處理數據已處理;刪除模塊,用于根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。
8.根據權利要求7所述的裝置,其特征在于,正常工作狀態時,所述讀取模塊還用于 在將所述第一數據樹的節點中保存的所述多個待處理數據的數據信息寫入內存中之前,將所述第一數據樹的根節點地址寫入所述管理數據; 所述刪除模塊還用于在根據所述管理數據中更新后的各組待處理數據的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點之后,刪除所述管理數據中的所述第一數據樹的根節點地址和所述各組待處理數據的狀態值。
9.根據權利要求8所述的裝置,其特征在于,掉電重啟時,所述讀取模塊還用于 在將所述第一數據樹的節點中保存的所述多個待處理數據的數據信息寫入內存中之前,讀取所述管理數據,若所述管理數據中存在所述第一數據樹的根節點地址,根據所述第一數據樹的根節點地址查找到所述第一數據樹;所述分組模塊具體用于若所述管理數據中缺少至少一組的狀態值,在所述管理數據中添加所述至少一組的狀態值,以指示所述至少一組的待處理數據待處理; 所述處理模塊具體用于根據所述管理數據中各組待處理數據的狀態值對所述各組待處理數據進行處理。
10.根據權利要求8或9所述的裝置,其特征在于,還包括建立模塊,用于在磁盤中建立所述第一數據樹,生成所述管理數據; 確定模塊,用于確定多個待處理數據,將所述多個待處理數據的數據信息分別保存到所述第一數據樹的節點中; 所述建立模塊還用于在所述讀取模塊將所述第一數據樹的根節點地址寫入所述管理數據之后,刪除索引中保存的所述第一數據樹的根節點地址; 所述確定模塊還用于在所述讀取模塊將所述第一數據樹的根節點地址寫入所述管理數據之后,若有新的待處理數據,建立第二數據樹,將所述第二數據樹的根節點地址保存到所述索引中,將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中; 所述刪除模塊具體用于根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。
11.根據權利要求8或9所述的裝置,其特征在于,還包括建立模塊,用于在磁盤中建立所述第一數據樹,生成所述管理數據; 確定模塊,用于確定多個待處理數據,將所述多個待處理數據的數據信息分別保存到所述第一數據樹的節點中; 所述建立模塊還用于 在磁盤中建立第二數據樹; 所述確定模塊還用于在所述讀取模塊將所述第一數據樹的根節點地址寫入所述管理數據之后,將索引中保存的所述第一數據樹的根節點地址修改為所述第二數據樹的根節點地址;若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述第二數據樹的節點中;所述刪除模塊具體用于根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除所述第一數據樹。
12.根據權利要求8或9所述的裝置,其特征在于,還包括建立模塊,用于在磁盤中建立所述第一數據樹,生成所述管理數據; 確定模塊,用于確定多個待處理數據,將所述多個待處理數據的數據信息分別保存到所述第一數據樹的節點中; 所述建立模塊還用于在所述讀取模塊將所述第一數據樹的根節點地址寫入所述管理數據之前,將所述第一數據樹上的所有節點的狀態均設置為第一狀態,對所述第一數據樹進行根分裂,將分裂出來的新根節點和所述新根節點的新子節點的狀態設為第二狀態; 所述確定模塊還用于在所述讀取模塊將所述第一數據樹的根節點地址寫入所述管理數據之后,若有新的待處理數據,則將所述新的待處理數據的數據信息保存到所述新根節點和新子節點形成的新樹的節點中,并設置所述新樹上所有節點的狀態為第二狀態; 所述刪除模塊具體用于根據所述管理數據中保存的所述第一數據樹的根節點地址和更新后的各組待處理數據的狀態值刪除節點狀態為第一狀態的節點。
全文摘要
本發明實施例提供一種數據處理方法及裝置。方法包括將第一數據樹的節點中保存的多個待處理數據的數據信息寫入內存中;將所述多個待處理數據分成所述至少兩組,在管理數據中添加各組的狀態值,以指示各組待處理數據待處理;在內存中對各組待處理數據進行處理,在每組待處理數據處理完之后,實時更新所述管理數據中每組的狀態值,以指示每組待處理數據已處理;根據所述管理數據中更新后的各組的狀態值刪除所述第一數據樹中保存所述多個待處理數據的數據信息的所述節點。本發明實施例中每處理完一組待處理數據處理后只需通過一次磁盤IO修改狀態值,且所有待處理數據處理完后只需通過一次磁盤IO刪除所有節點,避免了大量的磁盤IO。
文檔編號G06F17/30GK102495838SQ201110343278
公開日2012年6月13日 申請日期2011年11月3日 優先權日2011年11月3日
發明者楊定國, 陳娟 申請人:成都市華為賽門鐵克科技有限公司