Windows Azure数据存储与比较

对于绝大多数解决方案而言,数据都是至关重要的一部分,云计算中同样如此。在云计算里面,绝大多数传统存储的建议都可以直接拿来用,如数据冗余、数据加密等。但是云计算中的数据与传统的数据有所不同,主要体现在三个方面。

(1)数据可能存储在本地,也可能存储在云端

对于存储在本地的数据,如果云端服务需要连接,则可以通过建立不同的渠道来实现数据访问或者同步,如图所示Windows Azure中的数据同步技术。

  1. „ 网络与网络互联:IaaS中的Virtual Network实现本地网络和云端网络的无缝整合,云端数据和本地数据都将成为局域网内部的数据,通过传统的局域网通信方式即可实现数据访问和管理。
  2. „ 计算机间互联:IaaS中的Point-to-Site实现单台计算机与云端计算机的安全连接,支持基于IPv4的通信。
  3. „ 应用程序互联:Service Bus实现应用程序间的互联,数据可以通过Service Bus暴露或传递于不同平台上的应用程序之间。
  4. „ 数据同步:基于互联网和软件产品本身的数据同步,如SQL Server和SQL Azure的同步、本地Active Directory和云端Windows Azure Active Directory的同步。

(2)数据访问主要依赖于Internet,但数据访问和安全性要求极高

访问云端的数据或者通过建立云端连接来共享数据均需要保证数据安全性,Microsoft Azure中的数据服务大多数支持SSL通信加密,且提供多种不同安全级别的验证支持,对于SQL Azure和托管服务,开发者都可以自定义访问IP的“白名单”,实现更高级别的安全性保障。归纳起来,Microsoft Azure中的数据服务主要基于以下几个特性来实现数据安全:

  • „ SSL加密通信。
  • „ 使用用户名、密钥管理数据。
  • „ 使用SAS签名授权方式控制访问权限。
  • „ 基于ACS或者WAAD的登录授权。
  • „ IP白名单、黑名单。
  • 证书加密数据访问密钥等关键信息

(3)数据访问客户端运行于世界各地,访问速度很重要

云计算的数据可以存放在许多地方,而且WindowsAzure数据存储也是非常多样化的。为了实现高性能的数据服务,开发者可以选用最佳的数据存储/缓存来实践解决方案,同时对于公开的云端静态数据(如文件、视频等),选用较近的数据中心,并开启CDN加快访问速度。

选择正确的数据类型时,应充分考虑项目需求和数据上下游的交互压力,除了常用的文件存储和缓存技术之外,对于队列存储和表存储,开发者应仔细分析Queue Storage和Service Bus Queue、Table Storage和SQL Azure的对比,选择最佳的数据类型来实践。

如下表所示是Queue Storage和Service Bus Queue的对比。

服务特性

Queue Storage

Service Bus Queue

先进先出

不保证

保证

数据传输

至少传输一次

至少传输一次,至多传输一次

队列大小

最大可至200TB

最大不超过5GB

访问方法

读取 --> 独享 --> 删除

锁定 --> 读取 --> 删除

锁定时长

(lease)默认30s,最多为7天

(lock)默认60s,RenewLock API支持不断更新

锁定粒度

消息

整个队列

批量读取

支持,单次最多读取32条消息

支持,pre-fetch属性实现批量读取

批量写入

不支持

支持

读写效率

最优2000条消息/秒,平均延时10ms

最优2000条消息/秒,平均延时100ms

存储成本

经济

一般

  

如下表所示是Table Storage和SQL Azure的对比。

服务特性

Table Storage

SQL Azure

关系型数据存储引擎

不是

服务端处理

不支持

支持存储过程、联合、触发器等

批量读取

同一个索引区支持

全库支持

数据表结构

动态定义

固定定义

数据形式

固定有限量数据类型

多种数据类型,且支持自定义类型

存储成本

经济

一般

 

结合上述数据特性和前面讨论的Microsoft Azure开发技术,对于常用的数据共享和数据服务,作以下分析和对比(如下表)

数据形式

数据使用方

解决方案

数据公开(互联网访问)

备注性能

数据通信

云端服务、本地服务、跨平台服务等

Service Bus Queue、Service Bus Topic

公开

实时传输,先进先出

数据通信

云端服务、本地服务、跨平台服务等

队列存储(Queue Storage)

公开

高并发、不保证先进先出

数据通信

云端服务、本地服务、跨平台服务等

托管式缓存(Managed Cache Service)

公开

数据缓存

数据通信

托管服务

In-Role Cache

不公开

托管服务内部使用

 

数据形式

数据使用方

