大規模データをバッチ処理で扱う場合、
1.先にすべて、UNLOADして、テキストファイルで処理
2.すべて、DBで処理
いずれが処理効率がいいのだろうか?
そんな問が会議で出た。
HOST系でじゃかじゃかやってきた身としては、1と思っている。
ただ、オープン系(サーバ系というのがいいのか?)のみを経験している人は2という。
なぜだろうか?
私が考えるに考える上でのバックグラウンドが違うからだろうと思われる。
<ホストの思考からいうと・・・>
・サーバの配置は?
HOSTで考えると、AP、DB、WEBサーバすべて同一筐体で考えている。(HOSTではそういう名前で呼ばないが、オープンに名前を統一している。)そのため、サーバ間のデータのやり取りが思考から外れている。
・データのアクセス
DBによるI/Oに比較し、SAMなどのシーケンスファイルを扱う、IBMのツール類のほうが断然処理速度が速い。DBによるI/Oプラス、プログラム領域へのI/Oを考えると、最初からファイルのほうが効率がいいのだろう。
<オープンの思考から言うと・・・>
・サーバの配置について
バッチと言うよりかオンラントランザクションで考えるケースが多い。そのため、AP、DB、WEBサーバの配置を気にする。サーバ間でのやりとりが極力少なくなるような設計や処理方法を好む傾向あり。(当たり前なんだろうが)
・データのアクセス
ファイルにすることは処理効率を下げるという人が多い。DBでできることはDBでというのが元々の思想。例えば、データを呼んできて、APサーバで処理させるよりは、PLSQLを書いて、DBサーバ内で処理することで、データ感のI/OやAPサーバでのメモリ消費を下げる、ということを考えるみたいです。
どちらの考えも一理あると思うのだが、大容量のデータを扱う場合っってどうなのだろう?私は経験上、テキストのほうが速いと思ってしまう。キーをしっかりした索引で検索するならDBのほうが速いのでは思うが、1件1件処理をしなければならないケースはテキストのほうが速いのでは??と思ってしまう。
私自身、経験と知恵が足りないので、下記のサイトなどでしばらく学習・・・。
http://gihyo.jp/admin/serial/01/rdbms
今の開発で実経験ができるといいかなと。