Windows Azure Storage由三个重要部分或者说三种存储数据服务组成,它们是:Windows Azure Blob、Windows Azure Table和Windows Azure Queue。在本文中将给大家介绍Windows Azure Storage中的这三种存储服务、Visual Studio环境下配置和使用开发存储和Windows Azure Storage应用场景。

Windows Azure 存储服务的构成

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

Windows Azure Blob:存储大型数据。

Windows Azure Table:存储表数据,类似关系数据库中的数据表,但有所不同,将在后文中介绍。

Windows Azure Queue:为异步工作提供分派消息服务,有点类似Windows系统的消息队列。

它们的组成也可以使用图1来描述:

(1)Windows Azure Blob

在Windows Azure中使用存储服务最简单的方法是使用Windows Azure Blob。Blob存储二进制数据,如图像,XML文档,压缩文件和其它在容器内任意排列的字节。

Blob存储数据是通过一个简单的层级关系来实现的,每个账户Account下有一个容器,这个容器就是用户定义的一套只有一个属性的Blobs(Blob集合),容器不直接存储数据,每个Blobs包含了多个Blob。Windows Azure Blob存储数据和层级关系如图2所示:

Blob存储数据的地址是:

http://.blob.core.windows.net/

可以通过REST的方式来操作,也就是说可以通过如图1所示中的访问方式:Http/Https。在上传大文件的时候,我们可以先把大文件分割成多个Blob来上传,这样就解决了大文件上传的问题。Block对下载流程是透明的,下载者根本不知道也不用去知道它正在下载的文件被分成了多少个block。

注意在PUT Blob操作中你可以上传最大64MB的数据创建一个Blob,通过上传连续块可以创建大于64MB的Blob,块最大只能是4MB。

(2)Windows Azure Table

Blobs只能针对大容量二级制数据存储,它真是太“不结构化”了。为了保存和使用云应用程序中具有紧密的数据,如在云存储服务中存储一个对象,这个对象是有些自己的属性,其实这样的对象我们可以看成是示例或者实体,于是Windows Azure Table就派上用场了。Windows Azure Table可以直接将实体类、实体对象存入表格结构当中。

Windows Azure Table和SQL Server/SQL Azure的区别在于,Windows Azure Table是一种服务,旨在存储具有实体关系的数据,而不是关系数据库。Windows Azure Table 提供轻便快捷低成本的大规模存储数据,包含实体和属性。它不是关系数据库,所以不能提供类似SQL中joins的方法,也不能管理 foreign keys。事实上,一个单一的Windows Azure Table可以存储数十亿个实体,一个Windows Azure Table的大小能达到万亿字节,这是一个相当大的存储量。通过示例图3也可以说明这一点。

(3)Windows Azure Queue

Windows Azure Blob和Windows Azure Table都是用来存储和访问数据的。Windows Azure 提供了第三种存储服务——Windows Azure Queue,为异步工作提供分派消息服务,最常见的一个应用就是作为Worker Role实例和Web Role实例之间通讯的消息队列。有关Windows Azure Queue使用的示例我们将在应用场景来做描述。

不管在Windows Azure Storage中是使用Blob、Queue还是Table来存储数据,为了保证数据的安全,微软云计算服务平台至少会在同一数据中心三个独立的容器中存储Blob,Table和Queue,Windows Azure基于地理位置的功能允许你将数据复制到多个微软数据中心,增强灾难恢复能力,提高特定地区的性能。

Windows Azure Storage应用场景

在Windows Azure Storage应用场景里,我们更多是通过一些示例图或者实际应用的图来给大家介绍一些Windows Azure Storage的应用场景。

在如图4所示的应用场景中,用户通过Web Role实例访问Table里的数据,Web Role和Worker Role之间的消息传递是通过Queue来实现的,而Worker Role则访问了Blob里的大数据。

在图5所示的场景中,Web Role和Worker Role之间的消息传递是通过Queue来实现的,而Worker Role则访问了Blob里的大数据。

在图6所示的应用场景中,用户通过Web Role实例访问Table里的数据。

下面我们给出两个使用Blob和Table访问到的数据界面,如图7~8所示:

在图7中,我们可以浏览到Blobs里存储的二进制数据,默认状态下,这些数据是只读的,可以在上面的搜索条里对数据进行查找,也可以对文件下载,这是不是类似于FTP呢?

