JP2007507762A - ステートレスなセッションの透過的なサーバ間移送 - Google Patents

ステートレスなセッションの透過的なサーバ間移送 Download PDF

Info

Publication number
JP2007507762A
JP2007507762A JP2006523440A JP2006523440A JP2007507762A JP 2007507762 A JP2007507762 A JP 2007507762A JP 2006523440 A JP2006523440 A JP 2006523440A JP 2006523440 A JP2006523440 A JP 2006523440A JP 2007507762 A JP2007507762 A JP 2007507762A
Authority
JP
Japan
Prior art keywords
session
database
server
client
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006523440A
Other languages
English (en)
Inventor
カルスカル,サンジェイ
ゴラプディ,スリーニバス
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/917,953 external-priority patent/US7552218B2/en
Priority claimed from US10/917,873 external-priority patent/US7516221B2/en
Priority claimed from US10/918,055 external-priority patent/US7552171B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2007507762A publication Critical patent/JP2007507762A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

手法は、クライアントが、クライアントのためにサーバ上に確立されたセッションから別のサーバの別のセッションへ、最初のセッションが確立されたアプリケーションについて透過的な方法で移送されることを可能にする。セッションは、ソースノードから移送するセッションのセッション状態のコピーがキャプチャされず、宛先セッションに復元されない条件下で、移送される。

Description

