Mysql 基于变更的数据库同步策略

Mysql 基于变更的数据库同步策略,mysql,database,hibernate,synchronization,Mysql,Database,Hibernate,Synchronization,我有一个Spring+Hibernate+MySQL后端,它将我的模型(8个不同的实体)公开给一个桌面客户端。为了保持同步,我希望客户端定期向服务器请求最近的更改。该过程可能如下所示: 点A:客户端连接到 第一次,并检索所有 来自服务器的模型 B点:客户机询问服务器 对于自A点以来的所有更改 C点:客户机询问服务器 对于B点之后的所有更改 要检索更改(B&C点),我可以创建一个HQL查询,返回自上次检索以来所有表中上次修改的所有行。然而,我担心这可能是一个繁重的查询,如果执行频繁,会降低我的

我有一个Spring+Hibernate+MySQL后端,它将我的模型(8个不同的实体)公开给一个桌面客户端。为了保持同步,我希望客户端定期向服务器请求最近的更改。该过程可能如下所示:

  • 点A:客户端连接到 第一次,并检索所有 来自服务器的模型
  • B点:客户机询问服务器 对于自A点以来的所有更改
  • C点:客户机询问服务器 对于B点之后的所有更改
要检索更改(B&C点),我可以创建一个HQL查询,返回自上次检索以来所有表中上次修改的所有行。然而,我担心这可能是一个繁重的查询,如果执行频繁,会降低我的性能

出于这个原因,我正在考虑其他替代方案,如保留一个包含最近更新的单独表,以便快速访问。我曾试图使用二级查询缓存,但它似乎不符合我的目的

有人知道适合我的策略吗?我最初的想法是保持对同步的控制,避免使用“自动”同步工具


非常感谢

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

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

有几种设计你可以选择,都有折衷。我以前使用过队列设计,但它只是将数据复制到一个目的地,而不是多个目的地