Windows Azure的数据存储和性能比较(二)

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.查询性能曲线如下图,查询的性能似乎还令人欣慰。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值