Здравствуйте, я пытаюсь изучить хранилище данных движка приложения, моделируя БД для хранения рейтинга пользователя и игровых баллов для игры для 4 игроков.
Пропускная способность записи будет низкой, поэтому я пытаюсьоптимизировать для чтения, так как будет много запросов, чтобы показать такие вещи, как:
- Получить 100 лучших игроков по рангу
- Показать детали игры (участники игроков и оценки) для10 последних игр, сыгранных любыми игроками
- Показать сведения об игре (участвующие игроки и счета) за последние 10 игр, сыгранных определенным игроком
Я подумываю использоватьlistproperty заполнен ключами игроков на стороне Many, например:
class Player(db.Model):
username = db.UserProperty()
rank = db.IntegerProperty()
class Game(db.Model):
date_played = db.DateTimeProperty(auto_now_add=True)
players = db.ListProperty(db.Key)
#this will always have 4 participant player keys
scores = db.ListProperty(db.IntegerProperty)
#the 4 game scores corresponding to the 4 participating players
У меня есть ощущение, что использование параллельных ListProperties для игроков и очков в классе Game не очень эффективно, можете ли выувидеть какие-либо недостатки в этом подходе?Есть ли лучший способ?
Я думал об использовании отдельного класса отношений, который хранит ссылочные свойства как для игр, так и для игроков, но это немного похоже на избыточное убийство и усложняет запросы.
спасибо pmanacas