アプリケーション構築の手引き

DB2 機能

DB2 には、サーバー上で実行するさまざまな機能があります。 それらの機能を使用して、アプリケーションを補足したり、 拡張したりすることができます。 DB2 機能を使用する場合、 同じ作業を行うために独自のコードを作成する必要はありません。 また DB2 では、 クライアント・アプリケーションに全コードを保持するのではなく、 サーバーにコードの一部を保管します。 これにより、パフォーマンスが向上し、 保守が容易になります。

データの保護、およびデータ間の相互関係を定義する機能があります。 さらに、柔軟な拡張アプリケーションを作成する、 オブジェクト関連の機能もあります。 機能の中には、 複数の方法で使用できるものもあります。 たとえば、 制約はデータの保護と、データ値間の相互関係の定義に使用できます。 主な DB2 機能を以下にリストします。

DB2 機能を使用するかどうか決定する場合、 以下の点を考慮してください。

アプリケーションの独立性
アプリケーションを、それが処理するデータから独立させることができます。 データベース上で実行する DB2 機能を使用すれば、 アプリケーションに影響を与えることなくデータに使用する論理を保守したり、変更したりすることができます。 その論理を変更しなければならない場合、 変更を行うのはサーバーだけで、 データにアクセスする各アプリケーションでは変更を行う必要はありません。

パフォーマンス
サーバー上にアプリケーションの一部を保管し、実行することにより、 アプリケーションのパフォーマンスを向上させることができます。 これにより、いくつかの処理を、 一般により強力なサーバー・マシンに移し、 クライアント・アプリケーションとサーバーの間のネットワーク通信量を減らすことができます。

アプリケーション要件
ご使用のアプリケーションが、 他のアプリケーションとは異なる独自の論理を使用している場合があります。 たとえば、 ご使用のアプリケーションが、 他のアプリケーションでは適切ではない特定の順序でデータ入力エラーを処理する場合、 そのような状況を処理するために独自のコードを作成する必要があります。

DB2 機能は複数のアプリケーションで使用できるため、 ときには、サーバー上で実行する DB2 機能を使用することがあるかもしれません。 その一方で、 自分のアプリケーションだけが論理を使用するため、 それを自分のアプリケーションに保持してしまう場合もあります。

制約

データを保護したり、データ間の相互関係を定義する場合、 通常は内部規則を定義します。 これらの規則では、 表の列で有効なデータ値や、 複数の表内の列がお互いにどのように関連付けられているかを定義します。

DB2 が提供する制約は、 データベース・システムを使用してこれらの規則を施行するという方法です。 データベース・システムを使用して内部規則を施行することにより、 アプリケーションでコードを作成し、内部規則を施行する必要がなくなります。 ただし、内部規則が 1 つのアプリケーションだけに適用される場合、 グローバル・データベース制約を使用するのではなく、 アプリケーションでコーディングを行わなければなりません。

DB2 は以下の種類の制約を提供しています。

  1. NOT NULL 制約
  2. UNIQUE 制約
  3. PRIMARY KEY 制約
  4. FOREIGN KEY 制約
  5. CHECK 制約

SQL ステートメント CREATE TABLE および ALTER TABLE を使用して、 制約を定義します。

ユーザー定義タイプ (UDT) およびラージ・オブジェクト (LOB)

データベース内の各データ要素は表の列に保管され、 各列はデータ・タイプを持つように定義されます。 データ・タイプは列に入れることができる値のタイプと、 その値に対して実行できる操作を制限します。 たとえば、データ・タイプが整数である列に入れることができるのは、 決められた範囲内の数字だけです。 DB2 には、特性と振る舞いが定義されている、 組み込みデータ・タイプ (文字ストリング、数値、日時値、ラージ・オブジェクト、 ヌル、漢字ストリング、2 進ストリング、 およびデータ・リンク) のセットが含まれています。

しかし、 組み込みデータ・タイプではアプリケーションの必要を満たさない場合もあります。 DB2 が提供しているユーザー定義タイプ (UDT) を使用すれば、 アプリケーションが必要とする特殊なデータ・タイプを定義できます。

UDT は組み込みデータ・タイプに基づいています。 UDT を定義する場合、 その UDT に有効な操作も定義します。 たとえば、 DECIMAL データ・タイプに基づいて、 MONEY というデータ・タイプを定義することができます。 しかし、MONEY データ・タイプで行える操作は加算と減算だけで、 乗算と除算の操作は行えません。

