[英]Scalability in shared multi-tenant MySQL database
我正在為大量租戶設計基於Web的通用CRM應用程序。 用戶(租戶)在線注冊以使用該應用程序。 最初,不會有那么多用戶,但是將來會有可能。
我想使用單個共享的MySQL數據庫。 由於選擇的方案和將來的功能集成,將不可能為每個租戶創建單獨的數據庫。 編程將使用PHP。
但是,我應該如何解決數據可伸縮性問題:
MySQL是相當不錯的比例了 ,即使有巨大的表。 基本上,您可以將數據庫放在更大,功能更強大的服務器上,以處理需求。 以我的經驗,它通常受RAM限制。
一旦該技術開始變得冒險,你可以通過創建數據庫的讀副本向外擴展。 基本上,這些是主數據庫的只讀副本,這些副本與主數據庫連續同步。 在您的應用程序中,使用兩個不同的數據庫連接。 第一個連接到一個只讀副本,並用於所有SELECT語句。 另一個連接是您的主數據庫,該數據庫將用於所有INSERT,UPDATE和DELETE語句。 由於許多應用程序執行的SELECT比其他任何操作都要多,並且可以創建的只讀副本數量幾乎沒有限制,這將極大地擴展您的潛在規模。
在MySQL中,我傾向於為所有租戶使用一個數據庫,並通過為每個租戶使用不同的數據庫用戶名來分割數據。 通過tenant_id列和按tenant_id篩選的視圖,我可以確保租戶無法訪問其他租戶的數據。 我寫了一篇博客文章,介紹如何在周末將單租戶應用程序轉換為多租戶: https : //opensource.io/it/mysql-multi-tenant/
對於所有租戶來說,擁有一個數據庫和一個代碼庫比維護多個數據庫或模式要容易得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.