查询Google DataStore

时间:2012-04-16 03:14:25

标签: google-app-engine google-cloud-datastore gql

我有以下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的记录数?或者获取所有城市+名称的列表。

1 个答案:

答案 0 :(得分:1)

在App Engine上计数是very expensive:您基本上需要查询某些条件(eventName = something),然后计算所有结果。成本是一个仅限密钥的查询(1个读取+ 1个小操作),并随着实体数量的增加而增加。例如,计算100万个实体将花费0.8美元。

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

如果您打算在更大范围内执行此操作,请了解每个实体(实际上是实体组)的写入/更新限制大约为5次写入/秒。有关如何解决此问题,请参阅sharded counters