Rob*_*ess 11 google-app-engine aggregate-functions
关系数据库支持的好处之一是聚合函数,如count,sum,avg等.但似乎如果你使用GAE,当插入或更新记录时,你必须计算并存储count,sum,avg等.整个表的价值.但是如果你有很多条件分组怎么办?鉴于一个人:
class Person {
@Id
Integer age;
String city;
}
Run Code Online (Sandbox Code Playgroud)
如果我想
每次创建,更新或删除某个人时,我都应该计算两个聚合并将它们作为单独的列存储在同一个表中,这是正确的吗?如果我还想要每个城市的总价值和平均值,我是否应该将每个城市的这些值也存储在同一个表中的单独列中?
正确:要正确使用GAE存储,您需要有选择地对模型的某些方面进行去标准化,保留"冗余"数据,这些数据在正常形式的数据库中,您可以即时重新计算,例如聚合(整体和"按"分组"分组.
但是,不要Person
在你的情况下将这些字段添加到表中 - 这没有多大意义!制作另一个PersonAggregates
表格,其中包括City(整体总计为空/缺失),Count,TotalAges(更容易维护:随时计算总计除以计数).
归档时间: |
|
查看次数: |
3183 次 |
最近记录: |