Parallel processing 选定记录的数据处理和更新

Parallel processing 选定记录的数据处理和更新,parallel-processing,nosql,mapreduce,bigdata,data-processing,Parallel Processing,Nosql,Mapreduce,Bigdata,Data Processing,基本上,所需的工作是在数据库中插入大量记录,并且可以随时插入更多记录: 选择状态为“新建”的记录->处理记录->将记录更新为状态“完成” 这听起来像是“地图缩小” 我认为上述工作可以通过不同的机器并行进行,但我担心的是: 当我选择状态为“新建”的记录时-我如何知道这些记录都没有被其他作业处理? 当然,同一记录不应被选择和处理多次。 性能至关重要。 简单的解决方案是在循环中完成上述基本工作 它似乎与大数据处理/nosql/map reduce等有关 感谢您考虑性能问题后。。。我们可以做到这一点。主

基本上,所需的工作是在数据库中插入大量记录,并且可以随时插入更多记录:

选择状态为“新建”的记录->处理记录->将记录更新为状态“完成”

这听起来像是“地图缩小”

我认为上述工作可以通过不同的机器并行进行,但我担心的是:

当我选择状态为“新建”的记录时-我如何知道这些记录都没有被其他作业处理?

当然,同一记录不应被选择和处理多次。 性能至关重要。 简单的解决方案是在循环中完成上述基本工作

它似乎与大数据处理/nosql/map reduce等有关


感谢您考虑性能问题后。。。我们可以做到这一点。主要目标是将记录分发给客户机,这样客户机就不会得到相同的记录。 我不在乎数据库

  • 如果您还有一列用于锁定记录。所以在获取这些记录时,可以设置锁,以防止获取发送时间

  • 但如果您没有这样的能力,那么我的赌注将是创建另一个表或
    im memory
    key-value存储,使用记录主键和锁,在获取记录时,您需要检查其他表中不存在的记录


  • 如果您有
    HBase
    ,那么它可以很容易地实现。第一种方法是通过性能实现的

    这取决于所使用的数据库是什么?所使用的数据库是oracle,很可能是HBase。因此,请为我提供2种解决方案(如果它们完全不同的话):1。用于Oracle数据库。2.对于HBase。谢谢在第一个任务完成之前开始第二个任务处理新记录的原因是什么?我想并行处理只是为了提高性能和扩展性-因此它可以由多个线程完成-而且-可能由多台机器完成-如果不能并行处理,没有缩放-只有一台机器进行处理。关于1,锁定记录-我想到了,我认为这很复杂:过程将是-锁定记录-选择状态为“NEW”的记录->处理记录->将记录更新为状态“DONE”并解锁。如果进程锁定记录并在中间崩溃,则记录保持锁定。更多的处理。所以我认为你可以做的是必须有一些TTL,在TTL过期后,下一个线程/进程可以访问该记录。TTL值需要足够大,以允许第一个客户端处理记录并提交它…也考虑了一下:)再次-这些都是好的和有效的解决方案-正如我所写的-更多的处理,但我不确定它是否应该如此复杂。所以我会记住这一切。第一个解决方案没有并行,或者第二个解决方案有锁定和更复杂。谢谢有关记录级锁定,请参阅