On Aug 6, 1:14 am, Steve James <[email protected]> wrote: > I'd say horses for courses on this one. > > IMHO the Datastore may not be the best fit to solving your requirement. > > Perhaps Cloud SQL or BigQuery might be better suited?
Have to agree with Steve, this is increasingly sounding like a storage schema that the datastore is not appropriate for. On Aug 6, 4:49 am, Joakim <[email protected]> wrote: > I'd solve this by having one unique entity per combination of date and > string, storing the string's total for that day in said entity. You can > achieve this uniqueness either by formatting special entity names (string > ids) to include both the date and the string. Aggregate the day's totals in > an entity keyed on the date, holding a map/dictionary of string->count. > Your query would become something like this: > SELECT * FROM DayCount WHERE __key__ >= Key('DayCount', startDate) AND > __key__ <= Key('DayCount', endDate) Nice one, Joakim! Just to turn this into code: To insert an Entity into the datastore (this is not production-quality code, just showing an example): try { Key key = KeyFactory.createKey("someentityname", unique_string + CURRENT_MONTH + CURRENT_DAY + CURRENT_YEAR); Entity entity = datastore.get(key); //If that operation succeeded, then there is an entity already with that unique string, and was added today. Increase the count by one. int count = (Integer)entity.getProperty("count"); entity.setProperty("count", count + 1); entity.setProperty("add_date", new Date()); datastore.put(entity); } catch (EntityNotFoundException e) { //this means that the unique string has not been added so far today Entity entity = new Entity("someentityname", unique_string + CURRENT_MONTH + CURRENT_DAY + CURRENT_YEAR); entity.setProperty("count", 1); entity.setProperty("add_date", new Date()); datastore.put(entity); } And then at query time, you can do a standard search using the Query class. Of course, if your app is being accessed a lot, you need to shard, or do some memcaching of data. -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. 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.
