[Windows Azure][IT鐵人賽系列] Day 23 – SQL Azure Overview

在介紹完Windows Azure Platform基本的核心服務Compute Service, Storage Service, VM Role, Remote Desktop和VPN後,我們將焦點轉到資料庫上,微軟的SQL Azure是業界少數將關聯式資料庫(RDBMS)開放給外界使用的一種雲端資料庫服務(Cloud Database)...

在介紹完Windows Azure Platform基本的核心服務Compute Service, Storage Service, VM Role, Remote Desktop和VPN後,我們將焦點轉到資料庫上,微軟的SQL Azure是業界少數將關聯式資料庫(RDBMS)開放給外界使用的一種雲端資料庫服務(Cloud Database),而它也是整個Windows Azure Platform技術系列中學習曲線最平緩的,因為SQL Azure是基於SQL Server 2008 R2(未來會逐步升級到Denali平台,也就是SQL Server 2012)為主的資料庫引擎,所有的基礎用法都和以往的SQL Server差不多,熟悉的Transact-SQL、熟悉的連線字串、熟悉的資料存取方法乃至於熟悉的資料庫管理方式等等,在在都反應了SQL Azure和SQL Server之間微小的差異性。

SQL Azure在開發時期的名稱是SQL Server Data Services(SSDS),後來改稱SQL Services,原本是想要以REST APIs作為外界與其溝通的介面,等於是開發人員必須要重新開發應用程式或大幅置換資料存取介面以連接SQL Azure的資料庫,對企業來說可能會是很大的壓力,大型的商用程式的資料庫存取是既多且複雜的,而且REST APIs呼叫以及後續處理能否獲取等同於SQL指令直接存取的效能,其實是不明且難以確定的,所以在PDC 2009時,微軟決定要將SQL Server的核心通訊協定開放給外界使用,也就是常聽到的TDS(Tabular Data Stream)協定,這樣一來,應用程式只需要修改連線字串,95%以上的應用程式都能直接使用SQL Azure的資料庫,剩下5%的則是要針對不相容的部份小幅修改即可,將SQL Azure可服務的範圍放大了數百倍(相較於REST APIs)。SQL Azure因為是基於Windows Azure Infrastructure上建置的服務,故承襲了Windows Azure的特色,也就是高可用度(HA)和容錯能力,透過Windows Azure以及內部的核心機制,SQL Azure可以享有雲端的高可用特性,且為內建功能,不像Compute Service要依虛擬機器數量計費。

image

SQL Azure上目前有幾種服務,其中資料庫是最基本的,而基於資料庫上發展的服務則有負責資料同步的SQL Azure Data Sync;報表產生的SQL Azure Reporting;簡易資料發布的SQL Azure OData Services;以及處理跨多資料庫整合的SQL Azure Federation Services等等,不過除了資料庫本身以外,其他三種目前都是在CTP(Community Technology Preview)階段,並未正式開放給外界使用,不過想搶鮮的使用者可以到SQL Azure Labs(http://www.sqlazurelabs.com)註冊試用,但要註冊的使用者必須要先擁有SQL Azure資料庫才能試用。

現階段SQL Azure分為兩個版本,Web Edition和Business Edition,不同版本有不同的資料庫大小,Web Edition是1GB和5GB,Business Edition則是10GB, 20GB, 30GB, 40GB與50GB等,但不論是哪一種規格,都是以單價1GB月費9.99美元為標準,以每天使用的狀況來計算,舉例來說,如果使用了一個10GB的資料庫,那每天的費用就是3.333美元(99.99/30),用多少天就算多少天,所以如果只用了半個月,也只會收取半個月的費用,不會收全月。

每一個Windows Azure Platform的帳戶可以在SQL Azure上登錄一台或多台的虛擬伺服器,稱為SQL Azure Server,它就是資料庫對外的一個單位,如同本機上的SQL Server一樣,它可以接受連線以及管理資料庫,它也有Administrator等級的帳戶,而且為了不讓TDS被任意的用戶端連接,SQL Azure Server設有防火牆機制,可以允許外界特定IP位置的用戶端連入,或是只限雲端應用程式連入等等,其他像Logins, Users, Server Roles和Database Roles等也都和SQL Server十分類似(不過因應SQL Azure的特性會有所變化),所以SQL Azure的管理也和SQL Server很像,可以直接利用既有的SQL Server知識來管理SQL Azure資料庫。

最後要特別說明的是,SQL Azure是真正的關聯式資料庫,和先前所介紹的Table Storage完全不同,SQL Azure使用的是T-SQL指令以及DBMS的觀念,但Table Storage則是以NoSQL和分散式海量儲存為主,兩者並不是相同的技術,也有完全不同的適用範圍,所以請不要將它們混為一談。

Reference:

http://msdn.microsoft.com/zh-tw/windowsazure/ee939353.aspx

http://msdn.microsoft.com/en-us/library/gg619386(BTS.70).aspx

http://www.microsoft.com/windowsazure/features/database/