MySql / MSSQL - проверка записей для обработки - масштабирование? - PullRequest
1 голос
/ 25 ноября 2010

Я пытаюсь найти наиболее эффективный и масштабируемый способ реализации механизма очереди обработки в базе данных sql.Короче говоря, у меня есть куча объектов «Домен» со связанной статистикой «Обратные ссылки».Я хочу выяснить, какие домены должны обрабатывать свои обратные ссылки.

Домен таблица: id, имя_домена

Обратные ссылки таблица: id, domainId, count, checkedTime

В таблице обратных ссылок имеется много записей (для сохранения истории) в одной записи домена.Мне нужно эффективно выбирать домены, для которых должны обрабатываться их обратные ссылки.Это может означать, что запись Обратных ссылок с самым последним зарегистрированным временем достаточно далеко в прошлом, или что для записи домена вообще нет записи Обратных ссылок.Для обработки доменов потребуется ряд факторов, в том числе сначала по самому старому зарегистрированному времени.

Существует несколько доменов обработки «читателей».Если один и тот же домен обрабатывается дважды, это не такая уж большая проблема, но это пустая трата циклов ЦП.

Работник тратит неопределенное количество времени на обработку домена.Я бы предпочел иметь некоторую резервную копию в том смысле, что срок оформления заказа «истекает», а не требует, чтобы рабочий процесс явно «проверял» запись после ее завершения, в случае сбоя работника по какой-либо причине.

большая проблема здесь - масштабирование.С самого начала у меня будет около 2 миллионов доменов, и это число будет расти с каждым днем.Это означает, что моя история обратных ссылок также будет быстро расти, поскольку я ожидаю, что в некоторых случаях она будет обрабатываться ежедневно, а в других случаях - еженедельно для каждого домена.Возникает вопрос: как наиболее эффективно найти домены, требующие обработки обратных ссылок?

Спасибо за помощь!

1 Ответ

0 голосов
/ 12 января 2011

Я решил структурировать вещи немного по-другому.Вместо того, чтобы находить домены, которые должны быть обработаны на основе критериев нескольких таблиц, я назначаю дату, в которую каждый показатель должен обрабатываться для данного домена.Это упрощает поиск доменов, нуждающихся в обработке запроса.

В итоге я использовал идею пакетов, в которых я нахожу домены для обработки, помечаю их как обрабатываемые идентификатором пакета, а затем возвращаю эти доменыработник.Когда работник завершает работу, он возвращает результаты, и пакет удаляется, и домены, естественно, будут снова готовы к обработке в будущем.

...