We've just released the first version of our application and are now
looking at a problem we've been avoiding until now. Namely, what is
the best way to upgrade the application to a new version that requires
changes to the datastore. We're looking at two options:

1) Big Bang Upgrade
We take the application down and run an upgrade process to update all
entities from version 1 to version 2.

Pros: Easy to maintain; intuitive
Cons: App has to be taken down for a period of time, which will
increase as time passes and more data is added to the datastore
(potentially hitting the limit for long-running processes eventually)
Question: What's a good way to take the app offline?

2) Version Entities Individually
Each entity has a version number and we have a series of commands,
each one responsible for upgrading an entity from one version to the
next. As we request entities, we check to see if it's the latest
version. If not, we run each necessary upgrade command in sequence
until it is the latest version.

Pros: No need to take the app offline; provides flexibility on whether
to upgrade everything at once or piecemeal
Cons: Not as intuitive; entities with different versions in the
datastore (if that matters)

What do other people do to upgrade their datastore for a live
application?

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