Mongodb和Cassandra数据存储机制

标签 mongodb cassandra

我一直在阅读有关 MongoDB 和 Cassandra 的文章。 MongoDB 是一个主/从,而 Cassandra 是无主的(所有节点都是平等的)。我怀疑数据是如何存储在这两者中的。

假设一个用户正在向 MongoDB(一个在单独的机器上有主节点和不同的从节点的集群)写一个请求。这意味着 master 将决定(或通过某些应用程序实现)将此更新写入哪个 slave。也就是说,相同的数据不会在 MongoDB 的所有节点中可用。每个节点大小可能不同。我对吗 ?此外,当被查询时,master 是否知道应该将此请求发送到哪个节点?

在 cassandra 的情况下,相同的数据将写入所有节点,即)如果一个节点大小为 10GB,则其他节点大小也为 10GB。因为如果只有这样的话,那么当一个节点出现故障时,用户在另一个节点中查询也不会丢失任何数据。我在这儿吗?如果我是对的,相同的数据在所有节点中都可用,那么在 Cassandra 中使用 map/reduce 函数的优势是什么?如果我错了,那么 Cassandra 中如何保持可用性,因为相同的数据在另一个节点中不可用?

我在 stackoverflow 中搜索有关 MongoDB 与 cassandra 的信息,并阅读了大约 10 篇文章,但这些文章中的答案无法解决我的问题。请解开我的疑惑,如果我假设错误,还请指正。

最佳答案

关于 MongoDB,是的,你是对的,只有一个主要的。

只要所有内容都同步,任何辅助设备都可以成为主要设备,因为这意味着辅助设备拥有所有数据。每个节点不必具有相同的磁盘大小,这可能会因复制完成时间而异,但是,它们确实具有相同的数据(只要它们同步)。

我对 Cassandra 了解不多,抱歉!

关于Mongodb和Cassandra数据存储机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817692/

相关文章:

java - 当我使用 @JsonProperty 通过 Spring 数据从 MongoDB 检索对象时出现空字段

mongodb - Mongo Aggregate $project 变量作为字段名称

Cassandra cql 选择排序

storage - cassandra 节点限制

concurrency - Cassandra 中的并发写入 : Are conflicts possible?

cassandra - Nosql模式设计/备份策略

node.js - Mongoose 中的聚合结果

.NET Core 的 MongoDB 迁移

c++ - Cassandra C++ 驱动程序如何使用 zlib 库?

node.js - 如何填充 map 缩减结果