Database-Design

多個項目和一個數據庫的最佳數據庫模式是什麼?

  • July 22, 2018

我正在處理多個項目,但後端將保持不變。我有一個用於身份驗證、數據等的不同伺服器和一個用於儲存所有詳細資訊的數據庫。

如果一個項目正在創建任何數據,那麼只有該項目可以訪問該數據,而其他項目不應訪問該數據。例如,如果使用者從一個應用程序中將一些數據保存在應用程序中,那麼只有該應用程序可以訪問該應用程序。

我正在嘗試查找此數據庫的架構。我正在使用 MySQL 5.7 數據庫。

我不是在尋找儲存數據的多租戶方法。

我希望以 JSON 數據類型儲存數據。

謝謝你幫助我。

您正在談論Multitenancy,或多個單獨的實體共享程式碼,但擁有自己的數據集。雖然有很多方法可以解決這個問題,但最簡單的方法是創建多個數據庫(模式),其中每個項目只能訪問自己的獨立數據庫

如果每個使用者創建的數據量非常小,則可以使用單個表或一組表,其中每個表都以使用者 id 或使用者欄位為前綴,因此應用程序控制項只能編寫和閱讀你自己的行。這假設您可以完全控制應用程序。

如果應用程序在使用者端,你不應該只在 MySQL 上解決這個問題——**你需要一個後端**應用程序與使用者的前端應用程序通信,並在數據庫和前端應用程序之間進行訪問控制(實現授權身份驗證)。

每個使用者都mysql需要GRANT通過相應的查詢獲得權限。

通常GRANT以以下形式使用:

GRANT ALL PRIVILEGES ON *.`myscheme` TO `user`@`host` IDENTIFIED BY 'somepassword'

但是您可以根據它們所屬的項目在表、常式和函式的名稱前面加上一些前綴。然後僅授予特定使用者對該表和常式的權限:

GRANT ALL PRIVILEGES ON projA25_*.`myscheme` TO `pA25`@`host` IDENTIFIED BY 'somepassword'
GRANT ALL PRIVILEGES ON projB17_*.`myscheme` TO `pB17`@`host` IDENTIFIED BY 'somepassword'
.....

引用自:https://dba.stackexchange.com/questions/212684