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...