gpt4 book ai didi

java - MongoDB 相关的扩展问题

转载 作者:行者123 更新时间:2023-12-01 14:13:55 25 4
gpt4 key购买 nike

仅供引用,这个问题并不完全基于 MongoDB,但恰好使用 MongoDB。我假设我们最终可能会在良好的设计中使用 MongoDB 的功能,例如分片,因此提到 MongoDB。另外,fwiw,我们使用 Java。

因此,我们在某个集合中有大约 1 亿条记录,我们需要选择其中具有明天数据集的所有项目。通常此查询会返回 1000 万条记录。

你可以认为我们手头有 N(比如说十)台机器。我们可以假设,MongoDB是根据record_id进行分片的。我们将处理的每条记录独立于我们正在读取的其他记录。在此批处理作业中不会写入任何记录。

我想做的是,

  1. 不要在不同的机器上集中分配工作负载。
  2. 公平或几乎公平的工作负载分配(不确定是否可以在不影响要求的情况下满足以下要求。1)
  3. 容错(如果其中一台批处理机器发生故障,我们希望其他机器承担其负载。)

有什么好的解决方案,在类似情况下已经有效吗?

最佳答案

我可以在 MongoDB 的背景下说话

需求1和2是通过分片完成的。我不确定我是否遵循您的问题,因为听起来 1 表示您不想集中工作负载,2 表示您希望均匀分配工作负载。

无论如何,使用正确的分片键,您将在各个分片之间分配工作负载。 http://docs.mongodb.org/manual/sharding/

要求 3 通过 MongoDB 中的副本集执行。 http://docs.mongodb.org/manual/replication/

我必须更多地了解您的应用程序和用例才能确定,但​​是为 100M 记录提取 10M 记录,因为您的典型访问模式听起来不像正确的文档模型已就位。请记住集合 <> 表和文档 <> 记录。我会考虑以更高的逻辑粒度存储 10M 记录,以便提取更少的记录;这将显着提高性能。

关于java - MongoDB 相关的扩展问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com