[發明專利]訪問數據庫的方法和裝置以及數據庫管理系統有效
| 申請號: | 201310140523.1 | 申請日: | 2013-04-22 |
| 公開(公告)號: | CN103226598A | 公開(公告)日: | 2013-07-31 |
| 發明(設計)人: | 陳志標;朱仲楚;姚理 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 劉芳 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 訪問 數據庫 方法 裝置 以及 管理 系統 | ||
技術領域
本發明實施例涉及數據處理技術,尤其涉及一種訪問數據庫的方法和裝置以及數據庫管理系統。
背景技術
數據訪問是目前廣泛存在的數據處理需求,通常是應用程序對數據庫中的數據進行訪問。例如可基于數據庫管理系統(Database?Managem?ent?System,DBMS)來實現數據訪問。DBMS一般包括客戶端和服務器,通過客戶端/服務器(Client/Server,C/S)的模式對數據庫進行管理。
應用程序訪問數據庫最常用的方法是,客戶端將應用程序的請求通過通信通道發送給服務器,服務器處理客戶端發送的請求,對數據庫進行查詢、讀、寫等操作,然后將處理結果通過通信通道返回給客戶端,從而完成一次典型的服務流程。C/S訪問模式,通過通信通道的方式,有效的隔離了應用程序和DBMS,保證了DBMS的健壯性。但C/S訪問模式下產生了額外的網絡通信和進程切換等開銷,限制了DBMS的實時性和吞吐量。特別是在高速的內存DBMS中,數據本身的訪問和修改都是在微秒級下,但當前局域網的網絡時延一般是在毫秒級以上。即使是本機訪問,也存在協議棧的處理和進程切換的開銷。這些都使得C/S模式成為內存DBMS的一種訪問瓶頸。即應用程序通過通信通道訪問數據庫,優點是保證了DBMS的健壯性,因為客戶端出現異常不會影響到DBMS,缺點是通信開銷和進程切換開銷大。
當DBMS采用共享內存訪問的方式時,將所有數據存放在共享內存中,共享數據包括各管理功能模塊的管理數據和數據庫中實際存在的數據,應用程序直接訪問共享內存中的數據,應用程序訪問共享內存后需要保證能夠回到最初狀態,否則當應用程序修改共享內存數據發生異常時會導致共享數據破壞,造成DBMS不能使用。ORACLE的Timesten產品當前采用對所有對共享內存的寫操作都通過日志管理,一旦有進程崩潰,該進程產生的日志就可用作恢復,對共享內存操作前必須進入臨界區,每個修改操作對應一條操作日志記錄。由專門的監控進程來監控應用進程的狀態,一旦發現崩潰,立即啟動操作日志清理進程,根據操作日志來恢復共享內存數據。
應用程序訪問共享內存后需要保證能夠回到最初狀態,否則當應用程序修改共享內存數據發生異常時會導致共享數據破壞,造成DBMS不能使用,而現有技術中采用日志管理技術解決應用程序修改共享內存數據發生異常時導致共享內存數據破壞的問題,使整個系統的復雜度大大的提高,實現成本較大,同時,引入日志也帶來了額外的開銷。。
發明內容
本發明實施例提供一種訪問數據庫的方法和裝置以及數據庫管理系統,以優化應用程序對數據庫的訪問方案,提高訪問效率,且降低實現復雜度。
第一方面,本發明實施例提供一種訪問數據庫的方法,包括:
通過數據庫管理系統DBMS的客戶端庫接收業務進程發起的數據訪問請求,所述客戶端庫用于為所述業務進程和所述DBMS的服務器提供數據訪問的接口;
識別所述數據訪問請求的類型,并根據所述數據訪問請求的類型響應所述數據訪問請求。
在第一方面的第一種可能的實現方式中,所述數據請求的類型包括:讀請求和寫請求;所述根據所述數據訪問請求的類型響應所述數據訪問請求,包括:
若所述數據訪問請求的類型為讀請求,則觸發所述DBMS的客戶端庫響應所述數據訪問請求。
若所述數據訪問請求的類型為寫請求,則由所述DBMS的服務器響應所述數據訪問請求。
根據第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述若所述數據訪問請求的類型為讀請求,則觸發所述DBMS的客戶端庫響應所述數據訪問請求,包括:
若所述數據訪問請求為請求讀取第一數據的數據讀請求時,生成與所述數據讀請求相應的執行計劃,存儲在共享內存中,并將所述執行計劃在所述共享內存中的位置信息發送給所述客戶端庫,以使所述客戶端庫根據所述位置信息訪問所述共享內存,以獲取所述第一數據,并將獲取的所述第一數據返回給所述業務進程;
所述若所述數據訪問請求的類型為寫請求,則由所述DBMS的服務器響應所述數據訪問請求,包括:
若所述數據訪問請求為請求寫入第二數據的數據寫請求時,所述DBMS的服務器訪問所述共享內存,根據所述數據寫請求向所述共享內存中寫入所述第二數據,并將寫入結果發送給所述DBMS的客戶端庫,以使所述DBMS的客戶端庫將所述寫入結果返回給所述業務進程。
根據第一方面、第一方面的第一種至第二種可能的實現方式的任意一種,在第三種可能的實現方式中,對接收的所述SQL語句進行解析,以得到所述數據訪問請求的類型。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310140523.1/2.html,轉載請聲明來源鉆瓜專利網。





