2

アプリの一部を MongoDB に移動するために MongoDB を試しています。mongodb のようなドキュメント ベースのデータベースは、トーナメント ブラケットに適していると考えていますが、適切なモデルを見つけるのに苦労しています。(RDBMS ドグマからの脱却を試みています)

シングルエリミネーションとダブルエリミネーションのトーナメントブラケットをモデル化するための良い方法について何かアイデアはありますか?

4

1 に答える 1

4

両方のトーナメントのバリエーションは、基本的に各試合に帰着し、次のいずれかのオプションになります。

  • プレイヤーが勝利し、次のラウンドに進みます
  • プレーヤーが勝ち、トーナメントに勝ちます
  • プレイヤーがトーナメントに負けて退場する
  • プレーヤーが負けてルーザー ブラケットに進む

したがって、次のようなスキーマとの一致のコレクションを持つようにモデル化すると、次のようになります。

{
_id :.., <- match id
players:[playerId1, playerId2],
resultForWinner: <either "WINS_TOURNAMENT" or match id of next match>
resultForLoser: <either "EXIT_TOURNAMENT" or match id of loser bracket match
}

このスキーマを使用して両方のタイプのトーナメント ブラケットを作成し、ブラケット セットアップ以外に 2 つの違いを区別せずにトーナメント ロジックを再利用できます。

于 2011-06-27T08:06:24.033 に答える