欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

升級期間的在線數(shù)據(jù)庫可用性的制作方法

文檔序號:6437100閱讀:217來源:國知局
專利名稱:升級期間的在線數(shù)據(jù)庫可用性的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及升級期間的在線數(shù)據(jù)庫可用性。
背景技術(shù)
基于web的在線服務(wù)包括位于web服務(wù)器上的文件以及存儲在數(shù)據(jù)庫中的數(shù)據(jù)。 例如,存在大量位于不同網(wǎng)絡(luò)中的服務(wù)器,以處理針對該服務(wù)的通信。與應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)庫的升級可能導(dǎo)致數(shù)據(jù)庫在一段時間內(nèi)不可用。對某些服務(wù)而言,升級過程可能給該服務(wù)的顧客帶來嚴(yán)重干擾。

發(fā)明內(nèi)容
提供概述以便以簡化形式介紹在以下具體實施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。在線服務(wù)包括被升級同時仍然處理請求的數(shù)據(jù)庫。例如,在web服務(wù)器被升級的同時,web服務(wù)器繼續(xù)請求對該數(shù)據(jù)庫進(jìn)行操作。該數(shù)據(jù)庫的模式在web服務(wù)器被升級之前升級以利用升級后的模式。對升級后的模式所作的改變是與在升級過程期間使用的模式向后兼容的。對升級過程期間對數(shù)據(jù)庫執(zhí)行的操作施加限制。在升級模式之后,該在線服務(wù)的web服務(wù)器被升級以使用升級后的模式。


