謝華成,范黎林
XIE Hua-cheng1,FAN Li-lin2
(1. 信陽師范學院 網絡信息與計算中心,信陽 464000;2. 河南師范大學 計算機與信息技術學院,新鄉 453007)
隨著WEB2.0的應用和發展,一些新型互聯網應用,如社交網絡、博客(Blog)、個人視頻分享、個性化信息租用服務等應用不斷涌入人們眼簾,并逐漸成為人們生活的一部分。云計算為這些新型應用提供了計算手段,云存儲為這些應用提供了存儲方案。
目前,數以億計的網絡用戶通過個人電腦、智能手機等終端訪問Internet,據中國互聯網絡信息中心(CNNIC)在2012年1月16日發布的中國互聯網發展狀況統計報告中顯示,截止2011年12月底,中國網民突破5億,其中手機網民達3.56億,且同前期相比呈不斷增長趨勢[1]。網絡用戶在瀏覽信息的同時,產生了海量的格式多樣的新數據,在這些數據中,諸如文檔、音樂、圖片、視頻一類的非結構化信息占比相當大。面臨用戶端的日益膨脹和海量數據的持續產生,盡管高性能處理器已基本滿足了運算需求,卻對無限大的存儲空間和無限大的網絡帶寬需求力不從心。因此,在信息系統設計中,計算設計已經不再是應用的中心,而數據的妥善存儲和管理成為系統設計的焦點。
當前,互聯網中的數據包括非結構化數據和半結構化的數據,非結構化信息又以二進制文件為主。制約海量非結構化數據存儲的關鍵問題是,數據中心與異構終端間的數據共享程度不夠強,存儲系統的高并發讀寫能力欠缺,存儲系統的自由擴展比較困難。針對移動計算的海量存儲需求,深入研究非結構化數據的存儲發展過程,這有助于開發出具有高共享、高吞吐和高并發能力的網絡存儲系統。
傳統存儲技術中,文件系統是可持久存儲和管理數據的普遍手段。文件的管理方式主要有單機文件系統、網絡文件系統、分布式文件系統和高通量文件系統等。
在單機文件系統中,十億兆位字節文件系統(ZFS,Zettabyte File System)是應用較成功的典范,該系統由Sun公司于2005年11月正式發布,是針對ZB級數據存儲需求而設計的128位UNIX文件系統,ZFS引入“存儲池”的概念管理物理存儲空間,采用寫時復制事務模型來維護數據一致性。由于該系統不能跨越數據的物理位置,同時沒有妥善地解決數據傳輸通道的瓶頸問題,且系統復雜度較高,最終沒有得到推廣。
網絡文件系統(NFS,Network File System)的出現,使得跨平臺的非結構化數據共享成為可能,數據存儲通過遠程過程調用(RPC,Remote Procedure Call)機制實現,使遠程文件本地化,用戶存取遠程文件如同訪問本地文件一樣方便,但NFS的服務器架構過于單一,決定其擴展性受到局限[2]。
搜索引擎的出現,使得用戶得以免費獲取快速檢索信息的便利,這一便利是建立在海量存儲和海量計算基礎上的。為使用戶檢索到最新的信息,新增的非結構化型WEB快照數據需要及時存儲到服務器上,便于分析處理和建立索引,盡管此時已經出現基于高性能計算(High Performance Computing,HPC)的并行文件系統,然而成本高昂、當節點、網絡或磁盤陣列出現故障后需停機恢復,不適合在線維護。而后,Google公司提出一種基于集中式管理、分布式存儲的全新存儲架構,即Google File System(GFS),該架構將非結構化數據按64MB的粒度存儲于各子結點上[3]。這些系統與特定應用的耦合度高,表現出適應性差的缺點。
非結構化數據存儲技術與文件系統及其存儲技術的發展密切相關,更與數據庫的發展密不可分。使用與操作系統、數據庫系統無縫結合而形成的新型存儲技術取代傳統存儲解決方案是必然的。
傳統的關系數據庫在高并發讀寫、高吞吐率的海量數據存取、高可用性和高可擴展性需求方面表現得不盡如意。針對海量非結構化數據存儲管理難題,研究者致力于尋求一種可靠的、低成本的和易實施的存儲解決方案,在此情況下,出現了諸如Tokyo Cabinet、MongoDB、CouchDB等非關系型數據庫(Not Only SQL,NoSQL)[4]。NoSQL數據庫打破了傳統關系數據庫的事務一致性及范式約束,放棄了關系數據庫強大的SQL查詢語言,采用 NoSQL數據庫系統通常具有以下六個特性。 1)對多個服務器進行簡單的水平擴展即可實現吞吐量的提高; 2)具有在多服務間進行復制和分發數據的能力; 3)與SQL數據綁定相比,NoSQL的存儲調用接口和協議更加簡單; 4)傳統數據庫系統的事務處理具有四個特性:原子性、一致性、隔離性和持久性(Atomicity,Consistency,Isolation,Durability,ACID),為增強新型數據庫系統的可伸縮性,NoSQL系統放棄了部分ACID特性; 5)利用分布式索引和隨機存儲器實現高效的數據存儲; 6)具有動態添加新屬性和數據記錄的能力。 滿足以上特性的NoSQL數據庫比較多,大致可分為三類。一類是滿足較高讀寫性能需求的 MongoDB是一款基于JSON(JavaScript Object Notation)的非關系型數據庫,可將一個文檔或文件以BSON(Binary JSON)的格式存入其中。JSON是一種輕量級的數據交換格式,以一種特定的字符串表示JavaScript對象,這種交換格式易于閱讀和編寫,同時也易于機器解析和生成。BSON是JSON的二進制表示形式,同JSON一樣,支持內嵌的文檔對象和數組對象。 以BSON格式存儲的非結構化數據,在MongoDB數據庫中稱之為文檔(Document),每個文檔可理解為關系數據庫中的一條記錄(Record),若干記錄使用集合(Collection)統一管理,若干集合屬于同一個數據庫,如此一來,文件數據可直接存儲于數據庫中,其存儲結構如圖1所示,與關系型數據庫相比,其數據的邏輯結構對比如表1所示。 圖1 MongoDB數據庫邏輯結構 表1 MongoDB數據庫與關系數據庫邏輯結構對照 WEB2.0環境下,已出現過將視頻、音樂等二進制大對象直接存儲入RDBMS的存儲技術[5],但須以同構的記錄形式存儲,而MongoDB具有支持異構數據存儲的優點,是RDBMS所不能及的。因此,使用MongoDB可實現非結構化數據的統一管理[6]。 實現平臺的搭建包括兩個方面,一方面是選取合適的操作系統及開發環境,另一方面是正確安裝MongoDB數據庫,并使之正常工作。MongoDB數據庫的安裝相對簡單,它既可以命令行的方式運行,也可以Windows服務的方式運行,這樣就避免了手動啟動MongoDB的麻煩。由于MongoDB數據庫系統兼容性較強,可運行于Windows平臺或Linux平臺。通常,Windows平臺下的操作和控制更加直觀,且Windows下的軟件開發效率較高,因此,本研究選用了Windows Server 2003操作系統,配置了IIS6.0和.NET Framework 3.5,最后,運用Visual Studio 2008集成開發環境下的ASP.NET C#作為編碼工具。 以下為向MongoDB數據庫中寫入非結構化數據的算法流程。 以下為從 MongoDB中讀取非結構化數據文件的算法。 在探討了非結構化數據特征及現有存儲技術的基礎上,介紹了NoSQL數據庫的特性。結合NoSQL數據庫的一個范例MongoDB,詳細說明了MongoDB數據庫的存儲體系結構。隨后,在Windows Server 2003環境下搭建了MongoDB海量非結構化數據存儲網,并給出了在單結點中存檔和還原二進制文檔的具體算法。實驗證明,向MongoDB中存檔4MB左右的文件,性能最優,如果存儲更大文件,可采用MongoDB的GridFS存儲解決方案[7]。 在云存儲環境下,NoSQL數據庫存儲技術為海量數據管理提供了新的思路。同時,應該注意到NoSQL數據庫的發展時間較短,技術尚未成熟,盡管該技術表現出高性能、易部署、易使用、易存儲的特點,與傳統存儲技術相比,存儲系統的安全性和處理復雜數據關系能力,仍有欠缺。下一步將圍繞如何優化以MongoDB為基礎的存儲系統開展工作。 [1] 中國互聯網絡信息中心. 中國互聯網絡發展狀況統計報告[EB/OL]. (2012-1). http://www.cnnic.net.cn/dtygg/dt gg/201201/W020120116337628870651.pdf. [2] 王坤,王錦. 基于NFS V4協議的關系型數據庫部署[J].計算機工程,2011,37(1): 72-74. [3] 呂雪鋒,程承旗,龔健雅,關麗. 海量遙感數據存儲管理技術綜述[J]. 中國科學:技術科學,2011,41(12): 1561-1573. [4] 于戈,谷峪,鮑玉斌,王志剛. 云計算環境下的大規模圖數據處理技術[J]. 計算機學報,2011,34(10): 1753-1767. [5] 謝華成,張昆朋,范黎林,劉道華. 基于文件分割的二進制大對象存取算法[J].計算機應用,2011,31(10): 2612-2616. [6] 馬少兵,馬自衛. 數字圖書館私有云平臺的構建研究和應用開發[J]. 現代圖書情報技術,2011,204(4): 9-16. [7] 夏黎明. 云環境下數據關聯管理機制的研究及其在鐵路行業的應用實現[D]. 北京: 北京交通大學,2011.2.1 NoSQL數據庫特性
2.2 MongoDB存儲體系結構


3 MongoDB中非結構化數據存取實現
3.1 實驗平臺搭建與相關準備
3.2 寫入非結構化數據算法實現


3.3 讀取非結構化數據算法實現

4 結束語