一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng)及方法
【專利摘要】本發(fā)明涉及一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng)及方法,將所有節(jié)點(diǎn)信息和路由規(guī)則存放在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上;代理服務(wù)實(shí)時(shí)監(jiān)聽是否有客戶端發(fā)送節(jié)點(diǎn)信息下載請(qǐng)求;代理服務(wù)器接收到客戶端的節(jié)點(diǎn)信息下載請(qǐng)求時(shí),向任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)發(fā)送查詢請(qǐng)求,獲取節(jié)點(diǎn)信息發(fā)送給客戶端;客戶端將節(jié)點(diǎn)信息保存在本地節(jié)點(diǎn)信息文件中;客戶端根據(jù)接收的節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn),獲取路由規(guī)則信息;客戶端對(duì)待執(zhí)行的SQL語句進(jìn)行語法解析,分析出表名和查詢條件,結(jié)合路由規(guī)則,確認(rèn)所述SQL語句的執(zhí)行節(jié)點(diǎn);直接在所述SQL的執(zhí)行節(jié)點(diǎn)上執(zhí)行該SQL語句;本發(fā)明可有效保障數(shù)據(jù)一致性,降低網(wǎng)絡(luò)通信的時(shí)間消耗;降低對(duì)代理服務(wù)器的依賴性。
【專利說明】一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫【技術(shù)領(lǐng)域】,尤其涉及一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng)及方法。
【背景技術(shù)】
[0002] 傳統(tǒng)的分布式數(shù)據(jù)庫系統(tǒng),一般采用代理服務(wù)器的方式,客戶端發(fā)送SQL請(qǐng)求給 代理服務(wù)器,代理服務(wù)器對(duì)SQL語句進(jìn)行解析,然后根據(jù)路由規(guī)則,將SQL請(qǐng)求分發(fā)到相關(guān) 的若干個(gè)數(shù)據(jù)庫節(jié)點(diǎn)上執(zhí)行;代理服務(wù)器匯總各個(gè)節(jié)點(diǎn)的處理結(jié)果,再轉(zhuǎn)發(fā)給客戶端,從而 實(shí)現(xiàn)對(duì)分布式數(shù)據(jù)庫的增刪改查等操作。
[0003] 對(duì)于內(nèi)存數(shù)據(jù)庫來講,對(duì)內(nèi)存數(shù)據(jù)的操作是非??斓模绻ㄟ^代理服務(wù)器來訪 問內(nèi)存數(shù)據(jù)庫,由于涉及多次網(wǎng)絡(luò)通信,消耗的時(shí)間要遠(yuǎn)比直接訪問內(nèi)存大得多,這樣將無 法充分發(fā)揮出內(nèi)存數(shù)據(jù)庫的速度優(yōu)勢(shì)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種分布式內(nèi)存數(shù)據(jù)庫 訪問系統(tǒng)??蛻舳说腟QL操作能夠不通過代理服務(wù)器,直接根據(jù)路由規(guī)則訪問各個(gè)內(nèi)存數(shù) 據(jù)庫節(jié)點(diǎn),減少網(wǎng)絡(luò)通信的消耗;同時(shí)客戶端又不需要維護(hù)復(fù)雜的路由規(guī)則。
[0005] 本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),包 括內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)集群、客戶端和代理服務(wù)器;
[0006] 所述內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)集群,其用于在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上存放所有內(nèi)存數(shù)據(jù)庫 節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則;
[0007] 所述客戶端,其用于向代理服務(wù)器發(fā)送節(jié)點(diǎn)信息下載請(qǐng)求,接收代理服務(wù)器反饋 的節(jié)點(diǎn)信息并保存,還用于根據(jù)節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取路由規(guī)則,以及對(duì) 待執(zhí)行的SQL語句進(jìn)行解析,根據(jù)解析結(jié)果及路由規(guī)則確定所述SQL語句的執(zhí)行節(jié)點(diǎn),將 SQL語句直接在執(zhí)行節(jié)點(diǎn)上執(zhí)行;
[0008] 所述代理服務(wù)器,其用于監(jiān)聽是否有客戶端的連接請(qǐng)求,當(dāng)監(jiān)聽到連接請(qǐng)求時(shí),其 登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取節(jié)點(diǎn)信息發(fā)送給客戶端。
[0009] 本發(fā)明的有益效果是:本發(fā)明將節(jié)點(diǎn)信息及路由規(guī)則統(tǒng)一保存在各內(nèi)存數(shù)據(jù)庫節(jié) 點(diǎn)中,客戶端不需要維護(hù)這些信息,避免由于數(shù)據(jù)不一致造成路由錯(cuò)誤;同時(shí),客戶端不用 通過統(tǒng)一的代理服務(wù)器來執(zhí)行SQL操作,直接在相應(yīng)的節(jié)點(diǎn)上進(jìn)行SQL操作,可以有效降低 網(wǎng)絡(luò)通信的時(shí)間消耗,極大的提高了訪問效率;另外,即使代理服務(wù)器在生產(chǎn)過程中發(fā)生異 常,客戶端也不會(huì)受到影響。本發(fā)明可有效保障數(shù)據(jù)一致性,降低網(wǎng)絡(luò)通信的時(shí)間消耗;降 低對(duì)代理服務(wù)器的依賴性。
[0010] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0011] 進(jìn)一步,所述客戶端包括客戶端程序模塊和客戶端接口模塊,所述客戶端程序模 塊通過調(diào)用客戶端接口模塊實(shí)現(xiàn)客戶端功能;所述客戶端接口模塊包括節(jié)點(diǎn)信息下載單 元、節(jié)點(diǎn)路由加載單元、路由解析單元、SQL解析單元、執(zhí)行單元和結(jié)果合并單元;
[0012] 所述節(jié)點(diǎn)信息下載單元,其用于根據(jù)客戶端程序模塊的調(diào)用生成節(jié)點(diǎn)信息下載請(qǐng) 求并發(fā)送給代理服務(wù)器,還用于接收代理服務(wù)器反饋的節(jié)點(diǎn)信息并保存;
[0013] 所述節(jié)點(diǎn)路由加載單元,其用于根據(jù)節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取路由 規(guī)則并發(fā)送給路由解析單元;
[0014] 所述路由解析單元,其用于對(duì)接收的路由規(guī)則進(jìn)行解析,獲取路由信息,將路由信 息發(fā)送給執(zhí)行單元;
[0015] 所述SQL解析單元,其用于對(duì)待執(zhí)行的語句進(jìn)行解析,將SQL解析結(jié)果發(fā)送給執(zhí)行 單元;
[0016] 所述執(zhí)行單元,其用于根據(jù)接收的路由信息及SQL解析結(jié)果確認(rèn)所述SQL語句的 執(zhí)行節(jié)點(diǎn),將該SQL操作在該執(zhí)行節(jié)點(diǎn)上執(zhí)行;
[0017] 所述結(jié)果合并單元,其用于接收反饋的執(zhí)行結(jié)果并進(jìn)行整合合并。
[0018] 進(jìn)一步,所述代理服務(wù)器包括消息監(jiān)聽模塊和節(jié)點(diǎn)信息獲取模塊;
[0019] 所述消息監(jiān)聽模塊,其用于實(shí)時(shí)監(jiān)聽是否有客戶端發(fā)送的節(jié)點(diǎn)信息發(fā)送請(qǐng)求,當(dāng) 收到節(jié)點(diǎn)信息發(fā)送請(qǐng)求時(shí)調(diào)用節(jié)點(diǎn)信息獲取模塊;
[0020] 所述節(jié)點(diǎn)信息獲取模塊,其用于根據(jù)消息監(jiān)聽模塊的調(diào)用,登錄任一內(nèi)存數(shù)據(jù)庫 節(jié)點(diǎn)獲取節(jié)點(diǎn)信息,并發(fā)送給客戶端。
[0021] 進(jìn)一步,所述客戶端還用于在連接代理服務(wù)器失敗時(shí),判斷從本地是否存在已存 儲(chǔ)的歷史節(jié)點(diǎn)信息文件,如果存在獲取節(jié)點(diǎn)信息,否則結(jié)束本次流程。
[0022] 采用上述進(jìn)一步技術(shù)方案的有益效果:客戶端在首次連接代理服務(wù)器時(shí),已經(jīng)將 節(jié)點(diǎn)信息保存在本地文件中了,即便之后代理服務(wù)器發(fā)生異常,客戶端再次啟動(dòng)時(shí)也不會(huì) 受到任何影響,仍然可以通過之前保存的本地文件,獲取節(jié)點(diǎn)信息和路由規(guī)則。
[0023] 進(jìn)一步,每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)以系統(tǒng)表的方式存放所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信 息和路由規(guī)則。
[0024] 進(jìn)一步,所述客戶端接收到代理服務(wù)器反饋的節(jié)點(diǎn)信息的同時(shí)斷開與代理服務(wù)器 的連接。
[0025] 采用上述進(jìn)一步方案的有益效果:客戶端獲得節(jié)點(diǎn)信息并保存在文件中便與代理 服務(wù)器斷開連接,之后的操作不再依賴于代理服務(wù)器。
[0026] 本發(fā)明解決上述技術(shù)問題的另一技術(shù)方案如下:一種分布式內(nèi)存數(shù)據(jù)庫訪問方 法,包括如下步驟:
[0027] 步驟1,將所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則存放在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié) 點(diǎn)上,通過分布式事務(wù)保證數(shù)據(jù)一致性;
[0028] 步驟2,代理服務(wù)器啟動(dòng)監(jiān)聽服務(wù),實(shí)時(shí)監(jiān)聽是否有客戶端發(fā)送節(jié)點(diǎn)信息下載請(qǐng) 求;
[0029] 步驟3,代理服務(wù)器接收到客戶端的節(jié)點(diǎn)信息下載請(qǐng)求時(shí),向任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn) 發(fā)送查詢請(qǐng)求,獲取節(jié)點(diǎn)信息發(fā)送給客戶端;
[0030] 步驟4,客戶端將節(jié)點(diǎn)信息保存在本地節(jié)點(diǎn)信息文件中;
[0031] 步驟5,客戶端根據(jù)接收的節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn),獲取路由規(guī)則信 息;
[0032] 步驟6,客戶端對(duì)待執(zhí)行的SQL語句進(jìn)行語法解析,分析出表名和查詢條件,結(jié)合 路由規(guī)則,確認(rèn)所述SQL語句的執(zhí)行節(jié)點(diǎn);
[0033] 步驟7,直接在所述SQL的執(zhí)行節(jié)點(diǎn)上執(zhí)行該SQL語句。
[0034] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0035] 進(jìn)一步,上述技術(shù)方案還包括當(dāng)客戶端連接代理服務(wù)器失敗時(shí),客戶端判斷從本 地是否存在已存儲(chǔ)的歷史節(jié)點(diǎn)信息文件,如果存在獲取節(jié)點(diǎn)信息,否則結(jié)束流程。
[0036] 進(jìn)一步,步驟1中所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則以系統(tǒng)表的方式存 放在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上。
[0037] 進(jìn)一步,步驟4中客戶端接收到代理服務(wù)器反饋的節(jié)點(diǎn)信息的同時(shí)斷開與代理服 務(wù)器的連接。
【專利附圖】
【附圖說明】
[0038] 圖1為本發(fā)明所述一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng)框圖;
[0039] 圖2為本發(fā)明所述一種分布式內(nèi)存數(shù)據(jù)庫訪問方法流程圖。
[0040] 附圖中,各標(biāo)號(hào)所代表的部件列表如下:
[0041] 1、內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)集群,2、客戶端,3、代理服務(wù)器,21、客戶端程序模塊,22、客戶 端接口模塊,31、消息監(jiān)聽模塊,32、節(jié)點(diǎn)信息獲取模塊。
【具體實(shí)施方式】
[0042] 以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。
[0043] 如圖1所示,一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),包括內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)集群1、客戶 端2和代理服務(wù)器3 ;所述內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)集群1,其用于在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上以系統(tǒng) 表的方式存放所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則;所述客戶端2,其用于向代理 服務(wù)器發(fā)送節(jié)點(diǎn)信息下載請(qǐng)求,接收代理服務(wù)器反饋的節(jié)點(diǎn)信息并保存,還用于根據(jù)節(jié)點(diǎn) 信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取路由規(guī)則,以及對(duì)待執(zhí)行的SQL語句進(jìn)行解析,根據(jù)解 析結(jié)果及路由規(guī)則確定所述SQL語句的執(zhí)行節(jié)點(diǎn),將SQL語句直接在執(zhí)行節(jié)點(diǎn)上執(zhí)行;所述 代理服務(wù)器3,其用于監(jiān)聽是否有客戶端的連接請(qǐng)求,當(dāng)監(jiān)聽到連接請(qǐng)求時(shí),其登錄任一內(nèi) 存數(shù)據(jù)庫節(jié)點(diǎn)獲取節(jié)點(diǎn)信息發(fā)送給客戶端。
[0044] 其中,所述客戶端2包括客戶端程序模塊21和客戶端接口模塊22,所述客戶端程 序模塊21通過調(diào)用客戶端接口模塊22實(shí)現(xiàn)客戶端功能;所述客戶端接口模塊22包括節(jié) 點(diǎn)信息下載單元、節(jié)點(diǎn)路由加載單元、路由解析單元、SQL解析單元、執(zhí)行單元和結(jié)果合并單 元;所述節(jié)點(diǎn)信息下載單元,其用于根據(jù)客戶端程序模塊的調(diào)用生成節(jié)點(diǎn)信息下載請(qǐng)求并 發(fā)送給代理服務(wù)器,還用于接收代理服務(wù)器反饋的節(jié)點(diǎn)信息并保存;所述節(jié)點(diǎn)路由加載單 元,其用于根據(jù)節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取路由規(guī)則并發(fā)送給路由解析單元; 所述路由解析單元,其用于對(duì)接收的路由規(guī)則進(jìn)行解析,獲取路由信息,將路由信息發(fā)送給 執(zhí)行單元;所述SQL解析單元,其用于對(duì)待執(zhí)行的語句進(jìn)行解析,將SQL解析結(jié)果發(fā)送給執(zhí) 行單元;所述執(zhí)行單元,其用于根據(jù)接收的路由信息及SQL解析結(jié)果確認(rèn)所述SQL語句的執(zhí) 行節(jié)點(diǎn),將該SQL操作在該執(zhí)行節(jié)點(diǎn)上執(zhí)行;所述結(jié)果合并單元,其用于接收反饋的執(zhí)行結(jié) 果并進(jìn)行整合合并。
[0045] 其中,所述代理服務(wù)器3包括消息監(jiān)聽模塊31和節(jié)點(diǎn)信息獲取模塊32 ;所述消息 監(jiān)聽模塊31,其用于實(shí)時(shí)監(jiān)聽是否有客戶端發(fā)送的節(jié)點(diǎn)信息發(fā)送請(qǐng)求,當(dāng)收到節(jié)點(diǎn)信息發(fā) 送請(qǐng)求時(shí)調(diào)用節(jié)點(diǎn)信息獲取模塊;所述節(jié)點(diǎn)信息獲取模塊32,其用于根據(jù)消息監(jiān)聽模塊的 調(diào)用,登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取節(jié)點(diǎn)信息,并發(fā)送給客戶端。
[0046] 所述客戶端2還用于在連接代理服務(wù)器失敗時(shí),判斷從本地是否存在已存儲(chǔ)的歷 史節(jié)點(diǎn)信息文件,如果存在獲取節(jié)點(diǎn)信息,否則結(jié)束本次流程??蛻舳嗽谑状芜B接代理服務(wù) 器時(shí),已經(jīng)將節(jié)點(diǎn)信息保存在本地文件中了,即便之后代理服務(wù)器發(fā)生異常,客戶端再次啟 動(dòng)時(shí)也不會(huì)受到任何影響,仍然可以通過之前保存的本地文件,獲取節(jié)點(diǎn)信息和路由規(guī)則。
[0047] 所述客戶端2接收到代理服務(wù)器反饋的節(jié)點(diǎn)信息的同時(shí)斷開與代理服務(wù)器的連 接??蛻舳双@得節(jié)點(diǎn)信息并保存在文件中便與代理服務(wù)器斷開連接,之后的操作不再依賴 于代理服務(wù)器。假定在生產(chǎn)過程中,代理服務(wù)器發(fā)生異常,客戶端不會(huì)受到任何影響,仍然 可以通過之前保存的本地磁盤上的節(jié)點(diǎn)信息文件中獲取節(jié)點(diǎn)信息。
[0048] 如圖2所示,一種分布式內(nèi)存數(shù)據(jù)庫訪問方法,包括如下步驟:
[0049] 步驟1,將所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則以系統(tǒng)表的方式存放在每 個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上,通過分布式事務(wù)保證數(shù)據(jù)一致性;
[0050] 步驟2,代理服務(wù)器啟動(dòng)監(jiān)聽服務(wù),實(shí)時(shí)監(jiān)聽是否有客戶端發(fā)送節(jié)點(diǎn)信息下載請(qǐng) 求;
[0051] 步驟3,代理服務(wù)器接收到客戶端的節(jié)點(diǎn)信息下載請(qǐng)求時(shí),向任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn) 發(fā)送查詢請(qǐng)求,獲取節(jié)點(diǎn)信息發(fā)送給客戶端;
[0052] 步驟4,客戶端將節(jié)點(diǎn)信息保存在本地節(jié)點(diǎn)信息文件中;
[0053] 步驟5,客戶端根據(jù)接收的節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn),獲取路由規(guī)則信 息;
[0054] 步驟6,客戶端對(duì)待執(zhí)行的SQL語句進(jìn)行語法解析,分析出表名和查詢條件,結(jié)合 路由規(guī)則,確認(rèn)所述SQL語句的執(zhí)行節(jié)點(diǎn);
[0055] 步驟7,直接在所述SQL的執(zhí)行節(jié)點(diǎn)上執(zhí)行該SQL語句。如果是在某一個(gè)節(jié)點(diǎn)上執(zhí) 行,則直接將SQL請(qǐng)求發(fā)送到對(duì)應(yīng)節(jié)點(diǎn)執(zhí)行。如果是在某幾個(gè)節(jié)點(diǎn)上執(zhí)行,則將SQL請(qǐng)求并 發(fā)發(fā)送到多個(gè)節(jié)點(diǎn)上同時(shí)執(zhí)行,然后對(duì)各個(gè)節(jié)點(diǎn)上的處理結(jié)果進(jìn)行匯總。
[0056] 上述技術(shù)方案還包括當(dāng)客戶端連接代理服務(wù)器失敗時(shí),客戶端判斷從本地是否存 在已存儲(chǔ)的歷史節(jié)點(diǎn)信息文件,如果存在獲取節(jié)點(diǎn)信息,否則結(jié)束流程。
[0057] 步驟4中客戶端接收到代理服務(wù)器反饋的節(jié)點(diǎn)信息的同時(shí)斷開與代理服務(wù)器的 連接。
[0058] 客戶端接口模塊將"節(jié)點(diǎn)信息下載"、"節(jié)點(diǎn)路由加載"、"路由解析"、"SQL解析"、 "結(jié)果合并"統(tǒng)一封裝成API函數(shù)庫(動(dòng)態(tài)鏈接庫),供客戶端程序模塊調(diào)用。
[0059] 節(jié)點(diǎn)信息及路由規(guī)則以系統(tǒng)表的形式存放在內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)中,方便統(tǒng)一維護(hù), 以下是設(shè)計(jì)舉例。
[0060] 節(jié)點(diǎn)信息設(shè)計(jì)舉例:
[0061]
【權(quán)利要求】
1. 一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),其特征在于,包括內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)集群、客戶端和 代理服務(wù)器; 所述內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)集群,其用于在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上存放所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn) 的節(jié)點(diǎn)信息和路由規(guī)則; 所述客戶端,其用于向代理服務(wù)器發(fā)送節(jié)點(diǎn)信息下載請(qǐng)求,接收代理服務(wù)器反饋的節(jié) 點(diǎn)信息并保存,還用于根據(jù)節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取路由規(guī)則,以及對(duì)待執(zhí) 行的SQL語句進(jìn)行解析,根據(jù)解析結(jié)果及路由規(guī)則確定所述SQL語句的執(zhí)行節(jié)點(diǎn),將SQL語 句直接在執(zhí)行節(jié)點(diǎn)上執(zhí)行; 所述代理服務(wù)器,其用于監(jiān)聽是否有客戶端的連接請(qǐng)求,當(dāng)監(jiān)聽到連接請(qǐng)求時(shí),其登錄 任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取節(jié)點(diǎn)信息發(fā)送給客戶端。
2. 根據(jù)權(quán)利要求1所述一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),其特征在于,所述客戶端包 括客戶端程序模塊和客戶端接口模塊,所述客戶端程序模塊通過調(diào)用客戶端接口模塊實(shí)現(xiàn) 客戶端功能;所述客戶端接口模塊包括節(jié)點(diǎn)信息下載單元、節(jié)點(diǎn)路由加載單元、路由解析單 元、SQL解析單元、執(zhí)行單元和結(jié)果合并單元; 所述節(jié)點(diǎn)信息下載單元,其用于根據(jù)客戶端程序模塊的調(diào)用生成節(jié)點(diǎn)信息下載請(qǐng)求并 發(fā)送給代理服務(wù)器,還用于接收代理服務(wù)器反饋的節(jié)點(diǎn)信息并保存; 所述節(jié)點(diǎn)路由加載單元,其用于根據(jù)節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)獲取路由規(guī)則 并發(fā)送給路由解析單元; 所述路由解析單元,其用于對(duì)接收的路由規(guī)則進(jìn)行解析,獲取路由信息,將路由信息發(fā) 送給執(zhí)行單元; 所述SQL解析單元,其用于對(duì)待執(zhí)行的語句進(jìn)行解析,將SQL解析結(jié)果發(fā)送給執(zhí)行單 元; 所述執(zhí)行單元,其用于根據(jù)接收的路由信息及SQL解析結(jié)果確認(rèn)所述SQL語句的執(zhí)行 節(jié)點(diǎn),將該SQL操作在該執(zhí)行節(jié)點(diǎn)上執(zhí)行; 所述結(jié)果合并單元,其用于接收反饋的執(zhí)行結(jié)果并進(jìn)行整合合并。
3. 根據(jù)權(quán)利要求1所述一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),其特征在于,所述代理服務(wù) 器包括消息監(jiān)聽模塊和節(jié)點(diǎn)信息獲取模塊; 所述消息監(jiān)聽模塊,其用于實(shí)時(shí)監(jiān)聽是否有客戶端發(fā)送的節(jié)點(diǎn)信息發(fā)送請(qǐng)求,當(dāng)收到 節(jié)點(diǎn)信息發(fā)送請(qǐng)求時(shí)調(diào)用節(jié)點(diǎn)信息獲取模塊; 所述節(jié)點(diǎn)信息獲取模塊,其用于根據(jù)消息監(jiān)聽模塊的調(diào)用,登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn) 獲取節(jié)點(diǎn)信息,并發(fā)送給客戶端。
4. 根據(jù)權(quán)利要求1所述一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),其特征在于,所述客戶端還 用于在連接代理服務(wù)器失敗時(shí),判斷從本地是否存在已存儲(chǔ)的歷史節(jié)點(diǎn)信息文件,如果存 在獲取節(jié)點(diǎn)信息,否則結(jié)束本次流程。
5. 根據(jù)權(quán)利要求1所述一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),其特征在于,每個(gè)內(nèi)存數(shù)據(jù) 庫節(jié)點(diǎn)以系統(tǒng)表的方式存放所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則。
6. 根據(jù)權(quán)利要求1所述一種分布式內(nèi)存數(shù)據(jù)庫訪問系統(tǒng),其特征在于,所述客戶端接 收到代理服務(wù)器反饋的節(jié)點(diǎn)信息的同時(shí)斷開與代理服務(wù)器的連接。
7. -種分布式內(nèi)存數(shù)據(jù)庫訪問方法,其特征在于,包括如下步驟: 步驟1,將所有內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則存放在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上, 通過分布式事務(wù)保證數(shù)據(jù)一致性; 步驟2,代理服務(wù)器啟動(dòng)監(jiān)聽服務(wù),實(shí)時(shí)監(jiān)聽是否有客戶端發(fā)送節(jié)點(diǎn)信息下載請(qǐng)求; 步驟3,代理服務(wù)器接收到客戶端的節(jié)點(diǎn)信息下載請(qǐng)求時(shí),向任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)發(fā)送 查詢請(qǐng)求,獲取節(jié)點(diǎn)信息發(fā)送給客戶端; 步驟4,客戶端將節(jié)點(diǎn)信息保存在本地節(jié)點(diǎn)信息文件中; 步驟5,客戶端根據(jù)接收的節(jié)點(diǎn)信息登錄任一內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn),獲取路由規(guī)則信息; 步驟6,客戶端對(duì)待執(zhí)行的SQL語句進(jìn)行語法解析,分析出表名和查詢條件,結(jié)合路由 規(guī)則,確認(rèn)所述SQL語句的執(zhí)行節(jié)點(diǎn); 步驟7,直接在所述SQL的執(zhí)行節(jié)點(diǎn)上執(zhí)行該SQL語句。
8. 根據(jù)權(quán)利要求7所述一種分布式內(nèi)存數(shù)據(jù)庫訪問方法,其特征在于,還包括當(dāng)客戶 端連接代理服務(wù)器失敗時(shí),客戶端判斷從本地是否存在已存儲(chǔ)的歷史節(jié)點(diǎn)信息文件,如果 存在獲取節(jié)點(diǎn)信息,否則結(jié)束本次流程。
9. 根據(jù)權(quán)利要求7所述一種分布式內(nèi)存數(shù)據(jù)庫訪問方法,其特征在于,步驟1中所有內(nèi) 存數(shù)據(jù)庫節(jié)點(diǎn)的節(jié)點(diǎn)信息和路由規(guī)則以系統(tǒng)表的方式存放在每個(gè)內(nèi)存數(shù)據(jù)庫節(jié)點(diǎn)上。
10. 根據(jù)權(quán)利要求7所述一種分布式內(nèi)存數(shù)據(jù)庫訪問方法,其特征在于,步驟4中客戶 端接收到代理服務(wù)器反饋的節(jié)點(diǎn)信息的同時(shí)斷開與代理服務(wù)器的連接。
【文檔編號(hào)】G06F17/30GK104333512SQ201410601440
【公開日】2015年2月4日 申請(qǐng)日期:2014年10月30日 優(yōu)先權(quán)日:2014年10月30日
【發(fā)明者】王金山 申請(qǐng)人:北京思特奇信息技術(shù)股份有限公司