SQL Server數(shù)據(jù)遷移至云端應(yīng)用技巧談
導(dǎo)讀:SQL Server數(shù)據(jù)遷移的知識之前已經(jīng)為大家介紹了很多,比如SQL Server數(shù)據(jù)庫遷移方法,接下來就為大家詳細(xì)介紹SQL Server數(shù)據(jù)遷移至云端應(yīng)用技巧,以方便大家在以后的實際工作中做好SQL Server數(shù)據(jù)庫的遷移工作。
微軟的SQL Azure并不完全支持SQL Server 2005或SQL Server 2008的所有功能,因此,在數(shù)據(jù)轉(zhuǎn)移的時候必須十分小心。目前SQL Azure也還沒有提供任何管理工具(除了SQL Server Management Studio,當(dāng)然不能完全靠它的Object Explorer來做轉(zhuǎn)移)做這類的管理作業(yè),微軟在Codeplex網(wǎng)站上有一個SQL Azure Migration Wizard的工具,到是十分適合采用(這部分我們稍后會提到)。
將既有的數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換到SQL Azure上面,或是把SQL Azure上面的數(shù)據(jù)轉(zhuǎn)下來,這都牽扯到數(shù)據(jù)的輸入和輸出。如果我們單單針對將數(shù)據(jù)輸入和輸出的作法來看,對天天在處理數(shù)據(jù)庫的行家而言,這并不是甚么新鮮的事了,方法也很多,而傳統(tǒng)的大批數(shù)據(jù)轉(zhuǎn)換的做法也大都能適用,例如:
運用SQL Server提供BCP工具程序(請參考MSDNLibray的BCP Utility)。
用SSIS(SQL integration server service,使用Visual Studio2008)。
運用ODBC and ADO.Net 提供的API 功能。
另外,微軟的Sync Framework也是一個好選擇。這一點我們會在稍后作說明。
云端解決方法
每次讀取一次記錄然后再寫入一次記錄,還不如一次性讀入一堆數(shù)據(jù)放置在云端,然后再以本地的方式做大筆數(shù)量的寫入。
圖1 使用Worker role做Bulk傳送
如圖1所示,基于這個原理運用Web Role作為用戶的接口負(fù)責(zé)讀取上傳的數(shù)據(jù),并將數(shù)據(jù)放入Blobs中,然后產(chǎn)生Jobs的工作項。至于Worker Role的部分則一直負(fù)責(zé)觀察Jobs的工作項目,一旦有工作項目進(jìn)入到Blobs中,就會把數(shù)據(jù)讀出來,再運用BCP的工具程序一次性寫入到目標(biāo)數(shù)據(jù)庫中,完成一個Jobs的工作。
使用Blobs
我們使用Blobs是因為它被設(shè)計來儲存大量的文字及二進(jìn)制數(shù)據(jù)格式。非常簡單的讀取方式,讓我們只要運用REST API就能上傳、管理、組織及維護(hù)這些數(shù)據(jù)。Blobs有三種資源,分別是Account、Containers及Blobs,它的架構(gòu)觀念簡潔且存取容易,因此很容易被拿來再運用。所謂的拿來再運用并非空穴來風(fēng),其實它在設(shè)計之初就有這個預(yù)先的計劃,提供非結(jié)構(gòu)化的二進(jìn)制的龐大存儲器;讓它具有不受任何限制的基礎(chǔ),可以被用來儲存任何數(shù)據(jù)或索引。Blobs有二種,Block blob能存儲***200GB的數(shù)據(jù),而Page Blob能支持***1TB的數(shù)據(jù),主要用于隨機(jī)讀寫用。例如Windows Azure XDrive就是運用Page Blob做出來的一塊類似NTFS格式硬盤的仿真裝置,相當(dāng)能夠吸引哪些熟悉文件系統(tǒng)的人來使用它。
SQL Azure 的存取方式
SQL Azure采用DB Service的方式,與Amazon Web Services的Simple DB類似,可以只用Database的Service(不過存取的命令就不同了,Simple DB是透過Web REST或SOAP接口,而SQL Azure則是透過OLE DB/ODBC/ADO.NET,并透過T-SQL語法來做存取)。與Google App Engine的存取模式不同,Google App Engine內(nèi)建的Database不能單獨存取,只能透過部署在App Engine上面的Application進(jìn)行存取。
既然可以進(jìn)行獨立存取,便可運用Microsoft Cloud Computing開發(fā)Web Application,那樣將會有兩種模式:
(1)Web Application部署在Windows Azure,并由SQL Azure提供Database Services。
(2)Web Application部署在自家環(huán)境,并由SQL Azure提供Database Services。
然而,不管使用哪一種模式,Web Application都是透過傳統(tǒng)SQL Server的1433 Port來存取SQL Azure。
因此,若是Web Application or Developer在防火墻里面對外的聯(lián)機(jī)被管制的話,那么使用上述***個模式會是比較方便開發(fā)。
不管采用哪一種connecting String,簡單來說,該services就是listen 在tcp:servername.ctp.database.windows.net:1433這個位置。
上文中介紹到的SQL Server數(shù)據(jù)遷移至云端應(yīng)用技巧并不是***的,可能在有些情況下就不適用,希望大家靈活掌握,靈活運用,為以后的數(shù)據(jù)庫遷移工作帶來方便。
【編輯推薦】