混合存儲架構(gòu)下的數(shù)據(jù)訪問方法【專利摘要】本發(fā)明公開了混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,克服混合存儲架構(gòu)下數(shù)據(jù)庫管理和數(shù)據(jù)訪問復(fù)雜性及數(shù)據(jù)庫系統(tǒng)變更和故障缺乏統(tǒng)一管理的問題,混合存儲架構(gòu)下的數(shù)據(jù)訪問方法步驟如下:1)數(shù)據(jù)請求處理:(1)驗證用戶的訪問請求:請求驗證模塊通過查詢元數(shù)據(jù)信息項的緩存完成驗證;給驗證模塊分配一個元數(shù)據(jù)信息的針對數(shù)據(jù)庫或集群狀態(tài)標(biāo)志位以及代理模塊的激活位的一個部分緩存,利用緩存即加快驗證速度;(2)數(shù)據(jù)訪問請求添加至訪問緩存;(3)請求的路由處理;(4)轉(zhuǎn)換代理的處理;(5)請求的執(zhí)行;(6)產(chǎn)生統(tǒng)一格式的結(jié)果或者報告;2)軟件變更與故障處理:(1)元數(shù)據(jù)信息的周期性檢測與響應(yīng);(2)軟件變更處理;(3)故障處理?!緦@f明】混合存儲架構(gòu)下的數(shù)據(jù)訪問方法
技術(shù)領(lǐng)域:
[0001]本發(fā)明設(shè)及一種數(shù)據(jù)的訪問方法,更確切地說,本發(fā)明設(shè)及一種基于非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)混合存儲架構(gòu)下的數(shù)據(jù)訪問方法?!?br>背景技術(shù):
】[0002]近年來,許多公司根據(jù)實際場景,使用了多種更適于在集群上運行的數(shù)據(jù)存儲技術(shù),運些技術(shù)基本上不使用SQL(結(jié)構(gòu)化查詢語言),而是開源的數(shù)據(jù)庫技術(shù)稱之為非關(guān)系型數(shù)據(jù)庫技術(shù)(NoS化技術(shù))。[0003]然而,關(guān)系型數(shù)據(jù)庫系統(tǒng)在聯(lián)機(jī)事務(wù)處理方面的能力仍是非關(guān)系型數(shù)據(jù)庫系統(tǒng)難W企及的,特別是在特定的銀行W及電信等行業(yè)領(lǐng)域,數(shù)據(jù)的存儲離不開關(guān)系型數(shù)據(jù)庫。因此,混合非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)存儲解決方案,利用二者各自的優(yōu)勢,使利益最大化是企業(yè)的一個明智的選擇,也是目前的發(fā)展趨勢。[0004]非關(guān)系型數(shù)據(jù)庫系統(tǒng)所采用的數(shù)據(jù)模型(有鍵值對模型,列族模型,文檔模型,圖數(shù)據(jù)庫模型)與關(guān)系型數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)模型(關(guān)系模型)不同,從本質(zhì)上講導(dǎo)致它們諸多不同之處的主因是兩個系統(tǒng)在用戶請求上的不同或者說是數(shù)據(jù)訪問的方式的不同,而非關(guān)系型數(shù)據(jù)庫系統(tǒng)的引入和關(guān)系型數(shù)據(jù)庫系統(tǒng)的繼續(xù)使用,也導(dǎo)致混合存儲架構(gòu)下數(shù)據(jù)的訪問仍存在一定的問題:[0005]1.參閱圖1,數(shù)據(jù)庫管理和數(shù)據(jù)訪問的復(fù)雜性,不同的數(shù)據(jù)庫要使用不用的數(shù)據(jù)庫管理工具或者訪問接口訪問,缺乏一個統(tǒng)一的數(shù)據(jù)庫管理的平臺和數(shù)據(jù)訪問途徑。[0006]2.非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)的增加、刪除和故障缺乏統(tǒng)一的監(jiān)控管理,缺乏統(tǒng)一的應(yīng)對策略。[0007]3.若使用數(shù)據(jù)倉庫技術(shù),可使用的用于收集非關(guān)系型數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)的工具有限,缺乏一個可W統(tǒng)一使用的工具。[000引4.數(shù)據(jù)庫管理員將不同的數(shù)據(jù)庫封裝為服務(wù),不同存儲系統(tǒng)引入的復(fù)雜性容易導(dǎo)致出現(xiàn)缺乏對服務(wù)進(jìn)行有效管理的情況?!?br/>發(fā)明內(nèi)容】[0009]本發(fā)明所要解決的技術(shù)問題是克服了混合存儲架構(gòu)下面臨的數(shù)據(jù)庫管理和數(shù)據(jù)訪問的復(fù)雜性問題,W及克服了數(shù)據(jù)庫系統(tǒng)變更和故障缺乏統(tǒng)一管理的問題,提供了一種混合存儲架構(gòu)下的數(shù)據(jù)訪問方法。[0010]為解決上述技術(shù)問題,本發(fā)明是采用如下技術(shù)方案實現(xiàn)的:所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法步驟如下:[0011]1)數(shù)據(jù)請求處理:[001^(1)驗證用戶的訪問請求:[0013](2)數(shù)據(jù)訪問請求添加至訪問緩存;[0014](3)請求的路由處理;[0015](4)轉(zhuǎn)換代理的處理;[0016](5)請求的執(zhí)行;[0017](6)產(chǎn)生統(tǒng)一格式的結(jié)果或者報告;[0018]2)軟件變更與故障處理:[0019](1)元數(shù)據(jù)信息的周期性檢測與響應(yīng);[0020](2)軟件變更處理;[0021](3)故障處理。[0022]技術(shù)方案中所述的驗證用戶的訪問請求是指:[0023]1)驗證用戶請求的合法性[0024]用戶的每一個請求將帶有所請求的NoSql集群系統(tǒng)或者RDBMS系統(tǒng)的唯一標(biāo)識ID,運里主要驗證的合法性是用戶請求的ID代表的系統(tǒng)元數(shù)據(jù)項Ii是否存在W及該項的狀態(tài)位標(biāo)記是否為正常Normal,同時代理可用,即標(biāo)記為Activated;用戶授權(quán)等檢測任務(wù)為非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)自帶的任務(wù)功能,本技術(shù)方案則將不設(shè)及,而是直接傳遞給響應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)讓其內(nèi)部自行進(jìn)行處理,并將處理結(jié)果反饋給用戶;[0025]2)加快驗證速度[0026]為了加快驗證速度,請求驗證模塊通過查詢元數(shù)據(jù)信息項的緩存完成驗證;運里給驗證模塊分配一個元數(shù)據(jù)信息的針對數(shù)據(jù)庫或集群狀態(tài)標(biāo)志位W及代理模塊的激活位的一個部分緩存;運樣利用緩存即可加快驗證速度。[0027]技術(shù)方案中所述的請求的路由處理是指:[0028]1)視用戶訪問模塊為用戶請求的生產(chǎn)者,路由模塊為用戶請求的消費者,從而使用生產(chǎn)者消費者問題的解決策略來處理訪問緩存中的用戶請求;[0029]2)路由模塊檢測訪問緩存中存在待處理的訪問請求,就根據(jù)路由信息,將請求發(fā)送給相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的請求轉(zhuǎn)換模塊Ai;[0030]3)Ai設(shè)有第二級緩存,請求放入其緩存[0031]其中路由信息需要按照一定周期T進(jìn)行維護(hù),路由信息的維護(hù)通過周期性查詢元數(shù)據(jù)信息項來完成,需要注意的是,運里的請求的路由類似一種內(nèi)容的路由策略,只是將具有某個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的標(biāo)識ID的請求發(fā)送給與運個ID代表的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)相應(yīng)的代理模塊Ai。[0032]技術(shù)方案中所述的轉(zhuǎn)換代理的處理是指:[0033]1)代理模塊Al對相應(yīng)二級緩存中的請求進(jìn)行解析,編譯,得到可W被非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)處理的請求,主要實現(xiàn)的是用戶請求形式的轉(zhuǎn)換,即由統(tǒng)一封裝的請求轉(zhuǎn)換為各個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)能夠處理的的具體的請求格式;[0034]2)代理模塊Al將處理過的結(jié)果發(fā)送給相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)系統(tǒng)。[0035]技術(shù)方案中所述的請求的執(zhí)行是指:[0036]1)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)執(zhí)行請求后,如果產(chǎn)生需要返回給用戶的數(shù)據(jù)結(jié)果,或者產(chǎn)生請求執(zhí)行報告,將返回結(jié)果或者報告返回給結(jié)果接受模塊Al;[0037]2)Ai將結(jié)果封裝為統(tǒng)一的格式,并發(fā)送封裝后的結(jié)果封裝模塊。[0038]技術(shù)方案中所述的元數(shù)據(jù)信息的周期性檢測與響應(yīng)是指:[0039]1)R非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)每間隔一個查詢周期T2向元數(shù)據(jù)信息列表中的每一項所代表的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送一個檢測消息Ml;[0040]2)收到Ml的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送相應(yīng)的響應(yīng)消息M2;[0041]3)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在一個預(yù)計的得到響應(yīng)的時間T3內(nèi)沒有收到M2,則在響應(yīng)列表項Ii的狀態(tài)處標(biāo)記為故障F;[0042]4)記錄發(fā)生故障的時間等情況的存儲系統(tǒng)故障管理日志[0043]運里的查詢周期T2取值可W根據(jù)預(yù)測或者根據(jù)經(jīng)驗選取一個的平均可能發(fā)生故障或變更的時間,運個時間和非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的總數(shù)目有關(guān)。另一方面,預(yù)計得到響應(yīng)的時間T3與實際非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的分布等因素有關(guān),它是一個可W經(jīng)過若干次反復(fù)的測試得到的平均響應(yīng)時間,反映了正常狀態(tài)下的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)響應(yīng)能力。[0044]技術(shù)方案中所述的軟件變更處理是指:[0045]1)每新增一個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)就向數(shù)據(jù)庫&集群信息注冊管理模塊注冊該非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的元數(shù)據(jù)信息,元數(shù)據(jù)信息項設(shè)置故障標(biāo)識位,并且新加入的元數(shù)據(jù)信息項Yi的故障標(biāo)記位標(biāo)記為正常Normal;記錄存儲系統(tǒng)變更管理日志,將增加系統(tǒng)成功與否的結(jié)果寫入日志;[0046]2)每減少一個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)中刪除對應(yīng)的元數(shù)據(jù)信息;記錄存儲系統(tǒng)變更管理日志,將刪除系統(tǒng)成功與否的結(jié)果寫入日志;[0047]其中,不同類型的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)元數(shù)據(jù)信息都W統(tǒng)一的形式進(jìn)行存儲和管理;[0048]3)請求轉(zhuǎn)換模塊的處理與維護(hù):[0049](1)每有新響應(yīng)列表項Ii增加,就集成或者調(diào)用一個請求轉(zhuǎn)換代理模塊,并標(biāo)記為激活A(yù)ctivated;[0050](2)每有響應(yīng)列表項Ii被標(biāo)記為故障F,則其代理模塊Al被標(biāo)記為失效NotActivated;運里的代理模塊Al是為相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)專有的。[0051]技術(shù)方案中所述的故障處理是指:[0052]1)如果為非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)臨時故障則:[0053](1)每個發(fā)生故障的閑自關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)設(shè)有一個相應(yīng)的故障恢復(fù)時間T4,若某個發(fā)生故障的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在其恢復(fù)時間T4內(nèi)恢復(fù)正常,則向非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送一個故障恢復(fù)消息M3;[0054](2)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)收到該消息后,將相應(yīng)的元數(shù)據(jù)項的故障標(biāo)記位改為正常,即F-〉Normal,同時相應(yīng)的Ai的激活位改為激活的,即NotActivated-〉A(chǔ)ctivated;[0055](3)恢復(fù)的時間W及結(jié)果寫入到存儲系統(tǒng)故障管理日志;[0056]運里的故障恢復(fù)時間T4為特定非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的平均短期故障恢復(fù)值,可由經(jīng)驗獲得;[0057]2)如果為長久故障則:[0058](1)若在故障恢復(fù)時間T3內(nèi)沒有收到相應(yīng)項的恢復(fù)消息M3,則假定該非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)將長期不可用;[0059](2)刪除R&NRMM中不可用的數(shù)據(jù)庫或者集群對應(yīng)的元數(shù)據(jù)項Yi,然后刪除或者撤銷與代理模塊Al的鏈接;[0060](3)刪除的時間W及相關(guān)信息寫入存儲系統(tǒng)變更管理日志。[0061]與現(xiàn)有技術(shù)相比本發(fā)明的有益效果是:[0062]1.非結(jié)構(gòu)化數(shù)據(jù)的分析處理難題一直困擾著企業(yè)的運轉(zhuǎn),比如購物網(wǎng)站擁有海量的數(shù)據(jù),它們當(dāng)中有結(jié)構(gòu)化數(shù)據(jù)(即行數(shù)據(jù),存儲在數(shù)據(jù)庫里,可W用二維表結(jié)構(gòu)來邏輯表達(dá)實現(xiàn)的數(shù)據(jù))也有非結(jié)構(gòu)化數(shù)據(jù)(各種文檔、圖片、視頻等無法用傳統(tǒng)方法處理的數(shù)據(jù)),利用二者的結(jié)合可W挖掘出很多商業(yè)價值,但是目前的數(shù)據(jù)庫管理系統(tǒng)要么只支持關(guān)系型數(shù)據(jù)庫系統(tǒng),要么只能管理非關(guān)系型數(shù)據(jù)庫系統(tǒng),十分不方便而且沒有效率,本發(fā)明提供了對混合存儲架構(gòu)下的非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)的統(tǒng)一的有效管理,一定程度上方便了數(shù)據(jù)庫管理員和數(shù)據(jù)庫使用的用戶對存儲架構(gòu)的管理和使用,降低了復(fù)雜性,為企業(yè)成功引入非關(guān)系型數(shù)據(jù)庫系統(tǒng)提供便利。[0063]2.現(xiàn)有的數(shù)據(jù)管理系統(tǒng)體系大多數(shù)死板,對于相應(yīng)模塊的限制極為苛刻,而本發(fā)明對混和存儲架構(gòu)下,非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)的動態(tài)加入提供了管理方法,增強(qiáng)了混合存儲架構(gòu)的可擴(kuò)展性。[0064]3.在設(shè)及到數(shù)據(jù)庫服務(wù)器集群的問題中,故障處理問題W及處理的響應(yīng)時間的問題是比較重要的問題,本發(fā)明對服務(wù)器集群W及數(shù)據(jù)庫的短期故障處理提供了有效管理,方便找出發(fā)生故障的系統(tǒng),提供解決方案,降低了故障發(fā)現(xiàn)和處理的成本。[0065]4.現(xiàn)有的非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)的管理方式區(qū)別很多,沒有一個統(tǒng)一的模式進(jìn)行管理,本發(fā)明提供了數(shù)據(jù)混合存儲架構(gòu)下,用戶請求的統(tǒng)一封裝訪問的方法和步驟,W及方法所需要的功能模塊。[0066]5.我國目前的數(shù)據(jù)庫服務(wù)器集群的現(xiàn)狀是單一節(jié)點規(guī)模小,分布于不同的地理地點,所W需要一個便于管理具有多個非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)的地理分布的存儲架構(gòu)。本發(fā)明就滿足了運種需求。【附圖說明】[0067]下面結(jié)合附圖對本發(fā)明作進(jìn)一步的說明:[0068]圖1為目前的混合存儲架構(gòu)下的數(shù)據(jù)庫管理狀況的示意圖。[0069]圖2為本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法中的數(shù)據(jù)庫管理狀況的示意圖。[0070]圖3為本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法中的用戶訪問模塊、響應(yīng)模塊、非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)注冊管理模塊、路由模塊、請求轉(zhuǎn)換的代理模塊等功能模塊的總體架構(gòu)圖。[0071]圖4為本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法的請求轉(zhuǎn)換代理模塊的內(nèi)部功能模塊的架構(gòu)的示意圖。[0072]圖5為本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法的用戶訪問模塊的用戶界面和封裝功能模塊的邏輯圖。[0073]圖6為本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法中非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)注冊管理模塊的內(nèi)部功能模塊的架構(gòu)示意圖。[0074]圖7為本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法的流程圖?!揪唧w實施方式】[0075]下面結(jié)合附圖對本發(fā)明作詳細(xì)的描述:[0076]參閱圖1,單獨的關(guān)系型數(shù)據(jù)庫系統(tǒng)已經(jīng)不能滿足數(shù)據(jù)存儲與訪問的需要,新興的非關(guān)系型數(shù)據(jù)庫集群系統(tǒng)與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)相結(jié)合已是趨勢,但是目前不論是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)還是新興的非關(guān)系型數(shù)據(jù)庫系統(tǒng)都有各自獨立的訪問方式,目前傳統(tǒng)的方式就是對非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)進(jìn)行分開處理,運樣不利于統(tǒng)一地進(jìn)行數(shù)據(jù)訪問與管理,所W本發(fā)明致力于實現(xiàn)混合存儲架構(gòu)下的數(shù)據(jù)統(tǒng)一訪問方法。[0077]參閱圖2,本發(fā)明提供了一種適合于電子商務(wù)企業(yè)和其他使用混合存儲架構(gòu)的企業(yè)的數(shù)據(jù)統(tǒng)一訪問系統(tǒng)。該系統(tǒng)提供了混合存儲架構(gòu)下的數(shù)據(jù)訪問和數(shù)據(jù)庫管理的功能。設(shè)及到的企業(yè)的特征是具有多種類的數(shù)據(jù)存儲需求,并且W非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)混合存儲架構(gòu)為基本存儲架構(gòu)。[0078]不同于傳統(tǒng)的分開處理的方式(如圖1所示),本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法基于對化ase(是一個分布式的、面向列的開源數(shù)據(jù)庫)與MongoDB(目前在IT行業(yè)非常流行的一種非關(guān)系型數(shù)據(jù)庫)等非關(guān)系型數(shù)據(jù)庫系統(tǒng)系統(tǒng)的研究,對鍵值對存儲、列式存儲、文檔存儲和圖數(shù)據(jù)庫的數(shù)據(jù)存儲模型等非關(guān)系型數(shù)據(jù)模型的研究,對混合存儲架構(gòu)的理解和對目前使用web(互聯(lián)網(wǎng))服務(wù)的方法的研究,在對不同數(shù)據(jù)需求應(yīng)采取不同的存儲策略的認(rèn)識的基礎(chǔ)上,針對引入不同類型存儲系統(tǒng)帶來的復(fù)雜性,數(shù)據(jù)操作形式多樣性,系統(tǒng)短期故障等問題,給出了一種有效管理方法和系統(tǒng)架構(gòu)的設(shè)計。本方法旨在用統(tǒng)一的方式管理非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)的混合數(shù)據(jù)。[0079]參閱圖3,混合存儲架構(gòu)下的數(shù)據(jù)訪問系統(tǒng)應(yīng)包括如下部分:用戶訪問端,后臺輔助端,響應(yīng)端。[0080]1.用戶訪問端包括用戶界面模塊和請求驗證模塊[0081]用戶訪問端的用戶界面的作用為讓軟件程序與使用者進(jìn)行交互,本專利提供的用戶訪問模塊是用W顯示集群W及數(shù)據(jù)庫信息、封裝請求、提供用戶訪問接口與顯示接收請求結(jié)果的用戶訪問模塊。而請求驗證的作用是驗證請求的發(fā)起者的權(quán)限。[0082]2.后臺輔助端包括訪問緩存模塊W及用戶管理模塊[0083]用戶管理要想實現(xiàn)統(tǒng)一地訪問管理,那么"管理者"需要知道管理著誰,它們都做了些什么,本方法要實現(xiàn)混合存儲架構(gòu)下的數(shù)據(jù)訪問就需要一個模塊,它存儲與管理混合架構(gòu)的元數(shù)據(jù)信息(元數(shù)據(jù)信息即描述數(shù)據(jù)屬性的信息)。它也能生成記錄存儲系統(tǒng)情況的日志并進(jìn)行數(shù)據(jù)庫系統(tǒng)的信息注冊和管理。[0084]1)數(shù)據(jù)庫的日志文件用來記錄數(shù)據(jù)的修改操作,其中的每條日志記錄或者記錄所執(zhí)行的邏輯操作,或者記錄已修改數(shù)據(jù)的前像和后像。前像是操作執(zhí)行前的數(shù)據(jù)復(fù)本;后像是操作執(zhí)行后的數(shù)據(jù)復(fù)本;[0085]2)由于混合架構(gòu)是有不同類型的數(shù)據(jù)庫組成,進(jìn)行訪問與管理必須知道混合架構(gòu)的組成信息,數(shù)據(jù)庫&集群信息注冊和管理模塊就是為了對架構(gòu)的組成統(tǒng)一管理;[0086]此外由于可能同時有多個用戶請求訪問混合架構(gòu)下的非關(guān)系型數(shù)據(jù)庫系統(tǒng)中的同一個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)中的某個數(shù)據(jù)庫,所W需要一個緩存用戶訪問模塊分發(fā)用戶請求的用戶訪問緩存模塊。[0087]3.響應(yīng)端包括路由模塊與請求轉(zhuǎn)換模塊[0088]路由模塊作用是分發(fā)用戶請求到不同的數(shù)據(jù)庫系統(tǒng)。[0089]現(xiàn)有的數(shù)據(jù)訪問請求不會同時訪問非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng),當(dāng)一個請求出現(xiàn)時,需要一個代理模塊,將用戶請求與非關(guān)系型數(shù)據(jù)庫系統(tǒng)或關(guān)系型數(shù)據(jù)庫系統(tǒng)對應(yīng)起來,路由模塊就是為了實現(xiàn)運個對應(yīng)的功能。[0090]請求轉(zhuǎn)換模塊有很多,每一請求轉(zhuǎn)換模塊都專口對應(yīng)一個非關(guān)系型數(shù)據(jù)庫或者一個關(guān)系型數(shù)據(jù)庫,所W運個請求轉(zhuǎn)換模塊的個數(shù)與混合存儲架構(gòu)下非關(guān)系型數(shù)據(jù)庫數(shù)量和關(guān)系型數(shù)據(jù)庫的數(shù)量的總和相同。[0091]當(dāng)上述提到的路由模塊將用戶請求與非關(guān)系型數(shù)據(jù)庫系統(tǒng)與關(guān)系型數(shù)據(jù)庫系統(tǒng)對應(yīng)起來后,某一個模塊只專口處理其對應(yīng)的請求,運就是混合存儲架構(gòu)的若干個請求轉(zhuǎn)換模塊。[0092]具體說明如下:[0093]1.參閱圖4,軟件程序包括若干個請求轉(zhuǎn)換模塊,模塊的個數(shù)與混合存儲架構(gòu)下非關(guān)系型數(shù)據(jù)庫數(shù)量和關(guān)系型數(shù)據(jù)庫的數(shù)量的總和相同。[0094]每一個請求轉(zhuǎn)換模塊的內(nèi)部包括:[00M]1)二級請求緩存模塊[0096]二級請求緩存模塊緩存路由模塊發(fā)送過來的用戶統(tǒng)一格式的請求。[0097]2)請求解析編譯模塊[0098]請求解析編譯模塊作為處理請求的模塊,將請求轉(zhuǎn)換成系統(tǒng)中某一個數(shù)據(jù)庫對應(yīng)的查詢接口或者轉(zhuǎn)換成某種規(guī)范格式(比如S化語句)。[0099]請求解析編譯模塊根據(jù)特定的解析編譯規(guī)則來解析和編譯,運套規(guī)則是根據(jù)某一個非關(guān)系型數(shù)據(jù)庫和某一個關(guān)系型數(shù)據(jù)庫而特別制定的,用來將統(tǒng)一的用戶請求轉(zhuǎn)換為其對應(yīng)的查詢接口或者轉(zhuǎn)換成某種規(guī)范格式(比如S化語句),稱之為解析規(guī)則1。[0100]3)請求發(fā)送模塊[0101]由(請求解析編譯模塊)轉(zhuǎn)換完成的請求將會由請求發(fā)送模塊根據(jù)數(shù)據(jù)庫標(biāo)識W及管理節(jié)點的IP地址,即(IDJP)數(shù)據(jù)對,將請求發(fā)送到相應(yīng)的某一個非關(guān)系型數(shù)據(jù)庫或者某一個關(guān)系型數(shù)據(jù)庫。[0102]4)結(jié)果接受模塊[0103]數(shù)據(jù)庫在接收請求后,將相應(yīng)的請求的執(zhí)行結(jié)果發(fā)送給結(jié)果接收模塊[0104]5)結(jié)果封裝模塊[0105]結(jié)果接收模塊將其交給結(jié)果封裝模塊,結(jié)果封裝模塊根據(jù)封裝規(guī)則1將其封裝為統(tǒng)一的格式。[0106]運里解析規(guī)則I與封裝規(guī)則I是相互對應(yīng)的一套規(guī)則,規(guī)定了特定數(shù)據(jù)請求格式與統(tǒng)一封裝的格式之間的轉(zhuǎn)換規(guī)則,兩套規(guī)則應(yīng)該是可逆的,并且要求使用同樣的統(tǒng)一格式。最后,結(jié)果封裝模塊將封裝好的結(jié)果發(fā)送至響應(yīng)緩存模塊。[0107]2.參閱圖5,本發(fā)明的一個實施例包括一個用戶界面,用W顯示集群W及數(shù)據(jù)庫信息、封裝請求、展示用戶訪問接口、顯示請求結(jié)果。[0108]用戶訪問模塊主要由用戶界面和請求驗證模塊組成,可WW腳本(計算機(jī)的腳本程序是確定一系列控制計算機(jī)進(jìn)行運算操作動作的組合)的形式存在。[0109]用戶界面由W下部分構(gòu)成:[0110]1)集群&數(shù)據(jù)庫信息選擇區(qū)域。[0111]2)可用APIW及當(dāng)前集群&數(shù)據(jù)庫信息檢視區(qū)域。[0112]3)查詢請求區(qū)域。[011引4)請求封裝器。[0114]5)結(jié)果展示區(qū)域[0115]非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)的信息通過驗證模塊確定正常工作后,就將其信息顯示在用戶界面的集群&數(shù)據(jù)庫信息選擇區(qū)域,供用戶選擇想要發(fā)送請求的非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)。[0116]用戶當(dāng)前選擇的非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)信息顯示在可用APIW及當(dāng)前集群&數(shù)據(jù)庫信息檢視區(qū)域中,供用戶參閱。[0117]用戶的請求由請求封裝器根據(jù)封裝規(guī)則1,將特定非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)請求封裝成統(tǒng)一格式的請求,發(fā)送給用戶訪問緩存。[0118]3.參閱圖6,本發(fā)明的一個實施例包括一個存儲不同數(shù)據(jù)庫與集群元數(shù)據(jù)信息,管理元數(shù)據(jù)信息和數(shù)據(jù)庫W及記錄存儲系統(tǒng)情況的日志的非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)信息注冊和管理模塊。[0119]非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)信息注冊和管理模塊由W下部分構(gòu)成:[0120]1)元數(shù)據(jù)信息維護(hù)模塊。[0121]2)日志管理模塊。[0122]3)集群&數(shù)據(jù)庫元數(shù)據(jù)記錄。[0123]4)存儲系統(tǒng)故障管理日志。[0124]5)存儲系統(tǒng)變更管理日志。[0125]元數(shù)據(jù)的信息至少包括W下內(nèi)容:[id,name,type,抓L,s1:ate,agent,a],其中id為存儲系統(tǒng)的唯一標(biāo)識,name屬性指定了存儲系統(tǒng)的名稱,URL為存儲系統(tǒng)的管理節(jié)點的位置,S化te說明了存儲系統(tǒng)的狀態(tài),agent指定了轉(zhuǎn)換代理的標(biāo)識,a為代理的激活標(biāo)識,下面表格是一組模擬的系統(tǒng)元數(shù)據(jù)的實例。[0126]表1元數(shù)據(jù)信息實例[0127][0128]元數(shù)據(jù)信息的建立,更新,刪除和查找操作都由元數(shù)據(jù)信息維護(hù)模塊完成,每當(dāng)有存儲系統(tǒng)故障或恢復(fù),或者存儲系統(tǒng)的增加或傷處,元數(shù)據(jù)信息維護(hù)模塊還要通知系統(tǒng)日志管理模塊完成對相應(yīng)的日志的管理。[0129]故障管理日志和系統(tǒng)變更日志需要記錄發(fā)生故障或恢復(fù),W及存儲系統(tǒng)變更的時間,相應(yīng)變動的系統(tǒng)的情況。[0130]4.軟件程序包括一個分發(fā)用戶請求到不同的非關(guān)系型數(shù)據(jù)庫系統(tǒng)和關(guān)系型數(shù)據(jù)庫系統(tǒng)訪問的代理的路由模塊。[0131]路由模塊主要維護(hù)一張(id,agent)的對應(yīng)關(guān)系表,該表表示了特定系統(tǒng)到特定轉(zhuǎn)換代理的內(nèi)容路由規(guī)則。路由模塊負(fù)責(zé)根據(jù)路由規(guī)則表來分發(fā)請求到不同的用戶請求轉(zhuǎn)換代理。[0132]5.-個緩存用戶訪問模塊分發(fā)的用戶請求的用戶訪問緩存。[0133]6.-個緩存請求轉(zhuǎn)換代理返回的查詢結(jié)果或報告的響應(yīng)緩存。[0134]本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法[0135]參閱圖7,本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法包含兩大部分即數(shù)據(jù)請求處理部分和軟件程序變更與故障處理部分。[0136]-個全面的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法必須既能完成數(shù)據(jù)訪問任務(wù)又能實時的處理出現(xiàn)的異常情況。如圖所示,在按右側(cè)步驟提供數(shù)據(jù)訪問服務(wù)的同時,本方法同時在線實時監(jiān)聽軟件運行,一旦發(fā)生異常情況按左側(cè)的軟件變更與故障處理部分的步驟實時處理。[0137]本發(fā)明所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法的步驟如下:[0138]本方法包含兩個部分:[0139]一.數(shù)據(jù)請求處理[0140]1.驗證用戶的訪問請求:[0141]1)驗證用戶請求的合法性[0142]用戶的每一個請求將帶有所請求的NoSql集群系統(tǒng)或者RDBMS系統(tǒng)的唯一標(biāo)識ID,運里主要驗證的合法性是用戶請求的ID代表的系統(tǒng)元數(shù)據(jù)項Ii是否存在W及該項的狀態(tài)位標(biāo)記是否為正常Normal,同時代理可用,即標(biāo)記為Activated。用戶授權(quán)等檢測任務(wù)為非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)自帶的任務(wù)功能,本專利軟件則將不設(shè)及,而是直接傳遞給響應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)讓其內(nèi)部自行進(jìn)行處理,并將處理結(jié)果反饋給用戶。[0143]2)加快驗證速度[0144]為了加快驗證速度,請求驗證模塊可W通過查詢元數(shù)據(jù)信息項的緩存完成驗證。運里可W給驗證模塊分配一個元數(shù)據(jù)信息的針對數(shù)據(jù)庫或集群狀態(tài)標(biāo)志位W及代理模塊的激活位的一個部分緩存,即UcU集群或數(shù)據(jù)庫系統(tǒng)狀態(tài)標(biāo)記為,代理激活位}。運樣利用緩存即可加快驗證速度。[0145]2.數(shù)據(jù)訪問請求添加至訪問緩存;[0146]3.請求的路由處理:[0147]1)可W視用戶訪問模塊為用戶請求的生產(chǎn)者,路由模塊為用戶請求的消費者,從而使用生產(chǎn)者消費者問題的解決策略來處理訪問緩存中的用戶請求。[0148]2)路由模塊檢測訪問緩存中存在待處理的訪問請求,就根據(jù)路由信息,將請求發(fā)送給相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的請求轉(zhuǎn)換模塊Ai。[0149]3)Ai設(shè)有第二級緩存,請求放入其緩存。[0150]其中路由信息需要按照一定周期T進(jìn)行維護(hù),路由信息的維護(hù)通過周期性查詢元數(shù)據(jù)信息項來完成。需要注意的是,運里的請求的路由類似一種內(nèi)容的路由策略,只是將具有某個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的標(biāo)識ID的請求發(fā)送給與運個ID代表的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)相應(yīng)的代理模塊Ai。[0151]4.轉(zhuǎn)換代理的處理:[0152]1)代理模塊Al對相應(yīng)二級緩存中的請求進(jìn)行解析,編譯,得到可W被非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)處理的請求,主要實現(xiàn)的是用戶請求形式的轉(zhuǎn)換,即由統(tǒng)一封裝的請求轉(zhuǎn)換為各個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)能夠處理的的具體的請求格式(API)。[0153]2)代理模塊Al將處理過的結(jié)果發(fā)送給相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)系統(tǒng)。[0154]5.請求的執(zhí)行:[0155]1)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)執(zhí)行請求后,如果產(chǎn)生需要返回給用戶的數(shù)據(jù)結(jié)果,或者產(chǎn)生請求執(zhí)行報告,將返回結(jié)果或者報告返回給結(jié)果接受模塊Ai。[0156]2)Ai將結(jié)果封裝為統(tǒng)一的格式,并發(fā)送封裝后的結(jié)果封裝模塊。[0157]6.產(chǎn)生統(tǒng)一格式的結(jié)果或者報告:[0158]方法進(jìn)行1至6步驟中的任一步驟時數(shù)據(jù)訪問出現(xiàn)了問題,方法將轉(zhuǎn)入第二部分即進(jìn)入系統(tǒng)變更與故障處理部分;[0159]二.軟件變更與故障處理[0160]1.元數(shù)據(jù)信息的周期性檢測與響應(yīng):[0161]1)R非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)每間隔一個查詢周期T2向元數(shù)據(jù)信息列表中的每一項所代表的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送一個檢測消息Ml。[0162]2)收到Ml的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送相應(yīng)的響應(yīng)消息M2。[0163]3)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在一個預(yù)計的得到響應(yīng)的時間T3內(nèi)沒有收到M2,則在響應(yīng)列表項Ii(Item,第i個表項簡記為Ii)的狀態(tài)處標(biāo)記為故障F(failed)。[0164]4)記錄發(fā)生故障的時間等情況的存儲系統(tǒng)故障管理日志。[0165]運里的查詢周期T2取值可W根據(jù)預(yù)測或者根據(jù)經(jīng)驗選取一個的平均可能發(fā)生故障或變更的時間,運個時間和非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的總數(shù)目有關(guān)。另一方面,預(yù)計得到響應(yīng)的時間T3與實際非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的分布等因素有關(guān),它是一個可W經(jīng)過若干次反復(fù)的測試得到的平均響應(yīng)時間,反映了正常狀態(tài)下的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)響應(yīng)能力。[0166]2.軟件變更處理:[0167]軟件如果檢測到發(fā)生的是軟件變更,則按照企業(yè)的存儲系統(tǒng)中新的變更方法管理。[0168]1)每新增一個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)就向數(shù)據(jù)庫&集群信息注冊管理模塊(畑BMS&NoSqlclusterregisterandmanagemodule,W下簡稱R&NRMM)注冊該非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的元數(shù)據(jù)信息,元數(shù)據(jù)信息項設(shè)置故障標(biāo)識位,并且新加入的元數(shù)據(jù)信息項Yi的故障標(biāo)記位標(biāo)記為正常Normal。記錄存儲系統(tǒng)變更管理日志,將增加系統(tǒng)成功與否的結(jié)果寫入日志。[0169]2)每減少一個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)中刪除對應(yīng)的元數(shù)據(jù)信息。記錄存儲系統(tǒng)變更管理日志,將刪除系統(tǒng)成功與否的結(jié)果寫入日志。[0170]其中,不同類型的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)元數(shù)據(jù)信息都W統(tǒng)一的形式進(jìn)行存儲和管理。[0171]3)請求轉(zhuǎn)換模塊的處理與維護(hù):[0172](1)每有新響應(yīng)列表項Ii增加,就集成或者調(diào)用一個請求轉(zhuǎn)換代理模塊(Agent,第i個代理模塊簡記為Ai),并標(biāo)記為激活A(yù)ctivated;[0173](2)每有響應(yīng)列表項Ii被標(biāo)記為故障F,則其代理模塊Al被標(biāo)記為失效NotActivated。運里的代理模塊Al是為相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)專有的。[0174]3.故障處理:[0175]如果檢測到發(fā)生的是故障,則判斷是否為長久故障。[0176]1)如果為非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)臨時故障則:[0177](1)每個發(fā)生故障的閑自關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)設(shè)有一個相應(yīng)的故障恢復(fù)時間T4,若某個發(fā)生故障的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在其恢復(fù)時間T4內(nèi)恢復(fù)正常,則向非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送一個故障恢復(fù)消息M3。[0178](2)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)收到該消息后,將相應(yīng)的元數(shù)據(jù)項的故障標(biāo)記位改為正常,即F-〉Normal,同時相應(yīng)的Ai的激活位改為激活的,即NotActivated-〉A(chǔ)ctivated。[0179](3)恢復(fù)的時間W及結(jié)果寫入到存儲系統(tǒng)故障管理日志。[0180]運里的故障恢復(fù)時間T4為特定非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的平均短期故障恢復(fù)值,可由經(jīng)驗獲得。[0181]2)如果為長久故障則:[0182](1)若在故障恢復(fù)時間T3內(nèi)沒有收到相應(yīng)項的恢復(fù)消息M3,則假定該非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)將長期不可用。[0183](2)刪除R&NRMM中不可用的數(shù)據(jù)庫或者集群對應(yīng)的元數(shù)據(jù)項Yi,然后刪除或者撤銷與代理模塊Al的鏈接。[0184](3)刪除的時間W及相關(guān)信息寫入存儲系統(tǒng)變更管理日志。[01化]實施例:[0186]本發(fā)明實施例的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,包括如下步驟:[0187]步驟1:構(gòu)建混合架構(gòu)的數(shù)據(jù)庫系統(tǒng)(至少包括一個關(guān)系型數(shù)據(jù)庫和一個非關(guān)系型數(shù)據(jù)庫)。[0188]步驟2:提供一個用戶界面,用戶利用界面向系統(tǒng)發(fā)送請求。[0189]步驟3:系統(tǒng)根據(jù)用戶的請求,將該請求轉(zhuǎn)發(fā)給對應(yīng)的數(shù)據(jù)庫。[0190]步驟4:對應(yīng)的數(shù)據(jù)庫接收到請求后響應(yīng)該請求,并將結(jié)果封裝轉(zhuǎn)發(fā)給系統(tǒng)。[0191]步驟5:系統(tǒng)將結(jié)果返還給用戶。[0192]舉例說明:[0193]實施例1:用戶1在用戶端輸入請求:selec巧打omtablel化2后,系統(tǒng)驗證用戶1是否具有權(quán)限,如果用戶1不具有權(quán)限則不支持此請求,如果用戶1具有該權(quán)限則將該請求轉(zhuǎn)發(fā)給數(shù)據(jù)訪問系統(tǒng)。系統(tǒng)根據(jù)用戶1的請求將該請求轉(zhuǎn)發(fā)給DB2數(shù)據(jù)庫(IBM公司的關(guān)系型數(shù)據(jù)庫),DB2數(shù)據(jù)庫接收到該請求后執(zhí)行該請求生成結(jié)果集,并將結(jié)果集轉(zhuǎn)發(fā)給系統(tǒng)。最后系統(tǒng)將結(jié)果集展示給用戶1。訪問沒有采取統(tǒng)一格式的混合存儲架構(gòu)需要用戶自己找尋對應(yīng)的數(shù)據(jù)庫節(jié)點,并且要求用戶了解每一種類型的數(shù)據(jù)庫,不僅操作復(fù)雜對工作人員的要求也較高。通過此例可W明顯看到本方法基于統(tǒng)一的查詢格式,簡化了混合存儲架構(gòu)下數(shù)據(jù)訪問方法的復(fù)雜度。[0194]實施例2:用戶2在用戶端輸入請求:db.users.find(nul1,{"name":true,"country":t;rue,"_id":false})mongoDB后,系統(tǒng)驗證用戶2是否具有權(quán)限,如果用戶2不具有權(quán)限則不支持此請求,如果用戶2具有該權(quán)限則將該請求轉(zhuǎn)發(fā)給數(shù)據(jù)訪問系統(tǒng)。系統(tǒng)根據(jù)用戶2的請求將該請求轉(zhuǎn)發(fā)給mongoDB數(shù)據(jù)庫(熱口的非關(guān)系型數(shù)據(jù)庫),mongoDB數(shù)據(jù)庫接收到該請求后執(zhí)行該請求生成結(jié)果集,并將結(jié)果集轉(zhuǎn)發(fā)給系統(tǒng)。最后系統(tǒng)將結(jié)果集展示給用戶2。[01巧]實施例3:用戶3在用戶端輸入select*f;rom化ble3oracle后,系統(tǒng)驗證用戶3是否具有權(quán)限,如果用戶3不具有權(quán)限則不支持此請求,如果用戶3具有該權(quán)限則將該請求轉(zhuǎn)發(fā)給數(shù)據(jù)訪問系統(tǒng)。系統(tǒng)根據(jù)用戶3的請求將該請求轉(zhuǎn)發(fā)給化acle數(shù)據(jù)庫(甲骨文公司的關(guān)系型數(shù)據(jù)庫),但是此時化acle數(shù)據(jù)庫節(jié)點服務(wù)器發(fā)生了故障,請求無法傳達(dá),系統(tǒng)將錯誤發(fā)送給故障處理模塊。故障處理模塊進(jìn)行判斷此時化acle數(shù)據(jù)庫節(jié)點服務(wù)器發(fā)生了故障,故障處理模塊發(fā)出警告并返回給用戶3錯誤信息?!局鳈?quán)項】1.一種混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法步驟如下:1)數(shù)據(jù)請求處理:(1)驗證用戶的訪問請求;(2)數(shù)據(jù)訪問請求添加至訪問緩存;(3)請求的路由處理;(4)轉(zhuǎn)換代理的處理;(5)請求的執(zhí)行;(6)產(chǎn)生統(tǒng)一格式的結(jié)果或者報告;2)軟件變更與故障處理:(1)元數(shù)據(jù)信息的周期性檢測與響應(yīng);(2)軟件變更處理;(3)故障處理。2.按照權(quán)利要求1所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的驗證用戶的訪問請求是指:1)驗證用戶請求的合法性用戶的每一個請求將帶有所請求的NoSql集群系統(tǒng)或者RDBMS系統(tǒng)的唯一標(biāo)識ID,這里主要驗證的合法性是用戶請求的ID代表的系統(tǒng)元數(shù)據(jù)項^是否存在以及該項的狀態(tài)位標(biāo)記是否為正常Normal,同時代理可用,即標(biāo)記為Activated;用戶授權(quán)等檢測任務(wù)為非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)自帶的任務(wù)功能,本技術(shù)方案則將不涉及,而是直接傳遞給響應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)讓其內(nèi)部自行進(jìn)行處理,并將處理結(jié)果反饋給用戶;2)加快驗證速度為了加快驗證速度,請求驗證模塊通過查詢元數(shù)據(jù)信息項的緩存完成驗證;這里給驗證模塊分配一個元數(shù)據(jù)信息的針對數(shù)據(jù)庫或集群狀態(tài)標(biāo)志位以及代理模塊的激活位的一個部分緩存;這樣利用緩存即可加快驗證速度。3.按照權(quán)利要求1所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的請求的路由處理是指:1)視用戶訪問模塊為用戶請求的生產(chǎn)者,路由模塊為用戶請求的消費者,從而使用生產(chǎn)者消費者問題的解決策略來處理訪問緩存中的用戶請求;2)路由模塊檢測訪問緩存中存在待處理的訪問請求,就根據(jù)路由信息,將請求發(fā)送給相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的請求轉(zhuǎn)換模塊Ai;3)Ai設(shè)有第二級緩存,請求放入其緩存其中路由信息需要按照一定周期T進(jìn)行維護(hù),路由信息的維護(hù)通過周期性查詢元數(shù)據(jù)信息項來完成,需要注意的是,這里的請求的路由類似一種內(nèi)容的路由策略,只是將具有某個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的標(biāo)識ID的請求發(fā)送給與這個ID代表的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)相應(yīng)的代理模塊A1134.按照權(quán)利要求1所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的轉(zhuǎn)換代理的處理是指:1)代理模塊仏對相應(yīng)二級緩存中的請求進(jìn)行解析,編譯,得到可以被非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)處理的請求,主要實現(xiàn)的是用戶請求形式的轉(zhuǎn)換,即由統(tǒng)一封裝的請求轉(zhuǎn)換為各個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)能夠處理的的具體的請求格式;2)代理模塊仏將處理過的結(jié)果發(fā)送給相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)系統(tǒng)。5.按照權(quán)利要求1所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的請求的執(zhí)行是指:1)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)執(zhí)行請求后,如果產(chǎn)生需要返回給用戶的數(shù)據(jù)結(jié)果,或者產(chǎn)生請求執(zhí)行報告,將返回結(jié)果或者報告返回給結(jié)果接受模塊A1;2.M將結(jié)果封裝為統(tǒng)一的格式,并發(fā)送封裝后的結(jié)果封裝模塊。6.按照權(quán)利要求1所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的元數(shù)據(jù)信息的周期性檢測與響應(yīng)是指:1.R非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)每間隔一個查詢周期T2向元數(shù)據(jù)信息列表中的每一項所代表的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送一個檢測消息Ml;2)收到Ml的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送相應(yīng)的響應(yīng)消息M2;3)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在一個預(yù)計的得到響應(yīng)的時間T3內(nèi)沒有收到M2,則在響應(yīng)列表項Ii的狀態(tài)處標(biāo)記為故障F;4)記錄發(fā)生故障的時間等情況的存儲系統(tǒng)故障管理日志這里的查詢周期T2取值可以根據(jù)預(yù)測或者根據(jù)經(jīng)驗選取一個的平均可能發(fā)生故障或變更的時間,這個時間和非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的總數(shù)目有關(guān)。另一方面,預(yù)計得到響應(yīng)的時間T3與實際非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的分布等因素有關(guān),它是一個可以經(jīng)過若干次反復(fù)的測試得到的平均響應(yīng)時間,反映了正常狀態(tài)下的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)響應(yīng)能力。7.按照權(quán)利要求1所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的軟件變更處理是指:1)每新增一個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)就向數(shù)據(jù)庫&集群信息注冊管理模塊注冊該非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的元數(shù)據(jù)信息,元數(shù)據(jù)信息項設(shè)置故障標(biāo)識位,并且新加入的元數(shù)據(jù)信息項¥1的故障標(biāo)記位標(biāo)記為正常Normal;記錄存儲系統(tǒng)變更管理日志,將增加系統(tǒng)成功與否的結(jié)果寫入日志;2)每減少一個非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)中刪除對應(yīng)的元數(shù)據(jù)信息;記錄存儲系統(tǒng)變更管理日志,將刪除系統(tǒng)成功與否的結(jié)果寫入日志;其中,不同類型的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)元數(shù)據(jù)信息都以統(tǒng)一的形式進(jìn)行存儲和管理;3)請求轉(zhuǎn)換模塊的處理與維護(hù):(1)每有新響應(yīng)列表項I1增加,就集成或者調(diào)用一個請求轉(zhuǎn)換代理模塊,并標(biāo)記為激活A(yù)ctivated;(2)每有響應(yīng)列表項Ii被標(biāo)記為故障F,則其代理模塊Ai被標(biāo)記為失效NotActivated;這里的代理模塊仏是為相應(yīng)的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)專有的。8.按照權(quán)利要求1所述的混合存儲架構(gòu)下的數(shù)據(jù)訪問方法,其特征在于,所述的故障處理是指:1)如果為非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)臨時故障則:(1)每個發(fā)生故障的N非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)設(shè)有一個相應(yīng)的故障恢復(fù)時間T4,若某個發(fā)生故障的非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)在其恢復(fù)時間T4內(nèi)恢復(fù)正常,則向非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)發(fā)送一個故障恢復(fù)消息M3;(2)非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)收到該消息后,將相應(yīng)的元數(shù)據(jù)項的故障標(biāo)記位改為正常,即F->Normal,同時相應(yīng)的Ai的激活位改為激活的,即NotActivated->Activated;(3)恢復(fù)的時間以及結(jié)果寫入到存儲系統(tǒng)故障管理日志;這里的故障恢復(fù)時間T4為特定非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)的平均短期故障恢復(fù)值,可由經(jīng)驗獲得;2)如果為長久故障則:(1)若在故障恢復(fù)時間T3內(nèi)沒有收到相應(yīng)項的恢復(fù)消息M3,則假定該非關(guān)系型數(shù)據(jù)庫系統(tǒng)或者關(guān)系型數(shù)據(jù)庫系統(tǒng)將長期不可用;(2)刪除R&NRMM中不可用的數(shù)據(jù)庫或者集群對應(yīng)的元數(shù)據(jù)項1,然后刪除或者撤銷與代理模塊仏的鏈接;(3)刪除的時間以及相關(guān)信息寫入存儲系統(tǒng)變更管理日志?!疚臋n編號】G06F17/30GK105956029SQ201610261353【公開日】2016年9月21日【申請日】2016年4月25日【發(fā)明人】康輝,包涵,余大洲,王凱,于躍,魏達(dá)【申請人】吉林大學(xué)