2012-04-16 3 views
1

다음 Objectify 엔티티를 사용하여 Google 데이터 저장소에 데이터를 저장합니다. Query Google DataStore

public class Record implements Serializable { 

    private static final long serialVersionUID = 201203171843L; 
    @Id 
    private Long id;     
    private String name;   // John Smith 
    private Integer age;   // 43 
    private String gender;   // Male/Female 
    private String eventName;  // Name of the marathon/event 
    private String eventCityName; // City of the event 
    private String eventStateName; // State of the event 
    private Date eventDate;   // event date 

    //Getters & Setters 
} 

지금, 내 문제는 내가 주어진 EVENTNAME 또는 이벤트 도시 + 국가에 대한 기록의 수를 얻을 내 데이터베이스를 조회 할 수있는 방법인가? 또는 모든 City + Name 목록을 얻으십시오.

답변

1

위의 App Engine 카운팅은 very expensive입니다. 기본적으로 특정 조건 (eventName = something)으로 쿼리하고 모든 결과를 계산해야합니다. 비용은 키 전용 쿼리 (읽기 1 회 + 작은 연산 1 회)이며 카운트 된 엔티티 수가 증가함에 따라 증가합니다. 예를 들어 1 백만 개의 항목을 계산하면 0.8 달러가됩니다.

일반적으로 수행되는 작업은 전용 엔터티 내부의 속성으로 개수를 유지하는 것입니다. 카운트가 올라가면 (엔터티가 추가되면) 속성 값이 증가하고 엔터티가 삭제되면 감소합니다 (엔터티가 삭제됨).

큰 규모로 수행하려는 경우 엔티티 당 약 5 개의 쓰기/초 (실제 엔티티 그룹)의 쓰기/업데이트 제한 사항이 있음을 이해하십시오. 이 문제를 해결하는 방법은 sharded counters을 참조하십시오.

관련 문제