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會有兩種安全組羣:
- 服務器角色:有 dbmanager 以及 loginmanager 兩種。
►dbmanager:賦與用戶可以建立數據庫(即CREATE DATABASE指令)的權利►loginmanager:賦與用戶可以建立登錄帳戶(即CREATE LOGIN指令)的權利 - 數據庫角色:與安裝在本機或服務器上版本的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
出處:http://space.e800.com.cn/fuhj02
版權:本文版權歸作者和億八佰共有
轉載:歡迎轉載,爲了保存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任
個人網站: http://txj.shell.tor.hu