SQL Azure

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 服務架構
基礎架構,服務提供層 (Service Layer):,平台提供層 (Platform Layer):,作用,供應模型,DNS 名稱,master 資料庫,SQL Azure 防火牆,用戶資料庫,Transact-SQL的支持,受支持的Transact-SQL特性:,未受支持的Transact-SQL特性:,安全性,防火牆,基本安全功能,工具與開發支持,其他服務,SQL Azure OData 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 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後台內置的集群機制完美的保證了自動故障轉移,無需人工監守。

供應模型

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。

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 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 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 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 與資料庫。

其他服務

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

SQL Azure OData Services

這是在 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系統的費用。

相關詞條

熱門詞條

聯絡我們