两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于Flash的事務(wù)處理方法

文檔序號:6481203閱讀:285來源:國知局
專利名稱:一種基于Flash的事務(wù)處理方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于Flash的事務(wù)處理方法,具體地說,是涉及一種動態(tài)Flash的事務(wù)處理方法,屬于存儲器技術(shù)領(lǐng)域。
背景技術(shù)
Flash作為一種存儲介質(zhì),在存儲領(lǐng)域得到廣泛的應(yīng)用。Flash在物理結(jié)構(gòu)上分成若干個物理區(qū)塊(Block),區(qū)塊之間相互獨立,其自身具有以下特性(1)由于Flash的寫操作只能將數(shù)據(jù)位從1寫成0,不能從0寫成1,所以在對flash存儲器進行寫入之前必須先執(zhí)行擦操作,將預(yù)寫入的數(shù)據(jù)位初始化為1,且擦除操作的最小單位是一個區(qū)塊,而不是單個字節(jié);(2)Flash的擦寫壽命有次數(shù)限制;(3)塊擦除的時間比較長;(4) Flash在使用過程中,可能導致某些區(qū)塊的損壞,而區(qū)塊一旦損壞,將無法進行修復。因此,在使用傳統(tǒng)方法對Flash進行數(shù)據(jù)存儲時,存儲速度較慢,且擦寫頻繁,降低了 Flash的使用壽命。
為解決傳統(tǒng)Flash存儲方法存在的上述問題,本申請人曾提出了 一種Flash的動態(tài)存儲方法,通過將Flash存儲空間劃分為若干個邏輯分區(qū),將邏輯分區(qū)中的每條數(shù)據(jù)記錄占據(jù)的空間作為虛擬扇區(qū),并對每個虛擬扇區(qū)設(shè)置一個虛擬扇區(qū)分配表,且Flash存儲器以數(shù)椐記錄作為基本單元進行數(shù)據(jù)的讀寫操作。在寫入數(shù)據(jù)時釆用兩頭并進的方式,數(shù)據(jù)記錄從邏輯分區(qū)的一端依次寫入,而與其對應(yīng)的虛擬扇區(qū)分配表從邏輯分區(qū)的另 一端依次寫入,從而能夠充分利用Flash的存儲空間,相當于減少了 Flash中Block的擦除次數(shù),提高了凄史據(jù)的讀寫速度,提高了 Flash的使用壽命。
4但現(xiàn)有Flash存儲技術(shù)均沒有考慮數(shù)據(jù)的一致性問題。因為在將一組相互關(guān)聯(lián)的數(shù)據(jù)寫入Flash過程中,很可能會出現(xiàn)突然斷電等異常情況,造成相互關(guān)聯(lián)的數(shù)據(jù)只有一部分寫入,從而造成數(shù)據(jù)的不一致性,進而因數(shù)據(jù)不一致導致非常嚴重的后果。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于Flash的事務(wù)處理方法,通過在虛擬扇區(qū)分配表中增加與事務(wù)處理有關(guān)的信息,同一事務(wù)的數(shù)據(jù)的有效性保持一致,從而解決了數(shù)據(jù)不一致的問題。
為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案予以實現(xiàn)一種基于F1 a sh的事務(wù)處理方法,所述F1 ash存々者空間劃分為若干個邏輯分區(qū),每個邏輯分區(qū)包括一個或多個連續(xù)的物理區(qū)塊,所述邏輯分區(qū)存^fi者至少一種類型的數(shù)據(jù)記錄;所述每條婆:據(jù)記錄所占據(jù)的存儲空間作為一個虛擬扇區(qū),每個虛擬扇區(qū)設(shè)置有一個虛擬扇區(qū)分配表;其特征在于,
至所述邏輯分區(qū)的物理區(qū)塊中;
所述每個虛擬扇區(qū)分配表中包括有標記事務(wù)類型的事務(wù)ID,以及標記數(shù)據(jù)記錄是否屬于事務(wù)中的數(shù)據(jù)的事務(wù)標志;
在將數(shù)據(jù)記錄寫入至所述邏輯分區(qū)的物理區(qū)塊中時,首先判斷所述教:據(jù)記錄是獨立數(shù)據(jù)還是事務(wù)中的數(shù)據(jù),并根據(jù)判斷結(jié)果設(shè)置所述事務(wù)ID及事務(wù)標志的值。
根據(jù)本發(fā)明,考慮到數(shù)據(jù)的備份,所述每個虛擬扇區(qū)分配表中還包括有標記事務(wù)新舊程度的事務(wù)版本號。在當前寫入至所述邏輯分區(qū)的數(shù)據(jù)記錄為事務(wù)中的數(shù)據(jù),且所述當前數(shù)據(jù)記錄對應(yīng)的事務(wù)ID與已寫入的數(shù)據(jù)記錄的事務(wù)ID相同時,將所述當前數(shù)據(jù)記錄對應(yīng)的事務(wù)版本號加1。
根據(jù)本發(fā)明,為充分利用Flash存儲空間,提高數(shù)據(jù)備除效率,在所述邏輯分區(qū)剩余一塊空的物理區(qū)塊時,對所述邏輯分區(qū)中最早寫入的物理區(qū)塊進行 數(shù)據(jù)清理。
在對所述物理區(qū)塊進行數(shù)據(jù)清理時,若讀取到的數(shù)據(jù)記錄為事務(wù)中的數(shù)據(jù), 判斷所述數(shù)據(jù)記錄對應(yīng)的事務(wù)版本號與已寫入的相同事務(wù)ID的數(shù)據(jù)記錄的最
大版本號之差;若所述差大于設(shè)定值,則丟棄所讀取到的數(shù)據(jù)記錄,若所述差 不大于設(shè)定值,則將所讀取到的數(shù)據(jù)記錄寫入至所述空的物理區(qū)塊中。
根據(jù)本發(fā)明,所述設(shè)定值優(yōu)選為1。這樣,同一事務(wù)能夠保留至少兩個版 本號,既盡可能地減少對Flash存儲器空間的占用,又能兼顧數(shù)據(jù)錯誤時對歷 史數(shù)據(jù)進行追溯。
根據(jù)本發(fā)明,考慮到數(shù)據(jù)記錄的備份,所述每個虛擬扇區(qū)分配表中還包括 有用來標記與所述虛擬扇區(qū)分配表相對應(yīng)的數(shù)據(jù)記錄的新舊程度的記錄版本 號,以及標記所述數(shù)據(jù)記錄的類型的數(shù)據(jù)類型。在當前寫入的數(shù)據(jù)記錄的數(shù)據(jù) 類型與已寫入的數(shù)據(jù)記錄的數(shù)據(jù)類型相同時,將所述當前凄t據(jù)記錄對應(yīng)的記錄 版本號加1。
根據(jù)本發(fā)明,為充分利用Flash存儲空間,提高數(shù)據(jù)務(wù)f分效率,在所述邏 輯分區(qū)剩余一塊空的物理區(qū)塊時,對所述邏輯分區(qū)中最早寫入的物理區(qū)塊進4亍 數(shù)據(jù)清理。
在對所述物理區(qū)塊進行數(shù)據(jù)清理時,判斷所述數(shù)據(jù)記錄對應(yīng)的記錄版本號 與已寫入的相同數(shù)據(jù)類型的數(shù)據(jù)記錄的最大記錄版本號之差;若所述差不大于 設(shè)定值,在所述數(shù)據(jù)記錄為獨立數(shù)據(jù)時將所述讀取到的數(shù)據(jù)記錄寫入至所述空 的物理區(qū)塊中,在所述數(shù)據(jù)記錄為事務(wù)中的數(shù)據(jù)時將所述數(shù)據(jù)記錄所在的事務(wù) 中的全部數(shù)據(jù)均寫入至所述空的物理區(qū)塊中。
根據(jù)本發(fā)明,所述設(shè)定值優(yōu)選為1。這樣,同樣類型的數(shù)據(jù)能夠保留至少 兩個版本號,既盡可能地減少對Flash存儲器空間的占用,又能兼顧數(shù)據(jù)4昔誤 時對歷史數(shù)據(jù)進行追溯。
根據(jù)本發(fā)明,所述每個虛擬扇區(qū)分配表中還包括有用來描述與所述虛擬扇
6區(qū)分配表相對應(yīng)的數(shù)據(jù)記錄的屬性的數(shù)據(jù)記錄長度、數(shù)據(jù)記錄ID及數(shù)據(jù)記錄校 驗碼。
根據(jù)本發(fā)明,在所述邏輯分區(qū)中的每一個物理區(qū)塊的頭部均設(shè)置有區(qū)塊標 所述物理區(qū)塊當前工作狀態(tài)的狀態(tài)標志。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點和積極效果是
1、 通過在虛擬扇區(qū)分配表中設(shè)置事務(wù)ID及事務(wù)標志等與事務(wù)處理有關(guān)的 信息,將相互關(guān)聯(lián)的數(shù)據(jù)作為一個事務(wù)寫入至Flash中,這樣,作為事務(wù)中的 所有數(shù)據(jù)要么全部有效、要么全部無效,保持數(shù)據(jù)有效性的一致性,從而避免 了因突然斷電等異常情況造成數(shù)據(jù)寫入過程中產(chǎn)生的數(shù)據(jù)不一致的問題。
2、 通過保存事務(wù)版本號及記錄版本號實現(xiàn)Flash存儲器中數(shù)據(jù)記錄的備 份,有效減少了重復備份不需要備份的數(shù)據(jù)而占用大量存儲器空間的問題,同 時提高了數(shù)據(jù)存儲的效率。
附困說明


