News FrontBase WebObjects Business About US
 Top > FrontBase > 日本語ドキュメント関係 > FrontBase 2.26-関係 > FrontBase Extensions to SQL 92

The Scalable Relational Database Server

(SQL92に対する、FrontBaseの拡張機能)

SQL92は、広範囲にわたる言語であるが、必要とする拡張機能は、数種類であることがわかっている。それらのすべてについて、以下で説明しよう:

ユーザ管理

   CREATE USER <user name> [ DEFAULT SCHEMA <schema name> ];

ユーザを、指定したユーザ名で作成する。すなわち、 INFORMATION_SCHEMA.USERS に、1行追加するのである。たとえ、ユーザがCONNECTステートメント経由でデータベースに接続しているときでも、デフォルト・スキーマが確保される(これは、CURRENT_SCHEMA経由で調べられるのだ)。デフォルトのスキーマ名が与えられていない場合、ユーザ名が作成されたときに、ユーザ名と同じ綴りが、デフォルトのスキーマ名と仮定される。

   DROP USER <user name> RESTRICT | CASCADE;

INFORMATION_SCHEMA.USERSから、指定された既存のユーザ名を削除する。RESTRICTが指定され、ユーザが1つもしくは複数のスキーマを所有している場合、エラーメッセージが返され、コマンド実行は失敗する。CASCADEが指定された場合は、ユーザが所有するスキーマに対し、DROP SCHEMA <schema name< CASCADE の順に実行される。

   SET DEFAULT SCHEMA <schema name> FOR USER <user name>;
   ALTER USER <user name> SET DEFAULT SCHEMA <schema name>;


既存のユーザに対し、デフォルトのスキーマを設定したり、変更を施す(CREATE USER 参照)。

上記のステートメントはすべて、トランザクションを開始するものである。すなわち、他のユーザに対し見えるようにするには、COMMITが必要となる。

インデックス管理

   CREATE INDEX  [<index name>] FOR | ON <table name> (<column name list>);

既存のテーブルや列に対し、インデックスを作成する。テーブルに対して作成できるインデックスの数字に制約はない。インデックス定義に含めうる列数にも上限はない。<index name>は、インデックスが後で外されるような場合に必要となる。 カレント・ユーザは、指定されたテーブルを含むスキーマの、オーナーでなければならない。

インデックスは、まさにあなたが待っている間に作成される。このステートメントの実行は、いくつの行やテーブルに対して実行するかによっては、時間がかかるかもしれない。

CREATE INDEX経由で作成されたインデックスは、SELECTを最適化するためだけに使われることを覚えておいてほしい。すなわち、これらのインデックスは、管理上の制約をまったく受けないのだ。

   DROP INDEX <index name>;

指定されたインデックスを外す。カレント・ユーザは、該当するインデックスを含むスキーマの、オーナーでなければならない。

既存のSQLアプリケーションを移植するときの手助けになるよう、以下のことも説明しておこう:

   CREATE UNIQUE INDEX [<index name>] FOR | ON <table name> 
         (<column name list>);

これは、次と同じ意味を持つ:

   ALTER TABLE <table name> ADD [CONSTRAINT <index name>]
         UNIQUE (<column name list>) INITIALLY IMMEDIATE NOT DEFERRABLE;

上記のステートメントはすべて、トランザクションを開始するものである。すなわち、他のユーザに対し見えるようにするには、COMMITが必要となる。

テーブルキャッシュ管理

   ALTER TABLE <table name> SET CACHE ([<lower>], [<upper>], [<percent>]);

既存のテーブルに対し、キャッシュ・パラメータを設定したり調整する。<lower>および<upper>は、行の絶対番地として与えられる。すなわち、サーバは、<lower>で与えられる最小行と、<upper>で与えられる最大行をメモリ中に保存する。デフォルトは、<lower>に対し2.000、<upper>に対して20.000である。<percent>の値は、<upper>の値を守った上で、キャッシュに残す行数をサーバに示すものである。<percent>のデフォルトの値は20である。.

   ALTER TABLE <table name> SET CACHE PRESERVE FALSE | TRUE;

