Azure 弹性规模/每个租户数据库 : how to implement data dependent routing

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

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

我的问题是:

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

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

最佳答案

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

Elastic Database Tools librarydata dependent routing (DDR) 的实现。但当你有一个简单的 single tenant sharding pattern 时,你可能会发现它太过分了。执行。您始终可以在启动时查询分片映射数据库(或自定义配置存储)并加载 Dictonary<string,string>存储 CustomerName -> ConnectionString 查找。

关于Azure 弹性规模/每个租户数据库 : how to implement data dependent routing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50781540/

相关文章:

ssl - 使用顶级域屏蔽通配符 SSL 证书

asp.net - MVC、IIS 和 Azure 日志记录错误

asp.net-mvc - 为什么即使使用静态机器 key ,HttpAntiForgeryException 也会随机发生?

asp.net - Web api 接口(interface)可以在本地运行,但不能在 Azure 上运行

java - Multi-Tenancy 究竟是什么,还是另一个流行词?

grails - 什么是基于模块化/组件的开发的最佳架构/设计模式/最佳实践 : part 2

azure - 如何将大量 DDL 从 Azure Databricks 的开发实例导入/重新创建到生产实例

asp.net-mvc - 如何将 ASP.Net 4.5/MVC 4/SQL Express 2008 R2 部署到 Windows Azure 免费网站

azure - 将 Azure 中的弹性作业配置为在特定时区(而不是 UTC)的特定时间运行

tsql - 使用 TSQL,CAST() 和 COLLATE 是不确定的。如何使它具有确定性?解决方法是什么?