本文着重从架构上介绍SQL Azure的数据库使用方式,关系型数据的组织方式以及数据连接方式。

SQL Azure服务模型的设计有两个目的,一方面满足大规模数据和低成本使用的要求,另一方面是为管理人员和开发人员提供熟悉的环境。这主要体现在以下提供的分级服务供应模型上。

Windows Azure平台账户

要使用SQL Azure, 先要创建一个Windows Azure平台账户。使用该账户,你可以使用Windows Azure平台上的各种功能。该账户也同时作为计费账户来计算所有在Windows Azure平台运行的各种服务的费用。

SQL Azure服务器

每个Windows Azure账户下可以创建多个SQL Azure服务器。这些服务器的创建方式不同于SQL Server实例。你可以把这里的SQL Azure服务器看成是一个逻辑上的概念,它实际上是针对底层多台SQL Azure服务器进行供集中式管理的接口。和本地SQL Server实例一样,每个SQL Azure服务器都有登录名,另外你还可以为SQL Azure服务器指定所在的物理区域。

你可以使用SQL Azure门户网站来创建和管理你的数据库服务器。门户网站提供了方便易用的用户界面可以帮助你轻松创建登录名和数据库。

SQL Azure数据库

每个SQL Azure数据库服务器可以包含多个数据库。对于一个新建的数据库服务器而言,它只有一个master数据库,这跟本地部署的SQL Server实例非常类似。在每个数据库里,你可以创建多个表,视图,索引,存储过程以及其他熟悉的数据库对象。你可以通过SQL Azure门户网站创建新的数据库,也可以用Transact-SQL语句CREATE DATABASE创建数据库。

SQL Azure数据库以多份数据分区形式分布在SQL Azure数据中心的多台物理机器上。这种架构既提供了自动切换的功能也提供了负载均衡的功能。客户数据分布在SQL Azure指定地理位置的多台物理服务器上。通过这种方式,不管是对大型还是小型应用程序,不需要过多的管理工作,SQL Azure数据库都可以实现高可用性和稳定性。

 

关系型数据库模型

对于SQL Azure而言一个重要的目标是为数据库程序员提供熟悉的开发环境。因此你在SQL Azure数据库中可以跟那些在SQL Server中一样创建对象。这包含:

表,视图,索引,存储过程和触发器

SQL Azure和SQL Server一样都是用Transact-SQL语言进行数据库的创建和数据操作。数据库开发和管理人员因此能够根据他们现有的经验立即在SQL Azure上展开工作。

 

数据访问架构

SQL Azure为云端的数据库提供一个TDS Endpoint。和本地部署的SQL Server一样都是用TDS网络通信协议,因此一个桌面客户端程序可以像连接本地SQL Server实例一样连接SQL Azure数据库。你的应用程序可以使用ADO.NET, ODBC或任何你喜欢的数据库访问技术。查询依然是通过T-SQL语句。为了确保安全性,客户端到SQL Azure数据库TDS Endpoint的连接都通过SSL。

在桌面客户端程序/SQL Azure数据库的场景中,你必须考虑到云中可能导致的延迟并且在客户端代码中进行处理,者是因为在这种情况下,延迟的可能性明显地要比本地连接方式高。避免延迟的一种方式是为你的数据库应用程序创建一个基于Web的用户接口,并将其部署在Windows Azure上。用户可以通过浏览器访问这个程序。这样,客户端的代码和数据都被部署在同一个数据中心,因此延迟很低。你也可以对Windows Azure中部署的数据驱动的Web站点应用这种架构。

SQL Azure还支持另一种架构,你可以使用ADO.NET和Entity Framework创建应用程序逻辑,并将其部署在Windows Azure中。然后,你可以使用ADO.NET Data Services以SOAP, REST或JSON接口服务的形式发布该应用,并创建一个轻量级的客户端应用程序使用数据服务。

通过这种方式,你避免了应用程序和SQL Azure中的延迟,但是你仍然要为你的数据提供一个基于互联网的服务接口以方便在因特网应用程序或桌面解决方案中使用。

 

安全模型

SQL Azure提供了同SQL Server同样的SQL Server验证方式。您可以使用SQL Azure服务器的登录名,数据库用户以及数据库角色进行访问授权,并强化数据安全。

 

横向数据库扩展

您可以在SQL Azure存储KB乃至TB级的数据。然后,由于单个数据库最大限制在50GB,要存储超过50GB的数据,你必须将数据集分割到多个数据库中并进行并行查询进行数据访问。

Data Sharding是一种被许多应用程序所使用的技术,能够提高性能,增强伸缩性和降低成本。有些应用程序非常适合分割因为他们有自然的分割边界。

尽管关于使用Data Sharding的好处已有充分的说明,但是很少有提到当有几十乃至数百台服务器时进行分布式数据库管理的成本问题。SQL Azure为那些需要几十乃至数百个数据库的应用程序提供了基础架构却不需要额外的管理开销。应用程序可以将大的数据集分成多个数据库而不需要面对各种各样的成本和资金问题。提供和使用三百台数据库和三台数据库都一样简单。保持数百台机器协同工作并具有高可用性的管理压力都由SQL Azur承担。

除此之外,SQL Azure对于应用程序的扩展也提供了足够的弹性。在需求变化时,可以根据需要增加或减少数据库的数量。客户不需要对未使用的资源进行支付。

即便对于一个数据量较小但处理器要求较大的应用程序来说,它仍然可以通过并行访问资源获得分区带来的好处。

尽管上面提到的方式很值得尝试,但在决定使用横向扩展的数据库策略时必须要小心因为它可能增加应用程序代码的复杂性,也未必适合每个应用程序。

 

部署

通过使用T-SQL, 可以在SQL Azure中创建或填充一个数据库。然而,大部分情况下,开发人员或数据库管理员会在本地机器上设计和填充数据库。当应用程序完成的时候,数据库再被部署到云中。

为了部署一个数据库到SQL Azure中,你可以在SQL Server Management Studio中使用”Generate Script Wizard”来创建T-SQL CREATE DATABASE的脚本。你也可以运行T-SQL脚本来创建SQL Azure数据库。

SQL Azure的地理位置信息是在SQL Azure服务器层面设置的,因此为了在一个特定的区域部署数据库,你应该在那个地理位置创建一个新的SQL Azure服务器,连接它,然后运行数据库的脚本进行部署。