Java MongoDB相关的扩展问题

Java MongoDB相关的扩展问题,java,mongodb,design-patterns,mapreduce,Java,Mongodb,Design Patterns,Mapreduce,仅供参考,这个问题并不完全基于MongoDB,而是碰巧使用了MongoDB。我假设我们最终可能会在一个好的设计中使用MongoDB的特性,比如切分,因此提到MongoDB。同样,我们使用Java 因此,我们在一个特定的集合中有大约1亿条记录,其中我们需要选择所有有一些数据集到明天的项目。通常,此查询返回1000万条记录 你可以认为我们手头有N台(比如说10台)机器。我们可以假设MongoDB是基于记录id分片的。 我们将处理的每个记录都独立于我们正在读取的其他记录。此批处理作业不会写入任何记录

仅供参考,这个问题并不完全基于MongoDB,而是碰巧使用了MongoDB。我假设我们最终可能会在一个好的设计中使用MongoDB的特性,比如切分,因此提到MongoDB。同样,我们使用Java

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

你可以认为我们手头有N台(比如说10台)机器。我们可以假设MongoDB是基于记录id分片的。 我们将处理的每个记录都独立于我们正在读取的其他记录。此批处理作业不会写入任何记录

我想做的是

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

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

    我可以在MongoDB的上下文中发言

    需求1和需求2通过切分完成。我不确定我是否理解了你的问题,因为听起来好像1说你不想集中工作量,2说你想平均分配工作量

    在任何情况下,使用正确的碎片密钥,您都可以在碎片之间分配工作负载

    需求3通过MongoDB中的副本集执行

    我必须更多地了解您的应用程序和用例才能确定,但由于您的典型访问模式听起来似乎不适合使用正确的文档模型,所以我需要用1000万条记录来换取100万条记录。请记住收集表和文档记录。我会考虑以更高的逻辑粒度存储您的10M记录,这样您就可以获取更少的记录;这将显著提高性能