System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及計算機,特別涉及一種數據處理方法、計算機設備和存儲介質。
技術介紹
1、目前,經常會基于樹形結構進行數據存儲。具體地,在接收到待存儲的鍵值對(即key-value)后,先根據該鍵值對中的key值,在樹中由根節點向下逐層索引至一個葉子節點。然后在這個葉子節點的數據中添加該鍵值對,以更新這個葉子節點,再根據更新后的葉子節點向上逐層更新節點,直至更新至根節點后完成對樹的更新。之后,將更新后的樹中每個節點的數據存儲至磁盤,以完成對樹的持久化。然而,這種方式的數據存儲效率較低。
技術實現思路
1、本申請提供了一種數據處理方法、計算機設備和存儲介質,可以提高數據存儲效率。所述技術方案如下:
2、第一方面,提供了一種數據處理方法,所述方法包括:
3、接收數據存儲請求,所述數據存儲請求攜帶待存儲的鍵值對,所述鍵值對中的key值全局有序;
4、根據所述鍵值對中key值的順序,生成包含有一個或多個鍵值對的新文件,存儲所述新文件;其中,包含有所述鍵值對的所有文件的文件標識全局有序;
5、在目標樹中的最后一個葉子節點之后增加新葉子節點,根據所述新葉子節點更新所述目標樹,所述新葉子節點包含所述新文件的文件標識、所述新文件中所有鍵值對中的最小key值和最大key值
6、在本申請中,在進行數據存儲時,無需在目標樹中進行索引,可以直接生成新文件進行存儲,且據此可以直接在目標樹中增加新葉子節點來更新目標樹,如此,可以提高數據存儲效率。
8、可選地,所述目標樹中的分支節點包括子節點列表,所述子節點列表包括所述分支節點的每個子節點中的最小key值和最大key值。
9、可選地,所述目標樹位于內存中,所述文件存儲于磁盤中,所述方法還包括:
10、在重啟后,根據所述磁盤中存儲的所有文件,在所述內存中重新構建所述目標樹。
11、可選地,所述鍵值對包括目標鍵值對,所述目標鍵值對中的key值包括區塊號和所述區塊號所標識的區塊內的key值,所述目標鍵值對中的value值為所述區塊內的value值。
12、可選地,所述根據所述鍵值對中key值的順序,生成包含有一個或多個鍵值對的新文件,存儲所述新文件,包括:
13、每接收到一個所述數據存儲請求,按照所述數據存儲請求攜帶的所有鍵值對中key值的順序,將所述數據存儲請求攜帶的所有鍵值對保存在內存中;
14、若所述內存中按序保存的一個或多個鍵值對的總數據量與預設數據量之間的差值小于或等于預設差值,則生成包含有所述一個或多個鍵值對的新文件;
15、將所述新文件存儲至磁盤中。
16、可選地,所述根據所述新葉子節點更新所述目標樹,包括:
17、根據所述新葉子節點在所述目標樹中向上逐層更新節點,直至更新至根節點;其中,在向上逐層更新節點的過程中,若需要對所述目標樹中的原有節點進行更新,則對所述原有節點加寫鎖,在更新完后釋放寫鎖。
18、可選地,所述方法還包括:
19、接收第一數據查詢請求,所述第一數據查詢請求攜帶目標key值;
20、確定所述目標key值在所述目標樹中索引到的第一葉子節點;
21、從所述第一葉子節點中的文件標識所標識的文件中獲取所述目標key值所屬的鍵值對中的value值。
22、可選地,所述確定所述目標key值在所述目標樹中索引到的第一葉子節點,包括:
23、根據所述目標key值在所述目標樹中由根節點向下逐層索引節點,直至索引到所述第一葉子節點;
24、其中,在向下逐層索引節點的過程中,每索引到一個節點,對所述一個節點加讀鎖,根據所述一個節點和所述目標key值索引下一個節點,在索引到所述下一個節點后釋放所述一個節點的讀鎖;所述第一葉子節點的讀鎖在獲取到所述第一葉子節點中的文件標識后釋放。
25、可選地,所述目標樹為n叉樹,所述n為大于或等于2的整數,所述方法還包括:
26、接收第二數據查詢請求,所述第二數據查詢請求攜帶目標文件標識;
27、根據所述目標文件標識、所述n和所述目標樹的樹高,確定所述目標樹中的索引信息;
28、根據所述索引信息在所述目標樹中索引第二葉子節點,所述第二葉子節點為包含所述目標文件標識的葉子節點。
29、可選地,所述根據所述目標文件標識、所述n和所述目標樹的樹高,確定所述目標樹中的索引信息,包括:
30、為所述目標樹的根節點加讀鎖,所述目標樹的樹高為m,所述m為大于或等于2的整數;
31、確定所述目標文件標識對應的目標數值,所述目標文件標識對應的目標數值為所述目標文件標識所標識的文件在所有文件中的排序序號;
32、令i為所述m,令指定參數為所述目標文件標識對應的目標數值;
33、將所述指定參數除以所述n,得到商和余數;
34、將所述余數作為第i層的索引信息,所述第i層的索引信息用于指示需索引的所述第i層的節點在父節點的所有子節點中的排序序號;
35、若i不為2,則令i=i-1,令所述指定參數為所述商,重新執行所述將所述指定參數除以所述n,得到商和余數的步驟及后續步驟,直至i為2為止;
36、若i為2,則索引所述根節點,在索引到所述根節點后釋放所述根節點的讀鎖。
37、第二方面,本申請提供了一種數據處理裝置,所述裝置包括:
38、第一接收模塊,用于接收數據存儲請求,所述數據存儲請求攜帶待存儲的鍵值對,所述鍵值對中的key值全局有序;
39、生成模塊,用于根據所述鍵值對中key值的順序,生成包含有一個或多個鍵值對的新文件,存儲所述新文件;其中,包含有所述鍵值對的所有文件的文件標識全局有序;
40、更新模塊,用于在目標樹中的最后一個葉子節點之后增加新葉子節點,根據所述新葉子節點更新所述目標樹,所述新葉子節點包含所述新文件的文件標識、所述新文件中所有鍵值對中的最小key值和最大key值。
41、第三方面,提供了一種計算機設備,所述計算機設備包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,所述計算機程序被所述處理器執行時實現上述第一方面所述的數據處理方法。
42、第四方面,提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有計算機程序,所述計算機程序被處理器執行時實現上述第一方面所述的數據處理方法。
43、第五方面,提供了一種包含指令的計算機程序產品,當其在計算機上運行時,使得計算機執行上述第一方面所述的數據處理方法的步驟。
44、可以理解的是,上述第二方面、第三方面、第四方面、第五方面的有益效果可以參見上述第一方面中的相關描述,在此不再贅述。
本文檔來自技高網...【技術保護點】
1.一種數據處理方法,其特征在于,所述方法包括:
2.如權利要求1所述的方法,其特征在于,所述目標樹中的分支節點包括子節點列表,所述子節點列表包括所述分支節點的每個子節點中的最小key值和最大key值。
3.如權利要求1所述的方法,其特征在于,所述目標樹位于內存中,所述文件存儲于磁盤中,所述方法還包括:
4.如權利要求1所述的方法,其特征在于,所述鍵值對包括目標鍵值對,所述目標鍵值對中的key值包括區塊號和所述區塊號所標識的區塊內的key值,所述目標鍵值對中的value值為所述區塊內的value值。
5.如權利要求1至4任一所述的方法,其特征在于,所述根據所述鍵值對中key值的順序,生成包含有一個或多個鍵值對的新文件,存儲所述新文件,包括:
6.如權利要求1至4任一所述的方法,其特征在于,所述根據所述新葉子節點更新所述目標樹,包括:
7.如權利要求1至4任一所述的方法,其特征在于,所述方法還包括:
8.如權利要求7所述的方法,其特征在于,所述確定所述目標key值在所述目標樹中索引到的第一葉子節點,
9.如權利要求1至4任一所述的方法,其特征在于,所述目標樹為n叉樹,所述n為大于或等于2的整數,所述方法還包括:
10.如權利要求9所述的方法,其特征在于,所述根據所述目標文件標識、所述n和所述目標樹的樹高,確定所述目標樹中的索引信息,包括:
11.一種計算機設備,其特征在于,所述計算機設備包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,所述計算機程序被所述處理器執行時實現如權利要求1至10任一項所述的方法。
12.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質存儲有計算機程序,所述計算機程序被處理器執行時實現如權利要求1至10任一項所述的方法。
...【技術特征摘要】
1.一種數據處理方法,其特征在于,所述方法包括:
2.如權利要求1所述的方法,其特征在于,所述目標樹中的分支節點包括子節點列表,所述子節點列表包括所述分支節點的每個子節點中的最小key值和最大key值。
3.如權利要求1所述的方法,其特征在于,所述目標樹位于內存中,所述文件存儲于磁盤中,所述方法還包括:
4.如權利要求1所述的方法,其特征在于,所述鍵值對包括目標鍵值對,所述目標鍵值對中的key值包括區塊號和所述區塊號所標識的區塊內的key值,所述目標鍵值對中的value值為所述區塊內的value值。
5.如權利要求1至4任一所述的方法,其特征在于,所述根據所述鍵值對中key值的順序,生成包含有一個或多個鍵值對的新文件,存儲所述新文件,包括:
6.如權利要求1至4任一所述的方法,其特征在于,所述根據所述新葉子節點更新所述目標樹,包括:
7.如...
【專利技術屬性】
技術研發人員:郭威,黃方蕾,金鵬,張珂杰,詹士瀟,
申請(專利權)人:杭州趣鏈科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。