Windows Azure Storage (6)

2022-04-24 00:00:00 数据 代码 设置 复制 行数

  近想了想,还是有必要把Windows Azure Table Storage 给说清楚。

  1.概念

  Windows Azure Table是存储在云端的非关系型数据表,主要存储结构化数据,简单理解上来是类似SQL Server的一张单表,包含了列名和行数据,但是无法执行关系型运算(e.g. inner join)。在某些场景,比如只纪录系统运行日志、用户操作日志等场景下,比较适合使用Table Storage。

  使用Table Storage,除了设置账户信息(Account Name和Access Key)以外,还需要设置TableName。TableName就是存储的数据表。(比如我可以使用Product来存储产品信息数据,使用Client来存储用户信息数据,这个概念和SQL Server非常类似)。

  Table Service 主要是存储结构化数据的,所有的数据都是一个个 Entity,多个 Entity 在一起作为一个 Table。而每一个 Entity 中多包含 255 个 Property。每个 Property 以键值对(Key-Value Pair)的方式保存,Key 是字符串类型而 Value 可以是任意的.NET 标准类型,比如字符串、整型、日期等。但是,Storage Service 要求每一个 Entity 必须包含下面三个 Property:Partition KeyRow Key和 Timestamp

  -PartitionKey设置了Table中数据的分区规则。比如下图中

  


  前2行数据具有相同的Partition Key,名为Examples Doc那前2行数据在物理存储上是在同一个存储节点上(比如同一个磁盘上)。

  后2行数据具有相同的Partion key(FAQ Doc)。那后面3行的数据在物理存储上也是在同一个存储节点上的(可能与上面的Example Doc存储在同一个节点上)

 

  这样的架构设计好处在于:

  1.当存储在Table中的数据访问量少的时候,Windows Azure会把Example Doc的数据和FAQ Doc的数据放在同一个存储上。

  2.当访问FAQ Doc的用户逐渐增多的时候,Windows Azure会把FAQ Doc的数据单独迁移到某一存储上,加快访问速度。

 

  -RowKey 是识别Table 行数据的标识符

  对于相同的Partition Key的行数据来说,他们的RowKey必须是的。

  一般情况下,我们可以使用GUID来设置RowKey。

 

  Partition Key 和 Row Key 可以作为 Entity 的联合主键。

 

  -TimeStamp

  DateTime类型,这个属性是由系统维护的,用户无法修改。表示该行数据的后操作时间。

   

  2.我们使用管理员身份运行VS2013。新建Cloud Project,并且重命名为AzureStorageTable

  


  3.添加ASP.NET Web Role

  


  4.展开AzureStorageTable,展开Roles,右键WebRole1。在Settings添加StorageConnectionString,并设置相应的Value

  


  5.在WebRole1 Project中,修改Global.asax.cs代码如下:

相关文章