Я пытаюсь найти лучший способ справиться со следующей ситуацией.
Допустим, у нас есть тип сущности с атрибутами A, B и C. Каждый из этих атрибутов может иметь известный набор возможных значений. У сущностей есть потребители, которые заинтересованы только в сущностях с определенными значениями атрибутов. Это определяется с помощью фильтров. Например (3 фильтра):
A B C
A1 B12 C4
A3 B2 -
A11 - C2
Ax, Bx и Cx являются конкретными значениями, «-» означает «любое значение». Значения фильтра помечены AND, несколько фильтров помечены OR. Окончательная комбинация будет выглядеть так:
(A=A1 AND B=B12 AND C=C4) OR (A=A3 AND B=B2) OR (A=A11 AND C=C2)
Когда объект сохраняется в базе данных, я хочу уведомить об этом определенных потребителей. Потребителями, которые должны быть уведомлены, являются те, кто определил по крайней мере один фильтр, который соответствует значениям атрибута сохраненного объекта.
Я ожидаю, что будут тысячи потребителей, у каждого из которых будет определено несколько фильтров. Вероятно, будет около 30 атрибутов. Все это будет использовать реляционную базу данных (MySQL).
Первое, что приходит на ум, - это наличие некоторого непрерывно работающего процесса, который периодически выполняет поиск сущностей для каждого потребителя на основе их определенных фильтров, а затем уведомляет потребителя, если обнаруживаются новые сущности. Это бы сработало, но я не уверен, что иметь тысячи постоянно выполняющихся запросов - это хорошая идея. Есть ли альтернативы с меньшей производительностью или моя озабоченность по поводу преждевременной производительности здесь?