我们正试图为一个新的web应用程序决定一个数据库设计。我们预计将有近10 000名租户,如果这样做有意义的话,我们希望将他们的数据保存在单独的数据库中。每个租户将有一个大约20 DB的数据库,他们主要是跟踪50至100名青年和100至300名成年人的个人资料,加上活动、出席情况、奖励等。我不知道一次登录的总用户有多少,但每个租户可能有几个。
据我所知,我的选择是:
理想情况下,我希望采用无共享的方法,但我不清楚在遇到性能问题之前您可以在Server中拥有多少数据库。管理多个数据库并不是我们关心的主要问题,但是如果SQL Server由于DBs的数量而变得没有响应性,这就是我正在寻找的信息类型。请记住,数据库平均只有20 on。
就性能而言,哪一种方法是我们最好的选择?还请考虑拥有多个SQL Server许可证并不是理想的成本。但是如果有必要的话请告诉我。
我也在这里读过几篇文章,也读过多租户数据结构,但我还没有看到一个真正的赢家,拥有大量的租户,但数据库却很小。
另外,哪个版本的Server将是理想的?
如果有人有类似的经验,请让我知道你是如何处理这件事,如果它正在顺利进行。任何真实的经验/建议都将不胜感激。
谢谢。
发布于 2015-05-18 20:36:07
这有点像一个意见问题,因为真的没有正确的答案。这三种方法都适用于你的情况。下面是一些需要考虑的事情:
为什么必须在单独的数据库中呢?:如果他们必须这样做,因为他们可以直接访问数据库,那么当然,你必须这样做。听起来好像用户会有某种他们正在使用的应用程序,所以这不是最好的解决方案吗?另一件事将使这成为一个更好的选择是,如果它的可能,租户可能会被移动到一个单独的服务器。示例: ABC_Widgets可能在某个时候将数据存放在自己的服务器上。目前,它们正与所有其他租户一起托管。
每个db都有自己的开销,尽管很小,但请记住,SQL会为每个db分配一些空间。现在把它乘以10,000 DB,你就有了一大块浪费的空间。
从开发的角度来看,连接字符串,当您连接到数据库时,您要么必须有多个连接字符串,要么必须根据所使用的数据库动态创建一个连接字符串。
模式方法--我认为最好的用例是,例如,承租者A不会有相同的表,而承租者G或承租者F可能需要定制情况下的专用表/模式。
我认为最好将tenantID分配给每个租户,并将其存储在1个数据库中。
https://stackoverflow.com/questions/30311118
复制相似问题