2012-04-16 63 views
1

我有以下Objectify實體將數據存儲在Google DataStore中。查詢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的或事件城+國?或者獲取所有城市+名稱的列表。

回答

1

在App Engine計數是very expensive:您基本上需要查詢某些條件(eventName = something),然後計算所有結果。成本是一個關鍵的查詢(1次讀取+1次小操作),並隨着計數的實體數量而增加。例如,計算100萬個實體的成本爲0.8美元。

通常做的事情是保持事物在專用實體內的數量:在計數增加時增加屬性值(實體添加)並在實體刪除時減少(實體刪除)。

如果您打算在更大範圍內執行此操作,那麼您應該瞭解每個實體(實體組實際)大約有5次寫入/更新的寫入/更新限制。有關如何解決此問題,請參閱sharded counters