在Hyperledger Fabric中是否有任何准则为链码设计数据模型?如果我们有复杂的关系,在设计数据模型时有什么技巧吗?
例如,如果要设计Library数据模型。每本书可以有多位作者,每位作者可以有多本书。每本书可以标记为不同的类别。本例中编写链码的最佳方法是什么,以便标签或作者易于查询?
答案 0 :(得分:1)
使用 Hyperledger作曲家,您可以轻松地在资产或参与者之间放置一个RelationShip。使用extends
可以获取超类型所需的所有属性和字段,并从其自己的定义中添加任何其他属性或字段。有关更多信息,您可以点击this链接以获得“模型语言概念”。
例如
请考虑您的示例,创建一个1 Asset
库。例如:
asset Library identified by LibraryId {
o String LibraryId
}
然后还创建一个concept Book
并创建一个Participate Author
,并通过Book概念对其进行扩展。您还可以将添加字段放入任何参与/资产/概念中。
答案 1 :(得分:0)
我建议两种方法。
第一:
如果它是数据数据,您想通过按键使用进行查询:
key, err := stub.CreateCompositeKey(index, []string{key1, key2, key3})
// Skiped
stub.PutState(key, value)
将要查询的其他属性的键放在组合键上,然后使用:
getStateByPartialCompositeKey(objectType, attributes)
通过这种方式,您可以以高性能的方式查询其关键字,从而获得“作者或类别”的图书。
秒:
如果不需要通过属性查询,只需在序列化并置于状态之前将属性名称或id放入模型中即可。