哇,这有点开放。请参阅https://stackoverflow.com/faq#dontask。保持您的问题具体和集中。开放式我可以写一本关于这个问题的书将被关闭。
快速版本:
我的网络连接必须是安全的没有人可以提取数据发送到客户端?(所以我认为 postgres 会为我处理这个问题,对吗?)
正确使用 SSL 将为您提供单向信任,客户端可以在其中验证服务器的身份。服务器仍然必须依靠密码来识别客户端,但它可以通过 SSL 做到这一点。
您可以使用客户端证书进行真正的双向验证。
如果您正在做任何对隐私敏感的事情,请考虑使用您自己的自签名 CA 并通过已知安全的方式分发 CA 证书。有太多受资助的子 CA 签署通配符证书供各国用于透明 SSL 解密,我相信 SSL CA 可以在他们使用由敌对他们的人提供或控制的互联网连接时保护持不同政见者和人权工作者.
不要相信我的话;仔细阅读它。
我希望客户端具有离线模式,所以我不介意我是否必须在客户端 PC 上设置另一个 Postgresql 数据库,然后我如何告诉 postgres 从服务器更新自己,反之亦然?
听起来您想要具有间歇性连接的异步复制。
这很难。我建议在应用程序级别执行此操作,您可以在其中实施特定于应用程序的同步计划和冲突解决逻辑。您可以使用触发器维护的更改列表表来记录自 DB 上次相互看到以来发生的更改。不要使用时间戳来保持同步,因为它们在服务器和客户端之间的时钟漂移会导致您错过更改。您可能想在主数据库上使用类似 pgq 代码的东西。
最后你认为最好的解决方案是什么?
太开放了,没有提供足够的信息来开始回答。