MySQL / MSSQL - проверка записей для обработки - масштабирование?

StackOverflow https://stackoverflow.com/questions/4278733

Вопрос

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

Домен стол: ID, DomainName

Обратные ссылки стол: ID, DomailID, счет, CheckedTime

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

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

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

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top