Windows Azure SQL Database

SQL SQL SQL

WindowsAzureSQLdatabase(舊稱SQLAzure,SQLServerDataServices或SQLServices)是由微軟SQLServer2008為主,建構在WindowsAzure雲作業系統之上,運行雲計算(CloudComputing)的關係資料庫服務(DatabaseasaService),是一種雲存儲(CloudStorage)的實現,提供網路型的應用程式數據存儲的服務。

基礎架構

WindowsAzureSQLDatabsae的基底是SQLServer(通常以最新版為主),不過它是一個特殊設計的SQLServer,並且以WindowsAzure為基座平台,配合WindowsAzure的特性,WindowsAzureSQLDatabsae也是一種分散在許多實體基礎架構(PhysicalInfrastucture)與其內部許多虛擬伺服器(VirtualServers)的一種雲存儲服務,外部應用程式或服務可以不用在乎資料庫實際存儲在哪裡,就可以利用WindowsAzureSQLDatabsae顯露的SQLFabric殼層服務以接受外部連線,並且在內部使用連線繞送(connectionrouting)的方式,讓連線可以對應到正確的伺服器,而且資料庫是在雲中由多個伺服器來提供服務,每一次連線所提供服務的伺服器可能會不同,因此也可以保證雲存儲的高度可用性(Highavailability)。
WindowsAzureSQLDatabsae架構在數據中心可分為三個部份[1]:
1.服務提供層(ServiceLayer):
服務提供層是WindowsAzureSQLDatabsae顯露在客戶端前面的服務接口(Facade模式),負責接取所有向WindowsAzureSQLDatabsae提交要求的TDSoverSSL連線與指令,當連線進入WindowsAzureSQLDatabsae時,WindowsAzureSQLDatabsaeLoadBalancer會分派連線到不同的WindowsAzureSQLDatabsaeGateway中。WindowsAzureSQLDatabsaeGateway系負責處理TDS連線,管理連線層安全性(connection-levelsecurity)以及解析指令是否有內含潛在威脅的指令,再交由連線管理員(ConnectionManager)將連線分派到位於平台提供層內不同的WindowsAzureSQLDatabsae資料庫伺服器中進行處理,WindowsAzureSQLDatabsaeGateway也會管理對SQLAzure的連線,以避免可能會封鎖住伺服器的連線(例如過長的查詢或過長的資料庫交易等)。
2.平台提供層(PlatformLayer):
平台提供層則是以WindowsAzureComputes的虛擬機簇(Cluster),每台虛擬機都安裝有SQLServer以及管理一定數量的資料庫,通常一份資料庫會分散到三至五台的SQLServerVM中,而每台SQLServerVM也安裝了SQLFabric中控軟體,並通過SQLFabric與WindowsAzureSQLDatabsaeGateway的管控下,所有對單一資料庫的連線都不一定會持續連入同一台SQLServerVM中。SQLServerVM內也安裝了SQLAzureManagementService,它會負責對每個資料庫間的數據複寫工作,以保障WindowsAzureSQLDatabsae的基本高可用性要求。每台SQLServerVM內的SQLFabric和ManagementService都會彼此交換健康與監控信息等,以保持整體服務的健康與可監控性。
3.基礎建設層(InfrastructureLayer):
基礎建設層由WindowsAzureComputes以及其高度可擴充性的運算與網路基礎架構來組成,以支持WindowsAzureSQLDatabsae所需的高可用性以及高擴充性等雲特色。
[編輯]供應模型
WindowsAzureSQLDatabsae服務對外的供應模型(ProvisioningModel)[2]的設計以平緩企業進入雲的學習曲線為主要考量,因此WindowsAzureSQLDatabsae對外提供的是一台邏輯伺服器(LogicalServer),此伺服器是由SQLGateway所顯露,每一個WindowsAzure的帳戶都可以創建一台SQLDatabaseServer,就像在本地的SQLServer運行個體一樣,但這個運行個體是在雲上運行且具有高可用性等特徵的資料庫伺服器。
每台SQLDatabaseServer都具有下列內容:
DNS名稱,客戶端應用程式要使用這個DNS名稱連入資料庫,格式為[serverid].database.windows.net。
master資料庫,此資料庫會存放登錄信息(logins),伺服器角色以及管理伺服器所必要的動態管理查看錶(DynamicManagementView)。
WindowsAzureSQLDatabsae防火牆,用來管理連入SQLDatabaseServer的連線來源。
用戶資料庫,每個資料庫都有不同的計費標準[3],大小由100MB到150GB不等。一台SQLDatabaseServer可以有多個用戶資料庫。
客戶端只要可以支持TDS(tabularDataStream)overSSL,即可連線與訪問SQLDatabaseServer的資料庫資源,這表示像ODBC、ADO.NET或JDBC的SQLServer最新版驅動程式或SQLNativeClientLibrary都可以連線到SQLDatabaseServer。
[編輯]Transact-SQL的支持
作為SQLServer版本Transact-SQL的子集,不是所有的功能在WindowsAzureSQLDatabsae上都有被支持,由於實體伺服器架構以及安全性的問題,許多分散式的查詢法以及常用的資料庫複製法都沒有辦法被WindowsAzureSQLDatabsae支持,而在SQLServer2005開始加入的SQLCLR能力也無法在WindowsAzureSQLDatabsae上支持(因為它必須要掛載在WindowsAzureSQLDatabsae實體伺服器上,但客戶端通常無法知道當下連到的伺服器是否為有安裝SQLCLR組件的那一台)。
受支持的Transact-SQL特性[4]:
常數。
數據限制。
數據游標。
資料庫索引管理與索引重建。
本地資料庫暫存表格。
保留字。
預存程式。
資料庫統計管理。
資料庫交易
觸發程式
資料庫表、數據表聯結以及表格變數。
Transact-SQL語言元素,像是對資料庫、表格、用戶與登錄等的創建、修改與刪除。
用戶定義函式
查看錶。
未受支持的Transact-SQL特性:
SQLCLR。
資料庫檔案配置。
資料庫映射。
分散式查詢。
分散式交易。
檔案組群管理。
全局暫存表格。
稀疏數據與索引。
SQLServer組態選項。
SQLServerServiceBroker
系統表格。
追蹤旗標。
[編輯]安全性
WindowsAzureSQLDatabsae的安全性有兩個部份,一個是管理傳輸層次安全性的防火牆,一個是管理訪問控制的基本安全功能。
[編輯]防火牆
每個SQLDatabaseServer都會有自己的防火牆(Firewall)設定,管理人員可以自由設定下列不同的客戶端來源模型:
只允許雲應用程式訪問SQLAzureServer,網段設為0.0.0.0-0.0.0.0
單一或多重網址(address)。
單一或多重網段(segment)。
SQLDatabaseServer的防火牆設定會存儲在SQLGateway中,作為管控客戶端連線之用。
[編輯]基本安全功能
SQLDatabaseServer會有兩種安全組群[5]:
伺服器角色:有dbmanager以及loginmanager兩種。
dbmanager:賦與用戶可以創建資料庫(即CREATEDATABASE指令)的權利。
loginmanager:賦與用戶可以創建登錄帳戶(即CREATELOGIN指令)的權利。
資料庫角色:與安裝在本機或伺服器上版本的SQLServer相同。
SQLDatabaseServer目前只支持使用SQL驗證(SQLAuthentication)的安全驗證方式,以往的Windows驗證在WindowsAzureSQLDatabase上不支持。而在SQLDatabaseServer創建時,除了master資料庫以外,還會再多創建一個具有SQLServer的sa帳戶相等權力的帳戶,供用戶操作SQLDatabaseServer用,此帳戶稱為伺服器級主帳戶(server-levelprincipal),基於資料庫的安全,管理人員必須要在SQLDatabaseServer中再創建一個或多個登錄帳戶後,再授權給資料庫,客戶端應用程式不宜使用伺服器級主帳戶來訪問SQLAzureServer與資料庫。
[編輯]限制
WindowsAzureSQLDatabase基於架構上的設計與天生的限制,SQLDatabaseServer的帳戶與安全控制會有下列限制[6]:
只有伺服器級主帳戶才具有變更密碼的能力,loginmanager組群的成員帳戶不具變更密碼的許可權,同時如果要訪問master資料庫,則該用戶帳戶必須要被對應到master資料庫,同時伺服器級主帳戶是不可以變更或刪除的,同時只要是被設為伺服器級主帳戶的用戶,就算沒有給予dbmanager或loginmanager,仍然可以創建資料庫並管理用戶。
只要是登錄伺服器,一律以master為默認資料庫,US-English為默認的登錄語系。
若要運行CREATE/ALTER/DROPLOGIN或CREATE/DROPDATABASE,必須要先連至master資料庫。
當要在ADO.NET運行前述指令時,不可以使用參數化命令,而且前述命令於每個SQL批量也只能有一個(且是唯一的一個)。
當要運行CREATEUSER配合FOR/FROMLOGIN選項時,它也必須是SQL批量中唯一的一個。
當要運行ALTERUSER配合WITHLOGIN選項時,它也必須是SQL批量中唯一的一個。
只有伺服器級主帳戶以及被賦與dbmanager角色的成員才有運行CREATEDATABASE與DROPDATABASE的權力。
只有伺服器級主帳戶以及被賦與loginmanager角色的成員才有運行CREATELOGIN、ALTERLOGIN與DROPDATABASE的權力。
若想訪問master資料庫,則該帳戶必須要對應到master資料庫。
[編輯]工具與開發支持
WindowsAzureSQLDatabase基於資料庫雲化並降低學習曲線的主要訴求之下,開發工具與管理工具基本上會與SQLServer完全相同,但也有基於SQLDatabase所發展的工具。
[編輯]開發工具
開發人員可利用VisualStudio2010的伺服器管理員也可以連線到SQLDatabaseServer並管理資料庫與數據結構。SQLServer2008(非R2)則可通過輸入連線字元串的方式連線SQLDatabaseServer,或是使用命令行工具sqlcmd.exe連到SQLDatabaseServer。在WindowsAzureSQLDatabase管理接口中可獲得連線字元串的示例。
SQLDatabaseServer可接受TDSoverSSL的通信與指令,因此開發人員可利用ADO,ADO.NET,EntityFramework,LINQtoSQL或其他可產生TDSoverSSL的客戶端庫(ex:SQLNativeClient,JDBC,SQLServerDriverforPHP等)來訪問SQLDatabaseServer與資料庫。
[編輯]管理工具
SQLServerManagementStudio可直接管理WindowsAzureSQLDatabase,但目前只有SQLServer2008R2可完全兼容於WindowsAzureSQLDatabase的管理,而SQLServer2008的SSMS僅支持Transact-SQL指令層次的管理,SQLServer2005以及更早版本的SQLServer管理工具則無法支持。除了ManagementStudio以外,微軟也在WindowsAzurePortal中設計了SQLAzureDatabaseManager(原先的SQLAzureWebAdministrator),讓管理人員得以直接利用WindowsAzurePortal來管理資料庫內的對象(如數據表,預存程式,查看錶等對象)。
[編輯]服務管理API
WindowsAzureSQLDatabase在2011年五月份的更新中,加入了一組服務管理的API,稱為SQLAzureServerAPI,它允許開發人員使用與WindowsAzure服務管理API相似的方式訪問WindowsAzureSQLDatabase上的管理信息,並且可直接下指令給SQLDatabaseServer來運行一些管理工作。
[編輯]其他服務
[編輯]odataServices
這是在WindowsAzureSQLDatabase開發初期時提供的RESTAPI群,在SQLAzure團隊決定使用TDS協定開放SQLAzure資料庫後即暫停開發,在WindowsAzureSQLDatabase服務正式發布後,這個RESTAPI群即恢復開發,此RESTAPI可符合OData協定規格,目前己經停止開發,由ASP.NETMVCOData支持或WCFWebAPIOData支持功能取代。
[編輯]SQLReporting
這是WindowsAzureSQLDatabase上的ReportingServices,可以讓企業與開發人員直接利用SQLAzure資料庫來產制BusinessIntelligence的解決方案,SQLReportingServices可支持SQLServerReportingServices的大部份功能,並且沿用BusinessIntelligenceDevelopmentStudio作為報表開發的工具。
[編輯]SQLDataSync
SQLDataSync是微軟開發作為雲(Cloud)與本地端(On-premise)數據同步化的服務,以MicrosoftSyncFramework為基礎的同步工具,可以在雲與企業內部或客戶端(手持式設備或是電腦)進行數據的同步工作。

相關詞條

熱門詞條

聯絡我們