NULL
16.5 マルチデータベース
MAGIC.INIファイルのデータベース定義は、論理定義です。つまり、このデータベース定義は、dbMAGIC のアプ リケーションのビューと動作にだけ関係しており、実際のSQLデータベースとは無関係です。
MAGIC.INIファイルでは、同一のデータベースを事実上、複数のデータベースとして定義することができま
す。この定義は、次のようなときに必要になります。
■ データベースのテーブルに対して、二人のユーザからアクセスが実行されることがあります。この場 合、各ユーザでそれぞれ 、同じデータベース定義が必要になります。
■ 旧バージョンのdbMAGICで作成されたアプリケーションを使う場合、テーブルによってはdbMAGIC のロックメカニズムを、また別のテーブルではRDBMSのロックメカニズムを使う必要があります。こ ういった場合、同一のデータベースを複数のデータベースとして定義することが必要になります。と くに、dbMAGICのロックが行レベルのロックで、RDBMSのロックがページレベルのロックのときに は、2つのデータベース定義が必要です。この場合、dbMAGICのロックフラグを変えて2つのデータ ベース定義を行います。
マルチ接続
SQLゲートウェイでは、マルチ接続( 複数接続)がサポートされています。通常、MAGIC.INIファイルに定 義されているデータベースに対してはいずれも、同じ接続を使用してアクセスが実行されます。そのほか 、 既存の接続の定義(データベース名、ユーザ名、パスワード 、データベースサーバなど )を変更し 、その接 続を使用してアクセスすることも可能です。つまり、データベースに対して2つ目の接続を使用してアクセ スを実行することができます。
第 17 章 dbMAGIC のリポジト リ
章目次
17.1 [テーブル]リポジト リ: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :17–2 17.2 [カラム]テーブルと[カラム特性]ダイアログ : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :17–5 17.3 [ インデックス]テーブルと[ インデックス特性]ダイアログボックス : : : : : : : : : : : : : : : : : : :17–8 17.4 定義取得 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :17–10: 17.5 テーブルの修正 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :17–13:
第
17章 dbMAGIC のリポジトリ
データベースのメタデータの定義や管理は 、dbMAGICの[テーブル ]リポジト リを使うことで行えます。
[テーブル ]リポジトリとデータベースはリンクされており、[テーブル ]リポジトリで変更を行うと、その 変更がデータベースに伝えられます。ただし 、このリポジト リで実行できるのはデータ定義の管理だけで 、 データ自体の変更はできません。
また、データベースの構造の最適化やデータベースのパラメータの調整は、dbMAGICでは行えません。こ ういった処理は、外部ツールを使用してDBA(データベース管理者)が担当することになります。新規の テーブルはdbMAGICで作成できますが 、作成されたテーブルはご く基本的なもので 、その後、細部を調整 し 、使用環境に見合ったテーブルに仕上げることが必要です。したがって、場合によってはデータベース管 理者の協力も必要になります。
17.1 [テーブル]リポジトリ
[テーブル]リポジトリで定義したテーブルは論理定義で、dbMAGICのプログラムでだけ認識されます。こ のため、データベース側から見ると 、dbMAGICのテーブルはデータベースのテーブルのほか 、ビュー、シ ノニムなどであることもあります。このように、dbMAGICのテーブルとデータベースのテーブルには相違 があり、たとえば 、CREATE TABLEには各種のパラメータがありますが 、その全部がdbMAGICで指定で きるわけではありません。一方、同一のデータベースオブジェクトについて、dbMAGICでは複数のテーブ ルを定義することができます。
以下、[テーブル]リポジトリの欄について説明します。
名前
テーブルを示す簡単な名前で、この名前は 、dbMAGIC全体で使われます。名前は、任意のものを入力でき ます。
DB テーブル
データベースに定義されているテーブルの実際の名前です。この名前は、データベースによっては、書式に 制限があることもあります。たとえば 、Oracleでは 、この名前は30文字以内で、先頭は記号ではなく文字 でなければなりません。
データベースオブジェクトの正式名は、通常、「オーナー.テーブル名」または「データベース.オーナー.テー ブル名」の形式になります。このうちオーナー名は 、[テーブル特性]ダ イアログボックスで定義できます が 、このダ イアログボックスオーナー名と[DBテーブル ]欄のオーナー名は同じになります。
dbMAGICバージョン8では、これまでのバージョンと異なり、[テーブル]リポジトリに新規の行を追加し た際、[名前]欄の名前が自動的に、この[DBテーブル ]欄にコピーされます。この場合、[ 名前]欄の名 前に空白( 半角スペース)が入っていたときには、その空白が下線に置き換えられます。たとえば 、テーブ ル名が「my emp table」の場合、DBテーブル名は「my emp table」となります。なお、テーブル名は、独自 の命名規則を作り、その規則にしたがって付けると分かりやすくなります。
従来のバージョンのdbMAGICでは 、[DBテーブ ル ]欄を空白にし ておくと 、デフォルトの名前とし て
「XXFILL099」が使われました。ここで、「99」は、 [テーブル]リポジトリの行番号を表します。一方、db-MAGICバージョン8では、[DBテーブル ]欄は必ず設定しなければなりません。また、先頭には空白は置 けません。
テーブルの名前は、命名規則を決め、その規則にしたがって名前を作成すると便利です。
17
データベース
この欄には、DBMSの名前を指定します。DBMSの名前は、[データベース一覧]から選択できます。デー タベース一覧には、MAGIC.INIファイルに定義されているDBMSが表示されます。
図17.1:[テーブル特性]ダイアログ
欄 データ型 デフォルト 有効なゲート ウェイ
オーナー名 文字 なし すべて
位置 デフォルト、ユニークインデックス、
行IDのいずれか
デフォルト すべて インデックス 重複不可のインデックス番号 なし すべて テーブルの存在チェック Yes、No、デフォルトのいずれか デフォルト すべて テーブルのタイプ テーブル、ビューのいずれか テーブル すべて
ヒントフラグ YesまたはNo Yes Oracle、MS-SQL Server ヒント 文字(255) なし Oracle、MS-SQL Server カーソル デフォルト、Yes、Noのいずれか デフォルト MS-SQL Server
配列のサイズ 数値(4) 0 Oracle、MS-SQL Server
テーブル特性
常駐(N=なし:デフォルト )とキャッシュ範囲(D=位置とデータ:デフォルト )
[ 常駐]と「キャッシュ範囲」の各欄を使用して、それぞれ 、テーブルを常駐テーブルとするとか 、また、
テーブルをキャッシュに置くかど うかを指定できます。各欄の詳細は、「リファレンス」を参照してください。
テーブルを常駐あるいは 、キャッシュを使うことで、取り出されたデータがクライアントのメモリに格納さ れるようになり、SQLデータベースと通信量が減るため、処理速度が向上します。
SQLデータベース情報
この欄を使用して、RDBMSで必要とされる情報を指定できます。この情報は、dbMAGICによりRDBMS に送られます。この欄はオプションです。dbMAGIC 6、7で指定したフラグは、そのほとんどをこの欄で指 定できます。
フラグは、通常、「フラグ名=値」の形式で指定します。
SQLガ イド 17.1[テーブル ]リポジトリ 17–3
オーナー名
この欄にオーナーの名前を指定しておくと、そのオーナー名がテーブル名の接頭辞として追加されます。空 白にしておいたときには、オーナー名は追加されません。オーナー名を指定しなかったときには、デフォル トでは、指定されているユーザ名のユーザがオーナーであるオブジェクトが検索されます。その後、そのオ ブジェクトを使用してデータベースへの接続が実行されます。
位置
dbMAGICでは、DBMSの種類によってそれぞれ 、デフォルトで使われる位置キーが決まっています。Oracle の場合、ROWIDが使われます。これ以外のRDBMSでは、最小のユニークインデックスが使用されます。こ のデフォルトは、変更することもできます。ユニークインデックスやROWIDについては、第19章の「一意 性の識別」の節に詳細があります。この[ 位置]欄の値は、できるだけ「デフォルト 」にしておきます。
インデックス
dbMAGICのデフォルトのインデックスを使わない場合、この欄でユニークインデックスを選択できます。
デフォルト 位置
この欄には、デフォルトの位置インデックスが表示されます。この欄は参照用で、値を変更することはでき ません。
テーブルの存在チェック
この欄には、[DBMS特性]ダ イアログボックスの[テーブルの存在チェック]欄の値が表示されます。新規 のテーブルを作成すると、[DBMS特性]ダ イアログボックスの[テーブルの存在チェック]欄の値が 、この 欄にコピーされます。なお、この値は変更することもできます。
注意:
この欄の値を「No」にしておくと、データベースにテーブルが作成されなくなります。これは、データ ベースにすでにテーブルが存在していると判断されるためです。プログラムを配布するときには、この 欄は「No」にしておきます。これで、処理速度が向上します。
値をYesにしておくと、チェックが実行され 、テーブルが見つからなかったときにはdbMAGICにより 自動的にテーブルが作成されます。
テーブルのタイプ
この欄には、テーブルの種類として「ビュー」または「テーブル」のど ちらかを指定できます。「ビュー」に した場合、DBDEL()とDBCOPY()の2つの関数は使用できなくなります。これは、「ビュー」ではテーブ ルは作成されず、そのため、DBDEL()によるテーブルの削除、DBCOPY()によるテーブルのコピーは無効 になります。
ヒント
ヒントフラグ( 左側のボックス)に「Yes」を指定すると 、ヒント文字列( 右側のボックス)を入力できる ようになります。なお、ヒント文字列を空白にしておいたときには、データベースに指定されているヒント 文字列が使われます。ヒントフラグの値を「No」にしておくと、このテーブルについてはヒントは使われま せん。
Oracle、MS-SQL Serverの場合、この欄を使用して、オプティマイザのヒント文字列を指定することができま す。指定したヒント文字列は、SELECTステート メントに追加され、このステート メントを使用してdbMAGIC のデータビューが作成されます。なお、ヒントはdbMAGICによりチェックされることはありません。その ため、構文エラーがないように指定しなければなりません。なお、MS-SQL Serverでは、ヒント文字列とし てFORCE INDEXを入力できますが 、この場合、自動的に所定の構文が使われ 、オプティマイザで強制的に インデックスが使用されるようになります。ヒント文字列については、詳しくは、MS-SQL Serverのマニュ アルを参照してください。この欄は、必要なときに限って使うようにします。