国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于處理數(shù)據(jù)庫操作請求的方法和裝置的制作方法

      文檔序號:6580204閱讀:122來源:國知局
      專利名稱:用于處理數(shù)據(jù)庫操作請求的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及軟件即服務(wù)(SaaS)系統(tǒng)。
      背景技術(shù)
      SaaS (Software as a Service)系統(tǒng)的目的是將軟件作為一種服務(wù)以降低用戶的 軟件購置和維護(hù)成本。在SaaS環(huán)境中,大量用戶(租戶)共享應(yīng)用實(shí)例和數(shù)據(jù)庫。然而,由于在SaaS環(huán)境中,數(shù)據(jù)庫系統(tǒng)是在不同租戶之間共享的,因此,某個(gè)租戶 的重負(fù)荷數(shù)據(jù)庫操作可能會影響其他租戶的正常使用。數(shù)據(jù)庫系統(tǒng)中的某些操作,例如租 戶上線(on-boarding)和運(yùn)行期間的數(shù)據(jù)導(dǎo)入/導(dǎo)出、數(shù)據(jù)遷移、數(shù)據(jù)備份/恢復(fù)等,會占 用大量的磁盤I/O和CPU,從而影響系統(tǒng)處理其他租戶請求的性能。大規(guī)模的數(shù)據(jù)遷移或?qū)?入有可能持續(xù)數(shù)小時(shí),在這期間可能會對增加其他租戶請求的請求的響應(yīng)時(shí)間,甚至導(dǎo)致 不能正常訪問系統(tǒng),這對于其他租戶來說是無法接受的。傳統(tǒng)上,解決這個(gè)問題的最常用的方法是異步處理重負(fù)荷請求。該方法尋找空閑 時(shí)間來處理重負(fù)荷請求以避免影響正常處理。但從業(yè)務(wù)要求的角度這種延遲響應(yīng)的方式是 不可接受的。在SaaS環(huán)境中,甚至無法就此與租戶達(dá)成協(xié)議。就是說,在大多數(shù)情況下,重 負(fù)荷事務(wù)請求需要實(shí)時(shí)響應(yīng),而不能離線或異步處理。另一種方法是對租戶操作進(jìn)行速率控制,例如,限制每個(gè)租戶能使用的最大資源 量。然而,這使得資源利用率不能最大化,從整個(gè)系統(tǒng)的角度看無法利用系統(tǒng)的最大共享能 力。在SaaS環(huán)境中,資源利用率是一種關(guān)鍵要素,使資源利用率最大化通常是需要的。因此,本領(lǐng)域中需要一種更有效的用于隔離SaaS應(yīng)用的租戶間應(yīng)用數(shù)據(jù)庫操作 性能影響的方法和裝置。

      發(fā)明內(nèi)容
      在本發(fā)明的一個(gè)方面,提供了一種用于處理數(shù)據(jù)庫操作請求的方法,包括接收來 自用戶的數(shù)據(jù)庫操作請求;判斷該數(shù)據(jù)庫操作請求是否是重負(fù)荷請求;如果該數(shù)據(jù)庫操作 請求是重負(fù)荷請求,則將該數(shù)據(jù)庫操作請求路由到用于處理重負(fù)荷請求的重負(fù)荷請求數(shù)據(jù) 庫分區(qū)進(jìn)行處理,并將該數(shù)據(jù)庫操作請求所影響的數(shù)據(jù)范圍記錄在元數(shù)據(jù)儲存庫中,其中 所述重負(fù)荷請求數(shù)據(jù)庫分區(qū)是在原有的正常數(shù)據(jù)庫分區(qū)之外設(shè)置的。在本發(fā)明的另一個(gè)方面,提供了一種用于處理數(shù)據(jù)庫操作請求的系統(tǒng),包括請求 分析器,用于接收來自用戶的數(shù)據(jù)庫操作請求,判斷該數(shù)據(jù)庫操作請求是否是重負(fù)荷請求; 以及請求處理器,用于如果該數(shù)據(jù)庫操作請求是重負(fù)荷請求,則將該數(shù)據(jù)庫操作請求路由 到重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理,以及將該數(shù)據(jù)庫操作請求所影響的數(shù)據(jù)范圍記錄在元 數(shù)據(jù)儲存庫中,其中所述重負(fù)荷請求數(shù)據(jù)庫分區(qū)是在原有的正常數(shù)據(jù)庫分區(qū)之外設(shè)置的。本發(fā)明的優(yōu)點(diǎn)包括提供了一種隔離租戶間的性能影響的有效方法對于沒有任何重負(fù)荷請求的租戶 而言,其所有請求將被直接路由到正常數(shù)據(jù)庫分區(qū),而不受重負(fù)荷請求數(shù)據(jù)庫分區(qū)上的重負(fù)荷請求處理的任何影響。重負(fù)荷請求將獲得實(shí)時(shí)響應(yīng),而不是延遲響應(yīng)。提高了整體系統(tǒng)性能,因?yàn)橹刎?fù)荷請求被路由到備用分區(qū),整體系統(tǒng)性能得到提高。該方法可以容易地與應(yīng)用集成,應(yīng)用可獲得性能影響隔離的好處而無需更改或只 需很少更改。


      所附權(quán)利要求中闡述了被認(rèn)為是本發(fā)明的特點(diǎn)的創(chuàng)造性特征。但是,通過參照附 圖閱讀下面對說明性實(shí)施例的詳細(xì)說明可更好地理解發(fā)明本身以及其優(yōu)選使用模式、目 標(biāo)、特征以及優(yōu)點(diǎn),在附圖中圖1示意性地示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操 作性能影響的系統(tǒng);圖2示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操作性能影 響的方法的準(zhǔn)備階段;圖3示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操作性能影 響的方法的運(yùn)行時(shí)階段;以及圖4示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操作性能影 響的方法的離線處理階段。
      具體實(shí)施例方式下面參照附圖來說明本發(fā)明的實(shí)施例。在下面的說明中,闡述了許多具體細(xì)節(jié)以 便更全面地了解本發(fā)明。但是,對于本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明顯的是,本發(fā)明的實(shí)現(xiàn)可不 具有這些具體細(xì)節(jié)中的一些。此外,應(yīng)當(dāng)理解的是,本發(fā)明并不限于所介紹的特定實(shí)施例。 相反,可以考慮用下面的特征和要素的任意組合來實(shí)施本發(fā)明,而無論它們是否涉及不同 的實(shí)施例。因此,下面的方面、特征、實(shí)施例和優(yōu)點(diǎn)僅作說明之用而不應(yīng)被看作是所附權(quán)利 要求的要素或限定,除非權(quán)利要求中明確提出。本發(fā)明提出了一種用于隔離租戶間的性能影響的方法。本發(fā)明的核心思想在于, 通過將數(shù)據(jù)庫分區(qū)并將重負(fù)荷請求和正常請求路由到不同的分區(qū)達(dá)到隔離租戶間的性能 影響的目的。在該方法中,通過將數(shù)據(jù)庫分區(qū)得到額外的數(shù)據(jù)庫節(jié)點(diǎn),用額外的數(shù)據(jù)庫節(jié)點(diǎn) 暫時(shí)存儲由重負(fù)荷請求產(chǎn)生的數(shù)據(jù),該數(shù)據(jù)庫節(jié)點(diǎn)可稱為重負(fù)荷請求數(shù)據(jù)庫分區(qū)。由正常 數(shù)據(jù)庫分區(qū)總是處理正常請求,就像應(yīng)用正常運(yùn)行一樣,而重負(fù)荷請求數(shù)據(jù)庫分區(qū)專用于 處理重負(fù)荷請求。這樣,正常請求處理與重負(fù)荷請求處理相隔離,從而避免了重負(fù)荷請求處 理對正常請求處理的影響?,F(xiàn)參照圖1,其示意性地示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用 數(shù)據(jù)庫操作性能影響的系統(tǒng)100。如圖所示,該系統(tǒng)100位于SaaS應(yīng)用和分區(qū)數(shù)據(jù)庫管理 系統(tǒng)之間,并優(yōu)選地至少部分地在數(shù)據(jù)庫驅(qū)動器或其包裝例如一 JDBC wrapper中實(shí)現(xiàn)。所 述分區(qū)數(shù)據(jù)庫系統(tǒng)為本領(lǐng)域中所知的任何分區(qū)數(shù)據(jù)庫系統(tǒng),且包括一個(gè)用于存儲正常的租 戶數(shù)據(jù)的正常數(shù)據(jù)庫分區(qū)以及一個(gè)額外增加的用于存儲重負(fù)荷請求所產(chǎn)生的租戶數(shù)據(jù)的重負(fù)荷請求數(shù)據(jù)庫分區(qū)。正常數(shù)據(jù)庫分區(qū)和重負(fù)荷請求數(shù)據(jù)庫分區(qū)具有不同的分區(qū)鍵,例 如正常數(shù)據(jù)庫分區(qū)的分區(qū)鍵PK = 0,而重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵PK = 1。如圖所示,該用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操作性能影響的系統(tǒng)100可包括請 求分析器110、請求處理器120、元數(shù)據(jù)儲存庫130以及表轉(zhuǎn)換及數(shù)據(jù)同步器140。其中,請 求處理器120進(jìn)一步可包括正常請求處理器121、重負(fù)荷請求處理器122,可選的包括特殊 租戶處理器123。元數(shù)據(jù)儲存庫130中可存儲有分區(qū)鍵映射表、受影響數(shù)據(jù)范圍表,可選的 存儲特殊租戶列表等。表轉(zhuǎn)換及數(shù)據(jù)同步器140包括表轉(zhuǎn)換器141、數(shù)據(jù)同步器143,可選 的包括請求和成本統(tǒng)計(jì)器142。請求分析器110用于分析來自SaaS應(yīng)用的數(shù)據(jù)庫操作請求,識別所述請求是正常 請求還是重負(fù)荷請求。可選的,請求分析器110還判斷所述請求是否是來自特殊租戶的請 求。然后,請求分析器110將經(jīng)過分析和識別、可選的經(jīng)過判斷的請求發(fā)送到相應(yīng)模塊以進(jìn) 行相應(yīng)的后續(xù)處理,例如將正常請求發(fā)送到正常請求處理器122處理,將重負(fù)荷請求發(fā)送 到重負(fù)荷請求處理器123處理,將來自特殊租戶的請求發(fā)送到特殊租戶處理器121處理。正 常請求是指對數(shù)據(jù)庫管理系統(tǒng)將不會造成較大負(fù)荷的請求,重負(fù)荷請求是指將對數(shù)據(jù)庫管 理系統(tǒng)造成較大負(fù)荷的請求,而特殊租戶是指頻繁進(jìn)行重負(fù)荷請求的租戶。請求分析器110可采用多種方法來識別來自SaaS應(yīng)用的數(shù)據(jù)庫操作請求是正常 請求還是重負(fù)荷請求。例如,SaaS應(yīng)用的開發(fā)者可以事先將通常會造成較重的數(shù)據(jù)庫管理 系統(tǒng)處理負(fù)荷的重負(fù)荷的SQL語句注冊到元數(shù)據(jù)儲存庫130中,這樣,請求分析器110可以 通過將當(dāng)前請求中包含的SQL語句與元數(shù)據(jù)儲存庫130中注冊的SQL語句進(jìn)行比較來判斷 當(dāng)前請求是否是重負(fù)荷請求。再例如,SaaS應(yīng)用的開發(fā)者可以通過A0P (面向方面的編程) 機(jī)制或簡單編程將應(yīng)用中的可能造成較重的數(shù)據(jù)庫系統(tǒng)處理負(fù)荷的特定事務(wù)設(shè)置為重負(fù) 荷事務(wù),這樣,請求分析器110可以通過讀取所述設(shè)置判斷當(dāng)前事務(wù)是否是重負(fù)荷事務(wù),并 進(jìn)而確定當(dāng)前請求是否是重負(fù)荷請求??蛇x的,可以由請求和成本統(tǒng)計(jì)器142收集關(guān)于各租戶的數(shù)據(jù)庫訪問操作的訪問 統(tǒng)計(jì)信息,包括每次訪問的租戶ID、SQL、影響時(shí)間、數(shù)據(jù)大小等,從中識別出經(jīng)常發(fā)起重負(fù) 荷請求的租戶,并將這些租戶作為特殊租戶記錄在元數(shù)據(jù)儲存庫的特殊租戶列表中。這樣, 請求分析器110就可以通過將發(fā)起當(dāng)前請求的租戶與元數(shù)據(jù)儲存庫中的特殊租戶列表比 較來判斷當(dāng)前請求是否是來自特殊租戶的請求。請求分析器110可以將非重負(fù)荷請求識別為正常請求,可選的可以將既非重負(fù)荷 請求又不是來自特殊租戶的請求的所有其他請求識別為正常請求。正常請求處理器121用于處理由請求分析器110發(fā)送的來自SaaS應(yīng)用的正常數(shù) 據(jù)庫操作請求。響應(yīng)于接收到正常請求,正常請求處理器121首先通過讀取元數(shù)據(jù)儲存庫 中的受影響數(shù)據(jù)范圍表來判斷所請求操作的數(shù)據(jù)是否屬于受影響數(shù)據(jù)范圍。如果判斷所請 求操作的數(shù)據(jù)不屬于受影響數(shù)據(jù)范圍,說明所請求操作的數(shù)據(jù)僅位于(或?qū)⑽挥?正常數(shù) 據(jù)庫分區(qū)中,則正常請求處理器121向請求中的SQL語句添加正常數(shù)據(jù)庫分區(qū)的分區(qū)鍵,然 后將請求發(fā)送給分區(qū)數(shù)據(jù)庫管理系統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理系統(tǒng)根據(jù)分區(qū)鍵自動將請求 路由到正常數(shù)據(jù)庫分區(qū)以進(jìn)行相應(yīng)的操作。如果判斷所請求操作的數(shù)據(jù)屬于受影響數(shù)據(jù)范 圍,說明所請求操作的數(shù)據(jù)至少位于重負(fù)荷數(shù)據(jù)庫分區(qū)中,則正常請求處理器121不向請 求中的SQL語句添加正常數(shù)據(jù)庫分區(qū)和重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵,并將請求發(fā)送給分區(qū)數(shù)據(jù)庫管理系統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理系統(tǒng)自動將請求路由到正常數(shù)據(jù)庫分區(qū)以及 重負(fù)荷數(shù)據(jù)庫分區(qū)以進(jìn)行相應(yīng)的操作。重負(fù)荷請求處理器122用于處理由請求分析器110發(fā)送來的來自SaaS應(yīng)用的重 負(fù)荷數(shù)據(jù)庫操作請求。響應(yīng)于接收到重負(fù)荷請求,重負(fù)荷請求處理器122還將請求所影響 的數(shù)據(jù)范圍記錄在元數(shù)據(jù)儲存庫中。此外,重負(fù)荷請求處理器122判斷該重負(fù)荷請求是否 是數(shù)據(jù)插入請求。如果該重負(fù)荷請求是數(shù)據(jù)插入請求,則重負(fù)荷請求處理器122向請求 中的SQL語句添加重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵,然后將請求發(fā)送給分區(qū)數(shù)據(jù)庫管理系 統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理系統(tǒng)根據(jù)分區(qū)鍵自動將請求路由到重負(fù)荷數(shù)據(jù)庫分區(qū),以進(jìn)行 相應(yīng)的數(shù)據(jù)插入操作。如果該重負(fù)荷請求不是數(shù)據(jù)插入請求,例如是數(shù)據(jù)讀取或更新請求, 則重負(fù)荷請求處理器122不向請求中的SQL語句添加正常數(shù)據(jù)庫分區(qū)和重負(fù)荷請求數(shù)據(jù)庫 分區(qū)的分區(qū)鍵,并將請求發(fā)送給分區(qū)數(shù)據(jù)庫管理系統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理系統(tǒng)自動將 請求路由到重負(fù)荷數(shù)據(jù)庫分區(qū)以及正常數(shù)據(jù)庫分區(qū),以分別進(jìn)行相應(yīng)的數(shù)據(jù)更新和讀取操 作。可選的,特殊租戶處理器123用于處理由請求分析器110發(fā)送來的來自于特殊租 戶的數(shù)據(jù)庫操作請求。響應(yīng)于接收到來自特殊租戶的請求,特殊租戶處理器123向請求中 的SQL語句添加重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵,然后將請求發(fā)送給分區(qū)數(shù)據(jù)庫管理系 統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理系統(tǒng)自動地將請求路由到重負(fù)荷數(shù)據(jù)庫分區(qū),以進(jìn)行相應(yīng)的操 作。元數(shù)據(jù)儲存庫130中的受影響數(shù)據(jù)范圍表用于記錄受重負(fù)荷請求影響的數(shù)據(jù)范 圍,即被存儲在重負(fù)荷請求數(shù)據(jù)庫分區(qū)中的數(shù)據(jù)的范圍。受影響的數(shù)據(jù)范圍可通過SaaS應(yīng) 用中的租戶、數(shù)據(jù)庫表或其他更細(xì)粒度的數(shù)據(jù)庫操作或其組合來區(qū)分。例如,圖1中例示了 一個(gè)受影響數(shù)據(jù)范圍表的內(nèi)容,其中示出了租戶tl和數(shù)據(jù)庫表sales為一個(gè)受影響的數(shù)據(jù) 范圍,表明租戶tl的sales表中的數(shù)據(jù)被存儲在特殊請求數(shù)據(jù)庫分區(qū)中,類型“重負(fù)荷”表 明該受影響的數(shù)據(jù)范圍是由重負(fù)荷請求產(chǎn)生的,且時(shí)間戳中示出了在重負(fù)荷請求數(shù)據(jù)庫分 區(qū)中產(chǎn)生相應(yīng)數(shù)據(jù)的時(shí)間;此外,示出了租戶t2和數(shù)據(jù)庫表sales為另一個(gè)受影響的數(shù)據(jù) 范圍,表明租戶t2的sales表中的數(shù)據(jù)被存儲在特殊請求數(shù)據(jù)庫分區(qū)中,類型“特殊”表明 該受影響的數(shù)據(jù)范圍是根據(jù)特殊租戶產(chǎn)生的,且時(shí)間戳中示出了在重負(fù)荷請求數(shù)據(jù)庫分區(qū) 中產(chǎn)生相應(yīng)數(shù)據(jù)的時(shí)間。表轉(zhuǎn)換器141用于修改正常數(shù)據(jù)庫分區(qū)中的各數(shù)據(jù)庫表,以向每個(gè)數(shù)據(jù)庫表添加 一個(gè)分區(qū)鍵字段,以及將正常數(shù)據(jù)庫分區(qū)中的各數(shù)據(jù)庫表的結(jié)構(gòu)復(fù)制到重負(fù)荷請求數(shù)據(jù)庫 分區(qū)。表轉(zhuǎn)換器141可以在準(zhǔn)備階段,例如當(dāng)SaaS應(yīng)用安裝時(shí),執(zhí)行上述操作。請求和成本統(tǒng)計(jì)器142,如上所述,用于通過收集關(guān)于各租戶的數(shù)據(jù)庫操作請求的 統(tǒng)計(jì)信息,來識別經(jīng)常發(fā)起重負(fù)荷請求的特殊租戶,并將所述特殊租戶記錄在元數(shù)據(jù)儲存 庫中的特殊租戶列表中。數(shù)據(jù)同步器143用于通過修改分區(qū)中數(shù)據(jù)的分區(qū)鍵使得數(shù)據(jù)自動被遷移到另一 分區(qū)。例如,數(shù)據(jù)同步器143可以在系統(tǒng)空閑時(shí)修改重負(fù)荷請求數(shù)據(jù)庫分區(qū)中的數(shù)據(jù)的分 區(qū)鍵,以便使分區(qū)數(shù)據(jù)庫管理系統(tǒng)根據(jù)修改后的分區(qū)鍵自動將數(shù)據(jù)同步到正常分區(qū)中,并 且修改元數(shù)據(jù)儲存庫中的受影響數(shù)據(jù)范圍表以反映當(dāng)前的數(shù)據(jù)狀態(tài),例如刪除與已被同步 到正常數(shù)據(jù)庫分區(qū)的數(shù)據(jù)有關(guān)的受影響數(shù)據(jù)范圍。經(jīng)過同步,未來對相應(yīng)數(shù)據(jù)的訪問請求只需要被路由到正常數(shù)據(jù)庫分區(qū),而無需路由到重負(fù)荷數(shù)據(jù)庫分區(qū),從而使系統(tǒng)更為高效。此外,數(shù)據(jù)同步器143可以通過修改正常數(shù)據(jù)庫分區(qū)中由請求和成本統(tǒng)計(jì)器142 識別出的特殊租戶的數(shù)據(jù)的分區(qū)鍵,將特殊租戶的數(shù)據(jù)從正常數(shù)據(jù)庫分區(qū)遷移到重負(fù)荷數(shù) 據(jù)庫分區(qū)。以上參照附圖描述了本發(fā)明的實(shí)施例。應(yīng)指出的是,以上描述僅為示例性說明,而 不是對本發(fā)明的限制。本發(fā)明的實(shí)施例可具有更多、更少或不同的模塊,且不同模塊之間的 包含和連接關(guān)系可以與所描述的不同。例如,在本發(fā)明的一些實(shí)施例中,可以包括兩個(gè)或兩 個(gè)以上的重負(fù)荷請求數(shù)據(jù)庫分區(qū);在本發(fā)明的另一些實(shí)施例中,可以不包括所述特殊租戶 處理器121及對特殊租戶的識別、處理等功能;等等。所述這些變化都處于本發(fā)明的精神和 范圍之內(nèi)。現(xiàn)參照圖2,其示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操 作性能影響的方法的準(zhǔn)備階段。該準(zhǔn)備階段可以在SaaS應(yīng)用啟動之前,例如在SaaS應(yīng)用 安裝時(shí)執(zhí)行。如圖所示,該準(zhǔn)備階段包括以下步驟在步驟201,向SaaS應(yīng)用的用于存儲租戶數(shù)據(jù)的各數(shù)據(jù)庫表添加一個(gè)分區(qū)鍵字 段。在步驟202,向SaaS應(yīng)用的分區(qū)數(shù)據(jù)庫管理系統(tǒng)添加一個(gè)額外的重負(fù)荷請求數(shù)據(jù) 庫分區(qū),使得分區(qū)數(shù)據(jù)庫管理系統(tǒng)包括原來的正常數(shù)據(jù)庫分區(qū)以及新增加的重負(fù)荷請求數(shù) 據(jù)庫分區(qū),并將正常數(shù)據(jù)庫分區(qū)中用于存儲租戶數(shù)據(jù)的各數(shù)據(jù)庫表結(jié)構(gòu)復(fù)制到重負(fù)荷請求 數(shù)據(jù)庫分區(qū)中。在步驟203,為每個(gè)數(shù)據(jù)庫分區(qū)指定一個(gè)不同的分區(qū)鍵,并在元數(shù)據(jù)儲存庫中維護(hù) 分區(qū)鍵和數(shù)據(jù)庫分區(qū)之間的映射。以上步驟可以由前述表轉(zhuǎn)換器141執(zhí)行?,F(xiàn)參照圖3,其示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操 作性能影響的方法的運(yùn)行時(shí)階段。該階段可以在SaaS應(yīng)用運(yùn)行時(shí)執(zhí)行。如圖所示,該運(yùn)行 時(shí)階段包括以下步驟在步驟301,響應(yīng)于接收到來自租戶的請求,識別發(fā)送該請求的租戶。在可選步驟302,通過將識別的租戶與元數(shù)據(jù)儲存庫中的特殊租戶列表進(jìn)行比較 來判斷該請求是否來自于特殊租戶。響應(yīng)于該判斷為是,執(zhí)行可選步驟303。響應(yīng)于該判斷為否,執(zhí)行步驟305。在可選步驟303,將該請求發(fā)送到特殊租戶處理器進(jìn)行處理。在可選步驟304,特殊租戶處理器通過向請求添加重負(fù)荷數(shù)據(jù)庫分區(qū)的分區(qū)鍵,例 如將分區(qū)鍵作為條件子句添加到請求的SQL語句中,由分區(qū)數(shù)據(jù)庫管理系統(tǒng)自動將請求發(fā) 送到重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理。在步驟305,判斷該請求是否是重負(fù)荷請求。如果該判斷否,則執(zhí)行步驟306 ;如果 該判斷為是,則執(zhí)行步驟311。在步驟306,將請求發(fā)送到正常請求處理器。在步驟307,正常請求處理器讀取元數(shù)據(jù)儲存庫中的受影響數(shù)據(jù)范圍表。在步驟308,正常請求處理器根據(jù)受影響數(shù)據(jù)范圍表判斷該請求涉及的數(shù)據(jù)是否 屬于受影響數(shù)據(jù)范圍。如果該判斷為否,則執(zhí)行步驟309 ;如果該判斷為是,則執(zhí)行步驟310。在步驟309,由于該請求涉及的數(shù)據(jù)不屬于受影響的數(shù)據(jù)范圍,說明數(shù)據(jù)僅存在于 正常數(shù)據(jù)庫分區(qū)中,而不存在于重負(fù)荷數(shù)據(jù)庫分區(qū)中,因此,向請求添加正常數(shù)據(jù)庫分區(qū)的 分區(qū)鍵,例如將分區(qū)鍵作為條件子句添加到請求的SQL語句中,然后將請求發(fā)送到分區(qū)數(shù) 據(jù)庫管理系統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理系統(tǒng)根據(jù)分區(qū)鍵自動將請求路由到正常數(shù)據(jù)庫分區(qū) 進(jìn)行處理。在步驟310,由于該請求涉及的數(shù)據(jù)屬于受影響的數(shù)據(jù)范圍,說明數(shù)據(jù)至少存在于 重負(fù)荷數(shù)據(jù)庫分區(qū)中,因此,不向請求中的SQL語句添加正常數(shù)據(jù)庫分區(qū)和重負(fù)荷請求數(shù) 據(jù)庫分區(qū)的分區(qū)鍵,而是直接將請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理 系統(tǒng)根據(jù)自動將請求路由到正常數(shù)據(jù)庫分區(qū)以及重負(fù)荷數(shù)據(jù)庫分區(qū)中進(jìn)行處理。在步驟311,將請求發(fā)送到重負(fù)荷請求處理器。在步驟312,重負(fù)荷請求處理器更新元數(shù)據(jù)儲存庫中的受影響數(shù)據(jù)范圍表,以將當(dāng) 前請求所影響的數(shù)據(jù)范圍記錄在受影響數(shù)據(jù)范圍表中。在步驟313,重負(fù)荷請求處理器判斷該請求是否是數(shù)據(jù)插入請求。如果該判斷為 是,則執(zhí)行步驟314。如果該判斷為否,則執(zhí)行步驟315。在步驟314,重負(fù)荷請求處理器向請求添加重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵,例 如將分區(qū)鍵作為條件子句添加到請求的SQL語句中,然后將請求發(fā)送給分區(qū)數(shù)據(jù)庫管理系 統(tǒng),以便由分區(qū)數(shù)據(jù)庫管理系統(tǒng)根據(jù)分區(qū)鍵自動將請求路由到重負(fù)荷數(shù)據(jù)庫分區(qū)進(jìn)行處理。在步驟315,重負(fù)荷請求處理器不向請求中的SQL語句添加正常數(shù)據(jù)庫分區(qū)和重 負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵,并將請求發(fā)送給分區(qū)數(shù)據(jù)庫管理系統(tǒng),以便由分區(qū)數(shù)據(jù)庫 管理系統(tǒng)自動將請求路由到正常數(shù)據(jù)庫分區(qū)以及重負(fù)荷數(shù)據(jù)庫分區(qū)進(jìn)行處理、在本發(fā)明的一些實(shí)施例中,可以不包括上述步驟313、315。而是在步驟312之后, 執(zhí)行步驟314。此外,在本發(fā)明的一些實(shí)施例中,步驟312可以在步驟314或315之后執(zhí)行?,F(xiàn)參照圖4,其示出了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操 作性能影響的方法的離線處理階段。如圖所示,該階段包括以下步驟在步驟401,系統(tǒng)統(tǒng)處于空閑狀態(tài)。隨后,分別執(zhí)行步驟402和步驟404。在步驟402,數(shù)據(jù)同步器通過將重負(fù)荷請求數(shù)據(jù)庫分區(qū)中的數(shù)據(jù)的分區(qū)鍵修改為 正常數(shù)據(jù)庫分區(qū)的分區(qū)鍵,使得分區(qū)數(shù)據(jù)庫管理系統(tǒng)自動將重負(fù)荷請求數(shù)據(jù)庫分區(qū)中的數(shù) 據(jù)同步到正常數(shù)據(jù)庫分區(qū)中。在步驟403,更新元數(shù)據(jù)儲存庫中的受影響數(shù)據(jù)范圍表,以去除與被同步的數(shù)據(jù)相 關(guān)的受影響數(shù)據(jù)范圍。在步驟404,請求和成本統(tǒng)計(jì)器收集關(guān)于所有租戶的數(shù)據(jù)庫訪問的統(tǒng)計(jì)信息,包括 租戶ID、SQL語句、響應(yīng)時(shí)間、數(shù)據(jù)大小等。在步驟405,請求和成本統(tǒng)計(jì)器根據(jù)所收集的統(tǒng)計(jì)信息識別經(jīng)常發(fā)起重負(fù)荷請求 的特殊租戶。在步驟406,將所識別的租戶作為特殊租戶記錄在元數(shù)據(jù)儲存庫中的特殊租戶列表中。以上描述了根據(jù)本發(fā)明的實(shí)施例的用于隔離SaaS租戶間應(yīng)用數(shù)據(jù)庫操作性能影響的方法。應(yīng)指出的是,以上描述僅為示例,而不是對本發(fā)明的限制。在本發(fā)明的其他實(shí) 施例中,該方法可具有更多、更不或不同的步驟。例如,在本發(fā)明的一些實(shí)施例中,可以沒 有判斷請求是否來自特殊租戶的步驟302,以及對特殊租戶的相應(yīng)處理步驟303、304 ;在本 發(fā)明一些實(shí)施例中,可以沒有將請求發(fā)送到正常請求處理器的步驟306、將請求發(fā)送到重負(fù) 荷請求處理器的步驟311、和將請求發(fā)送到特殊租戶處理器的步驟303,而是根據(jù)對請求的 分析直接對請求進(jìn)行相應(yīng)的處理;此外,可以將上述多個(gè)步驟進(jìn)行合并與概括,例如上述步 驟313、314、315可以概括為一個(gè)步驟,在該步驟中,如果該數(shù)據(jù)庫操作請求是重負(fù)荷請求, 則將該數(shù)據(jù)庫操作請求路由到用于處理重負(fù)荷請求的重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理,等 等。所有這些變化都處于本發(fā)明的精神和范圍之內(nèi)。本發(fā)明可以硬件、軟件、或硬件與軟件的結(jié)合的方式實(shí)現(xiàn)。本發(fā)明可以集中的方式 在一個(gè)計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn),或以分布方式實(shí)現(xiàn),在這種分布方式中,不同的部件分布在若干 互連的計(jì)算機(jī)系統(tǒng)中。適于執(zhí)行本文中描述的方法的任何計(jì)算機(jī)系統(tǒng)或其它裝置都是合適 的。一種典型的硬件和軟件的組合可以是帶有計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),當(dāng)該計(jì)算機(jī) 程序被加載和執(zhí)行時(shí),控制該計(jì)算機(jī)系統(tǒng)而使其執(zhí)行本發(fā)明的方法,并構(gòu)成本發(fā)明的裝置。本發(fā)明也可體現(xiàn)在計(jì)算機(jī)程序產(chǎn)品中,該程序產(chǎn)品包含使能實(shí)現(xiàn)本文中描述的方 法的所有特征,并且當(dāng)其被加載到計(jì)算機(jī)系統(tǒng)中時(shí),能夠執(zhí)行所述方法。盡管已參照優(yōu)選實(shí)施例具體示出和說明了本發(fā)明,但是本領(lǐng)域內(nèi)的那些技術(shù)人員 應(yīng)理解,可在形式和細(xì)節(jié)上對其進(jìn)行各種改變而不會背離本發(fā)明的精神和范圍。
      權(quán)利要求
      1.一種用于處理數(shù)據(jù)庫操作請求的方法,包括接收來自用戶的數(shù)據(jù)庫操作請求;判斷該數(shù)據(jù)庫操作請求是否是重負(fù)荷請求;如果該數(shù)據(jù)庫操作請求是重負(fù)荷請求,則將該數(shù)據(jù)庫操作請求路由到用于處理重負(fù)荷 請求的重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理,并將該數(shù)據(jù)庫操作請求所影響的數(shù)據(jù)范圍記錄在 元數(shù)據(jù)儲存庫中;其中所述重負(fù)荷請求數(shù)據(jù)庫分區(qū)是在原有的正常數(shù)據(jù)庫分區(qū)之外設(shè)置的。
      2.根據(jù)權(quán)利要求1的方法,其中所述正常數(shù)據(jù)庫分區(qū)和所述重負(fù)荷請求數(shù)據(jù)庫分區(qū)具 有相同的表結(jié)構(gòu),該表結(jié)構(gòu)包含分區(qū)鍵字段,所述正常數(shù)據(jù)庫分區(qū)和所述重負(fù)荷請求數(shù)據(jù) 庫分區(qū)具有不同的分區(qū)鍵。
      3.根據(jù)權(quán)利要求2的方法,其中所述將該數(shù)據(jù)庫操作請求路由到用于處理重負(fù)荷請求 的重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理包括向該數(shù)據(jù)庫操作請求添加重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵;將添加了分區(qū)鍵的該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)。
      4.根據(jù)權(quán)利要求2的方法,還包括如果該數(shù)據(jù)庫操作請求不是重負(fù)荷請求,進(jìn)一步判斷該數(shù)據(jù)庫操作請求所涉及的數(shù)據(jù) 是否屬于元數(shù)據(jù)儲存庫中記錄的受影響的數(shù)據(jù)范圍;如果該數(shù)據(jù)庫操作請求所涉及的數(shù)據(jù)屬于元數(shù)據(jù)儲存庫中記錄的受影響的數(shù)據(jù)范圍, 將該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)而不向該數(shù)據(jù)庫操作請求添加正常數(shù)據(jù) 庫分區(qū)和重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵。
      5.根據(jù)權(quán)利要求4的方法,還包括如果該數(shù)據(jù)庫操作請求所涉及的數(shù)據(jù)不屬于元數(shù)據(jù)儲存庫中記錄的受影響的數(shù)據(jù)范 圍,向該數(shù)據(jù)庫操作請求添加正常數(shù)據(jù)庫分區(qū)的分區(qū)鍵,并將添加了分區(qū)鍵的該數(shù)據(jù)庫操 作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)。
      6.根據(jù)權(quán)利要求2的方法,其中所述將該數(shù)據(jù)庫操作請求路由到用于處理重負(fù)荷請求 的重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理包括判斷該數(shù)據(jù)庫操作請求是否是數(shù)據(jù)插入請求;如果該數(shù)據(jù)庫操作請求是數(shù)據(jù)插入請求,則向該數(shù)據(jù)庫操作請求添加重負(fù)荷請求數(shù)據(jù) 庫分區(qū)的分區(qū)鍵;將添加了分區(qū)鍵的該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)。
      7.根據(jù)權(quán)利要求6的方法,進(jìn)一步包括如果該數(shù)據(jù)庫操作請求不是數(shù)據(jù)插入請求,將該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管 理系統(tǒng)而不向該數(shù)據(jù)庫操作請求添加正常數(shù)據(jù)庫分區(qū)和重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵。
      8.根據(jù)權(quán)利要求1的方法,包括判斷該數(shù)據(jù)庫操作請求是否來自經(jīng)常發(fā)出重負(fù)荷請求的特殊用戶,其中特殊用戶的數(shù) 據(jù)被從正常數(shù)據(jù)庫分區(qū)復(fù)制到重負(fù)荷數(shù)據(jù)庫分區(qū);以及如果該數(shù)據(jù)庫操作請求來自特殊用戶,向該數(shù)據(jù)庫操作請求添加重負(fù)荷請求數(shù)據(jù)庫分 區(qū)的分區(qū)鍵;將添加了分區(qū)鍵的該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)。
      9.根據(jù)權(quán)利要求1的方法,還包括在系統(tǒng)空閑時(shí),將重負(fù)荷請求數(shù)據(jù)庫分區(qū)中的數(shù)據(jù)同步到正常數(shù)據(jù)庫分區(qū)中。
      10.一種用于處理數(shù)據(jù)庫操作請求的系統(tǒng),包括請求分析器,用于接收來自用戶的數(shù)據(jù)庫操作請求,判斷該數(shù)據(jù)庫操作請求是否是重 負(fù)荷請求;以及請求處理器,用于如果該數(shù)據(jù)庫操作請求是重負(fù)荷請求,則將該數(shù)據(jù)庫操作請求路由 到重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理,以及將該數(shù)據(jù)庫操作請求所影響的數(shù)據(jù)范圍記錄在元 數(shù)據(jù)儲存庫中;其中所述重負(fù)荷請求數(shù)據(jù)庫分區(qū)是在原有的正常數(shù)據(jù)庫分區(qū)之外設(shè)置的。
      11.根據(jù)權(quán)利要求10的系統(tǒng),其中所述正常數(shù)據(jù)庫分區(qū)和所述重負(fù)荷請求數(shù)據(jù)庫分區(qū) 具有相同的表結(jié)構(gòu),該表結(jié)構(gòu)包含分區(qū)鍵字段,所述正常數(shù)據(jù)庫分區(qū)和所述重負(fù)荷請求數(shù) 據(jù)庫分區(qū)具有不同的分區(qū)鍵。
      12.根據(jù)權(quán)利要求11的系統(tǒng),其中,所述請求處理器包括用于向該數(shù)據(jù)庫操作請求添加重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵的裝置;以及用于將添加了分區(qū)鍵的該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)的裝置。
      13.根據(jù)權(quán)利要求11的系統(tǒng),其中,所述請求處理器包括用于如果該數(shù)據(jù)庫操作請求不是重負(fù)荷請求,進(jìn)一步判斷該數(shù)據(jù)庫操作請求所涉及的 數(shù)據(jù)是否屬于元數(shù)據(jù)儲存庫中記錄的受影響的數(shù)據(jù)范圍的裝置;用于如果該數(shù)據(jù)庫操作請求所涉及的數(shù)據(jù)屬于元數(shù)據(jù)儲存庫中記錄的受影響的數(shù)據(jù) 范圍,將該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)而不向該數(shù)據(jù)庫操作請求添加正常 數(shù)據(jù)庫分區(qū)和重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵。
      14.根據(jù)權(quán)利要求13的系統(tǒng),其中,所述請求處理器還包括用于如果該數(shù)據(jù)庫操作請求所涉及的數(shù)據(jù)不屬于元數(shù)據(jù)儲存庫中記錄的受影響的數(shù) 據(jù)范圍,向該數(shù)據(jù)庫操作請求添加正常數(shù)據(jù)庫分區(qū)的分區(qū)鍵,并將添加了分區(qū)鍵的該數(shù)據(jù) 庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)。
      15.根據(jù)權(quán)利要求11的系統(tǒng),其中,所述請求處理器包括用于判斷該數(shù)據(jù)庫操作請求是否是數(shù)據(jù)插入請求的裝置;用于如果該數(shù)據(jù)庫操作請求是數(shù)據(jù)插入請求,則向該數(shù)據(jù)庫操作請求添加重負(fù)荷請求 數(shù)據(jù)庫分區(qū)的分區(qū)鍵的裝置;以及用于將添加了分區(qū)鍵的該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)的裝置。
      16.根據(jù)權(quán)利要求15的系統(tǒng),其中,所述請求處理器進(jìn)一步包括用于如果該數(shù)據(jù)庫操作請求不是數(shù)據(jù)插入請求,將該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù) 庫管理系統(tǒng)而不向該數(shù)據(jù)庫操作請求添加正常數(shù)據(jù)庫分區(qū)和重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分 區(qū)鍵的裝置。
      17.根據(jù)權(quán)利要求10的系統(tǒng),其中,所述請求分析器還用于判斷該數(shù)據(jù)庫操作請求是否來自經(jīng)常發(fā)出重負(fù)荷請求的特殊 用戶,其中特殊用戶的數(shù)據(jù)被從正常數(shù)據(jù)庫分區(qū)復(fù)制到重負(fù)荷數(shù)據(jù)庫分區(qū);以及所述請求處理器還用于如果該數(shù)據(jù)庫操作請求來自特殊用戶,向該數(shù)據(jù)庫操作請求添 加重負(fù)荷請求數(shù)據(jù)庫分區(qū)的分區(qū)鍵并將添加了分區(qū)鍵的該數(shù)據(jù)庫操作請求發(fā)送到分區(qū)數(shù)據(jù)庫管理系統(tǒng)。
      18.根據(jù)權(quán)利要求10的系統(tǒng),還包括數(shù)據(jù)同步器,用于在系統(tǒng)空閑時(shí),將重負(fù)荷請求數(shù)據(jù)庫分區(qū)中的數(shù)據(jù)同步到正常數(shù)據(jù) 庫分區(qū)中。
      全文摘要
      提供了一種用于處理數(shù)據(jù)庫操作請求的方法和系統(tǒng),該方法包括接收來自用戶的數(shù)據(jù)庫操作請求;判斷該數(shù)據(jù)庫操作請求是否是重負(fù)荷請求;如果該數(shù)據(jù)庫操作請求是重負(fù)荷請求,則將該數(shù)據(jù)庫操作請求路由到用于處理重負(fù)荷請求的重負(fù)荷請求數(shù)據(jù)庫分區(qū)進(jìn)行處理,并將該數(shù)據(jù)庫操作請求所影響的數(shù)據(jù)范圍記錄在元數(shù)據(jù)儲存庫中,其中所述重負(fù)荷請求數(shù)據(jù)庫分區(qū)在原有的正常數(shù)據(jù)庫分區(qū)之外設(shè)置的。
      文檔編號G06F17/30GK101996214SQ20091017095
      公開日2011年3月30日 申請日期2009年8月27日 優(yōu)先權(quán)日2009年8月27日
      發(fā)明者唐凱, 張劍鳴, 段寧, 蔣忠波, 高波 申請人:國際商業(yè)機(jī)器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1