ネームスペースとデータベース
このページでは、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 では、以下の構成詳細が必要です。
-
データベースの論理名。
-
IRIS.DAT ファイルが配置されているディレクトリ。管理ポータルでデータベースを作成するときに、システム管理者用ディレクトリ (install-dir/Mgr) 内のサブディレクトリを選択するか作成するように求められますが、データベース・ファイルは、便利なディレクトリであればどこにでも格納できます。
Tip:論理名と、IRIS.DAT ファイルが格納されるディレクトリに同じ文字列を使用すると便利です。システム提供の InterSystems IRIS データベースは、この規則に従っています。
追加のオプションは以下のとおりです。
-
このデータベースによって使用されるファイル・ストリームに使用するための既定のディレクトリ。
このディレクトリへの書き込みアクセスがユーザに必要となるため、これは重要です。書き込みアクセスできない場合、コードでファイル・ストリームを作成できなくなります。
-
新しいグローバルの照合。
-
初期サイズと他の物理的特徴。
-
ジャーナリング を有効または無効にするオプション。ジャーナリングは、クラッシュ後の最新状態リカバリやシステム・リカバリ中のデータのリストアのために、InterSystems IRIS データベースに行われた変更を記録します。
多くの場合、ジャーナリングを有効にすると役立ちます。ただし、指定された一時作業領域に対しては、ジャーナリングを無効にする場合があります。例えば、IRISTEMP データベースはジャーナリングしません。
-
読み取り専用として使用するためにこのデータベースをマウントするオプション。
読み取り専用データベースにグローバルを設定しようとすると、InterSystems IRIS によって <PROTECT> エラーが返されます。
多くの場合、システムが実行している間に、データベースの属性を作成、消去、または修正できます。
データベースの特徴
各データベースで、InterSystems IRIS は、実際のデータとデータ編成メタデータの両方に対して物理的整合性を保証します。この整合性は、データベースへの書き込み中にエラーが発生した場合でも保証されます。
データベースは、手動で操作しなくても、必要に応じて自動的に拡張されます。特定のデータベースのサイズの増大が予想され、どれくらい大きくなるのか判別できる場合は、その初期サイズを、予想される最終的なサイズに近い値に設定することで“事前に拡張”できます。そのようにすると、パフォーマンスが向上します。
InterSystems IRIS には、高可用性と復元可能性を実現するいくつかの方法があります。これには、以下のものがあります。
-
ジャーナリング — 前述のとおりです。
-
ミラーリング — 2 つの InterSystems IRIS システム間における、迅速で、信頼性の高い、強固な自動フェイルオーバーを提供し、ミラーリングは企業にとって理想的な自動フェイルオーバー高可用性ソリューションとなります。
-
クラスタリング — クラスタリングを提供するオペレーティング・システムに対して、その完全なサポートを提供します。
InterSystems IRIS は、複数のシステム間で、データ、アプリケーション・ロジック、および処理を分散するテクノロジを備えています。これは、ECP (エンタープライズ・キャッシュ・プロトコル) と呼ばれます。マルチサーバ・システムでは、InterSystems IRIS データベース・サーバのネットワークは共有リソースとして構成でき、それらの間でデータをシームレスに分散して、データ・ストレージとアプリケーションの処理を共有できます。これにより、高い拡張性と、自動フェイルオーバーおよびリカバリが実現されます。
データベースの移植性
InterSystems IRIS データベースは、複数のプラットフォーム間およびバージョン間で移植可能ですが、以下の注意事項があります。
-
さまざまなプラットフォームで、ファイルはどれもビッグ・エンディアン (最上位のバイトが先頭) とリトル・エンディアン (最下位のバイトが先頭) のいずれかです。
InterSystems IRIS には、InterSystems IRIS データベースのバイト・オーダーを変換するユーティリティ cvendian があります。2 つのタイプのプラットフォーム間でデータベースを移動する際に役立ちます。
システム提供データベース
InterSystems IRIS には、以下のデータベースが用意されています。
読み取り専用データベースであり、InterSystems IRIS の相互運用機能に必要な追加コードが含まれます。この機能とは、具体的には、個別のソフトウェア・システムを統合するプロダクションを作成する機能です。
作成したネームスペースが相互運用対応の場合、そのネームスペースからこのデータベース内のコードにアクセスできます。
監査レコードに使用される読み取り/書き込みデータベース。具体的には、イベントの記録を有効にすると、InterSystems IRIS によって監査データがこのデータベースに書き込まれます。
オブジェクト、データ型、ストリーム、コレクション・クラス、および多数の他のクラス定義を含む、読み取り専用データベース。また、システム・インクルード・ファイル、生成された INT コード (大部分のクラスの場合)、および生成された OBJ コードも含まれます。
InterSystems IRIS によって内部で使用されるアイテム (キャッシュされた SQL クエリや CSP セッション情報など) を含む、読み込み/書き込みデータベース。
顧客アプリケーションが IRISLOCALDATA データベースと直接やり取りすることのないようにしてください。このデータベースは、純粋に InterSystems IRIS での内部使用を目的としています。
システム管理に関連したユーティリティおよびデータを含む、読み取り/書き込みデータベース。これは、ユーザ固有のカスタム・コードおよびデータを格納することと、更新時にそのコードおよびデータを保持することを目的としています。
このデータベースには、以下が含まれます (含めることができます)。
-
ユーザやロールなどのセキュリティ要素 (事前定義項目とユーザが追加する項目の両方)。
セキュリティ上の理由により、管理ポータルでは、このデータは他のデータとは異なる扱いになります。例えば、ユーザとそのパスワードのテーブルは表示できません。
-
NLS (各国言語サポート) クラスが使用するデータ (数の形式、文字のソート順序、その他の詳細)。追加のデータをロードできます。
-
独自のコードおよびデータ。更新時にこれらの項目が保持されるようにするには、"IRISSYS のカスタム項目" の名前付け規約を使用します。
IRISSYS データベースの移行、置き換え、または削除はサポートされていません。
このデータベースが配置されるディレクトリは、システム管理者用ディレクトリです。メッセージ・ログ (messages.log) は、他のログ・ファイルと同様に、このディレクトリに書き込まれます。
IRISSYS のその他の詳細は、"リソースの使用による資源の保護" を参照してください。
一時的なストレージに使用される読み取り/書き込みデータベース。これは InterSystems IRIS により使用されますが、ユーザも使用することができます。具体的には、このデータベースには一時グローバルが含まれています。詳細は、"一時グローバルと IRISTEMP データベース" を参照してしてください。
カスタム・コード用の、最初は空の読み取り/書き込みデータベース。このデータベースを使用する必要はありません。
IRIS for Health™ と HealthShare® にコードを提供するデータベース。その他の製品では利用できません。
HealthShare® 機能へのアクセスを提供するデータベース。HealthShare にのみ適用されます。その他の製品では利用できません。
InterSystems IRIS により内部的に使用される、一時的なストレージに使用される読み取り/書き込みデータベース。このデータベースがジャーナリングやミラーリングされることはなく、パブリック許可も付与されません。これは一時グローバルを格納するために使用されます。
顧客アプリケーションが HSSYSLOCALTEMP データベースと直接やり取りすることのないようにしてください。このデータベースは、純粋に InterSystems IRIS での内部使用を目的としています。
システム提供ネームスペース
InterSystems IRIS には、以下のネームスペースが用意されています。
特権システム・コードを実行することができるネームスペース。"%SYS ネームスペース" を参照してください。
カスタム・コード用の、最初は空のネームスペース。このネームスペースを使用する必要はありません。
相互運用プロダクションをサポートするよう構成されたネームスペース。つまり、このネームスペースは相互運用対応です。
IRIS for Health™ と HealthShare® の機能へのアクセスを提供するネームスペース。その他の製品では利用できません。
HealthShare® 機能へのアクセスを提供するネームスペース。HealthShare にのみ適用されます。その他の製品では利用できません。
HSSYSLOCALTEMP データベースへのアクセスを提供するネームスペース。
%SYS ネームスペース
%SYS ネームスペースは、一部のネームスペースでのみ使用可能なコード (セキュリティ要素、サーバ構成などを操作するコード) へのアクセスを提供します。
このネームスペースの場合、既定のルーチン・データベースおよび既定のグローバル・データベースは、IRISSYS です。特定の名前付け規約に従う場合、独自のコードとグローバルをこのネームスペースに作成し、それを IRISSYS に格納できます。"IRISSYS のカスタム項目" を参照してください。
ネームスペースで何にアクセス可能か
ネームスペースを作成すると、システムによってそのネームスペースに対するマッピングが自動的に定義されます。その結果、そのネームスペース内で以下の項目を使用できるようになります (これらの項目に対する適切な許可を所持するユーザとしてログインした場合)。
-
パッケージ名がパーセント記号 (%) で始まるクラス。これには、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 サブディレクトリです。
関連項目
このページで説明したトピックの詳細は、以下を参照してください。
-
"グローバルの使用法" には、拡張参照の使用を含む、グローバルの操作に関する情報が記載されています。
-
"cvendian を使用したビッグ・エンディアン・システムとリトル・エンディアン・システム間の変換" には、cvendian に関する情報が記載されています。
-
"高可用性ガイド" には、高可用性と復元可能性に関する情報が記載されています。
-
"スケーラビリティ・ガイド" には、分散キャッシングとシャーディングに関する情報が記載されています。