1

여러 번 엔티티 속성 하나만 있으면됩니다. 따라서 key.get()을 사용하여 전체 Entity를 가져올 필요는 없습니다.Google Datastore에서 특정 엔티티 속성 가져 오기

투영 쿼리가 지정한 속성으로 불완전한 엔터티를 반환한다는 것을 알고 있습니다. 값은 인덱스에 있으므로 데이터 스토어에서 엔티티를 가져올 필요가 없습니다.

인덱스가 데이터 저장소보다 빠르다고 가정하기 때문에 키가 주어진다면 부분 엔티티를 가져 오는 방법이 있습니다. 데이터 저장소 대신 인덱스에서 정보를 가져 오는 것이 좋습니다.

예를 들어 무언가 같이 : 글 = some_key.get (투사 = [Article.title]) 인쇄 article.title

이 할 수있는 방법이 있나요? 질문 할 새로운 기능이 될 수 있습니까?

편집 : 방법이없는 것처럼 보입니다. 기존 색인은 특성별로 정렬됩니다. 유일한 방법은 하나의 열에 속성을 갖는 키로 정렬 된 인덱스를 만드는 방법이 있지만 추가 인덱스가있는 것이별로 유용하지 않은 것 같습니다.

+0

올바른 방법은 없습니다. –

+0

확인해 주셔서 감사합니다.조금 노력하면서 현재 엔티티 키의 값을 저장하는 속성 필드를 추가하여 인덱스에 저장하고 키순으로 정렬 할 수 있지만 가치가 없다고 생각합니다. 이 경우 색인은 | key_property | 제목 | __key__ | –

답변

3

기타 정보가 없으면 조기 최적화가 매우 중요합니다. 시간의 잠재적 인 차이가 최적화 과정에서 대부분의 시간을 차지한다고 생각하지 않는 한, 잘못된 영역에서 일하고 있습니다.

참고로 엔터티를 가져 오는 대기 시간은 엔터티의 크기와 관련이없는 네트워크 대기 시간입니다. 대형 엔터티 (xx-xxxx KiB)로 작업하지 않는 한 데이터 검색 크기는 대기 시간에 미치는 영향은 적지 만 적지는 않습니다.

큰 엔티티가 있고 실제로 시도해보고 싶다면 효과적으로 일관성을 유지하면서 효과적으로 물어 보는 작업이 필요합니다.

예 : 속성 myField1 & myField2를 Kind myKind에서 검색한다고 가정 해 봅시다.

당신은이 지수해야합니다

:

select myField1, myField2 from myKind WHERE __key__ HAS ANCESTOR Key(myKind, myId) 

:

- kind: myKind 
    ancestor: yes 
    properties: 
    - name: myField1 
    - name: myField2 

엔티티의 ID가 MYID라고 가정하고, 실체가없는 자손이 없다가, 그것은 쿼리를 수행 할 수 있습니다 참고 :이 작업은 하위 항목에서 수행 할 수 있으며 유일한 요구 사항은 동일한 종류의 하위 항목이없는 것입니다. HAS ANCESTOR 운영자가이 경우에 당신이 찾고있는 실체 조상을 일치하기 때문에

enter image description here

이 작동합니다. HAS ANCESTOR을 사용하면 쿼리가 강하게 일관성있게 지정되므로 강제로 일치하는 get처럼 작동합니다.

위 방식의 단점은 조상을 포함하는 복합 색인이 필요하다는 것입니다.이 경우 더 많은 저장 공간이 필요합니다. 다른 단점은 그것이 아마도 더 빠를 가능성이 없다는 것입니다. YMMV.