Я тестировал camunda для использования встраиваемого в моем приложении Tomcat в течение нескольких дней, но я поднимаю некоторые проблемы с производительностью в отношении правопреемников и переменных, чтобы дополнительно отфильтровать мой репозиторий. . Вот несколько простых сценариев использования, которые будут мне полезны:
1) Отфильтруйте все активные задачи, назначенные конкретному пользователю.
2) Отфильтруйте все активные экземпляры процесса, связанные с клиентом.
3) Отфильтруйте все активные задачи из экземпляров процессов, связанных с клиентом.
Итак, меня больше всего беспокоит:
a - Могу ли я полагаться на вариант использования 1, имеющий индексы базы данных для исполнителей, которые в будущем будут хорошо работать с сильно заполненной таблицей задач?
б - Чтобы выполнить вариант использования 2, я добавлю идентификатор клиента в качестве переменной уровня процесса в свои экземпляры процесса для дальнейшей их фильтрации. Подлежат ли индексированию также переменные - предположим, исполнители? (скажем, мне нужно запросить 20 процессов в 1 миллионной таблице процессов с заданным набором переменных)
c - Наконец, с точки зрения производительности, должен ли я реплицировать переменную идентификатора клиента в каждой задаче, а затем фильтровать их, не проверяя соответствующие экземпляры процесса?
ps1: я использую базу данных postgres в качестве репозитория и не имею полного представления о базовой структуре и индексах, лежащих в основе механизма BPM. Если для создания индексов, недоступных по умолчанию, необходимо некоторое понимание, я был бы признателен за некоторые подсказки, над какими таблицами / столбцами мне следует работать.
ps2: я не имею дело с критически важным параллельным программным обеспечением, но потенциально в ближайшем будущем у меня будет большая нагрузка на базу данных.