I certainly hope they don't deprecate M/S, unless/until the following issues 
are addressed:

1) Ability to migrate without changing app ID.  This is fundamental, and we've 
never seen any *reason* why this is impossible.  I suspect that this is very 
hard, but not impossible.  Changing the app ID causes problems because:

- External references to entity keys (not IDs) are pervasive in many apps (such 
as google search links to deep pages, user bookmarks, or RSS feed URLs) because 
the documentation encourages the use of these keys in URLs

- Many users have keys wrapped up in properties that the migration tool cannot 
recognize [this doesn't impact my app, but it's a common issue on this list]

As an alternative, the infrastructure could be fixed to recognize the case of 
using the old app ID instead of the new app ID in a key, and quietly make the 
substitution.

2) Migration of large data sets takes an extremely long time.  Given that we 
regularly see M/S downtimes in the couple of hours range, a couple of hours is 
probably a reasonable amount of time to migrate.  A couple of days is much too 
much.  [Note that I have not personally gotten far enough into a migration to 
see this duration; I'm basing this on many user complaints I've read on this 
list.]

3) The problem of transactional consistency needs to be addressed.  It is not 
acceptable for transactions to end in a "maybe this worked, maybe it didn't" 
state.  They should either succeed or fail.  (Although the docs not not say 
whether this problem is exclusive to HR, it seems to be, and certainly it 
matters much more in HR since every put is implicitly transactional.)

4) As Ikai said, there are some unresolved issues in HR that need to be fixed, 
such as the current mystery in the 'Serious Problem: Rollback of data on HRD' 
thread (which is eerily familiar: I think somebody else reported a similar 
issue a while back).

Even if all these are addressed, it would certainly be nice if M/S remained an 
option.  It makes different trade-offs than HR, which may be better trade-offs 
for some applications.  I will be very disappointed if they decide to make HR a 
requirement for multi-threading Python, since the two are completely orthogonal 
choices.  From my reading, M/S seems to have better throughput than HR, at the 
expense of more frequent downtime, and spurious datastore timeouts.  I'd like 
to have that option in a multi-threaded app.

-Joshua

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

Reply via email to