(57)【特許請求の範囲】
【請求項１】
コネクションプールに対して使用されるコネクションラベリングのためのシステムであって、
プロセッサおよびデータベースを含むコンピュータと、
ソフトウェアアプリケーションが前記データベースへのアクセスを要求するために使用することができるコネクションを提供するコネクションオブジェクトを複数含むコネクションプールとを備え、前記コネクションは各々、特定のアプリケーションの構成に従ってラベル付けすることができ、各ソフトウェアアプリケーションは、特定のラベルを特定のコネクション状態に関連付け、かつ、一つの状態から他の状態にコネクションを転用することに関連付けられたコストを当該ソフトウェアアプリケーションについて規定する、構成情報に関連付けられており、
コネクションプールロジックを備え、前記コネクションプールロジックは、高コストコネクションとしてラベル付けされたコネクションを識別し、前記ソフトウェアアプリケーションからの要求を満たすために、前記構成情報に基づいて、高コストコネクションを作成するか、または転用するかを判断し、
前記コネクションプールロジックはプロセスを実行し、前記プロセスは、
受けた要求について、既存の一致コネクションがあるか否か判断し、
既存の一致コネクションがあれば、前記既存の一致コネクションを返し、既存の一致コネクションがなければ、
最もコストの低い非一致コネクションを見つけ出し、前記最もコストの低い非一致コネクションのコストが高コスト値未満か否か判断し、高コスト値未満であれば、前記最もコストの低い非一致コネクションを前記要求に対して使用するために転用し、高コスト値未満でなければ、
すべてのコネクションの総数がしきい値未満であれば、前記要求に対して使用するために新たなコネクションを作成して前記新たなコネクションを返し、
すべてのコネクションの総数が前記しきい値以上であれば、前記最もコストの低いコネクションを前記要求に対して使用するために転用する、システム。
【請求項２】
前記システムは、マルチテナントクラウドベース環境内の複数のテナントまたはテナントアプリケーションによる使用に適合化されており、前記複数のテナントまたはテナントアプリケーションのうちの特定の各テナントまたはテナントアプリケーションを、ラベル付けされたコネクションタイプと関連付けることができ、前記特定のアプリケーションは前記コネクションタイプを前記特定のテナントのために使用して前記データベースに接続する、請求項１に記載のシステム。
【請求項３】
前記システムは、マルチテナントクラウドベース環境内の複数のテナントまたはテナントアプリケーションによる使用に適合化されており、前記コネクションプールは、前記特定のアプリケーションが構成コールバックを用いてコンテナを指定または設定し特定のコネクションを前記複数のテナントまたはテナントアプリケーションのうちの１つから前記複数のテナントまたはテナントアプリケーションのうちの別の１つに転用することに対するサポートを含み、これは特定のデータベースコネクションに対しテナントを切換えるという効果を有する、請求項１または２に記載のシステム。
【請求項４】
前記コネクションプールロジックは、高コストコネクションとしてラベル付けされたコネクションを識別し、コネクションの総数が特定のしきい値未満の場合は前記高コストコネクションを用いて要求を満たすことがないようにする、請求項１〜３のいずれか１項に記載のシステム。
【請求項５】
前記コネクションプールロジックは、アクティブコネクションとアイドルコネクションの総数が少ないときに特定のタイプの高コストコネクションの使用が要求されると結果として既存のコネクションが転用されるのではなく新たな高コストコネクションが作成されるように、構成される、請求項１〜４のいずれか１項に記載のシステム。
【請求項６】
コネクションプールに対して使用されるコネクションラベリングのための方法であって、
プロセッサおよびデータベースを含むコンピュータに、クラウドベース環境内の複数のテナントまたはテナントアプリケーションが使用するデータベースに対するアクセスを含むまたは提供するマルチテナントクラウド環境を提供することと、
ソフトウェアアプリケーションが前記データベースへのアクセスを要求するために使用することができるコネクションを提供するコネクションオブジェクトを複数含むコネクションプールを提供することとを含み、前記コネクションは各々、特定のアプリケーションの構成に従ってラベル付けすることができ、各ソフトウェアアプリケーションは、特定のラベルを特定のコネクション状態に関連付け、かつ、一つの状態から他の状態にコネクションを転用することに関連付けられたコストを当該ソフトウェアアプリケーションについて規定する、構成情報に関連付けられており、
高コストコネクションとしてラベル付けされたコネクションを識別し、前記複数のテナントまたはテナントアプリケーションからの要求を満たすために、前記構成情報に基づいて、高コストコネクションの作成または転用を制御するコネクションプールロジックを、使用することを含み、
前記コネクションプールロジックはプロセスを実行し、前記プロセスは、
受けた要求について、既存の一致コネクションがあるか否か判断し、
既存の一致コネクションがあれば、前記既存の一致コネクションを返し、既存の一致コネクションがなければ、
最もコストの低い非一致コネクションを見つけ出し、前記最もコストの低い非一致コネクションのコストが高コスト値未満か否か判断し、高コスト値未満であれば、前記最もコストの低い非一致コネクションを前記要求に対して使用するために転用し、高コスト値未満でなければ、
すべてのコネクションの総数がしきい値未満であれば、前記要求に対して使用するために新たなコネクションを作成して前記新たなコネクションを返し、
すべてのコネクションの総数が前記しきい値以上であれば、前記最もコストの低いコネクションを前記要求に対して使用するために転用する、方法。
【請求項７】
前記方法は、マルチテナントクラウドベース環境内の複数のテナントまたはテナントアプリケーションによる使用に適合化されており、前記複数のテナントまたはテナントアプリケーションのうちの特定の各テナントまたはテナントアプリケーションを、ラベル付けされたコネクションタイプと関連付けることができ、前記特定のアプリケーションは前記コネクションタイプを前記特定のテナントのために使用して前記データベースにコネクションする、請求項６に記載の方法。
【請求項８】
前記方法は、マルチテナントクラウドベース環境内の複数のテナントまたはテナントアプリケーションによる使用に適合化されており、前記コネクションプールは、前記特定のアプリケーションが構成コールバックを用いてコンテナを指定または設定し特定のコネクションを前記複数のテナントまたはテナントアプリケーションのうちの１つから前記複数のテナントまたはテナントアプリケーションのうちの別の１つに転用することに対するサポートを含み、これは特定のデータベースコネクションに対しテナントを切換えるという効果を有する、請求項６または７に記載の方法。
【請求項９】
前記コネクションプールロジックは、高コストコネクションとしてラベル付けされたコネクションを識別し、コネクションの総数が特定のしきい値未満の場合は前記高コストコネクションを用いて要求を満たすことがないようにする、請求項６〜８のいずれか１項に記載の方法。
【請求項１０】
前記コネクションプールロジックは、アクティブコネクションとアイドルコネクションの総数が少ないときに特定のタイプの高コストコネクションの使用が要求されると結果として既存のコネクションが転用されるのではなく新たな高コストコネクションが作成されるように、構成される、請求項６〜９のいずれか１項に記載の方法。
【請求項１１】
１つ以上のコンピュータによって読出されて実行されたときに、前記１つ以上のコンピュータに請求項６〜１０のいずれか１項に記載の方法を実行させる、コンピュータ読取可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権に関する注意
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【０００２】
優先権の主張
本願は、２０１３年４月２６日に出願され「SYSTEM AND METHOD FOR CONNECTION LABELING FOR USE WITH CONNECTION POOLS（コネクションプールに対して使用されるコネクションラベリングのためのシステムおよび方法）」と題された米国仮特許出願第６１／８１６，６１０号（代理人整理番号ＯＲＡＣＬ−０５４４８ＵＳ０）、２０１３年６月６日に出願され「SYSTEM AND METHOD FOR CONNECTION LABELING FOR USE WITH CONNECTION POOLS」と題された米国特許出願第１３／９１２，０８６号（代理人整理番号ＯＲＡＣＬ−０５４４８ＵＳ１）、２０１３年４月２６日に出願され「SUPPORT FOR CLOUD-BASED MULTI-TENANT ENVIRONMENTS USING CONNECTION LABELING（コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポート）」と題された米国仮特許出願第６１／８１６，６２３号（代理人整理番号ＯＲＡＣＬ−０５４４９ＵＳ０）、および、２０１３年６月６日に出願され「SUPPORT FOR CLOUD-BASED MULTI-TENANT ENVIRONMENTS USING CONNECTION LABELING」と題された米国特許出願第１３／９１２，０９８号（代理人整理番号ＯＲＡＣＬ−０５４４９ＵＳ１）に基づく優先権の利益を主張し、上記出願各々を本明細書に引用により援用する。
【０００３】
発明の分野
本発明の実施形態は、概してコネクションプールに関し、具体的には、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのためのシステムおよび方法に関する。
【背景技術】
【０００４】
背景
一般的に説明すると、コネクションプールは、データベースコネクションオブジェクトのキャッシュである。コネクションオブジェクトは、ソフトウェアアプリケーションがデータベースに接続するために使用することができる物理的なデータベースコネクションを意味する。実行時において、アプリケーションはプールにコネクションを要求することができる。この要求を満たすことができるコネクションがプールに含まれている場合、プールはそのコネクションをアプリケーションに返す。コネクションが見つからない場合は、新たなコネクションを作成してアプリケーションに返すことができる。アプリケーションは、このコネクションを用いてデータベースにアクセスし作業を実行してからコネクションをプールに返す。そうすればこのコネクションは後のコネクション要求に対して使用できるようになる。
【０００５】
コネクションの作成は、時間という点からしてもリソースという点からしても高いコストを要する可能性がある。たとえば、ネットワーク通信、認証、トランザクションへの登録、およびメモリ割当等のタスクはすべて、コネクションオブジェクトの作成に要する時間とリソースの量の一因となる。コネクションプールは、このようなコネクションオブジェクトを再利用できるようにし、オブジェクトを作成しなければならない回数を減らす。
【０００６】
コネクションプールの一例として、ＪＤＢＣコネクションをキャッシュするためのコネクションプールを提供するOracle Universal Connection Pool（ＵＣＰ）がある。データベース集約型のＪａｖａ（登録商標）アプリケーションは、コネクションプールを使用することによってシステムリソースのパフォーマンス利用を改善することができる。ＵＣＰコネクションプールは、任意のＪＤＢＣドライバを使用することによって、その後プールによって管理される物理コネクションを作成することができる。コネクションプールは、アプリケーションのパフォーマンスおよび可用性要求に基づいて、プールの動作を最適化するために使用されるプロパティを用いて構成することができる。
【発明の概要】
【課題を解決するための手段】
【０００７】
概要
クラウド環境等のマルチテナント環境またはFusion Applicationsのマルチテナント環境に関しては、コネクションのタイプは非常に複雑である場合がある。なぜなら、複数のテナントに対応する必要があるとともに、たとえば異なるテナントからデータベースへのそれぞれのアクセス間のセキュリティを管理する必要があるからである。こういった複雑なコネクションは、高コストコネクションとみなされる。高コストコネクションを扱う手法は、システムパフォーマンス、および／またはクラウド環境内で機能するアプリケーションのパフォーマンスの改善に役立ち得る。
【０００８】
ある実施形態に従い、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのためのシステムおよび方法について説明する。ある実施形態に従うと、このシステムは、ソフトウェアアプリケーションがデータベースへのアクセスを要求するために使用することができるコネクションを提供するコネクションオブジェクトを複数含むコネクションプールを備え、上記コネクションは各々、特定のアプリケーションの構成に従ってラベル付けすることができ、このシステムはまた、高コストコネクションとしてラベル付けされたコネクションを識別し、複数のテナントまたはテナントアプリケーションからの要求を満たすために、高コストコネクションの作成または転用を制御する、コネクションプールロジックを備える。ある実施形態に従うと、このシステムは、高コストコネクションとしてラベル付けされたコネクションを識別しコネクションの総数が特定のしきい値未満の場合は高コストコネクションを用いて要求を満たすことがないようにするコネクションプールロジックを備える。
【図面の簡単な説明】
【０００９】
【図１】ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムを示す。
【図２】ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【図３】ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【図４】ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【図５】ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのプロセスを示すフローチャートである。
【図６】ある実施形態に従う、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのためのシステムを示す。
【図７】ある実施形態に従う、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【図８】ある実施形態に従う、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１０】
詳細な説明
ある実施形態に従い、コネクションプールを含むシステムについて説明する。このシステムは、高コストコネクションを識別し、コネクションの総数が特定のしきい値未満の場合はこれら高コストコネクションを使用して要求を満たすことのないようにすることができる。ある実施形態に従うと、このシステムは、コネクションプールを介してデータベースにアクセスできるようにするクラウドベースのまたはマルチテナントクラウド環境に対して使用することができる、または、この環境に対するサポートを提供することができる。
【００１１】
ある実施形態に従うと、こうすることによって、コネクションプールは、新たな物理コネクションを使用してさまざまなテナントアプリケーション等のさまざまなアプリケーションからのコネクション要求を、既にプールされている可能性がある他のコネクション（たとえば他のテナントコネクション）に再初期化のオーバヘッドを発生させることなく、満たすことができる。
【００１２】
コネクションラベリング
図１は、ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムを示す。図１に示されるように、Fusion Applications環境等のアプリケーションサーバ／データベース環境１００は、データベース１０２に対するアクセスを含むまたは提供することができる。図１にさらに示されるように、このシステムはまた、現在使用中のコネクション１０８およびアイドル状態のコネクション１１０を含むコネクションプール１０６におけるオブジェクトの作成および使用を制御する１０５。
【００１３】
ソフトウェアアプリケーション１０９は、コネクションプールから取出されたコネクション１１１を、このコネクションの使用前に初期化し得る。初期化の例は、アプリケーションコード内でのメソッドコールを必要とする単純な状態の再初期化、または、ネットワーク上でのラウンドトリップを必要とするデータベース操作を含むより複雑な初期化を含む。後者のタイプの初期化のコストは非常に高い可能性がある。
【００１４】
Oracle Universal Connection Pool（ＵＣＰ）といったある種のコネクションプールは、そのコネクションプールをコネクションプールプロパティを用いて構成できるようにしたものである。このプロパティは、プール対応のデータソースインスタンスを通して利用可能なメソッドを取得し設定している。これらメソッドは、プールをプログラムで構成するには便利な方法である。設定されているプールプロパティがない場合、コネクションプールはデフォルトプロパティ値を使用する。
【００１５】
図２は、ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【００１６】
ある実施形態に従うと、コネクションをラベル付けすることにより、アプリケーションは、任意の名称／値のペアをコネクションに付けることができる。そうすると、アプリケーションは、コネクションプールに対し、所望のラベルを有するコネクションを要求することができる。特定のラベルを特定のコネクション状態に関連付けることにより、アプリケーションは、既に初期化されているコネクションをプールから取出すことができるとともに再初期化の時間とコストを避けることができる。コネクションラベリングによってユーザ定義のキーまたは値が意味付けされることはなく、ユーザ定義のキーおよび値の意味は、アプリケーションによってのみ定義される。
【００１７】
たとえば図２に示されるように、コネクションプールは、ここではコネクションＡ１１２およびＢ１１４として示されている、現在使用中の複数のコネクションを含み得る。これらコネクションは各々ラベル付けすることができる。図２に示される例では、コネクションＡ１１２は（青）でラベル付けされ、コネクションＢ１１４は（緑）でラベル付けされている。これらのラベル／色は説明のために設けたものである。さまざまな実施形態に従い、異なるタイプのラベルを使用して異なるコネクションタイプ間の区別を行なってもよい。
【００１８】
図２にさらに示されるように、コネクションプールは、ここではコネクションＣ１１６、Ｄ１１８、Ｅ１２０、Ｆ１２２、Ｇ１２４、およびＮ１２６として示されている、アイドル状態の複数のコネクションも含み得る。各アイドルコネクションも同様にラベル付けすることができる。この例では（青）または（緑）でラベル付けされている。これらのラベル／色も、説明のために設けたものである。
【００１９】
図２にさらに示されるように、ある実施形態に従うと、ソフトウェアアプリケーション１３０が、特定のタイプのコネクション、たとえば（赤）コネクションを用いて、データベースに対する要求を行なうことを求める場合、このアプリケーションはgetConnection（赤）要求１３２を行なえばよい。これに応じて、コネクションプールロジックは、ここではＸ１３４（赤）として示される新たな（赤）コネクションを作成するか、または、既存のアイドルコネクションを、（青または緑）から、ここではＥ１３５（赤）として示される（赤）に転用する。
【００２０】
図３は、ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【００２１】
ある実施形態に従うと、各ソフトウェアアプリケーションは、コストファンクションコールバックを使用して構成情報（configuration information）１３６を提供することができる。構成情報は、このアプリケーションに関して、コネクションの転用に関連するコスト、ならびに、高コストコネクションおよびしきい値等のその他の構成情報を規定している。
【００２２】
たとえば、特定のアプリケーションは、（青）コネクションを（赤）コネクションに転用するコストの値を５０、（緑）コネクションを（赤）コネクションに転用するコストの値を８０、高コストコネクションの値を７０、妥当なしきい値を１０とみなしてもよい。これらの値の意味も同様にアプリケーションによって規定される。上記値は説明のために設けたものである。さまざまな実施形態に従い、異なる数値または数字でない値を用いて異なるコネクションコスト間の区別を行なうことができる。
【００２３】
ある実施形態に従うと、コネクションプールロジックは、プール内の利用可能な各コネクションに対して繰返される。各コネクションに対し、コネクションプールロジックはコストメソッドをコールする。コストメソッドの結果は、コネクションを必要な状態に再構成するのに必要なコストの見積もりを表わす整数である。この値が大きいほどコネクションを再構成する（reconfigure）コストは高い。
【００２４】
ある実施形態に従うと、アプリケーションが提供する（１３８）構成情報１４０を用いて、コネクションプールロジックは、コネクション、特に高コストコネクションを作成するか転用するかの判断１４１を下すことができる。たとえば、ある実施形態に従うと、システムは以下の疑似コードによって示されるものと同様のプロセスを実行することができる。
【００２５】
High-Cost: 70    //高コスト：７０
Threshold: 10    //しきい値：１０
getConnection(Red)
IF perfect match (Red)  //完全一致（赤）？
THEN return it  //そうであれば、これを返す
ELSE find cheapest connection
//そうでなければ、最もコストの低いコネクションを見つけ出す
IF cheapest connection’s cost < High-Cost
//最もコストの低いコネクションのコスト＜高コスト？
THEN repurpose this connection  //そうであれば、このコネクションを転用
ELSE IF sum connections < Threshold
//そうでなければ、コネクションの総数＜しきい値？
THEN create new connection and apply label
//そうであれば、新たなコネクションを作成しラベルを付与
ELSE sum conn ≧ Threshold THEN repurpose cheapest connection
//そうでなければ、コネクションの総数≧しきい値であれば、
//最もコストの低いコネクションを転用
上記例を用いた場合、ある実施形態に従うと、特定のアプリケーションは、高コストを７０、しきい値を１０と定義してもよい。
【００２６】
システムが特定のコネクションタイプ（たとえば赤）の要求を受けたとき、コネクションプールロジックは先ず完全な／既存の一致（すなわちアイドル状態の赤コネクション）があるか否か判断し、あれば、このコネクションをアプリケーションによる使用のために返す。そうでなければ、コネクションプールロジックは、（赤コネクションに）転用できる最もコストの低いコネクションを見つけ出す。最もコストの低いコネクションのコストが高コスト（７０）未満であれば、このコネクションを転用する。そうでなく、コネクションの総数がしきい値（１０）未満であれば、新たな（赤）コネクションを作成しそのようにラベル付けしてアプリケーションに与える。そうでなく、コネクションの総数がしきい値以上であれば、最もコストの低いコネクションを（赤）コネクション１４２として転用する。
【００２７】
図４は、ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【００２８】
ある実施形態に従うと、アクティブコネクションとアイドルコネクションの総数が少ないときに特定のタイプの高コストコネクションの使用が要求されると、結果として、既存の（潜在的にはこれも高コストの）コネクションが転用されるのではなく、新たな高コストコネクションＹ１４４（赤）が作成されるであろう。よって、この新たなタイプのコネクションを、その後のこのタイプの要求に対して使用することができる。この提案されている手法では、結果として、既存の（潜在的にはこれも高コストの）コネクションが転用されるのではなく、高コストコネクションが作成されることになるであろうが、この手法は、特に複雑な、たとえば一般的に高コストコネクションを利用するマルチテナントクラウド環境において、パフォーマンスを大幅に改善することができる。
【００２９】
図５は、ある実施形態に従う、コネクションプールに対して使用されるコネクションラベリングのプロセスを示すフローチャートである。図５に示されるように、ある実施形態に従うと、ステップ１５２において、システムは、データベースへのコネクションの要求（たとえばgetConnection（赤））を受ける。
【００３０】
ステップ１５４において、システムは、完全な／既存のコネクション一致（赤）があるか否か判断する。一致する既存のコネクションがあれば、ステップ１５６で、既存の（赤）コネクションが返される。そうでなければ、ステップ１５８で、最もコストの低い既存の非一致コネクション（たとえば青、緑）を見つけ出す。
【００３１】
ステップ１６０で、システムは、最もコストの低い非一致コネクションのコストが高コスト未満か否か判断する。高コスト未満であれば、ステップ１６２で、この最もコストの低い非一致コネクションを（赤）コネクションとして転用する。
【００３２】
ステップ１６４で、システムは、すべてのコネクションの総数がしきい値未満か否か判断する。しきい値未満であれば、ステップ１６６で、新たなコネクションが作成され、適切なコネクションラベル（赤）が新たなコネクションに付与される。そうでない場合として、ステップ１６８で、すべてのコネクションの総数がしきい値以上であれば、最もコストの低いコネクションが（赤）コネクションとして転用される。
【００３３】
これまで説明してきたのは、コネクション、特に高コストコネクションを作成するか転用するか判断するための１つの手法である。他の実施形態および実装例に従い、他の手法を使用してもよい。また、先に述べたようにラベル／色は説明のために設けているのであって、他の実施形態では異なるタイプのラベルを使用して異なるコネクションタイプ間の区別を行なってもよい。
【００３４】
マルチテナント環境に対するコネクションラベリング
ある実施形態に従うと、コネクションプールに対して使用されるコネクションラベリングのためのシステムおよび方法は、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含み得る。ある実施形態に従うと、このタイプの環境は「サービスとしてのアプリケーション」（Application as a Service）（ＡａａＳ）環境とみなすことができる。
【００３５】
図６は、ある実施形態に従う、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのためのシステムを示す。図６に示されるように、マルチテナントクラウド環境は、Fusion Applications環境等のアプリケーションサーバ／データベース環境１００を含み得る。環境１００は、クラウドベース環境１７０内の複数のテナントまたはテナントアプリケーション１７２、１７４、１７６が使用する、データベース１０２に対するアクセスを含むまたは提供する。図６にさらに示されるように、このシステムはまた、コネクションプール１０６におけるオブジェクトの作成を制御するコネクションプールロジック１０４を含む。
【００３６】
テナントがクラウド１７１を介してアクセスするソフトウェアアプリケーションは、コネクションプールから取出されたコネクション１７８を、このコネクションの使用前に初期化し得る。先に述べたように、初期化の例は、アプリケーションコード内でのメソッドコールを必要とする単純な状態の再初期化、または、ネットワーク上でのラウンドトリップを必要とするデータベース操作を含むより複雑な初期化を含み、後者のタイプの初期化のコストは非常に高い可能性がある。これも先に述べたように、コネクションをラベル付けすることにより、アプリケーションは、任意の名称／値のペアをコネクションに付けることができ、そうすると、アプリケーションは、コネクションプールに対し、所望のラベルを有するコネクションを要求することができる。特定のラベルを特定のコネクション状態に関連付けることにより、アプリケーションは、既に初期化されているコネクションをプールから取出すことができるとともに再初期化の時間とコストを避けることができる。ここでも、コネクションラベリングによってユーザ定義のキーまたは値が意味付けされることはなく、ユーザ定義のキーおよび値の意味は、アプリケーションによってのみ定義される。
【００３７】
たとえば、図６に示されるように、コネクションプールは、ここではコネクションＡ１１２およびＢ１１４として示されている、現在使用中の複数のコネクション１０８を含み得るとともに、ここではコネクションＣ１１６、Ｄ１１８、Ｅ１２０、Ｆ１２２、Ｇ１２４、およびＮ１２６として示されている、アイドル状態の複数のコネクション１１０も含み得る。各コネクションは同様にラベル付けすることができ、この例では（青）または（緑）でラベル付けされている。ここでも、これらのラベル／色は説明のために設けたものであり、さまざまな実施形態に従って、異なるタイプのラベルを使用して異なるコネクションタイプ間の区別を行なってもよい。
【００３８】
図７は、ある実施形態に従う、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのためのシステムをさらに示す。
【００３９】
ある実施形態に従うと、ソフトウェアアプリケーション１３０が、特定のタイプのコネクション、たとえば（赤）コネクションを用いて、データベースに対する要求を行なうことを求める場合、このアプリケーションはgetConnection（赤）要求１８０を行なえばよい。これに応じて、コネクションプールロジックは、新たな（赤）コネクションを作成するか、または、既存のアイドルコネクションを（青または緑）から（赤）に転用する。
【００４０】
ある実施形態に従うと、コネクションプールは、アプリケーションがconfiguration()コールバック（構成コールバック）を用いて「SET CONTAINER」を指定すなわちコンテナを設定し特定のコネクションをあるテナントから別のテナントに転用することをサポートし、これは、特定のデータベースコネクション上のテナントを切換えるという効果を有する。
【００４１】
ある実施形態に従うと、各ソフトウェアアプリケーションは、コストファンクションコールバックを使用して構成情報１３６を提供することができる。構成情報は、このアプリケーションに関して、コネクションの転用に関連するコスト、ならびに、高コストコネクションおよびしきい値等のその他の構成情報を規定している。
【００４２】
たとえば、特定のアプリケーションは、（青）コネクションを（赤）コネクションに転用するコストの値を５０、（緑）コネクションを（赤）コネクションに転用するコストの値を８０、高コストコネクションの値を７０、妥当なしきい値を１０とみなしてもよい。これらの値の意味も同様にアプリケーションによって規定される。上記値は説明のために設けたものである。さまざまな実施形態に従い、異なる数値または数字でない値を用いて異なるコネクションコスト間の区別を行なうことができる。
【００４３】
ある実施形態に従うと、コネクションプールロジックは、プール内の利用可能な各コネクションに対して繰返される。各コネクションに対し、コネクションプールロジックはコストメソッドをコールする。コストメソッドの結果は、コネクションを必要な状態に再構成するのに必要なコストの見積もりを表わす整数である。この値が大きいほどコネクションを再構成するコストは高い。
【００４４】
ある実施形態に従うと、アプリケーションが提供する構成情報を用いて、コネクションプールロジックは、コネクション、特に高コストコネクションを作成するか転用するかの判断を下すことができる。たとえば、ある実施形態に従うと、システムは上記プロセスと同様のプロセスを実行することができる。
【００４５】
上記例を用いた場合、ある実施形態に従うと、特定のアプリケーションは、高コストを７０、しきい値を１０と定義してもよい。システムが特定のコネクションタイプ（たとえば赤）の要求を受けたとき、コネクションプールロジックは先ず完全な／既存の一致（すなわちアイドル状態の赤コネクション）があるか否か判断し、あれば、このコネクションをアプリケーションによる使用のために返す。そうでなければ、コネクションプールロジックは、（赤コネクションに）転用できる最もコストの低いコネクションを見つけ出す。最もコストの低いコネクションのコストが高コスト（７０）未満であれば、このコネクションを転用する。そうでなく、コネクションの総数がしきい値（１０）未満であれば、ここではＺ１８４（赤）として示されている新たな（赤）コネクションを作成しそのようにラベル付けしてアプリケーションに与える。そうでなく、コネクションの総数がしきい値以上であれば、最もコストの低いコネクションを、ここではＥ１８２（赤）として示されている（赤）コネクションとして転用する。
【００４６】
ある実施形態に従うと、アクティブコネクションおよびアイドルコネクションの総数が少ないときに特定のタイプの高コストコネクションの使用が要求されると、その結果、既存の（潜在的にはこれも高コストの）コネクションが転用されるのではなく、新たな高コストコネクションが作成されるであろう。よって、この新たなタイプのコネクションを、その後のこのタイプの要求に対して使用することができる。
【００４７】
この提案されている手法では、結果として、既存の（潜在的にはこれも高コストの）コネクションが転用されるのではなく、高コストコネクションが作成されることになるであろうが、この手法は、特に複雑な、たとえば一般的に高コストコネクションを利用するマルチテナントクラウド環境において、パフォーマンスを大幅に改善することができる。
【００４８】
たとえば、図７に示されるように、このシステムは、クラウドベース環境内の複数のテナントまたはテナントアプリケーションによって使用されることができる。このようなマルチテナント環境では、コネクションのタイプは非常に複雑である場合がある。なぜなら、複数のテナントに対応する必要があるとともに、たとえば異なるテナントからデータベースへのそれぞれのアクセス間のセキュリティを管理する必要があるからである。本明細書に記載の手法を用いて、クラウド環境内で機能するアプリケーションのパフォーマンスを改善することができる。
【００４９】
図８は、ある実施形態に従う、コネクションラベリングを使用するクラウドベースのマルチテナント環境に対するサポートを含む、コネクションプールに対して使用されるコネクションラベリングのプロセスを示すフローチャートである。図８に示されるように、ある実施形態に従うと、ステップ１９２で、複数のテナントまたはテナントアプリケーションが使用するデータベースへのアクセスを含むまたは提供するマルチテナントクラウド環境が提供される。
【００５０】
ステップ１９４で、ソフトウェアアプリケーションがデータベースへのアクセスを要求するために使用することができるコネクションを提供するコネクションプールが提供され、コネクションは特定のアプリケーションの構成に従ってラベル付けすることができる。
【００５１】
ステップ１９６で、複数のテナントまたはテナントアプリケーションからのコネクション要求をコネクションラベリングおよびコネクションコスト情報とともにサポートするようにソフトウェアアプリケーションが構成される。
【００５２】
ステップ１９８で、高コストコネクションとしてラベル付けされたコネクションが識別され、システムはその後、高コストコネクションの作成または転用を制御して複数のテナントまたはテナントアプリケーションからの要求を満たす。
【００５３】
実装例
以下は、さまざまな実施形態に従う、Ｏｒａｃｌｅ  ＵＣＰ環境においてコネクションプールに対しコネクションラベリングを如何にして使用できるかを示す例である。他の実施形態に従い、たとえばWebLogicサーバコネクションプールまたはその他の種類のコネクションプールに対して使用される機能を提供することができる。
【００５４】
Ｏｒａｃｌｅ  ＵＣＰにおいて、コネクションラベリング（Connection Labeling）（ＣＬ）は、高コストコネクションを識別するためのメカニズムを提供する。ある実施形態に従うと、ＣＬは、少なくとも離散値をサポートしなければならず、ある範囲の値をサポートし得る。ＣＬは、再利用高コストコネクションしきい値の構成パラメータ（minpoolsize、maxpoolsizeと同様）を提供し得る。利用できる最小コストのコネクションが高コストコネクションであった場合、このシステムは、現在のプールサイズを、再利用高コストコネクションしきい値に対してテストするとともに、最小プールサイズに対してテストすることができる。現在のプールサイズ＜最小プールサイズ、または、現在のプールサイズ＜しきい値であれば、システムは新たなコネクションを返す。そうではなく、（現在のプールサイズ＞＝しきい値）であれば、システムは、最小コストの高コストコネクションを返す。利用できるコネクションがないときは、現在の動作を保ち（すなわち最大プールサイズを条件として新たなコネクションを返し、＞＝最大プールサイズであれば、タイムアウト等を条件として、コネクションが利用できるようになるのを待つ）。
【００５５】
ある実施形態に従うと、ＵＣＰコネクションラベリング動作、ＵＣＰのコネクションラベリングの特徴は、プール内のコネクションの初期化および再初期化のコストをいずれかのアプリケーションが求めるための、コネクションラベリングコールバックの実装おけるcost()メソッドをサポートする。このプールは、アプリケーションの要求に合わせて十分にカスタマイズすることができるフレキシブルなコスト値の範囲をサポートする。プールは、コールバックから返されたcost()値を用いて、各コネクション要求を満たすために最適のコネクション候補を決定する。これは常に最小コスト値のコネクションを選ぶ。０である最小コスト値は、再初期化がないことを示す。一方、Integer.MAX_VALUEは、要求を満たすために新たな物理コネクションを使用することをプールに強制する。プールは、ラベルが付与されたコネクションとラベルがないコネクションを区別する。コネクションラベリングが起動されると、プールは常に、ラベルが付与されているプール内のコネクションを先ずチェックし、要求を満たすために利用できるラベル付きのコネクションを見つけ出すことができない場合のみ、ラベルのないコネクションから利用できるものを見つけ出そうとする。これに失敗したときは、プールにまだ成長の余地があれば、新たな物理コネクションを作成しようとする。
【００５６】
さまざまな実施形態に従う、上記の変形は、下記のものを含み得る。
新たなＵＣＰプールのプロパティとしてConnectionLabelingHighCost（ＵＣＰデータソースPoolxxxDataSource上でも利用可能）を追加する。設定値が０よりも大きいとき、コスト値がこのプロパティ値以上であるコネクションは、「高コスト」コネクションとみなされる。デフォルト値はInteger.MAX_VALUEである。たとえば、プロパティ値が５に設定されている場合、ラベリングコールバックからの計算されたコスト値が５以上であるコネクションは、高コストコネクションとみなされる。
【００５７】
新たなＵＣＰプールのプロパティとしてHighCostConnectionReuseThreshold（ＵＣＰデータソースPoolxxxDataSource上でも利用可能）を追加する。設定値が０よりも大きいとき、これは、プール内のコネクションの総数のしきい値を指定し、このしきい値よりも大きい場合、コネクションラベリングはプール内の高コストコネクションを再利用して要求を満たすことができる。このしきい値よりも小さい場合、コネクションラベリングは、利用できる低コストのコネクションを使用するか、または新たな物理コネクションを作成して、要求を満たす。たとえばこのプロパティ値が２０に設定されている場合、利用できる低コストのコネクションがなくコネクションの総数が２０に達すると、コネクションラベリングは高コストコネクションを再利用する。HighCostConnectionReuseThresholdのデフォルト値は０である。コネクションラベリングのコールバックは、このプロパティの実施と同時に登録されねばならない。有効なコネクションラベリングのコールバック登録は、コネクションラベリングを起動し続ける。プーリング（pooling）ロジックは、コスト−選択の繰返し後に、最小コスト結果がConnectionLabelingHighCost以上のとき、新たなしきい値をチェックする。この新たなしきい値がチェックされる時点におけるコネクションの総数は、アクティブなコネクション作成要求の数を説明する（プールはこの情報を抽出するためのコードを既に有している）。このチェックは、MinPoolSizeおよびMaxPoolSize双方を説明するものでなければならない。なお、コスト値としてInteger.MAX_VALUEを有する、ラベル付けされたコネクションは、新たなしきい値に達した後であっても再利用されない。このことは、新たなしきい値およびConnectionLabelingHighCostが設定されていないときの既存のコネクションラベリングの動作と一致する。
【００５８】
ある実施形態に従うと、ラベルを有するコネクション要求（すなわちラベル付けされた要求）を満たすために、プール内のラベルがない（ステートレスな）コネクションを再利用してはならないという要件はない。HighCostConnectionReuseThresholdに達しコネクションラベリングが起動されると、プールは引続き、新たな物理コネクションの作成よりもラベルがない（ステートレスな）コネクションを優先する。
【００５９】
ある実施形態に従うと、特殊なコネクションラベリングコールバック実装をサポートするために、いずれのコネクションに対しても、アプリケーションは、高コストを考慮し、このようなコールバックにおけるcost()メソッドは、（１）プールサイズがHighCostConnectionReuseThresholdに達する前に、単にこのようなコネクションに対してInteger.MAX_VALUEを返し、（２）しきい値に達した後は実際の高コスト値を返すようにスイッチする。これにより、しきい値を下回った場合に、既存のＵＣＰコードが高コストコネクションを再利用して要求を満たすのを効果的に禁止する。コールバック実装は、プールサイズをしきい値に対して動的にチェックすることができる。
【００６０】
本発明の実施形態は、本開示の教示に従いプログラムされた、１つ以上のプロセッサ、メモリ、および／またはコンピュータ読取可能な記録媒体を含む、従来の汎用もしくは専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを１つ以上用いて、適宜実装し得る。適切なソフトウェアコーディングは、熟練したプログラマが本開示の教示に基づいて容易に準備できるものである。これはソフトウェア技術における当業者には明らかであろう。
【００６１】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または（１つまたは複数の）コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体の例は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／またはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【００６２】
本発明の実施形態に関するこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者が本発明のさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。
【図１】
0006606064.tif 000002
【図２】
0006606064.tif 000003
【図３】
0006606064.tif 000004
【図４】
0006606064.tif 000005
【図５】
0006606064.tif 000006
【図６】
0006606064.tif 000007
【図７】
0006606064.tif 000008
【図８】
0006606064.tif 000009