Версии Google App Engine в хранилище данных
Google App Engine имеет концепцию версий приложений. то есть вы можете одновременно запускать несколько версий приложения и получать доступ к ним в разных поддоменах. Например: http://1.my-app-name.appspot.com
, http://2.my-app-name.appspot.com
.
Какие аспекты приложения фактически "версируются" этим? Является ли это только кодовой базой файлов Python + Static? Есть ли у хранилища данных концепция "версий"? Если нет, то что произойдет, когда я обновляю определение модели Google App Engine?
Спасибо!
Ответы
Ответ 1
Правильно, версия приложения относится только к вашим загруженным файлам. Обе версии используются с одним и тем же хранилищем данных.
Обратите внимание, что само хранилище не имеет схемы. Каждый объект представляет собой независимый набор пар ключ/значение. Два объекта такого же типа не должны использовать один и тот же набор свойств или типов свойств. db.Model обеспечивает абстракцию ORM вокруг хранилища данных, но не определяет или не применяет какую-либо глобальную схему.
Пока datstore не версируется, он поддерживает namespacing. Если вам нужен новый сегмент хранилища данных для каждой основной версии вашего приложения, вы можете сделать это:
import os
from google.appengine.api import namespace_manager
namespace_manager.set_namespace(os.environ['CURRENT_VERSION_ID'])
Ответ 2
Datastore не имеет понятия версий.
Когда вы обновляете определение модели, любые объекты, которые вы создаете в будущем, будут иметь новый тип, а старые - старого. Это часто приводит к ошибкам во время выполнения, если ваш код не знает об этих изменениях.