Java 每半秒钟同步一个数据库是个好主意吗?

Java 每半秒钟同步一个数据库是个好主意吗?,java,mysql,spring-boot,jdbc,Java,Mysql,Spring Boot,Jdbc,我有一个spring引导应用程序,它使用@Scheduled每隔500μs获取数据库中的数据。我的一个朋友劝阻我说这是一种渎职行为。以下是我的示例代码: @Scheduled(fixedRate = 500) @Override public void sync() { departments.setAll((Collection<? extends Department>) departmentRepository.findAll());

我有一个spring引导应用程序,它使用@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());
    }
@Scheduled(fixedRate=500)
@凌驾
公共void sync(){
部门设置所有((收集非常糟糕的做法


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

我看不到任何优点。只有缺点。您为什么要这样做?是的,应用程序必须在任何时候提取部门等的更新列表eeds 1。无需后台任务强制每分钟对所有列表进行120次完全刷新。您正在尝试基于非推送后端编写一个基于推送的系统。因此,1)解决此限制,或2)更改后端。第一个解决方案需要另一个通知通道,例如直写缓存或八卦。第二个解决方案需要将数据库更改为支持更改时推送通知的数据库。@Glains这不是Kafka问题?持久性有什么用?我真的希望人们停止sug为每一个问题做一个很酷的新动作。RabbitMQ可以用于发布/订阅模式,其中计算机B订阅一个主题。当新数据到达时,计算机a将发布一个DataUpdateEvent。可选地,增量可以通过RabbitMQ本身传输,因此可能根本不需要同步作业。这实际上取决于很多因素:频率变化的幅度、变化量等。