数据库服务器应该在哪里,它的更新脚本应该从哪里运行?

我目前有一个Web应用程序和数据库在同一台服务器上。 我正在将数据库移动到一个指定为数据库的新服务器上。 现在,我已经在Web应用程序上运行了每晚脚本,这些脚本为我们的ERP系统中的应用程序插入和更新数据。 执行此导入的脚本是否应该从数据库服务器或应用程序服务器运行? 把所有的应用程序逻辑放在一起是合理的,但是从性能的angular度来看,更有意义(我认为)让每晚更新数据库的脚本从实际的数据库服务器运行。

可能或不需要的问题,但我有一个网站,3个Web应用程序,都是从本地数据库安装转换到新的中央数据库。

最后一个问题应该是数据库服务器在DMZ中,但被locking为仅接受应用程序服务IP的连接,还是应该在防火墙之后?

其他信息,如果有帮助的话:Python应用程序(TG和Flask)全部使用postgresql 9运行

编辑:如果这是这个错误的地方,请让我知道它应该发布。 我原本是在程序员那里,但没有得到任何答复,在重新阅读我的问题后,这个网站感觉“更好”。

假设应用程序服务器和数据库服务器之间的延迟较低,无论您在哪个方面运行脚本,性能都大致相同。

我投票支持最容易维护的内容。 在应用程序服务器上保留脚本的两个原因:

1)改变你现有的做事方式

2)你所有的代码(包括这些脚本)都在一个地方。 这在版本控制/部署中可能具有优势。

而对于防火墙/ DMZ:数据库与应用程序之间的最小信任量越多越好。 如果您可以将数据库服务器置于防火墙之后,并且只允许从DMZ中的应用程序服务器允许PostgreSQL端口(默认为5432 / tcp),那么受损的应用程序帐户将不得不通过PostgreSQL端口进一步穿透或垃圾你的数据。

然后,您可以进一步限制数据库级别的应用程序:

1)最小的应用程序数据库权限(只在适当的地方select…)

2)可更新的视图(一种技术,可以提供更有限的数据更新)

3)更新触发器(另一种限制更新的技术)

安全层:)