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