Храните почасовые клики с помощью счетчика в Google Appengine. - PullRequest
1 голос
/ 04 августа 2011

Я разрабатываю приложение на python для движка приложений Google, которое подсчитывает клики разного рода с помощью счетчиков с осколками.

Моя проблема в том, что я хочу получить статистику по кликам по часам, а не простообщая сумма всех кликов.

Один из способов добиться этого - добавить метку времени в индекс шардов:

def txn():
  index = random.randint(0, config.num_shards - 1)
  shard_name = code + str(index) # + timestamp without seconds
  counter = ClickCounter.get_by_key_name(shard_name)
  if counter is None:
    counter = ClickCounter(key_name=shard_name, code=code)
  counter.click += 1
  counter.put()
db.run_in_transaction(txn)

Проблема заключается в том, что подсчитать все шарды за месяцбудет более чем в 700 раз медленнее.

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

1 Ответ

1 голос
/ 05 августа 2011

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

...