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