在GAE数据存储列中查找最常见的值

时间:2015-02-03 18:24:42

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

我在Google应用引擎数据存储区中有一个表ItemData,其中的列如下所示。

-------------------------------
| letter | f_no | s_no | t_no |
-------------------------------
|  A     |  2   |  3   |  0   |
|  X     |  5   |  8   |  5   |
|  C     |  4   |  6   |  5   |
|  T     |  2   |  3   |  6   |
|  A     |  2   |  4   |  0   |
|  A     |  6   |  3   |  0   |
|  C     |  2   |  2   |  9   |
-------------------------------

我需要在每列中找到最常见的值。

如何使用GQL实现此目的?

1 个答案:

答案 0 :(得分:2)

没有一个查询能够做到这一点。没有与MySQL-ism select count(distinct column_id) from table等效的数据存储区。

考虑到一个大表和许多不同的不同值,它实际上可能是一个非常复杂的问题。天真的方法是简单地获取所有实体并在代码中进行计数,但如果你的表中有很多实体,那么这最终会超出查询截止日期。

一般来说,当涉及到数据存储区查询问题时,如果查询看起来很烦人,看起来它不会扩展,并且你需要能够相对频繁地执行它,那么你很可能应该做好准备通过使用某种加速结构或计数器收集插入信息。如果您不需要经常执行它,MapReduce可能就是答案。