(57)【特許請求の範囲】
【請求項１】
少なくとも１つのデータベースに対するアクセスを制御するシステムであって、
入力された第１のアクセスコマンドに基づいて、当該第１のアクセスコマンドによりアクセスされるべきデータベースを判別するデータベース判別部と、
判別した当該データベースにおいて、第２のアクセスコマンドに応じた一連のアクセスが継続中か否かを判断するアクセス判断部と、
判別した当該データベースに対するアクセス頻度を、当該データベースに対するアクセス履歴に基づいて判断する頻度判断部と、
同一のデータベースに対する複数のアクセスコマンドによる競合するアクセスを排他制御するアクセス調停部と、
判別した当該データベースにおいて、前記第２のアクセスコマンドに応じた一連のアクセスが継続中であって、かつ、判別した当該データベースに対する前記アクセス頻度が前記アクセス調停部における単位時間当たりの処理量のうちの未使用の処理量を排他制御に要する処理量で除算した値に応じた基準値以上であることを条件に、前記第１のアクセスコマンドによる当該データベースに対するアクセスを禁止するアクセス制御部と
を備えるシステム。
【請求項２】
前記アクセス制御部は、判別した当該データベースに対する前記アクセス調停部による排他制御の頻度を低下させるべく、前記第１のアクセスコマンドによる当該データベースに対するアクセスを制御する
請求項１に記載のシステム。
【請求項３】
前記第１のアクセスコマンドは第１のバッチ処理のために発行され、
前記第２のアクセスコマンドに応じた一連のアクセスは前記第１のバッチ処理とは異なる第２のバッチ処理である
請求項１又は２に記載のシステム。
【請求項４】
前記アクセス制御部は、前記第１のアクセスコマンドによるアクセスを禁止する場合には、前記第１のバッチ処理を中断して、前記第１のバッチ処理のうち既に実行した処理をコミットする、請求項３に記載のシステム。
【請求項５】
前記アクセス判断部は、前記第１のアクセスコマンドを発行した第１のコンピュータと、前記第２のアクセスコマンドを発行した第２のコンピュータとが同一か否かを更に判断し、
前記アクセス制御部は、前記第１のコンピュータと、前記第２のコンピュータとが異なることを更に条件として、判別した当該データベースに対するアクセスを禁止する、
請求項１から４の何れか１項に記載のシステム。
【請求項６】
前記アクセス判断部は、さらに、前記第２のアクセスコマンドに応じた一連のアクセスが、判別した当該データベースを更新するアクセスであるか否かを判断し、
前記アクセス制御部は、前記第２のアクセスコマンドに応じた一連のアクセスが、当該データベースを更新するアクセスであることを更に条件として、前記第１のアクセスコマンドによる当該データベースに対するアクセスを禁止する、
請求項１から５の何れか１項に記載のシステム。
【請求項７】
前記アクセス判断部は、さらに、前記第２のアクセスコマンドに応じた一連のアクセスが、判別した当該データベースにレコードを挿入するアクセスであるか否かを判断し、
前記アクセス制御部は、前記第２のアクセスコマンドに応じた一連のアクセスが、当該データベースにレコードを挿入するアクセスであることを更に条件として、前記第１のアクセスコマンドによる当該データベースに対するアクセスを禁止する、
請求項１から５の何れか１項に記載のシステム。
【請求項８】
前記頻度判断部は、判別した当該データベースに対し既にコミットされた一連のアクセスのそれぞれについて、当該一連のアクセスにおいて当該データベースにアクセスした頻度を判断し、
前記アクセス制御部は、それぞれの一連のアクセスについて判断した前記頻度のうち最も高い頻度が前記基準値よりも高いことを条件に、当該データベースに対するアクセスを禁止する、
請求項１から７の何れか１項に記載のシステム。
【請求項９】
前記頻度判断部は、判別した当該データベースに対し既にコミットされた一連のアクセスが複数ある場合には、複数の当該一連のアクセスのうち、最後にコミットされた一連のアクセスにおいて当該データベースにアクセスした頻度を判断する、請求項１から７の何れか１項に記載のシステム。
【請求項１０】
アクセスコマンドを発行したコンピュータの識別情報、アクセスされるデータベースの識別情報、アクセスコマンドによるアクセスのタイプ、アクセスの開始時刻、コミットの時刻、および、アクセスの回数を対応付けて記憶した制御情報を記憶装置内に管理しており、
前記アクセス制御部によりアクセスが許可されてデータベースへのアクセスが開始される場合に、当該アクセスコマンドを発行したコンピュータの識別情報、アクセスされる当該データベースの識別情報、当該アクセスコマンドによりアクセスのタイプ、および、当該アクセスの開始時刻を前記記憶装置内の前記制御情報に含めて格納する格納部を更に備え、
さらに、
前記格納部は、当該アクセスコマンドによる処理がコミットされる毎に、前記記憶装置内の前記制御情報における対応するレコードの前記コミットの時刻を更新し、
さらに、前記制御情報における対応するレコードの前記アクセスの回数を更新し、
前記アクセス判断部は、判別した当該データベースに対応するレコードを前記記憶装置内の前記制御情報から読み出して、読み出したレコードの前記コミットの時刻が記録されていないことを条件に、当該データベースにおいて一連のアクセスが継続中であると判断し、
前記頻度判断部は、判別した当該データベースに対応するレコードを前記記憶装置内の前記制御情報から読み出して、読み出したレコードの前記アクセスの開始時刻、前記コミットの時刻、および、アクセスの回数に基づいて、当該データベースに対する前記アクセス頻度を判断する、
請求項１から９の何れか１項に記載のシステム。
【請求項１１】
前記アクセス調停部による単位時間当たりに処理可能な処理量のうち未使用の処理量を順次モニターすると共に、当該未使用の処理能力を、一度の排他制御に必要な処理量として予め定められた処理量で除算した数を、前記基準値として順次算出する基準値算出部を更に備え、
前記アクセス制御部は、前記基準値算出部により算出された前記基準値よりも、前記アクセス頻度が高いことを条件にアクセスを禁止する、
請求項１から１０の何れか１項に記載のシステム。
【請求項１２】
コンピュータを、請求項１から１１の何れか１項に記載のシステムとして機能させるためのプログラム。
【請求項１３】
少なくとも１つのデータベースに対するアクセスを制御する方法であって、
入力された第１のアクセスコマンドに基づいて、当該第１のアクセスコマンドによりアクセスされるべきデータベースを判別するステップと、
判別した当該データベースにおいて、第２のアクセスコマンドに応じた一連のアクセスが継続中か否かを判断するステップと、
判別した当該データベースに対するアクセス頻度を、当該データベースに対するアクセス履歴に基づいて判断するステップと、
アクセス調停部が同一のデータベースに対する複数のアクセスコマンドによる競合するアクセスを排他制御するステップと、
判別した当該データベースにおいて、前記第２のアクセスコマンドに応じた一連のアクセスが継続中であって、かつ、判別した当該データベースに対する前記アクセス頻度が前記アクセス調停部における単位時間当たりの処理量のうちの未使用の処理量を排他制御に要する処理量で除算した値に応じた基準値以上であることを条件に、前記第１のアクセスコマンドによる当該データベースに対するアクセスを禁止するステップと
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースへのアクセスを制御する技術に関する。特に、本発明は、複数のコンピュータによる同一のデータベースへの競合するアクセスを制御する技術に関する。
【背景技術】
【０００２】
データベースに対するアクセスを効率的に処理するために、クラスタ型システムが利用されている。クラスタ型システムは、複数のコンピュータを備えており、次々に受信する要求をそれら複数のコンピュータにより処理させることで、各コンピュータの負荷を分散できる。例えば、あるトランザクションを要求された場合に、現在最も負荷の低いコンピュータにそのトランザクションを処理させれば、各コンピュータの負荷を同程度に維持して、全体として処理を効率化できる。
【０００３】
一方、クラスタ型システムにおいては、データベースの一貫性を保持するために、アクセスの排他制御が必要である。アクセスの排他制御のためには、コンピュータ間の通信などの追加の処理が必要となる。したがって、例えば、多数のレコードを連続して更新するようなバッチ型処理が並列に実行されると、排他制御が高頻度で発生して処理の効率が低下するおそれがある。
バッチ型処理の効率化技術については、例えば下記の特許文献１を参照されたい。
【特許文献１】特開２００５−７１１７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
クラスタ型システムにおいて、バッチ処理であっても効率的に実行させるためには、自動的な負荷分散ではなく、ユーザが各バッチ処理を実行させるコンピュータを指定できることが好ましい。例えば、第１のバッチ処理と第２のバッチ処理とが全く異なるデータにアクセスする場合には、それらを異なるコンピュータで実行させてよい。
【０００５】
一方で、第３のバッチ処理と第４のバッチ処理とがアクセスするデータの大部分が重複する場合には、それらを異なるコンピュータで実行させると排他制御が高頻度で発生してしまう。従って、ユーザがこれらのバッチ処理を同一のコンピュータで処理するように指定すれば、排他制御の過度な発生を防止できる。
【０００６】
しかしながら、各バッチ処理がどのようなデータにアクセスするのかが予め分からない場合がある。例えば、近年一般的になりつつある「ＥＲＰ（Ｅｎｔｅｒｐｒｉｓｅ  Ｒｅｓｏｕｒｃｅ  Ｐｌａｎｎｉｎｇ）パッケージ」を利用する場合などである。「ＥＲＰパッケージ」とは、企業の経営資源を有効に活用し経営を効率化するために、基幹業務を部門ごとではなく統合的に管理するためのソフトウェアパッケージの総称である。
【０００７】
そのようなパッケージを利用した場合においては、データベース中のある特定のテーブルが、アプリケーションプログラムのどのような役割で使用されているのかが、利用者に開示されていない場合が多い。むしろ、そのような役割が開示されていないために、利用者はデータベースの構造を意識せずにアプリケーションプログラムを利用できる。
【０００８】
また、近年、プログラムの生産性を向上させる観点から、動的ＳＱＬ（構造化照会言語）が用いられる場合がある。そのような言語で記述されたプログラムは、実行時に、従来型のＳＱＬに変換されてから実行される。従って、単にそのプログラムを参照しても、実際に実行するまでは、どのテーブルがアクセスされるかは分からない。
【０００９】
このように、各バッチ処理がどのようなデータにアクセスするのかが予め分からない場合があり、その場合には、各バッチ処理をどのコンピュータで実行させると効率がよいのか分からない。これにより、バッチ処理実行時に排他制御が高頻度で発生し、時にはシステム全体の効率を低下させてしまう場合がある。
【００１０】
そこで本発明は、上記の課題を解決することのできるシステム、プログラムおよび方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の第１の形態においては、少なくとも１つのデータベースに対するアクセスを制御するシステムであって、入力された第１のアクセスコマンドに基づいて、当該第１のアクセスコマンドによりアクセスされるべきデータベースを判別するデータベース判別部と、判別した当該データベースにおいて、第２のアクセスコマンドに応じた一連のアクセスが継続中か否かを判断するアクセス判断部と、判別した当該データベースに対するアクセス頻度を、当該データベースに対するアクセス履歴に基づいて判断する頻度判断部と、同一のデータベースに対する複数のアクセスコマンドによる競合するアクセスを排他制御するアクセス調停部と、判別した当該データベースにおいて、前記第２のアクセスコマンドに応じた一連のアクセスが継続中であって、かつ、判別した当該データベースに対する前記アクセス頻度が前記アクセス調停部における単位時間当たりの処理量のうちの未使用の処理量を排他制御に要する処理量で除算した値に応じた基準値以上であることを条件に、前記第１のアクセスコマンドによる当該データベースに対するアクセスを禁止するアクセス制御部とを備えるシステムを提供する。また、当該システムとしてコンピュータを機能させる方法およびプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明を実施するための最良の形態】
【００１２】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
図１は、本実施形態に係る情報システム１０の全体構成を示す。情報システム１０は、データベースにアクセスするためのクラスタ型計算機システムである。具体的には、情報システム１０は、データベース２０と、データベース２０にアクセスするための複数のコンピュータ（例えば処理用コンピュータ１００Ａ−Ｃ）と、処理用コンピュータ１００Ａ−Ｃによるアクセスを調停するための制御用コンピュータ１２０とを備える。
【００１４】
データベース２０は、例えば後述のハードディスクドライブ１０４０などの記憶装置により実現される。そして、処理用コンピュータ１００Ａ−Ｃのそれぞれは、外部から受けたリクエストに応じて、それぞれ独立してデータベース２０にアクセスする。制御用コンピュータ１２０は、データベース２０内でデータの一貫性が損なわれないように、処理用コンピュータ１００Ａ−Ｃからの競合するアクセスを排他制御する。但し、それぞれの処理用コンピュータ１００が例えばバッチ処理などを実行する場合において、アクセスの競合が高頻度で発生すると、排他制御が高頻度で必要となって情報システム１０の効率が低下する場合がある。
【００１５】
これに対し、本実施形態に係る情報システム１０は、バッチ処理の実行状況をデータベース２０中に制御情報２５として管理すると共に、競合する他のバッチ処理の実行中には新たなバッチ処理を開始しないようにすることで、全体として情報システム１０の効率を向上させることができる。以下、具体的に説明を進める。
【００１６】
図２は、本実施形態に係る情報システム１０の機能構成を示す。図１に示したように、情報システム１０は、データベース２０と、第１の処理用コンピュータ１００Ａと、第２の処理用コンピュータ１００Ｂと、処理用コンピュータ１００Ｃと、制御用コンピュータ１２０とを備える。処理用コンピュータ１００Ａは、基本的なハードウェアとして、例えばネットワーク・インターフェイス・カードなどの通信インターフェイス１０２と、例えばハードディスク・ドライブ、メモリー・チップなどの記憶部１０４とを有する。
【００１７】
そして、処理用コンピュータ１００Ａは、記憶部１０４に記憶されたプログラムを読み出して実行することで、アプリケーション（ＡＰ）サーバ１０５と、データベース管理システム（ＤＢＭＳ）１０８として機能する。ＡＰサーバ１０５は、予めインストールされたプログラム（例えばサーバ用プログラム）を実行しており、外部（例えばクライアント装置）から受けた要求に応じて処理を進める。
【００１８】
その過程で、データベース２０へのアクセスが必要になると、ＡＰサーバ１０５は、ＳＱＬコマンドなどの、データベースに対するアクセス専用のコマンドをＤＢＭＳ１０８に対し発行する。なお、このようなアクセス専用のコマンドのことを、以下の説明においては、アクセスコマンド、ＳＱＬコマンド、または、ＳＱＬステートメントなどと称するが、何れも略同一のコマンドを指し示す。
【００１９】
ＤＢＭＳ１０８は、受け取ったＳＱＬコマンドを解釈して、その内容に従ってデータベース２０へアクセスする。アクセスは、レコードの更新またはレコードの挿入などの、更新系のアクセスであってもよいし、レコードの読み出しなどの、参照系のアクセスであってもよい。また、ハードウェア利用の観点からは、このアクセスは、ＤＢＭＳ１０８が、オペレーティング・システムまたはデバイスドライバに指示して通信インターフェイス１０２を動作させ、通信インターフェイス１０２の機能によりデータベース２０を制御する装置と通信することによって実現される。
【００２０】
なお、処理用コンピュータ１００Ｂおよび処理用コンピュータ１００Ｃのそれぞれは、処理用コンピュータ１００Ａと略同一であるから説明を省略する。
一方、制御用コンピュータ１２０は、基本的なハードウェアとして、例えばネットワーク・インターフェイス・カードなどの通信インターフェイス１０２と、例えばハードディスクドライブなどの記憶部１０４とを有する。制御用コンピュータ１２０は、記憶部１０４から読み出したプログラムを実行することで、アクセス調停部１２５として機能する。
【００２１】
アクセス調停部１２５は、処理用コンピュータ１００Ａ−Ｃからデータベース２０に対する競合するアクセスの排他制御をする。例えば、あるレコードが処理用コンピュータ１００Ａにより更新中の場合には、そのレコードに対する処理用コンピュータ１００Ｂからのアクセスを禁止する。これにより、データベース２０内のデータの一貫性を保持することができる。
【００２２】
このような排他制御が高頻度で発生すると、情報システム１０の効率が全体として低下してしまう場合がある。従って、一連のアクセスを頻繁に発生させるバッチ処理については、各処理用コンピュータ１００は特別な制御を行う。具体的には、各処理用コンピュータ１００は、記憶部１０４に記憶されたプログラムを実行することで、それぞれ制御システム１０９として更に機能する。それぞれの制御システム１０９は、あるバッチ処理が継続中の場合には、それと競合する他のバッチ処理を開始させない。これにより、排他制御が高頻度で発生することによる効率の低下を防止できる。
【００２３】
図３は、本実施形態に係る制御システム１０９の機能構成を示す。制御システム１０９は、データベース判別部３００と、アクセス判断部３１０と、頻度判断部３２０と、基準値算出部３２５と、アクセス制御部３３０と、格納部３３５とを有する。以降、図３を参照して、処理用コンピュータ１００Ａに設けられた制御システム１０９について説明する。まず、データベース判別部３００は、処理用コンピュータ１００Ａの何れかにおいて、新たにアクセスコマンドが入力されたことに応じて処理を開始する。このアクセスコマンドは、例えばある第１のバッチ処理のためのコマンドである。
【００２４】
そして、データベース判別部３００は、その入力されたアクセスコマンドに基づいて、そのアクセスコマンドによりアクセスされるべきデータベースを判別する。ここでいうデータベースとは、ある単位で記憶または管理されるデータという意味であり、たとえばアクセス調停部１２５による排他制御の単位より大きいことが望ましい。具体的には、データベースは、リレーショナル・データベース上の１つのテーブルであってよいし、特定の複数のテーブルの集合であってよい。例えばデータベースが１つのテーブルである場合において、データベース判別部３００は、その入力されたアクセスコマンドによりアクセスされるべきテーブルを判別する。
【００２５】
アクセス判断部３１０は、判別したそのデータベースにおいて、他のアクセスコマンドに応じた一連のアクセスが継続中かどうかを判断する。一連のアクセスとは、例えばバッチ処理のことである。即ちこの場合、この一連のアクセスは、上記第１のバッチ処理とは異なる第２のバッチ処理のことである。これに代えて、この一連のアクセスは、トランザクション処理であってよい。一連のアクセスが継続中かどうかの判断は、例えば、各バッチ処理の進行状況を管理するための制御情報２５に基づいて実現されてよい。
【００２６】
頻度判断部３２０は、判別したそのデータベースに対するアクセス頻度を、そのデータベースに対するアクセス履歴に基づいて判断する。アクセス履歴は、そのデータベースに対応付けて制御情報２５に記録されていてよい。そして、アクセス制御部３３０は、このアクセス頻度、および、第２のバッチ処理が継続中か否かに基づいて、アクセス調停部１２５による排他制御の頻度を低下させるべく、当該データベースに対する第１のバッチ処理のためのアクセスを制御する。
【００２７】
具体的には、アクセス制御部３３０は、判別したそのデータベースにおいて、他のアクセスコマンドに応じた一連のアクセスが継続中であって、かつ、判別したそのデータベースに対するアクセス頻度が予め定められた基準値以上であるかどうかを判断する。この基準値は、例えば基準値算出部３２５により算出されたものであってよい。
【００２８】
そして、他のアクセスコマンドに応じた一連のアクセスが継続中であって、かつ、そのデータベースに対するアクセス頻度が基準値以上であることを条件に、アクセス制御部３３０は、入力されたそのアクセスコマンドによる当該データベースに対するアクセスを禁止する。そのアクセスを禁止した場合には、アクセス制御部３３０は、ＤＢＭＳ１０８にその旨を通知して、ＤＢＭＳ１０８におけるバッチ処理を一時中断させる。
【００２９】
その場合には、アクセス制御部３３０は、ＤＢＭＳ１０８において、それまでに実行した処理をコミットさせてよい。それ以外の場合には、アクセス制御部３３０は、入力したそのアクセスコマンドによるアクセスを許可する。アクセス制御部３３０がＤＢＭＳ１０８において処理をコミットさせた場合、または、ＤＢＭＳ１０８にバッチ処理を許可した場合には、格納部３３５は、その処理時刻などを制御情報２５に記録する。
【００３０】
以上、処理用コンピュータ１００Ａに設けられた制御システム１０９について説明したが、処理用コンピュータ１００Ｂおよび処理用コンピュータ１００Ｃに設けられた制御システム１０９についても、上記処理用コンピュータ１００Ａの制御システム１０９の機能構成と略同一である。但し、処理用コンピュータ１００Ｂの制御システム１０９は、処理用コンピュータ１００ＢのＤＢＭＳ１０８がアクセスコマンドを入力したことに応じて処理を開始し、処理用コンピュータ１００ＢのＤＢＭＳ１０８の動作を制御する。また、処理用コンピュータ１００Ｃの制御システム１０９は、処理用コンピュータ１００ＣのＤＢＭＳ１０８がアクセスコマンドを入力したことに応じて処理を開始し、処理用コンピュータ１００ＣのＤＢＭＳ１０８の動作を制御する。その他の構成についての説明は省略する。
【００３１】
図４は、本実施形態に係るデータベース２０に記憶された制御情報２５のデータ構造の一例を示す。制御情報２５は、バッチ処理を識別するための処理識別情報、そのバッチ処理を実行するべくアクセスコマンドを発行したコンピュータの識別情報、そのバッチ処理によってアクセスされるテーブルの識別情報、および、そのバッチ処理によるアクセスのタイプを対応付けて記憶している。タイプとしては、例えばＩｎｓｅｒｔ（挿入）、ＵＰＤＡＴＥ（更新）またはＤＥＬＥＴＥ（削除）などがある。これらの情報は、バッチ処理の開始時に制御情報２５に登録される。具体的には、データベース判別部３００は、アクセスされるべきデータベースを判別するタイミングで、アクセスコマンドに基づいて上記各種情報を解析して制御情報２５に登録してよい。
【００３２】
制御情報２５は、さらに、そのバッチ処理が継続中であるかどうかをアクセス判断部３１０により判断された直近の時刻を記録している。また、制御情報２５は、更に、そのバッチ処理において一連のアクセスが開始された時刻、および、そのバッチ処理がコミットされる時刻を記録している。これらの各種情報は、判断、アクセス開始、または、コミットなどの各種処理のタイミングにおいて、格納部３３５により登録される。
【００３３】
さらに、制御情報２５は、アクセス件数の情報を記録している。このアクセス件数は、対応するバッチ処理において、対応するアクセス対象テーブルに対し、アクセスが発生した回数を示す。このアクセス件数は、格納部３３５により順次更新される。具体的には、格納部３３５は、アクセスコマンドによる処理がコミットされる毎に、対応するレコードのアクセスの件数を更新してゆく。さらに、制御情報２５は、これらの各種情報から算出されるアクセス頻度を記録してもよい。
【００３４】
図５は、本実施形態に係るＡＰサーバ１０５およびＤＢＭＳ１０８の処理フローの一例を示す。ここでは、処理用コンピュータ１００Ａに設けられたＡＰサーバ１０５およびＤＢＭＳ１０８について説明する。まず、ＡＰサーバ１０５は、処理に必要なプログラム・モジュールを読み込んで、その実行を開始する（Ｓ５００）。そして、ＤＢＭＳ１０８は、データベース２０との接続を開始する（Ｓ５１０）。
【００３５】
ＡＰサーバ１０５は、プログラム・モジュールを実行する過程で、ＳＱＬステートメントを発行する場合がある（Ｓ５２０）。発行するＳＱＬステートメントが確定したタイミングで、制御システム１０９が動作を開始する。制御システム１０９の動作の詳細については、図６を参照して後に説明する。
【００３６】
制御システム１０９によりＳＱＬステートメントの発行が許可されると、ＤＢＭＳ１０８は、そのステートメントを実行する（Ｓ５３０）。実行によりアクセスの競合が発生すると、制御用コンピュータ１２０のアクセス調停部１２５により排他制御が行われる。そして、一連のアクセスが完了すると、ＤＢＭＳ１０８は、処理をコミットする（Ｓ５４０）。ＡＰサーバ１０５は、プログラム・モジュールによって指定された所定の終了条件が成立するまで、以上の処理を繰り返す（Ｓ５５０：ＮＯ）。
【００３７】
一方、そのような終了条件が成立した場合には（Ｓ５５０：ＹＥＳ）、ＡＰサーバ１０５は、データベース２０に対する接続を切断して処理を終了する。処理用コンピュータ１００Ｂ−Ｃのそれぞれの処理についても、上述の処理と略同一であるから説明を省略する。
【００３８】
図６は、本実施形態に係る制御システム１０９の処理フローの一例を示す。データベース判別部３００は、発行すべきＳＱＬステートメントが確定したタイミングで動作を開始すると、まず、その入力されたステートメントに基づいて、そのステートメントによりアクセスされるべきデータベースを判別する（Ｓ６００）。
【００３９】
そしてその場合には、新たにバッチ処理を開始しようとしているので、格納部３３５は、そのバッチ処理に対応するレコードを制御情報２５に登録する（Ｓ６１０）。詳細には、格納部３３５は、当該ステートメントを発行したコンピュータの識別情報、アクセスされる当該データベースの識別情報、当該アクセスコマンドによりアクセスのタイプ、および、当該アクセスの開始時刻を制御情報２５に格納してよい。
【００４０】
次に、アクセス判断部３１０は、制御情報２５を参照して、判別したそのデータベースをアクセス対象とする他のバッチ処理に対応するレコードを読み出す（Ｓ６２０）。そして、アクセス判断部３１０は、判別したそのデータベースにおいて、他のアクセスコマンドに応じた一連のアクセスが継続中かどうかを判断する（Ｓ６３０）。
【００４１】
具体的には、アクセス判断部３１０は、判別した当該データベースに対応するレコードを制御情報２５から読み出す。そのようなレコードが複数登録されている場合には、アクセス判断部３１０は、複数のレコードを読み出す。但し、Ｓ６１０において登録されたレコードは読み出し対象から除外される。そして、アクセス判断部３１０は、読み出した何れかのレコードにおいて、そのコミットの時刻が記録されていないことを条件に、当該データベースにおいて一連のアクセスが継続中であると判断する。また、アクセス判断部３１０は、読み出したそれぞれのレコードにおける「アクセス対象テーブル確認時刻」のカラムに、現在の時刻を記録する。
【００４２】
アクセスが継続中の場合には（Ｓ６３０：ＹＥＳ）、さらに、アクセス判断部３１０は、当該他のアクセスコマンドに応じた一連のアクセスが、当該データベースにレコードを挿入するアクセスであるか否かを判断する（Ｓ６４０）。この判断は、例えば制御情報２５に記録されたアクセスのタイプが「Ｉ」であるかどうかを判断することによって実現されてよい。
【００４３】
なお、アクセス判断部３１０は、レコードを挿入するアクセスに限らず、一連のアクセスが、レコードの更新を含む、データベースを更新するアクセスであるかどうかを判断してよい。但し、レコードを挿入するアクセスについては、新たな記憶領域の確保などの、比較的複雑かつ処理時間の長い制御が必要となる傾向がある。従って、少なくとも挿入のアクセスを制御の対象とすることが好ましい。これにより、排他制御の高頻度な発生による効率の低下を防止できる。
【００４４】
レコードを挿入するアクセスである場合には（Ｓ６４０：ＹＥＳ）、さらに、アクセス判断部３１０は、入力した当該ステートメントを発行したコンピュータ、即ち処理用コンピュータ１００Ａと、当該他のアクセスコマンドを発行したコンピュータとが同一か否かを判断する（Ｓ６５０）。この判断は、例えば制御情報２５に記録されたコンピュータの識別情報を参照することによって実現されてよい。
【００４５】
何れの判断も成立する場合に（Ｓ６５０：ＹＥＳ）、アクセス判断部３１０は、判別したそのデータベースに対するアクセス頻度を判断する（Ｓ６６０）。このアクセス頻度は、例えば、判別した当該データベースに対応する制御情報２５中のレコードに基づいて判断されてよい。具体的には、アクセス判断部３１０は、当該レコード中のアクセス件数を、当該レコード中のアクセスの開始時刻からコミット時刻までの間の経過時間で割り算することによって、アクセス頻度を算出してよい。
【００４６】
アクセス判断部３１０は、このようにして算出したアクセス頻度を、制御情報２５の最も右側のカラムに記録してもよい。他方、このようなアクセス頻度が予め算出されて、制御情報２５の最も右側のカラムに既に記録されている場合においては、アクセス判断部３１０は、単にそのアクセス頻度を読み出せばよい。
【００４７】
但し、同一のデータベースについて、複数のレコードが制御情報２５に記録されている場合がある。これは、即ち、そのデータベースについて一連のアクセスが複数行われたことを示している。そのような場合には、アクセス判断部３１０は、これら複数のレコードのそれぞれに基づいて、それぞれのレコードに対応する複数のアクセス頻度を算出してよいし、例えばアクセス頻度の平均値などの、１つのアクセス頻度を算出してもよい。これに代えて、アクセス判断部３１０は、同一のデータベースにアクセスした一連のアクセスが複数ある場合には、最後にコミットされた一連のアクセスのみについて、当該データベースにアクセスした頻度を算出してもよい。
【００４８】
次に、アクセス判断部３１０は、判別したそのデータベースに対するアクセス頻度が予め定められた基準値以上であるかどうかを判断する（Ｓ６７０）。この基準値は、基準値算出部３２５により算出されてよい。具体的には以下の通りである。
【００４９】
制御用コンピュータ１２０が備えるＣＰＵ１０００などの処理能力に応じて、アクセス調停部１２５により単位時間当たりに処理可能な処理量には限界がある。また、制御用コンピュータ１２０上では各種制御のための処理が既に実行中の場合があり、その限界の処理量が常に使用可能とは限らない。このため、格納部３３５は、アクセス調停部１２５により単位時間当たりに処理可能な処理量のうち未使用の処理量を順次モニターしている。一例として、格納部３３５は、制御用コンピュータ１２０のオペレーティング・システムが順次算出している、いわゆるＣＰＵ使用率（ｒ「％」）に基づき、１−ｒ「％」を、未使用の処理量として算出してよい。
【００５０】
また、アクセス調停部１２５による一度の排他制御に必要な処理量は、概ね、予め定められている。例えば、１回の排他制御において、制御用コンピュータ１２０間でα回のメッセージのやり取りが必要であるとし、また、１回のメッセージ転送時間をβ単位時間（例えばβ秒）とすると、１回の排他制御には、α×βの処理量が必要となる。
【００５１】
そして、基準値算出部３２５は、当該未使用の処理量（１−ｒ）を、一度の排他制御に必要な処理量として予め定められた処理量（α×β）で除算することで、基準値を算出する。競合するアクセスの頻度がこの基準値を超える場合には、排他制御の頻度がアクセス調停部１２５の処理能力の限界を超えて、制御用コンピュータ１２０の処理効率が著しく低下するおそれがあるからである。
【００５２】
アクセス制御部３３０は、この基準値を、Ｓ６６０において求めたアクセス頻度と比較する（Ｓ６７０）。Ｓ６６０において求めたアクセス頻度が１つだけの場合には、アクセス制御部３３０は、当該１つのアクセス頻度を基準値と比較する（Ｓ６７０）。一方、Ｓ６６０において求めたアクセス頻度が複数の場合には、アクセス制御部３３０は、例えば、当該複数のアクセス頻度のうち最も高い頻度が基準値よりも高いかどうかを判断する。この場合には、過去に生じた最も頻度の高いバッチ処理が再度発生したとしても、制御用コンピュータ１２０の効率低下を防ぐことができる。
【００５３】
そして、アクセス頻度が基準値以上であることを条件に（Ｓ６７０：ＹＥＳ）、アクセス制御部３３０は、第１のバッチ処理のために入力したアクセスコマンドによるデータベースに対するアクセスを禁止する（Ｓ６８０）。この場合には、アクセス制御部３３０は、第１のバッチ処理を中断して、当該第１のバッチ処理のうち既に実行した処理をコミットさせる（Ｓ６９０）。これにより、他のバッチ処理とのデッドロックを未然に防止できる。
【００５４】
この場合には更に、格納部３３５は、制御情報２５における対応するレコードのコミットの時刻を更新してよい。これにより、このコミット時刻に基づいて当該第１のバッチ処理のアクセス頻度を算出できる。即ち、このアクセス頻度を、他のバッチ処理の開始しようとする場合における判断に用いることができる。
【００５５】
そして、アクセス制御部３３０は、第１のバッチ処理を実行しようとするコンピュータ、例えばＤＢＭＳ１０８の処理を一定期間停止させる（Ｓ６９５）。処理を停止させるこの期間は、例えば、制御情報２５のうち対応するテーブルの「アクセス対象テーブル確認時刻」を基準として、予め定められた期間であることが好ましい。そして、一定期間の停止のあと、処理用コンピュータ１００Ａは、Ｓ６２０に処理を戻して、競合するバッチ処理が完了したかどうかを判断する。
【００５６】
一方、第２のバッチ処理が継続中でない場合（Ｓ６３０：ＮＯ）、更新系アクセスでない場合（Ｓ６４０：ＮＯ）、競合するバッチ処理が同一のコンピュータで実行されている場合（Ｓ６５０：ＮＯ）、または、アクセス頻度が基準値未満の場合（Ｓ６７０：ＮＯ）には、アクセス制御部３３０は、第１のバッチ処理の開始を許可するべく、ＤＢＭＳ１０８に通知する（Ｓ６３５）。
【００５７】
更新系アクセスでない場合にバッチ処理の開始を許可するのは、参照系アクセスでは排他制御が発生しにくいからである。また、競合するバッチ処理が同一のコンピュータで実行されている場合にバッチ処理の開始を許可するのは、そのような場合にはコンピュータ間の連係動作による排他制御が不要だからである。また、アクセス頻度が基準未満の場合にバッチ処理の開始を許可するのは、そのような場合には排他制御の頻度が低くアクセス調停部１２５により充分に処理できるからである。
【００５８】
以上、図６を参照して処理用コンピュータ１００Ａの制御システム１０９による処理の一例を説明したが、処理用コンピュータ１００Ｂ−Ｃのそれぞれにおける制御システム１０９についても略同一である。即ち、処理用コンピュータ１００Ａ−Ｃのそれぞれにおいて制御システム１０９が上記処理を独立して行う。これにより、処理用コンピュータ１００Ａ−Ｃは、競合するバッチ処理が継続中かどうかをそれぞれ判断して、継続中の場合には処理を中断することで、情報システム１０を全体として効率的に動作させることができる。
【００５９】
図７は、本実施形態に係る処理用コンピュータ１００Ａとその周辺装置のハードウェア構成の一例を示す。この構成は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。
【００６０】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００６１】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、例えば上記通信インターフェイス１０２の一例であり、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１０４０は、例えば上記データベース２０を実現し、処理用コンピュータ１００Ａが使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。
【００６２】
また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＲＯＭ１０１０は、処理用コンピュータ１００Ａの起動時にＣＰＵ１０００が実行するブートプログラムや、処理用コンピュータ１００Ａのハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００６３】
処理用コンピュータ１００Ａに提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出され処理用コンピュータ１００Ａにインストールされて実行される。プログラムが処理用コンピュータ１００Ａ等に働きかけて行わせる動作は、図１から図６において説明した処理用コンピュータ１００における動作と同一であるから、説明を省略する。
【００６４】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを処理用コンピュータ１００Ａに提供してもよい。
【００６５】
以上、本実施形態に係る情報システム１０によれば、データベースの一貫性を保持するための排他制御に加えて、バッチ処理のような連続アクセスを生じるタスクを排他的に実行させるように制御することができる。この結果、アクセスが競合しないようにタスクを人手でスケジューリングしなくても、高頻度な排他制御の発生による性能低下を防止できる。このため、例えばＥＲＰパッケージなどを利用した場合などのように、事前にアクセス対象のテーブルを特定するのが困難であって人手によるスケジューリングが難しい場合でも、情報システム１０を効率的に動作させることができる。
【００６６】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００６７】
【図１】図１は、本実施形態に係る情報システム１０の全体構成を示す。
【図２】図２は、本実施形態に係る情報システム１０の機能構成を示す。
【図３】図３は、本実施形態に係る制御システム１０９の機能構成を示す。
【図４】図４は、本実施形態に係るデータベース２０に記憶された制御情報２５のデータ構造の一例を示す。
【図５】図５は、本実施形態に係るＡＰサーバ１０５およびＤＢＭＳ１０８の処理フローの一例を示す。
【図６】図６は、本実施形態に係る制御システム１０９の処理フローの一例を示す。
【図７】図７は、本実施形態に係る処理用コンピュータ１００Ａのハードウェア構成の一例を示す。
【符号の説明】
【００６８】
１０  情報システム
２０  データベース
２５  制御情報
１００  処理用コンピュータ
１０２  通信インターフェイス
１０４  記憶部
１０５  ＡＰサーバ
１０８  ＤＢＭＳ
１０９  制御システム
１２０  制御用コンピュータ
１２５  アクセス調停部
３００  データベース判別部
３１０  アクセス判断部
３２０  頻度判断部
３２５  基準値算出部
３３０  アクセス制御部
３３５  格納部
【図１】
0005088735.tif 000002
【図２】
0005088735.tif 000003
【図３】
0005088735.tif 000004
【図４】
0005088735.tif 000005
【図５】
0005088735.tif 000006
【図６】
0005088735.tif 000007
【図７】
0005088735.tif 000008