データベースの管理

本章では、設計されたOpenFrame/HiDBデータベースを実装するために必要な作業について説明します。

1. 概要

HiDBデータベースの管理とは、データベースを設計・実装・維持することをいいます。

以下は、HiDBデータベースの各管理業務についての説明です。

  • データベースの設計

    導入先のアプリケーション要件を分析してデータ構造を作成します。データ構造は、新規データベースに格納されるデータの種類と、そのデータ同士の連結関係を構造的に示します。

    データ構造が決定されると、データベースを設計することができます。データベースの管理者は、データベースの設計段階で定義項目とオプションなどを設定します。

  • データベースの実装

    データベースが設計されると、データベースの特徴およびアプリケーションがデータベースを使用する方法をマクロ・アセンブラでコーディングして、データベースを実装します。

    データベースの実装は、DBD(Database Description)スクリプトとPSB(Program Specification Block)スクリプトをコーディングしてコンパイルする作業で構成されています。そのほか、ACB(Application Control Block)を定義する作業があります。

  • データベースのロード

    データベースが定義されると、データベースにデータをロードするために初期ロード・プログラムを作成する必要があります。データベースにデータがロードされると、アプリケーションはデータベースを使用して作業を実行することができます。メインフレームで使用していた階層データベースのデータをHiDBで使用するためには、データベースのマイグレーションを行います。

  • データベースの維持

    データベースの運用が開始されると、データベースの性能を継続的にモニタリングおよびチューニングする必要があります。定期的なモニタリングはデータベースのチューニング時期を決定する上で役立ちます。

2. DBD

HiDBデータベースの設計が完了したら、データベースを使用するアプリケーションを実行する前に、データベース管理者はDBD(Database Description)のコーディングおよびコンパイルを通じて、データベースの物理的または論理的な特性をHiDBシステムに通知する必要があります。

DBDは、データベースの構造やアクセス・メソッド、データベース・レコード内のセグメントとフィールド、およびそれぞれのセグメント・タイプ間の関係について記述するマクロ・アセンブラ・コマンドの集合です。HiDBの関連文書では、DBDスクリプトに記述されているマクロ・アセンブラ・コマンドの集合をDBDメタデータと呼びます。

以下は、DBDGENユーティリティ・プログラムを使用してDBD制御ブロックを作成する方法についての説明です。

figure 2 1
DBD作成プロセス

作成されたDBDマクロ・アセンブラ・スクリプトは、DBDGENユーティリティ・プログラムの入力として使用されます。このユーティリティ・プログラムはアセンブリ言語のコンパイル・プログラムで、DBDメタデータをDBD関連のメタテーブルに保存します。保存されたDBDメタデータは、以降データベースの処理時に使用されます。

HiDBでは、DBD制御ブロックを作成するために、DBDGENユーティリティの代わりにdbdgenプログラムを提供します。

定義された各データベースごとに、1つずつの入力スクリプトが必要です。

以下は、入力スクリプトについての説明です。

区分 説明

DBD文

現在記述しているデータベース名とDL/Iアクセス・メソッドを指定します。

DATASET文

データベースの物理的なデータ・リポジトリとして使用されるデータセットの属性を指定します。データベースの種類に応じて、最大10個までのデータセット・グループを定義することができます。また、データベースに存在する各データセット・グループごとに1つのDATASET文が使用されます。

各DATASET文の後にはSEGM文が続きます。SEGM文に定義されたすべてのセグメントは、該当するデータセット・グループに格納されます。

AREA文

DEDBデータベースの場合は、DATASET文の代わりにAREA文が使用されます。AREA文はDEDBのデータ領域を定義します。1つのデータベース内に複数のデータ領域を定義するために、最大240個までのAREA文が使用されます。すべてのAREA文は、DBD文と最初のSEGM文の間に位置する必要があります。

SEGM文

