Google app engine 如何解决googleappengine中带条件的聚合查询

Google app engine 如何解决googleappengine中带条件的聚合查询,google-app-engine,aggregate,conditional-statements,large-data-volumes,Google App Engine,Aggregate,Conditional Statements,Large Data Volumes,假设,在我的应用程序中,我要求用户输入一些字符串。用户可以多次输入字符串。每当任何用户输入字符串时,我都会将其与日期一起记录在数据库中。许多字符串可以相同,即使由不同的用户输入。在主页中,我需要提供一个界面,这样任何用户都可以在任何时间段(比如最近45天,或者2012年1月10日至2012年1月30日)查询top n,比如50个字符串。如果是SQL,我可以编写如下查询: select string, count(*) from userStrings where day >= d1 and

假设,在我的应用程序中,我要求用户输入一些字符串。用户可以多次输入字符串。每当任何用户输入字符串时,我都会将其与日期一起记录在数据库中。许多字符串可以相同,即使由不同的用户输入。在主页中,我需要提供一个界面,这样任何用户都可以在任何时间段(比如最近45天,或者2012年1月10日至2012年1月30日)查询top n,比如50个字符串。如果是SQL,我可以编写如下查询:

select string, count(*)
from userStrings where day >= d1 and day <= d2
group by string 
order by count(*) desc
limit n
对于每个用户查询,我不能在查询时处理记录-可能有数百万条记录。如果没有时间段约束,我可以这样做-为UserString创建一个类,为每个不同的用户字符串维护它的唯一对象,为用户输入的字符串检索相应的对象,并增加它的计数[即使采用这种方法,我假设数据存储必须处理所有UserStrings对象~100000,并返回前n个-因此它本身可能是非常繁重的查询]

我正在使用JDO。我的明显目标是最小化应用程序引擎的成本:CPU+数据


谢谢,

您可以使用脱机处理字符串。如果您需要实时答案,您可以使用memcache存储一个临时记录,记录该单词在一天中输入的次数和处理的背景。

嗨,Sebastian。问题更多的是我应该如何对数据建模以有效地回答查询。在从某种意义上讲,这更多的是谷歌应用程序引擎约束下的算法问题。我也可以使用cron作业来处理数据。实时性不是绝对的要求。