効果的なスキル
このページでは、プログラマが実行方法を理解していると効果的な特定のタスクについて簡単に説明します。ここで説明するタスクを実行する方法、条件、理由に精通していれば作業時間と作業量を節減できます。
データベースの定義
ローカル・データベースを作成するには以下の手順に従います。
-
管理ポータルにログインします。
-
[システム管理]→[構成]→[システム構成]→[ローカルデータベース] を選択します。
-
[新規データベース作成] を選択し、データベース・ウィザードを開始します。
-
新規データベースに関する以下の情報を入力します。
-
テキスト・ボックスにデータベース名を入力します。普通は英数字を使用した短い文字列を指定します。ルールの詳細は、"データベースの構成" を参照してください。
-
ディレクトリ名を入力するか、[参照] を選択してデータベース・ディレクトリを選択します。作成する最初のデータベースである場合は、データベースの作成先とする親ディレクトリを参照して選択する必要があります。他のデータベースを既に作成している場合は、最後に作成したデータベースの親ディレクトリが既定のデータベース・ディレクトリになります。
-
-
[完了] を選択します。
リモート・データベースの作成に関する追加のオプションと詳細は、"システム情報の構成" を参照してください。
ネームスペースの定義
ローカル・データベースを使用するネームスペースを作成するには以下の手順に従います。
-
管理ポータルにログインします。
-
[システム管理]→[構成]→[システム構成]→[ネームスペース] を選択します。
-
[新規ネームスペース作成] を選択します。
-
[名前] にネームスペース名を入力します。普通は英数字を使用した短い文字列を指定します。ルールの詳細は、"ネームスペースの構成" を参照してください。
-
[グローバルのための既存のデータベースを選択] でデータベースを選択するか、[新規データベース作成] を選択します。
[新規データベース作成] を選択すると、データベースを作成する場合と同様のオプションが表示されます。
-
[ルーチンのための既存のデータベースを選択] でデータベースを選択するか、[新規データベース作成] をクリックします。
[新規データベース作成] を選択すると、データベースを作成する場合と同様のオプションが表示されます。
-
[保存] を選択します。
追加のオプションの詳細は、"システム情報の構成" を参照してください。
グローバルのマッピング
データベース ABC にグローバルをマッピングする場合、各自のネームスペースで既定のデータベースではないデータベース ABC に対して InterSystems IRIS がこのグローバルを読み書きできるように、所定のネームスペースを構成します。このグローバル・マッピングを定義すると、グローバルが既に存在している場合、指定のデータベースにはそのグローバルが移動しなくなります。以降は、グローバルを読み書きする場所がマッピングから InterSystems IRIS に指示されます。
グローバルをマッピングするには以下の手順に従います。
-
グローバルが既に存在する場合は、それを目的のデータベースに移動します。"1 つのデータベースから別のデータベースへのデータの移動" を参照してください。
-
管理ポータルにログインします。
-
[システム管理]→[構成]→[システム構成]→[ネームスペース] を選択します。
-
このマッピングの定義先とする、ネームスペースの行で [グローバルマッピング] を選択します。
-
[新規グローバルマッピング] を選択します。
-
[グローバルデータベース位置] で、このグローバルを格納するデータベースを選択します。
-
[グローバル名] に入力します (先頭のキャレットは省略します)。* 文字を使用して複数のグローバルを選択できます。
このグローバルは、マッピングの時点で存在していなくてもかまいません (つまり、これから作成するグローバルの名前を使用できます)。
Note:一般的には永続クラスのデータ・グローバルのマッピングを作成します。そのデータを既定以外のデータベースに格納するからです。多くの場合、データ・グローバルの名前は推測できますが、名前が長すぎると、ハッシュ化した形式のクラス名が自動的に使用される点に留意してください。これらのクラスのストレージ定義を確認して、そのクラスで使用されるグローバルの正確な名前を把握しておくことは無駄ではありません。"ストレージ" を参照してください。
-
[OK] をクリックします。
-
マッピングを保存するには [変更を保存] をクリックします。
詳細は、"システム管理ガイド" を参照してください。
また、グローバル・マッピングをプログラムで定義することもできます。"インターシステムズ・プログラミング・ツールの索引" のグローバルのエントリを参照してください。
以下の図は、管理ポータルに表示したグローバル・マッピングの例です。ここでは、グローバル名先頭のキャレットが表示されていません。
このマッピングは以下の処理を表しています。
-
ネームスペース DEMONAMESPACE で、グローバル ^MyTempGlobal のノードの値を設定する場合は CACHETEMP データベースにデータが書き込まれます。
そのノードを直接設定するか、オブジェクト・クラスまたは SQL を介して間接的に設定するかに関係なく、この動作になります。
-
ネームスペース DEMONAMESPACE で、グローバル ^MyTempGlobal から値を取得する場合は CACHETEMP データベースからデータが読み取られます。
そのノードの値を直接取得するか、オブジェクト・クラスまたは SQL を介して間接的に取得するかに関係なく、この動作になります。
ルーチンのマッピング
データベース ABC にルーチンをマッピングする場合、各自のネームスペースで既定のデータベースではないデータベース ABC で InterSystems IRIS がこのルーチンを探し出すことができるように、所定のネームスペースを構成します。このルーチン・マッピングを定義すると、ルーチンが既に存在している場合、指定のデータベースにはそのルーチンが移動しなくなります。以降は、ルーチンを探す場所がマッピングから InterSystems IRIS に指示されます。
ルーチンをマッピングするには以下の手順に従います。
-
ルーチンが既に存在する場合は、それをエクスポートしてインポートすることにより、目的のデータベースにそのルーチンをコピーします。
-
管理ポータルにログインします。
-
[システム管理]→[構成]→[システム構成]→[ネームスペース] を選択します。
-
このマッピングの定義先とする、ネームスペースの行で [ルーチンマッピング] を選択します。
-
[新規ルーチンマッピング] を選択します。
-
[ルーチンデータベース位置] で、このルーチンを格納するデータベースを選択します。
-
[ルーチン名] に値を入力します。* 文字を使用して複数のルーチンを選択できます。
実際のルーチン名を使用します。つまり、ルーチン名の先頭にはキャレット (^) を記述しません。
このルーチンは、マッピングの時点で存在していなくてもかまいません (つまり、これから作成するルーチンの名前を使用できます)。
-
[ルーチンタイプ] を選択します。
-
[OK] をクリックします。
-
[OK] をクリックします。
-
マッピングを保存するには [変更を保存] をクリックします。
詳細は、"システム管理ガイド" を参照してください。
この種類のマッピングをプログラムで定義することもできます。また、ルーチン・マッピングをプログラムで定義することもできます。"インターシステムズ・プログラミング・ツールの索引" のルーチンのエントリを参照してください。
1 つ以上のルーチンをマップするときには、それらのルーチンが必要とするすべてのコードとデータを必ず特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを確認します。マップされるルーチンは、以下の項目に依存している可能性があります。
-
インクルード・ファイル
-
その他のルーチン
-
クラス
-
テーブル
-
グローバル
追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。
パッケージのマッピング
データベース ABC にパッケージをマッピングする場合、各自のネームスペースで既定のデータベースではないデータベース ABC で、InterSystems IRIS がこのパッケージのクラス定義を探し出すことができるように、所定のネームスペースを構成します。このクラス定義に関連付けて生成したルーチンにも、このマッピングが適用されます。これらのルーチンは同じパッケージに存在します。このマッピングは、これらのパッケージで永続クラスに関連して格納されているデータの場所には影響しません。
また、このパッケージ・マッピングを定義すると、パッケージが既に存在している場合、指定のデータベースにはそのパッケージが移動しなくなります。以降は、パッケージを探す場所がマッピングから InterSystems IRIS に指示されます。
パッケージをマッピングするには以下の手順に従います。
-
パッケージが既に存在する場合は、それをエクスポートしてインポートすることにより、目的のデータベースにそのパッケージをコピーします。
-
管理ポータルにログインします。
-
[システム管理]→[構成]→[システム構成]→[ネームスペース] を選択します。
-
このマッピングの定義先とする、ネームスペースの行で [パッケージマッピング] を選択します。
-
[新規パッケージマッピング] を選択します。
-
[パッケージデータベース位置] で、このパッケージを格納するデータベースを選択します。
-
[パッケージ名] に値を入力します。
このパッケージは、マッピングの時点で存在していなくてもかまいません (つまり、これから作成するパッケージの名前を使用できます)。
-
[OK] をクリックします。
-
[OK] をクリックします。
-
マッピングを保存するには [変更を保存] をクリックします。
詳細は、"システム管理ガイド" を参照してください。
この種類のマッピングをプログラムで定義することもできます。また、パッケージ・マッピングをプログラムで定義することもできます。"インターシステムズ・プログラミング・ツールの索引" のパッケージのエントリを参照してください。
パッケージをマップするときには、そのパッケージ内のクラスが必要とするすべてのコードとデータを特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを必ず確認します。マップされるクラスは、以下の項目に依存している可能性があります。
-
インクルード・ファイル
-
ルーチン
-
その他のクラス
-
テーブル
-
グローバル
追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。
テスト・データの生成
InterSystems IRIS は、永続クラスで使用する擬似ランダム・テスト・データを作成するユーティリティを備えています。このようなデータの作成をデータ生成と呼び、データ生成を実行するユーティリティを Populate ユーティリティと呼びます。大量のデータを扱っている場合、アプリケーションのさまざまな部分がどのように機能するかをテストする場合に、このユーティリティが特に効果的です。
Populate ユーティリティは、%Library.PopulateOpens in a new tab と %Library.PopulateUtilsOpens in a new tab の 2 つのクラスで構成されます。これらのクラスは、さまざまな一般的な形式のデータを生成するメソッドを提供します。例えば、ランダム名を生成する以下のメソッドがあります。
Write ##class(%Library.PopulateUtils).Name()
以下の 2 つの方法で Populate ユーティリティを使用できます。
%Populate の拡張
この方法では以下の手順を実行します。
-
使用するクラスのスーパークラス・リストに %PopulateOpens in a new tab を追加します。
-
必要に応じて、クラスの各プロパティの POPSPEC パラメータに値を指定します。
このパラメータの値には、プロパティ値としての使用に適した値を返すメソッドを指定します。
以下に例を示します。
Property SSN As %String(POPSPEC = "##class(MyApp.Utils).MakeSSN()");
-
適切な順序 (先に独立クラス、次に依存クラス) でデータを生成するユーティリティ・メソッドまたはルーチンを作成します。
このコードで、クラスを生成するには、そのクラスの Populate() メソッドを実行します。このメソッドは %PopulateOpens in a new tab スーパークラスから継承します。
このメソッドによって、目的のクラスのインスタンスが生成され、%Save() メソッドを呼び出すことで保存されます。これにより、各プロパティを検証してから保存できます。
プロパティごとに、このメソッドによって次のように値が生成されます。
-
プロパティに POPSPEC パラメータを指定している場合は、このメソッドが呼び出され、返された値が使用されます。
-
そのように指定していない場合、プロパティ名が City、State、Name などの事前定義された値であれば、その値に適したメソッドが呼び出されます。これらの値はハードコーディングされています。
-
上記以外の場合はランダムな文字列が生成されます。
%PopulateOpens in a new tab クラスでシリアル・プロパティやコレクションなどがどのように扱われるかの詳細は、"Populate ユーティリティの使用" を参照してください。
-
-
ターミナルからユーティリティ・メソッドを呼び出します。適切な任意の起動コードから呼び出す場合もあります。
これは、SAMPLES データベースの Sample.Person に使用する一般的な方法です。
%Populate および %PopulateUtils のメソッドの使用
%PopulateOpens in a new tab クラスと %PopulateUtilsOpens in a new tab クラスは、特定の形式の値を生成するメソッドを提供します。以下に示す代替のデータ生成手法では、これらのメソッドを直接呼び出すことができます。
-
適切な順序 (先に独立クラス、次に依存クラス) でデータを生成するユーティリティ・メソッドを作成します。
このコードでは、各クラスに対して目的の回数だけ繰り返し処理が実行されます。繰り返し処理ごとに、以下の手順を実行します。
-
新しいオブジェクトを作成します。
-
適切なランダム値 (または、ランダムに近い値) を使用して各プロパティを設定します。
そのためには、%PopulateOpens in a new tab または %PopulateUtilsOpens in a new tab のメソッドを使用するか、独自に作成したメソッドを使用します。
-
オブジェクトを保存します。
-
-
作成したユーティリティ・メソッドをターミナルから呼び出します。
これは SAMPLES データベースの 2 つの DeepSee サンプルに使用する方法です。このサンプルは、DeepSee パッケージと HoleFoods パッケージにあります。
格納したデータの削除
開発プロセスでは、クラスの既存のテスト・データをすべて削除してから再生成することが必要になる場合があります (ストレージ定義を削除した場合など)。
クラスの保存済みデータを簡単に削除できる 2 つの方法を以下に示します (さらに別の方法もあります)。
-
以下のクラス・メソッドを呼び出します。
##class(%ExtentMgr.Util).DeleteExtent(classname)
classname は、完全なパッケージとクラス名です。
-
クラスのデータとクラスのインデックスが格納されているグローバルを削除します。以下のように管理ポータルから実行する方が簡単な場合もあります。
-
[システムエクスプローラ]→[グローバル] を選択します。
-
[削除] を選択します。
-
左側で、作業中のネームスペースを選択します。
-
右側で、データ・グローバルとインデックス・グローバルの横にあるチェック・ボックスにチェックを付けます。
-
[削除] を選択します。
これらのグローバルを削除してもよいかどうか確認を求められます。
-
これらのオプションによってデータは削除されますが、クラス定義は削除されません(逆にクラス定義を削除しても、データは削除されません)。
ストレージのリセット
開発段階でストレージをリセットできることは重要ですが、ライブ・システムでストレージをリセットすることはありません。
クラスのストレージをリセットすると、クラスがその保存済みデータにアクセスする方法が変わります。クラスに保存済みデータがある場合に、プロパティ定義を削除、追加、または変更してからストレージをリセットすると、その保存済みデータに正しくアクセスできなくなることがあります。したがって、ストレージをリセットする場合は、そのクラスの既存のデータもすべて削除し、必要に応じてそれを再生成または再ロードする必要があります。
IDE でクラスのストレージをリセットするには以下の手順に従います。
-
クラスを表示します。
-
クラス定義の末尾までスクロールします。
-
ストレージ定義全体 (<Storage name= から </Storage> まで) を選択します。選択した内容を削除します。
-
クラスを保存し、リコンパイルします。
テーブルの参照
テーブルを参照するには、管理ポータルで以下の手順を実行します。
-
[システムエクスプローラ]→[SQL] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
[スキーマ] ドロップダウン・リストから必要に応じて SQL スキーマを選択します。このリストには、このネームスペースにある SQL スキーマがすべて表示されます。各スキーマは、最上位のクラス・パッケージに相当します。
-
このスキーマのすべてのテーブルを表示するには [テーブル] フォルダを展開します。以下に例を示します。
-
テーブルの名前を選択します。右側の領域に、そのテーブルに関する情報が表示されます。
-
[テーブルを開く] を選択します。
このテーブルの先頭から 100 行が表示されます。以下に例を示します。
以下の点に注意してください。
-
ここに表示される値は、表示値であり、ディスクに格納されている論理値ではありません。
-
最初の列 (#) は、表示されている順番による行番号です。
-
2 番目の列 ([ID]) は、このテーブルの行に対する一意の識別子であり、このクラスのオブジェクトを開くときは、この識別子を使用します(このクラスではこれらの識別子は整数ですが、整数ではないこともあります)。
このテーブルは、SAMPLES データベースが構築されるたびに新しく生成されるため、この場合、これらの番号は同一になっています。実際のアプリケーションでは、いくつかのレコードが削除されていることがあります。その場合は [ID] の値が不連続になり、左の行番号と一致しなくなります。
-
SQL クエリの実行
SQL クエリを実行するには、管理ポータルで以下の手順を実行します。
-
[システムエクスプローラ]→[SQL] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
[クエリ実行] を選択します。
-
入力ボックスに SQL クエリを入力します。以下に例を示します。
select * from sample.person
-
ドロップダウン・リストで、[表示モード]、[論理モード]、または [ODBC モード] を選択します。
これにより、ユーザ・インタフェースに結果をどのように表示するかを制御します。
-
次に [実行] を選択します。ポータルに結果が表示されます。以下に例を示します。
オブジェクト・プロパティの検証
ターミナルでオブジェクトを開いて特定のプロパティ名を入力することで、そのプロパティの値を最も容易に表示できることがあります。
-
ターミナル・プロンプトが目的のネームスペースの名前ではない場合は、以下のように入力して Enter キーを押します。
ZN "namespace"
namespace は、目的のネームスペースの名前です。
-
以下のようなコマンドを入力して、このクラスのインスタンスを開きます。
set object=##class(package.class).%OpenId(ID)
package.class はパッケージおよびクラスの名前で、ID はクラスに保存したオブジェクトの ID です。
-
以下のように入力してプロパティの値を表示します。
write object.propname
propname は、表示する値を収めたプロパティの名前です。
グローバルの表示
一般的にグローバルを表示するには、ObjectScript の ZWRITE コマンドまたは管理ポータルの [グローバル] ページを使用します。クラスのデータを収めたグローバルを探す場合は、まずクラス定義を確認して、表示するグローバルを把握しておくと効果的です。
-
特定のクラスのデータ・グローバルを探していて、そのクラスのデータがどのグローバルに格納されるかわからない場合は、以下の手順を実行します。
-
IDE でクラスを表示します。
-
クラス定義の末尾までスクロールします。
-
<DefaultData> 要素を探します。<DefaultData> と </DefaultData> の間の値が、このクラスのデータを格納しているグローバルの名前です。
InterSystems IRIS では、このようなグローバルの名前を決定する際に簡潔な命名規則が使用されます。詳細は、"永続クラスによって使用されるグローバル" を参照してください。ただし、グローバル名は最大 31 文字 (先頭のキャレットを除く) であることから、完全なクラス名が長い場合、代わりにハッシュ化した形式のグローバル名が自動的に使用されます。
-
-
管理ポータルで、[システムエクスプローラ]→[グローバル] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
このネームスペースに存在するグローバルのリストがポータルに表示されます (それぞれの名前では先頭のキャレットが省略されていることがわかります)。以下に例を示します。
通常、システム・グローバルではないほとんどのグローバルは永続クラスのデータを格納しています。つまり、システム・グローバルを表示しない限り、ほとんどのグローバルは見慣れた名前のグローバルです。
-
目的のグローバルの行で [表示] を選択します。
このグローバルの先頭から 100 個のノードが表示されます。以下に例を示します。
-
目的のオブジェクトのみとなるように表示を絞り込むには、[グローバル検索マスク] フィールドで、グローバル名の末尾に (ID) (オブジェクトの ID) を付加します。以下に例を示します。
^Sample.PersonD(45)
続いて [表示] を選択します。
前述のように、ZWRITE コマンドを使用することもできます。このコマンドの省略形である "ZW" を使用することもできます。ターミナルで以下のようにコマンドを入力します。
zw ^Sample.PersonD(45)
クエリのテストとクエリ・プランの表示
コードで実行するクエリを管理ポータルでテストできます。そこからクエリ・プランを表示することもできます。クエリ・プランでは、クエリ・オプティマイザでクエリがどのように実行されるかに関する情報が得られます。この情報を使用して、クラスにインデックスを追加する必要があるか、別の方法でクエリを記述する必要があるかなどを判断できます。
クエリ・プランを表示するには、管理ポータルで以下の手順を実行します。
-
[システムエクスプローラ]→[SQL] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
[クエリ実行] を選択します。
-
入力ボックスに SQL クエリを入力します。以下に例を示します。
select * from sample.person
-
ドロップダウン・リストで、[表示モード]、[論理モード]、または [ODBC モード] を選択します。
これにより、ユーザ・インタフェースに結果をどのように表示するかを制御します。
-
クエリをテストするには [実行] を選択します。
-
クエリ・プランを表示するには [プラン表示] を選択します。
クエリ・キャッシュの表示
InterSystems SQL では、埋め込み SQL として使用する場合を除き、データにアクセスするための再使用可能なコードが生成され、そのコードがクエリ・キャッシュに配置されます (埋め込み SQL では、再使用可能なコードは生成されますが、生成された INT コードの中に保持されます)。
その SQL 文を初めて実行すると InterSystems IRIS によってクエリが最適化され、データを取得するコードが生成されて格納されます。このコードは、最適化されたクエリ・テキストと共にクエリ・キャッシュに格納されます。このキャッシュは、OBJ コードのキャッシュであり、データのキャッシュではありません。
後で SQL 文を実行すると、InterSystems IRIS によって最適化され、そのクエリのテキストとクエリ・キャッシュの項目が比較されます。InterSystems IRIS によって、格納されているクエリが、指定されたクエリと一致していると判断された場合 (空白などのわずかな相違を除く)、そのクエリに対して格納されているコードが使用されます。
管理ポータルでは、クエリ・キャッシュの項目がスキーマ別にグループ化されます。特定のスキーマのクエリ・キャッシュを表示するには、管理ポータルで以下の手順を実行します。
-
[システムエクスプローラ]→[SQL] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
[クエリキャッシュ] フォルダを展開します。
-
そのスキーマの行で [テーブル] リンクを選択します。
-
ページの先頭にある [クエリキャッシュ] を選択します。
ポータルには以下のように表示されます。
このリストの各項目は OBJ コードです。
既定では、この OBJ コードよりも前に生成されたルーチンと INT コードは保存されません。そのように生成されたコードも保存することを InterSystems IRIS に指示できます。"InterSystems SQL の設定" を参照してください。
クエリ・キャッシュは削除できます (これにより InterSystems IRIS で強制的にこのコードが再生成されます)。クエリ・キャッシュを削除するには、[アクション]→[クエリキャッシュ削除] を使用します。
インデックスの構築
InterSystems IRIS クラスでは、インデックスのメンテナンスは不要です。ただし 1 つの例外として、このクラスのレコードを格納した後でインデックスを追加した場合は、インデックスを構築する必要があります。
そのためには、以下の操作を実行します。
-
[システムエクスプローラ]→[SQL] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
左側の領域でテーブルを選択します。
-
[アクション]→[インデックス再構築] を選択します。
テーブルのチューニング機能の使用
特定の SQL クエリを実行する最も効率的な方法をクエリ・オプティマイザが決定するときに、さまざまな要因の中でも特に以下の各項目が考慮されます。
-
テーブルにあるレコードの数
-
クエリで使用される列の場合、それらの列がどの程度一意であるか
この情報は、特定のテーブルでテーブルのチューニング機能を実行している場合にのみ得られます。この機能はこのデータを計算して、その結果をクラスの <ExtentSize> 値および保存されているプロパティの <Selectivity> 値として、クラスのストレージ定義と共に保存します。
テーブルのチューニング機能を使用するには以下の手順に従います。
-
[システムエクスプローラ]→[SQL] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
左側の領域でテーブルを選択します。
-
[アクション]→[テーブルチューニング] を選択します。
<Selectivity> の値については、データの性質が変化していない限り、この処理を再度実行する必要はありません。<ExtentSize> の値は正確な値である必要はありません。この値は、さまざまなテーブルのスキャンに要する相対コストを比較するときに使用します。ExtentSize の相対値がテーブルどうしで正確であることが最も重要です (つまり、小さいテーブルの値は小さく、大きいテーブルの値は大きくなる必要があります)。
1 つのデータベースから別のデータベースへのデータの移動
1 つのデータベースから別のデータベースへデータを移動する必要がある場合は、以下の手順を実行します。
-
データおよびそのインデックスを収めているグローバルを特定します。
クラスで使用されるグローバルが不明である場合は、クラスのストレージ定義を確認します。"ストレージ" を参照してください。
-
これらのグローバルをエクスポートします。そのためには、以下の操作を実行します。
-
管理ポータルで、[システムエクスプローラ]→[グローバル] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
エクスポートするグローバルを選択します。
-
[エクスポート] を選択します。
-
グローバルのエクスポート先とするファイルを指定します。絶対パス名または相対パス名によるファイル名をフィールドに入力するか、[参照] を選択して目的のファイルに移動します。
-
[エクスポート] を選択します。
.gof を拡張子とするファイルにグローバルがエクスポートされます。
-
-
これらのグローバルを他のネームスペースにインポートします。そのためには、以下の操作を実行します。
-
管理ポータルで、[システムエクスプローラ]→[グローバル] を選択します。
-
必要に応じ、ヘッダ領域に表示されている現在のネームスペースの名前を選択して、目的のネームスペースを選択します。
-
[インポート] を選択します。
-
インポートするファイルを指定します。ファイル名を入力するか、[参照] を選択して目的のファイルに移動します。
-
[次へ] を選択して、ファイルの内容を表示します。指定したファイルのグローバルに関する情報のテーブルが表示されます。このテーブルには、各グローバルの名前、それがローカル・ネームスペースまたはデータベースに存在するかどうか、存在する場合は最後に変更されたのはいつかなどの情報が一覧表示されます。
-
このテーブルにあるチェック・ボックスを使用して、インポートするグローバルを選択します。
-
[インポート] を選択します。
-
-
"格納したデータの削除" の説明に従い、最初のデータベースに戻ってグローバルを削除します。