I just realized that I should have phrased this as a question.

Is it true that updating a single entity more than once a second is
problematic?

How often can one single entity (using a transaction) with a low
likelyhood of contention?

If the answer depends on the number of indices it's in, what are some
reasonable rules of thumb?

Thanks,
-andy

On Aug 10, 6:10 am, Andy Freeman <[email protected]> wrote:
> > Finally, do look at the info on sharded counters if you expect
> > individual counters to be updated more than about once a second.
>
> That is fairly disturbing advice as it seems to suggest that updating
> a simple entity more than once a second is problematic.
>
> I would have thought that it would be safe to update a given entity
> 10-15 times/second and maybe even 20x/second. (10x/second is 100ms per
> update, 15 is over 65ms per update, 20 is 50ms per update.)  Frankly,
> I'm surprised that 5 times/second is too fast. (5x/second is 200ms per
> update.)
>
> On Aug 10, 5:24 am, "Nick Johnson (Google)" <[email protected]>
> wrote:
>
>
>
> > On Sun, Aug 9, 2009 at 4:58 PM, Markitecht<[email protected]> wrote:
>
> > > Thanks Nick, makes complete sense.
>
> > > I'll write it so that for each Interaction, it finds the appropriate
> > > entity, increments the counter and stores it; if looking for the
> > > entity turns nothing up, i make a new one with a counter set to 1.
>
> > > right?
>
> > Right. Just make sure to do it inside a transaction if you need exact
> > counts. And use key naming to avoid the need to do queries.
>
> > Finally, do look at the info on sharded counters if you expect
> > individual counters to be updated more than about once a second.
>
> > -Nick Johnson
>
> > > thanks again for the quick and kind attention.
>
> > > best,
> > > Christopher
>
> > > On Aug 7, 6:02 am, "Nick Johnson (Google)" <[email protected]>
> > > wrote:
> > >> Hi Markitecht,
>
> > >> It sounds like your best option is to have a single Interaction entity
> > >> for each unique string. You can use the key name to ensure uniqueness.
> > >> Then, to record a new interaction, in a transaction fetch the existing
> > >> one (if any), increment the count, and store it.
>
> > >> If you expect some interactions to be very popular (more than a few
> > >> updates a second), you should probably look into sharded counters.
>
> > >> -Nick Johnson
>
> > >> On Wed, Aug 5, 2009 at 7:15 PM, Markitecht<[email protected]> wrote:
>
> > >> > I am writing a dirt-simple tracking API.
>
> > >> > For the sake of explanation, i will over-simplify my question even
> > >> > further.
>
> > >> > I have an endpoint that accepts one item of string metadata, and saves
> > >> > a new instance of an Interaction object.
>
> > >> > (the interaction object also saves the user and the date created)
>
> > >> > How do i query Interaction to return the most popular
> > >> > 'interactions' (using those string metadata values), with a count for
> > >> > each?
>
> > >> > This seems *so* simple, but i just can't figure out how to do it on
> > >> > AE.
>
> > >> > Thanks,
> > >> > Christopher
>
> > >> --
> > >> Nick Johnson, Developer Programs Engineer, App Engine
>
> > --
> > Nick Johnson, Developer Programs Engineer, App Engine- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to