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