0

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

我的问题是:

1.) 由于每个租户都有自己的数据库,我还需要在客户表的每一行中包含散列的客户名称/分片键吗?

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

4

1 回答 1

1

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

弹性数据库工具库具有数据相关路由 (DDR)的实现。但是当你有一个简单的单租户分片模式实现时,你可能会发现它有点过分了。您始终可以在启动时查询分片映射数据库(或自定义配置存储)并加载 aDictonary<string,string>以存储 CustomerName -> ConnectionString 查找。

于 2018-06-10T14:23:34.883 回答