ネームスペースとデータベース
このページでは、InterSystems IRIS® でデータとコードがどのように編成されるのかを説明します。
ネームスペースとデータベースの概要
InterSystems IRIS では、どのコードも、論理エンティティであるネームスペースで実行されます。ネームスペースはデータとコードへのアクセスを提供し、それらは (通常) 複数のデータベースに格納されています。データベースは、ファイル (IRIS.DAT ファイル) です。InterSystems IRIS は、ユーザが使用するための一連のネームスペースとデータベースを提供し、ユーザは追加のネームスペースとデータベースを定義できます。
ネームスペースでは、以下のオプションを使用できます。
-
ネームスペースには、コードを格納するための既定のデータベースがあります。これが、そのネームスペースのルーチン・データベースです。
ネームスペースでコードを作成する場合、他の考慮事項がない限り、コードはそのルーチン・データベースに格納されます。同様に、ユーザがコードを呼び出す場合、他の考慮事項がない限り、InterSystems IRIS によってそのデータベースでコードが検索されます。
-
ネームスペースには、作成した永続クラスとグローバルのデータを格納するための既定のデータベースもあります。これが、そのネームスペースのグローバル・データベースです。
したがって、例えば、ユーザがデータに (任意の方法で) アクセスする場合、他の考慮事項がない限り、InterSystems IRIS によってそのデータベースからそれが取得されます。
グローバル・データベースはルーチン・データベースと同じデータベースでもかまいませんが、多くの場合、別のデータベースにした方が管理の面で便利です。
-
ネームスペースには、一時的なストレージ用の既定のデータベースがあります。
-
ネームスペースには、他のデータベースに格納されている追加のデータとコードへのアクセスを提供するマッピングを含めることができます。具体的には、既定以外のデータベースに格納されているルーチン、クラス・パッケージ、グローバル全体、および特定のグローバル・ノードを参照するマッピングを定義できます。(これらの種類のマッピングは、それぞれ、ルーチン・マッピング、パッケージ・マッピング、グローバル・マッピングおよび添え字レベル・マッピングと呼ばれます。)
マッピングを使用してデータベースへのアクセスを提供する場合は、そのデータベースの一部のみに対するアクセスを提供します。ネームスペースから、そのデータベースのマップされていない部分へは、読み取り専用方式でもアクセスできません。
また、マッピングを定義するときは、それがネームスペースの構成にのみ作用することを理解してください。それによって、コードやデータの現在の場所が変わることはありません。したがって、マッピングを定義するときは、コードやデータ (存在する場合) を、その現在の場所から、ネームスペースによって予期される場所に移動することも必要です。
マッピングの定義は、データベース管理タスクです。クラスやテーブル定義、あるいはアプリケーション・ロジックを変更する必要はありません。
-
作成するネームスペースはどれでも、InterSystems IRIS コード・ライブラリの大部分にアクセスできます。このコードを使用できるのは、InterSystems IRIS によって、ユーザが作成するネームスペース専用のマッピングが自動的に確立されるためです。
このドキュメントでは、これらのクラスのいくつかについて述べました。特定の用途のツールを見つけるには、"インターシステムズ・プログラミング・ツールの索引" を使用してください。
-
ネームスペースを定義する場合、相互運用対応になるように定義できます。つまり、対象のネームスペースにプロダクションを定義できるということです。プロダクションとは、InterSystems IRIS の相互運用機能を使用して複数の個別ソフトウェア・システムを統合するプログラムです。詳細は、"相互運用プロダクションの概要" を参照してください。
マッピングは、データとコードを共有するための便利で強力な手段を提供します。どのデータベースも、複数のネームスペースから使用できます。例えば、このページで後述する、すべての顧客ネームスペースからアクセスできるいくつかのシステム・データベースがあります。
ネームスペースの構成は、定義した後に変更でき、InterSystems IRIS は、1 つのデータベースから別のデータベースにコードとデータを移動するためのツールを備えています。したがって、必要であれば、開発中にコードとデータを再編成することができます。これにより、(スケーリングなど) InterSystems IRIS アプリケーションの再構成が簡単に実行できます。
ロック、グローバル、およびネームスペース
グローバルには複数のネームスペースからアクセスできるため、InterSystems IRIS は、グローバルのロック・メカニズム用に、自動クロスネームスペースのサポートを提供しています。特定のグローバルに対するロックは、そのグローバルを格納しているデータベースを使用するすべてのネームスペースに自動的に適用されます。
データベースの基本事項
InterSystems IRIS データベースは IRIS.DAT ファイルです。データベースは、管理ポータルを使用して作成します。また、既存の InterSystems IRIS データベースがある場合は、それが認識されるように InterSystems IRIS を構成できます。
データベース構成
どのデータベースに対しても、InterSystems IRIS では、以下の構成詳細が必要です。
追加のオプションは以下のとおりです。
-
このデータベースによって使用されるファイル・ストリームに使用するための既定のディレクトリ。
このディレクトリへの書き込みアクセスがユーザに必要となるため、これは重要です。書き込みアクセスできない場合、コードでファイル・ストリームを作成できなくなります。
-
新しいグローバルの照合。
-
初期サイズと他の物理的特徴。
-
ジャーナリング を有効または無効にするオプション。ジャーナリングは、クラッシュ後の最新状態リカバリやシステム・リカバリ中のデータのリストアのために、InterSystems IRIS データベースに行われた変更を記録します。
多くの場合、ジャーナリングを有効にすると役立ちます。ただし、指定された一時作業領域に対しては、ジャーナリングを無効にする場合があります。例えば、IRISTEMP データベースはジャーナリングしません。
-
読み取り専用として使用するためにこのデータベースをマウントするオプション。
読み取り専用データベースにグローバルを設定しようとすると、InterSystems IRIS によって <PROTECT> エラーが返されます。
多くの場合、システムが実行している間に、データベースの属性を作成、消去、または修正できます。
データベースの特徴
各データベースで、InterSystems IRIS は、実際のデータとデータ編成メタデータの両方に対して物理的整合性を保証します。この整合性は、データベースへの書き込み中にエラーが発生した場合でも保証されます。
データベースは、手動で操作しなくても、必要に応じて自動的に拡張されます。特定のデータベースのサイズの増大が予想され、どれくらい大きくなるのか判別できる場合は、その初期サイズを、予想される最終的なサイズに近い値に設定することで“事前に拡張”できます。そのようにすると、パフォーマンスが向上します。
InterSystems IRIS には、高可用性と復元可能性を実現するいくつかの方法があります。これには、以下のものがあります。
InterSystems IRIS は、複数のシステム間で、データ、アプリケーション・ロジック、および処理を分散するテクノロジを備えています。これは、ECP (エンタープライズ・キャッシュ・プロトコル) と呼ばれます。マルチサーバ・システムでは、InterSystems IRIS データベース・サーバのネットワークは共有リソースとして構成でき、それらの間でデータをシームレスに分散して、データ・ストレージとアプリケーションの処理を共有できます。これにより、高い拡張性と、自動フェイルオーバーおよびリカバリが実現されます。
データベースの移植性
InterSystems IRIS データベースは、複数のプラットフォーム間およびバージョン間で移植可能ですが、以下の注意事項があります。
システム提供データベース
InterSystems IRIS には、以下のデータベースが用意されています。
-
IRISLIB — これは、読み取り専用データベースであり、オブジェクト、データ型、ストリーム、コレクション・クラス、および多数の他のクラス定義が含まれます。また、システム・インクルード・ファイル、生成された INT コード (大部分のクラスの場合)、および生成された OBJ コードも含まれます。
-
ENSLIB — これは、読み取り専用データベースであり、InterSystems IRIS の相互運用機能に必要な追加コードが含まれます。こういった機能とは、具体的には、個別のソフトウェア・システムを統合するプロダクションを作成する機能です。
作成したネームスペースが相互運用対応の場合、そのネームスペースからこのデータベース内のコードにアクセスできます。
-
IRISSYS (システム管理者用データベース) — このデータベースには、システム管理に関連するユーティリティおよびデータが含まれています。これは、ユーザ固有のカスタム・コードおよびデータを格納することと、更新時にそのコードおよびデータを保持することを目的としています。
このデータベースには、以下が含まれます (含めることができます)。
-
ユーザやロールなどのセキュリティ要素 (事前定義項目とユーザが追加する項目の両方)。
セキュリティ上の理由により、管理ポータルでは、このデータは他のデータとは異なる扱いになります。例えば、ユーザとそのパスワードのテーブルは表示できません。
-
NLS (各国言語サポート) クラスが使用するデータ (数の形式、文字のソート順序、その他の詳細)。追加のデータをロードできます。
-
独自のコードおよびデータ。更新時にこれらの項目が保持されるようにするには、IRISSYS データベースおよびカスタム項目の名前付け規約を使用します。
Caution:
IRISSYS データベースの移行、置き換え、または削除はサポートされていません。
このデータベースが配置されるディレクトリは、システム管理者用ディレクトリです。メッセージ・ログ (messages.log) は、他のログ・ファイルと同様に、このディレクトリに書き込まれます。
-
IRISAUDIT — イベントの記録を有効にすると、InterSystems IRIS によって監査データがこのデータベースに書き込まれます。
-
IRISTEMP — これは、InterSystems IRIS によって一時ストレージ用に使用され、ユーザも同じ用途に使用できます。具体的には、このデータベースには一時グローバルが含まれています。詳細は、"グローバルの使用法" の "一時グローバルと IRISTEMP データベース" を参照してください。
-
IRISLOCALDATA — InterSystems IRIS によって内部で使用されるアイテム (キャッシュされた SQL クエリや CSP セッション情報など) が含まれます。
Note:
顧客アプリケーションが IRISLOCALDATA データベースと直接やり取りすることのないようにしてください。このデータベースは、純粋に InterSystems IRIS での内部使用を目的としています。
IRISSYS のその他の詳細は、"リソースの使用による資源の保護" を参照してください。
%SYS ネームスペース
%SYS ネームスペースは、一部のネームスペースでのみ使用可能なコード (セキュリティ要素、サーバ構成などを操作するコード) へのアクセスを提供します。
このネームスペースの場合、既定のルーチン・データベースおよび既定のグローバル・データベースは、IRISSYS です。特定の名前付け規約に従う場合、独自のコードとグローバルをこのネームスペースに作成し、それを IRISSYS データベースに格納できます。
IRISSYS データベースおよびカスタム項目
IRISSYS データベースに項目を作成できます。InterSystems IRIS アップグレードをインストールすると、このデータベースがアップグレードされます。このアップグレード中に、カスタム項目の名前付け規約に従っていないと、いくつかの項目が削除されます。
項目が上書きされないようにこのデータベースにコードまたはデータを追加するには、以下のいずれかを実行します。
-
%SYS ネームスペースに移動し、項目を作成します。このネームスペースの場合、既定のルーチン・データベースおよび既定のグローバル・データベースは、どちらも IRISSYS です。以下の名前付け規約を使用して、項目がアップグレード・インストールの影響を受けないようにします。
-
クラス : パッケージを Z または z で始めます。
-
ルーチン : 名前を Z、z、%Z、または %z で始めます。
-
グローバル : 名前を ^Z、^z、^%Z、または ^%z で始めます。
-
どのネームスペースでも、以下の名前で項目を作成します。
Note:
%ZEN* や %ZHSLIB* など、いくつかの %Z ルーチン名の使用はインターシステムズによって予約済みです。
ネームスペースの標準マッピングにより、これらの項目は IRISSYS に書き込まれます。
MAC コードとインクルード・ファイルはアップグレードによる影響を受けません。
ネームスペースで何にアクセス可能か
ネームスペースを作成すると、システムによってそのネームスペースに対するマッピングが自動的に定義されます。その結果、そのネームスペース内で以下の項目を使用できるようになります (これらの項目に対する適切な許可を所持するユーザとしてログインした場合)。
-
パッケージ名がパーセント記号 (%) で始まるクラス。これには、InterSystems IRIS で提供されるクラスの大部分が含まれますが、すべてではありません。
-
このネームスペース用のルーチン・データベースに格納されているすべてのコード。
-
このネームスペース用のグローバル・データベースに格納されているすべてのデータ。
-
名前がパーセント記号で始まるルーチン。
-
名前がパーセント記号で始まるインクルード・ファイル。
-
名前がキャラットおよびパーセント記号 (%) で始まるグローバル。このようなグローバルは、一般的にパーセント・グローバルと呼ばれます。グローバル・マッピングまたは添え字レベル・マッピングを使用すれば、パーセント・グローバルを格納する場所を変更できますが、これらの表示には影響しません。パーセント・グローバルはすべてのネームスペースで常に表示されます。
-
^IRIS.TempUserで始まる名前を持つユーザ自身のグローバル。例えば、^IRIS.TempUser.MyApp。そのようなグローバルを作成すると、それらのグローバルは IRISTEMP データベースに書き込まれます。
-
ネームスペースが相互運用対応の場合、Ens パッケージおよび EnsLib パッケージでコードを使用できます。CSPX パッケージと EnsPortal パッケージも表示されますが、これらのパッケージは直接使用することを意図されていません。
ネームスペースが相互運用対応の場合、そのネームスペースにプロダクションを定義できます。詳細は、"相互運用プロダクションの概要" を参照してください。
-
このネームスペースで定義されたマッピングによって使用可能になる追加のコードまたはデータ。
コードは、拡張されたグローバル参照を使用して、他のネームスペースで定義されたグローバルにアクセスできます。詳細は、"グローバルの使用法" の "グローバル構造" を参照してください。
InterSystems IRIS のセキュリティ・モデルは、あらゆるユーザがどのデータにアクセスできるか、およびどのコードにアクセスできるかを制御します。
ネームスペースのシステム・グローバル
ネームスペースには、追加のシステム・グローバルが含まれ、それらは大まかに以下の 2 つのカテゴリに分類されます。
-
すべてのネームスペースに存在するシステム・グローバル。これらには、InterSystems IRIS によってユーザのルーチン、クラス定義、インクルード・ファイル、INT コード、および OBJ コードが格納されるグローバルが含まれます。
-
特定の InterSystems IRIS 機能を使用するときに作成されるシステム・グローバル。例えば、ネームスペースで Analytics を使用する場合、独自の内部使用のためにシステムによって一連のグローバルが作成されます。
ほとんどの場合、これらのグローバルは、いずれも手動で書き込みしたり削除しないでください。"グローバルの使用法" の "グローバルの名前付け規約" を参照してください。
システム・ディレクトリ
どのネームスペースでも、ファイル・ストリームを作成すると、InterSystems IRIS によって既定のディレクトリにファイルが書き込まれ、それが後で削除されます。
このディレクトリへの書き込みアクセスがユーザに必要となるため、これは重要です。書き込みアクセスできない場合、コードでファイル・ストリームを作成できなくなります。
既定のディレクトリは、そのネームスペースのグローバル・データベースの stream サブディレクトリです。
詳細
このページで説明したトピックの詳細は、以下を参照してください。