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、付费专栏及课程。

余额充值