Google App Engine日志的工作原理是什么?

时间:2010-03-10 18:23:12

标签: google-app-engine

执行Logging语句时Google会将日志存储在何处?记录语句似乎非常快,因此它们似乎不会存储在数据存储区中。

原木的可靠性如何?如果我执行日志记录并且成功,那么它是否会在日志中显示出来?

存储过去的历史记录多少?

我对此感兴趣的原因是因为我正在建立一个问答网站,我想跟踪每个唯一登录用户对每个问题的观看次数,并在问题页面上显示查看次数。因此,如果10个不同的用户访问问题页面100次,它仍然只计为10个独特的视图。

我有一台非现场计算机,可以为我的应用程序进行后台处理。我计划让这台非现场计算机每30分钟下载一次日志,并根据日志计算每个问题的查看次数。通过这样做,我不必为每个用户查看的每个不同问题创建数据存储区实体。

你们觉得怎么样?有没有人看到这个问题?

编辑:我想我主要担心的是日志的可靠性。

1 个答案:

答案 0 :(得分:5)

这不是你问题的答案 - 相反,它是对你要解决的问题的回应。

如果您熟悉Bloom Filters并使用Memcached's incr(或sharded datastore counter),则可以创建“足够好”的解决方案。您可以使用布隆过滤器来测试值是否在集合中(在本例中为用户ID),如果不是,则递增计数器并将值添加到过滤器。 Bloom Filters的一个属性是向要检查包含的集合添加值是一个恒定时间操作。 Spacewise,它需要一些空间来存储每个潜在的过滤器,但这似乎比编写代码定期grep uniques时要简单一个数量级。 Here's a Python implementation

然而,没有什么是免费的 - 我说“足够好”很重要。使用Bloom Filters,总会出现误报的可能性。也就是说,根据每个问题的散列大小,您很可能会检查用户ID是否已被计数,并且当用户第一次查看该问题时获得“是的” 。您可以计算出合理假阳性所需的大小,但这样做会有空间权衡。