基于更改的同步数据库策略

时间:2010-12-08 18:00:02

标签: mysql database hibernate synchronization

我有一个Spring + Hibernate + MySQL后端,它将我的模型(8个不同的实体)暴露给桌面客户端。为了保持同步,我希望客户端正式向服务器询问最近的更改。该过程可能如下:

  • A点:客户端连接到 第一次并检索所有 来自服务器的模型。
  • B点:客户端询问服务器 自A点以来的所有变更。
  • C点:客户端询问服务器 对于自B点以来的所有变更。

要检索更改(B& C点),我可以创建一个HQL查询,返回自上次检索以来上次修改过的所有表中的所有行。但是,我担心这可能是一个沉重的查询,如果经常执行,会降低我的性能。

出于这个原因,我正在考虑其他替代方案,以便为快速访问保留一个单独的表,其中包含最新更新。我已经看过使用L2查询缓存但它似乎不适合我的目的。

有人为我的目的知道一个好的策略吗?我最初的想法是保持同步控制并避免使用“自动”同步工具。

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以将更改存储在队列表中。触发器可以在插入,更新,删除时填充队列。这样可以保留插入,更新,更新,删除等更改的顺序。下载后清空队列。

如果您有多个客户端,清空队列会导致问题....可能需要考虑设计来处理这种情况。

您可以使用多种设计,所有设计都需要权衡。我之前使用过队列设计,但它只是将数据复制到一个目的地,而不是多个。