Google App Engine多租户API

时间:2012-10-24 01:01:54

标签: java api google-app-engine multi-tenant

根据GAE docs on the Multitenancy API

  

多租户是一种软件架构的名称,其中一个运行在远程服务器上的应用程序实例为许多客户组织(也称为租户)提供服务。

但这不是每个 Web应用程序的内容吗?几十个,几百个,甚至几千个用户都登录到系统,访问相同的软件,但是从他们自己的“用户帐户”的上下文中?或Google是多租户API的某种API,用于开发通用数据抽象层,可用作多个应用程序的后端?

我想我没有得到“Google多租户”应用的含义,因此,不了解Multitenancy API的用途或用途。在此提前感谢您的清晰!

3 个答案:

答案 0 :(得分:2)

考虑实现多租户的标准方法:向一个或多个表添加“租户ID”字段,然后在WHERE子句中包含该ID。你索引那个字段。

您可以在App Engine中采用相同的方法,为某些实体添加索引属性以容纳租户ID,在GQL WHERE子句(或过滤器)中仔细包含该ID。这将使您在写入(对于该属性上的两个索引)上花费更多,如果ID参与包含其他过滤器的查询,则会更多,因为这些将需要包含ID的其他复合索引。

或者您使用我们的多租户API,它可以为您提供相同的效果,而无需索引写入的额外成本。您可以获得稍微简单的代码和更少的费用。

答案 1 :(得分:1)

此处的多租户不是指您应用的用户,而是指具有“独立”数据存储的应用的“实例”。

它们实际上不是单独的实例或单独的数据存储区,因为这些请求可能由共享实例提供服务,并且它们肯定与同一数据存储区通信。但是,通过使用API​​,您可以设置应用程序,以便将数据分区为不会相互污染的单独命名空间。

如果您的应用只有一个用户,那么多用户和多租户几乎是一样的。如果您有多个用户,那么通常您将在用户之间共享数据。如果是这样,您可以使用多租户仅在特定用户组内共享数据,并在他们自己的租赁中将其余部分分开。

正如jtahlborn正确指出的那样,我们的每个GAE应用程序都已经是GAE基础架构的租户。我们无法在不同应用之间共享数据,因为它们彼此完全分区。

正如Dave所说,我们可以通过在我们的所有数据中添加某种域名或分区ID来实现多租户。 API只是提供了一种更简单的方法。

答案 2 :(得分:0)

不同之处在于您所谈论的租户。从第一天开始,GAE就是多租户,每个项目(租户)都在一个共同的GAE基础设施中运行。但是,最初,您的程序本身只管理了一个数据体(当GAE首次发布时)。 GAE“多租户API”使您的单个程序能够管理其(您)的租户(因此您的租户而不是 GAE的租户)。

简明扼要地说明:“多租户API”允许您在单个GAE程序中管理您自己的租户(用户),而GAE程序又作为GAE基础架构中的租户(程序)托管。 / p> 理论上,理论上,您可以在GAE的第1天完成此操作,但是您的租户之间管理数据的所有工作都将在您的代码中处理。 “多租户API”试图消除程序员的痛苦,并使程序中的数据分段更加简单。