解析SQL Azure數(shù)據(jù)平臺(tái)
SQL Azure是一個(gè)部署在云端的關(guān)系型數(shù)據(jù)庫(kù),它支持SQL Azure中絕大多數(shù)和開(kāi)發(fā)有關(guān)的功能。作為一個(gè)部署在云端的數(shù)據(jù)庫(kù)引擎,絕大多數(shù)的管理工作都由微軟完成,因此不用擔(dān)心任何諸如備份、集群等管理方面的問(wèn)題,微軟的服務(wù)許可協(xié)議(Service Level Agreement, SLA)確保了數(shù)據(jù)庫(kù)服務(wù)器平均每個(gè)月將有99.99%的時(shí)間在線。也正是因?yàn)檫@點(diǎn),目前暫時(shí)向用戶沒(méi)有暴露過(guò)多的管理功能。
SQL Azure除了提供了關(guān)系型數(shù)據(jù)庫(kù)服務(wù),同時(shí)還將提供更多數(shù)據(jù)相關(guān)的功能,例如數(shù)據(jù)同步、報(bào)表和商業(yè)智能?;跀?shù)據(jù)同步的功能,SQL Azure數(shù)據(jù)服務(wù)能夠與本地的SQL Server數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)同步,在數(shù)據(jù)層面實(shí)現(xiàn)了傳統(tǒng)應(yīng)用于云端應(yīng)用的整合與并存。
SQL Azure服務(wù)架構(gòu)(圖片來(lái)源于網(wǎng)絡(luò))
開(kāi)發(fā)人員可以使用現(xiàn)有的知識(shí),例如ADO.NET Entity Framework (EDM), LINQ to SQL, 甚至是傳統(tǒng)的DataSet、ODBC等技術(shù),來(lái)訪問(wèn)位于SQL Azure上的數(shù)據(jù)。絕大多數(shù)現(xiàn)有的數(shù)據(jù)訪問(wèn)程序只需要修改一個(gè)連接字符串,便能順利訪問(wèn)SQL Azure。
SQL Server 2008 Management Studio R2針對(duì)SQL Azure也提供了很強(qiáng)大的支持。目前的版本已經(jīng)支持訪問(wèn)當(dāng)前的SQL Azure數(shù)據(jù)庫(kù),生成能在SQL Azure上運(yùn)行的T-SQL腳本,從而方便大家將數(shù)據(jù)庫(kù)遷移至SQL Azure。今后的版本中會(huì)對(duì)SQL Azure提供更多更強(qiáng)大的支持。
SQL Azure體系架構(gòu)
SQL Azure是一個(gè)具有高擴(kuò)展性和高可用性的云端數(shù)據(jù)庫(kù)服務(wù)。和其他的Windows Azure服務(wù)一樣,SQL Azure也運(yùn)行在微軟遍布全球的數(shù)據(jù)中心。數(shù)據(jù)中心的基礎(chǔ)架構(gòu)為SQL Azure服務(wù)提供了網(wǎng)絡(luò)負(fù)載平衡、故障轉(zhuǎn)移和備份的能力。如下圖所示顯示了SQL Azure的體系架構(gòu)。
SQL Azure的體系架構(gòu)(圖片來(lái)源于網(wǎng)絡(luò))
SQL Azure服務(wù)由4個(gè)層次組成:基礎(chǔ)設(shè)施層、平臺(tái)層、服務(wù)層和客戶端層。除了客戶端以外,其他3層都運(yùn)行在微軟的數(shù)據(jù)中心。
1. 基礎(chǔ)設(shè)施層
基礎(chǔ)設(shè)施層為上層的應(yīng)用提供了硬件和操作系統(tǒng)的管理接口。它跨越了數(shù)據(jù)中心的許多服務(wù)。
2. 平臺(tái)層
平臺(tái)層由SQL Server服務(wù)器實(shí)例、SQL Azure fabric控制器和其他管理服務(wù)組成。SQL Server數(shù)據(jù)庫(kù)實(shí)例代表了客戶部署的數(shù)據(jù)和數(shù)據(jù)備份,以及底層的操作系統(tǒng)實(shí)例。SQL Azure fabric用于完成數(shù)據(jù)庫(kù)的自動(dòng)部署、備份、故障轉(zhuǎn)移和設(shè)置負(fù)載均衡。SQL Azure fabric負(fù)責(zé)為用戶的數(shù)據(jù)創(chuàng)建3個(gè)備份,并且基于這些備份提供自動(dòng)的故障轉(zhuǎn)移能力。
如果用戶的主數(shù)據(jù)庫(kù)實(shí)例出現(xiàn)故障,SQL Azure fabric將會(huì)從可用的3個(gè)備份中選擇一個(gè)作為新的主數(shù)據(jù)庫(kù)實(shí)例,并將所有通信信息發(fā)往新的主數(shù)據(jù)庫(kù)。之后,SQL Azure fabric會(huì)創(chuàng)建新的備份數(shù)據(jù)庫(kù)實(shí)例,以維持3次備份的原則。管理服務(wù)負(fù)責(zé)系統(tǒng)的補(bǔ)丁、升級(jí)、一致性,并且負(fù)責(zé)對(duì)底層硬件系統(tǒng)進(jìn)行配置。
3. 服務(wù)層
服務(wù)層直接接入外網(wǎng)的設(shè)備組中,作為平臺(tái)層接入外部網(wǎng)絡(luò)的網(wǎng)關(guān)。它向最終用戶提供TDS(Tabular DATA Stream)協(xié)議的訪問(wèn)端口,用戶通過(guò)該協(xié)議訪問(wèn)SQL Azure內(nèi)部的數(shù)據(jù)。這和過(guò)去SQL Azure的操作是一樣的。服務(wù)層同時(shí)還提供了流量計(jì)費(fèi)及用戶賬戶的配置服務(wù)。
注意:客戶端程序通過(guò)TDS (Tabular DATA Stream)協(xié)議訪問(wèn)微軟SQL-Server服務(wù)器中的數(shù)據(jù)庫(kù)。
服務(wù)層暴露了TDS協(xié)議的接口,使用了基于SSL的1433端口。服務(wù)層負(fù)責(zé)將客戶的TDS連接路由到平臺(tái)層的用戶數(shù)據(jù)庫(kù)實(shí)例上。服務(wù)層保留了主數(shù) 據(jù)庫(kù)及其備份數(shù)據(jù)庫(kù)的信息。在用戶創(chuàng)建數(shù)據(jù)庫(kù)時(shí),服務(wù)層還負(fù)責(zé)為用戶初始化一個(gè)新的數(shù)據(jù)庫(kù)。在初始化數(shù)據(jù)庫(kù)階段,服務(wù)層也會(huì)與SQL Azure fabric協(xié)作完成對(duì)備份數(shù)據(jù)庫(kù)的初始化工作。
流量與計(jì)費(fèi)服務(wù)負(fù)責(zé)監(jiān)控用戶數(shù)據(jù)庫(kù)的使用情況,并根據(jù)使用情況進(jìn)行計(jì)費(fèi)。計(jì)費(fèi)是在一個(gè)賬戶級(jí)別下完成的。
4. 客戶端層
客戶端層并沒(méi)有包含SQL Azure的特定組件,相反用戶可以使用現(xiàn)在的SQL Server客戶端組件訪問(wèn)SQL Azure,比如ADO.NET、ODBC、Visual Studio、SQL Server Management Studio、ADO.NET Data Server數(shù)據(jù)服務(wù)等??蛻舳薃PI通過(guò)1433端口初始化一個(gè)TDS連接到SQL Azure,服務(wù)層將該連接路由到正確的數(shù)據(jù)庫(kù)實(shí)例。