微軟SQL Azure云數(shù)據(jù)庫開發(fā)揭秘
應(yīng)該沒有開發(fā)者不認(rèn)識Microsoft SQL Server,但是肯定有開發(fā)者不知SQL Azure 為何物。SQL Azure 是微軟云計算平臺(Windows Azure Platform)的三大組成部分之一,是一個部署在云端的關(guān)系型數(shù)據(jù)庫引擎,它支持SQL Server中絕大多數(shù)和開發(fā)有關(guān)的功能。也可以簡單的認(rèn)為SQL Azure就是SQL Server的云端版本,但是還是有一些區(qū)別,我們將在下文進(jìn)行介紹。本文對SQL Azure做一個概述,主要從SQL Azure的架構(gòu)、主要功能、訪問SQL Azure的數(shù)據(jù)、SQL和SQL Server功能比較這幾個方面來介紹,以期大家對SQL Azure有一個整體性的認(rèn)識。
SQL Azure的架構(gòu)
就像微軟云計算服務(wù)平臺(在這里筆者認(rèn)為微軟云計算服務(wù)平臺包含了微軟云計算平臺,還包括了構(gòu)建在此平臺上的服務(wù),如living Service,當(dāng)然這只是作者的理解,值得商榷。)上的其它服務(wù)一樣,SQL Azure也是一個高可用性、高可擴(kuò)展性的數(shù)據(jù)實(shí)體服務(wù),這個服務(wù)跑在云端,或者說是跑在微軟公司在世界各地建立的數(shù)據(jù)中心上。
數(shù)據(jù)中心(Data Center,DC)通過實(shí)現(xiàn)統(tǒng)一的數(shù)據(jù)定義與命名規(guī)范、集中的數(shù)據(jù)環(huán)境,從而達(dá)到數(shù)據(jù)共享與使用的目標(biāo)。一個典型的數(shù)據(jù)中心常常跨多個供應(yīng)商和多個產(chǎn)品的組件,包括:主機(jī)設(shè)備、數(shù)據(jù)備份設(shè)備、數(shù)據(jù)存儲設(shè)備、高可用系統(tǒng)、數(shù)據(jù)安全系統(tǒng)、數(shù)據(jù)庫系統(tǒng)等等,當(dāng)前數(shù)據(jù)中心和下一代數(shù)據(jù)中心的參考架構(gòu)如圖1:示:

圖1 數(shù)據(jù)中心架構(gòu)
其實(shí)我們從上圖中的下一代數(shù)據(jù)中心架構(gòu)可以看出來,目前構(gòu)建云計算平臺的數(shù)據(jù)中心是就是上圖中下一代數(shù)據(jù)中心架構(gòu)的實(shí)現(xiàn)。微軟數(shù)據(jù)中心還提供了負(fù)載均衡、數(shù)據(jù)容災(zāi)、備份恢復(fù)功能,當(dāng)然,在未來它可能支持的功能有:MARS支持、空間坐標(biāo)數(shù)據(jù)和50GB的容量選項。還會提供一個SQL Azure Labs,其中包含一些未來可能具備的加強(qiáng)功能,比如將要亮相的OData Services。SQL Azure的整體架構(gòu)如圖2所示:

