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