本文讲的是Windows Azure Storage概览,【IT168 资讯】Windows Azure由两个重要部分构成:
虚拟化计算服务(提供基于VM主机。在上一篇里已经示范过它。)
各种数据存储服务。即本文要介绍的Windows Azure Storage。
Windows Azure Storage可以让程序员存储他们想存储的任何数据。按照“云计算”的概念,数据一旦存储到“云”中,就永远不会丢失,程序员可以在任何时候、从任何终端和任何地方获取任意大小的数据。Windows Azure Storage正是继续遵循这一思想。
Windows Azure Storage由三个重要部分构成:
Windows Azure Blob:存储大型数据
Windows Azure Table:存储表数据。类似关系数据库中的数据表,但不同。
Windows Azure Queue:为异步工作提供分派消息服务。有点类似Windows系统自身的消息队列。
接下来我们来以此介绍这3个数据服务。
Windows Azure Blob
刚才说过了,这个牛X的服务,就是用来存储大型的数据的。怎么样的数据算大型呢?文件!不知道你是否和笔者一样,刚看到这个服务时第一个反应就是:用它来做网络硬盘。
大家先别看“Block”部分。很一目了然吧? 一起继续YY: 如果Account是那块硬盘,Container就代表不同分区(可惜分区里没有文件夹概念),Blob就是分区根目录里不同的文件。那么上图的意思是:在我的那块叫做"sally”的硬盘里,有"pictures”和"movies”两个分区,"pictures”分区根目录里有"IMG001.JPG “”IMG002.JPG”这两个文件。
这块云端的无限大硬盘在哪里呢?怎样才能找到它?也很简单,它仍然采用Azure的管理,使用REST的方式操作它。地址是:
http://.blob.core.windows.net// 例如: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服务就是用来解决这个问题的。它可以直接将实体类、实体对象存入表格结构当中。它让太多的人感到欣喜。
它比较类似传统关系数据库当中的表格,但是又有很大不同。
与你想的一样,它支持LINQ, REST。HTTP地址是 http://.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就充当了这个“任务纸条”的作用。
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。
原文发布时间为:2009-06-12
本文作者:IT168.com