紹介

本章では、IBMメインフレームのIMSシステムについて簡単に紹介し、OpenFrame HiDB製品のサポート範囲について説明します。

1. IMSシステム

OpenFrame HiDB(以下、HiDB)は、階層型データベース(Hierarchical Database)または高性能データベース(High Performance Database)の略であり、IBMメインフレームのIMS/DBに対応するOpenFrame製品です。IIMSシステムは、1968年に紹介されたIBMメインフレームのソフトウェアであり、大型ビジネス・システムのためのトランザクション管理機能およびデータベース管理機能を提供します。

IMSシステムは、データ通信管理(DC)とデータベース管理(DB)の2つの主要製品で構成されています。

  • IMS/DC製品

    メッセージ・ベースのトランザクション処理システムです。トランザクションとは、特定のアプリケーションの実行に必要な入力データ・パケットです。IMS/DC製品は、ネットワーク・ターミナルからのメッセージや、他のアプリケーションで作成されたトランザクション・メッセージの処理を可能にする基盤サービスを提供します。

  • IMS/DB製品

    階層データベースの管理システムとして、ユーザーのアプリケーション・データを構造的に格納・管理する機能を提供します。同製品は、IMS/DCで実行されるアプリケーションや純粋なバッチ・アプリケーションからデータベースに容易にアクセスできるインターフェースを提供します。

アプリケーションがIMSシステムで管理されるトランザクション・メッセージやデータベースにアクセスするためには、標準IMS関数を呼び出す必要があります。アプリケーションは、各プログラム言語で提供される標準アプリケーション・インターフェースを利用してIMS関数を使用することができます。一般的にこのようなインターフェースをDL/I(Data Language One)と呼びます。

2. データベースの基礎

コンピューター・システムが開発された当初、データは特定のアプリケーションに従属された個別データセットに格納されたり、あるいは個別プログラムの一部として作成されました。そのため、同じ内容のデータが異なるデータセットに重複して格納されることが頻繁に発生しました。たとえば、ユーザーに関する詳細情報は注文プログラムと配送プログラムで同時に使用される必要がありますが、この場合、以下のような問題が発生します。

  • データが各プログラムで独立的に処理されるため、データの整合性が取れないことがあります。たとえば、注文プログラムで使用するデータセットのユーザー・アドレスと配送プログラムで使用するデータセットのユーザー・アドレスが異なる場合があります。

  • 共通的なデータの内容が変更された場合、複数の場所に格納されているデータの内容も変更される必要があるため、変更範囲が広くなり、処理に長時間を要することになります。

  • データを制御する中央集中的な装置がないため、データへの不正なアクセスやデータの流出に対する管理が困難です。

  • 重複データが存在するため、ストレージの容量が無駄になります。

一方、ユーザーのアプリケーション・データを構造的に格納・管理するデータベース管理システムを使用すると、以下のような効果が得られます。

  • データの整合性を保ちつつ、複数のアプリケーションが同時にデータにアクセス、変更できるようにします。

  • アプリケーションの実行に失敗しても、複数のデータベース・レコードにわたって存在しているアプリケーション・データの整合性を保ちます。

  • データのバックアップおよび復旧ユーティリティを提供し、お客様の重要なビジネス・データの消失に備えます。

  • データへのモニタリングおよび性能をチューニングできるユーティリティを提供します。

3. 階層データベース

IBMのIMS/DBはデータを格納する方式として階層モデル(Hierarchical Model)を使用しています。このモデルで個別のデータ項目は階層構造におけるセグメントとして管理されます。

figure 1 1
階層データ構造

階層モデルのデータ構造はセグメント・タイプとセグメント・インスタンスに分けて説明できます。セグメント・タイプはセグメントの種類を意味しており、セグメント・インスタンスは、セグメント・タイプの実際のデータ内容です。

階層データ構造の各セグメントは、親子関係で結ばれています。親セグメント・インスタンスは、0または1つ以上の子セグメント・インスタンスを持つことができます。一方、子セグメントは親セグメント・インスタンスを1つのみ持ちます。同じ親セグメント・インスタンスを持つ、同じセグメント・タイプの子セグメント・インスタンスをツイン・セグメントといいます。ただし、同じ親セグメント・インスタンスを持つ異なるセグメント・タイプの子セグメント・インスタンスは兄弟セグメントと呼びます。

親セグメントは複数の子セグメント・タイプを持つことができます。また、子セグメントは同時に親セグメントになることもできます。つまり、子セグメントも子セグメントを持つことが可能です。親セグメントを持たないセグメントをルート・セグメントと呼びます。ルート・セグメントは最上位に1つだけ存在します。1つのルート・セグメント・インスタンスの下位に存在するすべてのセグメント・インスタンスをDL/Iデータベース・レコードといいます。このような、DL/Iデータベース・レコードをすべて集めたものがDL/Iデータベースです。

DL/Iデータベース内に格納されている特定のセグメントを検索するためにルート・セグメントから先祖セグメントを連続的に並べた順序をセグメントの階層パス(Hierarchical Path)といいます。DL/Iデータベース内に存在する特定のセグメントを他のセグメントと区別し、かつ直接アクセスするために、DL/Iは順次フィールドを使用します。一般的に各セグメントには順次フィールドで表示されているフィールドが1つ含まれています。同じ親インスタンスを持つツイン・セグメント・インスタンスは、一意の値を持つ順次フィールドを有する必要があります。

