【发布时间】:2012-06-05 16:44:41
【问题描述】:
目前我正在做一个应该被很多人使用的项目。我担心数据存储区读/写/小型操作使用了太多资源。由于我是 appengine 的新手,是否有任何有效的方法可以使这些数字变小?我考虑过使用 memcache,但这不是最安全的方式。使用以下方法搜索数据存储实体也是一个好主意:
SELECT __key__ FROM table
然后使用:
....#code
table.get_by_id(entity.id())
....#code
?
非常感谢。
【问题讨论】:
-
table.get_by_id(entity.id())这部分没有意义。你已经拥有了实体,你又得到了它...... -
@aschmid00 让我们这么说吧。
results = db.GqlQuery("SELECT __key__ FROM chats")#some_code#let's say that I need some entitysomebody = chats.get_by_id(results[0].id())#...somebody.name = "whatever"somebody.put()如果有更好的方法,如果你能告诉我,我会很高兴。 -
results[0]是一个关键,那么为什么不db.get(results[0])?!我认为get_by_id会重建一个关键对象以从数据存储中获取它......对此不确定,但我认为这样的往返太过分了。 -
@aschmid00 关于使用 db.get 是正确的。即使不是 100% 保留,您也应该使用 memcache。当缓存未命中时,您只需拉出记录并将其存储在缓存中。无论如何,您都会提取记录,为什么不使用 memcache 并保存一些数据存储读取。
标签: python google-app-engine datastore