Как бы вы спроектировали эту систему обработки сообщений в .NET / SQL Server?

Допустим, у меня есть таблица базы данных SQL Server с X (> 1 000 000) записей, которые нужно обработать (получить данные, выполнить внешнее действие, обновить статус в базе данных) одну за другой. некоторые рабочие процессы (либо консольные приложения, служба Windows, рабочие роли Azure и т. д.). Мне нужно гарантировать, что каждая строка обрабатывается только один раз. В идеале эксклюзивность должна быть гарантирована независимо от того, сколько машин / процессов было задействовано для обработки сообщений. Меня больше всего беспокоит то, что два оператора SELECT одновременно захватят одни и те же строки.

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

5
задан John Sheehan 21 September 2010 в 22:49
поделиться