(57)【要約】  システムおよび方法は、アプリケーションサーバとクラスタ化されたデータベースとを接続するためのデータソースの使用をサポートすることができる。クラスタ化されたデータベースは、複数のデータベースインスタンスを含み、通知サービスに関連付けられる。通知サービスは、複数のデータベースインスタンスの状態変化を表わす通知を一斉送信するように、クラスタ化されたデータベースによって用いられることができる。データソースは、クラスタ化されたデータベース内の複数のデータベースインスタンスとの接続の組を管理する接続プールを含む。データソースは、クラスタ化されたデータベースの変化についての通知を受取るように通知サービスに登録するように動作し、アプリケーションサーバは、ランタイム時のクラスタ化されたデータベースの状態変化に従って、クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する。
2013541764.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションサーバとクラスタ化されたデータベースとの接続をサポートするためのシステムであって、
前記クラスタ化されたデータベース内の複数のデータベースインスタンスに関連付けられた通知サービス構成要素を備え、前記通知サービス構成要素は、前記クラスタ化されたデータベースの状態変化を表わす通知を一斉送信するように前記クラスタ化されたデータベースによって用いられ、前記システムはさらに、
前記アプリケーションサーバに関連付けられたデータソースを備え、データソースは、前記クラスタ化されたデータベース内の前記複数のデータベースインスタンスとの接続の組を管理する接続プールに関連付けられ、
前記データソースは、前記クラスタ化されたデータベースの変化についての通知を受取るように前記通知サービス構成要素に登録するように動作し、前記アプリケーションサーバは、ランタイム時の前記クラスタ化されたデータベースの状態変化に従って、前記クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する、システム。
【請求項２】
前記クラスタ化されたデータベースの状態変化は、
１つ以上のデータベースインスタンスが予定外の機能停止によって停止または除外されたこと、および
データベースインスタンスが機能停止後に追加または再起動されること、のうちの１つを含む、請求項１に記載のシステム。
【請求項３】
前記データソースは、データベース高速接続フェイルオーバ機能を準備するように動作し、データベースインスタンスとの前記接続の各々が有効であることを確実にするようにデータベースサービスイベントに応答する、請求項１または２に記載のシステム。
【請求項４】
前記データソースは、メトリクスを用いて、前記アプリケーションサーバが行なう動作をモニタリングするように動作する、請求項１から３のいずれか１項に記載のシステム。
【請求項５】
前記データソースは、前記クラスタ化されたデータベース内の前記複数のデータベースインスタンスとの前記接続の組を前記通知サービス構成要素の代替物としてポーリングするように動作する、請求項１から４のいずれか１項に記載のシステム。
【請求項６】
前記データソースは、ロードバランシングアドバイザリイベントを含む前記通知サービス構成要素から通知を受取るように動作する、請求項１から５のいずれか１項に記載のシステム。
【請求項７】
前記データソースは、グローバルトランザクションの状況の中のすべてのデータベース動作が同一のデータベースインスタンスに向けられることを確実にするために動作する、請求項１から６のいずれか１項に記載のシステム。
【請求項８】
前記データソースは、前記クラスタ化されたデータベース内のターゲットデータベースインスタンスのグレースフルシャットダウン動作をサポートするように動作する、請求項１から７のいずれか１項に記載のシステム。
【請求項９】
前記データソースは、１つ以上の物理的な接続を閉じて再作成する前にいかなる進行中のトランザクションも完了させることができるように動作する、請求項８に記載のシステム。
【請求項１０】
前記データソースは、新たな接続要求が前記クラスタ化されたデータベース内の前記ターゲットデータベースインスタンスに送られないようにアイドル状態の接続を一掃するように動作する、請求項８または９に記載のシステム。
【請求項１１】
アプリケーションサーバとクラスタ化されたデータベースとの接続をサポートするための方法であって、
前記クラスタ化されたデータベース内の複数のデータベースインスタンスに関連付けられた通知サービス構成要素を準備するステップを備え、前記通知サービス構成要素は、前記クラスタ化されたデータベースの状態変化を表わす通知を一斉送信するように前記クラスタ化されたデータベースによって用いられ、前記方法はさらに、
前記アプリケーションサーバに関連付けられたデータソースを準備するステップを備え、前記データソースは、前記クラスタ化されたデータベース内の前記複数のデータベースインスタンスとの接続の組を含む接続プールに関連付けられ、前記方法はさらに、
前記データソースが前記クラスタ化されたデータベースの変化についての通知を受取るように前記通知サービス構成要素に登録することを可能にするステップを備え、前記アプリケーションサーバは、ランタイム時の前記クラスタ化されたデータベースの状態変化に従って、前記クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する、方法。
【請求項１２】
前記クラスタ化されたデータベースの状態変化は、
１つ以上のデータベースインスタンスが予定外の機能停止によって停止または除外されたこと、および
データベースインスタンスが機能停止後に追加または再起動されること、のうちの１つを含む、請求項１１に記載の方法。
【請求項１３】
前記データソースが、データベース高速接続フェイルオーバ機能を準備し、データベースインスタンスとの前記接続の各々が有効であることを確実にするようにデータベースサービスイベントに応答するステップをさらに備える、請求項１１または１２に記載の方法。
【請求項１４】
前記データソースが、メトリクスを用いて、前記アプリケーションサーバが行なう動作をモニタリングするステップをさらに備える、請求項１１から１３のいずれか１項に記載の方法。
【請求項１５】
前記データソースが、前記クラスタ化されたデータベース内の前記複数のデータベースインスタンスとの前記接続の組を前記通知サービスの代替物としてポーリングするステップをさらに備える、請求項１１から１４のいずれか１項に記載の方法。
【請求項１６】
前記データソースが、ロードバランシングアドバイザリイベントを含む前記通知サービスから通知を受取るステップをさらに備える、請求項１１から１５のいずれか１項に記載の方法。
【請求項１７】
前記データソースが、グローバルトランザクションの状況の中のすべてのデータベース動作が同一のデータベースインスタンスに向けられることを確実にするステップをさらに備える、請求項１１から１６のいずれか１項に記載の方法。
【請求項１８】
前記データソースが、前記クラスタ化されたデータベース内のターゲットデータベースインスタンスのグレースフルシャットダウン動作をサポートするステップをさらに備える、請求項１１から１７のいずれか１項に記載の方法。
【請求項１９】
前記データソースが、１つ以上の物理的な接続を閉じて再作成する前にいかなる進行中のトランザクションも完了させることができるようにするステップをさらに備える、請求項１８に記載の方法。
【請求項２０】
前記データソースが、新たな接続要求が前記クラスタ化されたデータベース内の前記ターゲットデータベースインスタンスに送られないようにアイドル状態の接続を一掃するステップをさらに備える、請求項１８または１９に記載の方法。
【請求項２１】
１つ以上のコンピュータシステムにロードされ、１つ以上のコンピュータシステムによって実行されると、前記１つ以上のコンピュータシステムに請求項１１から２０のいずれか１項に記載の方法を実行させるプログラム読取可能命令を備えるコンピュータプログラム。
【請求項２２】
請求項２１に記載のコンピュータプログラムを記憶するコンピュータ読取可能記憶媒体を備えるコンピュータプログラム製品。
【請求項２３】
アプリケーションサーバとデータベースシステムとの接続をサポートするためのデータベースシステムであって、前記データベースシステムはクラスタ化されたデータベースであり、前記データベースシステムは、
複数のデータベースインスタンスと、
前記複数のデータベースインスタンスに関連付けられた通知サービス構成要素とを備え、前記通知サービス構成要素は、前記クラスタ化されたデータベースの状態変化を表わす通知を一斉送信するように前記クラスタ化されたデータベースによって用いられ、
前記通知サービス構成要素は、前記クラスタ化されたデータベースの変化についての通知を受取り、ランタイム時の前記クラスタ化されたデータベースの状態変化に従って、前記クラスタ化されたデータベースとの接続を適応的に構築して管理するために、前記アプリケーションサーバに関連付けられたデータソースから当該データベースによる登録を受取る、データベースシステム。
【請求項２４】
前記クラスタ化されたデータベースの状態変化は、
１つ以上のデータベースインスタンスが予定外の機能停止によって停止または除外されたこと、および
データベースインスタンスが機能停止後に追加または再起動されること、のうちの１つを含む、請求項２３に記載のシステム。
【請求項２５】
アプリケーションサーバとクラスタ化されたデータベースとの接続をサポートするためのアプリケーションサーバであって、
前記クラスタ化されたデータベース内の複数のデータベースインスタンスとの接続の組を管理する接続プールと、
前記接続プールに関連付けられた単一のデータソースとを備え、
前記データソースは、前記クラスタ化されたデータベースの変化についての通知を受取るように前記クラスタ化されたデータベースの通知サービス構成要素に登録するように動作し、前記アプリケーションサーバは、ランタイム時の前記クラスタ化されたデータベースの状態変化に従って、前記クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する、アプリケーションサーバ。
【請求項２６】
前記データソースは、データベース高速接続フェイルオーバ機能を準備し、データベースインスタンスとの前記接続の各々が有効であることを確実にするようにデータベースサービスイベントに応答する、請求項２５に記載のシステム。
【請求項２７】
前記データソースは、メトリクスを用いて、前記アプリケーションサーバが行なう動作をモニタリングするように動作する、請求項２５に記載のシステム。
【請求項２８】
前記データソースは、前記クラスタ化されたデータベース内の前記複数のデータベースインスタンスとの前記接続の組を前記通知サービス構成要素の代替物としてポーリングするように動作する、請求項２５に記載のシステム。
【請求項２９】
前記データソースは、ロードバランシングアドバイザリイベントを含む前記通知サービス構成要素から通知を受取るように動作する、請求項２５に記載のシステム。
【請求項３０】
グローバルトランザクションの状況の中のすべてのデータベース動作が同一のデータベースインスタンスに向けられることを確実にする、請求項２５に記載のシステム。
【請求項３１】
前記データソースは、前記クラスタ化されたデータベース内のターゲットデータベースインスタンスのグレースフルシャットダウン動作をサポートする、請求項２５に記載のシステム。
【請求項３２】
前記データソースは、１つ以上の物理的な接続を閉じて再作成する前にいかなる進行中のトランザクションも完了させることができる、請求項３１に記載のシステム。
【請求項３３】
前記データソースは、新たな接続要求が前記クラスタ化されたデータベース内の前記ターゲットデータベースインスタンスに送られないようにアイドル状態の接続を一掃する、請求項３１に記載のシステム。
【請求項３４】
コンピュータプログラムであって、
クラスタ化されたデータベース内の複数のデータベースインスタンスに関連付けられた通知サービスを準備するステップをコンピュータシステムに実行させ、前記通知サービスは、前記クラスタ化されたデータベースの状態変化を表わす通知を一斉送信するように前記クラスタ化されたデータベースによって用いられ、前記コンピュータプログラムはさらに、
アプリケーションサーバに関連付けられたデータソースを準備するステップをコンピュータシステムに実行させ、データソースは、前記クラスタ化されたデータベース内の前記複数のデータベースインスタンスとの接続の組を含む接続プールに関連付けられ、前記コンピュータプログラムはさらに、
前記データソースが前記クラスタ化されたデータベースの変化についての通知を受取るように前記通知サービスに登録することを可能にするステップをコンピュータシステムに実行させ、前記アプリケーションサーバは、ランタイム時の前記クラスタ化されたデータベースの状態変化に従って、前記クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する、コンピュータプログラム。
【請求項３５】
機械読取可能媒体であって、命令を格納しており、前記命令は、実行されると、
クラスタ化されたデータベース内の複数のデータベースインスタンスに関連付けられた通知サービス構成要素をシステムに準備させ、前記通知サービス構成要素は、前記クラスタ化されたデータベースの状態変化を表わす通知を一斉送信するように前記クラスタ化されたデータベースによって用いられ、
アプリケーションサーバに関連付けられたデータソースをシステムに準備させ、データソースは、前記クラスタ化されたデータベース内の前記複数のデータベースインスタンスとの接続の組を含む接続プールに関連付けられ、
前記データソースが前記クラスタ化されたデータベースの変化についての通知を受取るように前記通知サービス構成要素に登録することをシステムに可能にさせ、前記アプリケーションサーバは、ランタイム時の前記クラスタ化されたデータベースの状態変化に従って、前記クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する、機械読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は著作権保護の対象となる内容を含む。著作権者は、特許商標庁の特許ファイルまたは記録に現れた際には特許文献または特許開示のいずれによるファクシミリ再現に対しても異議を申立てないが、それ以外のすべてのいかなる著作権も留保する。
【０００２】
発明の分野：
本発明は、一般に、コンピュータシステムおよびミドルウェアなどのソフトウェアに関し、特にクラスタ化されたデータベースとの接続を管理するためのシステムに関する。
【背景技術】
【０００３】
背景：
オラクル・ウェブロジック・サーバなどのアプリケーションサーバの状況の中では、ユーザは、データソースを構築することによってアプリケーションサーバ内のデータベース接続性を構築できる。アプリケーションサーバ上のアプリケーションは、標準的なジャバ・ネーミングおよびディレクトリ・インターフェース（Java（登録商標） Naming and Directory Interface）（ＪＮＤＩ）などのディレクトリサービスを用いて特定のデータソースを参照し、その後、データベース接続を要求することができる。接続を終えると、アプリケーションはアプリケーションサーバを介してデータベース接続を切断することができる。アプリケーションサーバ管理者もソフトウェア開発者／プログラマもデータソースを作成できる。概して、本発明の実施例が取り組もうとしているのは、これらの分野である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要：
実施例に従って、アプリケーションサーバとクラスタ化されたデータベースとを接続するためのデータソースの使用をサポートするためのシステムおよび方法を提供する。当該クラスタ化されたデータベースは、複数のデータベースインスタンスを含み、通知サービス構成要素に関連付けられる。当該通知サービス構成要素は、当該複数のデータベースインスタンスの状態変化を表わす通知を一斉送信するように当該クラスタ化されたデータベースによって用いられることができる。当該データソースは、当該クラスタ化されたデータベース内の当該複数のデータベースインスタンスとの接続の組を管理する接続プールを含む。当該データソースは、当該クラスタ化されたデータベースの変化についての通知を受取るように当該通知サービス構成要素に登録するように動作し、当該アプリケーションサーバは、ランタイム時の当該クラスタ化されたデータベースの状態変化に従って、当該クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する。
【０００５】
本発明の１つの局面に従って、アプリケーションサーバとデータベースシステムとの接続をサポートするためのデータベースシステムであって、当該データベースシステムはクラスタ化されたデータベースであり、当該データベースシステムは、複数のデータベースインスタンスと、当該複数のデータベースインスタンスに関連付けられた通知サービス構成要素とを備え、当該通知サービス構成要素は、当該クラスタ化されたデータベースの状態変化を表わす通知を一斉送信するように当該クラスタ化されたデータベースによって用いられ、当該通知サービス構成要素は、当該クラスタ化されたデータベースの変化についての通知を受取り、ランタイム時の当該クラスタ化されたデータベースの状態変化に従って、当該クラスタ化されたデータベースとの接続を適応的に構築して管理するために、当該アプリケーションサーバに関連付けられたデータソースから当該データベースによる登録を受取る、データベースシステムを提供する。
【０００６】
好ましくは、当該クラスタ化されたデータベースの状態変化は、１つ以上のデータベースインスタンスが予定外の機能停止によって停止または除外されたこと、およびデータベースインスタンスが機能停止後に追加または再起動されること、のうちの１つを含む。
【０００７】
本発明の別の局面に従って、アプリケーションサーバとクラスタ化されたデータベースとの接続をサポートするためのアプリケーションサーバであって、当該クラスタ化されたデータベース内の複数のデータベースインスタンスとの接続の組を管理する接続プールと、当該接続プールに関連付けられた単一のデータソースとを備え、当該データソースは、当該クラスタ化されたデータベースの変化についての通知を受取るように当該クラスタ化されたデータベースの通知サービス構成要素に登録するように動作し、当該アプリケーションサーバは、ランタイム時の当該クラスタ化されたデータベースの状態変化に従って、当該クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する、アプリケーションサーバを提供する。
【０００８】
好ましくは、当該データソースは、データベース高速接続フェイルオーバ機能を準備し、データベースインスタンスとの当該接続の各々が有効であることを確実にするようにデータベースサービスイベントに応答する。
【０００９】
好ましくは、当該データソースは、メトリクスを用いて、当該アプリケーションサーバが行なう動作をモニタリングするように動作する。
【００１０】
好ましくは、当該データソースは、当該クラスタ化されたデータベース内の当該複数のデータベースインスタンスとの当該接続の組を当該通知サービス構成要素の代替物としてポーリングするように動作する。
【００１１】
好ましくは、当該データソースは、ロードバランシングアドバイザリイベントを含む当該通知サービス構成要素から通知を受取るように動作する。
【００１２】
好ましくは、グローバルトランザクションの状況の中のすべてのデータベース動作が同一のデータベースインスタンスに向けられることを確実にする。
【００１３】
好ましくは、当該データソースは、当該クラスタ化されたデータベース内のターゲットデータベースインスタンスのグレースフルシャットダウン動作をサポートする。
【００１４】
好ましくは、当該データソースは、１つ以上の物理的な接続を閉じて再作成する前にいかなる進行中のトランザクションも完了させることができる。
【００１５】
好ましくは、当該データソースは、新たな接続要求が当該クラスタ化されたデータベース内の当該ターゲットデータベースインスタンスに送られないようにアイドル状態の接続を一掃する。
【図面の簡単な説明】
【００１６】
【図１】実施例に従った、アプリケーションサーバとクラスタ化されたデータベースとを接続するためのマルチデータソースシステムの図である。
【図２】実施例に従った、アプリケーションサーバとクラスタ化されたデータベースとを接続するためのグリッドリンク（Gridlink）データソースシステムの図である。
【図３】実施例に従った、アプリケーションサーバとクラスタ化されたデータベースによって提供される異なるサービスとを接続するためのグリッドリンクデータソースシステムの図である。
【図４】実施例に従った、アプリケーションサーバとクラスタ化されたデータベースとを接続するためにグリッドリンクデータソースを用いるための例示的なフローチャートである。
【図５】実施例に従った、データベースロードバランシングアドバイザリイベントをサポートするグリッドリンクデータソースシステムの図である。
【図６】実施例に従った、クラスタ化されたデータベース内のデータベース状態変化イベントをサポートするグリッドリンクデータソースシステムの図である。
【図７】実施例に従った、分散トランザクション（ＸＡ）をサポートするグリッドリンクデータソースシステムの図である。
【図８】実施例に従った、データベースグレースフルシャットダウンをサポートするグリッドリンクデータソースシステムの図である。
【図９】実施例に従った、データベース接続モジュールを用いたグリッドリンクデータソースシステムの図である。
【図１０】実施例に従った、グリッドリンクデータソースに関連付けられた複数のリスナを構築するためのウィザードページの図である。
【図１１】実施例に従った、グリッドリンクデータソースに関連付けられた通知サービスクライアントを構築するためのウィザードページの図である。
【発明を実施するための形態】
【００１７】
詳細な説明：
本発明は、限定目的ではなく例示目的として添付図面の図に示され、添付図面の図においては、同様の参照番号は同様の要素を指す。なお、本開示の中で「ある（ａｎ）」または「１つの（one）」または「いくつかの（some）」実施例に言及したとしても、必ずしも同一の実施例であるとは限らず、このような言及は少なくとも１つであることを意味する。
【００１８】
さらに、本明細書において行なわれる本発明のさまざまな実施例の説明は、クラスタ化されたデータベース環境の例示的な例としてオラクル・リアル・アプリケーション・クラスタ（Oracle Real Application Clusters）（ＲＡＣ）データベースシステムを用いる。他の種類のクラスタ化されたデータベース環境を制限なく用いることができる、ということは当業者に明らかであろう。
【００１９】
クラスタ化されたデータベースまたはデータベースクラスタは、まるでエンドユーザおよびアプリケーションに対する１つのサーバであるかのように見える複数の相互接続されたコンピュータまたはサーバを備え得る。データベースとインスタンスとの間に１対１の関係がある単一インスタンスデータベースとは異なり、クラスタ化されたデータベースは、データベースとインスタンスとの間に１対多の関係がある。例えば、オラクルＲＡＣデータベースシステムは、複数のサーバを結び付けて単一のシステムとして動作するようにオラクル・クラスタウェア・インフラストラクチャを用いて、ユーザがオラクルデータベースをクラスタ化することを可能にする。オラクルＲＡＣデータベースシステムは、多数のインスタンスを有することができ、それらはすべて１つのデータベースにアクセスする。複数のサーバの処理能力を集約することにより、単一のサーバで得られるスループットおよびスケーラビリティよりも大きなスループットおよびスケーラビリティを提供できる。
【００２０】
図１は、実施例に従った、アプリケーションサーバとクラスタ化されたデータベースとを接続するためのマルチデータソースシステムの図である。図１に示されるように、マルチデータソース１０３は、１つ以上の個々のデータソース１３１、１３２および１３３にわたるデータソースの抽象的概念である。マルチデータソースは、ロードバランシング手法およびフェイルオーバ手法などの特定の手法に従って、メンバデータソースの各々からジャバデータベース接続性（Java DataBase Connectivity）（ＪＤＢＣ）接続１２１、１２２および１２３を提供する。また、マルチデータソースコンフィギュレーションでは、各メンバデータソースが特定のデータベースインスタンスとの接続を得る必要がある。
【００２１】
グリッドリンクデータソース
実施例に従って、アプリケーションサーバとクラスタ化されたデータベースとを接続するための、本明細書では「グリッドリンクデータソース」と称されるデータソースの使用をサポートするためのシステムおよび方法を提供する。クラスタ化されたデータベースは、複数のデータベースインスタンスを含み、通知サービス構成要素に関連付けられる。通知サービス構成要素は、複数のデータベースインスタンスの状態変化を表わす通知を一斉送信するように、クラスタ化されたデータベースによって用いられることができる。データソースは、クラスタ化されたデータベース内の複数のデータベースインスタンスとの接続の組を管理する接続プールを含む。データソースは、クラスタ化されたデータベースの変化についての通知を受取るように通知サービス構成要素に登録するように動作し、アプリケーションサーバは、ランタイム時のクラスタ化されたデータベースの状態変化に従って、クラスタ化されたデータベースとの接続を適応的に構築して管理するように動作する。
【００２２】
実施例によれば、グリッドリンクデータソースは、データベースクラスタをターゲットとしたサービスである単一データソースコンフィギュレーションを用いることができる。グリッドリンクデータソースは、高速接続フェイルオーバ、ランタイム接続ロードバランシングおよびデータベースインスタンスグレースフルシャットダウンを提供するように通知イベントに応答することができる。さらに、グローバルトランザクションＩｄレベルで分散トランザクション（ＸＡ）アフィニティをサポートすることができる。
【００２３】
例えば、オラクルＲＡＣデータベースシステムは、データベースクラスタの状態についての情報を広めるようにクライアント通知をサポートすることができる。ＪＤＢＣデータソースコンフィギュレーションは、サービスＵＲＬの仕様を考慮に入れて、ＲＡＣ接続性を提供する。ＪＤＢＣデータソースコンフィギュレーションは、ＲＡＣクラスタとのＪＤＢＣ接続の統計情報および管理容易性を提供するモニタリングサポートも含む。
【００２４】
実施例によれば、グリッドリンクデータソースは、データベースクラスタ通知の機能を活用することによってマルチデータソース解決策の欠点に対処し、その結果、より簡素なコンフィギュレーションで全体的な接続性がよりよくなり、データベースノード障害に対する応答がより素早くなり、データベースクラスタリソースがよりよく利用され、ランタイムモニタリングおよび管理が向上する。さらに、グリッドリンクデータソースおよびマルチデータソースの混成コンフィギュレーションをサポートすることができる。
【００２５】
図２は、実施例に従った、アプリケーションサーバとクラスタ化されたデータベースとを接続するためのグリッドリンクデータソースシステムの図である。図２に示されるように、グリッドリンクデータソース２０３は、アプリケーションサーバ２０１に関連付けられた単一のデータソースである。グリッドリンクデータソースは、単一データソースアプローチを通じてアプリケーションサーバによるクラスタ化されたデータベース２０２の使用を簡素化し、これは、クラスタ化されたデータベースの使用に必要なコンフィギュレーションおよび管理の複雑さを軽減する。グリッドリンクデータソースは、データベースクラスタ内の異なるデータベースインスタンス２１１、２１２および２１３との異種の接続２２１、２２２および２２３の組を含む接続プール２０５を含む。また、図２に示されるように、これらの異なるデータベースインスタンスは共用記憶装置２０４に接続される。
【００２６】
実施例によれば、接続プール内の接続の管理は、最小／最大容量、タイムアウトなどの接続プール上に構築された静的な設定２１４、および、データベースクラスタ内のいかなる状態変化についてもデータソースにアドバイスする通知サービス構成要素２０６から受取ったイベントメッセージ２１０における接続プールについてのリアルタイムの情報に基づく。アプリケーション２０７、２０８または２０９がデータソースに接続を要求すると、好適な接続が接続プールから選択され、接続プールが受取ったロードバランシング情報および使用中の接続の現在の分布に基づいてプールからアプリケーションに供給される。
【００２７】
アプリケーションサーバは、データベースイベントメッセージなどの通知を受取るように通知サービス構成要素に登録することができ、そのため、クラスタ化されたデータベース内のいかなる状態変化にもすぐに気付くことができる。これらの状態変化通知イベントを用いて、アプリケーションサーバは、システムが連続的、確実かつ効率的にクラスタ化されたデータベースにアクセスできるようにその接続プールを知的に適合させることができる。
【００２８】
実施例によれば、接続ポーリングは、通知サービスが構築されない時または通知サービスが正しく機能していない時に通知サービスの代替物として適用されることができる。接続ポーリングが用いられると、当該システムは、個々の接続に対してＳＱＬ動作を行なうことによって、個々のＪＤＢＣ接続の実行可能性を判断して、クラスタ化されたクラスタのトポロジの変化を検出することができる。
【００２９】
通知サービスアプローチと比較して、接続ポーリングアプローチは、さらに他のランタイムオーバーヘッドを犠牲にして成り立つものであり、恐らくはデータベースインスタンスノード障害の検出を遅延させる。また、接続ポーリングアプローチは誤検出の可能性があり、その結果、データソースプールが不必要に無効になり、アプリケーションによって使用中であり得る有効な接続を終了させてしまう恐れがある。
【００３０】
図３は、実施例に従った、アプリケーションサーバとクラスタ化されたデータベースによって提供される異なるサービスとを接続するためのグリッドリンクデータソースシステムの図である。図３に示されるように、クラスタ化されたデータベース３０２は、異なるサービス３１１、３１２および３１３を提供することができ、それらのサービスの各々は、特定のサービス品質を提供するように異なるデータベースインスタンスにわたって割当て可能なデータベース作業負荷の抽象的概念であり得る。
【００３１】
また、図３に示されるように、アプリケーションサーバ環境３０１は、複数のアプリケーションサーバインスタンス３０３および３０４を含み得る。各アプリケーションサーバインスタンスは、単一の接続プール３０７および３０８を有する単一のデータソース３０５および３０６を含み得る。グリッドリンクデータソースシステムは、クラスタ化されたデータベースとより深く統合させるために、クラスタ化されたデータベースとの接続３２１、３２２、３２３、３２４および３２５を提供して、制限のない態様でデータベースサービスの消費をサポートする。
【００３２】
例えば、オラクルデータベースサービスは、オラクルデータベース内の作業負荷を管理するための論理的な抽象的概念であり得る。データベースサービスは、作業負荷に対する単一のシステムイメージ、作業負荷の優先順位付け、実際のトランザクションに対する性能評価尺度、ならびに性能目標に違反した時の警告および動作を提供することができる。データベースサービスにより、データベース管理者は、作業負荷を構築し、作業負荷を管理し、作業負荷を有効／無効にし、作業負荷を単一の要素として測定することができる。データベースサービスはさらに、作業負荷を論理的に互いに素なグループに分けることができる。各サービスは、共通の属性、サービスレベル閾値および優先度で作業負荷を表わす。
【００３３】
図４は、実施例に従った、アプリケーションサーバとクラスタ化されたデータベースとを接続するためにグリッドリンクデータソースを用いるための例示的なフローチャートである。図４に示されるように、ステップ４０１において、通知サービス構成要素と、クラスタ化されたデータベース内の複数のデータベースインスタンスとを関連付けることができる。また、ステップ４０２において、データソースと、クラスタ化されたデータベース内の複数のデータベースインスタンスとの接続の組を含む接続プールとを関連付けることができる。ステップ４０３において、データソースは、クラスタ化されたデータベースの変化についての通知を受取るように通知サービス構成要素に登録することができる。ステップ４０４において、データソースは、ランタイム時のクラスタ化されたデータベースの状態変化を表わす通知を通知サービスから受取る。次いで、ステップ４０５において、データソースは、クラスタ化されたデータベースの状態変化に従って、クラスタ化されたデータベースとの接続を適応的に構築して管理する。
【００３４】
実施例によれば、グリッドリンクデータソースのコンフィギュレーションは、残り続けるＪＤＢＣ記述子ビーン（JDBC descriptor beans）を活用することができる。ＪＤＢＣ記述子ビーンは、グリッドリンクデータソースを識別して、データベース通知サービスクライアントコンフィギュレーション情報を特定できる。ＪＤＢＣ記述子ビーンは、ＸＭＬファイルを用いて、グリッドリンクデータソース機能を有効にすることができる。以下は、オラクルＲＡＣデータベースシステムに接続されるグリッドリンクデータソースを構築するための例示的なＸＭＬファイルである。
【００３５】
【数１】
2013541764.tif 000003
【００３６】
ロードバランシングアドバイザリイベント
実施例によれば、クラスタ化されたデータベースは、スループットをよりよくしてリソースがより効率的に用いられるようにするために、データベース管理者（database administrator）（ＤＢＡ）が設定した性能目標に基づいてデータベースインスタンス中に接続を分散させるようにランタイムロードバランシングサービスを提供することができる。ロードバランシングアドバイザリサービスは、接続をどこに向けるかについてのアドバイスを含むクラスタの現在の状態についてクライアントにアドバイスするイベントを発行する。
【００３７】
図５は、実施例に従った、データベースロードバランシングアドバイザリイベントをサポートするグリッドリンクデータソースシステムの図である。図５に示されるように、アプリケーションサーバ５０１は、クラスタ化されたデータベース５０２が発行したロードバランシングアドバイザリイベントメッセージ５１０を受取って、それに従ってデータベースノードまたはインスタンス５１１、５１２および５１３とのデータベース接続５２１、５２２および５２３を調整することができる。当該システムは、ランタイム時にデータソースに対してロードバランシングコンフィギュレーションオプションを実行することができ、データベースから受取ったロードバランシングアドバイザリメッセージに基づいてアプリケーションサーバはデータベース接続を送ることができる。そのため、データベース接続は特定のデータベースノードに向けられて、データベース管理者が設定した性能目標を満たす。
【００３８】
ランタイムロードバランシングアドバイザリサービス構成要素５０６と単一のデータソース５０３とを併用することにより、初期コンフィギュレーションおよびデータソースの継続的なメンテナンスを簡素化できる。グリッドリンクデータソースシステムを用いると、データベースがロードバランシング動作を指示するので、アプリケーションサーバがロードバランシングをサポートするのにデータベーストポロジ情報は不要である。グリッドリンクデータソースシステムは、中間層を正しく構成するために必要な情報量を減らすことによってデータソースの初期の構築を助ける。さらに、データベース層は時間とともに変化する可能性があり、サービスは新たなまたは異なるデータベースインスタンスに配置し直される可能性があるので、グリッドリンクデータソースシステムは、変化したデータベーストポロジを反映させるためにコンフィギュレーションの変化を必要としない。
【００３９】
例えば、図５に示されるように、アプリケーションサーバで受取られたロードバランシングアドバイザリイベントメッセージが、データベースインスタンスＡがビジー状態でありデータベースインスタンスＣがアイドル状態であることを示す場合、グリッドリンクデータソースシステムは、データベースインスタンスＣに新たな接続を割当てることによって接続プール内の接続を再調整して、ＤＢＡが設定したロードバランシングターゲットを達成し、負荷をよりよく分散させてスループットを高くすることができる。
【００４０】
実施例によれば、ロードバランシング情報に基づいて接続プール内の接続を再調整することに加えて、利用可能なアイドル状態の接続がある場合には、ロードバランシング割合／重みに従って既存の接続をアプリケーション構成要素に与えることができる。
【００４１】
データベース状態変化イベント
図６は、実施例に従った、データベース状態変化イベントをサポートするグリッドリンクデータソースシステムの図である。図６に示されるように、アプリケーションサーバ６０１は、通知サービス構成要素６０６が発行したデータベース状態変化イベントメッセージ６１０をクラスタ化されたデータベース６０２から受取ることができる。データベース状態変化イベントは、データベースインスタンスの予期せぬ機能停止または新たなデータベースインスタンスの追加を含み得る。
【００４２】
実施例によれば、グリッドリンクデータソースシステムにより、アプリケーションサーバは、予定外の機能停止によって停止または除外されたデータベースインスタンスとの接続を直ちに撤回する、閉じるおよび廃棄することによって、機能停止への対処などのデータベースクラスタの状態変化に適応的に応答することができる。図６に示されるように、アプリケーションサーバで受取られたデータベース状態変化イベントメッセージは、データベースインスタンスＢ  ６１２の機能停止を示し得る。それに対応して、グリッドリンクデータソース６０３は、データベース接続６２２を切断するように接続プール６０５に指示することができ、その結果、グリッドリンクデータソースに関連付けられたアプリケーション６０７、６０８または６０９は、データベースインスタンスＡ  ６１１またはデータベースインスタンスＣ  ６１３などの別のデータベースインスタンスを介してデータベースに再接続することができ、データベースサービスにおける中断を回避する。
【００４３】
上記の例に示されるように、データベース状態変化イベントを用いると、グリッドリンクデータソースシステムは、接続が有効であること、または、残存しているノードとの未関与の接続に影響を及ぼしていることを確実にするために接続を定期的にポーリングする必要がない。これにより、接続試験への依存を小さくすることができ、アプリケーションに無効な接続が与えられずにアプリケーションサーバに情報が与えられることが確実になり、不必要な遅延なしに、データベースノード障害のために無効になる接続からアプリケーションをすぐに解放する。
【００４４】
予期せぬデータベース機能停止への対処に加えて、グリッドリンクデータソースにより、アプリケーションサーバは、機能停止後に新たなデータベースインスタンスが追加または再起動されるシナリオをサポートするようにその接続の組を事前対応的に再配分することができる。これにより、アプリケーションサーバは、クラスタ化されたデータベース内のリソースを十分に利用できる。さらに、データベースサービスモデルを用いると、当該システムにより、データベース管理者はデータベースサービス／インスタンスの割当てを変更でき、これらの割当ては、次いで、接続プールコンフィギュレーションに対してコンフィギュレーション変更を行なう必要なく、影響を受けたアプリケーションサーバ接続プールを介して途切れなく適用される。また、クラスタ化されたデータベースの専用のインスタンスを表わすために複数のデータソースの複雑な配置を作成する必要がなくなる。
【００４５】
さらに、データベース状態変化イベントを用いると、グリッドリンクデータソースは、高速接続フェイルオーバ機能を提供することができ、{ＵＰ，ＤＯＷＮ}イベントなどのクラスタ化されたデータベースサービスおよびノードイベントに応答して、プール内の予備の物理的な接続が有効なデータベースノードを常に指し示していることを確実にする。さらに、グリッドリンクデータソースは、予備の物理的な接続が利用可能なデータベースノード中に確実に十分に分散されるようにする。高速接続フェイルオーバ挙動は、データソースについてのコンフィギュレーション設定として有効にされ得る。データベース通知イベントを受取った時にアプリケーションサーバがそのデータソースに対してどのような動作を行なったかを管理者がモニタリングして検討することができるように、メトリクスを利用できる。
【００４６】
分散トランザクション（ＸＡ）アフィニティ
実施例によれば、グローバルトランザクションの状況の中でデータベースクラスタに対して行なわれるすべてのデータベース動作が同一のデータベースインスタンスに確実に向けられるようにするために、分散トランザクション（ＸＡ）アフィニティが用いられる。アフィニティは、個々のデータソースの代わりにグローバルトランザクションｉｄに基づいて確立でき、同一のデータベースクラスタのために構築される異なるデータソースから得られた接続がすべて同一のデータベースインスタンスに確実に関連付けられるようにする。二相コミット最適化がグリッドリンクデータソースによってサポートされることができ、ＸＡアフィニティにも関与することができる。
【００４７】
図７は、実施例に従った、分散トランザクション（ＸＡ）をサポートするグリッドリンクデータソースシステムの図である。図７に示されるように、グリッドリンクデータソースを用いたアプリケーションサーバ環境７０１は、クラスタ化されたデータベース７０２に対して行なわれるグローバルトランザクションのためのすべてのデータベース動作が同一のデータベースインスタンス７１１に確実に向けられるようにすることによって、グローバルトランザクションをサポートすることができる。一実施例では、ＸＡトランザクションの第１の接続要求７２１がロードバランスされて、アフィニティコンテキスト７２０を割当てられる。後続の接続要求７２２、７２３および７２４はすべて、この第１の接続のアフィニティコンテキストを用いて、同一のデータベースインスタンスに送られる。
【００４８】
計画的なデータベースグレースフルシャットダウン
実施例によれば、データベースノード／サービスがシャットダウン動作をターゲットとしており、シャットダウンを表わすデータベースイベントの対応する発行が要求された場合に、計画的なグレースフルシャットダウンが行なわれる。図８は、実施例に従った、データベースグレースフルシャットダウンをサポートするグリッドリンクデータソースシステムの図である。図８に示されるように、アプリケーションサーバ８０１は、通知サービス構成要素８０６が発行したデータベースシャットダウンイベントメッセージ８１０をクラスタ化されたデータベース８０２から受取ることができる。そして、データベースシャットダウンイベントメッセージは、データベースインスタンスＡ  ８１１がシャットダウンされる予定であることを表わす。
【００４９】
データベースの計画的なグレースフルシャットダウンをサポートするために、アプリケーションサーバは、データベースシャットダウンターゲットがもはや新たな接続を受付けていないことを検出した場合に使用中の接続８２１を直ちに停止させなくてもよい。その代わりに、グリッドリンクデータソース８０３は、アクティブなシャットダウンモードにおいて新たな接続要求がデータベースターゲットに送られないようにアイドル状態の接続を一掃しながら、物理的な接続を閉じて再作成する前にいかなる進行中のトランザクションも完了させることができる。
【００５０】
データソースは、データベースシャットダウンターゲットに接続されたアクティブな接続を検出し、関連付けられたトランザクションが完了して接続が接続プール８０５に戻された時にそれらの接続が閉じられて再作成されるようにそれらの接続をマークすることができる。いかなる進行中のトランザクションも完了させることができるようにするために、シャットダウンイベントを受取った時または未許可の接続要求を検出した時に直ちに例外を作成しなくてもよい。さらに、データベースシャットダウンターゲットに接続されたプール内のいかなるアイドル状態の接続もプリエンプティブに閉じることができる。また、当該システムにより、データソースはデータベースシャットダウンターゲットの周りに新たな要求を送ることができ、進行中のトランザクションの完了を実現し、データベースシャットダウン動作を実行中のアプリケーションに対して透過的にすることができる。
【００５１】
ユニバーサル接続プール（Universal Connection Pool）（ＵＣＰ）ライブラリ
実施例によれば、アプリケーションサーバとクラスタ化されたデータベースとを接続するために、ユニバーサル接続プール（ＵＣＰ）ライブラリなどのデータベース接続モジュールを用いることができる。ＵＣＰライブラリは、データベースサーバが論理的にはＪＤＢＣドライバの延長線上にあるという観点から、クライアント側のライブラリである。データベース接続モジュールは、一般的なＪＤＢＣ接続プーリングの実現例の提供に加えて、クラスタ化されたデータベースのための高い利用可能性および性能機能をサポートすることができる。
【００５２】
図９は、実施例に従った、データベース接続モジュールを用いたグリッドリンクデータソースシステムの図である。アプリケーションサーバ９０１は、グリッドリンクデータソース９０３を介してクラスタ化されたデータベース９０２と接続するためにＵＣＰライブラリ９１０のクラスタデータベース統合サポートを活用できる。
【００５３】
実施例によれば、ＵＣＰライブラリが提供するＪＤＢＣ接続プーリング特性を用いる必要なく、グリッドリンクデータソースは、データベースクラスタに接続でき、高速接続フェイルオーバ、ランタイム接続ロードバランシングおよびＸＡ接続アフィニティなどの、ＵＣＰライブラリによってサポートされる他の機能を利用できる。
【００５４】
実施例によれば、接続モジュールは、ジャバ・バーチャル・マシン（Java Virtual machines）（ＪＶＭｓ）などのリソースをよりよく利用して管理できるように、アプリケーションサーバタイマおよびワークマネージャを利用できる。さらに、ＡＰＩにより、アプリケーションサーバは、クラスタ化データベースアドバイザリを得て、データベースインスタンス中に接続をより効率的に割当てて、データベースクラスタトポロジの変化によりよく応答することができる。例えば、ＵＣＰのＲＡＣ機能はリファクタリングされ、ＲＡＣモジュールＡＰＩの形態でアプリケーションサーバに晒され得る。このＡＰＩは、ＲＡＣクラスタトポロジの変化、ランタイム接続ロードバランシングについてのアドバイザリおよび接続アフィニティに応答して、コールバック通知を提供することができる。また、ＡＰＩは、ロギングおよび他の診断目的でアプリケーションサーバが使用可能な通知イベントコールバックも提供する。ＡＰＩは、ＲＡＣデータソースランタイムモニタリングに用いられることができるＲＡＣクラスタノードについての統計数値および状態情報を表面化し得る。
【００５５】
実施例によれば、ＵＣＰは、接続プーリングおよびデータベース統合特性を提供するスタンドアロンのジャバライブラリとして設計できる。したがって、ＵＣＰライブラリは、それ自体のスレッドおよびタイマを管理できる。ＵＣＰは、アプリケーションサーバプロセス内でＵＣＰ  ＡＰＩにアクセスした時にＵＣＰの内部使用を目的としてアプリケーションサーバがアプリケーションサーバタイマおよびワークマネージャのインスタンスに接続できるようにするタイマおよびワークマネージャＳＰＩを提供することができる。これにより、ＵＣＰライブラリが使用するスレッドおよびタイマの制御およびランタイム可視性を高めることができる。さらに、同一のおよび別個のアプリケーションサーバインスタンス上で異なるデータソースにアクセスした時でさえグローバルトランザクションＩｄに基づいて接続を割当てるように、ＵＣＰが提供するアフィニティ機能を活用できる。
【００５６】
データソース作成ウィザード
実施例によれば、データソース作成ウィザードは、オラクルＲＡＣデータベースなどのクラスタ化されたデータベースと接続するように構築されたグリッドリンクデータソースの作成をサポートすることができる。グリッドリンクデータソースの作成は、データベースサービスに接続するために必要なデータベースリスナアドレス情報および通知サービスクライアントコンフィギュレーション情報をセットアップすることを含む。
【００５７】
例えば、オラクルＲＡＣデータベースと接続するために、データソース作成ウィザードは、接続ターゲットを特定する２つの方法を提供することができる。第１のアプローチでは、データソースについての異なるリスナを特定するために、以下のように示されるconnect_記述子をＪＤＢＣ  ＵＲＬフォーマットの中で用いる。
【００５８】
【数２】
2013541764.tif 000004
【００５９】
第２のアプローチは、ウィザードによって駆動されるアプローチであり、各々のリスナ入力を個々に特定でき、そこから最終的なＪＤＢＣ  ＵＲＬを最終的に構築できる。ウィザードによって駆動されるアプローチにより、ユーザは、グリッドリンクデータソースを作成して更新するための複数のリスナおよび通知サービスクライアントを特定して試験することができる。
【００６０】
図１０は、実施例に従った、グリッドリンクデータソースに関連付けられた複数のリスナを構築するためのウィザードページ１０００の図である。図１０に示されるように、グリッドリンクデータソースは、「Ｉｎｒａｃ」という名前でデータベースサービスに接続することができる。このグリッドリンクデータソースは、ホストおよびポートタプル：ｌｅｆｔｐ：１５２１、ｒｉｇｈｔｐ：１５２１またはｃｅｎｔｅｒｐ：１５２１をそれぞれ用いるように構築された３つのリスナに関連付けられる。接続が有効であることを確認して、特定のリスナに何か問題があればユーザに報告するために、各リスナは別個に試験されることができる。
【００６１】
図１１は、実施例に従った、グリッドリンクデータソースに関連付けられた通知サービスクライアントを構築するためのウィザードページ１１００の図である。図１１に示されるように、グリッドリンクデータソースは、ホストおよびポートタプル：ｌｅｆｔｐ：１５２６を用いるように構築された通知サービスクライアントにさらに関連付けられる。通知サービスクライアントも別個に試験されることができる。さらに、グリッドリンクデータソースは、必要であればさらなる通知サービスクライアントに関連付けられることができる。
【００６２】
本発明は、本開示の教示に従ってプログラムされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能記憶媒体を含む、１つ以上の従来の汎用または専用デジタルコンピュータ、演算処理装置、マシン、またはマイクロプロセッサを用いて、便利に実現されてもよい。ソフトウェア分野における当業者にとって明らかとなるであろうように、適宜なソフトウェアコーディングは、熟練したプラグラマーによって本開示の教示に基づいて容易に準備され得る。
【００６３】
実施例によっては、本発明は、本発明の処理のうち任意のものを行なうようコンピュータをプログラムするために用いることができる命令をその中/そこに記憶した記憶媒体またはコンピュータ読取可能媒体（複数の媒体）であるコンピュータプログラム製品を含む。記憶媒体には、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ装置、磁気もしくは光カード、ナノシステム（分子記憶ＩＣを含む）を含む任意の種類のディスク、または、命令および／もしくはデータを記憶するのに好適な任意の種類の媒体もしくは装置が含まれ得るが、これらに限定されない。
【００６４】
本発明の上述の説明は、例示および説明を目的としてなされた。網羅的であることまたは本発明を開示されたまさにその通りの形態に限定することを意図するものではない。多くの修正例および変形例が当業者にとって明らかであるだろう。実施例は、本発明の原理およびその実際の用途を最もよく説明することによって、他の当業者が本発明をさまざまな実施例について、企図される特定の用途に好適なさまざまな修正例とともに理解することを可能にするために選択され、記載された。本発明の範囲は、以下の特許請求の範囲およびその等価物によって規定されることが意図される。
【図１】
2013541764.tif 000005
【図２】
2013541764.tif 000006
【図３】
2013541764.tif 000007
【図４】
2013541764.tif 000008
【図５】
2013541764.tif 000009
【図６】
2013541764.tif 000010
【図７】
2013541764.tif 000011
【図８】
2013541764.tif 000012
【図９】
2013541764.tif 000013
【図１０】
2013541764.tif 000014
【図１１】
2013541764.tif 000015
【国際調査報告】
2013541764.tif 000016
2013541764.tif 000017