分配資料庫操作請求的方法和設備的製作方法
2023-07-13 00:30:36 1
專利名稱::分配資料庫操作請求的方法和設備的製作方法
技術領域:
:本發明涉及資料庫技術,尤其涉及一種分配資料庫操作請求的方法和設備。
背景技術:
:隨著計算機網絡的快速發展,出現了具有大量用戶的網絡應用,這些網絡應用需要存儲大量的用戶數據以及相關數據。先前的單臺數據存儲伺服器的數據存儲方式已經不能滿足當前網絡應用的數據存儲要求。目前資料庫在使用中普遍採用主-從架構(一般來說,主資料庫有一個,從資料庫有多個),從資料庫只承擔讀操作,所有的寫操作都由主資料庫來執行。為了保證數據的一致性,從資料庫會不斷地從主資料庫同步最新寫入的數據到從資料庫上。應用程式員需要根據資料庫操作的讀寫類型,分別將資料庫操作語句發往主資料庫或從資料庫,增加了應用程式員的負擔,提高了開發成本。另外,從主資料庫到從資料庫的數據同步不是完全實時的,而是存在著一定的延遲時間,這就帶來了問題。設想以下情況應用程式向資料庫寫一條數據,如上所述,該數據會被寫入到主資料庫中,然後馬上又要讀出該數據,讀操作由從資料庫執行,但此時從資料庫尚未來得及把該數據由主資料庫同步到本地,讀操作的執行結果必然是未找到該數據或是讀到了該數據的舊版本,這就造成了錯誤發生。除此之外,如果某臺資料庫伺服器發生故障,而程序仍然向不可用的機器導入請求,就會發生錯誤,此時只能通過修改程序來解決,維護成本很高。
發明內容鑑於上述問題,提出了本發明,以便提供一種克服上述問題或者至少部分地解決上述問題的分配資料庫操作請求的方法和設備。依據本發明的一個方面,提供了一種分配資料庫操作請求的方法,包括步驟接收對於資料庫的操作請求;解析該操作請求,以檢測該操作請求中的類型注釋;確定與該類型注釋相對應的資料庫伺服器;以及將該操作請求分配給所確定的資料庫伺服器。可選地,根據本發明的實施例的分配資料庫操作請求的方法還包括步驟當未檢測到該操作請求中的類型注釋時,解析該操作請求,以判斷該操作請求的類型;確定與該操作請求的類型相對應的資料庫伺服器;以及在該將操作請求分配給所確定的數據伺服器的步驟中,將該操作請求分配給所確定的與該操作請求的類型相對應的資料庫伺服器。可選地,在根據本發明的實施例的分配資料庫操作請求的方法中,該操作請求的類型包括寫操作和讀操作。可選地,在根據本發明的實施例的分配資料庫操作請求的方法中,該資料庫伺服器包括主資料庫伺服器和從資料庫伺服器,對應於寫操作的資料庫伺服器是主資料庫伺服器,對應於讀操作的資料庫伺服器是從資料庫伺服器。可選地,根據本發明的實施例的分配資料庫操作請求的方法還包括步驟在將該操作請求分配給所確定的資料庫伺服器的步驟之前,檢查該資料庫伺服器;以及在將該操作請求分配給所確定的資料庫伺服器的步驟中,根據檢查結果將該操作請求分配給相應的資料庫伺服器或者返回錯誤提示。可選地,在根據本發明的實施例的分配資料庫操作請求的方法中,該資料庫程序語言是結構化查詢語言SQL,該資料庫是MySQL資料庫。依據本發明的另一方面,提供了一種分配資料庫操作請求的設備,包括網絡接口,適於接收對於資料庫的操作請求;操作請求解析器,適於解析該操作請求,以檢測該操作請求中的類型注釋,確定與該類型注釋相對應的資料庫伺服器;以及操作請求分配器,適於將該操作請求分配給所確定的資料庫伺服器。可選地,在根據本發明的實施例的分配資料庫操作請求的設備中,當該操作請求解析器未檢測到該操作請求中的類型注釋時,解析該操作請求,以判斷該操作請求的類型,確定與該操作請求的類型相對應的資料庫伺服器;並且該操作請求分配器將該操作請求分配給所確定的與該操作請求的類型相對應的資料庫伺服器。可選地,在根據本發明的實施例的分配資料庫操作請求的設備中,該操作請求的類型包括寫操作和讀操作。可選地,在根據本發明的實施例的分配資料庫操作請求的設備中,該資料庫伺服器包括主資料庫伺服器和從資料庫伺服器,對應於寫操作的資料庫伺服器是主資料庫伺服器,對應於讀操作的資料庫伺服器是從資料庫伺服器。可選地,根據本發明的實施例的分配資料庫操作請求的設備還包括資料庫檢查器,適於檢查該資料庫伺服器;並且該操作請求分配器根據檢查結果將該操作請求分配給相應的資料庫伺服器或者返回錯誤提示。本發明提供了上述分配資料庫操作請求的方法和設備。根據本發明的實施例,可以解析接收到的對於資料庫的操作請求,以檢測操作請求中的類型注釋,並根據類型注釋,確定相對應的資料庫伺服器,並向其分配該操作請求。這樣,應用開發人員通過利用例如在諸如SQL語句之類的操作請求中本來沒有意義的注釋語句,就可以確定要將操作請求分配給具體資料庫伺服器,從而極大地提高了應用開發的靈活性。對於實時性要求較高的讀操作,只需要簡單地在操作請求中添加表示主資料庫類型的類型注釋,就能自動地將該操作請求分配給主資料庫伺服器,避免發生找不到所請求的數據或者讀取到該數據的舊版本的問題。另外,根據本發明的實施例,在確定了要將操作請求分配到的資料庫伺服器之後,還可以檢查該資料庫伺服器,並根據檢查結果將該操作請求分配給相應的資料庫伺服器或者返回錯誤提示。這樣,在資料庫伺服器集群中的某一臺或者多臺資料庫伺服器發生故障時,可以自動檢測到該故障,不再把操作請求分配給存在故障的資料庫伺服器。其中,在主資料庫伺服器出現故障的情況下,寫操作無法執行,但讀操作不受影響;而在從資料庫伺服器出現故障的情況下,可以轉而將讀操作分配給主資料庫伺服器,從而讀寫操作均不受影響。這一過程對於應用程式完全透明,應用程式員不在不需要對應用程式作出任何修改,降低了應用程式的維護成本。上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,並且為了讓本發明的上述和其它目的、特徵和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對於本領域普通技術人員將變得清楚明了。附圖僅用於示出優選實施方式的目的,而並不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖1是根據本發明的實施例的分配資料庫操作請求的方法的流程圖2是根據本發明的一個實施例的分配資料庫操作請求的方法各步驟的流程圖;以及圖3是根據本發明的實施例的分配資料庫操作請求的設備以及系統的框圖。具體實施方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這裡闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,並且能夠將本公開的範圍完整的傳達給本領域的技術人員。圖1示意性地圖示了根據本發明的實施例的分配資料庫操作請求的方法100的流程圖。根據本發明的實施例,資料庫例如可以是MySQL資料庫。在下文中,以MySQL資料庫為例,對本發明的原理進行描述,然而,這只是為了示例的目的,本發明的範圍並不限於此,本發明的原理同樣適用於其它類型的資料庫。如圖1所示,根據本發明的實施例的分配資料庫操作請求的方法100始於步驟S101,其中,接收對於資料庫的操作請求。該對於資料庫的操作請求例如來自於一個或者多個應用伺服器。圖2示意性地圖示了根據本發明的一個實施例的分配資料庫操作請求的方法各步驟的流程圖,下面將結合圖2對本發明的原理進行詳細的描述。參見圖2,首先,從應用伺服器接收對於資料庫的操作請求,如果沒有接收到,則繼續等待;如果已經接收到,則進入下一步驟,即圖1所示的步驟S103。在步驟S103中,解析該操作請求,從而檢測操作請求中的類型注釋。根據本發明的實施例,該操作請求可以包括資料庫程序語言語句,該資料庫程序語言可以是SQL(StructuredQueryLanguage,結構化查詢語言),即,該操作請求包括SQL語句。然而,SQL語言和SQL語句僅為示例,用於幫助讀者理解本發明的原理,本發明的範圍並不限於此,而是同樣適用於其它適當的資料庫程序語言和相對應的語句。在解析操作請求時,例如可以檢測SQL語句的開頭是否包含類型注釋,即是否包含例如「/*master*/」的主資料庫類型注釋。如果包含,即檢測到操作請求中的類型注釋,則可以進入如圖1所示的步驟S105。在步驟S105中,確定與該檢測到的類型注釋相對應的資料庫伺服器。可選地,在此之前,如圖2所示,可以將該類型注釋從操作請求中刪除。根據本發明的實施例,資料庫伺服器可以包括主資料庫伺服器和從資料庫伺服器。在步驟S105中,檢測該類型注釋是否表示主資料庫伺服器類型,如果是,即,例如類型注釋為「/*master*/」,則可以確定與該類型注釋相對應的資料庫伺服器為主資料庫伺服器。這樣,在隨後的步驟S107中,就可以將操作請求分配給主資料庫伺服器。然而,如果在步驟S103中,通過解析操作請求,未檢測到類型注釋時,就可以執行步驟S103』,即,進一步解析操作請求,來判斷操作請求的類型。根據本發明的實施例,操作請求的類型包括寫操作和讀操作。在步驟S103』中,可以根據SQL語句中的關鍵字,來判斷操作請求的類型。例如,可以檢測SQL語句中的第一個單詞,如果該單詞為例如INSERT、UPDATE、REPLACE等表示寫操作的單詞,則判斷操作請求的類型為寫操作;而如果該單詞為不表示寫操作的其它單詞,則判斷操作請求的類型為讀操作。然後,執行步驟S105』,確定與操作請求類型相對應的資料庫伺服器。根據本發明的實施例,對應於寫操作的資料庫伺服器是主資料庫伺服器,對應於讀操作的資料庫伺服器是從資料庫伺服器。可選地,而在上述步驟S105中,如果檢測到注釋類型不表示主資料庫伺服器類型,則如圖2所示,也可以考慮執行步驟S103』和步驟S105』,即解析操作請求,判斷操作請求的類型,並且確定與該類型相對應的資料庫伺服器。在步驟S105』之後,執行步驟S107,其中,將該操作請求分配給與操作請求的類型相對應的資料庫伺服器,即,如果操作請求的類型是寫操作,則將操作請求分配給主資料庫伺服器;而如果操作請求的類型是讀操作,則將操作請求分配給從資料庫伺服器。根據本發明的實施例,在上述步驟S107之前,還可以執行步驟S106,其中,檢查所確定的資料庫伺服器,並且在步驟S107中,根據檢查結果來講操作請求分配給相應的資料庫伺服器或者返回錯誤提示。其中,如圖2所示,在所確定的資料庫伺服器是從資料庫伺服器的情況下,在檢查結果表示從資料庫伺服器狀態正常時,將操作請求分配給從資料庫伺服器。而在檢查結果表示從資料庫伺服器狀態不正常時,檢查主資料庫伺服器,在主資料庫伺服器狀態正常時,將該操作請求分配給主資料庫伺服器;而在主資料庫伺服器狀態不正常時,返回表示資料庫伺服器不可用的錯誤提示,例如,向應用程式伺服器返回「資料庫不可用」的錯誤提示。而在所確定的資料庫伺服器是主資料庫伺服器的情況下,在檢查結果表示主資料庫伺服器狀態正常時,將操作請求分配給主資料庫伺服器;在檢查結果表示主資料庫伺服器狀態不正常時,返回表示資料庫伺服器不可用的錯誤提示,例如,向應用程式伺服器返回「資料庫不可用」的錯誤提示。下面,為了幫助讀者理解本發明,結合三個示例SQL語句來說明本發明的原理。(I)假設操作請求中所包含的SQL語句為INSERTINTOmytabIeVALUES(I,『abc』),首先檢測SQL語句開頭是否包含類型注釋,此SQL語句不包含注釋,則判斷操作請求的類型,檢查SQL語句中的第一個單詞,發現是INSERT,從而判斷出操作請求的類型是寫操作,應當分配給主資料庫伺服器,檢查主資料庫伺服器,如果主資料庫伺服器狀態正常,則向其分配操作請求,如果主資料庫伺服器狀態不正常,則可以向應用程式伺服器返回「資料庫不可用」的錯誤提示。(2)假設操作請求中所包含的SQL語句為SELECT*FROMmytable,首先檢測SQL語句開頭是否包含類型注釋,此SQL語句不包含注釋,則判斷操作請求的類型,檢查SQL語句中的第一個單詞,發現是SELECT,從而判斷出操作請求的類型是讀操作,應當分配給從資料庫伺服器,檢查從資料庫伺服器,如果其狀態正常則向其分配操作請求,如果其狀態不正常,則檢查主資料庫伺服器,如果主資料庫伺服器狀態正常,則向其分配操作請求,如果主資料庫伺服器狀態不正常,則可以向應用程式伺服器返回「資料庫不可用」的錯誤提示。(3)假設操作請求中所包含的SQL語句為/*master*/SELECT*FR0Mmytable,首先檢測SQL語句開頭是否包含類型注釋,此句SQL包含注釋,且注釋內容為/*master*/,表示主資料庫伺服器,檢查主資料庫伺服器,如果主資料庫伺服器狀態正常,則向其分配操作請求,如果主資料庫伺服器狀態不正常,則可以向應用程式伺服器返回「資料庫不可用」的錯誤提示。本發明提供了一種分配資料庫操作請求的方法。根據本發明的實施例,可以解析接收到的對於資料庫的操作請求,以檢測操作請求中的類型注釋,並根據類型注釋,確定相對應的資料庫伺服器,並向其分配該操作請求。這樣,應用開發人員通過利用例如在諸如SQL語句之類的操作請求中本來沒有意義的注釋語句,就可以確定要將操作請求分配給具體資料庫伺服器,從而極大地提高了應用開發的靈活性。對於實時性要求較高的讀操作,只需要簡單地在操作請求中添加表示主資料庫類型的類型注釋,就能自動地將該操作請求分配給主資料庫伺服器,避免發生找不到所請求的數據或者讀取到該數據的舊版本的問題。另外,根據本發明的實施例,在確定了要將操作請求分配到的資料庫伺服器之後,還可以檢查該資料庫伺服器,並根據檢查結果將該操作請求分配給相應的資料庫伺服器或者返回錯誤提示。這樣,在資料庫伺服器集群中的某一臺或者多臺資料庫伺服器發生故障時,可以自動檢測到該故障,不再把操作請求分配給存在故障的資料庫伺服器。其中,在主資料庫伺服器出現故障的情況下,寫操作無法執行,但讀操作不受影響;而在從資料庫伺服器出現故障的情況下,可以轉而將讀操作分配給主資料庫伺服器,從而讀寫操作均不受影響。這一過程對於應用程式完全透明,應用程式員不在不需要對應用程式作出任何修改,降低了應用程式的維護成本。與上述方法100相對應,本發明還提供了一種分配資料庫操作請求的設備200。圖3示意性地圖示了根據本發明的實施例的分配資料庫操作請求的設備200。參見圖3,設備200主要包括網絡接口201、操作請求解析器203、操作請求分配器207。根據本發明的實施例,網絡接口201適於接收對於資料庫的操作請求。操作請求解析器203適於解析操作請求,以檢測操作請求中的類型注釋。操作請求解析器203還適於確定與類型注釋相對應的資料庫伺服器。操作請求分配器207適於將操作請求分配給所確定的資料庫伺服器。網絡接口201、操作請求解析器203、操作請求分配器207可以分別用於執行上述分配資料庫操作請求的方法100中的步驟S101、S103和S105、S107。根據本發明的實施例,操作請求解析器203解析該操作請求,從而檢測操作請求中的類型注釋。根據本發明的實施例,該操作請求可以包括資料庫程序語言語句,該資料庫程序語言可以是SQL,即,該操作請求包括SQL語句。在操作請求解析器203解析操作請求時,例如可以檢測SQL語句的開頭是否包含類型注釋,即是否包含例如「/*master*/」的主資料庫類型注釋。如果包含,即操作請求解析器203檢測到操作請求中的類型注釋。隨後,操作請求解析器203確定與該檢測到的類型注釋相對應的資料庫伺服器。可選地,在此之前,操作請求解析器203可以將該類型注釋從操作請求中刪除。根據本發明的實施例,資料庫伺服器可以包括主資料庫伺服器和從資料庫伺服器。操作請求解析器203檢測該類型注釋是否表示主資料庫伺服器類型,如果是,即,例如類型注釋為「/*master*/」,則操作請求解析器203可以確定與該類型注釋相對應的資料庫伺服器為主資料庫伺服器。這樣,隨後操作請求分配器207就可以將操作請求分配給主資料庫伺服器。然而,當操作請求解析器203未檢測到操作請求中的類型注釋時,解析操作請求,以判斷操作請求的類型。根據本發明的實施例,操作請求的類型包括寫操作和讀操作。操作請求解析器203可以根據SQL語句中的關鍵字,來判斷操作請求的類型。例如,操作請求解析器203可以檢測SQL語句中的第一個單詞,如果該單詞為例如INSERT、UPDATE、REPLACE等表示寫操作的單詞,則判斷操作請求的類型為寫操作;而如果該單詞為不表示寫操作的其它單詞,則操作請求解析器203判斷操作請求的類型為讀操作。然後,操作請求解析器203確定與操作請求類型相對應的資料庫伺服器。根據本發明的實施例,對應於寫操作的資料庫伺服器是主資料庫伺服器,對應於讀操作的資料庫伺服器是從資料庫伺服器。可選地,如果操作請求解析器203檢測到操作請求中存在類型注釋、但注釋類型不表示主資料庫伺服器類型,則操作請求解析器203解析操作請求,判斷操作請求的類型,並且操作請求解析器203確定與該類型相對應的資料庫伺服器。隨後,操作請求分配器207將該操作請求分配給與操作請求的類型相對應的資料庫伺服器,即,如果操作請求的類型是寫操作,則操作請求分配器207將操作請求分配給主資料庫伺服器;而如果操作請求的類型是讀操作,則操作請求分配器207將操作請求分配給從資料庫伺服器。根據本發明的實施例,操作請求解析器203在確定資料庫伺服器之後,由資料庫檢查器205檢查資料庫伺服器,隨後,操作請求分配器207根據檢查結果將操作請求分配給相應的資料庫伺服器或者返回錯誤提示。其中,在操作請求解析器203所確定的是從資料庫伺服器的情況下,在檢查結果表示從資料庫伺服器狀態正常時,操作請求分配器207將操作請求分配給從資料庫伺服器;在檢查結果表示從資料庫伺服器狀態不正常時,資料庫檢查器205檢查主資料庫伺服器,在主資料庫伺服器狀態正常時,操作請求分配器207將操作請求分配給主資料庫伺服器,在主資料庫伺服器狀態不正常時,操作請求分配器207返回表示資料庫伺服器不可用的錯誤提示。而在操作請求解析器203所確定的資料庫伺服器是主資料庫伺服器的情況下,在檢查結果表示主資料庫伺服器狀態正常時,操作請求分配器207將操作請求分配給主資料庫伺服器;在檢查結果表示主資料庫伺服器狀態不正常時,操作請求分配器207返回表示資料庫伺服器不可用的錯誤提示。由於上述各設備(裝置)實施例與前述各方法實施例相對應,因此不再對各裝置實施例進行詳細描述。根據本發明的又一方面,還提供了一種分配資料庫操作請求的系統1000。參見圖3,系統1000包括上述設備200;一個或者多個應用程式伺服器300-1、…、300_n,適於向設備200發送對於資料庫的操作請求;以及主資料庫伺服器400a以及一個或者多個從資料庫伺服器400bl、…、400bn,適於響應於設備200的檢查,向設備200返回其狀態,並且接收設備200分配的操作請求。在此提供的算法和顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基於在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本發明也不針對任何特定程式語言。應當明白,可以利用各種程式語言實現在此描述的本發明的內容,並且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,並未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本公開並幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特徵有時被一起分組到單個實施例、圖、或者對其的描述中。然而,並不應將該公開的方法解釋成反映如下意圖即所要求保護的本發明要求比在每個權利要求中所明確記載的特徵更多的特徵。更確切地說,如下面的權利要求書所反映的那樣,發明方面在於少於前面公開的單個實施例的所有特徵。因此,遵循具體實施方式的權利要求書由此明確地併入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。本領域那些技術人員可以理解,可以對實施例中的裝置中的模塊進行自適應性地改變並且把它們設置在與該實施例不同的一個或多個裝置中。可以把實施例中的若干模塊組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特徵和/或過程或者模塊中的至少一些是相互排斥之外,可以採用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特徵以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特徵可以由提供相同、等同或相似目的替代特徵來代替。此外,本領域的技術人員能夠理解,儘管在此所述的一些實施例包括其它實施例中所包括的某些特徵而不是其它特徵,但是不同實施例的特徵的組合意味著處於本發明的範圍之內並且形成不同的實施例。例如,在權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發明的各個裝置實施例可以以硬體實現,或者以在一個或者多個處理器上運行的軟體模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數位訊號處理器(DSP)來實現根據本發明實施例的裝置中的一些或者全部模塊的一些或者全部功能。本發明還可以實現為用於執行這裡所描述的方法的一部分或者全部的裝置程序(例如,電腦程式和電腦程式產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從網際網路網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,並且本領域技術人員在不脫離所附權利要求的範圍的情況下可設計出替換實施例。在權利要求中,不應將位於括號之間的任何參考符號構造成對權利要求的限制。單詞「包含」不排除存在未列在權利要求中的元件或步驟。位於元件之前的單詞「一」或「一個」不排除存在多個這樣的元件。本發明可以藉助於包括有若干不同元件的硬體以及藉助於適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬體項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。權利要求1.一種分配資料庫操作請求的方法(100),包括步驟接收對於資料庫的操作請求(SlOl);解析所述操作請求,以檢測所述操作請求中的類型注釋(S103);確定與所述類型注釋相對應的資料庫伺服器(S105);以及將所述操作請求分配給所確定的資料庫伺服器(S107)。2.如權利要求1所述的方法,還包括步驟當未檢測到所述操作請求中的類型注釋時,解析所述操作請求,以判斷所述操作請求的類型(S103,);確定與所述操作請求的類型相對應的資料庫伺服器(S105』);以及在所述將操作請求分配給所確定的數據伺服器(S107)的步驟中,將所述操作請求分配給所確定的與所述操作請求的類型相對應的資料庫伺服器。3.如權利要求2所述的方法,其中所述操作請求的類型包括寫操作和讀操作。4.如權利要求3所述的方法,其中所述資料庫伺服器包括主資料庫伺服器和從資料庫伺服器,對應於寫操作的資料庫伺服器是主資料庫伺服器,對應於讀操作的資料庫伺服器是從資料庫伺服器。5.如權利要求1至4中的任一項所述的方法,還包括步驟在所述將所述操作請求分配給所確定的資料庫伺服器(S107)的步驟之前,檢查所述資料庫伺服器(S106);以及在所述將所述操作請求分配給所確定的資料庫伺服器(S107)的步驟中,根據檢查結果將所述操作請求分配給相應的資料庫伺服器或者返回錯誤提示。6.如權利要求1至5中的任一項所述的方法,其中在所述確定與所述類型注釋相對應的資料庫伺服器(S105)的步驟中,檢測所述類型注釋是否表示主資料庫伺服器類型,在檢測到所述類型注釋表示主資料庫伺服器類型的情況下,確定與所述類型注釋相對應的資料庫伺服器是主資料庫伺服器。7.如權利要求2所述的方法,其中在所述當未檢測到所述操作請求中的類型注釋時、解析所述操作請求以判斷所述操作請求的類型(S103』)的步驟中,根據所述操作請求中包括的資料庫程序語言語句中的關鍵字,判斷所述操作請求的類型。8.如權利要求5所述的方法,其中在所述根據檢查結果將所述操作請求分配給相應的資料庫伺服器或者返回錯誤提示的步驟中,在所確定的資料庫伺服器是從資料庫伺服器的情況下,在檢查結果表示從資料庫伺服器狀態正常時,將所述操作請求分配給從資料庫伺服器;在檢查結果表示從資料庫伺服器狀態不正常時,檢查主資料庫伺服器,在主資料庫伺服器狀態正常時,將所述操作請求分配給主資料庫伺服器,在主資料庫伺服器狀態不正常時,返回表示資料庫伺服器不可用的錯誤提示;或者在所確定的資料庫伺服器是主資料庫伺服器的情況下,在檢查結果表示主資料庫伺服器狀態正常時,將所述操作請求分配給主資料庫伺服器;在檢查結果表示主資料庫伺服器狀態不正常時,返回表示資料庫伺服器不可用的錯誤提示。9.如權利要求7所述的方法,其中所述資料庫程序語言是結構化查詢語言SQL,所述資料庫是MySQL資料庫。10.一種分配資料庫操作請求的設備(200),包括網絡接口(201),適於接收對於資料庫的操作請求;操作請求解析器(203),適於解析所述操作請求,以檢測所述操作請求中的類型注釋,並確定與所述類型注釋相對應的資料庫伺服器;以及操作請求分配器(207),適於將所述操作請求分配給所確定的資料庫伺服器。11.如權利要求10所述的設備,其中當所述操作請求解析器(203)未檢測到所述操作請求中的類型注釋時,解析所述操作請求,以判斷所述操作請求的類型,並確定與所述操作請求的類型相對應的資料庫伺服器;並且所述操作請求分配器(207)將所述操作請求分配給所確定的與所述操作請求的類型相對應的資料庫伺服器。12.如權利要求11所述的設備,其中所述操作請求的類型包括寫操作和讀操作。13.如權利要求12所述的設備,其中所述資料庫伺服器包括主資料庫伺服器和從資料庫伺服器,對應於寫操作的資料庫伺服器是主資料庫伺服器,對應於讀操作的資料庫伺服器是從資料庫伺服器。14.如權利要求10至13中的任一項所述的設備,還包括資料庫檢查器(205),適於檢查所確定的資料庫伺服器;以及所述操作請求分配器(207)根據檢查結果將所述操作請求分配給相應的資料庫伺服器或者返回錯誤提示。15.如權利要求10至14中的任一項所述的設備,其中在所述操作請求解析器(203)檢測到所述操作請求中的類型注釋時,檢測所述類型注釋是否表示主資料庫伺服器類型,在檢測到所述類型注釋表示主資料庫伺服器類型的情況下,確定與所述類型注釋相對應的資料庫伺服器是主資料庫伺服器。16.如權利要求11所述的設備,其中當所述操作請求解析器(203)未檢測到所述操作請求中的類型注釋時,根據所述操作請求中包括的資料庫程序語言語句中的關鍵字,判斷所述操作請求的類型。17.如權利要求14所述的設備,其中在所述操作請求解析器(203)所確定的是從資料庫伺服器的情況下,在檢查結果表示從資料庫伺服器狀態正常時,所述操作請求分配器(207)將所述操作請求分配給從資料庫伺服器;在檢查結果表示從資料庫伺服器狀態不正常時,所述資料庫檢查器(205)檢查主資料庫伺服器,在主資料庫伺服器狀態正常時,所述操作請求分配器(207)將所述操作請求分配給主資料庫伺服器,在主資料庫伺服器狀態不正常時,所述操作請求分配器(207)返回表示資料庫伺服器不可用的錯誤提示;或者在所述操作請求解析器(203)所確定的資料庫伺服器是主資料庫伺服器的情況下,在檢查結果表示主資料庫伺服器狀態正常時,所述操作請求分配器(207)將所述操作請求分配給主資料庫伺服器;在檢查結果表示主資料庫伺服器狀態不正常時,所述操作請求分配器(207)返回表示資料庫伺服器不可用的錯誤提示。18.如權利要求16所述的設備,其中所述資料庫程序語言是結構化查詢語言SQL,所述資料庫是MySQL資料庫。全文摘要本發明公開了一種分配資料庫操作請求的方法和設備,其中所述方法包括步驟接收對於資料庫的操作請求;解析所述操作請求,以檢測所述操作請求中的類型注釋;確定與所述類型注釋相對應的資料庫伺服器;以及將所述操作請求分配給所確定的資料庫伺服器。文檔編號G06F17/30GK102999392SQ20121048489公開日2013年3月27日申請日期2012年11月23日優先權日2012年11月23日發明者朱超,陳超,桂勇哲,代兵,王超申請人:北京奇虎科技有限公司,奇智軟體(北京)有限公司