在postgresql中,当我设置远程连接时,“从属”端是否会缓存信息?

时间:2013-04-01 04:17:50

标签: postgresql synchronization replication

例如,如果计算机A具有原始数据库并且计算机B被定位并设置为接收该数据库,那么B将在本地postgresql服务器上存储数据(缓存)还是它将继续从源中获取数据?这个问题的目的是要知道如果我配置这样的连接,我将失去数据传输速度,并将永久地依赖于互联网连接。建立良好的erp /销售点远程关系框架的任何建议也是非常受欢迎的。提前谢谢。

1 个答案:

答案 0 :(得分:1)

这完全取决于客户。我知道PostgreSQL的客户端库都没有进行任何查询结果缓存 - 当然不是libpqpsqlODBCpgJDBC,Ruby Pg gem,Perl的{{ 1}},或Python的DBD::Pg

一些更高级别的抽象和ORM系统将进行缓存 - Ruby ActiveRecord,Hibernate / EclipseLink和其他JPA实现等。这种缓存很少能够脱机满足查询,通常是为了减少对未更改对象的重新获取确认对象ID在结果集中后的数据

如果您需要离线数据库,您需要的是异步多主复制或应用程序层同步和冲突解决算法。我强烈推荐后者;异步多主复制听起来很棒,但在实践中它绝对是可怕的,尤其是在不可预测的断开连接期间。您的应用需要记录更改并与中央服务器通信以交换更改集。你必须非常仔细地计划处理冲突;我不建议尝试将其用于财务应用程序。

关于这个主题有很多文献,很多文章都写过。不要重新发明轮子,开始阅读那里的东西。例如,您可以找到有关在移动应用程序中与本地SQLite数据库之间使用同步的信息。