alue數據寫入時,都是先寫入內存空間,再寫入最高層(即,level 0)的持久化存儲空間(如,HDD或SSD),再逐漸往較低層次(例如,level 1)的持久化存儲空間寫入,故存儲空間的層次越高,數據就越新;在數據讀取時,也是高層次的存儲空間往低層次的存儲空間找,一層找不到再依次到下一層逐層查找,因此,存儲在越高層次的存儲空間越快能被讀取到。并且,LSM Tree中的數據采用分層存儲的方式處理,key值相同的數據可以存儲在不同層的存儲空間中,在key值相同的數據中,存儲在較高層的數據相對于較低層的數據為新數據,存儲在較低層的數據相對于較高層的數據為舊數據。
[0068]為了給新寫入的數據騰出存儲空間,當內存空間或高層存儲空間中的數據超過一定閾值時,就會觸發(fā)LSM Tree中的compact機制,compact的流程為:比較不同層次的存儲空間,將key值相同的數據中的舊數據刪除,并將key值相同的新數據移至低一層的存儲空間(如,若新數據原本在level 1, compact過后轉移至level 2)。
[0069]在實際應用中,存在一些會被經常使用到的數據(稱為熱數據),這些熱數據在進行compact時可能會被移動到較低層的存儲空間中,從而導致這些熱數據的讀取變得較為緩慢,本發(fā)明實施例中的數據處理方法為解決上述問題提供了相應的方案,請參閱圖2,本發(fā)明實施例中數據處理方法的一個實施例包括:
[0070]201、在LSM Tree的第一目標層對應的存儲空間中確定待合并的第一數據;
[0071]數據處理裝置在LSM Tree的第一目標層對應的存儲空間中確定待合并的第一數據,所述第一數據的key值為第一 key值,具體的,所述第一目標層為LSM Tree中當前正在進行數據合并的目標層,所述第一數據為所述第一目標層中待合并數據。
[0072]當內存空間或上層存儲空間中的數據超過一定閾值時,就會觸發(fā)LSM Tree中的數據合并機制,在進行數據合并時,數據處理裝置會先確定當前待合并的數據(即在第一目標層對應的存儲空間中確定待合并的第一數據),然后再自上往下逐層的對各層的各個數據進行遍歷,查找與當待合并的第一數據,有相同key值的第二數據進行合并。
[0073]在本發(fā)明實施例中,所述數據處理裝置為具備本發(fā)明實施例中數據處理功能的設備;具體可以為獨單的物理設備,包括多個物理模塊;也可以為加載在計算機上的軟件程序,或一個軟件中的功能模塊,或單獨軟件的形式或以插件的形式存在。
[0074]202、在與所述LSM Tree的第二目標層對應的存儲空間中確定key值為所述第一key值的第二數據;
[0075]數據處理裝置在與所述LSM Tree的第二目標層對應的存儲空間中確定key值為所述第一 key值的第二數據,其中在所述LSM Tree結構中,所述第二目標層的層級低于所述第一目標層的層級,所述第一目標層對應的存儲空間的訪問速度不低于所述第二目標層對應的存儲空間的訪問速度。例如,第一目標層可以是Level 3,第二目標層可以是Level
4。需要說明的是,在本發(fā)明實施例的LSM Tree結構中,層級越高,該層級對應的存儲空間的訪問速度越快。例如,Level 0的層級高于Level 1, Level 0對應的存儲空間的訪問速度比Level 1對應的存儲空間的訪問速度快。
[0076]所述第二數據為所述第二目標層中的數據;需要說明的是,所述“第一”和“第二”僅是用于區(qū)分兩個不同層次的存儲空間,或兩個具有不同value的數據,不代表具體實現中的名稱或物理層次。
[0077]203、確定所述第一數據為最近接收的熱數據;
[0078]數據處理裝置確定所述第一數據為最近接收的熱數據。具體的,在本發(fā)明實施例中,可以使用數據過濾器根據熱度對所述存儲系統中各個數據進行篩選,得到熱度值達到相應熱度閾值的數據。
[0079]具體的,所述熱度可以表現為數據的訪問次數,所述熱度值為根據所述數據的訪問次數而統計得到的數值;所述熱度閾值可以為技術人員根據經驗和實際需求確定的一個數值。
[0080]具體的,所述數據的訪問次數可以為數據的寫入次數,也可以為數據的讀取次數;進一步的,所述數據的訪問次數還可以同時包括數據的寫入次數和讀取次數。
[0081]示例性的,所述數據過濾器具體可以為:多組布隆過濾器(Multi Bloom Filter)。
[0082]204、從所述第二目標層對應的存儲空間中刪除所述第二數據;
[0083]數據處理裝置從所述第二目標層對應的存儲空間中刪除所述第二數據,節(jié)省存儲系統中的存儲空間。
[0084]205、將所述第一數據從所述第一目標層對應的存儲空間遷移到所述第二目標層對應的存儲空間中;
[0085]數據處理裝置將所述第一數據從所述第一目標層對應的存儲空間遷移到所述第二目標層對應的存儲空間中,為新寫入所述存儲系統中的數據騰出上層的存儲空間。
[0086]在本發(fā)明實施例中步驟204和步驟205為LSM Tree的compact流程中,將具有相同key值的兩個數據進行合并的步驟。
[0087]206、將所述第一數據重新寫入所述存儲系統的內存空間。
[0088]數據處理裝置將所述第一數據重新寫入所述存儲系統的內存空間。
[0089]當確認所述第一數據確定為熱數據之后,說明所述第一數據會被經常使用到,若被LSM Tree的數據合并機制寫入到較低層次的存儲空間中,讀取速度將受到很大影響,因此,在本發(fā)明實施例中,將所述第一數據重新寫入所述存儲系統的內存空間,以便于熱數據能被快速讀取到。
[0090]在本發(fā)明實施例中,提供了熱數據的確定方法,當在LSM Tree的存儲空間中進行第一數據的數據合并時,若確定所述第一數據為最近接收的熱數據,則將所述第一數據重新寫入所述存儲系統的內存空間,使得使用頻率高的熱數據訪問速度加快,從而提升了系統性能。
[0091]下面對本發(fā)明實施例中數據處理方法進行詳細描述,請參閱圖3,本發(fā)明實施例中數據處理方法的另一個實施例包括:
[0092]301、在LSM Tree的第一目標層對應的存儲空間中確定待合并的第一數據;
[0093]數據處理裝置在LSM Tree的第一目標層對應的存儲空間中確定待合并的第一數據,具體的,所述第一目標層為LSM Tree中當前正在進行數據合并的目標層,所述第一數據為所述第一目標層中待合并數據。
[0094]302、在與所述LSM Tree的第二目標層對應的存儲空間中確定key值為所述第一key值的第二數據;
[0095]數據處理裝置在與所述LSM Tree的第二目標層對應的存儲空間中確定key值為所述第一 key值的第二數據,其中在所述LSM Tree結構中,所述第二目標層的層級低于所述第一目標層的層級,所述第一目標層對應的存儲空間的訪問速度不低于所述第二目標層對應的存儲空間的訪問速度。
[0096]所述第二數據為所述第二目標層中的數據;需要說明的是,所述“第一”和“第二”僅是用于區(qū)分兩個不同層次的存儲空間,或兩個具有不同value的數據,不代表具體實現中的名稱或物理層次。
[0097]303、在哈希鏈表查找所述第一 key值;
[0098]數據處理裝置在哈希鏈表查找所述第一 key值,所述哈希鏈表用于根據接收的目標數據記錄并維護所述第一 key值的熱度值,所述目標數據包括key值為所述第一 key值的數據。
[0099]具體的,若在哈希鏈表查找所述第一 key值,則確定key值為所述第一 key值的數據為熱數據,繼續(xù)執(zhí)行步驟304對所述第一數據的寫入所述存儲系統的次序進行判斷。
[0100]示例性的,在實際應用中,數據處理裝置會建立數據過濾器,用于對key值相同的數據進行熱度統計并篩選,當key值相同的數據的熱度值達到預設的熱度閾值時,就在所述哈希鏈表中記錄該數據對應的key值、序列號以及熱度值。示例性的,所述數據過濾器具體可以為:多組布隆過濾器。在本發(fā)明實施例中,所述第一 key值對應的序列號為最近接收的具有第一 key值的數據的序列號。
[0101]在本發(fā)明實施例中,第一數據的key值為第一 key值,包括key值為所述第一 key值的數據為目標數據;在所述數據過濾器篩選出所述目標數據時,所述哈希鏈表則接收所述數據過濾器選出的所述目標數據的記錄,并維護所述第一 key值的熱度值。
[0102]具體的,所述熱度值為根據所述數據的訪問次數而統計得到的數值;所述熱度閾值可以為技術人員根據經驗和實際需求確定的一個數值。所述數據的訪問次數可以為數據的寫入次數,也可以為數據的讀取次數;進一步的,所述數據的訪問次數還可以同時包括數據的寫入次數和讀取次數。
[0103]示例性的,如圖5所示,所述哈希鏈表中可以包括有多組元素,其中,每組元素中記錄有一個key值,該key值對應的序列號,以及該key值對應的熱度值計數器。所述序列號用于表示一個key值對應的數據在所述存儲系統的寫入順序。
[0104]304、判斷序列號是否相同;
[0105]數據處理裝置在所述哈希鏈表中所述第一 key值對應的序列號與所述第一數據的序列號是否相等,若是,則確定所述第一數據最近接收的熱數據,執(zhí)行步驟305 ;若否,則執(zhí)行步驟308,確定所述第一數據不是最近接收的熱數據。其中,所述哈希鏈表中所述第一key值對應的序列號為最近接收的具有第一 key值的數據的序列號。
[0106]在本發(fā)明實施例中,由于哈希鏈表維護的都是最新寫入的熱數據,因此,若第一數據的序列號與哈希鏈表熱數據對應的序列號不相同,則說明所述第一數據為舊數據,可以不執(zhí)行重新寫入內存空間的步驟。
[0107]305、從所述第二目標層對應的存儲空間中刪除所述第二數據;
[0108]數據處理裝置從所述第二目標層對應的存儲空間中刪除所述第二數據,節(jié)省存儲系統中的存儲空間。
[0109]306、將所述第一數據從所述第一目標層對應的存儲空間遷移到所述第二目標層對應的存儲空間中;
[0110]數據處理裝置將所述第一數據從所述第一目標層對應的存儲空間遷移到所述第二目標層對應的存儲空間中,為新寫入所述存儲系統中的數據騰出上層的存儲空間。
[0111]在本發(fā)明實施例中步驟305和步驟306為LSM Tree的compact流程中,將具有相同key值的兩個數據進行合并的步驟。
[0112]307、將所述第一數據重新寫入所述存儲系統的內存空間;
[0113]數據處理裝置將所述第一數據重新寫入所述存儲系統的內存空間。
[0114]當確認所述第一數據確定為熱數據之后,說明所述第一數據會被經常使用到,若被LSM Tree的數據合并機制寫入到較低層次的存儲空間中,讀取速度將受到很大影響,因此,在本發(fā)明實施例中,將所述第一數據重新寫入所述存儲系統的內存空間,以便于熱數據能被快速讀取到。
[0115]可選的,在實際應用中,在由于數據在較高層次的讀取速度并不慢,因此,可以當所述第一目標層的層級低于level N時,才執(zhí)行將所述第一數據重新寫入所