2

現在、SAAS アプリケーション コードネーム FinAcuity を開発中です。これは Windows Azure プラットフォームでホストされ、プライマリ データベースは SQL Azure になります。

当社製品の技術仕様は次のとおりです。

  • 開発環境 - MVC 3 (Razor) を使用した Asp.Net 4.0、Entity Framework
  • データベース - SQL Azure

これが私たちのビジネスケースです:

  • 当社の製品はSAAS製品であり、クライアントの財務データが含まれるため、各クライアントに個別のデータベースを提供して、より高いレベルのマルチテナント、データ分離、およびセキュリティを実現します。
  • 現在、クライアントはアカウントの下に複数の会社を作成でき、これらの会社は特定のクライアント DB の下のスキーマによって分離されます。

注:テーブル構造は各スキーマで同じになります。

申請プロセスをより深く理解するためのいくつかのシナリオを次に示します。

シナリオ 1:

  • クライアント登録時に新しいデータベースをプロビジョニングするために、基本構造のデータベースを作成するストア プロシージャを実行します。
  • 私たちの疑問: SQL Azure でこれを行うのは正しい方法ですか、それとも別の方法がありますか?

シナリオ 2:

  • クライアント データベース配下の複数のスキーマにアクセスするために、個々のスキーマに対して SSDL ファイルを動的に生成し、そのファイルを接続に使用しました。
  • 私たちの疑問: 複数の接続に同じ SSDL ファイル インスタンスを使用し、接続にメタデータを渡すなど、他の方法はありますか?

シナリオ 3:

  • アプリケーションはアドホック クエリと Excel ファイルからの動的テーブル作成をサポートしているため、バックエンドでストア プロシージャを実行するウィザードを提供し、クライアント データベースの特定のスキーマでウィザードからヘッダーを選択すると、そのテーブルを Excel ファイルから動的に作成します。 .
  • 私たちの疑問: もしあれば、それを行うためのより良い方法を提案してください。

シナリオ 4:

  • 新しいテーブルがスキーマに追加されると、EDMX ファイルを更新して、新しく作成されたテーブルからデータを取得する必要があります。これを行うには、新しく作成されたテーブルからデータを取得するストア プロシージャを実行します。
  • 私たちの疑問: EDMX ファイルのランタイムを更新してデータを取得する方法はありますか?

上記のシナリオごとに、考えられる最善の解決策についてアドバイスが必要です。

前もって感謝します。

よろしくお願いします-Sahil

4

1 に答える 1

1

I think this is a little too much for 1 single question.

And I personally think you look at it from a wrong perspective. Why did you choose Entity Framework and SQL Azure? Do you really think these are the best technologies to address your problems?

I suggest you take a step back and investigate what other technologies could be used. Because what you're asking here looks like a schema-less solution, and SQL Azure / SQL Server wasn't built for that IMHO.

You can start by looking at a NoSQL (schema-less, key value store) solution, possibly in Windows Azure. There's a whitepaper that will get you started on that: NoSQL and the Windows Azure platform -- Investigation of an Unlikely Combination

Windows Azure Table Storage is a key-value store that could solve some of your issues:

  • Customer isolation / Multiple schemas: WAZ Table Storage supports partitions, you could partition your data per customer instead of putting all the data together.
  • Provisioning: No need to provision anything. Get a storage account and you can get started. Then you can simply have some code that writes data in a specific partition for that customer.
  • Cost (not mentioned in the question): Table Storage is much cheaper than SQL Azure
  • ...
于 2012-07-30T09:46:57.140 に答える