数据存储区中的Google App Engine版本控制

Chr*_* W. 15 python google-app-engine google-cloud-datastore

Google App Engine具有应用版本的概念.也就是说,您可以同时运行多个版本的应用,并可在不同的子域中访问.例如:http://1.my-app-name.appspot.com,http://2.my-app-name.appspot.com.

该应用程序的哪些方面实际上是"版本化"的?它只是Python + Static文件代码库吗?数据存储区是否具有"版本"的概念?如果没有,那么当我更新Google App Engine模型的定义时会发生什么?

谢谢!

Dre*_*ars 26

正确,应用程序版本仅指您上传的文件.两个版本都使用相同的数据存储区.

请注意,数据存储区本身是无架构的.每个实体都是键/值对的独立集合.两个相同类型的实体不必共享同一组属性或属性类型.db.Model提供围绕数据存储的ORM抽象,但不定义或实施任何类型的全局模式.

虽然数据库未进行版本控制,但它确实支持命名空间.如果您需要为应用的每个主要版本创建新的数据存储区段,则可以执行以下操作:

import os
from google.appengine.api import namespace_manager

namespace_manager.set_namespace(os.environ['CURRENT_VERSION_ID'])
Run Code Online (Sandbox Code Playgroud)

  • 应该拆分版本字符串并根据主要版本值创建名称空间.`major_ver,minor_ver = os.environ.get('CURRENT_VERSION_ID').rsplit('.',1); namespace_manager.set_namespace(major_ver)`即使您没有更改主要版本值,次要版本值也会随着每次部署而更改. (4认同)

dka*_*ins 7

数据存储没有版本概念.

更新模型定义时,将来创建的任何实体都将是新类型,旧类型将是旧类型.如果您的代码不知道这些更改,这通常会导致运行时错误.