技术开发 频道

微软SQL Azure云数据库技术详解

  【IT168技术】虽然Windows Azure存储能够满足许多用户对非结构化或半结构化数据存储的需求,但是由于关系型数据库已经使用多年,再加上其对事务、完整性等功能的支持,因此基于云的关系型数据库还是很吸引人,尤其是对于那些自己没有能力管理数据库的组织。使用云数据库一方面可以把确保可靠性和管理数据的工作交给一个专门的云服务提供商去做;另一方面可以随时随地,甚至从移动设备上访问云里的数据。服务提供商可以非常容易地伸缩服务,所以使用基于云的数据库可能要比使用自己的数据库便宜很多。

  SQL Azure的概念相对比较好理解,它是一个部署在云端的关系型数据库管理系统。由于SQL Azure支持SQL Server的绝大多数功能,因此它具有良好的应用兼容性。SQL Azure的设计遵循了主要的三条特性:可扩展性、可管理性和开发的灵活性。作为一个部署在云上的数据库引擎,绝大多数的管理工作都由微软完成,因此用户不用担心任何诸如备份、集群等管理方面的问题。另外,微软的服务许可协议(Service Level Agreement,SLA)确保了用户的数据库平均每个月将有99.9%以上的时间在线。

  SQL Azure除了提供最基础的关系型数据库服务之外,同时还提供更多的数据相关的功能(如图1.10所示)。其目前提供的主要功能如下:

  SQL Azure Database:提供基于云的数据库管理系统(DBMS)。无论是本地应用还是云应用都可以把关系型数据存储到微软的数据中心。和其他的云技术一样,它是按需使用并按使用量付费的。

  SQL Azure Reporting:这是SQL Server 报表服务(SSRS)的云版本。它主要是和SQL Azure一起使用,用来为云数据创建和发布标准的SSRS 报表。

  SQL Azure Sync:用来同步SQL Azure数据库和本地的SQL Server 数据库,也可以用来同步在微软不同数据中心的SQL Azure 数据库。基于数据同步的功能,用户能够实现SQL Azure与SQL Server数据库同步,实现了传统应用和云应用的整合与并存。

SQL Azure云数据库技术详解
▲图1.10 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 Azure数据库,生成能在SQL Azure上运行的T-SQL脚本,从而方便用户将数据库迁移至SQL Azure。

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

  报表功能

  把数据存放在SQL Azure 数据库中会很有用,但是一旦有了数据,就会产生从这些数据上生成报表的需求。SQL Azure Reporting 就是为此而产生的。SQL Azure Reporting基于SQL Server Reporting Services(SSRS)构建,提供了基于云的生成报表的方式。

  既然SQL Azure 数据库和SQL Server 很像,而且也可以将本地的SSRS用到SQL Azure 数据库上,那为什么还要SQL Azure Reporting 呢?SQL Azure主要用在以下两种情况下。

  使用SQL Azure Reporting 生成的报表可以发布到SQL Azure Reporting 门户网站上。用户可以到这里访问或通过URL 直接访问。

  软件开发商(ISV)可以把SQL Azure Reporting 生成的报表嵌入到任何应用程序中,包括Windows Azure 应用程序,这样用户就可以在应用程序中访问报表了。

  SQL Azure Reporting 是为存储在SQL Azure 数据库中的数据而设计的。SQL Azure Reporting的报表是用Visual Studio 中的Business Intelligence Developer Studio 在本地创建的,该工具也用来创建SSRS报表。事实上,SQL Azure Reporting 依赖相同的Report Definition Language(RDL)定义的报表格式。

  数据同步

  任何有互联网连接的应用程序都可以访问存储在SQL Azure 数据库中的数据。但有时候也需要在另外一个地方保存数据备份,比如,用户想在本地保存一份数据以提高性能或保证即使在断网情况下也可以有数据可用。在这种情况下,就需要同步SQL Azure中的数据。

  当然用户可以使用Microsoft Sync Framework 来自己编写同步工具,但是微软提供了SQL Azure Sync来简化这一过程。SQL Azure Sync 是完全基于配置的,而不需要用户进行编程来实现数据同步。

  SQL Azure Sync主要支持两种同步方式。

  同步SQL Azure 数据库和本地的SQL Server 数据库

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

  同步在不同微软数据中心的SQL Azure 数据库

  比如跨国公司的应用程序被世界各地的用户所使用。为了提高性能,公司决定把该应用程序运行在微软的三个数据中心里:北美、亚洲和欧洲。如果该应用程序使用SQL Azure 数据库,它可以使用SQL Azure Sync来同步在三个数据中心里的数据。

2
相关文章