区块链可以存储在SQL甚至noSQL数据库中吗?

Ken*_*y.G 6 sql database blockchain

据我所知,区块链数据库不存储在任何单一位置,这意味着它保存的记录真正公开且易于验证.没有集中版本的此信息可供黑客破坏.由数百万台计算机同时托管,其数据可供互联网上的任何人访问.
所以我的问题是我们可以将区块链存储在例如sql中吗?或者它只能存储在自己工作的数据库中?

Anu*_*rma 9

目前,分散的区块链应用程序几乎没有存储数据的选项.分散存储选项包括:

  • 将所有内容存储在区块链中
  • 对等文件系统,如IPFS分散式云文件存储,如Storj,Sia,Ethereum Swarm等.
  • 分布式数据库,例如Apache Cassandra,Rethink DB等.
  • BigChainDB
  • 领带DB

让我们详细考虑它们:

  1. 将所有内容存储在区块链中:在区块链中存储所有内容是最简单的解决方案.目前,大多数简单的分散应用程序都以这种方式工作.然而,这种方法具有显着的缺点.首先到区块链的交易很难确认.对于资金转移来说似乎很快(任何人都可以等待一分钟),但对于丰富的应用程序数据流来说速度极慢.丰富的应用程序每秒可能需要数千个事务.其次,它是不可改变的.不变性是区块链的强弱,它具有很高的鲁棒性,但却是数据存储的一个弱点.用户可以更改他们的个人资料或更换他们的照片,仍然所有以前的数据将永远位于区块链中,任何人都可以看到.不变性导致另一个缺点 - 容量.如果所有应用程序都将其数据保存在区块链中,则区块链大小将迅速增长,超过公开可用的硬盘容量.完整节点可能需要特殊硬件.这可能会导致区块链的危险集中化.这就是为什么只在区块链中存储数据对于丰富的分散应用程序来说不是一个好选择.
  2. 对等文件系统,如InterPlanetary文件系统.IPFS允许在客户端计算机上共享文件,并将它们整合到全局文件系统中.该技术基于BitTorrent协议和分布式哈希表.有几个好时刻.它真的是点对点 - 分享任何东西首先把它放在你自己的电脑上.只有在有人需要时才会下载它.它是内容可寻址的,因此不可能通过给定地址伪造内容.借助BitTorrent协议,可以非常快速地下载流行文件.然而,它也有一些缺点.如果要共享文件,则应保持在线状态.至少在某人感兴趣并希望从您下载之前.它仅提供静态文件,上传后无法修改或删除.当然,您无法通过其有意义的内容搜索这些文件.
  3. 分散式云文件存储:还有分散的云文件存储,可以解除部分IPFS限制.从用户的角度来看,这些存储只是像Dropbox这样的云存储.不同之处在于,内容托管在用户的计算机上,这些计算机提供租用的硬盘空间,而不是数据中心.现在有很多这样的项目.例如,Sia,Storj,以太坊Swarm.您无需再保持在线状态即可共享文件.只需上传文件即可在云中使用.这些存储非常可靠,速度足够快,具有巨大的容量.他们仍然只提供静态文件,无论如何都没有内容搜索,因为它们是在租用的硬件上构建的,所以它们不是免费的.
  4. 分布式数据库:由于我们需要存储结构化数据并寻求高级查询功能,因此我们可以查看分布式noSql数据库.为什么noSql?由于CAP定理的限制,严格的事务SQL数据库无法真正分布.要分发数据库,​​我们必须牺牲一致性或可用性.NoSQL数据库选择可用性而非一致性,将其替换为所谓的"最终一致性",其中网络中的所有数据库节点在一段时间之后变得一致.这些数据库有很多成熟的实现,例如MongoDB,Apache Cassandra,RethinkDB等.它们非常好 - 快速,可扩展,容错,支持丰富的查询语言,但对我们的应用程序仍然有致命的缺点.它们不是拜占庭式的.集群的所有节点都完全相互信任.因此任何恶意节点都可以破坏整个数据库.
  5. BigChainDB:还有一个名为BigChainDB的项目声称可以解决数据存储和事务速度问题.它也是一个区块链,但具有巨大的数据容量和非常快速的交易.让我们看看它是如何可能的.BigChainDB构建在RethinkDB集群之上,我在上一张幻灯片中提到了这个NoSQL数据库.BigChainDB使用它来存储所有块和事务.这就是它显示如此高吞吐量的原因 - 它是底层noSQL数据库之一.所有BigChainDB节点(在幻灯片上表示为BDB)都连接到群集,并具有对数据库的完全写入权限.这是一个问题 - 整个BigChainDB都不是拜占庭式的!任何恶意BDB节点都可以破坏RethinkDB集群.BigChainDB团队意识到了这个问题,并承诺在未来的某个时候解决它,但它是架构的基石,改变它可能是不可能的.但是,BigChainDB可能对私有区块链很有用.但在我看来,为了避免混淆,它应该被命名为BigPrivateBlockchain.它不是公共存储的选项.
  6. Ties DB:当前可用的选项可能是一个很好的公共数据库.最接近理想的是noSql数据库.他们唯一缺少的是拜占庭容错.Ties.Network数据库:ties.network是对Cassandra数据库的深度修改,并提供了一个更好的解决方案:TiesDB继承了底层noSQL数据库的大部分功能,并增加了拜占庭容错和激励.借助这些功能,它可以成为公共数据库,并在以太坊和其他具有智能合约的区块链上启用功能丰富的应用程序.数据库可由任何用户写入.但是用户通过其公钥进行标识,并且所有请求都已签名.创建后,记录会记住其成为记录所有者的创建者.之后,记录只能由所有者修改.每个人都可以读取所有记录,因为数据库是公开的.根据请求和复制检查所有权限.可以通过智能合约管理其他权限.

来源:这里