(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022070941
(43)【公開日】2022-05-13
(54)【発明の名称】マルチテナント・データベース環境においてテナントの動的再配置を提供するためのシステムおよび方法
(51)【国際特許分類】
G06F 16/27 20190101AFI20220506BHJP
【FI】
G06F16/27
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022018786
(22)【出願日】2022-02-09
(62)【分割の表示】P 2018533870の分割
【原出願日】2017-08-03
(31)【優先権主張番号】15/227,897
(32)【優先日】2016-08-03
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ドゥ・ラバルネ,ジャン
(72)【発明者】
【氏名】バーマ,サウラブ
(72)【発明者】
【氏名】ヘグド,ビディヤ
(72)【発明者】
【氏名】マヒダラ,チャンドラ・セカール・クリシュナ
(72)【発明者】
【氏名】ナマチバヤム,アラムバラータナタン
(57)【要約】 (修正有)
【課題】接続プールの利用と、テナントの動的再配置のサポートとを含むマルチテナント環境においてデータベースへアクセスするシステム、装置、方法及び記憶媒体を提供する。
【解決手段】ソフトウェアアプリケーションは、テナントに代わって接続プールから接続を獲得する。これによって、ソフトウェアアプリケーション又はテナントをデータベースにアクセスできるようにする。再配置プロセスによって、マルチテナント又はその他のクライアントアプリケーションに対応付けられたテナントを、クライアントアプリケーションにとってニアゼロダウンタイムで、複数のコンテナ・データベース間で再配置できるようにし、当該再配置できるようにすることは、基礎をなすアプリケーションを変更する必要なしに、存在している接続のドレインを管理することと、新しい接続を移行することとを含む。
【選択図】
図9
【特許請求の範囲】
【請求項1】
接続プールの利用と、テナントの動的再配置のサポートとを含む、マルチテナント環境においてデータベースへのアクセスを提供するためのシステムであって、
プロセッサ、および前記プロセッサを実行するアプリケーションサーバまたはデータベース環境のうちの少なくとも一方を含むコンピュータと、
ソフトウェアアプリケーションが前記接続プールに接続を要求でき、且つ、提供される接続をデータベースにアクセスするために利用できるようにする、接続プールとを備え、
前記接続プールは、クライアントアプリケーションに対応付けられたテナントを複数のデータベース位置間で再配置できるようにし、前記再配置できるようにすることは、
前記テナントに本来対応付けられていたデータベース位置への接続をドレインすることを制御することと、
前記テナントに対応付けられる新しいデータベース位置に接続を移行することとを含む、システム。
【請求項2】
存在している接続をドレインし、第1のコンテナ・データベースの第1のプラガブル・データベースから第2のコンテナ・データベースの新しい位置へ新しい接続を移行している間、
前記第2のコンテナ・データベースの第2のプラガブル・データベースは、オープンされており、
前記第1のプラガブル・データベース上のクライアントセッションは、終了され、前記新しい位置に対応付けられた移行されたサービスに再接続できるようにされる、請求項1に記載のシステム。
【請求項3】
システム・イベントは、前記テナントに本来対応付けられていた前記データベース位置がシャットダウンすることを前記接続プールに通知し、および、対応付けられた接続をクローズして移行の準備を行うために、利用される、請求項1または2に記載のシステム。
【請求項4】
リスナーをさらに備え、前記リスナーは、前記アプリケーションサーバまたは前記データベース環境のうちの前記少なくとも一方におけるデータベース・ドライバに前記新しいデータベース位置への新しい接続要求を送信させるために、リダイレクトを前記データベース・ドライバに送信するように構成される、請求項1~3のうちのいずれか1項に記載のシステム。
【請求項5】
前記システムは、ソフトウェアアプリケーションが特定の接続状態に特定のラベルを対応付けることができるようにする、請求項1~4のうちのいずれか1項に記載のシステム。
【請求項6】
前記接続プールは、各テナントに対応付けられた異なるデータベース位置を含む、複数のテナントをサポートする、請求項1~5のうちのいずれか1項に記載のシステム。
【請求項7】
接続プールの利用と、テナントの動的再配置のサポートとを含む、マルチテナント環境においてデータベースへのアクセスを提供するための方法であって、
プロセッサ、および前記プロセッサを実行するアプリケーションサーバまたはデータベース環境のうちの少なくとも一方を含むコンピュータにおいて、接続プールを提供するステップを備え、前記接続プールは、接続オブジェクトを含み、ソフトウェアアプリケーションが前記接続プールに接続を要求でき、且つ、提供される接続をデータベースにアクセスするために利用できるようにし、前記方法は、さらに、
前記接続プールによって、クライアントアプリケーションに対応付けられたテナントを複数のデータベース位置間で再配置するステップを備え、前記再配置するステップは、
前記テナントに本来対応付けられていたデータベース位置への接続をドレインすることを制御するステップと、
前記テナントに対応付けられる新しいデータベース位置に接続を移行するステップとを含む、方法。
【請求項8】
存在している接続をドレインし、第1のコンテナ・データベースの第1のプラガブル・データベースから第2のコンテナ・データベースの新しい位置へ新しい接続を移行している間、
前記第2のコンテナ・データベースの第2のプラガブル・データベースは、オープンされており、
前記第1のプラガブル・データベース上のクライアントセッションは、終了され、前記新しい位置に対応付けられた、移行されたサービスに再接続できるようにされる、請求項7に記載の方法。
【請求項9】
システム・イベントは、前記テナントに本来対応付けられていた前記データベース位置がシャットダウンすることを前記接続プールに通知し、および、対応付けられた接続をクローズして移行の準備を行うために、利用される、請求項7または8に記載の方法。
【請求項10】
リスナーを提供するステップをさらに備え、前記リスナーは、前記アプリケーションサーバまたは前記データベース環境のうちの前記少なくとも一方におけるデータベース・ドライバに前記新しいデータベース位置への新しい接続要求を送信させるために、リダイレクトを前記データベース・ドライバに送信するように構成される、請求項7~9のうちのいずれか1項に記載の方法。
【請求項11】
ソフトウェアアプリケーションが特定の接続状態に特定のラベルを対応付けることができるようにする、請求項7~10のうちのいずれか1項に記載の方法。
【請求項12】
前記接続プールは、各テナントに対応付けられた異なるデータベース位置を含む、複数のテナントをサポートする、請求項7~11のうちのいずれか1項に記載の方法。
【請求項13】
命令を格納した、非一時的なコンピュータ読み取り可能な記憶媒体であって、前記命令は、1つ以上のコンピュータによって読み出されて実行されると、前記1つ以上のコンピュータに、
プロセッサ、および前記プロセッサを実行するアプリケーションサーバまたはデータベース環境のうちの少なくとも一方を含むコンピュータにおいて、接続プールを提供するステップを備え、前記接続プールは、接続オブジェクトを含み、ソフトウェアアプリケーションが前記接続プールに接続を要求でき、且つ、提供される接続をデータベースにアクセスするために利用できるようにし、
前記接続プールによって、クライアントアプリケーションに対応付けられたテナントを複数のデータベース位置間で再配置するステップを備え、前記再配置するステップは、
前記テナントに本来応付けられていたデータベース位置への接続をドレインすることを制御するステップと、
接続を前記テナントに対応付けられる新しいデータベース位置に移行するステップとを含む方法を実行させる、非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項14】
存在している接続をドレインし、第1のコンテナ・データベースの第1のプラガブル・データベースから第2のコンテナ・データベースの新しい位置へ新しい接続を移行している間、
前記第2のコンテナ・データベースの第2のプラガブル・データベースは、オープンされており、
前記第1のプラガブル・データベース上のクライアントセッションは、終了され、前記新しい位置に対応付けられた、移行されたサービスに再接続できるようにされる、請求項13に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項15】
システム・イベントは、前記テナントに本来対応付けられていた前記データベース位置がシャットダウンすることを前記接続プールに通知し、および、対応付けられた接続をクローズして移行の準備を行うために、利用される、請求項13または14に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項16】
リスナーを提供するステップをさらに備え、前記リスナーは、前記アプリケーションサーバまたは前記データベース環境のうちの前記少なくとも一方におけるデータベース・ドライバに前記新しいデータベース位置への新しい接続要求を送信させるために、リダイレクトを前記データベース・ドライバに送信するように構成される、請求項13~15のうちのいずれか1項に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項17】
ソフトウェアアプリケーションが特定の接続状態に特定のラベルを対応付けることができるようにする、請求項13~16のうちのいずれか1項に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項18】
前記接続プールは、各テナントに対応付けられた異なるデータベース位置を含む、複数のテナントをサポートする、請求項13~17のうちのいずれか1項に記載の非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項19】
機械読み取り可能なフォーマットのプログラム命令を備えるコンピュータプログラムであって、前記プログラム命令は、コンピュータシステムによって実行されると、前記コンピュータシステムに、請求項7~12のうちのいずれか1項に記載の方法を実行させる、コンピュータプログラム。
【請求項20】
非一時的な機械読み取り可能なデータ記憶媒体に格納された請求項19に記載のコンピュータプログラムを備えるコンピュータ・プログラム・プロダクト。
【請求項21】
請求項7~12のうちのいずれか1項に記載の方法を実行するための手段を備えた装置。
【発明の詳細な説明】
【技術分野】
【0001】
著作権表示
本特許文献の開示の一部には、著作権保護の対象となる資料が含まれる。特許文献または特許開示は、米国特許庁の特許ファイルおよび記録に掲載されているため、著作権者は、何人によるその複製に対しても異議はないが、そうでない場合には、例外なくすべての著作権を保有する。
【0002】
優先権の主張
本願は、2016年8月3日に出願され、「SYSTEM AND METHOD FOR PROVIDING DYNAMIC RELOCATION OF TENANTS IN A MULTITENANT DATABASE ENVIRONMENT」と題された米国特許出願第15/227,897号に基づく優先権の利益を主張し、当該出願を、引用により本明細書に援用する。
【0003】
発明の分野
本発明の実施形態は、全体的に、ソフトウェアアプリケーションサーバおよびデータベースに関し、具体的には、接続プールの利用と、テナントの動的再配置のサポートとを含む、マルチテナント環境においてデータベースへのアクセスを提供するためのシステムおよび方法に関する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
背景
一般的に説明すると、データベース環境において、接続プールは、接続オブジェクトのキャッシュとして動作する。接続オブジェクトの各々は、ソフトウェアアプリケーションがデータベースに接続するために使用できる接続を表す。実行時、アプリケーションは、接続プールに接続を要求することができる。接続プールが特定の要求に応えることができる接続を含む場合、接続プールは、その接続を使用のためにアプリケーションに返すことができる。場合によっては、適した接続が見つからない場合、新しい接続を作成してアプリケーションに返すことができる。アプリケーションは、データベースにアクセスして作業を行うために接続を借り、その後、接続をプールに返却することができ、接続は、返却されると、同じまたはその他のアプリケーションからの次の接続要求のために利用可能にすることができる。
【課題を解決するための手段】
【0005】
概要
本明細書において、接続プールの利用と、テナントの動的再配置のサポートとを含む、マルチテナント環境においてデータベースへのアクセスを提供するためのシステムおよび方法を説明する。実施形態によると、ソフトウェアアプリケーションは、テナントに代わって接続プールから接続を獲得することができ、これによって、ソフトウェアアプリケーションまたはテナントをデータベースにアクセスできるようにする。再配置プロセスによって、マルチテナントまたはその他のクライアントアプリケーションに対応付けられたテナントを、クライアントアプリケーションにとってニアゼロ(near-zero)ダウンタイムで、たとえば、複数のコンテナ・データベース間で再配置できるようにし、当該再配置できるようにすることは、基礎をなすアプリケーションを変更する必要なしに、存在している接続のドレイン(draining)を管理することと、新しい接続を移行す
ることとを含む。
【図面の簡単な説明】
【0006】
【
図1】実施形態に係る、接続プールを備えるシステムを説明する図である。
【
図2】実施形態に係る、シャード・データベースの利用のサポートを含む、接続プールを備えるシステムをさらに説明する図である。
【
図3】実施形態に係る、マルチテナント環境での利用のサポートを含む、接続プールを備えるシステムをさらに説明する図である。
【
図4】実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートを説明する図である。
【
図5】実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートをさらに説明する図である。
【
図6】実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートをさらに説明する図である。
【
図7】実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートをさらに説明する図である。
【
図8】実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートをさらに説明する図である。
【
図9】実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートをさらに説明する図である。
【
図10】実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートを提供するための方法を説明する図である。
【発明を実施するための形態】
【0007】
詳細な説明
上述したように、接続プールは、接続オブジェクトのキャッシュとして動作する。接続オブジェクトの各々は、ソフトウェアアプリケーションがデータベースに接続するために使用できる接続を表す。実行時、アプリケーションは、接続プールに接続を要求できる。接続プールが特定の要求に応えることができる接続を含む場合、接続プールは、その接続を使用のためにアプリケーションに返すことができる。場合によっては、適した接続が見つからない場合、新しい接続を作成してアプリケーションに返すことができる。アプリケーションは、データベースにアクセスして作業を行うために接続を借り、その後、接続をプールに返却することができ、接続は、返却されると、同じまたはその他のアプリケーションからの次の接続要求のために利用可能にすることができる。
【0008】
接続オブジェクトを作成することは、時間とリソースの観点からいえば、高くつく傾向がある。たとえば、ネットワーク通信、認証、トランザクション参加、およびメモリ割り当てなどのタスクは、すべて、特定の接続オブジェクトを作成するのにかかる時間とリソースの量の一因となる。接続プールがこのような接続オブジェクトの再利用を可能にするため、さまざまなオブジェクトを作成しなければならない回数を減らすことに役立つ。
【0009】
接続プールの一例に、JDBC(Java(登録商標) Database Connectivity)接続をキャッシュするための接続プールを提供するUCP(Oracle Universal Connection Pool)がある。たとえば、接続プールは、データベースへの接続を作成するために、JDBCドライバと共に動作することができ、接続は、その後、プールによって維持され、要求側ソフトウェアアプリケーションの性能要件および可用性要件に基づいて、プールの挙動をさらに最適化するために使用されるプロパティを有して構成できる。
【0010】
接続のラベル付け
図1は、実施形態に係る、接続プールを備えるシステムを説明する図である。
【0011】
図1に示すように、実施形態によると、アプリケーションサーバまたはデータベース環境100は、物理的なコンピュータ資源101(たとえば、プロセッサ/CPU、メモリ、およびネットワークコンポーネント)、たとえば、Oracle WebLogic Server、Oracle Fusion Middleware、またはその他のアプリケーションサーバもしくはデータベース環境を含み、Oracleデータベースなどのデータベース102、またはその他の種類のデータベースへのアクセスを含むまたは提供することができる。
【0012】
図1にさらに示すように、実施形態によると、システムは、接続プールロジック104またはプログラムコードも備え、接続プールロジック104またはプログラムコードは、コンピュータによって実行されると、たとえば、ソフトウェアアプリケーションが現在使用中の接続(108)、および、アイドル状態の接続(110)または現在使用されていない接続を含む、接続プール106における接続オブジェクトの作成および使用を制御(105)する。
【0013】
ソフトウェアアプリケーションは、接続プールから取り出された接続を、データベースにアクセスしたり、データベースで作業を行ったりするために当該接続を使用する前に、初期化することができる。たとえば、初期化には、アプリケーションコード内でメソッド呼び出しが必要な単純状態再初期化、または、ネットワークのラウンドトリップ(round trip)が必要なデータベース動作を含んだ、より複雑な初期化などがある。後者のタイプの初期化の計算コストは、かなり大きいだろう。
【0014】
接続プール(たとえば、UCP)によっては、接続プールプロパティを使用して構成できるものがあり、接続プールは、getメソッドおよびsetメソッドを有し、プールが有効なデータソースインスタンスを通して利用可能である。これらのgetメソッドおよびsetメソッドは、プールをプログラムで構成するための便利な方法を提供する。プールプロパティが設定されていない場合、接続プールは、デフォルトのプロパティ値を使用する。
【0015】
実施形態によると、接続をラベル付けすることによって、クライアントソフトウェアアプリケーションは、任意の名前/値ペアを接続に結びつけることができる。次に、アプリケーションは、所望のラベルを有する接続を接続プールに要求できる。特定のラベルを特定の接続状態と対応付けることによって、アプリケーションは、すでに初期化された接続をプールから取り出せる可能性があり、再初期化にかかる時間とコストを回避できる。接続のラベル付けは、ユーザ定義キーまたは値になんら意味を加えない。すべてのユーザ定義キーおよび値の意味は、アプリケーションによってのみ定義される。
【0016】
たとえば、
図1に示すように、実施形態によると、接続プールは、ここでは、接続A 112およびB 114と示される、ソフトウェアアプリケーションによって現在使用中の複数の接続を含めることができる。接続の各々はラベル付けすることができ、たとえば、接続Aには(青)がラベル付けされ、接続Bには(緑)がラベル付けされる。これらのラベル/色は、説明のために提供されており、上述したように、クライアントアプリケーションによって接続に結びつけられた任意の名前/値ペアであり得る。さまざまな実施形態によると、互いに異なる接続の種類を区別するために、異なる種類のラベルを利用することができ、互いに異なるアプリケーションは、互いに異なるラベル/色を特定の接続の種類に結びつけることができる。
【0017】
また、
図1にさらに示すように、実施形態によると、接続プールは、ここでは接続C
116、D 118、E 120、F 122、G 124、およびN 126と示される、アイドル状態またはソフトウェアアプリケーションによって現在使用されていない複数の接続を含めることができる。アイドル状態の接続の各々は、同様に、この例示において、(青)または(緑)とラベル付けすることができ、ここでも、これらのラベル/色は、説明のために提供される。
【0018】
図1にさらに示すように、実施形態によると、ソフトウェアアプリケーション130が、特定の種類の接続、たとえば、(赤)接続を利用してデータベースへの要求を行いたい場合、アプリケーションは、「getConnection(赤)」要求132を行うことができる。これに応答して、接続プールロジックは、ここではX 134(赤)と示される、新しい(赤)接続を作成する、または、ここではE 135(赤)と示される、存在しているアイドル状態の接続を(青または緑)から(赤)へ転用する。
【0019】
シャード・データベース
実施形態によると、シャーディングは、複数の独立した物理データベース間にデータを水平分割するデータベースのスケーリング技術である。各物理データベースに格納されたデータ部分は、シャードと呼ばれる。ソフトウェア・クライアント・アプリケーションの観点からみると、すべての物理データベースの集まりは、1つの論理データベースに見える。
【0020】
実施形態によると、システムは、シャード・データベースと共に接続プールを利用することのサポートを含めることができる。シャード・ディレクタまたはリスナーによって、ソフトウェア・クライアント・アプリケーションはデータベース・シャードへアクセスできるにようになる。接続プール(たとえば、UCP)およびデータベース・ドライバ(たとえば、JDBCドライバ)は、接続チェックアウト中またはその後にクライアントアプリケーションにシャード・キーを提供させ、クライアントアプリケーションが指定したシャード・キーを認識し、クライアントアプリケーションによる特定のシャードまたはチャンクへの接続を可能にするように構成できる。この手法は、接続リソースの効率的な再利用を可能にし、且つ、適切なシャードへのより速いアクセスを可能にする。
【0021】
図2は、実施形態に係る、シャード・データベースの利用のサポートを含む、接続プールを備えるシステムをさらに説明する図である。
【0022】
実施形態によると、たとえば、特定のシャード内で各ロー(row)が格納される場所を決定する1つ以上のカラム(column)としてシャード・キー(SHARD_KEY)を利用して、データベース・テーブルを分割できる。シャード・キーは、接続データ(CONNECT_DATA)の属性として、接続文字列または接続記述子に設けることができる。たとえば、シャード・キーには、データベースのVARCHAR2、CHAR、DATE、NUMBER、またはTIMESTAMPなどがある。また、実施形態によると、シャード・データベースは、シャード・キーまたはシャードグループキーなしで接続を受け付けることができる。
【0023】
実施形態によると、システム性能およびデータ可用性へのシャーディングの影響を低減するために、各シャードは、小さな部分またはチャンクにさらに分割できる。各チャンクは、あるシャードから別のシャードへ移動できるシャーディングの単位となる。また、チャンクは、シャード・キー・マッピングへの間接参照を追加することによって、ルーティングを簡素化する。
【0024】
たとえば、各チャンクをシャード・キー値の範囲に自動的に対応付けることができる。ユーザ提供のシャード・キーを特定のチャンクにマッピングし、そのチャンクを特定のシ
ャードにマッピングすることができる。データベース動作が特定のシャードに存在しないチャンクに対して動作を行おうとした場合、エラーが発生する。シャードグループを使用する場合、各シャードグループは、特有の値のシャードグループ識別子を有するチャンクの集まりである。
【0025】
シャードアウェア・クライアントアプリケーションは、シャード・データベース構成とともに作動でき、1つ以上のシャーディング方法に基づいてデータが分割された1つまたは複数のデータベース・シャードに接続する機能を含む。データベース動作が必要となるたびに、クライアントアプリケーションは、接続する必要があるシャードを決定できる。
【0026】
実施形態によると、シャーディング方法は、個々のシャードにシャード・キー値をマッピングするために使用できる。さまざまなシャーディング方法をサポートできる。たとえば、ハッシュ値の範囲が各チャンクに割り当てられるハッシュ・ベース・シャーディング、これにより、データベース接続を確立すると、システムは、所定の値のシャーディング・キーにハッシュ関数を適用して対応するハッシュ値を算出し、次に、その値が属する範囲に基づいて、対応するハッシュ値がチャンクにマッピングされる。シャード・キー値の範囲が個々のシャードに直接割り当てられるレンジ・ベース・シャーディング、および、各シャードがシャード・キー値の一覧に対応付けられるリスト・ベース・シャーディングがある。
【0027】
図2に示すように、実施形態によると、シャード・データベース140は、ここでは「DB East」、DBEと示される第1のデータベース領域A 141を備えることができ、第1のデータベース領域A 141は、チャンクA1、A2、…Anとして格納されるシャードAを有するシャード・データベース・インスタンス「DBE-1」142と、チャンクB1、B2、…Bnとして格納されるシャードBを有するシャード・データベース・インスタンス「DBE-2」143とを含む。
【0028】
図2にさらに示すように、実施形態によると、第2のデータベース領域B(ここでは、「DB West」、DBWと示される)144は、チャンクC1、C2、…Cnとして格納されるシャードCを有するシャード・データベース・インスタンス「DBW-1」145と、チャンクD1、D2、…Dnとして格納されるシャードDを有する「DBW-2」146とを含む。
【0029】
実施形態によると、各データベース領域、またはシャード・データベース・インスタンスのグループは、シャード・ディレクタまたはリスナー(たとえば、Oracle Global Service Managers(GSM)リスナー、または別の種類のリスナー)に対応付けることができる。たとえば、
図2に示すように、シャード・ディレクタまたはリスナー147は、第1のデータベース領域Aに対応付けることができ、別のシャード・ディレクタまたはリスナー148は、第2のデータベース領域Bに対応付けることができる。システムは、シャード・トポロジー・レイヤ154を維持するデータベース・ドライバ(たとえば、JDBCドライバ)152を備えることができる。シャード・トポロジー・レイヤ154は、ある期間にわたってシャード・キー範囲を学習し、シャード・データベースにおける各シャードの位置にシャード・キー範囲のキャッシュを保持する。
【0030】
実施形態によると、クライアントアプリケーションは、接続要求(162)の間、接続プールに1つ以上のシャード・キーを提供でき、接続プールは、1つ以上のシャード・キー、およびシャード・トポロジー・レイヤによって提供された情報に基づいて、接続要求を正しいまたは適切なシャードに送ることができる。
【0031】
また、実施形態によると、接続プールは、特定のシャードまたはチャンクへの接続を、そのシャード・キーによって識別でき、同じシャード・キーの要求を特定のクライアントアプリケーションから受け付けた場合、接続を再利用させることができる。
【0032】
たとえば、
図2に示すように、実施形態によると、特定のチャンク(たとえば、チャンクA1)への接続は、そのチャンクへ接続する(174)ために使用できる。特定のシャードまたはチャンクへの利用可能な接続がプールにない場合、システムは、存在している利用可能な接続を別のシャードまたはチャンクに転用し、その接続を再利用しようとすることができる。データベースにおけるシャードおよびチャンク間のデータ分散は、クライアントアプリケーションに対して透過的にすることができ、チャンクをリシャーディングすることのクライアントへの影響も最小限に抑える。
【0033】
シャードアウェア・クライアントアプリケーションが接続要求に対応付けて1つ以上のシャード・キーを接続プールに提供すると、接続プールまたはデータベース・ドライバがシャード・キーについてのマッピングをすでに有している場合、適切なシャードおよびチャンク、この例においてチャンクC2、に接続要求を直接転送できる。
【0034】
シャードアウェア・クライアントアプリケーションが接続要求に対応付けてシャード・キーを提供しない場合、または、提供されたシャード・キーのマッピングを接続プールもしくはデータベース・ドライバが有しない場合、接続要求を適切なシャード・ディレクタまたはリスナーに転送できる。
【0035】
マルチテナント環境
実施形態によると、システムは、接続のラベル付けを利用したクラウドベースまたはマルチテナント環境のサポートを含めることができる。たとえば、マルチテナント・クラウド環境は、クラウドベース環境において複数のテナントまたはテナントアプリケーションが使用するためのデータベースへのアクセスを含むまたは提供するアプリケーションサーバまたはデータベース環境を含めることができる。
【0036】
図3は、実施形態に係る、マルチテナント環境での利用のサポートを含む、接続プールを備えたシステムをさらに説明する図である。
【0037】
クラウドまたはその他のネットワークを介してテナントがアクセスできるソフトウェアアプリケーションは、上述の環境と同様に、接続プールから取り出された接続を、使用する前に初期化してもよい。
【0038】
上述したように、たとえば、初期化には、アプリケーションコード内でメソッド呼び出しが必要な単純状態再初期化や、ネットワーのラウンドトリップが必要なデータベース動作を含んだ、より複雑な初期化などがある。
【0039】
また、上述したように、接続をラベル付けすることによって、アプリケーションは、任意の名前/値ペアを接続に結びつけることができ、これにより、アプリケーションは、所望のラベルを有する接続を接続プールに要求でき、ラベル付けすることは、すでに初期化された接続をプールから取り出し、再初期化にかかる時間とコストを回避する機能を含む。
【0040】
図3に示すように、実施形態によると、マルチテナント・データベース環境180は、たとえば、コンテナ・データベース(CDB)181、ならびに、ここでは、「PDB-1」182、「PDB-2」183、および「PDB-3」184と示される1つ以上のプラガブル・データベース(PDB)を備えることができる。
【0041】
実施形態によると、各PDBは、アプリケーションサーバもしくはデータベース環境100がホストであるまたは外部クライアントアプリケーション186として提供されるマルチテナント・アプリケーションの、ここでは、「テナント-1」、「テナント-2」、および「テナント-3」と示されるテナントに対応付けることができる。各PDBは、この例において「RAC-インスタンス-1」および「RAC-インスタンス-2」を含む1つ以上のRAC(Oracle Real Application Cluster)インスタンス186、188と、この例において「サービス-1」、「サービス-2」、および「サービス-3」を含む1つ以上のサービスと、テナントのサービスへのマッピング190とを利用して、データベース環境へのアクセスを提供する。
【0042】
図3に示す例において、データベース環境にアクセスするためにテナントによって使用中のアプリケーションは、そのテナントのデータソース192、194、196に対応付けられた接続要求を行うことができ、システムは、存在しているRACインスタンスまたはPDBへの接続を利用するために、必要であれば、サービスを切り替える(198)ことができる。
【0043】
サーバ側接続プール
実施形態によると、システムは、たとえば、DRCP(Oracle Database Resident Connection Pool)が提供するような、サーバ側接続プールのタグ付け機能を利用することができる。サーバ側接続プールのタグ付け機能によって、ユーザアプリケーションまたはクライアントは、データベース環境への接続を、そのデータベース環境が理解する1つのタグの利用に基づいて選択的に取得できるようになる。
【0044】
実施形態によると、1つのタグのみが接続ごとに対応付けられる。データベースサーバは、ユーザアプリケーションまたはクライアントに、タグ値を伝達しないで、タグの一致を伝達する(たとえば、Boolean値として)。
【0045】
プールにおけるテナントの動的再配置
実施形態によると、ソフトウェアアプリケーションは、テナントの動的再配置のサポートを含めることができる。ソフトウェアアプリケーションは、テナントに代わって接続プールから接続を獲得することができ、これによって、ソフトウェアアプリケーションまたはテナントがデータベースにアクセスできるようにする。再配置プロセスによって、マルチテナントまたはその他のクライアントアプリケーションに対応付けられたテナントを、クライアントアプリケーションにとってニアゼロダウンタイムで、たとえば、複数のコンテナ・データベース間で再配置できるようにし、当該再配置できるようにすることは、基礎をなすアプリケーションを変更する必要なしに、存在している接続のドレインを管理することと、新しい接続を移行することとを含む。
【0046】
図4~
図9は、実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートを説明する図である。
【0047】
図4に示すように、実施形態によると、コンテナ・データベース(たとえば、「CDB-1」202)などのデータベース、または別の種類のデータベースが、複数の接続204をサポートする。
【0048】
アプリケーションサーバまたはデータベース環境のいずれかがホストであるマルチテナントまたはその他のクライアントアプリケーションに対応付けられた、または外部クライアントアプリケーションとして提供されたテナントは、データベースサービスを介して、
コンテナ・データベースのプラガブル・データベースにアクセスすることを適宜含む、データベースにアクセスするために、接続プールを利用できる。
【0049】
たとえば、実施形態によると、各特定のテナントは、コンテナ・データベースにおいて、テナント自体の特定のプラガブル・データベースに対応付けることができる。各特定のテナントは、そのテナントに対応付けられた特定のプラガブル・データベースに、特定のプラガブル・データベースに対応付けられたデータベースサービスを介してアクセス(たとえば、205)するために、接続プールが提供する接続を利用できる。
【0050】
実施形態によると、データベース環境が変化した場合、たとえば、システムに第2のコンテナ・データベース(たとえば、「CDB-2」203)が追加された場合、または、接続プールをホストしているアプリケーションサーバがデータベース環境からサービスダウン・イベント206を受信することに応答して、システムは、特定のテナントが使用するための、新しいデータベース位置への新しい接続207を提供することができる。
【0051】
たとえば、実施形態によると、システムは、テナントが利用するために、プラガブル・データベースの移行を開始でき、当該移行は、元のプラガブル・データベース位置に対応付けられた接続およびその関連するデータベースサービス(たとえば、「CDB-1」202において「PDB-1」182に対応付けられた接続)をドレインすることと、これらの接続の可用性を新しいプラガブル・データベース位置および関連する(たとえば、「CDB-2」203において、ここで「PDB-1」210と示される)データベースサービスへ移行または再配置する(208)ことを含む。
【0052】
これによって、クライアントまたはテナントアプリケーションに対して透過的な方法で、テナントの元の位置に対応付けられた存在している接続をドレインし、テナントの新しい位置を指す新しい接続を作成することによって、接続プールがニアゼロダウンタイムのテナント再配置をサポートできるようにする。
【0053】
たとえば、マルチテナント環境において、システムは、特定のテナントに対応付けられたプラガブル・データベースを、第1のRAC(Oracle Real Application Cluster)データベースから第2のRACデータベースへ移動すること、または、第1のコンテナ・データベースから第2のコンテナ・データベースへ移動することをサポートする。
【0054】
しかしながら、これらのプラガブル・データベースは、概ね、互いに異なる/別々のデータベースとして動作する。これによって、接続が失われてしまう可能性がある。
【0055】
これに対処するために、実施形態によると、元のコンテナ・データベース(たとえば、「CDB-1」)のリスナー212を指す接続文字列を現在使用中であるアプリケーションの場合、リスナーは、新しい位置またはコンテナ・データベース(たとえば、「CDB-2」)への接続要求をリダイレクトするように構成できる。これによって、リスナーは、アプリケーションサーバのデータベース・ドライバにリダイレクトを送信することができ、アプリケーションサーバは、データベース・ドライバに、新しいコンテナ・データベースへの新しい接続要求を送らせる。
【0056】
これに加えて、存在している接続要求を元のコンテナ・データベースから引き離さなければならない。しかしながら、新しいコンテナ・データベースは異なるデータベースと考えられるため、その存在についてプールはまだ知らない可能性がある。
【0057】
これに対処するために、実施形態によると、システム・イベント通知(たとえば、Or
acle Notification Serviceイベント)は、プラガブル・データベースがシャットダウンすることを接続プールに通知し、および、対応付けられた接続をクローズし、新しい位置に対応付けられた新しいデータベースサービスへの移行の準備を行うために、使用できる。
【0058】
一般に、新しい接続をサポートするために新しいデータベース位置が直ちに利用可能にならない期間は短い。この間、存在している接続はクローズされ、接続プールは、新しい要求を受け付けるまで新しい接続を作成しない。これによって、たとえば、信頼できる情報源を新しい位置に切り替えるためにredoログを停止することを含んだredoログの更新が必要であることから、わずかなシステム・ダウンタイムが発生する。
【0059】
たとえば、
図4に示す例において、プラガブル・データベース(たとえば、「PDB-1」)を第1のコンテナ・データベース(たとえば、「CDB-1」)から第2のコンテナ・データベース(たとえば、「CDB-2」)へ移行することが望ましく、実施形態によると、プラガブル・データベースの再配置に関係するプロセスは、以下を含む。
【0060】
1.プラガブル・データベースの再配置を開始する。たとえば、
図5に示すように、サーバは、「変更プラガブル・データベース再配置」コマンドを実行することによって、プラガブル・データベースの再配置を開始することができる。当該コマンドは、元のプラガブル・データベース上で実行中のセッション220に影響を与える。
【0061】
2.新しい位置にあるプラガブル・データベースをオープンして、元のインスタンスコンテナ・データベース上のすべてのクライアントセッションを終了する。たとえば、
図6に示すように、システムは、コンテナ・データベース・インスタンス「CDB-2」のプラガブル・データベース「PDB-1」をオープンして、元のコンテナ・データベース・インスタンス「CDB-1」上のすべてのクライアントセッションを終了することによって、「変更プラガブル・データベース再配置」コマンドに応答できる。その後、システムは、「CDB-1」上のプラガブル・データベース「PDB-1」をクローズし、そのバッファ・キャッシュをフラッシュする。
【0062】
3.クライアントが新しいデータベース位置に再接続できるようにする。たとえば、
図7に示すように、次に、クライアントは、(たった今移行された)サービス226に自身を再接続する必要がある。接続プールは、これを、アプリケーションに透過的な方法、たとえば、
図8に示すように、サーバからサービスダウン・イベントを受け付けた際に存在している接続をドレインし、移行されたプラガブル・データベースへの新しい接続を作成し直すことによって、可能にする。
【0063】
4.新しい位置への接続要求を転送する。たとえば、
図9に示すように、移行が完了すると、サーバ側において、リスナーは、接続プールからの新しい対象コンテナ・データベース(たとえば、「CDB-2」)への新しい接続要求を転送する(228)。アプリケーションは、接続文字列を変更する必要がない。これによって、再配置プロセスがアプリケーションに対して透過的に行われる。
【0064】
動的再配置プロセス
図10は、実施形態に係る、接続プール環境におけるテナントの動的再配置のサポートを提供する方法を説明する図である。
【0065】
図10に示すように、実施形態によると、ステップ231において、接続プールにおける接続オブジェクトの作成および利用を制御する接続プールロジックまたはプログラムコードが、アプリケーションサーバまたはデータベース環境において提供され、ソフトウェ
アアプリケーションは、接続プールに接続を要求し、提供される接続を、データベースにアクセスするために利用できる。
【0066】
図10に示すように、実施形態によると、ステップ233において、テナントに対応付けられたプラガブル・データベースを第1のコンテナ・データベース・インスタンスから第2のコンテナ・データベース・インスタンスの新しい位置に移行するための命令を受け付ける。
【0067】
ステップ235において、サーバは、プラガブル・データベース上で実行中のセッションに影響を与える、プラガブル・データベースの再配置を開始する。
【0068】
ステップ237において、システムは、新しい位置でプラガブル・データベースをオープンして、第1のコンテナ・データベース・インスタンス上のすべてのクライアントセッションを終了することによって、応答する。
【0069】
ステップ239において、クライアントが新しい位置に対応付けられた(移行された)サービスに再接続できるようにする。
【0070】
ステップ241において、移行が完了すると、サーバ側において、リスナーは、接続プールからの(新しい)コンテナ・データベース位置への新しい接続要求を転送する。
【0071】
本発明の実施形態は、本開示の教示に従ってプログラムされた1つ以上のプロセッサ、メモリ、および/またはコンピュータ読み取り可能な記憶媒体を含む、1つ以上の従来の汎用または専用のデジタル・コンピュータ、コンピューティング・デバイス、機械、またはマイクロプロセッサによって好都合に実現されてもよい。当業者であるプログラマーは、ソフトウェア技術を身につけた者に明らかなように、本開示の教示に基づいて、適切なソフトウェア・コーディングを容易に用意できる。
【0072】
いくつかの実施形態において、本発明は、指示を格納した非一時的な記憶媒体またはコンピュータ読み取り可能な記憶媒体(複数のコンピュータ読み取り可能な記憶媒体)であるコンピュータ・プログラム・プロダクトを含む。コンピュータ・プログラム・プロダクトを使用して、コンピュータを本発明のいずれの処理も実行するようにプログラムできる。たとえば、記憶媒体は、これらに限定されないが、フロッピー(登録商標)ディスク、光ディスク、DVD、CD-ROM、マイクロドライブ、および光磁気ディスクを含む任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気カードもしくは光カード、ナノシステム(分子メモリICSを含む)、または指示および/またはデータを格納するのに適した任意の種類の媒体またはデバイスを含むことができる。
【0073】
上記の本発明の実施形態の説明は、例示および説明のために提供されている。これは、本発明を包括的であったり、開示された厳密な形態に限定したりすることを意図していない。多くの変更例および変形例は、当業者に明らかであろう。変更例および変形例は、開示の特徴の任意の適切な組み合わせを含む。実施形態は、本発明の原理およびその実用的な適用を最も適切に説明するために選ばれて記載されているため、他の当業者が、考えられる特定の使用に適したさまざまな変更例を用いて、さまざまな実施形態について本発明を理解できるようになっている。
【手続補正書】
【提出日】2022-03-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
接続プールの利用と、テナントの動的再配置のサポートとを含む、マルチテナント環境
においてデータベースへのアクセスを提供するためのシステムであって、
プロセッサ、および前記プロセッサを実行するアプリケーションサーバまたはデータベ
ース環境のうちの少なくとも一方を含むコンピュータと、
ソフトウェアアプリケーションが前記接続プールに接続を要求でき、且つ、提供される
接続をデータベースにアクセスするために利用できるようにする、接続プールとを備え、
前記接続プールは、クライアントアプリケーションに対応付けられたテナントを複数の
データベース位置間で再配置できるようにし、前記再配置できるようにすることは、
前記テナントに本来対応付けられていたデータベース位置への接続をドレインするこ
とを制御することと、
前記テナントに対応付けられる新しいデータベース位置に接続を移行することとを含
む、システム。
【外国語明細書】