Azure Elastic Sc​​ale /每个租户数据库:如何实现依赖于数据的路由

时间:2018-06-10 07:39:40

标签: azure azure-sql-database multi-tenant azure-elastic-sharding

基于Microsoft Azure Elastic Sc​​ale示例应用程序在线,我已经能够在Azure中创建我的Shard Map Manager(SMM)和弹性池数据库。我的架构是每个租户的单独数据库。我在我的Web应用程序中使用Entity Framework。我使用byte []哈希作为我的Shard Key,基于字母数字客户名称。客户名称是作为客户登录的一部分输入的,因此我可以在登录时确定唯一的分片密钥以传递给SMM。

我的问题是:

1。)由于每个租户都有自己的数据库,我是否仍需要在客户表的每一行中包含散列客户名称/分片密钥?

2。)我不知道在调用服务器期间分片密钥信息传递给SMM的位置。它是在实体的上下文中还是需要成为查询本身的一部分?任何样本都将非常感谢!

1 个答案:

答案 0 :(得分:2)

在查找特定租户的连接字符串时,可以访问Shard Map Manager数据库。获得连接字符串后,即可连接到特定于租户的数据库。在数据库内部,您根本不需要使用分片键。

Elastic Database Tools library的执行情况为data dependent routing (DDR)。但是当你有一个简单的single tenant sharding pattern实现时,你可能会发现它有点过分。您始终可以在启动时查询分片地图数据库(或自定义配置存储),并加载Dictonary<string,string>以存储CustomerName - &gt; ConnectionString查找。