本發(fā)明涉及區(qū)塊鏈,尤其涉及一種面向醫(yī)療數(shù)據(jù)共享的分布式跨片數(shù)據(jù)查詢方法和裝置。
背景技術(shù):
1、分片區(qū)塊鏈?zhǔn)菂^(qū)塊鏈的一種擴(kuò)展技術(shù),旨在提高區(qū)塊鏈的可擴(kuò)展性。分片區(qū)塊鏈的核心思想是將區(qū)塊鏈網(wǎng)絡(luò)拆分為多個并行處理的部分,使得每個分片只負(fù)責(zé)處理特定的交易數(shù)據(jù)或智能合約,從而降低整體網(wǎng)絡(luò)的負(fù)擔(dān)。
2、在分片區(qū)塊鏈中,數(shù)據(jù)查詢的核心問題是如何確定某個數(shù)據(jù)屬于哪個分片(shard)。由于每個分片的各個節(jié)點(diǎn)往往僅存儲自己所在分片內(nèi)的完整數(shù)據(jù),因此,共識節(jié)點(diǎn)們通常很難確認(rèn)一個數(shù)據(jù)具體位于哪個分片。如果要針對每個分片所持有的數(shù)據(jù)進(jìn)行全網(wǎng)同步,會占用大量網(wǎng)絡(luò)帶寬,導(dǎo)致區(qū)塊鏈性能降低。
3、醫(yī)療數(shù)據(jù)共享的分片區(qū)塊鏈場景或醫(yī)療數(shù)據(jù)共享的區(qū)塊鏈場景是一個具有準(zhǔn)入機(jī)制的聯(lián)盟鏈,安全性高于公鏈。在醫(yī)療數(shù)據(jù)共享的分片區(qū)塊鏈場景下,一個城市內(nèi)的區(qū)塊鏈節(jié)點(diǎn)被當(dāng)作一個分片,跨分片賬戶數(shù)據(jù)遷移現(xiàn)象普遍。現(xiàn)有的分片區(qū)塊鏈數(shù)據(jù)查詢方法,需要在每個分片挨個查找,查詢開銷較大,雖然頂層分片節(jié)點(diǎn)(負(fù)責(zé)管理和協(xié)調(diào)各個分片運(yùn)行的節(jié)點(diǎn))可以降低查詢開銷,但是其維護(hù)數(shù)據(jù)結(jié)構(gòu)的開銷較高,需要使用額外的網(wǎng)絡(luò)共識來支撐賬戶遷移導(dǎo)致賬戶所屬的改變,查詢效率較低,且無法應(yīng)用于醫(yī)療數(shù)據(jù)共享的分片區(qū)塊鏈場景中。
4、針對上述問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)思路
1、本說明書實(shí)施例提供了一種面向醫(yī)療數(shù)據(jù)共享的分布式跨片數(shù)據(jù)查詢方法和裝置,以解決現(xiàn)有技術(shù)無法在醫(yī)療數(shù)據(jù)共享的分片區(qū)塊鏈場景中,以較低開銷、較高查詢效率有效實(shí)現(xiàn)分布式跨片數(shù)據(jù)查詢的問題。
2、第一方面,本說明書實(shí)施例提供了一種面向醫(yī)療數(shù)據(jù)共享的分布式跨片數(shù)據(jù)查詢方法,應(yīng)用于分片區(qū)塊鏈中的超級節(jié)點(diǎn),所述超級節(jié)點(diǎn)的權(quán)重大于預(yù)設(shè)權(quán)重閾值,所述超級節(jié)點(diǎn)存儲本地信息,所述方法包括:
3、在接收到被查詢用戶的數(shù)據(jù)遷移請求被成功處理的消息時,更新本地信息;
4、接收查詢用戶發(fā)送的數(shù)據(jù)查詢請求,所述數(shù)據(jù)查詢請求攜帶被查詢用戶的賬戶標(biāo)識;
5、利用更新后的本地信息,根據(jù)所述賬戶標(biāo)識,定位分片區(qū)塊鏈中的目標(biāo)分片并將所述數(shù)據(jù)查詢請求轉(zhuǎn)發(fā)至目標(biāo)分片;
6、接收目標(biāo)分片反饋的針對所述數(shù)據(jù)查詢請求的數(shù)據(jù)查詢結(jié)果。
7、在一些實(shí)施例中,所述超級節(jié)點(diǎn)按照以下方式確定:
8、獲取分片區(qū)塊鏈中各節(jié)點(diǎn)的硬件資源數(shù)據(jù);
9、根據(jù)所述硬件資源數(shù)據(jù),確定各節(jié)點(diǎn)的權(quán)重;
10、將所述權(quán)重與預(yù)設(shè)權(quán)重閾值進(jìn)行比對,從比對結(jié)果中選取權(quán)重大于預(yù)設(shè)閾值的節(jié)點(diǎn)作為超級節(jié)點(diǎn)。
11、在一些實(shí)施例中,所述方法還包括:
12、接收被查詢用戶在第一分片上的數(shù)據(jù)注冊請求,所述數(shù)據(jù)注冊請求攜帶被查詢用戶的注冊地址信息和被查詢用戶的賬戶標(biāo)識;
13、根據(jù)所述注冊地址信息,查詢除第一分片外的其他分片中是否存在與所述注冊地址信息匹配的匹配分片;
14、若否,向所述第一分片發(fā)送允許注冊消息并在本地信息中存儲所述賬戶標(biāo)識與第一分片的映射關(guān)系,所述本地信息包括哈希表或布隆過濾器。
15、在一些實(shí)施例中,所述方法還包括:
16、若是,向所述第一分片發(fā)送禁止注冊消息,并在本地信息中存儲所述賬戶標(biāo)識與匹配分片的映射關(guān)系。
17、在一些實(shí)施例中,所述方法還包括:
18、在未接收到被查詢用戶的數(shù)據(jù)遷移請求被成功處理的消息時,利用本地信息,根據(jù)所述賬戶標(biāo)識,定位分片區(qū)塊鏈中的目標(biāo)分片。
19、在一些實(shí)施例中,所述在接收到被查詢用戶的數(shù)據(jù)遷移請求被成功處理的消息時,更新本地信息,包括:
20、接收被查詢用戶發(fā)送的數(shù)據(jù)遷移請求,所述數(shù)據(jù)遷移請求包括從第一分片遷移至第二分片;
21、查詢是否接收過所述第二分片發(fā)送的遷移成功消息;
22、若否,向所述第一分片發(fā)送允許遷移消息并在接收到第二分片發(fā)送的遷移成功消息時,將所述遷移成功消息作為被查詢用戶的數(shù)據(jù)遷移請求被成功處理的消息,并在本地信息中存儲所述賬戶標(biāo)識與第二分片的映射關(guān)系。
23、在一些實(shí)施例中,所述更新后的本地信息包括更新后的哈希表或更新后的布隆過濾器,所述更新后的哈希表包括更新后的鍵值對,所述鍵值對中的鍵為被查詢用戶的賬戶標(biāo)識,值為對應(yīng)的第二分片,所述更新后的布隆過濾器中包括多個更新后的哈希函數(shù),各個更新后的哈希函數(shù)用于計算所述賬戶標(biāo)識對應(yīng)賬戶在第二分片上的各個哈希值,并確保各個哈希值的取值為第一數(shù)值。
24、在一些實(shí)施例中,所述利用更新后的本地信息,根據(jù)所述被查詢用戶標(biāo)識,定位分片區(qū)塊鏈中的目標(biāo)分片,包括:
25、在更新后的本地信息包括更新后的哈希表時,根據(jù)賬戶標(biāo)識查找哈希表中與所述賬戶標(biāo)識匹配的鍵,并確定所述鍵值對應(yīng)的值,將所述值對應(yīng)的第二分片作為目標(biāo)分片;
26、在更新后的本地信息包括更新后的布隆過濾器時,將賬戶標(biāo)識遍歷各個分片中的布隆過濾器,利用布隆過濾器中的各個哈希函數(shù)計算賬戶標(biāo)識對應(yīng)賬戶在各個分片對應(yīng)的各個哈希值,確定各個哈希值均取第一數(shù)值時所對應(yīng)的分片作為目標(biāo)分片。
27、第二方面,本說明書實(shí)施例還提供了一種面向醫(yī)療數(shù)據(jù)共享的分布式跨片數(shù)據(jù)查詢裝置,應(yīng)用于分片區(qū)塊鏈中的超級節(jié)點(diǎn),所述超級節(jié)點(diǎn)的權(quán)重大于預(yù)設(shè)權(quán)重閾值,所述超級節(jié)點(diǎn)存儲本地信息,所述裝置包括:
28、本地信息更新模塊,用于在接收到被查詢用戶的數(shù)據(jù)遷移請求被成功處理的消息時,更新本地信息;
29、查詢請求接收模塊,用于接收查詢用戶發(fā)送的數(shù)據(jù)查詢請求,所述數(shù)據(jù)查詢請求攜帶被查詢用戶的賬戶標(biāo)識;
30、定位模塊,用于利用更新后的本地信息,根據(jù)所述賬戶標(biāo)識,定位分片區(qū)塊鏈中的目標(biāo)分片節(jié)點(diǎn)并將所述數(shù)據(jù)查詢請求轉(zhuǎn)發(fā)至目標(biāo)分片節(jié)點(diǎn);
31、反饋模塊,用于接收目標(biāo)分片反饋的針對所述數(shù)據(jù)查詢請求的數(shù)據(jù)查詢結(jié)果。
32、第三方面,本說明書實(shí)施例還提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序指令,所述計算機(jī)程序指令被處理器執(zhí)行時實(shí)現(xiàn)上述面向醫(yī)療數(shù)據(jù)共享的分布式跨片數(shù)據(jù)查詢方法的步驟。
33、本說明書實(shí)施例提供了一種面向醫(yī)療數(shù)據(jù)共享的分布式跨片數(shù)據(jù)查詢方法和裝置,所述方法應(yīng)用于分片區(qū)塊鏈中的超級節(jié)點(diǎn),所述超級節(jié)點(diǎn)的權(quán)重大于預(yù)設(shè)權(quán)重閾值,所述超級節(jié)點(diǎn)存儲本地信息。首先,在接收到被查詢用戶的數(shù)據(jù)遷移請求被成功處理的消息時,更新本地信息。然后,接收查詢用戶發(fā)送的數(shù)據(jù)查詢請求,所述數(shù)據(jù)查詢請求攜帶被查詢用戶的賬戶標(biāo)識。再利用更新后的本地信息,根據(jù)所述賬戶標(biāo)識,定位分片區(qū)塊鏈中的目標(biāo)分片并將所述數(shù)據(jù)查詢請求轉(zhuǎn)發(fā)至目標(biāo)分片。最后,接收目標(biāo)分片反饋的針對所述數(shù)據(jù)查詢請求的數(shù)據(jù)查詢結(jié)果。本說明書實(shí)施例中,超級節(jié)點(diǎn)可以在接收到被查詢用戶的數(shù)據(jù)遷移請求被成功處理的消息時,更新自身的本地信息,無需使用額外的網(wǎng)絡(luò)共識來支撐賬戶遷移導(dǎo)致賬戶所屬的改變。在接收到查詢用戶發(fā)送的數(shù)據(jù)查詢請求時,可以利用更新后的本地信息,根據(jù)數(shù)據(jù)查詢請求攜帶的被查詢用戶的賬戶標(biāo)識,定位分片區(qū)塊鏈中的目標(biāo)分片,再將數(shù)據(jù)查詢請求轉(zhuǎn)發(fā)至目標(biāo)分片,使目標(biāo)分片進(jìn)行數(shù)據(jù)查詢再向超級節(jié)點(diǎn)反饋數(shù)據(jù)查詢結(jié)果,可以有效降低數(shù)據(jù)查詢開銷,提高數(shù)據(jù)查詢效率。