多租户如何在App Engine中使用Objectify工作?

dat*_*ser 4 java google-app-engine multi-tenant objectify

如何在app引擎中使用名称空间的多租户工作?我的应用程序有多个用户,每个用户有点像多租户中的租户.他们的URL以domain/customer/companyToken#pageName?param1¶m2开头.因此,如果我想为每个客户应用带有命名空间的多租户,那么从Google文档中,您需要为每个客户分配NamespaceManager的唯一ID,如下所示:

NamespaceManager.set(request.getServerName());
Run Code Online (Sandbox Code Playgroud)

现在我有几个问题.

  1. App Engine的命名空间多租户如何真正起作用?

  2. 它如何改变我们一般访问数据的方式?

  3. 它如何改变我们使用Objectify访问数据的方式?

  4. 首先,我对应用程序的上述应用的理解是,在检索数据时,所有与上述客户(租户)相关的数据都聚集在同一名称空间中,那么我们如何使用Objectify访问数据?目前公司obj作为与客户相关的所有obj的父母.(所以我的申请?)

非常感谢你提前.

Pet*_*ego 6

  1. 谷歌AppEngine不是开源的,所以只有谷歌真的知道这是如何在内部工作的.但是有一些关于如何在内部构建数据存储的公开数据:http://www.youtube.com/watch?v = tx5gdoNpcZM.基本上所有AppEngine数据都在一个表中(是所有AppEngine应用程序的一个表)分布在多台计算机上.每个实体都有唯一标识的Key(id,parent,您可以在应用中看到),但也有一个数据告诉实体属于哪个应用.此数据是AppEngine内部,用户没有看到它.我的猜测是这部分也扩展到包括命名空间数据.

  2. 它没有.数据存储区API可识别名称空间,因此您所有代码都保持不变.它在内部知道实体属于哪个命名空间.

  3. Objectify建立在低级数据存储API之上,因此答案与2相同.

  4. 命名空间划分数据:一旦设置了命名空间,Datastore API将只能看到在此命名空间下添加的实体.