関連出願
本出願は、「コンピュータリソース提供(Computer Resource Provisioning)」と題された、2003年8月14日出願の米国仮出願番号第60/495,368号の優先権を主張し、それが本願明細書に引用して援用される。
本出願は、下記の米国出願に関連する。
2004年8月12日出願の、サンジェイ カラスカル(Sanjay Kaluskar)他による、「ステートレスなセッションの透過的なサーバ間移送(Transparent Migration of Stateless Sessions Across Servers)」と題された、米国出願番号第XX/XXX,XXX号(代理人事件整理番号第50277−2385号)に関連し、それが本願明細書に引用にて援用される。
2004年8月12日出願の、サンジェイ カラスカル(Sanjay Kaluskar)他による、「サーバ間の透過的セッション移送(Transparent Session Migration Across Servers)」と題された、米国出願番号第XX/XXX,XXX号(代理人事件整理番号第50277−2383号)に関連し、それが本願明細書に引用にて援用される。
2004年8月12日出願の、ベニー サウダー(Benny Souder)他による、「マルチノードシステムにおけるリソースの動的割当ての階層的管理(Hierarchical Management of the Dynamic Allocation of Resources in a Multi-Node System)」と題された、米国出願番号第XX/XXX,XXX号(代理人事件整理番号第50277−2382号)に関連し、それが本願明細書に引用にて援用される。
2004年8月12日出願の、ラシュミナラヤナン チダムバラン(Lakshminarayanan
Chidambaran)他による、「マルチノードシステムにおいてバランスをとる増分的実行時セッション(Incremental Run-Time Session Balancing in a Multi-Node System)」と題された、米国出願番号第XX/XXX,XXX号(代理人事件整理番号第50277−2411号)に関連し、それが本願明細書に引用にて援用される。
本出願は、下記の国際出願に関連する。
2004年8月9日にオラクルインターナショナル社(Oracle International Corporation)によって米国受理官庁に出願された、「データベースの自動的かつ動的な提供(Automatic and Dynamic Provisioning of Databases)」(代理人事件整理番号第50277-2571号)と題された国際出願PCT/XXXX/XXXXXに関連し、それが本願明細書に引用にて援用される。
2004年8月13日にオラクルインターナショナル社(Oracle International Corporation)によって米国受理官庁に出願された、「マルチノードシステムにおけるリソースの動的割当ての階層的管理(Hierarchical Management of the Dynamic Allocation of Resources in a Multi-Node System)」(代理人事件整理番号第50277-2592号)と題された国際出願PCT/XXXX/XXXXXに関連し、それが本願明細書に引用にて援用される。
2004年8月13日にオラクルインターナショナル社(Oracle International Corpo
ration)によって米国受理官庁に出願された、「サーバ間の透過的セッション移送(Transparent Session Migration Across Servers)」(代理人事件整理番号第50277-2593号)と題された国際出願PCT/XXXX/XXXXXに関連し、それが本願明細書に引用にて援用される。
2004年8月13日にオラクルインターナショナル社(Oracle International Corporation)によって米国受理官庁に出願された、「オンデマンドノードおよびサーバインスタンスの割当ておよび割当て解除(On Demand Node and Server Instance Allocation and De-Allocation)」(代理人事件整理番号第50277-2595号)と題された国際出願PCT/XXXX/XXXXXに関連し、それが本願明細書に引用にて援用される。
発明の分野
本発明は作業負荷の管理に関し、特定的には、マルチノードコンピュータシステムにおける作業負荷管理に関する。
発明の背景
多くのエンタープライズデータ処理システムは、データを格納し、管理するためにマルチノードデータベースサーバに依存する。このようなエンタープライズデータ処理システムは、典型的には、第1の階層にマルチノードデータベースサーバを有し、中間階層および外部階層に1つ以上のコンピュータを有する多層構成モデルに従う。
図1は、多層アーキテクチャ10で実行されるマルチノードデータベースサーバmds11を表す。マルチノードデータベースサーバmds11などのサーバは、統合ソフトウェアコンポーネントと、メモリ、ノード、および統合ソフトウェアコンポーネントをプロセッサ上で実行するためのノード上のプロセスなどの計算リソースの割当てとの組合わせであって、このソフトウェアと計算リソースとの組合わせは、1つ以上のクライアントに代わって特定の機能を専ら実行する。マルチノードコンピュータシステムの複数のノードからのリソースは、特定のサーバのソフトウェアを実行するために割当てられ得る。ノード上のソフトウェアとそのノードからのリソースの割当てとの特定の組合わせは、本願明細書においてサーバインスタンスまたはインスタンスと称されるサーバである。このように、マルチノードサーバは、複数のノードで作動し得る複数のサーバインスタンスを含む。マルチノードサーバのいくつかのインスタンスは、同じノード上でさえ作動し得る。
データベースサーバは、特定のデータベースへのアクセスを支配して容易にし、
クライアントからのデータベースにアクセスするリクエストを処理する。マルチノードデータベースサーバmds11などのマルチノードデータベースサーバは、複数の「データベースインスタンス」を含み、各データベースインスタンスは、ノード上で作動する。マルチノードデータベースサーバmds11はデータベースdb11へのアクセスを支配する。マルチノードデータベースサーバは、1つ以上のデータベースへのアクセスを支配し、容易にすることができる。
多層アーキテクチャ10の中間層は中間層コンピュータcmp11を含み、外部層はユーザコンピュータcmp12を含む。ユーザコンピュータcmp12は、エンドユーザと対話するブラウザbr11を実行する。エンドユーザのブラウザbr11との対話により、ブラウザは、インターネットなどのネットワークを介して中間層コンピュータcmp11にリクエストを送信する。リクエストは、中間層コンピュータcmp11上のプロセス、すなわちクライアントcl1にアプリケーションappl11を実行させる。クライアントcl1によってアプリケーションappl11が実行されることにより、クライアントcl1はマルチノードデータベースサーバmds11に接続する。例えばアプリケーシ
ョンappl11は、ブラウザbr11から注文リクエストを受取るよう構成される受注アプリケーションであり得る。受注アプリケーションのためのデータはdb11に格納される。リクエストを処理するために、クライアントcl1によってアプリケーションappl11が実行されるとクライアントcl1はデータベースdb1に接続する。一旦接続されると、クライアントcl1は、データベースdb11に格納されたデータを検索して操作するためのデータベースステートメントを出す。
本願明細書において、多層アーキテクチャの他の層に対し、サーバに直接接続する層はサーバのクライアントを含むと称される。したがって、クライアントプロセスcl1は、本願明細書においてマルチノードデータベースサーバmds11のクライアントと称される。
アプリケーションは、この用語が本願明細書において用いられる場合、サーバの機能と対話してそれらを用いるよう構成される、ソフトウェアの単位である。一般にアプリケーションは、一組の関連した機能を実行する、統合された関数およびソフトウェアモジュール(例えば機械で実行可能なコードまたは解釈可能なコードからなるプログラム、動的にリンクされたライブラリ)からなる。
アプリケーションappl11などのアプリケーションは、クライアント側インターフェイスコンポーネントintcomp11を介してマルチノードデータベースサーバmds11と対話する。アプリケーションappl11の実行により、クライアントcl1はクライアント側インターフェイスコンポーネントintcomp11を実行し、マルチノードデータベースサーバmds11と対話する。アプリケーションappl11は、クライアント側インターフェイスコンポーネントintcomp11のルーチン(例えば関数、プロシージャ、オブジェクト方法、リモートプロシージャ)の呼出しを含む。典型的にはアプリケーションは、マルチノードデータベースサーバmds11およびクライアント側コンポーネントintcomp11などのサーバおよびサーバへのインターフェイスを開発する人とは異なるベンダおよび開発チームによって開発される。
クライアントがマルチノードデータベースサーバmds11と対話するために、マルチノードデータベースサーバmds11のデータベースインスタンス上にクライアントのためにセッションが確立される。データベースセッションなどのセッションは、データベースインスタンスなどの、クライアントのためにサーバに確立される特定の接続であって、それを介してクライアントは一連のリクエスト(例えばデータベースステートメントを実行するためのリクエスト)を出す。
データベースインスタンスに確立される各データベースセッションについて、セッション状態がセッションのために維持される。セッション状態は、データベースセッション中にデータベースセッションのために格納されるデータを含む。例えばこのようなデータは、セッションが確立されるクライアントのIDと、データベースセッション内でソフトウェアを実行しているデータベースコンポーネントおよびプロセスによって生成される一時的な変数値とを含む。データベースコンポーネントは、特殊化された関連する機能をデータベースサーバに与える一組のソフトウェアモジュールであって、より詳細に後述される。データベースコンポーネントの例は、Java(登録商標)実行エンジンである。
セッションの始まりと終わりが作業単位の境界を画定する。しばしば、データベースセッションの始まりは、例えばブラウザなどを介してアプリケーションと対話型セッションを確立するエンドユーザと対応し、エンドユーザがログオフすると終了する。このように
、データベースセッションの始めと終わりは、アプリケーションロジックおよびエンドユーザの行動に依存し、セッションが確立されるサーバによって制御されない。
クライアント側インターフェイスコンポーネント
クライアント側インターフェイスコンポーネントintcomp11などのクライアント側インターフェイスコンポーネントは、サーバのクライアントの同じコンピュータに存在し、そこで実行されるソフトウェアコンポーネントであって、クライアントおよびサーバ間にインターフェイスを与えるよう構成される。クライアント側インターフェイスコンポーネントintcomp11は、マルチノードデータベースサーバmds11とインターフェイスするのに必要な詳細な動作を実行するよう構成される。例えば、アプリケーションappl11がクライアント側インターフェイスコンポーネントintcomp11の関数を呼び出して、マルチノードデータベースサーバmds11への接続を確立する。クライアント側インターフェイスコンポーネントは次に、マルチノードデータベースサーバmds11の特定のインスタンス上での接続の詳細を処理する。アプリケーションappl11は、クエリー実行のリクエストなどマルチノードデータベースサーバmds11のリクエストを出すためにクライアント側インターフェイスコンポーネントintcomp11の関数を呼び出すよう構成され、クライアント側インターフェイスコンポーネントintcomp11は次に、セッションが確立されるノードとデータベースインスタンスとにその同じリクエストを送信する。
クライアント側インターフェイスコンポーネントintcomp11は、他のソフトウェアモジュールから隠された状態、すなわち他のソフトウェアモジュール、特にアプリケーションappl11によっては参照もアクセスもされない、またはされることができない状態を生成し得、および/またはそれにアクセスし得る。このような状態は、クライアント側インターフェイスコンポーネントintcomp11に対して内部的または非公開であると称される。
例えば、マルチノードデータベースサーバmds11上にデータベースセッションを生成するために、アプリケーションappl11は、クライアント側インターフェイスコンポーネントintcomp11のルーチンを呼び出す。クライアント側インターフェイスコンポーネントは、マルチノードデータベースサーバmds11内の特定のデータベースインスタンス上でデータベースセッションを確立して、内部データ構造またはオブジェクト内にデータベースセッションについての詳細を格納する。このようなデータ構造およびオブジェクトは、たとえばアプリケーションのために確立されるセッションを規定し、データベースインスタンス上のセッションのID、データベースインスタンスの名称、およびデータベースインスタンスへの接続のためのネットワークアドレスおよびポート番号などの値を指定する。
セッションのこのような詳細はアプリケーションappl11に返されず、アプリケーションappl11は詳細にアクセスすることもできない。その代わりアプリケーションappl11に与えられるのは、クライアント側インターフェイスコンポーネントintcomp11の内部データがセッションにマッピングする値などのセッション用「外部識別子」、またはクライアント側インターフェイスコンポーネントintcomp11によって生成されるオブジェクトに対する参照であって、アプリケーションappl11にはアクセスできないオブジェクトの非公開の属性にセッションのいくつかの詳細を格納する。このように、アプリケーションappl11は、アプリケーションappl11のために確立されているセッションの具体的な詳細を「知らない」。しかしながらアプリケーションappl11は、アプリケーションappl11のために確立されている特定のセッションをクライアント側インターフェイスコンポーネントintcomp11に対して特定し得るのに必要な情報を有する。
作業負荷の分散
マルチノードデータベースサーバを管理するために必要な重要な能力は、ノード間で作業負荷を分散することである。ノード間で作業負荷を最適にバランスを保つことによる作業負荷の分散が用いられて性能を向上させる。作業負荷の分散はまた、メンテナンス動作のためにオフラインにされているノードから別のノードに作業がシフトされることを可能にする。
性能を向上させるために、マルチノードデータベースサーバ上の作業負荷は、接続時間バランスを使用して分散される。接続時間のバランスをとることにおいて、クライアントのためのデータベースセッションが生成されると、作業負荷は接続時間において分散される。具体的には、クライアントがマルチノードデータベースサーバ上でデータベースセッションを確立するよう要求すると、作業負荷への考慮に基づいてセッションがインスタンスまたはノードに配置される。例えばクライアントは、セッションについてのリクエストをマルチノードデータベースサーバに送信する。マルチノードデータベースサーバは、あるノードが他のノードよりビジーでないと判断して、そのノード上にクライアントのためのセッションを確立する。
接続時間のバランスをとることについての欠点は、それが既存のセッションをバランスし直すことができないことである。それはセッションが生成されたときにしかバランスをとれない。既存のセッションにより生成される作業負荷は、クライアントが自発的に要求するのを減らすかもしくは止めるまで、および/またはセッションを終了するまで、シフトされたり減じられたりすることができない。その結果、作業負荷をシフトするタイミングは、マルチノードデータベースサーバの制御下にはないイベントに従う。
上記に基づいて、セッションが生成された後にセッションのクライアントの作業負荷をシフトする方法を与えることが、明らかに望ましい。
本発明は、添付の図面の図において限定としてでなく例として図示され、そこで同じ参照番号は同様の構成要素を指す。
発明の詳細な説明
分散型環境においてノード間でセッションを移送するための方法および装置が記載される。下記の記載において、説明のため、本発明の完全な理解を与えるために多くの具体的な詳細が記載される。しかしながら、本発明がこれらの具体的な詳細なしで実行され得ることは明らかである。他の場合には、本発明を不必要に不明瞭にすることを避けるため、周知の構造及び装置はブロック図形式で示される。
本願明細書に説明されるのは、最初のセッションが確立されたアプリケーションに対して透過的な方法で、クライアントがあるサーバのあるセッションから別のサーバのセッションへ切り換えられることを可能にする手法である。移送という用語は、サーバ上の既存のセッションのクライアントが既存のセッションから別のセッションへ切り換えられる動作を指し、既存のセッションが終了され、クライアントが既存のセッションの代わりに他のセッションを用いることを可能にする。本願明細書において、既存のセッションが移送されたと称される。「透過的な」という用語は、ソフトウェアの単位に関して、動作を実行するように適合される、そのユニットの命令の実行を要しない方法で動作を実行することを指す。したがってクライアントは、透過的なセッション移送においては、移送を達成するよう適合されたアプリケーション命令を実行することなく、セッション間で切り換えられる。その代わり、アプリケーションがそれを介してサーバと対話する、クライアント側インターフェイスコンポーネントが移送の詳細を処理し、クライアント側インターフェ
イスコンポーネントの内部状態を変更して同じ効果をもたらす。レガシーアプリケーションは、本願明細書に説明される手法を開始するために変更される必要はない。
セッション移送の下、クライアントはマルチノードシステム上でセッションを要求し、セッションはクライアントのためにノード上で作動する「ソースサーバ」上で確立される。クライアントは「宛先サーバ」上の「宛先セッション」に切り換えられる。宛先セッションは、ソースサーバ上のセッションの代わりにクライアントによって用いられる。
セッションは、ソースノードから移送するセッションのセッション状態のコピーがキャプチャされて宛先サーバ上の宛先セッションに復元される必要がないという条件下で移送される。クライアントはこれらの条件を指定する。加えてクライアントは、特定のセッションがセッションの状態をキャプチャする必要なく移送され得ることをサーバに対して特定し得る。サーバ間で状態を転送する必要がないので、このような方法でセッションを移送することは、セッションがより早く移送されることを可能にする。
セッション移送に関与するものは、コンピュータのクライアント、ソースサーバおよび宛先サーバを含むことができ、各々がマルチノードシステムの異なるノードに位置する。関与するものは、セッション移送がアプリケーションまたはセッションが確立された他のソフトウェアモジュールに透過的に発生することを可能にする、プロトコルの変形例に従う。
透過的なセッション移送は、マルチノードデータベースサーバ上で実現され得るように本願明細書に示される。しかしながら、本発明の実施例は、マルチノードデータベースサーバ上でホストされるセッションの移送に限られない。
例示的コンピュータシステム
図2は、n層のデータベースシステムdbs20、すなわち本発明の一実施例を表わすために用いられるN層のコンピュータシステムを示す。第1の層はデータベースクラスタdbc20上でホストされるマルチノードデータベースサーバmds20を含み、第2の層はコンピュータ上でホストされるアプリケーションサーバaps20を含み、外部層はエンドユーザセッションusr20を含み、エンドユーザセッションは、ネットワーク接続を介してアプリケーションサーバaps20に接続されたプロセスに関連付けられた、コンピュータ上のセッションである。
データベースクラスタdbc20は、ノードnd21、nd22、nd23およびnd24を含む。データベースクラスタdbc20のノードは、ネットワークを介して相互接続するコンピュータ(例えばワークステーション、パーソナルコンピュータ)の形式であり得、グリッドの一部であり得る。
マルチノードデータベースサーバmds20は、データベースdbs20へのアクセスを支配し、容易にする。マルチノードデータベースサーバmds20は、データベースインスタンスinst21、inst22、inst23およびinst24を含む。
データベースインスタンスにより管理されるデータベースにアクセスするために、直接にまたは別のコンピュータを介して、マルチノードデータベースサーバの一部であるデータベースインスタンスに接続するクライアントは、本願明細書においては、データベースインスタンスのクライアント、マルチノードデータベースサーバのクライアント、またはデータベースのクライアントと称される。例えば、データベースクラスタdbc20の一部ではないコンピュータ上のプロセスはアプリケーションを実行し、データベースdb2
0にアクセスするためデータベースインスタンスinst23に接続される。プロセスは、データベースインスタンスinst23のクライアント、マルチノードデータベースサーバmds20のクライアント、およびデータベースdb20のクライアントと称される。同様に、アプリケーションサーバaps20は、マルチノード分散型データベースサーバmds20およびデータベースdb20のクライアント、ならびにアプリケーションサーバaps20が接続されているあらゆるデータベースインスタンスのクライアントである。
作業負荷マネージャwm20は、データベースクラスタdbc20上でホストされるデータベースインスタンスの作業負荷を管理する役割がある、データベースクラスタdbc20上で作動するプロセスである。作業負荷マネージャwm20はデータベースクラスタdbc20の1つ以上のノードで作動していることができ、ノードはnd21、nd22、nd23およびnd24を含む。作業負荷マネージャの例はデータベースディレクタであって「バランスをとる増分的実行時セッション(Incremental Run-Time Session Balancing)」に記載されており、ソースデータベースインスタンスから宛先データベースインスタンスへ、1つ以上のセッションを移送することによって、実行時セッションのバランスをとることを実行する。
アプリケーションサーバaps20は、アプリケーションのアプリケーションコードを格納し、アクセスを与え、実行するサーバである。アプリケーションサーバaps20は、マルチノードデータベースサーバmds20にデータベースリクエストを送信する。リクエストは、アプリケーションサーバに格納されるアプリケーションコードを実行することに応答して、アプリケーションサーバaps20により生成されることができる。アプリケーションサーバaps20は、受注アプリケーションのためのデータを保持するデータベースdb20上のテーブルを操作するために、データベースサーバmds20にデータベースステートメントを送信するよう構成される、受注アプリケーションなどのアプリケーションを含むことができる。アプリケーションサーバは、複数のノード上に複数のインスタンスを有し得る。アプリケーションサーバの例は、オラクル9iアプリケーションサーバ(Oracle 9i Application Server)またはオラクル10gアプリケーションサーバ(Oracle 10g Application Server)である。
アプリケーションサーバaps20はまた、エンドユーザセッションuser20を管理するための多くの機能を実行でき、それはデータベースサーバ以外の他の種類のサーバと対話することを伴う。このようなサーバは、ディレクトリサーバおよび認証サーバを含む。
例えば、エンドユーザセッションusr20のプロセスは、インターネットなどの広域ネットワークまたは公的ネットワークを介してアプリケーションサーバaps20に接続されるブラウザを実行していることができる。ブラウザによりアプリケーションサーバaps20に送信されるリクエストに応答して、アプリケーションサーバaps20はアプリケーションコードを実行し、データベースサーバmds20にデータベースステートメントを出し、ウェブページを生成してブラウザに送信を返す。
クライアントのために確立されたセッション
データベースサーバmds20のクライアント、例えばアプリケーションサーバaps20などがマルチノードデータベースサーバmds20と対話するために、データベースインスタンス上でクライアントのためにデータベースセッションが確立される。クライアントは、データベースクラスタdbc20にデータベース接続リクエストを送信することによってデータベースセッションを確立し得る。リスナがデータベース接続リクエストを受け取る。リスナはデータベースクラスタdbc20上で作動するプロセスであって、ク
ライアントデータベース接続リクエストを受け取り、それらをデータベースクラスタdbc20内のデータベースインスタンスに導く。
一旦データベースセッションがクライアントのために確立されると、クライアントはリモートプロシージャ呼出しの形式であり得る追加的なリクエストを出すことができ、リクエストは、トランザクション実行開始、クエリーの実行、アップデートおよび他の種類のトランザクション動作の実行、トランザクションの完遂または逆の終了、およびデータベースセッションの終了のリクエストを含む。
アプリケーションサーバaps20もまた、エンドユーザセッションusr20の接続のためのアプリケーションセッションを確立する。エンドユーザセッションusr20のプロセスからの複数のリクエストは、同じアプリケーションセッションに関連付けられ得る。アプリケーションセッションは、アプリケーションサーバaps20内で作動している1つ以上のプロセスを割り当てられ得る。このようなプロセスは、本願明細書においてはアプリケーションセッションプロセスと称される。
例示的なクライアントならびにソースおよび宛先インスタンス
図3は、本発明の一実施例による透過的なセッション移送を表わすために用いられる、アプリケーションサーバaps20ならびにデータベースインスタンスinst22およびinst24をより詳細に示すブロック図である。インスタンスinst22およびinst24は、それぞれソースインスタンスinst22および宛先インスタンスinst24と表記される。
アプリケーションサーバaps20はアプリケーションセッションasess30をホストし、クライアント側インターフェイスコンポーネントcsi30を含む。アプリケーションサーバaps20は、クライアント側インターフェイスコンポーネントcsi30を介してマルチノードデータベースサーバmds20と対話する。アプリケーションサーバaps20は、クライアント側インターフェイスコンポーネントcsi30のルーチン(例えば、関数、プロシージャ、オブジェクト方法、リモートプロシージャ)の呼出しを含む。アプリケーションサーバaps20の実行により、アプリケーションサーバaps20は、データベースクラスタdbc20と対話するためにクライアント側インターフェイスコンポーネントcsi30を実行する。
説明する目的のため、本願明細書においては、実際はプロセスによるソフトウェアの実行によりプロセスに特定の作用を実行させる場合、アプリケーションサーバaps20およびクライアント側インターフェイスコンポーネントcsi30などのソフトウェアモジュールがそれらの作用を実行するとして記載される。例えば、アプリケーションサーバaps20がメッセージを送受信するか、またはデータにアクセスすると記載される場合、アプリケーションソフトウェアを実行しているプロセスがメッセージを送受信しているか、またはデータにアクセスしている。
セッションをプールする
アプリケーションサーバaps20は、ソースインスタンスinst22および宛先インスタンスinst24上で「予め確立された」データベースセッションのプールとしてセッションプールspl31およびspl32を維持する。アプリケーションセッションのためのデータベースセッションが必要な場合、アプリケーションサーバaps20はセッションプールから1つを割当てる。データベースセッションはその後アプリケーションセッションから割当て解除され、その後の別のアプリケーションセッションへの割当のために利用可能になる。アプリケーションセッションがこのように割当てられたり割当て解除されたりする場合、データベースセッションはそれぞれ、チェックアウトされた、チェ
ックインされた、と称される。データベースセッションがチェックアウトされてからチェックインされるまでの間の時間期間は、データベースセッションの寿命と比較して相対に短い。データベースセッションは、無数のアプリケーションセッションに対して無数の回数チェックアウトされ得る。
例えばユーザは、エンドユーザusr20に関連付けられるブラウザを用いて本を注文する。ブラウザは、本を注文する注文アプリケーションを実行するために、アプリケーションサーバaps20上にアプリケーションセッションasess31を確立する。注文アプリケーションは、ユーザが探している本についてのデータを得るために、データベースサーバmds20にクエリーすることが必要である。アプリケーションサーバaps20は、セッションプールspl31からアプリケーションセッションにデータベースセッションs_sess31をチェックアウトする。注文アプリケーションがデータベースサーバにクエリーを出し、クエリー結果が注文アプリケーションに返され、次にデータベースセッションs_sess31はチェックインされる。次に、注文アプリケーションは、本の注文を生成するためにデータベースを変更するようデータベースステートメントを出す必要がある。セッションプールspl31からの別のデータベースセッションが、アプリケーションセッションasess31にチェックアウトされる。
データベースセッションs_sess31がチェックインされた後、別のアプリケーションセッションであるアプリケーションセッションasess32は、本の注文を返すためのデータベースセッションを必要とする。データベースを変更するために必要なデータベースステートメントがデータベースサーバmds20に出され得るよう、データベースセッションs_sess31がアプリケーションasess32にチェックアウトされる。次にデータベースセッションs_sess31はチェックインされ、その後無数の他のアプリケーションセッションに無数の回数チェックアウトされる。
コール
コールは、タスクを実行するためクライアントからサーバになされるリクエストである。典型的には、コールはソフトウェアモジュールのルーチンの呼出しを実行するプロセスによって行われる。呼出しは、プロセスにルーチンを実行させ(このような実行は、それ自体で他のルーチンのコール、実行を伴うことができる)、次に、呼出し点まで、またはそれを少し超えた時点(または他の何らかの、例えば例外ハンドラなどの指定された時点)まで戻らせてモジュールを実行させる。
コールは、呼び出されたルーチンに対して1つ以上の入力パラメータを渡し、1つ以上の出力パラメータとして値を返すことを伴い得る。入力パラメータおよび出力パラメータの一部としてメッセージが送信され得る。データベースインスタンスに対するコールは、典型的にはデータベースステートメントを実行するなどのタスクを実行するために行われる。コールにより送信されるメッセージは、入力パラメータとしてのクエリー列と出力パラメータとしてのクエリー結果または結果の場所への参照とを含み得る。
リモートプロシージャコールは、プロセスによって行われるルーチンのコールであって、別のプロセスが同じかまたは異なるノードおよび/またはコンピュータ上でコールされたルーチンを実行する。他のプロセスはリモートプロセスと称される。コールは、ネットワーク接続などの通信接続を介して、ルーチンを実行するためのリクエストを別のプロセスに送信することによって行われる。入力パラメータおよび出力パラメータもまた接続を通じて送信される。リモートプロセスがプロシージャを実行する一方で、コールプロセスの実行は中断されるかまたはブロックされる。
コールは、コールされたルーチンをコールプロセスまたはリモートプロセスに実行させ
、それにより他のルーチンのコールおよび実行をもたらし得る。コールが戻るとコールは終了する。コールされたルーチンの実行の一部として行われる動作は、コール内でなされると称される。
例えば、データベースクラスタdbc20にコールを行うために、アプリケーションサーバaps20は、クライアント側インターフェイスコンポーネントcsi30の関数のコールを行う。呼び出しに応答して、クライアント側インターフェイスコンポーネントcsi30がコールを実行し、それはクライアント側インターフェイスコンポーネントcsi30がクライアント側インターフェイスコンポーネントcsi30によりメモリに格納された「ローカルな」データを変更し、アクセスすることを含み、クライアント側インターフェイスコンポーネントcsi30はソースインスタンスinst22に複数のリモートプロシージャコールを行い、複数のリモートプロシージャコールは第1のリモートプロシージャコールおよび第2のリモートプロシージャコールを含む。第1のリモートプロシージャコールに応答して、ソースインスタンスinst22はさまざまな動作を実行する。ローカルデータの変更およびアクセス、複数のリモートプロシージャコール、およびソースインスタンスinst22により実行されるさまざまな動作は、アプリケーションサーバaps20によって行われる「アプリケーションコール」内で実行されると称される。第1のリモートプロシージャコールにより呼び出されたルーチンを実行する一方でソースインスタンスinst22によって実行されるさまざまな(他のルーチンの実行を伴い得る)動作は、本願明細書においては、第1のリモートプロシージャコール内で行われると称され、第1のリモートプロシージャコールがクライアント側インターフェイスコンポーネントintcomp30によって行われるので、クライアント側コール内で行われると称され、また、アプリケーションサーバaps20によってコールされたルーチンを実行する一方でリモートプロシージャコールがクライアント側インターフェイスコンポーネントintcomp30によって行われるので、アプリケーションコール内で行われると称される。アプリケーションコールまたはクライアント側コールは、本願明細書において、両方ともクライアントコールと称され得る。
データベースコンポーネント
データベースコンポーネントは、特殊化された関連する機能を与えるデータベースサーバ上の一組のソフトウェアモジュールである。セッション中に実行されるデータベースコンポーネントはセッション状態の一部を生成してそれを用いることができ、本願明細書において、コンポーネントセッション状態と称される。図4はデータベースコンポーネントの例示的集合、および、セッション状態sesst40内のそれぞれのコンポーネントセッション状態を示す。セッション状態sesst40は、データベースセッションs_sess31のセッション状態である。図4は、以下のデータベースコンポーネント、すなわちカーソルコンポーネントdc41、PL/SQLコンポーネントdc42、セッションパラメータコンポーネントdc43およびJava(登録商標)コンポーネントdc44を示す。
カーソルコンポーネントdc41は、ソースインスタンスinst22および宛先インスタンスinst24などのデータベースインスタンス内でカーソルを管理するために用いられる。カーソルは、解析されるデータベースステートメントの情報とデータベースステートメントの処理に関する他の情報とを格納するために用いられるメモリの領域である。カーソルコンポーネントdc41は、セッション状態sesst40内のコンポーネントセッション状態であるカーソル状態cs41の情報を使用し、格納する。
PL/SQLコンポーネントdc42は、オラクル社(Oracle Corporation)によって広められた手続き型データベース言語であるPL/SQLで書き込まれるコード(例えばプロシージャ)を実行する役割がある。コンポーネントは、コンポーネントセッション状
態PL/SQL状態cs42を用いて、変値および解析されたPL/SQLステートメントなどのPL/SQLコードの実行に関連した情報を格納する。
セッションパラメータコンポーネントdc43は、セッションに関連付けられるコールおよびリクエストが処理される方法を一般に制御する属性を管理する役割がある。
属性は、コンポーネントセッション状態パラメータ状態cs43に格納される。例えば、セッションパラメータは、クエリーを実行することにより返される結果のための特定の人間の言語を制御する属性を含むことができる。
Java(登録商標)コンポーネントdc44は、Java(登録商標)で書き込まれるコード(例えば、クラスおよびオブジェクト方法)を実行する役割がある。コンポーネントは、コンポーネントセッション状態Java(登録商標)状態cs44を用いてJava(登録商標)コードの実行に関連した情報を格納する。
ステートフルセッションおよびステートレスセッションならびにセッション移送
所与のデータベースセッションについて、将来のアプリケーションコールが以前のアプリケーションコールにより生成されたセッション状態に依存しない場合、データベースセッションはステートレスである。将来のアプリケーションコールが以前のアプリケーションコールにより生成されたセッション状態に依存する場合、データベースセッションはステートフルである。
将来のアプリケーションコールがステートフルセッションのセッション状態に潜在的に依存するので、ステートフルデータベースセッションの移送は、ソースインスタンスに格納されたセッション状態の部分が別のデータベースインスタンスへ転送され得るか否かを判断することを含み、され得る場合はソースデータベースインスタンスと宛先インスタンスとの間でセッション状態のコピーを転送する。ステートフルセッションを移送するための手法は、「データベースサーバ間の透過的セッション移送(Transparent Session Migration Across Database Servers)に記載されている。
そこに記載されるように、セッション状態が別のデータベースインスタンスへ転送され得るか否かを判断するためにさまざまな移送チェックがなされる。これらの移送チェックは、データベースセッションがトランザクション境界にあるか、コール境界にあるか、またはコンポーネント境界にあるかを判断することを含む。
セッションのために実行されているアクティブなトランザクションが現在ない場合、データベースセッションはトランザクション境界にある。トランザクションは、原子単位として実行される、論理的作業単位である。データベースシステムのコンテキストにおいて、データベースの完全性を確実にするために、データベースはトランザクションによってなされた変更のすべてを反映するか、またはトランザクションによってなされた変更のいずれをも反映しないかでなければならない。結果的に、トランザクションが完全に実行されてしまうまで、トランザクションによってなされた変更のいずれも恒久的にはデータベースに適用されない。トランザクションは、トランザクションによってなされた変更が恒久的になされた場合に「完遂する」と言われる。トランザクションが完遂されていないか、中止されたか、または他の方法で終了された場合、トランザクションはアクティブである。
データベースインスタンスがクライアントコールを処理する中間ステージにあるのではなくコールの実行を終了していた場合、セッションはコール境界にある。例えばデータベースステートメントを実行するコールを処理するために、データベースインスタンスは、各ステージが特定の動作の種類に対応するようなステージを経る。これらのステージは、
(1)カーソルを生成し、(2)データベースステートメントを解析してその変数をバインドし、(3)データベースステートメントを実行し、(4)クエリーに返すために行をフェッチし、および(5)カーソルを閉じるステージである。これらのステージは、「オラクル8サーバコンセプト(Oracle 8 Server Concepts)リリース8.0、第3巻(その内容はここにて引用にて援用される)第23章に、より詳細に記載される。中間ステージは、コールの処理が完了する前に実行される動作である。この例において、中間ステージはステージ(1)−(5)である。ソースインスタンスinst22がコールに応答してステップ(5)を実行したあと、ソースセッションsess30はコール境界にある。
セッションの各データベースコンポーネントがそのそれぞれのコンポーネント境界にある場合に、セッションはコンポーネント境界にある。データベースコンポーネントのコンポーネントセッション状態が別のセッションに移送され得る場合、データベースセッションは特定のデータベースコンポーネントのためのコンポーネント境界にある。データベースコンポーネントは、データベースコンポーネントのそれぞれのコンポーネントセッション状態が移送され得るか否かを示す値を返す関数を与える。データベースセッションのコンポーネントセッション状態が移送され得ない理由は、コンポーネントセッション状態がオープンファイルのファイル記述子を含むことである。ファイル記述子は、データベースセッションをホストするインスタンスのためにのみ有効な情報を含む。
ステートレスなセッションの移送
ステートフルなデータベースセッションとは異なり、ステートレスなデータベースセッションは、ソースインスタンスに格納されるセッション状態のコピーをキャプチャすることなく、あるいはそのコピーを宛先インスタンスおよびセッションに対して復元することなく、別のインスタンスに移送され得る。さらに、データベースセッションがステートレスであることが知られている場合、セッション状態が別のインスタンスへ転送され得ることを確認する移送チェック、すなわちデータベースセッションがコンポーネント境界にあるか否かを判断するなどのチェックを実行することは必要でないかもしれない。
データベースセッションがいつ、どの程度頻繁にステートレスになるかは、アプリケーションの行動、および、データベースサーバと対話するためにアプリケーションによって用いられるインターフェイスコンポーネントの行動を含む、クライアント側の行動に大きく依存する。例えばアプリケーションサーバaps20は、データベースセッションがその寿命の間に無数ではなくとも複数回ステートレスになるような方法で、データベースセッションを用いる。データベースセッションは、チェックアウトされると、しばしばアプリケーションセッション内で1つまたは数個のアプリケーションコールを処理するためだけに用いられ、その後チェックインされる。このチェックアウトされ、チェックインされるサイクルは、無数の他のアプリケーションセッションのために無数に繰り返される。例えば、1サイクルの間、データベースサーバに問合せを行うアプリケーションコールが行われる。別のサイクルにおいて、トランザクションを開始し、変更をなし、次にトランザクションを完遂するよう複数のアプリケーションコールが行われる。サイクル内で行われるアプリケーションコールは、前のサイクル中に生成されたセッション状態に依存しない方法で行われる。事実、セキュリティ上の理由で、このような依存性は望ましくないことがあり得る。インスタンスinst22およびinst24上のデータベースセッションが、各アプリケーションコールおよび/または各トランザクションの後で、すなわちアプリケーションコール境界および/または各トランザクション境界において、ステートレスになり得ることが可能である。
セッションをプールする機能は、クライアント側インターフェイスコンポーネント321またはJava(登録商標)データベースコンポーネントなどのインターフェイスコンポーネントにより実行され得る。さらに詳細に説明されるように、インターフェイスコン
ポーネントがセッションをプールする機能を実行するので、それらの行動はデータベースセッションがステートレスであるか否かに影響を及ぼす。このようなインターフェイスコンポーネントはまた、データベースセッションがステートレスであるか否かを判断するのに充分な情報を有する。このようにインターフェイスコンポーネントは、ステートレスなセッションの移送のあらゆる詳細を処理するためのアプリケーションコードを実行および/または変更する必要なく、ステートレスなセッションの移送の詳細を実行するために用いられ得る。
本願明細書において記載されるステートレスなセッションの移送のための手法によれば、マルチノードサーバのクライアント、例えばアプリケーションまたはクライアント側インターフェイスコンポーネントの実行に応答するアプリケーションサーバaps20上のクライアントがステートレス性の基準をサーバに与え、当該基準はデータベースセッションがステートレスであってそのため移送され得るような1つ以上の条件を示す。例えばステートレス性の基準は、データベースセッションがトランザクション境界、コール境界またはそれらの組合わせにおいてステートレスであることを指定し得る。
透過的なセッション移送プロトコル
図5は、ステートレスなセッションのセッション移送のためのプロトコルを示すために用いられるエンティティ対話の図である。一実施例によれば、プロトコルは、「サーバ間の透過的なセッション移送(Transparent Session Migration Across Servers)」で説明されたように、ステートフルなセッションの移送のために用いられるものと同じまたは類似のメッセージを含む。これらのプロトコルは本願明細書において、集合的にステートフルプロトコルと称される。各メッセージはセッション状態の転送の完了などの特定の動作集合の完了を示し、かつセッション移送の別の位相を開始する前のその動作集合の完了を確認するために用いられるので、これらのメッセージは別個に送信された。しかしながらこのような動作は、本願明細書において記載されるステートレスなセッション移送プロトコルにおいては実行されないので、その完了および確認は当然要求されない。したがって、これらのメッセージの送信はバンドルされることができる。
プロトコルは、プロトコルに関与するアプリケーションサーバaps20、ソースインスタンスinst22および宛先インスタンスinst24を用いて示される。プロトコルは移送開始プログラムによって開始され、移送開始プログラムはセッションの集合が移送されることを決定し、および/または要求するエンティティである。例えば作業負荷マネージャwm20は、ソースインスタンスinst22から宛先インスタンスinst24へ作業負荷をシフトするために、あるセッションの集合がソースインスタンスinst22から宛先インスタンスinst24へ移送されるべきことを決定し得る。作業負荷マネージャwm20はそのセッションの集合の移送のリクエストを生成する。データベースインスタンス間で作業負荷をシフトするためセッション移送を要求する作業負荷マネージャwm20は、セッション移送を要求するエンティティおよび目的の一例にすぎない。他の種類の目的のためにセッションの集合が移送されるよう要求する他の種類のエンティティがあり得る。例えば、あるデータベースインスタンスをシャットダウンする役割があるエンティティが、そのデータベースインスタンスがシャットダウンされ得るよう、データベースインスタンスによって現在ホストされている全てのセッションを移送することができる。
図示する目的で、マルチノードデータベースサーバmds20はアプリケーションサーバaps20からステートレス性の基準を受け取っており、当該基準は、データベースセッションがアプリケーションコール境界にある場合、アプリケーションサーバaps20のために確立されるデータベースセッションが移送され得ることを定める。
ステップ505において、ソースインスタンスinst22は、1つ以上のセッションのリストを移送するリクエストである移送リクエスト1を受け取る。リクエストは、例えば作業負荷マネージャwm20などのセッション移送開始プログラムから送信される。セッション移送のために選択されるかまたは他の方法で指定されるセッションは、本願明細書において、選択されたセッションと称される。図示する目的で、移送するセッションのリストは、選択されたセッションを1つのみ、すなわちソースセッションs_sess31のみを含む。
ステップ520において、ソースインスタンスinst22はステートレス性チェックを実行し、すなわちステートレス性の基準が満たされるか否かを判断する。この例において、ソースインスタンスinst22は、ソースセッションs_sess31がアプリケーションコール境界にあると判断する。
ステップ520において、ソースインスタンスinst22が一旦ステートレス性の基準が満たされていると判断すると、ステップ525において、ソースインスタンスinst22は、クライアントからのソースセッションs_sess31へのコールを待ち、そのコールを傍受して次のようなメッセージの束を送る−選択メッセージ2、移送準備メッセージ3、スイッチメッセージ8である。コールが傍受されたと称されるのは、コールが選択メッセージ2を送るなど、セッション移送に関連する何らかの作用をもたらすよう用いられているが、コールはそのような作用をもたらすこと以外の何らかの目的、例えばクエリーの実行を要求するなどのために生成されたからである。クライアントに返される出力パラメータは、複数の属性を有し得る「出力データ構造」を含む。ソースインスタンスinst22は、出力パラメータの属性を特定の値に設定することによって、選択メッセージ2、移送準備メッセージ3、およびスイッチメッセージ8を送信する。
選択メッセージ2は、選択されたセッションが移送のために選択されたことをクライアント側インターフェイスコンポーネントcsi30に知らせる。移送準備メッセージ3は、クライアント側インターフェイスコンポーネントcsi30に宛先インスタンスinst24上にソースセッションを確立するように命令し、宛先インスタンスinst24に接続を確立するための接続情報を含む。スイッチメッセージ8は、アプリケーションサーバに宛先セッションの使用を開始してソースセッションを終了するよう命令する。
傍受されたコールは、アプリケーションサーバaps20からのアプリケーションコール内で開始された。残りのプロトコルは、このアプリケーションコール内で実行される。
ステップ527において、アプリケーションサーバaps20は、宛先セッションを確立するリクエストを宛先インスタンスinst24に送信する。データベースインスタンス上にセッションを確立するには、アプリケーションサーバaps20の認証を必要とし得る。アプリケーションサーバaps20を認証するために、クライアント側インターフェイスコンポーネントcsi30からソースインスタンスinst22に認証情報(例えばユーザ名およびパスワード)が与えられる。クライアント側インターフェイスコンポーネントcsi30は、データベースクラスタdbc20上にセッションを確立するため、アプリケーションサーバaps20から以前に認証情報を受け取っている。
アプリケーションサーバaps20は、宛先セッションのセッションパラメータをソースセッションs_sess31のパラメータと同じ値に設定する。ソースセッションs_sess31のためにソースインスタンスinst22に値を供給したクライアント側インターフェイスコンポーネントcsi30は、これらの値を保持し、宛先インスタンスinst24のセッションパラメータを設定するために用いる。
ステップ530において、宛先インスタンスinst24は宛先セッションを確立する。
ステップ555において、アプリケーションサーバaps20は宛先セッションに切り換える。クライアント側インターフェイスコンポーネントの内部状態、例えばソースセッションの外部識別子をマッピングする内部データなどは、宛先セッションがいまやクライアントのセッションであることを反映するよう修正される。次に、アプリケーションサーバaps20は、ソースインスタンスinst22に移送終了メッセージを送信する。移送終了メッセージ9は、アプリケーションサーバaps20および/または宛先インスタンスinst24がセッション移送のそれぞれの部分をうまく完了したことを示すデータを含む。最後にアプリケーションサーバaps20は、ソースセッションを終了するためのメッセージをソースインスタンスinst22に送信する。アプリケーションサーバaps20によるその後のクライアントコールおよびアプリケーションコールにおいて、宛先セッションがソースセッションの代わりに用いられる。
ステートフル移送プロトコルにおいて、移送準備メッセージ3およびスイッチメッセージ8は別個に送信され、ステートフルセッション移送のために必要とされるある動作が実行されるようにし、それを確認する。これらの動作はステートレスセッション移送には必要とされない。例えば、ステートフル移送プロトコルにおいて、移送準備メッセージ3はクライアントにセッションを確立させるだけではなく、宛先インスタンスに移送チャネルを確立させることもする。移送チャネルは、セッション状態のコピーを送るために用いられる。移送チャネルについての情報はクライアントに送られ、クライアントは次にその情報をソースインスタンスに送る。ソースインスタンスは移送チャネルを介してセッション状態を送る。全てのセッション状態の移動が完了すると、次に、ソースインスタンスはスイッチメッセージ8を送信する。
ステートレス移送プロトコルにおいて、ソースインスタンス上のセッション状態のコピーはキャプチャされず、ソースインスタンスおよび宛先インスタンスの間で転送もされない。したがって、状態が完全に転送され終わるまでスイッチメッセージ8を送ることを遅らせる必要はない。したがって、スイッチメッセージは移送準備メッセージ3とともに送られ得る。
ステップ520からステップ555までは、単一のアプリケーションコール内で実行される。アプリケーションサーバaps20は、アプリケーションコールが開始されたときに外部セッション識別子に関連付けられる特定のデータベースセッションが、アプリケーションコールが戻るときと同じでないことを、知らないかまたは知っている必要はない。データベースセッションのセッション移送を処理するよう調整されるいかなるアプリケーション命令も、セッションを移送するために実行される必要はない。このような方法で、データベースセッションは透過的にアプリケーションに移送された。
アプリケーションに指定される、移送のための境界
一実施例において、アプリケーションサーバaps20は、データベースセッションがステートレスであるとき、およびステートレスでないときをデータベースサーバmds20に対して指定する。データベースセッションがステートレスであることを指定するために、アプリケーションサーバaps20はステートレスなデータベースセッションを特定してデータベースサーバmds20にメッセージを送信する。データベースサーバmds20は次に、データベースセッションをステートレスとして印をつけるようデータを生成する。
データベースサーバmds20が、データベースセッションを移送するリクエストを受
け取り、それがステートレスとして印をつけられていると判断すると、データベースサーバmds20はデータベースセッションを移送する。移送は、他のステートレス性チェックを実行することなく実行され得る。したがって、一旦データベースサーバmds20がデータベースセッションをステートレスとして印をつけられていると判断すると、データベースサーバはステップ525を実行でき、選択メッセージ2、移送準備メッセージ3、およびスイッチメッセージ8をバンドルとして送信する。
アプリケーションサーバaps20は、データベースセッションがステートレスでないと指定するために、データベースセッションを特定してデータベースサーバmds20にメッセージを送信する。データベースサーバmds20は次に、データベースセッションをステートレスとして印をつけないようデータを生成する。データベースサーバmds20が、データベースセッションを移送するリクエストを受け取り、それがステートレスとして印をつけられていないと判断すると、データベースサーバmds20はデータベースセッション移送をしない。
アプリケーションにステートレスなデータベースセッションを特定させることは、さまざまな最適化を可能にする。データベースセッションは、一旦移送のために選択されると、より早く移送され得る。なぜならデータベースセッションが境界に到達するのを待ったり、そこにあることを判断したりする必要がないからである。さらに、さまざまな理由で状態が転送され得ないために、またはデータベースセッションがステートレスになる条件をデータベースサーバが判断することができないために、他の方法では移送され得なかったであろう、いくつかのセッションが移送され得る。
図示する目的のため、一旦セッションプールspl31からのデータベースセッションがチェックアウトされると、複数のアプリケーションコールが行われることができて複数のトランザクションを実行する。データベースセッションがチェックアウトされている間、データベースセッションはステートフルである。このように、アプリケーションコール境界またはトランザクション境界にある場合であっても、データベースセッションはステートフルであり得る。しかしながら、一旦データベースセッションがチェックインされると、データベースセッションはもはやステートフルではない。
データベースサーバは、データベースセッションがいつアプリケーション境界にあり、いつトランザクション境界にあるかを判断することが可能である。しかしながら、
これらの条件がいつ存在するかを知っていることは、データベースセッションがステートレスである条件を検出するには不十分である。なぜならデータベースセッションは、コール境界またはトランザクション境界にありながらステートフルであり得るからである。
他方、アプリケーションサーバaps20は、データベースセッションがいかなる条件下でステートレスであるかを判断することができる。なぜならアプリケーションサーバaps20は、データベースセッションがいつチェックインされ、いつチェックアウトされるかを検出し得るからである。データベースセッションがチェックアウトされると、アプリケーションサーバaps20はデータベースセッションをステートフルであると特定して、データベースサーバmds20にメッセージを送る。データベースセッションがチェックインされると、アプリケーションサーバaps20はデータベースセッションをステートレスであると特定して、データベースサーバmds20にメッセージを送信する。
ハードウェア概観
図6は、本発明の一実施例が実現され得るコンピュータシステム600を示すブロック図である。コンピュータシステム600は、バス602または情報を通信するための他の通信機構と、バス602に結合されて情報を処理するためのプロセッサ604とを含む。
コンピュータシステム600はまた、バス602に結合されて、プロセッサ604によって実行される命令および情報を格納するためのメインメモリ606、たとえばランダムアクセスメモリ(RAM)または他の動的記憶装置をも含む。メインメモリ606は、プロセッサ604によって実行される命令の実行中に、一時的変数または他の中間情報を格納するためにも用いられ得る。コンピュータシステム600は、バス602に結合されてプロセッサ604に対する静的情報および命令を格納するための読出専用メモリ(ROM)608または他の静的記憶装置をさらに含む。磁気ディスクまたは光学ディスクなどの記憶装置610が設けられてバス602に結合され、情報および命令を格納する。
コンピュータシステム600は、コンピュータユーザに情報を表示するための表示部612、たとえば陰極線管(CRT)に、バス602を介して結合され得る。英数字キーおよび他のキーを含む入力装置614がバス602に結合されて、情報およびコマンド選択をプロセッサ604に通信する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ604に通信して表示部612上のカーソル動作を制御するための、カーソル制御機器616、たとえばマウス、トラックボール、またはカーソル方向キーである。この入力装置は一般に、2つの軸、すなわち第1の軸(x等)および第2の軸(y等)において2自由度を有し、これによって入力装置は平面上で位置を特定できる。
本発明は、本願明細書に記載された技術を実現するためにコンピュータシステム600を用いることに関する。本発明の一実施例によると、これらの技術は、メインメモリ606に含まれる1つ以上の命令の1つ以上のシーケンスをプロセッサ604が実行することに応答して、コンピュータシステム600により実行される。このような命令は、別のコンピュータ読取可能な媒体、たとえば記憶装置610等からメインメモリ606内に読出すことができる。メインメモリ606に含まれる命令のシーケンスを実行することにより、プロセッサ604に本願明細書に記載された処理のステップを実行させる。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せた結線回路を用いて、本発明を実施することができる。したがって、本発明の実施例は、ハードウェア回路およびソフトウェアのいかなる特定の組合せにも限定されない。
本願明細書で用いられる「コンピュータ読取可能な媒体」という用語は、プロセッサ604に対して実行のために命令を提供することにかかわるあらゆる媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形態をとり得るが、これらに限定されない。不揮発性媒体には記憶装置610等の光学または磁気ディスクが含まれる。揮発性媒体にはメインメモリ606等のダイナミックメモリが含まれる。伝送媒体には、同軸ケーブル、銅線、光ファイバ、およびバス602を構成するワイヤを含む。伝送媒体は、電波および赤外線データ通信の際に生成されるもの等の音波または光波の形をとり得る。
コンピュータ読取可能な媒体の一般的な形態には、たとえばフロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD−ROM、任意の他の光学媒体、パンチカード、紙テープ、孔パターンを有する任意の他の物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、任意の他のメモリチップもしくはカートリッジ、以下に述べる搬送波、またはコンピュータが読出すことのできる任意の他の媒体が含まれる。
プロセッサ604に対して実行のために1つ以上の命令の1つ以上のシーケンスを運ぶ際に、さまざまな形態のコンピュータ読取可能な媒体が関与し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスクで運ばれ得る。遠隔コンピュータはそれらの命令をそれ自体のダイナミックメモリにロードして、それらの命令をモデムを用いて電話回線経由で送信することができる。コンピュータシステム600に対してローカルなモデムが
電話回線上のデータを受信して、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線検出器が赤外線信号によって運ばれたデータを受信し得、適切な回路がそのデータをバス602上に出力することができる。バス602はそのデータをメインメモリ606に運び、そこからプロセッサ604が命令を取り出して実行する。メインメモリ606が受信した命令は、プロセッサ604による実行前または実行後のいずれかに、記憶装置610に任意に格納され得る。
コンピュータシステム600は、バス602に結合された通信インターフェイス618も含む。通信インターフェイス618は、ローカルネットワーク622に接続されたネットワークリンク620に対する双方向のデータ通信結合をもたらす。たとえば通信インターフェイス618は、対応する種類の電話回線に対するデータ通信接続を与えるためのサービス統合デジタルネットワーク(ISDN)カードまたはモデムであり得る。別の例として、通信インターフェイス618は、互換性を有するローカルエリアネットワーク(LAN)にデータ通信接続を設けるためのLANカードであり得る。無線リンクもまた実現することができる。このようなどの実現例においても、通信インターフェイス618は、さまざまな種類の情報を表わすデジタルデータストリームを運ぶ、電気的、電磁的、または光学的信号を送受信する。
ネットワークリンク620は一般に、1つ以上のネットワーク経由で他のデータ装置に対するデータ通信をもたらす。たとえば、ネットワークリンク620は、ローカルネットワーク622を介してホストコンピュータ624またはインターネットサービスプロバイダ(Internet Service Provider)(ISP)626によって運営されるデータ装置に接続をもたらすことができる。ISP626は次いで、現在一般に「インターネット」628と呼ばれるワールドワイドパケットデータ通信網を介してデータ通信サービスを提供する。ローカルネットワーク622およびインターネット628はともに、デジタルデータストリームを運ぶ電気的、電磁的、または光学的信号を用いる。さまざまなネットワークを経由する信号と、ネットワークリンク620上の、コンピュータシステム600との間でデジタルデータを運ぶ通信インターフェイス618経由の信号とは、情報を運搬する搬送波の例示的形態である。
コンピュータシステム600は、ネットワーク、ネットワークリンク620、および通信インターフェイス618を介してメッセージを送信し,プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ630は、インターネット628、ISP626、ローカルネットワーク622および通信インターフェイス618経由でアプリケーションプログラムに対して要求されたコードを送信することができる。
受信されたコードは、受信されたときにプロセッサ604によって実行され得、および/または後の実行のために記憶装置610もしくは他の不揮発性記憶装置に格納され得る。この態様で、コンピュータシステム600は搬送波の形でアプリケーションコードを得ることができる。
上述の明細書では、本発明の実施例を実現例ごとに異なり得る多数の特定の詳細を参照して説明してきた。したがって、本発明が何であるか、および出願人が発明として意図したのは何であるかを示す唯一独占的なものが、この出願から特有の形態で発生する請求項の組であって、そこでこのような請求項は以降のあらゆる補正を含む。このような請求項に含まれる用語に対して本願明細書で明示されたいずれの定義も、請求項で用いられている通りにこのような用語の意味を支配するものとする。したがって、請求項に明示的に記載されていない限定、要素、特性、特徴、利点または属性は、このような請求項の範囲をいかなる意味でも限定してはならない。したがって、本願明細書および図面は限定的な意味ではなく例示的な意味で捉えられるべきである。
コンピュータシステムのための多層アーキテクチャのブロック図である。 本発明の一実施例により、本発明の一実施例が実現され得るマルチノードコンピュータシステムを示すブロック図である。 本発明の一実施例による、セッションの移送に関与するアプケーションサーバ、ソースデータベースインスタンス、および宛先データベースインスタンスを示すブロック図である。 本発明の一実施例による、セッションのセッション状態の一部を用いるデータベースコンポーネント示すブロック図である。 本発明の一実施例による、サーバ間でセッションを移送するためのプロトコルを示す、エンティティ対話図である。 本発明の一実施例を実現するために用いられ得るコンピュータシステムのブロック図である。

