Нет причин бегать каждые 15 минут. Это приведет к задержке в триггерах, а также приведет к выбросам нагрузки каждые 15 минут, за которыми следуют периоды без нагрузки.
В вашей базе данных может быть флаг для новых правил оповещения и новых данных о местоположении. Когда вы сканируете события, вы можете использовать двухпроходный подход. Сверьте все новые правила со всеми данными о местоположении и отметьте их как новые. Затем проверьте все новые данные о местоположении в соответствии с существующими правилами и отметьте их как новые.
Вы можете запускать это так часто, как вам нравится. В идеале вы не должны ждать так долго, потому что чем дольше вы ждете, тем больше работы вы накапливаете.
Что касается того, что коммуникатор TCP проверяет наличие соответствующих предупреждений во время сканирования базы данных, то основное преимущество заключается в том, что предупреждения будут немедленными. Недостатком будет то, что обработка предупреждений замедлит работу коммуникатора TCP, и вы будете привязаны к модели «одно обновление означает одну проверку для предупреждений».
В подходе «сканирование базы данных», если нагрузка становится слишком высокой, вы можете проверять наличие предупреждений только для каждого такого количества обновлений из высокочастотных источников обновлений. Это естественно справляется с нагрузкой, сокращая объем необходимой работы, но может привести к пропущенному предупреждению.
Я думаю, что все подходы, которые вы рассматриваете, будут работать нормально.