gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:08:54 26 4
gpt4 key购买 nike

我读过:

The blockchain database isn’t stored in any single location, meaning the records it keeps are truly public and easily verifiable. No centralized version of this information exists for a hacker to corrupt. Hosted by millions of computers simultaneously, its data is accessible to anyone on the internet.



所以我的问题是我们可以将区块链存储在例如sql中吗?还是只能将其存储在可单独运行的数据库中?

最佳答案

当前去中心化的区块链应用程序几乎没有存储数据的选项。分散存储选项包括:

  • 将所有内容存储在区块链本身中
  • 对等文件系统,例如IPFS分散的云文件存储,例如Storj,Sia,以太坊Swarm等。
  • 分布式数据库,例如Apache Cassandra,
    重新考虑数据库等。
  • BigChainDB
  • 系结DB

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

  • 资料来源: here

    关于sql - 区 block 链可以存储在SQL甚至noSQL数据库中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48418461/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com