複製鏈接
請複製以下鏈接發送給好友

SQL Azure

鎖定
SQL Azure (舊稱 SQL Server Data Services 或 SQL Services) 是由微軟SQL Server 2008為主,建構在Windows Azure雲操作系統之上,運行雲計算 (Cloud Computing)的關係數據庫服務 (Database as a Service),是一種雲存儲(Cloud Storage)的實現,提供網絡型的應用程序數據存儲的服務。
中文名
SQL Azure
舊    稱
SQL Server Data Services
運    行
雲計算
提    供
網絡型的應用程序數據存儲的服務
基礎架構
SQL Azure 服務架構

SQL Azure基礎架構

SQL Azure 服務架構
SQL Azure HA/Fabric 架構
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 架構在數據中心可分為三個部份:
服務提供層 (Service Layer):
服務提供層是 SQL Azure 顯露在客户端前面的服務接口 (Facade 模式),負責接取所有向 SQL Azure 提交要求的 TDS over SSL 連接與指令,當連接進入 SQL Azure 時,SQL Azure Load Balancer 會分派連接到不同的 SQL Azure Gateway 中。SQL Azure Gateway系負責處理 TDS 連接,管理連接層安全性 (connection-level security) 以及解析指令是否有內含潛在威脅的指令,再交由連接管理員 (Connection Manager) 將連接分派到位於平台提供層內不同的 SQL Azure 數據庫服務器中進行處理,SQL Azure Gateway 也會管理對 SQL Azure 的連接,以避免可能會封鎖住服務器的連接 (例如過長的查詢或過長的數據庫交易等)。
平台提供層 (Platform Layer):
平台提供層則是以 Windows Azure Computes 的虛擬機簇 (Cluster),每台虛擬機都安裝有 SQL Server 2008 以及管理一定數量的數據庫,通常一份數據庫會分散到三至五台的 SQL Server VM 中,而每台 SQL Server VM 也安裝了 SQL Azure Fabric 中控軟件,並通過 SQL Azure Fabric 與 SQL Azure Gateway 的管控下,所有對單一數據庫的連接都不一定會持續連入同一台 SQL Server VM 中。SQL Server VM 內也安裝了 SQL Azure Management Service,它會負責對每個數據庫間的數據複寫工作,以保障 SQL Azure 的基本高可用性要求。每台 SQL Server VM 內的 SQL Azure Fabric 和 Management Service 都會彼此交換健康與監控信息等,以保持整體服務的健康與可監控性。
基礎建設層 (Infrastructure Layer):
基礎建設層由 Windows Azure Computes 以及其高度可擴充性的運算與網絡基礎架構來組成,以支持 SQL Azure 所需的高可用性以及高擴充性等雲特色。

SQL Azure作用

SQL Azure提供了一個功能強大且為人熟知的存儲結構(能熟練操作SQL Server 2008/ SQL Server2008 R2 的IT從業人員都可以無障礙的操作SQL Azure),SQL Server 2008 90%的功能在SQL Azure中都得到了完美的支持,在下面的章節中,我介紹,哪些功能在SQL Azure中沒有得到支持。SQL Azure兼具雲計算的好處,將數據存儲基礎結構託管,可以大大地降低企業在IT方面的資源的投入,根據具體需要的數據存儲量和網絡帶寬支付進行支付,即我們常説的,即付即用!
數據在企業中扮演的角色越來越重要,確保數據安全,確保數據的高可用性,也是近年來企業不斷追求的目標。SQL Azure完美地保證了高可用性(High Availability)和故障轉移(Failover),當應用SQL Azure進行數據的增刪改的時候, SQL Azure會自動地將數據備份到若干節點(node),以保證數據的高可用性;SQL Azure後台內置的集羣機制完美的保證了自動故障轉移,無需人工監守。 [1] 

SQL Azure供應模型

SQL Azure 服務對外的供應模型 (Provisioning Model) 的設計以平緩企業進入雲的學習曲線為主要考量,因此 SQL Azure 對外提供的是一台邏輯服務器 (Logical Server),此服務器是由 SQL Azure Gateway 所顯露,每一個 Windows Azure 的帳户都可以創建一台 SQL Azure Server,就像在本地的 SQL Server 運行個體一樣,但這個運行個體是在雲上運行且具有高可用性等特徵的數據庫服務器
每台 SQL Azure Server 都具有下列內容:
DNS 名稱
客户端應用程序要使用這個 DNS 名稱連入數據庫,格式為 [serverid].database.windowsnet。
master 數據庫
此數據庫會存放登錄信息 (logins),服務器角色以及管理服務器所必要的動態管理查看錶 (Dynamic Management View)。
SQL Azure 防火牆
用來管理連入 SQL Azure Server 的連接來源。
用户數據庫
每個數據庫都有不同的計費標準,大小由 1GB 到 50GB 不等。一台 SQL Azure Server 可以有多個用户數據庫。
客户端只要可以支持 TDS (Tabular Data Stream) over SSL,即可連接與訪問 SQL Azure Server 的數據庫資源,這表示像ODBC、或JDBC的 SQL Server 最新版驅動程序或SQL Native Client Library都可以連接到SQL Azure Server。

SQL AzureTransact-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 Azure安全性

SQL Azure 的安全性有兩個部分,一個是管理傳輸層次安全性的防火牆,一個是管理訪問控制的基本安全功能。

SQL Azure防火牆

