数据库中每个客户端的表

时间:2011-04-20 15:07:30

标签: sql-server-2008 locking optimistic-locking pessimistic

我们开发服务的每个客户都可以预约。 是否存在策略 - 每个客户端的数据库表(MS SQL SERVER)是否合适?

我们认为此类策略可以简化和排除复杂的表锁定。

1 个答案:

答案 0 :(得分:0)

听起来您正在尝试构建多租户应用程序。我不建议每个客户一张桌子。相反,我会推荐两种解决方案之一:

  1. 将所有客户(租户)数据集成到同一个表中,并按标识符进行隔离。换句话说,每个顶级表都有一个名为“ClientId”或“TenantId”的外键,它可以识别和分离每个客户端的数据。这种方法的缺点是数据库变得更快,而大型数据库管理较小的数据库则更复杂。此外,开发人员可能会构建一个忘记过滤ClientId的查询,并且一个客户端会看到另一个客户端的数据。

  2. 每个客户一个数据库。一个更极端的解决方案,但如果客户端将托管他们自己的应用程序,如果每个客户端数据的大小存在很大差异,或者客户端希望绝对保证数据分离,则非常有用。