SQL Azure簡介
時間:2022-02-26 22:00:01 | 來源:信息時代
時間:2022-02-26 22:00:01 來源:信息時代
SQL Azure (舊稱 SQL Server Data Services 或 SQL Services) 是由微軟SQL Server 2008為主,建構(gòu)在Windows Azure云操作系統(tǒng)之上,運行云計算 (Cloud Computing)的關(guān)系數(shù)據(jù)庫服務(wù) (Database as a Service),是一種云存儲(Cloud Storage)的實現(xiàn),提供網(wǎng)絡(luò)型的應(yīng)用程序數(shù)據(jù)存儲的服務(wù)。
基礎(chǔ)架構(gòu)
SQL Azure的基底是SQL Server 2008,不過它是一個特殊設(shè)計的SQL Server 2008,并且以Windows Azure為基座平臺,配合Windows Azure的特性,SQL Azure也是一種分散在許多實體基礎(chǔ)架構(gòu)(Physical Infrastucture)與其內(nèi)部許多虛擬服務(wù)器(Virtual Servers)的一種云存儲服務(wù),外部應(yīng)用程序或服務(wù)可以不用在乎數(shù)據(jù)庫實際存儲在哪里,就可以利用SQL Azure顯露的SQL Server Fabric殼層服務(wù)以接受外部連接,并且在內(nèi)部使用連接繞送 (connection routing) 的方式,讓連接可以對應(yīng)到正確的服務(wù)器,而且數(shù)據(jù)庫是在云中由多個服務(wù)器來提供服務(wù),每一次連接所提供服務(wù)的服務(wù)器可能會不同,因此也可以保證云存儲的高度可用性(High availability)。
SQL Azure 架構(gòu)在數(shù)據(jù)中心可分為三個部份:
1. 服務(wù)提供層 (Service Layer):
服務(wù)提供層是 SQL Azure 顯露在客戶端前面的服務(wù)接口 (Facade 模式),負責(zé)接取所有向 SQL Azure 提交要求的 TDS over SSL 連接與指令,當(dāng)連接進入 SQL Azure 時,SQL Azure Load Balancer 會分派連接到不同的 SQL Azure Gateway 中。SQL Azure Gateway系負責(zé)處理 TDS 連接,管理連接層安全性 (connection-level security) 以及解析指令是否有內(nèi)含潛在威脅的指令,再交由連接管理員 (Connection Manager) 將連接分派到位于平臺提供層內(nèi)不同的 SQL Azure 數(shù)據(jù)庫服務(wù)器中進行處理,SQL Azure Gateway 也會管理對 SQL Azure 的連接,以避免可能會封鎖住服務(wù)器的連接 (例如過長的查詢或過長的數(shù)據(jù)庫交易等)。
2. 平臺提供層 (Platform Layer):
平臺提供層則是以 Windows Azure Computes 的虛擬機簇 (Cluster),每臺虛擬機都安裝有 SQL Server 2008 以及管理一定數(shù)量的數(shù)據(jù)庫,通常一份數(shù)據(jù)庫會分散到三至五臺的 SQL Server VM 中,而每臺 SQL Server VM 也安裝了 SQL Azure Fabric 中控軟件,并通過 SQL Azure Fabric 與 SQL Azure Gateway 的管控下,所有對單一數(shù)據(jù)庫的連接都不一定會持續(xù)連入同一臺 SQL Server VM 中。SQL Server VM 內(nèi)也安裝了 SQL Azure Management Service,它會負責(zé)對每個數(shù)據(jù)庫間的數(shù)據(jù)復(fù)寫工作,以保障 SQL Azure 的基本高可用性要求。每臺 SQL Server VM 內(nèi)的 SQL Azure Fabric 和 Management Service 都會彼此交換健康與監(jiān)控信息等,以保持整體服務(wù)的健康與可監(jiān)控性。
3. 基礎(chǔ)建設(shè)層 (Infrastructure Layer):
基礎(chǔ)建設(shè)層由 Windows Azure Computes 以及其高度可擴充性的運算與網(wǎng)絡(luò)基礎(chǔ)架構(gòu)來組成,以支持 SQL Azure 所需的高可用性以及高擴充性等云特色。
供應(yīng)模型
SQL Azure 服務(wù)對外的供應(yīng)模型 (Provisioning Model) 的設(shè)計以平緩企業(yè)進入云的學(xué)習(xí)曲線為主要考量,因此 SQL Azure 對外提供的是一臺邏輯服務(wù)器 (Logical Server),此服務(wù)器是由 SQL Azure Gateway 所顯露,每一個 Windows Azure 的帳戶都可以創(chuàng)建一臺 SQL Azure Server,就像在本地的 SQL Server 運行個體一樣,但這個運行個體是在云上運行且具有高可用性等特征的數(shù)據(jù)庫服務(wù)器。
每臺 SQL Azure Server 都具有下列內(nèi)容:
DNS 名稱,客戶端應(yīng)用程序要使用這個 DNS 名稱連入數(shù)據(jù)庫,格式為 [serverid].database.windows.net。
master 數(shù)據(jù)庫,此數(shù)據(jù)庫會存放登錄信息 (logins),服務(wù)器角色以及管理服務(wù)器所必要的動態(tài)管理查看表 (Dynamic Management View)。
SQL Azure 防火墻,用來管理連入 SQL Azure Server 的連接來源。
用戶數(shù)據(jù)庫,每個數(shù)據(jù)庫都有不同的計費標(biāo)準(zhǔn),大小由 1GB 到 50GB 不等。一臺 SQL Azure Server 可以有多個用戶數(shù)據(jù)庫。
客戶端只要可以支持 TDS (Tabular Data Stream) over SSL,即可連接與訪問 SQL Azure Server 的數(shù)據(jù)庫資源,這表示像ODBC、ADO.NET或JDBC的 SQL Server 最新版驅(qū)動程序或SQL Native Client Library都可以連接到SQL Azure Server。
Transact-SQL的支持
作為SQL Server版本Transact-SQL的子集,不是所有的功能在SQL Azure上都有被支持,由于實體服務(wù)器架構(gòu)以及安全性的問題,許多分布式的查詢法以及常用的數(shù)據(jù)庫復(fù)制法都沒有辦法被SQL Azure支持,而在SQL Server 2005開始加入的SQL CLR能力也無法在SQL Azure上支持(因為它必須要掛載在SQL Azure實體服務(wù)器上,但客戶端通常無法知道當(dāng)下連到的服務(wù)器是否為有安裝SQL CLR組件的那一臺)。
安全性
SQL Azure 的安全性有兩個部份,一個是管理傳輸層次安全性的防火墻,一個是管理訪問控制的基本安全功能。
防火墻
每個 SQL Azure Server 都會有自己的防火墻 (Firewall) 設(shè)置,管理人員可以自由設(shè)置下列不同的客戶端來源模型:
只允許云應(yīng)用程序訪問 SQL Azure Server,網(wǎng)段設(shè)為 0.0.0.0-0.0.0.0
單一或多重網(wǎng)址 (address)。
單一或多重網(wǎng)段 (segment)。
SQL Azure Server 的防火墻設(shè)置會存儲在 SQL Azure Gateway 中,作為管控客戶端連接之用。
基本安全功能
SQL Azure Server會有兩種安全組群:
服務(wù)器角色:有 dbmanager 以及 loginmanager 兩種。
dbmanager:賦與用戶可以創(chuàng)建數(shù)據(jù)庫(即CREATE DATABASE指令)的權(quán)利。
loginmanager:賦與用戶可以創(chuàng)建登錄帳戶(即CREATE LOGIN指令)的權(quán)利。
數(shù)據(jù)庫角色:與安裝在本機或服務(wù)器上版本的SQL Server相同。
SQL Azure Server目前只支持使用SQL驗證(SQL Authentication)的安全驗證方式,以往的Windows驗證在SQL Azure上不支持。而在SQL Azure Server創(chuàng)建時,除了master數(shù)據(jù)庫以外,還會再多創(chuàng)建一個具有SQL Server的sa帳戶相等權(quán)力的帳戶,供用戶操作SQL Azure Server用,此帳戶稱為服務(wù)器級主帳戶(server-level principal),基于數(shù)據(jù)庫的安全,管理人員必須要在 SQL Azure Server 中再創(chuàng)建一個或多個登錄帳戶后,再授權(quán)給數(shù)據(jù)庫,客戶端應(yīng)用程序不宜使用服務(wù)器級主帳戶來訪問 SQL Azure Server 與數(shù)據(jù)庫。
限制
SQL Azure 基于架構(gòu)上的設(shè)計與天生的限制,SQL Azure Server的帳戶與安全控制會有下列限制[6]:
只有服務(wù)器級主帳戶才具有變更密碼的能力, loginmanager 組群的成員帳戶不具變更密碼的權(quán)限,同時如果要訪問master數(shù)據(jù)庫,則該用戶帳戶必須要被對應(yīng)到master數(shù)據(jù)庫,同時服務(wù)器級主帳戶是不可以變更或刪除的,同時只要是被設(shè)為服務(wù)器級主帳戶的用戶,就算沒有給予 dbmanager 或 loginmanager ,仍然可以創(chuàng)建數(shù)據(jù)庫并管理用戶。
只要是登錄服務(wù)器,一律以master為默認數(shù)據(jù)庫,US-English為默認的登錄語系。
若要運行CREATE/ALTER/DROP LOGIN或CREATE/DROP DATABASE,必須要先連至master數(shù)據(jù)庫。
當(dāng)要在ADO.NET運行前述指令時,不可以使用參數(shù)化命令,而且前述命令于每個SQL批量也只能有一個(且是唯一的一個)。
當(dāng)要運行CREATE USER配合FOR/FROM LOGIN選項時,它也必須是SQL批量中唯一的一個。
當(dāng)要運行ALTER USER配合WITH LOGIN選項時,它也必須是SQL批量中唯一的一個。
只有服務(wù)器級主帳戶以及被賦與 dbmanager 角色的成員才有運行CREATE DATABASE與DROP DATABASE的權(quán)力。
只有服務(wù)器級主帳戶以及被賦與 loginmanager 角色的成員才有運行CREATE LOGIN、ALTER LOGIN與DROP DATABASE的權(quán)力。
若想訪問master數(shù)據(jù)庫,則該帳戶必須要對應(yīng)到master數(shù)據(jù)庫。