2012-05-14 35 views
0

我在將問題轉換爲高效的谷歌應用程序引擎數據存儲解決方案時遇到了問題。問題如下。我定義兩個對象之間的關係是這樣的實體,即:谷歌應用程序引擎數據存儲中的高效設置操作

struct Relation 
{ 
    Obj1 int 
    Obj2 int 

    // other data 
} 

現在我要以有效的方式執行以下查詢:給定一組對象set = [obj1, obj2, obj3, obj4]的,我想找到的所有關聯實體(E)其中E.Obj1 ∈ set ∧ E.Obj2 ∈ set。請注意,我事先不知道該設置,因此我無法預先計算該設置中的所有條目。有什麼方法可以在數據存儲中表示這個問題,以便我可以高效地檢索屬於給定集合的所有關係?

回答

1

等效的GQL查詢是「SELECT * FROM Kind WHERE Obj1 IN:1 AND Obj2 IN:1」,傳入該集合作爲第一個參數。不幸的是,IN查詢擴展到每個術語的一個查詢,所以這裏存在組合的查詢爆炸 - 在4個元素集的情況下有16個查詢。使用標準查詢沒有任何方法可以避免這種情況。

+0

當然,我可以做到這一點,但這完全不是我想要的:) – jessevdk

+0

@jessevdk不幸的是,沒有什麼不可思議的方法來解決它 - 這只是索引的工作原理。 –

相關問題