我有一个非常小的程序,将同时由两台或更多台计算机使用。这是一个小程序,可以将字符串添加到列表中并将其从列表中删除。我将所有这些字符串保存在远程postgres数据库中。当我从列表中删除字符串时,它会从数据库中删除,但是如果该程序在其他计算机上运行,您仍然可以看到该字符串。目前,我只有一个选择是每x次刷新程序中的数据?有更好的选择吗?数据库很小,只有一列,不应超过100行。
最佳答案
您绝对不应允许客户端程序直接与远程数据库进行交互。将数据库暴露给客户端是一个巨大的安全问题。您应该始终有一个服务器程序,在该服务器程序之间与客户端通信,验证其输入,与数据库通信,然后告诉客户端他们想知道什么。
这还使您能够将推送更新添加到网络协议(当一个客户端进行更改时,更新数据库并将该更改通知另一客户端)。
但是,当您真的想冒险并且认为服务器程序过于复杂时,可以在更改时为每行添加时间戳。这样,您可以通过仅查询自上次刷新以来已更改的行来定期刷新客户端。
另一种选择是允许客户端以对等方式相互通信。当客户端进行更改时,它不仅会通知数据库,还会通过单独的网络连接通知其他客户端。为了做到这一点,客户端需要彼此知道IP地址或至少彼此知道主机名。当这些未知时,您可以让客户端在连接时将其IP写入数据库的另一个表,以便另一个客户端可以查询它。只需确保条目被删除即可,这样您就不会惹恼某些客户端曾经拥有的每个IP地址。
关于java - 如何使用数据库同步程序中的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20768366/