2、 Table儲存:它是以Key-Value的形式儲存資料,每條記錄允許的最大大小為4MB,記錄的行數沒有限制。
(1) Entity操作。Entity的操作是在從CloudTableClient得到的TableServiceContext(繼承自DataServiceContext)上進行的。添加、更新和刪除分別調用AddObject()、UpdateOjbect()和DeleteObject()方法,其中只有AddObject方法需要指定操作的表名稱,調用這些方法進行Entity操作後,都需要調用SaveChanage()方法儲存操作結果。
新增Entity的樣本:
CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount; CloudTableClient tableclient = storageAccount.CreateCloudTableClient(); tableclient.CreateTableIfNotExist("tabletest"); TableServiceContext context = tableclient.GetDataServiceContext(); context.AddObject("tabletest", new PersonInfo() { PersonID = "0", Name = "Tom", Age = 20 }); context.AddObject("tabletest", new PersonInfo() { PersonID = "1", Name = "Jerry", Age = 25 }); context.SaveChanges();
(2) Table記錄查詢。Table查詢是調用TableServiceContext的CreateQuery()方法,使用LINQ語句執行的查詢。
Table查詢樣本:
CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount; CloudTableClient tableclient = storageAccount.CreateCloudTableClient(); tableclient.CreateTableIfNotExist("tabletest"); TableServiceContext context = tableclient.GetDataServiceContext(); var query = context.CreateQuery<PersonInfo>("tabletest").Where(c => c.PersonID == "1").ToList(); var info = query.FirstOrDefault();
以上範例程式碼中用到的PersonInfo類型定義。
public class PersonInfo : TableServiceEntity { public string PersonID { get { return this.RowKey; } set { this.RowKey = value; } } public string Name { get; set; } public int Age { get; set; } public PersonInfo() { this.PartitionKey = "PartKey"; } }
(3) Table操作效能曲線
a.新增、更新和刪除記錄的效能曲線如。可以分析得知操作的記錄數和消耗時間是線性關係,但是100條資料就需要將近20秒的時間,有點可怕啊(這可能和操作的記錄大小和WebRole部署的雲端服務器所處位置都有一定關係)。
b.查詢效能曲線如,查詢的效能似乎還令人欣慰。