SEGM文は、データベースに1つのセグメント・タイプを定義するために使用されます。SEGM文には該当するセグメントの階層構造における位置、物理的な属性、他のセグメントとの関係などの情報が記述されます。

セグメントは階層構造での順序どおり定義される必要があり、最大1000個、15レベルの深さまでサポートされます。

元のシステムの構文に加えて、EXTPROCパラメータを指定できます。詳細については、データベース定義の固有の構文を参照してください。

FIELD文

FIELD文は、1つのセグメントの特定フィールドを定義します。

FIELD文は自身が属するセグメントのSEGM文の直後に定義される必要があります。また、1つのセグメント内に存在する順次フィールドとDL/Iの呼び出し時に使用される、SSAで言及されたフィールドは、すべてFIELD文で定義します。

LCHILD文

LCHILD文は、二次索引、2つのセグメント・タイプ間の論理関係を定義します。また、HIDAM索引データベースとそのルート・セグメント間の関係を定義します。索引間の関係を定義するには、PTRパラメータにINDX、SYMBを指定し、論理関係を定義するには、PTRパラメータにSNGL、DBLE、NONEを指定します。

XDFLD文

XDFLD文は、ソース・セグメントとターゲット・セグメントを関連付けます。二次索引が使用される場合にのみ使用します。XDFLD文には、索引フィールド名、ソース・セグメント名、二次索引キーの作成に使用されるフィールド名を指定します。

  • SRCH : ユーザー・アプリケーションで検索条件として指定するフィールドを指定します。

  • SUBSEQ : 検索キーとしては使用されませんが、SRCHフィールド以外にHiDBが追加で二次索引キーとして管理するフィールドを指定します。

  • DDATA : 検索キーとして使用されずに、索引セグメントの追加データとして使用するフィールドを指定します。

DBDGEN文,

END文

DBDGEN文とEND文はDBDの作成スクリプトの最後に追加され、それぞれ以下のような意味を持ちます。

  • DBDGEN : DBDを定義する最後の構文

  • END : 入力スクリプトの最後の構文

3. PSB

特定のアプリケーションはデータベースに格納されているすべてのセグメントとフィールドを使用する必要はありません。また、セキュリティーや統合管理上の理由で特定のセグメントやフィールドへのアクセスを防止しなければならない場合があります。

データベース管理者は、PSB(Program Specification Block)をコーディング、コンパイルして、特定のアプリケーションがデータベースから読み込むセグメントとフィールド、およびセグメントに対して行える作業を制御できます。PSBはデータベース・セグメントに対するアプリケーションのアクセス方式を記述するマクロ・アセンブラ・コマンドの集合です。1つのPSBは1つ以上のPCB(Program Communication Block)で構成されており、各PCBは関連するデータベースの読み込みや使用できるアプリケーションの権限を記述します。HiDBの関連文書では、PSBスクリプトに記述されているマクロ・アセンブラ・コマンドの集合をPSBメタデータと呼びます。

アプリケーションは使用するPSBに複数のPCBを持つことにより、同じデータベースに対する複数のビューを持つことができます。また、複数のデータベースに同時にアクセスすることもできます。

データベースに対するアプリケーションの権限について記述するデータベースPCBのほかに、「代替PCB」と呼ばれる別のタイプのPCBがあります。これは、オンライン・プログラムで「Alternate Message Destination」を記述する際に使用されます。

以下は、PSBGENユーティリティ・プログラムを使用してPSBメタデータをメタテーブルに保存する方法についての説明です。

figure 2 2
PSB作成プロセス

作成されたPSBマクロ・アセンブラ・スクリプトは、PSBGENユーティリティ・プログラムの入力として使用されます。このユーティリティ・プログラムはアセンブリ言語のコンパイル・プログラムで、PSBメタデータをPSB関連のメタテーブルに保存します。保存されたPSBメタデータは、以降データベースの処理時に使用されます。

