グローバルディレクトリは、電話帳に似ています。グローバルディレクトリは、GT.MプロセスがMグローバル変数ノードのデータベースファイルを見つけるのを手助けするために、電話帳が人の名前が与えられた電話番号(およびアドレス)を見つける手助けをするのとちょうど同じです。しかし、その寿命はそれがマップするデータベースとは無関係であるため、グローバルディレクトリにはMUPIP CREATEのデータベース特性を保持するため、キーマッピングを保持する以外に2番目の目的があります。プロセスが新しいグローバル・ディレクトリをロードするとすぐにマッピングの変更が有効になりますが、 MUPIP CREATEは他の特性をデータベースファイルに転送しますが、しかし、他のGT.Mプロセスは、グローバルディレクトリ定義の特性を使用することはありません、それらは常にデータベースのファイルを使用します。
GT.Mは、ファイルとライブラリのルーチンをグローバルとは別に管理します。ルーチン管理の詳細については、GT.Mプログラマーズガイドの「開発サイクル」の章を参照してください。
Mのグローバル変数(名前または名前空間)および/または、それらの添字のセットは、最大レコード長、ヌル添字がM標準に準拠して照合するかどうかなど、プロパティの共通のセットを定義するリージョンにマップされます。各領域(Region)は、ファイル名、初期割り当て、グローバル・バッファ数などのファイル・システムに関連するプロパティを定義するセグメント(Segment)にマップされます。これらのプロパティとマッピングのルールは、グローバル・ディレクトリと呼ばれるバイナリファイルに格納されます。デフォルトでは、グローバル・ディレクトリ・ファイルの拡張子は .gld
です。オペレーティング・システムで有効である限り、グローバル・ディレクトリに任意のファイル名と拡張子を指定できます; GT.Mのドキュメントでは、常にデフォルトの拡張子を使用します。
グローバル・ディレクトリの場所は、固有な特殊変数 $ZGBLDIRによって指し示されます。GT.Mプロセスは、プロセス起動時に環境変数 gtmgbldir から $ZBGLDIRを初期化し、実行中に変更することができます。たとえば、簡単なSET $ZGBLDIR
コマンドにて、プロセスは開発とテストとのデータベースの間を行ったり来たり切り替えることができます。
システムが再起動されたときに、意味のない一時的なデータだけを保持するグローバル変数 ^TMP を考えてみましょう。グローバル・ディレクトリは、^TMP を領域TEMPにマッピングします。このTEMPは、scratch.dat というデータベースファイルにマップされ、他のすべてのグローバルはgtm.datにマップされます。グローバル・ディレクトリを使用すると、永続データ(gtm.dat)を非永続データ(scratch.dat)から分離することができるため、したがって、各データベース・ファイルが操作するために適切に構成されます -- たとえば、データベース管理者は、バックアップ/アーカイブ手順からscratch.datを除外するか、定期的にMUPIP CREATEを使用してscratch.datを削除して再作成することを選択できます。
次の例を考えてみましょう:
^Gharial、^Hoopoe、^Jacare、^Trogon の4つのMグローバル変数があります。^Gharial と ^Jacareは、データベース・ファイル creep.dat にマップする領域 REPTILES にマップし、そして、^Hoopoeと^Trogonは、データベース・ファイル flap.datにマップする領域 BIRDSにマップ します。デフォルトの名前空間 * は、データベース・ファイル gtm.dat にマップするDEFAULTという領域(Region)にマップされます。* は、明示的に命名された ^Gharial、^Hoope、^Jacare、^Trogon以外のすべてのグローバルを示します。すべてのグローバルは、それぞれのデータベース・ファイルにデータを格納します。各データベース・ファイルには、アクティブなジャーナルファイルが1つあります。たとえば、生物学者が ^Gharialと ^Jacareにアクセスし、鳥類学者だけが、^Hoopoeと ^Trogonにアクセスできるように、グローバルにアクセス制限を行うには、creep.dat と flap.datに、適切な読み取り/書き込み権限を割り当てる必要があります。
注意 | |
---|---|
それぞれのデータベースファイルは、ひとつのアクティブなジャーナルファイルを持つことができます。ジャーナルは、ジャーナル・ファイルのチェーンを形成するために、その前のジャーナル・ファイルにリンクすることができます。 |
下付き文字が論理的に分離可能なデータを持つ場合、同じグローバルの異なる下付き文字を異なる地域にマップすることもできます。次のグローバルディレクトリの例を考えてみましょう:
^EURWest
は、異なる領域(Region)にマップする論理的に分離可能な添字を持っています。^EURCentral
は、他の照合順序とは異なる照合順序を持つデータを保持しているため、別の領域(Region)にマップします。このようなマッピングは、運用管理を改善し、より大きな合計サイズを可能にします。また、別個のパーツのアクセスパターンによって、GT.Mデータベースエンジンでの最適化を使用して、たとえばシリアルアクセスを最適化するなど、その一部または全部へのアクセスを許可すると、パフォーマンスが向上する可能性があります。
要約すると、グローバル・ディレクトリに定義されているデータベース属性とマッピング・ルールを使用すると、次のことが可能になります:
きめ細かなアクセス制御 - データの一部へのアクセスまたは更新をブロックします。
運用管理の改善- グローバルが非常に大きくなり、それを破棄すると運用管理が改善されるか、または、全体のサイズが大きくなります。
補完アプリケーション設計- グローバルおよび/またはそのサブスクリプトを、追加コードを書き込まずに設計目標を達成する方法で分離すること。 たとえば、レプリケートされていない領域(Region)にグローバルをマッピングします。
データの変更頻度の管理 - データの中には静的なものや比較的そうであるものもあります。そのデータを活用して、バックアップと整合性の検証パターンを調整したり、MMアクセスを使用したりします。
管理性とパフォーマンスの向上 - グローバル変数が論理的に別個のデータでオーバーロードされている場合、論理的に別々のコンポーネントをそれぞれ独自のデータベース領域に分散することで、アクセスパターンがGT.Mデータベースエンジンで最適化を使用する場合の管理性とパフォーマンスが向上します。