JP3693365B2 - データベース・アクセス・システムおよびデータベース・アクセス・システムの制御方法 - Google Patents
データベース・アクセス・システムおよびデータベース・アクセス・システムの制御方法 Download PDFInfo
- Publication number
- JP3693365B2 JP3693365B2 JP12657394A JP12657394A JP3693365B2 JP 3693365 B2 JP3693365 B2 JP 3693365B2 JP 12657394 A JP12657394 A JP 12657394A JP 12657394 A JP12657394 A JP 12657394A JP 3693365 B2 JP3693365 B2 JP 3693365B2
- Authority
- JP
- Japan
- Prior art keywords
- access
- database
- sql
- information processing
- request
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【産業上の利用分野】
本発明は、データベースをアクセスするための情報処理システムに係り、特に、クライアントの情報処理装置からネットワークを介して複数の異種データベース・サーバーをアクセスする場合に好適な、データベース・アクセス・システムおよびその制御方法に関する。
【0002】
【従来の技術】
企業におけるデータベース・システムは、ダウンサイジング化に伴い、メインフレームを用いた全社システムから、各業務を担当する部門に分散された部門システムへと移行が進んでいる。部門システムでは、業務内容に応じた最適なシステムを構築するため、各部門毎に異なるベンダのデータベース管理システム(DataBase Management System: DBMS)を採用することも珍しくない。一方、意志決定支援などのアプリケーション・ソフトウェアの実行においては、企業内の各部門に分散したデータベース上の種々のデータを必要に応じて収集し分析する必要がある。
【0003】
データベースのアクセスに用いるアプリケーション・プログラミング・インタフェース(Application Programming Interface: API)としては、エス・キュー・エル(SQL: Structured Query Language)とよばれる言語が一般に用いられている。SQLは、JIS規格などで標準仕様が定められているが、実際のDBMSの製品では細かな点でDBMSベンダ毎にその仕様が異なっている。このため、同一のSQLで異なるベンダのDBMS上のデータベースにアクセスすることはできない。そこで、一種類のSQLを各ベンダ固有のSQLに変換するゲートウェイが製品化されている。なお、SQLの仕様の相違点については、Addison-Wesley Publishing Company, Inc発行の「THE PRACTICAL SQL HANDBOOK」329〜341頁に記載されている。
【0004】
ゲートウェイを用いた異種データベース・アクセス・システムの一従来例を図2に示す。この従来例では、アプリケーション・ソフトウェア実行手段111が動作するクライアント情報処理装置110に、ゲートウェイ機能を搭載している。図2に示した例では、クライアント情報処理装置110と接続されたLAN(Local Area Network)100には、2つのサーバ情報処理装置120a,120bが接続されており、それぞれ、DBMS_A121a、DBMS_B121bが動作する。サーバ情報処理装置120aには、データベース124aのデータを保持する外部記憶装置124aが接続され、サーバ情報処理装置120bには、データベース124bのデータを保持する外部記憶装置124bが接続されている。DBMS_A121a,DBMS_B121bは、それぞれ、データベース124a,124bを管理する。
【0005】
アクセス管理コンポーネント112は、アプリケーション・ソフトウェア111がデータベース・アクセスのため発行するSQL文を、アクセス先がDBMS_A121aの時はSQL変換手段A115a、アクセス先がDBMS_B121bの時はSQL変換手段B115bの各コンポーネントに引き渡すように動作する。
【0006】
SQL変換手段A115a,SQL変換手段B115bの各コンポーネントは、受け取ったSQL文をターゲットDBMS(アクセス先のDBMS)の仕様に変換し、各DBMS用のデータベース・ドライバA122a、データベース・ドライバB122b、およびLANドライバ123を介して、各ターゲットのサーバ情報処理装置120aまたは120bに、前記変換後のSQL文を送信する。
【0007】
データベース・ドライバA122a、データベース・ドライバB122b、および前記LANドライバ123は、クライアント情報処理装置110と同じものが各サーバ情報処理装置120a、120bにも搭載されており、通信プロトコルの階層に従った処理を行い、クライアント情報処理装置100が送信したLAN100上のパケットデータからDBMS_A121aまたはDBMS_B121b宛の前記SQL文を取り出し、該各DBMSに該SQL文を送る。各DBMSでの処理結果は、上述の経路を逆に辿り、SQL変換手段A115aまたはSQL変換手段B115bによって、標準のデータ形式、および標準のリターン・コードに変換した後、アクセス管理コンポーネント112を介してアプリケーション・ソフトウェア111に送られる。
【0008】
このように、ゲートウェイ機能を、クライアント情報処理装置110上のアクセス管理コンポーネント112とSQL変換手段A115a、SQL変換手段B115bによって実現することにより、単一のSQL仕様だけを用いて、異なるSQL仕様を持つDBMSにアクセスすることが可能となっている。
【0009】
これらのゲートウェイ機能をクライアント情報処理装置110上ではなく、専用のゲートウェイ情報処理装置130を用いて実現した従来例を図3に示す。この従来例では、アプリケーション・ソフトウェア実行手段111が発行したSQL文は、まず、データベース・ドライバC122c、LANドライバ123を介してゲートウェイ情報処理装置130に送られる。ゲートウェイ情報処理装置130上では、LANドライバ123、データベース・ドライバC122cによって前記SQL文が取り出され、アクセス管理コンポーネント112に送られる。この後の動作は、図2を用いて説明した従来例と同様であり、SQL変換手段A115a、SQL変換手段B115b、データベース・ドライバA122a、データベース・ドライバB122b、LANドライバ123を介してターゲットのサーバ情報処理装置120aまたは120b上のデータベースをアクセスし、結果がクライアント情報処理装置110上のアプリケーション・ソフトウェア実行手段111に返される。
【0010】
これらの異種データベース・アクセス・システムについては、「日経エレクトロニクス1993年2月15日号」138〜145頁(日経BP社刊)に述べられている。
【0011】
【発明が解決しようとする課題】
以上述べたように、ターゲットDBMSのSQL仕様へのSQL文の変換を行うゲートウェイ機能を、クライアント情報処理装置上に搭載する、あるいは、ゲートウェイ機能を実現するゲートウェイ情報処理装置を設けることによって、単一のSQL仕様だけに対応したアプリケーション・ソフトウェア実行手段によって、異なるSQL仕様を持つ複数のDBMSで管理されたデータベースをアクセスすることが可能となっている。
【0012】
しかし、図2で示した従来の構成では、アクセスするDBMSに対応したSQL変換手段およびデータベース・ドライバを、すべてのクライアントが具備する必要がある。このため、システム内のDBMSの種類の追加やバージョンアップのたびごとに、各クライアントのSQL変換手段およびデータベース・ドライバをメンテナンスする必要があり、保守性のよいものではなかった。
【0013】
図3で示した従来の構成では、ゲートウェイ情報処理装置上のSQL変換手段、データベース・ドライバだけをメンテナンスすればよいので、上記の課題は解決される。しかし、常にゲートウェイ情報処理装置を介してデータベースをアクセスするので、ゲートウェイ情報処理装置に負荷が集中し、LAN上のトラフィックが増加するため、該アクセスの性能がゲートウェイ情報処理装置を介さない場合に比べて低下するという課題があった。
【0014】
また、従来のゲートウェイ情報処理装置を用いた方式では、それぞれ仕様の異なるSQLを発行する複数のクライアントから、それぞれ仕様の異なる複数のDBMSにアクセスすることができないという課題があった。
【0015】
さらに、従来のゲートウェイ情報処理装置を用いた方法では、クライアントのアプリケーション・ソフトウェア毎に、異なる文字コードセットを使用することができないという課題があった。
【0016】
また、データベースへのアクセスは、長いときには30分以上の時間を要する場合があり、処理の打ち切り時間はユーザーが自由に設定できることが望ましい。しかし、従来は、前記打ち切り時間を設定できない、あるいはシステムで固定した値での設定となっており、ユーザー毎の設定はできないという課題があった。さらに、ゲートウェイ情報処理装置上のSQL変換手段を介したデータベース・アクセスにおいては、処理打ち切り時間をオーバーした場合の原因箇所特定が容易でないという課題があった。また、ゲートウェイ情報処理装置上のコンポーネントまたはDBMSに障害が発生している場合も、30分程度の値が設定される前記打ち切り時間だけ待たなければ、前記障害が明らかにならないという課題があった。
【0017】
また、従来のゲートウェイ情報処理装置を用いた方法では、それぞれ仕様の異なるSQLを発行する複数のクライアントから、それぞれ仕様の異なる複数のDBMSにアクセスすることは困難であった。
【0018】
そこで、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、言語変換に伴う負荷を、複数の情報処理装置に分散することのできるデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第1の目的とする。
【0019】
さらに、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、アプリケーション・ソフトウェアが、データベース管理システムや、ゲートウェイ情報処理装置と異なる文字コードを用いることのできるデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第2の目的とする。
【0020】
また、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、任意の時間でデータベースへのアクセス処理を打ち切ることのできるデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第3の目的とする。
【0021】
さらに、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、各装置の障害を検知する手段を有するデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第4の目的とする。
【0022】
【課題を解決するための手段】
上記目的を達成するために、本発明では、データベース・アクセス言語によるデータベースへのアクセス依頼を受け付け、応答を返すデータベース管理システムを備える複数のサーバ情報処理装置と、該サーバ情報処理装置に接続された、上記データベース管理システムをアクセス対象とする上記依頼を発行するアプリケーション・ソフトウェア実行手段を備える一以上のクライアント情報処理装置とを有するデータベース・アクセス・システムであって、上記アクセス依頼を受け付け、上記データベース管理システムに送るゲートウェイ情報処理装置を備え、上記ゲートウェイ情報処理装置は、上記アクセス依頼を受け付け、異なるデータベース・アクセス言語による依頼に変換して、上記データベース管理システムに送るデータベース・アクセス言語変換手段と、上記アクセス依頼を受け付け、上記データベース・アクセス言語変換手段に送る、アクセス管理手段とを備え、その目的に応じて、下記の要素を有するデータベース・アクセス・システムが提供される。
【0023】
A.上記第1の目標達成のためには、
(1)上記クライアント情報処理装置が、上記アプリケーション・ソフトウェア実行手段の発行した依頼を受け付け、上記複数のアクセス管理手段のうちのいずれに送るかを決定し、該決定したアクセス管理手段に送る第1の選択手段を有すること
(2)上記アクセス管理手段が、
上記アプリケーション・ソフトウェア実行手段の発行した依頼を受け付け、
上記複数のデータベース言語変換手段のうちのいずれに送るかを決定し、該決定したデータベース・アクセス言語変換手段に送る第2の選択手段を有することのすくなくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0024】
B.上記第2の目標達成のためには、
(1)上記クライアント情報処理装置が、上記アプリケーション・ソフトウェア実行手段の、前記依頼の発行に使用した文字コードの文字コードセット識別情報を、上記アクセス管理手段に通知する手段を備え、上記アクセス管理手段は、上記データベース・アクセス言語変換手段へ送る前に、受け付けた上記依頼の文字コードを、あらかじめ定められた文字コードセットの文字コードに変換する手段と、上記クライアント情報処理装置へ通知する応答を、上記通知された文字コードセットの文字コードに変換する手段とを備えること
(2)上記データベース・アクセス言語変換手段が、受け付けた上記依頼の文字コードを、あらかじめ定められた文字コードに変換する手段と、上記アクセス管理手段へ通知する応答を、上記通知された文字コードセットの文字コードに変換する手段とを備えること
の少なくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0025】
C.上記第3の目的達成のためには、
(1)上記クライアント情報処理装置が、上記依頼を発行すると、上記アクセス管理手段との接続を確保し、該依頼を該アクセス管理手段に送る手段と、あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理をエラーとする手段とを備えること
(2)上記アクセス管理手段が、上記依頼を受け付けると、上記データベース・アクセス言語変換手段との接続を確保し、該依頼を該データベース・アクセス言語変換手段に送る手段と、あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをクライアント情報処理装置に通知する手段とを備えること
(3)上記データベース・アクセス言語変換手段が、上記依頼を受け付けると、上記データベース管理システム手段との接続を確保し、該依頼を該データベース管理システムに送る手段と、あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをアクセス管理手段に通知する手段とを備えること
の少なくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0026】
D.上記第4の目的達成のためには、
(1)上記クライアント情報処理装置が、障害チェック用のあらかじめ定められた上記アクセス依頼を、あらかじめ定められた時間が経過するごとに発行し、上記ゲートウェイ情報処理装置に送る障害チェック手段と、上記障害チェック用アクセス依頼に対する応答が、あらかじめ定められた時間内になければ、上記アプリケーション・ソフトウェア実行手段にエラーを通知する障害通知手段とを有すること
(2)上記アクセス管理手段が、障害チェック用の上記アクセス依頼を、あらかじめ定められた時間が経過するごとに発行し、上記データベース・アクセス言語変換手段に送る障害チェック手段と、上記障害チェック用アクセス依頼に対する応答が、あらかじめ定められた時間内になければ、上記クライアント情報処理装置にエラーを通知する障害通知手段とを有すること
(3)上記データベース・アクセス言語変換手段が、障害チェック用の上記アクセス依頼をあらかじめ定められた時間が経過するごとに発行し、上記データベース管理システムに送る障害チェック手段と、上記障害チェック用アクセス依頼に対する応答が、あらかじめ定められた時間内になければ、上記アクセス管理手段にエラーを通知する障害通知手段とを有すること
の少なくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0027】
さらに、本発明では、上記各要素を備えるデータベース・アクセス・システムの制御方法が提供される。
【0028】
【作用】
アクセス管理手段は、あらかじめ定められた仕様のSQLによる、データベース管理システムへのアクセス依頼をリモート・プロシージャ・コール((Remote Procedure Call: RPC)のパラメータとしたアクセスを受け付け、ターゲットのDBMSの種類を決定し、DBMSの種類に対応したSQL変換手段に標準仕様のSQLをパラメータとしたRPCを発行する。
【0029】
SQL変換手段は、アクセス管理手段から発行されたRPCによって引き渡された標準仕様のSQLを、ターゲットDBMSが用いる非標準仕様のSQLに変換し、DBMSへのアクセスを実行する。
【0030】
このように、アクセス管理手段とSQL変換手段との接続をRPCを用いて行い、しかもアクセス管理手段への処理依頼と、SQL変換手段への処理依頼の各RPCのパラメータ仕様を同一とする事によって、ターゲットDBMSが明確でしかも単一の場合には、ユーザー・アプリケーション・ソフトウェアから、アクセス管理手段を介すること無く直接SQL変換手段へアクセスすることができるようになる。これによって、オーバーヘッドを低減することができる。
【0031】
また、アクセス管理手段とSQL変換手段は、複数の情報処理装置上に置くことができ、第一の情報処理装置上のアクセス管理手段から他の情報処理装置上のSQL変換手段へRPCによる処理依頼を行うこともできる。これによって、処理負荷を複数の情報処理装置に分散できる。さらに、アクセス管理手段が搭載されたすべての情報処理装置上にすべての種類のDBMSに対応したSQL変換手段を搭載しなくてもよく、どれかの情報処理装置上に必要な種類のSQL変換手段を用意して置けばよいので、導入、保守が容易となる。
【0032】
また、ユーザー・アプリケーション・ソフトウェアが搭載された情報処理装置(クライアント情報処理装置)上で動作し、ユーザー・アプリケーション・ソフトウェア実行手段から発行されるSQLを、RPCを用いて他の情報処理装置に実行依頼するクライアントSQL処理手段は、ユーザー・アプリケーション・ソフトウェア実行手段から発行されるSQLをパラメータとするRPCを、単一のDBMSに対するものであるときはターゲットDBMSと同一情報処理装置上のSQL変換手段に発行し、単一のDBMSに対するものでないときはターゲットDBMSとは別のゲートウェイ情報処理装置上のアクセス管理手段に発行するように動作する。これによって、単一のDBMSに対してのアクセスは、ゲートウェイ情報処理装置を介することによるオーバーヘッドを生じることなく実行することができる。
【0033】
アクセス管理手段は、あらかじめ定められた仕様のSQLをRPCのパラメータとしたアクセスを受け付け、ターゲットのDBMSの種類を決定し、DBMSの種類に対応したSQL変換手段に前記RPCと同じ内容のRPCを発行する。前記SQL変換手段は、アクセス管理手段から発行されたRPCによって引き渡されたアクセス依頼を、ターゲットDBMSが用いるSQL仕様のアクセス依頼に変換し、該DBMSへのアクセスを実行する。この際、文字コードセット識別情報が通知される。前記アクセス管理コンポーネントは、自分自身が解釈可能な文字コードセットへ、アプリケーション・ソフトウェアから受け取ったSQL文を文字コード変換手段を用いて変換する。これによって、クライアント情報処理装置上のアプリケーション・ソフトウェアは、データベースへの接続単位に様々な文字コードセットを用いることができる。
【0034】
クライアント情報処理装置、アクセス管理手段、データベース・アクセス言語変換手段のいずれかに、上記依頼を受け付けると、送り先への接続を確保し、該依頼を送る手段と、あらかじめ定められた時間が経過しても応答がないと、該接続を切断し、上記依頼の処理のエラーを依頼元に通知する手段とを備えれば、データベース・アクセスの処理をあらかじめ定められた時間(打ち切り時間)で打ち切ることができる。また、クライアント情報処理装置からアクセス管理手段へ、アクセス管理手段からデータベース・アクセス言語変換手段へ、打ち切り時間を、依頼の通知ごとに通知するようにすれば、アプリケーション・ソフトウェア実行手段による依頼ごとに、データベースへの接続単位で自由に設定できる。
【0035】
また、打ち切り時間設定手段は、前記データベース・アクセス処理打ち切り時間通知手段から受け取った時間よりも短い時間を処理打ち切り時間として設定するように動作する。これによって、前記2つの打ち切り時間計測手段が用いる処理打ち切り時間は、前記アクセス管理手段から前記SQL変換手段へのSQL文の処理依頼に対して適用されるの方が短い時間となる。これによって、アプリケーション・ソフトウェアから見てアクセス管理手段の先にあるSQL変換手段への処理依頼打ち切りよりも時間的前に、アクセス管理手段への処理を打ち切ることを防止できる。これによって、SQL変換手段への処理打ち切りが発生した場合も、アクセス管理手段を介して該打ち切りの通知をアプリケーション・ソフトウェアが受け取ることができ、処理打ち切り時間をオーバーした場合の原因箇所特定が可能となる。
【0036】
また、サーバ障害チェック用RPC発行手段は、アプリケーション・ソフトウェアがデータベースに接続した後、アクセス管理手段およびSQL変換手段に対して、定期的に障害チェック用RPCを発行する。該障害チェック用RPCは、発行後、打ち切り時間内にサーバすなわちアクセス管理手段またはSQL変換手段から応答があるかどうかを打ち切り時間計測手段によってチェックする。前記打ち切り時間内に応答がなかった場合には、サーバに障害が発生したものとみなす。これによって、アクセス管理手段、SQL変換手段の障害をSQL文の発行前に検知することが可能である。
【0037】
さらに、RPCの定期的発行をチェックする手段は、前記サーバ障害チェック用RPC発行手段から発行される障害チェック用RPCが定期的に発行されているかどうかを監視し、前記発行がなされていない場合にはクライアントに障害が発生したものとみなす。これによって、クライアント側の障害を容易に検知することが可能である。
【0038】
【実施例】
以下に、本発明の実施例を図面を用いて説明する。
【0039】
(実施例1)
A.異種データベース・アクセス・システムの構成
図1に、本実施例1における異種データベース・アクセス・システムの一構成例を示す。本実施例1における異種データベース・アクセス・システムは、クライアント情報処理装置110と、ゲートウェイ情報処理装置130と、サーバ情報処理装置120a,120bと、ネームサーバ情報処理装置150とを備える。以上の各情報処理装置110,120a,120b,130,150はLAN100で接続されている。図39に示すように、各情報処理装置110,120a,120b,130,150は、少なくとも、主記憶装置1001と中央演算処理装置(CPU)1000とを備える。
【0040】
クライアント情報処理装置110は、アプリケーション・ソフトウェア実行手段111と、RPCドライバ102と、LANドライバ123とを備え、アプリケーション・ソフトウェア実行手段111によりデータベースの保持するデータにアクセスするためのアクセス要求であるリモート・プロシージャ・コール(Remote Procedure Call: RPC)を発行し、該要求に対する応答を受け付ける情報処理装置である。アプリケーション・ソフトウェア実行手段111と、RPCドライバ102と、LANドライバ123とは、クライアント情報処理装置110の主記憶装置1001上に保持されたインストラクションを、クライアント情報処理装置110のCPU1000が実行することにより実現される。
【0041】
サーバ情報処理装置120aは、DBMS_A121aと、データベースドライバA122aと、LANドライバ123とを備え、サーバ情報処理装置120bは、DBMS_B121bと、データベースドライバデータベースドライバB122bと、LANドライバ123とを備える。サーバ情報処理装置120a,120bは、DBMS_A121a、DBMS_B121bにより、受け付けたデータベースアクセス要求に対して応答する。サーバ情報処理装置120aのDBMS_A121aと、データベースドライバA122aと、LANドライバ123とは、サーバ情報処理装置120aの主記憶装置1001上に保持されたインストラクションを、サーバ情報処理装置120aのCPU1000が実行することにより実現される。サーバ情報処理装置120bのDBMS_B121bと、データベースドライバデータベースドライバB122bと、LANドライバ123とは、サーバ情報処理装置120bの主記憶装置1001上に保持されたインストラクションを、サーバ情報処理装置120bのCPU1000が実行することにより実現される。
【0042】
ネームサーバ情報処理装置150は、ネームサーバ151と、RPCドライバ102と、LANドライバ123とを備え、RPCで呼び出す各サーバ・コンポーネント(アクセス管理コンポーネント112vや、SQL変換手段115など)の識別情報と、ネットワーク上の物理位置との対応情報を提供するサービスを行うネームサーバ151が動作する情報処理装置である。ネームサーバ情報処理装置150のネームサーバ151と、RPCドライバ102と、LANドライバ123とは、ネームサーバ情報処理装置150の主記憶装置1001上に保持されたインストラクションを、ネームサーバ情報処理装置150のCPU1000が実行することにより実現される。
【0043】
ゲートウェイ情報処理装置130は、アクセス管理コンポーネント112vと、2種類のデータベース・アクセス言語変換手段(本実施例では、データベース・アクセス言語として、SQLを用いるので、ここでは、SQL変換手段と呼ぶ。本実施例では、SQL変換手段A115aおよびSQL変換手段B115bがある)およびデータベースドライバ(データベースドライバA122aおよびデータベースドライバB122b)と、RPCドライバ102と、LANドライバ123とを備え、RPCを処理するゲートウェイである。ゲートウェイ情報処理装置130のアクセス管理コンポーネント112vと、SQL変換手段A115とa、SQL変換手段B115bと、データベースドライバA122aと、データベースドライバB122bと、RPCドライバ102と、LANドライバ123とは、ゲートウェイ情報処理装置130の主記憶装置1001上に保持されたインストラクションを、ゲートウェイ情報処理装置130のCPU1000が実行することにより実現される。
【0044】
なお、アクセス管理コンポーネント112vと、ゲートウェイ情報処理装置130のRPCドライバ102とを合わせて、アクセス管理手段と呼ぶ。
【0045】
DBMS_A121a、DBMS_B121bによって管理されているデータベースのデータは、上述の従来例と同様に、外部記憶装置に格納されるが、図が煩雑になるのを防ぐため、図1では外部記憶装置およびデータベースの図示を省略している(以下の実施例についても同様に省略する)。
【0046】
B.SQL_RPCの処理
アプリケーション・ソフトウェア実行手段111からのデータベース・アクセスは、アプリケーション・ソフトウェア実行手段111の発行したSQL文に対応するRPC(パラメタとして該SQL文の指定されたRPC。以下、SQL_RPCと呼ぶ)の実行によって行なわれる。
【0047】
なお、ここでは、アプリケーション・ソフトウェア実行手段111が使用するSQL仕様を、本実施例1のシステムにおける標準仕様と呼ぶことにする。本実施例1では、DBMS_A121a、DBMS_B121bはこの標準仕様とは異なるSQL仕様を用いている。
【0048】
アプリケーション・ソフトウェア実行手段111からSQL_RPCが発行されると、クライアント情報処理装置110上のRPCドライバ102は、まず、ネームサーバ情報処理装置150上のネームサーバ151に、このSQL文を処理するサーバのネットワーク・アドレスとサーバ・コンポーネントへの接続のためのポート番号を問い合わせる。
【0049】
本実施例1では、このSQL_RPCを処理するサーバは、ゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vであるので、この問い合わせに対して、ネームサーバ151は、ゲートウェイ情報処理装置130のネットワーク・アドレス情報とアクセス管理コンポーネント112vのポート番号を返す。
【0050】
これらの情報をもとに、クライアント情報処理装置110上のRPCドライバ102は、ゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vとRPC接続を行い、処理対象のSQL_RPCの処理をアクセス管理コンポーネント112vへ依頼する。
【0051】
アクセス管理コンポーネント112vは、処理を依頼されたSQL_RPCのパラメータに含まれるターゲットDBMSの名称をネームサーバ151に通知して、使用すべきSQL変換コンポーネントを問い合わせる。本実施例1では、ネームサーバ151は、SQL変換手段A115aまたは、SQL変換手段B115bのネットワーク・アドレス情報とポート番号を応答するので、アクセス管理コンポーネント112vは、ネームサーバ151から返された該情報をもとに、該情報により定められる何れかのSQL変換手段に、SQL文の変換とターゲットDBMSへのアクセス処理とをRPCを用いて依頼する。
【0052】
SQL変換手段A115aまたはSQL変換手段B115bが行った各DBMSへのアクセス結果は、上述の経路を逆に辿り、前記SQL変換手段A115aまたはSQL変換手段B115bによって、標準のデータ形式、および標準のリターン・コードに変換した後、アクセス管理コンポーネント112vを介してアプリケーション・ソフトウェア実行手段111に送られる。
【0053】
上述のSQL_RPCの処理を図4のフローチャートに示す。
(1)RPCドライバ102の処理
クライアント情報処理装置110のアプリケーション・ソフトウェア111がSQL_RPCを発行すると、クライアント情報処理装置110のRPCドライバ102は、まず、ネームサーバ情報処理装置150上のネームサーバ151に、該SQL_RPCを処理するサーバの物理位置、すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を問い合わせ(ステップ450)、得られたポート番号を用いて、ゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vとのRPC接続を行い、SQL_RPCの処理を該アクセス管理コンポーネント112vへ依頼する(ステップ451)。
【0054】
(2)ネームサーバ151の処理
本実施例のネームサーバ情報処理装置150は、サーバ・コンポーネントの識別情報とアドレス等を保持するサーバ情報テーブルを備える。本実施例1のサーバ情報テーブルの一例を図35に示す。サーバ情報テーブルは、サーバ・コンポーネント名格納領域(列1701)ごとに、アドレス格納領域(列1702)と、ポート番号格納領域(列1703)と、状態格納領域(列1704)とを備える配列構造を有している。なお、状態格納領域(列1704)には、各コンポーネントのステータスが保持されており、動作中のサーバでは”RUN”、停止中のサーバでは”STOP”、故障中のサーバでは”FAULT”となっている。
【0055】
上述のステップ450等において、サーバの物理位置の問い合わせを受けたネームサーバ151は、このサーバ情報テーブルを参照して、状態格納領域に保持された値が”RUN”であれば、問い合わせられた名称に対応して保持されている該サーバ・コンポーネントのネットワーク・アドレスとポート番号とを返答する。
【0056】
(3)アクセス管理コンポーネント112vの処理
ステップ401〜411は、依頼を受けたアクセス管理コンポーネント112vの処理内容である。ステップ451で依頼を受けたアクセス管理コンポーネント112vは、まず、SQL_RPCのパラメータとして送られてきたSQL文を解析し、アクセス先のテーブルが含まれるDBMSの名称を得る(ステップ401)。
【0057】
なお、本実施例1では、アクセス管理コンポーネント112vは、単一のDBMS上のテーブルに対する操作だけでなく、異なるDBMSの管理する複数のデータベースに跨る複数のテーブルのデータの検索、結合などの操作を行えるようにした。そこで、本実施例1のアクセス管理コンポーネント112vは、アクセス先がDBMS_A121aとDBMS_B121bとの両方か(ステップ402)、DBMS_A121aだけか(ステップ403)、DBMS_B121bだけか(ステップ404)を判断する。
【0058】
アクセス先がDBMS_A121aとDBMS_B121bの両方の場合、アクセス管理コンポーネント112vは、処理対象のSQL文をDBMS_A121aに対するアクセスとDBMS_B121bに対するアクセスに分割したSQL文を作成する(ステップ406)。つぎに、アクセス管理コンポーネント112vは、DBMS_A121aに対するSQL文をパラメータとしたRPC(SQL_A_RPCと呼ぶ)を実行し、その結果を得(ステップ407)、さらに、DBMS_B121bに対するSQL文をパラメータとしたRPC(SQL_B_RPCと呼ぶ)を実行し、その結果を得る(ステップ408)。最後に、アクセス管理コンポーネント112vは、ステップ407、408で得た結果をマージして、分割を行う前のSQL文に対応する結果を作成し(ステップ409)、SQL_RPCの処理を完了する(ステップ412)。
【0059】
アクセス先がDBMS_A121a一方のみの場合、アクセス管理コンポーネント112vは、処理対象のSQL文をパラメータとしたRPC(SQL_A_RPC)を発行してアクセス結果を得(ステップ410)、SQL_RPCの処理を完了する(ステップ412)。
【0060】
アクセス先がDBMS_B121b一方のみの場合、アクセス管理コンポーネント112vは、処理対象のSQL文をパラメータとしたRPC(SQL_B_RPC)を発行してアクセス結果を得(ステップ411)、SQL_RPCの処理を完了する(ステップ412)。
【0061】
なお、アクセス先がDBMS_A121aおよびDBMS_B121bのいずれでもない場合、アクセス管理コンポーネント112vは、エラーコードをセットし(ステップ405)、SQL_RPCの処理を終了する(ステップ412)。
【0062】
(4)SQL_RPCの分割(ステップ406)
アクセス管理コンポーネント112vは、処理対象のSQL文が複数のデータベースに対する処理の指示を含むことを検出すると、アクセス対象ごとに分割したSQL_RPCを作成する(ステップ406)。図23に示したセレクト構文の例を用いて、アクセス管理コンポーネント112vの作成するSQL文を説明する。なお、セレクト構文は、WHERE句により指定した条件を満たすレコードを、FROM句に記述したアクセス対象から検索し、該レコードのSELECT句に指定されたデータを構成要素とするテーブルを得るための質問指定の構文である。
【0063】
アプリケーション・ソフトウェア実行手段111が発行するSQL文2301は、”DBMS_A”という名称のデータベース管理システムの管理する”SALES”というテーブルと、”DBMS_B”という名称のデータベース管理システムの管理する”SALESDATA”というテーブルから、”SaleNum”カラムの内容が0でないレコードを検索し、そのレコードの”Name”カラムの内容と”SaleNum”カラムの内容とのテーブルを作成することを指示するものである。
【0064】
アクセス管理コンポーネント112vは、このSQL文2301を、DBMS_Aに対するSQL文2302と、DBMS_Bに対するSQL文2303に分割し、それぞれのSQL文をパラメータとしたRPCを発行して、その応答を結合してSQL文2301に対する応答であるテーブルを作成するのである。
【0065】
SQL文2302は、”DBMS_A”という名称のデータベース管理システムの管理する”SALES”というテーブルから、”SaleNum”カラムの内容が0でないレコードを検索し、そのレコードの”Name”カラムの内容と”SaleNum”カラムの内容とのテーブルを作成することを意味する。
【0066】
SQL文2303は、”DBMS_B”という名称のデータベース管理システムの管理する”SALESDATA”というテーブルから、”SaleNum”カラムの内容が0でないレコードを検索し、そのレコードの”Name”カラムの内容と”SaleNum”カラムの内容とのテーブルを作成することを意味する。
【0067】
(5)単一DBMSへのアクセスを指示するSQL_RPCの処理(ステップ407,410(SQL_A_RPCの処理)、ステップ408,411(SQL_B_RPCの処理))
単一DBMSへのアクセスを指示するSQL_RPC(以下、SQL_x_RPCと呼ぶ)の処理を図5に示す。SQL_x_RPCの処理では、まず、ゲートウェイ情報処理装置130のRPCドライバ102が、SQL_x_RPCを処理するサーバ・コンポーネント(本実施例1ではSQL変換手段A115aあるいはSQL変換手段B115b)のネットワーク・アドレス情報とポート番号とを、ネームサーバ151に問い合わせ、その問い合わせの応答として取得する(ステップ501)。
【0068】
次に、ゲートウェイ情報処理装置130のRPCドライバ102は、ステップ501の問い合わせによって検出したSQL変換手段115に対し、SQL_x_RPCを引き渡し、その処理を依頼する(ステップ502)。
【0069】
なお、本実施例1では、ステップ501において問い合わせを行なったRPCドライバ102と、SQL変換手段A115aおよびSQL変換手段B115bとが、いずれも同じゲートウェイ情報処理装置130にあることから、RPCドライバ102は、ネットワーク・アドレス情報とポート番号とを用いなくても、SQL_x_RPCをSQL変換手段115に通知することができる。そこで、本実施例1では、ステップ501の処理を省略してもよい。
【0070】
ステップ503、504、505は処理を依頼されたSQL変換手段115の処理である。SQL変換手段115は、RPCのパラメータとして受け取った標準仕様のSQL文をターゲットDBMSのSQL仕様に変換する(ステップ503)。次に、SQL変換手段115は、変換によって作成したSQL文をターゲットDBMSに送り、ターゲットDBMSでの前記SQL文の実行結果を得る(ステップ504)。さらに、SQL変換手段115は、実行結果として得たデータおよびリターンコードを、ターゲットDBMSのSQL仕様から標準のSQL仕様に変換する(ステップ505)。最後に、SQL変換手段115は、変換結果をリターンデータ、リターンコードとして、SQL_x_RPCの処理を終了する(ステップ506)。
【0071】
つぎに、各SQL変換手段115a,bによるSQL文の変換(ステップ503)を図24に示した例を用いて説明する。SQL変換手段115a,bは、入力されたSQL構文を、それぞれのターゲットとするDBMSのSQL仕様に変換する。なお、ステップ505では、この逆の変換が行なわれる。
【0072】
本実施例1における標準仕様のSQLでは、”等しくない”ことを示す演算子は、”<>”であるが、DBMS_A121aのSQL仕様では”!=”を、DBMS_B 121bのSQL仕様では”^=”を用いるとする。この場合、SQL変換手段A115aは、標準仕様のSQL文2302(図23に図示)を、図24の構文2402に示すように変換する。すなわち、SQL変換手段A115aは、構文2302の”<>”を”!=”に変換する。また、SQL変換手段B115bは、標準仕様のSQL文2303(図23に図示)を、図24の構文2403に示すように変換する。すなわち、SQL変換手段B115bは、構文2302の”<>”を”^=”に変換する。
【0073】
以上説明したように、アクセス管理コンポーネント112v、SQL変換手段A115a、SQL変換手段B115bを具備することによって、アプリケーション・ソフトウェア実行手段111からは、仕様の異なる複数のDBMS上のテーブルを、その仕様の違いを意識すること無く、単一の標準仕様のSQL文を用いてアクセスすることができる。
【0074】
(6)ゲートウェイ情報処理装置130内のプロセスの生成、消滅
本実施例1におけるゲートウェイ情報処理装置130内のプログラムの動作の一例を図10に示す。ここでは、クライアント情報処理装置を2台接続し、クライアント情報処理装置110aからはサーバ情報処理装置120a上のDBMS_Aとサーバ情報処理装置120b上のDBMS_Bを、クライアント情報処理装置110bからはサーバ情報処理装置120b上のDBMS_Bをアクセスする場合を示す。
【0075】
アクセス管理コンポーネント112vでは、クライアント情報処理装置との接続単位にプロセスが生成される。SQL変換手段A115a、SQL変換手段B115bについても、アクセス管理コンポーネント112vの各プロセスからのアクセス要求がRPCを用いて発行される毎にプロセスが生成される。また、データベース・ドライバA122a、データベース・ドライバB122bは、それぞれSQL変換手段A115a、SQL変換手段B115bの各1プロセスに対して1プロセスが生成されるように動作する。
【0076】
これらのプロセスは、アクセスの終了と共に消滅する。このようなプロセス生成・消滅をゲートウェイ情報処理装置130で行うことによって、複数のクライアント情報処理装置から複数のサーバ情報処理装置へのアクセスを同時に処理することができる。
【0077】
C.適用例
ネットワーク100に、互いに異なる仕様を有するデータベース管理システムを備える2つの既存のシステム600aと600bとが接続されているネットワーク100に本実施例1の異種データベースアクセスシステムを適用する場合の例を、図18を用いて説明する。
【0078】
システム600aは、DBMS_Aを用いたサーバ情報処理装置121aとDBMS_A専用のデータベースドライバA、アプリケーション・ソフトウェアA実行手段が搭載されたクライアント情報処理装置110aから構成される。また、システム600bは、DBMS_Bを用いたサーバ情報処理装置121bとDBMS_B専用のデータベースドライバB、アプリケーション・ソフトウェアBが搭載されたクライアント情報処理装置110bから構成される。
【0079】
これらの既存のシステムに、上述のゲートウェイ情報処理装置130、ネームサーバ情報処理装置150、クライアント情報処理装置110からなる付加システム500を付加することによって、既存のシステム600a、600bの構成を何等変更することなく、追加したクライアント情報処理装置110から単一の標準仕様のSQL文を用いて、仕様の異なる複数のDBMSにアクセスすることができる。
【0080】
(実施例2)
ところで、本発明では、アプリケーション・ソフトウェア実行手段111からアクセス管理コンポーネント112vへのアクセスと、該アクセス管理コンポーネント112vからのSQL変換手段115へのアクセスにRPCを用いている。このため、実施例1に示した異種データベース・アクセス・システムにおけるゲートウェイ情報処理装置130への負荷集中によるデータベース・アクセス性能の低下を、ゲートウェイ情報処理装置130の追加によって容易に回避できる。本実施例2では、ゲートウェイ情報処理装置130を追加した場合の実施例を説明する。
【0081】
本実施例2では、図9の構成図に示すように、SQL変換手段A115aを具備したゲートウェイ情報処理装置130aと、SQL変換手段B115bを具備したゲートウェイ情報処理装置130bの2台のゲートウェイ情報処理装置がネットワーク100に接続されている。すなわち、本実施例2は、SQL変換手段115ごとにゲートウェイ情報処理装置130が設けられている点で実施例1とは異なる。
【0082】
クライアント情報処理装置110上のRPCドライバ102は、実施例1と同様、アプリケーション・ソフトウェア実行手段111が発行するSQL_RPCを受け付けると、まず、該SQL_RPCを処理するサーバの物理位置すなわちネットワーク・アドレスとポート番号をネームサーバ151に問い合わせる。
【0083】
本実施例2のサーバ情報テーブルは、図17に示すように、一つのサーバ・コンポーネント名に対応して、複数のサーバの情報(アドレス、ポート番号、および状態)が保持されている。そこで、本実施例2のネームサーバ151は、サーバ情報テーブル1700を参照し、指定されたサーバ・コンポーネント名に対応する稼働中のすべてのサーバ・コンポーネントのネットワーク・アドレスおよびポート番号を返答する。すなわち、ネームサーバ151は、列1701に指定されたサーバ・コンポーネント名が保持されていおり、かつ、列1704に”RUN”が保持されているすべての行の、列1702に保持されているデータ(ネットワーク・アドレス)および列1703に保持されているデータ(ポート番号)を返答する。
【0084】
本実施例2では、前記SQL_RPCを処理するサーバすなわちアクセス管理コンポーネント112vは、ゲートウェイ情報処理装置130aと130bとの両方に搭載されており、ネームサーバ151からは、前記問い合わせに対して2つのアクセス管理コンポーネント112vの物理位置が返答される。クライアント情報処理装置110上のRPCドライバ102は、第1の選択手段として、返答された複数のアクセス管理コンポーネント112vの中から、一つを選択し、処理を依頼する。
【0085】
なお、本実施例2の異種データベースアクセスシステムの各構成要素の処理は、ここに特に記述した処理以外は、実施例1の場合と同様である。
【0086】
A.動作例
つぎに、ゲートウェイ情報処理装置130a上のアクセス管理コンポーネント112vが選択された場合の動作を説明する。
【0087】
アプリケーション・ソフトウェア実行手段111から発行されるSQL_RPCは、まず、クライアント情報処理装置110のRPCドライバ102により、ゲートウェイ情報処理装置130a上のアクセス管理コンポーネント112vに送られる。
【0088】
ゲートウェイ情報処理装置130aのアクセス管理コンポーネント112vは、すでに図4を用いて説明したように、受け付けたSQL_RPCのターゲットのDBMSに応じて、SQL_A_RPCおよび/またはSQL_B_RPCを発行する。つぎに、アクセス管理コンポーネント112aは、発行したSQL_x_RPCがSQL_A_RPCであれば、SQL変換手段A115aに通知して処理させ、発行したSQL_x_RPCがSQL_B_RPCであれば、SQL変換手段B115bに通知して処理させる。
【0089】
なお、本実施例2のシステムでは、SQL_B_RPCを処理するSQL変換手段B115bは、処理を依頼されたアクセス管理コンポーネント112aが存在するゲートウェイ情報処理装置130aとは別のゲートウェイ情報処理装置130bに存在する。従って、ゲートウェイ情報処理装置130aのRPCドライバ102は、SQL_B_RPCを、LAN100を経由してゲートウェイ情報処理装置130b上のSQL変換手段B115bに通知する。複数のSQL変換手段B115bを備えるシステムにおいては、ゲートウェイ情報処理装置130aのRPCドライバ102は、第2の選択手段として、上述のクライアント情報処理装置110のRPCドライバ102と同様の手順により、通知するSQL変換手段B115bを選択するようにしてもよい。
【0090】
このように、本実施例2では、SQL変換手段115へのアクセスをRPCを用いて行い、ゲートウェイ情報処理装置130上のRPCドライバ102が、処理を依頼するSQL変換手段115の選択を行うので、SQL変換手段115が複数のゲートウェイ情報処理装置130上に分散していても、アプリケーション・ソフトウェア実行手段111がその位置を意識することなくアクセスすることができる。したがって、システム内に存在する種々のDBMSに対応したSQL変換手段115は、システム内のどれかのゲートウェイ情報処理装置130にあればよく、すべてのSQL変換手段115を各ゲートウェイ情報処理装置130が持つ必要はない。これによって、各ゲートウェイ情報処理装置130への負荷集中の回避、SQL変換手段115の導入やメンテナンス工数の低減を図ることができる。
【0091】
B.選択方法
クライアント情報処理装置110上のRPCドライバ102は、アクセス管理コンポーネント112vの選択を実行し、SQL_RPCを通知する。また、ゲートウェイ情報処理装置130aおよび130b上のRPCドライバ102は、SQL変換手段A115aまたはSQL変換手段B115bの選択を実行し、SQL_x_RPCを通知する。そこで、ネームサーバ151への問い合わせの結果、複数の候補が該ネームサーバ151から返答されたときの、RPCドライバ102の、通知対象の選択方法の例について以下に示す。
【0092】
(1)無作為選択
第一の選択方法は、複数の候補からランダムに選択する方法である。図12に示すように、候補の数が2以上のときは(ステップ1201)乱数を発生させ(ステップ1202)、該乱数を候補の数Nで割りその剰余を求め(ステップ1203)、該剰余+1番目の候補をサーバコンポーネントとして選択(ステップ1204)する方法などが考えられる。
【0093】
(2)優先順位による選択
第二の選択方法は、予め登録した優先順位を用いる方法である。この方法では、サーバコンポーネントの優先順位を例えば図13に示すようなテーブル形式で、RPCドライバ102の参照可能なファイルなどに予め格納しておき、RPCドライバ102は、ネームサーバ151から返答された複数の候補の内、優先順位の高いサーバ・コンポーネントを選択する。
【0094】
なお、図13の列1301は優先順位、列1302はサーバ名称の格納領域である。この方法を用いる場合、RPCを発行するコンポーネントと同じ情報処理装置上にサーバコンポーネントが存在する場合に、そのサーバ・コンポーネントを高い優先順位に設定すれば、ネットワークを経由することによるオーバーヘッドを抑えることができる。
【0095】
(3)負荷状態による選択
第三の方法は、各ゲートウェイサーバ情報処理装置130の負荷の状態によって、選択する方法である。負荷状態とは、例えば、ゲートウェイサーバ情報処理装置130で動作中のあらゆるプログラムのインストラクションのCPU占有率や、外部記憶装置へのアクセス頻度である。この方法を用いるときは、問い合わせに対して、各ゲートウェイ・サーバのオペレーティング・システム(OS)が提供するCPUや外部記憶装置などの負荷状態を返答する負荷情報通知手段(図示せず)を、各ゲートウェイサーバ情報処理装置130に設ける。また、各RPCドライバ102の記憶領域(図示せず)に、サーバ・コンポーネント(アクセス管理コンポーネント112vまたはSQL変換手段115)の候補の数(Nとする)の格納領域、カウンタ用変数(cとする)の格納領域、最小負荷サーバ・ナンバー記憶変数(nとする)の格納領域、最小負荷記憶変数(LMINとする)格納領域、および負荷状態を示す変数(Lとする)の格納領域を備える。この第三の方法による選択処理の手順を図14に示す。なお、負荷情報通知手段は、ゲートウェイサーバ情報処理装置130の主記憶装置1001に保持されたインストラクションを、ゲートウェイサーバ情報処理装置130のCPUが実行することにより実現される。
【0096】
RPCドライバ102は、サーバ・コンポーネント候補数N格納領域、カウンタ用変数c格納領域、最小負荷サーバ・ナンバー記憶変数n格納領域、最小負荷記憶変数LMIN格納領域を初期化する(ステップ1401)。なお、ステップ1401における初期化とは、各格納領域に初期値を格納することであり、本実施例2では、サーバ・コンポーネント候補数Nの初期値は、通知された候補数、カウンタ用変数cおよび最小負荷サーバ・ナンバー記憶変数nの初期値はそれぞれ1、最小負荷記憶変数LMINの初期値は100である。
【0097】
つぎに、RPCドライバ102は、サーバ・コンポーネント候補が複数かどうかを調べ、1個だけなら、負荷を調べる必要がないのでステップ1410に制御を移して、選択結果を、候補に挙げられているサーバ・コンポーネントとする(ステップ1402)。
【0098】
サーバ・コンポーネント候補が複数の場合には、RPCドライバ102は、c番目の候補のサーバ・コンポーネントの備えられているゲートウェイサーバ情報処理装置130の負荷情報通知手段に負荷情報を問い合わせ(ステップ1403)、サーバ・コンポーネントから返された負荷状態を示す数値を変数Lの格納領域に格納する(ステップ1404)。ここで、負荷状態を示す数値は、0から100までの数値(百分率)で表わされる。例えば、ゲートウェイサーバ情報処理装置130で並列実行しているプログラムが多いほど、値が大きい。これに対し、実行しているプログラムが存在しない場合は、0近傍の値となる。
【0099】
次に、RPCドライバ102は、それまでに調べた他のサーバの負荷の最小値LMINと前記変数Lとを比較し(ステップ1405)、変数Lの方が小さいときは、LMINにLの値を格納し(ステップ1406)、最小負荷サーバ・ナンバーnに上記調査を行ったサーバ・コンポーネントの候補番号すなわちcの値を格納する(ステップ1407)。こののち、RPCドライバ102は、カウンタ用変数cの値を1増やし(ステップ1408)、最後の候補まで負荷の調査が終わったかどうかを調べ(ステップ1409)、まだの場合には、ステップ1403〜1409を繰り返す。
【0100】
このようにして、最小の負荷であったサーバ・コンポーネントの候補番号がn格納領域に保持されるので、RPCドライバ102は、n格納領域に保持された候補番号で示されるサーバ・コンポーネントを選択し処理を終了する(ステップ1410)。
【0101】
この方法によれば、負荷の小さな情報処理装置上のサーバ・コンポーネントを選択できるので、負荷が一台の情報処理装置に集中することを回避でき、高速に処理を実行できる。なお、負荷情報通知手段を、各サーバ・コンポーネントごとに設けてもよい。この場合、ステップ1403における問い合わせは、候補となったサーバ・コンポーネントごとに行なわれる。このようにすれば、情報処理装置全体ではなく、各サーバ・コンポーネントの負荷状態に応じて使用するサーバ・コンポーネントを決定することができる。
【0102】
(4)応答時間による選択
第四の選択方法は、各ゲートウェイサーバ情報処理装置130からの応答時間をもとに選択する方法である。この方法を用いる場合は、各RPCドライバ102の記憶領域(図示せず)に、サーバ・コンポーネント(アクセス管理コンポーネント112vまたはSQL変換手段115)の候補の数(Nとする)の格納領域、カウンタ用変数(cとする)の格納領域、最小応答時間サーバ・ナンバー記憶変数(nとする)格納領域、最小応答時間記憶変数(RMINとする)格納領域、および応答時間(Rとする)格納領域を備える。この第四の方法による選択処理の手順を図15に示す。
【0103】
RPCドライバ102は、サーバ・コンポーネント候補数N格納領域、カウンタ用変数c格納領域、最小応答時間サーバ・ナンバー記憶変数n格納領域、および最小応答時間記憶変数RMIN格納領域を初期化する(ステップ1501)。なお、ステップ1501における初期化とは、各格納領域に初期値を格納することであり、本実施例2では、サーバ・コンポーネント候補数Nの初期値は、通知された候補数、カウンタ用変数cおよび最小負荷サーバ・ナンバー記憶変数nの初期値はそれぞれ1、最小応答時間記憶変数RMINの初期値は100である。
【0104】
つぎに、RPCドライバ102は、サーバ・コンポーネント候補が複数かどうかを調べ、1個だけなら応答時間を調べる必要がないのでステップ1510に制御を移す(ステップ1502)。
【0105】
サーバ・コンポーネント候補が複数の場合には、RPCドライバ102は、c番目の候補のサーバ・コンポーネントに応答時間計測のためのダミーのRPCを発行し(ステップ1503)、このRPCに対する応答時間を変数R格納領域に格納する(ステップ1504)。
【0106】
次に、RPCドライバ102は、それまでに調べた他のサーバ・コンポーネントの応答時間の最小値RMINと変数Rとを比較し(ステップ1505)、変数Rの方が小さければRMINにRの値を格納する(ステップ1506)。こののち、RPCドライバ102は、最小応答時間サーバ・ナンバーnに前記調査を行ったサーバ・コンポーネントの候補番号すなわちcの値を格納して(ステップ1507)、カウンタ用変数cを1増やす(ステップ1508)。さらに、RPCドライバ102は、最後の候補まで応答時間の調査が終わったかどうかを調べ(ステップ1509)、まだの場合にはステップ1503〜1509を繰り返す。
【0107】
このようにして、すべての候補の調査が終わると(ステップ1509)、最小の応答時間であったサーバ・コンポーネントの候補番号がn格納領域に保持されていることになるので、RPCドライバ102は、候補番号nで示されるサーバ・コンポーネントを選択し、処理を終了する(ステップ1510)。
【0108】
上述の応答時間は、サーバ・コンポーネントが搭載された情報処理装置の性能および負荷状態、該情報処理装置までの通信経路の距離、通信経路の混み具合などを反映したものであるので、応答時間が最小のサーバ・コンポーネントを採用することによって、最適な処理を行うことができる。
【0109】
(5)ブロードキャスト通信を用いた応答時間による選択
応答時間によるサーバ・コンポーネントの選択は、ブロードキャスト通信を使うことによって、上述した第四の方法よりも簡単に行うこともできる。この方法を用いる場合、各サーバ・コンポーネントは、処理可能なサーバ・コンポーネントを募集するブロードキャストRPCに対して応答する手段(図示せず)を備える。この方法での選択処理の手順を図16に示す。なお、上記応答する手段は、該手段の存在する各情報処理装置の、主記憶装置1001上に保持されたインストラクションを、CPUが実行することにより実現される。
【0110】
まず、RPCドライバ102は、処理可能なサーバ・コンポーネントを募集するブロードキャストRPCを発行し(ステップ1601)、応答を待つ(ステップ1602)。このブロードキャストRPCに対する応答には、応答したサーバ・コンポーネントに関する情報が含まれているので、最初に応答があった時点で、RPCドライバ102は、その応答から応答したサーバ・コンポーネントのサーバ名を取得し(ステップ1603)、該サーバ・コンポーネントを実際に処理を依頼するサーバとして採用して、処理を終了する(ステップ1690)。
【0111】
なお、二番目以降に応答したサーバ・コンポーネントは無視される。このように、ブロードキャストRPCを用いて処理を依頼するサーバ・コンポーネントを選択することによって、第四の方法として説明した応答時間を比較する方法と同様、サーバ・コンポーネントが搭載された情報処理装置の性能および負荷状態、該情報処理装置までの通信経路の距離、通信経路の混み具合などを反映した選択が行える。なお、このブロードキャストRPCはネットワークに接続されたすべてのサーバに対して発行されるが、マルチキャストRPCを用いればネームサーバ151から得たサーバ・コンポーネントの候補だけに発行することもできる。
【0112】
さらに、上記の応答時間のいずれかまたは両方による選択操作を複数回実施し、複数回の平均応答時間が最も短かったサーバ・コンポーネントを選ぶようにすれば、一時的なネットワークの混み具合の変化などによる影響を防止し、より最適なサーバ・コンポーネントの選択を行うことができる。
【0113】
(6)応答時間と負荷状況とによる選択
また、サーバ・コンポーネントがブロードキャストRPCまたはマルチキャストRPCに対する応答時間を、該サーバ・コンポーネントが搭載されている情報処理装置の負荷状況に応じて変化させることで、(5)に記述したブロードキャスト通信またはマルチキャスト通信によるサーバ・コンポーネントの選択を、より最適に行うことができる。図20を用いて、この方法によるサーバ・コンポーネントの処理手順を説明する。なお、この方法を用いる場合は、各サーバ・コンポーネントのブロードキャスト通信に対する応答手段は、該サーバ・コンポーネントのあるサーバ情報処理装置の負荷状態を数値化したものである変数(Lとする)の格納領域を備える。
【0114】
まず、サーバ・コンポーネントのブロードキャスト通信に対する応答手段は、受信したブロードキャスト・パケットがサーバ・コンポーネントの処理対象かどうかを調べ、処理対象でなければ処理を終了する(ステップ2001)。処理対象であれば、応答手段は、サーバ・コンポーネントが搭載されている情報処理装置の負荷状態を調べ(ステップ2002)、負荷状態を数値化したものを変数Lに代入する(ステップ2003)。つぎに、応答手段は、変数Lを0になるまでカウントダウンしながら(ステップ2004)、負荷値に比例した時間だけ次の処理への移行を遅延させる(ステップ2005)。該遅延処理(ステップ2004,2005)の後、応答手段は、処理可能であることを示す応答パケットを処理を募集したクライアント・コンポーネントに発行し(ステップ2006)、ブロードキャスト・パケットの受信処理を終了する(ステップ2090)。
【0115】
このようにして、クライアント・コンポーネント(RPCドライバ102)からのブロードキャスト通信を用いた募集に対して、各サーバ・コンポーネントは、該サーバ・コンポーネントが搭載された情報処理装置の負荷状態に比例した遅延時間の後、該サーバ・コンポーネントが処理可能であることを示す応答パケットを発行する。これによって、(5)と同様に、RPCドライバ102が、最も早く応答したサーバ・コンポーネントを選択すれば、負荷状態が最も軽い情報処理装置上のサーバ・コンポーネントを選択することができる。
【0116】
以上述べた(1)〜(6)の各選択方法は、単独で用いてもよいし、組み合わせて使用してもよい。また、これらの選択手段をネームサーバ151に具備し、複数候補がある場合にはそのうちの一つを選択してもよいし、優先順位を付けてネームサーバ151への問い合わせ元に返答するようにしてもよい。
【0117】
本実施例2では、アクセス管理手段が搭載されたすべての情報処理装置上に、かならずしもすべての種類のDBMSに対応したSQL変換手段を搭載しなくてもよく、どれかの情報処理装置上に必要な種類のSQL変換手段を用意して置けばよいので、導入、保守が容易であるという効果がある。
【0118】
また、本実施例2では、アクセス管理コンポーネントとSQL変換手段とは、複数の情報処理装置上に置くことができ、第一の情報処理装置上のアクセス管理コンポーネントから他の情報処理装置上のSQL変換手段へRPCによる処理依頼を行うこともできる。これによって、処理負荷を複数の情報処理装置に分散できる。
【0119】
(実施例3)
本実施例3では、実施例1においてゲートウェイ情報処理装置130上で動作していたSQL変換手段A115a、SQL変換手段B115bを、それぞれサーバ情報処理装置120a、120bに設けた。本実施例3でも、すでに説明した実施例と同様に、SQL変換手段A115a、SQL変換手段B115bへのインタフェースはRPCを用いている。これにより、各サーバ・コンポーネントに実施例1と同じものを用いたまま、図1に示した実施例1の異種データベースアクセスシステムの構成を、図6に示した本実施例3の異種データベースアクセスシステムの構成に変更することができる。本実施例3においては、各サーバ情報処理装置120a、120bがそれぞれSQL変換手段A115a、SQL変換手段B115bを具備するので、ゲートウェイ情報処理装置130を介さなくても単一のSQL仕様で、異なるSQL仕様を持つDBMS_A121a、DBMS_B121bにアクセスすることができる。
【0120】
本実施例3では、クライアント情報処理装置110上のRPCドライバ102は、アプリケーション・ソフトウェア実行手段111から発行されるSQLをRPCのパラメータとして、各DBMS121a,bを介してデータベースをアクセスするSQL_API処理手段700を備える。
【0121】
SQL_API処理手段700の処理を図7に示す。まず、SQL_API処理手段700は、アプリケーション・ソフトウェア実行手段111から発行されたSQL文を受け付けると、該SQL文を解析し、アクセス先のDBMS情報を得る(ステップ701)。つぎに、SQL_API処理手段700は、該アクセス先がDBMS_A121aとDBMS_B121bの両方か、DBMS_A121aだけか、DBMS_B121bだけかをそれぞれ判断する(ステップ702、703、704)。
【0122】
SQL_API処理手段700は、アクセス先がDBMS_A121aとDBMS_B121bとの両方の場合は、処理対象のSQL文をパラメータとするSQL_RPCを発行する(ステップ706)。このSQL_RPCは、ゲートウェイ情報処理装置130のアクセス管理コンポーネント112vに送られ、そこで実施例1の場合と同様に処理される。
【0123】
一方、アクセス先がDBMS_A121aおよびDBMS_B121bのいずれか一方のみであった場合、SQL_API処理手段700は、SQL_A_RPC(ステップ707)、または、SQL_B_RPC(ステップ708)を発行し、ゲートウェイ情報処理装置130を介すること無くDBMS_A121aまたはDBMS_B121bをアクセスする。
【0124】
指定されたアクセス先がDBMS_A121aおよびDBMS_B121bのいずれでもない場合、SQL_API処理手段700は、エラーコードをセットして(ステップ705)、処理を終了する(ステップ709)。
【0125】
このように、本実施例3では、ゲートウェイ情報処理装置130は、DBMS_A121aおよびDBMS_B121bの両方に同時にアクセスすることを指示するSQL文を処理する場合にのみ使用され、いずれか一方のDBMSに対するアクセスを指示するSQL文を処理する場合には、SQL_API処理手段700が、ゲートウェイ情報処理装置130を介することなく、直接指定されたDBMSをアクセスする。これにより、本実施例3では、ゲートウェイ情報処理装置130を介することによって生じる性能低下を低減することができる。
【0126】
また、本実施例3によれば、ターゲットDBMSが明確でしかも単一の場合には、ユーザー・アプリケーション・ソフトウェアから、アクセス管理コンポーネントを介すること無く直接SQL変換手段へアクセスすることができるので、オーバーヘッドを低減することができる。
【0127】
なお、本実施例のSQL_API処理手段700は、実施例1にも適用できる。これにより、ターゲットDBMSが明確で、しかも単一の場合には、実施例1においても、アクセス管理コンポーネントを介することなく、直接SQL変換手段をアクセスでき、オーバヘッドを低減することができる。
【0128】
(実施例4)
上述の実施例1〜3では、任意のSQL仕様のアプリケーション・ソフトウェア実行手段111からの、種々のSQL仕様の複数のDBMSへのアクセスを実現する例を示したが、本実施例4では、種々の異なるSQL仕様を用いたアプリケーション・ソフトウェア実行手段111からのDBMSへのアクセスを実現する。
【0129】
図8に本実施例4の異種データベースアクセスシステムの構成を示す。本実施例4では、図8に示したように、図1で示した実施例1の異種データベースアクセスシステムの構成に対して、クライアント情報処理装置110rと、ゲートウェイ情報処理装置130上の非標準SQL変換手段115rとを追加した。クライアント情報処理装置110rは、クライアント情報処理装置110と同様の構成を有しているが、標準SQL仕様のアプリケーション・ソフトウェア実行手段111の代わりに、非標準のSQL仕様のアプリケーション・ソフトウェアR実行手段111rを備える。また、非標準SQL変換手段115rは非標準のSQLを標準のSQLに変換する手段である。
【0130】
アプリケーション・ソフトウェア実行手段111rから発行される非標準仕様のSQL文を含むRPC(以下SQL_r_RPCと呼ぶ)は、RPCドライバ102によって、LANドライバ123およびLAN100を介して、ゲートウェイ情報処理装置130の非標準SQL変換手段115rに送られ、処理される。非標準SQL変換手段115rによって非標準SQLから標準SQLへと変換されたSQL文は、アクセス管理コンポーネント112vにRPCのパラメータとして送られる。以後の処理は実施例1と同様であり、SQL変換手段115でターゲットDBMSの仕様のSQLに変換された後、そのSQL文によりDBMSがアクセスされ、結果がアプリケーション・ソフトウェア実行手段111rに返される。
【0131】
このように、本実施例4によれば、非標準SQLから標準SQLに変換するコンポーネントを設けることによって、各種のSQL仕様を用いたアプリケーション・ソフトウェア実行手段111rから、該アプリケーション・ソフトウェア実行手段111rとは別のSQL仕様のDBMSをアクセスすることができる。
【0132】
(実施例5)
つぎに、あるDBMS専用に構築されたクライアント情報処理装置のプログラム構成を全く変更する事なく、該DBMSとは異なるSQL仕様、通信プロトコル仕様のDBMSをアクセスすることのできる異種データベースアクセスシステムについて説明する。
【0133】
A.構成例
本実施例5では、ネットワーク100にRPCを用いたクライアントとRPCを用いないクライアントの両方が接続される。本実施例5では、図11に示す異種データベースアクセスシステムの構成のように、図1で示した実施例1の異種データベースアクセスシステムの構成に対して、クライアント情報処理装置110aと、ゲートウェイ情報処理装置130上の非標準SQL変換手段RA115raとを追加した。
【0134】
クライアント情報処理装置110aは、アプリケーション・ソフトウェアA実行手段111aと、データベースドライバA122aと、LANドライバ123とを備える。アプリケーション・ソフトウェアA実行手段111aは、非標準SQL仕様のソフトウェア実行手段であり、非標準のSQL文を発行して、応答を受け取る機能を有する。クライアント情報処理装置110aのデータベースドライバA122aは、アプリケーション・ソフトウェアA実行手段111aの発行した非標準のSQL文を、ゲートウェイ情報処理装置130のデータベース・ドライバA122aに通知する。なお、データベース・ドライバA122aは、DBMS_A121aと同じSQL仕様である。
【0135】
一方、ゲートウェイ情報処理装置130の非標準SQL変換手段RA115raは、入力された非標準SQL文を、標準SQL文に変換して、ゲートウェイ情報処理装置130のRPCドライバ102に出力する非標準SQL変換手段である。
【0136】
B.作用
本実施例5では、一旦、データベース・ドライバ122aおよび非標準SQL変換手段RA115raを介して変換された標準SQL文を、ゲートウェイ情報処理装置130のRPCドライバ102に送ることで、アプリケーション・ソフトウェアA実行手段111aの発行したSQL文によるデータベース・アクセスが行なわれる。
【0137】
アプリケーション・ソフトウェアA実行手段111aから発行されるDBMS_A121aの仕様、すなわち非標準仕様のSQL文は、データベース・ドライバ122aにより、LANドライバ123およびLAN100を介してゲートウェイ情報処理装置130上の非標準SQL変換手段RA115raに送られ、処理される。非標準SQL変換手段RA115raは、通知された非標準SQL文を標準SQLへ変換し、アクセス管理コンポーネント112vにRPCのパラメータとして通知する。以後の処理は実施例1と同様であり、SQL変換手段115でターゲットDBMSの仕様のSQLに変換された後、そのSQL文によりDBMSがアクセスされ、結果がアプリケーション・ソフトウェア実行手段111rに返される。
【0138】
このように、本実施例5では、非標準から標準へのSQL変換手段を実施例1のシステムに追加する事によって、あるDBMS固有の非標準SQLおよび非標準データベース・ドライバを用いて、あるDBMS専用に構築されたクライアント情報処理装置のプログラム構成を全く変更する事なく、該DBMSとは異なるSQL仕様、通信プロトコル仕様のDBMSをアクセスする事ができる。
【0139】
なお、本実施例5ではクライアント情報処理装置110aとゲートウェイ情報処理装置130との接続をデータベース・ドライバ_A122aを用いて行ったが、このドライバが上述のRPCとは異なる仕様のRPCを用いていてもよい。
【0140】
C.適用例
ネットワーク100に、互いに異なる仕様を有するデータベース管理システムを備える2つの既存のシステム600aと600bとが接続されているネットワーク100に本実施例5の異種データベースアクセスシステムを適用する場合の例を、図19を用いて説明する。
【0141】
システム600aは、DBMS_Aを用いたサーバ情報処理装置121aとDBMS_A専用のデータベースドライバA、アプリケーション・ソフトウェア実行手段Aが搭載されたクライアント情報処理装置110aから構成される。また、システム600bは、DBMS_Bを用いたサーバ情報処理装置121bとDBMS_B専用のデータベースドライバB、アプリケーション・ソフトウェアBが搭載されたクライアント情報処理装置110bから構成される。
【0142】
これらの既存のシステム600a,600bに、上述のゲートウェイ情報処理装置130と、ネームサーバ情報処理装置150とを備える付加システム500を付加することによって、既存のシステム600a、600bの構成を何等変更することなくクライアント情報処理装置110aから、サーバ情報処理装置121bに搭載された前記クライアント情報処理装置110aとはSQL仕様の異なるDBMS_Bをにアクセスすることができる。
【0143】
(実施例6)
A.異種データベース・アクセス・システムの構成
次に、アプリケーション・ソフトウェア実行手段111が種々の文字コードセットを使用可能なデータベース・アクセス・システムを実現する実施例を図38を用いて説明する。本実施例6の異種データベースアクセスシステムの構成は、図1に示した実施例1の構成と同様である。なお、本実施例6では、アクセス管理コンポーネント112vは、SQL文を解析するSQL文解析部381を備える。また、SQL変換手段115は、SQL文を変換するSQL文変換部382を備える。アクセス管理コンポーネント112vのSQL文解析部、SQL変換手段115のSQL文変換部で扱える文字コードセットはJISコードとする。
【0144】
B.SQL_RPCの処理
本実施例6における、アプリケーション・ソフトウェア実行手段111の発行したSQL_RPCが処理される手順を、図21に示す。
【0145】
(1)RPCドライバ102の処理
アプリケーション・ソフトウェア実行手段111がSQL_RPCを発行すると、クライアント情報処理装置110のRPCドライバ102は、まず、データベースへの接続文かどうかを判定し(ステップ2161)、接続文であった場合には、ステップ2150とステップ2162を実行したのち、ステップ2151に処理を移し、接続文以外の文であった場合には、直接ステップ2151に処理を移す。
【0146】
ステップ2150では、RPCドライバ102は、ネームサーバ情報処理装置150上のネームサーバ151をアクセスし、処理対象のSQL_RPCを処理するサーバであるアクセス管理コンポーネント112vの物理位置すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を取得する。次に、RPCドライバ102は、ステップ2162で、アプリケーション・ソフトウェア実行手段111がSQL文に使用している文字コードセット名を、アクセス管理コンポーネント112vに送出する。なお、文字コードセット名を受け取ったアクセス管理コンポーネント112vは、ゲートウェイ情報処理装置130の記憶装置1001内の記憶領域383に、該入力文字コードセット名を格納する(ステップ2121)。
【0147】
最後に、RPCドライバ102は、アクセス管理コンポーネント112vとRPC接続を行い、SQL_RPCの処理をアクセス管理コンポーネント112vへ依頼する(ステップ2151)。
【0148】
(2)アクセス管理コンポーネント112vの処理
ステップ2101〜2111、2121〜2123、2140は、アクセス管理コンポーネント112vでの処理内容である。
【0149】
SQL_RPCの処理を依頼されたアクセス管理コンポーネント112vは、記憶領域383に保持された入力文字コードセット名を参照し、RPCドライバ102から通知されたSQL_RPCのパラメータとして送られてきたSQL文の文字コードを、JISコードに変換する(ステップ2123)。ただし、ステップ2121で通知された入力文字コードセット名がJISコードの場合は、変換は不要なので行わない。つぎに、アクセス管理コンポーネント112vは、文字コード変換を施したSQL文を解析し、アクセス先のテーブルが含まれるDBMSの名称を得る(ステップ2101)。
【0150】
この解析の結果、アクセス先がDBMS_A121aとDBMS_B121bとの両方であることを検出した場合(ステップ2102)、アクセス管理コンポーネント112vは、実施例1のステップ406と同様に、処理対象のSQL文を、DBMS_A121aに対するアクセスとDBMS_B121bに対するアクセスとに分割して2つのSQL文を作成する(ステップ2106)。この新たに作成したSQL文をパラメタとしたSQL_RPC(それぞれSQL_A_RPC、SQL_B_RPCと呼ぶ)を用い、アクセス管理コンポーネント112vは、ステップ2107でDBMS_A121aに、ステップ2108でDBMS_B121bに、それぞれアクセスする。これらのDBMS121a,bからの応答を受け付けると、アクセス管理コンポーネント112vは、前記ステップ2107、2108で得た結果をマージし、ステップ2106で分割する前のSQL文に対応する結果を作成する(ステップ2109)。
【0151】
アクセス先がDBMS_A121aおよびDBMS_B121bのいずれか一方であることを検出した場合(ステップ2103または2104)、アクセス管理コンポーネント112vは、ステップ2110または2111で、それぞれSQL文をパラメータとしたRPC(SQL_A_RPCまたはSQL_B_RPC)を発行し、アクセス結果を得る。
【0152】
なお、アクセス先がDBMS_A121aでもDBMS_B121bでもない場合、アクセス管理コンポーネント112vは、エラーコードをセットする(ステップ2105)。
【0153】
最後に、アクセス管理コンポーネント112vは、ステップ2109〜2111で得られたアクセス結果、あるいはステップ2105でセットされたエラーコードを、JISコードから、記憶領域383に保持された入力文字コードセット名の示す文字コードに変換し(ステップ2140)、実施例1のステップ412と同様に、リモート・プロシージャ・コールのリターン値としてアプリケーション・ソフトウェア実行手段111に返して、SQL_RPCを終了する(ステップ2112)。
【0154】
(3)SQL_x_RPCの処理(ステップ2107〜2108、2110〜2111)
SQL_A_RPCまたはSQL_B_RPCの処理の流れを図22に示す。なお、SQL_A_RPCの処理とSQL_B_RPCの処理とは、その手順が同一であるので、ここでは、これらをまとめてSQL_x_RPCとして説明する。また、SQL_x_RPCを処理するサーバであるSQL変換手段A115aとSQL変換手段B115bをまとめてSQL変換手段115と呼ぶ。
【0155】
SQL_x_RPCが通知されると、ゲートウェィ情報処理装置130のRPCドライバ102は、まず、データベースへの接続文かどうかを判定し(ステップ2261)、接続文であった場合にはネームサーバ情報処理装置150上のネームサーバ151をアクセスして、SQL変換手段115の物理位置すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を取得する(ステップ2250)。
【0156】
次に、RPCドライバ102は、アクセス管理コンポーネント112vの出力文字コードセット名である”JIS”(本実施例6では、アクセス管理コンポーネント112vの入出力に用いられる文字コードは、JISコードであると、あらかじめ定められている)を、SQL変換手段115に送出する(ステップ2262)。これを受け付けたSQL変換手段115は、これを入力文字コードセット名として記憶装置1001の記憶領域384に格納する(ステップ2221)。
【0157】
最後に、RPCドライバ102は、SQL変換手段115とRPC接続を行い、SQL_x_RPCの処理をSQL変換手段115へ依頼する(ステップ2202)。
【0158】
ステップ2222〜2240は、SQL変換手段115での処理内容である。依頼されたSQL変換手段115は、まず、RPCのパラメータとして送られてきたSQL文の文字コードを、JISコードに変換するとともに、データベース・ドライバ122が文字コードセット名を得るために参照する環境変数に、変換後の文字コードセットであるJISを、該データベース・ドライバ122が定めた表現形式で格納する(ステップ2222)。
【0159】
ただし、本実施例6では、入力文字コードセット名は”JIS”であり、変換は不要なので行わずに、データベース・ドライバ122の該環境変数に、入力文字コードセット名を格納する。このステップは、実施例2で示したように、アクセス管理コンポーネント112vが、異なるゲートウェイ情報処理装置130のSQL変換手段115をアクセスする場合、もしくは、実施例3で示したように、アクセス管理コンポーネント112v介さずにアプリケーション・ソフトウェア実行手段111からSQL変換手段115をアクセスする場合に有効である。
【0160】
次に、SQL変換手段115は、RPCのパラメータとして受け取った標準仕様のSQL文を、ターゲットDBMSのSQL仕様に変換(ステップ2223)したのち、変換によって作成したSQL文をターゲットDBMSに送り、ターゲットDBMSからのSQL文の実行結果の通知を得る(ステップ2224)。
【0161】
ステップ2224で実行結果として得たデータおよびリターンコードを、SQL変換手段115は、ターゲットDBMSのSQL仕様から標準のSQL仕様に変換し(ステップ2225)、さらに、該変換結果を、ステップ2221で記憶領域384に格納した入力文字コードセット名で示される文字コードに変換する(ステップ2240)。最後に、SQL変換手段115は、変換して得られた結果を、リターンデータ、リターンコードとしてアクセス管理コンポーネント112vに通知して、SQL_x_RPCの処理を終了する(ステップ2206)。
【0162】
C.本実施例6の効果
以上のようにして、本実施例6では、アプリケーション・ソフトウェア実行手段111は、アクセス管理コンポーネント112v、SQL変換手段115、DBMS_x121a,bが内部でどの様な文字コードセットを用いて処理するかを意識することなく、データベースへのアクセスを行うことができる。また、文字コードセット名の指定方法が各DBMSのデータベース・ドライバ毎に異なることを意識する必要もない。
【0163】
なお、本実施例6では、アクセス管理コンポーネント112vのSQL文解析部、SQL変換手段115のSQL文変換部で扱える文字コードセットはJISコードとしたが、他の文字コードセットであってもよい。また、実施例2の第1および/または第2の選択手段をRPCドライバ102に設けてもよい。
【0164】
さらに、文字コードセット名だけでなく、エラーメッセージなどに使用する言語や、データベースの検索結果の並び替えを行う際の文字コード順の指定についても、本実施例6の入力文字コードセット名と同様に、クライアント情報処理装置110のRPCドライバ102とアクセス管理コンポーネント112vとの間で授受するようにすれば、それらの相違を意識することなく、データベースへのアクセスを行うことができる。
【0165】
図30に、言語、文字コードセット、並び替えコードを設定する環境変数の一例を示す。環境変数群3001はアプリケーション・ソフトウェア実行手段111の環境変数の例であり、環境変数群3002はアクセス管理コンポーネント112vの環境変数の例であり、環境変数群3003はSQL変換手段115とDBMS121a,bのプロセスの環境変数の例である。
【0166】
環境変数群3001〜3003において、SQL_LANGは使用言語の種別を示す変数名であり、SQL_CHARACTERは使用する文字コードセットを示す変数名、SQL_COLLATEは、並び替えコードを示す変数名である。本実施例6では、アプリケーション・ソフトウェア実行手段111、アクセス管理コンポーネント112v、SQL変換手段115とも、使用言語は日本語(「JAPANESE」)である。また、アプリケーション・ソフトウェア実行手段111では、文字コードセットおよび並び替えコードは「SJIS」である。一方、アクセス管理コンポーネント112vおよびSQL変換手段115の文字コードセットおよび並び替えコードは「JIS」である。
【0167】
環境変数群3003において、DB_LANGはデータベース・ドライバ122が参照する、使用言語の種別(DBMS121a,bが使用する言語の種別)を示す環境変数名である。また、DBMS121a,bの使用する文字コードセットは、環境変数名DB_CHARACTERの変数により示される。さらに、DBMS121a,bの使用する並び替えコードは環境変数名DB_COLLATEの変数により示される。本実施例6では、DBMS121a,bが使用する言語は日本語(「JAPANESE」)である。また、DBMS121a,bの使用する文字コードセットおよび並び替えコードは「JIS」である。
【0168】
(実施例7)
次に、データベースへのアクセス依頼をユーザーが設定した時間で打ち切るための機能を実施例1に付加した実施例を説明する。図36に、本実施例7の異種データベース・アクセス・システムの構成を示す。本実施例7の異種データベース・アクセス・システムは、図1に示した実施例1のシステムと同様の構成を備えているが、本実施例7では、図36に示すように、クライアント情報処理装置110およびゲートウェイ情報処理装置130の両方の主記憶装置1001に、SQLタイムアウト時間を保持するための格納領域250,251を、それぞれ備えている。また、本実施例7のクライアント情報処理装置110のRPCドライバ102は、計時のためのタイムアウトカウンタ252を備える。さらに、ゲートウェイ情報処理装置130のRPCドライバ102も、計時のためのタイムアウトカウンタ253を備える。
【0169】
A.SQL_RPCの処理の流れ
本実施例7におけるSQL_RPCの処理を図25に示す。本実施例7では、実施例1と同様、クライアント情報処理装置110上のアプリケーション・ソフトウェア111から発行されたSQL_RPCは、クライアント情報処理装置110のRPCドライバ102によりゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vに通知され、アクセス管理コンポーネント112vによって処理される。
【0170】
しかし、本実施例7では、実施例1とは異なり、クライアント情報処理装置110のRPCドライバ102は、RPCを用いてアクセス管理コンポーネント112vにSQL_RPCの処理を依頼してから、あらかじめ定められたSQLタイムアウト時間が経過しても、応答を受け取らない場合、処理を打ち切ってエラーとする。なお、本実施例7では、SQLタイムアウト時間は、クライアント情報処理装置110の主記憶装置1001の格納領域250にあらかじめ格納され、保持されている。
【0171】
まず、アプリケーション・ソフトウェア111が発行するSQL_RPCを受け付けたクライアント情報処理装置110のRPCドライバ102は、DBMSへの接続文かどうかを判定し(ステップ2561)、接続文であった場合はステップ2550とステップ2562を実行してからステップ2553を実行し、接続文以外の文であった場合には、直接ステップ2553を実行する。
【0172】
ステップ2550では、RPCドライバ102は、ネームサーバ情報処理装置150上のネームサーバ151をアクセスし、処理対象のSQL_RPCを処理するサーバであるアクセス管理コンポーネント112vの物理位置すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を取得する。次に、RPCドライバ102は、ステップ2562で、クライアント情報処理装置110上の記憶装置の格納領域250に保持されているSQLタイムアウト時間を、アクセス管理コンポーネント112vに送出する。このSQLタイムアウト時間を受信したアクセス管理コンポーネント112vは、受け付けたSQLタイムアウト時間を、ゲートウェイ情報処理装置130の格納領域251に格納する(ステップ2501)。
【0173】
次に、RPCドライバ102は、RPC実行スレッドを起動する(ステップ2553)。ここでスレッドとは、プロセス内の処理をさらに分割し、時分割によって並行処理を行う処理単位のことである。起動されたRPC実行スレッドは、アクセス管理コンポーネント112vとRPC接続を行い、前記SQL_RPCの処理を該アクセス管理コンポーネント112vへ依頼する(ステップ2580)。
【0174】
ステップ2501〜2504は、アクセス管理コンポーネント112vでの処理である。実施例1における図4で説明した処理と同様に、本実施例7のアクセス管理コンポーネント112vは、処理依頼を受けると、SQL文解析(ステップ2502)、SQL_x_RPC発行(ステップ2503)等の処理を行い、処理結果を依頼元のRPC実行スレッドを起動したRPCドライバ102(親スレッド)に通知して、依頼元のRPC実行スレッドに終了を通知したのち、RPCの処理を終了する(ステップ2504)。
【0175】
ステップ2580で処理を依頼したRPC実行スレッドは、アクセス管理コンポーネント112vの終了信号(ステップ2504)を受信するまで、待ち状態となっており、終了の通知を受けると、スレッドを終了する(ステップ2585)。
【0176】
一方、ステップ2553でRPC実行スレッドを起動した親スレッドは、タイムアウトカウンタ252を初期化した後(ステップ2554)、タイムアウトカウンタ252をカウントアップし(ステップ2555)、タイムアウトカウンタ252の保持する値が、SQLタイムアウト時間格納領域250の保持する値を超えているかどうかチェックし(ステップ2556)、超えていなければ、さらにRPC実行スレッドがすでに終了しているかどうかチェックする(ステップ2557)。
【0177】
RPC実行スレッドがまだ終了していないときは、親スレッドは処理をステップ2555に戻し、タイムアウトカウンタのカウントアップと、経過時間のチェックを繰り返す。なお、本実施例7では、RPC実行スレッドが起動されると、クライアント情報処理装置110の主記憶装置1001にあらかじめ定められた識別情報を格納し、RPC実行スレッドは、終了時(ステップ2585)に、該識別情報を削除する。ステップ2557におけるRPC実行スレッドの終了チェックは、該識別情報がクライアント情報処理装置110の記憶装置に保持されているかどうか確認することにより行なわれる。
【0178】
ステップ2556でのタイムアウトチェックの結果、タイムアウトと判定した場合には、親スレッドは、エラーコードをあらかじめ定められた領域に格納し(ステップ2559)、SQL_RPCの処理を終了する(ステップ2560)。なお、エラーコード設定(ステップ2559)の際、本実施例7では、親スレッドは、RPC実行スレッドとアクセス管理コンポーネント112vとの接続を切り、RPC実行スレッドを終了させる。
【0179】
また、ステップ2557でのRPC実行スレッド終了チェックの結果、終了したと判定した場合には、実行結果をあらかじめ定められた領域に格納し(ステップ2558)、SQL_RPCの処理を終了する(ステップ2560)。
【0180】
B.SQL_x_RPCの処理(ステップ2503)
図26に、本実施例7においてアクセス管理コンポーネント112vが発行するSQL_x_RPCの処理を示す。本実施例7では、アクセス管理コンポーネント112vにより依頼される、SQL変換コンポーネント115のSQL_RPCの処理についても、あらかじめ定められた時間内に処理が行なわれなければ、処理を打ち切り、エラーとするようにした。
【0181】
処理の手順は、上述のSQL_RPCの処理の場合と同様であるが、SQL_x_RPCの処理では、上述のステップ2501(図25に図示)で格納領域251に格納された値が、SQLタイムアウト時間として用いられる。
【0182】
まず、アクセス管理コンポーネント112vが発行するSQL_x_RPCを受け付けたゲートウェイ情報処理装置130のRPCドライバ102は、DBMSへの接続文かどうかを判定し(ステップ2661)、接続文であった場合はステップ2650を実行してからステップ2653を実行し、接続文以外の文であった場合には、直接ステップ2653を実行する。
【0183】
ステップ2650では、RPCドライバ102は、ネームサーバ情報処理装置150上のネームサーバ151をアクセスし、処理対象のSQL_x_RPCを処理するSQL変換手段115の物理位置(ネットワーク・アドレスおよびポート番号)を取得する。
【0184】
次に、RPCドライバ102は、RPC実行スレッドを起動する(ステップ2653)。起動されたRPC実行スレッドは、SQL変換手段115とRPC接続を行い、SQL_x_RPCの処理を該SQL変換手段115へ依頼する(ステップ2680)。
【0185】
ステップ2602〜2604は、SQL変換手段115の処理である。SQL変換手段115は、処理依頼を受けると、SQL文を解析し(ステップ2602)、DBMSへアクセスして、応答を受け取り(ステップ2603)、処理結果を依頼元のRPC実行スレッドを起動したRPCドライバ102(親スレッド)に通知して、依頼元のRPC実行スレッドに終了を通知したのち、処理を終了する(ステップ2604)。
【0186】
ステップ2680で処理を依頼したRPC実行スレッドは、SQL変換手段115の終了信号(ステップ2604)を受信するまで、待ち状態となっており、終了の通知を受けると、スレッドを終了する(ステップ2685)。
【0187】
一方、ステップ2653でRPC実行スレッドを起動した親スレッドは、タイムアウトカウンタ253を初期化した後(ステップ2654)、タイムアウトカウンタ253をカウントアップし(ステップ2655)、タイムアウトカウンタ253の保持する値が、SQLタイムアウト時間格納領域251の保持する値を超えているかどうかチェックし(ステップ2656)、超えていなければ、さらにRPC実行スレッドがすでに終了しているかどうかチェックする(ステップ2657)。
【0188】
RPC実行スレッドがまだ終了していないときは、親スレッドは処理をステップ2655に戻し、タイムアウトカウンタのカウントアップと、経過時間のチェックを繰り返す。なお、RPC実行スレッドが起動されると、ゲートウェイ情報処理装置130の主記憶装置1001にあらかじめ定められた識別情報を格納し、RPC実行スレッドは、終了時(ステップ2685)に、該識別情報を削除する。ステップ2657におけるRPC実行スレッドの終了チェックは、該識別情報が該記憶装置に保持されているかどうか確認することにより行なわれる。
【0189】
ステップ2656でのタイムアウトチェックの結果、タイムアウトと判定した場合には、親スレッドは、エラーコードをあらかじめ定められた領域に格納し(ステップ2659)、SQL_RPCの処理を終了する(ステップ2660)。なお、エラーコード設定(ステップ2659)の際、本実施例7では、親スレッドは、RPC実行スレッドとDBMSとの接続を切り、RPC実行スレッドを終了させる。
【0190】
また、ステップ2657でのRPC実行スレッド終了チェックの結果、終了したと判定した場合には、実行結果をあらかじめ定められた領域に格納し(ステップ2658)、SQL_x_RPCの処理を終了する(ステップ2660)。
【0191】
C.本実施例7の効果
以上説明したように、本実施例7によれば、タイムアウト値をアプリケーション・ソフトウェア111からアクセス管理コンポーネント112v、SQL変換手段115へとデータベースへの接続に先だって転送することによって、アプリケーション・ソフトウェア111が設定したSQLタイムアウト時間で、前記各コンポーネントでのRPC処理を打ち切ることができる。
【0192】
また、本実施例7によれば、アプリケーション・ソフトウェア実行手段がゲートウェイを介してデータベースにアクセスする場合にも、アプリケーション・ソフトウェア実行手段が動作するプロセスで設定されたデータベース・アクセス時の処理打ち切り時間が、ゲートウェイがデータベースへアクセスする際に参照するデータベース・アクセス処理打ち切り時間に反映させることができるので、アプリケーション・ソフトウェア実行手段側とゲートウェイ側で個別に打ち切り時間を設定する必要が無いという効果がある。
【0193】
なお、SQL変換手段115がDBMSをアクセスする際にも、タイムアウトチェックを同様な方法で行うようにしてもよい。この場合、RPCドライバ102は、ステップ2650実行後、ステップ2653実行前に、ゲートウェイ情報処理装置130の記憶装置の格納領域251に保持されているSQLタイムアウト時間を、SQL変換手段115に送出するようにし、このSQLタイムアウト時間を受信したSQL変換手段115は、受け付けたSQLタイムアウト時間を、ゲートウェイ情報処理装置130にSQL変換手段用SQLタイムアウト時間の格納領域として確保された格納領域に格納するようにする。このようにすれば、SQL変換手段115がDBMSをアクセスする際に、格納されたSQL変換手段用SQLタイムアウト時間を参照し、処理時間が該時間を超えると、エラーにするようにすれば、SQL変換手段115によるDBMSのアクセスについても、処理に制限時間を設けることができる。
【0194】
ところで、アプリケーション・ソフトウェア111から発行されたSQL_RPCは、図29に示すように、アクセス管理コンポーネント112v、SQL変換手段115、DBMS121での処理が入れ子になる形で実行される。したがって、各コンポーネントでのタイムアウトによる処理打ち切りが同時に発生すると、どのコンポーネントでの処理が原因で処理時間がタイムアウト値をオーバーしたかアプリケーション・ソフトウェア111が正しく認識できない。
【0195】
これを解決するためには、アクセス管理コンポーネント112vがステップ2501で受信したSQLタイムアウト時間から、一定時間を引いた時間をアクセス管理コンポーネント112vが使用するSQLタイムアウト時間として記憶すればよい。
【0196】
これによって、タイムアウトエラーを検出したコンポーネント(アクセス管理コンポーネント、またはSQL変換手段)よりもアプリケーション・ソフトウェア111に近い側のコンポーネントは、その検出の時点では、SQLタイムアウト時間に達しておらず、まだ処理を打ち切っていないので、タイムアウトエラーを検出したコンポーネントからのエラーコードを正しくアプリケーション・ソフトウェア111に伝えることができる。このようにすれば、処理が打ち切られた場合の、処理時間超過の原因箇所を容易に特定できる。
【0197】
なお、本実施例7のRPCドライバ102に、実施例2の第1および/または第2の選択手段を設けてもよい。また、各情報処理装置に外部記憶装置を備え、上述した、主記憶装置1001に備えられている各格納領域は、この外部記憶装置に設けてもよい。
【0198】
(実施例8)
つぎに、サーバおよびクライアントの障害を監視する実施例を説明する。本実施例8の異種データベース・アクセス・システムの構成を図37に示す。本実施例8の異種データベース・アクセス・システムは、実施例7とほぼ同様の構成を有する。ただし、本実施例8では、図37に示すように、クライアント情報処理装置110の主記憶装置1001は、SQLタイムアウト時間格納領域250に加えて、さらに、サーバチェック用RPCタイムアウト時間と、サーバチェック用RPCインターバル時間とをそれぞれ保持するための格納領域371、372を備え、同様に、ゲートウェイ情報処理装置130の主記憶装置1001は、SQLタイムアウト時間格納領域251に加えて、さらに、サーバチェック用RPCタイムアウト時間と、サーバチェック用RPCインターバル時間とをそれぞれ保持するための格納領域373、374を備える。また、本実施例8のクライアント情報処理装置110のRPCドライバ102は、タイムアウトカウンタ252に加えて、さらに、サーバチェック用RPCの発行間隔をカウントするためのインターバルタイマ375を備え、ゲートウェイ情報処理装置130のアクセス管理コンポーネント112vは、クライアントの稼働をチェックするタイミングを計るためのクライアントチェックタイマ376を、さらに備える。
【0199】
なお、本実施例8のRPCドライバ102に、実施例2の第1および/または第2の選択手段を設けてもよい。また、各情報処理装置に外部記憶装置を備え、上述した、主記憶装置1001に備えられている各格納領域は、この外部記憶装置に設けてもよい。
【0200】
A.SQL_RPCの処理の流れ
本実施例8におけるSQL_RPCの処理を図27に示す。本実施例8のクライアント情報処理装置110のRPCドライバ102は、アプリケーション・ソフトウェア111から発行されたSQL_RPCを受け付けると、まず、該SQL_RPCが、DBMSへの接続文かどうかを判定し(ステップ2751)、接続文であった場合にはステップ2752〜2754を実行した後、ステップ2790に制御を移し、接続文でなかった場合には直接ステップ2790に制御を移す。
【0201】
ステップ2752では、RPCドライバ102は、実施例7と同様に、アクセス管理コンポーネント112vの物理位置を取得する。ステップ2753では、RPCドライバ102は、実施例7で説明したSQLタイムアウト時間に加え、格納領域371にあらかじめ保持されたサーバチェック用RPCタイムアウト時間と、格納領域372にあらかじめ保持されたサーバチェック用RPCインターバル時間とを、アクセス管理コンポーネント112vに通知する。つぎに、クライアントのRPCドライバ102は、サーバチェック用スレッドを起動する(ステップ2754)。
【0202】
ステップ2753による通知を受けたアクセス管理コンポーネント112vは、SQLタイムアウト時間、サーバチェック用RPCタイムアウト時間、サーバチェック用RPCインターバル時間を、それぞれ、格納領域251、273、274に格納する(ステップ2701)。また、アクセス管理コンポーネント112vは、クライアントチェック用スレッドを起動する(ステップ2702)。
【0203】
一方、クライアント情報処理装置110のRPCドライバ102は、インターバルタイマ375を初期化したのち(ステップ2790)、SQL文がデータベースへの接続を切る切断文であるかどうかを調べ(ステップ2760)、切断文であった場合には、ステップ2754で起動したサーバチェック用スレッドを終了する(ステップ2761)。
【0204】
つぎに、RPCドライバ102は、実施例7と同様にRPC実行スレッドを起動する(ステップ2762)。ここで起動されたRPC実行スレッドは、アクセス管理コンポーネント112vにRPCを発行してその処理を依頼し(ステップ2780)、アクセス管理コンポーネント112vの処理終了通知を待つ。処理を依頼されたアクセス管理コンポーネント112v側のRPCサーバは、クライアントチェックタイマ376を初期化し(ステップ2703)、SQL文の解析を行う(ステップ2502)。
【0205】
なお、以上述べた処理の続き(ステップ2554〜2560、ステップ2585、ステップ2502〜2504)は、上述の実施例7における図25に図示した処理と同じである。
【0206】
B.サーバチェック用スレッドの処理
図28に、上述のステップ2754で起動され、ステップ2761で終了するサーバチェック用スレッドの処理を示す。
【0207】
サーバチェック用スレッドは、起動されると、まず、インターバルタイマ375を初期化して(ステップ2801)、インターバルタイマ375のカウントアップ(ステップ2802)と、インターバルタイマ375の保持する値が、格納領域372の保持するサーバチェック用RPCインターバル時間を超えたかどうかのチェック(ステップ2803)とを繰り返すことにより、インターバルタイマ375の値が、あらかじめ定められたサーバチェック用RPCインターバル時間に到達するまで待つ。
【0208】
サーバチェック用RPCインターバル時間に到達すると、サーバチェック用スレッドは、SQL_RPCの処理が実行中であるかどうか(すなわち、本実施例ではRPC実行スレッドが終了していないかどうか)を調べ(ステップ2890)、実行中であった場合には、ステップ2801に処理を戻す。実行中ではなかった場合は、サーバチェック用スレッドは、サーバチェック用RPC実行スレッドを起動する(ステップ2804)。
【0209】
起動されたサーバチェック用RPC実行スレッドは、アクセス管理コンポーネント112vに対しサーバチェック用RPCを発行し、応答を待つ(ステップ2850)。なお、このサーバチェック用RPCは、RPCサーバであるアクセス管理コンポーネント112vに障害がないかを確認するための、あらかじめ定められた単純な指示のRPCである。サーバチェック用RPCのアクセス管理コンポーネント112vによる処理が終了すると、サーバチェック用RPC実行スレッドは、サーバチェック用RPC終了メッセージを設定しスレッドを終了する(ステップ2851)。
【0210】
一方、ステップ2804でサーバチェック用RPC実行スレッドを起動した親スレッドは、タイムアウトカウンタ252を初期化した後(ステップ2805)、ステップ2806のタイムアウトカウンタカウントアップ、ステップ2807のタイムアウトチェック、ステップ2808のサーバチェック用RPC実行スレッドの終了チェックを、所定時間(サーバチェック用RPCタイムアウト時間)が経過するか、あるいは、サーバチェック用RPC実行スレッドが終了するまで繰り返し実行する。なお、ステップ2807でのタイムアウトチェックは、タイムアウトカウンタ252の値が格納領域371に保持されているサーバチェック用RPCタイムアウト時間に達したかどうかで判定される。また、ステップ2808のRPC終了チェックは、ステップ2851で設定される終了メッセージがすでに設定されているかどうかで判定される。
【0211】
ステップ2807でのタイムアウトチェックの結果、所定時間を経過した場合、サーバチェック用スレッドは、ステップ2820でエラーコードを設定し(ステップ2820)、スレッドを終了する(ステップ2821)。また、ステップ2808でのサーバチェック用RPC終了チェックの結果、サーバチェック用RPC実行スレッドが終了していた場合には、サーバチェック用スレッドは、処理をステップ2801に戻す。
【0212】
このようにすれば、DBMSに接続してから切断するまでの間、あらかじめ定められた一定時間(サーバチェック用RPCインターバル時間)ごとに、サーバの正常稼働を確認することができる。
【0213】
なお、本実施例8ではインターバルタイマ375を用いてサーバチェック用RPCを定期的に発行しているが、ステップ2890により、SQL_RPCの処理の実行とサーバチェック用RPCが競合した場合は、サーバチェック用RPCの発行を取りやめ、再びインターバルタイマ375を初期化(ステップ2801)して、計時を再実行するようになっている。
【0214】
さらに、インターバルタイマ375はSQL_RPCを、クライアントのRPCドライバ102が受け付ける毎に、ステップ2790(図27)で初期化される。従って、SQL_RPCとサーバチェック用RPCの何れかが一番最後に発行された時点から、サーバチェック用RPCインターバル時間内にSQL_RPCが発行されなかった場合に、サーバチェック用RPCを発行するように動作する。これによって、サーバチェック用RPCの発行回数を必要最小限とする事ができる。
【0215】
C.クライアントチェック用スレッドの処理
次に、ステップ2702(図27)で起動されたクライアントチェック用スレッド(クライアントチェック処理実行手段)の処理内容を図33を用いて説明する。
【0216】
クライアントチェック用スレッドは、起動されると、まず、クライアントチェックタイマ376を初期化し(ステップ3301)、SQL_RPCが処理中かどうかを調べ(ステップ3302)、処理中でなければ、クライアントチェックタイマ376をカウントアップする(ステップ3303)。
【0217】
つぎに、クライアントチェック用スレッドは、クライアントチェックタイマ376の保持する値が、タイムアウト時間に到達したかを調べ(ステップ3304)、達していないと判断した場合にはステップ3302に処理を戻す。なお、ここで、タイムアウト時間は、サーバチェック用RPCインターバル時間格納領域374に保持された値を基に設定された時間である。この時間は、インターバルタイマの精度、通信経路での遅延等を考慮すれば、サーバチェック用RPCインターバル時間の1.2倍から2倍の間の時間とするのが適切である。
【0218】
ステップ3304において、タイムアウト時間に達したと判断した場合には、クライアントチェック用スレッドは、エラー通知を行い(ステップ3305)、スレッドの終了処理を行う(ステップ3306)。
【0219】
D.サーバチェック用RPCのサーバ側での処理
図34に、サーバチェック用RPCのサーバ側での処理内容を示す。アクセス管理コンポーネント1112vは、ステップ2850において発行されたサーバチェック用RPCを受け付けると、クライアントチェックタイマ376を初期化し(ステップ3401)、終了通知をして処理を終了する(ステップ3490)。
【0220】
このクライアントチェックタイマ376の初期化(ステップ3401)は、すでに図27のステップ2703で示したように、SQL_RPCの処理においてSQL_RPCを受け付けた際にも行われる。したがって、クライアントチェックタイマ376によるタイムアウトチェックは、クライアントからサーバチェック用RPCまたはSQL_RPCの何れかが、タイムアウト時間内に発行されるかどうかを監視していることになる。
【0221】
E.アクセス管理コンポーネント112vとSQL変換手段115が相互に障害チェックを行う場合の処理
なお、以上の説明では、クライアントのRPCドライバ102と、アクセス管理コンポーネント112vが相互に障害チェックを行う例を示したが、アクセス管理コンポーネント112vとSQL変換手段115が相互に障害チェックを行う場合も図32に示すように全く同様に実現できる。この場合の処理の流れを、つぎに説明する。
【0222】
まず、アクセス管理コンポーネント112vは、クライアントのRPCドライバ102から通知されたSQL_RPCを受け付けると、該SQL_RPCが、DBMSへの接続文かどうかを判定し(ステップ3251)、接続文であった場合にはステップ3252〜3254を実行した後、ステップ3290に制御を移し、接続文でなかった場合には直接ステップ3290に制御を移す。
【0223】
ステップ3252では、アクセス管理コンポーネント112vは、SQL変換手段115の物理位置を取得する。ステップ3253では、アクセス管理コンポーネント112vは、格納領域251に保持されたSQLタイムアウト時間と、格納領域373に保持されたサーバチェック用RPCタイムアウト時間と、格納領域374に保持されたサーバチェック用RPCインターバル時間とを、SQL変換手段115に通知する。つぎに、アクセス管理コンポーネント112vは、サーバチェック用スレッドを起動する(ステップ3254)。
【0224】
ステップ3253による通知を受けたSQL変換手段115は、SQLタイムアウト時間、サーバチェック用RPCタイムアウト時間、サーバチェック用RPCインターバル時間を、それぞれ、格納領域(図示せず)に格納する(ステップ3201)。また、SQL変換手段115は、クライアントチェック用スレッド(アクセス管理手段チェック処理実行手段)を起動する(ステップ3202)。
【0225】
一方、アクセス管理コンポーネント112vは、インターバルタイマ375を初期化したのち(ステップ3290)、SQL文がデータベースへの接続を切る切断文であるかどうかを調べ(ステップ3260)、切断文であった場合には、ステップ3254で起動したサーバチェック用スレッドを終了する(ステップ3261)。
【0226】
つぎに、アクセス管理コンポーネント112vは、RPC実行スレッドを起動する(ステップ3262)。ここで起動されたRPC実行スレッドは、SQL変換手段115にRPCを発行してその処理を依頼し(ステップ3280)、処理終了通知を待つ。処理を依頼されたSQL変換手段115は、クライアントチェックタイマ376を初期化し(ステップ3203)、SQL文の解析を行う(ステップ2502)。
【0227】
なお、以上述べた処理の続き(ステップ2554〜2560、ステップ2585、ステップ2502〜2504)は、実施例7における図25に図示した処理と同じである。
【0228】
F.各時間の設定例
図31に、上記実施例におけるSQLタイムアウト時間、サーバチェック用RPCタイムアウト時間、サーバチェック用RPCインターバル時間の設定例を示す。本実施例8では、図31に示すように、SQLタイムアウト時間はSQL_TIMEOUT、サーバチェック用RPCタイムアウト時間はSERV_TIMEOUT、サーバチェック用RPCインターバル時間はSERV_CHKINTという名称の環境変数の格納領域に、それぞれ格納して定義する。これらの設定値は、本実施例8では環境変数であるが、これに限られず、記憶できれば何でもよい。なお、図31に示した例では、各時間の単位はすべて秒である。
【0229】
設定値群3101は、アプリケーション・ソフトウェア実行手段111およびクライアントRPCドライバ102のプロセスの環境変数であり、ユーザーあるいはアプリケーション・ソフトウェア実行手段111が設定する。この設定3101では、SQLタイムアウト時間は3600秒、サーバチェック用RPCタイムアウト時間は10秒、サーバチェック用RPCインターバル時間は600秒となっている。
【0230】
設定値群3102は、アクセス管理コンポーネント112vのプロセスの環境変数であり、データベースへの接続時にアクセス管理コンポーネント112vが上述の設定値群3101の値をクライアントのRPCドライバ102から受信し、設定したものである。この設定3102では、SQLタイムアウト時間は3500秒、サーバチェック用RPCタイムアウト時間は10秒、サーバチェック用RPCインターバル時間は600秒となっている。ここでは、SQLタイムアウト時間は、受信した値から100を引いた値としている。
【0231】
設定値群3103は、SQL変換手段115のプロセスの環境変数であり、データベース接続時にSQL変換手段115が上述の設定値群3102の値をアクセス管理コンポーネント112vから受信し設定したものである。この設定3103では、SQLタイムアウト時間は3400秒、サーバチェック用RPCタイムアウト時間は10秒、サーバチェック用RPCインターバル時間は600秒となっている。ここでも、SQLタイムアウト時間は、受信した値から100を引いた値としている。
【0232】
以上述べたように、本実施例8では、サーバチェック用RPCを用い、サーバの障害検出を、設定したインターバル時間毎に定期的に行うことによって、データベースアクセスのためのRPC実行前にサーバの障害を認識することができる。また、サーバチェック用RPCが定期的に発行されているかどうかをサーバ側で監視することによって、クライアント側の障害検出を行うことができる。
【0233】
本実施例8では、データベース・アクセス時の処理打ち切り時間をアプリケーション・ソフトウェア実行手段のプロセス毎に設定可能であるので、アプリケーションに応じた適切な処理打ち切り時間が設定できる。さらに、本実施例8によれば、ゲートウェイ情報処理装置上のコンポーネントやDBMSの障害をSQL文の発行前に検知可能であり、無駄なSQL文の発行や、障害検知待ち時間の発生を防止できる。また、本実施例によれば、アクセスを依頼した側のコンポーネントの障害、つまり、クライアント側のコンポーネントの障害(アクセス管理コンポーネント112vの場合)、または、アクセス管理コンポーネント112vの障害(SQL変換手段115の場合)を検知することができる。これにより、障害が発生したコンポーネントに対応するプロセスを異常終了させることができ、ゲートウェイ情報処理装置の資源、例えば、CPU1000や、主記憶装置1001を、他のプロセスが有効利用することができる。
【0234】
(上記各実施例1〜8の効果)
以上述べた各実施例1〜8では、SQL仕様の異なる2種類のDBMSが混在した場合について説明したが、何種類のDBMSが混在してもよいし、SQL仕様だけでなく、通信プロトコルが異なっていてもよい。また、各情報処理装置間がLANによって接続された例を示したが、LANでなく電話回線などのWAN(Wide Area Network)による接続、あるいはLANとWANを併用した接続環境にも本発明は適用できる。さらに、以上述べた実施例におけるRPCは、同一の情報処理装置内のプログラム間か、別の情報処理装置上のプログラム間かに拘らず処理の依頼と該処理結果の受取が可能なインタフェース機構であれば何を用いてもよい。また、ゲートウェイ情報処理装置の選択や、タイムアウト監視などは、データベース・アクセス・システムに限らず、RPCを用いた他の分散処理システムへも適用できる。なお、上記実施例1〜8は、任意に組み合わせることができる。
【0235】
また、ひとつのSQL変換手段115は、同一のSQL仕様を備える複数のDBMSに対するデータベース・アクセスを処理できる。このため、運用しているDBMSごとのSQL変換手段115を用意する必要がなく、少なくとも、運用しているDBMSの種類に相当する数のSQL変換手段115を導入すればたりるため、システム全体のコストを低減できる。
【0236】
【発明の効果】
本発明によれば、複数のゲートウェイ情報処理装置に負荷を分散することができる。また、本発明によれば、ゲートウェイ情報処理装置を経由することのオーバーヘッドを低減することができる。さらに本発明によれば、非標準仕様のSQLを用いたアプリケーション・ソフトウェアから非標準仕様のSQLを用いたDBMSにアクセスすることできる。
【0237】
また、本発明によれば、クライアントのアプリケーション・ソフトウェア毎に自由な文字コードセットを使用することができる。さらに、本発明によれば、アプリケーション・ソフトウエア実行手段からDBMSへの接続単位に、自由な文字コードセットを使用することができる。
【0238】
また、本発明によれば、データベース・アクセス時に、クライアントのアプリケーション・ソフトウェアごとに任意に設定した時間が経過すると、その処理を打ち切ることができる。さらに、本発明によれば、ゲートウェイ情報処理装置上のコンポーネントやDBMSの障害をSQL文の発行前に検知することができ、接続中のクライアントの障害をゲートウェイ情報処理装置側で検出できる。
【図面の簡単な説明】
【図1】実施例1におけるデータベース・アクセス・システムの構成図である。
【図2】従来のデータベース・アクセス・アクセス・システムの構成例を示す構成図である。
【図3】従来のデータベース・アクセス・アクセス・システムの他の構成例を示す構成図である。
【図4】実施例1においてクライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図5】実施例1においてアクセス管理コンポーネントからSQL変換手段に発行するRPCの処理を示すフローチャートである。
【図6】実施例3のデータベース・アクセス・システムの構成図である。
【図7】実施例3におけるクライアントでのSQL処理を示すフローチャートである。
【図8】実施例4のデータベース・アクセス・システムの構成図である。
【図9】実施例2のデータベース・アクセス・システムの構成図である。
【図10】実施例1におけるゲートウェイ情報処理装置130の動作を示す説明図である。
【図11】実施例5のデータベース・アクセス・システムの構成図である。
【図12】実施例2において、サーバ・コンポーネントを乱数を用いて選択する場合の処理を示すフローチャートである。
【図13】実施例2において、サーバ・コンポーネントを選択するために用意した優先順位テーブルの内容の一例を示す図である。
【図14】実施例2において、サーバ・コンポーネントを負荷状態に応じて選択する場合の処理を示すフローチャートである。
【図15】実施例2において、サーバ・コンポーネントを応答時間に応じて選択する場合の処理を示すフローチャートである。
【図16】実施例2において、サーバ・コンポーネントをブロードキャストRPCを用いて選択する場合の処理を示すフローチャートである。
【図17】実施例2のサーバ情報テーブルの例を示す説明図である。
【図18】実施例1を用いたシステムの他の構成を示す図である。
【図19】実施例5のデータベース・アクセス・システムの他の構成を示す構成図である。
【図20】実施例2において、ブロードキャストによる処理依頼への応答を、サーバ・コンポーネントが動作する情報処理装置の負荷状態に応じて遅延させるための処理を示すフローチャートである。
【図21】実施例6において、クライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図22】実施例6において、アクセス管理コンポーネントからSQL変換手段に発行するRPCの処理を示すフローチャートである。
【図23】実施例1において、アクセス管理コンポーネント112vで処理するSQL文の一例を示す図。
【図24】実施例1において、SQL変換手段によって変換したSQL文の例を示す図。
【図25】実施例7において、クライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図26】実施例7において、アクセス管理コンポーネントからSQL変換手段に発行するRPCの処理を示すフローチャートである。
【図27】実施例8において、クライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図28】実施例8において、サーバの障害監視処理を行うサーバチェック用スレッドの処理を示すフローチャートである。
【図29】実施例7において、各コンポーネント間で発行するRPCのシーケンスを示す説明図である。
【図30】実施例6における文字コードの設定例を示す説明図である。
【図31】実施例7および8における障害検出に関する時間設定の例を示す説明図である。
【図32】実施例8において、アクセス管理コンポーネントからSQL変換_Xコンポーネントに発行するRPCの処理を示すフローチャートである。
【図33】実施例8におけるクライアントチェック用スレッドの処理を示すフローチャートである。
【図34】実施例8におけるサーバチェック用RPCのサーバ側の処理を示すフローチャートである。
【図35】実施例1のサーバ情報テーブルの例を示す説明図である。
【図36】実施例7のデータベース・アクセス・システムの構成を示す構成図である。
【図37】実施例8のデータベース・アクセス・システムの構成を示す構成図である。
【図38】実施例6のデータベース・アクセス・システムの構成を示す構成図である。
【図39】実施例1のデータベース・アクセス・システムのハードウェア構成図である。
【符号の説明】
100…LAN、102…RPCドライバ、110…クライアント情報処理装置、111…アプリケーション・ソフトウェア実行手段、112…アクセス管理コンポーネント、115…SQL変換手段、120…サーバ情報処理装置、121…DBMS、122…データベースドライバ、123…LANドライバ、124…外部記憶装置、130…ゲートウェイ情報処理装置、150…ネームサーバ情報処理装置、151…ネームサーバ・コンポーネント、1300…サーバ優先順位テーブル、1700…サーバ情報テーブル。
【産業上の利用分野】
本発明は、データベースをアクセスするための情報処理システムに係り、特に、クライアントの情報処理装置からネットワークを介して複数の異種データベース・サーバーをアクセスする場合に好適な、データベース・アクセス・システムおよびその制御方法に関する。
【0002】
【従来の技術】
企業におけるデータベース・システムは、ダウンサイジング化に伴い、メインフレームを用いた全社システムから、各業務を担当する部門に分散された部門システムへと移行が進んでいる。部門システムでは、業務内容に応じた最適なシステムを構築するため、各部門毎に異なるベンダのデータベース管理システム(DataBase Management System: DBMS)を採用することも珍しくない。一方、意志決定支援などのアプリケーション・ソフトウェアの実行においては、企業内の各部門に分散したデータベース上の種々のデータを必要に応じて収集し分析する必要がある。
【0003】
データベースのアクセスに用いるアプリケーション・プログラミング・インタフェース(Application Programming Interface: API)としては、エス・キュー・エル(SQL: Structured Query Language)とよばれる言語が一般に用いられている。SQLは、JIS規格などで標準仕様が定められているが、実際のDBMSの製品では細かな点でDBMSベンダ毎にその仕様が異なっている。このため、同一のSQLで異なるベンダのDBMS上のデータベースにアクセスすることはできない。そこで、一種類のSQLを各ベンダ固有のSQLに変換するゲートウェイが製品化されている。なお、SQLの仕様の相違点については、Addison-Wesley Publishing Company, Inc発行の「THE PRACTICAL SQL HANDBOOK」329〜341頁に記載されている。
【0004】
ゲートウェイを用いた異種データベース・アクセス・システムの一従来例を図2に示す。この従来例では、アプリケーション・ソフトウェア実行手段111が動作するクライアント情報処理装置110に、ゲートウェイ機能を搭載している。図2に示した例では、クライアント情報処理装置110と接続されたLAN(Local Area Network)100には、2つのサーバ情報処理装置120a,120bが接続されており、それぞれ、DBMS_A121a、DBMS_B121bが動作する。サーバ情報処理装置120aには、データベース124aのデータを保持する外部記憶装置124aが接続され、サーバ情報処理装置120bには、データベース124bのデータを保持する外部記憶装置124bが接続されている。DBMS_A121a,DBMS_B121bは、それぞれ、データベース124a,124bを管理する。
【0005】
アクセス管理コンポーネント112は、アプリケーション・ソフトウェア111がデータベース・アクセスのため発行するSQL文を、アクセス先がDBMS_A121aの時はSQL変換手段A115a、アクセス先がDBMS_B121bの時はSQL変換手段B115bの各コンポーネントに引き渡すように動作する。
【0006】
SQL変換手段A115a,SQL変換手段B115bの各コンポーネントは、受け取ったSQL文をターゲットDBMS(アクセス先のDBMS)の仕様に変換し、各DBMS用のデータベース・ドライバA122a、データベース・ドライバB122b、およびLANドライバ123を介して、各ターゲットのサーバ情報処理装置120aまたは120bに、前記変換後のSQL文を送信する。
【0007】
データベース・ドライバA122a、データベース・ドライバB122b、および前記LANドライバ123は、クライアント情報処理装置110と同じものが各サーバ情報処理装置120a、120bにも搭載されており、通信プロトコルの階層に従った処理を行い、クライアント情報処理装置100が送信したLAN100上のパケットデータからDBMS_A121aまたはDBMS_B121b宛の前記SQL文を取り出し、該各DBMSに該SQL文を送る。各DBMSでの処理結果は、上述の経路を逆に辿り、SQL変換手段A115aまたはSQL変換手段B115bによって、標準のデータ形式、および標準のリターン・コードに変換した後、アクセス管理コンポーネント112を介してアプリケーション・ソフトウェア111に送られる。
【0008】
このように、ゲートウェイ機能を、クライアント情報処理装置110上のアクセス管理コンポーネント112とSQL変換手段A115a、SQL変換手段B115bによって実現することにより、単一のSQL仕様だけを用いて、異なるSQL仕様を持つDBMSにアクセスすることが可能となっている。
【0009】
これらのゲートウェイ機能をクライアント情報処理装置110上ではなく、専用のゲートウェイ情報処理装置130を用いて実現した従来例を図3に示す。この従来例では、アプリケーション・ソフトウェア実行手段111が発行したSQL文は、まず、データベース・ドライバC122c、LANドライバ123を介してゲートウェイ情報処理装置130に送られる。ゲートウェイ情報処理装置130上では、LANドライバ123、データベース・ドライバC122cによって前記SQL文が取り出され、アクセス管理コンポーネント112に送られる。この後の動作は、図2を用いて説明した従来例と同様であり、SQL変換手段A115a、SQL変換手段B115b、データベース・ドライバA122a、データベース・ドライバB122b、LANドライバ123を介してターゲットのサーバ情報処理装置120aまたは120b上のデータベースをアクセスし、結果がクライアント情報処理装置110上のアプリケーション・ソフトウェア実行手段111に返される。
【0010】
これらの異種データベース・アクセス・システムについては、「日経エレクトロニクス1993年2月15日号」138〜145頁(日経BP社刊)に述べられている。
【0011】
【発明が解決しようとする課題】
以上述べたように、ターゲットDBMSのSQL仕様へのSQL文の変換を行うゲートウェイ機能を、クライアント情報処理装置上に搭載する、あるいは、ゲートウェイ機能を実現するゲートウェイ情報処理装置を設けることによって、単一のSQL仕様だけに対応したアプリケーション・ソフトウェア実行手段によって、異なるSQL仕様を持つ複数のDBMSで管理されたデータベースをアクセスすることが可能となっている。
【0012】
しかし、図2で示した従来の構成では、アクセスするDBMSに対応したSQL変換手段およびデータベース・ドライバを、すべてのクライアントが具備する必要がある。このため、システム内のDBMSの種類の追加やバージョンアップのたびごとに、各クライアントのSQL変換手段およびデータベース・ドライバをメンテナンスする必要があり、保守性のよいものではなかった。
【0013】
図3で示した従来の構成では、ゲートウェイ情報処理装置上のSQL変換手段、データベース・ドライバだけをメンテナンスすればよいので、上記の課題は解決される。しかし、常にゲートウェイ情報処理装置を介してデータベースをアクセスするので、ゲートウェイ情報処理装置に負荷が集中し、LAN上のトラフィックが増加するため、該アクセスの性能がゲートウェイ情報処理装置を介さない場合に比べて低下するという課題があった。
【0014】
また、従来のゲートウェイ情報処理装置を用いた方式では、それぞれ仕様の異なるSQLを発行する複数のクライアントから、それぞれ仕様の異なる複数のDBMSにアクセスすることができないという課題があった。
【0015】
さらに、従来のゲートウェイ情報処理装置を用いた方法では、クライアントのアプリケーション・ソフトウェア毎に、異なる文字コードセットを使用することができないという課題があった。
【0016】
また、データベースへのアクセスは、長いときには30分以上の時間を要する場合があり、処理の打ち切り時間はユーザーが自由に設定できることが望ましい。しかし、従来は、前記打ち切り時間を設定できない、あるいはシステムで固定した値での設定となっており、ユーザー毎の設定はできないという課題があった。さらに、ゲートウェイ情報処理装置上のSQL変換手段を介したデータベース・アクセスにおいては、処理打ち切り時間をオーバーした場合の原因箇所特定が容易でないという課題があった。また、ゲートウェイ情報処理装置上のコンポーネントまたはDBMSに障害が発生している場合も、30分程度の値が設定される前記打ち切り時間だけ待たなければ、前記障害が明らかにならないという課題があった。
【0017】
また、従来のゲートウェイ情報処理装置を用いた方法では、それぞれ仕様の異なるSQLを発行する複数のクライアントから、それぞれ仕様の異なる複数のDBMSにアクセスすることは困難であった。
【0018】
そこで、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、言語変換に伴う負荷を、複数の情報処理装置に分散することのできるデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第1の目的とする。
【0019】
さらに、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、アプリケーション・ソフトウェアが、データベース管理システムや、ゲートウェイ情報処理装置と異なる文字コードを用いることのできるデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第2の目的とする。
【0020】
また、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、任意の時間でデータベースへのアクセス処理を打ち切ることのできるデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第3の目的とする。
【0021】
さらに、本発明は、仕様の異なるデータベース・アクセス言語を発行するクライアントとDBMSとのアクセスを可能にする言語変換手段を有するデータベース・アクセス・システムであって、各装置の障害を検知する手段を有するデータベース・アクセス・システムを提供すること、およびその制御方法を提供することを第4の目的とする。
【0022】
【課題を解決するための手段】
上記目的を達成するために、本発明では、データベース・アクセス言語によるデータベースへのアクセス依頼を受け付け、応答を返すデータベース管理システムを備える複数のサーバ情報処理装置と、該サーバ情報処理装置に接続された、上記データベース管理システムをアクセス対象とする上記依頼を発行するアプリケーション・ソフトウェア実行手段を備える一以上のクライアント情報処理装置とを有するデータベース・アクセス・システムであって、上記アクセス依頼を受け付け、上記データベース管理システムに送るゲートウェイ情報処理装置を備え、上記ゲートウェイ情報処理装置は、上記アクセス依頼を受け付け、異なるデータベース・アクセス言語による依頼に変換して、上記データベース管理システムに送るデータベース・アクセス言語変換手段と、上記アクセス依頼を受け付け、上記データベース・アクセス言語変換手段に送る、アクセス管理手段とを備え、その目的に応じて、下記の要素を有するデータベース・アクセス・システムが提供される。
【0023】
A.上記第1の目標達成のためには、
(1)上記クライアント情報処理装置が、上記アプリケーション・ソフトウェア実行手段の発行した依頼を受け付け、上記複数のアクセス管理手段のうちのいずれに送るかを決定し、該決定したアクセス管理手段に送る第1の選択手段を有すること
(2)上記アクセス管理手段が、
上記アプリケーション・ソフトウェア実行手段の発行した依頼を受け付け、
上記複数のデータベース言語変換手段のうちのいずれに送るかを決定し、該決定したデータベース・アクセス言語変換手段に送る第2の選択手段を有することのすくなくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0024】
B.上記第2の目標達成のためには、
(1)上記クライアント情報処理装置が、上記アプリケーション・ソフトウェア実行手段の、前記依頼の発行に使用した文字コードの文字コードセット識別情報を、上記アクセス管理手段に通知する手段を備え、上記アクセス管理手段は、上記データベース・アクセス言語変換手段へ送る前に、受け付けた上記依頼の文字コードを、あらかじめ定められた文字コードセットの文字コードに変換する手段と、上記クライアント情報処理装置へ通知する応答を、上記通知された文字コードセットの文字コードに変換する手段とを備えること
(2)上記データベース・アクセス言語変換手段が、受け付けた上記依頼の文字コードを、あらかじめ定められた文字コードに変換する手段と、上記アクセス管理手段へ通知する応答を、上記通知された文字コードセットの文字コードに変換する手段とを備えること
の少なくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0025】
C.上記第3の目的達成のためには、
(1)上記クライアント情報処理装置が、上記依頼を発行すると、上記アクセス管理手段との接続を確保し、該依頼を該アクセス管理手段に送る手段と、あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理をエラーとする手段とを備えること
(2)上記アクセス管理手段が、上記依頼を受け付けると、上記データベース・アクセス言語変換手段との接続を確保し、該依頼を該データベース・アクセス言語変換手段に送る手段と、あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをクライアント情報処理装置に通知する手段とを備えること
(3)上記データベース・アクセス言語変換手段が、上記依頼を受け付けると、上記データベース管理システム手段との接続を確保し、該依頼を該データベース管理システムに送る手段と、あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをアクセス管理手段に通知する手段とを備えること
の少なくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0026】
D.上記第4の目的達成のためには、
(1)上記クライアント情報処理装置が、障害チェック用のあらかじめ定められた上記アクセス依頼を、あらかじめ定められた時間が経過するごとに発行し、上記ゲートウェイ情報処理装置に送る障害チェック手段と、上記障害チェック用アクセス依頼に対する応答が、あらかじめ定められた時間内になければ、上記アプリケーション・ソフトウェア実行手段にエラーを通知する障害通知手段とを有すること
(2)上記アクセス管理手段が、障害チェック用の上記アクセス依頼を、あらかじめ定められた時間が経過するごとに発行し、上記データベース・アクセス言語変換手段に送る障害チェック手段と、上記障害チェック用アクセス依頼に対する応答が、あらかじめ定められた時間内になければ、上記クライアント情報処理装置にエラーを通知する障害通知手段とを有すること
(3)上記データベース・アクセス言語変換手段が、障害チェック用の上記アクセス依頼をあらかじめ定められた時間が経過するごとに発行し、上記データベース管理システムに送る障害チェック手段と、上記障害チェック用アクセス依頼に対する応答が、あらかじめ定められた時間内になければ、上記アクセス管理手段にエラーを通知する障害通知手段とを有すること
の少なくともいずれかを備えるデータベース・アクセス・システムが提供される。
【0027】
さらに、本発明では、上記各要素を備えるデータベース・アクセス・システムの制御方法が提供される。
【0028】
【作用】
アクセス管理手段は、あらかじめ定められた仕様のSQLによる、データベース管理システムへのアクセス依頼をリモート・プロシージャ・コール((Remote Procedure Call: RPC)のパラメータとしたアクセスを受け付け、ターゲットのDBMSの種類を決定し、DBMSの種類に対応したSQL変換手段に標準仕様のSQLをパラメータとしたRPCを発行する。
【0029】
SQL変換手段は、アクセス管理手段から発行されたRPCによって引き渡された標準仕様のSQLを、ターゲットDBMSが用いる非標準仕様のSQLに変換し、DBMSへのアクセスを実行する。
【0030】
このように、アクセス管理手段とSQL変換手段との接続をRPCを用いて行い、しかもアクセス管理手段への処理依頼と、SQL変換手段への処理依頼の各RPCのパラメータ仕様を同一とする事によって、ターゲットDBMSが明確でしかも単一の場合には、ユーザー・アプリケーション・ソフトウェアから、アクセス管理手段を介すること無く直接SQL変換手段へアクセスすることができるようになる。これによって、オーバーヘッドを低減することができる。
【0031】
また、アクセス管理手段とSQL変換手段は、複数の情報処理装置上に置くことができ、第一の情報処理装置上のアクセス管理手段から他の情報処理装置上のSQL変換手段へRPCによる処理依頼を行うこともできる。これによって、処理負荷を複数の情報処理装置に分散できる。さらに、アクセス管理手段が搭載されたすべての情報処理装置上にすべての種類のDBMSに対応したSQL変換手段を搭載しなくてもよく、どれかの情報処理装置上に必要な種類のSQL変換手段を用意して置けばよいので、導入、保守が容易となる。
【0032】
また、ユーザー・アプリケーション・ソフトウェアが搭載された情報処理装置(クライアント情報処理装置)上で動作し、ユーザー・アプリケーション・ソフトウェア実行手段から発行されるSQLを、RPCを用いて他の情報処理装置に実行依頼するクライアントSQL処理手段は、ユーザー・アプリケーション・ソフトウェア実行手段から発行されるSQLをパラメータとするRPCを、単一のDBMSに対するものであるときはターゲットDBMSと同一情報処理装置上のSQL変換手段に発行し、単一のDBMSに対するものでないときはターゲットDBMSとは別のゲートウェイ情報処理装置上のアクセス管理手段に発行するように動作する。これによって、単一のDBMSに対してのアクセスは、ゲートウェイ情報処理装置を介することによるオーバーヘッドを生じることなく実行することができる。
【0033】
アクセス管理手段は、あらかじめ定められた仕様のSQLをRPCのパラメータとしたアクセスを受け付け、ターゲットのDBMSの種類を決定し、DBMSの種類に対応したSQL変換手段に前記RPCと同じ内容のRPCを発行する。前記SQL変換手段は、アクセス管理手段から発行されたRPCによって引き渡されたアクセス依頼を、ターゲットDBMSが用いるSQL仕様のアクセス依頼に変換し、該DBMSへのアクセスを実行する。この際、文字コードセット識別情報が通知される。前記アクセス管理コンポーネントは、自分自身が解釈可能な文字コードセットへ、アプリケーション・ソフトウェアから受け取ったSQL文を文字コード変換手段を用いて変換する。これによって、クライアント情報処理装置上のアプリケーション・ソフトウェアは、データベースへの接続単位に様々な文字コードセットを用いることができる。
【0034】
クライアント情報処理装置、アクセス管理手段、データベース・アクセス言語変換手段のいずれかに、上記依頼を受け付けると、送り先への接続を確保し、該依頼を送る手段と、あらかじめ定められた時間が経過しても応答がないと、該接続を切断し、上記依頼の処理のエラーを依頼元に通知する手段とを備えれば、データベース・アクセスの処理をあらかじめ定められた時間(打ち切り時間)で打ち切ることができる。また、クライアント情報処理装置からアクセス管理手段へ、アクセス管理手段からデータベース・アクセス言語変換手段へ、打ち切り時間を、依頼の通知ごとに通知するようにすれば、アプリケーション・ソフトウェア実行手段による依頼ごとに、データベースへの接続単位で自由に設定できる。
【0035】
また、打ち切り時間設定手段は、前記データベース・アクセス処理打ち切り時間通知手段から受け取った時間よりも短い時間を処理打ち切り時間として設定するように動作する。これによって、前記2つの打ち切り時間計測手段が用いる処理打ち切り時間は、前記アクセス管理手段から前記SQL変換手段へのSQL文の処理依頼に対して適用されるの方が短い時間となる。これによって、アプリケーション・ソフトウェアから見てアクセス管理手段の先にあるSQL変換手段への処理依頼打ち切りよりも時間的前に、アクセス管理手段への処理を打ち切ることを防止できる。これによって、SQL変換手段への処理打ち切りが発生した場合も、アクセス管理手段を介して該打ち切りの通知をアプリケーション・ソフトウェアが受け取ることができ、処理打ち切り時間をオーバーした場合の原因箇所特定が可能となる。
【0036】
また、サーバ障害チェック用RPC発行手段は、アプリケーション・ソフトウェアがデータベースに接続した後、アクセス管理手段およびSQL変換手段に対して、定期的に障害チェック用RPCを発行する。該障害チェック用RPCは、発行後、打ち切り時間内にサーバすなわちアクセス管理手段またはSQL変換手段から応答があるかどうかを打ち切り時間計測手段によってチェックする。前記打ち切り時間内に応答がなかった場合には、サーバに障害が発生したものとみなす。これによって、アクセス管理手段、SQL変換手段の障害をSQL文の発行前に検知することが可能である。
【0037】
さらに、RPCの定期的発行をチェックする手段は、前記サーバ障害チェック用RPC発行手段から発行される障害チェック用RPCが定期的に発行されているかどうかを監視し、前記発行がなされていない場合にはクライアントに障害が発生したものとみなす。これによって、クライアント側の障害を容易に検知することが可能である。
【0038】
【実施例】
以下に、本発明の実施例を図面を用いて説明する。
【0039】
(実施例1)
A.異種データベース・アクセス・システムの構成
図1に、本実施例1における異種データベース・アクセス・システムの一構成例を示す。本実施例1における異種データベース・アクセス・システムは、クライアント情報処理装置110と、ゲートウェイ情報処理装置130と、サーバ情報処理装置120a,120bと、ネームサーバ情報処理装置150とを備える。以上の各情報処理装置110,120a,120b,130,150はLAN100で接続されている。図39に示すように、各情報処理装置110,120a,120b,130,150は、少なくとも、主記憶装置1001と中央演算処理装置(CPU)1000とを備える。
【0040】
クライアント情報処理装置110は、アプリケーション・ソフトウェア実行手段111と、RPCドライバ102と、LANドライバ123とを備え、アプリケーション・ソフトウェア実行手段111によりデータベースの保持するデータにアクセスするためのアクセス要求であるリモート・プロシージャ・コール(Remote Procedure Call: RPC)を発行し、該要求に対する応答を受け付ける情報処理装置である。アプリケーション・ソフトウェア実行手段111と、RPCドライバ102と、LANドライバ123とは、クライアント情報処理装置110の主記憶装置1001上に保持されたインストラクションを、クライアント情報処理装置110のCPU1000が実行することにより実現される。
【0041】
サーバ情報処理装置120aは、DBMS_A121aと、データベースドライバA122aと、LANドライバ123とを備え、サーバ情報処理装置120bは、DBMS_B121bと、データベースドライバデータベースドライバB122bと、LANドライバ123とを備える。サーバ情報処理装置120a,120bは、DBMS_A121a、DBMS_B121bにより、受け付けたデータベースアクセス要求に対して応答する。サーバ情報処理装置120aのDBMS_A121aと、データベースドライバA122aと、LANドライバ123とは、サーバ情報処理装置120aの主記憶装置1001上に保持されたインストラクションを、サーバ情報処理装置120aのCPU1000が実行することにより実現される。サーバ情報処理装置120bのDBMS_B121bと、データベースドライバデータベースドライバB122bと、LANドライバ123とは、サーバ情報処理装置120bの主記憶装置1001上に保持されたインストラクションを、サーバ情報処理装置120bのCPU1000が実行することにより実現される。
【0042】
ネームサーバ情報処理装置150は、ネームサーバ151と、RPCドライバ102と、LANドライバ123とを備え、RPCで呼び出す各サーバ・コンポーネント(アクセス管理コンポーネント112vや、SQL変換手段115など)の識別情報と、ネットワーク上の物理位置との対応情報を提供するサービスを行うネームサーバ151が動作する情報処理装置である。ネームサーバ情報処理装置150のネームサーバ151と、RPCドライバ102と、LANドライバ123とは、ネームサーバ情報処理装置150の主記憶装置1001上に保持されたインストラクションを、ネームサーバ情報処理装置150のCPU1000が実行することにより実現される。
【0043】
ゲートウェイ情報処理装置130は、アクセス管理コンポーネント112vと、2種類のデータベース・アクセス言語変換手段(本実施例では、データベース・アクセス言語として、SQLを用いるので、ここでは、SQL変換手段と呼ぶ。本実施例では、SQL変換手段A115aおよびSQL変換手段B115bがある)およびデータベースドライバ(データベースドライバA122aおよびデータベースドライバB122b)と、RPCドライバ102と、LANドライバ123とを備え、RPCを処理するゲートウェイである。ゲートウェイ情報処理装置130のアクセス管理コンポーネント112vと、SQL変換手段A115とa、SQL変換手段B115bと、データベースドライバA122aと、データベースドライバB122bと、RPCドライバ102と、LANドライバ123とは、ゲートウェイ情報処理装置130の主記憶装置1001上に保持されたインストラクションを、ゲートウェイ情報処理装置130のCPU1000が実行することにより実現される。
【0044】
なお、アクセス管理コンポーネント112vと、ゲートウェイ情報処理装置130のRPCドライバ102とを合わせて、アクセス管理手段と呼ぶ。
【0045】
DBMS_A121a、DBMS_B121bによって管理されているデータベースのデータは、上述の従来例と同様に、外部記憶装置に格納されるが、図が煩雑になるのを防ぐため、図1では外部記憶装置およびデータベースの図示を省略している(以下の実施例についても同様に省略する)。
【0046】
B.SQL_RPCの処理
アプリケーション・ソフトウェア実行手段111からのデータベース・アクセスは、アプリケーション・ソフトウェア実行手段111の発行したSQL文に対応するRPC(パラメタとして該SQL文の指定されたRPC。以下、SQL_RPCと呼ぶ)の実行によって行なわれる。
【0047】
なお、ここでは、アプリケーション・ソフトウェア実行手段111が使用するSQL仕様を、本実施例1のシステムにおける標準仕様と呼ぶことにする。本実施例1では、DBMS_A121a、DBMS_B121bはこの標準仕様とは異なるSQL仕様を用いている。
【0048】
アプリケーション・ソフトウェア実行手段111からSQL_RPCが発行されると、クライアント情報処理装置110上のRPCドライバ102は、まず、ネームサーバ情報処理装置150上のネームサーバ151に、このSQL文を処理するサーバのネットワーク・アドレスとサーバ・コンポーネントへの接続のためのポート番号を問い合わせる。
【0049】
本実施例1では、このSQL_RPCを処理するサーバは、ゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vであるので、この問い合わせに対して、ネームサーバ151は、ゲートウェイ情報処理装置130のネットワーク・アドレス情報とアクセス管理コンポーネント112vのポート番号を返す。
【0050】
これらの情報をもとに、クライアント情報処理装置110上のRPCドライバ102は、ゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vとRPC接続を行い、処理対象のSQL_RPCの処理をアクセス管理コンポーネント112vへ依頼する。
【0051】
アクセス管理コンポーネント112vは、処理を依頼されたSQL_RPCのパラメータに含まれるターゲットDBMSの名称をネームサーバ151に通知して、使用すべきSQL変換コンポーネントを問い合わせる。本実施例1では、ネームサーバ151は、SQL変換手段A115aまたは、SQL変換手段B115bのネットワーク・アドレス情報とポート番号を応答するので、アクセス管理コンポーネント112vは、ネームサーバ151から返された該情報をもとに、該情報により定められる何れかのSQL変換手段に、SQL文の変換とターゲットDBMSへのアクセス処理とをRPCを用いて依頼する。
【0052】
SQL変換手段A115aまたはSQL変換手段B115bが行った各DBMSへのアクセス結果は、上述の経路を逆に辿り、前記SQL変換手段A115aまたはSQL変換手段B115bによって、標準のデータ形式、および標準のリターン・コードに変換した後、アクセス管理コンポーネント112vを介してアプリケーション・ソフトウェア実行手段111に送られる。
【0053】
上述のSQL_RPCの処理を図4のフローチャートに示す。
(1)RPCドライバ102の処理
クライアント情報処理装置110のアプリケーション・ソフトウェア111がSQL_RPCを発行すると、クライアント情報処理装置110のRPCドライバ102は、まず、ネームサーバ情報処理装置150上のネームサーバ151に、該SQL_RPCを処理するサーバの物理位置、すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を問い合わせ(ステップ450)、得られたポート番号を用いて、ゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vとのRPC接続を行い、SQL_RPCの処理を該アクセス管理コンポーネント112vへ依頼する(ステップ451)。
【0054】
(2)ネームサーバ151の処理
本実施例のネームサーバ情報処理装置150は、サーバ・コンポーネントの識別情報とアドレス等を保持するサーバ情報テーブルを備える。本実施例1のサーバ情報テーブルの一例を図35に示す。サーバ情報テーブルは、サーバ・コンポーネント名格納領域(列1701)ごとに、アドレス格納領域(列1702)と、ポート番号格納領域(列1703)と、状態格納領域(列1704)とを備える配列構造を有している。なお、状態格納領域(列1704)には、各コンポーネントのステータスが保持されており、動作中のサーバでは”RUN”、停止中のサーバでは”STOP”、故障中のサーバでは”FAULT”となっている。
【0055】
上述のステップ450等において、サーバの物理位置の問い合わせを受けたネームサーバ151は、このサーバ情報テーブルを参照して、状態格納領域に保持された値が”RUN”であれば、問い合わせられた名称に対応して保持されている該サーバ・コンポーネントのネットワーク・アドレスとポート番号とを返答する。
【0056】
(3)アクセス管理コンポーネント112vの処理
ステップ401〜411は、依頼を受けたアクセス管理コンポーネント112vの処理内容である。ステップ451で依頼を受けたアクセス管理コンポーネント112vは、まず、SQL_RPCのパラメータとして送られてきたSQL文を解析し、アクセス先のテーブルが含まれるDBMSの名称を得る(ステップ401)。
【0057】
なお、本実施例1では、アクセス管理コンポーネント112vは、単一のDBMS上のテーブルに対する操作だけでなく、異なるDBMSの管理する複数のデータベースに跨る複数のテーブルのデータの検索、結合などの操作を行えるようにした。そこで、本実施例1のアクセス管理コンポーネント112vは、アクセス先がDBMS_A121aとDBMS_B121bとの両方か(ステップ402)、DBMS_A121aだけか(ステップ403)、DBMS_B121bだけか(ステップ404)を判断する。
【0058】
アクセス先がDBMS_A121aとDBMS_B121bの両方の場合、アクセス管理コンポーネント112vは、処理対象のSQL文をDBMS_A121aに対するアクセスとDBMS_B121bに対するアクセスに分割したSQL文を作成する(ステップ406)。つぎに、アクセス管理コンポーネント112vは、DBMS_A121aに対するSQL文をパラメータとしたRPC(SQL_A_RPCと呼ぶ)を実行し、その結果を得(ステップ407)、さらに、DBMS_B121bに対するSQL文をパラメータとしたRPC(SQL_B_RPCと呼ぶ)を実行し、その結果を得る(ステップ408)。最後に、アクセス管理コンポーネント112vは、ステップ407、408で得た結果をマージして、分割を行う前のSQL文に対応する結果を作成し(ステップ409)、SQL_RPCの処理を完了する(ステップ412)。
【0059】
アクセス先がDBMS_A121a一方のみの場合、アクセス管理コンポーネント112vは、処理対象のSQL文をパラメータとしたRPC(SQL_A_RPC)を発行してアクセス結果を得(ステップ410)、SQL_RPCの処理を完了する(ステップ412)。
【0060】
アクセス先がDBMS_B121b一方のみの場合、アクセス管理コンポーネント112vは、処理対象のSQL文をパラメータとしたRPC(SQL_B_RPC)を発行してアクセス結果を得(ステップ411)、SQL_RPCの処理を完了する(ステップ412)。
【0061】
なお、アクセス先がDBMS_A121aおよびDBMS_B121bのいずれでもない場合、アクセス管理コンポーネント112vは、エラーコードをセットし(ステップ405)、SQL_RPCの処理を終了する(ステップ412)。
【0062】
(4)SQL_RPCの分割(ステップ406)
アクセス管理コンポーネント112vは、処理対象のSQL文が複数のデータベースに対する処理の指示を含むことを検出すると、アクセス対象ごとに分割したSQL_RPCを作成する(ステップ406)。図23に示したセレクト構文の例を用いて、アクセス管理コンポーネント112vの作成するSQL文を説明する。なお、セレクト構文は、WHERE句により指定した条件を満たすレコードを、FROM句に記述したアクセス対象から検索し、該レコードのSELECT句に指定されたデータを構成要素とするテーブルを得るための質問指定の構文である。
【0063】
アプリケーション・ソフトウェア実行手段111が発行するSQL文2301は、”DBMS_A”という名称のデータベース管理システムの管理する”SALES”というテーブルと、”DBMS_B”という名称のデータベース管理システムの管理する”SALESDATA”というテーブルから、”SaleNum”カラムの内容が0でないレコードを検索し、そのレコードの”Name”カラムの内容と”SaleNum”カラムの内容とのテーブルを作成することを指示するものである。
【0064】
アクセス管理コンポーネント112vは、このSQL文2301を、DBMS_Aに対するSQL文2302と、DBMS_Bに対するSQL文2303に分割し、それぞれのSQL文をパラメータとしたRPCを発行して、その応答を結合してSQL文2301に対する応答であるテーブルを作成するのである。
【0065】
SQL文2302は、”DBMS_A”という名称のデータベース管理システムの管理する”SALES”というテーブルから、”SaleNum”カラムの内容が0でないレコードを検索し、そのレコードの”Name”カラムの内容と”SaleNum”カラムの内容とのテーブルを作成することを意味する。
【0066】
SQL文2303は、”DBMS_B”という名称のデータベース管理システムの管理する”SALESDATA”というテーブルから、”SaleNum”カラムの内容が0でないレコードを検索し、そのレコードの”Name”カラムの内容と”SaleNum”カラムの内容とのテーブルを作成することを意味する。
【0067】
(5)単一DBMSへのアクセスを指示するSQL_RPCの処理(ステップ407,410(SQL_A_RPCの処理)、ステップ408,411(SQL_B_RPCの処理))
単一DBMSへのアクセスを指示するSQL_RPC(以下、SQL_x_RPCと呼ぶ)の処理を図5に示す。SQL_x_RPCの処理では、まず、ゲートウェイ情報処理装置130のRPCドライバ102が、SQL_x_RPCを処理するサーバ・コンポーネント(本実施例1ではSQL変換手段A115aあるいはSQL変換手段B115b)のネットワーク・アドレス情報とポート番号とを、ネームサーバ151に問い合わせ、その問い合わせの応答として取得する(ステップ501)。
【0068】
次に、ゲートウェイ情報処理装置130のRPCドライバ102は、ステップ501の問い合わせによって検出したSQL変換手段115に対し、SQL_x_RPCを引き渡し、その処理を依頼する(ステップ502)。
【0069】
なお、本実施例1では、ステップ501において問い合わせを行なったRPCドライバ102と、SQL変換手段A115aおよびSQL変換手段B115bとが、いずれも同じゲートウェイ情報処理装置130にあることから、RPCドライバ102は、ネットワーク・アドレス情報とポート番号とを用いなくても、SQL_x_RPCをSQL変換手段115に通知することができる。そこで、本実施例1では、ステップ501の処理を省略してもよい。
【0070】
ステップ503、504、505は処理を依頼されたSQL変換手段115の処理である。SQL変換手段115は、RPCのパラメータとして受け取った標準仕様のSQL文をターゲットDBMSのSQL仕様に変換する(ステップ503)。次に、SQL変換手段115は、変換によって作成したSQL文をターゲットDBMSに送り、ターゲットDBMSでの前記SQL文の実行結果を得る(ステップ504)。さらに、SQL変換手段115は、実行結果として得たデータおよびリターンコードを、ターゲットDBMSのSQL仕様から標準のSQL仕様に変換する(ステップ505)。最後に、SQL変換手段115は、変換結果をリターンデータ、リターンコードとして、SQL_x_RPCの処理を終了する(ステップ506)。
【0071】
つぎに、各SQL変換手段115a,bによるSQL文の変換(ステップ503)を図24に示した例を用いて説明する。SQL変換手段115a,bは、入力されたSQL構文を、それぞれのターゲットとするDBMSのSQL仕様に変換する。なお、ステップ505では、この逆の変換が行なわれる。
【0072】
本実施例1における標準仕様のSQLでは、”等しくない”ことを示す演算子は、”<>”であるが、DBMS_A121aのSQL仕様では”!=”を、DBMS_B 121bのSQL仕様では”^=”を用いるとする。この場合、SQL変換手段A115aは、標準仕様のSQL文2302(図23に図示)を、図24の構文2402に示すように変換する。すなわち、SQL変換手段A115aは、構文2302の”<>”を”!=”に変換する。また、SQL変換手段B115bは、標準仕様のSQL文2303(図23に図示)を、図24の構文2403に示すように変換する。すなわち、SQL変換手段B115bは、構文2302の”<>”を”^=”に変換する。
【0073】
以上説明したように、アクセス管理コンポーネント112v、SQL変換手段A115a、SQL変換手段B115bを具備することによって、アプリケーション・ソフトウェア実行手段111からは、仕様の異なる複数のDBMS上のテーブルを、その仕様の違いを意識すること無く、単一の標準仕様のSQL文を用いてアクセスすることができる。
【0074】
(6)ゲートウェイ情報処理装置130内のプロセスの生成、消滅
本実施例1におけるゲートウェイ情報処理装置130内のプログラムの動作の一例を図10に示す。ここでは、クライアント情報処理装置を2台接続し、クライアント情報処理装置110aからはサーバ情報処理装置120a上のDBMS_Aとサーバ情報処理装置120b上のDBMS_Bを、クライアント情報処理装置110bからはサーバ情報処理装置120b上のDBMS_Bをアクセスする場合を示す。
【0075】
アクセス管理コンポーネント112vでは、クライアント情報処理装置との接続単位にプロセスが生成される。SQL変換手段A115a、SQL変換手段B115bについても、アクセス管理コンポーネント112vの各プロセスからのアクセス要求がRPCを用いて発行される毎にプロセスが生成される。また、データベース・ドライバA122a、データベース・ドライバB122bは、それぞれSQL変換手段A115a、SQL変換手段B115bの各1プロセスに対して1プロセスが生成されるように動作する。
【0076】
これらのプロセスは、アクセスの終了と共に消滅する。このようなプロセス生成・消滅をゲートウェイ情報処理装置130で行うことによって、複数のクライアント情報処理装置から複数のサーバ情報処理装置へのアクセスを同時に処理することができる。
【0077】
C.適用例
ネットワーク100に、互いに異なる仕様を有するデータベース管理システムを備える2つの既存のシステム600aと600bとが接続されているネットワーク100に本実施例1の異種データベースアクセスシステムを適用する場合の例を、図18を用いて説明する。
【0078】
システム600aは、DBMS_Aを用いたサーバ情報処理装置121aとDBMS_A専用のデータベースドライバA、アプリケーション・ソフトウェアA実行手段が搭載されたクライアント情報処理装置110aから構成される。また、システム600bは、DBMS_Bを用いたサーバ情報処理装置121bとDBMS_B専用のデータベースドライバB、アプリケーション・ソフトウェアBが搭載されたクライアント情報処理装置110bから構成される。
【0079】
これらの既存のシステムに、上述のゲートウェイ情報処理装置130、ネームサーバ情報処理装置150、クライアント情報処理装置110からなる付加システム500を付加することによって、既存のシステム600a、600bの構成を何等変更することなく、追加したクライアント情報処理装置110から単一の標準仕様のSQL文を用いて、仕様の異なる複数のDBMSにアクセスすることができる。
【0080】
(実施例2)
ところで、本発明では、アプリケーション・ソフトウェア実行手段111からアクセス管理コンポーネント112vへのアクセスと、該アクセス管理コンポーネント112vからのSQL変換手段115へのアクセスにRPCを用いている。このため、実施例1に示した異種データベース・アクセス・システムにおけるゲートウェイ情報処理装置130への負荷集中によるデータベース・アクセス性能の低下を、ゲートウェイ情報処理装置130の追加によって容易に回避できる。本実施例2では、ゲートウェイ情報処理装置130を追加した場合の実施例を説明する。
【0081】
本実施例2では、図9の構成図に示すように、SQL変換手段A115aを具備したゲートウェイ情報処理装置130aと、SQL変換手段B115bを具備したゲートウェイ情報処理装置130bの2台のゲートウェイ情報処理装置がネットワーク100に接続されている。すなわち、本実施例2は、SQL変換手段115ごとにゲートウェイ情報処理装置130が設けられている点で実施例1とは異なる。
【0082】
クライアント情報処理装置110上のRPCドライバ102は、実施例1と同様、アプリケーション・ソフトウェア実行手段111が発行するSQL_RPCを受け付けると、まず、該SQL_RPCを処理するサーバの物理位置すなわちネットワーク・アドレスとポート番号をネームサーバ151に問い合わせる。
【0083】
本実施例2のサーバ情報テーブルは、図17に示すように、一つのサーバ・コンポーネント名に対応して、複数のサーバの情報(アドレス、ポート番号、および状態)が保持されている。そこで、本実施例2のネームサーバ151は、サーバ情報テーブル1700を参照し、指定されたサーバ・コンポーネント名に対応する稼働中のすべてのサーバ・コンポーネントのネットワーク・アドレスおよびポート番号を返答する。すなわち、ネームサーバ151は、列1701に指定されたサーバ・コンポーネント名が保持されていおり、かつ、列1704に”RUN”が保持されているすべての行の、列1702に保持されているデータ(ネットワーク・アドレス)および列1703に保持されているデータ(ポート番号)を返答する。
【0084】
本実施例2では、前記SQL_RPCを処理するサーバすなわちアクセス管理コンポーネント112vは、ゲートウェイ情報処理装置130aと130bとの両方に搭載されており、ネームサーバ151からは、前記問い合わせに対して2つのアクセス管理コンポーネント112vの物理位置が返答される。クライアント情報処理装置110上のRPCドライバ102は、第1の選択手段として、返答された複数のアクセス管理コンポーネント112vの中から、一つを選択し、処理を依頼する。
【0085】
なお、本実施例2の異種データベースアクセスシステムの各構成要素の処理は、ここに特に記述した処理以外は、実施例1の場合と同様である。
【0086】
A.動作例
つぎに、ゲートウェイ情報処理装置130a上のアクセス管理コンポーネント112vが選択された場合の動作を説明する。
【0087】
アプリケーション・ソフトウェア実行手段111から発行されるSQL_RPCは、まず、クライアント情報処理装置110のRPCドライバ102により、ゲートウェイ情報処理装置130a上のアクセス管理コンポーネント112vに送られる。
【0088】
ゲートウェイ情報処理装置130aのアクセス管理コンポーネント112vは、すでに図4を用いて説明したように、受け付けたSQL_RPCのターゲットのDBMSに応じて、SQL_A_RPCおよび/またはSQL_B_RPCを発行する。つぎに、アクセス管理コンポーネント112aは、発行したSQL_x_RPCがSQL_A_RPCであれば、SQL変換手段A115aに通知して処理させ、発行したSQL_x_RPCがSQL_B_RPCであれば、SQL変換手段B115bに通知して処理させる。
【0089】
なお、本実施例2のシステムでは、SQL_B_RPCを処理するSQL変換手段B115bは、処理を依頼されたアクセス管理コンポーネント112aが存在するゲートウェイ情報処理装置130aとは別のゲートウェイ情報処理装置130bに存在する。従って、ゲートウェイ情報処理装置130aのRPCドライバ102は、SQL_B_RPCを、LAN100を経由してゲートウェイ情報処理装置130b上のSQL変換手段B115bに通知する。複数のSQL変換手段B115bを備えるシステムにおいては、ゲートウェイ情報処理装置130aのRPCドライバ102は、第2の選択手段として、上述のクライアント情報処理装置110のRPCドライバ102と同様の手順により、通知するSQL変換手段B115bを選択するようにしてもよい。
【0090】
このように、本実施例2では、SQL変換手段115へのアクセスをRPCを用いて行い、ゲートウェイ情報処理装置130上のRPCドライバ102が、処理を依頼するSQL変換手段115の選択を行うので、SQL変換手段115が複数のゲートウェイ情報処理装置130上に分散していても、アプリケーション・ソフトウェア実行手段111がその位置を意識することなくアクセスすることができる。したがって、システム内に存在する種々のDBMSに対応したSQL変換手段115は、システム内のどれかのゲートウェイ情報処理装置130にあればよく、すべてのSQL変換手段115を各ゲートウェイ情報処理装置130が持つ必要はない。これによって、各ゲートウェイ情報処理装置130への負荷集中の回避、SQL変換手段115の導入やメンテナンス工数の低減を図ることができる。
【0091】
B.選択方法
クライアント情報処理装置110上のRPCドライバ102は、アクセス管理コンポーネント112vの選択を実行し、SQL_RPCを通知する。また、ゲートウェイ情報処理装置130aおよび130b上のRPCドライバ102は、SQL変換手段A115aまたはSQL変換手段B115bの選択を実行し、SQL_x_RPCを通知する。そこで、ネームサーバ151への問い合わせの結果、複数の候補が該ネームサーバ151から返答されたときの、RPCドライバ102の、通知対象の選択方法の例について以下に示す。
【0092】
(1)無作為選択
第一の選択方法は、複数の候補からランダムに選択する方法である。図12に示すように、候補の数が2以上のときは(ステップ1201)乱数を発生させ(ステップ1202)、該乱数を候補の数Nで割りその剰余を求め(ステップ1203)、該剰余+1番目の候補をサーバコンポーネントとして選択(ステップ1204)する方法などが考えられる。
【0093】
(2)優先順位による選択
第二の選択方法は、予め登録した優先順位を用いる方法である。この方法では、サーバコンポーネントの優先順位を例えば図13に示すようなテーブル形式で、RPCドライバ102の参照可能なファイルなどに予め格納しておき、RPCドライバ102は、ネームサーバ151から返答された複数の候補の内、優先順位の高いサーバ・コンポーネントを選択する。
【0094】
なお、図13の列1301は優先順位、列1302はサーバ名称の格納領域である。この方法を用いる場合、RPCを発行するコンポーネントと同じ情報処理装置上にサーバコンポーネントが存在する場合に、そのサーバ・コンポーネントを高い優先順位に設定すれば、ネットワークを経由することによるオーバーヘッドを抑えることができる。
【0095】
(3)負荷状態による選択
第三の方法は、各ゲートウェイサーバ情報処理装置130の負荷の状態によって、選択する方法である。負荷状態とは、例えば、ゲートウェイサーバ情報処理装置130で動作中のあらゆるプログラムのインストラクションのCPU占有率や、外部記憶装置へのアクセス頻度である。この方法を用いるときは、問い合わせに対して、各ゲートウェイ・サーバのオペレーティング・システム(OS)が提供するCPUや外部記憶装置などの負荷状態を返答する負荷情報通知手段(図示せず)を、各ゲートウェイサーバ情報処理装置130に設ける。また、各RPCドライバ102の記憶領域(図示せず)に、サーバ・コンポーネント(アクセス管理コンポーネント112vまたはSQL変換手段115)の候補の数(Nとする)の格納領域、カウンタ用変数(cとする)の格納領域、最小負荷サーバ・ナンバー記憶変数(nとする)の格納領域、最小負荷記憶変数(LMINとする)格納領域、および負荷状態を示す変数(Lとする)の格納領域を備える。この第三の方法による選択処理の手順を図14に示す。なお、負荷情報通知手段は、ゲートウェイサーバ情報処理装置130の主記憶装置1001に保持されたインストラクションを、ゲートウェイサーバ情報処理装置130のCPUが実行することにより実現される。
【0096】
RPCドライバ102は、サーバ・コンポーネント候補数N格納領域、カウンタ用変数c格納領域、最小負荷サーバ・ナンバー記憶変数n格納領域、最小負荷記憶変数LMIN格納領域を初期化する(ステップ1401)。なお、ステップ1401における初期化とは、各格納領域に初期値を格納することであり、本実施例2では、サーバ・コンポーネント候補数Nの初期値は、通知された候補数、カウンタ用変数cおよび最小負荷サーバ・ナンバー記憶変数nの初期値はそれぞれ1、最小負荷記憶変数LMINの初期値は100である。
【0097】
つぎに、RPCドライバ102は、サーバ・コンポーネント候補が複数かどうかを調べ、1個だけなら、負荷を調べる必要がないのでステップ1410に制御を移して、選択結果を、候補に挙げられているサーバ・コンポーネントとする(ステップ1402)。
【0098】
サーバ・コンポーネント候補が複数の場合には、RPCドライバ102は、c番目の候補のサーバ・コンポーネントの備えられているゲートウェイサーバ情報処理装置130の負荷情報通知手段に負荷情報を問い合わせ(ステップ1403)、サーバ・コンポーネントから返された負荷状態を示す数値を変数Lの格納領域に格納する(ステップ1404)。ここで、負荷状態を示す数値は、0から100までの数値(百分率)で表わされる。例えば、ゲートウェイサーバ情報処理装置130で並列実行しているプログラムが多いほど、値が大きい。これに対し、実行しているプログラムが存在しない場合は、0近傍の値となる。
【0099】
次に、RPCドライバ102は、それまでに調べた他のサーバの負荷の最小値LMINと前記変数Lとを比較し(ステップ1405)、変数Lの方が小さいときは、LMINにLの値を格納し(ステップ1406)、最小負荷サーバ・ナンバーnに上記調査を行ったサーバ・コンポーネントの候補番号すなわちcの値を格納する(ステップ1407)。こののち、RPCドライバ102は、カウンタ用変数cの値を1増やし(ステップ1408)、最後の候補まで負荷の調査が終わったかどうかを調べ(ステップ1409)、まだの場合には、ステップ1403〜1409を繰り返す。
【0100】
このようにして、最小の負荷であったサーバ・コンポーネントの候補番号がn格納領域に保持されるので、RPCドライバ102は、n格納領域に保持された候補番号で示されるサーバ・コンポーネントを選択し処理を終了する(ステップ1410)。
【0101】
この方法によれば、負荷の小さな情報処理装置上のサーバ・コンポーネントを選択できるので、負荷が一台の情報処理装置に集中することを回避でき、高速に処理を実行できる。なお、負荷情報通知手段を、各サーバ・コンポーネントごとに設けてもよい。この場合、ステップ1403における問い合わせは、候補となったサーバ・コンポーネントごとに行なわれる。このようにすれば、情報処理装置全体ではなく、各サーバ・コンポーネントの負荷状態に応じて使用するサーバ・コンポーネントを決定することができる。
【0102】
(4)応答時間による選択
第四の選択方法は、各ゲートウェイサーバ情報処理装置130からの応答時間をもとに選択する方法である。この方法を用いる場合は、各RPCドライバ102の記憶領域(図示せず)に、サーバ・コンポーネント(アクセス管理コンポーネント112vまたはSQL変換手段115)の候補の数(Nとする)の格納領域、カウンタ用変数(cとする)の格納領域、最小応答時間サーバ・ナンバー記憶変数(nとする)格納領域、最小応答時間記憶変数(RMINとする)格納領域、および応答時間(Rとする)格納領域を備える。この第四の方法による選択処理の手順を図15に示す。
【0103】
RPCドライバ102は、サーバ・コンポーネント候補数N格納領域、カウンタ用変数c格納領域、最小応答時間サーバ・ナンバー記憶変数n格納領域、および最小応答時間記憶変数RMIN格納領域を初期化する(ステップ1501)。なお、ステップ1501における初期化とは、各格納領域に初期値を格納することであり、本実施例2では、サーバ・コンポーネント候補数Nの初期値は、通知された候補数、カウンタ用変数cおよび最小負荷サーバ・ナンバー記憶変数nの初期値はそれぞれ1、最小応答時間記憶変数RMINの初期値は100である。
【0104】
つぎに、RPCドライバ102は、サーバ・コンポーネント候補が複数かどうかを調べ、1個だけなら応答時間を調べる必要がないのでステップ1510に制御を移す(ステップ1502)。
【0105】
サーバ・コンポーネント候補が複数の場合には、RPCドライバ102は、c番目の候補のサーバ・コンポーネントに応答時間計測のためのダミーのRPCを発行し(ステップ1503)、このRPCに対する応答時間を変数R格納領域に格納する(ステップ1504)。
【0106】
次に、RPCドライバ102は、それまでに調べた他のサーバ・コンポーネントの応答時間の最小値RMINと変数Rとを比較し(ステップ1505)、変数Rの方が小さければRMINにRの値を格納する(ステップ1506)。こののち、RPCドライバ102は、最小応答時間サーバ・ナンバーnに前記調査を行ったサーバ・コンポーネントの候補番号すなわちcの値を格納して(ステップ1507)、カウンタ用変数cを1増やす(ステップ1508)。さらに、RPCドライバ102は、最後の候補まで応答時間の調査が終わったかどうかを調べ(ステップ1509)、まだの場合にはステップ1503〜1509を繰り返す。
【0107】
このようにして、すべての候補の調査が終わると(ステップ1509)、最小の応答時間であったサーバ・コンポーネントの候補番号がn格納領域に保持されていることになるので、RPCドライバ102は、候補番号nで示されるサーバ・コンポーネントを選択し、処理を終了する(ステップ1510)。
【0108】
上述の応答時間は、サーバ・コンポーネントが搭載された情報処理装置の性能および負荷状態、該情報処理装置までの通信経路の距離、通信経路の混み具合などを反映したものであるので、応答時間が最小のサーバ・コンポーネントを採用することによって、最適な処理を行うことができる。
【0109】
(5)ブロードキャスト通信を用いた応答時間による選択
応答時間によるサーバ・コンポーネントの選択は、ブロードキャスト通信を使うことによって、上述した第四の方法よりも簡単に行うこともできる。この方法を用いる場合、各サーバ・コンポーネントは、処理可能なサーバ・コンポーネントを募集するブロードキャストRPCに対して応答する手段(図示せず)を備える。この方法での選択処理の手順を図16に示す。なお、上記応答する手段は、該手段の存在する各情報処理装置の、主記憶装置1001上に保持されたインストラクションを、CPUが実行することにより実現される。
【0110】
まず、RPCドライバ102は、処理可能なサーバ・コンポーネントを募集するブロードキャストRPCを発行し(ステップ1601)、応答を待つ(ステップ1602)。このブロードキャストRPCに対する応答には、応答したサーバ・コンポーネントに関する情報が含まれているので、最初に応答があった時点で、RPCドライバ102は、その応答から応答したサーバ・コンポーネントのサーバ名を取得し(ステップ1603)、該サーバ・コンポーネントを実際に処理を依頼するサーバとして採用して、処理を終了する(ステップ1690)。
【0111】
なお、二番目以降に応答したサーバ・コンポーネントは無視される。このように、ブロードキャストRPCを用いて処理を依頼するサーバ・コンポーネントを選択することによって、第四の方法として説明した応答時間を比較する方法と同様、サーバ・コンポーネントが搭載された情報処理装置の性能および負荷状態、該情報処理装置までの通信経路の距離、通信経路の混み具合などを反映した選択が行える。なお、このブロードキャストRPCはネットワークに接続されたすべてのサーバに対して発行されるが、マルチキャストRPCを用いればネームサーバ151から得たサーバ・コンポーネントの候補だけに発行することもできる。
【0112】
さらに、上記の応答時間のいずれかまたは両方による選択操作を複数回実施し、複数回の平均応答時間が最も短かったサーバ・コンポーネントを選ぶようにすれば、一時的なネットワークの混み具合の変化などによる影響を防止し、より最適なサーバ・コンポーネントの選択を行うことができる。
【0113】
(6)応答時間と負荷状況とによる選択
また、サーバ・コンポーネントがブロードキャストRPCまたはマルチキャストRPCに対する応答時間を、該サーバ・コンポーネントが搭載されている情報処理装置の負荷状況に応じて変化させることで、(5)に記述したブロードキャスト通信またはマルチキャスト通信によるサーバ・コンポーネントの選択を、より最適に行うことができる。図20を用いて、この方法によるサーバ・コンポーネントの処理手順を説明する。なお、この方法を用いる場合は、各サーバ・コンポーネントのブロードキャスト通信に対する応答手段は、該サーバ・コンポーネントのあるサーバ情報処理装置の負荷状態を数値化したものである変数(Lとする)の格納領域を備える。
【0114】
まず、サーバ・コンポーネントのブロードキャスト通信に対する応答手段は、受信したブロードキャスト・パケットがサーバ・コンポーネントの処理対象かどうかを調べ、処理対象でなければ処理を終了する(ステップ2001)。処理対象であれば、応答手段は、サーバ・コンポーネントが搭載されている情報処理装置の負荷状態を調べ(ステップ2002)、負荷状態を数値化したものを変数Lに代入する(ステップ2003)。つぎに、応答手段は、変数Lを0になるまでカウントダウンしながら(ステップ2004)、負荷値に比例した時間だけ次の処理への移行を遅延させる(ステップ2005)。該遅延処理(ステップ2004,2005)の後、応答手段は、処理可能であることを示す応答パケットを処理を募集したクライアント・コンポーネントに発行し(ステップ2006)、ブロードキャスト・パケットの受信処理を終了する(ステップ2090)。
【0115】
このようにして、クライアント・コンポーネント(RPCドライバ102)からのブロードキャスト通信を用いた募集に対して、各サーバ・コンポーネントは、該サーバ・コンポーネントが搭載された情報処理装置の負荷状態に比例した遅延時間の後、該サーバ・コンポーネントが処理可能であることを示す応答パケットを発行する。これによって、(5)と同様に、RPCドライバ102が、最も早く応答したサーバ・コンポーネントを選択すれば、負荷状態が最も軽い情報処理装置上のサーバ・コンポーネントを選択することができる。
【0116】
以上述べた(1)〜(6)の各選択方法は、単独で用いてもよいし、組み合わせて使用してもよい。また、これらの選択手段をネームサーバ151に具備し、複数候補がある場合にはそのうちの一つを選択してもよいし、優先順位を付けてネームサーバ151への問い合わせ元に返答するようにしてもよい。
【0117】
本実施例2では、アクセス管理手段が搭載されたすべての情報処理装置上に、かならずしもすべての種類のDBMSに対応したSQL変換手段を搭載しなくてもよく、どれかの情報処理装置上に必要な種類のSQL変換手段を用意して置けばよいので、導入、保守が容易であるという効果がある。
【0118】
また、本実施例2では、アクセス管理コンポーネントとSQL変換手段とは、複数の情報処理装置上に置くことができ、第一の情報処理装置上のアクセス管理コンポーネントから他の情報処理装置上のSQL変換手段へRPCによる処理依頼を行うこともできる。これによって、処理負荷を複数の情報処理装置に分散できる。
【0119】
(実施例3)
本実施例3では、実施例1においてゲートウェイ情報処理装置130上で動作していたSQL変換手段A115a、SQL変換手段B115bを、それぞれサーバ情報処理装置120a、120bに設けた。本実施例3でも、すでに説明した実施例と同様に、SQL変換手段A115a、SQL変換手段B115bへのインタフェースはRPCを用いている。これにより、各サーバ・コンポーネントに実施例1と同じものを用いたまま、図1に示した実施例1の異種データベースアクセスシステムの構成を、図6に示した本実施例3の異種データベースアクセスシステムの構成に変更することができる。本実施例3においては、各サーバ情報処理装置120a、120bがそれぞれSQL変換手段A115a、SQL変換手段B115bを具備するので、ゲートウェイ情報処理装置130を介さなくても単一のSQL仕様で、異なるSQL仕様を持つDBMS_A121a、DBMS_B121bにアクセスすることができる。
【0120】
本実施例3では、クライアント情報処理装置110上のRPCドライバ102は、アプリケーション・ソフトウェア実行手段111から発行されるSQLをRPCのパラメータとして、各DBMS121a,bを介してデータベースをアクセスするSQL_API処理手段700を備える。
【0121】
SQL_API処理手段700の処理を図7に示す。まず、SQL_API処理手段700は、アプリケーション・ソフトウェア実行手段111から発行されたSQL文を受け付けると、該SQL文を解析し、アクセス先のDBMS情報を得る(ステップ701)。つぎに、SQL_API処理手段700は、該アクセス先がDBMS_A121aとDBMS_B121bの両方か、DBMS_A121aだけか、DBMS_B121bだけかをそれぞれ判断する(ステップ702、703、704)。
【0122】
SQL_API処理手段700は、アクセス先がDBMS_A121aとDBMS_B121bとの両方の場合は、処理対象のSQL文をパラメータとするSQL_RPCを発行する(ステップ706)。このSQL_RPCは、ゲートウェイ情報処理装置130のアクセス管理コンポーネント112vに送られ、そこで実施例1の場合と同様に処理される。
【0123】
一方、アクセス先がDBMS_A121aおよびDBMS_B121bのいずれか一方のみであった場合、SQL_API処理手段700は、SQL_A_RPC(ステップ707)、または、SQL_B_RPC(ステップ708)を発行し、ゲートウェイ情報処理装置130を介すること無くDBMS_A121aまたはDBMS_B121bをアクセスする。
【0124】
指定されたアクセス先がDBMS_A121aおよびDBMS_B121bのいずれでもない場合、SQL_API処理手段700は、エラーコードをセットして(ステップ705)、処理を終了する(ステップ709)。
【0125】
このように、本実施例3では、ゲートウェイ情報処理装置130は、DBMS_A121aおよびDBMS_B121bの両方に同時にアクセスすることを指示するSQL文を処理する場合にのみ使用され、いずれか一方のDBMSに対するアクセスを指示するSQL文を処理する場合には、SQL_API処理手段700が、ゲートウェイ情報処理装置130を介することなく、直接指定されたDBMSをアクセスする。これにより、本実施例3では、ゲートウェイ情報処理装置130を介することによって生じる性能低下を低減することができる。
【0126】
また、本実施例3によれば、ターゲットDBMSが明確でしかも単一の場合には、ユーザー・アプリケーション・ソフトウェアから、アクセス管理コンポーネントを介すること無く直接SQL変換手段へアクセスすることができるので、オーバーヘッドを低減することができる。
【0127】
なお、本実施例のSQL_API処理手段700は、実施例1にも適用できる。これにより、ターゲットDBMSが明確で、しかも単一の場合には、実施例1においても、アクセス管理コンポーネントを介することなく、直接SQL変換手段をアクセスでき、オーバヘッドを低減することができる。
【0128】
(実施例4)
上述の実施例1〜3では、任意のSQL仕様のアプリケーション・ソフトウェア実行手段111からの、種々のSQL仕様の複数のDBMSへのアクセスを実現する例を示したが、本実施例4では、種々の異なるSQL仕様を用いたアプリケーション・ソフトウェア実行手段111からのDBMSへのアクセスを実現する。
【0129】
図8に本実施例4の異種データベースアクセスシステムの構成を示す。本実施例4では、図8に示したように、図1で示した実施例1の異種データベースアクセスシステムの構成に対して、クライアント情報処理装置110rと、ゲートウェイ情報処理装置130上の非標準SQL変換手段115rとを追加した。クライアント情報処理装置110rは、クライアント情報処理装置110と同様の構成を有しているが、標準SQL仕様のアプリケーション・ソフトウェア実行手段111の代わりに、非標準のSQL仕様のアプリケーション・ソフトウェアR実行手段111rを備える。また、非標準SQL変換手段115rは非標準のSQLを標準のSQLに変換する手段である。
【0130】
アプリケーション・ソフトウェア実行手段111rから発行される非標準仕様のSQL文を含むRPC(以下SQL_r_RPCと呼ぶ)は、RPCドライバ102によって、LANドライバ123およびLAN100を介して、ゲートウェイ情報処理装置130の非標準SQL変換手段115rに送られ、処理される。非標準SQL変換手段115rによって非標準SQLから標準SQLへと変換されたSQL文は、アクセス管理コンポーネント112vにRPCのパラメータとして送られる。以後の処理は実施例1と同様であり、SQL変換手段115でターゲットDBMSの仕様のSQLに変換された後、そのSQL文によりDBMSがアクセスされ、結果がアプリケーション・ソフトウェア実行手段111rに返される。
【0131】
このように、本実施例4によれば、非標準SQLから標準SQLに変換するコンポーネントを設けることによって、各種のSQL仕様を用いたアプリケーション・ソフトウェア実行手段111rから、該アプリケーション・ソフトウェア実行手段111rとは別のSQL仕様のDBMSをアクセスすることができる。
【0132】
(実施例5)
つぎに、あるDBMS専用に構築されたクライアント情報処理装置のプログラム構成を全く変更する事なく、該DBMSとは異なるSQL仕様、通信プロトコル仕様のDBMSをアクセスすることのできる異種データベースアクセスシステムについて説明する。
【0133】
A.構成例
本実施例5では、ネットワーク100にRPCを用いたクライアントとRPCを用いないクライアントの両方が接続される。本実施例5では、図11に示す異種データベースアクセスシステムの構成のように、図1で示した実施例1の異種データベースアクセスシステムの構成に対して、クライアント情報処理装置110aと、ゲートウェイ情報処理装置130上の非標準SQL変換手段RA115raとを追加した。
【0134】
クライアント情報処理装置110aは、アプリケーション・ソフトウェアA実行手段111aと、データベースドライバA122aと、LANドライバ123とを備える。アプリケーション・ソフトウェアA実行手段111aは、非標準SQL仕様のソフトウェア実行手段であり、非標準のSQL文を発行して、応答を受け取る機能を有する。クライアント情報処理装置110aのデータベースドライバA122aは、アプリケーション・ソフトウェアA実行手段111aの発行した非標準のSQL文を、ゲートウェイ情報処理装置130のデータベース・ドライバA122aに通知する。なお、データベース・ドライバA122aは、DBMS_A121aと同じSQL仕様である。
【0135】
一方、ゲートウェイ情報処理装置130の非標準SQL変換手段RA115raは、入力された非標準SQL文を、標準SQL文に変換して、ゲートウェイ情報処理装置130のRPCドライバ102に出力する非標準SQL変換手段である。
【0136】
B.作用
本実施例5では、一旦、データベース・ドライバ122aおよび非標準SQL変換手段RA115raを介して変換された標準SQL文を、ゲートウェイ情報処理装置130のRPCドライバ102に送ることで、アプリケーション・ソフトウェアA実行手段111aの発行したSQL文によるデータベース・アクセスが行なわれる。
【0137】
アプリケーション・ソフトウェアA実行手段111aから発行されるDBMS_A121aの仕様、すなわち非標準仕様のSQL文は、データベース・ドライバ122aにより、LANドライバ123およびLAN100を介してゲートウェイ情報処理装置130上の非標準SQL変換手段RA115raに送られ、処理される。非標準SQL変換手段RA115raは、通知された非標準SQL文を標準SQLへ変換し、アクセス管理コンポーネント112vにRPCのパラメータとして通知する。以後の処理は実施例1と同様であり、SQL変換手段115でターゲットDBMSの仕様のSQLに変換された後、そのSQL文によりDBMSがアクセスされ、結果がアプリケーション・ソフトウェア実行手段111rに返される。
【0138】
このように、本実施例5では、非標準から標準へのSQL変換手段を実施例1のシステムに追加する事によって、あるDBMS固有の非標準SQLおよび非標準データベース・ドライバを用いて、あるDBMS専用に構築されたクライアント情報処理装置のプログラム構成を全く変更する事なく、該DBMSとは異なるSQL仕様、通信プロトコル仕様のDBMSをアクセスする事ができる。
【0139】
なお、本実施例5ではクライアント情報処理装置110aとゲートウェイ情報処理装置130との接続をデータベース・ドライバ_A122aを用いて行ったが、このドライバが上述のRPCとは異なる仕様のRPCを用いていてもよい。
【0140】
C.適用例
ネットワーク100に、互いに異なる仕様を有するデータベース管理システムを備える2つの既存のシステム600aと600bとが接続されているネットワーク100に本実施例5の異種データベースアクセスシステムを適用する場合の例を、図19を用いて説明する。
【0141】
システム600aは、DBMS_Aを用いたサーバ情報処理装置121aとDBMS_A専用のデータベースドライバA、アプリケーション・ソフトウェア実行手段Aが搭載されたクライアント情報処理装置110aから構成される。また、システム600bは、DBMS_Bを用いたサーバ情報処理装置121bとDBMS_B専用のデータベースドライバB、アプリケーション・ソフトウェアBが搭載されたクライアント情報処理装置110bから構成される。
【0142】
これらの既存のシステム600a,600bに、上述のゲートウェイ情報処理装置130と、ネームサーバ情報処理装置150とを備える付加システム500を付加することによって、既存のシステム600a、600bの構成を何等変更することなくクライアント情報処理装置110aから、サーバ情報処理装置121bに搭載された前記クライアント情報処理装置110aとはSQL仕様の異なるDBMS_Bをにアクセスすることができる。
【0143】
(実施例6)
A.異種データベース・アクセス・システムの構成
次に、アプリケーション・ソフトウェア実行手段111が種々の文字コードセットを使用可能なデータベース・アクセス・システムを実現する実施例を図38を用いて説明する。本実施例6の異種データベースアクセスシステムの構成は、図1に示した実施例1の構成と同様である。なお、本実施例6では、アクセス管理コンポーネント112vは、SQL文を解析するSQL文解析部381を備える。また、SQL変換手段115は、SQL文を変換するSQL文変換部382を備える。アクセス管理コンポーネント112vのSQL文解析部、SQL変換手段115のSQL文変換部で扱える文字コードセットはJISコードとする。
【0144】
B.SQL_RPCの処理
本実施例6における、アプリケーション・ソフトウェア実行手段111の発行したSQL_RPCが処理される手順を、図21に示す。
【0145】
(1)RPCドライバ102の処理
アプリケーション・ソフトウェア実行手段111がSQL_RPCを発行すると、クライアント情報処理装置110のRPCドライバ102は、まず、データベースへの接続文かどうかを判定し(ステップ2161)、接続文であった場合には、ステップ2150とステップ2162を実行したのち、ステップ2151に処理を移し、接続文以外の文であった場合には、直接ステップ2151に処理を移す。
【0146】
ステップ2150では、RPCドライバ102は、ネームサーバ情報処理装置150上のネームサーバ151をアクセスし、処理対象のSQL_RPCを処理するサーバであるアクセス管理コンポーネント112vの物理位置すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を取得する。次に、RPCドライバ102は、ステップ2162で、アプリケーション・ソフトウェア実行手段111がSQL文に使用している文字コードセット名を、アクセス管理コンポーネント112vに送出する。なお、文字コードセット名を受け取ったアクセス管理コンポーネント112vは、ゲートウェイ情報処理装置130の記憶装置1001内の記憶領域383に、該入力文字コードセット名を格納する(ステップ2121)。
【0147】
最後に、RPCドライバ102は、アクセス管理コンポーネント112vとRPC接続を行い、SQL_RPCの処理をアクセス管理コンポーネント112vへ依頼する(ステップ2151)。
【0148】
(2)アクセス管理コンポーネント112vの処理
ステップ2101〜2111、2121〜2123、2140は、アクセス管理コンポーネント112vでの処理内容である。
【0149】
SQL_RPCの処理を依頼されたアクセス管理コンポーネント112vは、記憶領域383に保持された入力文字コードセット名を参照し、RPCドライバ102から通知されたSQL_RPCのパラメータとして送られてきたSQL文の文字コードを、JISコードに変換する(ステップ2123)。ただし、ステップ2121で通知された入力文字コードセット名がJISコードの場合は、変換は不要なので行わない。つぎに、アクセス管理コンポーネント112vは、文字コード変換を施したSQL文を解析し、アクセス先のテーブルが含まれるDBMSの名称を得る(ステップ2101)。
【0150】
この解析の結果、アクセス先がDBMS_A121aとDBMS_B121bとの両方であることを検出した場合(ステップ2102)、アクセス管理コンポーネント112vは、実施例1のステップ406と同様に、処理対象のSQL文を、DBMS_A121aに対するアクセスとDBMS_B121bに対するアクセスとに分割して2つのSQL文を作成する(ステップ2106)。この新たに作成したSQL文をパラメタとしたSQL_RPC(それぞれSQL_A_RPC、SQL_B_RPCと呼ぶ)を用い、アクセス管理コンポーネント112vは、ステップ2107でDBMS_A121aに、ステップ2108でDBMS_B121bに、それぞれアクセスする。これらのDBMS121a,bからの応答を受け付けると、アクセス管理コンポーネント112vは、前記ステップ2107、2108で得た結果をマージし、ステップ2106で分割する前のSQL文に対応する結果を作成する(ステップ2109)。
【0151】
アクセス先がDBMS_A121aおよびDBMS_B121bのいずれか一方であることを検出した場合(ステップ2103または2104)、アクセス管理コンポーネント112vは、ステップ2110または2111で、それぞれSQL文をパラメータとしたRPC(SQL_A_RPCまたはSQL_B_RPC)を発行し、アクセス結果を得る。
【0152】
なお、アクセス先がDBMS_A121aでもDBMS_B121bでもない場合、アクセス管理コンポーネント112vは、エラーコードをセットする(ステップ2105)。
【0153】
最後に、アクセス管理コンポーネント112vは、ステップ2109〜2111で得られたアクセス結果、あるいはステップ2105でセットされたエラーコードを、JISコードから、記憶領域383に保持された入力文字コードセット名の示す文字コードに変換し(ステップ2140)、実施例1のステップ412と同様に、リモート・プロシージャ・コールのリターン値としてアプリケーション・ソフトウェア実行手段111に返して、SQL_RPCを終了する(ステップ2112)。
【0154】
(3)SQL_x_RPCの処理(ステップ2107〜2108、2110〜2111)
SQL_A_RPCまたはSQL_B_RPCの処理の流れを図22に示す。なお、SQL_A_RPCの処理とSQL_B_RPCの処理とは、その手順が同一であるので、ここでは、これらをまとめてSQL_x_RPCとして説明する。また、SQL_x_RPCを処理するサーバであるSQL変換手段A115aとSQL変換手段B115bをまとめてSQL変換手段115と呼ぶ。
【0155】
SQL_x_RPCが通知されると、ゲートウェィ情報処理装置130のRPCドライバ102は、まず、データベースへの接続文かどうかを判定し(ステップ2261)、接続文であった場合にはネームサーバ情報処理装置150上のネームサーバ151をアクセスして、SQL変換手段115の物理位置すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を取得する(ステップ2250)。
【0156】
次に、RPCドライバ102は、アクセス管理コンポーネント112vの出力文字コードセット名である”JIS”(本実施例6では、アクセス管理コンポーネント112vの入出力に用いられる文字コードは、JISコードであると、あらかじめ定められている)を、SQL変換手段115に送出する(ステップ2262)。これを受け付けたSQL変換手段115は、これを入力文字コードセット名として記憶装置1001の記憶領域384に格納する(ステップ2221)。
【0157】
最後に、RPCドライバ102は、SQL変換手段115とRPC接続を行い、SQL_x_RPCの処理をSQL変換手段115へ依頼する(ステップ2202)。
【0158】
ステップ2222〜2240は、SQL変換手段115での処理内容である。依頼されたSQL変換手段115は、まず、RPCのパラメータとして送られてきたSQL文の文字コードを、JISコードに変換するとともに、データベース・ドライバ122が文字コードセット名を得るために参照する環境変数に、変換後の文字コードセットであるJISを、該データベース・ドライバ122が定めた表現形式で格納する(ステップ2222)。
【0159】
ただし、本実施例6では、入力文字コードセット名は”JIS”であり、変換は不要なので行わずに、データベース・ドライバ122の該環境変数に、入力文字コードセット名を格納する。このステップは、実施例2で示したように、アクセス管理コンポーネント112vが、異なるゲートウェイ情報処理装置130のSQL変換手段115をアクセスする場合、もしくは、実施例3で示したように、アクセス管理コンポーネント112v介さずにアプリケーション・ソフトウェア実行手段111からSQL変換手段115をアクセスする場合に有効である。
【0160】
次に、SQL変換手段115は、RPCのパラメータとして受け取った標準仕様のSQL文を、ターゲットDBMSのSQL仕様に変換(ステップ2223)したのち、変換によって作成したSQL文をターゲットDBMSに送り、ターゲットDBMSからのSQL文の実行結果の通知を得る(ステップ2224)。
【0161】
ステップ2224で実行結果として得たデータおよびリターンコードを、SQL変換手段115は、ターゲットDBMSのSQL仕様から標準のSQL仕様に変換し(ステップ2225)、さらに、該変換結果を、ステップ2221で記憶領域384に格納した入力文字コードセット名で示される文字コードに変換する(ステップ2240)。最後に、SQL変換手段115は、変換して得られた結果を、リターンデータ、リターンコードとしてアクセス管理コンポーネント112vに通知して、SQL_x_RPCの処理を終了する(ステップ2206)。
【0162】
C.本実施例6の効果
以上のようにして、本実施例6では、アプリケーション・ソフトウェア実行手段111は、アクセス管理コンポーネント112v、SQL変換手段115、DBMS_x121a,bが内部でどの様な文字コードセットを用いて処理するかを意識することなく、データベースへのアクセスを行うことができる。また、文字コードセット名の指定方法が各DBMSのデータベース・ドライバ毎に異なることを意識する必要もない。
【0163】
なお、本実施例6では、アクセス管理コンポーネント112vのSQL文解析部、SQL変換手段115のSQL文変換部で扱える文字コードセットはJISコードとしたが、他の文字コードセットであってもよい。また、実施例2の第1および/または第2の選択手段をRPCドライバ102に設けてもよい。
【0164】
さらに、文字コードセット名だけでなく、エラーメッセージなどに使用する言語や、データベースの検索結果の並び替えを行う際の文字コード順の指定についても、本実施例6の入力文字コードセット名と同様に、クライアント情報処理装置110のRPCドライバ102とアクセス管理コンポーネント112vとの間で授受するようにすれば、それらの相違を意識することなく、データベースへのアクセスを行うことができる。
【0165】
図30に、言語、文字コードセット、並び替えコードを設定する環境変数の一例を示す。環境変数群3001はアプリケーション・ソフトウェア実行手段111の環境変数の例であり、環境変数群3002はアクセス管理コンポーネント112vの環境変数の例であり、環境変数群3003はSQL変換手段115とDBMS121a,bのプロセスの環境変数の例である。
【0166】
環境変数群3001〜3003において、SQL_LANGは使用言語の種別を示す変数名であり、SQL_CHARACTERは使用する文字コードセットを示す変数名、SQL_COLLATEは、並び替えコードを示す変数名である。本実施例6では、アプリケーション・ソフトウェア実行手段111、アクセス管理コンポーネント112v、SQL変換手段115とも、使用言語は日本語(「JAPANESE」)である。また、アプリケーション・ソフトウェア実行手段111では、文字コードセットおよび並び替えコードは「SJIS」である。一方、アクセス管理コンポーネント112vおよびSQL変換手段115の文字コードセットおよび並び替えコードは「JIS」である。
【0167】
環境変数群3003において、DB_LANGはデータベース・ドライバ122が参照する、使用言語の種別(DBMS121a,bが使用する言語の種別)を示す環境変数名である。また、DBMS121a,bの使用する文字コードセットは、環境変数名DB_CHARACTERの変数により示される。さらに、DBMS121a,bの使用する並び替えコードは環境変数名DB_COLLATEの変数により示される。本実施例6では、DBMS121a,bが使用する言語は日本語(「JAPANESE」)である。また、DBMS121a,bの使用する文字コードセットおよび並び替えコードは「JIS」である。
【0168】
(実施例7)
次に、データベースへのアクセス依頼をユーザーが設定した時間で打ち切るための機能を実施例1に付加した実施例を説明する。図36に、本実施例7の異種データベース・アクセス・システムの構成を示す。本実施例7の異種データベース・アクセス・システムは、図1に示した実施例1のシステムと同様の構成を備えているが、本実施例7では、図36に示すように、クライアント情報処理装置110およびゲートウェイ情報処理装置130の両方の主記憶装置1001に、SQLタイムアウト時間を保持するための格納領域250,251を、それぞれ備えている。また、本実施例7のクライアント情報処理装置110のRPCドライバ102は、計時のためのタイムアウトカウンタ252を備える。さらに、ゲートウェイ情報処理装置130のRPCドライバ102も、計時のためのタイムアウトカウンタ253を備える。
【0169】
A.SQL_RPCの処理の流れ
本実施例7におけるSQL_RPCの処理を図25に示す。本実施例7では、実施例1と同様、クライアント情報処理装置110上のアプリケーション・ソフトウェア111から発行されたSQL_RPCは、クライアント情報処理装置110のRPCドライバ102によりゲートウェイ情報処理装置130上のアクセス管理コンポーネント112vに通知され、アクセス管理コンポーネント112vによって処理される。
【0170】
しかし、本実施例7では、実施例1とは異なり、クライアント情報処理装置110のRPCドライバ102は、RPCを用いてアクセス管理コンポーネント112vにSQL_RPCの処理を依頼してから、あらかじめ定められたSQLタイムアウト時間が経過しても、応答を受け取らない場合、処理を打ち切ってエラーとする。なお、本実施例7では、SQLタイムアウト時間は、クライアント情報処理装置110の主記憶装置1001の格納領域250にあらかじめ格納され、保持されている。
【0171】
まず、アプリケーション・ソフトウェア111が発行するSQL_RPCを受け付けたクライアント情報処理装置110のRPCドライバ102は、DBMSへの接続文かどうかを判定し(ステップ2561)、接続文であった場合はステップ2550とステップ2562を実行してからステップ2553を実行し、接続文以外の文であった場合には、直接ステップ2553を実行する。
【0172】
ステップ2550では、RPCドライバ102は、ネームサーバ情報処理装置150上のネームサーバ151をアクセスし、処理対象のSQL_RPCを処理するサーバであるアクセス管理コンポーネント112vの物理位置すなわちネットワーク・アドレスとサーバ・コンポーネントのポート番号を取得する。次に、RPCドライバ102は、ステップ2562で、クライアント情報処理装置110上の記憶装置の格納領域250に保持されているSQLタイムアウト時間を、アクセス管理コンポーネント112vに送出する。このSQLタイムアウト時間を受信したアクセス管理コンポーネント112vは、受け付けたSQLタイムアウト時間を、ゲートウェイ情報処理装置130の格納領域251に格納する(ステップ2501)。
【0173】
次に、RPCドライバ102は、RPC実行スレッドを起動する(ステップ2553)。ここでスレッドとは、プロセス内の処理をさらに分割し、時分割によって並行処理を行う処理単位のことである。起動されたRPC実行スレッドは、アクセス管理コンポーネント112vとRPC接続を行い、前記SQL_RPCの処理を該アクセス管理コンポーネント112vへ依頼する(ステップ2580)。
【0174】
ステップ2501〜2504は、アクセス管理コンポーネント112vでの処理である。実施例1における図4で説明した処理と同様に、本実施例7のアクセス管理コンポーネント112vは、処理依頼を受けると、SQL文解析(ステップ2502)、SQL_x_RPC発行(ステップ2503)等の処理を行い、処理結果を依頼元のRPC実行スレッドを起動したRPCドライバ102(親スレッド)に通知して、依頼元のRPC実行スレッドに終了を通知したのち、RPCの処理を終了する(ステップ2504)。
【0175】
ステップ2580で処理を依頼したRPC実行スレッドは、アクセス管理コンポーネント112vの終了信号(ステップ2504)を受信するまで、待ち状態となっており、終了の通知を受けると、スレッドを終了する(ステップ2585)。
【0176】
一方、ステップ2553でRPC実行スレッドを起動した親スレッドは、タイムアウトカウンタ252を初期化した後(ステップ2554)、タイムアウトカウンタ252をカウントアップし(ステップ2555)、タイムアウトカウンタ252の保持する値が、SQLタイムアウト時間格納領域250の保持する値を超えているかどうかチェックし(ステップ2556)、超えていなければ、さらにRPC実行スレッドがすでに終了しているかどうかチェックする(ステップ2557)。
【0177】
RPC実行スレッドがまだ終了していないときは、親スレッドは処理をステップ2555に戻し、タイムアウトカウンタのカウントアップと、経過時間のチェックを繰り返す。なお、本実施例7では、RPC実行スレッドが起動されると、クライアント情報処理装置110の主記憶装置1001にあらかじめ定められた識別情報を格納し、RPC実行スレッドは、終了時(ステップ2585)に、該識別情報を削除する。ステップ2557におけるRPC実行スレッドの終了チェックは、該識別情報がクライアント情報処理装置110の記憶装置に保持されているかどうか確認することにより行なわれる。
【0178】
ステップ2556でのタイムアウトチェックの結果、タイムアウトと判定した場合には、親スレッドは、エラーコードをあらかじめ定められた領域に格納し(ステップ2559)、SQL_RPCの処理を終了する(ステップ2560)。なお、エラーコード設定(ステップ2559)の際、本実施例7では、親スレッドは、RPC実行スレッドとアクセス管理コンポーネント112vとの接続を切り、RPC実行スレッドを終了させる。
【0179】
また、ステップ2557でのRPC実行スレッド終了チェックの結果、終了したと判定した場合には、実行結果をあらかじめ定められた領域に格納し(ステップ2558)、SQL_RPCの処理を終了する(ステップ2560)。
【0180】
B.SQL_x_RPCの処理(ステップ2503)
図26に、本実施例7においてアクセス管理コンポーネント112vが発行するSQL_x_RPCの処理を示す。本実施例7では、アクセス管理コンポーネント112vにより依頼される、SQL変換コンポーネント115のSQL_RPCの処理についても、あらかじめ定められた時間内に処理が行なわれなければ、処理を打ち切り、エラーとするようにした。
【0181】
処理の手順は、上述のSQL_RPCの処理の場合と同様であるが、SQL_x_RPCの処理では、上述のステップ2501(図25に図示)で格納領域251に格納された値が、SQLタイムアウト時間として用いられる。
【0182】
まず、アクセス管理コンポーネント112vが発行するSQL_x_RPCを受け付けたゲートウェイ情報処理装置130のRPCドライバ102は、DBMSへの接続文かどうかを判定し(ステップ2661)、接続文であった場合はステップ2650を実行してからステップ2653を実行し、接続文以外の文であった場合には、直接ステップ2653を実行する。
【0183】
ステップ2650では、RPCドライバ102は、ネームサーバ情報処理装置150上のネームサーバ151をアクセスし、処理対象のSQL_x_RPCを処理するSQL変換手段115の物理位置(ネットワーク・アドレスおよびポート番号)を取得する。
【0184】
次に、RPCドライバ102は、RPC実行スレッドを起動する(ステップ2653)。起動されたRPC実行スレッドは、SQL変換手段115とRPC接続を行い、SQL_x_RPCの処理を該SQL変換手段115へ依頼する(ステップ2680)。
【0185】
ステップ2602〜2604は、SQL変換手段115の処理である。SQL変換手段115は、処理依頼を受けると、SQL文を解析し(ステップ2602)、DBMSへアクセスして、応答を受け取り(ステップ2603)、処理結果を依頼元のRPC実行スレッドを起動したRPCドライバ102(親スレッド)に通知して、依頼元のRPC実行スレッドに終了を通知したのち、処理を終了する(ステップ2604)。
【0186】
ステップ2680で処理を依頼したRPC実行スレッドは、SQL変換手段115の終了信号(ステップ2604)を受信するまで、待ち状態となっており、終了の通知を受けると、スレッドを終了する(ステップ2685)。
【0187】
一方、ステップ2653でRPC実行スレッドを起動した親スレッドは、タイムアウトカウンタ253を初期化した後(ステップ2654)、タイムアウトカウンタ253をカウントアップし(ステップ2655)、タイムアウトカウンタ253の保持する値が、SQLタイムアウト時間格納領域251の保持する値を超えているかどうかチェックし(ステップ2656)、超えていなければ、さらにRPC実行スレッドがすでに終了しているかどうかチェックする(ステップ2657)。
【0188】
RPC実行スレッドがまだ終了していないときは、親スレッドは処理をステップ2655に戻し、タイムアウトカウンタのカウントアップと、経過時間のチェックを繰り返す。なお、RPC実行スレッドが起動されると、ゲートウェイ情報処理装置130の主記憶装置1001にあらかじめ定められた識別情報を格納し、RPC実行スレッドは、終了時(ステップ2685)に、該識別情報を削除する。ステップ2657におけるRPC実行スレッドの終了チェックは、該識別情報が該記憶装置に保持されているかどうか確認することにより行なわれる。
【0189】
ステップ2656でのタイムアウトチェックの結果、タイムアウトと判定した場合には、親スレッドは、エラーコードをあらかじめ定められた領域に格納し(ステップ2659)、SQL_RPCの処理を終了する(ステップ2660)。なお、エラーコード設定(ステップ2659)の際、本実施例7では、親スレッドは、RPC実行スレッドとDBMSとの接続を切り、RPC実行スレッドを終了させる。
【0190】
また、ステップ2657でのRPC実行スレッド終了チェックの結果、終了したと判定した場合には、実行結果をあらかじめ定められた領域に格納し(ステップ2658)、SQL_x_RPCの処理を終了する(ステップ2660)。
【0191】
C.本実施例7の効果
以上説明したように、本実施例7によれば、タイムアウト値をアプリケーション・ソフトウェア111からアクセス管理コンポーネント112v、SQL変換手段115へとデータベースへの接続に先だって転送することによって、アプリケーション・ソフトウェア111が設定したSQLタイムアウト時間で、前記各コンポーネントでのRPC処理を打ち切ることができる。
【0192】
また、本実施例7によれば、アプリケーション・ソフトウェア実行手段がゲートウェイを介してデータベースにアクセスする場合にも、アプリケーション・ソフトウェア実行手段が動作するプロセスで設定されたデータベース・アクセス時の処理打ち切り時間が、ゲートウェイがデータベースへアクセスする際に参照するデータベース・アクセス処理打ち切り時間に反映させることができるので、アプリケーション・ソフトウェア実行手段側とゲートウェイ側で個別に打ち切り時間を設定する必要が無いという効果がある。
【0193】
なお、SQL変換手段115がDBMSをアクセスする際にも、タイムアウトチェックを同様な方法で行うようにしてもよい。この場合、RPCドライバ102は、ステップ2650実行後、ステップ2653実行前に、ゲートウェイ情報処理装置130の記憶装置の格納領域251に保持されているSQLタイムアウト時間を、SQL変換手段115に送出するようにし、このSQLタイムアウト時間を受信したSQL変換手段115は、受け付けたSQLタイムアウト時間を、ゲートウェイ情報処理装置130にSQL変換手段用SQLタイムアウト時間の格納領域として確保された格納領域に格納するようにする。このようにすれば、SQL変換手段115がDBMSをアクセスする際に、格納されたSQL変換手段用SQLタイムアウト時間を参照し、処理時間が該時間を超えると、エラーにするようにすれば、SQL変換手段115によるDBMSのアクセスについても、処理に制限時間を設けることができる。
【0194】
ところで、アプリケーション・ソフトウェア111から発行されたSQL_RPCは、図29に示すように、アクセス管理コンポーネント112v、SQL変換手段115、DBMS121での処理が入れ子になる形で実行される。したがって、各コンポーネントでのタイムアウトによる処理打ち切りが同時に発生すると、どのコンポーネントでの処理が原因で処理時間がタイムアウト値をオーバーしたかアプリケーション・ソフトウェア111が正しく認識できない。
【0195】
これを解決するためには、アクセス管理コンポーネント112vがステップ2501で受信したSQLタイムアウト時間から、一定時間を引いた時間をアクセス管理コンポーネント112vが使用するSQLタイムアウト時間として記憶すればよい。
【0196】
これによって、タイムアウトエラーを検出したコンポーネント(アクセス管理コンポーネント、またはSQL変換手段)よりもアプリケーション・ソフトウェア111に近い側のコンポーネントは、その検出の時点では、SQLタイムアウト時間に達しておらず、まだ処理を打ち切っていないので、タイムアウトエラーを検出したコンポーネントからのエラーコードを正しくアプリケーション・ソフトウェア111に伝えることができる。このようにすれば、処理が打ち切られた場合の、処理時間超過の原因箇所を容易に特定できる。
【0197】
なお、本実施例7のRPCドライバ102に、実施例2の第1および/または第2の選択手段を設けてもよい。また、各情報処理装置に外部記憶装置を備え、上述した、主記憶装置1001に備えられている各格納領域は、この外部記憶装置に設けてもよい。
【0198】
(実施例8)
つぎに、サーバおよびクライアントの障害を監視する実施例を説明する。本実施例8の異種データベース・アクセス・システムの構成を図37に示す。本実施例8の異種データベース・アクセス・システムは、実施例7とほぼ同様の構成を有する。ただし、本実施例8では、図37に示すように、クライアント情報処理装置110の主記憶装置1001は、SQLタイムアウト時間格納領域250に加えて、さらに、サーバチェック用RPCタイムアウト時間と、サーバチェック用RPCインターバル時間とをそれぞれ保持するための格納領域371、372を備え、同様に、ゲートウェイ情報処理装置130の主記憶装置1001は、SQLタイムアウト時間格納領域251に加えて、さらに、サーバチェック用RPCタイムアウト時間と、サーバチェック用RPCインターバル時間とをそれぞれ保持するための格納領域373、374を備える。また、本実施例8のクライアント情報処理装置110のRPCドライバ102は、タイムアウトカウンタ252に加えて、さらに、サーバチェック用RPCの発行間隔をカウントするためのインターバルタイマ375を備え、ゲートウェイ情報処理装置130のアクセス管理コンポーネント112vは、クライアントの稼働をチェックするタイミングを計るためのクライアントチェックタイマ376を、さらに備える。
【0199】
なお、本実施例8のRPCドライバ102に、実施例2の第1および/または第2の選択手段を設けてもよい。また、各情報処理装置に外部記憶装置を備え、上述した、主記憶装置1001に備えられている各格納領域は、この外部記憶装置に設けてもよい。
【0200】
A.SQL_RPCの処理の流れ
本実施例8におけるSQL_RPCの処理を図27に示す。本実施例8のクライアント情報処理装置110のRPCドライバ102は、アプリケーション・ソフトウェア111から発行されたSQL_RPCを受け付けると、まず、該SQL_RPCが、DBMSへの接続文かどうかを判定し(ステップ2751)、接続文であった場合にはステップ2752〜2754を実行した後、ステップ2790に制御を移し、接続文でなかった場合には直接ステップ2790に制御を移す。
【0201】
ステップ2752では、RPCドライバ102は、実施例7と同様に、アクセス管理コンポーネント112vの物理位置を取得する。ステップ2753では、RPCドライバ102は、実施例7で説明したSQLタイムアウト時間に加え、格納領域371にあらかじめ保持されたサーバチェック用RPCタイムアウト時間と、格納領域372にあらかじめ保持されたサーバチェック用RPCインターバル時間とを、アクセス管理コンポーネント112vに通知する。つぎに、クライアントのRPCドライバ102は、サーバチェック用スレッドを起動する(ステップ2754)。
【0202】
ステップ2753による通知を受けたアクセス管理コンポーネント112vは、SQLタイムアウト時間、サーバチェック用RPCタイムアウト時間、サーバチェック用RPCインターバル時間を、それぞれ、格納領域251、273、274に格納する(ステップ2701)。また、アクセス管理コンポーネント112vは、クライアントチェック用スレッドを起動する(ステップ2702)。
【0203】
一方、クライアント情報処理装置110のRPCドライバ102は、インターバルタイマ375を初期化したのち(ステップ2790)、SQL文がデータベースへの接続を切る切断文であるかどうかを調べ(ステップ2760)、切断文であった場合には、ステップ2754で起動したサーバチェック用スレッドを終了する(ステップ2761)。
【0204】
つぎに、RPCドライバ102は、実施例7と同様にRPC実行スレッドを起動する(ステップ2762)。ここで起動されたRPC実行スレッドは、アクセス管理コンポーネント112vにRPCを発行してその処理を依頼し(ステップ2780)、アクセス管理コンポーネント112vの処理終了通知を待つ。処理を依頼されたアクセス管理コンポーネント112v側のRPCサーバは、クライアントチェックタイマ376を初期化し(ステップ2703)、SQL文の解析を行う(ステップ2502)。
【0205】
なお、以上述べた処理の続き(ステップ2554〜2560、ステップ2585、ステップ2502〜2504)は、上述の実施例7における図25に図示した処理と同じである。
【0206】
B.サーバチェック用スレッドの処理
図28に、上述のステップ2754で起動され、ステップ2761で終了するサーバチェック用スレッドの処理を示す。
【0207】
サーバチェック用スレッドは、起動されると、まず、インターバルタイマ375を初期化して(ステップ2801)、インターバルタイマ375のカウントアップ(ステップ2802)と、インターバルタイマ375の保持する値が、格納領域372の保持するサーバチェック用RPCインターバル時間を超えたかどうかのチェック(ステップ2803)とを繰り返すことにより、インターバルタイマ375の値が、あらかじめ定められたサーバチェック用RPCインターバル時間に到達するまで待つ。
【0208】
サーバチェック用RPCインターバル時間に到達すると、サーバチェック用スレッドは、SQL_RPCの処理が実行中であるかどうか(すなわち、本実施例ではRPC実行スレッドが終了していないかどうか)を調べ(ステップ2890)、実行中であった場合には、ステップ2801に処理を戻す。実行中ではなかった場合は、サーバチェック用スレッドは、サーバチェック用RPC実行スレッドを起動する(ステップ2804)。
【0209】
起動されたサーバチェック用RPC実行スレッドは、アクセス管理コンポーネント112vに対しサーバチェック用RPCを発行し、応答を待つ(ステップ2850)。なお、このサーバチェック用RPCは、RPCサーバであるアクセス管理コンポーネント112vに障害がないかを確認するための、あらかじめ定められた単純な指示のRPCである。サーバチェック用RPCのアクセス管理コンポーネント112vによる処理が終了すると、サーバチェック用RPC実行スレッドは、サーバチェック用RPC終了メッセージを設定しスレッドを終了する(ステップ2851)。
【0210】
一方、ステップ2804でサーバチェック用RPC実行スレッドを起動した親スレッドは、タイムアウトカウンタ252を初期化した後(ステップ2805)、ステップ2806のタイムアウトカウンタカウントアップ、ステップ2807のタイムアウトチェック、ステップ2808のサーバチェック用RPC実行スレッドの終了チェックを、所定時間(サーバチェック用RPCタイムアウト時間)が経過するか、あるいは、サーバチェック用RPC実行スレッドが終了するまで繰り返し実行する。なお、ステップ2807でのタイムアウトチェックは、タイムアウトカウンタ252の値が格納領域371に保持されているサーバチェック用RPCタイムアウト時間に達したかどうかで判定される。また、ステップ2808のRPC終了チェックは、ステップ2851で設定される終了メッセージがすでに設定されているかどうかで判定される。
【0211】
ステップ2807でのタイムアウトチェックの結果、所定時間を経過した場合、サーバチェック用スレッドは、ステップ2820でエラーコードを設定し(ステップ2820)、スレッドを終了する(ステップ2821)。また、ステップ2808でのサーバチェック用RPC終了チェックの結果、サーバチェック用RPC実行スレッドが終了していた場合には、サーバチェック用スレッドは、処理をステップ2801に戻す。
【0212】
このようにすれば、DBMSに接続してから切断するまでの間、あらかじめ定められた一定時間(サーバチェック用RPCインターバル時間)ごとに、サーバの正常稼働を確認することができる。
【0213】
なお、本実施例8ではインターバルタイマ375を用いてサーバチェック用RPCを定期的に発行しているが、ステップ2890により、SQL_RPCの処理の実行とサーバチェック用RPCが競合した場合は、サーバチェック用RPCの発行を取りやめ、再びインターバルタイマ375を初期化(ステップ2801)して、計時を再実行するようになっている。
【0214】
さらに、インターバルタイマ375はSQL_RPCを、クライアントのRPCドライバ102が受け付ける毎に、ステップ2790(図27)で初期化される。従って、SQL_RPCとサーバチェック用RPCの何れかが一番最後に発行された時点から、サーバチェック用RPCインターバル時間内にSQL_RPCが発行されなかった場合に、サーバチェック用RPCを発行するように動作する。これによって、サーバチェック用RPCの発行回数を必要最小限とする事ができる。
【0215】
C.クライアントチェック用スレッドの処理
次に、ステップ2702(図27)で起動されたクライアントチェック用スレッド(クライアントチェック処理実行手段)の処理内容を図33を用いて説明する。
【0216】
クライアントチェック用スレッドは、起動されると、まず、クライアントチェックタイマ376を初期化し(ステップ3301)、SQL_RPCが処理中かどうかを調べ(ステップ3302)、処理中でなければ、クライアントチェックタイマ376をカウントアップする(ステップ3303)。
【0217】
つぎに、クライアントチェック用スレッドは、クライアントチェックタイマ376の保持する値が、タイムアウト時間に到達したかを調べ(ステップ3304)、達していないと判断した場合にはステップ3302に処理を戻す。なお、ここで、タイムアウト時間は、サーバチェック用RPCインターバル時間格納領域374に保持された値を基に設定された時間である。この時間は、インターバルタイマの精度、通信経路での遅延等を考慮すれば、サーバチェック用RPCインターバル時間の1.2倍から2倍の間の時間とするのが適切である。
【0218】
ステップ3304において、タイムアウト時間に達したと判断した場合には、クライアントチェック用スレッドは、エラー通知を行い(ステップ3305)、スレッドの終了処理を行う(ステップ3306)。
【0219】
D.サーバチェック用RPCのサーバ側での処理
図34に、サーバチェック用RPCのサーバ側での処理内容を示す。アクセス管理コンポーネント1112vは、ステップ2850において発行されたサーバチェック用RPCを受け付けると、クライアントチェックタイマ376を初期化し(ステップ3401)、終了通知をして処理を終了する(ステップ3490)。
【0220】
このクライアントチェックタイマ376の初期化(ステップ3401)は、すでに図27のステップ2703で示したように、SQL_RPCの処理においてSQL_RPCを受け付けた際にも行われる。したがって、クライアントチェックタイマ376によるタイムアウトチェックは、クライアントからサーバチェック用RPCまたはSQL_RPCの何れかが、タイムアウト時間内に発行されるかどうかを監視していることになる。
【0221】
E.アクセス管理コンポーネント112vとSQL変換手段115が相互に障害チェックを行う場合の処理
なお、以上の説明では、クライアントのRPCドライバ102と、アクセス管理コンポーネント112vが相互に障害チェックを行う例を示したが、アクセス管理コンポーネント112vとSQL変換手段115が相互に障害チェックを行う場合も図32に示すように全く同様に実現できる。この場合の処理の流れを、つぎに説明する。
【0222】
まず、アクセス管理コンポーネント112vは、クライアントのRPCドライバ102から通知されたSQL_RPCを受け付けると、該SQL_RPCが、DBMSへの接続文かどうかを判定し(ステップ3251)、接続文であった場合にはステップ3252〜3254を実行した後、ステップ3290に制御を移し、接続文でなかった場合には直接ステップ3290に制御を移す。
【0223】
ステップ3252では、アクセス管理コンポーネント112vは、SQL変換手段115の物理位置を取得する。ステップ3253では、アクセス管理コンポーネント112vは、格納領域251に保持されたSQLタイムアウト時間と、格納領域373に保持されたサーバチェック用RPCタイムアウト時間と、格納領域374に保持されたサーバチェック用RPCインターバル時間とを、SQL変換手段115に通知する。つぎに、アクセス管理コンポーネント112vは、サーバチェック用スレッドを起動する(ステップ3254)。
【0224】
ステップ3253による通知を受けたSQL変換手段115は、SQLタイムアウト時間、サーバチェック用RPCタイムアウト時間、サーバチェック用RPCインターバル時間を、それぞれ、格納領域(図示せず)に格納する(ステップ3201)。また、SQL変換手段115は、クライアントチェック用スレッド(アクセス管理手段チェック処理実行手段)を起動する(ステップ3202)。
【0225】
一方、アクセス管理コンポーネント112vは、インターバルタイマ375を初期化したのち(ステップ3290)、SQL文がデータベースへの接続を切る切断文であるかどうかを調べ(ステップ3260)、切断文であった場合には、ステップ3254で起動したサーバチェック用スレッドを終了する(ステップ3261)。
【0226】
つぎに、アクセス管理コンポーネント112vは、RPC実行スレッドを起動する(ステップ3262)。ここで起動されたRPC実行スレッドは、SQL変換手段115にRPCを発行してその処理を依頼し(ステップ3280)、処理終了通知を待つ。処理を依頼されたSQL変換手段115は、クライアントチェックタイマ376を初期化し(ステップ3203)、SQL文の解析を行う(ステップ2502)。
【0227】
なお、以上述べた処理の続き(ステップ2554〜2560、ステップ2585、ステップ2502〜2504)は、実施例7における図25に図示した処理と同じである。
【0228】
F.各時間の設定例
図31に、上記実施例におけるSQLタイムアウト時間、サーバチェック用RPCタイムアウト時間、サーバチェック用RPCインターバル時間の設定例を示す。本実施例8では、図31に示すように、SQLタイムアウト時間はSQL_TIMEOUT、サーバチェック用RPCタイムアウト時間はSERV_TIMEOUT、サーバチェック用RPCインターバル時間はSERV_CHKINTという名称の環境変数の格納領域に、それぞれ格納して定義する。これらの設定値は、本実施例8では環境変数であるが、これに限られず、記憶できれば何でもよい。なお、図31に示した例では、各時間の単位はすべて秒である。
【0229】
設定値群3101は、アプリケーション・ソフトウェア実行手段111およびクライアントRPCドライバ102のプロセスの環境変数であり、ユーザーあるいはアプリケーション・ソフトウェア実行手段111が設定する。この設定3101では、SQLタイムアウト時間は3600秒、サーバチェック用RPCタイムアウト時間は10秒、サーバチェック用RPCインターバル時間は600秒となっている。
【0230】
設定値群3102は、アクセス管理コンポーネント112vのプロセスの環境変数であり、データベースへの接続時にアクセス管理コンポーネント112vが上述の設定値群3101の値をクライアントのRPCドライバ102から受信し、設定したものである。この設定3102では、SQLタイムアウト時間は3500秒、サーバチェック用RPCタイムアウト時間は10秒、サーバチェック用RPCインターバル時間は600秒となっている。ここでは、SQLタイムアウト時間は、受信した値から100を引いた値としている。
【0231】
設定値群3103は、SQL変換手段115のプロセスの環境変数であり、データベース接続時にSQL変換手段115が上述の設定値群3102の値をアクセス管理コンポーネント112vから受信し設定したものである。この設定3103では、SQLタイムアウト時間は3400秒、サーバチェック用RPCタイムアウト時間は10秒、サーバチェック用RPCインターバル時間は600秒となっている。ここでも、SQLタイムアウト時間は、受信した値から100を引いた値としている。
【0232】
以上述べたように、本実施例8では、サーバチェック用RPCを用い、サーバの障害検出を、設定したインターバル時間毎に定期的に行うことによって、データベースアクセスのためのRPC実行前にサーバの障害を認識することができる。また、サーバチェック用RPCが定期的に発行されているかどうかをサーバ側で監視することによって、クライアント側の障害検出を行うことができる。
【0233】
本実施例8では、データベース・アクセス時の処理打ち切り時間をアプリケーション・ソフトウェア実行手段のプロセス毎に設定可能であるので、アプリケーションに応じた適切な処理打ち切り時間が設定できる。さらに、本実施例8によれば、ゲートウェイ情報処理装置上のコンポーネントやDBMSの障害をSQL文の発行前に検知可能であり、無駄なSQL文の発行や、障害検知待ち時間の発生を防止できる。また、本実施例によれば、アクセスを依頼した側のコンポーネントの障害、つまり、クライアント側のコンポーネントの障害(アクセス管理コンポーネント112vの場合)、または、アクセス管理コンポーネント112vの障害(SQL変換手段115の場合)を検知することができる。これにより、障害が発生したコンポーネントに対応するプロセスを異常終了させることができ、ゲートウェイ情報処理装置の資源、例えば、CPU1000や、主記憶装置1001を、他のプロセスが有効利用することができる。
【0234】
(上記各実施例1〜8の効果)
以上述べた各実施例1〜8では、SQL仕様の異なる2種類のDBMSが混在した場合について説明したが、何種類のDBMSが混在してもよいし、SQL仕様だけでなく、通信プロトコルが異なっていてもよい。また、各情報処理装置間がLANによって接続された例を示したが、LANでなく電話回線などのWAN(Wide Area Network)による接続、あるいはLANとWANを併用した接続環境にも本発明は適用できる。さらに、以上述べた実施例におけるRPCは、同一の情報処理装置内のプログラム間か、別の情報処理装置上のプログラム間かに拘らず処理の依頼と該処理結果の受取が可能なインタフェース機構であれば何を用いてもよい。また、ゲートウェイ情報処理装置の選択や、タイムアウト監視などは、データベース・アクセス・システムに限らず、RPCを用いた他の分散処理システムへも適用できる。なお、上記実施例1〜8は、任意に組み合わせることができる。
【0235】
また、ひとつのSQL変換手段115は、同一のSQL仕様を備える複数のDBMSに対するデータベース・アクセスを処理できる。このため、運用しているDBMSごとのSQL変換手段115を用意する必要がなく、少なくとも、運用しているDBMSの種類に相当する数のSQL変換手段115を導入すればたりるため、システム全体のコストを低減できる。
【0236】
【発明の効果】
本発明によれば、複数のゲートウェイ情報処理装置に負荷を分散することができる。また、本発明によれば、ゲートウェイ情報処理装置を経由することのオーバーヘッドを低減することができる。さらに本発明によれば、非標準仕様のSQLを用いたアプリケーション・ソフトウェアから非標準仕様のSQLを用いたDBMSにアクセスすることできる。
【0237】
また、本発明によれば、クライアントのアプリケーション・ソフトウェア毎に自由な文字コードセットを使用することができる。さらに、本発明によれば、アプリケーション・ソフトウエア実行手段からDBMSへの接続単位に、自由な文字コードセットを使用することができる。
【0238】
また、本発明によれば、データベース・アクセス時に、クライアントのアプリケーション・ソフトウェアごとに任意に設定した時間が経過すると、その処理を打ち切ることができる。さらに、本発明によれば、ゲートウェイ情報処理装置上のコンポーネントやDBMSの障害をSQL文の発行前に検知することができ、接続中のクライアントの障害をゲートウェイ情報処理装置側で検出できる。
【図面の簡単な説明】
【図1】実施例1におけるデータベース・アクセス・システムの構成図である。
【図2】従来のデータベース・アクセス・アクセス・システムの構成例を示す構成図である。
【図3】従来のデータベース・アクセス・アクセス・システムの他の構成例を示す構成図である。
【図4】実施例1においてクライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図5】実施例1においてアクセス管理コンポーネントからSQL変換手段に発行するRPCの処理を示すフローチャートである。
【図6】実施例3のデータベース・アクセス・システムの構成図である。
【図7】実施例3におけるクライアントでのSQL処理を示すフローチャートである。
【図8】実施例4のデータベース・アクセス・システムの構成図である。
【図9】実施例2のデータベース・アクセス・システムの構成図である。
【図10】実施例1におけるゲートウェイ情報処理装置130の動作を示す説明図である。
【図11】実施例5のデータベース・アクセス・システムの構成図である。
【図12】実施例2において、サーバ・コンポーネントを乱数を用いて選択する場合の処理を示すフローチャートである。
【図13】実施例2において、サーバ・コンポーネントを選択するために用意した優先順位テーブルの内容の一例を示す図である。
【図14】実施例2において、サーバ・コンポーネントを負荷状態に応じて選択する場合の処理を示すフローチャートである。
【図15】実施例2において、サーバ・コンポーネントを応答時間に応じて選択する場合の処理を示すフローチャートである。
【図16】実施例2において、サーバ・コンポーネントをブロードキャストRPCを用いて選択する場合の処理を示すフローチャートである。
【図17】実施例2のサーバ情報テーブルの例を示す説明図である。
【図18】実施例1を用いたシステムの他の構成を示す図である。
【図19】実施例5のデータベース・アクセス・システムの他の構成を示す構成図である。
【図20】実施例2において、ブロードキャストによる処理依頼への応答を、サーバ・コンポーネントが動作する情報処理装置の負荷状態に応じて遅延させるための処理を示すフローチャートである。
【図21】実施例6において、クライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図22】実施例6において、アクセス管理コンポーネントからSQL変換手段に発行するRPCの処理を示すフローチャートである。
【図23】実施例1において、アクセス管理コンポーネント112vで処理するSQL文の一例を示す図。
【図24】実施例1において、SQL変換手段によって変換したSQL文の例を示す図。
【図25】実施例7において、クライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図26】実施例7において、アクセス管理コンポーネントからSQL変換手段に発行するRPCの処理を示すフローチャートである。
【図27】実施例8において、クライアント情報処理装置からアクセス管理コンポーネントに発行するRPCの処理を示すフローチャートである。
【図28】実施例8において、サーバの障害監視処理を行うサーバチェック用スレッドの処理を示すフローチャートである。
【図29】実施例7において、各コンポーネント間で発行するRPCのシーケンスを示す説明図である。
【図30】実施例6における文字コードの設定例を示す説明図である。
【図31】実施例7および8における障害検出に関する時間設定の例を示す説明図である。
【図32】実施例8において、アクセス管理コンポーネントからSQL変換_Xコンポーネントに発行するRPCの処理を示すフローチャートである。
【図33】実施例8におけるクライアントチェック用スレッドの処理を示すフローチャートである。
【図34】実施例8におけるサーバチェック用RPCのサーバ側の処理を示すフローチャートである。
【図35】実施例1のサーバ情報テーブルの例を示す説明図である。
【図36】実施例7のデータベース・アクセス・システムの構成を示す構成図である。
【図37】実施例8のデータベース・アクセス・システムの構成を示す構成図である。
【図38】実施例6のデータベース・アクセス・システムの構成を示す構成図である。
【図39】実施例1のデータベース・アクセス・システムのハードウェア構成図である。
【符号の説明】
100…LAN、102…RPCドライバ、110…クライアント情報処理装置、111…アプリケーション・ソフトウェア実行手段、112…アクセス管理コンポーネント、115…SQL変換手段、120…サーバ情報処理装置、121…DBMS、122…データベースドライバ、123…LANドライバ、124…外部記憶装置、130…ゲートウェイ情報処理装置、150…ネームサーバ情報処理装置、151…ネームサーバ・コンポーネント、1300…サーバ優先順位テーブル、1700…サーバ情報テーブル。
Claims (5)
- データベース・アクセス言語によるデータベースへのアクセス依頼を受け付け、応答を返すデータベース管理システムを備える複数のサーバ情報処理装置と、該サーバ情報処理装置に接続された、上記データベース管理システムをアクセス対象とする上記依頼を発行するアプリケーション・ソフトウェア実行手段を備える一以上のクライアント情報処理装置とを有するデータベース・アクセス・システムにおいて、
上記アクセス依頼を受け付け、上記データベース管理システムに送るゲートウェイ情報処理装置を備え、
上記ゲートウェイ情報処理装置は、
上記アクセス依頼を受け付け、異なるデータベース・アクセス言語による依頼に変換して、上記データベース管理システムに送るデータベース・アクセス言語変換手段と、
上記アクセス依頼を受け付け、上記データベース・アクセス言語変換手段に送る、アクセス管理手段とを備え、
上記クライアント情報処理装置は、
上記依頼を発行すると、上記アクセス管理手段との接続を確保し、該依頼を該アクセス管理手段に送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理をエラーとする手段とを備え、
前記アクセス管理手段は、
上記依頼を受け付けると、上記データベース・アクセス言語変換手段との接続を確保し、該依頼を該データベース・アクセス言語変換手段に送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをクライアント情報処理装置に通知する手段とを備え、
前記データベース・アクセス言語変換手段は、
前記依頼を受け付けると、上記データベース管理システム手段との接続を確保し、該依頼を該データベース管理システムに送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをアクセス管理手段に通知する手段とを備え、
前記クライアント情報処理装置にあらかじめ定められた時間と、
前記アクセス管理手段にあらかじめ定められた時間と、
前記データベース・アクセス言語変換手段にあらかじめ定められた時間とは、
この順に短いことを特徴とするデータベース・アクセス・システム。 - データベース・アクセス言語によるデータベースへのアクセス依頼を受け付け、応答を返すデータベース管理システムを備える複数のサーバ情報処理装置と、該サーバ情報処理装置に接続された、上記データベース管理システムをアクセス対象とする上記依頼を発行するアプリケーション・ソフトウェア実行手段を備える一以上のクライアント情報処理装置とを有するデータベース・アクセス・システムにおいて、
上記アクセス依頼を受け付け、上記データベース管理システムに送るゲートウェイ情報処理装置を備え、
上記ゲートウェイ情報処理装置は、
上記アクセス依頼を受け付け、異なるデータベース・アクセス言語による依頼に変換して、上記データベース管理システムに送るデータベース・アクセス言語変換手段と、
上記アクセス依頼を受け付け、上記データベース・アクセス言語変換手段に送る、アクセス管理手段とを備え、
上記クライアント情報処理装置は、
上記依頼を発行すると、上記アクセス管理手段との接続を確保し、該依頼を該アクセス管理手段に送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の 処理をエラーとする手段と、
上記クライアント情報処理装置にあらかじめ定められた時間を、前記アクセス管理手段に通知する手段とを備え、
前記アクセス管理手段は、
上記依頼を受け付けると、上記データベース・アクセス言語変換手段との接続を確保し、該依頼を該データベース・アクセス言語変換手段に送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをクライアント情報処理装置に通知する手段とを備え、
上記アクセス管理手段は、上記通知された時間を、該アクセス管理手段にあらかじめ定められた時間として用いることを特徴とするデータベース・アクセス・システム。 - データベース・アクセス言語によるデータベースへのアクセス依頼を受け付け、応答を返すデータベース管理システムを備える複数のサーバ情報処理装置と、該サーバ情報処理装置に接続された、上記データベース管理システムをアクセス対象とする上記依頼を発行するアプリケーション・ソフトウェア実行手段を備える一以上のクライアント情報処理装置とを有するデータベース・アクセス・システムにおいて、
上記アクセス依頼を受け付け、上記データベース管理システムに送るゲートウェイ情報処理装置を備え、
上記ゲートウェイ情報処理装置は、
上記アクセス依頼を受け付け、異なるデータベース・アクセス言語による依頼に変換して、上記データベース管理システムに送るデータベース・アクセス言語変換手段と、
上記アクセス依頼を受け付け、上記データベース・アクセス言語変換手段に送る、アクセス管理手段とを備え、
上記クライアント情報処理装置は、
上記依頼を発行すると、上記アクセス管理手段との接続を確保し、該依頼を該アクセス管理手段に送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理をエラーとする手段とを備え、
前記アクセス管理手段は、
上記依頼を受け付けると、上記データベース・アクセス言語変換手段との接続を確保し、該依頼を該データベース・アクセス言語変換手段に送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをクライアント情報処理装置に通知する手段と、
前記アクセス管理手段にあらかじめ定められた時間を、前記データベース・アクセス言語変換手段に通知する手段とを備え、
前記データベース・アクセス言語変換手段は、
前記依頼を受け付けると、上記データベース管理システム手段との接続を確保し、該依頼を該データベース管理システムに送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをアクセス管理手段に通知する手段とを備え、
上記データベース・アクセス言語変換手段は、上記通知された時間を、該データベース・アクセス言語変換手段にあらかじめ定められた時間として用いることを特徴とするデータベース・アクセス・システム。 - データベース・アクセス言語によるデータベースへのアクセス依頼を受け付け、応答を返すデータベース管理システムを備える複数のサーバ情報処理装置と、該サーバ情報処理装置に接続された、上記データベース管理システムをアクセス対象とする上記依頼を発行するアプリケーション・ソフトウェア実行手段を備える一以上のクライアント情報処理装置とを有するデータベース・アクセス・システムにおいて、
上記アクセス依頼を受け付け、上記データベース管理システムに送るゲートウェイ情報 処理装置を備え、
上記ゲートウェイ情報処理装置は、
上記アクセス依頼を受け付け、異なるデータベース・アクセス言語による依頼に変換して、上記データベース管理システムに送るデータベース・アクセス言語変換手段と、
上記アクセス依頼を受け付け、上記データベース・アクセス言語変換手段に送る、アクセス管理手段とを備え、
上記アクセス管理手段は、
上記依頼を受け付けると、上記データベース・アクセス言語変換手段との接続を確保し、該依頼を該データベース・アクセス言語変換手段に送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをクライアント情報処理装置に通知する手段と、
前記アクセス管理手段にあらかじめ定められた時間を、前記データベース・アクセス言語変換手段に通知する手段とを備え、
前記データベース・アクセス言語変換手段は、
前記依頼を受け付けると、上記データベース管理システム手段との接続を確保し、該依頼を該データベース管理システムに送る手段と、
あらかじめ定められた時間が経過しても応答がないと、上記接続を切断し、上記依頼の処理のエラーをアクセス管理手段に通知する手段とを備え、
上記データベース・アクセス言語変換手段は、上記通知された時間を、該データベース・アクセス言語変換手段にあらかじめ定められた時間として用いることを特徴とするデータベース・アクセス・システム。 - 請求項2において、
前記アクセス管理手段は、該アクセス管理手段にあらかじめ定められた時間を、前記データベース・アクセス言語変換手段に通知する手段を、さらに備え、
上記データベース・アクセス言語変換手段は、上記通知された時間を、該データベース・アクセス言語変換手段にあらかじめ定められた時間として用いることを特徴とするデータベース・アクセス・システム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12657394A JP3693365B2 (ja) | 1994-06-08 | 1994-06-08 | データベース・アクセス・システムおよびデータベース・アクセス・システムの制御方法 |
US08/355,891 US5721904A (en) | 1993-12-20 | 1994-12-14 | Database access system and method of controlling access management to a database access system for a plurality of heterogeneous database servers using SQL |
DE4445444A DE4445444A1 (de) | 1993-12-20 | 1994-12-20 | Datenbankzugriffssystem und Verfahren zum Steuern desselben |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12657394A JP3693365B2 (ja) | 1994-06-08 | 1994-06-08 | データベース・アクセス・システムおよびデータベース・アクセス・システムの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07334400A JPH07334400A (ja) | 1995-12-22 |
JP3693365B2 true JP3693365B2 (ja) | 2005-09-07 |
Family
ID=14938514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12657394A Expired - Fee Related JP3693365B2 (ja) | 1993-12-20 | 1994-06-08 | データベース・アクセス・システムおよびデータベース・アクセス・システムの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3693365B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944654B1 (en) * | 1999-11-01 | 2005-09-13 | Emc Corporation | Multiple storage array control |
JP4752630B2 (ja) * | 2006-06-07 | 2011-08-17 | 日産自動車株式会社 | 情報提供システム及び方法 |
JP5326303B2 (ja) * | 2008-03-10 | 2013-10-30 | 富士通株式会社 | 統合装置、統合プログラム、統合方法 |
JP5014219B2 (ja) * | 2008-03-19 | 2012-08-29 | ヤフー株式会社 | 広告サーバ及び広告キーワード検索方法 |
JP5060536B2 (ja) * | 2009-09-30 | 2012-10-31 | 株式会社ソニー・コンピュータエンタテインメント | メディアプレーヤ、情報取得方法、データベースサーバおよび情報提供方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2686197B2 (ja) * | 1991-12-25 | 1997-12-08 | 三洋電機株式会社 | 情報処理装置 |
JPH0675845A (ja) * | 1992-05-28 | 1994-03-18 | Nec Corp | データ変換自動化方法 |
JPH05334363A (ja) * | 1992-06-01 | 1993-12-17 | Nippon Telegr & Teleph Corp <Ntt> | データベース検索システム |
JPH0628407A (ja) * | 1992-07-10 | 1994-02-04 | Matsushita Electric Ind Co Ltd | データベースシステム |
-
1994
- 1994-06-08 JP JP12657394A patent/JP3693365B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH07334400A (ja) | 1995-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5721904A (en) | Database access system and method of controlling access management to a database access system for a plurality of heterogeneous database servers using SQL | |
US20190034442A1 (en) | Method and apparatus for content synchronization | |
US20180097814A1 (en) | Method and Apparatus for Prioritization of Data Requests | |
CA2533737C (en) | Fast application notification in a clustered computing system | |
US20030126196A1 (en) | System for optimizing the invocation of computer-based services deployed in a distributed computing environment | |
US20070255682A1 (en) | Fault tolerant facility for the aggregation of data from multiple processing units | |
US20070198554A1 (en) | Apparatus for business service oriented management infrastructure | |
US20030220998A1 (en) | Server site restructuring | |
JP2002245017A (ja) | トランザクションのための要求されるサービスレベルを特定するための装置および方法 | |
JP2005539298A (ja) | サーバを遠隔かつ動的に構成する方法およびシステム | |
KR20010103731A (ko) | 이벤트의 동적인 필터링 및 라우팅을 위한 방법 및 장치 | |
US20070073703A1 (en) | LDAP to SQL database proxy system and method | |
JP3277654B2 (ja) | 異種データベース・アクセス・システム | |
US20070106673A1 (en) | Systems and methods for mirroring the provision of identifiers | |
US7793113B2 (en) | Guaranteed deployment of applications to nodes in an enterprise | |
US20050154770A1 (en) | Information system and data access method | |
US7580989B2 (en) | System and method for managing access points to distributed services | |
US20030191831A1 (en) | Retry technique for multi-tier network communication systems | |
US7467387B2 (en) | Method for off-loading user queries to a task manager | |
JPH07104844B2 (ja) | 割込み方法 | |
US7694012B1 (en) | System and method for routing data | |
JP3693365B2 (ja) | データベース・アクセス・システムおよびデータベース・アクセス・システムの制御方法 | |
US6675259B2 (en) | Method and apparatus for validating and ranking disk units for switching | |
US6782352B2 (en) | System and method for monitoring server host operation | |
US8005791B1 (en) | Methods and systems for publishing aggregated data to a business logic tier |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040427 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040628 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050614 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050621 |
|
LAPS | Cancellation because of no payment of annual fees |