Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google App Engine Versioning in the Datastore

Google App Engine has the concept of app versions. i.e., you can have multiple versions of your app running concurrently and accessible at different subdomains. For instance: http://1.my-app-name.appspot.com, http://2.my-app-name.appspot.com.

What aspects of the app are actually "versioned" by this? Is it only the Python + Static files codebase? Does the datastore have the concept of "versions"? If not, then what happens when I update the definition of a Google App Engine model?

Thanks!

like image 207
Chris W. Avatar asked May 19 '11 18:05

Chris W.


1 Answers

Correct, app version refers only to your uploaded files. Both versions use with the same datastore.

Note that the datastore itself is schema-less. Each entity is an independent collection of key/value pairs. Two entities of the same kind don't have to share the same set of properties, or property types. db.Model provides an ORM abstraction around the datastore, but doesn't define or enforce any kind of global schema.

While the datstore isn't versioned, it does support namespacing. If you want a new datastore segment for each major version of your app, you can do this:

import os
from google.appengine.api import namespace_manager

namespace_manager.set_namespace(os.environ['CURRENT_VERSION_ID'])
like image 76
Drew Sears Avatar answered Oct 25 '22 00:10

Drew Sears