Мой вопрос довольно прост, но я несколько новичок в рельсах (и веб-программировании) и не могу найти хорошего ответа. Как мне обеспечить, чтобы две (или более) транзакции базы данных происходили атомарно на Heroku?
Могу ли я закодировать приложение с мьютексами, как любое многопоточное приложение, и ожидать, что оно будет работать должным образом в среде распределенного сервера, например Heroku? Если нет, то как лучше всего обеспечить атомарность двух или более транзакций базы данных?
Я знаю, что Heroku использует PostgreSQL, который позволяет мне получить массив блокировок базы данных, но эти блокировки сохраняются только для одной транзакции. Кроме того, я знаком с мьютексами (и pthreads) для синхронизации многопоточных приложений, но я не уверен, будут ли эти соглашения работать в Heroku должным образом, особенно если мой настоящий код приложения работает на нескольких серверах.
EDIT
Я определенно должен объяснить, что я пытаюсь сделать немного больше. Мне нужно сделать два звонка в базу данных. Первый вызов - чтение логического значения. Если это логическое значение истинно, мне нужно выполнить какое-то действие, а если оно ложно, мне нужно сделать что-то еще. Если я читаю TRUE, тогда мне нужно сделать что-то другое (интерфейс с внешними API и т. Д.), И если это удастся, тогда мне нужно установить логическое значение в false. Проблема в том, что я не знаю, как избежать ситуации, когда несколько клиентов читают истину из базы данных, когда, на самом деле, один клиент находится в пути, чтобы написать ложь, но еще не выполнил другие вещи, которые мне нужно сделать раньше писать ложь.