从技术角度来看,去中心化数据库如何工作。
总的来说,我知道所有用户都有自己的数据副本,并且以某种方式保持同步。
但是这个同步逻辑完全不清楚客户端是否发送http请求或者发生了什么?
任何关于阅读什么或如何深入研究该主题的建议都将受到高度赞赏
更新===================
谢谢大家的好回复,我想让问题更窄一些 它指出区 block 链是去中心化的并且不属于任何人,因此没有公共(public)服务器
所以让我困惑的是 例如我有数据库的副本,另一个人有相同的数据库,但略有不同,如果我们都没有任何公共(public) IP,我们如何同步?
在我看来,如果至少有人拥有公共(public) IP,那么它就还没有完全去中心化
最佳答案
逻辑:交易状态计算
去中心化系统/数据存储的工作原理是计算状态,其中状态是您想要从数据库使用的实际数据。
假设,您通过进行 2 个插入/更新查询对数据库进行了修改,系统实际上会获取这 2 个查询并将它们作为事务存储在数据库中,并且这些事务将跨节点(网络中的其他计算机)同步它是去中心化的)。另一个节点将根据同步的事务再次计算状态并将其更新到数据库。
让我们尝试通过一个例子来理解这一点:
考虑一个电影票务系统。同一剧院将在多个供应商网站中列出。
- 假设电影院有 100 个座位(有 100 个座位)。
- 假设有 2 个供应商。 BookMyShow 和 TicketNew。
下面是从时间 t1 到 t9 期间网络上发生的交易列表。
- 交易 (T1) - 在时间 (t1),有人在 BookMyShow 上购买了 10 张门票。
- 交易 (T2) - 在时间 t2,其他人在 BookMyShow 上又购买了 3 张门票。
在 BookMyShow 数据库中,状态将最初为 100 张未预订的门票。
这 2 笔交易(T1 和 T2)之后状态将是 => 剩余 87 个席位,已预订 13 个席位。 (因此,BookMyShow 的数据库将有此信息。)
现在 BookMyShow 会将这 2 个交易T1 和 T2 添加到所谓的区 block 中(这通常是交易列表和一些其他参数), B1,并将其发布到网络上。另一个供应商 TicketNew 会将这个 block B1 同步到他的机器上,现在就知道这些交易发生了。现在,TicketNew 供应商的机器将通过了解交易开始计算票务系统的状态。
- 最初 100 张门票。
- T1 预订了 10 个 => 剩余 90 个座位
- T2 已预订 3 个 => 剩余 87 个
更新到TicketNew的数据库=>剩余87个座位,已预订13个座位
类似地,T3、...T6 交易发生在 TicketNew 供应商网站上的时间 t3、...t6。这些交易将被 TicketNew 添加到另一个区 block B2 中并推送到网络。 BookMyShow 同步区 block B2 并更新其数据库中的状态,目前已预订 26 张门票,其中 74 张免费。
同步区 block B2 之前有 87 张票。
T3 航站楼已预订 4 个 => 剩余 83 个座位
T4 已预订 2 个 => 剩余 81 个
T4 已预订 6 个 => 剩余 75 个
T4 已预订 1 个 => 剩余 74 个
更新至 BookMyShow 数据库 => 剩余 74 个席位,已预订 26 个席位
关于database - 去中心化数据库如何运作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48641416/