圖2 SQL Azure架構(gòu)
由圖2我們可以看出,SQL Azure是一個四層架構(gòu),基礎(chǔ)設(shè)施層(Infrastructure Layer)、平臺層(Platform Layer)、服務(wù)層(Service Layer)、客戶端層(Client Layer),基礎(chǔ)設(shè)施層、平臺層和服務(wù)層構(gòu)成了微軟數(shù)據(jù)中心。下面我們分別予以介紹。
基礎(chǔ)設(shè)施層
基礎(chǔ)設(shè)置提供了硬件支持和操作系統(tǒng),以及對服務(wù)層所運(yùn)行的服務(wù)管理。同時也是核心數(shù)據(jù)層,可以為一個數(shù)據(jù)中心提供多個共享服務(wù)。
平臺層
平臺層由三部分組成:SQL Server實(shí)例、SQL Server Fabric、管理服務(wù)。SQL Server實(shí)例就是一個SQL Server數(shù)據(jù)庫引擎。每個SQL Server數(shù)據(jù)庫引擎實(shí)例各有一套不為其他實(shí)例共享的系統(tǒng)及用戶數(shù)據(jù)庫。由于實(shí)例各有一套不為其他實(shí)例共享的系統(tǒng)及用戶數(shù)據(jù)庫,所以各實(shí)例的運(yùn)行是獨(dú)立的,一個實(shí)例的運(yùn)行不會受其他實(shí)例運(yùn)行的影響,也不會影響其他實(shí)例的運(yùn)行。在一臺計算機(jī)上安裝多個SQL Server實(shí)例,就相當(dāng)于把這臺計算機(jī)模擬成多個數(shù)據(jù)庫服務(wù)器,而且這些模擬的數(shù)據(jù)庫服務(wù)器是獨(dú)立且同時運(yùn)行的。
SQL Server Fabric是一個底層框架,是一個分布式的框架,集成了網(wǎng)絡(luò)、服務(wù)器和存儲,因此這個框架能夠使得SQL Azure自動進(jìn)行負(fù)載均衡、數(shù)據(jù)容災(zāi)、備份恢復(fù)。
管理服務(wù)能夠?qū)\(yùn)行在其上的服務(wù)進(jìn)行健康檢查、升級或者打補(bǔ)丁。并為SQL Server Fabric提供軟硬件支持。
服務(wù)層
服務(wù)層連接了客戶端層和平臺層,包含三大功能:數(shù)據(jù)提供(Provisioning)、賬單和計量(Billing and 、Metering)、連接路由(Connection Routing),期中Provisioning 列舉了微軟云計算平臺賬戶。服務(wù)層同時暴露了帶有SSL的列表數(shù)據(jù)流(Tabular Data Stream ,TDS)給客戶端層。
客戶端層
客戶端層是唯一運(yùn)行在微軟數(shù)據(jù)中心之外的一層,不是使用SQL Azure任何特殊的組件,而是使用了當(dāng)前客戶端上安裝的SQL Server的功能,如ADO.Net、WCF服務(wù)、ODBC、SQL Server管理工具??蛻舳藢邮褂肁PI初始化一個TDS連接,通過1433端口連接到SQL Azure上??蛻舳藢舆\(yùn)行我們使用數(shù)據(jù)的工具——SQL Server來構(gòu)建云應(yīng)用。
SQL Azure的主要功能
SQL Azure目前的不完全支持SQL Server上的所有功能,如分析服務(wù)、鏡像、報表服務(wù)以及能夠選擇不同的服務(wù)提供者提供不同的服務(wù)。這是因?yàn)楫?dāng)前的網(wǎng)絡(luò)狀況和云計算平臺部署需求所決定的,在將來肯定會提供更多功能,如Dallas。我們SQL Azure的主要功能分成三部分:數(shù)據(jù)庫功能、應(yīng)用程序功能和管理功能。
數(shù)據(jù)庫功能
支持的數(shù)據(jù)庫功能如下:
(1)表的增刪改查(CRUD),試圖、索引
(2)TSQL query JOIN statements
(3)觸發(fā)器
(4)TSQL functions
(***pplication stored procedures (only TSQL)
(6)Table constraints
(7)基于Session的臨時表
(8)Table variables
(9)Local transactions
(10)安全角色
(11)SUSER_SNAME函數(shù),返回當(dāng)前安全登錄名
(12)MARS,多活動結(jié)果集
不支持的數(shù)據(jù)庫功能如下:
(1)分布式查詢
(2)分布式Transactions
(3)任何 TSQL query and views改變或者恢復(fù)物理資源信息
(4)自定義數(shù)據(jù)類型
應(yīng)用程序功能
應(yīng)用程序功能不支持的功能有:
(1)Service Broker
(2)HTTP access
(3)CLR stored procedures
管理功能
SQL Azure支持?jǐn)?shù)據(jù)應(yīng)用層程序(Data-tier Applications),數(shù)據(jù)庫應(yīng)用層程序是一個包含了幾乎某一應(yīng)用所需要的數(shù)據(jù)庫及實(shí)例對象的實(shí)體,如表、視圖、存儲過程、登錄等等。有了實(shí)體以后,原本獨(dú)立的登陸、部署、維護(hù)就可以通過開發(fā)人員進(jìn)行開發(fā)來整合成為一個統(tǒng)一的整體,這樣的一個整體又叫應(yīng)用程序包,這樣DBA 就可以把原本獨(dú)立的對象視為一個數(shù)據(jù)庫應(yīng)用層的程序來進(jìn)行部署、監(jiān)控和管理。目前支持的數(shù)據(jù)層應(yīng)用程序有刪除、部署、提取和注冊數(shù)據(jù)層應(yīng)用程序包。不僅如此,還支持的管理功能有:
(1)計劃和統(tǒng)計
(2)索引開啟
(3)查詢開啟
SQL Azure不支持一下管理功能:
(1)數(shù)據(jù)庫復(fù)制
(2)SQL profiler
(3)SQL trace flag
(4)命令行備份
(5)配置和使用存儲過程sp_configure
有關(guān)SQL Azure更多不被支持的功能,對SQL Server 2008(R2)和SQL Server 2005有所不同,可以參考MSDN:
http://msdn.microsoft.com/en-us/library/ff394115.aspx
訪問SQL Azure中的數(shù)據(jù)
訪問SQL Azure中的數(shù)據(jù),我們可以通過APIs訪問,如ADO.Net、ODBC或者PHP中的數(shù)據(jù)庫訪問,他們使用TDS+SSL的方式來訪問。也可以通過基于Web的客戶端,如瀏覽器、WCF數(shù)據(jù)服務(wù)客戶端、SilverLight等方式,使用HTTP或HTTPS來訪問云中的數(shù)據(jù)。如圖3所示:

