Azure Elastic Scale/Database-per-tenant:如何实现数据依赖路由

Azure Elastic Scale/Database-per-tenant: how to implement data dependent routing

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

我的问题是:

1.) 由于每个租户都有自己的数据库,我是否还需要在客户表的每一行中包含经过哈希处理的客户 name/shard 键?

2.) 我不明白在调用服务器期间分片键信息从哪里传递到 SMM。它是在实体的上下文中还是需要成为查询本身的一部分?任何样本都将不胜感激!

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

Elastic Database Tools library has an implementation of data dependent routing (DDR). But you might find it overkill for when you have a simple single tenant sharding pattern 实施。您始终可以在启动时查询分片映射数据库(或自定义配置存储)并加载 Dictonary<string,string> 来存储 CustomerName -> ConnectionString 查找。