我正在開發基於spring框架的java應用程序。由於內存處理導致數據污染的風險 - JAVA
它
- 連接到MySQL數據庫
- 從MySQLTable1的POJO中實現
- 操縱(更新,刪除)在內存
- 插入到Netezza的數據庫表
上述4個過程是每個客戶端(A,B,C)每小時完成的。
我使用的是春天JDBC模板,得到這樣的數據:
SELECT COL1,COL2,COL3 FROM MySQLTable1 WHERE CLIENTID='A' AND COL4='CONDITION'
和讀取每個記錄到一個POJO之前,我把它寫入Netezza公司表。
這個應用程序將有多個實例通過調度器每小時運行一次。 所以客戶A和客戶B可同時運行,但選擇將是獨一無二的, 我的意思是數據:
SELECT COL1,COL2,COL3 FROM MySQLTable1 WHERE CLIENTID='A' AND COL4='CONDITION'
將不同於
SELECT COL1,COL2,COL3 FROM MySQLTable1 WHERE CLIENTID='B' AND COL4='CONDITION'
但要記住所有這些都存儲在記憶爲POJO。
我的問題是:
- 有數據污染的風險?
- 是否需要使用spring數據事務管理器來實現數據庫事務?
- 我的應用程序是否真的需要使用類似Spring Batch來處理這個問題?
我很感激您的想法和反饋。
我知道這是使用ETL工具的完美場景,但這超出了範圍。
如果您擔心數據污染,則需要爲每個客戶端運行單獨的JVM。對於Java對象來說,「污染」彼此是沒有辦法的,因爲你自己的編碼缺陷。但是,您確實需要警惕數據庫,但我對Spring並不熟悉,但同時針對單個數據庫的多個線程會產生干擾的重大機會。 –
順便說一句:要非常小心「單身」和靜態數據。 –