我有一个Spring + Hibernate + MySQL后端,它将我的模型(8个不同的实体)暴露给桌面客户端。为了保持同步,我希望客户端正式向服务器询问最近的更改。该过程可能如下:
要检索更改(B& C点),我可以创建一个HQL查询,返回自上次检索以来上次修改过的所有表中的所有行。但是,我担心这可能是一个沉重的查询,如果经常执行,会降低我的性能。
出于这个原因,我正在考虑其他替代方案,以便为快速访问保留一个单独的表,其中包含最新更新。我已经看过使用L2查询缓存但它似乎不适合我的目的。
有人为我的目的知道一个好的策略吗?我最初的想法是保持同步控制并避免使用“自动”同步工具。
非常感谢
答案 0 :(得分:1)
您可以将更改存储在队列表中。触发器可以在插入,更新,删除时填充队列。这样可以保留插入,更新,更新,删除等更改的顺序。下载后清空队列。
如果您有多个客户端,清空队列会导致问题....可能需要考虑设计来处理这种情况。
您可以使用多种设计,所有设计都需要权衡。我之前使用过队列设计,但它只是将数据复制到一个目的地,而不是多个。