解决方案

数据公开(互联网访问)

备注性能

数据通信

托管服务

Internal Endpoint、WCF服务

不公开

托管服务内部通信

数据通信

虚拟网络

虚拟网络、局域网通信

不公开

虚拟网络内部的托管服务、虚拟机、本地网络间的局域网通信

数据存储

云端服务、本地服务、跨平台服务等

Blob Storage

公开

文件存储

数据存储

托管服务、IaaS虚拟机

Blob Storage (页式)

不公开

托管服务虚拟机或者IaaS虚拟机加载成本地磁盘

数据存储

云端服务、本地服务、跨平台服务等

Table Storage

公开

非关系型数据存储、非固定数据结构类型的数据存储

数据存储

云端服务、本地服务、跨平台服务等

SQL Azure

公开

云端关系型数据库引擎

数据访问

云端服务、本地服务、跨平台服务等

账户名+密钥

公开

应用于WAS存储、SQL Azure存储、Managed Cache

数据访问

托管服务

指定Cache Role名称

不公开

In-Role Cache

数据访问

云端服务、本地服务、跨平台服务等

签名授权访问(Shared Access Signature)

公开

应用于WAS存储、Service Bus消息

数据访问

云端服务、本地服务、跨平台服务等

直接访问

公开

应用于CDN,设定为Public的WAS存储内容

数据访问

云端服务、本地服务、跨平台服务等

ACS、WAAD

公开

集成ACS、WAAD实现项目中的登录验证

数据可用性

托管服务

多个实例、Auto-Scaling

公开

负载均衡器实现高可用性

数据可用性

IaaS虚拟机服务

多台虚拟机、Load Balanced Endpoint

公开

负载均衡

数据可用性

云端服务、本地服务、跨平台服务等

CDN(数据传输网络)

公开

缓存静态文件

数据可用性

托管服务

Traffic Manager

公开

实现多个托管服务的对外统一服务

数据可靠性

托管服务

多个实例、Upgrade Domain

公共

提高托管服务可靠性

数据可靠性

IaaS虚拟机服务

Availability Set

公共

提高虚拟机服务对外可靠性

数据可靠性

WAS存储、SQL Azure存储、WAAD等

异域备份、数据同步、虚拟网络

不公开

实现数据备份、数据同步

 

 

 

数据形式

数据使用方

解决方案

数据公开(互联网访问)

备注性能

数据通信

托管服务

Internal Endpoint、WCF服务

不公开

托管服务内部通信

数据通信

虚拟网络

虚拟网络、局域网通信

不公开

虚拟网络内部的托管服务、虚拟机、本地网络间的局域网通信

数据存储

云端服务、本地服务、跨平台服务等

Blob Storage

公开

文件存储

数据存储

托管服务、IaaS虚拟机

Blob Storage (页式)

不公开

托管服务虚拟机或者IaaS虚拟机加载成本地磁盘

数据存储

云端服务、本地服务、跨平台服务等

Table Storage

公开

非关系型数据存储、非固定数据结构类型的数据存储

数据存储

云端服务、本地服务、跨平台服务等

SQL Azure

公开

云端关系型数据库引擎

数据访问

云端服务、本地服务、跨平台服务等

账户名+密钥

公开

应用于WAS存储、SQL Azure存储、Managed Cache

数据访问

托管服务

指定Cache Role名称

不公开

In-Role Cache

数据访问

云端服务、本地服务、跨平台服务等

签名授权访问(Shared Access Signature)

公开

应用于WAS存储、Service Bus消息

数据访问

云端服务、本地服务、跨平台服务等

直接访问

公开

应用于CDN,设定为Public的WAS存储内容

数据访问

云端服务、本地服务、跨平台服务等

ACS、WAAD

公开

集成ACS、WAAD实现项目中的登录验证

数据可用性

托管服务

多个实例、Auto-Scaling

公开

负载均衡器实现高可用性

数据可用性

IaaS虚拟机服务

多台虚拟机、Load Balanced Endpoint

公开

负载均衡

数据可用性

云端服务、本地服务、跨平台服务等

CDN(数据传输网络)

公开

缓存静态文件

数据可用性

托管服务

Traffic Manager

公开

实现多个托管服务的对外统一服务

数据可靠性

托管服务

多个实例、Upgrade Domain

公共

提高托管服务可靠性

数据可靠性

IaaS虚拟机服务

Availability Set

公共

提高虚拟机服务对外可靠性

数据可靠性

WAS存储、SQL Azure存储、WAAD等

异域备份、数据同步、虚拟网络

不公开

实现数据备份、数据同步