在图8中,使用Table存储了数据,每一行都标示了一个实体,每一列都标示了实体的一个属性。从存储看上去还是和SQL Server的数据表很类似的。同样,可以对数据进行过滤,而且还可以对数据进行刷新。

总结

Windows Azure Platform支持三种可扩展的持久化存储:非结构化数据(Blob)、结构化数据(Table)、应用程序和服务之间,或应用程序与服务之间的消息(Queue)。再结合Visual Studio的开发环境和应用场景,加深了大家对Windows Azure 存储服务的理解。

Azure Storage架构介绍的更多相关文章

  1. Microsoft Azure Storage架构分析

    Microsoft云存储服务分为两个部分,SQL Azure和Azure Storage.云存储系统的可扩展性和功能不可兼得,必须牺牲一定的关系数据库功能换取可扩展性.Microsoft实现云存储的思 ...

  2. Windows Azure Storage (20) 使用Azure File实现共享文件夹

    <Windows Azure Platform 系列文章目录> Update 2016-4-14.在Azure VM配置FTP和IIS,请参考: http://blogs.iis.net/ ...

  3. Windows Azure Storage (22) Azure Storage如何支持多级目录

    <Windows Azure Platform 系列文章目录> 熟悉Azure平台的读者都知道,Azure Blob有三层架构.如下图:(注意blob.core.chinacloudapi ...

  4. Windows Azure Cloud Service (12) PaaS之Web Role, Worker Role, Azure Storage Queue(下)

    <Windows Azure Platform 系列文章目录> 本章DEMO部分源代码,请在这里下载. 在上一章中,笔者介绍了我们可以使用Azure PaaS的Web Role和Worke ...

  5. Azure Storage 系列(四)在.Net 上使用Table Storage

    一,引言 今天我们就不多说废话了,直接进入正题,Azure Table Storage.开始内容之前,我们先介绍一下Azure Table Storage. 1,什么是Azure Table Stor ...

  6. Azure Queue Storage 基本用法 -- Azure Storage 之 Queue

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure File Storage 基 ...

  7. Azure File Storage 基本用法 -- Azure Storage 之 File

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基 ...

  8. Azure Blob Storage 基本用法 -- Azure Storage 之 Blob

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...

  9. Azure Table storage 基本用法 -- Azure Storage 之 Table

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...

随机推荐

  1. Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等

    一:函数式接口 1.函数式接口的概念就是此接口必须有且只能有一个抽象方法,可以通过@FunctionalInterface来显示规定(类似@Override),但是没有此注解的但是只有一个抽象方法的接 ...

  2. 如何在jsp和html页面上获取当前时间

    要想在JSP页面中获得当前时间并显示出来,首先得导入相关的Java包,然后创建Date对象. <%@page import="java.text.SimpleDateFormat,ja ...

  3. Codeforces Round#412 Div.2

    A. Is it rated? 题面 Is it rated? Here it is. The Ultimate Question of Competitive Programming, Codefo ...

  4. c简单的单向链表

    ps:list链表  node节点 在链表中节点就是一个个的结构体 堆空间由于在申请内存时,地址是随机的,所以要用链表的方式将其连接起来,但是链表头的地址要知道. 每个节点包含两个部分:数据区和地址区 ...

  5. _技巧_SublimeText_打开文件乱码解决

    macOS属于Unix分支,默认使用UTF-8编码,当从Window 或者其他Linux 或 Unix系统 拷贝文件过来,由于Window系统使用GBK或者GB2312中文编码,所以会出现乱码现象. ...

  6. 20155326 实验三 敏捷开发与XP实践

    20155326 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器 ...

  7. NoSQL数据库的分布式算法

    本文译自 Distributed Algorithms in NoSQL Databases 系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性 ...

  8. android 三种定时器的写法

    //两秒后执行new Handler().postDelayed(new Runnable() { @Override public void run() { --todo }}, 2000); -- ...

  9. poj 3321 单点更新 区间求和

    Apple Tree Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Java c ...

  10. C# 两个datatable中的数据快速比较返回交集或差集

    转自: https://www.cnblogs.com/lacey/p/5893380.html 如果两个datatable的字段完全一致的话,可以直接使用Except,Intersect //Exc ...