一貫性を維持するためにSQLデータベースでお金を処理する方法を考えていました。表は以下のようになると思います。
次のシナリオを考えてみましょう。2人のプレーヤーがプレーしている場合、彼らが賭けたお金は両方から差し引かれ、balance_usd
に追加されpot_usd
ます。しかし、サーバーが手の真ん中でダウンしたとします。ここでのデータベースの一貫性は、おそらく、入金したお金をpot_usd
2人のプレーヤーに返還してbalance_usd
効果的にハンドをキャンセルする必要があることを意味します。トランザクションだけでこの問題を解決できるとは思えません。これを処理するために、ポーカーサーバーのバックエンドをどのように設計する必要がありますか?
table user
user_id
balance_usd
table game
game_id
pot_usd
...