Postgresql服务器和客户端离线模式

Postgresql server and client offline mode

本文关键字:离线 模式 客户端 服务器 Postgresql      更新时间:2023-10-16

我想在Qt中创建两个程序,一个服务器和另一个客户端,我的服务器程序插入用户和客户信息,如指纹和另一个重要数据,在客户端用户和客户使用他们的信息来处理一些隐私的东西,这些程序必须在网络上发送信息。

所以我认为使用Postgresql数据库的服务器和客户端只是连接到数据库,并获得所需的信息登录等
现在这是我的问题

  1. 我的网络连接必须是安全的,没有人可以提取数据发送到客户端吗?(所以我认为postgres处理这个为我,我是对的吗?)
  2. 我想客户端有离线模式,所以我不介意如果我必须设置另一个Postgresql数据库在客户端PC上,然后我怎么知道Postgres从服务器更新自己,反之亦然?
  3. 你认为最好的解决方案是什么?

thanks a lot

哇,这有点开放式。参见https://stackoverflow.com/faq#dontask。保持你的问题具体集中。我可以写一本书的开放式问题将被关闭。

快速版本:

我的网络连接必须是安全的,没有人可以提取数据发送到客户端?(所以我认为postgres处理这个为我,我是对的吗?)

正确使用SSL将为您提供单向信任,客户端可以验证服务器的身份。服务器仍然必须依赖密码来识别客户端,但它可以通过SSL来实现。

您可以使用客户端证书进行真正的双向验证。

如果您正在做任何隐私敏感的事情,请考虑使用您自己的自签名CA并通过已知的安全方式分发CA证书。有太多被贿赂的子ca签署通配符证书,供各国用于透明的SSL解密,我无法信任SSL ca来保护持不同政见者和人权工作者,当他们使用由对他们怀有敌意的人提供或控制的互联网连接时。

不要相信我的话;仔细阅读。

我想客户端有离线模式,所以我不介意如果我必须在客户端PC上设置另一个Postgresql数据库,然后我怎么能告诉Postgresql从服务器更新自己,反之亦然?

听起来你想要间歇连接的异步复制。

这很难。我建议在应用程序级别这样做,您可以实现特定于应用程序的同步调度和冲突解决逻辑。您可以使用触发器维护的变更列表表来保存自db最后一次见面以来所更改的内容的记录。不要使用时间戳来保持同步,因为它们在服务器和客户机之间的时钟漂移会导致您错过更改。您可能希望在主数据库上使用pgq计时器之类的东西。

最后,你认为最好的解决方案是什么?

结尾太开放,没有提供足够的信息甚至开始回答。