Хотя я не уверен, с какой конкретной средой разработки вы работаете, мне приходилось сталкиваться с некоторыми похожими рабочими процессами, где у нас различное количество исходных документов, различные этапы и т. Д., Все с различными характеристиками производительности.
Предполагая, что у вас есть ряд независимых шагов - т.е. рабочий продукт шага A является входом для шага B, а продукт шага B является входом для шага C и т. Д. Я бы рассматривал очереди сообщений как потенциальное решение.
Например, все новые документы помещаются в очередь. Одно или несколько приложений прослушивателя попадают в очередь и захватывают следующий доступный документ для выполнения шага A. По завершении шага A ссылка на выходной продукт и / или соответствующие данные помещаются в другую очередь. отдельное приложение прослушивателя извлекает из этой второй очереди шаг B и т. д., пока не будет создан конечный выходной продукт.
Таким образом, вы используете одну очередь для области ожидания между каждым дискретным шагом и можете увеличивать или уменьшать любой отдельный процесс между очередями.
Например, мы используем это для перехода от некоторых преобразований данных, к процессу рендеринга и к спулеру. Данные быстрые, рендеринг привязан к ЦП, а печать - к вводу / выводу, но каждый отдельный шаг можно масштабировать в зависимости от необходимости.
Вы можете (технически) использовать для этого БД, но очередь сообщений и / или служебная шина, скорее всего, будут вам полезнее.
Надеюсь, это направит вас в правильном направлении!