GAE Datastore: «общее» свойство по сравнению с добавлением позиций? - PullRequest
2 голосов
/ 10 ноября 2010

Это еще один вопрос хранилища данных Google App Engine.

Допустим, мое приложение отслеживает кучу крыс и сколько сыра они съели.Каждая сущность Rat имеет серию Meal сущностей - каждая отслеживает, когда крыса съела и сколько кусочков сыра (свойство slices).Каждый Rat также имеет свойство total_slices, которое обновляется при регистрации нового приема пищи.

Следует ли мне отказаться от свойства total_slices в пользу простого сложения slices каждого Mealкогда мне нужно знать сумму?В документации Datastore говорится, что запросы дешевы, в то время как обновление объекта с высокой частотой проблематично (Google определяет «высокую частоту» как обновление объекта чаще, чем раз в секунду с постоянной скоростью).Поэтому, если у меня есть несколько действительно прожорливых крыс, которые пируют чаще, чем раз в секунду, я рискую прекратить время, когда обновляю Rat total_slices.

Есть предложения, как лучше спроектировать этот сценарий?

1 Ответ

4 голосов
/ 10 ноября 2010

В вашем вопросе есть две отдельные проблемы:

1.Следует ли нормализовать total_slices до сущности Rat?

Чтобы ответить на этот вопрос, необходимо проанализировать шаблоны доступа к данным вашего приложения.Например:

  • Является ли получение total_slices для Rat обычной задачей?
  • Вам когда-нибудь понадобится перечислить или отсортировать Rats по total_slices?
  • Будет ли суммирование каждого Meal все еще эффективным после накопления данных за несколько лет?

2.Что вы делаете в GAE, если у вас есть объект, который необходимо обновить более чем за 1 секунду?

Используйте Sharded Counter .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...