ibm-cloud - 'managed' 许可区 block 链与关系数据库服务有何不同?

标签 ibm-cloud blockchain hyperledger hyperledger-fabric

托管许可区 block 链(例如 IBM bluemix 提供的 super 账本区 block 链服务)与关系数据库服务有何不同?

最佳答案

与传统数据库相比,许可的区 block 链系统的值(value)主张很简单:通过加密签名历史记录实现完整性。是什么阻止 Twitter 编辑我的推文并让我看起来好像说了一些我没有说过的话?几乎没有。

这就是区 block 链方法的用武之地。如果 Twitter 将推文存储在其他人可以复制的区 block 链中,那么 Twitter 对该链所做的任何修改都会被捕获。区 block 链保留数据库内数据的完整性。他们防止人们做假账。这在某些应用领域具有非凡的重要性和值(value)。

一般来说,私有(private)或许可的区 block 链可以被视为确保分布式数据库一致性的一种新方法,即使该数据库是一个完全信任的环境。区 block 链如何防止两个交易花费相同的先前交易输出,以及如何multiversion concurrency control之间存在等价关系。关系数据库中的 (MVCC) 可防止两个事务修改/删除同一数据库行。从MVCC存储层的角度来看,不存在就地修改一行的情况。

这意味着经过许可的区 block 链可以提供与 MVCC 相同类型的并发控制,但在分布式数据库中可以同时从许多不同位置写入 ( multi-master replication )。区 block 链当然不是适合所有此类场景的理想解决方案,但如果行大小很小,事务影响很少的行,并且仅在有人行为不当时才会发生冲突,则许可的区 block 链可以通过单个哈希来维护可证明的一致性跨分布式数据库的许多节点,所有节点都可以写入数据。

当涉及到在不完全信任的实体之间维护共享数据库时,许可的区 block 链具有一些很棒的附加功能:

  • 数据库可以以有效事务约束的形式包含应用程序逻辑。这种约束超出了常规数据库存储过程的范围,因为它在任何情况下都无法规避。

  • 数据库具有使用公钥加密的每行权限。此外,每笔交易都提供了一个可公开审核的证据,证明其创建者有权删除/修改其先前的行。

当然,这并非巧合,这些都是与公司间财务分类数据库非常相关的功能。 具有不可变历史记录的签名 promise 就是完整性证明所需要的。此外,假设 promise 是不可变的(交易只能通过添加一个新的 promise 来逆转先前 promise 的操作),您只需需要跟踪最近的 promise 。

如果 promise 签署者是已知实体,则只需一个诚实的“审核员”即可保持 promise 签署者的诚实。任何密切关注签名者的人都可以轻松证明签名者修改了历史记录。

另一个用例是,获得许可的参与者是有限的合作方群体,没有特定的持久信任。 NASDAQ example是这个用例。一组已知的参与者目前通过手动记录(通常是电子表格)和昂贵的律师来消除信任要求。区 block 链风格的共享数据库虽然比 SQL DB 慢,但在这种情况下解决完整性证明比当前的手动/法律流程更快且成本更低。

进一步阅读:

归属:该答案的部分内容由 Greg Slepak、Eric Lombrozo、Gideon Greenspan 和 Ron OHara 撰写,地址为 Bitcoin Stack Exchange根据 CC BY-SA 3.0 的条款.

关于ibm-cloud - 'managed' 许可区 block 链与关系数据库服务有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397614/

相关文章:

hyperledger-fabric - 与组织 Hyperledger Composer 相关的参与者

java - 使用 Java 中的 MQTT 将命令发布到 IBM IoT 中的设备

node.js - 推送 Bluemix 应用程序会删除公用文件夹中的文件

blockchain - 工作量证明中的随机数如何确保区 block 中的交易记录有效?

android - 如何将 uPort 移动应用程序与我的应用程序集成?

python - bsc 通过钱包地址获取交易 Web3.py

在 Weblogic 12c 中运行 Fabric-sdk-java 时出现 java.lang.NoSuchMethodError : com. google.common.util.concurrent.MoreExecutors.platformThreadFactory()

go - 无法识别的导入路径 "google/protobuf"

ibm-cloud - 我的一项 IBM Cloud Continuous Delivery 管道作业停止工作。管道中有什么变化吗?

node.js - 为什么未检测到 Cloudfoundry (Bluemix) 应用程序崩溃