技术开发 频道

SQL Azure关键改进 性能容量获大幅提升

        【IT168 技术】2008 年,微软发布了自己的全新云计算产品Windows Azure Platform。历经数年的技术沉淀,Windows Azure Platform 已经成为一个技术领先、开放的平台,基于不同语言开发的应用程序都可以运行在这个平台上面,并通过标准协议相互通信和协作。此平台包括Windows Azure、SQL Azure、Windows Azure platform AppFabric 和Windows Azure Marketplace四部分内容。简单来说,Windows Azure 平台就是一个集云计算操作系统、云关系型数据库为开发者提供的服务集合或云中间件,以及其他一些辅助服务的互联网环境。

  SQL Azure概述

  Windows Azure云操作系统提供有存储服务,但并不是一个关系型数据库系统,并且它的查询语言也不是SQL,它只能实现较为简单的存储服务,主要被设计用来支持构建于Windows Azure 上的应用。

  但关系型数据库的思维习惯影响着一大批数据库开发人员以及数据库管理员,再加上其对事务等强大功能的支持,基于云的关系型数据库还是很吸引人,尤其是对于那些自己没有能力管理数据库的组织。使用云数据库一方面可以把确保可靠性和管理数据的工作交给一个专门的云服务提供商去做;另一方面可以随时随地,甚至从移动设备上访问云里的数据。服务提供商可以非常容易地伸缩服务,所以使用基于云的数据库可能要比使用自己的数据库便宜很多。

SQL Azure概述

  说白了SQL Azure就是一个部署在云端的关系型数据库管理系统。由于SQL Azure 支持SQL Server 的绝大多数功能,因此它具有良好的应用兼容性。SQL Azure 的设计遵循了主要的三条特性:可扩展性、可管理性和开发的灵活性。作为一个部署在云上的数据库引擎,绝大多数的管理工作都由微软完成,因此用户不用担心任何诸如备份、集群等管理方面的问题。另外,微软的服务许可协议(Service Level Agreement,SLA)确保了用户的数据库平均每个月将有99.9%以上的时间在线。从以上描述中可以看出SQL Azure提供了企业级数据中心的规模和能力,并且省去了管理本地SQL Server服务的成本。使得企业既不用增加本地IT部门的支持负荷,也不用消耗IT人员的精力去维护部门的数据库应用,还能够在整个企业内为应用程序提供数据服务。企业通过使用SQL Azure,可以在极短的时间内进行数据库存储,可以订阅所需要的存储服务,从而减少部署和运维数据库的初始投资。当需求变化时,还可以快速地减小或者增加数据库服务来满足需求。

  SQL Azure 对于开发者和管理员来说应该很容易上手,因为SQL Azure 使用关系型数据模型,数据存储于SQL Azure 上就和存储于SQL Server 上一样。使用SQL Azure 数据库的应用程序可以运行在Windows Azure、企业数据中心、移动设备或其他任何地方。不管运行在哪里,应用程序都使用一种叫做Tabular Data Stream(TDS)的协议来访问SQL Azure 数据。这个协议与应用程序连接本地SQL Server 是同一个协议。所以,已有的SQL Server 客户端软件可以直接连接到SQL Azure 上。这些客户端软件可以是Entity Framework、ADO.NET、ODBC 等。因为SQL Azure 数据库看起来就像普通的SQL Server 数据库,所以标准工具仍然可以使用,比如SQL Server Management Studio、SQL Server Integration Service 和用来批量拷贝的BCP 等。一个 SQL Azure 服务器就是一组数据库的逻辑组合,是一个独立的授权单位,这在概念上类似于一个本地SQL Server 实例。在每个SQL Azure 服务器内,用户可以创建多个数据库,每个数据库可以拥有多个表、视图、存储过程、索引和其他熟悉的数据库对象。该数据模型可以很好地重用用户现有的关系型数据库设计、T-SQL 编程技能和经验,从而简化了将现有的本地数据库应用程序迁移至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 Server2012在备份到 Windows Azure 、Azure 数据库容量上做了一些关键性的改进。

  在SQL Azure 中服务器和数据库都是逻辑对象,这不同于物理服务器和数据库。通过用户与物理实现的隔离,SQL Azure 使得用户可以将时间专用于数据库设计和业务逻辑上。每个SQL Azure 账号可以有多个逻辑服务器。注意:这不是真正的SQL Server 实例,而是用来组织收费数据用的。每个Azure 数据库的上限提高到了150G。如果需要,用户可以使用多个数据库从而把数据分散以提高性能。虽然运行环境看起来都一样,但是SQL Azure 比起单一实例的SQL Server 要稳定得多。和Windows Azure 存储系统一样,所有数据都保存三次以实现高可用性和一致性,其目的是保证即使在系统和网络出错时也可以提供可靠的数据存储。

  SQL Azure 架构

  SQL Azure拥有和SQL Server一样的TDS接口,为客户端应用程序提供了和SQL Server一样的访问方式。 SQL Azure是一个四层架构:基础设施层、平台层、服务层和客户端层。简单来说,客户端层的作用就是负责应用程序与SQL Azure间的通信。服务层则运行通道服务,实现连接路由、供给以及计费等。平台层则是托管在实际SQL Server数据库中的结点。基础架构层的作用是负责对硬件、网络和操作系统的管理。下面我们来详细看一下:

  其中基础设施层提供了对硬件的支持以及对服务层所运行的服务管理。同时也是核心数据层,可以为一个数据中心提供多个共享服务。平台层由三部分组成:SQL Server实例、SQL Server Fabric、管理服务。SQL Server实例就是一个SQL Server数据库引擎。每个SQL Server数据库引擎实例都有各自的系统数据库及用户数据库。一个实例的运行不会受其他实例运行的影响,也不会影响其他实例的运行。在一台计算机上安装多个SQL Server实例,就相当于把这台计算机模拟成多个数据库服务器,而且这些模拟的数据库服务器是独立且同时运行的。SQL Server Fabric是一个底层框架,是一个分布式的框架,集成了网络、服务器和存储,因此这个框架能够使得SQL Azure自动进行负载均衡、数据容灾、备份恢复。管理服务能够对运行在其上的服务进行健康检查、升级或者打补丁。并为SQL Server Fabric提供软硬件支持。服务层连接了客户端层和平台层,包含三大功能:数据提供(Provisioning)、账单和计量(Billing and 、Metering)、连接路由(Connection Routing),期中Provisioning 列举了微软云计算平台账户。服务层同时暴露了带有SSL的列表数据流(Tabular Data Stream ,TDS)给客户端层。客户端层是唯一运行在微软数据中心之外的一层,不是使用SQL Azure任何特殊的组件,而是使用了当前客户端上安装的SQL Server的功能,如ADO.Net、WCF服务、ODBC、SQL Server管理工具。客户端层使用API初始化一个TDS连接,通过1433端口连接到SQL Azure上。

  具体的管理操作非常简单,毕竟和SQL Server是同胞兄弟。用户购买了SQL Azure服务后,登录http://www.windowsAzure.com/zh-cn/,即可,当然如果只是想体验一把,也可以选择90天的免费试用。需要获得Azure Services项目组的邀请。如下图所示:

