分散データ管理アーキテクチャ( DDM ) は、リモート コンピュータ上のデータの作成、管理、およびアクセスを行うIBMのオープンで公開されたソフトウェア アーキテクチャです。 DDM は当初、レコード指向ファイルをサポートするように設計され、その後、階層ディレクトリ、ストリーム指向ファイル、キュー、およびシステム コマンド処理をサポートするように拡張され、さらに拡張されて IBM の分散リレーショナル データベース アーキテクチャ(DRDA)のベースとなり、最終的にはデータ記述と変換をサポートするように拡張されました。 1980 年から 1993 年にかけて定義された DDM は、オブジェクト指向の原則に基づいて、必要なコンポーネント、メッセージ、およびプロトコルを指定します。 DDM 自体はソフトウェアではなく、DDM の実装は、クライアント製品とサーバー製品の形をとります。オープン アーキテクチャであるため、製品は DDM アーキテクチャのサブセットを実装でき、製品は追加の要件を満たすために DDM を拡張できます。総合的に見て、DDM 製品は分散ファイル システムを実装します。

分散アプリケーションの設計者は、転送されるデータの量と頻度、データ管理、セキュリティ、そして適時性を考慮し、アプリケーションのプログラムとデータの最適な配置を決定する必要があります。分散アプリケーションの設計には、以下の3つのクライアントサーバーモデルがあります。
DDM アーキテクチャは当初、分散アプリケーションのファット クライアントモデルをサポートするように設計されましたが、ファイル全体の転送もサポートしています。
DDMアーキテクチャは分散アプリケーションに次のような利点を提供します。[ 1 ]
DDMアーキテクチャは、コンピュータネットワーク全体に分散されたデータの管理とアクセスを可能にするメッセージとプロトコルの仕様のセットです。 [ 2 ]
IBMのシステム・ネットワーク・アーキテクチャ(SNA)は、当初、ワークステーションとIBMメインフレーム・コンピュータを階層的に接続できるように設計されました。当時利用可能な通信ネットワークは、メインフレームとワークステーション群との間の固定接続を前提として厳密に設計されており、ワークステーション群はメインフレーム・コンピュータの完全なソフトウェア制御下に置かれていました。メインフレーム間のその他の通信も、特定の目的のために定義されたソフトウェアによって使用される固定接続でした。通信ネットワークがより柔軟で動的になるにつれて、あるコンピュータ上のプログラムが別のコンピュータ上のプログラムを開始し、対話できる、汎用的なピアツーピア通信が求められるようになりました。
1980年代初頭にIBMのSNA拡張プログラム間通信(APPC)アーキテクチャが定義された際、APPCはリモートコンピュータ上でオペレーティングシステムサービスを提供するために使用できることも明らかでした。SNAのワークグループはこのアイデアを追求し、ファイルサービス、プリンタサービス、システムコンソールサービスなど、いくつかの分散サービスの可能性を概説しましたが、製品開発に着手することはできませんでした。APPCソフトウェアはまだメインフレームでは利用できず、より根本的な問題として、メインフレームは依然として主にスタンドアロンシステムと見なされていました。その結果、分散サービスに関する作業はSNAワークグループによって中断されました。
ミネソタ州ロチェスターの IBM 開発研究所の SNA 作業グループのメンバーは、ロチェスターで生産されるミッドレンジ コンピュータ システム間での分散サービスにビジネス ケースが存在すると確信していました。分散データ ファイル ファシリティ(DDFF) と呼ばれる、分散ファイル サービスの原始的な形式が、 IBM System/3、IBM System/34、およびIBM System/36 ミニコンピュータを接続するために実装されていました。さらに、IBM System/36およびIBM System /38コンピュータは顧客に複数台販売されており、たとえば、会社の本社のコンピュータが各倉庫にあるコンピュータと対話できるようにするという明らかなニーズがありました。APPC はこれらのシステムに実装され、さまざまな顧客アプリケーションで使用されていました。その後、分散オペレーティング システムサービスのアイデアがゴールデン ゲートプロジェクトとして復活し、その開発を正当化する試みがなされました。この試みも失敗しました。分散サービスのアイデア自体が IBM の製品プランナーにとってあまりにも新しいものであったため、異機種コンピュータを相互接続するソフトウェアの価値を定量化することはできなかったのです。
しかし、ゴールデンゲートのプランナー、ジョン・ボンディは揺るぎない信念を持ち、経営陣を説得してロチェスター研究所の通常の管理範囲外に新しい部門を設立させました。これにより、事前定義されたビジネスケースを直ちに必要とする必要がなくなりました。さらに、彼はその部門の任務を分散データ管理(DDM)、特にレコード指向ファイルのサポートのみに限定しました。そして、経験豊富なソフトウェアアーキテクトのリチャード・A・デマーズを説得し、DDMアーキテクチャの定義とIBMシステムハウスへのDDMの提案という任務に加わらせました。
この取り組みの最初の1年間は、IBMシステムベンダーが引き続き事前のビジネスケースを要求し、自社のローカルファイルシステムの制御ブロックインターフェースと同型のメッセージフォーマットを主張したため、ほとんど成果を上げることができませんでした。さらに、パーソナルコンピュータがメインフレームコンピュータに接続された端末として使用されるようになると、 3270データストリームを拡張するだけでPCからメインフレームデータにアクセスできるようになるという主張がなされました。
この期間に、デマーズはDDMクライアントとサーバー、それらのコンポーネント、そして通信するコンピュータ間の相互作用のアーキテクチャモデルを設計しました。さらに、Smalltalkプログラミング言語とIBM System/38によって開拓されたオブジェクト指向の原則に基づき、DDMメッセージの汎用フォーマットを定義しました。このモデルにより、DDM製品を様々なシステムに実装する方法が明確になりました。「DDMの仕組み」をご覧ください。
1982年、System/36の計画者はDDMレコード指向ファイルサービスに対する十分な市場があると確信しました。[ 3 ]
DDMメッセージの汎用フォーマットは既に設計されていましたが、具体的にどのようなメッセージを定義すべきでしょうか?System/36ファイルシステムは、Fortran、COBOL、PL/I、IBM RPGなどの第3世代プログラミング言語(3GL)のレコード指向のニーズを満たすように定義されていました。System/38ファイルシステムやIBMメインフレームコンピュータの仮想記憶アクセス方式(VSAM)ファイルシステムも同様です。しかし、実際の機能やインターフェースは大きく異なっていました。では、DDMアーキテクチャはどのような機能やインターフェースをサポートすべきでしょうか?レコード指向ファイルを参照してください。
ゴールデンゲートプロジェクトによる DDM の初期の作業は、分散ファイル用のファイル転送アクセスおよび管理( FTAM ) 国際標準に倣ったものでしたが、非常に抽象的で、ローカルファイルサービスへのマッピングが困難でした。実際、これが IBM システムハウスに受け入れられない要因の 1 つでした。System/36 ファイルサービスの責任者であるシステム設計者 Kenneth Lawrence は、少なくとも 1 つの IBM システムが簡単に実装できるメッセージを定義し、他のシステムが必要な変更を要求できるようにする方が良いと主張しました。当然、彼は System/36 の要件のサポートを主張しました。1 年間、他の IBM システムハウスに DDM のアイデアを売り込むことに失敗しましたが、Lawrence の主張が受け入れられました。
リチャード・サンダースがDDMアーキテクチャチームに加わり、ローレンスとデマーズと共にSystem/36 DDMに必要な特定のメッセージを定義しました。DDMの定義が進展したことで、System/38も参加することになりました。これにより、DDMレコードファイルのサポート範囲が広がり、System/38の高度なファイルシステムの多くの要件を満たすようになりました。
ファイルは、オペレーティングシステムによって提供されるコンテキスト内に存在します。オペレーティングシステムは、ファイルの整理、同時ユーザーとの共有、不正アクセスからの保護などのサービスを提供します。DDMのレベル1では、使用するファイルの完全修飾名を送信する以外に、リモートファイルディレクトリへのアクセスはサポートされていませんでした。しかし、セキュリティと共有は必須でした。サンダースはこれらの分野の設計作業を行いました。サンダースは通信機能の使用に関する特定のプロトコルも定義し、それらはDDM会話型通信マネージャと呼ばれるコンポーネントに組み込まれました。当初はAPPCを使用して実装されましたが、後に TCP/IPを使用して実装されました。
システム/36 DDM製品の完成に伴い、ローレンスは英国ハースリーパークのIBM研究所のプログラマーと協力し、システム/36 DDMサーバーのプログラミングの大部分をIBM顧客情報管理システム(CICS)トランザクション処理環境で使用できるように適応させ、CICSをMVSとVSEメインフレームオペレーティングシステムの両方でDDMサーバーにしました。[ 4 ]ローレンスはノースカロライナ州キャリーのIBM研究所のプログラマーとも協力し、 IBM PC DOS用のDDMレコード指向クライアントを実装しました。
DDM アーキテクチャのレベル 1 は 1986 年に正式に公開されました。この発表時に、IBM はKenneth Lawrence にOutstanding Technical Achievement Award 、Richard Sanders にOutstanding Contribution Award、 Richard Demers にOutstanding Innovation Award を授与しました。
ネットワーク環境におけるIBM PCとUnixオペレーティングシステムの重要性が高まるにつれ、IBM PC DOSを実行するIBMパーソナルコンピュータやIBM AIX(IBM版Unix)を実行するIBM RS/6000の階層ディレクトリとストリーム指向ファイルにもDDMサポートが必要になりました。 「ストリーム指向ファイル」を参照してください。
DDM アーキテクチャ レベル 2 は 1988 年に公開されました。ディレクトリとストリーム ファイルに対する DDM サポートのアーキテクチャ作業の大部分は、Jan Fisher と Sunil Gaitonde によって行われました。
1986年、IBMは4つの異なるリレーショナルデータベース(RDB)製品を発売しました。それぞれ特定のIBMオペレーティングシステム向けに構築されていました。IBMのアルマデン研究所の科学者たちは、分散型RDBのプロトタイプであるSystem/R*を開発しており、今こそ市場価値のある製品に仕上げる時だと考えていました。しかし、System/R*はRDBの研究用プロトタイプであるSystem/Rをベースとしており、IBM RDB製品に容易に追加することはできませんでした。 分散処理環境におけるRDBに関する議論については、 [ 6 ]を参照してください。
IBMサンタテレサ・プログラミング・センターのロジャー・ラインシュは、分散リレーショナル・データベース・アーキテクチャ(DRDA)を定義するために、製品横断的なチームを率いました。彼は以下のメンバーを招集しました。
1990年、DDMアーキテクチャレベル3とDRDA [ 7 ]が同時に公開されました。DDMとDRDAはともにIBMのシステム・アプリケーション・アーキテクチャ(SAA)の戦略的コンポーネントとして指定されました。DRDAはIBMのRDB製品4つすべてと他のベンダーによって実装されました。
DRDAの設計に携わった主要な関係者に賞が授与されました。リチャード・サンダース氏は優秀貢献賞を、ロジャー・ラインシュ氏とリチャード・デマーズ氏は優秀イノベーション賞を受賞しました。
分散ファイル管理(DFM)[ 8 ]プロジェクトは、IBMのMVSオペレーティングシステムにDDMサービスを追加し、リモートコンピュータ上のプログラムがVSAMファイルを作成、管理、アクセスできるようにするために開始されました。DFMプロジェクトのマネージャであるジョン・ハファードは、システム間でやり取りされるレコード内のデータフィールドを変換する手段をDDMアーキテクチャチームに求めました。リチャード・デマーズがこの問題の主導権を握り、DFMプロジェクトの山口耕一の支援を受けました。「データ記述と変換」を参照してください。
次の追加サービスは、Richard Sanders、Jan Fisher、Sunil Gaitonde によってレベル 4 の DDM アーキテクチャで定義されました。
DDM アーキテクチャ レベル 4 は 1992 年に公開されました。
DDMレベル5のアーキテクチャ作業は、以下のサポートで構成されていました。
Jan Fisherは、IBMではなく Open Groupによって公開されたDDMレベル5の責任者であるアーキテクトでした 。その後まもなく、IBMのDDMアーキテクチャ・グループは解散しました。
DDMアーキテクチャは、正式に定義され、高度に構造化された仕様セットです。このセクションでは、DDMの基盤となる主要な技術概念を紹介します。[ 2 ]
DDMアーキテクチャは、クライアント/サーバープロトコルを定義します。つまり、クライアントはサーバーにサービスを要求し、サーバーはローカルリソースと対話して要求されたサービスを実行し、その結果(データとステータスインジケータ)をクライアントに返します。上の図は、ローカルリソースとの関係におけるDDMクライアントとサーバーの役割を示しています。(ここではクライアントとサーバーという一般的な用語を使用していますが、DDMアーキテクチャではクライアントはソースサーバー、サーバーはターゲットサーバーと呼ばれます。)
DDMアーキテクチャはオブジェクト指向です。DDMによって定義されるすべてのエンティティは、自己定義型クラスオブジェクトによって定義されるオブジェクトです。システム間でやり取りされるメッセージ、応答、およびデータは、シリアル化されたオブジェクトです。各オブジェクトは、その長さを指定し、DDMコードポイントによってクラスを識別し、クラスによって定義されたデータを保持します。さらに、クラスは、オブジェクトがDDMクライアントまたはサーバーに存在する場合に、そのインスタンスに送信できるコマンドを指定します。これにより、オブジェクトは限られた操作セットによってカプセル化されます。
構造的には、DDM アーキテクチャはオブジェクトの階層レベルで構成され、各レベルではより高いレベルで出現するプロパティが現れます。
DDMアーキテクチャはオブジェクト指向ですが、DDM製品はホストシステムに特有の言語と手法を用いて実装されています。Object Technology InternationalはIBM PC向けにDDMのSmalltalkバージョンを開発し、DDMリファレンスマニュアルから適切なSmalltalkクラスを自動的に生成しました。
DDMはオープンアーキテクチャです。DDM製品はDDMアーキテクチャのサブセットを実装することができ、また独自の拡張機能を作成することもできます。 [ 11 ]
DDMの「Exchange Server Attributes」コマンドは、クライアントがサーバーに接続する際に最初に送信されるコマンドです。このコマンドはクライアントを識別し、クライアントが必要とするマネージャーと、サポートが必要なDDMアーキテクチャのレベルを指定します。サーバーは、自身を識別し、要求されたマネージャーをサポートするレベルを指定して応答します。一般的なルールとして、レベルXのDDMマネージャーをサポートする製品は、レベルX-1もサポートする必要があります。これにより、新しいサーバー製品が古いクライアント製品に接続できるようになります。
DDM のサブセットは、さまざまな製品要件を満たすように実装できます。
DDMクライアントが既知のDDMサーバーに接続されている場合(System/38クライアントがSystem/38サーバーに接続されている場合など)、DDMアーキテクチャは、次のものを追加することで拡張することもできます。
このような拡張機能は、DDM のオブジェクト指向フレームワーク内で定義できるため、既存の DDM メッセージ処理機能を使用できます。
DDM の純粋なオブジェクト指向実装では、クライアントとサーバー、およびそれらに含まれるすべてのマネージャーとオブジェクトはメモリ ヒープ内に存在し、ポインタ (メモリ アドレス) を使用して相互接続されます。たとえば、コマンド オブジェクトは、その各パラメーター オブジェクトを指します。ただし、コマンドをこの方法でクライアントからサーバーに転送することはできません。コマンドの同型コピーを単一の連続したビット文字列として作成する必要があります。ヒープ内では、コマンドはヒープ内のコマンドのサイズ、コマンドのクラスへのポインタ、およびコマンドの各パラメーター オブジェクトへのポインタで構成されます。線形化されたコマンドは、線形化されたコマンドの全長、コマンドのクラスを識別するコード ポイント、および線形化された各パラメーター オブジェクトで構成されます。DDM アーキテクチャでは、オブジェクトの各クラスに一意のコード ポイントが割り当てられます。この単純な手法は、コマンド、レコード、応答メッセージなど、クライアントとサーバー間で転送されるすべてのオブジェクトに使用されます。
これらの線形化されたオブジェクトはすべて、クライアント エージェントとサーバー エージェントが処理を調整できるようにエンベロープに入れられます。DDM アーキテクチャでは、これらのエンベロープはデータ ストリーム構造(DSS) と呼ばれます。コマンドは要求 DSS (RQSDSS) に入れられ、応答は応答 DSS (RPYDSS) に入れられ、その他のオブジェクトはオブジェクト DSS (OBJDSS) に入れられます。RQSDSS に入れることができるコマンドは 1 つだけ、RPYDSS に入れることができる応答は 1 つだけですが、レコードなどの複数のオブジェクトを 1 つの OBJDSS に入れることができます。さらに、必要な数のオブジェクトを収容するために、複数の OBJDSS を RQSDSS または PRYDSS に連鎖させることができます。DSS は、DSS の全長、DSS の種類を識別するフラグ バイト、要求 ID、および DSS 内の線形化されたオブジェクトで構成されます。要求 ID は、RQSDSS を、Load Fileコマンドによってファイルにロードされるレコードなどのクライアントからの後続の OBJDSS に結び付けます。要求識別子は、クライアントからの RQSDSS を RPYDSS に、またはサーバーからクライアントへの OBJDSS に結び付けます。
DDMリファレンスマニュアル[ 12 ] [ 13 ]は、名前付きメニュー、ヘルプ、クラスオブジェクトで構成されています。DDMクラスクラスのサブクラスは、以下のものを指定する変数によって記述されます 。
これらのオブジェクトは、テキストや仕様書内の他の名前付きオブジェクトへの参照を含むことができ、 DDMリファレンス・マニュアルのページ間にハイパーテキストリンクを作成します。メニューページとヘルプページは、DDMに関する統合チュートリアルを構成します。DDMリファレンス・マニュアル レベル3の紙版は1400ページを超える分厚く、やや使いにくいですが、IBM社内の通信設備を利用した対話型バージョンも作成されました。当時の通信設備の速度が比較的遅かったため、主にIBMロチェスター研究所内で使用されました。
DDMリファレンスマニュアルに加えて、一般情報[ 1 ]文書ではDDMに関する実行レベルの情報が提供され、プログラマガイド[ 11 ]ではクライアントとサーバーを実装するプログラマ向けにDDMの概念が要約されています。
DDM アーキテクチャでは、レコード指向ファイル、ストリーム指向ファイル、階層ディレクトリという 3 つの一般的なファイル モデルが定義されています。
DDM アーキテクチャでは、リモート ファイルの管理のために次のサービスが提供されます。
レコード指向ファイルは、Fortran、Cobol、PL/I、RPGといった第三世代(3GL)プログラミング言語のデータ入力、出力、およびストレージ要件を満たすように設計されました。各言語がこれらの機能を独自にサポートするのではなく、オペレーティングシステムが提供するサービスに組み込まれました。
レコードとは、従業員一人の氏名、住所、身分証明書番号、給与など、関連するデータフィールドの連続であり、各フィールドはエンコードされ、連続したバイト列にマッピングされます。初期のコンピュータは入出力機能が限られており、通常は80列のパンチカードのスタック、紙、または磁気テープという形態でした。従業員データレコードなどのアプリケーションレコードは、レコードごとに順次読み取りまたは書き込みが行われ、バッチ処理されていました。直接アクセス記憶装置が利用可能になると、プログラミング言語は、キーフィールドの値やファイル内のレコード位置によるアクセスなど、プログラムがレコードにランダムに1つずつアクセスする方法を追加しました。ファイル内のすべてのレコードは、給与ファイルのように同じ形式にすることも、イベントログのように異なる形式にすることもできます。一部のファイルは読み取り専用で、ファイルに書き込まれたレコードは読み取りのみ可能ですが、他のファイルはレコードを更新できます。
DDMレコード指向ファイルモデルは、ファイル属性(作成日、最終更新日、レコードサイズ、レコードを格納できるスロットなど)で構成されます。レコード長は、ファイルのレコードを格納するメディアに応じて、固定長または可変長のいずれかになります。DDMでは、以下の4種類のレコード指向ファイルが定義されています。
DDMアーキテクチャは、レコード指向ファイルを様々な方法で操作するための多様なアクセス方式も定義しています。アクセス方式とは、OPENコマンドによって作成されたファイルの使用インスタンスであり、クライアントがファイルの使用権限を持っているかどうかを判断した後、自身をファイルに接続します。アクセス方式は、CLOSEコマンドによってファイルから切断されます。
アクセスメソッドは、カーソルを用いて現在処理中のレコードを追跡します。各種SETコマンドを使用することで、カーソルをファイルの先頭または末尾、ファイル内の次または前の連続レコード、特定のキー値を持つレコード、あるいはキーの順序に従って次または前のレコードに指定することができます。
1つのファイルに対して、複数のアクセスメソッドのインスタンスを同時に開くことができ、それぞれが単一のクライアントにサービスを提供します。ファイルを更新アクセス用に開くと、複数のクライアントが同じレコードにアクセスすると競合が発生する可能性があります。このような競合を防ぐため、ファイル全体に対してロックを取得できます。また、ファイルを更新アクセス用に開くと、最初にレコードを読み込んだクライアントによってレコードのロックが取得され、そのクライアントがレコードを更新するとロックが解除されます。他のすべてのクライアントは、ロックが解除されるまで待機する必要があります。
ストリーム指向ファイルは、単一のバイトシーケンスで構成され、プログラムはアプリケーションデータを任意の方法でマッピングできます。ストリームファイルは、UnixおよびUnix系オペレーティングシステム、そしてWindowsでサポートされている主要なファイルモデルです。DDMは、単一のストリームファイルモデルと単一のストリームアクセスメソッドを定義します。
DDMストリームファイルモデルは、ファイル作成日やストリームサイズなどのファイル属性と、連続したバイトストリームで構成されます。ストリームには、ストリームアクセスメソッドを使用してアクセスできます。アプリケーションプログラムは、データがレコードで構成されていても、ストリームの一部にデータを書き込みます。アプリケーションプログラムは、ストリーム内のデータ項目の位置を任意の方法で追跡します。例えば、文書ファイルのデータストリームはMicrosoft Wordなどのテキスト処理プログラムによって定義され、スプレッドシートファイルのデータストリームはMicrosoft Excelなどのプログラムによって定義されます。
ストリームアクセスメソッドは、単一のクライアントによるストリームファイルの使用例です。カーソルは、クライアントが使用しているサブストリームの現在のバイト位置を追跡します。各種SETコマンドを使用することで、カーソルをファイルの先頭または末尾、ファイル内の任意の位置、あるいは現在の位置からの正または負のオフセットに指定できます。
ストリームアクセスメソッドのインスタンスを複数同時にファイル上に開くことができ、それぞれが単一のクライアントにサービスを提供します。ファイルを「更新」アクセス用に開くと、複数のクライアントが同じサブストリームにアクセスすると競合が発生する可能性があります。このような競合を防ぐため、ファイル全体に対してロックを取得できます。また、ファイルを更新用に開くと、最初にファイルを「読み取り」したクライアントがサブストリームのロックを取得し、そのクライアントがファイルを「更新」するとロックが解除されます。他のすべてのクライアントはロックが解除されるまで待機する必要があります。
階層ディレクトリとは、各レコードが名前と位置を関連付けているファイルです。階層構造は、ディレクトリレコードが別のディレクトリの名前と位置を識別することで実現されます。DDMクライアントおよびサーバー製品を使用することで、プログラムはリモートコンピュータ内のディレクトリを作成、削除、および名前変更できます。また、リモートディレクトリのファイル属性を一覧表示したり変更したりすることもできます。ディレクトリ内のレコードは、DDMディレクトリアクセス方式を使用して順次読み取ることができます。ディレクトリレコードによって識別されるファイルは、名前を変更したり、コピーしたり、別のディレクトリに移動したりできます。
キューは、レコードを用いてプログラム間の短期的な通信を可能にする通信メカニズムです。DDMキューは単一のシステムに常駐しますが、複数のシステム上のプログラムからアクセスできます。DDMキューには3つのサブクラスがあり、それぞれ異なる作成コマンドを使用してターゲットシステム上に作成できます。
DDMキューモデルは、キューの作成日、キューに格納できるレコード数、レコード長などのキュー属性で構成されます。キュー内のレコード長は、固定長または可変長のいずれかになります。
DDMファイルモデルとは異なり、キュー上でアクセスメソッドを開く必要はありません。プログラムは、キューのクラスに応じて、キューにレコードを追加したり、キューからレコードを受け取ったりできます。また、プログラムはキューからレコードを消去したり、キューでの操作を停止したり、キューの属性を一覧表示したり、キューの属性を変更したりすることもできます。さらに、プログラムはキューまたはキュー内の個々のレコードをロックして、他のプログラムとの競合を防ぐこともできます。他のすべてのクライアントは、ロックが解除されるまで待機する必要があります。
リレーショナルデータベース(RDB)は、構造化照会言語(SQL)の実装であり、データテーブルの作成、管理、クエリ、更新、インデックス作成、および相互関係設定をサポートします。対話型のユーザーまたはプログラムは、RDBに対してSQL文を発行し、その応答としてデータテーブルとステータスインジケータを受け取ることができます。また、SQL文をコンパイルしてパッケージとしてRDBに格納し、パッケージ名で呼び出すこともできます。これは、複雑で高頻度のクエリを発行するアプリケーションプログラムを効率的に動作させるために重要です。特に、アクセス対象のテーブルがリモートシステムにある場合に重要です。
The Distributed Relational Database Architecture (DRDA) fits nicely into the overall DDM framework, as discussed in Object-Orientation. (However, DDM can also be viewed as a component architecture of DRDA since other specifications are also required [2]). The DDM manager-level objects supporting DRDA are named RDB (for relational database) and SQLAM (for SQL Application Manager).
Transparency is a key objective of DDM architecture. Without recompilation, it should be possible to redirect existing application programs to the data management services of a remote computer. For files, this was largely accomplished by DDM clients at the interface/functional level, but what about the data fields in a record? Complete transparency requires that client application programs be able to write and read fields as encoded by their local data management system, regardless of how any remote server encodes them, and that implies automatic data conversions.
For example, IBM mainframe computers encode floating point numbers in hexadecimal format and character data in EBCDIC, while IBM Personal computers encode them in IEEE format and ASCII. Further complexity arose because of the ways in which various programming language compilers map record fields onto strings of bits, bytes, and words in memory. Transparent conversion of a record requires detailed descriptions of both the client view and the server view of a record. Given these descriptions, the fields of the client and server views can be matched, by field name, and appropriate conversions can be performed.
The key issue is obtaining sufficiently detailed record descriptions, but record descriptions are generally specified abstractly in application programs by declaration statements defined by the programming language, with the language compiler handling encoding and mapping details. In a distributed processing environment, what is needed is a single, standardized way of describing records that is independent of all programming languages, one that can describe the wide variety of fixed and varying length record formats found in existing files.
The result was the definition of a comprehensive Data Description and Conversion architecture (DD&C),[14] based on a new, specialized programming language, A Data Language (ADL),[15] for describing client and server views of data records and for specifying conversions. Compiled ADL programs can then be called by a server to perform necessary conversions as records flowed to or from the server.
DD&Cアーキテクチャはさらに発展し、プログラミング言語の宣言文をADLとADLの間で自動的に変換し、ひいてはプログラミング言語間で変換する手段を定義しました。この機能は、その複雑さとコストの高さから実装されることはありませんでした。しかし、ADLコンパイラが作成され、利用可能な場合はADLプログラムが呼び出され、DFMおよびIBM 4680ストアシステムによる変換が実行されます。[ 16 ]しかし、アプリケーションプログラマはADLプログラムを手動で記述する必要があります。
次の IBM 製品では、DDM アーキテクチャのさまざまなサブセットが実装されています。
DRDA を実装した製品の完全なリストについては、オープン ソース DRDA 製品識別子テーブルを参照してください。
{{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)DDMは2003年12月31日をもってIBMから提供されなくなり、サポートも終了しました。CICS TSバージョン5.2以降では、CICS DDMは利用できなくなりました。
Distributed Data Management (DDM) のサポートは、CICS TS for VSE/ESA V1.1.1 で安定化されています。CICS TS for z/VSE の将来のリリースでは、IBM は CICS DDM のサポートを終了する予定です。
CICS Distributed Data Management (CICS/DDM)はCICS TS for z/VSE V2.1ではサポートされていません。