Database 分散数据库是如何工作的?
从技术角度来看,分散数据库是如何工作的 总的来说,我知道所有的用户都有自己的数据副本,并且以某种方式保持同步 但这种同步逻辑完全不清楚客户端是否发送http请求或发生了什么 任何关于阅读内容或如何深入主题的建议都将受到高度赞赏 更新=================== 谢谢大家的回复,我想把问题缩小一点 它指出区块链是非私有的,没有人拥有,因此没有公共服务器 那么是什么让我困惑呢 e、 g.我有DB的副本另一个人有相同的数据库,但略有不同,如果我们都没有任何公共IP,我们如何同步Database 分散数据库是如何工作的?,database,blockchain,Database,Blockchain,从技术角度来看,分散数据库是如何工作的 总的来说,我知道所有的用户都有自己的数据副本,并且以某种方式保持同步 但这种同步逻辑完全不清楚客户端是否发送http请求或发生了什么 任何关于阅读内容或如何深入主题的建议都将受到高度赞赏 更新=================== 谢谢大家的回复,我想把问题缩小一点 它指出区块链是非私有的,没有人拥有,因此没有公共服务器 那么是什么让我困惑呢 e、 g.我有DB的副本另一个人有相同的数据库,但略有不同,如果我们都没有任何公共IP,我们如何同步 在我看来,如
在我看来,如果至少有人拥有公共IP,那么它还没有完全去中心化去中心化数据库的具体工作方式取决于它的实现 是一种分布式数据库的示例。它们使用用于通过HTTP/1.1在两个对等方之间同步JSON文档 coach DB主要用于同步。你可以阅读更多关于它的内容
是IBM的一个区块链,使用Coach DB作为分散数据库。像区块链一样的分散数据库,无论是hyperledger还是Bitcoin,都是一种EventSource/CQRS实现,该账本仅附加EventSource,并通过共识协议同步到其他节点,每个节点回复事件日志并获取一个状态数据库进行查询,例如hyperledger使用couchdb或leveldb作为状态数据库 从技术角度来看,分散数据库是如何工作的 这是一个非常广泛的问题,需要花费整个课程来解释。一般来说,一个简短的总结就是,一个节点的状态变化。在这种状态变化之后,节点将向分布式系统中的其余节点广播该变化 对于区块链,在节点向链中添加块后,它将向网络广播新块 其余的节点。然后,这些节点将同意新块是有效的。如果 其他节点没有达成一致意见,那么它们将在没有新块的情况下继续工作。这是系统如何达成共识的概观 但这种同步逻辑完全不清楚客户端是否发送http请求或 发生了什么事 对于区块链,创建新块的节点将通过http向其他节点广播新块的详细信息。这些节点必须根据其系统上的链验证块。当一个节点在不同的链上工作时,这称为fork。当节点达成共识时,被视为真理之叉的叉由系统决定。逻辑:从事务中计算状态 分散系统/数据存储通过计算状态来工作,其中状态是您希望从数据库使用的实际数据 比方说,您通过进行2次插入/更新查询对数据库进行了修改,系统实际上会将这2次查询作为事务存储在数据库中,这些事务将在节点间同步(网络中使其分散的其他机器)。另一个节点将根据同步的事务再次计算状态,并将其更新到数据库中
让我们通过一个例子来理解这一点: 考虑电影票务系统。同一剧院将在多个供应商网站上列出
- 假设电影院有100个座位(100个座位)
- 假设有两个供应商。BookMyShow和TicketNew
- 交易(T1)-在时间(T1)有人在BookMyShow上买了10张票
- 交易(T2)-在T2时,其他人在BookMyShow上又买了3张票
- 最初是100张票
- T1预订10张=>90张剩余座位
- T2预订3张=>剩余87张
- 在同步B2座之前有87张票
- T3预订4张=>83张剩余座位
- 2在T4中登记=>81剩余
- 6在T4中登记=>75剩余
- 1在T4中登记=>74剩余
- 更新到BookMyShow数据库=>剩余74个座位,预订26个座位
- 更新:
- 这一切都是关于同步的。试想一下git:有人更改代码,提交他或她的更改,拉取同时发生的其他更改,然后推送他或她的最终更改。当然,有时候你需要合并一些东西,但是一个好的框架通常会帮你