每個 SQL Azure Server 都會有自己的防火牆 (Firewall) 設置,管理人員可以自由設置下列不同的客户端來源模型:
  • 只允許雲應用程序訪問 SQL Azure Server,網段設為 0.0.0.0-0.0.0.0
  • 單一或多重網址 (address)。
  • 單一或多重網段 (segment)。
SQL Azure Server 的防火牆設置會存儲在 SQL Azure Gateway 中,作為管控客户端連接之用。

SQL Azure基本安全功能

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 中再創建一個或多個登錄帳户後,再授權給數據庫,客户端應用程序不宜使用服務器級主帳户來訪問 SQL Azure Server 與數據庫。
限制
SQL Azure 基於架構上的設計與天生的限制,SQL Azure Server的帳户與安全控制會有下列限制:
  • 只有服務器級主帳户才具有變更密碼的能力, loginmanager 組羣的成員帳户不具變更密碼的權限,同時如果要訪問master數據庫,則該用户帳户必須要被對應到master數據庫,同時服務器級主帳户是不可以變更或刪除的,同時只要是被設為服務器級主帳户的用户,就算沒有給予 dbmanager 或 loginmanager ,仍然可以創建數據庫並管理用户。
  • 只要是登錄服務器,一律以master為默認數據庫,US-English為默認的登錄語系。
  • 若要運行CREATE/ALTER/DROP LOGIN或CREATE/DROP DATABASE,必須要先連至master數據庫。
  • 當要在ADONET運行前述指令時,不可以使用參數化命令,而且前述命令於每個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數據庫。

SQL Azure工具開發支持

開發人員或管理人員可使用 SQL Server 2008 R2 版本的 SQL Server Management Studio 連接 SQL Azure Server;Visual Studio 2010 的服務器管理員也可以連接到 SQL Azure Server 並管理數據庫與數據結構。SQL Server 2008 (非R2) 則可通過輸入連接字符串的方式連接 SQL Azure Server,或是使用命令行工具 sqlcmd.exe 連到 SQL Azure Server。在 SQL Azure 管理接口中可獲得連接字符串的示例。
SQL Azure Server 可接受 TDS over SSL 的通信與指令,因此開發人員可利用 ADO, ADONET, Entity Framework, LINQ to SQL 或其他可產生 TDS over SSL 的客户端庫 (ex: SQL Native Client, JDBC, SQL Server Driver for PHP 等) 來訪問 SQL Azure Server 與數據庫。

SQL Azure其他服務

Globe current.svg
此條目或章節包含計劃中或預期會發布的未來軟件。
隨着軟件發佈日期的臨近或者更多相關可靠消息的發佈,文章的內容可能大幅變動。
Nuvola apps kpager.svg

SQL Azure數據服務

這是在 SQL Azure 開發初期時提供的 REST API 羣,在 SQL Azure 團隊決定使用 TDS 協議開放 SQL Azure 數據庫後即暫停開發,在 SQL Azure 服務正式發佈後,這個 REST API 羣即恢復開發,此 REST API 可符合 OData 協議規格,已納入 SQL Azure Labs 環境中供開發人員測試。
SQL Azure Web Administrator
這是以 Silverlight 所開發,針對 SQL Azure 數據庫所設計的聯機管理工具,代號為 Houston,是在 CTP 1 的階段,已納入 SQL Azure Labs 環境中供開發人員測試。

SQL Azure安裝部署

如果您的前端應用程序在Windows Azure主機上,則應將應用程序和SQL Azure數據庫放置在同一機器上,這將通過減少應用程序和數據庫服務器之間的延遲來優化連接。傳統上,Web服務器和數據庫服務器在同一台機器上,但SQL Azure主機放置在世界上的幾個數據中心。因此,從系統配置方面看,Windows Azure的應用程序應跟SQL Azure放在相同的機器上。
正如傳統數據庫通過向外擴展而不是向上擴展來處理負載應對更大、更頻繁的使用。SQL Azure數據庫因為資源的限制更適用於此規則。當SQL Azure發現一個數據庫使用了過多的CPU和磁盤I / O時,它通過節制吞吐量來確保其他數據庫不會受到影響。由於在數據庫一級實施節流,可在水平或垂直方向的多個數據庫中分散大量數據,通過這種方式,連接不暢的機會將會減少,任何潛在的連接不暢也只會影響一部分數據集。
此外,如果需要在兩台數據庫間啓動SQL Azure的故障切換,小數據庫可以做得更快。同樣,如果你有一台只讀的數據庫服務器從SQL Server得到刷新,您可以在SQL Azure中創建多個數據庫使得應用程序可以循環或者隨機選擇訪問其中哪一個數據庫。這種方式,您可以在SQL Azure上分佈負載並減少連接不暢的機會。

SQL Azure收費模式

微軟針對不同SQL Azure數據庫的容量有着不同的定價體系。此外,SQL Azure有兩個版本:最大數據庫容量為5GB的網絡版,和最大數據庫容量為50 GB的商業版。
網絡版價格為每月49.95美元。企業版價格為每10GB每月99.99美元。如果你有一個運行在商業版上50 GB大小的數據庫,那麼你將每月花費約500元。當你考慮到一個SQL Server標準版許可證每處理器需要7000美元,再加上硬件成本時,500美元可以説並不昂貴。
使用SQL Azure,你還必須為你的系統支付數據流量費用;每GB下行數據價格為0.10美元,每GB上行數據價格是0.15美元。無需付出額外的加工使用費用或者數據傳輸到其他SQL Azure數據庫或Windows Azure系統的費用。
參考資料