我有一个非常小的程序,将由两台或多台计算机同时使用。这是一个小程序,可以将字符串添加到列表中并将其从列表中删除。我将所有这些字符串保存在远程postgres数据库中。当我从列表中删除字符串时,它会从数据库中删除,但如果程序在其他计算机上运行,您仍然可以看到此字符串。目前我只有一个选项,每隔x次刷新一次程序中的数据?有更好的选择吗?数据库非常小,只有一列,不应超过100行。
答案 0 :(得分:1)
绝不允许客户端程序直接与远程数据库交互。将数据库暴露给客户端是一个巨大的安全问题。你应该总是在服务器程序之间与客户端通信,验证他们的输入,与数据库通信,然后告诉客户他们想知道什么。
这也使您能够向网络协议添加推送更新(当一个客户端进行更改,更新数据库并通知其他客户端有关更改时)。
但是当你真的想承担风险并且你认为服务器程序太复杂时,你可以在每一行更改时为每一行添加一个时间戳。这样,您可以定期刷新客户端,只查询自上次刷新后更改的行。
另一种选择是允许客户端以对等方式相互通信。当客户端进行更改时,它不仅会通知数据库,还会通过单独的网络连接通知其他客户端。为此,客户端需要知道彼此的IP地址或至少每个其他主机名。如果不知道这些,您可以让客户端在连接时将其IP写入数据库的另一个表,以便其他客户端可以查询它。只需确保删除条目,这样就不会惹恼某个客户端的每个IP地址。