數(shù)據(jù)服務(wù)器、數(shù)據(jù)存取系統(tǒng)及數(shù)據(jù)存取方法
【專利摘要】本發(fā)明涉及一種數(shù)據(jù)服務(wù)器,其包括:包括數(shù)據(jù)存取模塊及防空模塊。數(shù)據(jù)存取模塊用于存取外部數(shù)據(jù)源內(nèi)的數(shù)據(jù)。防空模塊包括存儲(chǔ)器與防空邏輯單元,存儲(chǔ)器用于以多位方式存儲(chǔ)數(shù)據(jù)狀態(tài)碼。防空邏輯單元用于返回存儲(chǔ)器內(nèi)的數(shù)據(jù)狀態(tài)碼,及根據(jù)數(shù)據(jù)存取模塊對(duì)數(shù)據(jù)源的數(shù)據(jù)操作以多位方式寫入相應(yīng)的數(shù)據(jù)狀態(tài)碼。上述的數(shù)據(jù)服務(wù)器的防空架構(gòu)簡單,構(gòu)建成本及維護(hù)成本低。此外,本發(fā)明還供一種數(shù)據(jù)存取系統(tǒng)及一種數(shù)據(jù)存取方法。
【專利說明】數(shù)據(jù)服務(wù)器、數(shù)據(jù)存取系統(tǒng)及數(shù)據(jù)存取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫技術(shù),尤其涉及一種數(shù)據(jù)服務(wù)器、數(shù)據(jù)存取系統(tǒng)及數(shù)據(jù)存取方法。
【背景技術(shù)】
[0002]在涉及海量數(shù)據(jù)的網(wǎng)絡(luò)服務(wù)中,為了減輕數(shù)據(jù)庫系統(tǒng)的壓力,一般會(huì)將系統(tǒng)構(gòu)建成防空架構(gòu)。圖1所示為一種已知的數(shù)據(jù)防問防空架構(gòu)的示意圖。在客戶端與實(shí)際的數(shù)據(jù)源(緩存+磁盤)中間隔著邏輯服務(wù)器。當(dāng)客戶端需要訪問數(shù)據(jù)時(shí)先向邏輯服務(wù)器發(fā)送請(qǐng)求,邏輯服務(wù)器向防空服務(wù)器BitmapSvr查詢數(shù)據(jù)源中是否存在客戶端所需求的數(shù)據(jù),如果有相關(guān)數(shù)據(jù),邏輯服務(wù)器再向數(shù)據(jù)源發(fā)出數(shù)據(jù)訪問請(qǐng)求并將數(shù)據(jù)轉(zhuǎn)發(fā)給客戶端。如果沒有相關(guān)數(shù)據(jù),邏輯服務(wù)器可以直接處理客戶端的數(shù)據(jù)訪問請(qǐng)求。因此可見,防空技術(shù)可以有效減少對(duì)數(shù)據(jù)庫的訪問壓力。
[0003]然而以上的系統(tǒng)架構(gòu)存在以下問題:
[0004]I)需要單獨(dú)設(shè)置的防空服務(wù)器,系統(tǒng)復(fù)雜,維護(hù)困難;
[0005]2)防空服務(wù)通常需要提供給多個(gè)業(yè)務(wù)訪問,路由配置管理復(fù)雜,如果每個(gè)業(yè)務(wù)設(shè)置一套防空服務(wù)器,成本太高;
[0006]3)基于對(duì)性能的要求,防空服務(wù)器采用全內(nèi)存的數(shù)據(jù),災(zāi)難性的情況下無法恢復(fù),需要重新找機(jī)制恢復(fù)。通常采用冷備的方法,將數(shù)據(jù)提取出來,異地保存,在極端情況下還可以恢復(fù),但是很難對(duì)災(zāi)難期間的數(shù)據(jù)進(jìn)行有效性保證,這時(shí)服務(wù)受到影響,數(shù)據(jù)將丟失。
【發(fā)明內(nèi)容】
[0007]有鑒于此,有必要提供一種數(shù)據(jù)服務(wù)器、數(shù)據(jù)存取系統(tǒng)及數(shù)據(jù)存取方法,其可以解決數(shù)據(jù)防空問題,且可以避免現(xiàn)有防空架構(gòu)的高復(fù)雜度及高成本。
[0008]上述的數(shù)據(jù)服務(wù)器是通過以下技術(shù)方案實(shí)現(xiàn)的:
[0009]一種數(shù)據(jù)服務(wù)器,其包括:包括數(shù)據(jù)存取模塊及防空模塊。數(shù)據(jù)存取模塊用于存取外部數(shù)據(jù)源內(nèi)的數(shù)據(jù)。防空模塊包括存儲(chǔ)器與防空邏輯單元,存儲(chǔ)器用于以多位方式存儲(chǔ)數(shù)據(jù)狀態(tài)碼。防空邏輯單元用于返回存儲(chǔ)器內(nèi)的數(shù)據(jù)狀態(tài)碼,及根據(jù)數(shù)據(jù)存取模塊對(duì)數(shù)據(jù)源的數(shù)據(jù)操作以多位方式寫入相應(yīng)的數(shù)據(jù)狀態(tài)碼。
[0010]作為上述數(shù)據(jù)服務(wù)器的進(jìn)一步改進(jìn),上述多位方式為雙位方式。
[0011]作為上述數(shù)據(jù)服務(wù)器的進(jìn)一步改進(jìn),上述雙位數(shù)據(jù)狀態(tài)碼分別表示以下狀態(tài):初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
[0012]作為上述數(shù)據(jù)服務(wù)器的進(jìn)一步改進(jìn),上述防空邏輯單元用于按照以下邏輯寫入該數(shù)據(jù)狀態(tài)碼:
[0013]初始無數(shù)據(jù)態(tài)經(jīng)過數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)過數(shù)據(jù)讀取操作結(jié)果為空則變?yōu)樵L問過無數(shù)據(jù)態(tài);
[0014]有數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)讀取操作結(jié)果為空或者刪除操作則變?yōu)樵L問過無數(shù)據(jù)態(tài);[0015]訪問過無數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài);
[0016]不確定態(tài)在數(shù)據(jù)讀取操作成功后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)讀取操作無結(jié)果則變?yōu)樵L問過無數(shù)據(jù)態(tài)。
[0017]作為上述數(shù)據(jù)服務(wù)器的進(jìn)一步改進(jìn),分別采用二進(jìn)制編碼00、01、10、11表示初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
[0018]上述的數(shù)據(jù)存取系統(tǒng)是通過以下技術(shù)方案實(shí)現(xiàn)的:
[0019]一種數(shù)據(jù)存取系統(tǒng),其包括邏輯服務(wù)器及數(shù)據(jù)源,邏輯服務(wù)器包括數(shù)據(jù)存取模塊,用于存取該數(shù)據(jù)源內(nèi)的數(shù)據(jù)。邏輯服務(wù)器還包括防空模塊。防空模塊包括存儲(chǔ)器及防空邏輯單元。存儲(chǔ)器用于以多位方式存儲(chǔ)數(shù)據(jù)狀態(tài)碼。防空邏輯單元用于返回存儲(chǔ)器內(nèi)的數(shù)據(jù)狀態(tài)碼,及根據(jù)數(shù)據(jù)存取模塊對(duì)數(shù)據(jù)源的數(shù)據(jù)操作以多位方式寫入相應(yīng)的數(shù)據(jù)狀態(tài)碼。
[0020]作為上述數(shù)據(jù)存取系統(tǒng)的進(jìn)一步改進(jìn),上述多位方式為雙位方式。
[0021]作為上述數(shù)據(jù)存取系統(tǒng)的進(jìn)一步改進(jìn),上述雙位數(shù)據(jù)狀態(tài)碼分別表示以下狀態(tài):初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
[0022]作為上述數(shù)據(jù)存取系統(tǒng)的進(jìn)一步改進(jìn),上述防空邏輯單元用于按照以下邏輯寫入該數(shù)據(jù)狀態(tài)碼:
[0023]初始無數(shù)據(jù)態(tài)經(jīng)過數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)過數(shù)據(jù)讀取操作結(jié)果為空則變?yōu)樵L問過無數(shù)據(jù)態(tài);
[0024]有數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)讀取操作結(jié)果為空或者刪除操作則變?yōu)樵L問過無數(shù)據(jù)態(tài);
[0025]訪問過無數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài);
[0026]不確定態(tài)在數(shù)據(jù)讀取操作成功后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)讀取操作無結(jié)果則變?yōu)樵L問過無數(shù)據(jù)態(tài)。
[0027]作為上述數(shù)據(jù)存取系統(tǒng)的進(jìn)一步改進(jìn),分別采用二進(jìn)制編碼00、01、10、11表示初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
[0028]上述的數(shù)據(jù)存取方法是通過以下技術(shù)方案實(shí)現(xiàn)的:
[0029]一種數(shù)據(jù)存取方法,其包括:在對(duì)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行操作之前向防空邏輯單元查詢數(shù)據(jù)狀態(tài)碼;在對(duì)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行操作之后根據(jù)具體數(shù)據(jù)操作以多位方式在存儲(chǔ)器內(nèi)寫入數(shù)據(jù)狀態(tài)碼。
[0030]作為上述數(shù)據(jù)存取方法的進(jìn)一步改進(jìn),上述多位方式為雙位方式。
[0031]作為上述數(shù)據(jù)存取方法的進(jìn)一步改進(jìn),上述雙位數(shù)據(jù)狀態(tài)碼分別表示以下狀態(tài):初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
[0032]作為上述數(shù)據(jù)服務(wù)方法的進(jìn)一步改進(jìn),上述防空邏輯單元用于按照以下邏輯寫入該數(shù)據(jù)狀態(tài)碼:
[0033]初始無數(shù)據(jù)態(tài)經(jīng)過數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)過數(shù)據(jù)讀取操作結(jié)果為空則變?yōu)樵L問過無數(shù)據(jù)態(tài);
[0034]有數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)讀取操作結(jié)果為空或者刪除操作則變?yōu)樵L問過無數(shù)據(jù)態(tài);
[0035]訪問過無數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài);
[0036]不確定態(tài)在數(shù)據(jù)讀取操作成功后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)讀取操作無結(jié)果則變?yōu)樵L問過無數(shù)據(jù)態(tài)。
[0037]作為上述數(shù)據(jù)存取方法的進(jìn)一步改進(jìn),分別采用二進(jìn)制編碼00、01、10、11表示初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
[0038]作為上述數(shù)據(jù)存取方法的進(jìn)一步改進(jìn),其還包括初始步驟,將存儲(chǔ)器內(nèi)所有的數(shù)據(jù)狀態(tài)碼設(shè)置為初始無數(shù)據(jù)態(tài)。
[0039]作為上述數(shù)據(jù)存取方法的進(jìn)一步改進(jìn),其還包括在系統(tǒng)路由改變后將相應(yīng)的數(shù)據(jù)狀態(tài)碼設(shè)置為不確定態(tài)。
[0040]上述的數(shù)據(jù)服務(wù)器、數(shù)據(jù)存取系統(tǒng)及數(shù)據(jù)存取方法中,在本機(jī)(數(shù)據(jù)服務(wù)器/邏輯服務(wù)器)中實(shí)現(xiàn)了數(shù)據(jù)防空架構(gòu),且使用雙位數(shù)據(jù)狀態(tài)碼,明確代表數(shù)據(jù)在數(shù)據(jù)源中的狀態(tài),可以避免對(duì)數(shù)據(jù)源的空操作,減少了數(shù)據(jù)源的系統(tǒng)壓力。相比于單獨(dú)設(shè)置防空服務(wù)器的方式,系統(tǒng)結(jié)構(gòu)更加精簡,構(gòu)建成本及維護(hù)成本都得到了極大的降低。
[0041]為讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附圖式,作詳細(xì)說明如下。
【專利附圖】
【附圖說明】
[0042]圖1為一種已知的數(shù)據(jù)庫防空系統(tǒng)架構(gòu)示意圖。
[0043]圖2為本發(fā)明實(shí)施例揭示的數(shù)據(jù)存取系統(tǒng)結(jié)構(gòu)示意圖。
[0044]圖3為本發(fā)明實(shí)施例揭示的數(shù)據(jù)存取系統(tǒng)中防空邏輯單元的數(shù)據(jù)狀態(tài)轉(zhuǎn)換邏輯示意圖。
[0045]圖4為本發(fā)明實(shí)施例揭示的數(shù)據(jù)存取方法流程圖。
【具體實(shí)施方式】
[0046]為更進(jìn)一步闡述本發(fā)明為實(shí)現(xiàn)預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對(duì)依據(jù)本發(fā)明提出的數(shù)據(jù)服務(wù)器、數(shù)據(jù)存取系統(tǒng)及數(shù)據(jù)存取方法的【具體實(shí)施方式】、結(jié)構(gòu)、特征及其功效,詳細(xì)說明如后。
[0047]圖2為本發(fā)明實(shí)施例揭示的數(shù)據(jù)存取系統(tǒng)的結(jié)構(gòu)示意圖。如圖2所示,數(shù)據(jù)存取系統(tǒng)100包括邏輯服務(wù)器10、數(shù)據(jù)源20及客戶端30。
[0048]客戶端30要使用數(shù)據(jù)源20中的數(shù)據(jù)時(shí),并不是直接連接至數(shù)據(jù)源20,而是向邏輯服務(wù)器10發(fā)出請(qǐng)求??蛻舳?0與邏輯服務(wù)器10之間一般通過互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)連接,邏輯服務(wù)器10與數(shù)據(jù)源20之間一般可通過局域網(wǎng)、互聯(lián)網(wǎng)連接。對(duì)于客戶端30而言,數(shù)據(jù)是來源于邏輯服務(wù)器10,因此邏輯服務(wù)器10就是數(shù)據(jù)服務(wù)器。
[0049]邏輯服務(wù)器10包括數(shù)據(jù)存取模塊11及防空模塊12。
[0050]數(shù)據(jù)存取模塊11用于存取數(shù)據(jù)源20中的數(shù)據(jù)。數(shù)據(jù)源20具體上可為數(shù)據(jù)庫。對(duì)于數(shù)據(jù)庫系統(tǒng)來說,為了提升效率,緩存(Cache)是很重要的技術(shù)手段,Cache主要用于存儲(chǔ)一些需要頻繁訪問到的數(shù)據(jù),而另外一些訪問頻率相對(duì)較低的數(shù)據(jù)可以存儲(chǔ)在磁盤如硬盤或者固態(tài)硬盤中。
[0051]防空模塊12用于在本機(jī)(邏輯服務(wù)器10)實(shí)現(xiàn)防空邏輯。具體地,防空模塊12包括存儲(chǔ)器121及防空邏輯單元122。
[0052]存儲(chǔ)器121用于以多位的形式存儲(chǔ)數(shù)據(jù)狀態(tài)碼。在硬件實(shí)現(xiàn)上,存儲(chǔ)器121需要滿足高速度的要求,因此在當(dāng)前的技術(shù)條件下,存儲(chǔ)器121 —般為易失性的內(nèi)存。然而當(dāng)其他種類的存儲(chǔ)器,例如固態(tài)硬盤的性能達(dá)到要求后,同樣可以應(yīng)用于本實(shí)施例中。[0053]進(jìn)一步地,存儲(chǔ)器121可以采用共享內(nèi)存實(shí)現(xiàn),并可以進(jìn)一步采用數(shù)據(jù)備份技術(shù)將內(nèi)存內(nèi)的數(shù)據(jù)備份下來,保證本地機(jī)器發(fā)生宕機(jī)或者掉電的情況下,存儲(chǔ)器121可以恢復(fù)故障發(fā)生前的狀態(tài)。具體地,可以采用轉(zhuǎn)儲(chǔ)技術(shù)(Dump)以及二進(jìn)制日志(binlog)實(shí)現(xiàn)。上述的多位是相對(duì)于單位而言,可以理解,一個(gè)比特(Bit)僅可表示O或者I。因此,當(dāng)數(shù)據(jù)狀態(tài)碼為單位時(shí),僅能表達(dá)兩個(gè)狀態(tài)。相應(yīng)的,對(duì)于N位的狀態(tài)碼可以表達(dá)2"種狀態(tài)。本實(shí)施例中,僅以雙位為例進(jìn)行說明,其對(duì)應(yīng)的數(shù)據(jù)狀態(tài)碼為00、01、10、及11,上述數(shù)據(jù)狀態(tài)碼的含義可以自行定義,例如,其可分別定義為:初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
[0054]本實(shí)施例中,數(shù)據(jù)防空是針對(duì)整型(Int)數(shù)據(jù)作為關(guān)鍵字或者關(guān)鍵字可以轉(zhuǎn)換為Int型的數(shù)據(jù)庫中的一個(gè)或者多個(gè)字段,一個(gè)典型的實(shí)例就是某即時(shí)通訊工具的用戶號(hào)碼。Int型數(shù)據(jù)占用32位存儲(chǔ)空間,也就是說用戶號(hào)碼具有232個(gè)。對(duì)于每個(gè)字段進(jìn)行雙位防空編碼,需要使用2Bit的存儲(chǔ)空間。因此,對(duì)于Int型數(shù)據(jù),存儲(chǔ)雙位的數(shù)據(jù)狀態(tài)碼需要使用的存儲(chǔ)空間為2Bit*232/8=lGB。這IGB的二進(jìn)制數(shù)據(jù)被稱為位圖(Bitmap)。當(dāng)需要對(duì)多個(gè)字段進(jìn)行防空處理時(shí),對(duì)存儲(chǔ)空間的要求相應(yīng)增加,每增加一個(gè)字段,需要增加IGB內(nèi)存。
[0055]除了數(shù)據(jù)狀態(tài)碼外,在Bitmap的頭部還可添加鎖止位,從而使此Bitmap可以適應(yīng)單進(jìn)程(線程)、多線程的情形,還可以實(shí)現(xiàn)為多進(jìn)程共享訪問。
[0056]防空邏輯單元122用于實(shí)現(xiàn)上述的防空邏輯。具體地,數(shù)據(jù)存取模塊11需要存取數(shù)據(jù)源20之前,需要先經(jīng)防空邏輯單元122查詢相應(yīng)的數(shù)據(jù)狀態(tài)。當(dāng)需要向數(shù)據(jù)源20讀取/刪除一些為空的數(shù)據(jù)或者不存在的數(shù)據(jù),就可以直接由數(shù)據(jù)存取模塊11返回結(jié)果(不存在或者數(shù)據(jù)為空等);而當(dāng)需要對(duì)數(shù)據(jù)源20進(jìn)行寫操作或者刪除操作時(shí),相應(yīng)改變存儲(chǔ)器121內(nèi)存儲(chǔ)的數(shù)據(jù)狀態(tài)碼使其與數(shù)據(jù)源20保持同步。在初始狀態(tài)下,即業(yè)務(wù)上線前,數(shù)據(jù)狀態(tài)碼可以完全設(shè)置為初始無數(shù)據(jù)態(tài),即數(shù)據(jù)狀態(tài)碼為00。
[0057]在分布式系統(tǒng)中,需要保證路由的穩(wěn)定性,如果有發(fā)生路由遷移的情況下,需要將對(duì)應(yīng)的數(shù)據(jù)狀態(tài)碼置為不確定狀態(tài)(11),這種狀態(tài)是不穩(wěn)定狀態(tài)。由于不確定狀態(tài)下,讀取操作會(huì)直接連接數(shù)據(jù)源,其數(shù)據(jù)可能為空,此時(shí)就會(huì)多了一次空讀取,然而這只是局部現(xiàn)象,對(duì)于系統(tǒng)的整體影響較小。此外,還將原來的狀態(tài)復(fù)制到新路由的機(jī)器上。上述路由是指在分布式系統(tǒng)中,通過設(shè)置路由規(guī)則,使同一個(gè)關(guān)鍵字的訪問穩(wěn)定的訪問同一臺(tái)服務(wù)器。而當(dāng)經(jīng)過了具體的數(shù)據(jù)操作就相應(yīng)的更新存儲(chǔ)器121內(nèi)的數(shù)據(jù)狀態(tài)碼。圖3為本實(shí)施例中各種數(shù)據(jù)狀態(tài)碼的轉(zhuǎn)換關(guān)系示意圖。如圖3所示:
[0058]對(duì)于數(shù)據(jù)寫入(Set)操作,不用查詢存儲(chǔ)器121內(nèi)的數(shù)據(jù)狀態(tài)碼,直接向數(shù)據(jù)源20寫入數(shù)據(jù)即可,但完成寫操作后,需要相應(yīng)更新數(shù)據(jù)狀態(tài)碼為01。
[0059]對(duì)于數(shù)據(jù)讀取(Get)操作,當(dāng)數(shù)據(jù)狀態(tài)為初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、不確定態(tài)時(shí),即數(shù)據(jù)狀態(tài)碼為00、01、11時(shí),數(shù)據(jù)存取模塊11會(huì)連接數(shù)據(jù)源20,經(jīng)過讀取操作后如果返回結(jié)果為空則將數(shù)據(jù)狀態(tài)碼更新為10 ;當(dāng)數(shù)據(jù)狀態(tài)為訪問過無數(shù)據(jù)態(tài)時(shí),即數(shù)據(jù)狀態(tài)碼為10時(shí),數(shù)據(jù)存取模塊11不再連接數(shù)據(jù)源20,直接返回?zé)o數(shù)據(jù)。
[0060]對(duì)于數(shù)據(jù)刪除(Del)操作,當(dāng)數(shù)據(jù)狀態(tài)為初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)或者不確定態(tài)時(shí),即數(shù)據(jù)狀態(tài)碼為00、01、或者11時(shí),數(shù)據(jù)存取模塊11連接數(shù)據(jù)源20,執(zhí)行刪除操作,完成刪除操作后相應(yīng)更新數(shù)據(jù)狀態(tài)碼為訪問過無數(shù)據(jù)態(tài);當(dāng)數(shù)據(jù)狀態(tài)為訪問過無數(shù)據(jù)態(tài),即數(shù)據(jù)狀態(tài)碼為10時(shí),不執(zhí)行刪除操作,由數(shù)據(jù)存取模塊11直接返回刪除失敗的結(jié)果。[0061]進(jìn)一步地,為了優(yōu)化后端寫操作的超時(shí)等錯(cuò)誤發(fā)生導(dǎo)致狀態(tài)與數(shù)據(jù)庫中不一致,每次set和del在操作之前,可以將相應(yīng)的數(shù)據(jù)狀態(tài)碼改為不確定狀態(tài)(11),當(dāng)set和del返回后,再根據(jù)結(jié)果對(duì)狀態(tài)進(jìn)行相應(yīng)與實(shí)際相符的修改,如此可以避免由于網(wǎng)絡(luò)超時(shí)等錯(cuò)誤未接收到set和del操作的返回時(shí)數(shù)據(jù)狀態(tài)碼與數(shù)據(jù)源中的狀態(tài)不一致的現(xiàn)象。當(dāng)然,由于此時(shí)數(shù)據(jù)狀態(tài)碼為不確定態(tài)11,可能會(huì)導(dǎo)致空讀取操作,但這只是針對(duì)部分出現(xiàn)意外的情形,對(duì)整體系統(tǒng)性能影響很小。
[0062]本實(shí)施例的數(shù)據(jù)存取系統(tǒng)中,在本機(jī)(邏輯服務(wù)器)中實(shí)現(xiàn)了數(shù)據(jù)防空架構(gòu),且使用雙位數(shù)據(jù)狀態(tài)碼,明確代表數(shù)據(jù)在數(shù)據(jù)源中的狀態(tài),可以避免對(duì)數(shù)據(jù)源的空操作,減少了數(shù)據(jù)源的系統(tǒng)壓力。相比于單獨(dú)設(shè)置防空服務(wù)器的方式,系統(tǒng)結(jié)構(gòu)更加精簡,構(gòu)建成本及維護(hù)成本都得到了極大的降低。
[0063]圖4為本發(fā)明實(shí)施例揭示的數(shù)據(jù)存取方法。該數(shù)據(jù)存取方法例如是由位于客戶端與數(shù)據(jù)源之間的邏輯服務(wù)器執(zhí)行(如圖2所示),如圖4所示,該數(shù)據(jù)存取方法具體包括以下步驟:
[0064]步驟410,在對(duì)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行操作之前向防空邏輯單元查詢數(shù)據(jù)狀態(tài)碼;及
[0065]步驟420,在對(duì)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行操作之后根據(jù)具體數(shù)據(jù)操作以多位方式在存儲(chǔ)器內(nèi)寫入數(shù)據(jù)狀態(tài)碼。
[0066]步驟410中,通過查詢數(shù)據(jù)狀態(tài)碼,可以防止當(dāng)數(shù)據(jù)源中無數(shù)據(jù)或者數(shù)據(jù)為空時(shí)還向數(shù)據(jù)源發(fā)出連接請(qǐng)求,從而減少了數(shù)據(jù)源的系統(tǒng)壓力。
[0067]步驟420中,在數(shù)據(jù)操作之后相應(yīng)的更新數(shù)據(jù)狀態(tài)碼,使存儲(chǔ)器內(nèi)的數(shù)據(jù)狀態(tài)碼與數(shù)據(jù)源中保持同步,而具體的數(shù)據(jù)狀態(tài)碼更新邏輯如圖3所示,且可進(jìn)一步參考前述關(guān)于數(shù)據(jù)存取系統(tǒng)實(shí)施例中的描述。
[0068]本實(shí)施例的數(shù)據(jù)存取方法中,還可包括初始化步驟,將所有的數(shù)據(jù)狀態(tài)碼設(shè)置為初始無數(shù)據(jù)態(tài),即將數(shù)據(jù)狀態(tài)碼設(shè)置為00。進(jìn)一步地,還可在系統(tǒng)的路由規(guī)則改變后,將數(shù)據(jù)狀態(tài)碼設(shè)置為不確定態(tài),即將數(shù)據(jù)狀態(tài)碼設(shè)置為11。
[0069]以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭示如上,然而并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容作出些許更動(dòng)或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡介修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)服務(wù)器,其包括: 包括數(shù)據(jù)存取模塊,用于存取外部數(shù)據(jù)源內(nèi)的數(shù)據(jù); 其特征在于,該數(shù)據(jù)服務(wù)器還包括防空模塊,該防空模塊包括: 存儲(chǔ)器,用于以多位方式存儲(chǔ)數(shù)據(jù)狀態(tài)碼 '及 防空邏輯單元,用于返回該存儲(chǔ)器內(nèi)的數(shù)據(jù)狀態(tài)碼,及根據(jù)該數(shù)據(jù)存取模塊對(duì)該數(shù)據(jù)源的數(shù)據(jù)操作以多位方式寫入相應(yīng)的數(shù)據(jù)狀態(tài)碼。
2.如權(quán)利要求1所述的數(shù)據(jù)服務(wù)器,其特征在于,該多位方式為雙位方式。
3.如權(quán)利要求2所述的數(shù)據(jù)服務(wù)器,其特征在于,該雙位數(shù)據(jù)狀態(tài)碼分別表示以下狀態(tài):初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
4.如權(quán)利要求3所述的數(shù)據(jù)服務(wù)器,其特征在于,該防空邏輯單元用于按照以下邏輯寫入該數(shù)據(jù)狀態(tài)碼: 初始無數(shù)據(jù)態(tài)經(jīng)過數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)過數(shù)據(jù)讀取操作結(jié)果為空則變?yōu)樵L問過無數(shù)據(jù)態(tài); 有數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)讀取操作結(jié)果為空或者刪除操作則變?yōu)樵L問過無數(shù)據(jù)態(tài); 訪問過無數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài); 不確定態(tài)在數(shù)據(jù)讀取操作成 功后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)讀取操作無結(jié)果則變?yōu)樵L問過無數(shù)據(jù)態(tài)。
5.如權(quán)利要求3所述的數(shù)據(jù)服務(wù)器,其特征在于,分別采用二進(jìn)制編碼00、01、10、11表示初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
6.一種數(shù)據(jù)存取系統(tǒng),其包括: 邏輯服務(wù)器及數(shù)據(jù)源,該邏輯服務(wù)器內(nèi)包括數(shù)據(jù)存取模塊,該數(shù)據(jù)存取模塊用于存取該數(shù)據(jù)源內(nèi)的數(shù)據(jù); 其特征在于,該邏輯服務(wù)器還包括防空模塊,該防空模塊包括: 存儲(chǔ)器,用于以多位方式存儲(chǔ)數(shù)據(jù)狀態(tài)碼 '及 防空邏輯單元,用于返回該存儲(chǔ)器內(nèi)的數(shù)據(jù)狀態(tài)碼,及根據(jù)該數(shù)據(jù)存取模塊對(duì)該數(shù)據(jù)源的數(shù)據(jù)操作以多位方式寫入相應(yīng)的數(shù)據(jù)狀態(tài)碼。
7.如權(quán)利要求6所述的數(shù)據(jù)存取系統(tǒng),其特征在于,該多位方式為雙位方式。
8.如權(quán)利要求7所述的數(shù)據(jù)存取系統(tǒng),其特征在于,該雙位數(shù)據(jù)狀態(tài)碼分別表示以下狀態(tài):初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
9.如權(quán)利要求8所述的數(shù)據(jù)存取系統(tǒng),其特征在于,該防空邏輯單元用于按照以下邏輯寫入該數(shù)據(jù)狀態(tài)碼: 初始無數(shù)據(jù)態(tài)經(jīng)過數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)過數(shù)據(jù)讀取操作結(jié)果為空則變?yōu)樵L問過無數(shù)據(jù)態(tài); 有數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)讀取操作結(jié)果為空或者刪除操作則變?yōu)樵L問過無數(shù)據(jù)態(tài); 訪問過無數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài); 不確定態(tài)在數(shù)據(jù)讀取操作成功后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)讀取操作無結(jié)果則變?yōu)樵L問過無數(shù)據(jù)態(tài)。
10.如權(quán)利要求8所述的數(shù)據(jù)存取系統(tǒng),其特征在于,分別采用二進(jìn)制編碼00、01、10、11表示初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
11.一種數(shù)據(jù)存取方法,其包括: 在對(duì)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行操作之前向防空邏輯單元查詢數(shù)據(jù)狀態(tài)碼; 在對(duì)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行操作之后根據(jù)具體數(shù)據(jù)操作以多位方式在存儲(chǔ)器內(nèi)寫入數(shù)據(jù)狀態(tài)碼。
12.如權(quán)利要求11所述的數(shù)據(jù)存取方法,其特征在于,該多位方式為雙位方式。
13.如權(quán)利要求12所述的數(shù)據(jù)存取方法,其特征在于,該雙位數(shù)據(jù)狀態(tài)碼分別表示以下狀態(tài):初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
14.如權(quán)利要求13所述的數(shù)據(jù)存取方法,其特征在于,寫入數(shù)據(jù)狀態(tài)碼按以下方式進(jìn)行: 初始無數(shù)據(jù)態(tài)經(jīng)過數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)過數(shù)據(jù)讀取操作結(jié)果為空則變?yōu)樵L問過無數(shù)據(jù)態(tài); 有數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)讀取操作結(jié)果為空或者刪除操作則變?yōu)樵L問過無數(shù)據(jù)態(tài); 訪問過無數(shù)據(jù)態(tài)經(jīng)數(shù)據(jù)寫入操作后變?yōu)橛袛?shù)據(jù)態(tài); 不確定態(tài)在數(shù)據(jù)讀取操作成功后變?yōu)橛袛?shù)據(jù)態(tài),經(jīng)讀取操作無結(jié)果則變?yōu)樵L問過無數(shù)據(jù)態(tài)。
15.如權(quán)利要求13所述的數(shù)據(jù)存取方法,其特征在于,分別采用二進(jìn)制編碼00、01、10、11表示初始無數(shù)據(jù)態(tài)、有數(shù)據(jù)態(tài)、訪問過無數(shù)據(jù)態(tài)、及不確定態(tài)。
16.如權(quán)利要求13所述的數(shù)據(jù)存取方法,其特征在于,還包括初始步驟,將存儲(chǔ)器內(nèi)所有的數(shù)據(jù)狀態(tài)碼設(shè)置為初始無數(shù)據(jù)態(tài)。
17.如權(quán)利要求13所述的數(shù)據(jù)存取方法,其特征在于,還包括在系統(tǒng)路由改變后將相應(yīng)的數(shù)據(jù)狀態(tài)碼設(shè)置為不確定態(tài)。
【文檔編號(hào)】G06F17/30GK103631825SQ201210309960
【公開日】2014年3月12日 申請(qǐng)日期:2012年8月28日 優(yōu)先權(quán)日:2012年8月28日
【發(fā)明者】唐孟松 申請(qǐng)人:騰訊科技(深圳)有限公司