データベース管理装置及びプログラム
【課題】データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制する。
【解決手段】口座情報DBの各レコードは、第2階層に各口座に関する情報が登録され、第3階層に各口座毎の取引明細が各々登録されるが((B)の上図参照)、各レコードの情報を、DB分割定義テーブル((A)参照)の定義情報に従い、特定の口座種に対応する特定の第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がルートセグメントの情報を起点としてリンク付けされた第1レコードと、第2階層セグメントのうち特定の口座種以外の口座種に対応する第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がダミーのルートセグメントの情報を起点としてリンク付けされた第2レコードに物理的に分割し((B)の下図参照)、分割した各々を別々のDB(ストレージ)に格納する。
【解決手段】口座情報DBの各レコードは、第2階層に各口座に関する情報が登録され、第3階層に各口座毎の取引明細が各々登録されるが((B)の上図参照)、各レコードの情報を、DB分割定義テーブル((A)参照)の定義情報に従い、特定の口座種に対応する特定の第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がルートセグメントの情報を起点としてリンク付けされた第1レコードと、第2階層セグメントのうち特定の口座種以外の口座種に対応する第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がダミーのルートセグメントの情報を起点としてリンク付けされた第2レコードに物理的に分割し((B)の下図参照)、分割した各々を別々のDB(ストレージ)に格納する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータベース管理装置及びプログラムに係り、特に、個々のレコードの情報が階層構造とされたデータベースを管理するデータベース管理装置、コンピュータをデータベース管理装置として機能させるためのデータベース管理プログラムに関する。
【背景技術】
【0002】
従来より、データベースに登録すべき情報項目を複数のセグメントに分け、これらのセグメントを、ルートセグメントを起点として階層的に関連付けた論理構造のデータベース(階層型データベース)が知られている。階層型データベースは、例えばデータベースに登録すべき多数レコードのデータのうち、特定の情報項目のデータ量が各レコード毎に一定していない等の場合にも、前記特定の情報項目に対応するセグメントのオカレンス(occurrence)の数を各レコード毎に増減させる等のように、登録すべきデータに応じて各レコードを単位としてデータ構造を柔軟に変更することができるので、登録データ量に比してデータベースの規模(データベースを記憶するために必要な記憶手段の容量)を抑制できるという特長を有している。
【0003】
上記の階層型データベースに関連して、特許文献1には、階層構造のデータに対し、個々のセグメントに選択番号と検索キーを付与すると共に、個々のセグメント毎に、選択番号と検索キーに加えて下位階層のセグメントの選択番号を登録した検索キー管理ファイルを設け、特定のセグメントの選択番号が入力されると、特定セグメントの検索キー及び下位階層のセグメントの選択番号を検索キー管理ファイルから取得し、取得した検索キーを用いてデータ検索を行うことを、下位階層が存在しない状態となる迄繰り返すことで、特定セグメント及びその下位階層のセグメントのデータを全て検索する技術が開示されている。
【0004】
また、データベースの管理に関連して、特許文献2には、データベースの物理ファイルをデータの使用頻度に応じて複数の物理ファイルに分割し、使用頻度の低い物理ファイルを他の記憶装置へ退避させ、退避させた物理ファイルを退避元の記憶装置から削除すると共に、分割した複数の物理ファイルを論理的に1つの物理ファイルとしてアクセスすることを可能とし、分割した複数の物理ファイルに対してアクセス要求があり、一部の物理ファイルが退避されている場合には、当該物理ファイルを退避先の記憶装置から復元させることでアクセス要求を実行する技術が開示されている。
【特許文献1】特開平5−35790号公報
【特許文献2】特開平8−328929号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、階層型データベースでは、情報の読み出し及び書き込みがセグメントを単位として行われるが、情報の読み出しにおける起点は常にルートセグメントであり、例えば読出対象情報のセグメントが従属階層(第2階層又はそれよりも低い階層)のセグメントであったとしても、読出対象情報の読み出しは、ルートセグメントから読出対象情報のセグメントに至る経路上の各セグメントの情報が、個々の情報に各々設定されたポインタ情報に基づいて順に読み出されることで行われる。また、階層型データベースにおいて、同一セグメントに複数のオカレンスが存在していた場合、この複数のオカレンスのうちの何れか1つの特定オカレンスのポインタ情報のみが1階層上位のセグメントの情報に設定され(1階層上位のセグメントとリンク付けされ)、他のオカレンスは特定オカレンスからディジーチェーンのように数珠繋ぎにリンク付けされる。このため、例えば読出対象のセグメントが従属セグメントで、この読出対象のセグメントに複数のオカレンスが存在しており、このうちの何れかのオカレンスが読出対象情報である場合、読出対象情報の読み出しは、ルートセグメントから読出対象のセグメントに至る経路上の各セグメントの情報を順に読み出すことで特定オカレンス(1階層上位のセグメントと直接リンク付けされたオカレンス)に到達した後に、この特定オカレンスから数珠繋ぎに関連付けられた各オカレンスを順に辿っていく(情報を順に読み出していく)ことによって成される。
【0006】
データベースを記憶する記憶装置は、論理的な入出力の単位(CI:Control Intervalという)が定められており、このCIは階層型データベースにおける個々のセグメントの数個分程度のサイズとされ、記憶装置の記憶領域は多数個のCI(単位領域)に区画されているが、上記のように読出対象のレコードの第2階層以下の階層のセグメントに多数のオカレンスが存在しており、この多数のオカレンスのうちの何れかを読み出す場合、読出対象のオカレンスが読み出される迄に、ルートセグメントの情報が格納されている単位領域を始めとして多数の単位領域にアクセスして情報を読み出す必要があるので、I/Oの回数(読み出すべき単位領域の数)が大幅に増大し、読出対象の情報の読み出しが完了する迄に長い時間がかかることになる。そして、データベースに登録されている各レコードの多数(或いは殆ど)が上記のように多数のオカレンスが存在しているレコードであった場合、データベースへのアクセス要求に対するシステムのレスポンスが悪化するという問題がある。
【0007】
一例として、第3階層の特定セグメントに500個のオカレンスが存在しているレコードから、特定セグメントの500個のオカレンスのうちの任意のオカレンスを読み出す場合、個々の単位領域のサイズが8kバイト、個々のオカレンスのサイズが1kバイト(すなわち、単一の単位領域に格納可能なオカレンスの数を8個)とすると、特定セグメントの500個のオカレンスは最小でも(個々の単位領域に詰めて格納されていたとしても)63個の単位領域に分けて格納されることになる。このため、読出対象のオカレンスが特定セグメントの500個のオカレンスの列の最後に繋がれていた場合、ルートセグメントの情報及び特定セグメントと関連付けられた第2階層のセグメントの情報が単一の単位領域に格納されていたとしても、I/Oの回数は最小で1+63=64回となる(500÷8=62.5≒63)。また、特定セグメントの個々のオカレンスが互いに異なるタイミングでデータベースに追加登録される等の場合には、500個のオカレンスがより多数個の単位領域にとびとびに格納される可能性が高く、I/Oの回数は更に増大する。
【0008】
また、データベースに対する情報の読み出しや更新等のアクセスを複数のプロセスが並列に実行する環境では、単一の単位領域に対して複数のプロセスが同時にアクセスすることで、前記単位領域に格納されている情報に矛盾が生ずることを避けるために、個々のプロセスは、処理対象の単位領域をロックする(他のプロセスが処理対象の単位領域にアクセスすることを禁止する)排他制御を行う必要がある。この場合、或るプロセスが、第1の単位領域をロックしてアクセスし、続いて第2の単位領域をロックしてアクセスする処理を行うときに、別のプロセスにより、第2の単位領域をロックしてアクセスし、続いて第1の単位領域をロックしてアクセスする処理が同タイミングで行われると、双方のプロセスが共に相手のプロセスによって処理対象の単位領域に対するロックが解除されるのを待っている状態、すなわちデッドロックが発生する。
【0009】
前述のように、第2階層以下の階層のセグメントに多数のオカレンスが存在しているレコードに対するアクセスでは、多数の単位領域がアクセスされることが多いので、登録されているレコードの多数(或いは殆ど)が上記のようなレコードであるデータベースではデッドロックが発生し易いという問題もある。
【0010】
本発明は上記事実を考慮して成されたもので、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制できるデータベース管理装置及びデータベース管理プログラムを得ることが目的である。
【課題を解決するための手段】
【0011】
請求項1記載の発明に係るデータベース管理装置は、記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段と、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段と、を備えたデータベース管理装置であって、記憶領域が多数個の単位領域に区画された第3記憶手段と、前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段と、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段と、を備えたことを特徴としている。
【0012】
請求項1記載の発明に係るデータベース管理装置は、記憶領域が入出力の論理的単位としての多数個の単位領域(CI)に区画された第1記憶手段を備えており、この第1記憶手段には、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースが記憶される。
【0013】
また、請求項1記載の発明に係るデータベース管理装置は、任意のレコードの任意のセグメントの情報のデータベースへの登録が指示される毎に、登録手段により、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域が選択され、選択された単位領域に登録対象の情報が登録されると共に、登録対象の情報と同一レコードに属しデータベースに既に登録されている特定の情報(1階層上位でかつ関連するセグメントの情報、或いは1階層上位の同一セグメントと関連する同一階層の他のオカレンスの情報)にポインタ情報が設定される。これにより、ルートセグメント以外のセグメント(従属セグメント)の情報については、個々の情報に設定されているポインタ情報に基づいて、ルートセグメントを起点にして順に辿っていく(情報を順に読み出していく)ことで、従属セグメントの情報が登録されている単位領域を特定することができる。
【0014】
そして、請求項1記載の発明に係るデータベース管理装置では、データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、読出手段により、ポインタ情報に基づいて読出対象の情報が登録されている単位領域が判断され、判断された単位領域の情報がデータベースから読み出され、読み出された情報に含まれる読出対象の情報が出力される。
【0015】
ここで、上記構成では、従属セグメントの情報が登録されている単位領域を特定するために、前述したように、個々の情報に設定されているポインタ情報に基づいて、ルートセグメントを起点にして順に辿っていく(情報を順に読み出していく)必要があるので、アクセス対象のレコードが第2階層以下の階層に複数のセグメント又はオカレンスが存在しているレコードであった場合にはI/O回数が大幅に増大する可能性が高く、データベースへのアクセスを複数のプロセスが並列に実行する環境下で、データベースに登録されているレコードの多数(或いは殆ど)が上記のようなレコードであったとすると、デッドロックが発生する恐れもある。
【0016】
これに対して請求項1記載の発明では、記憶領域が多数個の単位領域に区画された第3記憶手段と、(データベースの)論理構造において第2階層に相当する複数の第2階層セグメントのうち、第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段が設けられている。また、請求項1記載の発明に係る第2登録制御手段は、任意のレコードの任意のセグメントの情報の登録が指示された場合に、第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、登録対象の情報が第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、第3記憶手段へ登録すべき情報か否かを判定し、登録対象の情報が第3記憶手段へ登録すべき情報である場合には、任意のレコードのダミーのルートセグメントの情報が第3記憶手段に未登録であれば、任意のレコードのダミーのルートセグメントの情報を登録手段によって第3記憶手段に登録させた後に、登録対象の情報を登録手段によって第3記憶手段に登録させる。
【0017】
これにより、登録対象の情報が、第2の分割条件情報により、第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報である場合には、登録手段により、当該情報が第3記憶手段に登録されたダミーのルートセグメントの情報とポインタ情報によって関連付けられて登録されることになる。そして、請求項1記載の発明に係る第2読出制御手段は、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて読出対象の情報が第3記憶手段に登録されているか否かを判定し、読出対象の情報が第3記憶手段に登録されている場合には、読出対象の情報を読出手段によって第3記憶手段から読み出させ、読み出された読出対象の情報を出力する。
【0018】
このように、請求項1記載の発明では、データベースに登録すべき個々のレコードの情報を、第2条件情報記憶手段に記憶されている第2の分割条件情報に従い、第1記憶手段に登録すべき情報と第3記憶手段に登録すべき情報とに分割して登録しているので、データベースへのアクセス要求があった場合のアクセス対象の記憶手段が第1記憶手段と第3記憶手段とに分散されるので、デッドロックの発生を抑制することができる。また、個々の記憶手段に登録される個々のレコードの情報のサイズが小さくなるので、個々の記憶手段に登録される個々のレコードの情報がより少数の単位領域に格納されることになり、データベースへのアクセスにおけるI/O回数が削減されることで、データベースへのアクセス要求に対するシステムのレスポンスの悪化も抑制することができる。
【0019】
なお、請求項1記載の発明において、読出対象の情報が第2階層以下の下位階層のセグメントである場合、読出対象の情報の読み出し指示は、例えば(データベースの)論理構造に従いルートセグメントから読出対象の情報のセグメントに至る各セグメントの情報の読み出しが順に指示されるようにインタフェースを定めることができるが、この場合、第2読出制御手段は、例えば請求項2に記載したように、ルートセグメントの情報の読み出しが指示された後に、第2階層セグメントの情報の読み出しが指示され、当該読出対象の情報が第3記憶手段に登録されている場合には、読出対象の情報と関連付けられたダミーのルートセグメントの情報を読出手段によって第3記憶手段から読み出させた後に、読み出されたダミーのルートセグメントの情報に設定されているポインタ情報に基づいて、読出対象の情報を読出手段によって第3記憶手段から読み出させ、読み出された読出対象の情報を出力するように構成することができる。これにより、情報の読み出しを指示するにあたり、読出対象の情報が何れの記憶手段に記憶されているかを認識する必要がなくなる。
【0020】
また、請求項1記載の発明において、登録手段は、例えば請求項3に記載したように、登録対象の情報がルートセグメントの情報である場合に、該ルートセグメントに付与されたキー情報から一意に特定される第1の単位領域に登録対象のルートセグメントの情報を登録可能な空き領域が有るか否かを判断し、空き領域があれば登録対象のルートセグメントの情報を第1の単位領域に登録し、空き領域が無い場合には、所定の選択基準に従い登録対象のルートセグメントの情報を登録可能な空き領域が生じている第2の単位領域を選択し、選択した第2の単位領域に登録対象のルートセグメントの情報を登録すると共に、登録対象のルートセグメントの情報の登録位置が第2の単位領域であることを表すルート登録先情報を第1の単位領域に設定するように構成することができる。これにより、データベースに登録されているルートセグメントの情報については、当該ルートセグメントに付与されたキー情報(及び第1の単位領域に登録されたルート登録先情報)に基づいて、当該情報が登録されている単位領域を特定することができる。
【0021】
請求項4記載の発明に係るデータベース管理プログラムは、記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、記憶領域が多数個の単位領域に区画された第3記憶手段と、前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、を備え、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段、及び、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段として機能するコンピュータを、更に、任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段、及び、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段として機能させる。
【0022】
請求項4記載の発明に係るデータベース管理プログラムは、上記の第1記憶手段、第3記憶手段及び第1条件情報記憶手段を備え、上記の登録手段及び読出手段として機能するコンピュータを、上記の第2登録制御手段及び第2読出制御手段として機能させるためのプログラムであるので、上記のコンピュータが請求項4記載の発明に係るデータベース管理プログラムを実行することにより、上記のコンピュータが請求項1に記載のデータベース管理装置として機能することになり、請求項1記載の発明と同様に、デッドロックの発生を抑制することができる。
【発明の効果】
【0023】
以上説明したように本発明は、任意のレコードの任意のセグメントの情報の登録が指示された場合に、第2階層に相当する複数の第2階層セグメントのうち第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報に基づいて、登録対象の情報が第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、第3記憶手段へ登録すべき情報か否かを判定し、登録対象の情報が第3記憶手段へ登録すべき情報である場合には、任意のレコードのダミーのルートセグメントの情報が第3記憶手段に未登録であれば、任意のレコードのダミーのルートセグメントの情報を第3記憶手段に登録させた後に、登録対象の情報を第3記憶手段に登録させ、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、第2の分割条件情報に基づいて読出対象の情報が第3記憶手段に登録されているか否かを判定し、読出対象の情報が第3記憶手段に登録されている場合には、読出対象の情報を第3記憶手段から読み出させ、読み出された読出対象の情報を出力するので、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制できる、という優れた効果を有する。
【発明を実施するための最良の形態】
【0024】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。なお、以下ではまず本発明の比較例を説明する。
【0025】
〔比較例〕
図1には本比較例に係る、特定金融機関に設けられたコンピュータ・システム10が示されている。コンピュータ・システム10は、特定金融機関の情報センタ等に設置されたホスト・コンピュータ12と、特定金融機関内に構築されたコンピュータ・ネットワーク18を含んで構成されている。
【0026】
ホスト・コンピュータ12は汎用の大型コンピュータから成り、CPU12A、RAM等から成るメモリ12B、磁気ディスク等から成る不揮発性の記憶部12C、ネットワークインタフェース(I/F)部12Dを備えている。ホスト・コンピュータ12は、ネットワークI/F部12Dに接続された通信回線を介してコンピュータ・ネットワーク18(詳しくはネットワーク18内のブランチ・サーバ20)に接続されている。また、ホスト・コンピュータ12には、大容量の磁気ディスク等から成る第1ストレージ14及び第2ストレージ16が各々接続されている。第1ストレージ14には口座情報第1データベース(口座情報第1DB)を記憶するための記憶領域が設けられており、第2ストレージ16には口座情報第2データベース(口座情報第2DB)を記憶するための記憶領域が設けられている。なお、第1ストレージ14に記憶される口座情報第1DBと第2ストレージ16に記憶される口座情報第2DBは、各々を区別するために異なる物理DB名が付与されているが、論理的には単一のデータベース(顧客が特定金融機関に開設した口座に関する情報を登録・管理するための口座情報DB)として扱われる。
【0027】
また、ホスト・コンピュータ12の記憶部12Cには、ホスト・コンピュータ12をDB制御部として機能させるためのDB制御プログラム、ホスト・コンピュータ12をアプリケーション制御部として機能させるためのアプリケーション制御プログラム、ホスト・コンピュータ12をDB操作アプリケーション部として機能させるためのDB操作アプリケーション・プログラムが各々記憶されている。また、記憶部12CにはDB分割定義テーブル(詳細は後述)が記憶されている。DB分割定義テーブルは、ホスト・コンピュータ12の電源が投入されると記憶部12Cから読み出されてメモリ12Bに書き込まれることでメモリ12B上に常駐し、後述するアプリケーション制御処理を行うアプリケーション制御部によって参照される。
【0028】
一方、コンピュータ・ネットワーク18は、特定金融機関の各支店に各々設置されたブランチ・サーバ20(PC、ワークステーション、大型コンピュータの何れでもよい)が通信回線を介して互いに接続されて構成されており、個々のブランチ・サーバ20には、個々のブランチ・サーバ20と同一の支店に設置された複数台のATM(Automatic Teller Machine:現金自動預け払い機)22及び複数台の営業店端末(金融機関の従業員が操作するための端末)24が各々接続されている。ATM22には、特定金融機関に口座を開設している顧客が所持しているキャッシュカードを装填可能で、装填されたキャッシュカードに磁気的に記録された情報を読み取り可能なカードリーダが取り付けられており、営業店端末24には、特定金融機関に口座を開設している顧客が所持している通帳を装填可能で、装填された通帳に磁気的に記録された情報を読み取り可能で、且つ任意の情報を通帳に記録することも可能な記帳機が取り付けられている。
【0029】
次に本比較例の作用を説明する。本比較例に係る口座情報DBは、顧客が特定金融機関に開設した口座に関する情報を登録・管理するためのデータベースであり、単一の顧客の情報が単一のレコードとして登録される。また口座情報DBは階層型のデータベースであり、個々のレコードは、図2(A)に示すように、予め定められた互いに異なるカテゴリの情報を設定するための複数のセグメントが、最上位階層のセグメント(ルートセグメント)を起点として階層的に関連付けられた論理構造を有している。上記の論理構造における各セグメントのうち、ルートセグメントは、口座情報DBに情報を登録する全ての顧客について生成・登録されるセグメントである。図2(B)に示すように、口座情報DBに登録される個々のセグメントの情報は、各種の制御情報やポインタ情報が設定されるヘッダ、個々のセグメントを識別するためのキー情報、及び、本体情報から構成されているが、ルートセグメントでは、上記の本体情報として顧客ID等の顧客の属性情報が設定される。
【0030】
また、第2階層のセグメントは、個々の顧客が特定金融機関に開設した個々の口座に関する情報を登録するためのセグメントであり、個々のレコードには、第2階層セグメントとして、対応する顧客が特定金融機関に開設した口座の数と同数のセグメントが各々生成・登録される。個々の第2階層セグメントは、対応する顧客が特定金融機関に開設した各口座のうち互いに異なる口座に対応しており、個々の第2階層セグメントの本体情報には、対応する口座の口座番号や残高等の情報が設定される。個々の第2階層セグメントは、論理的にはルートセグメントと各々関連付けされている。
【0031】
また、第3階層セグメントは、個々の顧客が特定金融機関に開設した特定口座を対象とした金融取引の明細を登録するためのセグメントであり、個々の第3階層セグメントは任意の数のオカレンスを作成・登録可能とされている。また、個々の第3階層セグメントは第2階層の各セグメントのうち同一の口座に対応する第2階層セグメントと論理的に関連付けされており、任意の顧客の任意の口座を対象とした金融取引が発生する毎に、前記任意の顧客に対応する特定レコードに、前記任意の口座に対応する特定の第2階層セグメントと関連付けられた第3階層セグメントの情報として、発生した金融取引の明細を表す取引明細情報が本体情報に設定されたオカレンスが作成・登録される。
【0032】
口座情報DBに対する情報の登録、読み出し、更新等のアクセスはDB制御部によって行われる。図3(A)に示すように、口座情報DBを記憶するための第1ストレージ14及び第2ストレージ16の記憶領域は、入出力の論理的単位としての一定サイズの多数個の単位領域(CI)に区画されていると共に、記憶領域全体が基本域と従属あふれ域、独立あふれ域に分けられており、個々の単位領域には各々アドレスが付与されている。DB制御部は、口座情報DBへの情報の登録が指示され、登録対象の情報がルートセグメントの情報であった場合、該登録対象のルートセグメントの情報と共に通知されたルートセグメントのキー情報に基づき、キー情報のハッシュ値を計算する等のアルゴリズムにより、基本域内の各単位領域のうち登録対象のルートセグメントの情報を格納すべき単位領域のアドレス(キー情報から一意に定まるアドレス)を導出する。
【0033】
但し、予め想定した顧客の最大数(に応じて定まるキー情報の桁数)にも依存するが、基本域内の単位領域の数を顧客の最大数だけ確保することは困難であるので、上記のアルゴリズムは、互いに異なる複数種のキー情報から同一のアドレスが導出されるように定められている。一方、図3(B)にも示すように、個々の単位領域は複数のセグメントの情報を格納可能なサイズ(例えば単一のセグメントの情報の最大サイズ1kバイトに対し、該情報を8個程度格納可能な8kバイト)とされているが、個々の単位領域に情報を格納可能なセグメントの数には限りがあり、また基本域内の単位領域に従属セグメントの情報も格納されることがあるので、導出したアドレスが付与された特定の単位領域に、登録対象のルートセグメントの情報を格納可能な空き領域が無い可能性もある。
【0034】
このため、DB制御部は単位領域のアドレスを導出すると、当該単位領域に登録対象のルートセグメントの情報を格納可能な空き領域が有るか否かを確認する。そして、前記空き領域があれば、導出したアドレスが付与された特定の単位領域に登録対象のルートセグメントの情報を格納する。また、前記空き領域が無い場合には、従属あふれ域内の各単位領域のうち特定の単位領域と同一列の単位領域群(図3(A)の「情報格納対象CI列」も参照)の中から、登録対象のルートセグメントの情報を格納する単位領域を選択し、選択した単位領域に登録対象のルートセグメントの情報を格納すると共に、基本域内の特定の単位領域に設けられた制御情報格納領域に、登録対象のルートセグメントの情報の格納位置を指し示すポインタ情報(単位領域のアドレスとオフセットを表す情報)を、登録対象のルートセグメントのキー情報と対応付けて登録する。なお、制御情報格納領域にはキー情報とポインタ情報を複数組登録可能とされており、制御情報格納領域にキー情報とポインタ情報が複数組登録される際にはキー情報の昇順(降順でもよい)にソートされる。
【0035】
またDB制御部は、口座情報DBへの情報の登録が指示され、登録対象の情報が従属セグメントの情報であった場合、ルートセグメントの情報を登録する場合と同様にして、登録対象の従属セグメントの情報を格納可能な空き領域が有る単位領域を探索する(優先順位が最も高い単位領域は登録対象の情報の格納位置を指し示すポインタ情報が設定されるセグメントの情報が既に登録された単位領域であり、該単位領域に空き領域がない場合に一定のロジックに従って他の単位領域が探索される)。なお、従属セグメントの情報の登録(又は読み出し又は更新)が指示される際には、前述した論理構造においてルートセグメントから処理対象のセグメントに至る経路上の各セグメントの情報を順次登録又は読み出す指示が事前に入力されるので、これらの指示に応じた処理の履歴を記憶しておくことで、登録対象の従属セグメントと同一レコードのルートセグメントのキー情報は容易に認識できる。そして、探索によって抽出された単位領域に登録対象の従属セグメントの情報を格納すると共に、登録対象の従属セグメントの情報の格納位置を指し示すポインタ情報を、登録対象の従属セグメントと同一のレコードに属し、かつ口座情報DBに既に登録されているセグメントの情報のヘッダに設定する。
【0036】
なお、ヘッダにポインタ情報を設定するセグメントの情報は以下のようにして選択される。すなわち、登録対象の従属セグメントは1階層上位の特定セグメントと論理的に関連付けられているが(この特定セグメントを親セグメントと称する)、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスが口座情報DBに登録されていない場合には、登録対象の従属セグメントの情報のポインタ情報を親セグメントの情報のヘッダに設定する。また、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスの情報が口座情報DBに1個のみ登録されている場合には、登録対象の従属セグメントの情報のポインタ情報を当該他のオカレンスの情報のヘッダに設定する。
【0037】
また、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスが口座情報DBに複数登録されている場合(該当するオカレンスが複数登録されているか否かは、親セグメントのヘッダに設定されたポインタ情報が指し示す他のオカレンスのヘッダに、同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かに基づいて判断できる)には、親セグメントのヘッダに設定されたポインタ情報が指し示す他のオカレンスの情報のヘッダに設定されている同セグメントの他のオカレンスを指し示すポインタ情報を参照し、当該ポインタ情報が指し示すオカレンスのヘッダに同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かを判定し、ポインタ情報が設定されている場合には、当該ポインタ情報が指し示す他のオカレンスのヘッダに同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かを判定することを繰り返すことで、同一セグメントの他のオカレンスを指し示すポインタ情報がヘッダに設定されていない他のオカレンス(同一セグメントのオカレンスの列のうちの最後に位置しているオカレンス)を探索し、この探索によって抽出されたオカレンスのヘッダに、登録対象の従属セグメントの情報(追加登録するオカレンス)を指し示すポインタ情報を設定する。これにより、登録対象の従属セグメントの情報が、ポインタ情報によってリンク付けされたオカレンスの既存の列の最後にリンク付けされる。
【0038】
DB制御部が上記処理を行うことで、図2(B)にも示すように、口座情報DBに登録されている各レコードの情報は、口座情報DBに登録されている各セグメントの情報のうち、1階層下位でかつ関連するセグメントの情報が口座情報DBに登録されているセグメントの情報のヘッダに、1階層下位でかつ関連する各セグメントの情報の格納位置を指し示すポインタ情報が各セグメントについて1つずつ各々設定される(ルートセグメントを参照)と共に、同一セグメントの情報が口座情報DBに複数登録されている場合(複数のオカレンスが存在している場合)には、これらの複数のオカレンスのヘッダにポインタ情報が各々設定されることで、親セグメントの情報のヘッダに対応するポインタ情報が設定されているオカレンスを先頭として、同一セグメントのオカレンスの列が形成された物理構造となる。なお、DB制御部による上述した処理は本発明に係る登録手段(詳しくは請求項3に記載の登録手段)に対応している。
【0039】
口座情報DBからの情報の読み出しについては、口座情報DBからのルートセグメントの情報の読み出しが指示された場合、DB制御部は、上記指示と共に通知された読出対象のルートセグメントのキー情報から一意に定まる単位領域のアドレスを導出し、導出したアドレスが付与された単位領域に対するアクセスをロックした後に当該単位領域の情報を読み出し、読み出した情報の中に読出対象のルートセグメントの情報が存在しているか否か判定する。読み出した情報の中に読出対象のルートセグメントの情報が存在していた場合には、この情報を出力すると共に前記単位領域に対するアクセスのロックを解除するが、読出対象のルートセグメントの情報が含まれていなかった場合には、読み出した情報から制御情報格納領域に設定されているポインタ情報(読出対象のルートセグメントのキー情報と対応付けられているポインタ情報)を抽出し、抽出したポインタ情報が指し示す単位領域に対するアクセスをロックした後に当該単位領域の情報を読み出し、読み出した情報に含まれる読出対象のルートセグメントの情報を出力すると共に、読み出し完了後に各単位領域に対するアクセスのロックを解除する。
【0040】
また、従属セグメントの情報の読み出しが指示される際には、前述した論理構造においてルートセグメントから読出対象のセグメントに至る経路上の各セグメントの情報を順次読み出す指示が事前に入力される。このため、口座情報DBからの従属セグメントの情報の読み出しが指示された場合、DB制御部は、前回の読出指示によって読み出した情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、認識した単位領域が前回読み出しを行った単位領域と同一であれば、前回読み出した情報に含まれる前記ポインタ情報が指し示す特定情報を参照し、認識した単位領域が前回読み出しを行った単位領域と相違していれば、認識した単位領域に対するアクセスをロックした後に前記単位領域の情報を読み出し、読み出した情報に含まれる前記ポインタ情報が指し示す特定情報を参照する。そして、参照した特定情報に設定されているキー情報が読出指示と共に通知された読出対象の従属セグメントの情報のキー情報と一致しているか否か判定する。キー情報が一致していた場合は前記特定情報は読出対象の従属セグメントの情報であるので、当該特定情報を読出対象の従属セグメントの情報として出力すると共に、読み出し完了後に前記単位領域に対するアクセスのロックを解除する。
【0041】
また、読出対象の従属セグメントの情報が、同一セグメントの情報として登録されて列を形成している複数のオカレンスの何れかである場合には、前回の読出指示によって読み出した情報のヘッダに設定されているポインタ情報は読出対象のオカレンスとは別のオカレンスの情報である可能性が高く、この場合、前述のキー情報は不一致となる。キー情報が不一致となった場合には、特定情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、必要に応じて単位領域の情報の読み出しを行って上記ポインタ情報が指し示す次の特定情報を参照し、キー情報が一致しているか否かを判定することを、キー情報が一致している情報が出現する迄繰り返し(この処理により、同一セグメントのオカレンスの列が順に参照されることになる)、キー情報が一致した情報を読出対象のオカレンスとして出力する。なお、DB制御部による上述した処理は本発明に係る読出手段に対応している。
【0042】
なお、口座情報DBに対する情報の更新については、口座情報DBからの更新対象の情報の読み出しが指示された後に、続いて前記情報の更新が指示されるので、DB制御部は、前回の読出指示により口座情報DBからの読み出しを行った情報を、通知された更新対象の情報で上書きすることで、口座情報DBに対する情報の更新を行う。
【0043】
また、口座情報DBに対する情報の登録、読み出し、更新等のアクセスは、例えば新規顧客によって特定金融機関の口座開設が指示されたり、特定金融機関に既に口座を開設している顧客によって別口座の開設が指示されたり、顧客から入金・残高照会・預金の引き出し・振込・振替等の金融取引の実行が指示されたことを契機として、口座情報DBへのアクセスを要求する電文がATM22又は営業店端末24から送信され、この電文がコンピュータ・ネットワーク18やブランチ・サーバ20を経由してホスト・コンピュータ12で受信されることによって行われる。ホスト・コンピュータ12では、口座情報DBへのアクセスを要求する電文を受信する毎に、DB操作アプリケーション部により、受信した電文の要求に基づき、アプリケーション制御部を介してDB制御部へ口座情報DBへのアクセスを指示すると共に、アプリケーション制御部を介してDB制御部からアクセス結果を受け取り、口座情報DBに対する要求されたアクセスが完了すると、要求元のATM22又は営業店端末24へ応答(電文)を送信するDB操作処理を行う。
【0044】
具体的には、例えば新規顧客によって特定金融機関の口座が開設が指示され、この指示に基づき営業店端末24から送信された電文により、口座情報DBへの情報登録が要求された場合、図4(A)に示すように、DB操作アプリケーション部は、まず新規顧客の属性情報をルートセグメントの情報として口座情報DBへ登録するようアプリケーション制御部へ指示する(図4(A)のステップ30も参照)。なお、DB操作アプリケーション部による口座情報DBへの情報の登録指示では、登録対象DB(この場合は口座情報DB)の論理DB名、登録対象の情報のセグメント名(セグメントの階層を識別するための名称)及び登録対象データ(キー情報や本体情報)がパラメータとしてアプリケーション制御部へ引き渡される。
【0045】
アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力されたパラメータのうちの論理DB名をDB制御部が認識可能な物理DB名へ変換し(詳細は後述するが、ルートセグメントの情報は口座情報第1DBに登録されるので、この場合は論理DB名が口座情報第1DBの物理DB名へ変換される)た後に、入力された指示をDB制御部へ伝達する(図4(A)のステップ32も参照)。これにより、DB制御部によって口座情報DB(詳しくは第1ストレージ14に記憶されている口座情報第1DB)へのルートセグメントの情報の登録が行われる(図4(A)のステップ34も参照)。口座情報DBへのルートセグメントの情報の登録が完了すると、DB制御部はアプリケーション制御部へ処理完了を通知し(図4(A)のステップ36も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(A)のステップ38も参照)。
【0046】
口座情報DBへのルートセグメントの情報の登録が完了すると、続いてDB操作アプリケーション部は、新規顧客が開設した口座の情報を第2階層セグメントの情報として口座情報DBへ登録するようアプリケーション制御部へ指示する(図4(A)のステップ40も参照)。アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名(この場合も口座情報第1DBの物理DB名)へ変換した後に、入力された指示をDB制御部へ伝達する(図4(A)のステップ42も参照)。これにより、DB制御部によって口座情報DB(詳しくは第1ストレージ14に記憶されている口座情報第1DB)へ第2階層セグメントの情報が登録されると共に、今回登録した第2階層セグメントの情報の格納位置を指し示すポインタ情報が、前回の処理(ステップ34)で口座情報DBに登録したルートセグメントの情報のヘッダに設定される(図4(A)のステップ44も参照)。
【0047】
口座情報DBへの第2階層セグメントの情報の登録が完了すると、DB制御部はアプリケーション制御部へ処理完了を通知し(図4(A)のステップ46も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(A)のステップ48も参照)。これにより、新規顧客によって特定金融機関の口座が開設が指示された場合の口座情報DBへの情報登録が完了するので、DB操作アプリケーション部は情報登録要求元の営業店端末24へ処理完了を通知し、DB操作処理を終了する。
【0048】
また、例えば特定金融機関に口座を開設している顧客によってATM22が操作されることで、顧客が開設している特定口座の残高照会が指示され、この指示に基づきATM22から送信された電文により、口座情報DBからの情報読み出しが要求された場合、図4(B)に示すように、DB操作アプリケーション部は、まず前記顧客に対応するレコードのルートセグメントの情報を口座情報DBからの読み出すようアプリケーション制御部へ指示する(図4(B)のステップ50も参照)。なお、DB操作アプリケーション部による口座情報DBからの情報の読出指示では、読出対象DB(口座情報DB)の論理DB名、読出対象の情報のセグメント名、読出対象の情報に付与されたキー情報及び読出情報格納領域のアドレス(ポインタ)がパラメータとしてアプリケーション制御部へ引き渡される。
【0049】
アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名へ変換した後に、入力された指示をDB制御部へ伝達する(図4(B)のステップ52も参照)。これにより、DB制御部によって口座情報DB(詳しくは第1ストレージ14に記憶されている口座情報第1DB)からのルートセグメントの情報の読み出しが行われる(図4(B)のステップ54も参照)。口座情報DBからのルートセグメントの情報の読み出しが完了すると、DB制御部は、読み出した情報を通知されたアドレスの格納領域に書き込んだ後にアプリケーション制御部へ処理完了を通知し(図4(B)のステップ56も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(B)のステップ58も参照)。
【0050】
口座情報DBからのルートセグメントの情報の読み出しが完了すると、続いてDB操作アプリケーション部は、残高照会が要求されている口座に対応する第2階層の特定セグメントの情報を口座情報DBから読み出すようアプリケーション制御部へ指示する(図4(B)のステップ60も参照)。アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名(この場合も口座情報第1DBの物理DB名)へ変換した後に、入力された指示をDB制御部へ伝達する(図4(B)のステップ62も参照)。これにより、DB制御部は、前回の処理(ステップ54)で口座情報DBから読み出したルートセグメントの情報のヘッダに設定されているヘッダが指し示す第2階層セグメントの情報を読み出し、読み出した情報に設定されているキー情報が通知されたキー情報と一致しているか否かを判断することで読み出した情報が読出対象の第2階層セグメントの情報か否か判定する。また、この判定が否定された場合には、読出対象の第2階層セグメントに複数のオカレンスが存在しているので(例えば同一の顧客が同一種の口座を複数開設している等の場合)、読み出した情報のヘッダに設定されているポインタ情報が指し示す同一セグメントの別のオカレンスを読み出し、読み出したオカレンスが読出対象の情報か否かを判定することを繰り返す。
【0051】
そして、上記の処理を行うことで読出対象の第2階層セグメントの情報を口座情報DBから読み出すと、DB制御部は、読み出した情報を通知されたアドレスの格納領域に書き込んだ後にアプリケーション制御部へ処理完了を通知し(図4(B)のステップ66も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(B)のステップ68も参照)。上記処理によって読み出された情報には、残高照会が要求された口座の残高を表す情報が含まれているので、DB操作アプリケーション部は、読み出された情報を編集した後に残高照会要求元のATM22へ送信し、DB操作処理を終了する。
【0052】
ところで、ATM22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間は、要求されたアクセスが完了する迄に必要なI/Oの回数(登録や読み出し、更新を行う単位領域の個数)によって大きく左右され、I/O回数が増大するに従って、ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスが低下し、ATM22や営業店端末24の待ち時間も増大する。これに対し、口座情報DBに登録される各レコードの情報のうちの第3階層セグメントについては、対応する顧客からの指示により新たな金融取引が行われる毎に、対応する新たな取引明細がオカレンスとして追加登録されるので、オカレンスの数が非常に多くなり易いという性質を有している。口座情報DBに対しては取引明細を合算する等のバッチ処理が定期的に行われ、このバッチ処理の実行直後は第3階層セグメントのオカレンスの数は非常に少ない状態となっているが、顧客によっては、次にバッチ処理が行われる迄の間に第3階層セグメントのオカレンスが1000〜2000個も追加登録されることもある。
【0053】
また、前述のように、同一の顧客の同一の口座の取引明細はオカレンスの列として直列にリンク付けされており、オカレンスの列の中の特定のオカレンス(特定の取引明細)へのアクセスが要求された場合には、オカレンスの列を順に辿っていくことでアクセス対象のオカレンスが探索される。本比較例では、単一の単位領域に格納可能なオカレンスの数が8個程度であるので、多数個のオカレンスから成るオカレンスの列の中から特定のオカレンスへのアクセスが要求された場合、要求されたアクセスを完了させるために必要なI/Oの回数が非常に多くなる可能性が高い。例えば500個のオカレンスから成るオカレンスの列の最後のオカレンス(取引明細)へのアクセスが要求された場合、単一の単位領域に格納可能なオカレンスの数を8個とすると、500個のオカレンスは最小でも63個の単位領域に分けて格納されるので、ルートセグメントの情報及び500個のオカレンスが登録されている第3階層セグメントと関連する第2階層のセグメントの情報が単一の単位領域に格納されていたとしても、I/Oの回数は最小で1+63=64回となる。このように、多数個のオカレンスから成るオカレンスの列がI/Oの回数の大幅な増大を招き、データベース・システムのレスポンスの低下、ATM22や営業店端末24の待ち時間の増大を引き起こしていた。
【0054】
また、コンピュータ・ネットワーク18には多数台のATM22及び営業店端末24が接続されており、口座情報DBに対するアクセスは個々のATM22、営業店端末24から非同期に要求されることから、ホスト・コンピュータ12では、アクセス要求が集中した場合にも、個々のATM22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間が大幅に増大することを回避する(ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスを速くする)ために、個々のATM22や営業店端末24から口座情報DBに対するアクセスが要求される毎に、要求されたアクセスを行うプロセスを生成し、複数のプロセスを並列に処理することで、個々のATM22や営業店端末24からのアクセス要求を並列に処理している。
【0055】
個々のプロセスによる口座情報DBへのアクセスは非同期に行われ、またアクセス対象の単位領域もランダムであるので、特定の単位領域に対して複数のプロセスが同時にアクセスすることで、特定の単位領域に格納されている情報に矛盾が生ずることを避けるために、DB制御部は、個々のプロセスにおいて、アクセス対象の単位領域をロックする(他のプロセスのDB制御部が処理対象の単位領域にアクセスすることを禁止する)排他制御を行っている。但し、この排他制御に伴ってデッドロックが発生する可能性がある。
【0056】
例えば図5に示すように、レコードxにアクセスするプロセスA(のDB制御部)が、まずレコードxの第n階層のセグメントの情報が格納されている単位領域iをロックし、単位領域iの情報を読み出した後に、レコードxの第n階層のセグメントの情報のヘッダに設定されているポインタ情報に基づき、レコードxの第n+1階層のセグメントの情報が格納されている単位領域jにアクセスしようとしたときに、レコードyにアクセスする別のプロセスB(のDB制御部)が、レコードyの第m階層のセグメントの情報が格納されている単位領域jをロックし、単位領域jの情報を読み出した後に、レコードyの第n+1階層のセグメントの情報のヘッダに設定されているポインタ情報に基づき、レコードyの第m+1階層のセグメントの情報が格納されている単位領域iにアクセスしようとしていた場合、プロセスAはプロセスBによる単位領域jのロックが解除されるのを待機する状態になる一方、プロセスBはプロセスAによる単位領域iのロックが解除されるのを待機する状態になる(デッドロック)。
【0057】
このデッドロックは、1回のアクセス要求に対するI/Oの回数が多くなる程発生し易いが、口座情報DBは、前述のように第3階層セグメントのオカレンスの数が非常に多くなり易く、多数個のオカレンスから成るオカレンスの列がI/Oの回数の大幅な増大を招くのでデッドロックが発生し易いという問題もある。
【0058】
このため本比較例では、口座情報DB(の各レコード)を、多数のオカレンスが登録される第3階層とその1階層上位の第2階層との境界で分割し、第3階層の情報を口座情報第2DBに登録すると共に、口座情報第2DBに登録した第3階層の情報のインデックス情報を口座情報第1DBに登録することによって上記の問題を解決している(なお、上記のように特定の階層の境界で各レコードを分割し、各々を異なるDBに登録する(異なるストレージに記憶させる)ことをインデックス分割と称する)。
【0059】
すなわち、記憶部12Cに記憶されているDB分割定義テーブルには、図6(A)に示すように、口座情報第1DBへの登録対象のセグメントとして、口座情報DBの各レコードを構成するルートセグメント、第2階層セグメント及び第3階層セグメントが、セグメント名等の定義情報と対応付けて登録されているが、第3階層セグメントには、インデックス分割の適用を指定する情報(図では「インデックス分割:ON」と表記)と、分割先が口座情報第2DBに登録されるセグメントdであることを指定する情報(図では「分割先:第2DBのセグメントd」と表記)が定義情報に付加されており、更に、セグメントdが口座情報第2DBにルートセグメントとして登録されるセグメントであることを意味する情報も登録されている。
【0060】
次に、上記のDB分割定義テーブルに従い、アプリケーション制御部によって実行されるアプリケーション制御処理について図7のフローチャートを参照して説明する。なお、このアプリケーション制御処理は、DB操作アプリケーション部から口座情報DBへのアクセス(情報の登録、読み出し、更新の何れか)が指示される毎に実行される。ステップ150では、指示されたアクセスが口座情報DBに対する情報の登録か読み出しか更新かを判定し、判定結果に応じて分岐する。指示された要求が口座情報DBに対する情報の登録である場合はステップ152へ移行し、メモリ12Bに記憶されているDB分割定義テーブルを参照し、DB操作アプリケーション部からパラメータとして通知されたセグメント名に基づき、登録対象のセグメントに対応する定義情報を取り込む。そしてステップ154では、ステップ152で取り込んだ定義情報に基づき、登録対象の情報がインデックス分割の対象か否か判定する。
【0061】
登録対象の情報がルートセグメント又は第2階層セグメントの情報であった場合には、判定が否定されてステップ162へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の情報をDB制御部へ転送することで、DB制御部に対し、登録対象の情報を口座情報第1DBへ登録するよう指示する。そして、DB制御部から登録完了が通知されるとステップ164へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。このように、登録対象の情報がルートセグメント又は第2階層セグメントの情報であった場合、登録対象の情報は従来通り口座情報第1DBに登録される。
【0062】
一方、特定金融機関に既に開設されている口座に対して新たな取引が発生し、口座情報DBへの取引明細の追加登録が要求された等の場合には、図8のステップ70〜ステップ88に示すように、DB操作アプリケーション部により、ルートセグメント及び第2階層セグメントの情報の読み出しが順次指示された後に、口座情報DBへの取引明細(第3階層セグメントのオカレンス)の登録が指示される(図8のステップ90)。図6(A)に示したDB分割定義テーブルには、第3階層セグメントはインデックス分割の適用対象として登録されているので、この場合、前述のステップ154の判定が肯定されてステップ156へ移行し、登録対象の情報のインデックス情報を生成する(図8のステップ92も参照)。図6(B)にも示すように、本比較例に係るインデックス情報は登録対象の情報から本体情報を除去しヘッダとキー情報のみを残したフォーマットとされており、登録対象の情報に比較してサイズが大幅に小さく(例えば登録対象の情報が1kバイトなのに対して30バイト程度)、ステップ156では登録対象の情報から本体情報を除去することで登録対象の情報のインデックス情報を生成する。なお、インデックス情報のフォーマットは上記に限られるものではなく、例えばヘッダとキー情報に、登録対象の情報に本体情報として設定されているテキスト情報の一部のみを抽出した要約情報を加えたフォーマットを採用してもよい。
【0063】
次のステップ158では、登録対象DBの物理DB名として口座情報第1DBの物理DB名を設定したパラメータをDB制御部へ引き渡すと共に、ステップ156で生成した登録対象の情報のインデックス情報をDB制御部へ転送することで、DB制御部に対し、前記インデックス情報を口座情報第1DBへ登録するよう指示する(図8のステップ94も参照)。これにより、DB制御部は登録対象の情報のインデックス情報を口座情報第1DBに登録すると共に、登録対象の情報自体を登録する場合と同様にして選択した情報のヘッダに、登録したインデックス情報の格納位置を指し示すポインタ情報を設定し(図8のステップ96も参照)、アプリケーション制御部へ応答を返す(図8のステップ98も参照)。アプリケーション制御部では、DB制御部からインデックス情報の登録完了が通知されると次のステップ160へ移行し、まず登録対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、登録対象の情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名(図6(A)の例では「d」)を設定し、登録対象の情報のキー情報として、ルートセグメントのキー情報、第2階層セグメントのキー情報、及び登録対象の情報の元のキー情報を羅列した新たなキー情報を生成・設定する。そして、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の情報をDB制御部へ転送することで、登録対象の情報を口座情報第2DBへ登録するようDB制御部へ指示する(図8のステップ100も参照)。
【0064】
これにより、DB制御部では、アプリケーション制御部から通知されたパラメータの中に、ルートセグメントのセグメント名が設定されていることに基づき、登録対象の情報(本来は第3階層セグメントのオカレンスとして登録すべき取引明細)を、口座情報第2DB(第2ストレージ16)にルートセグメントの情報として登録する(図8のステップ102も参照)。すなわち、第2ストレージ16の記憶領域に設けられている基本域内の個々の単位領域のうち、通知されたキー情報(ルートセグメント、第2階層セグメント及び登録対象の情報のキー情報を羅列した新たなキー情報)から一意に定まるアドレスが付与された特定の単位領域に登録対象の情報を登録する。そして、口座情報第2DBへの情報の登録が完了するとアプリケーション制御部へ登録完了を通知する(図8のステップ104も参照)。アプリケーション制御部では、DB制御部から登録完了が通知されるとステップ164へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し(図8のステップ106も参照)、処理を終了する。このように、登録対象の情報が第3階層セグメントの情報(オカレンス)であった場合には、登録対象の情報のインデックス情報が口座情報第1DBに登録されると共に、登録対象の情報自体は口座情報第2DBに登録される。
【0065】
そして、口座情報DBへの情報の登録が指示される度にアプリケーション制御部が上記処理を行うことで、図6(B)にも示すように、口座情報DBに登録されている各レコードの情報は、口座情報DBに登録されている第2階層セグメントの情報のうち、関連する取引明細が口座情報DB(の口座情報第2DB)に登録されているセグメントの情報には、関連する単一の取引明細のインデックス情報の格納位置を指し示すポインタ情報がヘッダに設定されると共に、関連する取引明細が口座情報DBに複数登録されている場合には、これらの複数の取引明細に対応する個々のインデックス情報のヘッダにポインタ情報が各々設定されることで、関連する第2階層セグメントの情報のヘッダに対応するポインタ情報が設定されているインデックス情報を先頭として、インデックス情報の列が形成された物理構造となる。また、口座情報第2DB上での個々の取引明細の格納位置(単位領域のアドレス)は、対応するインデックス情報に設定されたキー情報から導出可能であるので、個々の取引明細は対応するインデックス情報と各々関連付けされていることになる。
【0066】
続いて、アプリケーション制御処理のうち、口座情報DBからの情報の読み出しがDB操作アプリケーション部より指示された場合の処理を説明する。指示されたアクセスが情報の読み出しである場合には、ステップ150からステップ166へ移行し、前述したステップ152と同様にDB分割定義テーブルを参照し、DB操作アプリケーション部から通知されたセグメント名に基づき、読出対象の情報のセグメントに対応する定義情報を取り込む。そしてステップ168では、ステップ166で取り込んだ定義情報に基づき、読出対象の情報がインデックス分割の対象か否か判定する。
【0067】
読出対象の情報がルートセグメント又は第2階層セグメントの情報であった場合には、判定が否定されてステップ174へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、口座情報第1DBから読出対象の情報を読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ176へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共にDB制御部によって口座情報DB(の口座情報第1DB)から読み出された情報をDB操作アプリケーション部へ転送し、処理を終了する。このように、読出対象の情報がルートセグメント又は第2階層セグメントの情報であった場合には、従来通り口座情報第1DBに対して情報の読み出しが行われる。
【0068】
一方、口座情報DBからの取引明細の読み出しが要求された等の場合には、図9のステップ110〜ステップ128に示すように、DB操作アプリケーション部により、ルートセグメント及び第2階層セグメントの情報の読み出しが順次指示された後に、口座情報DBからの取引明細(第3階層セグメントのオカレンス)の読み出しが指示される(図9のステップ130)。この場合、前述のように第3階層セグメントはインデックス分割の適用対象であり、前述のステップ168の判定が肯定されてステップ170へ移行し、読出対象DBの物理DB名として口座情報第1DBの物理DB名を設定したパラメータをDB制御部へ引き渡すことで、DB制御部に対し、設定したパラメータに対応する情報、すなわち読出対象の情報のインデックス情報を口座情報第1DBから読み出すよう指示する(図9のステップ132も参照)。
【0069】
これにより、DB制御部は、前回の読出指示によって読み出した第2階層セグメントの情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、認識した単位領域が前回読み出しを行った単位領域と同一であれば、前回読み出した情報に含まれる前記ポインタ情報が指し示すインデックス情報を参照し、認識した単位領域が前回読み出しを行った単位領域と相違していれば、認識した単位領域の情報を読み出し、読み出した情報に含まれる前記ポインタ情報が指し示すインデックス情報を参照する。そして、参照したインデックス情報に設定されているキー情報が通知されたキー情報と一致しているか否か判定する。キー情報が不一致であれば、参照したインデックス情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、必要に応じて単位領域の情報の読み出しを行って前記ポインタ情報が指し示す次のインデックス情報を参照し、キー情報が一致しているか否かを判定することを、キー情報が一致しているインデックス情報が出現する迄繰り返すことで、キー情報が一致しているインデックス情報を探索し、該当するインデックス情報をアプリケーション制御部へ転送してインデックス情報の読出完了を通知する(図9のステップ134,136)。
【0070】
なお、DB制御部による上記のインデックス情報の探索・読み出し処理では、インデックス情報の列が順に参照されることになるが、インデックス情報のサイズは取引明細本体と比較して大幅に小さく、例えばインデックス情報のサイズが30バイトであれば単一の単位領域に最大266個のインデックス情報を格納できるので、500件の取引明細に対応する500個のインデックス情報は最小で2個の単位領域に収まり、読出対象の500件目の取引明細であったとしても、インデックス情報の探索・読み出しにおけるI/Oの回数は最小で2回となる。なお、この最小のI/O回数は同一レコードのインデックス情報が同一の単位領域に詰めて格納されていた場合であり、現実の口座情報データベースでは、取引明細及びインデックス情報は金融取引が発生する都度登録されるので、同一レコードのインデックス情報が単位領域に詰めて格納されていない方が多いが、インデックス情報は取引明細自体よりも大幅にサイズが小さいので、同一レコードのインデックス情報が同一の単位領域に格納されている確率は高く、取引明細の列(第3階層セグメントのオカレンスの列)を順に参照する場合と比較してI/O回数は大幅に削減される。
【0071】
DB制御部からインデックス情報の読出完了が通知されるとステップ172へ移行し、読出対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定し、読出対象の情報のキー情報として、ルートセグメントのキー情報、第2階層セグメントのキー情報、及び登録対象の情報の元のキー情報を羅列した新たなキー情報を生成・設定する。そして、これらの情報をパラメータとしてDB制御部へ引き渡すことで、該当する情報を口座情報第2DBから読み出すようDB制御部へ指示する(図9のステップ138も参照)。
【0072】
これにより、DB制御部では、第2ストレージ16の記憶領域に設けられている基本域内の個々の単位領域のうち、アプリケーション制御部から通知されたキー情報(ルートセグメント、第2階層セグメント及び登録対象の情報のキー情報を羅列した新たなキー情報)から一意に定まるアドレスが付与された特定の単位領域から情報を読み出し、読み出した情報に含まれる読出対象の情報をアプリケーション制御部へ転送することで、読出対象の情報の読み出し完了を通知する(図9のステップ140,142も参照)。アプリケーション制御部では、DB制御部から読み出し完了が通知されるとステップ176へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共にDB制御部によって口座情報DB(の口座情報第2DB)から読み出された情報をDB操作アプリケーション部へ転送し、処理を終了する。
【0073】
なお、口座情報DBに対する情報の更新が指示されるときには、その直前に更新対象情報の読み出しが指示され、この指示に従って更新対象情報の読み出しが行われているので、口座情報DBにおける更新対象情報の格納位置は既知の状態となっている。このため、指示されたアクセスが情報の更新であればステップ150からステップ178へ移行し、DB操作アプリケーション部から転送された更新情報をDB制御部へ転送すると共に、前回の情報読み出し時(更新対象情報の読み出し時)と同一のパラメータ(物理DB名、セグメント名、キー情報)を設定し、このパラメータに該当する情報(更新対象情報)を更新情報で上書きするようDB制御部へ指示する。これにより、DB制御部により口座情報DB(口座情報第1DB又は口座情報第2DB)に記憶されている更新対象情報が、DB操作アプリケーション部からアプリケーション制御部を経由して転送された更新情報で上書き更新されることになる。アプリケーション制御部では、DB制御部から更新完了が通知されるとステップ180へ移行し、DB操作アプリケーション部に対して更新完了を通知して処理を終了する。
【0074】
このように、本比較例では、口座情報DBの各レコードの情報を、多数のオカレンスが登録される第3階層とその1階層上位の第2階層との境界で分割し、第3階層の情報(取引明細)を口座情報第2DBに登録すると共に、口座情報第2DBに登録した取引明細のインデックス情報を口座情報第1DBに登録するようにしたので、多数の取引明細から成る取引明細の列のうちの任意の取引明細を口座情報DBから読み出す際のI/Oの回数を大幅に削減することができ、デッドロックの発生を抑制できると共に、口座情報DBへのアクセス要求に対するデータベース・システムのレスポンスを向上させることができる。
【0075】
〔実施形態〕
次に本発明の実施形態について説明する。なお、本実施形態は比較例と略同一の構成であるので、各部分に同一の符号を付して構成の説明を省略し、以下、本実施形態の作用を説明する。
【0076】
顧客が特定金融機関に開設可能な口座は50種類程度存在している。これに対し、個々の顧客に対応して口座情報DBに登録される個々のレコードには、第2階層セグメントの情報として、対応する顧客が特定金融機関に開設している口座の数と同数の情報が登録され、更に、個々の第2階層セグメントの情報には、対応する個々の口座に関する取引明細がリンク付けされるので、特定金融機関に多数の口座を開設している顧客については、口座情報DBに登録されている対応するレコードが肥大化し、このようなレコードへのアクセス要求がデータベース・システムのレスポンスに悪影響を及ぼすという問題がある。
【0077】
このため、本実施形態では比較例で説明したインデックス分割に代えて、例として図10(B)に示すように、複数のセグメントがルートセグメントを起点として階層的に関連付けられた論理構造を有する口座情報DBの個々のレコードの情報を、第2階層セグメントのうち予め定められた特定の口座種に対応する特定の第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がルートセグメントの情報を起点としてリンク付けされた第1のレコードと、第2階層セグメントのうち予め定められた特定の口座種以外の口座種に対応する第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がダミーのルートセグメントの情報を起点としてリンク付けされた第2のレコードに物理的に分割し、第1のレコードの情報を口座情報第1DBに格納すると共に、第2のレコードの情報を口座情報第2DBに格納することで上記の問題を解決している(なお上記のように各レコードを第2階層セグメントの種類に応じて各々階層構造を有する2つのレコードに分割し、分割後の2つのレコードを異なるDBに登録する(異なるストレージに記憶させる)ことをダミールート分割と称する)。
【0078】
すなわち、本実施形態に係るDB分割定義テーブルには、図10(A)に示すように、口座情報第1DBへ登録すべきセグメントとして、ルートセグメント、第2階層セグメント及び第3階層セグメントがセグメント名等の定義情報と対応付けて登録されていると共に、口座情報第2DBへ登録すべきセグメントとして、ダミールートセグメント、第2階層セグメント及び第3階層セグメントが同じくセグメント名等の定義情報と対応付けて登録されているが、口座情報第1DBにはダミールートセグメントが有ることを表す属性情報が、口座情報第2DBにはダミールートセグメント(を起点とする第2のレコード)の登録先であることを表す属性情報が各々付加されている。また、口座情報第1DBと対応付けられた第2階層セグメントの情報には、口座情報第1DBへ登録すべき第2階層セグメントの種類を規定する分割定義情報(例えば普通口座及び当座口座に対応する情報のみを口座情報第1DBへ登録することを規定する情報)が付加されており、口座情報第2DBと対応付けられた第2階層セグメントの情報にも、口座情報第2DBへ登録すべき第2階層セグメントの種類を規定する分割定義情報(例えば普通口座及び当座口座以外の口座種の口座に対応する情報を口座情報第1DBへ登録することを規定する情報)が付加されている。
【0079】
なお、本実施形態に係るDB分割定義テーブルは、請求項1,4に記載の第2の分割条件情報に対応しており、ホスト・コンピュータ12の電源が投入されている間中DB分割定義テーブルを記憶するメモリ12Bは請求項1,4に記載の第2条件情報記憶手段に対応している。また、本実施形態において、ホスト・コンピュータ12の記憶部12Cに記憶されているアプリケーション制御プログラムは請求項4に記載のデータベース管理プログラムに対応している。
【0080】
次に、上記のDB分割定義テーブルに従い、アプリケーション制御部によって実行されるアプリケーション制御処理について図11のフローチャートを参照して説明する。ステップ200では、指示されたアクセスが口座情報DBに対する情報の登録か読み出しか更新かを判定し、判定結果に応じて分岐する。指示された要求が口座情報DBに対する情報の登録である場合はステップ202へ移行し、情報の登録指示と共にDB操作アプリケーション部からパラメータとして通知されたセグメント名を参照することで登録対象情報に対応するセグメントの階層を判定し、判定結果に応じて分岐する。登録対象の情報がルートセグメントの情報であればステップ202からステップ204へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象のルートセグメントの情報をDB制御部へ転送することで、DB制御部に対し、登録対象のルートセグメントの情報を口座情報第1DBへ登録するよう指示する。そして、DB制御部から登録完了が通知されるとステップ222へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。
【0081】
また、登録対象の情報が第2階層セグメントの情報であればステップ202からステップ206へ移行し、メモリ12Bに記憶されているDB分割定義テーブルを参照し、DB操作アプリケーション部からパラメータとして通知されたセグメント名に基づき、登録対象のセグメントに対応する定義情報を取り込む。そしてステップ208では、ステップ206で取り込んだ定義情報をDB操作アプリケーション部から通知されたパラメータと照合することで、登録対象の第2階層セグメントの情報が口座情報第2DBに登録すべき口座種の情報か否か(ダミールート分割の対象か否か)判定する。この判定が否定された場合(例えば前述の例では登録対象の第2階層セグメントの情報が普通口座又は当座口座の情報であった場合)にはステップ210へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の第2階層セグメントの情報をDB制御部へ転送することで、DB制御部に対し、登録対象の第2階層セグメントの情報を口座情報第1DBへ登録するよう指示する。そして、DB制御部から登録完了が通知されるとステップ222へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。
【0082】
一方、ステップ208の判定が肯定された場合(例えば前述の例では登録対象の第2階層セグメントの情報が普通口座又は当座口座以外の口座の情報であった場合)は、登録対象の第2階層セグメントの情報は口座情報第2DBに登録する必要があるが、ダミールートセグメントの情報は、対応する顧客が、対応する情報が口座情報第2DBに登録される口座(例えば普通口座及び当座口座以外の口座)を開設したときに口座情報第2DBに登録されるので、登録対象の第2階層セグメントの情報を口座情報第2DBに登録する時点で、対応するダミールートセグメントの情報が口座情報第2DBに登録されていない場合もある。このため、ステップ208の判定が肯定された場合はステップ212へ移行し、読出対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおけるダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、該当する情報(登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報)を口座情報第2DBから読み出すようDB制御部へ指示する。
【0083】
これにより、DB制御部では口座情報第2DBからのダミールートセグメントの情報の読み出しを試行し、口座情報第2DBに該当するダミールートセグメントの情報が記憶されていれば該当する情報の読み出しを行う。そして、ダミールートセグメントの情報を読み出せた場合には、読み出したダミールートセグメントの情報をアプリケーション制御部へ転送すると共にアプリケーション制御部へ読出完了を通知し、該当するダミールートセグメントの情報が口座情報第2DBに記憶されていなかった場合にはアプリケーション制御部へエラー発生を通知する。アプリケーション制御部では、DB制御部から何らかの通知を受け取ると次のステップ214へ移行し、受け取った通知の内容に基づいて登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報が口座情報第2DBに登録されているか否か判定する。
【0084】
ステップ214の判定が肯定された場合には何ら処理を行うことなくステップ218へ移行するが、DB制御部からエラー応答を受け取った場合には、登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報が口座情報第2DBに登録されていないので、ステップ214の判定が否定されてステップ216へ移行し、口座情報第2DBに登録すべきダミールートセグメントの情報を生成し、登録対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、登録対象の情報のセグメント名として口座情報第2DBにおけるダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すと共に、生成したダミールートセグメントの情報をDB制御部へ転送することで、転送したダミールートセグメントの情報を口座情報第2DBへ登録するようDB制御部へ指示する。これにより、登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報がDB制御部によって口座情報第2DBに登録されることになる。そして、DB制御部から登録完了が通知されるとステップ218へ移行する。
【0085】
ステップ218では、登録対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、登録対象の情報のセグメント名として口座情報第2DBにおける第2階層ダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の第2階層セグメントの情報をDB制御部へ転送することで、転送した登録対象の第2階層セグメントの情報を口座情報第2DBへ登録するようDB制御部へ指示する。これにより、登録対象の第2階層セグメントの情報がDB制御部によって口座情報第2DBに登録される。そして、DB制御部から登録完了が通知されるとステップ222へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。このように、登録対象の情報が第2階層セグメントの情報であった場合には、登録対象の情報が何れの口座の情報かに応じて情報を登録するデータベース(情報を記憶させるストレージ)が切り替わることになる。
【0086】
なお、第3階層セグメントの情報の登録が指示されるときには、その直前に登録対象の情報と関連する第2階層セグメントの情報の登録又は読み出しが指示され、この指示に従って上記第2階層セグメントの情報の登録又は読み出しが行われているので、登録対象の第3階層セグメントの情報は、直前にアクセス(登録又は読み出し)が行われたDBへ登録すればよい。このため、登録対象の情報が第3階層セグメントの情報であればステップ202からステップ220へ移行し、物理DB名として直前にアクセスしたDBの物理DB名を、セグメント名として直前にアクセスしたDBにおける第3階層セグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の第3階層セグメントの情報をDB制御部へ転送し、転送した第3階層セグメントの情報を登録するようDB制御部へ指示する。これにより、登録対象の第3階層セグメントの情報が、直前にアクセスしたDB、すなわち登録対象の情報と関連する第2階層セグメントの情報が登録されている口座情報第1DB又は口座情報第2DBに登録されることになる。アプリケーション制御部では、DB制御部から登録完了が通知されるとステップ222へ移行し、DB操作アプリケーション部に対して登録完了を通知して処理を終了する。なお、上述したステップ202〜ステップ222は請求項1,4に記載の第2登録制御手段に対応している。
【0087】
また、指示されたアクセスが情報の読み出しである場合には、ステップ200からステップ224へ移行し、前述のステップ202と同様にして読出対象情報に対応するセグメントの階層を判定し、判定結果に応じて分岐する。読出対象の情報がルートセグメントの情報であればステップ224からステップ226へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、読出対象のルートセグメントの情報を口座情報第1DBから読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ240へ移行し、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。
【0088】
また、読出対象の情報が第2階層セグメントの情報であればステップ224からステップ228へ移行し、DB分割定義テーブルを参照し、読出対象のセグメントに対応する定義情報を取り込む。ステップ230では、ステップ228で取り込んだ定義情報をDB操作アプリケーション部から通知されたパラメータと照合することで、読出対象の第2階層セグメントの情報が口座情報第2DBに登録される口座種の情報か否か(ダミールート分割の対象か否か)判定する。この判定が否定された場合にはステップ232へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、読出対象の第2階層セグメントの情報を口座情報第1DBから読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ240へ移行し、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。
【0089】
一方、ステップ230の判定が肯定された場合にはステップ234へ移行し、物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおけるダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、ダミールートセグメントの情報を口座情報第2DBから読み出すようDB制御部へ指示する。これにより、読出対象の第2階層セグメントの情報に対応するダミールートセグメントの情報がDB制御部によって口座情報第2DBから読み出される。口座情報第1DBに登録されているルートセグメントの情報のヘッダには、口座情報第2DBに登録されている第2階層セグメントの情報を指し示すポインタ情報は設定されていない(このポインタ情報はダミールートセグメントの情報のヘッダに設定されている)が、上記のように口座情報第2DBからダミールートセグメントの情報を読み出させることで、口座情報第2DBにおける第2階層セグメントの情報の格納位置をDB制御部に認識させることができ、DB制御部が口座情報第2DBから第2階層セグメントの情報を読み出すことが可能となる。
【0090】
また、DB制御部から読出完了が通知され、ダミールートセグメントの情報が転送されるとステップ236へ移行し、読出対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおける第2階層ダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、読出対象の第2階層セグメントの情報を口座情報第2DBから読み出すようDB制御部へ指示する。そして、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。このように、読出対象の情報が第2階層セグメントの情報であった場合には、読出対象の情報が何れの口座の情報かに応じて読出対象DB(情報の読み出しを行うストレージ)が切り替わることになる。
【0091】
また、第3階層セグメントの情報の読み出しが指示されるときには、その直前に読出対象の情報と関連する第2階層セグメントの情報の読み出しが指示され、この指示に従って上記第2階層セグメントの情報の読み出しが行われているので、読出対象の第3階層セグメントの情報は、直前にアクセス(読み出し)が行われたDBから読み出せばよい。このため、読出対象の情報が第3階層セグメントの情報であればステップ224からステップ238へ移行し、物理DB名として直前にアクセスしたDBの物理DB名を、セグメント名として直前にアクセスしたDBにおける第3階層セグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、読出対象の第3階層セグメントの情報の読み出しをDB制御部へ指示する。これにより、読出対象の第3階層セグメントの情報が、直前にアクセスしたDBから読み出されることになる。アプリケーション制御部では、DB制御部から読出完了が通知されるとステップ240へ移行し、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。なお、上述したステップ224〜ステップ240は請求項1,4に記載の第2読出制御手段(詳しくは請求項2に記載の第2読出制御手段)に対応している。
【0092】
また、指示されたアクセスが情報の更新であればステップ200からステップ242へ移行し、DB操作アプリケーション部から転送された更新情報をDB制御部へ転送すると共に、前回の情報読み出し時(更新対象情報の読み出し時)と同一のパラメータ(物理DB名、セグメント名、キー情報)を設定し、このパラメータに該当する情報(更新対象情報)を更新情報で上書きするようDB制御部へ指示する。これにより、DB制御部により口座情報DB(口座情報第1DB又は口座情報第2DB)に記憶されている更新対象情報が、DB操作アプリケーション部からアプリケーション制御部を経由して転送された更新情報で上書き更新されることになる。アプリケーション制御部では、DB制御部から更新完了が通知されるとステップ244へ移行し、DB操作アプリケーション部に対して更新完了を通知して処理を終了する。
【0093】
このように、本実施形態では、口座情報DBの各レコードの情報を、予め定められた特定の口座種に対応する特定の第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がルートセグメントの情報を起点としてリンク付けされた第1のレコードと、第2階層セグメントのうち予め定められた特定の口座種以外の口座種に対応する第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がダミーのルートセグメントの情報を起点としてリンク付けされた第2のレコードに物理的に分割し、第1のレコードの情報を口座情報第1DBに格納すると共に、第2のレコードの情報を口座情報第2DBに格納しているので、特定金融機関に多数の口座を開設している顧客であっても、個々のDB(口座情報第1DB又は口座情報第2DB)に登録されているレコードが肥大化することを回避できると共に、口座情報DBに対するアクセスが口座情報第1DB(第1ストレージ14)と口座情報第2DB(第2ストレージ16)に分散されるのでデッドロックの発生を抑制できると共に、個々のDBに登録される個々のレコードの情報がより少数の単位領域に格納されることで、口座情報DBへのアクセスにおけるI/O回数が削減され、口座情報DBへのアクセス要求に対するシステムのレスポンスも向上させることができる。
【0094】
なお、上記では本発明に係るデータベースの一例として、各レコードの情報が3階層に分離された論理構造のデータベースを説明したが、これに限定されるものではなく、より多数の階層に分離された論理構造であってもよい。
【0095】
また、上記ではインデックス分割とダミールート分割を分けて説明したが、これに限定されるものではなく、インデックス分割とダミールート分割を組み合わせてもよいことは言うまでもない。
【0096】
更に、上記では特定金融機関の各支店に設置されたATM22及び営業店端末24が、同一の支店に設置されたブランチ・サーバ20と接続されている構成のコンピュータ・システム10を例に説明したが、各支店にブランチ・サーバ20を設置することに代えて情報センタ等にサーバを集中配置し、各支店に設置されたATM22及び営業店端末24が集中配置したサーバに接続される構成を採用してもよい。
【0097】
また、上記では本発明に係るデータベースの一例として、顧客が特定金融機関に開設した口座に関する情報を登録・管理するための口座情報DBを説明したが、本発明は階層型のデータベースであれば適用可能であり、データベースに登録される情報は上記に限定されるものではない。
【図面の簡単な説明】
【0098】
【図1】比較例に係るコンピュータ・システムの概略構成を示すブロック図である。
【図2】(A)は口座情報の論理構造、(B)は従来の物理フォーマットの一例を各々示す概念図である。
【図3】(A)はストレージの口座情報DB記憶領域、(B)は単位領域(CI)内のフォーマットを各々示す概念図である。
【図4】(A)は新規顧客が口座を開設した場合、(B)は既開設口座に対する残高照会が指示された場合の処理の流れを示すシーケンス図である。
【図5】デッドロック発生の原理を説明するための概念図である。
【図6】(A)は比較例に係るDB分割定義テーブルの内容を示すイメージ図、(B)は(A)のDB分割定義テーブルに基づき口座情報DBに登録される口座情報の物理フォーマットの一例を示す概念図である。
【図7】アプリケーション制御処理の内容を示すフローチャートである。
【図8】既開設口座に対する新たな取引が発生した場合の処理の流れを示すシーケンス図である。
【図9】取引明細を読み出す場合の処理の流れを示すシーケンス図である。
【図10】(A)は実施形態に係るDB分割定義テーブルの内容を示すイメージ図、(B)は実施形態における口座情報の分割を示す概念図である。
【図11】実施形態に係るアプリケーション制御処理の内容を示すフローチャートである。
【符号の説明】
【0099】
10 コンピュータ・システム
12 ホスト・コンピュータ
14 第1ストレージ
16 第2ストレージ
18 コンピュータ・ネットワーク
18 ネットワーク
20 ブランチ・サーバ
20 通信回線
24 営業店端末
【技術分野】
【0001】
本発明はデータベース管理装置及びプログラムに係り、特に、個々のレコードの情報が階層構造とされたデータベースを管理するデータベース管理装置、コンピュータをデータベース管理装置として機能させるためのデータベース管理プログラムに関する。
【背景技術】
【0002】
従来より、データベースに登録すべき情報項目を複数のセグメントに分け、これらのセグメントを、ルートセグメントを起点として階層的に関連付けた論理構造のデータベース(階層型データベース)が知られている。階層型データベースは、例えばデータベースに登録すべき多数レコードのデータのうち、特定の情報項目のデータ量が各レコード毎に一定していない等の場合にも、前記特定の情報項目に対応するセグメントのオカレンス(occurrence)の数を各レコード毎に増減させる等のように、登録すべきデータに応じて各レコードを単位としてデータ構造を柔軟に変更することができるので、登録データ量に比してデータベースの規模(データベースを記憶するために必要な記憶手段の容量)を抑制できるという特長を有している。
【0003】
上記の階層型データベースに関連して、特許文献1には、階層構造のデータに対し、個々のセグメントに選択番号と検索キーを付与すると共に、個々のセグメント毎に、選択番号と検索キーに加えて下位階層のセグメントの選択番号を登録した検索キー管理ファイルを設け、特定のセグメントの選択番号が入力されると、特定セグメントの検索キー及び下位階層のセグメントの選択番号を検索キー管理ファイルから取得し、取得した検索キーを用いてデータ検索を行うことを、下位階層が存在しない状態となる迄繰り返すことで、特定セグメント及びその下位階層のセグメントのデータを全て検索する技術が開示されている。
【0004】
また、データベースの管理に関連して、特許文献2には、データベースの物理ファイルをデータの使用頻度に応じて複数の物理ファイルに分割し、使用頻度の低い物理ファイルを他の記憶装置へ退避させ、退避させた物理ファイルを退避元の記憶装置から削除すると共に、分割した複数の物理ファイルを論理的に1つの物理ファイルとしてアクセスすることを可能とし、分割した複数の物理ファイルに対してアクセス要求があり、一部の物理ファイルが退避されている場合には、当該物理ファイルを退避先の記憶装置から復元させることでアクセス要求を実行する技術が開示されている。
【特許文献1】特開平5−35790号公報
【特許文献2】特開平8−328929号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、階層型データベースでは、情報の読み出し及び書き込みがセグメントを単位として行われるが、情報の読み出しにおける起点は常にルートセグメントであり、例えば読出対象情報のセグメントが従属階層(第2階層又はそれよりも低い階層)のセグメントであったとしても、読出対象情報の読み出しは、ルートセグメントから読出対象情報のセグメントに至る経路上の各セグメントの情報が、個々の情報に各々設定されたポインタ情報に基づいて順に読み出されることで行われる。また、階層型データベースにおいて、同一セグメントに複数のオカレンスが存在していた場合、この複数のオカレンスのうちの何れか1つの特定オカレンスのポインタ情報のみが1階層上位のセグメントの情報に設定され(1階層上位のセグメントとリンク付けされ)、他のオカレンスは特定オカレンスからディジーチェーンのように数珠繋ぎにリンク付けされる。このため、例えば読出対象のセグメントが従属セグメントで、この読出対象のセグメントに複数のオカレンスが存在しており、このうちの何れかのオカレンスが読出対象情報である場合、読出対象情報の読み出しは、ルートセグメントから読出対象のセグメントに至る経路上の各セグメントの情報を順に読み出すことで特定オカレンス(1階層上位のセグメントと直接リンク付けされたオカレンス)に到達した後に、この特定オカレンスから数珠繋ぎに関連付けられた各オカレンスを順に辿っていく(情報を順に読み出していく)ことによって成される。
【0006】
データベースを記憶する記憶装置は、論理的な入出力の単位(CI:Control Intervalという)が定められており、このCIは階層型データベースにおける個々のセグメントの数個分程度のサイズとされ、記憶装置の記憶領域は多数個のCI(単位領域)に区画されているが、上記のように読出対象のレコードの第2階層以下の階層のセグメントに多数のオカレンスが存在しており、この多数のオカレンスのうちの何れかを読み出す場合、読出対象のオカレンスが読み出される迄に、ルートセグメントの情報が格納されている単位領域を始めとして多数の単位領域にアクセスして情報を読み出す必要があるので、I/Oの回数(読み出すべき単位領域の数)が大幅に増大し、読出対象の情報の読み出しが完了する迄に長い時間がかかることになる。そして、データベースに登録されている各レコードの多数(或いは殆ど)が上記のように多数のオカレンスが存在しているレコードであった場合、データベースへのアクセス要求に対するシステムのレスポンスが悪化するという問題がある。
【0007】
一例として、第3階層の特定セグメントに500個のオカレンスが存在しているレコードから、特定セグメントの500個のオカレンスのうちの任意のオカレンスを読み出す場合、個々の単位領域のサイズが8kバイト、個々のオカレンスのサイズが1kバイト(すなわち、単一の単位領域に格納可能なオカレンスの数を8個)とすると、特定セグメントの500個のオカレンスは最小でも(個々の単位領域に詰めて格納されていたとしても)63個の単位領域に分けて格納されることになる。このため、読出対象のオカレンスが特定セグメントの500個のオカレンスの列の最後に繋がれていた場合、ルートセグメントの情報及び特定セグメントと関連付けられた第2階層のセグメントの情報が単一の単位領域に格納されていたとしても、I/Oの回数は最小で1+63=64回となる(500÷8=62.5≒63)。また、特定セグメントの個々のオカレンスが互いに異なるタイミングでデータベースに追加登録される等の場合には、500個のオカレンスがより多数個の単位領域にとびとびに格納される可能性が高く、I/Oの回数は更に増大する。
【0008】
また、データベースに対する情報の読み出しや更新等のアクセスを複数のプロセスが並列に実行する環境では、単一の単位領域に対して複数のプロセスが同時にアクセスすることで、前記単位領域に格納されている情報に矛盾が生ずることを避けるために、個々のプロセスは、処理対象の単位領域をロックする(他のプロセスが処理対象の単位領域にアクセスすることを禁止する)排他制御を行う必要がある。この場合、或るプロセスが、第1の単位領域をロックしてアクセスし、続いて第2の単位領域をロックしてアクセスする処理を行うときに、別のプロセスにより、第2の単位領域をロックしてアクセスし、続いて第1の単位領域をロックしてアクセスする処理が同タイミングで行われると、双方のプロセスが共に相手のプロセスによって処理対象の単位領域に対するロックが解除されるのを待っている状態、すなわちデッドロックが発生する。
【0009】
前述のように、第2階層以下の階層のセグメントに多数のオカレンスが存在しているレコードに対するアクセスでは、多数の単位領域がアクセスされることが多いので、登録されているレコードの多数(或いは殆ど)が上記のようなレコードであるデータベースではデッドロックが発生し易いという問題もある。
【0010】
本発明は上記事実を考慮して成されたもので、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制できるデータベース管理装置及びデータベース管理プログラムを得ることが目的である。
【課題を解決するための手段】
【0011】
請求項1記載の発明に係るデータベース管理装置は、記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段と、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段と、を備えたデータベース管理装置であって、記憶領域が多数個の単位領域に区画された第3記憶手段と、前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段と、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段と、を備えたことを特徴としている。
【0012】
請求項1記載の発明に係るデータベース管理装置は、記憶領域が入出力の論理的単位としての多数個の単位領域(CI)に区画された第1記憶手段を備えており、この第1記憶手段には、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースが記憶される。
【0013】
また、請求項1記載の発明に係るデータベース管理装置は、任意のレコードの任意のセグメントの情報のデータベースへの登録が指示される毎に、登録手段により、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域が選択され、選択された単位領域に登録対象の情報が登録されると共に、登録対象の情報と同一レコードに属しデータベースに既に登録されている特定の情報(1階層上位でかつ関連するセグメントの情報、或いは1階層上位の同一セグメントと関連する同一階層の他のオカレンスの情報)にポインタ情報が設定される。これにより、ルートセグメント以外のセグメント(従属セグメント)の情報については、個々の情報に設定されているポインタ情報に基づいて、ルートセグメントを起点にして順に辿っていく(情報を順に読み出していく)ことで、従属セグメントの情報が登録されている単位領域を特定することができる。
【0014】
そして、請求項1記載の発明に係るデータベース管理装置では、データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、読出手段により、ポインタ情報に基づいて読出対象の情報が登録されている単位領域が判断され、判断された単位領域の情報がデータベースから読み出され、読み出された情報に含まれる読出対象の情報が出力される。
【0015】
ここで、上記構成では、従属セグメントの情報が登録されている単位領域を特定するために、前述したように、個々の情報に設定されているポインタ情報に基づいて、ルートセグメントを起点にして順に辿っていく(情報を順に読み出していく)必要があるので、アクセス対象のレコードが第2階層以下の階層に複数のセグメント又はオカレンスが存在しているレコードであった場合にはI/O回数が大幅に増大する可能性が高く、データベースへのアクセスを複数のプロセスが並列に実行する環境下で、データベースに登録されているレコードの多数(或いは殆ど)が上記のようなレコードであったとすると、デッドロックが発生する恐れもある。
【0016】
これに対して請求項1記載の発明では、記憶領域が多数個の単位領域に区画された第3記憶手段と、(データベースの)論理構造において第2階層に相当する複数の第2階層セグメントのうち、第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段が設けられている。また、請求項1記載の発明に係る第2登録制御手段は、任意のレコードの任意のセグメントの情報の登録が指示された場合に、第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、登録対象の情報が第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、第3記憶手段へ登録すべき情報か否かを判定し、登録対象の情報が第3記憶手段へ登録すべき情報である場合には、任意のレコードのダミーのルートセグメントの情報が第3記憶手段に未登録であれば、任意のレコードのダミーのルートセグメントの情報を登録手段によって第3記憶手段に登録させた後に、登録対象の情報を登録手段によって第3記憶手段に登録させる。
【0017】
これにより、登録対象の情報が、第2の分割条件情報により、第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報である場合には、登録手段により、当該情報が第3記憶手段に登録されたダミーのルートセグメントの情報とポインタ情報によって関連付けられて登録されることになる。そして、請求項1記載の発明に係る第2読出制御手段は、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて読出対象の情報が第3記憶手段に登録されているか否かを判定し、読出対象の情報が第3記憶手段に登録されている場合には、読出対象の情報を読出手段によって第3記憶手段から読み出させ、読み出された読出対象の情報を出力する。
【0018】
このように、請求項1記載の発明では、データベースに登録すべき個々のレコードの情報を、第2条件情報記憶手段に記憶されている第2の分割条件情報に従い、第1記憶手段に登録すべき情報と第3記憶手段に登録すべき情報とに分割して登録しているので、データベースへのアクセス要求があった場合のアクセス対象の記憶手段が第1記憶手段と第3記憶手段とに分散されるので、デッドロックの発生を抑制することができる。また、個々の記憶手段に登録される個々のレコードの情報のサイズが小さくなるので、個々の記憶手段に登録される個々のレコードの情報がより少数の単位領域に格納されることになり、データベースへのアクセスにおけるI/O回数が削減されることで、データベースへのアクセス要求に対するシステムのレスポンスの悪化も抑制することができる。
【0019】
なお、請求項1記載の発明において、読出対象の情報が第2階層以下の下位階層のセグメントである場合、読出対象の情報の読み出し指示は、例えば(データベースの)論理構造に従いルートセグメントから読出対象の情報のセグメントに至る各セグメントの情報の読み出しが順に指示されるようにインタフェースを定めることができるが、この場合、第2読出制御手段は、例えば請求項2に記載したように、ルートセグメントの情報の読み出しが指示された後に、第2階層セグメントの情報の読み出しが指示され、当該読出対象の情報が第3記憶手段に登録されている場合には、読出対象の情報と関連付けられたダミーのルートセグメントの情報を読出手段によって第3記憶手段から読み出させた後に、読み出されたダミーのルートセグメントの情報に設定されているポインタ情報に基づいて、読出対象の情報を読出手段によって第3記憶手段から読み出させ、読み出された読出対象の情報を出力するように構成することができる。これにより、情報の読み出しを指示するにあたり、読出対象の情報が何れの記憶手段に記憶されているかを認識する必要がなくなる。
【0020】
また、請求項1記載の発明において、登録手段は、例えば請求項3に記載したように、登録対象の情報がルートセグメントの情報である場合に、該ルートセグメントに付与されたキー情報から一意に特定される第1の単位領域に登録対象のルートセグメントの情報を登録可能な空き領域が有るか否かを判断し、空き領域があれば登録対象のルートセグメントの情報を第1の単位領域に登録し、空き領域が無い場合には、所定の選択基準に従い登録対象のルートセグメントの情報を登録可能な空き領域が生じている第2の単位領域を選択し、選択した第2の単位領域に登録対象のルートセグメントの情報を登録すると共に、登録対象のルートセグメントの情報の登録位置が第2の単位領域であることを表すルート登録先情報を第1の単位領域に設定するように構成することができる。これにより、データベースに登録されているルートセグメントの情報については、当該ルートセグメントに付与されたキー情報(及び第1の単位領域に登録されたルート登録先情報)に基づいて、当該情報が登録されている単位領域を特定することができる。
【0021】
請求項4記載の発明に係るデータベース管理プログラムは、記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、記憶領域が多数個の単位領域に区画された第3記憶手段と、前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、を備え、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段、及び、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段として機能するコンピュータを、更に、任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段、及び、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段として機能させる。
【0022】
請求項4記載の発明に係るデータベース管理プログラムは、上記の第1記憶手段、第3記憶手段及び第1条件情報記憶手段を備え、上記の登録手段及び読出手段として機能するコンピュータを、上記の第2登録制御手段及び第2読出制御手段として機能させるためのプログラムであるので、上記のコンピュータが請求項4記載の発明に係るデータベース管理プログラムを実行することにより、上記のコンピュータが請求項1に記載のデータベース管理装置として機能することになり、請求項1記載の発明と同様に、デッドロックの発生を抑制することができる。
【発明の効果】
【0023】
以上説明したように本発明は、任意のレコードの任意のセグメントの情報の登録が指示された場合に、第2階層に相当する複数の第2階層セグメントのうち第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報に基づいて、登録対象の情報が第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、第3記憶手段へ登録すべき情報か否かを判定し、登録対象の情報が第3記憶手段へ登録すべき情報である場合には、任意のレコードのダミーのルートセグメントの情報が第3記憶手段に未登録であれば、任意のレコードのダミーのルートセグメントの情報を第3記憶手段に登録させた後に、登録対象の情報を第3記憶手段に登録させ、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、第2の分割条件情報に基づいて読出対象の情報が第3記憶手段に登録されているか否かを判定し、読出対象の情報が第3記憶手段に登録されている場合には、読出対象の情報を第3記憶手段から読み出させ、読み出された読出対象の情報を出力するので、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制できる、という優れた効果を有する。
【発明を実施するための最良の形態】
【0024】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。なお、以下ではまず本発明の比較例を説明する。
【0025】
〔比較例〕
図1には本比較例に係る、特定金融機関に設けられたコンピュータ・システム10が示されている。コンピュータ・システム10は、特定金融機関の情報センタ等に設置されたホスト・コンピュータ12と、特定金融機関内に構築されたコンピュータ・ネットワーク18を含んで構成されている。
【0026】
ホスト・コンピュータ12は汎用の大型コンピュータから成り、CPU12A、RAM等から成るメモリ12B、磁気ディスク等から成る不揮発性の記憶部12C、ネットワークインタフェース(I/F)部12Dを備えている。ホスト・コンピュータ12は、ネットワークI/F部12Dに接続された通信回線を介してコンピュータ・ネットワーク18(詳しくはネットワーク18内のブランチ・サーバ20)に接続されている。また、ホスト・コンピュータ12には、大容量の磁気ディスク等から成る第1ストレージ14及び第2ストレージ16が各々接続されている。第1ストレージ14には口座情報第1データベース(口座情報第1DB)を記憶するための記憶領域が設けられており、第2ストレージ16には口座情報第2データベース(口座情報第2DB)を記憶するための記憶領域が設けられている。なお、第1ストレージ14に記憶される口座情報第1DBと第2ストレージ16に記憶される口座情報第2DBは、各々を区別するために異なる物理DB名が付与されているが、論理的には単一のデータベース(顧客が特定金融機関に開設した口座に関する情報を登録・管理するための口座情報DB)として扱われる。
【0027】
また、ホスト・コンピュータ12の記憶部12Cには、ホスト・コンピュータ12をDB制御部として機能させるためのDB制御プログラム、ホスト・コンピュータ12をアプリケーション制御部として機能させるためのアプリケーション制御プログラム、ホスト・コンピュータ12をDB操作アプリケーション部として機能させるためのDB操作アプリケーション・プログラムが各々記憶されている。また、記憶部12CにはDB分割定義テーブル(詳細は後述)が記憶されている。DB分割定義テーブルは、ホスト・コンピュータ12の電源が投入されると記憶部12Cから読み出されてメモリ12Bに書き込まれることでメモリ12B上に常駐し、後述するアプリケーション制御処理を行うアプリケーション制御部によって参照される。
【0028】
一方、コンピュータ・ネットワーク18は、特定金融機関の各支店に各々設置されたブランチ・サーバ20(PC、ワークステーション、大型コンピュータの何れでもよい)が通信回線を介して互いに接続されて構成されており、個々のブランチ・サーバ20には、個々のブランチ・サーバ20と同一の支店に設置された複数台のATM(Automatic Teller Machine:現金自動預け払い機)22及び複数台の営業店端末(金融機関の従業員が操作するための端末)24が各々接続されている。ATM22には、特定金融機関に口座を開設している顧客が所持しているキャッシュカードを装填可能で、装填されたキャッシュカードに磁気的に記録された情報を読み取り可能なカードリーダが取り付けられており、営業店端末24には、特定金融機関に口座を開設している顧客が所持している通帳を装填可能で、装填された通帳に磁気的に記録された情報を読み取り可能で、且つ任意の情報を通帳に記録することも可能な記帳機が取り付けられている。
【0029】
次に本比較例の作用を説明する。本比較例に係る口座情報DBは、顧客が特定金融機関に開設した口座に関する情報を登録・管理するためのデータベースであり、単一の顧客の情報が単一のレコードとして登録される。また口座情報DBは階層型のデータベースであり、個々のレコードは、図2(A)に示すように、予め定められた互いに異なるカテゴリの情報を設定するための複数のセグメントが、最上位階層のセグメント(ルートセグメント)を起点として階層的に関連付けられた論理構造を有している。上記の論理構造における各セグメントのうち、ルートセグメントは、口座情報DBに情報を登録する全ての顧客について生成・登録されるセグメントである。図2(B)に示すように、口座情報DBに登録される個々のセグメントの情報は、各種の制御情報やポインタ情報が設定されるヘッダ、個々のセグメントを識別するためのキー情報、及び、本体情報から構成されているが、ルートセグメントでは、上記の本体情報として顧客ID等の顧客の属性情報が設定される。
【0030】
また、第2階層のセグメントは、個々の顧客が特定金融機関に開設した個々の口座に関する情報を登録するためのセグメントであり、個々のレコードには、第2階層セグメントとして、対応する顧客が特定金融機関に開設した口座の数と同数のセグメントが各々生成・登録される。個々の第2階層セグメントは、対応する顧客が特定金融機関に開設した各口座のうち互いに異なる口座に対応しており、個々の第2階層セグメントの本体情報には、対応する口座の口座番号や残高等の情報が設定される。個々の第2階層セグメントは、論理的にはルートセグメントと各々関連付けされている。
【0031】
また、第3階層セグメントは、個々の顧客が特定金融機関に開設した特定口座を対象とした金融取引の明細を登録するためのセグメントであり、個々の第3階層セグメントは任意の数のオカレンスを作成・登録可能とされている。また、個々の第3階層セグメントは第2階層の各セグメントのうち同一の口座に対応する第2階層セグメントと論理的に関連付けされており、任意の顧客の任意の口座を対象とした金融取引が発生する毎に、前記任意の顧客に対応する特定レコードに、前記任意の口座に対応する特定の第2階層セグメントと関連付けられた第3階層セグメントの情報として、発生した金融取引の明細を表す取引明細情報が本体情報に設定されたオカレンスが作成・登録される。
【0032】
口座情報DBに対する情報の登録、読み出し、更新等のアクセスはDB制御部によって行われる。図3(A)に示すように、口座情報DBを記憶するための第1ストレージ14及び第2ストレージ16の記憶領域は、入出力の論理的単位としての一定サイズの多数個の単位領域(CI)に区画されていると共に、記憶領域全体が基本域と従属あふれ域、独立あふれ域に分けられており、個々の単位領域には各々アドレスが付与されている。DB制御部は、口座情報DBへの情報の登録が指示され、登録対象の情報がルートセグメントの情報であった場合、該登録対象のルートセグメントの情報と共に通知されたルートセグメントのキー情報に基づき、キー情報のハッシュ値を計算する等のアルゴリズムにより、基本域内の各単位領域のうち登録対象のルートセグメントの情報を格納すべき単位領域のアドレス(キー情報から一意に定まるアドレス)を導出する。
【0033】
但し、予め想定した顧客の最大数(に応じて定まるキー情報の桁数)にも依存するが、基本域内の単位領域の数を顧客の最大数だけ確保することは困難であるので、上記のアルゴリズムは、互いに異なる複数種のキー情報から同一のアドレスが導出されるように定められている。一方、図3(B)にも示すように、個々の単位領域は複数のセグメントの情報を格納可能なサイズ(例えば単一のセグメントの情報の最大サイズ1kバイトに対し、該情報を8個程度格納可能な8kバイト)とされているが、個々の単位領域に情報を格納可能なセグメントの数には限りがあり、また基本域内の単位領域に従属セグメントの情報も格納されることがあるので、導出したアドレスが付与された特定の単位領域に、登録対象のルートセグメントの情報を格納可能な空き領域が無い可能性もある。
【0034】
このため、DB制御部は単位領域のアドレスを導出すると、当該単位領域に登録対象のルートセグメントの情報を格納可能な空き領域が有るか否かを確認する。そして、前記空き領域があれば、導出したアドレスが付与された特定の単位領域に登録対象のルートセグメントの情報を格納する。また、前記空き領域が無い場合には、従属あふれ域内の各単位領域のうち特定の単位領域と同一列の単位領域群(図3(A)の「情報格納対象CI列」も参照)の中から、登録対象のルートセグメントの情報を格納する単位領域を選択し、選択した単位領域に登録対象のルートセグメントの情報を格納すると共に、基本域内の特定の単位領域に設けられた制御情報格納領域に、登録対象のルートセグメントの情報の格納位置を指し示すポインタ情報(単位領域のアドレスとオフセットを表す情報)を、登録対象のルートセグメントのキー情報と対応付けて登録する。なお、制御情報格納領域にはキー情報とポインタ情報を複数組登録可能とされており、制御情報格納領域にキー情報とポインタ情報が複数組登録される際にはキー情報の昇順(降順でもよい)にソートされる。
【0035】
またDB制御部は、口座情報DBへの情報の登録が指示され、登録対象の情報が従属セグメントの情報であった場合、ルートセグメントの情報を登録する場合と同様にして、登録対象の従属セグメントの情報を格納可能な空き領域が有る単位領域を探索する(優先順位が最も高い単位領域は登録対象の情報の格納位置を指し示すポインタ情報が設定されるセグメントの情報が既に登録された単位領域であり、該単位領域に空き領域がない場合に一定のロジックに従って他の単位領域が探索される)。なお、従属セグメントの情報の登録(又は読み出し又は更新)が指示される際には、前述した論理構造においてルートセグメントから処理対象のセグメントに至る経路上の各セグメントの情報を順次登録又は読み出す指示が事前に入力されるので、これらの指示に応じた処理の履歴を記憶しておくことで、登録対象の従属セグメントと同一レコードのルートセグメントのキー情報は容易に認識できる。そして、探索によって抽出された単位領域に登録対象の従属セグメントの情報を格納すると共に、登録対象の従属セグメントの情報の格納位置を指し示すポインタ情報を、登録対象の従属セグメントと同一のレコードに属し、かつ口座情報DBに既に登録されているセグメントの情報のヘッダに設定する。
【0036】
なお、ヘッダにポインタ情報を設定するセグメントの情報は以下のようにして選択される。すなわち、登録対象の従属セグメントは1階層上位の特定セグメントと論理的に関連付けられているが(この特定セグメントを親セグメントと称する)、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスが口座情報DBに登録されていない場合には、登録対象の従属セグメントの情報のポインタ情報を親セグメントの情報のヘッダに設定する。また、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスの情報が口座情報DBに1個のみ登録されている場合には、登録対象の従属セグメントの情報のポインタ情報を当該他のオカレンスの情報のヘッダに設定する。
【0037】
また、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスが口座情報DBに複数登録されている場合(該当するオカレンスが複数登録されているか否かは、親セグメントのヘッダに設定されたポインタ情報が指し示す他のオカレンスのヘッダに、同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かに基づいて判断できる)には、親セグメントのヘッダに設定されたポインタ情報が指し示す他のオカレンスの情報のヘッダに設定されている同セグメントの他のオカレンスを指し示すポインタ情報を参照し、当該ポインタ情報が指し示すオカレンスのヘッダに同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かを判定し、ポインタ情報が設定されている場合には、当該ポインタ情報が指し示す他のオカレンスのヘッダに同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かを判定することを繰り返すことで、同一セグメントの他のオカレンスを指し示すポインタ情報がヘッダに設定されていない他のオカレンス(同一セグメントのオカレンスの列のうちの最後に位置しているオカレンス)を探索し、この探索によって抽出されたオカレンスのヘッダに、登録対象の従属セグメントの情報(追加登録するオカレンス)を指し示すポインタ情報を設定する。これにより、登録対象の従属セグメントの情報が、ポインタ情報によってリンク付けされたオカレンスの既存の列の最後にリンク付けされる。
【0038】
DB制御部が上記処理を行うことで、図2(B)にも示すように、口座情報DBに登録されている各レコードの情報は、口座情報DBに登録されている各セグメントの情報のうち、1階層下位でかつ関連するセグメントの情報が口座情報DBに登録されているセグメントの情報のヘッダに、1階層下位でかつ関連する各セグメントの情報の格納位置を指し示すポインタ情報が各セグメントについて1つずつ各々設定される(ルートセグメントを参照)と共に、同一セグメントの情報が口座情報DBに複数登録されている場合(複数のオカレンスが存在している場合)には、これらの複数のオカレンスのヘッダにポインタ情報が各々設定されることで、親セグメントの情報のヘッダに対応するポインタ情報が設定されているオカレンスを先頭として、同一セグメントのオカレンスの列が形成された物理構造となる。なお、DB制御部による上述した処理は本発明に係る登録手段(詳しくは請求項3に記載の登録手段)に対応している。
【0039】
口座情報DBからの情報の読み出しについては、口座情報DBからのルートセグメントの情報の読み出しが指示された場合、DB制御部は、上記指示と共に通知された読出対象のルートセグメントのキー情報から一意に定まる単位領域のアドレスを導出し、導出したアドレスが付与された単位領域に対するアクセスをロックした後に当該単位領域の情報を読み出し、読み出した情報の中に読出対象のルートセグメントの情報が存在しているか否か判定する。読み出した情報の中に読出対象のルートセグメントの情報が存在していた場合には、この情報を出力すると共に前記単位領域に対するアクセスのロックを解除するが、読出対象のルートセグメントの情報が含まれていなかった場合には、読み出した情報から制御情報格納領域に設定されているポインタ情報(読出対象のルートセグメントのキー情報と対応付けられているポインタ情報)を抽出し、抽出したポインタ情報が指し示す単位領域に対するアクセスをロックした後に当該単位領域の情報を読み出し、読み出した情報に含まれる読出対象のルートセグメントの情報を出力すると共に、読み出し完了後に各単位領域に対するアクセスのロックを解除する。
【0040】
また、従属セグメントの情報の読み出しが指示される際には、前述した論理構造においてルートセグメントから読出対象のセグメントに至る経路上の各セグメントの情報を順次読み出す指示が事前に入力される。このため、口座情報DBからの従属セグメントの情報の読み出しが指示された場合、DB制御部は、前回の読出指示によって読み出した情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、認識した単位領域が前回読み出しを行った単位領域と同一であれば、前回読み出した情報に含まれる前記ポインタ情報が指し示す特定情報を参照し、認識した単位領域が前回読み出しを行った単位領域と相違していれば、認識した単位領域に対するアクセスをロックした後に前記単位領域の情報を読み出し、読み出した情報に含まれる前記ポインタ情報が指し示す特定情報を参照する。そして、参照した特定情報に設定されているキー情報が読出指示と共に通知された読出対象の従属セグメントの情報のキー情報と一致しているか否か判定する。キー情報が一致していた場合は前記特定情報は読出対象の従属セグメントの情報であるので、当該特定情報を読出対象の従属セグメントの情報として出力すると共に、読み出し完了後に前記単位領域に対するアクセスのロックを解除する。
【0041】
また、読出対象の従属セグメントの情報が、同一セグメントの情報として登録されて列を形成している複数のオカレンスの何れかである場合には、前回の読出指示によって読み出した情報のヘッダに設定されているポインタ情報は読出対象のオカレンスとは別のオカレンスの情報である可能性が高く、この場合、前述のキー情報は不一致となる。キー情報が不一致となった場合には、特定情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、必要に応じて単位領域の情報の読み出しを行って上記ポインタ情報が指し示す次の特定情報を参照し、キー情報が一致しているか否かを判定することを、キー情報が一致している情報が出現する迄繰り返し(この処理により、同一セグメントのオカレンスの列が順に参照されることになる)、キー情報が一致した情報を読出対象のオカレンスとして出力する。なお、DB制御部による上述した処理は本発明に係る読出手段に対応している。
【0042】
なお、口座情報DBに対する情報の更新については、口座情報DBからの更新対象の情報の読み出しが指示された後に、続いて前記情報の更新が指示されるので、DB制御部は、前回の読出指示により口座情報DBからの読み出しを行った情報を、通知された更新対象の情報で上書きすることで、口座情報DBに対する情報の更新を行う。
【0043】
また、口座情報DBに対する情報の登録、読み出し、更新等のアクセスは、例えば新規顧客によって特定金融機関の口座開設が指示されたり、特定金融機関に既に口座を開設している顧客によって別口座の開設が指示されたり、顧客から入金・残高照会・預金の引き出し・振込・振替等の金融取引の実行が指示されたことを契機として、口座情報DBへのアクセスを要求する電文がATM22又は営業店端末24から送信され、この電文がコンピュータ・ネットワーク18やブランチ・サーバ20を経由してホスト・コンピュータ12で受信されることによって行われる。ホスト・コンピュータ12では、口座情報DBへのアクセスを要求する電文を受信する毎に、DB操作アプリケーション部により、受信した電文の要求に基づき、アプリケーション制御部を介してDB制御部へ口座情報DBへのアクセスを指示すると共に、アプリケーション制御部を介してDB制御部からアクセス結果を受け取り、口座情報DBに対する要求されたアクセスが完了すると、要求元のATM22又は営業店端末24へ応答(電文)を送信するDB操作処理を行う。
【0044】
具体的には、例えば新規顧客によって特定金融機関の口座が開設が指示され、この指示に基づき営業店端末24から送信された電文により、口座情報DBへの情報登録が要求された場合、図4(A)に示すように、DB操作アプリケーション部は、まず新規顧客の属性情報をルートセグメントの情報として口座情報DBへ登録するようアプリケーション制御部へ指示する(図4(A)のステップ30も参照)。なお、DB操作アプリケーション部による口座情報DBへの情報の登録指示では、登録対象DB(この場合は口座情報DB)の論理DB名、登録対象の情報のセグメント名(セグメントの階層を識別するための名称)及び登録対象データ(キー情報や本体情報)がパラメータとしてアプリケーション制御部へ引き渡される。
【0045】
アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力されたパラメータのうちの論理DB名をDB制御部が認識可能な物理DB名へ変換し(詳細は後述するが、ルートセグメントの情報は口座情報第1DBに登録されるので、この場合は論理DB名が口座情報第1DBの物理DB名へ変換される)た後に、入力された指示をDB制御部へ伝達する(図4(A)のステップ32も参照)。これにより、DB制御部によって口座情報DB(詳しくは第1ストレージ14に記憶されている口座情報第1DB)へのルートセグメントの情報の登録が行われる(図4(A)のステップ34も参照)。口座情報DBへのルートセグメントの情報の登録が完了すると、DB制御部はアプリケーション制御部へ処理完了を通知し(図4(A)のステップ36も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(A)のステップ38も参照)。
【0046】
口座情報DBへのルートセグメントの情報の登録が完了すると、続いてDB操作アプリケーション部は、新規顧客が開設した口座の情報を第2階層セグメントの情報として口座情報DBへ登録するようアプリケーション制御部へ指示する(図4(A)のステップ40も参照)。アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名(この場合も口座情報第1DBの物理DB名)へ変換した後に、入力された指示をDB制御部へ伝達する(図4(A)のステップ42も参照)。これにより、DB制御部によって口座情報DB(詳しくは第1ストレージ14に記憶されている口座情報第1DB)へ第2階層セグメントの情報が登録されると共に、今回登録した第2階層セグメントの情報の格納位置を指し示すポインタ情報が、前回の処理(ステップ34)で口座情報DBに登録したルートセグメントの情報のヘッダに設定される(図4(A)のステップ44も参照)。
【0047】
口座情報DBへの第2階層セグメントの情報の登録が完了すると、DB制御部はアプリケーション制御部へ処理完了を通知し(図4(A)のステップ46も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(A)のステップ48も参照)。これにより、新規顧客によって特定金融機関の口座が開設が指示された場合の口座情報DBへの情報登録が完了するので、DB操作アプリケーション部は情報登録要求元の営業店端末24へ処理完了を通知し、DB操作処理を終了する。
【0048】
また、例えば特定金融機関に口座を開設している顧客によってATM22が操作されることで、顧客が開設している特定口座の残高照会が指示され、この指示に基づきATM22から送信された電文により、口座情報DBからの情報読み出しが要求された場合、図4(B)に示すように、DB操作アプリケーション部は、まず前記顧客に対応するレコードのルートセグメントの情報を口座情報DBからの読み出すようアプリケーション制御部へ指示する(図4(B)のステップ50も参照)。なお、DB操作アプリケーション部による口座情報DBからの情報の読出指示では、読出対象DB(口座情報DB)の論理DB名、読出対象の情報のセグメント名、読出対象の情報に付与されたキー情報及び読出情報格納領域のアドレス(ポインタ)がパラメータとしてアプリケーション制御部へ引き渡される。
【0049】
アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名へ変換した後に、入力された指示をDB制御部へ伝達する(図4(B)のステップ52も参照)。これにより、DB制御部によって口座情報DB(詳しくは第1ストレージ14に記憶されている口座情報第1DB)からのルートセグメントの情報の読み出しが行われる(図4(B)のステップ54も参照)。口座情報DBからのルートセグメントの情報の読み出しが完了すると、DB制御部は、読み出した情報を通知されたアドレスの格納領域に書き込んだ後にアプリケーション制御部へ処理完了を通知し(図4(B)のステップ56も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(B)のステップ58も参照)。
【0050】
口座情報DBからのルートセグメントの情報の読み出しが完了すると、続いてDB操作アプリケーション部は、残高照会が要求されている口座に対応する第2階層の特定セグメントの情報を口座情報DBから読み出すようアプリケーション制御部へ指示する(図4(B)のステップ60も参照)。アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名(この場合も口座情報第1DBの物理DB名)へ変換した後に、入力された指示をDB制御部へ伝達する(図4(B)のステップ62も参照)。これにより、DB制御部は、前回の処理(ステップ54)で口座情報DBから読み出したルートセグメントの情報のヘッダに設定されているヘッダが指し示す第2階層セグメントの情報を読み出し、読み出した情報に設定されているキー情報が通知されたキー情報と一致しているか否かを判断することで読み出した情報が読出対象の第2階層セグメントの情報か否か判定する。また、この判定が否定された場合には、読出対象の第2階層セグメントに複数のオカレンスが存在しているので(例えば同一の顧客が同一種の口座を複数開設している等の場合)、読み出した情報のヘッダに設定されているポインタ情報が指し示す同一セグメントの別のオカレンスを読み出し、読み出したオカレンスが読出対象の情報か否かを判定することを繰り返す。
【0051】
そして、上記の処理を行うことで読出対象の第2階層セグメントの情報を口座情報DBから読み出すと、DB制御部は、読み出した情報を通知されたアドレスの格納領域に書き込んだ後にアプリケーション制御部へ処理完了を通知し(図4(B)のステップ66も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(B)のステップ68も参照)。上記処理によって読み出された情報には、残高照会が要求された口座の残高を表す情報が含まれているので、DB操作アプリケーション部は、読み出された情報を編集した後に残高照会要求元のATM22へ送信し、DB操作処理を終了する。
【0052】
ところで、ATM22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間は、要求されたアクセスが完了する迄に必要なI/Oの回数(登録や読み出し、更新を行う単位領域の個数)によって大きく左右され、I/O回数が増大するに従って、ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスが低下し、ATM22や営業店端末24の待ち時間も増大する。これに対し、口座情報DBに登録される各レコードの情報のうちの第3階層セグメントについては、対応する顧客からの指示により新たな金融取引が行われる毎に、対応する新たな取引明細がオカレンスとして追加登録されるので、オカレンスの数が非常に多くなり易いという性質を有している。口座情報DBに対しては取引明細を合算する等のバッチ処理が定期的に行われ、このバッチ処理の実行直後は第3階層セグメントのオカレンスの数は非常に少ない状態となっているが、顧客によっては、次にバッチ処理が行われる迄の間に第3階層セグメントのオカレンスが1000〜2000個も追加登録されることもある。
【0053】
また、前述のように、同一の顧客の同一の口座の取引明細はオカレンスの列として直列にリンク付けされており、オカレンスの列の中の特定のオカレンス(特定の取引明細)へのアクセスが要求された場合には、オカレンスの列を順に辿っていくことでアクセス対象のオカレンスが探索される。本比較例では、単一の単位領域に格納可能なオカレンスの数が8個程度であるので、多数個のオカレンスから成るオカレンスの列の中から特定のオカレンスへのアクセスが要求された場合、要求されたアクセスを完了させるために必要なI/Oの回数が非常に多くなる可能性が高い。例えば500個のオカレンスから成るオカレンスの列の最後のオカレンス(取引明細)へのアクセスが要求された場合、単一の単位領域に格納可能なオカレンスの数を8個とすると、500個のオカレンスは最小でも63個の単位領域に分けて格納されるので、ルートセグメントの情報及び500個のオカレンスが登録されている第3階層セグメントと関連する第2階層のセグメントの情報が単一の単位領域に格納されていたとしても、I/Oの回数は最小で1+63=64回となる。このように、多数個のオカレンスから成るオカレンスの列がI/Oの回数の大幅な増大を招き、データベース・システムのレスポンスの低下、ATM22や営業店端末24の待ち時間の増大を引き起こしていた。
【0054】
また、コンピュータ・ネットワーク18には多数台のATM22及び営業店端末24が接続されており、口座情報DBに対するアクセスは個々のATM22、営業店端末24から非同期に要求されることから、ホスト・コンピュータ12では、アクセス要求が集中した場合にも、個々のATM22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間が大幅に増大することを回避する(ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスを速くする)ために、個々のATM22や営業店端末24から口座情報DBに対するアクセスが要求される毎に、要求されたアクセスを行うプロセスを生成し、複数のプロセスを並列に処理することで、個々のATM22や営業店端末24からのアクセス要求を並列に処理している。
【0055】
個々のプロセスによる口座情報DBへのアクセスは非同期に行われ、またアクセス対象の単位領域もランダムであるので、特定の単位領域に対して複数のプロセスが同時にアクセスすることで、特定の単位領域に格納されている情報に矛盾が生ずることを避けるために、DB制御部は、個々のプロセスにおいて、アクセス対象の単位領域をロックする(他のプロセスのDB制御部が処理対象の単位領域にアクセスすることを禁止する)排他制御を行っている。但し、この排他制御に伴ってデッドロックが発生する可能性がある。
【0056】
例えば図5に示すように、レコードxにアクセスするプロセスA(のDB制御部)が、まずレコードxの第n階層のセグメントの情報が格納されている単位領域iをロックし、単位領域iの情報を読み出した後に、レコードxの第n階層のセグメントの情報のヘッダに設定されているポインタ情報に基づき、レコードxの第n+1階層のセグメントの情報が格納されている単位領域jにアクセスしようとしたときに、レコードyにアクセスする別のプロセスB(のDB制御部)が、レコードyの第m階層のセグメントの情報が格納されている単位領域jをロックし、単位領域jの情報を読み出した後に、レコードyの第n+1階層のセグメントの情報のヘッダに設定されているポインタ情報に基づき、レコードyの第m+1階層のセグメントの情報が格納されている単位領域iにアクセスしようとしていた場合、プロセスAはプロセスBによる単位領域jのロックが解除されるのを待機する状態になる一方、プロセスBはプロセスAによる単位領域iのロックが解除されるのを待機する状態になる(デッドロック)。
【0057】
このデッドロックは、1回のアクセス要求に対するI/Oの回数が多くなる程発生し易いが、口座情報DBは、前述のように第3階層セグメントのオカレンスの数が非常に多くなり易く、多数個のオカレンスから成るオカレンスの列がI/Oの回数の大幅な増大を招くのでデッドロックが発生し易いという問題もある。
【0058】
このため本比較例では、口座情報DB(の各レコード)を、多数のオカレンスが登録される第3階層とその1階層上位の第2階層との境界で分割し、第3階層の情報を口座情報第2DBに登録すると共に、口座情報第2DBに登録した第3階層の情報のインデックス情報を口座情報第1DBに登録することによって上記の問題を解決している(なお、上記のように特定の階層の境界で各レコードを分割し、各々を異なるDBに登録する(異なるストレージに記憶させる)ことをインデックス分割と称する)。
【0059】
すなわち、記憶部12Cに記憶されているDB分割定義テーブルには、図6(A)に示すように、口座情報第1DBへの登録対象のセグメントとして、口座情報DBの各レコードを構成するルートセグメント、第2階層セグメント及び第3階層セグメントが、セグメント名等の定義情報と対応付けて登録されているが、第3階層セグメントには、インデックス分割の適用を指定する情報(図では「インデックス分割:ON」と表記)と、分割先が口座情報第2DBに登録されるセグメントdであることを指定する情報(図では「分割先:第2DBのセグメントd」と表記)が定義情報に付加されており、更に、セグメントdが口座情報第2DBにルートセグメントとして登録されるセグメントであることを意味する情報も登録されている。
【0060】
次に、上記のDB分割定義テーブルに従い、アプリケーション制御部によって実行されるアプリケーション制御処理について図7のフローチャートを参照して説明する。なお、このアプリケーション制御処理は、DB操作アプリケーション部から口座情報DBへのアクセス(情報の登録、読み出し、更新の何れか)が指示される毎に実行される。ステップ150では、指示されたアクセスが口座情報DBに対する情報の登録か読み出しか更新かを判定し、判定結果に応じて分岐する。指示された要求が口座情報DBに対する情報の登録である場合はステップ152へ移行し、メモリ12Bに記憶されているDB分割定義テーブルを参照し、DB操作アプリケーション部からパラメータとして通知されたセグメント名に基づき、登録対象のセグメントに対応する定義情報を取り込む。そしてステップ154では、ステップ152で取り込んだ定義情報に基づき、登録対象の情報がインデックス分割の対象か否か判定する。
【0061】
登録対象の情報がルートセグメント又は第2階層セグメントの情報であった場合には、判定が否定されてステップ162へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の情報をDB制御部へ転送することで、DB制御部に対し、登録対象の情報を口座情報第1DBへ登録するよう指示する。そして、DB制御部から登録完了が通知されるとステップ164へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。このように、登録対象の情報がルートセグメント又は第2階層セグメントの情報であった場合、登録対象の情報は従来通り口座情報第1DBに登録される。
【0062】
一方、特定金融機関に既に開設されている口座に対して新たな取引が発生し、口座情報DBへの取引明細の追加登録が要求された等の場合には、図8のステップ70〜ステップ88に示すように、DB操作アプリケーション部により、ルートセグメント及び第2階層セグメントの情報の読み出しが順次指示された後に、口座情報DBへの取引明細(第3階層セグメントのオカレンス)の登録が指示される(図8のステップ90)。図6(A)に示したDB分割定義テーブルには、第3階層セグメントはインデックス分割の適用対象として登録されているので、この場合、前述のステップ154の判定が肯定されてステップ156へ移行し、登録対象の情報のインデックス情報を生成する(図8のステップ92も参照)。図6(B)にも示すように、本比較例に係るインデックス情報は登録対象の情報から本体情報を除去しヘッダとキー情報のみを残したフォーマットとされており、登録対象の情報に比較してサイズが大幅に小さく(例えば登録対象の情報が1kバイトなのに対して30バイト程度)、ステップ156では登録対象の情報から本体情報を除去することで登録対象の情報のインデックス情報を生成する。なお、インデックス情報のフォーマットは上記に限られるものではなく、例えばヘッダとキー情報に、登録対象の情報に本体情報として設定されているテキスト情報の一部のみを抽出した要約情報を加えたフォーマットを採用してもよい。
【0063】
次のステップ158では、登録対象DBの物理DB名として口座情報第1DBの物理DB名を設定したパラメータをDB制御部へ引き渡すと共に、ステップ156で生成した登録対象の情報のインデックス情報をDB制御部へ転送することで、DB制御部に対し、前記インデックス情報を口座情報第1DBへ登録するよう指示する(図8のステップ94も参照)。これにより、DB制御部は登録対象の情報のインデックス情報を口座情報第1DBに登録すると共に、登録対象の情報自体を登録する場合と同様にして選択した情報のヘッダに、登録したインデックス情報の格納位置を指し示すポインタ情報を設定し(図8のステップ96も参照)、アプリケーション制御部へ応答を返す(図8のステップ98も参照)。アプリケーション制御部では、DB制御部からインデックス情報の登録完了が通知されると次のステップ160へ移行し、まず登録対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、登録対象の情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名(図6(A)の例では「d」)を設定し、登録対象の情報のキー情報として、ルートセグメントのキー情報、第2階層セグメントのキー情報、及び登録対象の情報の元のキー情報を羅列した新たなキー情報を生成・設定する。そして、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の情報をDB制御部へ転送することで、登録対象の情報を口座情報第2DBへ登録するようDB制御部へ指示する(図8のステップ100も参照)。
【0064】
これにより、DB制御部では、アプリケーション制御部から通知されたパラメータの中に、ルートセグメントのセグメント名が設定されていることに基づき、登録対象の情報(本来は第3階層セグメントのオカレンスとして登録すべき取引明細)を、口座情報第2DB(第2ストレージ16)にルートセグメントの情報として登録する(図8のステップ102も参照)。すなわち、第2ストレージ16の記憶領域に設けられている基本域内の個々の単位領域のうち、通知されたキー情報(ルートセグメント、第2階層セグメント及び登録対象の情報のキー情報を羅列した新たなキー情報)から一意に定まるアドレスが付与された特定の単位領域に登録対象の情報を登録する。そして、口座情報第2DBへの情報の登録が完了するとアプリケーション制御部へ登録完了を通知する(図8のステップ104も参照)。アプリケーション制御部では、DB制御部から登録完了が通知されるとステップ164へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し(図8のステップ106も参照)、処理を終了する。このように、登録対象の情報が第3階層セグメントの情報(オカレンス)であった場合には、登録対象の情報のインデックス情報が口座情報第1DBに登録されると共に、登録対象の情報自体は口座情報第2DBに登録される。
【0065】
そして、口座情報DBへの情報の登録が指示される度にアプリケーション制御部が上記処理を行うことで、図6(B)にも示すように、口座情報DBに登録されている各レコードの情報は、口座情報DBに登録されている第2階層セグメントの情報のうち、関連する取引明細が口座情報DB(の口座情報第2DB)に登録されているセグメントの情報には、関連する単一の取引明細のインデックス情報の格納位置を指し示すポインタ情報がヘッダに設定されると共に、関連する取引明細が口座情報DBに複数登録されている場合には、これらの複数の取引明細に対応する個々のインデックス情報のヘッダにポインタ情報が各々設定されることで、関連する第2階層セグメントの情報のヘッダに対応するポインタ情報が設定されているインデックス情報を先頭として、インデックス情報の列が形成された物理構造となる。また、口座情報第2DB上での個々の取引明細の格納位置(単位領域のアドレス)は、対応するインデックス情報に設定されたキー情報から導出可能であるので、個々の取引明細は対応するインデックス情報と各々関連付けされていることになる。
【0066】
続いて、アプリケーション制御処理のうち、口座情報DBからの情報の読み出しがDB操作アプリケーション部より指示された場合の処理を説明する。指示されたアクセスが情報の読み出しである場合には、ステップ150からステップ166へ移行し、前述したステップ152と同様にDB分割定義テーブルを参照し、DB操作アプリケーション部から通知されたセグメント名に基づき、読出対象の情報のセグメントに対応する定義情報を取り込む。そしてステップ168では、ステップ166で取り込んだ定義情報に基づき、読出対象の情報がインデックス分割の対象か否か判定する。
【0067】
読出対象の情報がルートセグメント又は第2階層セグメントの情報であった場合には、判定が否定されてステップ174へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、口座情報第1DBから読出対象の情報を読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ176へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共にDB制御部によって口座情報DB(の口座情報第1DB)から読み出された情報をDB操作アプリケーション部へ転送し、処理を終了する。このように、読出対象の情報がルートセグメント又は第2階層セグメントの情報であった場合には、従来通り口座情報第1DBに対して情報の読み出しが行われる。
【0068】
一方、口座情報DBからの取引明細の読み出しが要求された等の場合には、図9のステップ110〜ステップ128に示すように、DB操作アプリケーション部により、ルートセグメント及び第2階層セグメントの情報の読み出しが順次指示された後に、口座情報DBからの取引明細(第3階層セグメントのオカレンス)の読み出しが指示される(図9のステップ130)。この場合、前述のように第3階層セグメントはインデックス分割の適用対象であり、前述のステップ168の判定が肯定されてステップ170へ移行し、読出対象DBの物理DB名として口座情報第1DBの物理DB名を設定したパラメータをDB制御部へ引き渡すことで、DB制御部に対し、設定したパラメータに対応する情報、すなわち読出対象の情報のインデックス情報を口座情報第1DBから読み出すよう指示する(図9のステップ132も参照)。
【0069】
これにより、DB制御部は、前回の読出指示によって読み出した第2階層セグメントの情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、認識した単位領域が前回読み出しを行った単位領域と同一であれば、前回読み出した情報に含まれる前記ポインタ情報が指し示すインデックス情報を参照し、認識した単位領域が前回読み出しを行った単位領域と相違していれば、認識した単位領域の情報を読み出し、読み出した情報に含まれる前記ポインタ情報が指し示すインデックス情報を参照する。そして、参照したインデックス情報に設定されているキー情報が通知されたキー情報と一致しているか否か判定する。キー情報が不一致であれば、参照したインデックス情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、必要に応じて単位領域の情報の読み出しを行って前記ポインタ情報が指し示す次のインデックス情報を参照し、キー情報が一致しているか否かを判定することを、キー情報が一致しているインデックス情報が出現する迄繰り返すことで、キー情報が一致しているインデックス情報を探索し、該当するインデックス情報をアプリケーション制御部へ転送してインデックス情報の読出完了を通知する(図9のステップ134,136)。
【0070】
なお、DB制御部による上記のインデックス情報の探索・読み出し処理では、インデックス情報の列が順に参照されることになるが、インデックス情報のサイズは取引明細本体と比較して大幅に小さく、例えばインデックス情報のサイズが30バイトであれば単一の単位領域に最大266個のインデックス情報を格納できるので、500件の取引明細に対応する500個のインデックス情報は最小で2個の単位領域に収まり、読出対象の500件目の取引明細であったとしても、インデックス情報の探索・読み出しにおけるI/Oの回数は最小で2回となる。なお、この最小のI/O回数は同一レコードのインデックス情報が同一の単位領域に詰めて格納されていた場合であり、現実の口座情報データベースでは、取引明細及びインデックス情報は金融取引が発生する都度登録されるので、同一レコードのインデックス情報が単位領域に詰めて格納されていない方が多いが、インデックス情報は取引明細自体よりも大幅にサイズが小さいので、同一レコードのインデックス情報が同一の単位領域に格納されている確率は高く、取引明細の列(第3階層セグメントのオカレンスの列)を順に参照する場合と比較してI/O回数は大幅に削減される。
【0071】
DB制御部からインデックス情報の読出完了が通知されるとステップ172へ移行し、読出対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定し、読出対象の情報のキー情報として、ルートセグメントのキー情報、第2階層セグメントのキー情報、及び登録対象の情報の元のキー情報を羅列した新たなキー情報を生成・設定する。そして、これらの情報をパラメータとしてDB制御部へ引き渡すことで、該当する情報を口座情報第2DBから読み出すようDB制御部へ指示する(図9のステップ138も参照)。
【0072】
これにより、DB制御部では、第2ストレージ16の記憶領域に設けられている基本域内の個々の単位領域のうち、アプリケーション制御部から通知されたキー情報(ルートセグメント、第2階層セグメント及び登録対象の情報のキー情報を羅列した新たなキー情報)から一意に定まるアドレスが付与された特定の単位領域から情報を読み出し、読み出した情報に含まれる読出対象の情報をアプリケーション制御部へ転送することで、読出対象の情報の読み出し完了を通知する(図9のステップ140,142も参照)。アプリケーション制御部では、DB制御部から読み出し完了が通知されるとステップ176へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共にDB制御部によって口座情報DB(の口座情報第2DB)から読み出された情報をDB操作アプリケーション部へ転送し、処理を終了する。
【0073】
なお、口座情報DBに対する情報の更新が指示されるときには、その直前に更新対象情報の読み出しが指示され、この指示に従って更新対象情報の読み出しが行われているので、口座情報DBにおける更新対象情報の格納位置は既知の状態となっている。このため、指示されたアクセスが情報の更新であればステップ150からステップ178へ移行し、DB操作アプリケーション部から転送された更新情報をDB制御部へ転送すると共に、前回の情報読み出し時(更新対象情報の読み出し時)と同一のパラメータ(物理DB名、セグメント名、キー情報)を設定し、このパラメータに該当する情報(更新対象情報)を更新情報で上書きするようDB制御部へ指示する。これにより、DB制御部により口座情報DB(口座情報第1DB又は口座情報第2DB)に記憶されている更新対象情報が、DB操作アプリケーション部からアプリケーション制御部を経由して転送された更新情報で上書き更新されることになる。アプリケーション制御部では、DB制御部から更新完了が通知されるとステップ180へ移行し、DB操作アプリケーション部に対して更新完了を通知して処理を終了する。
【0074】
このように、本比較例では、口座情報DBの各レコードの情報を、多数のオカレンスが登録される第3階層とその1階層上位の第2階層との境界で分割し、第3階層の情報(取引明細)を口座情報第2DBに登録すると共に、口座情報第2DBに登録した取引明細のインデックス情報を口座情報第1DBに登録するようにしたので、多数の取引明細から成る取引明細の列のうちの任意の取引明細を口座情報DBから読み出す際のI/Oの回数を大幅に削減することができ、デッドロックの発生を抑制できると共に、口座情報DBへのアクセス要求に対するデータベース・システムのレスポンスを向上させることができる。
【0075】
〔実施形態〕
次に本発明の実施形態について説明する。なお、本実施形態は比較例と略同一の構成であるので、各部分に同一の符号を付して構成の説明を省略し、以下、本実施形態の作用を説明する。
【0076】
顧客が特定金融機関に開設可能な口座は50種類程度存在している。これに対し、個々の顧客に対応して口座情報DBに登録される個々のレコードには、第2階層セグメントの情報として、対応する顧客が特定金融機関に開設している口座の数と同数の情報が登録され、更に、個々の第2階層セグメントの情報には、対応する個々の口座に関する取引明細がリンク付けされるので、特定金融機関に多数の口座を開設している顧客については、口座情報DBに登録されている対応するレコードが肥大化し、このようなレコードへのアクセス要求がデータベース・システムのレスポンスに悪影響を及ぼすという問題がある。
【0077】
このため、本実施形態では比較例で説明したインデックス分割に代えて、例として図10(B)に示すように、複数のセグメントがルートセグメントを起点として階層的に関連付けられた論理構造を有する口座情報DBの個々のレコードの情報を、第2階層セグメントのうち予め定められた特定の口座種に対応する特定の第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がルートセグメントの情報を起点としてリンク付けされた第1のレコードと、第2階層セグメントのうち予め定められた特定の口座種以外の口座種に対応する第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がダミーのルートセグメントの情報を起点としてリンク付けされた第2のレコードに物理的に分割し、第1のレコードの情報を口座情報第1DBに格納すると共に、第2のレコードの情報を口座情報第2DBに格納することで上記の問題を解決している(なお上記のように各レコードを第2階層セグメントの種類に応じて各々階層構造を有する2つのレコードに分割し、分割後の2つのレコードを異なるDBに登録する(異なるストレージに記憶させる)ことをダミールート分割と称する)。
【0078】
すなわち、本実施形態に係るDB分割定義テーブルには、図10(A)に示すように、口座情報第1DBへ登録すべきセグメントとして、ルートセグメント、第2階層セグメント及び第3階層セグメントがセグメント名等の定義情報と対応付けて登録されていると共に、口座情報第2DBへ登録すべきセグメントとして、ダミールートセグメント、第2階層セグメント及び第3階層セグメントが同じくセグメント名等の定義情報と対応付けて登録されているが、口座情報第1DBにはダミールートセグメントが有ることを表す属性情報が、口座情報第2DBにはダミールートセグメント(を起点とする第2のレコード)の登録先であることを表す属性情報が各々付加されている。また、口座情報第1DBと対応付けられた第2階層セグメントの情報には、口座情報第1DBへ登録すべき第2階層セグメントの種類を規定する分割定義情報(例えば普通口座及び当座口座に対応する情報のみを口座情報第1DBへ登録することを規定する情報)が付加されており、口座情報第2DBと対応付けられた第2階層セグメントの情報にも、口座情報第2DBへ登録すべき第2階層セグメントの種類を規定する分割定義情報(例えば普通口座及び当座口座以外の口座種の口座に対応する情報を口座情報第1DBへ登録することを規定する情報)が付加されている。
【0079】
なお、本実施形態に係るDB分割定義テーブルは、請求項1,4に記載の第2の分割条件情報に対応しており、ホスト・コンピュータ12の電源が投入されている間中DB分割定義テーブルを記憶するメモリ12Bは請求項1,4に記載の第2条件情報記憶手段に対応している。また、本実施形態において、ホスト・コンピュータ12の記憶部12Cに記憶されているアプリケーション制御プログラムは請求項4に記載のデータベース管理プログラムに対応している。
【0080】
次に、上記のDB分割定義テーブルに従い、アプリケーション制御部によって実行されるアプリケーション制御処理について図11のフローチャートを参照して説明する。ステップ200では、指示されたアクセスが口座情報DBに対する情報の登録か読み出しか更新かを判定し、判定結果に応じて分岐する。指示された要求が口座情報DBに対する情報の登録である場合はステップ202へ移行し、情報の登録指示と共にDB操作アプリケーション部からパラメータとして通知されたセグメント名を参照することで登録対象情報に対応するセグメントの階層を判定し、判定結果に応じて分岐する。登録対象の情報がルートセグメントの情報であればステップ202からステップ204へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象のルートセグメントの情報をDB制御部へ転送することで、DB制御部に対し、登録対象のルートセグメントの情報を口座情報第1DBへ登録するよう指示する。そして、DB制御部から登録完了が通知されるとステップ222へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。
【0081】
また、登録対象の情報が第2階層セグメントの情報であればステップ202からステップ206へ移行し、メモリ12Bに記憶されているDB分割定義テーブルを参照し、DB操作アプリケーション部からパラメータとして通知されたセグメント名に基づき、登録対象のセグメントに対応する定義情報を取り込む。そしてステップ208では、ステップ206で取り込んだ定義情報をDB操作アプリケーション部から通知されたパラメータと照合することで、登録対象の第2階層セグメントの情報が口座情報第2DBに登録すべき口座種の情報か否か(ダミールート分割の対象か否か)判定する。この判定が否定された場合(例えば前述の例では登録対象の第2階層セグメントの情報が普通口座又は当座口座の情報であった場合)にはステップ210へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の第2階層セグメントの情報をDB制御部へ転送することで、DB制御部に対し、登録対象の第2階層セグメントの情報を口座情報第1DBへ登録するよう指示する。そして、DB制御部から登録完了が通知されるとステップ222へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。
【0082】
一方、ステップ208の判定が肯定された場合(例えば前述の例では登録対象の第2階層セグメントの情報が普通口座又は当座口座以外の口座の情報であった場合)は、登録対象の第2階層セグメントの情報は口座情報第2DBに登録する必要があるが、ダミールートセグメントの情報は、対応する顧客が、対応する情報が口座情報第2DBに登録される口座(例えば普通口座及び当座口座以外の口座)を開設したときに口座情報第2DBに登録されるので、登録対象の第2階層セグメントの情報を口座情報第2DBに登録する時点で、対応するダミールートセグメントの情報が口座情報第2DBに登録されていない場合もある。このため、ステップ208の判定が肯定された場合はステップ212へ移行し、読出対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおけるダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、該当する情報(登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報)を口座情報第2DBから読み出すようDB制御部へ指示する。
【0083】
これにより、DB制御部では口座情報第2DBからのダミールートセグメントの情報の読み出しを試行し、口座情報第2DBに該当するダミールートセグメントの情報が記憶されていれば該当する情報の読み出しを行う。そして、ダミールートセグメントの情報を読み出せた場合には、読み出したダミールートセグメントの情報をアプリケーション制御部へ転送すると共にアプリケーション制御部へ読出完了を通知し、該当するダミールートセグメントの情報が口座情報第2DBに記憶されていなかった場合にはアプリケーション制御部へエラー発生を通知する。アプリケーション制御部では、DB制御部から何らかの通知を受け取ると次のステップ214へ移行し、受け取った通知の内容に基づいて登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報が口座情報第2DBに登録されているか否か判定する。
【0084】
ステップ214の判定が肯定された場合には何ら処理を行うことなくステップ218へ移行するが、DB制御部からエラー応答を受け取った場合には、登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報が口座情報第2DBに登録されていないので、ステップ214の判定が否定されてステップ216へ移行し、口座情報第2DBに登録すべきダミールートセグメントの情報を生成し、登録対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、登録対象の情報のセグメント名として口座情報第2DBにおけるダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すと共に、生成したダミールートセグメントの情報をDB制御部へ転送することで、転送したダミールートセグメントの情報を口座情報第2DBへ登録するようDB制御部へ指示する。これにより、登録対象の第2階層セグメントの情報に対応するダミールートセグメントの情報がDB制御部によって口座情報第2DBに登録されることになる。そして、DB制御部から登録完了が通知されるとステップ218へ移行する。
【0085】
ステップ218では、登録対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、登録対象の情報のセグメント名として口座情報第2DBにおける第2階層ダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の第2階層セグメントの情報をDB制御部へ転送することで、転送した登録対象の第2階層セグメントの情報を口座情報第2DBへ登録するようDB制御部へ指示する。これにより、登録対象の第2階層セグメントの情報がDB制御部によって口座情報第2DBに登録される。そして、DB制御部から登録完了が通知されるとステップ222へ移行し、登録対象の情報の登録が完了したことをDB操作アプリケーション部へ通知し、処理を終了する。このように、登録対象の情報が第2階層セグメントの情報であった場合には、登録対象の情報が何れの口座の情報かに応じて情報を登録するデータベース(情報を記憶させるストレージ)が切り替わることになる。
【0086】
なお、第3階層セグメントの情報の登録が指示されるときには、その直前に登録対象の情報と関連する第2階層セグメントの情報の登録又は読み出しが指示され、この指示に従って上記第2階層セグメントの情報の登録又は読み出しが行われているので、登録対象の第3階層セグメントの情報は、直前にアクセス(登録又は読み出し)が行われたDBへ登録すればよい。このため、登録対象の情報が第3階層セグメントの情報であればステップ202からステップ220へ移行し、物理DB名として直前にアクセスしたDBの物理DB名を、セグメント名として直前にアクセスしたDBにおける第3階層セグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象の第3階層セグメントの情報をDB制御部へ転送し、転送した第3階層セグメントの情報を登録するようDB制御部へ指示する。これにより、登録対象の第3階層セグメントの情報が、直前にアクセスしたDB、すなわち登録対象の情報と関連する第2階層セグメントの情報が登録されている口座情報第1DB又は口座情報第2DBに登録されることになる。アプリケーション制御部では、DB制御部から登録完了が通知されるとステップ222へ移行し、DB操作アプリケーション部に対して登録完了を通知して処理を終了する。なお、上述したステップ202〜ステップ222は請求項1,4に記載の第2登録制御手段に対応している。
【0087】
また、指示されたアクセスが情報の読み出しである場合には、ステップ200からステップ224へ移行し、前述のステップ202と同様にして読出対象情報に対応するセグメントの階層を判定し、判定結果に応じて分岐する。読出対象の情報がルートセグメントの情報であればステップ224からステップ226へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、読出対象のルートセグメントの情報を口座情報第1DBから読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ240へ移行し、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。
【0088】
また、読出対象の情報が第2階層セグメントの情報であればステップ224からステップ228へ移行し、DB分割定義テーブルを参照し、読出対象のセグメントに対応する定義情報を取り込む。ステップ230では、ステップ228で取り込んだ定義情報をDB操作アプリケーション部から通知されたパラメータと照合することで、読出対象の第2階層セグメントの情報が口座情報第2DBに登録される口座種の情報か否か(ダミールート分割の対象か否か)判定する。この判定が否定された場合にはステップ232へ移行し、DB操作アプリケーション部からパラメータとして通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、読出対象の第2階層セグメントの情報を口座情報第1DBから読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ240へ移行し、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。
【0089】
一方、ステップ230の判定が肯定された場合にはステップ234へ移行し、物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおけるダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、ダミールートセグメントの情報を口座情報第2DBから読み出すようDB制御部へ指示する。これにより、読出対象の第2階層セグメントの情報に対応するダミールートセグメントの情報がDB制御部によって口座情報第2DBから読み出される。口座情報第1DBに登録されているルートセグメントの情報のヘッダには、口座情報第2DBに登録されている第2階層セグメントの情報を指し示すポインタ情報は設定されていない(このポインタ情報はダミールートセグメントの情報のヘッダに設定されている)が、上記のように口座情報第2DBからダミールートセグメントの情報を読み出させることで、口座情報第2DBにおける第2階層セグメントの情報の格納位置をDB制御部に認識させることができ、DB制御部が口座情報第2DBから第2階層セグメントの情報を読み出すことが可能となる。
【0090】
また、DB制御部から読出完了が通知され、ダミールートセグメントの情報が転送されるとステップ236へ移行し、読出対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、読出対象の情報のセグメント名として口座情報第2DBにおける第2階層ダミールートセグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、読出対象の第2階層セグメントの情報を口座情報第2DBから読み出すようDB制御部へ指示する。そして、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。このように、読出対象の情報が第2階層セグメントの情報であった場合には、読出対象の情報が何れの口座の情報かに応じて読出対象DB(情報の読み出しを行うストレージ)が切り替わることになる。
【0091】
また、第3階層セグメントの情報の読み出しが指示されるときには、その直前に読出対象の情報と関連する第2階層セグメントの情報の読み出しが指示され、この指示に従って上記第2階層セグメントの情報の読み出しが行われているので、読出対象の第3階層セグメントの情報は、直前にアクセス(読み出し)が行われたDBから読み出せばよい。このため、読出対象の情報が第3階層セグメントの情報であればステップ224からステップ238へ移行し、物理DB名として直前にアクセスしたDBの物理DB名を、セグメント名として直前にアクセスしたDBにおける第3階層セグメントのセグメント名を設定し、これらのパラメータをDB制御部へ引き渡すことで、読出対象の第3階層セグメントの情報の読み出しをDB制御部へ指示する。これにより、読出対象の第3階層セグメントの情報が、直前にアクセスしたDBから読み出されることになる。アプリケーション制御部では、DB制御部から読出完了が通知されるとステップ240へ移行し、DB制御部から転送された読出情報をDB操作アプリケーション部へ転送すると共に、読出完了をDB操作アプリケーション部へ通知し、処理を終了する。なお、上述したステップ224〜ステップ240は請求項1,4に記載の第2読出制御手段(詳しくは請求項2に記載の第2読出制御手段)に対応している。
【0092】
また、指示されたアクセスが情報の更新であればステップ200からステップ242へ移行し、DB操作アプリケーション部から転送された更新情報をDB制御部へ転送すると共に、前回の情報読み出し時(更新対象情報の読み出し時)と同一のパラメータ(物理DB名、セグメント名、キー情報)を設定し、このパラメータに該当する情報(更新対象情報)を更新情報で上書きするようDB制御部へ指示する。これにより、DB制御部により口座情報DB(口座情報第1DB又は口座情報第2DB)に記憶されている更新対象情報が、DB操作アプリケーション部からアプリケーション制御部を経由して転送された更新情報で上書き更新されることになる。アプリケーション制御部では、DB制御部から更新完了が通知されるとステップ244へ移行し、DB操作アプリケーション部に対して更新完了を通知して処理を終了する。
【0093】
このように、本実施形態では、口座情報DBの各レコードの情報を、予め定められた特定の口座種に対応する特定の第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がルートセグメントの情報を起点としてリンク付けされた第1のレコードと、第2階層セグメントのうち予め定められた特定の口座種以外の口座種に対応する第2階層セグメントの情報と該情報に関連する第3階層セグメントの情報(取引明細)がダミーのルートセグメントの情報を起点としてリンク付けされた第2のレコードに物理的に分割し、第1のレコードの情報を口座情報第1DBに格納すると共に、第2のレコードの情報を口座情報第2DBに格納しているので、特定金融機関に多数の口座を開設している顧客であっても、個々のDB(口座情報第1DB又は口座情報第2DB)に登録されているレコードが肥大化することを回避できると共に、口座情報DBに対するアクセスが口座情報第1DB(第1ストレージ14)と口座情報第2DB(第2ストレージ16)に分散されるのでデッドロックの発生を抑制できると共に、個々のDBに登録される個々のレコードの情報がより少数の単位領域に格納されることで、口座情報DBへのアクセスにおけるI/O回数が削減され、口座情報DBへのアクセス要求に対するシステムのレスポンスも向上させることができる。
【0094】
なお、上記では本発明に係るデータベースの一例として、各レコードの情報が3階層に分離された論理構造のデータベースを説明したが、これに限定されるものではなく、より多数の階層に分離された論理構造であってもよい。
【0095】
また、上記ではインデックス分割とダミールート分割を分けて説明したが、これに限定されるものではなく、インデックス分割とダミールート分割を組み合わせてもよいことは言うまでもない。
【0096】
更に、上記では特定金融機関の各支店に設置されたATM22及び営業店端末24が、同一の支店に設置されたブランチ・サーバ20と接続されている構成のコンピュータ・システム10を例に説明したが、各支店にブランチ・サーバ20を設置することに代えて情報センタ等にサーバを集中配置し、各支店に設置されたATM22及び営業店端末24が集中配置したサーバに接続される構成を採用してもよい。
【0097】
また、上記では本発明に係るデータベースの一例として、顧客が特定金融機関に開設した口座に関する情報を登録・管理するための口座情報DBを説明したが、本発明は階層型のデータベースであれば適用可能であり、データベースに登録される情報は上記に限定されるものではない。
【図面の簡単な説明】
【0098】
【図1】比較例に係るコンピュータ・システムの概略構成を示すブロック図である。
【図2】(A)は口座情報の論理構造、(B)は従来の物理フォーマットの一例を各々示す概念図である。
【図3】(A)はストレージの口座情報DB記憶領域、(B)は単位領域(CI)内のフォーマットを各々示す概念図である。
【図4】(A)は新規顧客が口座を開設した場合、(B)は既開設口座に対する残高照会が指示された場合の処理の流れを示すシーケンス図である。
【図5】デッドロック発生の原理を説明するための概念図である。
【図6】(A)は比較例に係るDB分割定義テーブルの内容を示すイメージ図、(B)は(A)のDB分割定義テーブルに基づき口座情報DBに登録される口座情報の物理フォーマットの一例を示す概念図である。
【図7】アプリケーション制御処理の内容を示すフローチャートである。
【図8】既開設口座に対する新たな取引が発生した場合の処理の流れを示すシーケンス図である。
【図9】取引明細を読み出す場合の処理の流れを示すシーケンス図である。
【図10】(A)は実施形態に係るDB分割定義テーブルの内容を示すイメージ図、(B)は実施形態における口座情報の分割を示す概念図である。
【図11】実施形態に係るアプリケーション制御処理の内容を示すフローチャートである。
【符号の説明】
【0099】
10 コンピュータ・システム
12 ホスト・コンピュータ
14 第1ストレージ
16 第2ストレージ
18 コンピュータ・ネットワーク
18 ネットワーク
20 ブランチ・サーバ
20 通信回線
24 営業店端末
【特許請求の範囲】
【請求項1】
記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、
任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段と、
前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段と、
を備えたデータベース管理装置であって、
記憶領域が多数個の単位領域に区画された第3記憶手段と、
前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、
任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段と、
任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段と、
を備えたことを特徴とするデータベース管理装置。
【請求項2】
読出対象の情報が第2階層以下の下位階層のセグメントである場合には、前記論理構造に従いルートセグメントから読出対象の情報のセグメントに至る各セグメントの情報の読み出しが順に指示されることで、読出対象の情報の読み出しが指示され、
前記第2読出制御手段は、前記ルートセグメントの情報の読み出しが指示された後に、第2階層セグメントの情報の読み出しが指示され、当該読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報と関連付けられたダミーのルートセグメントの情報を前記読出手段によって前記第3記憶手段から読み出させた後に、読み出された前記ダミーのルートセグメントの情報に設定されているポインタ情報に基づいて、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力することを特徴とする請求項1記載のデータベース管理装置。
【請求項3】
前記登録手段は、登録対象の情報がルートセグメントの情報である場合に、該ルートセグメントに付与されたキー情報から一意に特定される第1の単位領域に登録対象のルートセグメントの情報を登録可能な空き領域が有るか否かを判断し、前記空き領域があれば前記登録対象のルートセグメントの情報を前記第1の単位領域に登録し、前記空き領域が無い場合には、所定の選択基準に従い登録対象のルートセグメントの情報を登録可能な空き領域が生じている第2の単位領域を選択し、選択した第2の単位領域に前記登録対象のルートセグメントの情報を登録すると共に、前記登録対象のルートセグメントの情報の登録位置が前記第2の単位領域であることを表すルート登録先情報を前記第1の単位領域に設定することを特徴とする請求項1記載のデータベース管理装置。
【請求項4】
記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、
記憶領域が多数個の単位領域に区画された第3記憶手段と、
前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、
を備え、
任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段、
及び、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段
として機能するコンピュータを、更に、
任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段、
及び、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段
として機能させるためのデータベース管理プログラム。
【請求項1】
記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、
任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段と、
前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段と、
を備えたデータベース管理装置であって、
記憶領域が多数個の単位領域に区画された第3記憶手段と、
前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、
任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段と、
任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段と、
を備えたことを特徴とするデータベース管理装置。
【請求項2】
読出対象の情報が第2階層以下の下位階層のセグメントである場合には、前記論理構造に従いルートセグメントから読出対象の情報のセグメントに至る各セグメントの情報の読み出しが順に指示されることで、読出対象の情報の読み出しが指示され、
前記第2読出制御手段は、前記ルートセグメントの情報の読み出しが指示された後に、第2階層セグメントの情報の読み出しが指示され、当該読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報と関連付けられたダミーのルートセグメントの情報を前記読出手段によって前記第3記憶手段から読み出させた後に、読み出された前記ダミーのルートセグメントの情報に設定されているポインタ情報に基づいて、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力することを特徴とする請求項1記載のデータベース管理装置。
【請求項3】
前記登録手段は、登録対象の情報がルートセグメントの情報である場合に、該ルートセグメントに付与されたキー情報から一意に特定される第1の単位領域に登録対象のルートセグメントの情報を登録可能な空き領域が有るか否かを判断し、前記空き領域があれば前記登録対象のルートセグメントの情報を前記第1の単位領域に登録し、前記空き領域が無い場合には、所定の選択基準に従い登録対象のルートセグメントの情報を登録可能な空き領域が生じている第2の単位領域を選択し、選択した第2の単位領域に前記登録対象のルートセグメントの情報を登録すると共に、前記登録対象のルートセグメントの情報の登録位置が前記第2の単位領域であることを表すルート登録先情報を前記第1の単位領域に設定することを特徴とする請求項1記載のデータベース管理装置。
【請求項4】
記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための第1記憶手段と、
記憶領域が多数個の単位領域に区画された第3記憶手段と、
前記論理構造において第2階層に相当する複数の第2階層セグメントのうち、前記第3記憶手段に情報を登録すべき第2階層セグメントを規定する第2の分割条件情報を記憶する第2条件情報記憶手段と、
を備え、
任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段、
及び、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段
として機能するコンピュータを、更に、
任意のレコードの任意のセグメントの情報の登録が指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて、前記登録対象の情報が前記第3記憶手段へ情報を登録すべき第2階層セグメント又は該第2階層セグメントと関連付けられたより下位の階層のセグメントの情報か否かを判断することで、前記第3記憶手段へ登録すべき情報か否かを判定し、前記登録対象の情報が前記第3記憶手段へ登録すべき情報である場合には、前記任意のレコードのダミーのルートセグメントの情報が前記第3記憶手段に未登録であれば、前記任意のレコードのダミーのルートセグメントの情報を前記登録手段によって前記第3記憶手段に登録させた後に、登録対象の情報を前記登録手段によって前記第3記憶手段に登録させる第2登録制御手段、
及び、任意のレコードの任意のセグメントの情報の読み出しが指示された場合に、前記第2条件情報記憶手段に記憶されている第2の分割条件情報に基づいて前記読出対象の情報が前記第3記憶手段に登録されているか否かを判定し、前記読出対象の情報が前記第3記憶手段に登録されている場合には、前記読出対象の情報を前記読出手段によって前記第3記憶手段から読み出させ、読み出された読出対象の情報を出力する第2読出制御手段
として機能させるためのデータベース管理プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2009−3968(P2009−3968A)
【公開日】平成21年1月8日(2009.1.8)
【国際特許分類】
【出願番号】特願2008−246704(P2008−246704)
【出願日】平成20年9月25日(2008.9.25)
【分割の表示】特願2005−103240(P2005−103240)の分割
【原出願日】平成17年3月31日(2005.3.31)
【出願人】(598049322)株式会社三菱東京UFJ銀行 (200)
【出願人】(592073101)日本アイ・ビー・エム株式会社 (42)
【Fターム(参考)】
【公開日】平成21年1月8日(2009.1.8)
【国際特許分類】
【出願日】平成20年9月25日(2008.9.25)
【分割の表示】特願2005−103240(P2005−103240)の分割
【原出願日】平成17年3月31日(2005.3.31)
【出願人】(598049322)株式会社三菱東京UFJ銀行 (200)
【出願人】(592073101)日本アイ・ビー・エム株式会社 (42)
【Fターム(参考)】
[ Back to top ]