Postgresql
在 Postgres 中擁有成千上萬的使用者是否可行?
我們正在創建 SAAS,我們最多將擁有 50.000 個客戶。我們正在考慮在 Postgres 數據庫中為每個客戶創建一個使用者。我們會將登錄到我們服務的每個使用者映射到數據庫中的使用者,以確保他們只能訪問自己的數據。我們還希望通過此解決方案直接在數據庫中實施審計跟踪,該解決方案利用觸發器。如果每個客戶都有自己的數據庫使用者,那麼即使兩個客戶共享相同的數據,也很容易看出誰做了什麼。
我們會因為數據庫中有 50.000 個使用者而遇到一些意想不到的問題嗎?性能方面或管理方面。也許連接池會更困難,但我真的不知道我們是否需要它。
是的,應該沒問題。不過,您應該使用連接池,因為 pg 每個連接使用相當數量的記憶體(大約 10MB AFAIK)。
但是,每個盒子超過 500 個同時連接將是一個問題(例如同時主動查詢數據庫)。更多的 CPU/核心更好。使用具有 RAID 10 的 SSD。
您的 SaaS 應用程序應作為一個使用者連接,然後連接
set role
到真實使用者。這允許您使用連接池,因為連接字元串將相同,但使用不同的使用者。您應該reset role
在返回連接到池時。詳情在這裡這不是真正的數據庫身份驗證。它是代理身份驗證(又名模擬)。
您還可以考慮為每個公司或每個角色設置單獨的池。
為了使管理更容易,您可以將使用者放入組並通過組設置權限。這稱為 RBAC。
更新:我能夠在 2.4 秒內創建 50,000 個使用者。由於使用者數量的原因,PGAdmin III 的速度明顯較慢。然而,通過 JDBC 連接的速度和以前一樣快。我無法一次刪除 50,000 個使用者,但一次可以刪除大約 10,000 個使用者。