在Hyperledger Fabric中观察很多示例我发现了两种获得密钥的方法:
假设我们有两个领域的签证和签证类型。
查看:“1212323”
签证类型:“学生签证”
所以我们既不能创建密钥:
key, err := stub.CreateCompositeKey(indexName,[]string{visa, typeVisa})
stub.PutState(key, value)
stub.PutState(visa+typeVisa, value)
这两种方法有什么区别?什么是最好的表现?
通过使用复合键,您可以访问链码中的额外方法,例如getStateByPartialCompositeKey
所以你可以找回所有“学生签证”。如果您创建自己的密钥,则必须检索所有Visas,然后自行过滤集合,或编写查询以按属性检索数据(假设您在CouchDB状态数据库中使用JSON数据)。所以我认为性能差异在于有效的检索而不是密钥的原始写入。
在CouchDB as the State Database的Fabric文档中有一个很好的文档,它涵盖了这些信息。