有多個方面需要考慮與多租戶,其中之一是數據架構。您還擁有賬單,性能,安全等等。
關於數據架構,我們先來探討SQL存儲。您可以使用以下選項:添加您的代碼用於過濾記錄的CustomerID(或其他標識符),爲不同的客戶使用不同的模式容器(每個客戶都擁有專用模式擁有的所有數據庫對象的副本在數據庫中),線性分片(每個客戶都有自己的數據庫)和聯合(SQL Azure的特性,基於性能和可伸縮性需求提供漸進式分片)。所有這些選項都是有效的,但對性能,可伸縮性,安全性,維護(如備份),成本以及當然數據庫設計有不同的影響。根據您提供的信息,我無法告訴您選擇哪一個;如果您已經擁有代碼庫,某些模型比其他模型更容易實現。一般來說,線性分片是最簡單的模型,它提供了強大的客戶隔離,但也許是最昂貴的。基於模式的分離並不難,但需要很好地處理安全性需求,並且可能引入跨客戶性能問題,因爲這種方法不是無共享的(對於同一數據庫中的客戶)。最後,聯合會要求使用客戶識別器,並且有一些限制;然而,這項技術使您可以更好地控制性能分佈和長期可擴展性(因爲像線性分片一樣,聯合使用無共享體系結構)。
關於存儲賬戶,每個客戶使用不同的存儲賬戶是最終的選擇。如果您不使用單獨的存儲帳戶,您將面臨的主要問題是性能限制,例如可以使用單個存儲帳戶執行的每秒最大事務數。但是,正如你指出的那樣,本地測試可能是一個問題。但請考慮:本地模擬器不提供與Azure存儲帳戶100%的奇偶校驗(模擬器不支持某些功能)。所以我只會使用本地模擬器進行初始開發和故障排除。任何嚴重的測試,包括多租戶測試,都應該使用真實存儲帳戶進行。這是您完全測試應用程序的唯一方法。
謝謝!這簡要總結了我在處理這個項目時所瞭解和研究的所有選項。我注意到你是一位專門研究這一確切技術領域的顧問,你是否有興趣安排一筆交易,我會付給你或你團隊的人來幫助我構建一個非常基本的骨幹多租戶應用程序,以幫助我理解所有供應/授權/計量/縮放/計費等主要多租戶問題的不同組件?然後,我可以轉向並將相同的理論應用到我的客戶的應用程序!讓我知道如果這是你的興趣:) – John 2012-07-11 21:38:16
如果你有興趣,請給我發電子郵件在我的名字(john)在johnarnold.ca – John 2012-07-11 21:46:47
嗨約翰 - 很高興我能幫上忙。關於多租戶框架,我已經開發了一個!你可以在這裏找到它:https://scale.bluesyntax.net。它仍然處於Beta版,但它爲線性和模式分離分片提供了一個很好的模型。有關提供的API的更多詳細信息以及更多信息,請訪問https://scale.bluesyntax.net/About.aspx - 我將分別與您聯繫,以瞭解您是否感興趣或者如果您正在尋找更多定製的內容。 – 2012-07-12 01:45:46