Thank you Max, I understand a bit more the numeric ID generator in
datastore.

Now I am aware that the numeric ID allocation for the entities
belonging a kind isn't sorted or contiguous like I hope at first.


On Sep 10, 8:10 pm, Max Ross <maxr+appeng...@google.com> wrote:
> The URL I posted earlier in the thread explains it, but here's a little bit
> more detail:
>
> A parent entity plus a kind defines an id-space, so entities with the same
> parent and the same kind are guaranteed to have unique ids.  For example, if
> you have an Entity with
>
> Parent:A
> Kind: Person
> Id: 10
>
> you are guaranteed that no other entity with Parent A and Kind Person will
> be assigned an Id of 10.  However, an entity with a different Parent and
> Kind Person or an entity with Parent A and a different Kind _can_ be
> assigned an Id of 10.  The datastore pre-allocates batches of ids across
> multiple servers under-the-hood, so you can't make any assumptions about the
> Id that will get assigned in terms of contiguousness.  The only safe
> assumption is that the id will be unique for that Parent/Kind combination.
>
> Hope this helps,
> Max
>
> On Thu, Sep 10, 2009 at 5:29 AM, iker98 <ike...@gmail.com> wrote:
>
> > Definitely I don't understand the number ID generator behavior across
> > kinds (in prod datastore). Does anyone know any URL with detailed
> > explanation about it?
>
> > Thanks
>
> > On Sep 9, 11:58 am, Tica2 <petrica.chir...@gmail.com> wrote:
> > > Max,
>
> > > I like to have same behavior between local and production environment
>
> > > It is posible ?
>
> > > For instance the code:
>
> > >                 StringBuffer sb = new StringBuffer();
> > >                 KeyRange range = ds.allocateIds("a", 2);
> > >                 for (Key key : range) {
> > >                         sb.append("\n a " + key.toString());
> > >                 }
>
> > >                 range = ds.allocateIds("b", 2);
> > >                 for (Key key : range) {
> > >                         sb.append("\n b " + key.toString());
> > >                 }
>
> > >                 Key parentKey = KeyFactory.createKey("c", 1);
> > >                 sb.append("\n c " + parentKey.toString());
>
> > >                 range = ds.allocateIds(parentKey, "d", 2);
> > >                 for (Key key : range) {
> > >                         sb.append("\n d " + key.toString());
> > >                 }
> > >                 System.out.println(sb.toString());
>
> > > Local produce:
> > >  a a(1)
> > >  a a(2)
> > >  b b(3)
> > >  b b(4)
> > >  c c(1)
> > >  d c(1)/d(5)
> > >  d c(1)/d(6)
>
> > > But in production environment:
>
> > >  a a(1)
> > >  a a(2)
> > >  b b(1001)
> > >  b b(1002)
> > >  c c(1)
> > >  d c(1)/d(1)
> > >  d c(1)/d(2)
>
> > >  a a(1003)
> > >  a a(1004)
> > >  b b(3)
> > >  b b(4)
> > >  c c(1)
> > >  d c(1)/d(1001)
> > >  d c(1)/d(1002)
>
> > > Thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to