Objectify:在现有数据上添加@Cache注释并删除@Parent

时间:2014-01-13 22:11:04

标签: google-app-engine google-cloud-datastore objectify

有关更新域图的两个问题:

1)我是GAE的新手,刚刚部署了我的第一个基于Objectify的应用程序。只是为了发现,在我的第一批用户进入后不久,我很快就完成了数据存储读取配额限制:

snapshot fron datastore viewer

直到现在我还没有过多考虑服务器端缓存。我认为Objectify的会话缓存可以帮我完成工作。但现在我意识到我需要使用全局内存缓存。

根据Objectify的文档,我必须在按键访问的每个实体(而不是查询)上使用Objectify的@Cache注释。

但是我担心这会对我已存储在数据存储区中的数据产生副作用。

2)我现在也意识到我使用@Parent太多了。有几个使用@Parent的实体没有任何好处(由于数据存储区限制了属于同一根的实体的写操作,因此它有一些缺点。)

如果我继续从我的域中不再需要的实体中删除@Parent注释,它是否会对已经存在的实体产生副作用?

谢谢!

1 个答案:

答案 0 :(得分:3)

  • 对于客观化:默认情况下启用全局缓存,不过您 必须仍然使用@Cache注释您的实体类。
  • @Parent是 如果您需要一致的结果,请务必避免eventual consistency。删除祖先将对已存储的数据产生副作用,因为密钥将更改。您将需要迁移计划。

但最重要的是,免费配额是非常合理的,所以如果您已经与第一个用户遇到配额错误,那么我建议安装appstats并实际衡量真正的潜在原因是什么,即采取什么行动(s)负责大部分操作并对其进行操作。比一般方法好多了。