我正在嘗試使用Spring批處理框架編寫作業。作業需要從集羣化的db2數據庫獲取數據,在每個獲取的記錄上調用一些邏輯,然後將轉換後的數據存儲在相同的數據庫中(與讀取數據的位置不同)。我想寫step1
如下,用於分佈式DB2數據庫的Spring批處理讀取器
@Bean
public Step step1(StepBuilderFactory stepBuilderFactory,
ItemReader<RemittanceVO> reader, ItemWriter<RemittanceClaimVO> writer,
ItemProcessor<RemittanceVO, RemittanceClaimVO> processor) {
return stepBuilderFactory.get("step1")
.<RemittanceVO, RemittanceClaimVO> chunk(100).reader(reader)
.processor(processor).writer(writer).build();
}
目前,我面臨兩個挑戰,因爲數據庫是DB2和正在聚集,
SQLS在提供元數據 - /org/springframework/batch/core/schema-db2.sql
不適用於分佈式DB2的 。它在命令上失敗,constraint JOB_INST_UN unique (JOB_NAME, JOB_KEY)
。
在這個文件中寫入的查詢可能是 調整爲分佈式db2或我也可以手動創建表,但我是 不確定是否應手動創建表?如果這會有一些進一步的併發症?
我需要所有這些表,因爲我想使用Spring批處理,因爲它的PAUSE
,RESTART
功能。
2.
我們需要解僱所有SELECT查詢DB2上與 READ ONLY WITH UR
SO question。 如果我們不用這個關鍵字運行查詢,db可以被鎖定。
問題點#2是我不能在Spring Batch的構建閱讀器類(JdbcPagingItemReader
等)中使用,因爲那些不支持此db2特定關鍵字。
通過閱讀互聯網上無用的簡單例子,解釋了這個框架的優點,我認爲我會在很短的時間內啓動並運行,但它看起來我必須編寫自己的查詢提供程序類,研究元數據sqls和什麼如果db恰好是DB2並且是分佈式的,那麼不是。
有沒有人實現了分佈式Db2數據庫的類似工作,並指導我以上幾點?
您的點#2的解決方案是不好的,因爲你會得到不一致數據如果發生回滾。因此,您應該使用org.springframework.batch.item.database.support.Db2PagingQueryProvider作爲起點並根據您的要求對其進行修改。 – Dmitry