圖1示出了用于管理與諸如內(nèi)容管理服務(wù)之類的在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理器系統(tǒng);圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫的云管理器;圖3示出了存儲在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄;圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng),該網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器;圖5示出計算機(jī)的計算機(jī)架構(gòu);以及圖6-7示出了用于在仍然處理請求的同時升級在線服務(wù)的數(shù)據(jù)庫的過程。
具體實施例方式現(xiàn)將參考附圖來描述各實施例,在附圖中類似的標(biāo)號代表類似的元素。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其它類型的結(jié)構(gòu)。也可使用其它計算機(jī)系統(tǒng)配置,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器或可編程消費電子產(chǎn)品、小型計算機(jī)、大型計算機(jī)等等。也可使用在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計算環(huán)境。在分布式計算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲器存儲設(shè)備兩者中。
圖1示出了用于管理與在線服務(wù)相關(guān)聯(lián)的網(wǎng)絡(luò)的云管理系統(tǒng)。系統(tǒng)100示出了云管理器105,該云管理器105被連接到可能分布在世界各地的不同網(wǎng)絡(luò)并對其進(jìn)行管理。網(wǎng)絡(luò)中的每個網(wǎng)絡(luò)被配置成為一個或多個承租人(例如客戶端、顧客)提供內(nèi)容服務(wù)。這些網(wǎng)絡(luò)可以被主存(host)在云服務(wù)內(nèi)和/或內(nèi)部部署(on-premises)數(shù)據(jù)中心內(nèi)。云管理器105用于對這些網(wǎng)絡(luò)進(jìn)行部署、配置和管理。云管理器被配置為通過可容忍間歇性網(wǎng)絡(luò)故障的冪等且異步的應(yīng)用web服務(wù)應(yīng)用編程接口(API) 150來接收請求。如所示的,云管理器105包括工作管理器110、機(jī)器管理器115、應(yīng)用專用管理器 120、腳本130以及諸如數(shù)據(jù)存儲140(例如,數(shù)據(jù)庫)之類的中央儲存庫。未包括在所示管理器之一內(nèi)的功能可以駐留在云管理器的某個其他位置。根據(jù)一個實施例,應(yīng)用管理器120 是SharePoint承租人管理器,該管理器包括SharePoint專用邏輯。工作管理器110管理任務(wù)的執(zhí)行,并且啟用對較長時間運行的任務(wù)的調(diào)度和重試。工作管理器110啟動存儲在作業(yè)隊列112中的作業(yè)并且跟蹤運行中的作業(yè)。當(dāng)已經(jīng)流逝了預(yù)定的時間時,工作管理器110可以自動地取消任務(wù)并且執(zhí)行與該任務(wù)相關(guān)的某些進(jìn)一步的處理。根據(jù)一個實施例,作業(yè)隊列112中的任務(wù)由工作管理器110通過調(diào)用一個或多個腳本130來執(zhí)行。例如,可以使用諸如微軟的PowerShell 之類的腳本語言來對由工作管理器110執(zhí)行的任務(wù)進(jìn)行編程。每個腳本可以作為新進(jìn)程運行。盡管將每個腳本作為新進(jìn)程來執(zhí)行可以具有相當(dāng)高的CPU開銷,但是該系統(tǒng)是可伸縮的,并且有助于為每次腳本執(zhí)行確保干凈的環(huán)境,加上在腳本完成時進(jìn)行完全的清理。機(jī)器管理器115被配置成管理網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)中的物理機(jī)器。 一般而言,機(jī)器管理器115理解網(wǎng)絡(luò)、物理機(jī)器、虛擬機(jī)(VM)、VM鏡像(VHD)等等。機(jī)器管理器不必牢固綁定于網(wǎng)絡(luò)內(nèi)運行的特定服務(wù),而是按照“角色”跟蹤網(wǎng)絡(luò)中的各種組件。例如,可以通過API 150請求機(jī)器管理器115在網(wǎng)絡(luò)3上部署具有版本12. 34. 56. 78的“你0” 型VM。響應(yīng)于對云管理器105的請求,機(jī)器管理器115對位于網(wǎng)絡(luò)3上的合適物理機(jī)器進(jìn)行定位,并且根據(jù)與VM的角色相關(guān)聯(lián)的VM鏡像來配置VM。使用具有版本12. 34. 56. 78的類型為Foo的VHD來配置物理機(jī)器,該VHD被存儲在諸如數(shù)據(jù)存儲140之類的數(shù)據(jù)存儲內(nèi)。 在網(wǎng)絡(luò)內(nèi)使用的鏡像也可以存儲在其他位置處,諸如用于所述網(wǎng)絡(luò)中的一個或多個網(wǎng)絡(luò)的本地數(shù)據(jù)共享中。可以運行腳本來執(zhí)行VHD在物理機(jī)器上的安裝以及用于執(zhí)行任何部署后的配置。機(jī)器管理器115跟蹤每個網(wǎng)絡(luò)的機(jī)器配置。例如,機(jī)器管理器115可以跟蹤VM的角色(VM的類型)、VM的狀態(tài)(供應(yīng)中(ftOvisioning)、運行中、已停止、故障)、版本以及 VM是否存在于給定場中(這隱含了其網(wǎng)絡(luò))。腳本130被配置為存儲將要執(zhí)行以便既本地地為云管理器105執(zhí)行工作又遠(yuǎn)程地在所述網(wǎng)絡(luò)中的一個或多個網(wǎng)絡(luò)上執(zhí)行工作的腳本。腳本130中的一個或多個還可以存儲在其他位置。例如,要在網(wǎng)絡(luò)(例如網(wǎng)絡(luò)1、網(wǎng)絡(luò)2、網(wǎng)絡(luò)3)上執(zhí)行的腳本可以本地地存儲到該網(wǎng)絡(luò)。這些腳本可用于許多不同的目的。例如,所述腳本可以用于執(zhí)行對所述網(wǎng)絡(luò)中的一個或多個網(wǎng)絡(luò)中的機(jī)器的配置,改變之前配置的機(jī)器上的設(shè)定,添加新的VM,添加新的數(shù)據(jù)庫,將數(shù)據(jù)從一個機(jī)器移動到另一個,移動承租人,改變模式等。根據(jù)一個實施例,這些腳本是微軟的PowerShell 腳本。也可以使用其他編程實施方式。例如,可以使用編譯和/ 或前期綁定編程語言來實現(xiàn)該功能。然而,腳本是一種表達(dá)要執(zhí)行的任務(wù)中的許多個的相當(dāng)精確的語言。用諸如C#的編程語言對其等價物進(jìn)行編程將常常需要冗長得多的實施方式。腳本還被后期綁定,這意味著可以以多個版本的底層代碼庫為目標(biāo),而不必不斷地鏈接到不同的接口 DLL。使用PowerShell腳本將允許進(jìn)程由云管理器105本地地啟動,這進(jìn)而可以啟動遠(yuǎn)程機(jī)器(即,所附連的網(wǎng)絡(luò)之一中的物理機(jī)器)上的進(jìn)程。還可以使用其他技術(shù)來啟動遠(yuǎn)程機(jī)器上的進(jìn)程,諸如安全Shell (SSH)等。云管理器105正在管理的應(yīng)用專用信息由應(yīng)用管理器120來執(zhí)行。根據(jù)一個實施例,應(yīng)用專用信息與微軟SharePoint 有關(guān)。由此,應(yīng)用管理器120被配置為了解 SharePoint承租人、站點集合等。每個網(wǎng)絡(luò)可以被配置成用于承租人的專用網(wǎng)絡(luò)和/或服務(wù)于一個以上客戶端的多承租人網(wǎng)絡(luò)。網(wǎng)絡(luò)可以包括變化數(shù)目的物理機(jī)/虛擬機(jī),物理機(jī)/虛擬機(jī)的配置在部署之后也變化。一般而言,只要未超過聯(lián)網(wǎng)極限(例如,負(fù)載平衡器和網(wǎng)絡(luò)交換機(jī)),網(wǎng)絡(luò)就可以繼續(xù)增長。例如,網(wǎng)絡(luò)可以從十個服務(wù)器開始,并且之后擴(kuò)張為一百個或更多個服務(wù)器??梢韵蚓W(wǎng)絡(luò)內(nèi)的物理機(jī)器分配類或類型。例如,所述機(jī)器中的某些機(jī)器可以是計算機(jī)器(用于web前端和應(yīng)用服務(wù)器),而其他機(jī)器可以是與計算機(jī)器相比配備有更多存儲的存儲機(jī)器。根據(jù)一實施例,云管理器105用多個版本的鏡像文件來配置網(wǎng)絡(luò)內(nèi)的機(jī)器。根據(jù)一實施例,場常常具有相同版本的鏡像文件。根據(jù)一個實施例,在網(wǎng)絡(luò)內(nèi)由云管理器系統(tǒng)100通過虛擬化機(jī)器并且管理該網(wǎng)絡(luò)內(nèi)部獨立地行動的“場”來管理軟件限制。每個網(wǎng)絡(luò)可以包括一個或多個場(例如,參見網(wǎng)絡(luò)1)。根據(jù)一個實施例,網(wǎng)絡(luò)被認(rèn)為是經(jīng)網(wǎng)絡(luò)負(fù)載平衡的機(jī)器的單個群集,所述機(jī)器向外部世界展示一個或多個VIP(虛擬IP)并且可以將通信路由到網(wǎng)絡(luò)內(nèi)的任何機(jī)器。網(wǎng)絡(luò)中的機(jī)器通常是緊耦合的,并且具有最小等待時間(即< Ims的查驗(ping)等待時間)。場是用于對需要緊密綁定關(guān)系的應(yīng)用進(jìn)行協(xié)調(diào)的機(jī)器的基本分組。例如,內(nèi)容場可以部署在每個網(wǎng)絡(luò)內(nèi)以用于諸如Microsoft SharePoint 的內(nèi)容管理應(yīng)用。一般而言,每一個場中的那組機(jī)器一起提供web服務(wù)和應(yīng)用服務(wù)器功能。通常,場內(nèi)的機(jī)器運行相同構(gòu)建(build)的應(yīng)用(即a^rePoint)并且共享公共配置數(shù)據(jù)庫以服務(wù)特定的承租人和站點集合。場可以包含異構(gòu)的虛擬機(jī)組。云管理器105在數(shù)據(jù)存儲140內(nèi)維護(hù)“場目標(biāo)”, 該場目標(biāo)是每個場的每種角色的機(jī)器的目標(biāo)數(shù)目。一些角色包括內(nèi)容前端(Content Front End)、內(nèi)容中央管理員(Content Central Admin)、內(nèi)容計時器服務(wù)(Content Timer Service)、聯(lián)合中央管理員(Federated Central Admin)、聯(lián)合應(yīng)用服務(wù)器(Federated App Server)等。例如,內(nèi)容場是處理傳入的消費者請求的基本SiarePoint場。聯(lián)合服務(wù)場包含可以跨場操作的諸如搜索和簡檔存儲這樣的SiarePoint服務(wù)。場可以用于主存大容量公共因特網(wǎng)站點。某些場可以包含一組活動目錄服務(wù)器和供應(yīng)端口監(jiān)控程序(Provisioning Daemon)。云管理器105自動地部署網(wǎng)絡(luò)中的虛擬機(jī)和/或停用網(wǎng)絡(luò)中的虛擬機(jī),以幫助滿足所定義的目標(biāo)。這些場目標(biāo)可以自動地和/或手動地來配置。例如,場目標(biāo)可以響應(yīng)于活動和容量需求的改變而改變。網(wǎng)絡(luò)場——每個網(wǎng)絡(luò)存在一個包含可以作為整個網(wǎng)絡(luò)的資源容易地橫向擴(kuò)展的所有VM角色的網(wǎng)絡(luò)場。云管理器web服務(wù)API 150被設(shè)計為在可大規(guī)模伸縮的全局服務(wù)的上下文中工作。該API假定任何網(wǎng)絡(luò)請求可能失敗和/或在傳送中掛起。對云管理器105的調(diào)用被配置為是冪等的。換言之,可以對云管理器105進(jìn)行多次相同的調(diào)用(只要參數(shù)是相同的)而不改變結(jié)果。云管理器105被設(shè)計成在向任何給定的請求返回響應(yīng)之前進(jìn)行非常少的處理 (< 10ms, < 50ms)。云管理器105維護(hù)記錄以跟蹤當(dāng)前請求。例如,云管理器105更新本地數(shù)據(jù)庫中的記錄,并且若需要則稍后調(diào)度“作業(yè)”以執(zhí)行更長的活動。云管理器跟蹤作為用于在網(wǎng)絡(luò)內(nèi)部署新機(jī)器的模板的鏡像(諸如,虛擬盤鏡像)。 鏡像引用可以存儲在諸如數(shù)據(jù)庫140的數(shù)據(jù)庫中和/或某個其他位置。鏡像可以存儲在對其上將部署鏡像的網(wǎng)絡(luò)而言是本地的一個或多個共享的數(shù)據(jù)存儲中。根據(jù)一個實施例,每個鏡像都包括虛擬機(jī)(VM)角色類型,其指定鏡像可以部署的VM的類型;該鏡像應(yīng)當(dāng)使用的處理器的數(shù)目;將分配給該鏡像的RAM的量;用于找出附近安裝點的網(wǎng)絡(luò)ID(使得它們不會通過跨數(shù)據(jù)中心鏈接被反復(fù)地復(fù)制);以及部署代碼可以用于訪問VHD的共享路徑。一般而言,由云系統(tǒng)100所管理的網(wǎng)絡(luò)中的機(jī)器不是以傳統(tǒng)方式通過下載數(shù)據(jù)并且將該數(shù)據(jù)合并到機(jī)器上的現(xiàn)有軟件中來升級的。相反,機(jī)器是通過用更新后的VHD替換 VHD來更新的。例如,當(dāng)場需要新版本的軟件時,部署安裝了該新版本的新場。當(dāng)部署新場時,將承租人從舊場移動到該新場。以此方式,由于升級造成的停機(jī)時間被最小化,并且場中的每個機(jī)器具有已被測試的相同版本。當(dāng)虛擬機(jī)需要升級時,機(jī)器上的VM可以被刪除并且用被配置為運行所需服務(wù)的VM代替。盡管對現(xiàn)有軟件的升級不是最優(yōu)的,但是網(wǎng)絡(luò)內(nèi)的某些服務(wù)器使用原地升級的傳統(tǒng)更新過程。例如,活動目錄域控制器是通過更新服務(wù)器上的當(dāng)前軟件而不完全替換機(jī)器上的鏡像來升級的。在一些實例中,云管理器也可以原地升級。圖2示出了包括管理器和相關(guān)聯(lián)的數(shù)據(jù)庫的云管理器。如所示的,云管理器200 包括工作管理器210、工作數(shù)據(jù)庫215、機(jī)器管理器220、機(jī)器數(shù)據(jù)庫225、承租人管理器230、 承租人數(shù)據(jù)庫235、私密數(shù)據(jù)庫M5、以及web服務(wù)API 2400一般而言,將在云管理系統(tǒng)(例如系統(tǒng)100)內(nèi)使用的數(shù)據(jù)庫的大小調(diào)整為實現(xiàn)高性能。例如,數(shù)據(jù)庫(諸如,工作數(shù)據(jù)庫215、機(jī)器數(shù)據(jù)庫225、承租人數(shù)據(jù)庫235和私密數(shù)據(jù)庫對幻不能超過預(yù)定義的大小限制(例如30GB、50GB、100GB等)。根據(jù)一實施例,調(diào)整數(shù)據(jù)庫的大小以使得其小得足以放入物理機(jī)器的存儲器中。這有助于高讀取I/O性能。還可以基于對于一應(yīng)用程序(諸如,與SQL服務(wù)器交互時)的性能來選擇數(shù)據(jù)庫的大小。還可以調(diào)整在場中使用的數(shù)據(jù)庫的大小以實現(xiàn)高性能。例如,它們的大小可以被調(diào)整為能放入主機(jī)的存儲器中和/或被調(diào)整大小以使得備份操作、移動操作、復(fù)制操作、還原操作一般在預(yù)定的時間段內(nèi)執(zhí)行。云管理器200將云管理器數(shù)據(jù)劃分成四個數(shù)據(jù)庫。工作數(shù)據(jù)庫215用于工作管理器。機(jī)器數(shù)據(jù)庫225用于機(jī)器管理器220。承租人數(shù)據(jù)庫235用于承租人管理器230,并且私密數(shù)據(jù)庫245用于存儲敏感信息,諸如系統(tǒng)賬戶和口令信息、憑證、證書等。數(shù)據(jù)庫可以位于相同的服務(wù)器上,或者跨服務(wù)器分割。根據(jù)一實施例,每個數(shù)據(jù)庫被鏡像以獲得高可用性,并且每個數(shù)據(jù)庫是SQL數(shù)據(jù)庫。云管理器200被配置為使用縮減的SQL特征組與數(shù)據(jù)庫交互以便有助于在數(shù)據(jù)庫升級期間提供云管理器200的可用性。例如,嘗試避免外鍵或存儲過程。外鍵可能使模式變化變得困難并且導(dǎo)致意料之外的失敗情況。存儲過程將應(yīng)用中的更多個放置在數(shù)據(jù)庫本身中。
嘗試最小化與SQL服務(wù)器的通信,因為與底層操作的成本相比,往返可能是昂貴的。例如,如果當(dāng)前SQL服務(wù)器到單個數(shù)據(jù)庫的全部交互被包裝在單個往返中,則效率常常是高得多的。極少在數(shù)據(jù)庫015,225,235)內(nèi)使用限制條件。一般而言,限制條件在其有助于在沒有額外查詢的情況下提供具有正確類型的錯誤處理的簡單更新時是有益的。例如,完全合格的域名(FQDN)表具有對“名稱”施加的限制條件,以幫助防止承租人意外地嘗試主張與已經(jīng)被分配給不同承租人的FQDN相同的FQDN。當(dāng)添加索引時使用警告。索引通常以寫入操作的額外I/O為代價來改善讀取性能。由于數(shù)據(jù)庫內(nèi)的數(shù)據(jù)主要是駐留在RAM上的,因此即使全表掃描仍然是相對快的。根據(jù)一實施例,一旦查詢模式已經(jīng)穩(wěn)定就可以添加索引,并且可以根據(jù)所提出的索引來確定性能改善。根據(jù)一實施例,如果添加索引將可能花費長時間,則可以指定“ONLINE = ON(在線=開啟)”選項,以使得在最初構(gòu)該建索引時表不被鎖定。根據(jù)一實施例,可以執(zhí)行對云管理器內(nèi)數(shù)據(jù)庫的升級而不導(dǎo)致云管理器系統(tǒng)停機(jī)。換言之,即使在云管理器升級期間,云管理器繼續(xù)處理已接收的請求。由此,對模式作出的改變應(yīng)與之前的模式兼容。在升級云管理器所使用的web服務(wù)器之前進(jìn)行SQL模式升級。當(dāng)web服務(wù)器升級時,它們可以開始使用數(shù)據(jù)庫中所啟用的新特性。數(shù)據(jù)庫升級被限制以使得升級中所涉及的操作是快速和有效的。例如,可以添加表,并且可以向現(xiàn)有列添加新的可為空的列??梢栽诒淼慕Y(jié)尾處添加新的列。一般而言,避免對數(shù)據(jù)庫的耗時操作。 例如,在存在大量數(shù)據(jù)時,在創(chuàng)建時間向新添加的列添加缺省值可能是非常耗時的操作。然而,添加可為空的列是非常快速的操作。如上面所討論的,允許添加新的索引,但是在添加新的限制條件時應(yīng)當(dāng)采取警告,以幫助保證模式升級不會破除現(xiàn)有數(shù)據(jù)。例如,當(dāng)添加限制條件時,該限制條件可以被設(shè)置為如下狀態(tài)該限制條件不被檢查并且避免對現(xiàn)有行和潛在的錯誤進(jìn)行高成本的驗證。舊表和未使用的列在新版本被使用并且云管理器不訪問這些表和列以后被移除。一般而言,每個數(shù)據(jù)庫中的單個行用于指示任務(wù)和/或所需狀態(tài)。例如,承租人數(shù)據(jù)庫235為每個承租人包括單個行。給定的承租人可以包括所需版本(Required Version) 記錄。該記錄用于幫助確保該承租人被放置在運行所需版本的場上。例如,對于要停留在 SharePoint 14 SPl上的承租人1而言,該承租人的所需版本可以被設(shè)置為“ 14. 1”,并且包括14. 1的任何版本都將匹配并且任何其他版本(例如14. 2. xxxx)都將不匹配。承租人記錄可以包括其他項目,諸如已授權(quán)的用戶數(shù)目、限額(例如所允許的總數(shù)據(jù)使用率、每用戶的數(shù)據(jù)使用率等)、時間限制等。某個組織可能具有代表不同地理位置、組織或容量的多個承租人。根據(jù)一實施例,將承租人彼此隔開而沒有(經(jīng)由外聯(lián)網(wǎng)或其他特性)對用戶的明確邀請。根據(jù)一個實施例,每個承租人都被鎖定到一專用網(wǎng)絡(luò)中。承租人被保持為相對于一小組數(shù)據(jù)庫而言是本地化的。承租人或者是小的(小于將填充一個數(shù)據(jù)庫的程度),在這種情況下,該承租人處于與其他承租人共享的恰好一個數(shù)據(jù)庫中。這意味著共享該數(shù)據(jù)庫的所有承租人需要同時升級。當(dāng)承租人變大時,其可被移動到其自己的專用數(shù)據(jù)庫,并且現(xiàn)在可以具有一個以上、但是不與其他承租人共享的數(shù)據(jù)庫。在一個或多個專用數(shù)據(jù)庫中維護(hù)大承租人有助于減少需要在單次升級中同時升級的數(shù)據(jù)庫的數(shù)目。
類似地,工作數(shù)據(jù)庫215對于每個作業(yè)包括單個行。機(jī)器數(shù)據(jù)庫225可包括關(guān)于每個物理機(jī)器、VM、場等的行。例如,機(jī)器管理器數(shù)據(jù)庫225可以包括版本串。根據(jù)一實施例,網(wǎng)絡(luò)內(nèi)的每個VHD、場和VM具有相關(guān)聯(lián)的版本串。根據(jù)一個實施例,云管理器包括簡單日志系統(tǒng),該簡單日志系統(tǒng)可以被配置為為每個web服務(wù)調(diào)用記錄日志條目??梢詫崿F(xiàn)包括如所期望的那樣少和/或多的特性的日志系統(tǒng)。一般而言,日志系統(tǒng)被用于度量使用和性能剖析。根據(jù)一實施例,web服務(wù)API 240是使用具有ASP. net的SOAP構(gòu)建的。API中的各種web方法遵循兩種主要模式——獲取和更新。一般而言,更新方法將數(shù)據(jù)結(jié)構(gòu)作為輸入,并且返回相同的結(jié)構(gòu)作為輸出。輸出結(jié)構(gòu)返回數(shù)據(jù)庫中底層對象的當(dāng)前狀態(tài),其中如果驗證或其他業(yè)務(wù)邏輯改變了某些屬性或者以其他方式填充了附加的屬性(例如記錄ID或由云管理器計算出的其他值),則該底層對象可能不同于輸入對象。更新方法用于初始對象創(chuàng)建以及后續(xù)的更新。換言之,對web服務(wù)API 240的調(diào)用者可以簡單地請求它們想要的配置并且它們不需要跟蹤對象是否已經(jīng)存在。另外,這意味著更新是冪等的,因為相同的更新調(diào)用可以進(jìn)行兩次,其中效果相同使其僅僅發(fā)生一次。根據(jù)一實施例,更新方法可以包括 LastUpdated(最近更新)屬性。當(dāng)存在LastUpdated屬性時,若LastUpdated的值與當(dāng)前存儲在數(shù)據(jù)庫中的值不匹配,則云管理器200拒絕更新。某些更新方法包括在對方法的第一次調(diào)用時被設(shè)置的并且在對方法的其他調(diào)用時未被設(shè)置的屬性。云管理器200被配置為避免使用回調(diào)(callback)。由于回調(diào)可能是不可靠的,因此與云管理器200交互的客戶端可以在他們想要檢查更新的狀態(tài)時使用web服務(wù)API來檢查對象狀態(tài)。根據(jù)實施例,對更新方法的調(diào)用導(dǎo)致云管理器200將底層對象的狀態(tài)設(shè)置為 “供應(yīng)中(Provisioning)”,并且當(dāng)更新完成時,狀態(tài)被設(shè)置為“活動(Active)”。圖3示出了存儲在數(shù)據(jù)庫的行內(nèi)的示例性作業(yè)記錄。如所示的,記錄300包括作業(yè)標(biāo)識符302、類型304、數(shù)據(jù)306、所有者308、步驟310、上一次運行312、期滿時間314、下次時間316、狀態(tài)318以及狀況320。一般而言,針對所請求執(zhí)行的每個任務(wù),云管理器在數(shù)據(jù)庫350 (例如,圖2中的工作數(shù)據(jù)庫215)中創(chuàng)建記錄。作業(yè)標(biāo)識符302用于為所請求的任務(wù)指定唯一標(biāo)識符。類型304指定要執(zhí)行的任務(wù)。例如,類型可以包括將要執(zhí)行的腳本的名稱。例如,當(dāng)任務(wù)是要運行名稱為“D印loyVM. psl"的腳本時,數(shù)據(jù)306則可以包括標(biāo)識符(例如 "-VMID 123”)。這允許將新任務(wù)類型添加到系統(tǒng),而不需要對該系統(tǒng)的已編譯或其他二進(jìn)制部分進(jìn)行任何改變。數(shù)據(jù)306用于存儲與任務(wù)相關(guān)聯(lián)的數(shù)據(jù)。例如,數(shù)據(jù)可以對其上將執(zhí)行該任務(wù)的承租人、機(jī)器、網(wǎng)絡(luò)、VM等等設(shè)置。數(shù)據(jù)306還可以存儲數(shù)據(jù)庫中的值所被設(shè)置成的一個或多個值。執(zhí)行任務(wù)的過程可以注意作業(yè)記錄以查看所需機(jī)器數(shù)目被設(shè)置為何值。腳本使用數(shù)據(jù)庫中的值來執(zhí)行操作。所有者308指定過程/執(zhí)行該過程的機(jī)器。例如,當(dāng)云管理器機(jī)器開始執(zhí)行作業(yè)時,該機(jī)器使用機(jī)器的ID來更新記錄的所有者308部分。步驟310提供對當(dāng)前腳本的步驟的指示。例如,腳本可以將任務(wù)劃分成任何數(shù)目的步驟。當(dāng)該進(jìn)程完成該腳本的步驟時,步驟310被更新。進(jìn)程還可以查看步驟310以確定在腳本中要執(zhí)行什么步驟并且避免必須重新執(zhí)行之前已完成的步驟。上一次運行312提供上一次啟動腳本的時間。每次啟動腳本時,更新上一次運行時間。期滿時間314是指示該進(jìn)程應(yīng)當(dāng)何時終止的時間。根據(jù)實施例,期滿時間是在進(jìn)程被啟動之后的預(yù)定的時間量(例如5分鐘、10分鐘...)。期滿時間可以通過經(jīng)由web服務(wù)API的請求進(jìn)程來更新。下次時間316是指示任務(wù)下次應(yīng)當(dāng)何時執(zhí)行的時間。例如,進(jìn)程可以在完成某步驟之后停止,并且被指示等待直到所指定的下次時間316以恢復(fù)處理。狀態(tài)318指示當(dāng)前狀態(tài),并且狀況320指示作業(yè)的狀況(例如,已創(chuàng)建、已掛起、已恢復(fù)、執(zhí)行中、已刪除)。如果數(shù)據(jù)庫中的重復(fù)行具有相同的任務(wù)類型和數(shù)據(jù)值,則它們可以在執(zhí)行之前被移除。例如,可以進(jìn)行多個請求以執(zhí)行存儲在數(shù)據(jù)庫的多個行中的相同的任務(wù)。作業(yè)可以具有與其相關(guān)聯(lián)的一個或多個鎖355。如果鎖不可用,則作業(yè)將不被調(diào)度運行,直到鎖可用。這些鎖可以以許多不同的方式來配置。例如,鎖可以基于互斥、信號量等。一般而言,互斥防止代碼被一個以上線程同時執(zhí)行,并且信號量將共享資源的同時使用的數(shù)目限制在最大數(shù)目。根據(jù)實施例,鎖是表示資源的字符串。該資源可以是任何類型的資源。例如,鎖可以是場、機(jī)器、承租人等。一般而言,鎖被用于延遲一個或多個任務(wù)的執(zhí)行。每個作業(yè)可以指定其在運行以前需要的一個或多個鎖。作業(yè)可以在其操作期間的任何時間釋放鎖。當(dāng)存在鎖時,作業(yè)不被調(diào)度。需要一個以上鎖的作業(yè)一次請求所需的全部鎖。 例如,已經(jīng)持有鎖的作業(yè)不可以請求附加的鎖。這樣的模式有助于防止由多個作業(yè)間的循環(huán)鎖依賴性造成的可能的死鎖情況。圖4示出了用于網(wǎng)絡(luò)的示例系統(tǒng)400,該網(wǎng)絡(luò)包括用于在線服務(wù)的前端和后端服務(wù)器。示例系統(tǒng)400包括客戶端402和404、網(wǎng)絡(luò)406、負(fù)載平衡器408、WFE服務(wù)器410、412、 414以及后端服務(wù)器416-419??墒褂酶嗷蚋俚目蛻舳?、WFE、后端服務(wù)器、負(fù)載平衡器和網(wǎng)絡(luò)。另外,由系統(tǒng)400中的組件所提供的功能中的某些可以由其他組件來執(zhí)行。例如, 某些負(fù)載平衡可以在WFE中執(zhí)行。在示例實施例中,客戶端402和404是諸如臺式計算機(jī)、膝上型計算機(jī)、終端計算機(jī)、個人數(shù)字助理或蜂窩電話設(shè)備的計算設(shè)備。客戶端402和404可包括輸入/輸出設(shè)備、 中央處理單元(“CPU”)、數(shù)據(jù)存儲設(shè)備和網(wǎng)絡(luò)設(shè)備。在本申請中,術(shù)語客戶端和客戶端計算機(jī)互換地使用。WFE 410,412和414可由客戶端402和404經(jīng)由負(fù)載平衡器408通過網(wǎng)絡(luò)406訪問。如所討論的,服務(wù)器可以在場中配置。后端服務(wù)器416對WFE 410、412和414是可訪問的。負(fù)載平衡器408是專用網(wǎng)絡(luò)設(shè)備和/或一個或多個服務(wù)器計算機(jī)。負(fù)載平衡器408、420、 WFE 410,412和414以及后端服務(wù)器416可包括輸入/輸出設(shè)備、中央處理單元(“CPU”)、 數(shù)據(jù)存儲設(shè)備和網(wǎng)絡(luò)設(shè)備。在示例實施例中,網(wǎng)絡(luò)406是因特網(wǎng),并且客戶端402和404可以遠(yuǎn)程地訪問WFE 410,412和414以及連接到WFE 410,412和414的資源。在示例實施例中,系統(tǒng)400是在線的、基于瀏覽器的文檔協(xié)作系統(tǒng)。在線的、 基于瀏覽器的文檔協(xié)作系統(tǒng)的一個示例是來自美國華盛頓州雷蒙德市的微軟公司的 Microsoft Sharepoint 。在系統(tǒng)400中,后端服務(wù)器416-419中的一個或多個是SQL服務(wù)器,例如,來自美國華盛頓州雷蒙德市的微軟公司的SQL服務(wù)器。WFE 410、412和414提供客戶端402和404與后端服務(wù)器416-419之間的接口。 負(fù)載平衡器408、420將請求從自客戶端402和404引導(dǎo)到WFE 410,412和414,以及從WFF 引導(dǎo)到后端服務(wù)器416-419。負(fù)載平衡器408使用諸如WFE利用率、到WFE的連接數(shù)目和總體WFE性能之類的因素來確定哪個WFE服務(wù)器接收客戶端請求。類似地,負(fù)載平衡器420 使用諸如后端服務(wù)器利用率、到服務(wù)器的連接數(shù)目和總體性能的因素來確定哪個后端服務(wù)器接收請求??蛻舳苏埱蟮氖纠梢允窃L問存儲在后端服務(wù)器之一上的文檔,編輯存儲在后端服務(wù)器(例如416-419)上的文檔,或者將文檔存儲在后端服務(wù)器上。當(dāng)負(fù)載平衡器408通過網(wǎng)絡(luò)406接收客戶端請求時,負(fù)載平衡器408確定WFE服務(wù)器410、412和414中的哪個接收該客戶端請求。類似地,負(fù)載平衡器420確定后端服務(wù)器416-419中的哪一個從WFE 服務(wù)器接收請求。后端服務(wù)器可以被配置為存儲一個或多個承租人(即顧客)的數(shù)據(jù)?,F(xiàn)在參考圖5,將描述在各實施例中利用的計算機(jī)500的說明性計算機(jī)體系結(jié)構(gòu)。 圖5所示的計算機(jī)體系結(jié)構(gòu)可被配置為服務(wù)器、臺式或移動計算機(jī),并且包括中央處理單元5( “CPU”)、包括隨機(jī)存取存儲器9 ( “RAM”)和只讀存儲器(“ROM”)10的系統(tǒng)存儲器 7、以及將存儲器耦合至中央處理單元(“CPU”)5的系統(tǒng)總線12。基本輸入/輸出系統(tǒng)存儲在ROM 10中,所述基本輸入/輸出系統(tǒng)包含幫助在諸如啟動期間在計算機(jī)內(nèi)元件之間傳遞信息的基本例程。計算機(jī)500還包括大容量存儲設(shè)備 14,用于存儲操作系統(tǒng)16、應(yīng)用程序10、數(shù)據(jù)存儲24、文件、以及與云系統(tǒng)100的執(zhí)行和同云系統(tǒng)100的交互相關(guān)的云程序26。大容量存儲設(shè)備14通過連接至總線12的大容量存儲控制器(未示出)連接到 CPU 5。大容量存儲設(shè)備14及其相關(guān)聯(lián)的計算機(jī)可讀介質(zhì)為計算機(jī)500提供非易失性存儲。雖然此處包含的計算機(jī)可讀介質(zhì)的描述針對諸如硬盤或CD-ROM驅(qū)動器等大容量存儲設(shè)備,但是計算機(jī)可讀介質(zhì)可以是計算機(jī)100可以訪問的任何可用介質(zhì)。作為示例而非限制,計算機(jī)可讀介質(zhì)可包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括以存儲如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機(jī)存儲介質(zhì)還包括,但不限于,RAM、ROM、可擦除可編程只讀存儲器(“EPR0M”)、電可擦可編程只讀存儲器 (“EEPR0M”)、閃存或其它固態(tài)存儲器技術(shù)、⑶-ROM、數(shù)字多功能盤(“DVD”)或其它光存儲、 磁帶盒、磁帶、磁盤存儲或其它磁性存儲設(shè)備、或能用于存儲所需信息且可以由計算機(jī)500 訪問的任何其它介質(zhì)。根據(jù)各實施例,計算機(jī)500可以使用通過諸如因特網(wǎng)的網(wǎng)絡(luò)18至遠(yuǎn)程計算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。計算機(jī)500可以通過連接至總線12的網(wǎng)絡(luò)接口單元20來連接到網(wǎng)絡(luò)18。網(wǎng)絡(luò)連接可以是無線的和/或有線的。網(wǎng)絡(luò)接口單元20也可用于連接到其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計算機(jī)系統(tǒng)。計算機(jī)500還可以包括用于接收和處理來自多個其他設(shè)備的輸入的輸入/輸出控制器22,這些設(shè)備包括鍵盤、鼠標(biāo)或者電子指示筆(圖5中未示出)。 類似地,輸入/輸出控制器22可以向顯示屏洲、打印機(jī)或其它類型的輸出設(shè)備提供輸出。如上面簡要提到的,多個程序模塊和數(shù)據(jù)文件可以存儲在計算機(jī)500的大容量存儲設(shè)備14和RAM 9內(nèi),包括適于控制聯(lián)網(wǎng)計算機(jī)的操作的操作系統(tǒng)16,比如華盛頓州雷蒙德市的微軟公司的WINDOWS 操作系統(tǒng)。大容量存儲設(shè)備14和RAM 9還可以存儲一個或多個程序模塊。具體而言,大容量存儲設(shè)備14和RAM 9可以存儲諸如云程序沈的執(zhí)行與云系統(tǒng)相關(guān)的任務(wù)的一個或多個應(yīng)用程序?,F(xiàn)在參考圖6-7,將描述用在線服務(wù)升級數(shù)據(jù)庫的過程。當(dāng)閱讀對在此提供的例程的討論時,應(yīng)當(dāng)理解,各實施例的邏輯操作被實現(xiàn)為(1) 運行于計算系統(tǒng)上的一系列計算機(jī)實現(xiàn)的動作或程序模塊,和/或(2)計算系統(tǒng)內(nèi)互連的機(jī)器邏輯電路或電路模塊。該實現(xiàn)是取決于實現(xiàn)本發(fā)明的計算系統(tǒng)的性能要求來選擇的。 因此,所例示的并且構(gòu)成此處所描述的實施例的邏輯操作被不同地表示為操作、結(jié)構(gòu)設(shè)備、 動作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動作和模塊可用軟件、固件、專用數(shù)字邏輯以及它們的任何組合來實現(xiàn)?,F(xiàn)在參考圖6,在開始操作后,過程600流向操作610,在操作610中升級數(shù)據(jù)庫的請求被接收??梢酝ㄟ^許多不同源接收該請求。例如,可以通過API(諸如Web服務(wù)API)、 命令行接口、圖形用戶接口等等接收請求。移至操作620,與該數(shù)據(jù)庫相關(guān)聯(lián)的模式被升級。根據(jù)一實施例,對模式的升級是與云系統(tǒng)當(dāng)前正在使用的模式兼容的。一般而言,對模式的升級應(yīng)當(dāng)試圖避免要及時處理的操作。例如,對數(shù)據(jù)庫的寫入操作經(jīng)常是非常耗時的,而讀取操作一般執(zhí)行得快的多。根據(jù)一實施例,可以執(zhí)行對云管理器內(nèi)數(shù)據(jù)庫的升級而不導(dǎo)致云管理系統(tǒng)停工。 換言之,即便在云管理器使用的數(shù)據(jù)庫的升級期間,云管理器也繼續(xù)接收請求并對正被升級的數(shù)據(jù)庫執(zhí)行讀寫操作。一般而言,來自云管理器的SQL查詢被如此寫入以使得模式的改變不會影響它們。云管理器系統(tǒng)(例如系統(tǒng)100)被配置成使用縮減的SQL特征組與云管理器數(shù)據(jù)庫交互以便有助于在數(shù)據(jù)庫升級期間提供云管理器的可用性。例如,嘗試避免外鍵或存儲過程。外鍵可能使模式變化變得困難并且導(dǎo)致意料之外的失敗情況。存儲過程將應(yīng)用中的更多個放置在數(shù)據(jù)庫本身中。如上面討論的,極少在所述數(shù)據(jù)庫內(nèi)使用限制條件。移至操作620,用于該數(shù)據(jù)庫的模式被升級。SQL模式升級在云管理器使用的web 服務(wù)器上的web前端(WFE)被升級之前執(zhí)行。一般而言,當(dāng)對模式應(yīng)用升級時,數(shù)據(jù)庫中的底層數(shù)據(jù)應(yīng)當(dāng)保持不被影響,以使不具有支持升級后的模式的新功能的WFE繼續(xù)正常運轉(zhuǎn)。對數(shù)據(jù)庫模式的升級可包括增加一個或多個列、表、索引等等。一般而言,數(shù)據(jù)庫升級被如此限制以使得在升級期間與該數(shù)據(jù)庫交互的操作是快速而高效的。例如,可以添加新表,并且可以向現(xiàn)有表在末尾添加新的可為空的列。避免對數(shù)據(jù)庫的耗時操作。例如, 在存在大量數(shù)據(jù)時,在創(chuàng)建列時添加需要值的輸入的新列可能是非常耗時的操作。許多表可具有很大數(shù)目的行。例如,向SiarePoint承租人表添加新列可具有數(shù)百萬行。必須用值來填充該列中的那些行中的每一行可能導(dǎo)致對數(shù)據(jù)庫的重大性能打擊,因為數(shù)據(jù)庫寫入將必須命中(hit)每個頁來輸入值。然而向現(xiàn)有表添加可為空的列不需要觸及數(shù)據(jù)庫的每個頁。相反,添加不需要初始值的可為空的列是能被快速執(zhí)行的操作,不管表的大小如何都是這樣。當(dāng)模式包括新索引時,它們應(yīng)當(dāng)被添加以使得索引是在添加之后在后臺計算的,并且直到該索引的后臺處理完成之后才使其可用。限制條件應(yīng)當(dāng)被添加而不經(jīng)檢驗以使得在升級期間允許對數(shù)據(jù)庫的訪問。
移至操作630,被升級的數(shù)據(jù)繼續(xù)從WFE接收對數(shù)據(jù)庫操作的請求。升級過程期間云管理器系統(tǒng)的操作如同沒有執(zhí)行升級那樣行動。決策框640處,對該模式升級是否完成作出判斷。當(dāng)該升級未完成時,該升級過程繼續(xù)而該系統(tǒng)繼續(xù)接收和處理所接收的請求。當(dāng)該升級完成時,該過程移至操作650,在操作650中包括用于與該數(shù)據(jù)庫交互的WFE的web服務(wù)器被升級以包括升級后的模式的新功能。WFE的升級可以使用不同方法來執(zhí)行。例如,新的WFE軟件可被安裝在同一 web服務(wù)器上和/或放置在不同的web服務(wù)器上。轉(zhuǎn)至操作660,傳入的請求被移動至升級后的WFE。新的WFE的激活可以串行和/ 或并行地進(jìn)行。例如,可以在一個時間點上使WFE的一部分可用而在另一時間點上使另一部分可用。根據(jù)一實施例,使用允許參數(shù)被設(shè)定為將請求引導(dǎo)至升級后的軟件的ASP. net 功能。在轉(zhuǎn)換操作660之后,傳入到新的WFE的請求可能發(fā)現(xiàn)升級后的軟件有之前沒有發(fā)現(xiàn)的錯誤。在此情形下,一種補(bǔ)救措施是降級到用升級后的模式操作的前一軟件版本。在一個實施例中,WFE被快速地原地降級到之前的軟件版本,同時針對升級后的模式操作。隨后該過程移至結(jié)束框并返回以處理其它動作。圖7示出在模式升級已完成之后更新數(shù)據(jù)庫內(nèi)的數(shù)據(jù)。在啟動操作之后,過程700流向操作710,在操作710中對數(shù)據(jù)庫的請求被接收。 一般而言,該請求來自web服務(wù)器上的各WFE之一,并且可以是與數(shù)據(jù)庫相關(guān)的任何類型的請求(例如,讀取、寫入、搜索等等……)。根據(jù)一實施例,讀取操作包括要從其讀取的明示的列。以此方式,即便在模式變化時,數(shù)據(jù)內(nèi)的明示的列仍保持相同。移至決策操作740,對是否已從包括不具有指定值的可為空的列的數(shù)據(jù)庫讀取數(shù)據(jù)作出判斷。當(dāng)還沒有訪問可為空的列時,該過程移至決策操作740。當(dāng)已訪問可為空的列時,該過程流向操作730。在操作730,用于該可為空的列的值可被確定。例如,可選擇缺省值,或者可以從某個其他動作確定用于該可為空的列的值(即,執(zhí)行計算、查找等)。以此方式,用于該可為空的列的值可隨著時間而被更新,而不是在它們被創(chuàng)建時在單個耗時操作中更新。當(dāng)列被訪問時,它可被檢驗以確定值是否為空,而且當(dāng)值為空時,如果還不存在指定值則用缺省值取代該值。具體的代碼設(shè)計為檢驗空(Null)以及可任選地若還不存在指定值則用缺省值取代。下面是示例性代碼片段
if(!Reader.IsDBNull(5)
{
this. State = Reader.GetString(5);
ι
else {
this. State == DefaultState. Active;
}
在用所確定的值寫入對象之后,空值消失了。移至決策操作740,對是否存在應(yīng)被清理的、任何未使用的表/列作出判斷。這一判斷可以在升級后的模式已運行的預(yù)定時間段之后和/或通過某種其他輸入(例如,所接收的命令)進(jìn)行。根據(jù)一實施例,未使用的表和列在升級后的模式被使用并且云管理器不訪問這些表和列之后被移除。當(dāng)表或列不要被移除時,該過程返回操作710。當(dāng)表或列要被移除時,該過程移至操作750。在操作750,未使用的表和/或列被移除。隨后該過程移至結(jié)束框并返回以處理其它動作。以上說明、示例和數(shù)據(jù)提供了對本發(fā)明的組成部分的制造和使用的全面描述。因為可以在不背離本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實施例,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種用于升級仍然正在在線服務(wù)中訪問的數(shù)據(jù)庫的方法,包括啟動在所述在線服務(wù)中使用的數(shù)據(jù)庫的升級過程,其中被升級的所述數(shù)據(jù)庫在整個升級過程期間繼續(xù)接收并處理來自web服務(wù)器的對數(shù)據(jù)庫操作的請求(610);將當(dāng)前正被利用的所述數(shù)據(jù)庫的模式升級為升級后的模式,其中所述升級后的模式與所述模式向后兼容(620);在升級當(dāng)前模式之后,升級所述在線服務(wù)的web服務(wù)器以使用所述升級后的模式 (650);以及升級后的web服務(wù)器使用所述升級后的模式訪問所述數(shù)據(jù)庫(660)。
2.如權(quán)利要求1所述的方法,其特征在于,升級所述數(shù)據(jù)庫的所述模式包括向表的末尾添加可為空的列(730)。
3.如權(quán)利要求2所述的方法,其特征在于,還包括當(dāng)對所述數(shù)據(jù)庫的后續(xù)請求訪問包括所述可為空的列的數(shù)據(jù)時向所述可為空的列添加值(730)。
4.如權(quán)利要求1所述的方法,其特征在于,升級所述數(shù)據(jù)庫的所述模式包括添加表 (620)。
5.如權(quán)利要求1所述的方法,其特征在于,升級所述數(shù)據(jù)庫的所述模式包括在所述升級過程期間添加索引并在所述升級過程完成后計算所述索引(620)。
6.如權(quán)利要求1所述的方法,其特征在于,還包括在所述數(shù)據(jù)庫模式的所述升級過程完成并且所述升級后的web服務(wù)器使用所述升級后的模式訪問所述數(shù)據(jù)庫之后,自動確定何時從所述數(shù)據(jù)庫移除未使用的表和列(750)。
7.如權(quán)利要求1所述的方法,其特征在于,升級所述在線服務(wù)的所述web服務(wù)器包括升級所述web服務(wù)器上的軟件以使得在所述web服務(wù)器上的所述軟件的所述升級期間繼續(xù)履行對所述數(shù)據(jù)庫的請求(630)。
8.一種具有計算機(jī)可執(zhí)行指令的計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可執(zhí)行指令用于升級當(dāng)前正在在線服務(wù)中使用的數(shù)據(jù)庫,包括啟動在所述在線服務(wù)中使用的數(shù)據(jù)庫的升級過程;其中被升級的所述數(shù)據(jù)庫在所述升級過程期間繼續(xù)接收并處理來自web服務(wù)器的對數(shù)據(jù)庫操作的請求;其中所述在線服務(wù)包括文檔協(xié)作服務(wù);其中所述數(shù)據(jù)庫是SQL數(shù)據(jù)庫(610);將當(dāng)前正被利用的所述數(shù)據(jù)庫的模式升級為升級后的模式;其中所述升級后的模式與所述模式向后兼容,其中升級所述數(shù)據(jù)庫的所述模式包括向表的末尾添加可為空的列,并且在所述升級過程完成后當(dāng)對所述數(shù)據(jù)庫的后續(xù)請求訪問包括所述可為空的列的數(shù)據(jù)時向所述可為空的列添加值(620);當(dāng)所述數(shù)據(jù)庫的所述模式正被升級時對所述數(shù)據(jù)庫限制對與所述模式的所述升級過程有關(guān)的寫入操作(620);在升級所述當(dāng)前模式完成之后,升級所述在線服務(wù)的所述web服務(wù)器以使用所述升級后的模式(650);以及使用利用所述升級后的模式的升級后的web服務(wù)器訪問所述數(shù)據(jù)庫(660)。
9.一種用于升級當(dāng)前正在在線服務(wù)中使用的數(shù)據(jù)庫的系統(tǒng),包括包括web服務(wù)器、后端服務(wù)器和數(shù)據(jù)庫的網(wǎng)絡(luò);其中當(dāng)前模式與所述數(shù)據(jù)庫相關(guān)聯(lián) (400);處理器和計算機(jī)可讀存儲介質(zhì)(5);存儲在所述計算機(jī)可讀介質(zhì)上并在所述處理器上執(zhí)行的操作環(huán)境(16);以及升級管理器,用于啟動所述數(shù)據(jù)庫的升級過程;其中所述數(shù)據(jù)庫在所述升級過程期間繼續(xù)接收和處理來自所述web服務(wù)器的對數(shù)據(jù)庫操作的請求;其中所述在線服務(wù)包括文檔協(xié)作服務(wù)(610);將當(dāng)前正被利用的所述數(shù)據(jù)庫的所述模式升級為升級后的模式;其中所述升級后的模式與所述模式向后兼容;其中升級所述數(shù)據(jù)庫的所述模式包括向表添加可為空的列, 并且在所述升級過程完成后當(dāng)對所述數(shù)據(jù)庫的后續(xù)請求訪問包括所述可為空的列的數(shù)據(jù)并且對所述可為空的列的檢驗確定所述可為空的列的值為空時向所述可為空的列添加值 (620);在所述模式的所述升級完成之后,升級所述web服務(wù)器以使用所述升級后的模式 (650);以及使用利用所述升級后的模式的升級后的web服務(wù)器訪問所述數(shù)據(jù)庫(660)。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,升級所述在線服務(wù)的所述web服務(wù)器包括在所述web服務(wù)器上的所述軟件的所述升級的期間繼續(xù)履行對所述數(shù)據(jù)庫的請求并激活使用所述升級后的模式的一組web服務(wù)器并將請求引導(dǎo)到新的一組web服務(wù)器(630)。
全文摘要
本發(fā)明涉及升級期間的在線數(shù)據(jù)庫可用性。在線服務(wù)包括被升級同時仍然處理請求的數(shù)據(jù)庫。例如,在web服務(wù)器被升級的同時,web服務(wù)器繼續(xù)請求對該數(shù)據(jù)庫進(jìn)行操作。該數(shù)據(jù)庫的模式在web服務(wù)器被升級之前升級以利用升級后的模式。對升級后的模式所作的改變是與在升級過程期間使用的模式向后兼容的。對升級過程期間對數(shù)據(jù)庫執(zhí)行的操作施加約束。在升級該模式之后,該在線服務(wù)的web服務(wù)器被升級以使用升級后的模式。
文檔編號G06F17/30GK102541987SQ20111033996
公開日2012年7月4日 申請日期2011年10月19日 優(yōu)先權(quán)日2010年10月20日
發(fā)明者A·霍普曼, B·馬列, E·R·萊爾馬, M·K·溫德爾, Z·羅森菲爾德 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
凌海市| 五家渠市| 庄浪县| 临汾市| 高陵县| 甘肃省| 邓州市| 名山县| 雅安市| 冕宁县| 韶山市| 屏山县| 曲麻莱县| 肃北| 安国市| 板桥市| 晋州市| 修文县| 麻阳| 平顺县| 巴南区| 河间市| 万安县| 浦东新区| 嘉禾县| 天津市| 潞西市| 通辽市| 宜兰市| 雷州市| 安新县| 宜兰县| 怀化市| 武宣县| 冀州市| 房山区| 琼结县| 调兵山市| 抚顺市| 北海市| 永善县|