向雲挺進:解讀SQL Azure雲資料庫開發

來源:互聯網
上載者:User
應該沒有開發人員不認識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

  (5)Application 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的用戶端來訪問儲存在雲中的資料。

 

 

IT168:http://tech.it168.com/a2010/0623/1069/000001069636_all.shtml

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.