圖1和圖2是本發(fā)明基于Flash的事務(wù)處理方法泰:據(jù)存儲一個實施例的流 程圖。
務(wù)體實施方式
下面結(jié)合附圖對本發(fā)明作進一步詳細的說明。
本發(fā)明所述的基于Flash的事務(wù)處理方法基于動態(tài)Flash,所述Flash存 儲空間劃分為若干個邏輯分區(qū),每個邏輯分區(qū)包括一個或多個連續(xù)的物理區(qū)塊, 所述邏輯分區(qū)存儲至少一種類型的數(shù)據(jù)記錄。將所述每條數(shù)據(jù)記錄所占據(jù)的存 儲空間作為一個虛擬扇區(qū),每個虛擬扇區(qū)設(shè)置有一個虛擬扇區(qū)分配表,所述虛 擬扇區(qū)分配表及與所述虛擬扇區(qū)分配表相對應(yīng)的數(shù)據(jù)記錄依次寫入至所述邏輯 分區(qū)的物理區(qū)塊中。Flash存儲器讀寫操作時,以數(shù)據(jù)記錄作為基本單元進行數(shù)據(jù)的讀寫操作。
為保證一組相互關(guān)聯(lián)的數(shù)據(jù)在寫入Flash過程中不會因突然斷電等異常情 況導致數(shù)據(jù)不一致,本發(fā)明在每個虛擬扇區(qū)分配表中設(shè)置了標記事務(wù)類型的事 務(wù)ID,以及標記數(shù)據(jù)記錄是否屬于事務(wù)中的數(shù)據(jù)的事務(wù)標志,將相互關(guān)聯(lián)的數(shù) 據(jù)組通過一個事務(wù)進行寫入。而寫入數(shù)據(jù)的過程中,首先判斷所述數(shù)據(jù)記錄是 獨立數(shù)據(jù)(非事務(wù)中的數(shù)據(jù))還是事務(wù)中的數(shù)據(jù),然后根據(jù)判斷結(jié)果設(shè)置相應(yīng) 的事務(wù)ID及事務(wù)標志的值。通過將相互關(guān)聯(lián)的數(shù)據(jù)通過一個事務(wù)進行寫入,這 組數(shù)據(jù)要么全部有效,要么全部無效,4呆證了數(shù)據(jù)組的一致性。
圖1和圖2按順序構(gòu)成了本發(fā)明基于Flash的事務(wù)處理方法存儲數(shù)據(jù)的一 個實施例的流程圖,其中,圖2是圖1所示流程的延續(xù)。所述實施例的邏輯分 區(qū)包含有n個Block,所述n個Block分別為BlockO、 Blockl、…Blockn-1。
在所述實施例中,為盡量減少對Flash存儲空間的占用,而又保證數(shù)據(jù)的 一致性及備份效率,定義與數(shù)據(jù)記錄對應(yīng)的虛擬扇區(qū)分配表的數(shù)據(jù)結(jié)構(gòu)如下
事務(wù)ID事務(wù)版本號記錄版本號記錄長度數(shù)據(jù)類型記錄ID事務(wù)標志CRC校驗碼
(4bit)(12bit)(16bit)(24bit)(7bit)(16Mt )(lbit)(32bit )
所述虛擬扇區(qū)分配表包括有14個字節(jié)共112位,分別用來存儲事務(wù)ID、 事務(wù)版本號、記錄版本號、記錄長度、lt據(jù)類型、記錄ID、事務(wù)標志及CRC才史 —險碼。其中
0-31bit共32bit用來存儲CRC校驗碼,也即CRC32校驗碼。所述校驗碼 是對數(shù)據(jù)記錄及與其對應(yīng)的虛擬扇區(qū)分配表中除檢驗碼之外的其他數(shù)據(jù)一并計 算后的校驗值,用于校驗數(shù)據(jù)記錄的數(shù)據(jù),確保數(shù)據(jù)的安全性。當然,也可以 選用其他類型的校驗碼來校驗數(shù)據(jù)。
32bit用來存儲事務(wù)標志。通過該位表示數(shù)據(jù)記錄是否屬于一個事務(wù)中的 數(shù)據(jù)。在該實施例中,若數(shù)據(jù)記錄為事務(wù)中的數(shù)據(jù),該位置O,否則置為l。
33-48bit共16bit用來存卡者數(shù)據(jù)記錄ID,通過所述記錄ID,能夠區(qū)分不 同的數(shù)據(jù)記錄。
849-55bit共7bit用來存儲數(shù)據(jù)記錄的數(shù)據(jù)類型。 56-79bit共24bit用來存儲數(shù)據(jù)記錄長度。
80-95bit共16bit用來存儲標記數(shù)據(jù)記錄新舊程度的記錄版本號,每種數(shù) 據(jù)類型的數(shù)據(jù)記錄的記錄版本號從0開始計數(shù)。
96-107bit共12bU用來存儲標記事務(wù)新舊程度的事務(wù)版本號,所述事務(wù) 版本號從O開始計數(shù),每寫入一次同事務(wù)的凝:據(jù),相應(yīng)的^t據(jù)記錄的事務(wù)版本 號加1。
108-lllbit共4bit存儲事務(wù)ID,所述事務(wù)ID的值從1到15共16個值, 用來區(qū)別不同的事務(wù)。
根據(jù)所述數(shù)據(jù)類型,可以知道所述數(shù)據(jù)記錄的長度、邏輯分區(qū)的開始地址 等信息,方法如下根據(jù)Flash分區(qū)的配置信息,直接可以得到該分區(qū)的開始 地址、包含的Block個數(shù)等信息;根據(jù)這些配置信息還可以計算出某一種數(shù)據(jù) 類型對應(yīng)的分區(qū),檢索該分區(qū)上存儲的虛擬扇區(qū)分配表,每個虛擬扇區(qū)分配表 都對應(yīng)了數(shù)據(jù)記錄的數(shù)據(jù)長度,通過累加的方式就能夠很容易計算出某個虛擬 扇區(qū)分配表對應(yīng)數(shù)據(jù)記錄的存儲位置,方便用戶讀糾目應(yīng)的數(shù)據(jù)記錄。
此外,所述實施例在所述邏輯分區(qū)中的每一個物理區(qū)塊的頭部設(shè)置有區(qū)塊 標志,即Block標志,用來標示對應(yīng)Block是否已經(jīng)才各式4匕以及當前Block的 狀態(tài)。所述Block標志共有16bit,其中,高8bit為格式化標志,〗氐8位為Block 狀態(tài)標志。本實施例定義了 Block的四種狀態(tài),分別為(l)格式化完成,尚 未寫入任何數(shù)據(jù);(2)、正在進行數(shù)據(jù)寫入;(3)、數(shù)據(jù)已寫滿;(4)、正在進行 數(shù)據(jù)清理。
下面結(jié)合圖l和圖2詳細描述該實施例將數(shù)據(jù)記錄存儲至邏輯分區(qū)的流程。 S101:流考呈開始。
S102:格式化邏輯分區(qū),在所述邏輯分區(qū)中的每個Block頭部寫入相應(yīng)的 區(qū)塊標志,區(qū)塊標志中的狀態(tài)標志為"格式化完成,尚未寫入任何數(shù)據(jù)"。
S103:選擇邏輯分區(qū)中的一個Block為當前Block,改變所述Block的區(qū)塊標志中的狀態(tài)標志為"正在進行數(shù)據(jù)寫入"。例如,選擇第一個Block,即 Block(H乍為當前Block。
S104:判斷當前寫入的數(shù)據(jù)記錄與已寫入的數(shù)據(jù)記錄類型是否相同。若相 同,執(zhí)行步驟S105,否則轉(zhuǎn)至步驟S106。
S105:在當前寫入的數(shù)據(jù)記錄與已寫入的數(shù)據(jù)記錄類型相同時,當前寫入 的數(shù)據(jù)記錄對應(yīng)的記錄版本號為同類型的數(shù)據(jù)記錄的最大記錄版本號加1。然 后執(zhí)行步驟S106。
S106:判斷當前寫入的數(shù)據(jù)記錄是否為一個事務(wù)中的數(shù)據(jù)記錄。若為事務(wù) 中的數(shù)據(jù)記錄,執(zhí)行步驟S108;若為獨立數(shù)據(jù),執(zhí)行步驟S107。
S107:當前寫入的數(shù)據(jù)記錄為獨立數(shù)據(jù),即為非事務(wù)中的教:據(jù),則將泰:據(jù) 記錄對應(yīng)的虛擬扇區(qū)分配表中的事務(wù)標志置1,事務(wù)ID及事務(wù)版本號的每一位 也均置為l,即事務(wù)ID置15,事務(wù)版本號置4095。然后執(zhí)行步驟S109。
S108:在當前寫入的數(shù)據(jù)記錄為一個事務(wù)中的數(shù)據(jù)記錄時,將數(shù)據(jù)記錄對 應(yīng)的虛擬扇區(qū)分配表中的事務(wù)標志置0,而事務(wù)ID置為所屬事務(wù)的設(shè)定值,事 務(wù)版本號為同事務(wù)ID的最大事務(wù)版本號加1。然后執(zhí)行步驟S109。
S109:根據(jù)上述各步驟的判斷結(jié)果及虛擬扇區(qū)分配表的數(shù)據(jù)結(jié)構(gòu)組裝當前 寫入的數(shù)據(jù)記錄對應(yīng)的虛擬扇區(qū)分配表,計算寫入的位置,依次寫入虛擬扇區(qū) 分配表及數(shù)據(jù)記錄。在組裝所述虛擬扇區(qū)分配表時,先組裝除CRC校驗碼之外 的其他所有數(shù)據(jù)位,然后再根據(jù)數(shù)據(jù)記錄及組裝好的虛擬扇區(qū)分配表中的數(shù)據(jù) 計算CRC校驗碼,最后再組裝完整的虛擬扇區(qū)分配表。
S110:在寫入數(shù)據(jù)的過程中,判定當前Block的剩余空間是否不足。若當 前Block剩余空間不足以寫入新的虛擬扇區(qū)分配表及數(shù)據(jù)記錄,則執(zhí)4亍步-驟 Sill;如果當前Block剩余空間還足夠存儲數(shù)據(jù),則轉(zhuǎn)至步驟S104,繼續(xù)將新 的虛擬扇區(qū)分配表及數(shù)據(jù)記錄寫入至當前Block中。
Sill:在當前Block剩余空間不足時,首先判斷所述邏輯分區(qū)中是否只剩 余一塊空Block。若只剩余一塊空Block,需要進行Block的數(shù)據(jù)清理過程,執(zhí)行步驟S114;若所述邏輯分區(qū)中剩余的空Block多于一塊,則執(zhí)行步驟S112, 將數(shù)據(jù)寫入至下一個Block中。
S112:將當前剩余空間不足的Block區(qū)塊標志中的狀態(tài)標志設(shè)置為"數(shù)據(jù) 已寫滿",然后轉(zhuǎn)入下一個Block。例如,若當前Block為BlockO,則轉(zhuǎn)入至 Blockl。
S113:將所轉(zhuǎn)入的下一個Block,如Blockl,作為當前Block,并改變其 區(qū)塊標志中的狀態(tài)標志為"正在進行數(shù)據(jù)寫入",然后轉(zhuǎn)至步驟S104,執(zhí)行數(shù) 據(jù)寫入過程。
S114:在所述邏輯分區(qū)只剩余一塊空Block,例如,只剩余一塊空的Block n-l時,對最先寫入的Block,即BlockO,進4亍#:據(jù)清理。
S115:首先改變所述最先寫入的Block的區(qū)塊標志中的狀態(tài)標志為"正在 進行數(shù)據(jù)清理"。
S116:從所述最先寫入的Block中依次讀取數(shù)據(jù)。
S117:將讀取到的數(shù)據(jù)記錄的記錄版本號與已寫入的同類型數(shù)據(jù)記錄的最 大記錄版本號進行比較,判斷兩者相差是否大于l。若兩者之差大于l,扭^亍步 驟S118;否則執(zhí)行步驟S121。
S118:在讀取到的數(shù)據(jù)記錄的記錄版本號與已寫入的同類型數(shù)據(jù)記錄的最 大記錄版本號之差大于1時,判斷所述數(shù)據(jù)記錄是否為一個事務(wù)中的數(shù)據(jù)記錄。 若所述數(shù)據(jù)記錄為一個事務(wù)中的數(shù)據(jù),執(zhí)行步驟S119;若所述數(shù)據(jù)記錄為獨立 數(shù)據(jù),執(zhí)行步驟S120。
S119:判斷讀取到的數(shù)據(jù)記錄所屬的事務(wù)中所有凄t據(jù)是否需要保留。若所 述事務(wù)中的所有數(shù)據(jù)均需保留,才丸行步驟S121;否則轉(zhuǎn)至步驟S120。
S120:丟棄讀取到的數(shù)據(jù)記錄,然后轉(zhuǎn)至步驟S122。
如果所讀到的數(shù)據(jù)記錄的版本號與已寫入的同類型數(shù)據(jù)記錄的最大版本號 相差大于1,在數(shù)據(jù)記錄為獨立數(shù)據(jù)時,說明所讀到的數(shù)據(jù)已經(jīng)比較舊,而在 存儲空間中還存在兩個版本比較新的數(shù)據(jù)記錄,因此將較舊的數(shù)據(jù)記錄丟棄掉,
ii以盡量節(jié)省存儲器的存儲空間。而在數(shù)據(jù)記錄為一個事務(wù)中的數(shù)據(jù)時,由于同 一個事務(wù)中的所有數(shù)據(jù)要保持一致,如果事務(wù)的所有數(shù)據(jù)中有一個數(shù)據(jù)為版本 較高不能丟棄的數(shù)據(jù),則所述事務(wù)中的所有數(shù)據(jù)均需保留。因此,在數(shù)據(jù)記錄 為事務(wù)中數(shù)據(jù)時,只有其所屬的事務(wù)中所有數(shù)據(jù)記錄的記錄版本都較低、均要丟棄時才丟棄所讀取到的數(shù)據(jù)記錄,確保數(shù)據(jù)的安全性。S121:在所讀取到的數(shù)據(jù)記錄版本號較高或數(shù)據(jù)記錄所在的事務(wù)中的所有 數(shù)據(jù)均需保留時,將讀取到的數(shù)據(jù)記錄寫入至空的Block中,然后轉(zhuǎn)至步驟 S122。S122:判斷最先寫入的Block數(shù)據(jù)是否清理完畢。若已清理完畢,執(zhí)行步 驟S123;否則轉(zhuǎn)至步驟S116,繼續(xù)進行數(shù)據(jù)的讀取和清理。S123:在最先寫入的Block數(shù)據(jù)清理完畢后,將其^f各式化,并改變其區(qū)塊 標志中的狀態(tài)標志為"格式化完成,尚未寫入任何數(shù)據(jù)"。S124:流程結(jié)束。在上述流程中,在寫入一個新塊前、 一個塊寫滿后、擦除一個塊后及對一 個塊清理前都需要重新寫入相應(yīng)塊的區(qū)塊標志中的狀態(tài)標志,目的是在突然斷 電等異常事件發(fā)生后,仍然能夠知道每個塊的工作狀態(tài)。上述流程是描述了在一個完整邏輯分區(qū)中寫入數(shù)據(jù)及清理一個Block的過 程。當然,在執(zhí)行完步驟S123的清理并格式化Block之后,可以繼續(xù)按照凄t據(jù) 寫入的步驟向有足夠存儲空間的Block中寫入數(shù)據(jù),并且在只剩余一塊空Block 時,再對最早寫入的Block進行清理。例如,將BlockO中的有效數(shù)據(jù)寫入至 Blockn-1中、格式化BlockO之后,繼續(xù)向Blockn-1中寫入凌t據(jù),此時BlockO 為一塊空的Block;在Blockn-1數(shù)據(jù)寫滿時,開始清理Blockl中的數(shù)據(jù),并 將清理后的有效數(shù)據(jù)寫入至空的BlockO中。如此往復,實現(xiàn)對Flash存〗諸器一 個邏輯分區(qū)持續(xù)的凝:據(jù)存儲過程。圖1及圖2所述的實施例是以虛擬扇區(qū)分配表中同時包含有事務(wù)ID、事務(wù) 版本號、記錄版本號及事務(wù)標志的情況下,F(xiàn)lash存儲器存儲數(shù)據(jù)的流程。需要說明的是,對于本發(fā)明所述的基于Flash的事務(wù)處理方法,也可以在不包括 記錄版本號的情況實現(xiàn)事務(wù)數(shù)據(jù)的處理,本領(lǐng)域的技術(shù)人員參考圖1和圖2的 流程,能夠在不付出創(chuàng)造性勞動的前提下得出在虛擬扇區(qū)分配表中不包括記錄 版本號時Flash存儲器存儲數(shù)據(jù)的流程。當然,以上所述僅是本發(fā)明的一種優(yōu)選實施方式而已,應(yīng)當指出,對于本 技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若 干改進和潤飾,這些改進和潤飾也應(yīng)^L為本發(fā)明的保護范圍。
權(quán)利要求
1、一種基于Flash的事務(wù)處理方法,所述Flash存儲空間劃分為若干個邏輯分區(qū),每個邏輯分區(qū)包括一個或多個連續(xù)的物理區(qū)塊,所述邏輯分區(qū)存儲至少一種類型的數(shù)據(jù)記錄;所述每條數(shù)據(jù)記錄所占據(jù)的存儲空間作為一個虛擬扇區(qū),每個虛擬扇區(qū)設(shè)置有一個虛擬扇區(qū)分配表;其特征在于,所述虛擬扇區(qū)分配表及與所述虛擬扇區(qū)分配表相對應(yīng)的數(shù)據(jù)記錄依次寫入至所述邏輯分區(qū)的物理區(qū)塊中;所述每個虛擬扇區(qū)分配表中包括有標記事務(wù)類型的事務(wù)ID,以及標記數(shù)據(jù)記錄是否屬于事務(wù)中的數(shù)據(jù)的事務(wù)標志;在將數(shù)據(jù)記錄寫入至所述邏輯分區(qū)的物理區(qū)塊中時,首先判斷所述數(shù)據(jù)記錄是獨立數(shù)據(jù)還是事務(wù)中的數(shù)據(jù),并根據(jù)判斷結(jié)果設(shè)置所述事務(wù)ID及事務(wù)標志的值。
2、 根據(jù)權(quán)利要求1所述的基于Flash的事務(wù)處理方法,其特征在于,所述每個虛擬扇區(qū)分配表中還包括有標記事務(wù)新舊程度的事務(wù)版本號。
3、 根據(jù)權(quán)利要求2所述的基于Flash的事務(wù)處理方法,其特征在于,在當前寫入至所述邏輯分區(qū)的數(shù)據(jù)記錄為事務(wù)中的數(shù)據(jù),且所述當前數(shù)據(jù)記錄對應(yīng)的事務(wù)ID與已寫入的數(shù)據(jù)記錄的事務(wù)ID相同時,將所述當前數(shù)據(jù)記錄對應(yīng)的事務(wù)版本號加1。
4、 根據(jù)權(quán)利要求3所述的基于Flash的事務(wù)處理方法,其特征在于,在所述邏輯分區(qū)剩余一塊空的物理區(qū)塊時,對所述邏輯分區(qū)中最早寫入的物理區(qū)塊進行數(shù)據(jù)清理;在對所述物理區(qū)塊進行數(shù)據(jù)清理時,若讀取到的數(shù)據(jù)記錄為事務(wù)中的數(shù)據(jù),判斷所述數(shù)據(jù)記錄對應(yīng)的事務(wù)版本號與已寫入的相同事務(wù)ID的數(shù)據(jù)記錄的最大版本號之差;若所述差大于設(shè)定值,則丟棄所讀取到的數(shù)據(jù)記錄,若所述差不大于設(shè)定值,則將所讀取到的數(shù)據(jù)記錄寫入至所述空的物理區(qū)塊中。
5、 根據(jù)權(quán)利要求4所述的基于Flash的事務(wù)處理方法,其特征在于,所述設(shè)定值為1。
6、 根據(jù)權(quán)利要求3所述的基于Flash的事務(wù)處理方法,其特征在于,所述每個虛擬扇區(qū)分配表中還包括有用來標記與所述虛擬扇區(qū)分配表相對應(yīng)的數(shù)據(jù)記錄的新舊程度的記錄版本號,以及標記所述數(shù)據(jù)記錄的類型的數(shù)據(jù)類型;在當前寫入的數(shù)據(jù)記錄的數(shù)據(jù)類型與已寫入的數(shù)據(jù)記錄的數(shù)據(jù)類型相同時,將所述當前數(shù)據(jù)記錄對應(yīng)的記錄版本號加1。
7、 根據(jù)權(quán)利要求6所述的基于Flash的事務(wù)處理方法,其特征在于,在所述邏輯分區(qū)剩余一塊空的物理區(qū)塊時,對所述邏輯分區(qū)中最早寫入的物理區(qū)塊進行數(shù)據(jù)清理;在對所述物理區(qū)塊進行數(shù)據(jù)清理時,判斷所述數(shù)據(jù)記錄對應(yīng)的記錄版本號與已寫入的相同數(shù)據(jù)類型的數(shù)據(jù)記錄的最大記錄版本號之差;若所述差不大于設(shè)定值,在所述數(shù)據(jù)記錄為獨立數(shù)據(jù)時將所述讀取到的數(shù)據(jù)記錄寫入至所述空的物理區(qū)塊中,在所述數(shù)據(jù)記錄為事務(wù)中的數(shù)據(jù)時將所述數(shù)據(jù)記錄所在的事務(wù)中的全部數(shù)據(jù)均寫入至所述空的物理區(qū)塊中。
8、 根據(jù)權(quán)利要求7所述的基于Flash的事務(wù)處理方法,其特征在于,所述設(shè)定值為1。
9、 沖艮據(jù)權(quán)利要求1至8中任一項所述的基于Flash的事務(wù)處理方法,其特征在于,所述每個虛擬扇區(qū)分配表中還包括有用來描迷與所述虛擬扇區(qū)分配表相對應(yīng)的數(shù)據(jù)記錄的屬性的數(shù)據(jù)記錄長度、數(shù)據(jù)記錄ID及數(shù)據(jù)記錄校驗碼。
10、 根據(jù)權(quán)利要求l所述的基于Flash的事務(wù)處理方法,其特征在于,在所述邏輯分區(qū)中的每一個物理區(qū)塊的頭部均設(shè)置有區(qū)塊標志;所述區(qū)塊標志包括標記所述物理區(qū)塊是否格式化的格式化標志,以及標記所述物理區(qū)塊當前工作狀態(tài)的狀態(tài)標志。
全文摘要
本發(fā)明公開了一種基于Flash的事務(wù)處理方法,所述Flash存儲空間劃分為若干個邏輯分區(qū),所述邏輯分區(qū)存儲至少一種類型的數(shù)據(jù)記錄;所述每條數(shù)據(jù)記錄所占據(jù)的存儲空間作為一個虛擬扇區(qū),每個虛擬扇區(qū)設(shè)置有一個虛擬扇區(qū)分配表;所述每個虛擬扇區(qū)分配表中包括有標記事務(wù)類型的事務(wù)ID,以及標記數(shù)據(jù)記錄是否屬于事務(wù)中的數(shù)據(jù)的事務(wù)標志;在將數(shù)據(jù)記錄寫入至所述邏輯分區(qū)的物理區(qū)塊中時,首先判斷所述數(shù)據(jù)記錄是獨立數(shù)據(jù)還是事務(wù)中的數(shù)據(jù),并根據(jù)判斷結(jié)果設(shè)置所述事務(wù)ID及事務(wù)標志的值。通過在虛擬扇區(qū)分配表中增加與事務(wù)處理有關(guān)的信息,同一事務(wù)的數(shù)據(jù)的有效性保持一致,從而解決了數(shù)據(jù)不一致的問題。
文檔編號G06F12/06GK101661433SQ200910018428
公開日2010年3月3日 申請日期2009年9月24日 優(yōu)先權(quán)日2009年9月24日
發(fā)明者田友強 申請人:青島海信寬帶多媒體技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
玛曲县| 隆昌县| 蓬安县| 开阳县| 滨州市| 富平县| 丰顺县| 松江区| 武功县| 通山县| 葵青区| 孝感市| 乐亭县| 铜梁县| 青浦区| 翁牛特旗| 洛浦县| 阳谷县| 拉孜县| 灯塔市| 龙南县| 略阳县| 朝阳县| 永吉县| 定襄县| 博兴县| 建湖县| 广东省| 酒泉市| 应用必备| 太原市| 祁门县| 青阳县| 卢氏县| 惠东县| 许昌县| 苍梧县| 古丈县| 平乐县| 沅陵县| 祁门县|