高信頼性が求められるシステムや24時間運用を行うシステムにおいては、データベースサーバの二重化やクラスタ化が必須となります。
データベースサーバの二重化やクラスタ化を実現するシステムにおいては、データベースサーバで発生した異常を迅速にリカバリする、またはデータベースサーバの資源配置に柔軟に対応するために、アプリケーションサーバ側でさまざまな対応を行う必要があります。
また、3階層モデルでは、アプリケーションとデータベースシステムが動作する環境が異なるため、各システムに異常が発生したときの対応も必要となります。
これらの問題は、Connection Managerを利用することで解決できます。Connection Managerを利用したシステムでは、高信頼でかつ柔軟な3階層モデルを容易に実現することができます。
Connection Managerの機能を説明します。
参照
Connection Managerの機能についての詳細は、“Connection Manager ユーザーズガイド”を参照してください。
コネクション自動切替えは、データベースサーバのダウンが発生した場合に、待機ノードまたは引継ぎノードにコネクションを再接続する機能です。
Connection Managerを利用しない場合、待機ノードへの切替えまたは引継ぎ先ノードへの縮退に対して、アプリケーションに再接続の処理を組み込む必要があります。再接続処理は、SQL文の実行でエラーを受け取り、データベースサーバの切替えまたは縮退の完了を待ち、CONNECT文の再実行という複雑な手順となります。コネクション自動切替え機能を利用すると、アプリケーションは、SQL文の実行でエラーを受信した際に、トランザクションを再実行するだけで自動的に待機ノードまたは引継ぎ先ノードでの処理継続を行うことができます。
コネクション自動削除は、アプリケーションサーバのダウンや通信回線の異常が発生した場合に、データベースサーバ上でアプリケーションサーバのダウンを監視し、ダウンを検知した場合に自動的にコネクションの回収を行う機能です。
データベースサーバは、アプリケーションサーバのアプリケーションからの要求に対してコネクションを生成し、データベースのアクセス結果をアプリケーションに通知します。通常、アプリケーションに異常が発生した場合には、コネクションで実行していたトランザクションはロールバックしコネクション自身も自動的に消滅します。しかし、アプリケーションサーバのダウンや通信回線の異常が発生した場合には、データベースサーバ内のコネクションはトランザクションを含めて残留し、そのトランザクションが握っているロックは解除されません。
この機能により、アプリケーションサーバ側で仕掛中のトランザクションを別のアプリケーションサーバで再実行した場合に、コネクションの回収待ちが発生しません。
データベースサーバがロードシェア運用を行っている場合、コネクション接続機能を利用できます。
Connection Managerのコネクション接続には、特定の資源の担当元ノードへ接続する方式と負荷分散する方式があります。特定のデータベース資源を対象とする業務の場合は、資源の担当元ノードへダイレクトにコネクションを接続することができます。複数のデータベース資源を対象とする業務の場合は、ノードごとの資源の偏在具合に応じて、資源の担当元ノードへ負荷分散してコネクションを接続することができます。
Connection Managerを利用し、データベースサーバを二重化した場合の例を以下に示します。
Connection Managerを利用することにより、アプリケーションで、接続先となるノードを意識する必要はありません。業務がアクセス対象とする資源の配置先ノードに、Connection Managerが自動的に接続します。
図5.31 Connection Manager