用戶:小朱/sandbox6
File:SQLServerAzureLogo.png | |
開發者 | Microsoft |
---|---|
目前版本 | 商業運轉 (General Availability)(2010年2月1日) |
作業系統 | Microsoft Windows Azure |
類型 | 雲端儲存式關聯資料庫系統 |
許可協定 | Microsoft EULA |
網站 | 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 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 架構在數據中心可分為三個部份[1]:
1. 服務提供層 (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 的連線,以避免可能會封鎖住伺服器的連線 (例如過長的查詢或過長的資料庫交易等)。
2. 平台提供層 (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 都會彼此交換健康與監控資訊等,以保持整體服務的健康與可監控性。
3. 基礎建設層 (Infrastructure Layer):
基礎建設層由 Windows Azure Computes 以及其高度可擴充性的運算與網絡基礎架構來組成,以支援 SQL Azure 所需的高可用性以及高擴充性等雲端特色。
供應模型
編輯SQL Azure 服務對外的供應模型 (Provisioning Model) [2]的設計以平緩企業進入雲端的學習曲線為主要考量,因此 SQL Azure 對外提供的是一台邏輯伺服器 (Logical Server),此伺服器是由 SQL Azure Gateway 所顯露,每一個 Windows Azure 的帳戶都可以建立一台 SQL Azure Server,就像在本地的 SQL Server 執行個體一樣,但這個執行個體是在雲端上執行且具有高可用性等特徵的資料庫伺服器。
每台 SQL Azure Server 都具有下列內容:
- DNS 名稱,用戶端應用程式要使用這個 DNS 名稱連入資料庫,格式為 [serverid].database.windows.net。
- master 資料庫,此資料庫會存放登入資訊 (logins),伺服器角色以及管理伺服器所必要的動態管理檢視表 (Dynamic Management View)。
- SQL Azure 防火牆,用來管理連入 SQL Azure Server 的連線來源。
- 用戶資料庫,每個資料庫都有不同的計費標準[3],大小由 1GB 到 50GB 不等。一台 SQL Azure Server 可以有多個用戶資料庫。
用戶端只要可以支援 TDS (Tabular Data Stream) over SSL,即可連線與存取 SQL Azure Server 的資料庫資源,這表示像ODBC、ADO.NET或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特性[4]:
- 常數。
- 資料限制。
- 資料游標。
- 資料庫索引管理與索引重建。
- 本地資料庫暫存表格。
- 保留字。
- 預存程序。
- 資料庫統計管理。
- 資料庫交易
- 觸發程式。
- 資料庫表、資料表聯結以及表格變數。
- Transact-SQL語言元素,像是對資料庫、表格、用戶與登入等的建立、修改與刪除。
- 用戶定義函數。
- 檢視表。
未受支援的Transact-SQL特性:
- SQL CLR。
- 資料庫檔案組態。
- 資料庫對映。
- 分散式查詢。
- 分散式交易。
- 檔案群組管理。
- 全域暫存表格。
- 稀疏資料與索引。
- SQL Server組態選項。
- SQL Server Service Broker
- 系統表格。
- 追蹤旗標。
安全性
編輯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會有兩種安全群組[5]:
- 伺服器角色:有
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 中再建立一個或多個登入帳戶後,再授權給資料庫,用戶端應用程式不宜使用伺服器級主帳戶來存取 SQL Azure Server 與資料庫。
限制
編輯SQL Azure 基於架構上的設計與天生的限制,SQL Azure Server的帳戶與安全控制會有下列限制[6]:
- 只有伺服器級主帳戶才具有變更密碼的能力,
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資料庫。
工具與開發支援
編輯開發人員或管理人員可使用 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, ADO.NET, Entity Framework, LINQ to SQL 或其他可產生 TDS over SSL 的用戶端函式庫 (ex: SQL Native Client, JDBC, SQL Server Driver for PHP 等) 來存取 SQL Azure Server 與資料庫。
其他服務
編輯此條目包含計劃中或預期會發佈的軟體。 |
SQL Azure OData Services
編輯這是在 SQL Azure 開發初期時提供的 REST API 群,在 SQL Azure 團隊決定使用 TDS 協定開放 SQL Azure 資料庫後即暫停開發,在 SQL Azure 服務正式發佈後,這個 REST API 群即恢復開發,此 REST API 可符合 OData 協定規格,目前已納入 SQL Azure Labs (http://www.sqlazurelabs.com) 環境中供開發人員測試。
SQL Azure Web Administrator
編輯這是以 Silverlight 所開發,針對 SQL Azure 資料庫所設計的線上管理工具,代號為 Houston,目前是在 CTP 1 的階段,目前已納入 SQL Azure Labs 環境中供開發人員測試。
參考資料
編輯外部連結
編輯SQL Azure MSDN Online Documentation
SQL Server Data Services Official Site