張騫
(陜西職業技術學院圖書館,陜西西安 710038)
隨著社會信息化進程的加快,每天都會產生大量的數據,海量存儲系統將這些復雜的數據進行存儲,滿足了人們對數據的需求[1]。但是在很多情況下,用戶并不需要訪問存儲在大容量存儲系統中的數據本身,而只需要使用元數據就可以[2]。在企業中,元數據存儲方案是實現電子文件管理的重要環節,元數據存儲系統中一般都采用樹結構和基于哈希的元數據存儲方式[3]。樹結構中存在大量的分支,因此,每次訪問元數據時需要經過不同的分支,這不僅會消耗大量的時間,而且會消耗大量的內存;使用基于哈希的元數據存儲方法,會受到非活躍元數據影響,很難選擇合適的哈希函數來進行存儲,且哈希函數被修改后,調整元數據所需要的時間和空間都很大。針對以上問題,提出了面向電子數字文獻保存的元數據存儲系統設計。
系統硬件結構如圖1 所示。

圖1 系統硬件結構
由圖1 可知,該系統主要是由DSP、SATA 硬盤、FPGA 主控單元組成的。
SATA 電子硬盤是一種高效率、高穩定性、高速度的存儲介質組件,該硬盤具有操作簡單、功能靈活可靠、無需修改設置等優點,是目前最好、最經濟的存儲介質之一[4-6]。另外,電子硬盤不易受溫度、沖擊、振動等外部環境的干擾,工作條件惡劣時,也不會對數據造成威脅,為系統提供了高性能、高可靠性的原始數據存儲容器[7-9]。
FPGA 作為主要控制核心部分,結合VHDL 語言方便系統移植[10]。該結構主要是由串行調試接口、SRAM 緩存管理結構、文件系統管理模塊、IDE 時序模塊、主控單元和串行調試接口組成的。串口調試接口負責控制寄存器的狀態和寄存器的配置,用DART作為系統的讀寫接口,能夠完成對芯片的調試。采用橋接芯片,IDE 時序產生模塊可以實現ATA 信號的串行轉換,實現硬盤數據的存取與控制[11]。SRAM 緩存管理結構負責讀寫離散信號,并控制數據的讀取與寫入,并保證兩個高速緩存間的正確切換[12]。
SRAM 緩存管理結構如圖2 所示。

圖2 SRAM緩存管理結構
由圖2 可知,SRAM 緩存管理結構中包含了大量的存儲模塊,因為存儲器數組是按行和列組織的,所以解碼器還可以分為行解碼器和列解碼器,必須先緩存地址才能解碼[13-14]。內存陣列與外部數據開關接口連接,負責讀取信號,并將讀取結果寫入內存陣列;時序控制模塊負責控制信號讀取與寫入時間;電源控制模塊是一種可以自由選擇的電路單元,該單元無需對整個存儲器進行讀寫操作,直接通過電源內部就可實現各個模塊的無效操作,從而達到節能的目的[15]。
數字信號處理器DSP 體系小,不僅方便存儲,還能快速實時地處理信號。其結構如圖3 所示。

圖3 數字信號處理器DSP結構
由圖3 可知,DSP 將多種硬件地址生成器封裝在一個循環結構中,命令緩沖和獲取機制獨立于其他中央的處理器,大大減少處理時間[16]。
2.1.1 元數據寫流程
在對元數據項目進行寫操作時,寫入的元數據項目將附加到當前使用的元數據緩沖區,并更新元數據緩沖區頭結構的散列表和記錄作者的元數據項目索引信息的相應過濾器。通過構建元數據緩沖池,以避免寫入請求的元數據緩沖對寫入請求的影響。
2.1.2 元數據讀流程
通過對包含目標元數據項的元數據存儲單元進行篩選和讀取,將存儲器中的元數據讀取操作分為兩個階段:第一階段在元數據緩沖池中搜索;第二階段直接在元數據緩沖池中讀取。根據元數據索引單元中的散列列表,讀取元數據項,并按寫入元數據的順序從新到舊搜索。
針對電子數字文獻保存的元數據存在的生命周期問題,提出了元數據分級算法,依據該算法區分元數據的活動和非活動類別,為縮短元數據的存儲時間提供了依據。時間和訪問頻率是影響元數據活躍度的主要因素,因此,將元數據活動P定義為活動計量依據,P值的計算公式如下:

