Hi Hyperflame. Thanks for your reply. The problem is, between any given
time period, there can be millions of such records. For each of such query,
I will have to process those millions of records to get the top x entities.
This is definitely very inefficient and not acceptable.
-Neo
On Thursday, August 2, 2012 7:12:12 AM UTC+5:30, hyperflame wrote:
>
> Well, you could just use Google Cloud SQL if you really want a SQL
> environment.
>
> Otherwise ( this is just a quick example, obviously there are some
> optimizations you could do). Also i'm typing this out on my phone, so
> forgive me if I miss a semicolon or something.
>
> To add a string to the datastore:
> Entity record = new Entity("record");
> record.setProperty("some_input", input_string);
> record.setProperty("add_date", new Date());
> datastore.put(record);
>
> To search for strings in a given time period:
> Query q = new Query("record");
> Q.setFilter("add_date", FilterOperator.LESS_THAN,
> some_date_that_you're_searching_for);
> PreparedQuery pq = datastore.prepare(q);
>
> And then you can pull out the top x entities out of pq as a List, then
> extract their properties to find the string.
>
>
>
> On Aug 1, 1:29 am, Neo <[email protected]> wrote:
> > Suppose, In my website, I ask users to input some string. A user can
> input
> > string multiple times. Whenever any user inputs a string, I log it in
> the
> > database along with the time. Many strings can be same, even though
> > inputted by different users. In the home page, I need to give the
> interface
> > such that any user can query for top n (say 50) strings in any time
> period
> > (say 10 Jan 2012 to 30 Jan 2012). If it was SQL, I could have written
> query
> > like:
> >
> > select string, count(*)
> > from userStrings where day >= d1 and day <= d2
> > group by string
> > order by count(*) desc
> > limit n
> >
> > How do I solve it in GAE environment? For each such user query, I can't
> > process the record at query time - there can be millions of records.
> >
> > I am using JDO. My obvious goal is to minimize the app engine cost : CPU
> +
> > data.
> >
> > Thanks,
>
--
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-appengine/-/W9RoTvb0PHYJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.