用于python的Google应用引擎中的expando属性的自动索引

时间:2011-01-26 17:46:02

标签: python google-app-engine expando

Google应用引擎python sdk提供了一个Expando类型对象,可用于向可以持久保存到数据存储区的对象添加动态属性。

应用引擎还要求对于需要搜索或排序对象的任何属性,必须先创建索引,然后才能将应用上传到Google的服务器。这真的很奇怪,因为这意味着我应该事先知道我的用户将在我的对象上创建什么属性。如果我事先知道,为什么我不在现有模型中将它们定义为静态属性?

有人知道在上传到应用引擎后,如何自动为Expando模型的动态属性创建索引?如果没有,任何人都可以告诉我为什么当它不能让你创建可以搜索或排序的新属性时,gae会将Expando称为动态构造,只有属性不可搜索或可排序。

1 个答案:

答案 0 :(得分:4)

所有属性都会自动为简单查询编制索引。在这种情况下,简单查询是:

  1. 仅使用相等过滤器,不使用排序顺序或不等式过滤器。
  2. 对单个字段进行不等式过滤或排序,而不使用其他过滤器。
  3. 如果您想进行更复杂的查询 - 例如混合不等式和相等过滤器的查询,那么您是否需要构建自定义索引。

    无法在运行时构建自定义索引。如果要使用expandos,则需要确保将执行的查询限制为在上述某种情况下可满足的查询。