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