式(1)中,tc表示元數據構建時間;t表示當前時間;nt表示元數據被訪問次數。
設元數據活躍度閾值為Pd,如果f(P,Pd)=1,表示元數據為活躍元數據,如果f(P,Pd)=-1,表示元數據為非活躍元數據,由此區分活躍和非活躍元數據。其中,f表示元數據等級評價函數,公式為:

依據該公式區分活動和非活動元數據。
依據上述對元數據讀寫操作,需先選擇寄存器,通過數據總線將命令寫入存儲器中。依據元數據分級結果,確定兩種數據類型,分別是活躍元數據和非活躍元數據,這兩種數據存儲的具體流程如圖4所示。

圖4 元數據存儲流程
由圖4 可知,讀主狀態存儲器,如果該存儲器空閑,就需設置數據存儲模式,并在相應寄存器內寫入所需參數,完成數據存儲。
利用Java 實現了一個原型系統,對服務器群集中的6個節點進行了測試。從5個電子數字文獻中選取元數據,分別為CADAL、Google book、SANQUAN、dl Library 以及Haith Trust。
通過測試程序模擬測試負載,可以對系統的讀寫接口進行獨立測試。該程序用大約需要11 GB 的總運行內存對1 024×64 元數據項進行元數據讀寫測試。通過隨機讀取2 048 個元數據項來測量元數據存儲時間。
3.2.1 存儲時間
針對存儲時間,分別使用樹型結構、基于哈希的元數據存儲方法和基于元數據分級系統對5 個電子數字文獻元數據存儲時間進行對比分析,結果如表1所示。

表1 3種方法元數據存儲時間對比分析
由表1 可知,使用基于元數據分級的元數據存儲系統相比于樹型結構、基于哈希的元數據存儲方法存儲時間要短,說明使用該系統存儲效率較高。
3.2.2 寫操作
針對寫信號操作,設SOC_ADR 為離散地址信號,以該信號為基礎,實際寫內容為:SOC_ADR[1:1]—1/8/4/2/1;SOC_ADR[1:2]—1/5/b/aa/1;SOC_ADR[1:3]—1/a/1/14/1;SOC_ADR[1:4]—1/20/5/8/1/20/1,a/b為兩個特殊信號。
將樹型結構、基于哈希的元數據存儲方法和基于元數據分級系統對存儲的寫信號與實際信號進行對比分析,以此判斷存儲效果,3 種方式寫信號對比結果如圖5 所示。
由圖5 可知,在樹型結構下,SOC_ADR[1:2]、SOC_ADR[1:3]寫內容與實際不一致,且無特殊寫信號;使用基于哈希的元數據存儲方法,SOC_ADR[1:3]寫內容與實際不一致,其余均一致,且存在特殊寫信號;使用基于元數據分級的元數據存儲系統,寫內容與實際內容一致。

圖5 3種方法寫信號對比分析
3.2.3 讀操作
針對讀信號操作,設SOC_ALE 為離散地址信號,以該信號為基礎,實際讀內容為:SOC_ALE [2:1]—1/6/4/2/0;SOC_ALE [2:2]—1/a/b/b/b—1/b/b/b/b;SOC_ALE[2:3]—1/a/a/a/a—1/b/a/a/b。
將樹型結構、基于哈希的元數據存儲方法和基于元數據分級系統對存儲的讀信號與實際信號進行對比分析,以此判斷存儲效果,3 種方式讀信號對比結果如圖6 所示。

圖6 3種方式讀信號對比分析
由圖6 可知,在樹型結構下,SOC_ALE [2:2]、SOC_ALE[2:3]讀取內容與實際不一致;使用基于哈希的元數據存儲方法,在SOC_ALE[2:3]讀內容后半部分與實際內容一致,前半部分及SOC_ALE [2:2]內容與實際不一致;使用基于元數據分級的元數據存儲系統,讀內容與實際內容一致。
通過上述分析結果可知,文中系統寫、讀數據與實際內容一致,說明該系統存儲效果較好。
采用SATA 硬盤技術,能夠有效避免外界環境干擾,有效提高了數據傳輸效率,縮短元數據存儲時間,解決了傳統方法存在的傳輸時間長的問題。同時,使用FPGA 控制模塊實現的電子數字文獻保存的元數據存儲系統具有良好擴展性,有效提高了串口轉換效率,大大提高了數據存儲速度和備用功能。