SQL Azure架构分析概述

    SQL Azure (之前被称为 SQL Server Data Services) 是由微软SQL Server 2008为主,建构在Windows    Azure云操作系统之上,运行云计算 (Cloud Computing)的关系数据库服务,是一种云存储(Cloud Storage)的实现,提供网络型的应用程序数据存储的服务。

 
图1 SQL Azure Logo
一、基础架构
       SQL Azure的基底是SQL Server 2008,不过它是一个特殊设计的SQL Server 2008,并且以Windows Azure为基座平台,配合Windows Azure的特性,SQL Azure也是一种分散在许多物理基础架构(Physical Infrastucture)与其内部许多虚拟服务器(Virtual Servers)的一种云存储服务,外部应用程序或服务可以不用在乎数据库实际存储在哪里,就可以利用SQL Azure显露的SQL Server Fabric壳层服务以接受外部连接,并且在内部使用连接绕送(connection routing)的方式,让连接可以对应到正确的服务器,而且数据库是在云中由多个服务器来提供服务,每一次连接所提供服务的服务器可能会不同,因此也可以保证云存储的高度可用性(High availability)。
SQL Azure于架构上分成四个层次,如下图2所示:
图2 SQL Azure架构
1. 客户端层(Client Layer ):
       SQL Azure显露表格化数据流(Tabular Data Stream)的协议,供外界连接至SQL Azure服务器服务,外部应用程序可以使用像ADO.NET、ODBC或是专供给PHP的驱动程序产生TDS,并通过SSL (TDS over SSL)传送至SQL Azure,而对于轻量级或是Web 2.0级的应用程序(如AJAX、Silverlight),则可以先在Windows Azure中架设一个Service之后,利用该Service来访问SQL Azure,或是利用ADO.NET Data Services的方式,向外提供REST API以访问SQL Azure。
2. 服务层(Service Layer ,图标中的Data Provisioning Layer ):
        服务层是提供客户端应用程序与平台服务层之间的一个闸道(gateway),并且提供了数据发布(provisioning)、计费与计量(billing and metering)以及连接绕送(connection routing)。在此层中会使用指定的Azure服务平台帐户来计算访问的流量等参数以作为计费标准,同时将命令绕送至实际存在数据的服务器位置运行服务。
3. 平台层(Platform Layer ,图标中的Data Service Layer ):
         平台层是实际提供数据服务的一群物理服务器以及虚拟服务器群,这些服务器群拥有许多的SQL Server运行个体,并且由SQL Azure fabric中控管理。SQL Azure fabric是一个可集成网络服务器以及存储体的分布式运算系统(distributed computing system),它提供了在许多物理服务器主机间的自动化备援(failover)、负载平衡(load balancing)以及数据库复制等重要功能。
管理服务(management service)提供了服务器的健康监控、软件更新(software upgrade)与修补(patch)的自动安装等等。
4. 基础架构层(Infrastructure Layer ):
       基础架构层提供了支持服务层所需的IT基础架构、物理服务器与操作系统,以及管理营运等的支持。
二、数据库支持与显露接口
        SQL Azure基于Windows Azure提供的帐户服务支持,因此在Azure服务平台上建立的帐户均可以使用在SQL Azure上用,同时SQL Azure也是利用Azure服务平台的帐户识别,当帐户在Windows Azure上建立并申请使用SQL Azure时(利用SQL Azure门户网站),SQL Azure会利用这个帐户的信息产生一个专供该帐户使用的SQL Azure Server,如果在本机或服务器上的SQL Server安装一样,SQL Azure Server本身是一个独立的数据库服务器环境,拥有自己的master数据库以及自己的数据库安全环境(包含用户与登录信息)。
每个SQL Azure Server都有一个自己的DNS名称,例如:mysqlazureserver.ctp.database.windows.net。
       在SQL Azure Server中,用户可以在这个空间中建立自己的数据库(利用CREATE DATABASE指令),一个SQL Azure Server可以包含很多的用户数据库,数据库中可以包含表格以及其他数据库对象。
      SQL Azure支持了大多数的数据型别,也支持了 XML 数据类型,不过有部份数据型别(像是BLOB型别以及地理数据型别)没有在支持清单中。同时 SQL Azure 也使用了Transact-SQL作为内核查询语言。目前 SQL Azure 已支持ODBC、ADO.NET以及PHP的访问方式,利用TDS over SSL (Tabular Data Stream over SSL)的方式直接连接到SQL Azure。
