Я пытаюсь найти наиболее эффективный и масштабируемый способ реализации механизма очереди обработки в базе данных sql.Короче говоря, у меня есть куча объектов «Домен» со связанной статистикой «Обратные ссылки».Я хочу выяснить, какие домены должны обрабатывать свои обратные ссылки.
Домен таблица: id, имя_домена
Обратные ссылки таблица: id, domainId, count, checkedTime
В таблице обратных ссылок имеется много записей (для сохранения истории) в одной записи домена.Мне нужно эффективно выбирать домены, для которых должны обрабатываться их обратные ссылки.Это может означать, что запись Обратных ссылок с самым последним зарегистрированным временем достаточно далеко в прошлом, или что для записи домена вообще нет записи Обратных ссылок.Для обработки доменов потребуется ряд факторов, в том числе сначала по самому старому зарегистрированному времени.
Существует несколько доменов обработки «читателей».Если один и тот же домен обрабатывается дважды, это не такая уж большая проблема, но это пустая трата циклов ЦП.
Работник тратит неопределенное количество времени на обработку домена.Я бы предпочел иметь некоторую резервную копию в том смысле, что срок оформления заказа «истекает», а не требует, чтобы рабочий процесс явно «проверял» запись после ее завершения, в случае сбоя работника по какой-либо причине.
большая проблема здесь - масштабирование.С самого начала у меня будет около 2 миллионов доменов, и это число будет расти с каждым днем.Это означает, что моя история обратных ссылок также будет быстро расти, поскольку я ожидаю, что в некоторых случаях она будет обрабатываться ежедневно, а в других случаях - еженедельно для каждого домена.Возникает вопрос: как наиболее эффективно найти домены, требующие обработки обратных ссылок?
Спасибо за помощь!