2013-08-16 2 views
1

AppEngine 데이터 저장소에 저장된 여러 엔터티가 모두 인덱스 된 숫자 속성을 갖고 있으며 현재 가장 큰 기존 값을 찾아야한다고 가정 해 보겠습니다.AppEngine에서 인덱싱 된 속성의 가장 큰 값 찾기

내림차순 정렬 순서와 제한 1로이 속성에서 정렬 된 투영 쿼리를 간단히 수행 할 수 있습니다. 반환 된 결과에는 내 대답이 포함됩니다.

이 방법이 최선의 방법입니까, 아니면이 값을 얻는보다 효율적인 방법이 있습니까?

는 (일관성이 경우 걱정 너무 많이하지 않습니다. 나는 동시에 최선을 다하고되고있는 몇 가지 값을 놓치는 경우에, 너무 많이. 그래서, 거래에 대한 필요성이 여기에 상관하지 않습니다.)

답변

2

GAE 데이터 저장소는 SQL 데이터베이스에 MAX과 동등하지 않으므로 실제로 열로 정렬하고 첫 번째 항목을 검색하는 것이 가장 좋습니다. 예 :

max_val = MyEntity.query().order(-MyEntity.my_numeric_field).get().my_numeric_field 

this forum discussion도 참조하십시오.

두 번째 옵션은 다른 엔터티에 최대 값을 저장 한 다음 첫 번째 엔터티 중 하나를 추가 할 때마다 트랜잭션을 업데이트하는 것입니다.

+0

색인이 이미 있으므로 쿼리와 함께 갈 것입니다. 링크를 +1하고 업데이트 된 최대 값을 별도의 위치에 저장하는 옵션 (일부 시나리오에서는 훨씬 더 효율적인 옵션)을 지적하십시오. 아마 MemCache에서도. –

+0

MemCache의 문제점은 물론 데이터가 언제든지 만료 될 수 있다는 것입니다. 그러나'ndb' 데이터 스토어를 사용하면 GAE가 적절할 때 MemCache가 자동으로 사용하기 때문에 MemCache에 대해 걱정할 필요조차 없습니다. – dlebech