多租户是一个软件体系结构的名称,其中一个应用程序实例运行在远程服务器上,服务于许多客户端组织(也称为租户)。
但这不是每个web应用程序都是这样的吗?几十个,几百个,甚至数千个用户都登录到系统中,访问同一个软件,但是从上下文中访问自己的“用户帐户”?还是Google的多租户API是用于开发通用数据抽象层的API,可用作多个应用程序的后端?
我想我不明白"Google多租户“应用程序的含义,因此,我不理解多租户API的用途或用途。谢谢您的任何澄清这里!
发布于 2012-10-24 03:04:22
这里的多租户并不是指你的应用程序的用户,而是指你的应用程序的“实例”和“单独的”数据存储。
它们实际上不是单独的实例或单独的数据存储,因为这些请求可能由共享实例提供服务,而且它们肯定是在与同一个数据存储通信。但是,通过使用API,您可以设置您的应用程序,以便将数据划分为不相互污染的单独名称空间。
如果你的应用程序上只有一个用户,那么多用户和多租户几乎是一回事。如果您有多个用户,那么通常您将在用户之间共享数据。如果是这样的话,您可以使用多租户来只在某一组用户中共享数据,并在他们自己的租约中将其余的数据分割开来。
正如jtahlborn正确地指出的那样,我们的GAE应用程序已经是GAE基础设施的租户了。我们无法在不同的应用程序之间共享数据,因为它们是完全分开的。
正如Dave所说,我们可以通过在所有数据中添加某种域名或分区id来实现多租户。API只是提供了一种更简单的方法来实现这一点。
发布于 2012-10-24 02:52:28
考虑实现多租户的标准方式:在一个或多个表中添加一个“承租者ID”字段,然后在WHERE子句中包含该ID。你索引那个字段。
您可以在approach中采用同样的方法,在某些实体中添加一个索引属性来保存租户ID,在GQL子句(或过滤器)中小心地包含该ID。如果ID参与包含其他过滤器的查询,这将花费您更多的写操作(对于该属性上的两个索引),因为这将需要包含ID的其他复合索引。
或者您使用我们的多租户API,它可以给您同样的效果,而不需要额外的索引写入成本。您可以得到稍微简单的代码,并且花费更少。
发布于 2012-10-24 01:24:48
区别在于你说的是谁的房客。GAE从第一天起就成为多租户,因为每个程序(租户)都运行在一个通用GAE基础设施中。但是,最初,程序本身只是管理一个数据体(当GAE第一次发布时)。GAE的“多租户API”允许您的单个程序管理它(您的)自己的租户(因此您的租户与GAE的租户相反)。
简明扼要地说明这一点:“多租户API”允许您在一个GAE程序中管理您自己的租户(用户),而GAE程序又作为一个租户(程序)托管在GAE基础结构中。
当然,从理论上讲,从GAE的第一天起,您就可以这样做,但是管理租户之间数据的所有工作都将在代码中处理。“多租户API”试图消除程序员的痛苦,使程序中的数据分割更加简单。
https://stackoverflow.com/questions/13041588
复制相似问题