0

假设,在我的应用程序中,我要求用户输入一些字符串。用户可以多次输入字符串。每当任何用户输入一个字符串时,我都会将它与日期一起记录到数据库中。许多字符串可以相同,即使由不同的用户输入。在主页中,我需要提供界面,以便任何用户都可以在任何时间段(例如最近 45 天或 2012 年 1 月 10 日至 2012 年 1 月 30 日之间)查询前 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 + 数据。

谢谢,

4

1 回答 1

0

您可以使用App Engine 任务队列离线处理字符串。如果您需要实时答案,您可以使用 memcache 存储该词在白天输入的次数的临时记录,并在后台处理。

于 2012-06-26T17:39:00.643 回答