需要Google App Engine中查找表的模式

时间:2011-03-16 16:05:31

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

我正在使用Python版Google App Engine和Datastore。加载包含查找数据的表的好方法是什么?

通过查找数据,我的意思是在初始加载后,不需要插入,删除或更新任何行 如果它破坏了引用它的其他行的引用完整性,则不能接受所有行并重新加载表。

以下是我正在使用的几种类型的示例,我想将查找数据加载到

class Badge(db.Model):
    name = db.StringProperty()
    level = db.IntegerProperty()

class Achievement(db.Model):
    name = db.StringProperty()
    level = db.IntegerProperty()
    badge = db.ReferenceProperty(reference_class=Badge)

这是一个不保存查找数据但是参考它的一个例子

class CamperAchievement(db.Model):
    camper = db.ReferenceProperty(reference_class=Camper)
    achievement = db.ReferenceProperty(reference_class=Achievement)
    session = db.ReferenceProperty(reference_class=Session)
    passed = db.BooleanProperty(default=True)

我想找出两件事:
加载数据的代码应该是什么样的? 什么应该触发加载代码执行?

2 个答案:

答案 0 :(得分:2)

如果它真的创建了一次并且在部署的生命周期内永远不会发生变化,而且它相对较小(几兆或更少),则将其与您的应用程序一起存储为数据文件。让应用程序最初将数据加载到内存中,并将其缓存在那里。

答案 1 :(得分:0)

认为你指的是某种后写缓存,但你的问题并不是那么清楚。

这是一种常见的模式,用于读慢速源(如数据库/磁盘)并将其缓存在快速源(如内存缓存/内存)中,以便以后快速检索。当事情发生变化时,你有责任清空所有缓存的项目。

请参阅Using memcache

上的第一个示例