Я изучаю возможность переноса приложения, созданного поверх MySQL, в Spanner и не уверен, смогу ли я воспроизвести определенные функции из нашей базы данных MySQL.
в основном упрощенная версия нашей схемы mysql будет выглядеть так
пользователи
id
имя
баланс
user_transactions
id
user_id
external_id
сумма
user_locks
user_id
дата
когда приложение получает транзакцию для пользователя, приложение запускает транзакцию mysql, обновляет user_lock для этого пользователя, проверяет, достаточно ли у пользователя баланса для транзакции, создает новую транзакцию, а затем обновляет баланс. Возможно, приложение получает транзакции для пользователя одновременно, поэтому блокировка заставляет их быть последовательными.
Можно ли повторить это в Spanner? Как мне это сделать? Обычно, если приложение получает две транзакции одновременно, я хочу убедиться, что им дан заказ и что измененные данные из первой транзакции распространяются на вторую транзакцию.