复合键与单键追加字符串
Composite key vs Single key append strings
看了很多Hyperledger Fabric的例子,发现了两种实现key的方法:
假设我们有两个字段签证和签证类型。
签证:“1212323”
签证类型: "Student Visa"
我们可以创建一个密钥:
- 使用存根提供的CompositeKey函数
key, err := stub.CreateCompositeKey(indexName,[]string{visa, typeVisa})
stub.PutState(key, value)
- 连接两个字段
stub.PutState(visa+typeVisa, value)
这两种方法有什么区别?
哪一个在性能方面最好?
通过使用复合键,您将可以访问链代码中的额外方法,例如getStateByPartialCompositeKey
,因此您可能会检索所有 "Student Visa"。如果您制作自己的密钥,则必须检索所有签证,然后自己过滤集合,或者编写查询以按属性检索数据(假设您使用的是 CouchDB 状态数据库中的 JSON 数据。)。所以我认为性能差异在于有效检索而不是密钥的原始写入。
CouchDB as the State Database 上的 Fabric 文档中有一个很好的文档涵盖了这些信息。
看了很多Hyperledger Fabric的例子,发现了两种实现key的方法:
假设我们有两个字段签证和签证类型。
签证:“1212323”
签证类型: "Student Visa"
我们可以创建一个密钥:
- 使用存根提供的CompositeKey函数
key, err := stub.CreateCompositeKey(indexName,[]string{visa, typeVisa})
stub.PutState(key, value)
- 连接两个字段
stub.PutState(visa+typeVisa, value)
这两种方法有什么区别? 哪一个在性能方面最好?
通过使用复合键,您将可以访问链代码中的额外方法,例如getStateByPartialCompositeKey
,因此您可能会检索所有 "Student Visa"。如果您制作自己的密钥,则必须检索所有签证,然后自己过滤集合,或者编写查询以按属性检索数据(假设您使用的是 CouchDB 状态数据库中的 JSON 数据。)。所以我认为性能差异在于有效检索而不是密钥的原始写入。
CouchDB as the State Database 上的 Fabric 文档中有一个很好的文档涵盖了这些信息。