我見過以許多不同方式託管的SaaS應用程序。跨多個數據庫分割功能和模塊是一個好主意嗎?例如,將諸如User表之類的東西放在一個數據庫中,並在另一個數據庫中放置特定於/應用程序的特定表格,或者在另一個數據庫中放置其他共享表格?SaaS數據庫設計 - 多個數據庫?分裂?
回答
從一個數據庫開始。當項目需要時分割數據/功能。
這裏是我們可以從LinkedIn學習:
- 單個數據庫無法正常工作
- 參照完整性將是不可能的
- 任何數據丟失是一個問題
- 緩存是就算不錯了當它適度有效
- 千萬不要低估增長軌跡
來源:
問問自己:通過將所有內容移動到不同的數據庫中,你會獲得什麼?
管理方面的很多痛苦是我的猜測。我個人更熱衷於將所有內容都放在單個數據庫中,並且如果遇到以後單個數據庫無法解決的問題,請將數據遷移到多個數據庫中。
性能和可伸縮性呢? – Vyrotek 2008-09-16 03:26:44
擁有單個數據庫最適合數據完整性,因爲這樣您就可以使用外鍵。如果將數據分成多個數據庫,則不能擁有此內置數據完整性。如果您的數據不相關,這不是問題,但如果它是相關的,則您的一個數據庫可能包含與另一個數據庫不一致的數據。在這種情況下,您需要編寫一些代碼來定期掃描數據庫中的不一致數據,以便適當地處理它。
但是,如果您的站點/應用程序需要高度可擴展性(例如Internet規模),則可能需要多個數據庫。例如,您可以將每個數據庫託管在不同的物理服務器上。
按功能分割數據庫可能不是一個好主意,除非您看到有力證據表明需要。通常,您可能需要將兩個數據庫更新爲單個事務的一部分 - 而分佈式事務則更難以使用。此外,如果數據庫需要拆分,您可能會使用分片。
High Scalability是一個用於擴展SaaS應用程序的好博客。如前所述,按照您的建議在數據庫之間拆分表通常是一個糟糕的主意。但是類似的概念是分片,在那裏你保持相同的(或類似的)模式,但將數據分割到多個服務器上。例如,用戶1-5000在server1上,用戶5000-10000在server2上。根據您的應用程序使用的查詢,它可以是一種有效的擴展方法。
對於SaaS應用程序,您可以爲多個租戶使用多個數據庫,但通常不會以模塊方式進行拆分。
這是我在SaaS應用程序設計中看到的最常見的模型。您的基礎架構將爲您添加到應用程序的每個租戶進行復制。
保持它的自然設計(非規範化高達需要,規範的少的要求)。將數據庫模型拆分爲模塊,並通過使用服務(擁有數據)來維護數據,從而牢記面向服務的原則。
爲什麼要使用數據庫呢?
我認爲使用像Hadoop,Voldemort(由LinkedIn開發和使用的project-voldemort.com)這樣的分佈式存儲系統是個好主意。
我認爲db適用於金錢操作等敏感數據,但對於其他所有可以使用分佈式存儲的數據。
- 1. 多種數據庫的SaaS
- 2. Mongodb SaaS單一數據庫與多個數據庫
- 3. 一次更改多個mysql數據庫(SAAS數據庫更改)
- 4. 數據庫設計決定:多個(mysql)數據庫還是1個數據庫?
- 5. 數據庫設計 - 一個數據庫,多個網站
- 6. 多租戶SAAS應用程序的數據庫設計和ORM
- 7. 數據庫分頁設計
- 8. 數據庫設計 - 何時將數據分成多個表?
- 9. 分層數據的數據庫設計
- 10. 數據庫設計:分層數據
- 11. 多表數據庫設計
- 12. 單一數據庫與多個數據庫的應用設計
- 13. MongoDB - 用於SaaS產品的單個數據庫或多個數據庫
- 14. SAAS數據庫連接
- 15. 多個模型的數據庫設計?
- 16. 多個用戶數據庫設計
- 17. 設計一個數據庫
- 18. 庫存數據庫設計
- 19. 設計數據庫
- 20. 數據庫設計
- 21. 數據庫設計
- 22. 設計數據庫
- 23. 數據庫設計
- 24. 數據庫設計?
- 25. 數據庫設計
- 26. 數據庫設計
- 27. 數據庫設計
- 28. 數據庫設計
- 29. 數據庫設計
- 30. 數據庫設計
可能重複[爲每個客戶端使用單個數據庫有什麼優點?](http://stackoverflow.com/questions/13348/what-are-the-advantages-of-using-a-single-數據庫爲每個客戶端) – givanse 2014-02-06 08:42:29