有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

与java MongoDB相关的扩展问题

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

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

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

我想做的是

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

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


共 (1) 个答案

  1. # 1 楼答案

    我可以在MongoDB的背景下发言

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

    在任何情况下,使用正确的碎片密钥,您都可以在碎片之间分配工作负载http://docs.mongodb.org/manual/sharding/

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

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