前述したセグメントの階層パス以外に、IMS/DBでは以下ような2つのデータベース・セグメントのアクセスパスを提供します。この2つの方法は、いずれもアプリケーションが物理データベースにアクセスするアクセス・パスを提供します。これらは、定義済みの基本的なデータベースの階層構造上に追加的に定義されて使用されます。

  • 論理的関係(Logical Relationship)

    1つ以上の物理データベースを論理的に連結して使用できるようにします。アプリケーションは、1つのデータベースを使用しているかのようにアクセスできます。

  • 二次索引(Secondary Indices)

    1つの物理データベースで、ルート・セグメントまたはルート・セグメント以外の別のセグメントを使用してデータベース・レコードにアクセスできるアクセス・パスを提供します。

4. アクセス・メソッド

前述したデータベース、セグメントおよびレコードは、データベースのアクセス・メソッド(HSAM、HDAM、DEDBなど)によって物理的に構成されます。また、データベースのアクセス・メソッドの下部では、物理的なディスクにデータをI/Oするため、メインフレームのデータセット・アクセス・メソッドが使用されます。

階層データベースの構造およびアプリケーションからのアクセス方式は、DBD、PSB、ACBなどの制御ブロックによって定義されます。制御ブロックは、データベース管理者によってマクロ・スクリプト文として記述され、このソース・スクリプト・ファイルをコンパイルすると、制御ブロックが作成されます。作成された制御ブロックはデータベース・システムとアプリケーションが使用します。

データ・セグメントとレコードの構成および格納に使用されるデータベース・アクセス方式にはいくつかの種類があります。使用するアクセス方式の手法によってアプリケーションで使用できる機能や性能が異なるため、アプリケーションの必要条件を十分に分析してからアクセス方式を決める必要があります。

以下は、最も多く使われる階層データベース・アクセス方式です。

  • Hierarchical Direct Access Method (HDAM): 階層直接アクセス方式

  • Hierarchical Indexed Direct Access Method (HIDAM): 階層索引直接アクセス方式

  • Hierarchical Sequential Access Method (HSAM): 階層順次アクセス方式

  • Hierarchical Indexed Sequential Access Method (HISAM): 階層索引順次アクセス方式

  • Data Entry Database (DEDB): 高速処理データベース

階層データベースの物理ストレージ構造のタイプは以下のとおりです。

  • Hierarchical Direct

    Hierarchical Direct構造は、物理的なデータベース・レコードが各セグメントのPREFIXに格納されているアドレス・ポインターによって連結されている格納構造です。HDAMとHIDAMの2つのアクセス・メソッドがあります。

    • HDAMは、Hierarchical Direct構造においてルート・セグメントを検索するためにRandomizerアルゴリズムを使用します。

    • HIDAMは、Hierarchical Direct構造においてルート・セグメントを検索するために索引を使用します。

  • Hierarchical Sequential

    Hierarchical Sequential構造は、データベース・セグメント同士の関係が物理的なデータベース・レコードの隣接で表示される格納構造です。

    Hierarchical Directアクセス・メソッドの方がよりメリットが多いため、最近ではHierarchical Sequentialアクセス・メソッドはあまり使用されていません。HSAMとHISAMの2つのアクセス・メソッドがあります。

  • Data Entry Database(DEDB)

    DEDBは、大容量かつ高性能アプリケーション向けのアクセス・メソッドです。ただし、アプリケーションでこの機能を使用するためには、同機能を使用できるようにデータベースが設計される必要があります。

    Hierarchical Direct構造とHierarchical Sequential構造のデータベースは、多くの場合、Full Functionデータベースと呼ばれます。一方、DEDBデータベースは高速パス(Fast Path)データベースと呼ばれます。 IBMメインフレームではMSDB (Main Storage Database)という高速パス・データベースがもう1つありますが、最近はVSO(Virtual Storage Option)を使用するDEDBによって代替されています。

  • Index Database

    Index Databaseは、二次索引(Secondary Index)やHIDAMの主索引(Primary Index)を物理的に実装するために使用されるデータベースです。

  • Generalized Sequential Access Method (GSAM)

    バッチ・プログラムやBMPプログラムで、階層構造のデータベースではなく、順次データセットに対する簡単なデータベース・アクセスAPIを提供するためのアクセス・メソッドです。

5. サポート範囲

HiDBは、IBMメインフレームのIMS/DBに対応されるOpenFrame製品として、IMS/DBの物理構造をRDBのテーブルとして保存します。ただし例外として、GSAMは非VSAMデータセットの形式をそのまま使用します。

HiDBがサポートするアクセス方式は以下のとおりです。

  • HIDAM: RDBのテーブルとしてDBDでSEQとして指定したフィールドに索引を定義します。

  • HDAM: RDBテーブルとしてルート・セグメントのOCC_ID列に索引を定義します。

  • GSAM: 非VSAMデータセットをそのまま使用し、HiDBの命令でアクセスできようにサポートします。

その他のアクセス方式は、HIDAMと同様にサポートします。

HiDBでは、データベース・レコードのアクセス方式として、次の高度な機能を追加で提供しています。

  • 論理関係

  • 二次索引

HiDBでサポートする高度な機能の詳細については、高度な機能を参照してください。