SQL Azure 架构

  注册成功后,我们来尝试创建一个数据库,填写数据库的创建参数。数据库名称是“TEST”,数据库类型是Web,大小是30GB。在SQL Server 2012中,企业用数据库最大可达到150G。

SQL Azure 架构

  在创建数据库的同时,会自动弹出数据库服务器的设置界面,设置完成后,SQL Azure服务提供层自动提供SQL Azure对外服务接口。访问SQL Azure中的数据,我们可以通过APIs访问,如ADO.Net、ODBC或者PHP中的数据库访问,他们使用TDS+SSL的方式来访问。也可以通过基于Web的客户端,如浏览器、WCF数据服务客户端、SilverLight等方式,使用HTTP或HTTPS来访问云中的数据。

  SQL Azure Sync

  企业如何实现本地SQL Server与远端SQL Azure之间的数据同步。很多企业为了提高数据的读写性能或者是为了保证即使在断网情况下也可以有数据可用,就会在本地进行数据存储,在这种情况下,就需要同步SQL Azure 中的数据。在这里微软提供了SQL Azure Sync 工具来简化数据同步过程。SQL Azure Sync 是完全基于配置的,而不需要用户进行编程来实现数据同步。SQL Azure Sync 主要支持两种同步方式:同步 SQL Azure 数据库和本地的SQL Server 数据库和同步在不同微软数据中心的SQL Azure 数据库。

SQL Azure Sync

  所谓同步 SQL Azure 数据库和本地的SQL Server 数据库就是上面所说的有很多种原因需要用户在本地保存一份SQL Azure 的数据。比如,为了提高性能或者是因为法律要求在国内必须有一份数据备份。即使SQL Azure 有内置的容错机制,有些用户也仍然想保存一份数据备份以防止像表格被误删那样的系统管理操作错误。

  另外一种就是在在不同微软数据中心的SQL Azure 数据库之间进行数据同步,很多大的跨国公司会有类似的需求,例如应用程序被世界各地的用户所使用。为了提高性能,公司决定把该应用程序运行在微软的三个数据中心里:北美、亚洲和欧洲。如果该应用程序使用SQL Azure 数据库,它可以使用SQL Azure Sync 来同步在三个数据中心里的数据。

  SQL Azure Data Sync数据同步工具为用户提供了配置向导,以帮助用户在SQL Sever数据库和SQL Azure数据库之间同步数据并定义同步规则。有了此工具,管理员只需轻点鼠标便可以将企业数据库方便同步到云当中。运行SQL Azure Data Sync Tool for SQL Server。此时启动的向导会对本地SQL Server实例进行配置并自动提供一个用于同步的Azure数据库。确保服务器名称、数据库名称及与sql.Azure.com所关联的Live ID账户和密码都输入正确,除此之外,还需要设置与SQL Azure同步的本地SQL Server的服务器名和数据库名称。

SQL Azure Sync

SQL Azure Sync

SQL Azure Sync

  SQL Azure Data Sync Tool工具灵活的带领用户完成 SQL Azure 数据同步工作,使得 SQL Server 与 SQL Azure 之间的数据布建和同步处理作业可以自动化。确保同步作业既有效率又可靠,而且不需要人工编写任何程序代码。

0
相关文章