我有以下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的记录数?或者获取所有城市+名称的列表。
答案 0 :(得分:1)
在App Engine上计数是very expensive:您基本上需要查询某些条件(eventName = something),然后计算所有结果。成本是一个仅限密钥的查询(1个读取+ 1个小操作),并随着实体数量的增加而增加。例如,计算100万个实体将花费0.8美元。
通常做的是将事物的数量作为属性保存在专用实体内:当计数增加时(实体添加)增加属性值,当实例减少时减少(删除实体)。
如果您打算在更大范围内执行此操作,请了解每个实体(实际上是实体组)的写入/更新限制大约为5次写入/秒。有关如何解决此问题,请参阅sharded counters。