本說明書一個或多個實施例涉及數(shù)據(jù)庫,尤其涉及一種數(shù)據(jù)管理方法及裝置、電子設備及存儲介質。
背景技術:
1、隨著云計算的興起和云服務商的發(fā)展,用戶(如公司,醫(yī)院)越來越傾向于將自己的數(shù)據(jù)庫托管到云端進行訪問,以此節(jié)省自己在數(shù)據(jù)庫管理軟件和存儲硬件上的支出。但是云托管服務所帶來的安全風險給云端數(shù)據(jù)庫的落地帶來了巨大的挑戰(zhàn),其中最大的問題是如何避免不受信任的云服務商直接看到用戶數(shù)據(jù)庫的敏感信息。云端加密數(shù)據(jù)庫即是針對此場景及相應的安全風險的解決方案,它要求用戶在上傳數(shù)據(jù)庫到云端服務器之前對數(shù)據(jù)庫進行加密,使得云服務商不能獲取數(shù)據(jù)信息,尤其是敏感信息。
2、但是相關技術中的云端加密數(shù)據(jù)庫對加密數(shù)據(jù)的管理安全性較差,例如在用戶針對云端加密數(shù)據(jù)庫內的加密數(shù)據(jù)進行查詢時,往往會造成數(shù)據(jù)的部分甚至全部信息被云服務商獲取到。
技術實現(xiàn)思路
1、有鑒于此,本說明書一個或多個實施例提供一種數(shù)據(jù)管理方法及裝置、電子設備及存儲介質。
2、為實現(xiàn)上述目的,本說明書一個或多個實施例提供技術方案如下:
3、根據(jù)本說明書一個或多個實施例的第一方面,提出了一種數(shù)據(jù)管理方法,應用于客戶端,所述方法包括:
4、根據(jù)所述待存儲數(shù)據(jù)內數(shù)據(jù)項的數(shù)量,生成多個數(shù)據(jù)塊,其中,每個數(shù)據(jù)塊與所述待存儲數(shù)據(jù)內多個數(shù)據(jù)項相對應,不同數(shù)據(jù)塊所對應的數(shù)據(jù)項不同,所有數(shù)據(jù)塊所對應的數(shù)據(jù)項為所述待存儲數(shù)據(jù)的全部數(shù)據(jù)項;
5、對于每個數(shù)據(jù)塊,在所述數(shù)據(jù)塊內添加路徑信息、公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)、以及對應的多個數(shù)據(jù)項的索引信息,并將所述公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)輸入至預設的prf函數(shù),以得到對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的隨機數(shù);
6、將每個數(shù)據(jù)塊存儲至預設的數(shù)據(jù)樹中與所述數(shù)據(jù)塊內的路徑信息對應的路徑中,將所述待存儲數(shù)據(jù)內每個數(shù)據(jù)項存儲至所述數(shù)據(jù)樹中與所述數(shù)據(jù)項的隨機數(shù)對應的路徑中,并將所述數(shù)據(jù)樹發(fā)送至所述云端服務器進行存儲;
7、根據(jù)查詢條件,以及每個數(shù)據(jù)塊內的索引信息和路徑信息向所述云端服務器獲取對應的數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù)塊和所述查詢條件向所述云端服務器獲取所述查詢條件指向的數(shù)據(jù)項。
8、在本說明書一個可能的實施例中,所述根據(jù)所述待存儲數(shù)據(jù)內數(shù)據(jù)項的數(shù)量,生成多個數(shù)據(jù)塊,包括:
9、基于預設的劃分數(shù)量將待存儲數(shù)據(jù)劃分為多個數(shù)據(jù)片段,并生成與所述多個數(shù)據(jù)片段一一對應的多個數(shù)據(jù)塊,其中,所述待存儲數(shù)據(jù)包括多個數(shù)據(jù)項,所述多個數(shù)據(jù)片段中除最后一個數(shù)據(jù)片段之外的每個數(shù)據(jù)片段均包括所述劃分數(shù)量個數(shù)據(jù)項。
10、在本說明書一個可能的實施例中,所述將所述公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)輸入至預設的prf函數(shù),以得到對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的隨機數(shù),包括:
11、將所述公共計數(shù)、以及對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)和鍵輸入至預設的prf函數(shù),以得到對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的隨機數(shù)。
12、在本說明書一個可能的實施例中,所述將每個數(shù)據(jù)塊存儲至預設的數(shù)據(jù)樹中與所述數(shù)據(jù)塊內的路徑信息對應的路徑中,將所述待存儲數(shù)據(jù)內每個數(shù)據(jù)項存儲至所述數(shù)據(jù)樹中與所述數(shù)據(jù)項的隨機數(shù)對應的路徑中,包括:
13、基于預設算法對每個數(shù)據(jù)塊進行加密,并將每個加密后的數(shù)據(jù)塊存儲至預設的數(shù)據(jù)樹中與所述數(shù)據(jù)塊內的路徑信息對應的路徑中;
14、基于預設算法對所述待存儲數(shù)據(jù)內每個數(shù)據(jù)項進行加密,并將所述待存儲數(shù)據(jù)內每個加密后的數(shù)據(jù)項存儲至所述數(shù)據(jù)樹中與所述數(shù)據(jù)項的隨機數(shù)對應的路徑中。
15、在本說明書一個可能的實施例中,在所述將所述待存儲數(shù)據(jù)內每個數(shù)據(jù)項存儲至所述數(shù)據(jù)樹中與所述數(shù)據(jù)項的隨機數(shù)對應的路徑中之前,所述方法還包括:
16、對于所述待存儲數(shù)據(jù)內每個數(shù)據(jù)項,將所述數(shù)據(jù)項的隨機數(shù)添加至所述數(shù)據(jù)項內。
17、在本說明書一個可能的實施例中,所述方法還包括:
18、將所述數(shù)據(jù)樹中除存儲所述數(shù)據(jù)塊或所述數(shù)據(jù)項的存儲單元之外的其他存儲單元內填充隨機字符串。
19、在本說明書一個可能的實施例中,所述根據(jù)查詢條件,以及每個數(shù)據(jù)塊內的索引信息和路徑信息向所述云端服務器獲取對應的數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù)塊和所述查詢條件向所述云端服務器獲取所述查詢條件指向的數(shù)據(jù)項,包括:
20、根據(jù)查詢條件內的目標鍵,以及每個數(shù)據(jù)塊內的索引信息,確定所述目標數(shù)據(jù)塊的路徑信息和索引信息,其中,所述目標鍵為目標數(shù)據(jù)項的鍵,所述目標數(shù)據(jù)項為所述查詢條件指向的數(shù)據(jù)項,所述目標數(shù)據(jù)塊為所述目標數(shù)據(jù)項對應的數(shù)據(jù)塊;
21、基于所述目標數(shù)據(jù)塊的路徑信息向所述云端服務器獲取路徑,并基于所述目標數(shù)據(jù)塊的索引信息從獲取到的路徑中讀取所述目標數(shù)據(jù)塊;
22、將所述目標數(shù)據(jù)塊內的公共計數(shù)、以及所述目標鍵對應的個人計數(shù)輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù);
23、基于所述目標數(shù)據(jù)項的隨機數(shù)向所述云端服務器獲取路徑,并基于所述目標鍵從獲取到的路徑中讀取所述目標數(shù)據(jù)項。
24、在本說明書一個可能的實施例中,所述方法還包括:
25、將所述目標數(shù)據(jù)塊內與所述目標鍵對應的個人計數(shù)按遞增方式更新,并將所述公共計數(shù)和更新后的個人計數(shù)輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù)之更新結果;
26、將所述目標數(shù)據(jù)項存儲至所述數(shù)據(jù)樹中與所述目標數(shù)據(jù)項的隨機數(shù)之更新結果對應的路徑中。
27、在本說明書一個可能的實施例中,所述在所述數(shù)據(jù)塊內添加公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù),包括:
28、在所述數(shù)據(jù)項內添加第一計數(shù)組和第二計數(shù)組,其中,所述第一計數(shù)組和所述第二計數(shù)組均包括公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù),且所述第一計數(shù)組內每個數(shù)據(jù)項的個體計數(shù)的初始值非0,所述第二計數(shù)組內每個數(shù)據(jù)項的個體計數(shù)的初始值為0;
29、所述將所述公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)輸入至預設的prf函數(shù),以得到對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的隨機數(shù),包括:
30、將所述第一計數(shù)組內公共計數(shù)和每個數(shù)據(jù)項的個體計數(shù)輸入至預設的prf函數(shù),以得到所述數(shù)據(jù)塊對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的隨機數(shù)。
31、在本說明書一個可能的實施例中,所述將所述目標數(shù)據(jù)塊內的公共計數(shù)、以及所述目標鍵對應的個人計數(shù)輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù),包括:
32、響應于所述目標數(shù)據(jù)塊內的第一計數(shù)組中所述目標鍵對應的個人計數(shù)非0,將所述第一計數(shù)組中公共計數(shù)、所述目標鍵對應的個人計數(shù)、以及所述第一計數(shù)組的次序輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù);
33、響應于所述目標數(shù)據(jù)塊內的第一計數(shù)組中所述目標鍵對應的個人計數(shù)為0,將所述第二計數(shù)組中公共計數(shù)、所述目標鍵對應的個人計數(shù)、以及所述第二計數(shù)組的次序輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù)。
34、在本說明書一個可能的實施例中,在所述目標數(shù)據(jù)項的隨機數(shù)基于第一計數(shù)組得到的情況下,所述將所述目標數(shù)據(jù)塊內的與所述目標鍵對應的個人計數(shù)按遞增方式更新,并將所述公共計數(shù)和更新后的個人計數(shù)輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù)之更新結果,包括:
35、響應于所述第一計數(shù)組中所述目標鍵對應的個人計數(shù)未達到預設最大值,將所述第一計數(shù)組中所述目標鍵對應的個人計數(shù)按遞增方式更新,并將所述第一計數(shù)組中公共計數(shù)和更新后的個人計數(shù)輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù)之更新結果;
36、響應于所述第一計數(shù)組中所述目標鍵對應的個人計數(shù)達到預設最大值,且所述第二計數(shù)組中存在非0的個人計數(shù),將所述第一計數(shù)組中所述目標鍵對應的個人計數(shù)置0,將所述第二計數(shù)組中所述目標鍵對應的個人計數(shù)按遞增方式更新,并將所述第二計數(shù)組中公共計數(shù)和更新后的個人計數(shù)輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù)之更新結果;
37、響應于所述第一計數(shù)組中所述目標鍵對應的個人計數(shù)達到預設最大值,且所述第二計數(shù)組中不存在非0的個人計數(shù),將所述第一計數(shù)組中所述目標鍵對應的個人計數(shù)置0,將所述第二計數(shù)組中公共計數(shù)和所述目標鍵對應的個人計數(shù)分別按遞增方式更新,并將所述第二計數(shù)組中更新后的公共計數(shù)和個人計數(shù)輸入至所述prf函數(shù)中,以得到所述目標數(shù)據(jù)項的隨機數(shù)之更新結果。
38、在本說明書一個可能的實施例中,所述方法還包括:
39、響應于所述第一計數(shù)組內公共計數(shù)大于所述第二計數(shù)組內公共計數(shù),且所述第二計數(shù)組內存在非0的個人計數(shù),將所述第二計數(shù)組內至少一個非0的個人計數(shù)置0,將所述第一計數(shù)組內對應的個人計數(shù)按遞增的方式更新,并基于所述第一計數(shù)組內更新的個人計數(shù)對對應的數(shù)據(jù)項的路徑進行更新;
40、響應于所述第一計數(shù)組內公共計數(shù)小于所述第二計數(shù)組內公共計數(shù),且所述第一計數(shù)組內存在非0的個人計數(shù),將所述第一計數(shù)組內至少一個非0的個人計數(shù)置0,將所述第二計數(shù)組內對應的個人計數(shù)按遞增的方式更新,并基于所述第二計數(shù)組內更新的個人計數(shù)對對應的數(shù)據(jù)項的路徑進行更新。
41、在本說明書一個可能的實施例中,所述方法還包括:
42、響應于所述第一計數(shù)組內公共計數(shù)大于所述第二計數(shù)組內公共計數(shù),且所述第二計數(shù)組內不存在非0的個人計數(shù),則隨機訪問所述數(shù)據(jù)樹的一條路徑;
43、響應于所述第一計數(shù)組內公共計數(shù)小于所述第二計數(shù)組內公共計數(shù),且所述第一計數(shù)組內不存在非0的個人計數(shù),則隨機訪問所述數(shù)據(jù)樹的一條路徑。
44、在本說明書一個可能的實施例中,所述方法還包括:
45、更新所述目標數(shù)據(jù)塊的路徑信息,并將所述目標數(shù)據(jù)塊存儲至所述數(shù)據(jù)樹中與所述目標數(shù)據(jù)塊內路徑信息之更新結果對應的路徑中。
46、根據(jù)本說明書一個或多個實施例的第二方面,提出了一種數(shù)據(jù)管理裝置,應用于客戶端,所述裝置包括:
47、生成模塊,用于根據(jù)所述待存儲數(shù)據(jù)內數(shù)據(jù)項的數(shù)量,生成多個數(shù)據(jù)塊,其中,每個數(shù)據(jù)塊與所述待存儲數(shù)據(jù)內多個數(shù)據(jù)項相對應,不同數(shù)據(jù)塊所對應的數(shù)據(jù)項不同,所有數(shù)據(jù)塊所對應的數(shù)據(jù)項為所述待存儲數(shù)據(jù)的全部數(shù)據(jù)項;
48、添加模塊,用于對于每個數(shù)據(jù)塊,在所述數(shù)據(jù)塊內添加路徑信息、公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)、以及對應的多個數(shù)據(jù)項的索引信息,并將所述公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)輸入至預設的prf函數(shù),以得到對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的隨機數(shù);
49、存儲模塊,用于將每個數(shù)據(jù)塊存儲至預設的數(shù)據(jù)樹中與所述數(shù)據(jù)塊內的路徑信息對應的路徑中,將所述待存儲數(shù)據(jù)內每個數(shù)據(jù)項存儲至所述數(shù)據(jù)樹中與所述數(shù)據(jù)項的隨機數(shù)對應的路徑中,并將所述數(shù)據(jù)樹發(fā)送至所述云端服務器進行存儲;
50、查詢模塊,用于根據(jù)查詢條件,以及每個數(shù)據(jù)塊內的索引信息和路徑信息向所述云端服務器獲取對應的數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù)塊和所述查詢條件向所述云端服務器獲取所述查詢條件指向的數(shù)據(jù)項。
51、根據(jù)本說明書一個或多個實施例的第三方面,提出了一種計算機程序產品,包括計算機程序/指令,該計算程序/指令被處理器執(zhí)行時實現(xiàn)第一方面所述方法的步驟。
52、根據(jù)本說明書一個或多個實施例的第四方面,提出了一種電子設備,包括:
53、處理器;
54、用于存儲處理器可執(zhí)行指令的存儲器;
55、其中,所述處理器通過運行所述可執(zhí)行指令以實現(xiàn)如第一方面所述的方法。
56、根據(jù)本說明書一個或多個實施例的第五方面,提出了一種計算機可讀存儲介質,其上存儲有計算機指令,該指令被處理器執(zhí)行時實現(xiàn)如第一方面所述方法的步驟。
57、本說明書的實施例提供的技術方案可以包括以下有益效果:
58、本說明書實施例所提供的數(shù)據(jù)管理方法,首先根據(jù)所述待存儲數(shù)據(jù)內數(shù)據(jù)項的數(shù)量,生成多個數(shù)據(jù)塊,以使每個數(shù)據(jù)塊與所述待存儲數(shù)據(jù)內多個數(shù)據(jù)項相對應,不同數(shù)據(jù)塊所對應的數(shù)據(jù)項不同,所有數(shù)據(jù)塊所對應的數(shù)據(jù)項為所述待存儲數(shù)據(jù)的全部數(shù)據(jù)項;然后對于每個數(shù)據(jù)塊,在所述數(shù)據(jù)塊內添加路徑信息、公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)、以及對應的多個數(shù)據(jù)項的索引信息,并將所述公共計數(shù)和對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的個體計數(shù)輸入至預設的prf函數(shù),以得到對應的多個數(shù)據(jù)項中每個數(shù)據(jù)項的隨機數(shù);再接下來將每個數(shù)據(jù)塊存儲至預設的數(shù)據(jù)樹中與所述數(shù)據(jù)塊內的路徑信息對應的路徑中,將所述待存儲數(shù)據(jù)內每個數(shù)據(jù)項存儲至所述數(shù)據(jù)樹中與所述數(shù)據(jù)項的隨機數(shù)對應的路徑中,并將所述數(shù)據(jù)樹發(fā)送至所述云端服務器進行存儲;最后根據(jù)查詢條件,以及每個數(shù)據(jù)塊內的索引信息和路徑信息向所述云端服務器獲取對應的數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù)塊和所述查詢條件向所述云端服務器獲取所述查詢條件指向的數(shù)據(jù)項。
59、該方法將數(shù)據(jù)項存儲于特定路徑而非特定存儲單元block,能夠在用戶查詢數(shù)據(jù)項時避免云服務商獲知所查詢的數(shù)據(jù)項具體存儲的block,從而避免云服務商通過獲知哪些block而鎖定存儲有數(shù)據(jù)項的block。
60、該方法通過存儲于云端服務器的數(shù)據(jù)塊內的公共計數(shù)和個人計數(shù)來記錄數(shù)據(jù)項所在的路徑,且prf函數(shù)存儲于本地能夠避免數(shù)據(jù)項所在的路徑被泄露,進一步提高數(shù)據(jù)安全性,避免在數(shù)據(jù)查詢過程中泄露信息。尤其是每個數(shù)據(jù)塊可以通過多個個人計數(shù)來記載多個數(shù)據(jù)項所在的路徑,壓縮比例較高,從而提高用戶查找數(shù)據(jù)項所在的路徑之效率,提高數(shù)據(jù)查詢效率;即用戶僅通過在本地存儲prf函數(shù)、以及數(shù)量很少的數(shù)據(jù)塊的索引信息和路徑信息,便達到了數(shù)據(jù)位置保密和查詢效率提升。