【发布时间】:2010-08-03 19:42:07
【问题描述】:
我一直在使用 Google App Engine,但我的一些数据查询遇到了一些性能缓慢的问题。我读过设计 App Engine 数据存储区与使用 SQL 数据库的思维方式不同,我不确定我这样做是不是最好的方式。我有两个问题要尝试走上正轨:
具体来说:
我有一个Foo 类型和一个UserFoo 类型。每个UserFoo 都是对应Foo 的“实例”,并保存特定于该实例的数据。我的Foo 类型有一个fooCode 属性,它是一个唯一标识符,我使用它们的fooCode 属性将每个UserFoo 映射到每个Foo。然后我使用如下代码对每个 Foo 进行操作:
foos = Foo.all().filter('bar =', bar)
for foo in foos:
userFoo = UserFoo.all().filter('userKey =', user).filter('fooCode =', foo.fooCode)
注意:我在引用键上使用fooCode,以便我们可以轻松删除并重新添加新的Foos,而不必重新映射所有相应的UserFoos。
一般:
设计 GAE 数据存储表的典型方法以及使用它们的最佳实践是什么?
【问题讨论】:
-
Foo和UserFoo对象之间是否存在一一对应关系?
-
请注意,您所显示的实际上并不是 GQL 查询。
-
1 Foo 到许多 UserFoos。此外,我最初将调用作为 GqlQuery 进行了更改,但因为我读到它们速度较慢而更改了它们。
-
是的,GqlQuery 比较慢,因为必须解析查询。
标签: google-app-engine bigtable