3

一貫性を維持するためにSQLデータベースでお金を処理する方法を考えていました。表は以下のようになると思います。

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

table user
    user_id
    balance_usd

table game
    game_id
    pot_usd
    ...
4

2 に答える 2

0

CurrentGameStakesその不測の事態に対処するために、playerIDと賭け金額のフィールドを含むテーブルを作成できます。次に、ハンドが終了したら、賭け金の合計を勝者に転送し、何らかの理由でゲームが完了しなかった場合は、賭けた金額を各プレーヤーに返します。

于 2012-11-14T09:27:57.387 に答える
0

ゲームの開始時にbalance_usdとpot_usdを追跡する必要があります。ゲームがキャンセルされた場合は、これらの値を復元するだけです。完了するまで実行された場合は、それらを追跡するために使用していたテーブルからレコードをクリアします。

于 2012-11-14T09:28:42.710 に答える