【问题标题】:Is it a good idea to sync a database every half a second?每半秒同步一次数据库是个好主意吗?
【发布时间】:2019-01-05 22:41:04
【问题描述】:

我有一个 Spring Boot 应用程序,它使用 @Scheduled 每 500μs 获取数据库中的数据。我的一个朋友劝阻我说这是一种渎职行为。这是我的示例代码:

   @Scheduled(fixedRate = 500)
    @Override
    public void sync() {
        departments.setAll((Collection<? extends Department>) departmentRepository.findAll());
        sections.setAll((Collection<? extends Section>) sectionRepository.findAll());
        positions.setAll((Collection<? extends Position>) positionRepository.findAll());
    }

我的应用程序运行良好,但我唯一担心的是天气不好,这是一个好习惯吗?有什么好处和坏处?

【问题讨论】:

  • 我没有看到任何优点。只有缺点。你为什么要这样做?
  • 是的,应用程序必须提取更新的部门列表等。只要需要一个。无需后台任务强制每分钟 120 次完全刷新所有列表。
  • 您正在尝试编写基于非推送后端的推送系统。因此,要么 1)解决此限制,要么 2)更改后端。第一个解决方案需要另一个通知通道,例如直写缓存或 Gossip。第二种解决方案需要将数据库更改为支持更改推送通知的数据库。
  • @Glains 这不是卡夫卡问题?持久性是为了什么?我真的希望人们不要再为每一个问题推荐酷新事物。
  • RabbitMQ 可用于发布/订阅模型,其中计算机 B 订阅主题。计算机 A 将在新数据到达时发布 DataUpdatedEvent。可选地,增量可以通过 RabbitMQ 本身传输,因此可能根本不需要同步作业。 rabbitmq.com/getstarted.html 这真的取决于很多因素:变化的频率、变化的数量等。

标签: java mysql spring-boot jdbc


【解决方案1】:

非常糟糕的做法,

您需要为您的用户找到另一种方式来查看更新,而不是这样做,如果 30 分钟内没有更新,您的数据库将保持同步,如果您尝试使用触发器之类的东西会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2021-01-22
    • 2012-12-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多