谷歌应用引擎的命名空间实现

时间:2015-04-04 18:15:03

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  2. 实现您自己的命名空间版本。您可以向所有模型添加属性(例如namespace或仅company),以指明该实体所属的公司。在" company-a"的页面上,您按company = "company-a"过滤所有查询。然后在"全球"命名空间(客户端应用程序),您在没有company集的情况下发出查询。这需要您更加勤奋,但也更灵活。