Postgresql服务器和客户端脱机模式

时间:2013-05-28 15:30:46

标签: c++ qt postgresql network-programming

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

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

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

1 个答案:

答案 0 :(得分:1)

哇,这有点开放。见https://stackoverflow.com/faq#dontask。保持您的问题特定专注。开放式I-can-write-a-book-on-这个问题将被关闭。

快速版:

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

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

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

如果您正在执行任何隐私敏感操作,请考虑使用您自己的自签名CA并通过已知安全方式分发CA证书。有太多的suborned sub-CA签署通配符证书,供各国用于透明SSL解密,让我信任SSL CA,以保护持不同政见者和人权工作者,因为他们正在使用由敌对他们的人提供或控制的互联网连接

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

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

听起来您希望使用间歇性连接进行异步复制。

这很难。我建议在应用程序级别执行此操作,您可以在其中实现特定于应用程序的同步计划和冲突解决逻辑。您可以使用触发器维护的更改列表表来记录自DB上次查看以来发生的更改。不要使用时间戳保持同步,因为服务器和客户端之间的时钟漂移会导致您错过更改。您可能希望在主数据库上使用类似pgq自动收报机的内容。

最后你会想到最好的解决方案吗?

太开放,提供的信息不足以开始回答。