我有一个用例,其中我的数据存在于 Mysql 中。
对于 Mysql 中的每个新行插入,我必须对新数据执行分析。
我目前解决这个问题的方法是:
我的应用程序是一个Spring-boot应用程序,其中我使用了调度程序,它每2秒检查数据库中输入的新行强>.
当前方法的问题是:
即使 Mysql 表中没有新数据可用,调度程序也会触发 MySQL 查询来检查新数据是否可用。
在触发器中解决任何 SQL 数据库中此类问题的一种方法。
但是到目前为止,我还没有成功创建Mysql触发器,它可以调用Java基于Spring应用程序或简单的java应用程序。
我的问题是:
他们有更好的方法来解决我的上述用例吗?即使我愿意更改为另一个存储(数据库)系统,如果它们是针对此类用例构建的。
最佳答案
这从根本上听起来像是一个架构问题。您本质上是使用数据库作为 API,正如您所看到的,这会导致各种问题。理想情况下,该数据库将包装在一个可以管理需要通知的系统的通知的服务中。让我们看看 future 的一些不同选择。
继续投票
您没有概述当前投票方法的实际问题是什么。在不需要时运行作业是否会导致某种问题?我支持放弃它,除非你有兴趣做出更大的改变。
数据库触发器
虽然我不知道通过数据库触发器启动 java 进程的方法,但您可以从其中执行 HTTP POST。考虑到这一点,您可以将批处理作业暂存在 Web 应用程序中,该应用程序使用 POST 在触发器触发时启 Action 业。
将现有数据存储区包装在服务中
恕我直言,这是最好的选择。这允许存在一个记录系统,该系统提供可以进行版本控制的 API 等。这将允许围绕通知谁的任何逻辑也可以封装到此服务中。
将数据存储替换为可提供更好通知的内容
如果没有任何关于所存储的数据是什么的真实信息,很难说这有多实用。但是使用 Apache Kafka 或 Apache Geode 都可以在新数据持久化时提供通知能力(Kafka 通过监听主题,Geode 通过连续查询)。
郑重声明,我主张将现有数据库包装在服务中。该服务将是进入数据库的唯一途径,并负责任何所需的通知。
关于java - mysql实时数据消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46588596/