Claims (11)

  1. マルチノードシステム上のセッションを管理するための方法であって、
    前記マルチノードシステムのクライアントのためにあるセッションを確立するためのリクエストを受け取るステップと、
    第1のセッションを前記あるセッションとして前記マルチノードシステムの第1のノード上に確立するステップと、
    前記クライアントから、前記マルチシステムの前記第1のノードおよび第2のノード間でセッションを転送するための1つ以上の基準を示す第1のデータを受け取るステップと、
    前記1つ以上の基準に基づいて前記第1のセッションを前記マルチノードシステムの前記第2のノードに転送することを認定するステップと、
    前記第1のセッションを転送することを認定することに応答して、前記マルチノードシステム上の前記クライアントのために前記第2のノード上に第2のセッションを前記あるセッションとして確立するステップとを含む、方法。
  2. 前記1つ以上の基準は、前記第1のセッションがステートレスであるか否かに基づく、請求項1に記載の方法。
  3. 前記1つ以上の基準は、前記第1のセッションに関連付けられるトランザクションが終了したか否かに基づく、請求項1に記載の方法。
  4. 前記1つ以上の基準は、前記第1のセッションに関連付けられるクライアントコールが完了したか否かに基づく、請求項1に記載の方法。
  5. 前記1つ以上の基準は、第1のアプリケーションコールの後行われたその後のアプリケーションコールが、前記第1のアプリケーションコールのために生成された第1のセッション状態に依存するか否かを示す、請求項1に記載の方法。
  6. 前記その後のアプリケーションコールは、前記第1のセッション状態に依存する、請求項5に記載の方法。
  7. サーバは前記クライアントおよび複数の他のセッションをホストし、
    前記サーバは前記第1のノード上にセッションのプールを維持し、前記プールは前記第1のセッションを含み、さらに、
    前記サーバは、前記第1のセッションを前記複数の他のセッションに割当て、かつ割当て解除する、請求項1に記載の方法。
  8. 前記サーバはアプリケーションサーバである、請求項7に記載の方法。
  9. マルチノードシステム上のセッションを管理するための方法であって、
    前記マルチノードシステムのクライアントのためにあるセッションを確立するためのリクエストを受け取るステップと、
    第1のセッションを前記あるセッションとして前記マルチノードシステムの第1のノード上に確立するステップと、
    前記クライアントから、前記第1のセッションの状態をキャプチャする必要なく前記第1のノードおよび第2のノード間で移送され得るセッションとして前記第1のセッションを特定する第1のデータを受け取るステップと、
    前記第1のデータに基づいて、前記第1のセッションを前記第2のノードに移送することを決定するステップと、
    前記第1のセッションを前記第2のノードに転送することを認定することに応答し、
    前記マルチノードシステム上の前記クライアントのための前記あるセッションとして、前記第2のノード上に第2のセッションを確立するステップとを含む、方法。
  10. 前記クライアントは、第1のアプリケーションコールの後行われたその後のアプリケーションコール前記が第1のアプリケーションコールのために生成された第1のセッション状態に依存しないと判断することに応答して、前記第1のデータを送信する、請求項9に記載の方法。
  11. 請求項9に記載の方法であって、前記方法はさらに、
    サーバが前記クライアントおよび複数の他のセッションをホストするステップと、
    前記サーバが前記第1のノード上にセッションのプールを維持するステップとを含み、前記プールは前記第1のセッションを含み、さらに、
    前記サーバが前記第1のセッションを前記他のセッションの特定のセッションに割り当てるステップを含み、
    前記第1のセッションを割当てる前記サーバは、前記サーバに前記第1のデータを送信させる、請求項9に記載の方法。

