はじめに
メインフレームのオープン化案件では、現新比較やデータ変換作業が中心となることが多いです。
私自身、普段はデータ変換や比較作業を担当していますが、ある日、手順書の中に見慣れないコマンドを見つけました。
pddbls -r ALL -b
「これは何のコマンドだろう?」
そこから調査を始めた結果、HiRDBのコマンドやデータディクショナリに触れる機会がありました。
今回は、その時の学びをまとめます。
※HiRDBは日立製作所が提供するリレーショナルデータベース管理システムです。
メインフレームやオープン系システムの現場で利用されることがあり、今回の案件でもデータ管理に使われていました。
見慣れないコマンドとの出会い
まず実施したのは、コマンドの正体を調べることでした。
DBサーバーへログインし、Linuxの type コマンドを実行します。
type pddbls
結果は次の通りでした。
pddbls is /xxx/HiRDB_xxx/bin/pddbls
これにより、
・Linux標準コマンドではない
・HiRDBのコマンドである
ことが分かりました。
知らないコマンドを見つけたら、「まず正体を調べる」という基本的なアプローチが重要だと改めて感じました。
pdsqlでデータベースを参照してみる
続いて、HiRDBのSQL実行環境である pdsql を起動してみました。
pdsql
起動後に、テーブル一覧を参照するSQLを実行しました。
SELECT * FROM MASTER.SQL_TABLES;
結果は、
KFPX27010-I 640 rows selected.
でした。
最初はメッセージ番号の意味が分かりませんでしたが、640件のデータを取得という情報メッセージでした。エラーではなく正常終了です。
データディクショナリとは?
今回初めて知ったのが「データディクショナリ」という存在です。
簡単に言うと、データベース自身が持つ設計書のようなものです。
例えば、
・テーブル名
・カラム名
・データ型
・インデックス情報
などの定義情報が格納されています。
実データではなく、「データを説明するためのデータ」が保存されています。
テーブルの列定義を確認する
次にカラム情報を参照してみました。
SELECT COLUMN_NAME, DATA_TYPE
FROM MASTER.SQL_COLUMNS
WHERE TABLE_NAME = '対象テーブル名';
結果は次のような内容でした。
COLUMN_NAME DATA_TYPE
----------- ---------
DATA CHAR
KEY DECIMAL
さらに、2 rows selected. と表示されました。
このテーブルには、DATA(文字型)と KEY(数値型)の2項目が定義されていることが分かります。
実際に定義情報を参照することで、現新比較だけでは見えないデータベースの内部構造を少し理解できた気がします。
実データも確認してみる
定義が分かったので、実データも参照してみました。
SELECT * FROM 対象テーブル名;
ここで初めて、
・テーブル定義
・実際のデータ
を結び付けて確認できました。
これは組込み開発で例えるなら、「回路図を見る」と「実際の波形を見る」の関係に近いかもしれません。
まとめ
今回は現場で見かけたHiRDBコマンドをきっかけに、
・HiRDBコマンドの調査
・pdsql の起動
・データディクショナリの参照
・テーブル定義の確認
・実データの確認
を体験しました。
現新比較は地道な作業が多いですが、「なぜそうなっているのか」を調べ始めると意外と面白いものです。
これからも、現場で見かけた知らないコマンドや技術要素を一つずつ調べながら、知識を増やしていきたいと思います。