DB2 には、サーバー上で実行するさまざまな機能があります。 それらの機能を使用して、アプリケーションを補足したり、 拡張したりすることができます。 DB2 機能を使用する場合、 同じ作業を行うために独自のコードを作成する必要はありません。 また DB2 では、 クライアント・アプリケーションに全コードを保持するのではなく、 サーバーにコードの一部を保管します。 これにより、パフォーマンスが向上し、 保守が容易になります。
データの保護、およびデータ間の相互関係を定義する機能があります。 さらに、柔軟な拡張アプリケーションを作成する、 オブジェクト関連の機能もあります。 機能の中には、 複数の方法で使用できるものもあります。 たとえば、 制約はデータの保護と、データ値間の相互関係の定義に使用できます。 主な DB2 機能を以下にリストします。
DB2 機能を使用するかどうか決定する場合、 以下の点を考慮してください。
DB2 機能は複数のアプリケーションで使用できるため、 ときには、サーバー上で実行する DB2 機能を使用することがあるかもしれません。 その一方で、 自分のアプリケーションだけが論理を使用するため、 それを自分のアプリケーションに保持してしまう場合もあります。
データを保護したり、データ間の相互関係を定義する場合、 通常は内部規則を定義します。 これらの規則では、 表の列で有効なデータ値や、 複数の表内の列がお互いにどのように関連付けられているかを定義します。
DB2 が提供する制約は、 データベース・システムを使用してこれらの規則を施行するという方法です。 データベース・システムを使用して内部規則を施行することにより、 アプリケーションでコードを作成し、内部規則を施行する必要がなくなります。 ただし、内部規則が 1 つのアプリケーションだけに適用される場合、 グローバル・データベース制約を使用するのではなく、 アプリケーションでコーディングを行わなければなりません。
DB2 は以下の種類の制約を提供しています。
SQL ステートメント CREATE TABLE および ALTER TABLE を使用して、 制約を定義します。
データベース内の各データ要素は表の列に保管され、 各列はデータ・タイプを持つように定義されます。 データ・タイプは列に入れることができる値のタイプと、 その値に対して実行できる操作を制限します。 たとえば、データ・タイプが整数である列に入れることができるのは、 決められた範囲内の数字だけです。 DB2 には、特性と振る舞いが定義されている、 組み込みデータ・タイプ (文字ストリング、数値、日時値、ラージ・オブジェクト、 ヌル、漢字ストリング、2 進ストリング、 およびデータ・リンク) のセットが含まれています。
しかし、 組み込みデータ・タイプではアプリケーションの必要を満たさない場合もあります。 DB2 が提供しているユーザー定義タイプ (UDT) を使用すれば、 アプリケーションが必要とする特殊なデータ・タイプを定義できます。
UDT は組み込みデータ・タイプに基づいています。 UDT を定義する場合、 その UDT に有効な操作も定義します。 たとえば、 DECIMAL データ・タイプに基づいて、 MONEY というデータ・タイプを定義することができます。 しかし、MONEY データ・タイプで行える操作は加算と減算だけで、 乗算と除算の操作は行えません。
ラージ・オブジェクト (LOB) を使用すれば、 データベース内の大きくて複雑なオブジェクト (音声、 ビデオ、画像、および大きい文書など) を保管したり、 操作したりすることができます。
UDT と LOB を組み合わせると、非常に便利です。 内部データをモデル化したり、 そのデータのセマンティクスを取り込んだりする際に、 DB2 が提供している組み込みデータ・タイプを使用するように制限されることがなくなります。 UDT を使用して、拡張アプリケーションで使用する、 大きくて複雑なデータ構造体を定義することができます。
組み込みデータ・タイプの拡張に加えて、 UDT には他に以下の利点があります。
多くの場合、 アプリケーションはネットワークを介してデータベースにアクセスします。 このため、たくさんのデータが戻されると、 パフォーマンスが低下します。 ストアード・プロシージャーはデータベース・サーバーで実行します。 クライアント・アプリケーションはストアード・プロシージャーを呼び出すことができます。 ストアード・プロシージャーはデータベースへのアクセスを実行しますが、 その際にネットワークを介して必要のないデータを戻すことはありません。 クライアント・アプリケーションが必要とする結果だけが、 ストアード・プロシージャーによって戻されます。
ストアード・プロシージャーの使用には以下の利点があります。
アプリケーションがストアード・プロシージャーを呼び出すと、 ストアード・プロシージャーで定義した規則に従って、 整合性が確保される方法でデータが処理されます。 規則を変更しなければならない場合、 変更は、ストアード・プロシージャーを呼び出すアプリケーションごとに行うのではなく、 ストアード・プロシージャー内で一度行うだけで済みます。
SQL で提供されている組み込み機能では、 アプリケーションの必要すべてを満たせない場合があります。 それらの機能を拡張するために、 DB2 はユーザー定義関数 (UDF) をサポートしています。 Visual Basic、C/C++、または Java で独自のコードを作成し、 単一のスカラー値または表を戻す SQL ステートメント内で操作を実行することができます。
UDF により柔軟性が著しく向上します。 UDF は選択リストの一部としてデータベースから単一のスカラー値を戻すことができます。 また、スプレッドシートなどの、 非データベース・ソースから表全体を戻すこともできます。
UDF を使用することにより、 アプリケーションを標準化することができます。 ユーザー定義関数の共通セットを実装することにより、 複数のアプリケーションが同じ方法でデータを処理できるので、 整合性のある結果を確実に入手できます。
また、ユーザー定義関数は、 アプリケーション内のオブジェクト指向プログラミングをサポートしています。 UDF は抽象化を提供しており、 これによりデータ・オブジェクトへの操作を実行するのに使用できるメソッドを定義することができます。 さらに、 UDF が提供しているカプセル化を使用すれば、 オブジェクトの基本データへのアクセスを制御したり、 直接操作や起きるかもしれない破壊からオブジェクトを保護することができます。
Microsoft OLE DB は、 さまざまな情報ソースに保管されているデータへの一様なアクセスをアプリケーションに提供する、 OLE/COM インターフェースのセットです。 DB2 ユニバーサル・データベースは、 OLE DB データ・ソースにアクセスする表関数を定義できるようにすることにより、 OLE DB アプリケーションの作成を単純化しています。 GROUP BY、JOIN、および UNION を含む操作を、 OLE DB によってデータを公開しているデータ・ソースに対して実行することができます。 たとえば、 Microsoft Access データベースまたは Microsoft Exchange アドレス帳から表を戻す OLE DB 表関数を定義し、 その OLE DB 表関数からのデータと、 DB2 データベース内のデータとを完全に結合させることができます。
OLE DB 表関数を使用すると、 OLE DB Provider への組み込みアクセスが提供されるため、 アプリケーション開発に費やす労力が軽減されます。 データを取り出すために、 開発者は、C、Java、および OLE オートメーション表関数の場合は、 その表関数を実装し、OLE DB 表関数の場合は、 任意の OLE DB Provider との汎用組み込み OLE DB 消費者インターフェースを実装しなければなりません。 その際に必要なのは、 言語タイプ OLEDB の表関数を登録し、 OLE DB Provider と、 関係のある行セットをデータ・ソースとして参照することだけです。 OLE DB 表関数を使用するために、 なんらかの UDF プログラミングを行う必要はありません。
OLE (オブジェクトのリンクと埋め込み) オートメーションは、 Microsoft Corporation による OLE 2.0 アーキテクチャーの一部です。 OLE を使用すれば、アプリケーションの作成に使用した言語に関係なく、 そのアプリケーションで OLE オートメーション・オブジェクトのプロパティーおよびメソッドを公開できます。 そうすると、 Lotus Notes や Microsoft Exchange などの他のアプリケーションが、 OLE オートメーションを介してこれらのプロパティーおよびメソッドを利用することにより、 これらのオブジェクトを統合することができます。
DB2 (Windows 32 ビット版) は、 UDF およびストアード・プロシージャーを使用する、 OLE オートメーション・オブジェクトへのアクセスを提供しています。 OLE オートメーション・オブジェクトにアクセスし、 そのメソッドを呼び出すには、 そのオブジェクトのメソッドを UDF またはストアード・プロシージャーとして登録しなければなりません。 その場合、DB2 アプリケーションは UDF またはストアード・プロシージャーを呼び出すことによって、 メソッドを呼び出します。 UDF はスカラー関数または表関数にできます。
たとえば、 Microsoft Excel などの製品を使用して作成した、 スプレッドシート内のデータを照会するアプリケーションを開発できます。 このようなアプリケーションを開発する場合、 ワークシートからデータを取り出し、DB2 に戻す、 OLE オートメーション表関数を開発します。 そうすると、 DB2 はそのデータを処理し、 オンライン分析処理 (OLAP) を実行して、 照会結果をアプリケーションに戻します。
トリガーは、 指定した表に対する削除、挿入、 または更新操作によって実行されるアクションのセットを定義します。 そのような SQL 操作の実行時に、 トリガーが活動化されるように指示が出されます。 トリガーの活動化は、 SQL 操作の前と後のどちらでも実行することができます。 トリガーは SQL ステートメント CREATE TRIGGER を使用して定義します。
更新または挿入の前に実行するトリガーは、 以下のいくつかの用途に使用できます。
同様に、更新または挿入の後に実行するトリガーは、 以下のいくつかの用途に使用できます。
トリガーの使用には以下の利点があります。
アプリケーションを開発する際に、 さまざまなツールを使用できます。 DB2 ユニバーサル・データベースは、 アプリケーションでの SQL ステートメントの作成とテスト、 およびパフォーマンスのモニターを行うのに役立つ、 以下のツールを提供しています。
注: | すべてのツールがすべてのプラットフォーム上で使用可能であるとは限りません。 |
コントロール・センター
データベース・オブジェクト (データベース、表、およびパッケージなど) とそれらの相互関係を表示するグラフィカル・インターフェース。 システムの構成、ディレクトリーの管理、システムのバックアップと回復、 ジョブのスケジューリングおよびメディアの管理などの管理用タスクを実行するには、 コントロール・センターを使用してください。
コントロール・センターには、以下の機能が組み込まれています。
パフォーマンス・モニター
コントロール・センターのインストール可能オプション。 パフォーマンス・モニターは、包括的なパフォーマンス・データ収集、 表示、報告、分析、およびアラート機能を DB2 システムに提供する、 グラフィカル・インターフェースです。 パフォーマンス・モニターは、パフォーマンスの調整に使用します。
スナップショットかイベントをモニターするよう選択することができます。 スナップショット・モニターを使用すれば、 指定した間隔で特定時の情報を取り込むことができます。 イベント・モニターを使用すれば、 接続などのイベント中のパフォーマンス情報を記録することができます。
Visual Explain
コントロール・センターのインストール可能オプション。 Visual Explain は、SQL ステートメントの最適化プログラムが選択したアクセス・プランの表示を含め、 SQL ステートメントの分析と調整を行うことができるグラフィカル・インターフェースです。
DB2 ストアード・プロシージャーの迅速な開発をサポートする GUI ベースのツール。 ワークステーションから OS/390 に至る範囲の DB2 ファミリーに、単一の開発環境を提供します。 Windows 32 ビット・オペレーティング・システムでは、 一般的なアプリケーション開発ツール、Microsoft Visual Studio、 Microsoft Visual Basic、および IBM VisualAge Age for Java から立ち上げるか、 または IBM DB2 ユニバーサル・データベース・プログラム・グループから個別のアプリケーションとして立ち上げることができます。 以下のファイルを実行することによって開始することもできます。
%DB2PATH%\bin\DB2SPB.exe
ここで、%DB2PATH% は、 DB2 がインストールされているディレクトリーを示しています。
AIX および Solaris では、ストアード・プロシージャー・ビルダーは、 db2spb コマンドで開始できます。