Postgresql

數據庫伺服器應該在哪裡,它的更新腳本應該從哪裡執行?

  • January 28, 2015

我目前在同一台伺服器上有一個 Web 應用程序和數據庫。我正在將數據庫移動到指定為數據庫的新伺服器。現在我有在 Web 應用程序上執行的每晚腳本,這些腳本從我們的 ERP 系統插入和更新應用程序的數據。執行此導入的腳本應該從數據庫伺服器還是從應用程序伺服器執行?將所有應用程序邏輯放在一起對我來說很有意義,但從性能的角度來看,讓每晚更新數據庫的腳本從實際的數據庫伺服器執行更有意義(我認為)。

可能需要也可能不需要問題,但我有一個網站和 3 個 Web 應用程序,它們都從本地數據庫安裝轉換為新的中央數據庫。

最後一個問題是數據庫伺服器應該在 DMZ 中,但被鎖定為只接受應用程序服務 IP 的連接,還是應該在防火牆後面?

其他資訊(如果有幫助):Python 應用程序(TG 和 Flask)全部執行 postgresql 9

編輯:如果這是錯誤的地方,請告訴我應該張貼在哪裡。我最初在程序員那裡有它,但沒有得到任何回應,在重新閱讀我的問題後,這個網站感覺“更好”。

假設應用程序伺服器和數據庫伺服器之間的延遲較低,那麼無論您在哪一側執行腳本,性能都將基本相同。

我投票贊成最容易維護的東西。將腳本保留在應用程序伺服器上的兩個原因:

  1. 減少對現有做事方式的改變

2)您的所有程式碼(包括這些腳本)都在一個地方。這可能在版本控制/部署方面具有優勢。

對於防火牆/DMZ:數據庫和應用程序之間的信任量越少越好。如果您可以將數據庫伺服器置於防火牆後面,並且只允許來自 DMZ 中的應用伺服器的 PostgreSQL 埠(預設為 5432/tcp),那麼受感染的應用程序帳戶將不得不通過 PostgreSQL 埠進一步滲透或垃圾你的數據。

然後,您可以通過以下方式進一步限制數據庫級別的應用程序:

  1. 最小的應用程序數據庫權限(僅在適當的情況下選擇,…)

2)可更新視圖(一種可以提供更有限數據更新的技術)

3)更新觸發器(另一種可以限制更新的技術)

分層安全:)

引用自:https://serverfault.com/questions/663170