具有序列的多租户系统(在 Azure 上)

Mat*_*ear 5 sql database asp.net-mvc azure azure-sql-database

我正在尝试利用最优雅的解决方案或使用最轻的库来尝试为特定记录生成序列。这将是一个使用 SQL Azure 在 Azure 中托管的多租户系统。所有租户将共享同一个数据库。它是一个 ASP MVC4 应用程序。

租户 A 和租户 B 都添加了两项不同的费用。每条记录都将获得系统将使用的唯一 ID(可能是 INT 或 GUID),但是,每条记录都需要一个租户人类可读 ID,该 ID 也是一个 int,并且会针对每个租户递增。为什么?对于每个租户来说,如果有自己可以关联的递增数字,那就太好了。也许想想发票号码。

例如,
租户 A 增加了一项费用。PKEY = 1 / Sequence = 1
租户 B 添加一笔费用。PKEY = 2 / 序列 = 1
租户 A 添加费用。PKEY = 3 / 序列 = 2

一种解决方案是保留一个包含序列类型、租户 ID 和下一个值的表,然后在插入费用之前查询并递增它(使用相同的示例)。从长远来看,这似乎让我自己面临一些糟糕的数据库性能。

在这种情况下是否有其他技术或库可以提供帮助?

Cra*_*aig 0

我有一个在 Azure/SQL Azure 上运行的多租户应用程序。我基本上就是按照你说的做的。例如我有一个类似的模式

Business Table
BusinessId - autoinc
Name

Client Table
ClientId - autoinc
BusinessId
Name
Run Code Online (Sandbox Code Playgroud)

然后将业务 ID 用于 SQL for 和 CRUD 操作的 WHERE 子句中,以确保仅返回正确的数据。我创建了一些辅助方法来使这变得更容易。如果您索引正确,我不认为应该有太多性能问题,我从未遇到过任何问题。我的许多应用程序设置也缓存在内存中,以减轻数据库负载。