既存のテーブルに対するキャッシュを(TRUE)にするよう、サーバに指示を出す。たとえ、そのテーブルに対する参照が何もなくても、である。FALSEは、既存のテーブルに対し、まったく参照関係がないとき、サーバがキャッシュを破棄する場合である。
   ALTER TABLE <table name> SET CACHE PREPARE FALSE | TRUE;

サーバに(TRUE)をロードするよう指示し、既存テーブルに対して、最初のキャッシングを行うと、そのテーブルが参照される。FALSEは、このキャッシュがロードされ、既存のテーブルが実際に使うよう、指示が出されたことを意味する。


上記のステートメントはすべて、トランザクションを開始するものである。すなわち、他のユーザに対し見えるようにするには、COMMITが必要となる。

テーブルと列の名称変更

   ALTER TABLE NAME <old table name> TO <new table name>;

table name のスペルにしたがって、正式に変更を施す。

   ALTER COLUMN NAME <table name>.<old column name> TO <new column name>;


column name のスペルにしたがって、正式に変更を施す。

トランザクション管理

   SET TRANSACTION ISOLATION LEVEL VERSIONED;


SQL92によって定義された、アイソレーション・レベルを追加する。FrontBaseは、このVERSIONEDと呼ばれるアイソレーション・レベルをサポートしている。このレベル付は、多くのユーザがデータベースからデータを取りだしたり、複数のユーザがデータベースを更新しているようなケースに役に立つ。行を取り出すだけのユーザは、更新が終了するまで待機させられることはないだろう。そのようなユーザがデータを入手するという作業は、データ更新の開始よりも、優先順位を高くしているからである。更新が一旦正しく行われたあとは、次回から、更新されたバージョンのデータが利用可能になる。

SET TRANSACTIONステートメントとは、ロック規則をオプション指定で拡張されたものである:

   SET TRANSACTION LOCKING REALISTIC | OPTIMISTIC | PESSIMISTIC;

バックアップ

   WRITE DATA [WITH TRANSACTION DATA];
稼動中のデータベースのバックアップを新たに作成する。このステートメントがエラー無しに実行完了すると、バックアップが済んだということである。実行結果ファイルは、/Local/Library/FrontBase/Backups/<database name>/B_<yymmdd>_<hhmmss>に収められる。バックアップは、元のデータベースについて可能な限り最新の情報を把握して作成される。継続中のトランザクションを含むロールフォワード(rollforward:restoreオペレーションによる接続)は、WITH TRANSACTION DATAオプションを指定したときのみ、問題なく完了することに注意。

   DROP TRANSACTION DATA;


トランザクション・データの生成を省略する(たとえば、WRITE DATA WITH TRANSACTION DATAを始めることにより)。これは、ロールフォワード可能なデータベースに関して、現時点(カレント)の状態にどれだけ近いかを制限するものである。

データベースのアップロード

   WRITE ALL OUTPUT ('<directory name >' [, 'YES' | 'NO']);


正式なSQL92ステートメントで、データベース全体を、schema.sqlと呼ばれるファイルに再度作成する。schema.sqlは、指定されたディレクトリに作成される。もし、OUTPUTに関して2つ目の変数を'YES'を指定すると、全テーブルは、フラット・ファイルにロードされないだろう。

ロードされていないデータベースを再構築するためには、新しいデータベースを作成する必要がある。それには、すなわち、_SYSTEMとして、FBDatabaseManageアプリケーション経由で接続し、schema.sqlというふぁいるを実行する。

その他

   SELECT UNIQUE FROM <table name>;
既存のテーブルに対し、プライマリ・キー(整数型)として使われる値を返す。

   SET UNIQUE FOR <table name> (<primary key column>);
次にSELECT UNIQUEを使うときに返される値を設定する。この値は、<table name> から SELECT MAX(<primary key column>)として計算される。

   SET UNIQUE = <unsigned number> FOR <table name>;
次にSELECT UNIQUEを使うときに返される値を設定する。

   CURRENT_CATALOG
カレント・カタログを、ストリング (VARCHAR)として返す。

   CURRENT_SCHEMA
カレント・スキーマを、ストリング (VARCHAR)として返す。

(c)Copyright 1999-2006 A10 all right reserved.