ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

バッチの設計について

こんな要件があります。

  • テーブルのデータをファイルで取り出したい
  • 対象テーブルは400くらいある(多すぎっていうのは置いといて)

この状況で、

  • 1テーブルに1本ずつのプログラムを自動生成するプログラムを作る
  • テーブル名を受け取ってどんなテーブルでも処理できる1本のプログラムを作る

のどちらを選択するかということです。
結局後者にしたのですが、現場にいる間は前者の方が良いではないかと思ってました。が、こう冷静に書いてみると、今回のケースは、やっぱり後者の方が良いような気がします。
ただ後者を選択した場合、中間ファイルを別々にするとか(テーブル名をつければいいのか。。)、ちゃんと気を使わないと並行稼動できないですね。ああ、これも冷静に考えたらそうだなぁ。スレッドセーフの考え方がこんなところにも応用できるとは考えもつかなかった。。(多分、順序としては逆でしょうが。)
もちろん、あらゆるテーブルを扱うために、負荷のかかる処理を別途入れなければいけないなどの制約が出てきた場合は、当然前者の方が良いってことになりますね。まあ、結局はケースバイケースなのでしょうけど、こういうところを間違うと後々後悔することも多いんですよね。