加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

多租户数据库架构

发布时间:2021-01-16 20:47:43 所属栏目:MsSql教程 来源:网络整理
导读:我正在构建一个SAAS应用程序,我们正在讨论每个客户端与共享数据库之间的一个数据库.我已经阅读了很多内容,包括SO的一些主题,但我还有很多疑问. 我们的平台应该由每个客户高度定制. (他们应该能够拥有自定义表并向现有表添加自定义字段). 在这种情况下,多数据

我正在构建一个SAAS应用程序,我们正在讨论每个客户端与共享数据库之间的一个数据库.我已经阅读了很多内容,包括SO的一些主题,但我还有很多疑问.

我们的平台应该由每个客户高度定制. (他们应该能够拥有自定义表并向现有表添加自定义字段).
在这种情况下,多数据库方法看起来很棒.

问题是.我的“用户”表应该在主数据库中还是在每个客户端数据库中?
用户可能拥有一个或多个组织,因此它将存在于多个数据库中.
那么,像国家表等通用表怎么样?

在master数据库中是有意义的.但是我有很多带有created_by字段的表,它们具有用户的外键.还有客户端的一些权限相关表.

如果有多个数据库,我会失去外键的强大功能,这意味着对数据库的查询更多.我知道我可以在数据库之间使用交叉连接,如果它们在同一台服务器中,那么我就失去了可扩展性. (我将来可能需要有多个数据库服务器).
我已经考虑了联邦表.不确定性能.

我使用的技术是php和symfony 2框架以及数据库的mysql.

另外,我担心维护这样一个系统.我们可以创建一些脚本来自动化所有数据库中的模式更改,但是如果我们有10k客户端就意味着10k数据库.

你对此有何看法?
我的应用程序的主要特点应该是灵活性,所以如果客户需要比基本平台没有的更具体的东西,应该可以为他做.

解决方法

这里有一些经典问题.你去过 http://highscalability.com/吗?那里有一些好的案例研究.

根据个人经验,如果您尝试在一台服务器上共享客户端,您会发现一个非常成功/活跃的用户将随着时间的推移占用该计算机的所有资源.我们在SAAS中有一个客户端破坏了共享服务器,我们不得不将他移到其他地方.

我会将全局枚举转换为服务.您可以为国家/地区列表,状态列表等创建一个中央数据库,并将其置于Web服务层之后.此外,在该数据库中,您可以拥有用户管理/管理哪些服务器属于哪个用户等.您可以创建一个管理门户,读取/写入此数据库以管理您的用户群.

如果我再次做SAAS,我会从小处开始,等待疼痛发作.你真正想要的是在它们发生时解决扩展问题的好工具.让一些脚本准备好跨服务器进行滚动模式更改(一旦有多个服务器,就无法避免这种情况).在修改模式时使用脚本来删除计算机.有脚本将用户从共享服务器迁移到专用服务器.

考虑从中央数据库设置复制.这将抽取每个用户分区/数据库所需的全局信息,而无需编写大量代码.

但是我见过的最重要的建议 – 并且经验丰富 – 不要太努力建立下一个规模的Facebook.开始简单,看看实际发生了什么,然后再担心主要的可伸缩性问题.您可能会感到惊讶,因为用户群的增长可以很好地扩展,哪些不可扩展.

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读