Blob數(shù)據(jù)類型存儲二進制數(shù)據(jù),可以存儲大型的無結(jié)構(gòu)數(shù)據(jù),容量巨大,能夠滿足海量數(shù)據(jù)存儲需求。Table數(shù)據(jù)類型能夠提供更加結(jié)構(gòu)化的數(shù)據(jù)存儲,但是它不同于關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的二維關(guān)系表,查詢語言也不是大家熟悉的關(guān)系查詢語言SQL。Queue類型的作用和微軟消息隊列(MSMQ)相近,用來支持在Windows Azure應(yīng)用程序組件之間進行通信。
Windows Azure Blob
Windows Azure Blob用來存儲大型數(shù)據(jù)對象,用于構(gòu)建重量級、可擴展的應(yīng)用程序。 Blob分層分塊管理數(shù)據(jù),這樣管理數(shù)據(jù)有很多好處,.比如可以對數(shù)據(jù)建立索引,根據(jù)一 定的算法可以方便地對所要査找的數(shù)據(jù)定位,當數(shù)據(jù)傳送失敗或產(chǎn)生錯誤時,可以用最近 的—個塊來進行重傳,而不必傳送整個Blob。Blob還提供了對數(shù)據(jù)信息進行描述的元數(shù) 據(jù)機制,可以更好地對數(shù)據(jù)進行管理。
Blob數(shù)據(jù)模型
Blob中的所有數(shù)據(jù)資源以URI (統(tǒng)一資源標示符)的方式標記,它具有層次結(jié)構(gòu)的命名空間,URI形式如下:http://,blob.core.windows.net//,對所有存儲資源的訪問必須通過一個存儲賬戶,Blob對象也不例外,最高層為存儲賬戶(Storage Account),被指定為URI的第一部分。一個存儲賬戶能夠擁有一個或多個容器(Container),每個容器擁有一個或多個Blob,每個Blob數(shù)據(jù)容量可以高50GB (每個Blob還可以分成若干Block),每個Blob還可以包含數(shù)據(jù)的元數(shù)據(jù)信息。
對于數(shù)據(jù)的安全性,系統(tǒng)提供了訪問控制策略,Windows Azure Blob對容器設(shè)置了共享策略,目前系統(tǒng)提供了Public READ和Private兩種策略修飾符,前者表明該容器的內(nèi)容不需授權(quán)就可以被任何應(yīng)用程序訪問,后者表明只有賬戶的所有者可以通過授權(quán)訪問。對容器中的數(shù)據(jù),可以建立相應(yīng)的元數(shù)據(jù),元數(shù)據(jù)以〈name, value>對的形式表示。
每個容器最多有8KB的元數(shù)據(jù)說明。Blob包含于容器中,同二份容器中每個Blob具有唯一的用字符串標識的名字。和容器一樣,它也具有相同形式的元數(shù)據(jù)。
Blob有以下兩種形式。
(1)Block Blob。每個Block Blob存儲容量可達200GB。為了方便存儲對象的轉(zhuǎn)移,每個Blob都被劃分為多個Blocks。在傳輸?shù)倪^程中如果發(fā)生錯誤,那么只需要將最近傳送的Block重新傳輸,一旦所有Blob Block都上傳完成,整個Blob能夠立即被提交。
(2)Page Blob。每個Page Blob存儲容量可以達到1TB。Page Blob可以被劃分為很多頁,每頁大小為512字節(jié),而且應(yīng)用可以任意地自由讀寫B(tài)lob中的單個頁。
Blob REST Interface
如果應(yīng)用程序要訪問Blob,可以利用系統(tǒng)提供的標準HTTP REST PUT/GET/DELECT接口,使用這些接口可以對Blob執(zhí)行如下5種操作。
(1)PUT Blob:插入一個新的Blob或替換給定的Blob對象。
(2)GET Blob:獲取整個Blob,或使用標準HTTP Range GET操作獲取Blob的指定部分。
(3)DELETE Blob:刪除一個Blob。
(4)COPY Blob:復(fù)制Blob。主要作用是在源Blob和目標Blob之間復(fù)制一個Blob。復(fù)制內(nèi)容包括Blob元數(shù)據(jù),屬性和Block列表。
(5)GET Block List:獲取Block列表。主要作用是檢索上傳Blob的Block列表。每個Blob均有兩類Block列表:一類是Commited Block List,指已上傳的作為PutBlockList一部分的Block列表;另外一類是Uncommitted Block List,指當前正在提交或尚未提交的Blocks列表。
使用PUT操作請求,一次最多可以上傳64MB的Blob到服務(wù)器托管到云端。如果用戶上傳大于64MB的Blob,Windows Azure Blob提供了Block接口來解決這一問題。該方法的主要思想是分割重組,主要分為以下幾步。
首先將需要上傳的Blob分割成連續(xù)的若干個Block,例如,一個4GB的電影可以劃分成1000個Block,每個4MB,每個Block具有一個唯一的ID,如“Block 1”、“Block 2”等。每個Block屬于特定的Blob,因此,同一個Blob的Block具有不同的ID,不同的Blob的Block可以具有相同的ID,每個Block的最大長度為4MB,且Block的大小是任意的,同一個Blob的Block的大小不必相等。
Blob數(shù)據(jù)被分割成更小的Block后,可以通過接口將每個Block上傳到云端,上傳時需要指明是哪個Blob的哪個Block。當所有的Block都上傳到Windows Azure Storage中后,提交上傳的Block的列表信息及其所屬的Blob,系統(tǒng)使用這些信息將這些Block重組成可讀的Blob,以便客戶端可以使用下面形式的URI完整地獲取該Blob。