亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

鍵值KV存儲方法和裝置與流程

文檔序號:11519695閱讀:181來源:國知局
鍵值KV存儲方法和裝置與流程
本發(fā)明實施例涉及數(shù)據(jù)存儲
技術(shù)領(lǐng)域
,特別涉及一種鍵值kv存儲方法和裝置。
背景技術(shù)
:隨著scm(storageclassmemory,存儲型內(nèi)存)的發(fā)展,scm已逐漸應(yīng)用于kv(keyvlaue,鍵值)存儲中。在使用scm進(jìn)行存儲時,可以使用scm和ssd(solidstatedrives,固態(tài)硬盤)混合存儲。而現(xiàn)有技術(shù)中通常將scm作為ssd的緩存使用,因此這并未充分利用scm的特性,現(xiàn)有的kv存儲的性能較低。技術(shù)實現(xiàn)要素:為了解決現(xiàn)有技術(shù)中kv存儲的存儲性能低的問題,本發(fā)明實施例提供了一種kv存儲方法和裝置,所述技術(shù)方案如下:第一方面,提供了一種kv存儲方法,該方法包括:在存儲目標(biāo)鍵值kv時,存儲目標(biāo)kv中的值value至存儲型內(nèi)存scm中的不定長頁面;更新主索引和映射表,主索引中包括已存儲的kv中的key和邏輯地址之間的映射關(guān)系;映射表中包括已存儲的kv的邏輯地址和物理地址之間的映射關(guān)系;在滿足第一合并條件時,合并不定長頁面中的value至scm中的定長頁面;更新映射表;在滿足第二合并條件時,合并定長頁面中的value至固態(tài)硬盤ssd中的塊頁面;再次更新映射表。通過將目標(biāo)kv中的value存儲至scm中的不定長頁面,進(jìn)而在滿足第一合并條件時,將不定長頁面中的value合并至scm中的定長頁面,并在滿足第二合并條件時,將scm中的定長頁面中的value合并至ssd中;也即充分使用scm和ssd進(jìn)行混合存儲;解決了現(xiàn)有技術(shù)中kv存儲的性能較低的問題,達(dá)到了可以提高kv存儲的性能的效果。在第一種可能的實現(xiàn)方式中,上述更新映射表的步驟可以包括:獲取目標(biāo)kv的目標(biāo)邏輯地址以及在不定長頁面中的目標(biāo)物理地址;獲取映射表中目標(biāo)邏輯地址所對應(yīng)的初始物理地址;生成物理地址鏈,物理地址鏈中包括目標(biāo)物理地址以及設(shè)置在目標(biāo)物理地址的預(yù)設(shè)位置處的指示信息,預(yù)設(shè)位置包括目標(biāo)物理地址之前或者之后的位置,指示信息用于指向初始物理地址;將映射表中的初始物理地址更新為物理地址鏈。在第二種可能的實現(xiàn)方式中,在滿足第一合并條件時,合并不定長頁面中的value至scm中的定長頁面;更新映射表,包括:在物理地址鏈滿足預(yù)設(shè)條件時,將物理地址鏈所指向的物理地址中的value合并至scm中的定長頁面;預(yù)設(shè)條件包括:物理地址鏈的長度達(dá)到預(yù)設(shè)長度,或者,物理地址鏈所對應(yīng)的不定長頁面的個數(shù)達(dá)到預(yù)設(shè)個數(shù)。在第三種可能的實現(xiàn)方式中,獲取映射表中目標(biāo)邏輯地址所對應(yīng)的初始物理地址,包括:若映射表中不存在目標(biāo)邏輯地址所對應(yīng)的物理地址,則將初始物理地址確定為空。在第四種可能的實現(xiàn)方式中,在滿足第一合并條件時,合并不定長頁面中的value至scm中的定長頁面;更新映射表,包括:在scm中不定長頁面的剩余資源低于第一閾值時,合并不定長頁面中的value至scm中的定長頁面。在第五種可能的實現(xiàn)方式中,在滿足第二合并條件時,合并定長頁面中的value至ssd中的塊頁面,包括:在相鄰的定長頁面的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,合并預(yù)設(shè)個數(shù)的定長頁面中的value至塊頁面;相鄰的定長頁面是指存儲的value所對應(yīng)的key的取值連續(xù)的頁面;或者,在scm中的定長頁面的空閑資源低于第二閾值時,合并定長頁面中的value至塊頁面。在第六種可能的實現(xiàn)方式中,該方法還包括:在存儲目標(biāo)kv中的value至不定長頁面之后,更新臨時索引,臨時索引中包括已存儲的kv中的key和value在不定長頁面中的物理地址之間的映射關(guān)系;更新主索引和映射表,包括:在提交目標(biāo)kv之后,根據(jù)臨時索引更新主索引和映射表。第二方面,提供了一種kv存儲裝置,該裝置用于實現(xiàn)第一方面所述的功能。所述功能可以通過硬件實現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實現(xiàn)。所述硬件或軟件包括一個或多個與上述功能相對應(yīng)的模塊。本發(fā)明的這些方面或其他方面在以下實施例的描述中會更加簡明易懂。附圖說明圖1是本發(fā)明各個實施例所涉及的存儲設(shè)備的示意圖。圖2是本發(fā)明一個實施例提供的kv存儲方法的方法流程圖。圖3是本發(fā)明一個實施例提供的kv存儲方法的方法流程圖。圖4是本發(fā)明一個實施例提供的讀取數(shù)據(jù)的方法流程圖。圖5是本發(fā)明一個實施例提供的讀取數(shù)據(jù)的方法流程圖。圖6是本發(fā)明一個實施例提供的kv存儲裝置的框圖。具體實施方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述。下述各個實施例提供的kv存儲方法可以用于存儲設(shè)備中,如圖1所示,該存儲設(shè)備中可以包括accessmethod(接入入口)11、storageengine(存儲引擎)12、dram(dynamicrandomaccessmemory,動態(tài)隨機(jī)存取存儲器)13、scm14和ssd15。其中:accessmethod11用于提供對外的kv存儲入口,accessmethod11中包含臨時索引和主索引。其中,臨時索引用于索引未commit(提交)的kv,該臨時索引中包括key與value的物理地址之間的映射關(guān)系;主索引用于索引已commit的kv,該主索引中包括key與value的邏輯地址之間的映射關(guān)系。storageengine12中包括映射表以及頁面管理器。映射表包括已存儲的kv的邏輯地址和物理地址之間的映射關(guān)系,物理地址用于指向dram13、scm14和ssd15;頁面管理器用于管理dram13、scm14和ssd15,其用于申請和釋放資源。scm14可以提供三種接口。第一種接口提供類似于內(nèi)存的方式,可以使用字節(jié)尋址,也即可以申請不定長的頁面,其由硬件管理;比如,m-type;第二種接口類似于塊設(shè)備的方式,也即申請的頁面均為定長如固定為200kb,通常情況下其由軟件管理;比如,s-type;第三種接口是指可以根據(jù)使用需求靈活結(jié)合第一種接口和第二種接口的接口。在下述各個實施例中,除特殊說明外,下述各個實施例中的scm使用第三種接口。請參考圖2,其示出了本發(fā)明一個實施例提供的kv存儲方法的流程圖,本實施例以該kv存儲方法用于圖1所示的存儲設(shè)備中來舉例說明。如圖2所示,該kv存儲方法包括:步驟201,在存儲目標(biāo)kv時,存儲目標(biāo)kv中的value至scm中的不定長頁面。用戶需要存儲數(shù)據(jù)至存儲設(shè)備時,用戶可以觸發(fā)數(shù)據(jù)存儲請求,相應(yīng)的,存儲設(shè)備可以接收到該數(shù)據(jù)存儲請求。其中,數(shù)據(jù)存儲請求中攜帶有需要存儲的目標(biāo)kv,其中,目標(biāo)kv可以為一個,也可以為多個,對此并不做限定。并且,該數(shù)據(jù)存儲請求可以為首次存儲目標(biāo)kv的存儲請求,也可以為更新已有key的value的更新請求,對此并不做限定。存儲設(shè)備接收到數(shù)據(jù)存儲請求之后,存儲設(shè)備可以根據(jù)目標(biāo)kv中的vlaue的大小在m-type的scm中申請一個不定長頁面。其中,不定長頁面的大小大于vlaue的大小,并且通常等于vlaue的大小和數(shù)據(jù)包頭的大小的總和。在申請不定長頁面時,存儲設(shè)備可以根據(jù)m-type的scm中各個存儲地址被寫入數(shù)據(jù)的寫入次數(shù),在m-type的scm中申請寫入次數(shù)滿足預(yù)設(shè)條件的各個存儲地址,申請到的各個存儲地址共同組成該不定長頁面。其中,預(yù)設(shè)條件包括寫入次數(shù)最少,或者,寫入次數(shù)小于預(yù)設(shè)次數(shù),本實施例對此并不做限定。通過在申請不定長頁面時申請寫入次數(shù)滿足預(yù)設(shè)條件的頁面,達(dá)到了可以實現(xiàn)scm的磨損均衡,提高了scm的性能的效果。實際實現(xiàn)時,存儲設(shè)備可以通過頁面管理器在m-type的scm中申請一個不定長頁面,對此并不做限定。在存儲設(shè)備申請到不定長頁面之后,存儲設(shè)備可以存儲目標(biāo)kv中的value至申請的該不定長頁面。步驟202,更新主索引和映射表,主索引中包括已存儲的kv中的key和邏輯地址之間的映射關(guān)系;映射表中包括已存儲的kv的邏輯地址和物理地址之間的映射關(guān)系。在存儲value至不定長頁面之后,存儲設(shè)備可以得到臨時索引,該臨時索引包括key與不定長頁面的物理地址之間的映射關(guān)系??蛇x地,若臨時索引中已經(jīng)包含該key所對應(yīng)的映射關(guān)系,則存儲設(shè)備更新已有的映射關(guān)系,而若臨時索引中未包含該key所對應(yīng)的映射關(guān)系,則該存儲設(shè)備生成包括該key與不定長頁面的物理地址之間的映射關(guān)系,對此并不做限定。在數(shù)據(jù)commit之后,存儲設(shè)備可以將臨時索引合并至主索引并更新映射表。本實施例所說的commit是指,當(dāng)批量存儲時,最后一個kv到來之后觸發(fā)的動作??蛇x地,存儲設(shè)備更新主索引的步驟可以包括:存儲設(shè)備檢測主索引中是否包含臨時索引中的key所對應(yīng)的映射關(guān)系,若包含,則結(jié)束;而若不包含,則存儲設(shè)備將臨時索引中的key和該key所對應(yīng)的目標(biāo)邏輯地址之間的映射關(guān)系添加至主索引。key所對應(yīng)的目標(biāo)邏輯地址為存儲設(shè)備根據(jù)key的取值分配的地址??蛇x地,存儲設(shè)備可以為多個key分配同一個邏輯地址。比如,請參考表1,其示出了key與邏輯地址之間的映射關(guān)系。key的取值邏輯地址0-100邏輯地址1101-200邏輯地址2201-300邏輯地址3表1結(jié)合表1,若目標(biāo)kv的key為89,則存儲設(shè)備為該目標(biāo)kv分配的邏輯地址為邏輯地址1,也就是說,目標(biāo)kv中的key所對應(yīng)的目標(biāo)邏輯地址為邏輯地址1。實際實現(xiàn)時,存儲設(shè)備更新主索引時可以通過cas(compareandswap,比較并交換)技術(shù)來提高并發(fā)度,在此不再贅述。存儲設(shè)備更新映射表的步驟可以包括:第一,獲取目標(biāo)kv的目標(biāo)邏輯地址以及在不定長頁面中的目標(biāo)物理地址。存儲設(shè)備可以根據(jù)主索引獲取該目標(biāo)kv的目標(biāo)邏輯地址,并根據(jù)臨時索引確定該目標(biāo)kv的目標(biāo)物理地址。第二,獲取映射表中目標(biāo)邏輯地址所對應(yīng)的初始物理地址。存儲設(shè)備可以查詢映射表中該目標(biāo)邏輯地址所對應(yīng)的初始物理地址??蛇x地,存儲設(shè)備可以檢測映射表中是否包含該目標(biāo)邏輯地址和物理地址之間的映射關(guān)系;若不包含,則確認(rèn)初始物理地址為空;而若包含,則獲取映射表中的該目標(biāo)邏輯地址所對應(yīng)的物理地址,將獲取到的物理地址作為初始物理地址。第三,生成物理地址鏈,物理地址鏈中包括目標(biāo)物理地址以及設(shè)置在目標(biāo)物理地址的預(yù)設(shè)位置處的指示信息,預(yù)設(shè)位置包括目標(biāo)物理地址之前或者之后的位置,指示信息用于指向初始物理地址。以預(yù)設(shè)位置為目標(biāo)物理地址的尾部為例,存儲設(shè)備可以在目標(biāo)物理地址的尾部增加一個指針,該指針用于指向初始物理地址,將目標(biāo)物理地址和增加的該指針作為物理地址鏈。實際實現(xiàn)時,初始物理地址也可以為物理地址鏈。比如,結(jié)合表1,對于邏輯地址1而言,在存儲key為30的kv之后,映射表中包含有邏輯地址1和key為30的value的物理地址之間的映射關(guān)系;此后,在存儲key為58的kv時,由于映射表中已經(jīng)包含有邏輯地址1所對應(yīng)的初始物理地址,此時,存儲設(shè)備可以生成包含key為58的value的物理地址以及指針的物理地址鏈。其中該指針指向key為30的value的物理地址。之后,在存儲key為88的kv時,存儲設(shè)備獲取到邏輯地址1所對應(yīng)的初始物理地址即為一個物理地址鏈,在此不再贅述。第四,將映射表中的初始物理地址更新為物理地址鏈。此后,存儲設(shè)備即可將映射表中目標(biāo)邏輯地址所對應(yīng)的初始物理地址更新為物理地址鏈。步驟203,在滿足第一合并條件時,合并不定長頁面中的value至scm中的定長頁面??蛇x地,本步驟可以包括如下兩種可能的實現(xiàn)方式。第一種,在物理地址鏈滿足預(yù)設(shè)條件時,將物理地址鏈所指向的物理地址中的value合并至scm中的定長頁面;預(yù)設(shè)條件包括:物理地址鏈的長度達(dá)到預(yù)設(shè)長度,或者,物理地址鏈所對應(yīng)的不定長頁面的個數(shù)達(dá)到預(yù)設(shè)個數(shù)。其中,物理地址鏈所對應(yīng)的不定長頁面的個數(shù)為包含的指示信息的個數(shù)+1,在此不再贅述。對于各個邏輯地址所對應(yīng)的物理地址鏈,若某一物理地址鏈滿足預(yù)設(shè)條件,則存儲設(shè)備可以在s-type的scm中申請一個定長頁面,并將物理地址鏈所指示的頁面中的數(shù)據(jù)合并至該申請的定長頁面中??蛇x地,與申請不定長頁面類似,在申請定長頁面時,存儲設(shè)備可以根據(jù)s-type的scm中各個存儲地址被寫入數(shù)據(jù)的寫入次數(shù),在s-type的scm中申請寫入次數(shù)滿足預(yù)設(shè)條件的各個存儲地址,申請到的各個存儲地址共同組成該不定長頁面。在此不再贅述。需要說明的是,若一個定長頁面中無法存儲物理地址鏈所對應(yīng)的全部物理地址中的value,則此時,存儲設(shè)備還可以繼續(xù)申請定長頁面,將剩余的value存儲至繼續(xù)申請的定長頁面中;或者,存儲設(shè)備還可以將已經(jīng)申請的定長頁面中存儲的value合并至ssd的塊頁面中,并將剩余的value繼續(xù)存儲至已經(jīng)申請的定長頁面,本實施例在此不再贅述。第二種,在scm中不定長頁面的剩余資源低于第一閾值時,合并不定長頁面中的value至scm中的定長頁面。在第二種可能的實現(xiàn)中,當(dāng)m-type的scm的剩余資源低于第一閾值時,若此后繼續(xù)有新的kv需要寫入,則此時kv可能無法寫入,因此,為了保證后續(xù)kv能夠正常寫入,存儲設(shè)備可以將不定長頁面中的數(shù)據(jù)合并至申請的定長頁面中。其中,存儲設(shè)備申請定長頁面的申請方式與第一種實現(xiàn)方式類似,在此不再贅述。其中,第一閾值為存儲設(shè)備中預(yù)先設(shè)定的數(shù)值,對此并不做限定。步驟204,更新映射表。在將不定長頁面中的value合并至定長頁面之后,由于value的存儲位置發(fā)生變化,因此,存儲設(shè)備可以將映射表中指向合并前的不定長頁面的物理地址更新為指向合并后的定長頁面的物理地址,在此不再贅述。步驟205,在滿足第二合并條件時,合并定長頁面中的value至ssd中的塊頁面。本步驟可以包括如下兩種可能的實現(xiàn)方式。第一種,在相鄰的定長頁面的個數(shù)達(dá)到預(yù)設(shè)個數(shù)時,合并預(yù)設(shè)個數(shù)的定長頁面中的數(shù)據(jù)至塊頁面。其中,相鄰的定長頁面是指存儲的vlaue是取值范圍相鄰的key所對應(yīng)的value的定長頁面。比如,仍然以表1中邏輯地址與key的映射關(guān)系為例,若定長頁面中存儲有邏輯地址1所對應(yīng)key的value,另一定長頁面中存儲有邏輯地址2所對應(yīng)的key的value,則由于邏輯地址1所對應(yīng)的key的范圍與邏輯地址2所對應(yīng)的key的范圍連續(xù),因此,這兩個定長頁面即為相鄰頁面。預(yù)設(shè)個數(shù)是系統(tǒng)默認(rèn)的數(shù)值,在此不再贅述。合并定長頁面中的數(shù)據(jù)至ssd中的塊頁面的步驟可以包括:存儲設(shè)備在ssd中申請一個塊頁面,合并定長頁面中的數(shù)據(jù)至申請的塊頁面。其中,塊頁面的大小依賴于ssd的特性,并根據(jù)ssd暴露的級別來確定,比如,當(dāng)ssd暴露channel級別時,塊頁面通常為幾m到幾十m,對此并不做限定。并且,存儲設(shè)備申請塊頁面的申請方式與在m-type和s-type中申請不定長頁面和申請定長頁面的申請方式類似,均可以申請寫入次數(shù)滿足預(yù)設(shè)條件的塊頁面,進(jìn)而達(dá)到磨損均衡的效果。第二種,在scm中的定長頁面的空閑資源低于第二閾值時,合并定長頁面中的數(shù)據(jù)至塊頁面。在第二種可能的實現(xiàn)方式中,在scm中的定長頁面的空閑資源低于第二閾值時,則說明此后在合并不定長頁面中的數(shù)據(jù)至s-type的scm中的定長頁面時,可能會因為s-type的scm中的剩余資源不足而導(dǎo)致無法存儲,此時,為了釋放部分s-type的scm中的資源進(jìn)而保證之后數(shù)據(jù)的正常存儲,存儲設(shè)備可以合并定長頁面中的數(shù)據(jù)至塊頁面,在此不再贅述。其中,第二閾值為存儲設(shè)備預(yù)先設(shè)定的數(shù)值,對此并不做限定。步驟206,再次更新映射表。此后,存儲設(shè)備可以再次更新映射表,并將映射表中指向合并前的定長頁面的物理地址更新為指向ssd中的塊頁面的物理地址,在此不再贅述。綜上所述,本實施例提供的kv存儲方法,通過將目標(biāo)kv中的value存儲至scm中的不定長頁面,進(jìn)而在滿足第一合并條件時,將不定長頁面中的value合并至scm中的定長頁面,并在滿足第二合并條件時,將scm中的定長頁面中的value合并至ssd中;也即充分使用scm和ssd進(jìn)行混合存儲;解決了現(xiàn)有技術(shù)中kv存儲的性能較低的問題,達(dá)到了可以提高kv存儲的性能的效果。由于可以通過映射表來實現(xiàn)對ssd的管理,而無需使用現(xiàn)有的ftl(flashtranslationlayer,閃存轉(zhuǎn)換層),這就提高了對ssd管理的效率,也即提高了kv存儲的性能。同時,由于ssd的寫入是以塊為單位,因此可以通過erase接口直接實現(xiàn)對塊進(jìn)行擦除,而無需后臺進(jìn)行垃圾回收,進(jìn)一步提高了kv存儲的性能。此外,通過暴露ssd中的塊頁面的更多信息,可以實現(xiàn)壞塊屏蔽,保證了數(shù)據(jù)存儲的安全。在一個示例性實施例中,請參考圖3,其示出了kv存儲時存儲設(shè)備中的各個部分交互的方法流程圖。如圖3所示,該kv存儲的方法包括:(1)、accessmehtod接收數(shù)據(jù)存儲請求。(2)、accessmehtod觸發(fā)storageengine在m-type的scm中申請不定長頁面。(3)、storageengine在m-type的scm中根據(jù)數(shù)據(jù)寫入次數(shù)申請寫入次數(shù)最少的不定長頁面。(4)、storageengine返回頁面申請成功消息至accessmehtod。(5)、accessmehtod觸發(fā)storageengine存儲value至不定長頁面。(6)、storageengine寫入value至scm中的不定長頁面。(7)、storageengine返回寫入成功消息至accessmehtod。(8)、accessmehtod觸發(fā)storageengine更新臨時索引。(9)、storageengine將臨時索引寫入至dram。(10)、storageengine返回寫入成功消息至accessmehtod。(11)、accessmehtod在數(shù)據(jù)存儲請求commit時觸發(fā)storageengine將臨時索引合并至主索引。(12)、storageengine更新m-type的scm的主索引以及映射表。(13)、storageengine返回更新成功消息至accessmehtod。(14)、storageengine在滿足第一合并條件時,在s-type的scm中根據(jù)數(shù)據(jù)寫入次數(shù)申請寫入次數(shù)最少的定長頁面。(15)、storageengine將不定長頁面中的value合并至定長頁面,更新映射表。(16)、storageengine在滿足第二合并條件時,在ssd中根據(jù)數(shù)據(jù)寫入次數(shù)申請寫入次數(shù)最少塊頁面。(17)、storageengine將不定長頁面中的value合并至ssd中。(18)、storageengine更新映射表。在上述各個實施例中,當(dāng)需要讀取數(shù)據(jù)時,請參考圖4,該方法包括:步驟401,接收讀請求,讀請求中攜帶有需要查詢的key。步驟402,檢測內(nèi)存中是否包含key所對應(yīng)的value。由于在讀取物理地址中的value至內(nèi)存之后,并不會馬上刪除內(nèi)存中的value,因此為了提高數(shù)據(jù)讀取效率,存儲設(shè)備可以檢測內(nèi)存中是否包含需要查詢的key所對應(yīng)的value??蛇x地,本步驟為可選步驟,實際實現(xiàn)時,存儲設(shè)備還可以直接執(zhí)行步驟404,對此并不做限定。步驟403,若包含,則直接返回內(nèi)存中的value。步驟404,若不包含,則在主索引中查詢key所對應(yīng)的邏輯地址。步驟405,在映射表中查詢邏輯地址所對應(yīng)的物理地址。步驟406,讀取查詢到的物理地址中的value至內(nèi)存,并返回內(nèi)存中的該value。在一個示例性例子中,請參考圖5,其示出了存儲設(shè)備中的各部分交互時讀取數(shù)據(jù)的流程圖。如圖5所示,該數(shù)據(jù)讀取方法包括:(1)、accessmethod接收讀請求,讀請求中包含key。(2)、accessmethod觸發(fā)storageengine檢測dram中是否包含key所對應(yīng)的value。(3)、在dram中包含key所對應(yīng)的value時,storageengine返回value至accessmethod。(4)、在dram中不包含key所對應(yīng)的value時,storageengine返回查詢失敗消息至accessmethod。(5)、accessmethod觸發(fā)storageengine根據(jù)讀請求中的key查詢value的邏輯地址。(6)、storageengine在主索引中查詢key所對應(yīng)邏輯地址。(7)、storageengine根據(jù)映射表查詢邏輯地址所對應(yīng)的物理地址。(8)、storageengine讀取查詢到的物理地址中的value至dram。(9)、storageengine返回內(nèi)存中的value。請參考圖6,其示出了本發(fā)明一個實施例提供的kv存儲裝置的框圖,如圖6所示,該kv存儲裝置包括:存儲單元610、更新單元620和合并單元630。其中,存儲單元610,用于執(zhí)行上述步驟201;更新單元620,用于執(zhí)行上述步驟202、步驟204和步驟206合并單元630,用于執(zhí)行上述步驟203和步驟205。綜上所述,本實施例提供的kv存儲裝置,通過將目標(biāo)kv中的value存儲至scm中的不定長頁面,進(jìn)而在滿足第一合并條件時,將不定長頁面中的value合并至scm中的定長頁面,并在滿足第二合并條件時,將scm中的定長頁面中的value合并至ssd中;也即充分使用scm和ssd進(jìn)行混合存儲;解決了現(xiàn)有技術(shù)中kv存儲的性能較低的問題,達(dá)到了可以提高kv存儲的性能的效果。由于可以通過映射表來實現(xiàn)對ssd的管理,而無需使用現(xiàn)有的ftl(flashtranslationlayer,閃存轉(zhuǎn)換層),這就提高了對ssd管理的效率,也即提高了kv存儲的性能。同時,由于ssd的寫入是以塊為單位,因此可以通過erase接口直接實現(xiàn)對塊進(jìn)行擦除,而無需后臺進(jìn)行垃圾回收,進(jìn)一步提高了kv存儲的性能。此外,通過暴露ssd中的塊頁面的更多信息,可以實現(xiàn)壞塊屏蔽,保證了數(shù)據(jù)存儲的安全。需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。盡管在此結(jié)合各實施例對本發(fā)明進(jìn)行了描述,然而,在實施所要求保護(hù)的本發(fā)明過程中,本領(lǐng)域技術(shù)人員通過查看所述附圖、公開內(nèi)容、以及所附權(quán)利要求書,可理解并實現(xiàn)所述公開實施例的其他變化。在權(quán)利要求中,“包括”(comprising)一詞不排除其他組成部分或步驟,“一”或“一個”不排除多個的情況。單個處理器或其他單元可以實現(xiàn)權(quán)利要求中列舉的若干項功能。相互不同的從屬權(quán)利要求中記載了某些措施,但這并不表示這些措施不能組合起來產(chǎn)生良好的效果。本領(lǐng)域技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、服務(wù)器(設(shè)備)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。計算機(jī)程序存儲/分布在合適的介質(zhì)中,與其它硬件一起提供或作為硬件的一部分,也可以采用其他分布形式,如通過internet或其它有線或無線電信系統(tǒng)。本發(fā)明是參照本發(fā)明實施例的方法、服務(wù)器(設(shè)備)和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。盡管結(jié)合具體特征及其實施例對本發(fā)明進(jìn)行了描述,顯而易見的,在不脫離本發(fā)明的精神和范圍的情況下,可對其進(jìn)行各種修改和組合。相應(yīng)地,本說明書和附圖僅僅是所附權(quán)利要求所界定的本發(fā)明的示例性說明,且視為已覆蓋本發(fā)明范圍內(nèi)的任意和所有修改、變化、組合或等同物。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1