【问题标题】:Using GAE datastore in different versions在不同版本中使用 GAE 数据存储
【发布时间】:2013-10-28 12:03:20
【问题描述】:

我使用 GAE 作为我的应用后端。对于生产环境,我使用第二个版本。同时继续开发第一版。

问题在于两个版本都使用相同的数据存储。有没有办法定义数据存储的版本。那么,开发中使用的实体甚至不会在生产中被查询?

谢谢, 丹

【问题讨论】:

  • 您必须定义另一个应用程序。应用程序的所有版本都使用相同的数据存储。
  • 同意原始评论,您可以使用名称空间,但是这会引入名称空间的整个概念,这可能不是一个好主意。单独的测试实例是一个更好的主意。
  • 一开始为什么要在生产环境中开发?这就是本地开发服务器的用途。

标签: java google-app-engine google-cloud-datastore versioning


【解决方案1】:

应用程序的所有版本共享同一个数据存储。这实际上非常有用,因为它允许您将 Go 组件和 Python 组件作为访问同一数据存储的不同版本上传。

出于测试目的,如果您需要单独的数据库,请使用单独的应用 ID。

【讨论】:

    【解决方案2】:

    使用命名空间 https://developers.google.com/appengine/docs/java/multitenancy/multitenancy 它分离了所有内容,包括 memcached 等。

    【讨论】:

    • 这也使事情变得过于复杂,如果他后来决定将命名空间用于比测试更有用的事情,也可能会导致问题。
    • 我不明白它是如何使事情复杂化的,它只是一个简单的命名空间,如果你以后想将它们也用于其他东西,你可以继续使用它们(做一些简单的事情,比如前缀,这样它就不会与您的调试 nsmespace)。除了部署单独的实例之外,它也是唯一真正的选择,这样做并不能为您提供作为“真正”部署的确切配置。使用本地(模拟)实例通常不是一种选择,因为它在某些 apengine 功能上的行为非常不同。
    • 您需要显式添加将某些操作检测为测试操作的代码,并使用测试命名空间。因此,您最终不会测试完全相同的配置。另外,您无法测试不支持命名空间的 blobstore 操作之类的东西。在 app.yaml 中更改应用名称、重新部署并知道您有一个完全相同的副本正在运行以进行测试和生产,这要简单得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2012-10-05
    相关资源
    最近更新 更多