多租戶CRM系統中分表以及如何觸發產生表和資料的問題。

來源:互聯網
上載者:User
我們公司現在在做一個多租戶的crm管理系統。由於資料量已經很大,最近開始考慮分庫分表的問題。
對於多租戶的crm系統,目前有三種主要的資料庫組織方式:
1.單一租戶獨享單一資料庫。
2.單一資料庫下單一租戶獨享單一schema
3.多租戶共用單一資料庫(用租戶id來區分它們的資料)
基於各方面考慮,我們目前採用了第二種方式:在單一資料庫中,每個租戶都有自己的一套資料表。每一張表的表名,都採用【表名+租戶id】的方式。

但是,在資料庫結構確定之後,接下來遇到幾個問題沒有想明白。就是:
1.這些表該如何進行管理?用php代碼來管理還是在mysql端有這樣的中介軟體?
2.新註冊租戶的資料表,該在什麼時候觸發產生?(目前採用的觸發位置,是在新使用者註冊的時候,直接產生他的使用者表、菜單表之類的。而當他用到其他的功能的時候,再產生相關功能的表,總感覺這種方式有問題,有沒有更好的處理方式?)

有沒有做過多租戶CRM系統的技術大神,給點意見?在此萬分感激了

回複內容:

我們公司現在在做一個多租戶的crm管理系統。由於資料量已經很大,最近開始考慮分庫分表的問題。
對於多租戶的crm系統,目前有三種主要的資料庫組織方式:
1.單一租戶獨享單一資料庫。
2.單一資料庫下單一租戶獨享單一schema
3.多租戶共用單一資料庫(用租戶id來區分它們的資料)
基於各方面考慮,我們目前採用了第二種方式:在單一資料庫中,每個租戶都有自己的一套資料表。每一張表的表名,都採用【表名+租戶id】的方式。

但是,在資料庫結構確定之後,接下來遇到幾個問題沒有想明白。就是:
1.這些表該如何進行管理?用php代碼來管理還是在mysql端有這樣的中介軟體?
2.新註冊租戶的資料表,該在什麼時候觸發產生?(目前採用的觸發位置,是在新使用者註冊的時候,直接產生他的使用者表、菜單表之類的。而當他用到其他的功能的時候,再產生相關功能的表,總感覺這種方式有問題,有沒有更好的處理方式?)

有沒有做過多租戶CRM系統的技術大神,給點意見?在此萬分感激了

如果是我,肯定先用軟體解決初始化schema的邏輯,這樣最快實現目的。後續根據實際情況再考慮使用中介軟體。

至於觸發初始化的動作的時機,要看你初始化動作需要消耗的資源和時間了。如果消耗可以忽略不計,那新租戶註冊成功就立刻初始化;如果比較耗時耗資源,就定期cron去跑(業務上需要租戶從註冊到使用有個間隔,比如註冊審核)。

按我的經驗,僅僅是建立幾十張表甚至幾百張表(MySQL),耗費不了多少資源的~一眨眼的時間都用不了

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.