排队解决方案通过多个进程处理记录

问题描述:

该应用程序位于.Net 3.5和Oracle标准版11G数据库,其中一个表有超过200万条记录。创纪录的规模并不大。记录具有类型为Char(1)的“状态”列。根据进程选择要处理的记录的状态并在完成后更新状态。 A记录经由串行顺序多个进程前进,即,A - >乙 - “ç.....的处理是假设作为Windows服务在单独的机器上运行一个排队解决方案通过多个进程处理记录

简单的解决方案是所有的进程中运行每10分钟,并查询表格中相应状态的记录。有15个并行的多个进程来检查特定状态。这可能不是一个有效的解决方案。没有问题的过程之间有点时间滞后。

我正在考虑另一种方法是定义一个队列为每一个过程。一旦进程结束,它将记录添加到下一个队列中。我可以在这里使用Oracle队列。

你认为哪一个选项是此方案更好?该解决方案不应该影响数据库的性能,因为网站也在数据库上运行并访问同一个表。还有其他更好的方法吗? .Net Workflow框架适合在这里提供开发缓解吗?

听起来像,这是在没有用户交互,在这种情况下最高效的解决方案将是100%的PL/SQL没有Net代码的自动化批处理过程。它可以使用DBMS_SCHEDULER或DBMS_JOB来安排执行。

+0

用户交互不存在,是的它是一个自动化的批处理过程。但是它不能是100%的PL/SQL,因为进程需要调用外部web服务,创建文件,ftp文件等。我不确定PL/SQL是否可以处理所有这些。 – 2009-09-29 02:22:42