2017-10-05 114 views
0

我有一个用例,其中我的数据存在于Mysql中。来自mysql的实时数据消耗

对于Mysql中的每个新行插入,我必须对新数据执行分析。

如何我目前解决这个问题是

我的应用程序是一个春季启动应用,我都用调度其检查后每个数据库进入新行2秒

问题与当前的做法是

即使有在MySQL表没有新的数据,调度火灾MySQL查询,以检查是否新的数据可用。

触发器的任何SQL数据库中解决此类问题的一种方法。

但到现在为止,我没有成功地创建mysql的触发它可以调用Java的基于应用或一个简单的Java应用程序。

我的问题是:

是他们没有更好的解决我上面的用例方法是什么?即使我打算转换到另一个存储(数据库)系统,如果它们是为这种类型的用例而构建的。

+0

你是否在从插入数据的应用程序的控制? – Tousif

+0

恕我直言,数据库工作并不是担心x数量的消费者如何使用它的数据。你目前的实现是好的,但如果你正在寻找一个“触发器”,为什么不在你的应用程序中查找它插入新数据的位置?如果你需要一些实时的和响应的,你可以看看消息? – Nope

+0

您的弹簧存储库是数据更改的唯一来源,还是实际上有其他应用程序可能会混淆您的数据? – varren

回答

1

这从根本上听起来像一个架构问题。正如你所看到的,你实际上使用了一个数据库作为一个API,它会导致各种问题。理想情况下,这个数据库将被封装在一个可以管理需要通知的系统通知的服务中。让我们看看今后几种不同的选择。

继续轮询
你没有勾勒出实际的问题是与当前的轮询方法是什么。在不需要的时候运行这个工作会导致某种问题?除非您有兴趣进行更大的改变,否则我会成为支持者。

数据库触发器
虽然我不知道的方式通过一个DB触发启动的Java程序,你可以从一个做一个HTTP POST。考虑到这一点,您可以将您的批处理作业放置在使用POST的Web应用程序中,以便在触发器触发时启动作业。

裹在服务
现有的数据存储这是,恕我直言,是最好的选择。这允许存在提供可以版本化的API的记录系统等。这将允许围绕谁通知的任何逻辑也将被封装到该服务中。

替换数据存储的东西,可以更好地通知
没有任何真正的信息上的数据被储存是什么,很难说有实际的,这是。但是,使用Apache Kafka或Apache Geode这两种方法都可以提供在新数据持续存在时通知能力的选项(Kafka通过听取主题,Geode通过连续查询)。

为了记录,我主张在服务中封装现有的数据库。该服务将是进入数据库的唯一途径,并承担所需通知的责任。