
■ DWH
基幹システムのデータをDWHとして蓄積しています。そして、基幹システムとDWHのデータベースは両方ともOracleで、基幹システムのOSはUNIX、DWHはWindowsになっています。
DWHの更新は、基幹システムから必要なデータを抽出してテキストデータ(CSVファイル)に出力し、それをFTPでDWHサーバに転送。そのテキストデータを読み込んでDWH側のデータベースを更新するという方法を取っています。
■ 問題
この方法は考え方が簡単で、作りやすくはあるのですが問題があります。
抽出した項目内にカンマが含まれていた時にCSVファイルのレイアウトが崩れるというのが良くあることですし、ちょっと複雑な更新処理を実行させようとした時に、テキストデータのやり取りだけでは限界があったりします。
他にも、テキストデータの作成、転送、読込による時間的なロスも無視できないし、ディスク容量も確保しないといけない、転送処理の正常終了チェックとかも必要だし・・・
って感じで、実際には作りが複雑になるし、色々な制約も発生するので気に入らなかったのです。
■ 対応
DWHの更新処理はNetCOBOLで実行しています。処理の内容は、転送されたテキストデータを読み込んで、DWH(データベース)に追加&更新を実行するだけです。
前々から思っていたのですが、この処理の「テキストデータの読み込み」の部分を、「基幹システムからデータを抽出」に変えられないでしょうか?
1本のプログラムから、複数のデータベースに接続する。これが出来ればテキストデータを介した面倒な処理をしないでも済むかも知れません。
■ 後書き
余談ですが、単純なデータ登録の場合はSQL*Loderで実行しています。この処理でも上述の手順で処理を実行しているのですが、これも無駄ですね。
具体的には「基幹システムでテキストデータを作成」と「DWHサーバにテキストデータを転送する」が無駄です。最初から「DWHで基幹システムからデータを抽出する」とすれば、色々と無駄が省けそうですね。
次回:NetCOBOLで複数のDBに接続したい! No2 接続
投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