圖3 訪問SQL Azure中的數(shù)據(jù)
在上圖所示場景A中,使用應(yīng)用程序代碼存儲數(shù)據(jù)中心訪問權(quán)限,但是數(shù)據(jù)存在于SQL Azure中,應(yīng)用程序可是使用客戶端庫訪問SQL Azure。它的優(yōu)點(diǎn)是直接連接到SQL Azure中的數(shù)據(jù)庫,其缺點(diǎn)是每個客戶端必須使用已經(jīng)提供的數(shù)據(jù)訪問方法如ADO.Net來訪問SQL Azure中的數(shù)據(jù)庫。
在上圖所示的場景B中,應(yīng)用程序代碼在Windows Azure上,應(yīng)用數(shù)據(jù)庫在SQL Azure中的數(shù)據(jù)庫上,可以使用像場景A中的客戶端數(shù)據(jù)訪問類庫來訪問數(shù)據(jù)。場景B中允許了更多的客戶端類型來訪問,如桌面客戶端應(yīng)用和SilverLight應(yīng)用對數(shù)據(jù)的訪問。這種訪問方式的優(yōu)點(diǎn)有:業(yè)務(wù)邏輯離數(shù)據(jù)庫更近、暴露了一些標(biāo)準(zhǔn)接口,如HTTP、SOAP、客戶端程序不必依賴SQL Server 客戶端API。如果使用Windows Azure作為中間層訪問數(shù)據(jù),數(shù)據(jù)庫性能是其***缺點(diǎn)。
SQL Azure VS SQL Server
有關(guān)SQL Azure和SQL Server的詳細(xì)功能對比,這里就不再做出說明,感興趣的讀者可以參考微軟云計算中文博客,其地址是:http://blogs.msdn.com/b/azchina/archive/2010/05/25/sql-azure-vs-sql-server.aspx
或者參考其鏡像站點(diǎn)CSDN博客的關(guān)于SQL Azure和SQL Server的功能對比。地址:http://blog.csdn.net/azurechina/archive/2010/05/18/5604059.aspx
總結(jié)
本文介紹了SQL Server的云計算平臺版本——SQL Azure,但是我們又不能簡單的把SQL Azure看成是構(gòu)建在云端的SQL Server。SQL Azure是一個四層結(jié)構(gòu):基礎(chǔ)架構(gòu)層、平臺層、服務(wù)層和客戶端層,前三層構(gòu)成了微軟數(shù)據(jù)中心,客戶端層使用API或者基于Web的客戶端來訪問存儲在云中的數(shù)據(jù)。
【編輯推薦】
- 微軟云數(shù)據(jù)庫SQL Azure即將發(fā)布 或提供PHP支持
 - SQL Azure方便開發(fā)者踏上云數(shù)據(jù)庫之路
 - SQL Server 2008 R2十大新特性解析
 - SQL Server分析服務(wù)性能優(yōu)化淺析
 - SQL Azure新特性詳解 50GB空間六月推出
 















 
 
 



 
 
 
 