本發(fā)明涉及一種高效的安防行業(yè)媒體數(shù)據(jù)存儲(chǔ)文件系統(tǒng)。
背景技術(shù):
文件的存儲(chǔ)需要考慮存儲(chǔ)的效率,在監(jiān)控系統(tǒng)中,每時(shí)每刻都可能有大量的文件的產(chǎn)生。文件的大小不一,在硬盤里面可能會(huì)產(chǎn)生大量的小文件,隨著不停的刪除文件,創(chuàng)建文件,會(huì)在硬盤中產(chǎn)生大量的磁盤碎片,這些會(huì)嚴(yán)重影響到磁盤的讀寫效率。單線程寫入硬盤的速度為最快,基本上能達(dá)到硬盤讀寫的最高實(shí)際速度。隨著線程的增多,硬盤的讀寫的效率反而有所降低,這是因?yàn)橛脖P的讀寫指針移動(dòng)范圍擴(kuò)大,導(dǎo)致更多的時(shí)間花在尋道上面所致。所以對(duì)于前端設(shè)備來說,假設(shè)一個(gè)DVR同時(shí)有16個(gè)通道在寫數(shù)據(jù),每個(gè)通道都開一個(gè)線程寫數(shù)據(jù)的并生成文件,它的效率將大大低于同時(shí)將16個(gè)通道數(shù)據(jù)寫入一個(gè)文件中。磁盤的操作對(duì)寫文件至關(guān)重要,合理的文件格式會(huì)有效的提高文件讀寫速度,并且使文件更利于使用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種高效的安防行業(yè)媒體數(shù)據(jù)存儲(chǔ)文件系統(tǒng),三個(gè)層次分工明晰,每層所處理的事情各有不同,其中接口對(duì)象層是固定不變的,它為用戶提供一個(gè)方便操作文件的接口;文件格式是可變的,規(guī)定文件使用的格式,文件數(shù)據(jù)的組合方式,文件數(shù)據(jù)的讀寫方式;文件要素是基本不變的,它定義文件內(nèi)部中一些普遍的東西,盡管文件格式不同,它們內(nèi)部數(shù)據(jù)結(jié)構(gòu)卻很可能是相同的,這樣在使用時(shí),盡管格式不同,但它們的內(nèi)部要素相同,會(huì)給文件操作帶來非常大的方便之處。
本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的:一種高效的安防行業(yè)媒體數(shù)據(jù)存儲(chǔ)文件系統(tǒng),它包括接口對(duì)象層、文件格式層和文件要素層,接口對(duì)象層為用戶提供接口,用戶使用這些接口來獲取文件的信息,完成數(shù)據(jù)的檢索和讀??;文件格式層針對(duì)不同的使用環(huán)境,在監(jiān)控文件中使用監(jiān)控標(biāo)準(zhǔn)文件格式和標(biāo)準(zhǔn)大文件格式的文件格式來實(shí)現(xiàn)文件封裝;文件要素層定義了文件內(nèi)部的具體內(nèi)容。
所述的文件要素包括文件頭結(jié)構(gòu)對(duì)象、數(shù)據(jù)對(duì)象、流信息對(duì)象和數(shù)據(jù)索引對(duì)象;
所述的文件頭結(jié)構(gòu)對(duì)象屬于文件的第一部分,位于文件的起始,包含文件的基本信息;
所述的數(shù)據(jù)對(duì)象包含所有的流數(shù)據(jù);
所述的流信息對(duì)象包含文件中所有流數(shù)據(jù)的信息;
所述的數(shù)據(jù)索引對(duì)象用于完成對(duì)數(shù)據(jù)的檢索,每一個(gè)流的索引形成一個(gè)鏈表,用于保存對(duì)應(yīng)流數(shù)據(jù)在文件的位置。
所述的監(jiān)控標(biāo)準(zhǔn)文件格式的數(shù)據(jù)流的個(gè)數(shù)在寫文件初始就確定,在寫入時(shí),先寫入數(shù)據(jù)流信息對(duì)象,數(shù)據(jù)寫在數(shù)據(jù)流信息后面。
所述的監(jiān)控大文件格式的數(shù)據(jù)流個(gè)數(shù)不確定,在寫入時(shí),先寫入數(shù)據(jù),再寫入數(shù)據(jù)流信息。
本發(fā)明的有益效果是:本發(fā)明提供了一種高效的安防行業(yè)媒體數(shù)據(jù)存儲(chǔ)文件系統(tǒng),三個(gè)層次分工明晰,每層所處理的事情各有不同,其中接口對(duì)象層是固定不變的,它為用戶提供一個(gè)方便操作文件的接口;文件格式是可變的,規(guī)定文件使用的格式,文件數(shù)據(jù)的組合方式,文件數(shù)據(jù)的讀寫方式;文件要素是基本不變的,它定義文件內(nèi)部中一些普遍的東西,盡管文件格式不同,它們內(nèi)部數(shù)據(jù)結(jié)構(gòu)卻很可能是相同的,這樣在使用時(shí),盡管格式不同,但它們的內(nèi)部要素相同,會(huì)給文件操作帶來非常大的方便之處。
附圖說明
圖1為系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖進(jìn)一步詳細(xì)描述本發(fā)明的技術(shù)方案,但本發(fā)明的保護(hù)范圍不局限于以下所述。
如圖1所示,一種高效的安防行業(yè)媒體數(shù)據(jù)存儲(chǔ)文件系統(tǒng),它包括接口對(duì)象層、文件格式層和文件要素層,接口對(duì)象層為用戶提供接口,用戶使用這些接口來獲取文件的信息,完成數(shù)據(jù)的檢索和讀取;文件格式層針對(duì)不同的使用環(huán)境,在監(jiān)控文件中使用監(jiān)控標(biāo)準(zhǔn)文件格式和標(biāo)準(zhǔn)大文件格式的文件格式來實(shí)現(xiàn)文件封裝;文件要素層定義了文件內(nèi)部的具體內(nèi)容。
所述的文件要素包括文件頭結(jié)構(gòu)對(duì)象、數(shù)據(jù)對(duì)象、流信息對(duì)象和數(shù)據(jù)索引對(duì)象;
所述的文件頭結(jié)構(gòu)對(duì)象屬于文件的第一部分,位于文件的起始,包含文件的基本信息;
所述的數(shù)據(jù)對(duì)象包含所有的流數(shù)據(jù);
所述的流信息對(duì)象包含文件中所有流數(shù)據(jù)的信息;
所述的數(shù)據(jù)索引對(duì)象用于完成對(duì)數(shù)據(jù)的檢索,每一個(gè)流的索引形成一個(gè)鏈表,用于保存對(duì)應(yīng)流數(shù)據(jù)在文件的位置。
所述的監(jiān)控標(biāo)準(zhǔn)文件格式的數(shù)據(jù)流的個(gè)數(shù)在寫文件初始就確定,在寫入時(shí),先寫入數(shù)據(jù)流信息對(duì)象,數(shù)據(jù)寫在數(shù)據(jù)流信息后面。由于文件不定長(zhǎng),使它的使用顯得非常靈活,用戶可能隨時(shí)選擇一部分感興趣的流生成一個(gè)標(biāo)準(zhǔn)文件,這個(gè)文件數(shù)據(jù)大小是不固定的,由寫的時(shí)間長(zhǎng)度決定,換句話來說,它是一個(gè)完整的文件。為了防止在寫文件的過程中出現(xiàn)意外,導(dǎo)致已經(jīng)寫了的一部分?jǐn)?shù)據(jù)沒有索引而無法讀取,所以在寫文件的過程中需要產(chǎn)生一個(gè)索引備份文件。這個(gè)文件在寫文件初始生成,保存當(dāng)前的索引信息,假設(shè)正常寫入所有數(shù)據(jù)后,銷毀此文件,否則保留,下次打開此文件對(duì)已經(jīng)寫入的進(jìn)行修復(fù)。對(duì)監(jiān)控標(biāo)準(zhǔn)文件格式,采用索引備份文件IDX來保存索引信息。它對(duì)單個(gè)的文件寫入進(jìn)行索引備份,并不考慮磁盤操作的效率。它適用與一些不需要大量文件操作的場(chǎng)合,下面為索引備份文件的一些規(guī)則:
(1) 創(chuàng)建數(shù)據(jù)文件的同時(shí)創(chuàng)建IDX文件,文件名與數(shù)據(jù)文件同名,后綴為.idx,
(2) 默認(rèn)當(dāng)總的數(shù)據(jù)包新加入索引達(dá)到100個(gè)的時(shí)候?qū)懭胛募淮危?/p>
(3) 修復(fù)時(shí),檢索索引文件,根據(jù)流的ID將所有屬于同一個(gè)流的索引形成一個(gè)索引鏈,然后將所有的索引鏈表依次寫入文件末尾,
(4) 寫入的結(jié)構(gòu)與數(shù)據(jù)文件的索引結(jié)構(gòu)相同,
(5) 數(shù)據(jù)文件寫入成功,則刪除索引文件,
(6) 數(shù)據(jù)寫入失敗,修復(fù)成功后刪除索引文件。
所述的監(jiān)控大文件格式的數(shù)據(jù)流個(gè)數(shù)不確定,在寫文件的過程中可能實(shí)時(shí)的添加,因此需要適應(yīng)實(shí)時(shí)流的添加過程,其流信息在數(shù)據(jù)后面,另外文件也是定長(zhǎng)的,在寫入時(shí),先寫入數(shù)據(jù),再寫入數(shù)據(jù)流信息。
從功能上面來說,監(jiān)控大文件格式非常方便大量的數(shù)據(jù)存儲(chǔ),比如前端設(shè)備中,NVR同時(shí)進(jìn)行多路的數(shù)據(jù)的采集,這時(shí)候更適合使用大文件格式進(jìn)行保存,在寫的過程中可以方便的添加流數(shù)據(jù),另外數(shù)據(jù)塊按照定長(zhǎng)整齊的寫在磁盤中,也方便日后用戶的使用。因此也可以看到,對(duì)于一段邏輯上完整的視頻數(shù)據(jù),它也有可能分散在幾個(gè)文件中。