2012-09-09 3 views
0

나는 NDB 프로젝션 쿼리가 작동하는 방법과 캐싱이 장면 그래서 유사한 모델을 제공NDB 프로젝션 및 캐싱 질문

뒤에 작동하는 방법에 대한 의심의 몇 가지있다 classMethod가 "TypeError : 알 수없는 구성 옵션 ('projection')"을 발생시킵니다. 키를 쿼리 할 필요없이 키를 직접 가져 오는 것에 대한 투영을 간단하게 호출 할 수 있습니까? NDB Caching When Using Projected Queries

가 투사가없는 검색어가 캐시 : 내가 제대로이 스레드를 이해하면

둘째, 캐싱에 대해 잘 모르겠어요? 이것은 단순히 get() (그리고 전체 인스턴스를 가져 오기)를 호출하여 투영하지 않고 캐싱하는 것이 더 나은가?

미리 감사드립니다.

답변

2

오류에 따라 get을 사용할 때 투영이 의미가 없습니다. 문서에서 "프로젝션에서 해당 속성에 대한 값만 가져오고 쿼리 인덱스에서이 데이터를 가져옵니다 (따라서 프로젝션의 속성을 인덱싱해야합니다)". 그래서 get은 인덱스를 통해 객체 속성에 액세스하지 않습니다. 참조 된 질문에서 캐싱에 대한 gvr의 의견을 참고하십시오.

+0

좋아요, 아마도 색인에 대한 오해가 있습니다. Key(). get()를 사용하지 않는 이유는 GAE 키의 인덱스를 사용하여 인스턴스를 가져 오는 것입니까? 예 : Key (Users, 1) .get()은 ID가 1 인 User의 전체 인스턴스를 가져옵니다. 키가 포함 된 인덱스에서 가져 오지 않았습니까? –

+0

투영 특성이 색인에서 검색됩니다. 즉, 프로젝션의 모든 속성에는 인덱스가 있어야합니다. –

+0

Key (Users, 1) .get()은 인덱스 조회없이 엔티티 테이블에서 엔티티를 직접 가져옵니다. – proppy