I have read the following
"Timeouts due to datastore issues --- [...] The most common example of
this occurs when you are rapidly inserting a large number of entities
of the same kind, with auto-generated IDs. In this case, most inserts
hit the same range of the same tablet, and the single tablet server is
overwhelmed with writes. [...] If this does affect your app, the
easiest solution is to use more evenly distributed IDs instead of the
auto-allocated ones [...]"
( http://code.google.com/appengine/articles/handling_datastore_errors.html
)
Let's say I am having a model "Parent" and a model "Child". For Parent
entities, I use key names that are evenly distributed. For Child
entities, I use auto-generated key IDs and _no_ key names, but all
Child entities are children of Parent entities, so the paths to the
children contain the evenly distributes key names of the parents.
If I have many write operations on children that are in the same
entity group, the described error could occur. But what happens if my
write operations are on children that are in different entity groups?
Their IDs are auto-generated and not evenly distributed, but their
paths contain the evenly distributed key names.
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-a...@googlegroups.com.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
Thanks for your fast answer!
> <mailto:google-a...@googlegroups.com>.
> To unsubscribe from this group, send email to
> google-appengi...@googlegroups.com
> <mailto:google-appengine%2Bunsu...@googlegroups.com>.
I understand the process of evenly distributing IDs since they are Integer values.. is there a canonized appengine way to evenly distribute key_names?Just make sure key_name1 and key_name2 don't have their i-th letters "too close" too eachother? How far is far enough?Does doing even distribution matter if you aren't using auto-generated IDs?
counter_standard_dbf
counter_standard_clo
or would something like
dbfo01la_counter_standard
clo091b_counter_standard
work better?
I'm thinking of cases where you may use keynames that can in some way
be constructed/predicted for fast access later.
like..<username>_counter_standard
Would the common pre-fix or post-fix make for close distribution? :|
On Feb 18, 5:59 pm, "Nick Johnson (Google)" <nick.john...@google.com>
wrote:
> Hi Eli,
>
> Using a randomly generated ID like a uuid is perfectly satisfactory to
> achieve an even distribution.
>
> On Wed, Feb 17, 2010 at 7:02 PM, Eli Jones <eli.jo...@gmail.com> wrote:
> > I understand the process of evenly distributing IDs since they are Integer
> > values.. is there a canonized appengine way to evenly distribute key_names?
>
> > Just make sure key_name1 and key_name2 don't have their i-th letters "too
> > close" too eachother? How far is far enough?
>
> > Does doing even distribution matter if you aren't using auto-generated IDs?
>
> It certainly can - if you insert, in order, "aaaa", "aaab", "aaac", etc,
> you'll encounter the same problem at very high volumes as you'd see with
> auto generated IDs.
>
> -Nick Johnson
>
>
>
>
>
>
>
> > Thanks for information.
>
> > On Wed, Feb 17, 2010 at 1:32 PM, Nick Johnson (Google) <
> > nick.john...@google.com> wrote:
>
> >> Hi Ulrich,
>
> >>> google-appengi...@googlegroups.com<google-appengine%2Bunsubscrib e...@googlegroups.com>
> >>> .
> >>> For more options, visit this group at
> >>>http://groups.google.com/group/google-appengine?hl=en.
>
> >> --
> >> Nick Johnson, Developer Programs Engineer, App Engine
> >> Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
> >> 368047
>
> >> --
> >> You received this message because you are subscribed to the Google Groups
> >> "Google App Engine" group.
> >> To post to this group, send email to google-a...@googlegroups.com.
> >> To unsubscribe from this group, send email to
> >> google-appengi...@googlegroups.com<google-appengine%2Bunsubscrib e...@googlegroups.com>
> >> .
> >> For more options, visit this group at
> >>http://groups.google.com/group/google-appengine?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-a...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengi...@googlegroups.com<google-appengine%2Bunsubscrib e...@googlegroups.com>
What about keynames like:
counter_standard_dbf
counter_standard_clo
or would something like
dbfo01la_counter_standard
clo091b_counter_standard
work better?
I'm thinking of cases where you may use keynames that can in some way
be constructed/predicted for fast access later.
like..<username>_counter_standard
Would the common pre-fix or post-fix make for close distribution? :|
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
On Feb 19, 11:58 am, "Nick Johnson (Google)" <nick.john...@google.com>
wrote:
> > > >>> google-appengi...@googlegroups.com<google-appengine%2Bunsubscrib e...@googlegroups.com><google-appengine%2Bunsubscrib
> > e...@googlegroups.com>
> > > >>> .
> > > >>> For more options, visit this group at
> > > >>>http://groups.google.com/group/google-appengine?hl=en.
>
> > > >> --
> > > >> Nick Johnson, Developer Programs Engineer, App Engine
> > > >> Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration
> > Number:
> > > >> 368047
>
> > > >> --
> > > >> You received this message because you are subscribed to the Google
> > Groups
> > > >> "Google App Engine" group.
> > > >> To post to this group, send email to
> > google-a...@googlegroups.com.
> > > >> To unsubscribe from this group, send email to
> > > >> google-appengi...@googlegroups.com<google-appengine%2Bunsubscrib e...@googlegroups.com><google-appengine%2Bunsubscrib
> > e...@googlegroups.com>
> > > >> .
> > > >> For more options, visit this group at
> > > >>http://groups.google.com/group/google-appengine?hl=en.
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "Google App Engine" group.
> > > > To post to this group, send email to google-a...@googlegroups.com
> > .
> > > > To unsubscribe from this group, send email to
> > > > google-appengi...@googlegroups.com<google-appengine%2Bunsubscrib e...@googlegroups.com><google-appengine%2Bunsubscrib
Thanks Nick, I understand now. So I guess the easiest thing to do is
to have a random component in your keynames...at least for apps I'm
considering I don't think I'd have any other way to reasonably ensure
the range of keynames in a given (batch) update were well distributed.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
Or would that be 'ok'? :) I'm guessing if I were in a situation where
multiple such batch updates could be occurring simultaneously or in a
tight timeframe, then I'd be more likely to run into this...depending
on how busy my app became, I'd possibly need to start doing that (i.e.
lots of such large batch updates happening in short timeframes).
On Feb 19, 1:12 pm, "Nick Johnson (Google)" <nick.john...@google.com>
wrote:
> Hi Peter,
Say I did a batch update of 500 entities all of the same model...could
this breach the '100s of qps' requirement that could lead to tablets
getting too hot? I've seen benches (http://blog.dantup.com/pi/
bm_put_perf.png) that show 500 entities being batch put in ~4s which
suggests an average put rate that might be in the 100+ per second in
such a case.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
Hi peterk,