【问题标题】:Namespace implementation for google app engine谷歌应用引擎的命名空间实现
【发布时间】:2015-04-04 18:15:03
【问题描述】:

我正在开发一个需要在谷歌应用引擎中命名空间的应用程序。我正在考虑使用命名空间来允许一组用户查看不同的数据,但是应该可以使用另一个全局命名空间来查看所有不同用户组存储的所有数据,这是我的用例 公司 A 注册,创建一个名为 company-a 的动态命名空间。 公司 B 注册,创建一个名为 company-b 的动态命名空间。

现在客户端应用程序(移动/Web)将需要获取公司 A 和公司 B 存储的数据并显示它。我如何使用 google app engine 完成这种类型的场景。 请注意,该应用程序正在处理所有数据存储操作的谷歌云端点上运行。

【问题讨论】:

  • 执行此类操作的正常方法是编写代码,将其部署到应用引擎,然后对其进行测试。如果您对此有疑问,请返回堆栈溢出并提出更精确的问题:)。现在,也许阅读这篇文章会有所帮助? cloud.google.com/appengine/docs/java/multitenancy/multitenancy
  • 感谢我已经阅读,我在这里是为了更清楚地启用标准实现。
  • 更清楚什么?这篇文章解释了你必须使用什么,并附有实现示例......
  • 我主要关心的不仅是实现命名空间,而且是否可以跨各种命名空间获取实体

标签: google-app-engine google-cloud-endpoints google-cloud-datastore


【解决方案1】:

数据存储区命名空间旨在提供严格的multitenancy。因此,不可能发出跨命名空间查询。如果您想提供混合访问,您有两种可能:

  1. 当您在“全局”命名空间中操作时,您可以针对每个命名空间发出一个查询。然后在客户端上,您可以将它们连接在一起。您可以通过对 "__namespace__" 类型发出查询来动态获取命名空间列表。但是,如果您有很多命名空间,这将是低效的。

  2. 实现您自己的命名空间版本。您可以向所有模型添加一个属性(例如namespace,或只是company),以指示该实体属于哪个公司。在“company-a”页面上,您按company = "company-a" 过滤所有查询。然后在“全局”命名空间(客户端应用程序)中,发出不带company 集的查询。这需要您更加努力,但也更加灵活。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多