Hyperledger fabric Hyperledger结构链码数据模型

Hyperledger fabric Hyperledger结构链码数据模型,hyperledger-fabric,hyperledger,blockchain,Hyperledger Fabric,Hyperledger,Blockchain,在Hyperledger结构中,是否有设计链码数据模型的指导原则?如果我们有复杂的关系,在设计数据模型时有什么提示吗 例如,如果我想设计库数据模型。每本书可以有多个作者,每个作者可以有多本书。每本书都可以标记为不同的类别。为本例编写链码的最佳方法是什么,这样就可以方便地按标记或作者进行查询 使用Hyperledger composer您可以轻松地在资产或参与者之间建立关系。使用extends可以获取超级类型所需的所有属性和字段,并从其自己的定义中添加任何其他属性或字段。有关更多信息,请参见模型语

在Hyperledger结构中,是否有设计链码数据模型的指导原则?如果我们有复杂的关系,在设计数据模型时有什么提示吗


例如,如果我想设计库数据模型。每本书可以有多个作者,每个作者可以有多本书。每本书都可以标记为不同的类别。为本例编写链码的最佳方法是什么,这样就可以方便地按标记或作者进行查询

使用Hyperledger composer您可以轻松地在资产或参与者之间建立关系。使用
extends
可以获取超级类型所需的所有属性和字段,并从其自己的定义中添加任何其他属性或字段。有关更多信息,请参见模型语言概念的链接

比如说

以您的示例为例,创建一个1
Asset
库。例:

 asset Library identified by LibraryId {
      o String LibraryId
  }

然后还创建一本
概念书
,并创建一本
参与作者
,该书由图书概念扩展而成。您还可以将添加字段放在任何参与/资产/概念中

我建议两种方法

第一名:

如果是要按键进行查询的数据,请使用:

key, err := stub.CreateCompositeKey(index, []string{key1, key2, key3})

// Skipped

stub.PutState(key, value)
将要查询的其他属性的键放在复合键上,然后使用:

getStateByPartialCompositeKey(objectType, attributes)
这样,您可以通过高效地查询某个作者或类别的关键字来获取该作者或类别的书籍

秒:


如果不需要按属性进行查询,只需在序列化和启用状态之前将属性名称或id放入模型中。

谢谢,但我正在寻找一种更好的Fabric解决方案。我不想使用Composer。