我有一个基于谷歌应用引擎的应用程序,它将数据存储在数据存储区中。我想实现一个每天读取大约20k行数据的cron,并将数据汇总成一个小得多的数据集,并将其存储在一个轻量级,易于访问的数据结构中,稍后我将用于向用户提供谷歌图表。
我认为每次用户需要图表时读取所有实例级数据的成本太高,因此我想提前编译数据"#34;每天一次。
我正在考虑以下选项,并且我对任何可以优化性能和最小化GAE开销的反馈或方法感兴趣。
选项:
1)创建一个小的csv或xml文件并将其保存在服务器本地,然后从那里读取数据
2)坚持另一个"汇总级别"数据存储中的对象并读取(仍然可能代价高昂?)
3)创建谷歌图表SVG并将其存储在本地然后重新提供给用户(不确定这是否可行)
谢谢!
答案 0 :(得分:1)
仔细检查,但我认为datastore + memcache最终可能是最便宜的。
在您的cronjob中,您预先计算每个图表需要返回的数据,并将其存储在数据存储区和内存缓存中。
对于每个图形请求,您都可以从memcache获取数据。 但是,可以随时删除内存缓存数据,因此如果没有,您可以从数据存储中读取它并将其放回内存缓存中。
答案 1 :(得分:0)
为什么不为第一个请求生成“昂贵”的数据,然后将这些结果存储在memcache?根据您的具体实施,即使是第一个昂贵的请求也可能比阅读和阅读稍微便宜一些。解析本地文件。随后的读取将会打到你的memcache,并且会更便宜。