我的数据库应该放在哪里?

4
目前,我正在忙于实现一个网站、数据库和软件,这些内容将填充此数据库。网站位于外部托管公司,软件运行在我们的本地网络上。网站需要读取数据库中的信息,本地软件将把它的结果(这些数据)放入数据库中。
问题:我应该把数据库放在哪里?从安全性和性能方面考虑,最好的地方是什么?还有什么可能性:如果我把数据库与我的网站放在Web服务器上,我可以从本地软件访问它以进行上传吗?如果我把数据库放在本地,我可以从我的网站访问它吗?
我是一名程序员,了解编写软件和实现数据库,但对基础设施知之甚少,所以请有经验的人给我一些建议。
提前感谢, Jethro
4个回答

1

这是一个很好的问题。

从性能角度来看,我会优化Web服务器执行的读取操作。相对而言,Web服务器发送的查询将更多,如果数据库速度慢,则页面加载速度也会变慢。

从安全角度考虑,连接到远程数据库可能存在危险。但是,如果您采取适当的预防措施,例如使用SSL密钥对进行身份验证。还要确保数据库上的所有用户帐户只能从受信任的IP地址使用。

数据库放置还有另一种安全预防措施。当您的Web服务器和数据库在同一台机器上时,黑客可以使用许多攻击方式。最好的例子是Hackproofing Mysql中描述的outfile攻击。如果无法将数据库放在自己的机器上,则可以使用chroot或虚拟机。


0

两个地方都需要吗?通过设置单向复制方案,您可以保证始终拥有数据的本地副本,但不会影响远程站点的性能。

复制可以由您的数据库或应用程序管理。


好的,所以将数据库和应用程序本地化,然后将其复制到Web服务器上的第二个(副本)数据库。但是是否可以通过IP连接到Web服务器上的第二个数据库? - Jethro
当然可以,但您需要与托管公司确认MySQL服务器可以从外部访问。有些公司会通过防火墙进行阻止,但也有绕过的选项。 - spatel

0
为了稳定性和性能,您应该部署最接近生产系统的数据库,这种情况下是您的网站。后端软件应该能够通过TCP连接到托管服务器,假设您之间有良好的安全性和带宽。这意味着最好使用所谓的点对点连接。另一种选择是在互联网上设置VPN,这可能会很慢且不可靠。 编辑:通过“生产”,我指的是面向客户和关键任务,这可能不适用于您的情况。两个系统的受众是谁?哪一个更重要稳定?
通过使用点对点或VPN,您可以假装自己正在访问局域网上的计算机。然而,速度取决于您每月花费多少钱。

我认为生产系统是填充数据库的本地软件,网站只会读取数据。但我是否能够从网站连接到本地数据库?由于局域网的安全性,例如DMZ等等? - Jethro

0

您关心的是稳定性和性能,但这通常是一个权衡问题,因此您必须决定在这些方面哪个更重要 - 网站还是软件。

我假设网站是(考虑到您上传信息到数据库的原因),从这个角度来看,将数据库放在您的网站旁边(由托管公司提供此服务)。

这将使您的网站更快地访问数据,从而增加系统的稳定性(减少超时的可能性)。

当然,您将支付的代价是软件,现在必须远程连接到数据库。

另一个考虑因素是数据量-例如,如果您希望软件大量使用数据库,而网站只是偶尔使用,则可以考虑改变方法。

最后-关于远程访问数据库-您当然可以考虑简单地连接到数据库,但如果可能的话,我可能会考虑将其包装在Web服务中,这将允许您

  1. 具有更多关于数据库位置和实现的灵活性
  2. 使用广泛传播的协议,如WS- *,您可以在不需要VPN等基础设施的情况下实现更高的安全性

再次强调 - 根据哪一部分远程访问数据库,您可以选择哪一侧作为服务的公开接口。当然,这对于大量数据上传可能不太适用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接