储存服务
Windows Azure存储服务在云中提供持久的、可持续的存储空间。最基本的存储服务包括:
•二进制大对象(Binary Large Object,缩写Blob)服务,用于存储文本或二进制数据。
•队列(Queue)服务,确保服务之间可靠的、持久的消息传递.
•表(Table)服务,用于可被查询的结构化存储。
•Windows Azure驱动器(Drive),允许Windows Azure应用程序挂接一个页面二进制大对象(Page Blob)。
Windows Azure SDK为使用存储服务提供了一个REST API和一个托管API(managed API)。你可以从Windows Azure里正在运行的一个服务去访问存储服务,或者直接通过互联网从任何能通过HTTP或HTTPS发送和接受数据的应用程序去访问。
欲了解更多关于为存储服务提供的REST API的信息,情参见Windows Azure存储服务REST API参考指南。欲了解更多关于为存储服务提供的托管API,情参见Windows Azure托管类库参考指南。
Blob Storage
初学者可以把blob比作文件系统。它确实和文件系统有非常多的相似之处。Blob Storage有两个概念:
•Container:可以类比成文件夹。
•Blob:可以类比成文件。
和文件系统一样,用户可以针对每个Container设置访问权限,可以对某个Blob进行加锁(Lease)从而防止Concurrency问题,还可以使用诸如创建,删除,复制,备份,等众多功能。
从存储结构上来说,Blog Storage提供了两种类型的Blob:
•Block Blob:其存储方式类似于传统的文件系统中的簇(Cluster)的概念。一个Blob被分成一个或多个Block进行存储。
•Page Blob:Page Blob对随机读写进行了优化,大家可以把它类比成大型文件,例如.vhd和.mdf文件。
欲了解更多关于Blob Storage的详细信息,请参见Windows Azure平台介绍的Blobs部分。
Table Storage
千万不要把Table Storage和关系型数据库(Relational Database)混淆起来。Windows Azure的Table Storage提供了一种结构化的存储方式。通俗来说,一个Table可以被想象成一个Xml文件。在Xml文件中我们存放各种各样的数据,在一个Table中我们也可以存放各种各样的Entity。同一个Table可以存储结构完全不同的两个Entity,这和关系型数据库中需要对每张表制定统一的结构(Schema)是不同的。
Table Storage的可变的Schema充分体现出了其灵活性。例如,你的业务需要扩展,需要往数据结构中添加新的字段,你可以在完全不修改Table Schema,完全不影响现有Entity的情况下,对新的Entity添加新的字段。如果你的程序可以被二次开发,第三方开发人员也完全可以在不影响你的程序所需要的Entity的情况下,在同一张表中存储他们的程序所需要的,结构不同的Entity。
欲了解更多关于Table Storage的详细信息,请参见Windows Azure平台介绍的Windows Azure Tables部分。
Queue Storage
Queue Storage提供了一种先进先出的存储方式。它通常被用于各种不同的程序间的通信。例如一个经典的应用场景:Web Role接受用户请求,针对每个请求,在一个Queue中创建一条消息(Message)。Worker Role则不断的从Queue中取出消息,并且一一处理。
欲了解更多关于Queue Storage的详细信息,请参见Windows Azure平台介绍的Windows Azure Queues部分。
Drive storage
Drive Storage让开发人员能够使用标准的NTFS API读写文件。一个Drive可以被挂接(Mount)到某个特定的实例上,当作该实例对应的虚拟机的一块硬盘使用。由于Drive在后台是由Page Blob实现的,因此你往Drive中写入的文件也会自动被写入后台的Page Blob。这样一来数据便得到了持久化,即使万一运行当前实例的虚拟机出了问题,你还可以在其它实例中再次挂接这块虚拟硬盘,数据并不会丢失。
需要注意的是,一个Drive在同一时间只能被单个实例挂接。如果你需要在不同的实例中同时访问文件,还是推荐使用Blob。Dive更常被用于移植现有的那些需要执行大量I/O操作的程序。
欲了解更多关于Queue Storage的详细信息,请参见Windows Azure平台介绍的Windows Azure Drives部分。