> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to