HiDBでは、PSB制御ブロックを作成するために、PSBGENユーティリティの代わりにpsbgenツールを提供します。

以下は、入力スクリプトについての説明です。

区分 説明

代替PCB文

2種類の異なるPCB文を入力スクリプトに作成できます。

そのうち、1つ目のPCBタイプである代替PCBは、オンライン・トランザクション・メッセージが最初に作成された場所とは異なる場所に転送するためのデスティネーションを作成します。

代替PCB文は入力スクリプトの先頭に位置する必要があります。

データベースPCB文

もう1つのPCBタイプであるデータベースPCB文は、アプリケーションがアクセスするデータベースのDBD名を指定します。また、PCB文ではアプリケーションがデータベースに格納されているセグメントに対して実行できる作業(GET、INSERT、REPLACEなど)を定義します。

この構文で記述されるデータベースは物理データベースあるいは論理データベースになります。アプリケーションがアクセスするすべてのデータベースに対し、独立したデータベースPCBが必要です。

SENSEG文

SENSEG文は、アプリケーションで使用できるデータベースのセグメント・タイプを定義します。それぞれのセグメントに対して独立的なSENSEG文が必要です。

元のシステムの構文に加えて、GNALLPARENT、PAGESIZEパラメータを指定できます。詳細については、データベース定義の固有の構文を参照してください。

SENFLD文

SENFLD文は、Field-Level Sensitivity機能と併用される必要があります。また、アプリケーションで使用できるセグメントのフィールドを定義します。

PSBGEN文

PSBGEN文はPSBの名前を指定し、アプリケーションの各種属性を定義します。アプリケーションで使用されたプログラム言語やI/Oバッファーの最大サイズなどの属性が定義されます。入力スクリプトには1つのPSBGEN文が必要です。

END文

PSB作成スクリプトの最後にはEND文が定義されます。END文は、psbgenツールに入力スクリプトの終わりを通知します。

4. ACB

ACBGENユーティリティ・プログラムは、PSBメタデータとDBDメタデータをまとめて、ACB(Application Control Block)メタデータを作成します。オンライン・アプリケーションでHiDBデータベースを使用するためには、オンライン・サーバーを起動する前に、必ずACBメタデータを作成する必要があります。

HiDBでは、ACB制御ブロックを作成するために、ACBGENユーティリティの代わりにacbgenツールを提供します。

以下は、ACBGENユーティリティ・プログラムを使用してACBメタデータをACBメタテーブルに保存する方法についての説明です。

figure 2 3
ACB作成プロセス

ACB管理ユーティリティのACBGENプログラムは、ACBメタデータに必要なPSBメタデータとDBDメタデータをPSB関連のメタテーブルとDBD関連のメタテーブルから取得します。

ACBGENユーティリティ・プログラムを使用すると、PSB関連のメタテーブルにあるすべてのPSBに対してACBメタデータを作成できます。また、特定のPSB名またはDBD名を指定して、該当するPSBに対するACBメタデータを作成することもできます。作成されたACBメタデータはPSB関連のメタテーブルとDBD関連のメタテーブルに保存されます。

特定のオンライン・プログラムの実行スケジュールが作成されると、オンライン・プログラムで使用するPSBに該当するACBメタデータがすぐにメモリーにロードされます。そのため、特定のオンライン・プログラムの実行をスケジュールする時間を短縮できます。

5. 可変長セグメント

可変長セグメントを定義するためには、DBDのSEGMENT句BYTES項目を(max,min)形式で記述します。可変長セグメントを有するデータベースにアクセスするアプリケーション・プログラムでは、DL/I関数を呼び出すとき、セグメントI/O領域の最初2バイトに実際に処理するセグメント長の情報を記述する必要があります。

HiDBでは、可変長セグメントを一般セグメントと同じ方法で処理しますが、セグメントを定義する際に使用するコピーブックをdbdcpybkgenで作成しなければならないという制約があります。