Depends on the shape of your data. I recommend you to use indexed key or relation index "pattern", only if the size is bigger than 100.
IF (List<Key<B>>.size() > 100) USE indexed property or relation index. I hope it will help. 2012/2/9 Robert Kluin <robert.kl...@gmail.com> > Hi Steven, > Some responses inline. > > Robert > > On Wed, Feb 8, 2012 at 11:26, steven <jobshif...@gmail.com> wrote: > > Hi: > > > > Thank you in advance > > > > I have a question about Datastore API calls. > > > > Suppose I have a one-to-many relation ship, with two solutions as > > below: > > > > 1) solution 1 > > class A > > { > > set<key> keys_for_B > > } > > > > the instance is a1 contains <b1, b2, b3> > > > > if I query for a1, and then I can get keys of b1, b2, b3; and then I > > read the b1, b2, b3. > > Does it mean there are 4 calls to datastore API calls? > > If you *query* for a1, then do a bulk get on those keys you'll have: > query -> 1 scan + 1 fetch = 2 reads > bulk get -> 3 reads > > So you'll have 5 reads. If you know A1's key, then you could do a get > there too which would save 1 read. > > > > > > > > 2) solution 2 > > I build a "big-table" as > > a1, b1 > > a1, b2 > > a1, b3 > > > > and then query as "select * from mytable where a_id = a1_id", to get 3 > > rows > > I guess there is just one call, to datastore. > > > Generally, I would prefer the first design over introducing a third > lookup table. > > > Another solution here might be to include a1 as a property on your "B" > entities, possibly as an indexed list property. Then you could do one > query for Bs where a = 'a1'. This would give you 4 reads, 1 for the > scan + 3 for the entities. > > > > > > > > comparing solution 1 and 2, does it mean Google will charge me 4 times > > money for solution 1? > > > > thank you very much, > > Sincerely, > > Steven > > > > > > > > > > > > > > > > -- > > 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. > > 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. > 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. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.