TimerTrigger/SpringBatch

Spring BatchのChunkモデルを利用したバッチで30万件のDBデータをCSVに出力してみた

Spring Batchには、ChunkモデルとTaskletモデルがあり、以下のサイトに記載の通り、大量のデータを処理するにはChunkモデルを利用するとよい。
https://terasoluna-batch.github.io/guideline/5.0.0.RELEASE/ja/Ch03_ChunkOrTasklet.html

今回は、DBの(カラム数を7個持つ)テーブルデータ30万件を、Blob上のCSVファイルに出力してみたので、その結果を共有する。

前提条件

下記記事のサンプルプログラムを作成済であること。

Azure Function上でSpring BatchのChunkモデルを利用してDBデータをCSVに出力してみたこれまでこのブログでは、Blob上のCSVファイルをDBのテーブルに書き込む処理を作成していたが、逆に、DBのテーブルデータをBlob上...

また、「DemoChunkConfig.java」のチャンクサイズを、以下のように1万に設定していること。
前提条件



Code VillageはJavaScriptを中心としたサポート体制が充実したプログラミングスクールだったJavaScriptや、JavaScriptのフレームワーク「React」「Vue」を中心にオンラインで学習できるプログラミングスクール...

テストデータ作成

取得元のDB(Azure SQL Database上のUSER_DATAテーブル)に、30万件のデータを追加する。その手順は、以下の通り。

1) 指定した件数のテストデータを作成する、ストアドプロシージャ(LOAD_USER_DATA )を作成する。そのソースコードは、以下の通り。

2) A5M2で、「プロシージャモード」によって、1)のソースコードを実行する。
テストデータ作成_2

3) 2)の実行を行うと、以下のように、ストアドプロシージャ(LOAD_USER_DATA)が作成されていることが確認できる。
テストデータ作成_3

4) 30万件のデータを追加する設定で、ストアドプロシージャ(LOAD_USER_DATA)を実行する。
テストデータ作成_4

5) 4)の実行が完了すると、以下のように、30万件のデータが追加されていることが確認できる。
テストデータ作成_5_1

テストデータ作成_5_2



削除または保存していないWordドキュメントの復元方法【4DDiG Windowsデータ復元】ワード(Word)データ等のファイルを誤って削除してしまった場合は、通常はデータの復元ができませんが、4DDiGというソフトウェアを利用...

サンプルプログラムの実行結果

サンプルプログラム(前提条件に記載)の実行結果は、以下の通り。

1) 以下のサイトの「サンプルプログラムの実行結果(ローカル)」「サンプルプログラムの実行結果(Azure上)」に記載の手順で、サンプルプログラムをAzure Functionsにデプロイする。

Azure Functions上でTimerTriggerによって動作するJavaアプリケーション(Spring Boot上)を作成してみたこれまでは、HTTPリクエストによりAzure Functionsが動作するアプリケーションのみ作成してきたが、Timer Trigge...

2) バッチ実行後に、Blob Storageに、以下のCSVファイルが出力されていることが確認できる。
サンプルプログラムの実行結果_2

3) 2)で出力されたファイルの内容は以下の通りで、30万件のデータが全て出力されていることが確認できる。
サンプルプログラムの実行結果_3_1

サンプルプログラムの実行結果_3_2

4) バッチ実行時のログ出力内容は以下の通りで、59769ms(約1分)で処理が完了していることが確認できる。
サンプルプログラムの実行結果_4

なお、上記ログの確認手順は、以下のサイトを参照のこと。

Azure FunctionsでJavaアプリケーション(Spring Boot上)のLogbackでのログを確認してみたこれまで、Azure Functionsの関数の「モニター」で何度かログを確認したことがあったが、この方法だと、Spring Bootプ...

要点まとめ

  • Spring Batchには、ChunkモデルとTaskletモデルがあるが、大量のデータを処理するには、Chunkモデルを利用するとよい。
  • Spring BatchのChunkモデルを利用したバッチで、DBの(カラム数を7個持つ)テーブルデータ30万件を、Blob上のCSVファイルに出力する際の処理時間は1分程度となる。