專利名稱:一種數(shù)據(jù)存儲方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體地說,涉及一種數(shù)據(jù)存儲方法及裝置。
背景技術(shù):
現(xiàn)有的錄像系統(tǒng)存儲數(shù)據(jù)時,多個錄像通道共用同一存儲區(qū)域。所述存儲區(qū)域由物理磁盤或者磁盤陣列實現(xiàn),對接收到的數(shù)據(jù)包進(jìn)行順序存儲。在具體進(jìn)行各錄像通道對應(yīng)數(shù)據(jù)包的存儲時,按照每個錄像通道請求存儲數(shù)據(jù)包的時間,依次將多個錄像通道的數(shù)據(jù)包存儲于所述存儲區(qū)域。 由于各錄像通道所對應(yīng)的數(shù)據(jù)在存儲區(qū)域中的位置并不連續(xù),因此,刪除某一錄像通道的數(shù)據(jù)時,將在存儲區(qū)域中產(chǎn)生碎片。尤其是存在多個錄像通道,進(jìn)行了多次數(shù)據(jù)刪除后,存儲區(qū)域中形成的碎片數(shù)量將非常龐大。而當(dāng)存儲區(qū)域順序存儲數(shù)據(jù)包到最后時,就需要重新在之前刪除所產(chǎn)生的所述碎片中存儲新接收到的數(shù)據(jù)包,由于每個數(shù)據(jù)包的大小并不固定,因此,會出現(xiàn)無法覆蓋碎片,或多個碎片聯(lián)合存儲某一數(shù)據(jù)包的情況。而上述情況的發(fā)生將嚴(yán)重影響數(shù)據(jù)存儲的穩(wěn)定性和存儲效率。例如,假設(shè)某錄像通道新生成的數(shù)據(jù)包較小,而當(dāng)前碎片所能存儲的數(shù)據(jù)量大于該數(shù)據(jù)包的大小,將這個較小的數(shù)據(jù)包存儲在該碎片位置,則碎片仍然存在;或者,新生成的數(shù)據(jù)包較大,而當(dāng)前碎片所能存儲的數(shù)據(jù)量小于該數(shù)據(jù)包的大小,則需要使用包括該碎片在內(nèi)的至少兩個碎片來存儲該數(shù)據(jù)包。
因此現(xiàn)有錄像系統(tǒng)存儲數(shù)據(jù)的方法存在這樣的缺點由于存儲區(qū)域中所述碎片的產(chǎn)生,嚴(yán)重影響了數(shù)據(jù)存儲的穩(wěn)定性以及存儲效率。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種數(shù)據(jù)存儲方法及裝置,能夠提高數(shù)據(jù)存儲穩(wěn)定性以及存儲效率。 本發(fā)明實施例提供一種數(shù)據(jù)存儲方法,包括以下步驟
接收通過數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包; 判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包; 如果是,確定所述待存儲數(shù)據(jù)包的存儲信息,將所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置; 否則,根據(jù)預(yù)設(shè)的刪除條件,確定所需刪除的數(shù)據(jù)包數(shù)量,從所述存儲區(qū)域中刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包,之后,執(zhí)行所述判斷操作。 其中,所述存儲信息包括索引信息以及時間信息,其中,所述索引信息用于標(biāo)識數(shù)據(jù)包在所述存儲區(qū)域中的絕對位置。 所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置之后,還包括 更新所述存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或第二存儲區(qū)域信息;更新后的所述第一存儲區(qū)域信息和第二存儲區(qū)域信息中流水號較大的存儲區(qū)域信息用于記錄所述待存 儲數(shù)據(jù)包已存儲時的存儲區(qū)域的信息,流水號較小的存儲區(qū)域信息用于記錄所述待存儲數(shù) 據(jù)包未存儲時的存儲區(qū)域的信息。 所述刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包之后,還包括 更新所述存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或第二存儲區(qū)域信息;更新后的所述 第一存儲區(qū)域信息和第二存儲區(qū)域信息中流水號較大的存儲區(qū)域信息用于記錄數(shù)據(jù)包刪 除后的存儲區(qū)域的信息,流水號較小的存儲區(qū)域信息用于記錄數(shù)據(jù)包未刪除時的存儲區(qū)域 的信息。
所述數(shù)據(jù)通道對應(yīng)的存儲區(qū)域包括信息存儲區(qū)以及數(shù)據(jù)包存儲區(qū); 相應(yīng)的,所述判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存儲所
述待存儲數(shù)據(jù)包具體為 判斷信息存儲區(qū)是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包的信息,并且,
判斷所述數(shù)據(jù)包存儲區(qū)是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包。 所述信息存儲區(qū)包括 索引信息區(qū),用于保存所述存儲區(qū)域所存儲的各數(shù)據(jù)包的索引信息; 時間信息區(qū),用于保存所述存儲區(qū)域所存儲的各數(shù)據(jù)包的時間信息,以及存儲區(qū)
域所存儲的所有數(shù)據(jù)包的時間段信息; 存儲區(qū)域信息區(qū),用于存儲所述第一存儲區(qū)域信息以及第二存儲區(qū)域信息。
所述判斷信息存儲區(qū)是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包的存儲信 息具體為 判斷索引信息區(qū)的剩余空間是否足夠存儲待存儲數(shù)據(jù)包的索引信息;并且,判斷
時間信息區(qū)的剩余空間是否足夠存儲待存儲數(shù)據(jù)包的時間信息。 所述根據(jù)預(yù)設(shè)的刪除條件確定所需刪除的數(shù)據(jù)包數(shù)量具體為 確定存儲區(qū)域中時間信息位于預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)包的第一數(shù)量,將所述第一數(shù)
量與預(yù)設(shè)的第二數(shù)量比較,選擇數(shù)值小的所述數(shù)量作為所需刪除的數(shù)據(jù)包數(shù)量; 其中,所述預(yù)設(shè)時間段的開始時間與存儲區(qū)域中最靠前的時間信息的開始時間相同。 本發(fā)明實施例還提供一種數(shù)據(jù)存儲裝置,包括
接收單元,用于接收數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包; 判斷單元,用于判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存儲 所述接收單元接收的待存儲數(shù)據(jù)包; 存儲單元,用于判斷單元的判斷結(jié)果為是時,確定所述待存儲數(shù)據(jù)包的存儲信息, 將所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置; 刪除單元,用于判斷單元的判斷結(jié)果為否時,根據(jù)預(yù)設(shè)的刪除條件,確定所需刪除
的數(shù)據(jù)包數(shù)量,從所述存儲區(qū)域中刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包。 其中,還包括更新單元,更新所述存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或第二存儲
區(qū)域信息。 從上述的技術(shù)方案可以看出,本申請實施例中,將各數(shù)據(jù)通道的數(shù)據(jù)包依次存儲 在該數(shù)據(jù)通道對應(yīng)的存儲區(qū)域中,呈線性分布,再次寫入時,刪除對應(yīng)存儲區(qū)域中時間最靠前的數(shù)據(jù)包,再依次存儲新的數(shù)據(jù)包。這樣循環(huán)存儲,不論數(shù)據(jù)包大小如何變化,都不會產(chǎn) 生碎片,從而使得數(shù)據(jù)包的存儲更為穩(wěn)定,且提高了數(shù)據(jù)存儲效率。 另外存儲區(qū)域信息區(qū)中的第一存儲區(qū)域信息和第二存儲區(qū)域信息用于存儲待存 儲數(shù)據(jù)包寫入前的存儲區(qū)域信息以及待存儲數(shù)據(jù)包存儲后的存儲區(qū)域信息,這樣當(dāng)系統(tǒng)在 提交數(shù)據(jù)時若出現(xiàn)故障,至少有一份完整的較新的存儲區(qū)域的信息,從而可以有效地恢復(fù) 存儲區(qū)域的數(shù)據(jù)。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例描述 中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些 實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附 圖獲得其他的附圖。
圖1本發(fā)明實施例一種存儲區(qū)域的結(jié)構(gòu)圖;
圖2本發(fā)明實施例另一種存儲區(qū)域的結(jié)構(gòu)圖;
圖3本發(fā)明實施例提供的一種數(shù)據(jù)存儲方法流程圖;
圖4本發(fā)明實施例提供的另一種數(shù)據(jù)存儲方法流程圖;
圖5本發(fā)明實施例提供的一種數(shù)據(jù)存儲裝置的結(jié)構(gòu)圖;
圖6本發(fā)明實施例數(shù)據(jù)存儲裝置中判斷單元的具體結(jié)構(gòu)圖。
具體實施例方式
現(xiàn)有多錄像通道的數(shù)據(jù)存儲時,所存儲的各通道的數(shù)據(jù)分散,后續(xù)執(zhí)行刪除某一 通道數(shù)據(jù)的操作時,會在存儲區(qū)域上產(chǎn)生碎片,在錄像系統(tǒng)長時間運行后,產(chǎn)生的碎片數(shù)量 也將隨之不斷增加。而一旦存儲區(qū)域中的存儲空間被占滿,而需要使用所述碎片存儲各個 錄像通道產(chǎn)生的數(shù)據(jù)包時,將嚴(yán)重影響數(shù)據(jù)的存儲穩(wěn)定性以及存儲效率。 因此,本發(fā)明實施例提供了一種解決方案,其基本思想是給不同錄像通道劃分一 個存儲區(qū)域,每個錄像通道在對應(yīng)的存儲區(qū)域上進(jìn)行數(shù)據(jù)的循環(huán)存儲。 在磁盤格式化后,為每個錄像通道建立一個對應(yīng)的存儲區(qū)域,一個存儲區(qū)域可以 是一個磁盤分區(qū)或者幾個磁盤分區(qū)。存儲區(qū)域的一種結(jié)構(gòu)如圖l所示,它包括信息存儲區(qū) 和數(shù)據(jù)包存儲區(qū),信息存儲區(qū)在存儲區(qū)域的頭部。 信息存儲區(qū)可以包括固定信息塊、存儲區(qū)域信息區(qū)、存儲信息區(qū)和數(shù)據(jù)包存儲 區(qū)。固定信息塊包括存儲區(qū)域的總長度、固定信息塊占用長度、時間信息區(qū)占用長度、索引 信息區(qū)占用長度、時間段最大允許值、單個時間段內(nèi)數(shù)據(jù)包之間可允許最大時間空洞/重 疊、數(shù)據(jù)包內(nèi)部的Slice允許最大時間差、格式化時指定的建議數(shù)據(jù)包平均大小值、格式化 時指定的每個數(shù)據(jù)包平均的Slice數(shù)、固定信息塊信息標(biāo)識長度、固定塊標(biāo)識信息和固定 信息塊校驗和等只讀信息,這些信息在格式化時寫入。存儲區(qū)域信息區(qū)存儲第一存儲區(qū)域 信息和第二存儲區(qū)域信息,第一存儲區(qū)域信息和第二存儲區(qū)域信息分別用于記錄待存儲數(shù) 據(jù)包存儲前后的存儲區(qū)域的信息,如圖1所示,可以為第一存儲區(qū)域信息和第二存儲區(qū)域 信息劃分不同的存儲位置,對應(yīng)進(jìn)行存儲,但是這里并不限定,只要更新后的存儲區(qū)域信息 區(qū)中存儲了待存儲數(shù)據(jù)包存儲前后,存儲區(qū)域?qū)?yīng)的兩種存儲區(qū)域信息即可。存儲信息區(qū)包括索引信息區(qū)和時間信息區(qū),索引信息區(qū)用于保存存儲區(qū)域存儲的所有數(shù)據(jù)包的索引信 息;時間信息區(qū)用于保存存儲區(qū)域存儲的所有數(shù)據(jù)包的時間信息,以及存儲的所有數(shù)據(jù)包 的時間段信息,時間段信息是指所有數(shù)據(jù)包開始的時間和結(jié)束的時間。數(shù)據(jù)包存儲區(qū)用來 存儲數(shù)據(jù)包。 另外,存儲區(qū)域結(jié)構(gòu)還可以是其它形式,或者,所述信息存儲區(qū)還可以位于所述存 儲區(qū)域的尾部,如圖2所示。 為了使本領(lǐng)域技術(shù)人員能夠清楚理解本發(fā)明的技術(shù)方案,下面結(jié)合附圖和實施例 對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)描述。 請參閱圖3,為本發(fā)明實施例提供的一種數(shù)據(jù)存儲方法的流程圖。如圖3所示,包 括 步驟S310 :接收通過數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包。 其中,所述數(shù)據(jù)通道在錄像系統(tǒng)中可以為所述錄像通道。所述待存儲數(shù)據(jù)包的數(shù) 量并不限制,可以是一個也可以是多個。
步驟S320 :判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否有足夠的剩余空間存儲待存
儲數(shù)據(jù)包,如果是,執(zhí)行步驟S330 ;否則執(zhí)行步驟S340。 其中,在本發(fā)明中存儲區(qū)域是為每一數(shù)據(jù)通道對應(yīng)分配的。 步驟S330 :確定待存儲數(shù)據(jù)包的存儲信息,將所述待存儲數(shù)據(jù)包存儲于所述存儲 區(qū)域中存儲信息指示的存儲位置。 步驟S340 :根據(jù)預(yù)設(shè)的刪除條件,確定所需刪除的數(shù)據(jù)包數(shù)量,從所述存儲區(qū)域 中刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包,返回步驟S320。 在圖3所示的本發(fā)明實施例中,將各數(shù)據(jù)通道的數(shù)據(jù)包依次存儲在對應(yīng)的存儲區(qū) 域中,呈線性分布,再次寫入時,刪除對應(yīng)存儲區(qū)域中日期靠前的數(shù)據(jù)包,再依次存儲新的 數(shù)據(jù)包。這樣循環(huán)存儲,不論數(shù)據(jù)包大小如何變化,都不會產(chǎn)生碎片,從而使得數(shù)據(jù)包的存 儲更為穩(wěn)定,且提高了數(shù)據(jù)存儲效率。 請參閱圖4,為本發(fā)明實施例提供的另一種數(shù)據(jù)存儲方法的流程圖。如圖4所示, 包括 步驟S410 :接收通過數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包。 步驟S420 :判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否有足夠的剩余空間存儲待存
儲數(shù)據(jù)包,如果是,執(zhí)行步驟S430 ;否則執(zhí)行步驟S440。 以圖1和圖2所示的存儲區(qū)域劃分方法,本步驟的實現(xiàn)可以為 判斷所述數(shù)據(jù)包存儲區(qū)是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包,并且,
判斷索引信息區(qū)的剩余空間是否足夠存儲待存儲數(shù)據(jù)包的索引信息,并且,判斷時間信息
區(qū)的剩余空間是否足夠存儲待存儲數(shù)據(jù)包的時間信息,當(dāng)上述三個判斷的判斷結(jié)果均為是
時,執(zhí)行步驟S430,否則,執(zhí)行步驟S440。 以上三個判斷步驟的執(zhí)行順序可以改變,這里并不限制,只要其中一個判斷結(jié)果 為否,則判定存儲區(qū)域不存在足夠的剩余空間,執(zhí)行后續(xù)步驟S440的刪除步驟。相反則說 明存儲區(qū)域存在足夠的剩余空間,執(zhí)行步驟S430的存儲步驟。 步驟S430 :確定待存儲數(shù)據(jù)包的信息,將待存儲數(shù)據(jù)包存儲到所述存儲區(qū)域中存 儲信息指示的存儲位置,執(zhí)行步驟S460。
這里的存儲信息可以包括凍引信息以及時間信息。其中,索引信息,用于標(biāo)識數(shù)
據(jù)包在所述存儲區(qū)域中的絕對位置,也即索引信息指示出所述待存儲數(shù)據(jù)包需要存儲到的
分區(qū)以及在該分區(qū)中的位置,從而待存儲數(shù)據(jù)包存儲時,可以從這個位置進(jìn)行數(shù)據(jù)寫入,將
待存儲數(shù)據(jù)包存儲到存儲區(qū)域中;時間信息可以為數(shù)據(jù)包對應(yīng)的存儲時間,或者,當(dāng)所述數(shù)
據(jù)包中的數(shù)據(jù)為錄像數(shù)據(jù)時,也可以為所述錄像數(shù)據(jù)的錄像初始時間以及錄像持續(xù)時間。 步驟S440 :根據(jù)預(yù)設(shè)的刪除條件,確定需要刪除的數(shù)據(jù)包數(shù)量,從存儲區(qū)域中刪
除存儲時間最靠前的一定數(shù)量的數(shù)據(jù)包,執(zhí)行步驟S450。 本實施例中,預(yù)設(shè)刪除條件可以根據(jù)實際應(yīng)用環(huán)境自主設(shè)置,例如 設(shè)置刪除條件為預(yù)設(shè)一個時間段,這個時間段的開始時間和最靠前的時間信息
的開始時間相同,保證刪除的是最歷史的數(shù)據(jù)包,刪除這個時間段內(nèi)的數(shù)據(jù)包。如這個時間
段可以是最靠前的1分鐘,則刪除這最靠前1分鐘內(nèi)的數(shù)據(jù)包。 或者,設(shè)置刪除條件為預(yù)設(shè)一個固定數(shù)量,從存儲區(qū)域中刪除所述固定數(shù)量個數(shù) 據(jù)包,其中,被刪除的數(shù)據(jù)包為時間信息最靠前的數(shù)據(jù)包。 或者,設(shè)置刪除條件為預(yù)設(shè)一個時間段和一個固定數(shù)量,所述預(yù)設(shè)時間段的開始 時間與當(dāng)前存儲區(qū)域中最靠前的時間信息的開始時間總是相同,比較預(yù)設(shè)時間段內(nèi)的數(shù)據(jù) 包數(shù)量和預(yù)設(shè)的固定數(shù)量之間數(shù)值的大小,選擇較小的數(shù)值作為需要刪除的數(shù)量。例如固 定數(shù)量設(shè)置為72,歷史時間段為1分鐘,若1分鐘內(nèi)的數(shù)據(jù)包是52的時候,則刪除52個數(shù) 據(jù)包,再返回步驟S420進(jìn)行判斷;若1分鐘內(nèi)的數(shù)據(jù)包是92的時候,則刪除72個數(shù)據(jù)包, 再返回步驟S420進(jìn)行判斷。 步驟S450 :更新存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或者第二存儲區(qū)域信息,返回 步驟S420。 其中,更新后的所述第一存儲區(qū)域信息和第二存儲區(qū)域信息中流水號較大的存儲 區(qū)域信息用于記錄數(shù)據(jù)包刪除后的存儲區(qū)域的信息,流水號較小的存儲區(qū)域信息用于記錄 數(shù)據(jù)包未刪除時的存儲區(qū)域的信息。 在更新之前,第一存儲區(qū)域信息和第二存儲區(qū)域信息中流水號較小的一個為記錄 前一個數(shù)據(jù)包(刪除操作之前被存儲的數(shù)據(jù)包)存儲后的存儲區(qū)域的信息;第一存儲區(qū)域 信息和第二存儲區(qū)域信息中流水號較小的一個記錄的是前一個數(shù)據(jù)包未存儲時的存儲區(qū) 域的信息,本步驟中,在更新存儲區(qū)域信息時,選擇其中流水號較小的一個存儲區(qū)域信息進(jìn) 行更新,用于記錄數(shù)據(jù)包刪除后的存儲區(qū)域的信息。 本步驟執(zhí)行之后,返回步驟S420判斷步驟,如果存儲區(qū)域剩余空間仍然不足夠存 儲待存儲數(shù)據(jù)包,則繼續(xù)步驟S440刪除步驟,刪除數(shù)據(jù)包,直至剩余空間足夠存儲待存儲 數(shù)據(jù)包。 步驟S460 :更新存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或者第二存儲區(qū)域信息。
在更新之前,第一存儲區(qū)域信息和第二存儲區(qū)域信息中流水號較大的一個為記錄 所述待存儲數(shù)據(jù)包未存儲時的存儲區(qū)域的信息(也即當(dāng)前待存儲數(shù)據(jù)包之前的數(shù)據(jù)包存 儲后的存儲區(qū)域的信息),記為存儲區(qū)域信息A ;第一存儲區(qū)域信息和第二存儲區(qū)域信息 中流水號較小的一個記錄的是當(dāng)前待存儲數(shù)據(jù)包之前的數(shù)據(jù)包未存儲時的存儲區(qū)域的信 息,本步驟中,在更新存儲區(qū)域信息時,選擇其中流水號較小的一個存儲區(qū)域信息進(jìn)行更新 (流水號較小的為之前比較舊的信息區(qū)域,更新后其流水號變?yōu)樽畲?,為最新信?,用于記錄所述當(dāng)前待存儲數(shù)據(jù)包存儲后的存儲區(qū)域的信息,記為存儲區(qū)域信息B。并且,在更新 時,需要被選擇進(jìn)行更新的存儲區(qū)域信息的流水號+2,從而使得,第一存儲區(qū)域信息和第二 存儲區(qū)域信息中的流水號總是相差1。 存儲區(qū)域信息A和存儲區(qū)域信息B的結(jié)構(gòu)完全相同,可以包括流水號、時間信息 區(qū)第一項的環(huán)形隊列下標(biāo)號、時間信息區(qū)索引項數(shù)、索引信息區(qū)第一項的環(huán)形隊列下標(biāo)號、 第一個數(shù)據(jù)包的序列號、數(shù)據(jù)包總量、數(shù)據(jù)包開始位置、最大數(shù)據(jù)包的大小(統(tǒng)計值)、第一 時間段被刪掉的數(shù)據(jù)包數(shù)量(僅用于修正第一個時間段信息)、第一時間被刪掉的數(shù)據(jù)包 的字節(jié)總長度、第一時間被刪的數(shù)據(jù)包的時間總長度和存儲數(shù)據(jù)信息校驗和等存儲區(qū)域信 息,流水號標(biāo)識著數(shù)據(jù)包寫入的次數(shù)。 更新存儲區(qū)域信息B具體為分別確定每一字段的當(dāng)前值,例如,流水號等于存儲 區(qū)域信息A的流水號加l,確定時間信息區(qū)第一項的環(huán)形隊列下標(biāo)號,確定時間信息區(qū)索引 項數(shù),確定索引信息區(qū)第一項的環(huán)形隊列下標(biāo)號,確定第一個數(shù)據(jù)包的序列號,確定數(shù)據(jù)包 總量,確定數(shù)據(jù)包開始位置,確定最大數(shù)據(jù)包的大小(統(tǒng)計值),確定第一時間段被刪掉的 數(shù)據(jù)包數(shù)量,確定第一時間被刪掉的數(shù)據(jù)包的字節(jié)總長度,確定第一時間被刪的數(shù)據(jù)包的 時間總長度和確定存儲數(shù)據(jù)信息校驗和。 具體實例如,存儲第12到第20個數(shù)據(jù)包時,假設(shè)存儲區(qū)域信息A中存儲的是第11 個數(shù)據(jù)包及其之前存儲的所有數(shù)據(jù)包時的存儲區(qū)域信息,存儲區(qū)域信息B中存儲的是第11 個數(shù)據(jù)包未存儲時的存儲區(qū)域信息,則,本步驟中將選擇存儲區(qū)域信息B進(jìn)行更新,使得更 新后存儲區(qū)域信息B中存儲的是第20個數(shù)據(jù)包及其之前存儲的所有數(shù)據(jù)包時的存儲區(qū)域 信息;也即,本次存儲只需更新存儲區(qū)域信息B中的信息。之后,再存儲如第21個到30個 數(shù)據(jù)包時,則更新存儲區(qū)域信息A中的信息,也即存儲區(qū)域信息A和存儲區(qū)域信息B總是每 提交一次交換一次位置,如此循環(huán)。 步驟S460進(jìn)行完后,本次數(shù)據(jù)存儲的流程結(jié)束,開始下一次數(shù)據(jù)存儲。 本發(fā)明實施例通過各個錄像通道的數(shù)據(jù)包存儲在對應(yīng)的存儲區(qū)域中,所存儲的數(shù)
據(jù)包依次存儲,呈線性分布,這樣各個通道的數(shù)據(jù)互不關(guān)聯(lián),當(dāng)存儲區(qū)域的存儲空間不足
時,刪除存儲時間靠前的數(shù)據(jù)包,在刪除后的空間再依次存儲新的數(shù)據(jù)包。這樣數(shù)據(jù)包循環(huán)
存儲,新存儲的數(shù)據(jù)仍然線性分布,各個數(shù)據(jù)包之間沒有空白片段,不會產(chǎn)生碎片。 另外存儲區(qū)域信息區(qū)中的第一、第二存儲區(qū)域信息分別存儲新數(shù)據(jù)包存儲前后存
儲區(qū)域的信息,近似等同于互為備份的關(guān)系。而且每次存儲數(shù)據(jù)后和刪除數(shù)據(jù)后都進(jìn)行更
新,保證第一存儲區(qū)域信息和第二存儲區(qū)域信息總是分別記錄了當(dāng)前最新的存儲區(qū)域信息
及其比較新的存儲區(qū)域信息,這樣當(dāng)系統(tǒng)故障,因為同一時刻,只是其中的一個存儲區(qū)域信
息可能處于改寫狀態(tài)中,保證了另一存儲區(qū)域信息總是完整的,可以有效地為用戶恢復(fù)數(shù)據(jù)。 另外,本發(fā)明實施例還提供了一種可以實現(xiàn)上述方法實施例的裝置數(shù)據(jù)存儲裝置。 基于上述數(shù)據(jù)存儲方法,請參閱圖5,為本發(fā)明實施例提供的一種數(shù)據(jù)存儲裝置的
結(jié)構(gòu)示意圖。
該裝置包括 接收單元51,用于接收數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包。
判斷單元52,用于判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存
儲所述接收單元接收的待存儲數(shù)據(jù)包。 其中判斷單元52的具體結(jié)構(gòu)如圖6所示,包括 第一判斷子單元61,比較數(shù)據(jù)包存儲區(qū)的剩余空間與待存儲數(shù)據(jù)包的數(shù)據(jù)量大 ??; 第二判斷子單元62,比較時間信息區(qū)的剩余空間與待存儲數(shù)據(jù)包的時間信息及新 的時間段信息的數(shù)據(jù)量大小; 第三判斷子單元63,比較索引信息區(qū)的剩余空間與待存儲數(shù)據(jù)包的索引信息的數(shù) 據(jù)量大小。 以三個判斷子單元在工作時順序可以任意改變,這里并不限制。 存儲單元53,用于判斷單元52的判斷結(jié)果為是時,確定所述待存儲數(shù)據(jù)包的存儲
信息,將所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置。 刪除單元54,用于用于根據(jù)預(yù)設(shè)的刪除條件,確定所需刪除的數(shù)據(jù)包數(shù)量,從所述
存儲區(qū)域中刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包。 優(yōu)選地,該數(shù)據(jù)存儲裝置還可以包括更新單元,如圖5所示, 更新單元55,用于更新第一存儲區(qū)域信息或第二存儲區(qū)域信息。存儲單元53存儲 待存儲數(shù)據(jù)包后或刪除單元54刪除數(shù)據(jù)包后, 一般都需要更新第一存儲區(qū)域信息或第二 存儲區(qū)域信息。 圖5所示的本發(fā)明實施例數(shù)據(jù)存儲裝置,將數(shù)據(jù)通道傳輸來的數(shù)據(jù)包依次存儲在 數(shù)據(jù)通道對應(yīng)的存儲區(qū)域中,當(dāng)存儲區(qū)域的剩余空間不足時,將存儲時間最靠前的數(shù)據(jù)包 刪除,再在刪除的位置依次存儲數(shù)據(jù)。這樣存儲的數(shù)據(jù)之間沒有空白片段,不產(chǎn)生碎片,從 而可以增加數(shù)據(jù)存儲的穩(wěn)定性和存儲效率。 本領(lǐng)域普通技術(shù)人員可以理解,本發(fā)明實施例數(shù)據(jù)存儲方法的步驟可以直接用硬 件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機(jī)存儲器(RAM)、 內(nèi)存、只讀存儲器(ROM)、電可編程R0M、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、 CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。 以上所述僅是本發(fā)明的優(yōu)選實施方式,使本領(lǐng)域技術(shù)人員能夠理解或?qū)崿F(xiàn)本發(fā) 明。對這些實施例的多種修改對本領(lǐng)域的技術(shù)人員來說將是顯而易見的,本文中所定義的 一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明 將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一 致的最寬的范圍。
權(quán)利要求
一種數(shù)據(jù)存儲方法,其特征在于,包括以下步驟接收通過數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包;判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包;如果是,確定所述待存儲數(shù)據(jù)包的存儲信息,將所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置;否則,根據(jù)預(yù)設(shè)的刪除條件,確定所需刪除的數(shù)據(jù)包數(shù)量,從所述存儲區(qū)域中刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包,之后,執(zhí)行所述判斷操作。
2. 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述存儲信息包括索引信息以及時間信息,其中,所述索引信息用于標(biāo)識數(shù)據(jù)包在所述存儲區(qū)域中的絕對位置。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置之后,還包括更新所述存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或第二存儲區(qū)域信息;更新后的所述第一存儲區(qū)域信息和第二存儲區(qū)域信息中流水號較大的存儲區(qū)域信息用于記錄所述待存儲數(shù)據(jù)包已存儲時的存儲區(qū)域的信息,流水號較小的存儲區(qū)域信息用于記錄所述待存儲數(shù)據(jù)包未存儲時的存儲區(qū)域的信息。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包之后,還包括更新所述存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或第二存儲區(qū)域信息;更新后的所述第一存儲區(qū)域信息和第二存儲區(qū)域信息中流水號較大的存儲區(qū)域信息用于記錄數(shù)據(jù)包刪除后的存儲區(qū)域的信息,流水號較小的存儲區(qū)域信息用于記錄數(shù)據(jù)包未刪除時的存儲區(qū)域的信息。
5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)通道對應(yīng)的存儲區(qū)域包括信息存儲區(qū)以及數(shù)據(jù)包存儲區(qū);相應(yīng)的,所述判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包具體為判斷信息存儲區(qū)是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包的信息,并且,判斷所述數(shù)據(jù)包存儲區(qū)是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包。
6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述信息存儲區(qū)包括索引信息區(qū),用于保存所述存儲區(qū)域所存儲的各數(shù)據(jù)包的索引信息;時間信息區(qū),用于保存所述存儲區(qū)域所存儲的各數(shù)據(jù)包的時間信息,以及存儲區(qū)域所存儲的所有數(shù)據(jù)包的時間段信息;存儲區(qū)域信息區(qū),用于存儲所述第一存儲區(qū)域信息以及第二存儲區(qū)域信息。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述判斷信息存儲區(qū)是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包的存儲信息具體為判斷索引信息區(qū)的剩余空間是否足夠存儲待存儲數(shù)據(jù)包的索引信息;并且,判斷時間信息區(qū)的剩余空間是否足夠存儲待存儲數(shù)據(jù)包的時間信息。
8. 根據(jù)權(quán)利要求1至7任一項所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)的刪除條件確定所需刪除的數(shù)據(jù)包數(shù)量具體為確定存儲區(qū)域中時間信息位于預(yù)設(shè)時間段內(nèi)的數(shù)據(jù)包的第一數(shù)量,將所述第一數(shù)量與預(yù)設(shè)的第二數(shù)量比較,選擇數(shù)值小的所述數(shù)量作為所需刪除的數(shù)據(jù)包數(shù)量;其中,所述預(yù)設(shè)時間段的開始時間與存儲區(qū)域中最靠前的時間信息的開始時間相同。
9. 一種數(shù)據(jù)存儲裝置,其特征在于,包括接收單元,用于接收數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包;判斷單元,用于判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存儲所述接收單元接收的待存儲數(shù)據(jù)包;存儲單元,用于判斷單元的判斷結(jié)果為是時,確定所述待存儲數(shù)據(jù)包的存儲信息,將所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置;刪除單元,用于判斷單元的判斷結(jié)果為否時,根據(jù)預(yù)設(shè)的刪除條件,確定所需刪除的數(shù)據(jù)包數(shù)量,從所述存儲區(qū)域中刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,還包括更新單元,更新所述存儲區(qū)域?qū)?yīng)的第一存儲區(qū)域信息或第二存儲區(qū)域信息。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)存儲方法及裝置。該方法包括接收通過數(shù)據(jù)通道傳輸來的待存儲數(shù)據(jù)包,判斷該數(shù)據(jù)通道所對應(yīng)的存儲區(qū)域是否存在足夠的剩余空間存儲所述待存儲數(shù)據(jù)包。如果是,確定所述待存儲數(shù)據(jù)包的存儲信息,將所述待存儲數(shù)據(jù)包存儲于所述存儲區(qū)域中存儲信息指示的存儲位置;否則,根據(jù)預(yù)設(shè)的刪除條件,確定所需刪除的數(shù)據(jù)包數(shù)量,從所述存儲區(qū)域中刪除存儲時間最靠前的所述數(shù)量個數(shù)據(jù)包,然后,執(zhí)行所述判斷操作。這種數(shù)據(jù)存儲方法和裝置在存儲數(shù)據(jù)時不會產(chǎn)生碎片,提高了數(shù)據(jù)存儲的穩(wěn)定性以及存儲效率。
文檔編號G11B27/10GK101714391SQ20091023785
公開日2010年5月26日 申請日期2009年11月12日 優(yōu)先權(quán)日2009年11月12日
發(fā)明者郭軍 申請人:北京東方網(wǎng)力科技有限公司