社内SEの徒然なる日記

NetCOBOLで複数のDBに接続したい! No1 始めに

■ 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 --- スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する