0

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

4

1 回答 1

1

这完全取决于客户。我所知道的 PostgreSQL 客户端库都没有做任何查询结果缓存——当然不是libpq, psqlODBC, pgJDBC, Ruby Pggem, Perl'sDBD::Pg或 Python's psycopg2.

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

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

有很多关于这个主题的文献,并且已经写了很多文章。不要重新发明轮子,开始阅读那里的内容。例如,您会发现很多关于在移动应用程序中使用同步到本地 SQLite 数据库和从本地 SQLite 数据库同步的信息。

于 2013-04-01T07:00:10.467 回答