【问题标题】:Database strategy for synchronization based on changes基于变化同步的数据库策略
【发布时间】:2011-05-22 09:36:38
【问题描述】:

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

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

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

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

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

非常感谢

【问题讨论】:

    标签: mysql database hibernate synchronization


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多