Я не думаю, что вам нужен отдельный процесс для обработки времени.
Если вы отслеживаете время создания записи, вышеприведенное может быть реализовано в логике приложения или в процедуре базы данных - что происходит каждый раз, когда данныеизвлекается из базы данных.
Итак
- Пользователь создает запись A (id = 1, adminId = 1) с отметкой времени ts
- Если администратор пытается получить доступзапись, которую БД / приложение разрешит, если разница между текущей датой / временем и ts будет меньше 1 минуты;если более 1 минуты запись переназначается другому администратору
- Если другой администратор пытается получить доступ к записям и прошло более 1 минуты, запись назначается им (еще на одну минуту?)
Все вышеперечисленное работает без другого координирующего его процесса (все вышеперечисленное извлекает данные), и базу данных можно использовать для блокировки (либо через некоторое состояние, либо время состояния, которое может быть указано в записи).
Это только если вы хотите отправить записи или выполнить вышеуказанное обслуживание автоматически (для некоторых отчетов).Тем не менее, это всегда можно сделать, проверив, переназначены ли записи перед получением других данных.
Наличие другого процесса и обеспечение его такой же стабильности, как в DB , нетривиально, но вы можетесоздайте заданий , которые будут периодически запускаться в среде БД (или вы можете пойти по пути SMO , если это больше подходит для вашего сценария).
Однако, я полагаю, вы не описаливсе состояния, которые может иметь запись (что происходит, если adminId | 3 не «обрабатывает» запись).
EDIT После комментария позвольте мне объяснить немного.Предполагая, что вам нужно выполнять какую-то работу каждые 5 минут (или каждую минуту), тогда не имеет значения, выполняете ли вы это каждую минуту или делаете это в первый раз, прежде чем пользователь запрашивает данные, на которые он может повлиять.
Существуют различия в двух подходах, главным образом в следующем. Если это делается лениво - обновлений нет, если пользователь не запрашивает данные, тогда
Ленивые обновления против своевременных обновлений
- в случае низкой активности в этой таблице вы сохраняете ненужные периодические обновления (но должны быть уверены, что ни один клиент не получает устаревшие данные! - например, для запуска отчетов на БД потребуется убедиться, чтоэти данные обновляются)
- в случае интенсивной работы с этой таблицей возникают некоторые издержки (если в минуту выполняется 100 запросов, то проверка актуальности данных потребует дополнительных ресурсов)
- вы избегаете иметь дополнительные рабочие места, которые требуют управления, и вы избегаете полагаться на рабочие места (менее сложные)