对数据库上下文执行弹性扩展多分片查询

本文关键字:查询 扩展 数据库 上下文 执行 | 更新日期: 2023-09-27 18:34:33

我正忙于在我目前正在从事的一个项目中实施新的弹性缩放技术。这项技术似乎解决了我们在设计新的应用程序基础时遇到的一些复杂问题。

到目前为止,这些示例看起来很棒,我正忙于在我们新创建的 DAL 中实现这一点。

对于我们的应用程序,我们不能完全依赖 Azure 中的弹性缩放。应用程序还必须能够在单个实例计算机上本地运行。因此,我创建了以下代码来查询数据库,该数据库也与弹性缩放配合使用。

public IEnumerable<AnEntity> All()
{
    var dbConnection = GetConnection();
    using (var context = new OurDatabaseContext(dbConnection))
    {
        var theEntities = context.EntityTable;
        return theEntities.ToArray();
    }
}
private IDbConnection GetConnection()
{
    var connectionInstance = connection[ConnectionStringNames.TheDatabase];
    var dbConnection = connectionInstance.Create();
    return dbConnection;
}

connectionInstance是通过 IoC 配置的,它将创建一个我们可以在 OurDatabaseContext 中使用的IDbConnection .一切都很简单。

我面临的主要问题是做一个MultiShardConnection,由弹性缩放提供并在示例中实现。

所以我的问题是,是否可以使用具有数据库上下文的MultiShardConnection(例如LINQ2SQL(我们正在使用(或 EF(的上下文(。

如果没有,是将MultiShardConnectionMultiShardCommand结合使用的唯一解决方案吗?或者什么时候可以使用这样的功能?

对数据库上下文执行弹性扩展多分片查询

据我目前所知,没有简单的方法可以与 dbContext 建立多分片连接。

使用MultiShardConnection + MultiShardCommand与示例相比非常困难。但是,并非所有方法都可用(例如ReadAsync(。

但是,我认为大多数多分片连接都可以通过使用正确的分片键(映射键(来绕过。我通过向我的ShardMapManager添加另一个分片密钥来解决我的问题。如果您想描述您的具体原因,您需要多分片连接并编辑我的帖子。始终可以选择创建多个数据库上下文。