google-app-engine - 有没有办法在 Google App Engine 上执行聚合函数?

标签 google-app-engine aggregate-functions

关系数据库支持的一个好东西是聚合函数,如 count、sum、avg 等。但似乎如果你使用 GAE,当插入或更新记录时你必须计算和存储 count、sum、avg等整个表的值。但是,如果您有很多条件分组怎么办?给定一个人:

class Person {
    @Id
    Integer age;
    String city;
}

如果我愿意

  1. 总人数 和
  2. 平均年龄

每次我创建、更新或删除一个人时,我也应该计算这两个聚合并将它们作为单独的列存储在同一个表中,这是否正确。如果我还想要每个城市的总值和平均值,我是否应该将每个城市的这些值也作为单独的列存储在同一个表中?

最佳答案

正确:要正确使用 GAE 存储,您需要有选择地对模型的某些方面进行反规范化,保留“冗余”数据,在正常形式的数据库中,您可以即时重新计算这些数据,例如聚合 (总体和“按”分组)。

但是,在您的情况下,不要将此类字段添加到 Person 表中——这毫无意义!创建另一个 PersonAggregates 表,其中包含 City(总计为空/缺失)、Count、TotalAges(更易于维护:计算任何时间的平均值,即总计除以计数)。

关于google-app-engine - 有没有办法在 Google App Engine 上执行聚合函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993059/

相关文章:

oracle - Listagg 函数与 PLSQL 集合

google-app-engine - GAE : Exceeded maximum allocated IDs

java - 将应用程序部署到 Google 应用程序引擎时出现问题

mysql - SQL 仅选择列上具有最大值的行

mysql - 查询以查找最接近的较小日期

过去 X 个月内的 PostgreSQL 累积计数

mysql - 一段时间内的累计计数

android - 移动后端启动器无法将自定义 ID 写入数据存储区

google-app-engine - 演示项目中的appengine云存储编译错误

java - 如何替换 servingURL 后面的图像?