メルマガ
会員
募集中

ホストDB(ADABSなど)からのRDB化課題

2022.1.12(更新日:2022.5.27)

メインフレームのデータベース移行について

現在、使用されているデータベースは、ほぼ、リレーションナルデータベース(RDB)となっておりSQLでデータベースを操作します。メインフレーム(ホストコンピュータ)では、リレーショナルデータベース(RDB)もありますが、階層型データベースやネットワークデータなど多様なデータベース製品があり、いざオープン化しようとすると単純にリレーションナルデータベース(RDB)にする訳にはいきません。そこで、今回は構造型データベースである階層型、ネットワーク型のデータベースに関する移行について取り上げてみました。

構造型データベース

メインフレーム(ホストコンピュータ)の大規模なシステムでは、歴史的に古くから存在する構造型DBが現在も使われています。構造型のDBには、階層型(木構造型)データベースネットワーク型データベースが存在します。データベース言語はメーカー独自仕様となっています。

階層型データベースからの移行

■階層型データベース

階層型データベースのデータは、レコードまたはセグメントと呼ばれ、親子関係で構成されています。上位階層に属する親は複数の子を持つことができますが、下位階層に属する子は1つの親しか持つことができません。データは、DML(データ操作言語)でデータを取得します。通常は3~4層程ほどの親子階層から成りますが、もっと深い階層が存在する場合があります。上位階層から下位階層のデータは読み込み可能ですが、下位階層から上位階層へは不可となります。

■階層型データベースからRDB(リレーションナルデータベース)への移行

移行する単位は、キー単位で移行します。まずRootセグメントを単純移行します。次にRoot以外のセグメントを移行する場合は、移行対象セグメントの先頭にRootキーを付与し、続いて自身のセグメントに対する親キーを全て付与します。イメージは以下の通りです。

ネットワーク型データベースからの移行

■ネットワーク型データベース

階層型データベースの発展形で、子セグメントも複数の親セグメントを持つことができます。親セグメント内に最初の子セグメントへのセットアドレスを持ち、子セグメント内には、更に次の子セグメントのセットアドレスを持ち、最後の子セグメントには親セグメントへのセットアドレスを持ち、常にチェーンしている状態です。また、子セグメントから見ると親セグメントは複数存在することが可能です。チェーンを使用し順方向アクセスも逆順方向のアクセスも可能です。

■ネットワーク型データベースからRDB(リレーションナルデータベース)への移行

基本的には、階層型データベースからの移行方法と同じとなります。しかし順序性を保つため、子セグメントには、ユニークなキーを付加しておきます。

その他データベースからの移行

上記以外にもメインフレーム(ホストコンピュータ)には、変わった型のデータベースが存在します。例えば、ADABAS (アダバス)などです。(ドイツのソフトウェアAG が開発した関係型データベース管理システム)ADABASでは、繰返し項目の設定が可能であったり、プログラムで使用する為のショートネームの設定が出来ます。また、コマンドオプションによりさまざまなアクセスを可能にします。これらをそのままリレーショナルデータベース(RDB)化すると、性能低下などの問題を招きますので、注意が必要です。使用オプションを分析し、必要な機能のみを移行するといった工夫が必要となります。

データベースを移行するにあたり

これまでにあげた問題は、データベースの構造によるものですが、その他にも注意する点はあります。例えば、メインフレーム(ホストコンピュータ)上では、エリアだけを定義して、内容は、COBOLなどのCOPY句で定義し使用している場合や、長年使用している関係で、レイアウトが途中から変更されて数字項目が追加させた場合などした場合、追加前のレコードの項目には空白が入っていたりします。データのコード変換をする際には注意が必要となります。そのため事前に充分な分析や検討を行ってから実施することをお勧めします。