Моделирование турнирных скобок в MongoDB - PullRequest
1 голос
/ 02 февраля 2010

Я экспериментировал с MongoDB, чтобы переместить в него некоторые части приложения. Я думаю, что основанный на документах db, такой как mongodb, отлично подойдет для турнирных скобок, но мне трудно найти подходящую модель. (все еще пытаюсь освободиться от догмы RDBMS)

У кого-нибудь есть идеи по поводу того, как можно смоделировать турнирные таблицы с одинарным и двойным исключением?

1 Ответ

2 голосов
/ 27 июня 2011

Оба варианта турнира в основном сводятся к каждому матчу, либо к одному из следующих вариантов:

  • Игрок выигрывает и выходит в следующий раунд
  • Игрок выигрывает и выигрывает турнир
  • Игрок проигрывает и покидает турнир
  • Игрок проигрывает и наступает в сетку проигравшего

Итак, если вы смоделируете это так, чтобы у вас была коллекция совпадений со схемой вроде:

{
_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
}

Вы можете составить оба типа турнирных скобок с этой схемой и повторно использовать свою турнирную логику, не делая различий между двумя, кроме настройки брекетов.

...