Hyperledger Fabric 復合鍵使用

2021-10-05 11:47:55 字數 2925 閱讀 3797

hyperledger fabric 的復合鍵是基於多個列組合成乙個復合鍵,並基於復合鍵存資料,基於復合鍵或部分列快速取資料。復合鍵將會使用復合鍵的型別名及多個列資料、"\u0000"生成實際使用的key。

示例:createcompositekey("id~version~min~sub", string)

型別名:id~version~min~sub

引數:id:1,version:1,min:3,sub:1

生成的復合鍵是:"\u0000id~version~min~sub\u00001\u00001\u00003\u00001\u0000"

主要函式介紹

①建立復合鍵createco

createcompositekey(objecttype string, attributes string) (string, error)
引數:

objecttype 復合鍵型別名

attributes  復合鍵使用子鍵

返回值:(復合鍵,異常)

②基於復合鍵查詢

getstatebypartialcompositekey(objecttype string, keys string) (statequeryiteratorinte***ce, error)
引數:

objecttype 復合鍵型別名

keys 查詢使用的子鍵集合(必須是根據建立復合鍵的順序新增部門子鍵,不能基於後面的子鍵查詢)

返回值:(查詢結果迭代器,異常)

③拆分鍵

splitcompositekey(compositekey string) (string, string, error)
引數:

compositekey 復合鍵

返回值:(復合鍵型別名,包含的子鍵,異常)

④頁查詢

getstatebypartialcompositekeywithpagination(objecttype string, keys string,

pagesize int32, bookmark string) (statequeryiteratorinte***ce, *pb.queryresponsemetadata, error)

引數:

objecttype 復合鍵型別名

keys 查詢使用的子鍵集合

pagesize 查詢頁大小

bookmark 書籤

返回值:

statequeryiteratorinte***ce    返回內容的迭代器

queryresponsemetadata      兩個中重要屬性,①本次返回物件數量②下乙個物件的復合主鍵

書籤為空時,返回基於objecttype、keys查詢結果的前pagesize個。

書籤不為空時,返回集的第乙個值的key是書籤的值

示例:①生成復合鍵,並已復合鍵儲存資料

func (t *testchaincode) invoke(stub shim.chaincodestubinte***ce, args string) pb.response 

id, version, minorversion, subversion, content := args[0], args[1], args[2], args[3], args[4]

key, err := stub.createcompositekey(typename, string)

if err != nil

user := user

buser, err := json.marshal(user)

stub.putstate(key, buser)

return shim.success(nil)

}

②根據子鍵查詢,並解析復合鍵

func (t *testchaincode) query(stub shim.chaincodestubinte***ce, args string) pb.response 

queryresult, _ := stub.getstatebypartialcompositekey(typename, string)

for queryresult.hasnext()

buserlist := parsequeryresult(queryresult)

return shim.success(buserlist)

}

③頁查詢

func (t *testchaincode) querypage(stub shim.chaincodestubinte***ce, args string) pb.response 

if len(args) == 3

queryresult, metadata, _ := stub.getstatebypartialcompositekeywithpagination(typename, args[:2], 2, mark)

buserlist := parsequeryresult(queryresult)

count := metadata.getfetchedrecordscount()

nextmark := metadata.getbookmark()

var result = map[string]string{}

result["data"] = string(buserlist)

result["count"] = string(count)

result["nextmark"] = nextmark

bresult, _ := json.marshal(result)

return shim.success(bresult)

}

hibernate 自然鍵 和 復合自然鍵

必須提醒你 當應用程式繼承現有的遺留資料庫schema時,通常應該盡可能地對現有的schema少做一些改變。你 對schema所做的每一處改變都可能破壞訪問資料庫的其他現有應用程式。現有資料的遷移可能很昂貴,這也是你要考慮 的問題。一般來說,構建乙個新的應用程式不可能不對現有的資料模型做任何改變 新...

POWER BI實現復合鍵關聯

power bi 實現復合鍵關聯 在power bi中可以實現表之間的關聯操作,例如 表1 表2 表1和表2,可以用學生做關聯 關聯後的效果如下 再增加乙個表 表3 需要把教師也做關聯,這時由於,班級和課程不在乙個表中,power bi中不能直接建立關聯 這時需要先將表一和表二建立聯絡後,再用復合鍵...

復合主鍵對外鍵的影響

表結構1 table t1 create table create table t1 a int 11 not null default 0 b int 11 not null default 0 c int 11 not null default 0 name varchar 20 default...