2009-06-14 65 views
2

我们希望通过我们的应用收集使用统计信息。 因此,我们希望跟踪服务器端某处的用户操作。性能:数据存储写入与请求日志写入

哪种选择更适合,性能方面:

  1. 在App Engine请求日志跟踪用户操作。即为每个用户动作写入日志条目。
  2. 跟踪数据存储中的表中的用户操作。为每个用户操作编写一个条目。

我猜请求日志写入是远远快于数据存储写道。它是否正确? 你有什么经验和建议?

感谢: 亨宁

回答

4

我可以证实,(通过我自己的经验观察,才:我没有看到这个解决在官方文档),写日志条目比写一个存储条目更快。考虑它,这是有道理的:日志条目总是附加的,没有索引,没有特定的事务问题(超出每个日志条目的原子性)等等;受到如此严格的限制,他们可以更加优化是有道理的。

然而,我曾经(在一年前的beta版前几天很早)观察到一个案例,我认为有应该是是我写的日志条目,但找不到它;我无法重现观察结果,这可能是我的代码中的一个小故障,或者是GAE中的一个固定的错误,但它让我对数据完整性感到惊叹 - 日志的完整性如何保证?除非我明确地看到文档中的某些内容,否则我不会觉得我可以依靠100%完整性的日志 - 如果偶然失去一百万条记录中的一条记录将是一个绝对的悲剧,也许会用于商店的更高保证值得表现影响。

+2

我同意。日志对于主要簿记来说足够可靠是不完全确定的。但对于基本统计数据,我会使用它们来避免数据存储配额和可能的索引。对我来说,主要问题是获取日志*关*应用引擎。由于日志位于环形缓冲区中,因此很有可能会丢失数据。 – JasonSmith 2009-12-02 10:55:12

2

请求日志是非常快很多 - 有没有必要对每一个记录语句往返;日志可以在用户请求结束后累积和推送。但是,就我所知,没有对请求日志的编程访问权限 - 所以如果您需要,您需要使用数据存储。

如果你想两全其美的,留意的任务队列API,被很快释放。 :)

+1

谢谢。实际上有一种访问请求日志的方式,您可以使用appcfg.py脚本下载它们。随着旧日志被删除,我将不得不定期下载它们。 – henning77 2009-06-15 19:05:01