Questions tagged «multi-tenant»

4
如何创建具有共享表结构的多租户数据库?
我们的软件当前在MySQL上运行。所有租户的数据都存储在同一架构中。由于我们使用的是Ruby on Rails,因此我们可以轻松确定哪些数据属于哪个租户。但是,当然有些公司担心其数据可能会遭到破坏,因此我们正在评估其他解决方案。 到目前为止,我已经看到了三种选择: 多数据库(每个租户都有自己的-每个客户几乎与1台服务器相同) 多模式(在MySQL中不可用,每个租户都在共享数据库中获得自己的模式) 共享模式(我们当前的方法,可能在每列上都有其他标识记录) 我最喜欢Multi-Schema(考虑到成本)。但是,创建一个新帐户并进行迁移似乎很痛苦,因为我将不得不遍历所有模式并更改其表/列/定义。 问: Multi-Schema似乎被设计为每个租户都有略微不同的表-我不想要这个。是否有任何RDBMS允许我使用多模式多租户解决方案,其中所有租户之间共享表结构? PS多重代表我的意思是超级多重(10.000+个租户)。

6
在MongoDB中对多租户数据库推荐的方法是什么?
我正在考虑使用MongoDB创建一个多租户应用程序。关于我现在有多少个租户,我没有任何猜测,但是我希望能够扩展到数千个。 我可以想到三种策略: 同一集合中的所有租户,使用特定于租户的字段来确保安全性 每个租户在一个共享数据库中有1个集合 每个租户1个数据库 我脑海里有声音建议我选择选项2。 思想和含义,有人吗?

10
对每个客户端使用单个数据库有什么优势?
在针对多个客户端设计的以数据库为中心的应用程序中,我一直认为将单个数据库用于所有客户端是“更好”的选择-将记录与正确的索引和键相关联。在听Stack Overflow播客时,我听到Joel提到FogBugz每个客户端使用一个数据库(因此,如果有1000个客户端,则将有1000个数据库)。使用这种架构的优势是什么? 我知道对于某些项目,客户需要直接访问其所有数据-在这样的应用程序中,很明显每个客户都需要自己的数据库。但是,对于不需要客户端直接访问数据库的项目,每个客户端使用一个数据库有什么好处?从灵活性的角度来看,使用具有单个表副本的单个数据库要简单得多。添加新功能更容易,创建报表也更容易,管理也更容易。 在听到Joel(经验丰富的开发人员)提到他的软件使用不同的方法之前,我对“为所有客户提供一个数据库”方法非常有信心,并且我对他的决定有些困惑... 我听说人们援引数据库速度慢,但记录数量众多,但是任何具有某些优点的关系数据库都不会出现此问题-特别是如果使用正确的索引和键。 任何输入,不胜感激!

3
是否可以在rails中有多个数据库连接池来进行切换?
一点背景 多年来,我一直在使用Apartment gem来运行多租户应用程序。现在最近有需要将数据库扩展到单独的主机,数据库服务器根本无法跟上(读和写都变得太多了)-是的,我将硬件扩展到最大(专用)硬件,64核,raid 10中的12 Nvm-e驱动器,384Gb ram等)。 我正在考虑按每个租户执行此操作(1个租户= 1个数据库连接配置/池),因为这是一种“简单”且有效的方式,可以在number-of-tenants不进行应用程序代码更改的情况下获得多达两倍的容量。 现在,我正在Rails 4.2 atm上运行,不久将升级到5.2。我可以看到Rails 6增加了对每个模型的连接定义的支持,但这并不是我真正需要的,因为我为20个租户中的每一个都有一个完全镜像的数据库架构。通常,我会针对每个请求(在中间件中)或每个后台作业(sidekiq中间件)切换“数据库”,但是目前这对于公寓的gem来说是微不足道的,因为它只是search_path在Postgresql中进行设置,而实际上并没有改变实际的连接。当切换到每租户托管策略时,我将需要根据请求切换整个连接。 问题: 我知道我可以完成ActiveRecord::Base.establish_connection(config)每个请求/后台工作-但是,正如我也了解的那样,这将触发进行全新的数据库连接握手,并在Rails中产生一个新的数据库池-对吗?我猜想对我的应用程序的每个请求都会产生这种开销,这会降低性能。 因此,我想知道是否有人可以从一开始就预建立多个(总共20个)数据库连接/池(例如,在应用程序启动时),然后根据每个请求在这些池之间进行切换?这样他的数据库连接已经建立并准备使用。 所有这些仅仅是一个糟糕的主意,我应该寻找一种不同的方法吗?例如1个应用实例=与一个特定租户的特定连接。或者是其他东西。

3
在asp.net core 3.1中基于租户的注册身份验证方案
当前,我已经使用外部登录提供程序创建了Identity Server 4 Web应用程序,该应用程序具有默认客户端ID和机密。但是我的目标是基于租户注册身份验证提供程序,例如Azure,Google,Facebook。 我使用了SaasKit多租户程序集,在这里我尝试了app.usepertenant()中间件。但是UseGoogleAuthentication()方法已过时,因此我无法使用此usepertenant中间件实现多租户身份验证。 当前代码, services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddMicrosoftAccount(option => { option.ClientId = "clientid"; option.ClientSecret = "clientsecret"; option.SaveTokens = true; }); 预期的代码如下所示, var authentication = services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme); if (tenant.hasMicrosoft) { authentication.AddMicrosoftAccount(option => { option.ClientId = "clientid"; option.ClientSecret = "clientsecret"; option.SaveTokens = true; }); } if (tenant.hasGoogle) { authentication.AddGoogle(option => { option.ClientId = …
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.