谷歌应用引擎具有应用程序版本的概念。也就是说,您可以同时运行多个版本的应用程序,并在不同的子域上访问这些版本。例如:http://1.my-app-name.appspot.com
、http://2.my-app-name.appspot.com
。
这个版本控制实际上是针对应用程序的哪些方面?是仅针对Python +静态文件代码库吗?数据存储是否具有“版本”概念?如果没有,那么当我更新Google应用引擎模型的定义时会发生什么?
谢谢!
谷歌应用引擎具有应用程序版本的概念。也就是说,您可以同时运行多个版本的应用程序,并在不同的子域上访问这些版本。例如:http://1.my-app-name.appspot.com
、http://2.my-app-name.appspot.com
。
这个版本控制实际上是针对应用程序的哪些方面?是仅针对Python +静态文件代码库吗?数据存储是否具有“版本”概念?如果没有,那么当我更新Google应用引擎模型的定义时会发生什么?
谢谢!
正确,应用程序版本仅指您上传的文件。两个版本都使用相同的数据存储。
请注意,数据存储本身是无模式的。每个实体都是独立的键/值对集合。同一种类型的两个实体不必共享相同的属性集或属性类型。db.Model在数据存储周围提供ORM抽象层,但不定义或强制任何全局模式。
虽然数据存储没有版本控制,但它支持命名空间。如果您希望每个应用程序的主要版本都有一个新的数据存储段,您可以这样做:
import os
from google.appengine.api import namespace_manager
namespace_manager.set_namespace(os.environ['CURRENT_VERSION_ID'])
Datastore没有版本概念。
当您更新模型定义时,将来创建的任何实体将是新类型,而旧类型将是旧类型。 如果您的代码不知道这些更改,这通常会导致运行时错误。
major_ver, minor_ver = os.environ.get('CURRENT_VERSION_ID').rsplit('.', 1); namespace_manager.set_namespace(major_ver)
即使您不更改主要版本值,次要版本值也会随每个部署而变化。 - Calvin