微軟SQL Azure云數據庫開發揭秘
應該沒有開發者不認識Microsoft SQL Server,但是肯定有開發者不知SQL Azure 為何物。SQL Azure 是微軟云計算平臺(Windows Azure Platform)的三大組成部分之一,是一個部署在云端的關系型數據庫引擎,它支持SQL Server中絕大多數和開發有關的功能。也可以簡單的認為SQL Azure就是SQL Server的云端版本,但是還是有一些區別,我們將在下文進行介紹。本文對SQL Azure做一個概述,主要從SQL Azure的架構、主要功能、訪問SQL Azure的數據、SQL和SQL Server功能比較這幾個方面來介紹,以期大家對SQL Azure有一個整體性的認識。
SQL Azure的架構
就像微軟云計算服務平臺(在這里筆者認為微軟云計算服務平臺包含了微軟云計算平臺,還包括了構建在此平臺上的服務,如living Service,當然這只是作者的理解,值得商榷。)上的其它服務一樣,SQL Azure也是一個高可用性、高可擴展性的數據實體服務,這個服務跑在云端,或者說是跑在微軟公司在世界各地建立的數據中心上。
數據中心(Data Center,DC)通過實現統一的數據定義與命名規范、集中的數據環境,從而達到數據共享與使用的目標。一個典型的數據中心常常跨多個供應商和多個產品的組件,包括:主機設備、數據備份設備、數據存儲設備、高可用系統、數據安全系統、數據庫系統等等,當前數據中心和下一代數據中心的參考架構如圖1:示:
圖1 數據中心架構
其實我們從上圖中的下一代數據中心架構可以看出來,目前構建云計算平臺的數據中心是就是上圖中下一代數據中心架構的實現。微軟數據中心還提供了負載均衡、數據容災、備份恢復功能,當然,在未來它可能支持的功能有:MARS支持、空間坐標數據和50GB的容量選項。還會提供一個SQL Azure Labs,其中包含一些未來可能具備的加強功能,比如將要亮相的OData Services。SQL Azure的整體架構如圖2所示:
圖2 SQL Azure架構
由圖2我們可以看出,SQL Azure是一個四層架構,基礎設施層(Infrastructure Layer)、平臺層(Platform Layer)、服務層(Service Layer)、客戶端層(Client Layer),基礎設施層、平臺層和服務層構成了微軟數據中心。下面我們分別予以介紹。
基礎設施層
基礎設置提供了硬件支持和操作系統,以及對服務層所運行的服務管理。同時也是核心數據層,可以為一個數據中心提供多個共享服務。
平臺層
平臺層由三部分組成:SQL Server實例、SQL Server Fabric、管理服務。SQL Server實例就是一個SQL Server數據庫引擎。每個SQL Server數據庫引擎實例各有一套不為其他實例共享的系統及用戶數據庫。由于實例各有一套不為其他實例共享的系統及用戶數據庫,所以各實例的運行是獨立的,一個實例的運行不會受其他實例運行的影響,也不會影響其他實例的運行。在一臺計算機上安裝多個SQL Server實例,就相當于把這臺計算機模擬成多個數據庫服務器,而且這些模擬的數據庫服務器是獨立且同時運行的。
SQL Server Fabric是一個底層框架,是一個分布式的框架,集成了網絡、服務器和存儲,因此這個框架能夠使得SQL Azure自動進行負載均衡、數據容災、備份恢復。
管理服務能夠對運行在其上的服務進行健康檢查、升級或者打補丁。并為SQL Server Fabric提供軟硬件支持。
服務層
服務層連接了客戶端層和平臺層,包含三大功能:數據提供(Provisioning)、賬單和計量(Billing and 、Metering)、連接路由(Connection Routing),期中Provisioning 列舉了微軟云計算平臺賬戶。服務層同時暴露了帶有SSL的列表數據流(Tabular Data Stream ,TDS)給客戶端層。
客戶端層
客戶端層是唯一運行在微軟數據中心之外的一層,不是使用SQL Azure任何特殊的組件,而是使用了當前客戶端上安裝的SQL Server的功能,如ADO.Net、WCF服務、ODBC、SQL Server管理工具。客戶端層使用API初始化一個TDS連接,通過1433端口連接到SQL Azure上。客戶端層運行我們使用數據的工具——SQL Server來構建云應用。
SQL Azure的主要功能
SQL Azure目前的不完全支持SQL Server上的所有功能,如分析服務、鏡像、報表服務以及能夠選擇不同的服務提供者提供不同的服務。這是因為當前的網絡狀況和云計算平臺部署需求所決定的,在將來肯定會提供更多功能,如Dallas。我們SQL Azure的主要功能分成三部分:數據庫功能、應用程序功能和管理功能。
數據庫功能
支持的數據庫功能如下:
(1)表的增刪改查(CRUD),試圖、索引
(2)TSQL query JOIN statements
(3)觸發器
(4)TSQL functions
(***pplication stored procedures (only TSQL)
(6)Table constraints
(7)基于Session的臨時表
(8)Table variables
(9)Local transactions
(10)安全角色
(11)SUSER_SNAME函數,返回當前安全登錄名
(12)MARS,多活動結果集
不支持的數據庫功能如下:
(1)分布式查詢
(2)分布式Transactions
(3)任何 TSQL query and views改變或者恢復物理資源信息
(4)自定義數據類型
應用程序功能
應用程序功能不支持的功能有:
(1)Service Broker
(2)HTTP access
(3)CLR stored procedures
管理功能
SQL Azure支持數據應用層程序(Data-tier Applications),數據庫應用層程序是一個包含了幾乎某一應用所需要的數據庫及實例對象的實體,如表、視圖、存儲過程、登錄等等。有了實體以后,原本獨立的登陸、部署、維護就可以通過開發人員進行開發來整合成為一個統一的整體,這樣的一個整體又叫應用程序包,這樣DBA 就可以把原本獨立的對象視為一個數據庫應用層的程序來進行部署、監控和管理。目前支持的數據層應用程序有刪除、部署、提取和注冊數據層應用程序包。不僅如此,還支持的管理功能有:
(1)計劃和統計
(2)索引開啟
(3)查詢開啟
SQL Azure不支持一下管理功能:
(1)數據庫復制
(2)SQL profiler
(3)SQL trace flag
(4)命令行備份
(5)配置和使用存儲過程sp_configure
有關SQL Azure更多不被支持的功能,對SQL Server 2008(R2)和SQL Server 2005有所不同,可以參考MSDN:
http://msdn.microsoft.com/en-us/library/ff394115.aspx
訪問SQL Azure中的數據
訪問SQL Azure中的數據,我們可以通過APIs訪問,如ADO.Net、ODBC或者PHP中的數據庫訪問,他們使用TDS+SSL的方式來訪問。也可以通過基于Web的客戶端,如瀏覽器、WCF數據服務客戶端、SilverLight等方式,使用HTTP或HTTPS來訪問云中的數據。如圖3所示:
圖3 訪問SQL Azure中的數據
在上圖所示場景A中,使用應用程序代碼存儲數據中心訪問權限,但是數據存在于SQL Azure中,應用程序可是使用客戶端庫訪問SQL Azure。它的優點是直接連接到SQL Azure中的數據庫,其缺點是每個客戶端必須使用已經提供的數據訪問方法如ADO.Net來訪問SQL Azure中的數據庫。
在上圖所示的場景B中,應用程序代碼在Windows Azure上,應用數據庫在SQL Azure中的數據庫上,可以使用像場景A中的客戶端數據訪問類庫來訪問數據。場景B中允許了更多的客戶端類型來訪問,如桌面客戶端應用和SilverLight應用對數據的訪問。這種訪問方式的優點有:業務邏輯離數據庫更近、暴露了一些標準接口,如HTTP、SOAP、客戶端程序不必依賴SQL Server 客戶端API。如果使用Windows Azure作為中間層訪問數據,數據庫性能是其***缺點。
SQL Azure VS SQL Server
有關SQL Azure和SQL Server的詳細功能對比,這里就不再做出說明,感興趣的讀者可以參考微軟云計算中文博客,其地址是:http://blogs.msdn.com/b/azchina/archive/2010/05/25/sql-azure-vs-sql-server.aspx
或者參考其鏡像站點CSDN博客的關于SQL Azure和SQL Server的功能對比。地址:http://blog.csdn.net/azurechina/archive/2010/05/18/5604059.aspx
總結
本文介紹了SQL Server的云計算平臺版本——SQL Azure,但是我們又不能簡單的把SQL Azure看成是構建在云端的SQL Server。SQL Azure是一個四層結構:基礎架構層、平臺層、服務層和客戶端層,前三層構成了微軟數據中心,客戶端層使用API或者基于Web的客戶端來訪問存儲在云中的數據。
【編輯推薦】
- 微軟云數據庫SQL Azure即將發布 或提供PHP支持
- SQL Azure方便開發者踏上云數據庫之路
- SQL Server 2008 R2十大新特性解析
- SQL Server分析服務性能優化淺析
- SQL Azure新特性詳解 50GB空間六月推出