亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種高效的C/S架構(gòu)數(shù)據(jù)緩存策略

        2014-04-29 00:00:00李兵哲

        摘 要:許多傳統(tǒng)的應(yīng)用開始轉(zhuǎn)而向網(wǎng)絡(luò)化發(fā)展。然而,在一些基于C/S的應(yīng)用系統(tǒng)中,客戶端經(jīng)常需要與服務(wù)端進(jìn)行大量重復(fù)數(shù)據(jù)的交互。大量重復(fù)信息的交互,極大地增加了服務(wù)器的網(wǎng)絡(luò)負(fù)擔(dān),也大大延長(zhǎng)了客戶端的網(wǎng)絡(luò)響應(yīng)時(shí)間,應(yīng)用系統(tǒng)的性能因此而急劇的下降了。本文提出了一種C/S模式下基于GUID的數(shù)據(jù)緩存策略,在客戶機(jī)頻繁訪問(wèn)服務(wù)器數(shù)據(jù)庫(kù)的情況下,能夠有效的降低客戶機(jī)對(duì)服務(wù)器數(shù)據(jù)庫(kù)大二進(jìn)制字段的訪問(wèn)次數(shù),在實(shí)踐中取得了較好的應(yīng)用效果。

        關(guān)鍵詞:GUID;C/S;緩存

        中圖分類號(hào):TP393

        應(yīng)用系統(tǒng)的網(wǎng)絡(luò)化大大提高了信息資源的利用率和可信度。然而,在一些基于C/S的應(yīng)用系統(tǒng)中,Client端經(jīng)常需要與Server端進(jìn)行大量數(shù)據(jù)的交互,按照數(shù)據(jù)訪問(wèn)的局部性原理,在大多數(shù)情況下,這些數(shù)據(jù)是重復(fù)的??蛻魴C(jī)與服務(wù)器之間大量重復(fù)信息的交互,極大地增加了服務(wù)器的網(wǎng)絡(luò)負(fù)擔(dān),也大大延長(zhǎng)了客戶端的網(wǎng)絡(luò)響應(yīng)時(shí)間,應(yīng)用系統(tǒng)的性能因此而急劇的下降了。顯然,如果能夠降低客戶機(jī)與服務(wù)器之間重復(fù)信息的交互次數(shù),應(yīng)用系統(tǒng)的性能將會(huì)有一個(gè)顯著的提高。

        本文提出了一種C/S模式下基于GUID的數(shù)據(jù)緩存機(jī)制,在客戶機(jī)頻繁訪問(wèn)服務(wù)器數(shù)據(jù)庫(kù)的情況下,能夠有效的降低客戶機(jī)對(duì)服務(wù)器數(shù)據(jù)庫(kù)大二進(jìn)制字段重復(fù)信息的交互次數(shù),在實(shí)踐中取得了較好的應(yīng)用效果。

        1 GUID

        1.1 GUID的全局唯一性。隨著分布式系統(tǒng)和公司間協(xié)同的不斷普及,許多應(yīng)用在實(shí)際中往往需要生成并操作一個(gè)在時(shí)間和空間上都是全局惟一的標(biāo)識(shí)符,于是產(chǎn)生了GUID(Globally Unique Identifier)的概念。

        GUID最初是由OSF(開放軟件基金會(huì))提出的,當(dāng)時(shí)被稱為UUID(Universally Unique Identifier)。UUID是作為分布式計(jì)算環(huán)境(DCE)的一部分而定義的,DCE的遠(yuǎn)程過(guò)程調(diào)用(RFC)使用UUID來(lái)唯一的標(biāo)識(shí)被調(diào)用者。

        GUID是一個(gè)128位的標(biāo)識(shí)符,根據(jù)定義,GUID在時(shí)間和空間上都必須是唯一的,OSF提出的算法可以保證這一點(diǎn)。為了保證空間唯一性,每一個(gè)GUID需要一個(gè)對(duì)于生成它的計(jì)算機(jī)來(lái)說(shuō)是唯一的48位值。這個(gè)值一般就是機(jī)器上網(wǎng)卡的地址。使用這個(gè)值可以保證在任意兩臺(tái)安裝網(wǎng)卡的機(jī)器上所生成的GUID值是不相同的。對(duì)于沒(méi)有安裝網(wǎng)卡的計(jì)算機(jī),此唯一值的生成將使用其它算法來(lái)完成。為保證時(shí)間上的唯一性,每一個(gè)GUID值具有一個(gè)60位的時(shí)間戳。這個(gè)時(shí)間戳表示的是自1852年10月15日00:00:00:00.00以來(lái)以100納米為間隔的計(jì)數(shù)值。根據(jù)這個(gè)原理,當(dāng)前生成的GUID在以后至少1400年內(nèi)是唯一的。

        GUID主要用于在擁有多個(gè)節(jié)點(diǎn)、多臺(tái)計(jì)算機(jī)的網(wǎng)絡(luò)或系統(tǒng)中,分配必須具有唯一性的標(biāo)識(shí)符。在Windows平臺(tái)上,GUID應(yīng)用非常廣泛:注冊(cè)表、數(shù)據(jù)庫(kù)、甚至自動(dòng)生成的機(jī)器名、目錄名等。在微軟的COM(Component Object Model)技術(shù)中,GUID既被用來(lái)唯一的標(biāo)識(shí)一個(gè)COM組件,也被用來(lái)唯一的標(biāo)識(shí)一個(gè)COM組件接口。

        正因?yàn)镚UID在實(shí)踐中具有如此廣泛的應(yīng)用,大多數(shù)高級(jí)語(yǔ)言都支持GUID,如:C++、JAVA、DELPHI、VB.net、C#等。GUID的全局唯一性對(duì)傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)及對(duì)象數(shù)據(jù)庫(kù)也具有重要的意義。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中,GUID可以唯一的標(biāo)識(shí)一個(gè)表或記錄,而在對(duì)象數(shù)據(jù)庫(kù)中,GUID則可以唯一的標(biāo)識(shí)一個(gè)全局對(duì)象。

        1.2 基于GUID的數(shù)據(jù)緩存機(jī)制

        1.2.1 問(wèn)題模型:在C/S方式下,服務(wù)器運(yùn)行一個(gè)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)D,在該庫(kù)的表T中包含一個(gè)存放BOLB類型的表字段B,每個(gè)客戶機(jī)對(duì)字段B都具有讀寫權(quán)限。由于字段B中存放數(shù)據(jù)的體積一般較大,客戶機(jī)在處理該字段時(shí)采用本地臨時(shí)文件暫存的方法,即:采用流方式從表T中獲取某一記錄R的字段B,并寫入客戶機(jī)本地臨時(shí)文件BLOB.tmp中。

        客戶機(jī)要修改該字段時(shí),先從文件BLOB.tmp以某種已知格式打開該文件并進(jìn)行修改,處理完成后,客戶機(jī)把加工好的數(shù)據(jù)用同樣格式寫入文件BLOB.tmp。之后,客戶機(jī)采用流方式從文件BLOB.tmp讀出并寫入記錄R的字段B。

        客戶機(jī)處理數(shù)據(jù)的算法如下:客戶機(jī)指定檢索記錄R的SQL語(yǔ)句并提交給網(wǎng)絡(luò)數(shù)據(jù)庫(kù)D;網(wǎng)絡(luò)數(shù)據(jù)庫(kù)引擎執(zhí)行該SQL查詢語(yǔ)句并返回當(dāng)前記錄的BLOB字段R.[B];客戶機(jī)生成本地臨時(shí)文件BLOB.tmp,并以流方式將當(dāng)前記錄的BLOB字段R.[B]寫入文件;客戶機(jī)打開文件BLOB.tmp進(jìn)行處理;客戶機(jī)將修改保存到文件BLOB.tmp;客戶機(jī)將文件回寫到R.[B];客戶機(jī)刪除臨時(shí)文件BLOB.tmp。

        1.2.2 問(wèn)題討論:采用以上算法,客戶機(jī)從數(shù)據(jù)庫(kù)獲取大小為1000KB數(shù)據(jù)字段的平均時(shí)間約為5秒即5000ms。5秒的平均網(wǎng)絡(luò)響應(yīng)時(shí)間對(duì)一個(gè)現(xiàn)代應(yīng)用系統(tǒng)來(lái)說(shuō)實(shí)在太慢了。經(jīng)驗(yàn)表明,客戶機(jī)對(duì)BLOB類型字段的訪問(wèn)具有以下特點(diǎn):

        在90%的情況下,客戶機(jī)只是讀取該字段瀏覽而不做修改;由于數(shù)據(jù)訪問(wèn)的局部性原理,具體到某一個(gè)確定的客戶機(jī),在80%的情況下,該客戶機(jī)瀏覽的數(shù)據(jù)是之前訪問(wèn)過(guò)的數(shù)據(jù)。

        假設(shè)客戶機(jī)打開和關(guān)閉本地文件的時(shí)間都為100ms,如果能夠?qū)υL問(wèn)過(guò)的數(shù)據(jù)庫(kù)字段數(shù)據(jù)在本地緩存,則客戶機(jī)的一次數(shù)據(jù)庫(kù)訪問(wèn)時(shí)間為:90%*(80%*(100ms+100ms)+20%*(5000ms))+10%*(5000ms)=1335.2ms

        這樣,一次數(shù)據(jù)庫(kù)訪問(wèn)時(shí)間將得到有效減少。更重要的是,緩存在本地的數(shù)據(jù)減少了對(duì)數(shù)據(jù)庫(kù)的連接讀取時(shí)間,數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)負(fù)擔(dān)也因此減輕了。

        但是,客戶機(jī)要求從數(shù)據(jù)庫(kù)檢索到的數(shù)據(jù)總是最新的,客戶機(jī)如何知道在本地緩存的數(shù)據(jù)是否已經(jīng)過(guò)期?基于GUID的數(shù)據(jù)緩存機(jī)制可以解決這個(gè)問(wèn)題。

        1.3 基于GUID的數(shù)據(jù)緩存機(jī)制。由于一臺(tái)計(jì)算機(jī)在不同時(shí)刻不會(huì)生成相同的GUID值,任何兩臺(tái)計(jì)算機(jī)也不會(huì)生成重復(fù)的GUID值,所以,如果在數(shù)據(jù)庫(kù)保存數(shù)據(jù)記錄的同時(shí)為其生成并保存一個(gè)GUID值,每次緩存數(shù)據(jù)時(shí)以該GUID值作為文件名,每次修改數(shù)據(jù)記錄時(shí)同時(shí)修改該GUID標(biāo)識(shí)符,則客戶機(jī)只要讀取數(shù)據(jù)記錄的GUID標(biāo)識(shí)符,并在本地查找具有相同標(biāo)識(shí)的臨時(shí)文件,就可以準(zhǔn)確地判斷數(shù)據(jù)記錄是否已經(jīng)更新。

        基于GUID的數(shù)據(jù)緩存機(jī)制如下:在數(shù)據(jù)庫(kù)中為每個(gè)包含BLOB類型字段的表添加一個(gè)類型為uniqueidentifier的字段G,并將字段G的默認(rèn)值設(shè)為NewID(),這樣當(dāng)新行插入表中時(shí),會(huì)自動(dòng)生成此列GUID值。

        客戶機(jī)如果只是瀏覽該記錄字段,算法如下:

        客戶機(jī)指定檢索記錄R的SQL語(yǔ)句,并提交給網(wǎng)絡(luò)數(shù)據(jù)庫(kù);網(wǎng)絡(luò)數(shù)據(jù)庫(kù)引擎執(zhí)行該SQL查詢語(yǔ)句并返回當(dāng)前記錄的GUID標(biāo)識(shí)符R.[G],假設(shè)其值為guid1;客戶機(jī)在本地查找文件名為guid1.tmp的臨時(shí)文件;如果沒(méi)有找到,則客戶機(jī)生成本地臨時(shí)文件guid1.tmp,并以流方式將當(dāng)前記錄寫入文件;客戶機(jī)打開文件guid1.tmp進(jìn)行瀏覽;

        客戶機(jī)如果要修改該記錄字段,算法如下:

        客戶機(jī)指定檢索記錄R的SQL語(yǔ)句并提交給網(wǎng)絡(luò)數(shù)據(jù)庫(kù);網(wǎng)絡(luò)數(shù)據(jù)庫(kù)引擎執(zhí)行該SQL查詢語(yǔ)句并返回當(dāng)前記錄的GUID標(biāo)識(shí)符R.[G],假設(shè)其值為guid1;客戶機(jī)在本地查找文件名為guid1.tmp的臨時(shí)文件;如果沒(méi)有找到,則客戶機(jī)生成本地臨時(shí)文件guid1.tmp,并以流方式將當(dāng)前記錄的BLOB字段R.[B]寫入文件guid1.tmp;客戶機(jī)打開文件guid1.tmp進(jìn)行修改;處理完成后,客戶機(jī)生成一個(gè)新的GUID標(biāo)識(shí)符假設(shè)為guid2,并將修改保存到文件guid2.tmp;客戶機(jī)將文件回寫到記錄R的BLOB字段R.[B],并修改其GUID標(biāo)識(shí)符R.[G]為guid2;客戶機(jī)刪除臨時(shí)文件guid1.tmp。

        2 結(jié)束語(yǔ)

        本文提出了一種數(shù)據(jù)緩存機(jī)制,基于GUID的全局唯一性,在客戶機(jī)頻繁訪問(wèn)服務(wù)器數(shù)據(jù)庫(kù)的情況下,能夠有效的降低客戶機(jī)對(duì)服務(wù)器數(shù)據(jù)庫(kù)大二進(jìn)制字段重復(fù)信息的交互次數(shù),在實(shí)踐中取得了較好的應(yīng)用效果。

        參考文獻(xiàn):

        [1]ASP.net開發(fā)經(jīng)驗(yàn)[OL].http://blog.joycode.com/moslem/archive/2010/03/23/16930.asp.

        [2]Jacques Roy.在IDS 9.x中使用GUID[J/OL],2012.http://www-900.ibm.com/developerWorks/cn/dmdd/library.

        作者簡(jiǎn)介:李兵哲(1975-),男,陜西岐山人,碩士,講師,主要研究方向:信息安全、多核計(jì)算。

        作者單位:西安政治學(xué)院,西安 710068

        国产美女精品AⅤ在线老女人| 超级乱淫片国语对白免费视频| 手机在线免费av资源网| 91精品国产综合久久久蜜| 成人国产一区二区三区| 少妇无码av无码专区| 国产成人av片在线观看| 无码少妇a片一区二区三区| 亚洲熟妇丰满大屁股熟妇| 青草蜜桃视频在线观看| 国产黄色看三级三级三级| 国产精品一区二区三区三| 最好看的亚洲中文字幕| 精品国产青草久久久久福利| 欧美gv在线观看| 久久精品国产72国产精福利| 免费观看视频在线播放| 亚洲一区极品美女写真在线看| 亚洲影院在线观看av| 手机在线观看av资源| 欧洲女人与公拘交酡视频| 中文字幕在线日亚洲9| 亚洲毛片αv无线播放一区| 无码人妻视频一区二区三区99久久| 亚洲自拍愉拍| 一区二区视频网站在线观看| 精品亚洲国产亚洲国产| 国产高清一区二区三区四区色| 欧美人与善在线com| 久久综合九色综合欧美狠狠| 精品久久综合一区二区| 中文无码制服丝袜人妻AV| 天堂一区二区三区精品| 日本男人精品一区二区| 未满十八勿入av网免费| 成全视频高清免费| 久久久久久久综合日本| 日本女优中文字幕在线观看| 久久国产精品一区av瑜伽| 国产av无码专区亚洲avjulia| 国产无遮挡a片又黄又爽|