Задача: есть множество процессов на разных машинах, между которыми гуляют некоторые сообщениями через очередь с множественным доступом как на запись, так и на чтение. У всех их общая реляционная база данных. Предоставить другие средства для обмена в силу специфики задачи проблематично. Нужно обеспечить гарантированную безопасность при обмене сообщениями и чтоб при этом параллельность обработке не сводилась на нет. Видимые варианты решения:
1) Игры со степенью изоляции. Интересный вариант с аккадемической точки зрения, но я не готов его использовать в приложении где каждый сбой критичен.
2) Смена статуса + таймаут + оптимистичная автономная блокировка (последнее нужно на случай, если процесс по каким-то причинам не укладывается в отведённый заведомо большой таймаут). Всё замечательно с точки зрения гарантии ничего не потерять и изоляции. Но относительно сложно в реализации: легко где-нибудь ошибиться и сложно обеспечить полноценное тестирование.
Есть ещё какие-нибудь идеи?
P.S. Я знаю, что RDBMS не предназначены для использования в качестве очередей, но внешние условия такие.