6

現在取り組んでいるプロジェクトに新しいエラスティック スケール テクノロジを実装するのに忙しくしています。このテクノロジーは、新しいアプリケーション基盤の設計中に私たちが抱えていたいくつかの複雑な問題を解決するようです.

これまでのところ、例は見栄えがよく、新しく作成した DAL にこれを実装するのに忙しいです。

私たちのアプリケーションでは、Azure の Elastic Sc​​ale だけに頼ることはできません。アプリケーションは、オンプレミスの単一インスタンス マシンでも実行できる必要があります。そのため、Elastic Sc​​ale でも非常にうまく機能するデータベースを照会する次のコードを作成しました。

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 を介して構成されます。すべて非常に簡単です。IDbConnectionOurDatabaseContext

私が直面している主な問題はMultiShardConnection、Elastic Sc​​ale によって提供され、例に実装されている を実行することです。

したがって、私の質問は、MultiShardConnectionデータベース コンテキスト (LINQ2SQL (使用している) または EF のものなど) で a を使用することは可能かということです。

MultiShardConnectionそうでない場合、と を組み合わせて使用​​する唯一の解決策はありMultiShardCommandますか? または、そのような機能はいつ利用可能になりますか?

4

1 に答える 1

1

私が現在知っているように、dbContext とのマルチシャード接続を確立する簡単な方法はありません。

MultiShardConnection + MultiShardCommand を使用することは、例から非常に簡単です。ただし、すべてのメソッドが使用できるわけではありません (たとえば、ReadAsync)。

しかし、ほとんどのマルチシャード接続は、適切なシャーディング キー (マッピング キー) を使用してバイパスできると思います。ShardMapManager にシャーディング キーをもう 1 つ追加することで問題を解決しました。特定の理由を説明したい場合は、MultiShard 接続が必要で、私の投稿を編集してください。複数の dbContext を作成するオプションが常にあります。

于 2015-01-31T02:03:57.297 に答える