ラージ・オブジェクト (LOB) を使用すれば、 データベース内の大きくて複雑なオブジェクト (音声、 ビデオ、画像、および大きい文書など) を保管したり、 操作したりすることができます。

UDT と LOB を組み合わせると、非常に便利です。 内部データをモデル化したり、 そのデータのセマンティクスを取り込んだりする際に、 DB2 が提供している組み込みデータ・タイプを使用するように制限されることがなくなります。 UDT を使用して、拡張アプリケーションで使用する、 大きくて複雑なデータ構造体を定義することができます。

組み込みデータ・タイプの拡張に加えて、 UDT には他に以下の利点があります。

アプリケーション内のオブジェクト指向プログラミングのサポート
類似したオブジェクトを関連データ・タイプにグループ化できます。 これらのタイプには、 名前、内部表記、および特定の振る舞いを指定できます。 UDT を使用して、 新しいタイプの名前、および内部での表記方法を DB2 に知らせることができます。 LOB は新しいタイプの内部表記として使用できるものの 1 つで、 大きくて複雑なデータ構造体には最も適しています。

強力なタイプ指定およびカプセル化によるデータ保全性
強力なタイプ指定により、 特殊タイプで定義された関数と操作しかそのタイプには適用されません。 カプセル化により、 UDT の振る舞いは UDT に適用できる関数と操作によって確実に制限されます。 DB2 では、 UDT の振る舞いをユーザー定義関数 (UDF) の形式で指定できます。 UDF はユーザーの要件に幅広く適応するように作成できます。

データベース・マネージャーへの組み込みによるパフォーマンス
UDT は、組み込みデータ・タイプと同じ方法で内部的に表記されるため、 組み込みデータ・タイプと同じ有効なコードを共有して、 組み込み関数、比較演算子、索引、および他の関数を実装します。 例外は、LOB を使用する UDT です。 LOB は比較演算子および索引と併用することはできません。

ストアード・プロシージャー

多くの場合、 アプリケーションはネットワークを介してデータベースにアクセスします。 このため、たくさんのデータが戻されると、 パフォーマンスが低下します。 ストアード・プロシージャーはデータベース・サーバーで実行します。 クライアント・アプリケーションはストアード・プロシージャーを呼び出すことができます。 ストアード・プロシージャーはデータベースへのアクセスを実行しますが、 その際にネットワークを介して必要のないデータを戻すことはありません。 クライアント・アプリケーションが必要とする結果だけが、 ストアード・プロシージャーによって戻されます。

ストアード・プロシージャーの使用には以下の利点があります。

ネットワーク通信量が削減される
SQL ステートメントをグループ化することにより、 ネットワーク通信量を節約できます。 典型的なアプリケーションの場合、 SQL ステートメントごとに、ネットワークを介した 2 回のトリップが必要です。 SQL ステートメントをグループ化しておけば、 ステートメントのグループごとに、 ネットワークを介した 2 回のトリップを行うだけで済みます。 これにより、アプリケーションのパフォーマンスが向上します。

サーバー上にしかない機能へのアクセス
ストアード・プロシージャーは サーバー上でしか実行されないコマンド (LIST DATABASE DIRECTORY や LIST NODE DIRECTORY など) にアクセスできます。 これには、サーバー・マシンのメモリーおよびディスク・スペースが増加する場合があるという利点があります。 さらに、サーバーにインストールされている任意の追加ソフトウェアにアクセスすることもできます。

内部規則の施行
ストアード・プロシージャーを使用して、 複数のアプリケーションに共通の内部規則を定義できます。 これは、制約およびトリガーを使用する方法に加えて、 内部規則を定義する別の方法です。

アプリケーションがストアード・プロシージャーを呼び出すと、 ストアード・プロシージャーで定義した規則に従って、 整合性が確保される方法でデータが処理されます。 規則を変更しなければならない場合、 変更は、ストアード・プロシージャーを呼び出すアプリケーションごとに行うのではなく、 ストアード・プロシージャー内で一度行うだけで済みます。

ユーザー定義関数 (UDF)

