欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)存儲輔助方法及系統(tǒng)的制作方法_2

文檔序號:8258609閱讀:來源:國知局
更好的起到保護(hù)DB的作用。
[0033]其中,LDB是一種持久化數(shù)據(jù)庫(也稱持久化緩存),其讀寫速率遠(yuǎn)大于DB,據(jù)統(tǒng)計,單條記錄大小為512字節(jié)時的TPS可達(dá)到5萬,響應(yīng)時間RT〈=2ms。可見,其讀寫效率要低于MDB,相對于DB而言,它不支持事務(wù),不支持復(fù)雜查詢,靈活性不夠,但就單個讀寫請求而言,讀寫效率對比DB有很大的優(yōu)勢,且數(shù)據(jù)安全,是持久化存儲。
[0034]因此,在本申請實施例中,使用了 DB-LDB-MDB三級存儲結(jié)構(gòu),并未直接替換MDB或者DB,使得存儲使用可以利用到各自的優(yōu)點。首先,由于MDB直接位于內(nèi)存中,其讀寫速率是最高的,因此將其保留;DB能夠支持事務(wù)以及復(fù)雜的查詢,因此也將其保留。這樣,在本申請實施例的存儲架構(gòu)中,對于讀操作請求,請求首先到達(dá)MDB,如果MDB命中,則直接通過MDB返回查詢到的數(shù)據(jù),否則讀操作請求到達(dá)LDB,如果LDB命中,則通過LDB返回查詢到的數(shù)據(jù),并將LDB中查詢到的數(shù)據(jù)回寫到MDB中;如果LDB也沒有命中,讀操作請求才會被發(fā)送到DB,并將DB中查詢到的數(shù)據(jù)回寫到LDB。也就是說,MDB中的數(shù)據(jù),是根據(jù)應(yīng)用的查詢請求,從LDB中回寫的,LDB中的數(shù)據(jù),是根據(jù)應(yīng)用的查詢請求,從DB中回寫的。當(dāng)然,在實際應(yīng)用中,在數(shù)據(jù)查詢請求在MDB以及LDB中均未命中的情況下,DB中查詢到的數(shù)據(jù)也可以同時回寫到LDB以及MDB中,這樣,下次再有查詢該數(shù)據(jù)的請求是,直接在MDB中就可以獲得查詢結(jié)果。
[0035]也就是說,在初始狀態(tài)下,數(shù)據(jù)僅保存在DB中,隨著讀操作請求的產(chǎn)生,被讀取的數(shù)據(jù)會被逐步寫到LDB以及MDB中;當(dāng)應(yīng)用系統(tǒng)中產(chǎn)生寫操作請求,DB中的數(shù)據(jù)發(fā)生修改后,LDB中的數(shù)據(jù)也被修改,MDB中對應(yīng)的數(shù)據(jù)則被無效,新的讀請求無法從MDB中獲取到查詢結(jié)果,但多數(shù)情況下都可以從LDB中獲取到查詢結(jié)果;當(dāng)服務(wù)發(fā)生重啟等情況時,MDB中的數(shù)據(jù)會丟失,但LDB中的數(shù)據(jù)卻可以不丟失。
[0036]在具體實現(xiàn)時,本申請實施例還需要提供一個輔助的系統(tǒng),以便在DB、LDB、MDB三級之間解決數(shù)據(jù)一致性的問題。這里需要說明的是,關(guān)于這三級之間的數(shù)據(jù)一致性問題,基本的出發(fā)點是,使得LDB與DB之間的數(shù)據(jù)盡量保持一致,也即,當(dāng)根據(jù)寫操作請求對DB中的數(shù)據(jù)進(jìn)行了修改之后,將LDB中對應(yīng)的數(shù)據(jù)也進(jìn)行修改,并將MDB中對應(yīng)的數(shù)據(jù)無效。這樣,當(dāng)應(yīng)用系統(tǒng)中產(chǎn)生查詢該數(shù)據(jù)的請求時,在MDB中不會命中,并且接下來查詢請求會被發(fā)送到LDB,由于LDB中對應(yīng)的數(shù)據(jù)已經(jīng)進(jìn)行了修改,因此,就能夠從LDB層給出查詢結(jié)果,而不需要再到DB中查詢。下面就對該輔助系統(tǒng)的具體實現(xiàn)方式進(jìn)行詳細(xì)的介紹。
[0037]參見圖2,本申請實施例首先提供了一種數(shù)據(jù)存儲輔助方法,該方法可以包括以下步驟:
[0038]S201:判斷DB中的數(shù)據(jù)是否發(fā)生修改;
[0039]S202:如果是,則對LDB中對應(yīng)的數(shù)據(jù)進(jìn)行修改,并將MDB中對應(yīng)的數(shù)據(jù)進(jìn)行無效處理,以便在應(yīng)用系統(tǒng)發(fā)出對所述已修改的數(shù)據(jù)的查詢請求時,首先在MDB中查詢,在發(fā)現(xiàn)MDB未命中后,則通過查詢LDB返回所述已修改的數(shù)據(jù)。
[0040]其中,具體在對LDB中對應(yīng)的數(shù)據(jù)進(jìn)行修改以及對MDB中對應(yīng)的數(shù)據(jù)進(jìn)行無效時,都可以通過調(diào)用對應(yīng)的接口來實現(xiàn)。
[0041]具體實現(xiàn)時,可以對LDB中的數(shù)據(jù)進(jìn)行同步修改。也就是說,存儲系統(tǒng)在接收到一個應(yīng)用系統(tǒng)發(fā)送的寫操作請求之后,會在一個線程中對DB中的數(shù)據(jù)進(jìn)行修改(包括數(shù)據(jù)的更新、刪除、新建等等),在同步修改LDB的情況下,可以直接在該線程中對LDB中對應(yīng)的數(shù)據(jù)進(jìn)行修改,LDB中的數(shù)據(jù)修改成功之后再返回。在寫操作請求的并發(fā)數(shù)量不大的情況下,這種同步修改的方式可以更及時的實現(xiàn)LDB與DB中的數(shù)據(jù)一致性。但是,在寫請求并發(fā)數(shù)量很大的情況下,則并行修改LDB數(shù)據(jù)的實現(xiàn)方式可能會導(dǎo)致出錯等現(xiàn)象。例如,在高并發(fā)的情況下,可能會同時產(chǎn)生關(guān)于同一數(shù)據(jù)的多次修改,此時,如果在修改DB數(shù)據(jù)的線程中同步對LDB中的數(shù)據(jù)進(jìn)行修改,則可能出錯或者延長系統(tǒng)的響應(yīng)時間。如,假設(shè)DB中被修改的數(shù)據(jù)是某商品對象的庫存數(shù)量,假設(shè)修改前的數(shù)量是100件,某時刻接收到第一個寫請求,需要扣減I件,此時,DB中的數(shù)據(jù)被修改為99,同步修改LDB中的數(shù)據(jù)時,也將對應(yīng)的庫存數(shù)量由100修改為99 ;但是,就在接收到第一個寫請求之后,又收到一個寫請求,請求再將該商品對象的庫存數(shù)量扣減2件,此時,針對第一個寫請求的線程可能尚未返回,需要等待第一個寫請求的線程返回之后,才能處理第二個寫請求,否則,如果不等待第一個線程返回就直接對DB以及LDB中的數(shù)據(jù)修改,就會出錯。因此,在本申請實施例中,還可以采用異步修改LDB數(shù)據(jù)的實現(xiàn)方式。
[0042]也就是說,用于修改DB中數(shù)據(jù)的線程,在修改完成DB中的數(shù)據(jù)之后就可以返回,而關(guān)于LDB中對應(yīng)數(shù)據(jù)的修改,則可以在另外一個線程中進(jìn)行。為便于描述,可以將該另外的線程稱為“異步任務(wù)處理線程”。也就是說,LDB中的數(shù)據(jù)修改與DB中的數(shù)據(jù)修改并不是完全同步進(jìn)行的,而是在DB中的數(shù)據(jù)修改完成之后,再由異步任務(wù)處理線程對LDB中對應(yīng)的數(shù)據(jù)進(jìn)行修改。這樣,可以使得修改DB數(shù)據(jù)的線程更及時的返回,提高寫請求的響應(yīng)速率。當(dāng)然,在異步任務(wù)處理線程對LDB中的數(shù)據(jù)進(jìn)行修改時,可以按照DB中數(shù)據(jù)被修改的順序來進(jìn)行。
[0043]具體實現(xiàn)時,為了能夠按照DB中數(shù)據(jù)被修改的順序來修改LDB中對應(yīng)的數(shù)據(jù),可以監(jiān)聽DB的日志文件(例如Mysql數(shù)據(jù)庫的Binlog日志等)的變化,例如,可以采用定時查看等方式進(jìn)行監(jiān)聽;當(dāng)發(fā)現(xiàn)日志文件中產(chǎn)生新的記錄時,可以提取出來并進(jìn)行解析(日志文件中的每條記錄中保存有操作類型等信息),通過解析結(jié)果就可以判斷出DB中的數(shù)據(jù)是否發(fā)生了修改,并且,日志文件中各條記錄產(chǎn)生的時間,反映了 DB中的數(shù)據(jù)被修改的先后順序,因此,在異步任務(wù)處理線程中,就可以按照各條記錄在日志文件中被創(chuàng)建的先后順序,對LDB中對應(yīng)的數(shù)據(jù)進(jìn)行修改,并將MDB中對應(yīng)的數(shù)據(jù)進(jìn)行無效處理。
[0044]在實際應(yīng)用中,為了提聞應(yīng)對聞并發(fā)情況的能力,存儲系統(tǒng)中可以創(chuàng)建多個異步任務(wù)處理線程,輔助系統(tǒng)可以將修改LDB對應(yīng)數(shù)據(jù)的操作分配到不同的異步任務(wù)處理線程上執(zhí)行,這樣有利于提高處理效率,降低從DB數(shù)據(jù)發(fā)生修改到LDB數(shù)據(jù)修改完成之間的延時。當(dāng)然,對于同一數(shù)據(jù)產(chǎn)生的不同修改記錄而言,則可以分配到同一異步任務(wù)處理線程上執(zhí)行,這樣可以使得異步任務(wù)處理線程能夠根據(jù)不同修改記錄被創(chuàng)建的時間順序地執(zhí)行對LDB中對應(yīng)數(shù)據(jù)的修改操作,避免出錯。
[0045]具體實現(xiàn)時,由于DB中的各個數(shù)據(jù)通常具有唯一性標(biāo)識,例如,對于電子商務(wù)交易平臺中的商品對象這一數(shù)據(jù)而言,一般會用ItemID來分別進(jìn)行唯一性標(biāo)識,這種ItemID一般是數(shù)字ID,也即都是用一串?dāng)?shù)字來表示;另外,各個異步任務(wù)處理線程也可以有各自的數(shù)字編號,例如,包括編號為0、1、2……的異步任務(wù)處理線程,等等。因此,為了能夠?qū)⑨槍ν粩?shù)據(jù)的不同修改記錄分配到同一異步任務(wù)處理線程上處理,可以以異步任務(wù)處理線程總數(shù)為模數(shù),對被修改的數(shù)據(jù)的唯一性標(biāo)識進(jìn)行求模運(yùn)算,將編號為求模運(yùn)算結(jié)果的異步任務(wù)處理線程作為所述目標(biāo)異步任務(wù)處理線程。例如,當(dāng)從日志文件中提取到第一條數(shù)據(jù)修改記錄時,可以首先從中獲取到被修改的數(shù)據(jù)的ID,例如為0002,假設(shè)異步任務(wù)處理線程總數(shù)為100,則進(jìn)行求模運(yùn)算后,得到的結(jié)果為2,因此,就可以將該數(shù)據(jù)修改記錄分配給編號為2的異步任務(wù)處理線程;接下來,如果第二條數(shù)據(jù)修改記錄顯示被修改的數(shù)據(jù)的ID也是0002,則該條數(shù)據(jù)修改記錄也會被分配給編號為2的異步任務(wù)處理線程,以此類推。這樣就可以保證針對同一數(shù)據(jù)的不同修改
當(dāng)前第2頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
石河子市| 南召县| 清徐县| 海林市| 调兵山市| 页游| 莱西市| 平山县| 淮安市| 壤塘县| 安丘市| 衡东县| 尤溪县| 柳林县| 淳安县| 六枝特区| 武邑县| 大兴区| 观塘区| 蒲江县| 大新县| 太湖县| 丹凤县| 万载县| 南开区| 望都县| 南陵县| 公安县| 壤塘县| 洱源县| 蒙自县| 腾冲县| 天等县| 隆安县| 汪清县| 南丹县| 岐山县| 潮州市| 扎囊县| 邛崃市| 宝丰县|