我目前正在研究用于下一个项目的不同数据库。我想要使用分散的数据库。例如,Apache Cassandra声称是分散的。然而,MongoDB表示它使用复制。从我所看到的,就这些数据库而言,复制和分散基本上是一回事。这是正确的还是在我失去的权力下放和复制之间存在一些差异/特征?
答案 0 :(得分:1)
简短的回答,不,复制和分散是两回事。举个简单的例子,假设您有三个复制相同数据的实例(i1,i2和i3)。您还有一个仅从i1获取数据的客户端。如果i1发生故障,您仍然会将数据复制到i2和i3作为备份。但由于i1已关闭,客户端无法获取数据。这是一个单点故障的集中式数据库示例。
集中式数据库具有大多数请求通过的集中位置。在Mongo DB的情况下,它可以是将查询路由到可以处理查询的实例的实例。
分散的数据库显然正好相反。在Cassandra中,群集中的任何节点都可以处理任何请求。此节点称为请求的协调器。然后,节点从/向负责该数据的节点读取/写入数据,然后将结果返回给客户端。
答案 1 :(得分:0)
权力下放意味着您的应用程序架构中不应出现单点故障。这些系统将提供部署方案,其中在服务生命周期中没有选出领导者(或主人)。这些通常以点对点的方式提供服务。
复制意味着,只需将数据复制到另一个服务器实例即可确保冗余和容错。客户端请求仍然可以通过副本提供,但您的系统在制作副本时应确保某种程度的"一致性" 。
Cassandra 以点对点的方式提供请求。这意味着客户端可以向参与群集的任何节点发起请求。它还提供复制和可调整的一致性。
MongoDB 提供主/从部署,因此不被视为分散的。您可以提供多主服务器,以确保在主节点关闭时仍可以提供请求。它还提供开箱即用的复制。
<强>链接强>