通過構建Storage Explorer 應用學習

w95641331發表於2011-02-28

Windows Azure 平臺提供不同的儲存服務來儲存瞬態和持久態的資料:

無結構二進位制和文字資料Unstructured binary and text data
二進位制和文字訊息Binary and text messages
結構化資料Structured data
為了支援這些型別的資料, Windows Azure 提供三種不同的儲存服務: Blobs,Queues,和 Tables。
下表列出了三種儲存服務的異同:

儲存型別
 URL schema
 最大大小
 推薦 用途
 
Blob
 http://[StorageAccount].blob.core.windows.net/[ContainerName]/[BlobName]
 Block Blob:最大200GB
Page Blob:最大1TB
 儲存大尺寸二進位制和文字檔案
 
Queue
 http://[StorageAccount].queue.core.windows.net/[QueueName]
 8 KB
 在本地和雲端進行可靠的,持久態的訊息通訊。小尺寸二進位制和文字訊息
 
Table
 http://[StorageAccount].table.core.windows.net/[TableName]?$filter=[Query]
 資料表可以無限大。實體最大1 MB.
 由多個屬性組成的可查詢的結構化實體
 

本地和雲端各種大型客戶端應用都可以通過RESTful  介面無縫的訪問儲存服務。可以使用微軟,第三方或者開發技術來實現使用儲存服務的應用:

.NET Framework : 本地或 雲端.NET 應用通過Windows Azure SDK 中的Windows Azure Storage Client Library 來訪問儲存服務。
Java : Windows Azure SDK for Java  使得Java程式也能便捷的訪問Windows Azure儲存服務。該SDK 包含在Windows Azure Tools for Eclipse 專案中。另外, AppFabric SDK for Java  使得Java專案也能使用Windows Azure AppFabric 中的 service bus 和 access control服務。
PHP : Windows Azure SDK for PHP  使得 PHP 能夠訪問 Windows Azure 儲存服務。
更多儲存服務的資訊參見如下:

"About the Storage Services API " on MSDN.
"Using the Windows Azure Storage Services " on MSDN.
"Understanding Data Storage Offerings on the Windows Azure Platform " on TechNet.
Blob Service

Blob 服務提供二進位制檔案和文字檔案的儲存。通過Blob的 REST API 能夠訪問2種資源: Containers  和 Blobs 。容器可以看做包含多個檔案的資料夾,而blob便是屬於某個容器的檔案。有如下2種blob:

Block Blobs : 該型別用於流式訪問。
Page Blobs:  該型別用於隨機讀寫操作,能夠向blob中寫入一部分位元組。
容器和blob支援使用者定義的後設資料, 在請求操作的頭部填入相應的名值對 。使用 REST API,開發者可以建立和檔案系統類似的層次性命名。Blob 名可以加入配置路徑分隔符。舉例,MyGroup/MyBlob1  和 MyGroup/MyBlob2  意味著一個虛擬的組織層級。 Blob的列舉操作支援虛擬層級的遍歷。所以,你可以放回某個組下面的所有blob。例如,您可以返回MyGroup 下的所有blob。

Block Blobs  可以通過2種方法建立。 不超過64MB 的Block blobs 可以通過呼叫Put Blob 操作進行上傳。大於64 MB的 Block blobs 必須分塊上傳,每塊不超過4MB。當所有的分塊成功上傳之後,通過呼叫Put Block List 操作進行合併,成為單個連續的blob。Block blob目前最大支援200GB。

Page blobs  可以由呼叫Put Blob 操作來建立和初始化,支援最大尺寸。通過呼叫Put Page   操作,向page blob寫入內容。Page blob 目前最大支援 1 TB。

Blobs 支援條件更新,更多請參見:

"Understanding Block Blobs and Page Blobs " on MSDN.
"Blob Service Concepts " on MSDN.
"Blob Service API " on MSDN.
"Windows Azure Storage Client Library " on MSDN.
Queue Service

Queue 服務提供本地和雲端應用,或同一Windows Azure應用的不同role之間可靠的持久態訊息通訊。通過REST API  可以訪問2種實體: Queues  和 Messages . Queues 支援使用者定義的後設資料,在請求操作的頭部填入相應的名值對。每個儲存賬戶可以擁有無限的訊息佇列。每個訊息佇列可以擁有無數的訊息。單條訊息最大8 KB。當從佇列讀取訊息之後,消耗者應該處理該訊息,並隨後刪除它。訊息被讀取之後,在特定間隔內,對於其他消耗者是不可見的。當間隔到期,而訊息又沒有被刪除,其他消耗者便能訪問該訊息。更多請見:

"Queue Service Concepts " on MSDN.
"Queue Service API " on MSDN.
"Windows Azure Storage Client Library " on MSDN.
Table Service

Table 服務提供結構化儲存。Table 服務支援與 WCF Data Services  REST API 相容的REST API  。開發者可以使用.NET Client Library  for WCF Data Services 來訪問 Table 服務。一個儲存賬號內,開發者可以建立多個表。每個表由唯一的名稱和儲存賬戶標示。 Tables 將資料儲存為實體。一個實體便是由命名屬性和相關的值組成的集合。Tables 被劃分在不同儲存節點內,以便能夠支援負載平衡。每個表的第一個屬性: partition key,指明瞭該實體如何被劃分。 第二個屬性 : row key,能夠確定在某個分割槽內的實體。Partition key 和row key 結合可以作為實體的主鍵。任何情況下,都應該把tables當做.NET Dictionary  物件,而不是關係型資料庫內的表。實際上,每張table都是相互獨立的, Table 服務並不支援多張表的join操作��如果你需要完全的雲端關係型資料庫,可以試試SQL Azure 。另一不同是,table並不像傳統關係型資料庫那樣必須擁有schema。換言之,同一個table內的實體不必暴露相同的屬性。更多請見:

"Table Service Concepts " on MSDN.
"Table Service API " on MSDN.
"Windows Azure Storage Client Library " on MSDN.
"Understanding the Table Service Data Model " on MSDN.
"Querying Tables and Entities " on MSDN.
"Client Applications of ADO.NET Data Services " on MSDN.
Solution

在冗長而又必須的簡介之後,我們試著寫一些程式碼。在調研期間,我發現了幾個相當不錯的工具來管理Windows Azure 儲存服務的資料。其中,Neudesic  編寫的 Azure Storage Explorer  最為出色。既然要學習某個技術,最好便是能用其解決一些問題。我打算建立一個Windows Forms 應用來處理 to handle Windows Azure Storage Services: Blobs, Queues 和 Tables。下圖是應用的架構:

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/azurechina/archive/2011/02/25/6206932.aspx

相關文章