1

我有以下 Objectify 实体将数据存储在 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+State 的记录数?或获取所有城市+名称的列表。

4

1 回答 1

1

在 App Engine 上计数非常昂贵:您基本上需要以特定条件(eventName = something)进行查询,然后计算所有结果。成本是仅键查询(1 次读取 + 1 次小型操作),并随着计算的实体数量而增加。例如,计算 100 万个实体将花费 0.8 美元。

通常所做的是将事物计数作为专用实体内的属性:当计数增加时增加属性值(添加实体)并在计数减少时减少(删除实体)。

如果您打算更大规模地执行此操作,那么请了解每个实体(实际上是实体组)的写入/更新限制约为 5 次写入/秒。请参阅分片计数器了解如何解决此问题。

于 2012-04-16T06:16:36.023 回答