谷歌应用引擎数据存储区中的高效设置操作

时间:2012-05-14 11:18:04

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

我在将设置问题转换为高效的Google应用引擎数据存储解决方案时遇到问题。问题如下。我有一个实体定义两个对象之间的关系,即这样的东西:

struct Relation
{
  Obj1 int
  Obj2 int

  // other data
}

现在我想以有效的方式执行以下查询:给定一组对象set = [obj1, obj2, obj3, obj4],我想找到E的所有Relation实体(E.Obj1 ∈ set ∧ E.Obj2 ∈ set)。请注意,我事先不知道该设置,因此我无法预先计算集合中的所有条目。有没有办法在数据存储区中表示此问题,以便我可以有效地检索属于给定集合的所有关系?

1 个答案:

答案 0 :(得分:1)

等效的GQL查询是“SELECT * FROM Kind WHERE Obj1 IN:1 AND Obj2 IN:1”,将集合作为第一个参数传递。不幸的是,IN查询扩展到每个术语的一个查询,因此这里有一个组合的查询爆炸 - 在4个元素集的情况下有16个查询。用标准查询实际上没有办法避免这种情况。