在處理龐大的數據集合時,你一定不想要耗費大量系統資源來檢索所有的文件才查找得到你想要的信息。對象存儲,與其特有的識別符,很大程度上簡化了這個過程。
在對象存儲體系架構的最底層,所有的數據仍以塊存儲的形式加以存放。對象存儲作為塊存儲的上層,包含了數據(即包含所存儲信息詳細描述的元數據)以及獨有的識別符,將其封裝成為特定的對象。由于對象存儲的邏輯結構位于塊存儲之上,它與下層的硬件層無關,于是便可使用任何x86處理器、內存、磁盤驅動器以及固態閃存,而不需要專屬硬件來支持特定的對象存儲。事實上,絕大多數對象存儲都運行在消費級的產品上,或使用白殼機配合硬件與固態閃存。
一個對象存儲體系架構通常包含了海量的元數據。常見的元數據包括安全策略,即諸如控制對象訪問權限以及對象加密與否的信息、數據保護政策或管理策略。
對象并不會像文件存儲或NAS中的文件那樣用索引來組織;相反,它們只需存儲在非等級尋址空內(Fat Address Space)。對象的定位與操作經由其獨特的識別符與元數據完成。這與傳統的數據塊存儲截然不同,在塊存儲中,數據被放置在系統中實際物理存儲的位置,或者文件位置可以通過集中化的文件目錄重新指向。
對象存儲更適合于大型的數據集合
對象存儲體系架構中的非等級尋址空間使其較傳統的NAS或SAN 存儲系統更適合大型數據的存儲。NAS系統中單一文件的檢索會涉及到一次詳細搜索——通常被稱為文件遍歷(File Crawl)——完整的索引才能找出某個文件。該過程消耗了文件系統的大量資源,會影響到所有的讀寫操作,而且系統耗費的時間會隨著文件系統的擴展而顯著提升。隨著系統存取需求提高以及文件數量的增大,文件索引的方式會在某個時刻到達瓶頸。
對象存儲的檢索明顯會來得更快,因為其只會搜索唯一識別符和元數據。由于不需要遍歷整個文件系統或索引,對象存儲的擴展性更強,對性能的影響則更低。
絕大多數的對象體系架構在標準的RESTful應用程序接口之外都有相應的文件接口,例如NFS、SMB以及Hadoop分布式文件系統(HDFS)。這使得對象存儲可以像NAS那樣讀寫數據,同時保持自身的優勢。HDFS接口使得對象存儲成為Hadoop方案中更具成本效益的體系架構。
對象存儲的上述差異性使其更為以下多種應用環境中更具成本效率的方案,包括了:
冷熱數據的歸檔
檢索
分析
備份
合規文檔
社交媒體
文件分享
云存儲
用簡單構想一下就能理解為什么對象存儲會成為大部分云存儲供應商的首選數據存儲模式,包括Amazon的Web Services、Google、IBM的SoftLayer、Microsoft的Azure和其它許多服務商。
對象存儲提升了數據保護等級
對象存儲中的海量元數據與非等級存儲池結構使其成為糾錯碼的理想選擇。糾錯碼需要相當多的元數據,但其比傳統RAID方式來防護磁盤或硬件故障更加經濟且更具彈性。糾錯碼將數據松散地分解存儲在一系列對象中,稱之為數據寬度(Width)。閱讀取回數據只需要找到數據寬度的一個子集,稱之為數據廣度(Breadth)。當數據廣度可以被讀取到時就代表著元數據可以被訪問到,這時便無需獲取到整個數據寬度來得到完整的數據。
假如不能閱讀到所有的對象說明在讀取過程中發生了錯誤。數據本身并不受影響。這時會重新創建新的對象來替代那些讀取失敗或無法找回的部分。在占用冗余存儲量角度看,糾錯碼比RAID或鏡像復制更有效率。
隨之多處硬件并發故障的情況日益增多,所需的保護等級也逐漸提升。這里舉一個例子,假如數據需要足夠的容錯性來防止6個硬件同時出錯的情況,用多鏡像復制的方式需要7倍的復制量,即占用額外600%的冗余存儲空間;RAID壓根無法提供7位的奇偶校驗,你最多只能選擇RAID 6來實現三重校驗并對整個RAID進行鏡像復制。這種配置方式需要大致2.5倍的復制量,即占用額外150%的冗余空間。此外,這還會大幅降低存儲性能,尤其在發生重構的時候。對象存儲體系架構用糾錯碼的方式,20位的數據廣度占用26位的數據寬度,或者要性能更好的話,用16位的數據寬度代表10位的數據廣度,這會占用額外30%~60%的存儲空間,即1.3到1.6倍的冗余量。在達到同樣硬件保護級別上這是巨大的成本差異。