顯然,對象存儲對于不同的人意味著不同的事情,所以它缺乏一個公認的定義。要分析什么樣的存儲系統屬于對象存儲,就要看這些屬性,它們既是必須的,同時又支持的很好。
對象。不是要管理塊和文件,純粹的對象存儲系統管理的是對象。更精確的講,所有現在的對象存儲系統把文件作為對象來管理。對象通過唯一的ID進行標識,就像在基于文件的存儲系統中,文件通過路徑來標識一樣。對象存放在扁平的地址空間中,這樣可消除基于文件的存儲系統中,分層的文件系統的復雜性和擴展性的挑戰。
元數據。對象由元數據(可提供對象中數據的上下文關系信息)、有效負載和實際數據組成。在基于文件的存儲系統中,元數據僅僅是指文件的屬性;對象存儲系統中的元數據可以添加任何客戶化的屬性。基于文件的存儲系統要做到這一點,需要應用程序(數據庫)處理文件相關的其它額外信息。利用客戶化的元數據,你可以把和一個文件(對象)相關的所有信息都保存在對象自身內部。“客戶化元數據允許建立豐富的、自包含的文件對象,可以存儲在對象存儲內部,能夠以較少的管理開銷建設大規模的非結構化數據存儲,”Terri McClure說,馬薩諸塞州米爾福德的企業策略集團(ESG)的高級分析師。
固定對象。純對象存儲代表一個固定內容的倉庫;這意味著對象可以被創建、刪除和讀取,但不能被修改。相反,對象的修改是通過創建一個新版本的對象來實現的。因此,鎖定和多用戶訪問的挑戰——基于文件的存儲系統所棘手的問題——在對象存儲系統中是不存在的。“如果多個用戶同時修改同一個文件(對象),對象存儲系統會簡單的生成這個文件的多個版本,”Tim Russell說,NetApp公司Data Lifecycle Ecosystem Group副總裁(VP)。不支持就地更新,使對象存儲更加適合分布式的存儲和分布式的訪問。
冗余性。對象存儲通過在多個節點上存儲相同對象的多個副本實現冗余性和高可靠性。在創建對象的時候,它首先由一個節點創建,隨后根據適當的策略復制到一個或多個其它節點。節點可以部署在同一個數據中心,也可以是地理上分開的。由于不支持就地更新,使得多節點副本對象冗余的復雜度很小。對于傳統的存儲系統,保留拷貝(復制)的文件和塊的同步訪問的多個實例是一個巨大的挑戰;這是非常復雜的,只能夠通過設置嚴格的限制條件實現,例如在定義好的延遲約束之內。
協議支持。傳統的基于塊和基于文件的協議在數據中心工作的很好,性能優良,延時也不是問題。但它們并不適合地理上分開的訪問方式,且由于延時不可預知,所以也不適合構建云。此外,傳統的文件系統協議(CIFS和NFS)利用TCP端口進行通信,這些只在內部網絡可用,很少出現在互聯網上。相反,對象存儲通常通過基于HTTP協議的REST API訪問。命令通過HTTP發送到對象存儲的方式非常簡便:put用來建立一個對象,get用來讀取一個對象,delete用來清除對象而list用來列出對象列表。
應用軟件支持與集成。由于缺乏傳統的數據存儲協議的支持,因此依賴REST API需要成為訪問對象存儲的一體化努力。除了客戶化應用程序集成,一些商業應用,特別是備份和歸檔應用,已經增加了對于對象存儲集成的支持,主要連接到Amazon S3云存儲。由于業界仍然在爭論標準,對象存儲的集成仍然沒有得到廣泛的推廣。對象存儲網關,通常叫做云存儲網關,提供了另外一種訪問對象存儲的方式。其定位于傳統存儲和對象存儲之間,它們通常通過預定義的策略構建在兩者之間。
云功能。因為云存儲和WEB 2.0應用是對象存儲的核心目標,因此通過互聯網進行共享訪問的相關功能是非常重要的。多租戶和不同用戶數據的安全隔離,對于用于企業應用的對象存儲產品是必須的功能。安全性不僅僅是指加密,還包括對于租戶、命名空間以及對象訪問的控制。服務水平協議(SLA)管理和支持多種服務級別對于云的使用也非常重要。策略引擎可以幫助SLA的執行,例如對象實例的數量和每個實例應該存儲到哪里,這是一個任何對象存儲都應該提供的設備。此外,使用云的計量和收費的自動跟蹤是必不可少的。
用例。純粹的對象存儲并不適合用于交易數據頻繁變化的情況,例如數據庫。它也沒有設計成用來替代NAS的文件共享;它只是簡單的做到了沒有鎖機制,而且通過提供文件的多個不同的版本實現單個“真實”文件的共享。對象存儲在經常變化的非常大的非結構化數據存儲中工作的非常好,也可作為不活躍數據的交易存儲層之外的存儲層,或者是歸檔存儲。在云空間中,它適合用于文件內容,特別是圖像和視頻。“今天,對象存儲適用于媒體、娛樂和醫療行業等后處理類型的數據,包括歸檔,”Jeff Lundberg說,他是日立數據系統公司(HDS)的高級產品市場經理。“而隨著性能的不斷提升和功能的不斷完善,它不僅僅可以支持云存儲,而且會適用于分散的IT環境。”