对于一个项目,我正在使用Hyperledger Composer Fabric为集成医疗保健系统创建区块链,以实现完整性和快速访问。我不想将实际的医疗记录存储在区块链中,因为它们会很大。相反,我正在考虑在区块链上存储记录的哈希并将记录存储在数据库中。什么样的数据库最好?我之前只使用过关系数据库和SQL。这适合吗?我见过有人说要在区块链上存储数据的位置,你会怎么做?这只是一个小项目,所以我正在寻找简单的解决方案,而不是我看到哪些是真正的企业系统。
答案 0 :(得分:1)
只在区块链上存储哈希就可以了。只需使用Composer Rest Server功能公开RESTful端点即可添加和读取数据。您可以从应用程序的数据层调用此端点。
就数据库而言,如果您知道SQL使用SQL数据库。这种类型取决于您使用的开发环境。我是微软的粉丝,但MSSQL Server的成本远高于POSTGres或MySQL。如果数据库不大,请查看AWS RDS云数据库。
您可以将数据的位置存储在区块链中。只需在Composer CTO字段中定义资产,并为其指定一个带有文件位置的String属性。 Playground中有代码示例,用于读取和写入自动生成的Asset Registry。您还将获得一个RESTful端点来读取和写入此数据。
答案 1 :(得分:0)
在链上存储记录的哈希值,在链外存储数据是典型的解决方案,也是一个好的开始。选择或创建数据存储架构是最困难的部分,答案取决于将使用您的区块链的财团的政治和需求,他们愿意在一个集中的实体中维护该实体的隐私和完整性的信任程度。系统。
有效地将数据存储在您控制的单个SQL数据库中,将您的解决方案从分散的低信任度解决方案转变为集中的高信任度解决方案。在客户端和数据之间插入REST API也是一样。这迫使区块链的客户信任您的公司来维护该API和SQL数据库以及其中的数据完整性。如果他们可以接受,那么您可能根本不需要区块链。
更好的解决方案是选择一个用于分散和复制的数据库,文件存储或键值存储,这样,如果区块链客户端不完全信任其他实体来维护网络,则它们可以托管自己的数据库节点。您可能会看一下ArangoDB,CockroachDB,Couchbase等。
如果您的客户可以依靠AWS之类的云提供商来维持正常运行时间和完整性,那么您可以摆脱使用云服务来分布和负载均衡Dynamo等数据存储的情况,以防跨多个区域一个地区下降。这增加了区块链客户可以接受的信任度和集中度(他们现在信任亚马逊将管理基础设施和正常运行时间),但仍然使您难以管理和拥有访问权(AWS账户的密钥)。