1

まず文法上の間違いをお許しください。複数のデータベース、共有リソース、EFを使用したSaaSへの最良のアプローチを見つける

okが、これは私はすでに、 私のアプリケーションの成長は5000 +に来て、私は、ユーザーのユーザー\グループごとにデータベースを必要とする、私はangularJsとEFおよびMVC 4、UIを使用したい を:-)を知っていますユーザーは、すべて という単一の共有リソースも持っています。ユーザーが何かを検索すると、共有リソース とユーザー独自のデータベースの両方から結果が得られます。 パフォーマンスは非常に重要です。私の研究では

私はEFが異なるデータベースに接続できますが、私は、コードのトンを記述することなくそうすることの任意の適切な方法を見つけることができなかったことがわかりました。 シナリオ:

  1. 新しいユーザーが登録すると、システムは新しいデータベースを作成します。
  2. 新しいユーザーがログインすると、システムは自分のデータベースと共有データベースからデータを返します。
  3. 新しいユーザーがログインしましたが、システムデータベースがアップグレードされましたが、ユーザーdbもアップグレードする必要があります。

今私は、私のすべての目標を達成するための簡単な方法が存在しないことを知っている が、あなたは最高の私に合ったものに私に指示してくださいすることができますか?

もう一度私の英語のために申し訳ありません! ありがとうございました! :-)

+0

_ "ユーザーごとのデータベースグループが必要です" _ - なぜですか? – CodeCaster

+0

ユーザーのグループは、たとえばオフィスのようなものです。このオフィスには、独自のエージェント、従業員などがあり、データによっては他のオフィスとは異なるデータがあります。別のものよりも異なって見えるかもしれません。 –

答えて

1

私たちは、すべてのユーザ[テナント]データを含む共有データベース[セントラルリポジトリ]を使用しているいくつかのSaaSアプリケーションで働いており、アプリケーションデータベース[テナントベース]すべてのユーザーグループ。

これはEFで簡単に動作し、パフォーマンスのオーバーヘッドはありません。クロスデータベースクエリを使用してはならず、データアクセスレイヤで使用している可能性のあるEFコードの最適化に焦点を当てて、別々のデータベースからユーザーデータをマージするタスクを処理する個別のサービスを用意する必要があります。

では、アプリケーションを分析して、非頻繁に更新されるデータを検索し、それらをキャッシュし、それらはAppFabricのような分散キャッシュを使用してレンダリングを取得する必要かもしれませ。

サービス層では、User dbと集中データベースの同期に関して、これらの呼び出しを.Net Transactionスコープでラップし、次にアトミック性を保持することで、このジョブを実行できます。

私の返信でご理解と詳細な説明を掲載してください。

+0

ありがとう、あなたが働いているsaasアプリケーションの構造は、私のアプリケーションでecomplishしようとしているものです。 –

+0

実装の詳細を探していますが、毎回異なるDBに接続する方法、サービス、私は別のデータベースを作成し、初期化子などを変更する必要があります。私は、これらの目標を達成するための適切な方法またはパターンの周りに頭を浮かべて、大きな問題ではなく、私のレポが共有DBとテナントDBの結果を返すことはわかっていますが、これを最初に構築し、それが正しくアップグレードされるように配慮するなどの安全な方法を得ることは、私が把握できないものです。 –

+0

共通データベースと共有アプリケーションデータベースからデータを取得するためのサービスが異なります。サービスレベルでは、トランザクションスコープはアトミック性を保証します。まもなく私はあなたのための簡単な例を共有することがあります。 – Saravanan

関連する問題