SQL で提供されている組み込み機能では、 アプリケーションの必要すべてを満たせない場合があります。 それらの機能を拡張するために、 DB2 はユーザー定義関数 (UDF) をサポートしています。 Visual Basic、C/C++、または Java で独自のコードを作成し、 単一のスカラー値または表を戻す SQL ステートメント内で操作を実行することができます。

UDF により柔軟性が著しく向上します。 UDF は選択リストの一部としてデータベースから単一のスカラー値を戻すことができます。 また、スプレッドシートなどの、 非データベース・ソースから表全体を戻すこともできます。

UDF を使用することにより、 アプリケーションを標準化することができます。 ユーザー定義関数の共通セットを実装することにより、 複数のアプリケーションが同じ方法でデータを処理できるので、 整合性のある結果を確実に入手できます。

また、ユーザー定義関数は、 アプリケーション内のオブジェクト指向プログラミングをサポートしています。 UDF は抽象化を提供しており、 これによりデータ・オブジェクトへの操作を実行するのに使用できるメソッドを定義することができます。 さらに、 UDF が提供しているカプセル化を使用すれば、 オブジェクトの基本データへのアクセスを制御したり、 直接操作や起きるかもしれない破壊からオブジェクトを保護することができます。

OLE DB 表関数

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 オートメーション 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 ユニバーサル・データベース・ツール

アプリケーションを開発する際に、 さまざまなツールを使用できます。 DB2 ユニバーサル・データベースは、 アプリケーションでの SQL ステートメントの作成とテスト、 およびパフォーマンスのモニターを行うのに役立つ、 以下のツールを提供しています。
注:すべてのツールがすべてのプラットフォーム上で使用可能であるとは限りません。

コントロール・センター

データベース・オブジェクト (データベース、表、およびパッケージなど) とそれらの相互関係を表示するグラフィカル・インターフェース。 システムの構成、ディレクトリーの管理、システムのバックアップと回復、 ジョブのスケジューリングおよびメディアの管理などの管理用タスクを実行するには、 コントロール・センターを使用してください。

コントロール・センターには、以下の機能が組み込まれています。

コマンド・センター
対話式ウィンドウに DB2 コマンドや SQL ステートメントを入力したり、 結果ウィンドウに実行結果を表示するのに使用します。 結果をスクロールさせたり、出力をファイルに保管することができます。

スクリプト・センター
スクリプトを作成するのに使用します。 スクリプトは保管して後に起動することができます。 スクリプトには、DB2 コマンド、SQL ステートメント、 またはオペレーティング・システム・コマンドを入れることができます。 スクリプトが不在実行されるようスケジュールすることもできます。 これらのジョブは、一度だけ実行するか、 繰り返しスケジュールによって実行されるよう設定することができます。 繰り返しスケジュールは、バックアップなどのタスクの場合に特に役立ちます。

ジャーナル
次のタイプの情報を表示するのに使用します。 実行を保留しているか、実行中であるか、実行を完了したジョブに関するすべての入手可能な情報、 回復活動記録ログ、アラート・ログ、およびメッセージ・ログです。 また、ジャーナルを使用して、 不在実行されたジョブの結果を検討することもできます。

アラート・センター
潜在的な問題を早期に警告するようにシステムをモニターしたり、 問題を訂正するための処置を自動化するのに使用します。

ツール設定
コントロール・センター、アラート・センター、 および複製の設定を変更するのに使用します。

パフォーマンス・モニター

コントロール・センターのインストール可能オプション。 パフォーマンス・モニターは、包括的なパフォーマンス・データ収集、 表示、報告、分析、およびアラート機能を DB2 システムに提供する、 グラフィカル・インターフェースです。 パフォーマンス・モニターは、パフォーマンスの調整に使用します。

スナップショットかイベントをモニターするよう選択することができます。 スナップショット・モニターを使用すれば、 指定した間隔で特定時の情報を取り込むことができます。 イベント・モニターを使用すれば、 接続などのイベント中のパフォーマンス情報を記録することができます。

Visual Explain

コントロール・センターのインストール可能オプション。 Visual Explain は、SQL ステートメントの最適化プログラムが選択したアクセス・プランの表示を含め、 SQL ステートメントの分析と調整を行うことができるグラフィカル・インターフェースです。

ストアード・プロシージャー・ビルダー (SPB)

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 コマンドで開始できます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]