You don't have to use global data entity. For example use a datastore backed global count as base number. Your unique id can be generated by that count multiply by a big number + a local count.
On Dec 9, 11:57 am, Andy Freeman <[EMAIL PROTECTED]> wrote: > > The later > > solution only requires one put during any given processes lifetime so > > it shouldn't be a perf problem. > > It introduces a clean-up problem. I can't delete such an object > until after I delete all entity groups named using said object's key. > (GAE is free to reused generated keys.) > > I shouldn't have mentioned the overhead of puts. The real problem is > cleanup and consistency, a problem that transactions are designed to > solve. > > On Nov 24, 7:18 pm, Josh Heitzman <[EMAIL PROTECTED]> wrote: > > > Like Jon McAlister said either use a random number or create a new > > entity when one of your modules is loaded and treat that entity's key > > as the globally unique process ID (i.e. MAC address + pid). The later > > solution only requires one put during any given processes lifetime so > > it shouldn't be a perf problem. > > > On Nov 22, 6:38 pm, Andy Freeman <[EMAIL PROTECTED]> wrote: > > > > > Yes, I understand transactions and entity groups. Why do you need to > > > > create an entity group *atomically*? > > > > For the same reason that transactions are useful - incomplete groups > > > are wrong (in my application) and I'd rather not deal with them. > > > > > If you create a new entity, it will automatically be assigned a unique > > > > key at the datastore level. What's wrong with just using that? > > > > Each db.put has significant overhead. If I can generate a unique name > > > without a db.put, I can reduce the number of db.puts that my > > > application does by a factor of 2. > > > > On Nov 22, 5:07 pm, "David Symonds" <[EMAIL PROTECTED]> wrote: > > > > > On Sun, Nov 23, 2008 at 8:50 AM, Andy Freeman <[EMAIL PROTECTED]> wrote: > > > > >> > Suppose that I want to atomically create an entity group with two > > > > >> > nodes, one the parent of the other. > > > > >> But *why* exactly do you want to do this? > > > > > > Because I want "a set of one or more entities that can be manipulated > > > > > in a single transaction. Entity group relationships tell App Engine to > > > > > store several entities in the same part of the distributed network. A > > > > > transaction sets up datastore operations for an entity group, and all > > > > > of the operations are applied as a group, or not at all if the > > > > > transaction fails." > > > > > Yes, I understand transactions and entity groups. Why do you need to > > > > create an entity group *atomically*? > > > > > > The fact that GAE uses many machines and concurrently is why the full > > > > > hostname, IP, or MAC address or some other machine identifier is > > > > > useful in creating a unique identifier on GAE. (If my application > > > > > always ran on the same machine, the process id and time would be > > > > > sufficient.) > > > > > If you create a new entity, it will automatically be assigned a unique > > > > key at the datastore level. What's wrong with just using that? > > > > > Dave.- 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 google-appengine@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---