Questions tagged «multitenancy»

6
我应该为每个应用程序使用一个数据库还是在多个应用程序中共享一个数据库?
我有多个应用程序,其中一些使用来自相同来源的数据。最佳做法(或优点/缺点)是: 将数据保留在多个应用程序共享的数据库中 节省空间,因为只需要一个数据库 索引复杂化,因为不同的应用程序具有不同的查询需求 每天将数据导入每个应用程序数据库 每个应用程序数据库中存在重复数据,因此使用更多空间 索引更容易,因为每个应用程序都可以专注于其各自的需求 我可能遗漏了其他优点/缺点,请列出(如果有),在您的工作场所该如何做?

2
多租户DB是否具有多个数据库或共享表?
是一个多租户数据库: 一个DB服务器对每个客户/租户有不同的(相同的)数据库/架构?要么 具有数据库/架构的DB服务器,客户/租户在其中共享同一表内的记录? 例如,在上面的选项1下,我可能在处有一个MySQL服务器mydb01.example.com,并且其中可能有一个customer1数据库。该customer1数据库可能有10个表,这些表可以为该特定客户(客户1)提供我的应用程序。它也可能有一个customer2数据库,其中有完全相同的10个表,但是只包含Customer#2的数据。它可能有一个customer3数据库,一个customer4数据库等等。 在上面的选项2中,将只有一个数据库/架构,例如myapp_db,又有10个表(与上面的表相同)。但是在这里,所有客户的数据都存在于这10个表中,因此他们“共享”了这些表。在应用程序层,逻辑和安全性控制着哪些客户可以访问这10个表中的哪些记录,并格外小心以确保客户#1永远不会登录到应用程序并看到客户#3的数据,等等。 这些范例中的哪一个构成了传统的“多租户” DB?如果两者都不是,那么有人可以提供一个多租户数据库示例吗(使用上述场景)?

5
多租户-单数据库与多数据库
我们有许多客户,他们的系统共享一些功能,但也有一定程度的多样性。客户数量在增长-永远是健康的事情!-他们的业务之间的差异也在增加。 当前,只有一个ASP.Net(Web窗体)网站(与Web项目相对),其中每个租户都有子文件夹,并带有该租户的非标准页面。有一个单独的模型项目,处理数据库访问和业务逻辑。 在(a)每个客户端拥有1个数据库且仅具有与该客户端相关联的功能之间,这是更好的选择,也是最重要的原因。(b)由所有客户端共享的单个数据库,其中任何一个客户端仅使用表的子集。 企业内部的主要担忧已经结束: 维护多个资产-备份,版本控制等 尽可能促进重复使用 您将如何确保解决这些问题,哪种解决方案更可取,为什么?(我也一直在整理类似问题的答案)

3
什么是多租户应用程序?
根据在线可用定义,“ 多租户是一种架构,其中软件应用程序的单个实例为多个客户提供服务 ”。这意味着我拥有一家餐馆或学校的网站,并且我提供了访问其他餐馆或学校的权限,以便他们使用我在购买学校管理产品后提供的凭据将其应用程序与自己的数据一起使用。就像我的网站像schoolmanagement.com一样,我为不同的学校客户(例如school1.schoolmanagement.com和school2.schoolmanagement.com)提供了不同的子域,但是这两个子域后面的代码相同。两家学校都有不同的功能或主题,这取决于它们各自的数据库。所以我需要提供schoolmanagement.com进行登录,一旦我的客户基于他们的登录凭据登录,我就会重定向到他们各自的URL,例如school1.schoolmanagement.com。 这是我对多租户应用程序的理解。我的理解正确吗?我可以通过任何在线多租户应用程序吗?

2
多租户或多实例?
我试图构建一个基于Web的SaaS解决方案,但遇到了不确定使用多租户或多实例的道路。我将尝试描述我要实现的目标,以及每种方法的优缺点(根据我的阅读,我的观点)。请提出您的建议,以防万一我错过了其他任何方法。 正如我提到的那样,我要构建的应用程序是一个SaaS解决方案,公司可以在其中创建帐户,每个帐户/公司都有自己的用户,客户,产品,服务等。每个用户;谁是公司员工;与一个帐户/公司相关的信息将只能访问其公司的客户,产品和服务。公司可以拥有无​​限数量的客户,产品和服务,因此每个公司都应该拥有自己的数据中心。 为此,我决定创建一个共享数据库(保存所有用户凭据以用于登录)和多个数据库共享架构(每个帐户/公司的数据库)。基本上,多租户。 然后有人建议使用多实例代替,每个公司将有自己的应用程序实例(即代码,库,数据库,框架等),与其他公司完全分开。这听起来更好,因为我不必在需要确保每个租户的用户只能访问其公司数据的额外层上打理。我认为值得一提的是,我依靠Docker来实现这种方法(我以前从未使用过),但是我认为它缺乏将来我将需要的功能(以后会更多)(至少我没有这样做)。一点点搜索就找不到它们)。 但是,每种方法都各有利弊,因此我无法决定采用哪种方法。这是一个列表,但由于我对它们都不了解,所以对我几乎一无所知,因此可能存在一些我不知道的问题,或者是针对我在网上找不到的问题的解决方案:[每种方法都有我跟着一个一个的比较的有序列表] 多租户: 共享的主机/硬件,共享的代码和多数据库。 这是容易扩展的代码并修复错误的功能(共享代码)。 在不更改代码的情况下,很难扩展硬件(可以使用云服务)或将单个租户的数据库移至另一个系统。 最重要的是,如前所述,我需要在系统中添加一个额外的层,以确保用户实际上属于他/她的公司,而不访问其他公司的信息。 多实例: 共享或不共享的主机/硬件,每个实例的代码以及每个实例的数据库。 这是很难扩展功能或修复的错误(我不知道是否有办法做到这一点在码头工人在那里你可以添加功能/特性,以一个实例或码头集装箱,并将其部署到其他人)。 这是更容易对整个实例移动到不同的主机/硬件。 作为实例,我不需要照顾该层,因为每个实例将拥有自己的数据库。 万一我想手动做任何事情(例如为每个租户手动创建一个实例),所有的优点和缺点都是多余的,这就是为什么我怀疑Docker解决方案的原因,除非有一种解决方法,这也许是主要的问题的原因。如果您能通过参考解决方案来回答问题,以及为什么您认为这种方法比其他方法更好,我将不胜感激。 如果有帮助(也许?),我们使用Laravel作为后端的主要框架(全部为RESTful)。

3
支持多租户
将单租户应用程序转换为多租户应用程序时会遇到哪些典型挑战?安全性和数据隔离使我感到最重要。还有什么? 我是从事相当大的自动化工作的架构师之一,从历史上看,这只是我们公司在使用它。我们希望其他人也可以使用它。每次我们谈论“使其成为多租户”时,讨论都围绕使一个租户的用户远离另一租户拥有的数据,并确保拥有一个租户的用户不能(有意或无意)对另一租户产生影响租户的环境。我想知道的是,安全/数据隔离是否真的是这里唯一的主要问题,还是我们只是没有在考虑其他一些主要问题。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.