假设我在 AppEngine DataStore 中存储了几个实体,它们都具有索引数字属性,我需要找到当前存在的最大值。
我可以简单地使用降序排序和限制为 1 对此属性进行排序的投影查询。返回的结果将包含我的答案。
这是最好的方法还是有更有效的方法来获得这个值?
(在这种情况下,一致性并不太担心。如果我错过了同时提交的几个值,我不会太在意。所以,这里不需要事务。)
假设我在 AppEngine DataStore 中存储了几个实体,它们都具有索引数字属性,我需要找到当前存在的最大值。
我可以简单地使用降序排序和限制为 1 对此属性进行排序的投影查询。返回的结果将包含我的答案。
这是最好的方法还是有更有效的方法来获得这个值?
(在这种情况下,一致性并不太担心。如果我错过了同时提交的几个值,我不会太在意。所以,这里不需要事务。)
由于 GAE 数据存储在 SQL 数据库上没有等效MAX
项,因此确实最好按列排序并检索第一个条目。例如:
max_val = MyEntity.query().order(-MyEntity.my_numeric_field).get().my_numeric_field
另请参阅此论坛讨论。
您的第二个选择是将最大值存储在其他实体中,然后在您添加第一个实体时更新它(可能在事务中)。