从技术角度看去中心化数据库是如何工作的。
一般来说,我知道所有用户都有自己的数据副本,并且以某种方式同步。
但是这个同步逻辑完全不清楚客户端是否发送http请求,或者发生了什么?
任何建议,阅读什么或如何更深入的主题是高度赞赏
更新===================
感谢所有人的好回答,我想把问题说得更窄一点它说区块链是不公开的,没有人拥有,所以没有公共服务器
那么,是什么让我感到困惑呢?例如,我有一个数据库的副本,另一个人有相同的数据库,但在我们都没有任何公共in的情况下,我们如何才能同步?
在我看来,如果至少有人拥有公有IP,那就已经不是完全去中心化了。
发布于 2018-02-22 03:34:09
逻辑:从事务计算状态
分散式系统/数据存储通过计算状态来工作,其中状态是您希望从数据库中使用的实际数据。
比方说,你通过两个插入/更新查询对数据库进行了修改,系统实际上接受了这两个查询,并将它们作为事务存储在数据库中,这些事务将在节点之间同步(网络中的其他机器使其分散)。并且该另一个节点将基于同步的事务再次计算状态,并将其更新到数据库。
让我们通过一个例子来理解这一点:
考虑一个电影票务系统。同一大区将在多个供应商网站中列出。
下面是从time t1到t9网络上发生的事务列表。

在BookMyShow数据库中,的状态最初将是100张未保留的门票。
经过这2笔交易(T1和T2)状态将是=> ,剩余87个座位,预订13个座位。(因此,BookMyShow的数据库将包含此信息。)
现在,BookMyShow将把这两个事务T1和T2添加到所谓的块(这通常是事务列表和一些其他参数) B1中,并将其发布到网络。另一家供应商TicketNew将此数据块B1同步到他的计算机上,现在就知道发生了这些事务。现在,TicketNew供应商的机器将通过理解事务开始计算票务系统的状态。
initially.
更新到TicketNew的数据库=>剩余87个座位,预订了13个座位
类似地,T3、...T6事务发生在时间T3,...TicketNew供应商网站上的t6。这些事务将被添加到另一个块B2 by TicketNew并推送到网络。BookMyShow同步区块B2并更新其数据库中的状态,即现在已预订了26张门票,74张是免费的。
同步数据块前的
>H1481在T4 => 74数据库中预订数据库剩余74个座位,预订26个座位<代码>F252
发布于 2018-02-21 12:45:46
去中心化数据库的具体工作方式取决于它的实现。
CouchDB是一种分布式数据库的一个例子。它们使用CouchDB Replication Protocol通过HTTP/1.1在两个对等点之间同步JSON文档。
Couch DB基本上使用incremental replication进行同步。你可以阅读更多关于它的内容。
Hyperledger Fabric是国际商用机器公司推出的一种区块链,它使用Couch DB作为ledger state database。
发布于 2018-02-21 23:17:14
像区块链那样的去中心化数据库,无论是超级账本还是比特币,都是一种EventSource/CQRS实现,账本只附加EventSource,并通过一致协议同步到其他节点,每个节点回复事件日志并获取一个状态数据库进行查询,如hyperledger使用couchdb或leveldb作为状态数据库。
https://stackoverflow.com/questions/48641416
复制相似问题