复合键与单键追加字符串

Composite key vs Single key append strings

看了很多Hyperledger Fabric的例子,发现了两种实现key的方法:

假设我们有两个字段签证和签证类型。

签证:“1212323”

签证类型: "Student Visa"

我们可以创建一个密钥:

  1. 使用存根提供的CompositeKey函数

key, err := stub.CreateCompositeKey(indexName,[]string{visa, typeVisa}) stub.PutState(key, value)

  1. 连接两个字段

stub.PutState(visa+typeVisa, value)

这两种方法有什么区别? 哪一个在性能方面最好?

通过使用复合键,您将可以访问链代码中的额外方法,例如getStateByPartialCompositeKey,因此您可能会检索所有 "Student Visa"。如果您制作自己的密钥,则必须检索所有签证,然后自己过滤集合,或者编写查询以按属性检索数据(假设您使用的是 CouchDB 状态数据库中的 JSON 数据。)。所以我认为性能差异在于有效检索而不是密钥的原始写入。

CouchDB as the State Database 上的 Fabric 文档中有一个很好的文档涵盖了这些信息。