2012-07-30 76 views
2

我們目前正在開發將在Windows Azure平臺上託管的SAAS應用程序代碼名稱FinAcuity,主數據庫將爲SQL Azure。Windows Azure/SQL Azure實體框架中的動態數據庫/架構

下面是我們產品的一些技術參數:

  • 開發環境 - Asp.Net 4.0 MVC 3(剃刀),實體框架
  • 數據庫 - SQL Azure的

這裏我們的業務案例:

  • 我們的產品是一個SAAS產品,而且它將包含財務Da我們將爲每個客戶端提供單獨的數據庫以實現更高級別的多租戶,數據隔離&安全。
  • 現在客戶可以在其賬戶下創建多個公司,這些公司將由Schemas根據特定的客戶數據庫分隔。

注:表格結構對於每個模式都是相同的。

以下是一些場景,可以讓您更深入地瞭解我們的應用程序流程。

方案1:

  • 要提供在客戶端註冊新的數據庫,我們要運行存儲過程,將創建數據庫的基本結構。
  • 我們懷疑:在SQL Azure上這樣做的正確方法還是有其他方法嗎?

方案2:

  • 對於下客戶數據庫訪問多個模式,我們已經動態生成各個模式SSDL文件和用於該文件進行連接。
  • 我們懷疑:有沒有其他方式來做到這一點,比如對多個連接使用相同的SSDL文件實例並傳遞元數據進行連接?

方案3:

  • 隨着我們的應用程序支持即席查詢和Excel文件的動態創建表,我們將提供將在後臺運行存儲過程,並創建嚮導該表從Excel文件動態從頭文件選擇嚮導在特定架構下的客戶端數據庫。
  • 我們的懷疑:如果有的話,建議我們更好的方法嗎?

方案4:

  • 現在作爲新表添加到模式,我們必須更新EDMX文件從該新創建的表中獲取數據。爲此,我們將運行將從新創建的表中獲取數據的存儲過程。
  • 我們懷疑:有沒有更新EDMX文件運行時和獲取數據的方法?

需要針對上面列出的每種情況的最佳解決方案提供建議。

預先感謝您。

最好的問候 - 薩赫勒

+0

你要分這個分離約EF和SQL Azure的問題。順便說一句。方案4超出了EF的範圍 - 您將不得不直接使用SQL /存儲過程來查詢動態表而不使用EF。 – 2012-07-30 09:28:48

回答

1

我認爲這是一個有點吃不消1點單一的問題。

我個人認爲你從錯誤的角度來看它。你爲什麼選擇實體框架和SQL Azure?你真的認爲這些解決你問題的最好的技術嗎?

我建議你退後一步並調查可以使用的其他技術。因爲你在這裏問的看起來像一個無模式的解決方案,並且SQL Azure/SQL Server不是爲那個恕我直言而構建的。

您可以從查看NoSQL(無模式,鍵值存儲)解決方案開始,可能在Windows Azure中。還有,將讓你對開始的白皮書:NoSQL and the Windows Azure platform -- Investigation of an Unlikely Combination

的Windows Azure表存儲是一個key-value存儲,可以解決您的一些問題:

  • 客戶隔離/多模式:WAZ表存儲支持分區,您可以將每個客戶的數據分區,而不是將所有數據放在一起。
  • 配置:無需提供任何配置。獲取一個存儲帳戶,你就可以開始了。然後,您可以簡單地將一些代碼寫入該客戶的特定分區中。
  • 成本(在這個問題沒有提及):表存儲比SQL Azure的
  • 便宜得多...