【Azure Services Platform Step by Step-第9篇】Windows Azure Storage概览

在本系列的第一篇【Azure Services Platform Step by Step-第1篇】INTRODUCING THE AZURE SERVICES PLATFORM里就介绍过了,Azure Services Platform包括4个部分。其中,Windows Azure是支撑整个微软云平台(Azure Services Platform)的基础。换句话说,Windows Azure是“云平台的操作系统”,它提供了云平台最基本、最重要的服务。

Windows Azure由两个重要部分构成:

  1. 虚拟化计算服务(提供基于VM主机。在上一篇里已经示范过它。)
  2. 各种数据存储服务。即本文要介绍的Windows Azure Storage

Windows Azure Storage可以让程序员存储他们想存储的任何数据。按照“云计算”的概念,数据一旦存储到“云”中,就永远不会丢失,程序员可以在任何时候、从任何终端和任何地方获取任意大小的数据。Windows Azure Storage正是继续遵循这一思想。

Windows Azure Storage由三个重要部分构成:

  1. Windows Azure Blob:存储大型数据
  2. Windows Azure Table:存储表数据。类似关系数据库中的数据表,但不同。
  3. Windows Azure Queue:为异步工作提供分派消息服务。有点类似Windows系统自身的消息队列。

接下来我们来以此介绍这3个数据服务。

Windows Azure Blob

    刚才说过了,这个牛X的服务,就是用来存储大型的数据的。怎么样的数据算大型呢?文件!不知道你是否和笔者一样,刚看到这个服务时第一个反应就是:用它来做网络硬盘。: )

   Windows Azure Blob的数据模型非常简单,看一眼就不会忘记。我们真的大可以把它想象成云端的一个无限大的硬盘。它的结构如下图:

 

image

    大家先别看“Block”部分。很一目了然吧? 一起继续YY:  如果Account是那块硬盘,Container就代表不同分区(可惜分区里没有文件夹概念),Blob就是分区根目录里不同的文件。那么上图的意思是:在我的那块叫做"sally”的硬盘里,有"pictures”和"movies”两个分区,"pictures”分区根目录里有"IMG001.JPG “”IMG002.JPG”这两个文件。

    这块云端的无限大硬盘在哪里呢?怎样才能找到它?也很简单,它仍然采用Azure的管理,使用REST的方式操作它。地址是:

    http://<account>.blob.core.windows.net/<container>/<blobname>

    例如:http://maheshwar.blob.core.windows.net/livesearchimages/AcacusDesert_EN-US1025081982.jpg (这是一张图片,点击链接可直接访问)

    现在可以继续解释上图中的“Block”了。既然是采用REST的方式,就是通过HTTP的方式,那么真正很大很大的文件,比如1G的电影,要直接传上去显然是一件非常困难的事。Block就是为解决这个问题而存在的。只要你心情好,你大可以把这个电影分割成1000个1M的Block来上传。Block对下载流程是透明的,下载者根本不知道也不用去知道它正在下载的文件被分成了多少个block。

   (事实上笔者真的用它做自用的网络硬盘,从开发和使用角度来说都非常方便,以后有机会我整理一下代码与大家分享一下)。

 

 

Windows Azure Table

    这个服务是很多人心中的最爱。

    正在使用VS200X来开发简单ASP.NET应用程序的时候,你会许和很多人一样有以下两个重要习惯:使用关系数据库(如SQL Server);数据库中的某些表直接对应程序里的实体类。你或许会使用代码生成工具,ORM工具,或者自己写三层架构来完成关系数据库to对象的映射。发现没,此时的你是多么希望能够直接将实体存入数据库当中啊!

    Windows Azure Table服务就是用来解决这个问题的。它可以直接将实体类、实体对象存入表格结构当中。它让太多的人感到欣喜。

    它比较类似传统关系数据库当中的表格,但是又有很大不同。先看下图的结构:

image

   与你想的一样,它支持LINQ, REST。HTTP地址是      http://<account>.table.core.windows.net

   这部分内容比较多,过几天我会单独使用一节的内容来做一个简单Demo讲解它的使用。

  

Windows Azure Queue

    Windows Azure Queue因为Windows Azure的服务架构而存在——这个一个需要消息队列的架构。

    我们在《【Azure Services Platform Step by Step-第7篇】别把Windows Azure当虚拟主机使——理解Windows Azure服务架构》里了解过,Windows Azure VM中是如何引入了Web Role和Worker Role这一非常创新的概念,从而脱离了普通虚拟主机,晋升为“云主机” : )

    Windows Azure Queue最常见的一个应用就是作为Worker Role和Web Role之间通讯的消息队列。

    再举个例子。Web Role是前台卖牛肉面的,Worker Role是后台煮牛肉面的。顾客只能接触到Web Role这个店员,它收集不同顾客的需求,保持先来后到的顺序记录这些需求到一叠纸条上递给大厨Worker Roler。大厨Worker Role带着口罩,什么话也说不出来,他的工作就是按顺序完成纸条记录的任务。Windows Azure Queue就充当了这个“任务纸条”的作用。

    理解完了“牛肉面”的例子,再看看下图结合一下“云计算”的实际吧。是不是很容易理解呢?

image

  

 

 

Windows Azure Table 与SQL Data Services 的重要不同之处:

   在实际开发中,这两者都是最常用的数据存储服务。

   博客园网友 montaque和老赵同志在《【Azure Services Platform Step by Step-第8篇】开发部署Azure留言板》一文的评论中一起讨论了Windows Azure Table和SQL Data Services的不同。

 

 

Windows Azure Table 旨在提供轻便快捷低成本的大规模存储数据,包含实体和属性。它不是关系数据库,所以不能提供类似SQL中joins的方法,也不能管理 foreign keys。

SQL Data Services旨在提供严谨的关系数据方法。

在当前的Azure版本中(Azure平台第一个版本,feasure还很不完善),如果开发者对joins或foreign keys等关系数据库的功能需求较大,你可以选择SQL Data Services,反之建议使用开发更为快捷的Windows Azure Table。

你可能感兴趣的:(windows)