1

Google DataStore にデータを保存するために、次の Objectify エンティティがあります。

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+State のレコード数を取得するにはどうすればよいですか? または、すべての City+Name のリストを取得します。

4

1 に答える 1

1

App Engine では、カウントは非常にコストがかかります。基本的には、特定の条件 (eventName = something) でクエリを実行し、すべての結果をカウントする必要があります。コストはキーのみのクエリ (1 回の読み取り + 1 回の小さな操作) であり、カウントされるエンティティの数に応じて増加します。たとえば、100 万のエンティティをカウントすると、0.8 ドルかかります。

通常行われるのは、オブジェクトのカウントを専用エンティティ内のプロパティとして保持することです。カウントが増加すると (エンティティが追加されると) プロパティ値が増加し、減少すると (エンティティが削除されます) 減少します。

これを大規模に行う予定がある場合は、エンティティ (実際にはエンティティ グループ) ごとに約 5 回の書き込み/秒の書き込み/更新制限があることを理解してください。これを回避する方法については、シャードされたカウンターを参照してください。

于 2012-04-16T06:16:36.023 に答える