云端數(shù)據(jù)庫(kù):微軟SQL Azure及其應(yīng)用場(chǎng)景
我們可以把它看成是SQL Server的云計(jì)算版本,但是又不能簡(jiǎn)單的把SQL Azure看成是構(gòu)建在云端的SQL Server。SQL Azure 是一種可以部署在云端的關(guān)系型數(shù)據(jù)庫(kù),能在任何時(shí)間為客戶提供基于關(guān)系型數(shù)據(jù)庫(kù)的一種服務(wù)。SQL Azure具有四層結(jié)構(gòu):基礎(chǔ)架構(gòu)層、平臺(tái)層、服務(wù)層和客戶端層,前三層構(gòu)成了微軟數(shù)據(jù)中心,客戶端層使用API或者基于Web的客戶端來(lái)訪問(wèn)存儲(chǔ)在云中的數(shù)據(jù)。本文將介紹SQL Azure的主要功能、價(jià)格、應(yīng)用場(chǎng)景、使用T-SQL 操作SQL Azure、SQL Azure Database的功能限制。
SQL Azure的核心功能:
SQL Azure是微軟數(shù)據(jù)平臺(tái)的一個(gè)關(guān)鍵組件,基于 SQL Server 技術(shù)構(gòu)建,由微軟基于云進(jìn)行托管,提供的是可擴(kuò)展、多租戶、高可用的數(shù)據(jù)庫(kù)服務(wù)。SQL Azure Database 幫助簡(jiǎn)化多數(shù)據(jù)庫(kù)的供應(yīng)和部署,開發(fā)人員無(wú)需安裝、設(shè)置數(shù)據(jù)庫(kù)軟件,也不必為數(shù)據(jù)庫(kù)打補(bǔ)丁或進(jìn)行管理。SQL Azure的核心功能表現(xiàn)在:可管理性、可擴(kuò)展性和可編程性。
(1)可管理性
SQL Azure為用戶提供了內(nèi)置的高可用性和容錯(cuò)能力,且無(wú)需客戶進(jìn)行實(shí)際管理。SQL Azure支持?jǐn)?shù)據(jù)應(yīng)用層程序(Data-tier Applications),數(shù)據(jù)庫(kù)應(yīng)用層程序是一個(gè)包含了幾乎某一應(yīng)用所需要的數(shù)據(jù)庫(kù)及實(shí)例對(duì)象的實(shí)體,如表、視圖、存儲(chǔ)過(guò)程、登錄等等。有了實(shí)體以后,原本獨(dú)立的登陸、部署、維護(hù)就可以通過(guò)開發(fā)人員進(jìn)行開發(fā)來(lái)整合成為一個(gè)統(tǒng)一的整體,這樣的一個(gè)整體又叫應(yīng)用程序包,這樣DBA 就可以把原本獨(dú)立的對(duì)象視為一個(gè)數(shù)據(jù)庫(kù)應(yīng)用層的程序來(lái)進(jìn)行部署、監(jiān)控和管理。目前支持的數(shù)據(jù)層應(yīng)用程序有刪除、部署、提取和注冊(cè)數(shù)據(jù)層應(yīng)用程序包。
(2)可擴(kuò)展性
云計(jì)算的一個(gè)關(guān)鍵優(yōu)勢(shì)是用戶可以定義自己的解決方案,使用SQL Azure,可以滿足用戶創(chuàng)建可擴(kuò)展解決方案的需求,可擴(kuò)展性表現(xiàn)在:
全球可擴(kuò)展性(Global Scalability):租用SQL Azure可以采用按需求增長(zhǎng)付費(fèi)(pay-as-you-grow)的策略來(lái)租用,當(dāng)使用SQL Azure的數(shù)據(jù)容量較小時(shí),租用較小的數(shù)據(jù)庫(kù)容量;當(dāng)應(yīng)用程序的數(shù)據(jù)庫(kù)量增大時(shí),再考慮擴(kuò)大數(shù)據(jù)庫(kù)容量。因?yàn)椴煌臄?shù)據(jù)庫(kù)容量的費(fèi)用和不同容量費(fèi)用是不一致的,具體費(fèi)用可參考下文SQL Azure價(jià)格。目前在全球有6座數(shù)據(jù)中心可用,在數(shù)據(jù)庫(kù)擴(kuò)容時(shí)也可以選擇在哪個(gè)數(shù)據(jù)中心上。
Multi-Tenant支持:支持獨(dú)立軟件開發(fā)商所開發(fā)的軟件和服務(wù)。
(3)可編程性
SQL Azure Database 支持 TDS 和 Transact - SQL(T - SQL),客戶可以使用現(xiàn)有技術(shù)在 T – SQL上進(jìn)行開發(fā),還可以使用與現(xiàn)有的客戶自有數(shù)據(jù)庫(kù)軟件相對(duì)應(yīng)的關(guān)系型數(shù)據(jù)模型。SQL Azure Database 提供的是一個(gè)基于云的數(shù)據(jù)庫(kù)管理系統(tǒng),它能夠整合現(xiàn)有工具集,并提供與客戶自有軟件的對(duì)應(yīng)性。具體來(lái)說(shuō),可編程性表現(xiàn)在三個(gè)方面:
熟悉的客戶端模型:支持 TDS和T-SQL,可以使用ADO.NET、 ODBC、 JDBC 和SQL Server driver for PHP。
關(guān)系數(shù)據(jù)模型:使用SQL Server的用戶和管理員非常熟悉SQL Azure的數(shù)據(jù)存儲(chǔ)方式。
數(shù)據(jù)同步和離線支持:可以使用Sync Framework來(lái)進(jìn)行數(shù)據(jù)同步和離線支持。
SQL Azure團(tuán)隊(duì)在Tech ED上展示的SQL Azure Service Update 3已經(jīng)上線,并且完成了一些重要的特性,如50GB數(shù)據(jù)庫(kù)的支持。同時(shí)現(xiàn)已在全球有6座數(shù)據(jù)中心可以使用。
SQL Azure 新功能:
- 更新數(shù)據(jù)庫(kù)版本及***容量:SQL Azure的Web 版***數(shù)據(jù)庫(kù)***容量是5G,在這之前是1G;SQL Azure商業(yè)版的***數(shù)據(jù)***容量是50G,此前是10G。
- 創(chuàng)建或更新數(shù)據(jù)庫(kù):可以通過(guò)T-SQL來(lái)創(chuàng)建或者更新商業(yè)版數(shù)據(jù)庫(kù)至50G。
- 支持查詢數(shù)據(jù)庫(kù)版本和***容量:使用DATABASEPROPERTYEX ( 'database' , 'property' )查詢數(shù)據(jù)庫(kù)某屬性值。
- 空間(Spatial)數(shù)據(jù)支持-:SQL Azure 現(xiàn)提供了對(duì)于地理和幾何學(xué)類型,以及通過(guò)T-SQL進(jìn)行空間數(shù)據(jù)查詢的支持。這是一個(gè)極其重要的特性,這使得Windows Azure Platform可以創(chuàng)建基于空間和位置的應(yīng)用程序。
- HierarchyID 數(shù)據(jù)類型支持:HierarchyID 是可變長(zhǎng)度的系統(tǒng)數(shù)據(jù)類型,使得您能夠在數(shù)據(jù)庫(kù)中存放類樹形結(jié)構(gòu)。在接下來(lái)幾天,我們會(huì)發(fā)布一篇文章來(lái)講解如何在應(yīng)用程序中使用HierarchyID 。
- BCP使用參數(shù)查詢:在SQL Server 2008 R2的版本中,支持BCP查詢,但是需要使用參數(shù):–d database_name。
SQL Azure 的價(jià)格:
默認(rèn)情況下,每個(gè)SQL Azure Server上的SQL Azure支持150個(gè)數(shù)據(jù)庫(kù),包括Master數(shù)據(jù)庫(kù),也就是說(shuō)用戶可以創(chuàng)建149個(gè)數(shù)據(jù)庫(kù)。SQL Azure 提供了兩種版本:Web 版(Web Edition)和商業(yè)版(Business Edition),他們目前的價(jià)格如下表1所示:
***容量 | Web版 | 商業(yè)版 |
0 – 1 GB | $ 9.99 | $99.99 |
1 – 5 GB | $49.95 | $99.99 |
5 – 10 GB | N/A | $99.99 |
10-20 GB | N/A | $199.98 |
20-30 GB | N/A | $299.97 |
30-40 GB | N/A | $399.96 |
40-50 GB | N/A | $499.95 |
表1 SQL Azure價(jià)格
#p#
SQL Azure的應(yīng)用場(chǎng)景
(1)Web應(yīng)用程序
當(dāng)Windows Azure所提供的儲(chǔ)存空間、關(guān)聯(lián)式實(shí)體數(shù)據(jù)(如Windows Azure Blob、Windows Azure Queue、Windows Azure Table)不適合應(yīng)用程序時(shí),可以選擇儲(chǔ)存它的資料在SQL Azure資料庫(kù)中。 由于現(xiàn)有的大部分Web 應(yīng)用程序使用了關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ),而且多數(shù)開發(fā)人員也熟悉這些功能和技術(shù),所以可能會(huì)有一些Web應(yīng)用程序遷移到云中去,這樣數(shù)據(jù)存儲(chǔ)可能就需要使用SQL Azure。
(2)部門/工作組應(yīng)用程序(Departmental/Workgroup Application)
在大公司中,全公司性質(zhì)的數(shù)據(jù)庫(kù)大都使用了容錯(cuò)配置、不間斷電源、磁盤陣列存儲(chǔ)、群集服務(wù)器等方法來(lái)保證數(shù)據(jù)的安全性和可靠性。
使用SQL Azure后,不用考慮容錯(cuò)、7*24數(shù)據(jù)提供、備份恢復(fù)等數(shù)據(jù)庫(kù)管理功能。同一份數(shù)據(jù)會(huì)在不同的地方存儲(chǔ)3份,不用擔(dān)心數(shù)據(jù)丟失。
但是在目前來(lái)看,SQL Azure數(shù)據(jù)存儲(chǔ)策略還有不***的地方,數(shù)據(jù)的安全性是得到了一定的保障,但是如何保證SQL Azure上的數(shù)據(jù)是按照客戶的意圖來(lái)管理的,這是一個(gè)問(wèn)題,如何保證客戶數(shù)據(jù)的商業(yè)秘密,這是另一個(gè)問(wèn)題,這兩大問(wèn)題也是云安全著重要解決的。
(3)數(shù)據(jù)中心
數(shù)據(jù)中心(Data Center,DC)通過(guò)實(shí)現(xiàn)統(tǒng)一的數(shù)據(jù)定義與命名規(guī)范、集中的數(shù)據(jù)環(huán)境,從而達(dá)到數(shù)據(jù)共享與使用的目標(biāo)。一個(gè)典型的數(shù)據(jù)中心常??缍鄠€(gè)供應(yīng)商和多個(gè)產(chǎn)品的組件,包括:主機(jī)設(shè)備、數(shù)據(jù)備份設(shè)備、數(shù)據(jù)存儲(chǔ)設(shè)備、高可用系統(tǒng)、數(shù)據(jù)安全系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)等等。
(4)獨(dú)立軟件+服務(wù)提供者
對(duì)獨(dú)立軟件+服務(wù)提供者來(lái)說(shuō),可以租用SQL Azure來(lái)運(yùn)行自己的程序或服務(wù),尤其是使用微軟動(dòng)態(tài)云能夠讓用戶自己動(dòng)態(tài)管理數(shù)據(jù)中心的基礎(chǔ)設(shè)施(包括服務(wù)器、網(wǎng)絡(luò)和存儲(chǔ)等),包括開通、配置和安裝等。
使用T-SQL 操作SQL Azure
創(chuàng)建數(shù)據(jù)庫(kù)可以使用的T-SQL如表2所示:
T-SQL | 功能 |
CREATE DATABASE Test | 直接創(chuàng)建數(shù)據(jù)庫(kù)Test |
CREATE DATABASE Test (EDITION=’WEB’, MAXSIZE=1GB) | 創(chuàng)建一個(gè)Web版數(shù)據(jù)庫(kù)Test,其***容量是1G,如果超過(guò)***容量將返回40544錯(cuò)誤 |
CREATE DATABASE Test (EDITION=’WEB’, MAXSIZE=5GB) | 創(chuàng)建一個(gè)Web版數(shù)據(jù)庫(kù)Test,其***容量是5G |
CREATE DATABASE Test (EDITION=’BUSINESS’) | 創(chuàng)建一個(gè)商業(yè)版數(shù)據(jù)庫(kù)Test,其***容量是10G |
CREATE DATABASE Test (EDITION=’BUSINESS’, MAXSIZE=50GB) | 創(chuàng)建一個(gè)商業(yè)版數(shù)據(jù)庫(kù)Test,其***容量是50G |
表2 創(chuàng)建數(shù)據(jù)庫(kù)SQL
修改數(shù)據(jù)庫(kù)
在大部分時(shí)間里,我們能夠知道需要的數(shù)據(jù)庫(kù)容量,由于SQL Azure的價(jià)格和云計(jì)算的特點(diǎn),決定了我們可以按需購(gòu)買所需要數(shù)據(jù)庫(kù)的容量。在數(shù)據(jù)庫(kù)內(nèi)容較小時(shí),可以使用Web版本,如果容量增長(zhǎng)超過(guò)了5G,可以購(gòu)買商業(yè)版,這時(shí)候就需要修改數(shù)據(jù)庫(kù)容量,代碼如下:
- ALTER DATABASE Test MODIFY (EDITION=’BUSINESS’, MAXSIZE=50GB)
除此之外,SQL Azure中支持和不支持的T-SQL如下所示。
(1)支持的T-SQL特性:
- 常數(shù)
- 數(shù)據(jù)限制
- 數(shù)據(jù)光標(biāo)
- 數(shù)據(jù)庫(kù)索引管理與索引重建
- 本地?cái)?shù)據(jù)庫(kù)暫存表
- 保留字
- 預(yù)存程序
- 數(shù)據(jù)庫(kù)統(tǒng)計(jì)管理
- 數(shù)據(jù)庫(kù)交易
- 觸發(fā)程序
- 數(shù)據(jù)庫(kù)表、數(shù)據(jù)表聯(lián)結(jié)以及表變量
- Transact-SQL語(yǔ)言元素,像是對(duì)數(shù)據(jù)庫(kù)、表、用戶與登錄等的建立、修改與刪除
- 用戶定義函數(shù)
- 查看表
(2)不支持的Transact-SQL特性:
- SQL CLR
- 數(shù)據(jù)庫(kù)文件配置
- 數(shù)據(jù)庫(kù)映射
- 分布式查詢
- 分布式交易
- 文件組群管理
- 全局暫存表格。
- 稀疏數(shù)據(jù)與索引
- SQL Server組態(tài)選項(xiàng)
- SQL Server Service Broker
- 系統(tǒng)表
- 游標(biāo)
#p#
SQL Azure Database的功能限制
對(duì)不同版本的SQL Server數(shù)據(jù)庫(kù)SQL Azure的功能限制不同,這里主要列出對(duì)SQL Server 2008 R2和SQL Server 2008的功能限制。
(1)對(duì)SQL Server 2008 R2的功能限制
- SQL Server Utility
- PowerShell
- 主數(shù)據(jù)服務(wù)
(2)對(duì)SQL Server 2008的功能限制
- 數(shù)據(jù)捕獲 Change Data Capture
- 數(shù)據(jù)審核 Data Auditing
- 數(shù)據(jù)壓縮 Data Compression
- 擴(kuò)展事件 Extended Events
- CLR 擴(kuò)展的特殊類型和方法 Extension of spatial types and methods through Common Language Runtime (CLR)
- 駐外鍵管理 External Key Management / Extensible Key Management
- 文件流數(shù)據(jù)類型 FILESTREAM Data
- 全文檢索 Integrated Full-Text Search
- Large User-Defined Aggregates (UDAs)
- Large User-Defined Types (UDTs)
- Performance Data Collection (Data Collector)
- 策略管理 Policy-Based Management
- 資源管理 Resource Governor
- SQL Server復(fù)制 SQL Server Replication
- 數(shù)據(jù)加密 Transparent Data Encryption
結(jié)語(yǔ):
SQL Azure是構(gòu)建在SQL Server 2008之上,運(yùn)行云計(jì)算 (Cloud Computing)的關(guān)系數(shù)據(jù)庫(kù)服務(wù),是一種云存儲(chǔ)(Cloud Storage)的實(shí)現(xiàn),它可以隨時(shí)隨地為我們提供關(guān)系型數(shù)據(jù)服務(wù)。本文分析了SQL Azure的功能和新功能、應(yīng)用場(chǎng)景、價(jià)格、支持和不支持的功能,通過(guò)這些介紹給現(xiàn)在或?qū)?lái)使用SQL Azure的用戶一個(gè)理論性的認(rèn)識(shí)。
【編者推薦】