2017-10-05 86 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通過連續查詢)。

爲了記錄,我主張在服務中封裝現有的數據庫。該服務將是進入數據庫的唯一途徑,並承擔所需通知的責任。