JP2006523440A 2003-08-14 2004-08-13 ステートレスなセッションの透過的なサーバ間移送 Pending JP2007507762A (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US49536803P 2003-08-14 2003-08-14
US50005003P 2003-09-03 2003-09-03
US50009603P 2003-09-03 2003-09-03
US10/917,953 US7552218B2 (en) 2003-08-14 2004-08-12 Transparent session migration across servers
US10/917,873 US7516221B2 (en) 2003-08-14 2004-08-12 Hierarchical management of the dynamic allocation of resources in a multi-node system
US10/917,882 US7747754B2 (en) 2003-08-14 2004-08-12 Transparent migration of stateless sessions across servers
US10/918,055 US7552171B2 (en) 2003-08-14 2004-08-12 Incremental run-time session balancing in a multi-node system
PCT/US2004/026570 WO2005018203A1 (en) 2003-08-14 2004-08-13 Transparent migration of stateless sessions across servers

Publications (1)

Publication Number Publication Date
JP2007507762A true JP2007507762A (ja) 2007-03-29

Family

ID=34199424

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006523440A Pending JP2007507762A (ja) 2003-08-14 2004-08-13 ステートレスなセッションの透過的なサーバ間移送

Country Status (7)

Country Link
EP (1) EP1654858B1 (ja)
JP (1) JP2007507762A (ja)
AU (1) AU2004300915B2 (ja)
CA (1) CA2533751C (ja)
DE (1) DE602004019787D1 (ja)
HK (1) HK1086686A1 (ja)
WO (1) WO2005018203A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007219964A (ja) * 2006-02-20 2007-08-30 Hitachi Ltd 負荷分散方法およびシステム
JP2011521306A (ja) * 2008-03-13 2011-07-21 シャープ株式会社 複数のアプリケーションを同期化するための方法およびシステム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050221813A1 (en) * 2004-04-05 2005-10-06 Jarno Rajahalme System and method for initiating auxiliary communication interfaces via a primary communication interface
JP2007226398A (ja) * 2006-02-22 2007-09-06 Hitachi Ltd データベース接続管理方法及び計算機システム
CN109218356B (zh) 2017-06-30 2021-10-08 伊姆西Ip控股有限责任公司 管理服务器上有状态应用的方法和设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088728A (en) * 1997-06-11 2000-07-11 Oracle Corporation System using session data stored in session data storage for associating and disassociating user identifiers for switching client sessions in a server
US6243751B1 (en) * 1997-06-11 2001-06-05 Oracle Corporation Method and apparatus for coupling clients to servers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007219964A (ja) * 2006-02-20 2007-08-30 Hitachi Ltd 負荷分散方法およびシステム
US7844713B2 (en) 2006-02-20 2010-11-30 Hitachi, Ltd. Load balancing method and system
JP2011521306A (ja) * 2008-03-13 2011-07-21 シャープ株式会社 複数のアプリケーションを同期化するための方法およびシステム

Also Published As

Publication number Publication date
CA2533751C (en) 2012-10-02
EP1654858B1 (en) 2009-03-04
EP1654858A1 (en) 2006-05-10
CA2533751A1 (en) 2005-02-24
DE602004019787D1 (de) 2009-04-16
AU2004300915B2 (en) 2008-07-10
WO2005018203A1 (en) 2005-02-24
AU2004300915A1 (en) 2005-02-24
HK1086686A1 (en) 2006-09-22

Similar Documents

Publication Publication Date Title
US7747754B2 (en) Transparent migration of stateless sessions across servers
US9176772B2 (en) Suspending and resuming of sessions
US7415470B2 (en) Capturing and re-creating the state of a queue when migrating a session
US8713186B2 (en) Server-side connection resource pooling
JP3370704B2 (ja) 通信制御方法
US6801919B2 (en) Object oriented database interface encapsulation that allows for chronologically overlapping transactions in a multi-threaded environment
AU2004279197B8 (en) Remote system administration using command line environment
US6237005B1 (en) Web server mechanism for processing multiple transactions in an interpreted language execution environment
US20080098048A1 (en) Migrating temporary data of a session
CN113821268B (zh) 一种与OpenStack Neutron融合的Kubernetes网络插件方法
US10140121B2 (en) Sending a command with client information to allow any remote server to communicate directly with client
KR100288140B1 (ko) 이기종 데이터베이스 관리 시스템에 접근 가능한 연결 제공 시스템 및 그 방법
US7752225B2 (en) Replication and mapping mechanism for recreating memory durations
JP4976128B2 (ja) サーバ間の透過的なセッション移送
CA2533751C (en) Transparent migration of stateless sessions across servers
US20060149702A1 (en) Cursor pre-fetching
Sfakakis et al. An architecture for online information integration on concurrent resource access on a z39. 50 environment
JPH04188241A (ja) 分散データ管理システム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091026

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100126