2012-05-14 4 views
0

효율적인 Google 애플리케이션 엔진 데이터 저장소 솔루션으로 설정된 문제를 변환하는 데 문제가 있습니다. 문제는 다음과 같습니다.Google 앱 엔진 데이터 저장소의 효율적인 집합 연산

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 불행히도, 주위를 둘러 볼 수있는 마법의 방법은 없습니다. 이것이 바로 색인 생성의 작동 방식입니다. –

관련 문제