Hi peterk, On Fri, Feb 19, 2010 at 2:02 PM, peterk <peter.ke...@gmail.com> wrote:
> 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. > Only if you're doing such puts at a high rate. It's the sustained rate that matters, not the instantaneous rate. -Nick Johnson > > 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, > > > > On Fri, Feb 19, 2010 at 1:04 PM, peterk <peter.ke...@gmail.com> wrote: > > > 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. > > > > Bear in mind that you only have to even worry about this if you're > expecting > > hundreds of QPS of inserts to the same model. > > > > If you are in this situation, hashing some stable information from your > > model may be sufficient to generate a well distributed key name. > > > > -Nick Johnson > > > > > > > > > > > > > On Feb 19, 11:58 am, "Nick Johnson (Google)" <nick.john...@google.com> > > > wrote: > > > > On Fri, Feb 19, 2010 at 12:28 AM, peterk <peter.ke...@gmail.com> > wrote: > > > > > 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? > :| > > > > > > Either one will work fine - Bigtable will split tablets based on key > to > > > > ensure no tablet gets too big. Long identical prefixes just mean that > the > > > > split will be based on later characters in the string. > > > > > > What's important for key distribution for really high update rates is > the > > > > distribution of key names/IDs for those updates: If they all go to a > > > single > > > > tablet (eg, they make up a small proportion of the total range of IDs > > > you're > > > > employing), they will be limited by what that tablet server can > support. > > > If > > > > they are widely spread out within the range you're using, regardless > of > > > what > > > > that range is, you'll be fine. > > > > > > -Nick Johnson > > > > > > > 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, > > > > > > > > >> On Wed, Feb 17, 2010 at 5:30 PM, Ulrich < > > > mierendo...@googlemail.com > > > > > >wrote: > > > > > > > > >>> Hi, > > > > > > > > >>> 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. > > > > > > > > >> Good question! The point being made in the article refers to > the > > > > > global > > > > > > >> distribution of the complete key, so writes to these children > will > > > be > > > > > well > > > > > > >> distributed, and you won't have to worry about this source of > > > > > contention. > > > > > > > > >> -Nick Johnson > > > > > > > > >>> -- > > > > > > > > >>> 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-appeng...@googlegroups.com. > > > > > > >>> To unsubscribe from this group, send email to > > > > > > >>> google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com><google-appengine%2Bunsubscrib > e...@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-appeng...@googlegroups.com. > > > > > > >> To unsubscribe from this group, send email to > > > > > > >> google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com><google-appengine%2Bunsubscrib > e...@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-appengine@googlegroups.com > > > > > . > > > > > > > To unsubscribe from this group, send email to > > > > > > > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com><google-appengine%2Bunsubscrib > e...@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-appengine@googlegroups.com > > > . > > > > > To unsubscribe from this group, send email to > > > > > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@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-appengine@googlegroups.com > . > > > To unsubscribe from this group, send email to > > > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@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-appeng...@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine+unsubscr...@googlegroups.com<google-appengine%2bunsubscr...@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-appeng...@googlegroups.com. To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.