Управление версиями Google App Engine в хранилище данных - PullRequest
15 голосов
/ 19 мая 2011

В Google App Engine есть концепция версий приложений.то есть вы можете иметь несколько версий вашего приложения, работающих одновременно и доступных в разных поддоменах.Например: http://1.my-app-name.appspot.com, http://2.my-app-name.appspot.com.

Какие аспекты приложения фактически «версионированы» этим?Это только кодовая база Python + Статические файлы?Есть ли в хранилище данных понятие «версии»?Если нет, то что произойдет, когда я обновлю определение модели Google App Engine?

Спасибо!

Ответы [ 2 ]

26 голосов
/ 19 мая 2011

Правильно, версия приложения относится только к загруженным файлам. Обе версии используют одно и то же хранилище данных.

Обратите внимание, что само хранилище данных не содержит схемы. Каждый объект представляет собой независимую коллекцию пар ключ / значение. Два объекта одного и того же вида не обязательно должны иметь общий набор свойств или типов свойств. db.Model предоставляет абстракцию ORM для хранилища данных, но не определяет и не применяет какую-либо глобальную схему.

Хотя хранилище данных не является версионным, оно поддерживает пространство имен . Если вам нужен новый сегмент хранилища данных для каждой основной версии вашего приложения, вы можете сделать это:

import os
from google.appengine.api import namespace_manager

namespace_manager.set_namespace(os.environ['CURRENT_VERSION_ID'])
7 голосов
/ 19 мая 2011

В хранилище данных нет концепции версий.

При обновлении определения модели все создаваемые вами объекты будут иметь новый тип, а старые - старого типа. Это часто приводит к ошибкам во время выполнения, если ваш код не знает об этих изменениях.

...