亲爱的,我想创建企业资源计划云系统,我想知道许多使用同一软件的客户的概念是什么,但是每个客户都有专用的数据库,它是如何工作的?
它通过创建多个数据库来工作,并且我通过每个客户端的连接字符串来控制它?或者,它只是创建一个数据库,我通过伪造键列来控制它?
几乎只有一个数据库是最简单的入门方法。它使管理架构更新变得更简单,并且根据托管选项的性质,其价格可能会更低。取决于您有多少客户,但是,单个数据库稍后可能会带来不小的性能挑战,而这可能很难对其进行优化。
您通常最终会用单个数据库解决性能挑战的方法是通过
sharding,它表示两种方法的hybrid。在sharding中,您仍将有一个供客户使用的键列,以及多个数据库。在此模型中,每个客户都将位于不同的数据库中,但是每个数据库通常会有多个客户。通过分片,可以从单数据库方法扩展到多数据库方法,而无需重新架构。 Microsoft还提供了工具,以帮助通过分片扩展数据库。
您没有提到要托管在哪个云提供商上。如果您使用的是Azure,建议阅读他们的Multi-tenant SaaS database tenancy patterns文章。实际上,即使您not
使用Azure,您也可能会发现这对于思考不同的选项及其折衷方案很有用。