三、Transact-SQL的支持
       作为SQL Server版本Transact-SQL的子集,不是所有的功能在SQL Azure上都有被支持,由于物理服务器架构以及安全性的问题,许多分布式的查询法以及常用的数据库复制法都没有办法被SQL Azure支持,而在SQL Server 2005开始加入的SQL CLR能力也无法在SQL Azure上支持(因为它必须要挂载在SQL Azure物理服务器上,但客户端通常无法知道当下连到的服务器是否为有安装SQL CLR组件的那一台)。
受支持的Transact-SQL 特性:
  •          常数
  •         数据限制
  •          数据光标
  •         数据库索引管理与索引重建
  •          本地数据库暂存表格
  •          保留字
  •          预存程序
  •          数据库统计管理
  •          数据库交易
  •          触发程序
  •          数据库表、数据表联结以及表格变量
  •          Transact-SQL语言元素,像是对数据库、表格、用户与登录等的建立、修改与删除
  •          用户定义函数
  •          查看表
未受支持的Transact-SQL 特性:
  •          SQL CLR
  •          数据库文件配置
  •          数据库映射
  •          分布式查询
  •          分布式交易
  •          文件组群管理
  •          全局暂存表格
  •          稀疏数据与索引
  •          SQL Server组态选项
  •          SQL Server Service Broker
  •          系统表格
  •          追踪旗标。
四、安全性
SQL Azure Server会有两种安全组群:
  1. 服务器角色:有 dbmanager 以及 loginmanager 两种。
    ►dbmanager:赋与用户可以建立数据库(即CREATE DATABASE指令)的权利
    ►loginmanager:赋与用户可以建立登录帐户(即CREATE LOGIN指令)的权利
  2. 数据库角色:与安装在本机或服务器上版本的SQL Server相同
          SQL Azure Server目前只支持使用SQL验证(SQL Authentication)的安全验证方式,以往的Windows验证在SQL Azure上不支持。而在SQL Azure Server建立时,除了master数据库以外,还会再多建立一个具有SQL Server的sa帐户相等权力的帐户,供用户操作SQL Azure Server用,此帐户称为服务器级主帐户(server-level principal)。
         然而,SQL Azure Server的帐户与安全控制会有下列限制:
  •          只有服务器级主帐户才具有变更密码的能力, loginmanager 组群的成员帐户不具变更密码的权限,同时如果要访问master数据库,则该用户帐户必须要被对应到master数据库,同时服务器级主帐户是不可以变更或删除的,同时只要是被设为服务器级主帐户的用户,就算没有给予 dbmanager 或 loginmanager ,仍然可以建立数据库并管理用户
  •          只要是登录服务器,一律以master为默认数据库,US-English为默认的登录语系
  •          若要运行CREATE/ALTER/DROP LOGIN或CREATE/DROP DATABASE,必须要先连至master数据库
  •          当要在ADO.NET运行前述指令时,不可以使用参数化命令,而且前述命令于每个SQL批次也只能有一个(且是唯一的一个)
  •          当要运行CREATE USER配合FOR/FROM LOGIN选项时,它也必须是SQL批次中唯一的一个
  •          当要运行ALTER USER配合WITH LOGIN选项时,它也必须是SQL批次中唯一的一个
  •          只有服务器级主帐户以及被赋与 dbmanager 角色的成员才有运行CREATE DATABASE与DROP DATABASE的权力
  •          只有服务器级主帐户以及被赋与 loginmanager 角色的成员才有运行CREATE LOGIN、ALTER LOGIN与DROP DATABASE的权力
  •          若想访问master数据库,则该帐户必须要对应到master数据库。

 

作者: 付海军
出处:http://space.e800.com.cn/fuhj02
版权:本文版权归作者和亿八佰共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.shell.tor.hu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值