揭秘SQL Azure如何把数据平台送上云端前沿技术
当前,基于互联网的应用程序面对许多的挑战。用户期望能够使用任何设备,随时随地访问数据。然而数据的大小、数据的交互格式以及用户的访问规模可能随时变化。开发人员必须快速地构建和部署新的应用以满足这些不断变化的需求。使用传统的数据管理平台,需要持续不断地在服务器、操作系统、存储和网络上进行投资,以满足这些需求的增长与变化。
云中的数据库服务,例如微软的SQL Azure提供了全新的方法来应对这些挑战。SQL Azure的设计遵循了三条主要的特性:可扩展性、可管理性和开发的灵活性。
解析SQL Azure数据平台
SQL Azure是一个部署在云端的关系型数据库,它支持SQL Azure中绝大多数和开发有关的功能。作为一个部署在云端的数据库引擎,绝大多数的管理工作都由微软完成,因此不用担心任何诸如备份、集群等管理方面的问题,微软的服务许可协议(Service Level Agreement, SLA)确保了数据库服务器平均每个月将有99.99%的时间在线。也正是因为这点,目前暂时向用户没有暴露过多的管理功能。
SQL Azure除了提供了关系型数据库服务,同时还将提供更多数据相关的功能,例如数据同步、报表和商业智能。基于数据同步的功能,SQL Azure数据服务能够与本地的SQL Server数据库进行数据同步,在数据层面实现了传统应用于云端应用的整合与并存。
SQL Azure服务架构(图片来源于网络)
开发人员可以使用现有的知识,例如ADO.NET Entity Framework (EDM), LINQ to SQL, 甚至是传统的DataSet、ODBC等技术,来访问位于SQL Azure上的数据。绝大多数现有的数据访问程序只需要修改一个连接字符串,便能顺利访问SQL Azure。
SQL Server 2008 Management Studio R2针对SQL Azure也提供了很强大的支持。目前的版本已经支持访问当前的SQL Azure数据库,生成能在SQL Azure上运行的T-SQL脚本,从而方便大家将数据库迁移至SQL Azure。今后的版本中会对SQL Azure提供更多更强大的支持。
SQL Azure体系架构
SQL Azure是一个具有高扩展性和高可用性的云端数据库服务。和其他的Windows Azure服务一样,SQL Azure也运行在微软遍布全球的数据中心。数据中心的基础架构为SQL Azure服务提供了网络负载平衡、故障转移和备份的能力。如下图所示显示了SQL Azure的体系架构。
SQL Azure的体系架构(图片来源于网络)
SQL Azure服务由4个层次组成:基础设施层、平台层、服务层和客户端层。除了客户端以外,其他3层都运行在微软的数据中心。
1. 基础设施层
基础设施层为上层的应用提供了硬件和操作系统的管理接口。它跨越了数据中心的许多服务。
2. 平台层
平台层由SQL Server服务器实例、SQL Azure fabric控制器和其他管理服务组成。SQL Server数据库实例代表了客户部署的数据和数据备份,以及底层的操作系统实例。SQL Azure fabric用于完成数据库的自动部署、备份、故障转移和设置负载均衡。SQL Azure fabric负责为用户的数据创建3个备份,并且基于这些备份提供自动的故障转移能力。
如果用户的主数据库实例出现故障,SQL Azure fabric将会从可用的3个备份中选择一个作为新的主数据库实例,并将所有通信信息发往新的主数据库。之后,SQL Azure fabric会创建新的备份数据库实例,以维持3次备份的原则。管理服务负责系统的补丁、升级、一致性,并且负责对底层硬件系统进行配置。
3. 服务层
服务层直接接入外网的设备组中,作为平台层接入外部网络的网关。它向最终用户提供TDS(Tabular DATA Stream)协议的访问端口,用户通过该协议访问SQL Azure内部的数据。这和过去SQL Azure的操作是一样的。服务层同时还提供了流量计费及用户账户的配置服务。
注意:客户端程序通过TDS (Tabular DATA Stream)协议访问微软SQL-Server服务器中的数据库。
服务层暴露了TDS协议的接口,使用了基于SSL的1433端口。服务层负责将客户的TDS连接路由到平台层的用户数据库实例上。服务层保留了主数据库及其备份数据库的信息。在用户创建数据库时,服务层还负责为用户初始化一个新的数据库。在初始化数据库阶段,服务层也会与SQL Azure fabric协作完成对备份数据库的初始化工作。
流量与计费服务负责监控用户数据库的使用情况,并根据使用情况进行计费。计费是在一个账户级别下完成的。
4. 客户端层
客户端层并没有包含SQL Azure的特定组件,相反用户可以使用现在的SQL Server客户端组件访问SQL Azure,比如ADO.NET、ODBC、Visual Studio、SQL Server Management Studio、ADO.NET Data Server数据服务等。客户端API通过1433端口初始化一个TDS连接到SQL Azure,服务层将该连接路由到正确的数据库实例。