JP4209859B2 - データベース管理装置及びプログラム - Google Patents

データベース管理装置及びプログラム Download PDF

Info

Publication number
JP4209859B2
JP4209859B2 JP2005103241A JP2005103241A JP4209859B2 JP 4209859 B2 JP4209859 B2 JP 4209859B2 JP 2005103241 A JP2005103241 A JP 2005103241A JP 2005103241 A JP2005103241 A JP 2005103241A JP 4209859 B2 JP4209859 B2 JP 4209859B2
Authority
JP
Japan
Prior art keywords
information
segment
area
specific
registered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005103241A
Other languages
English (en)
Other versions
JP2006285537A (ja
Inventor
晴夫 遠藤
覚 礒崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM Japan Ltd
MUFG Bank Ltd
Original Assignee
IBM Japan Ltd
Bank of Tokyo Mitsubishi UFJ Trust Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IBM Japan Ltd, Bank of Tokyo Mitsubishi UFJ Trust Co filed Critical IBM Japan Ltd
Priority to JP2005103241A priority Critical patent/JP4209859B2/ja
Publication of JP2006285537A publication Critical patent/JP2006285537A/ja
Application granted granted Critical
Publication of JP4209859B2 publication Critical patent/JP4209859B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はデータベース管理装置及びプログラムに係り、特に、個々のレコードの情報が階層構造とされたデータベースを管理するデータベース管理装置、コンピュータをデータベース管理装置として機能させるためのデータベース管理プログラムに関する。
従来より、データベースに登録すべき情報項目を複数のセグメントに分け、これらのセグメントを、ルートセグメントを起点として階層的に関連付けた論理構造のデータベース(階層型データベース)が知られている。階層型データベースは、例えばデータベースに登録すべき多数レコードのデータのうち、特定の情報項目のデータ量が各レコード毎に一定していない等の場合にも、前記特定の情報項目に対応するセグメントのオカレンス(occurrence)の数を各レコード毎に増減させる等のように、登録すべきデータに応じて各レコードを単位としてデータ構造を柔軟に変更することができるので、登録データ量に比してデータベースの規模(データベースを記憶するために必要な記憶手段の容量)を抑制できるという特長を有している。
上記の階層型データベースに関連して、特許文献1には、階層構造のデータに対し、個々のセグメントに選択番号と検索キーを付与すると共に、個々のセグメント毎に、選択番号と検索キーに加えて下位階層のセグメントの選択番号を登録した検索キー管理ファイルを設け、特定のセグメントの選択番号が入力されると、特定セグメントの検索キー及び下位階層のセグメントの選択番号を検索キー管理ファイルから取得し、取得した検索キーを用いてデータ検索を行うことを、下位階層が存在しない状態となる迄繰り返すことで、特定セグメント及びその下位階層のセグメントのデータを全て検索する技術が開示されている。
また、データベースの管理に関連して、特許文献2には、データベースの物理ファイルをデータの使用頻度に応じて複数の物理ファイルに分割し、使用頻度の低い物理ファイルを他の記憶装置へ退避させ、退避させた物理ファイルを退避元の記憶装置から削除すると共に、分割した複数の物理ファイルを論理的に1つの物理ファイルとしてアクセスすることを可能とし、分割した複数の物理ファイルに対してアクセス要求があり、一部の物理ファイルが退避されている場合には、当該物理ファイルを退避先の記憶装置から復元させることでアクセス要求を実行する技術が開示されている。
また、特許文献3には、データレコード件数の増減に応じて、累乗根算出方式により階層数をインデックスなし、又は1次〜n次に判断し、決定された次数分の階層構造を持つインデックスファイルを作成し、データファイルとインデックスファイルを関連付けるためにデータファイル名とインデックスファイル名とインデックス次数を格納した管理情報ファイルを作成する技術が開示されている。
特開平5−35790号公報 特開平8−328929号公報 特開平8−55050号公報
ところで、階層型データベースでは、情報の読み出し及び書き込みがセグメントを単位として行われるが、情報の読み出しにおける起点は常にルートセグメントであり、例えば読出対象情報のセグメントが従属階層(第2階層又はそれよりも低い階層)のセグメントであったとしても、読出対象情報の読み出しは、ルートセグメントから読出対象情報のセグメントに至る経路上の各セグメントの情報が、個々の情報に各々設定されたポインタ情報に基づいて順に読み出されることで行われる。また、階層型データベースにおいて、同一セグメントに複数のオカレンスが存在していた場合、この複数のオカレンスのうちの何れか1つの特定オカレンスのポインタ情報のみが1階層上位のセグメントの情報に設定され(1階層上位のセグメントとリンク付けされ)、他のオカレンスは特定オカレンスからディジーチェーンのように数珠繋ぎにリンク付けされる。このため、例えば読出対象のセグメントが従属セグメントで、この読出対象のセグメントに複数のオカレンスが存在しており、このうちの何れかのオカレンスが読出対象情報である場合、読出対象情報の読み出しは、ルートセグメントから読出対象のセグメントに至る経路上の各セグメントの情報を順に読み出すことで特定オカレンス(1階層上位のセグメントと直接リンク付けされたオカレンス)に到達した後に、この特定オカレンスから数珠繋ぎに関連付けられた各オカレンスを順に辿っていく(情報を順に読み出していく)ことによって成される。
データベースを記憶する記憶装置は、論理的な入出力の単位(CI:Control Intervalという)が定められており、このCIは階層型データベースにおける個々のセグメントの数個分程度のサイズとされ、記憶装置の記憶領域は多数個のCI(単位領域)に区画されているが、上記のように読出対象のレコードの第2階層以下の階層のセグメントに多数のオカレンスが存在しており、この多数のオカレンスのうちの何れかを読み出す場合、読出対象のオカレンスが読み出される迄に、ルートセグメントの情報が格納されている単位領域を始めとして多数の単位領域にアクセスして情報を読み出す必要があるので、I/Oの回数(読み出すべき単位領域の数)が大幅に増大し、読出対象の情報の読み出しが完了する迄に長い時間がかかることになる。そして、データベースに登録されている各レコードの多数(或いは殆ど)が上記のように多数のオカレンスが存在しているレコードであった場合、データベースへのアクセス要求に対するシステムのレスポンスが悪化するという問題がある。
一例として、第3階層の特定セグメントに500個のオカレンスが存在しているレコードから、特定セグメントの500個のオカレンスのうちの任意のオカレンスを読み出す場合、個々の単位領域のサイズが8kバイト、個々のオカレンスのサイズが1kバイト(すなわち、単一の単位領域に格納可能なオカレンスの数を8個)とすると、特定セグメントの500個のオカレンスは最小でも(個々の単位領域に詰めて格納されていたとしても)63個の単位領域に分けて格納されることになる。このため、読出対象のオカレンスが特定セグメントの500個のオカレンスの列の最後に繋がれていた場合、ルートセグメントの情報及び特定セグメントと関連付けられた第2階層のセグメントの情報が単一の単位領域に格納されていたとしても、I/Oの回数は最小で1+63=64回となる(500÷8=62.5≒63)。また、特定セグメントの個々のオカレンスが互いに異なるタイミングでデータベースに追加登録される等の場合には、500個のオカレンスがより多数個の単位領域にとびとびに格納される可能性が高く、I/Oの回数は更に増大する。
また、データベースに対する情報の読み出しや更新等のアクセスを複数のプロセスが並列に実行する環境では、単一の単位領域に対して複数のプロセスが同時にアクセスすることで、前記単位領域に格納されている情報に矛盾が生ずることを避けるために、個々のプロセスは、処理対象の単位領域をロックする(他のプロセスが処理対象の単位領域にアクセスすることを禁止する)排他制御を行う必要がある。この場合、或るプロセスが、第1の単位領域をロックしてアクセスし、続いて第2の単位領域をロックしてアクセスする処理を行うときに、別のプロセスにより、第2の単位領域をロックしてアクセスし、続いて第1の単位領域をロックしてアクセスする処理が同タイミングで行われると、双方のプロセスが共に相手のプロセスによって処理対象の単位領域に対するロックが解除されるのを待っている状態、すなわちデッドロックが発生する。
前述のように、第2階層以下の階層のセグメントに多数のオカレンスが存在しているレコードに対するアクセスでは、多数の単位領域がアクセスされることが多いので、登録されているレコードの多数(或いは殆ど)が上記のようなレコードであるデータベースではデッドロックが発生し易いという問題もある。
本発明は上記事実を考慮して成されたもので、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制できるデータベース管理装置及びデータベース管理プログラムを得ることが目的である。
上記目的を達成するために請求項1記載の発明に係るデータベース管理装置は、記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための記憶手段と、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段と、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、個々のセグメントに付与されたキー情報又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段と、を備えたデータベース管理装置であって、特定レコードの所定階層の特定セグメントのオカレンスの登録が指示された場合に、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が既に確保されており、かつ当該ブロック化記憶領域に前記登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に前記登録手段によって前記登録対象のオカレンスを登録させ、前記ブロック化記憶領域が確保されていないか又は既に確保されている前記ブロック化記憶領域に前記空き領域が無ければ、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を前記記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記登録対象のオカレンスを登録する処理を前記登録手段によって行わせると共に、前記特定レコードの前記特定セグメントのオカレンスの格納位置を識別するための制御情報登録用の制御情報領域が前記記憶手段の記憶領域上に既に確保されていれば、前記登録手段により当該制御情報領域に必要に応じて前記制御情報を追加登録させ、前記制御情報領域が確保されていなければ、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントに対応する制御情報領域を確保し、かつ確保した制御情報領域に前記制御情報を新規登録する処理を前記登録手段によって行わせる登録制御手段と、特定レコードの所定階層の特定セグメントのオカレンスの読み出しが指示された場合に、前記特定レコードの前記特定セグメントに対応する制御情報領域の制御情報を前記読出手段によって前記記憶手段から読み出させた後に、読み出された制御情報に基づいて前記読出対象のオカレンスの格納位置を認識し、前記読出対象のオカレンスを前記読出手段によって前記記憶手段から読み出させる読出制御手段と、を備えたことを特徴としている。
請求項1記載の発明に係るデータベース管理装置は、記憶領域が入出力の論理的単位としての多数個の単位領域(CI)に区画された記憶手段を備えており、この記憶手段には、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースが記憶される。
また、請求項1記載の発明に係るデータベース管理装置は、任意のレコードの任意のセグメントの情報のデータベースへの登録が指示される毎に、登録手段により、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域が選択され、選択された単位領域に登録対象の情報が登録されると共に、登録対象の情報と同一レコードに属しデータベースに既に登録されている特定の情報(1階層上位でかつ関連するセグメントの情報、或いは1階層上位の同一セグメントと関連する同一階層の他のオカレンスの情報)にポインタ情報が設定される。これにより、ルートセグメント以外のセグメント(従属セグメント)の情報については、個々の情報に設定されているポインタ情報に基づいて、ルートセグメントを起点にして順に辿っていく(情報を順に読み出していく)ことで、従属セグメントの情報が登録されている単位領域を特定することができる。
なお、登録対象の情報がルートセグメントの情報である場合、登録手段は、例えば該ルートセグメントに付与されたキー情報から一意に特定される第1の単位領域に登録対象のルートセグメントの情報を登録可能な空き領域が有るか否かを判断し、空き領域があれば登録対象のルートセグメントの情報を第1の単位領域に登録し、空き領域が無い場合には、所定の選択基準に従い登録対象のルートセグメントの情報を登録可能な空き領域が生じている第2の単位領域を選択し、選択した第2の単位領域に登録対象のルートセグメントの情報を登録すると共に、登録対象のルートセグメントの情報の登録位置が第2の単位領域であることを表すルート登録先情報を第1の単位領域に設定するように構成することができる。これにより、データベースに登録されているルートセグメントの情報については、当該ルートセグメントに付与されたキー情報(及び第1の単位領域に登録されたルート登録先情報)に基づいて、当該情報が登録されている単位領域を特定することができる。
そして、請求項1記載の発明に係るデータベース管理装置では、データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、読出手段により、個々のセグメントに付与されたキー情報又はポインタ情報に基づいて読出対象の情報が登録されている単位領域が判断され、判断された単位領域の情報がデータベースから読み出され、読み出された情報に含まれる読出対象の情報が出力される。
ここで、上記構成では、従属セグメントの情報が登録されている単位領域を特定するために、前述したように、個々の情報に設定されているポインタ情報に基づいて、ルートセグメントを起点にして順に辿っていく(情報を順に読み出していく)必要があるので、アクセス対象のレコードが第2階層以下の階層に多数のセグメント又はオカレンスが存在しているレコードであった場合にはI/O回数が大幅に増大する可能性が高く、データベースへのアクセスを複数のプロセスが並列に実行する環境下で、データベースに登録されているレコードの多数(或いは殆ど)が上記のようなレコードであったとすると、デッドロックが発生する恐れもある。
これに対して請求項1記載の発明に係る登録制御手段は、特定レコードの所定階層の特定セグメントのオカレンスの登録が指示された場合に、記憶手段の記憶領域上に特定レコードの特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が既に確保されており、かつ当該ブロック化記憶領域に登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に登録手段によって登録対象のオカレンスを登録させ、前記ブロック化記憶領域が確保されていないか又は既に確保されている前記ブロック化記憶領域に前記空き領域が無ければ、特定レコードの特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に登録対象のオカレンスを登録する処理を登録手段によって行わせる。また、登録制御手段は、特定レコードの特定セグメントのオカレンスの格納位置を識別するための制御情報登録用の制御情報領域が記憶手段の記憶領域上に既に確保されていれば、登録手段により当該制御情報領域に必要に応じて制御情報を追加登録させ、前記制御情報領域が確保されていなければ、記憶手段の記憶領域上に特定レコードの特定セグメントに対応する制御情報領域を確保し、かつ確保した制御情報領域に前記制御情報を新規登録する処理を登録手段によって行わせる。
なお、所定階層としては、例えば請求項2に記載したように、単一のセグメントの情報として他の階層よりも多数のオカレンスが前記データベースに登録される階層を適用することができる。また、請求項1記載の発明に係る読出制御手段は、特定レコードの所定階層の特定セグメントのオカレンスの読み出しが指示された場合に、特定レコードの特定セグメントに対応する制御情報領域の制御情報を読出手段によって記憶手段から読み出させた後に、読み出された制御情報に基づいて読出対象のオカレンスの格納位置を認識し、読出対象のオカレンスを読出手段によって記憶手段から読み出させる。
このように、請求項1記載の発明では、読出対象のオカレンスが特定レコードの所定階層の特定セグメントのオカレンスであり、ブロック化記憶領域に登録されている場合、まず対応する制御情報領域に記憶されている制御情報を読み出して読出対象のオカレンスの格納位置を認識した後に、読出対象のオカレンスを記憶手段から読み出す必要がある。しかし、請求項1記載の発明に係る制御情報は、特定レコードの特定セグメントのオカレンスの格納位置を識別するための情報であるのでオカレンス自体よりもサイズが小さく、かつ記憶手段の記憶領域上に確保された制御情報領域に登録されるので、特定レコードの特定セグメントのオカレンスが読出対象のオカレンスを含めて多数存在していたとしても、読出対象のオカレンスの格納位置を認識するために必要なI/Oの回数は、オカレンス自体を辿っていく場合と比較して大幅に削減される。また、読出対象のオカレンスの格納位置が認識できれば、記憶手段から読出対象のオカレンスを直接読み出すことができるので、読出対象のオカレンスの読み出しに際してのI/Oの回数が削減される。
例えば前述のように、第3階層の特定セグメントに500個のオカレンスが存在しているレコードから、特定セグメントの500個のオカレンスのうち列の最後に繋がれているオカレンスが読み出す場合、従来は、個々の単位領域のサイズが8kバイト、個々のオカレンスのサイズが1kバイト(単一の単位領域に格納可能なオカレンスの数が8個)であれば、I/Oの回数は最小で1+63=64回となる。一方、請求項1記載の発明を適用した場合、500個のオカレンスに対応する制御情報が単一の単位領域に収まるとすると、最小のI/Oの回数は、ルートセグメント及び第2階層のセグメントの情報読み出しのためのI/Oの回数が1回、制御情報読み出しのためのI/Oの回数が1回、読出対象のオカレンスの読み出しのためのI/Oの回数が1回で合計3回となり、従来よりも大幅に少ないI/O回数で読出対象のオカレンスを読み出すことができる。
また、請求項1記載の発明に係るブロック化記憶領域は、特定レコードの特定セグメントのオカレンスを複数登録するための領域であり、個々のブロック化記憶領域には同一レコードかつ同一セグメントのオカレンスのみが登録されるので、請求項1記載の発明では、個々のレコードの所定階層の各セグメントのオカレンスが、同一レコードかつ同一セグメントのオカレンス毎に記憶手段の記憶領域に詰めて(個々のブロック化記憶領域を単位として連続的に)格納されることになる。このため、特定レコードの特定セグメントのオカレンスを全て読み出す等の場合にも、従来よりも少ないI/O回数で読み出しを完了させることができる。従って、請求項1記載の発明によれば、データベースへのアクセスにおけるI/O回数を削減することができ、データベースへのアクセス要求に対するシステムのレスポンスの悪化を抑制できると共に、これに伴ってデッドロックの発生も抑制することができる。
なお、請求項1記載の発明では、個々のレコードの所定階層の各セグメントのオカレンスが、同一レコードかつ同一セグメントのオカレンス毎に記憶手段の記憶領域に詰めて(個々のブロック化記憶領域を単位として連続的に)格納されるので、制御情報領域に登録する制御情報として、対応する全てのオカレンスについて格納位置を識別するための情報を設定した情報を用いる必要はなく、所定の基準に従って選択したオカレンス(例えば記憶手段への登録順で一定数おきのオカレンスや、情報の日付が互いに相違するオカレンス(日付が同一のオカレンスが複数存在している場合は記憶手段への登録時刻が最も早いオカレンス)等)についてのみ格納位置を識別するための情報(例えば後述する請求項3に記載のブロック化記憶領域の通番と対応付ける情報)を設定した情報を採用することも可能である。この場合、制御情報領域に登録する制御情報のサイズをより小さくすることができるので、I/Oの回数が更に削減される可能性が高くなる。
また、請求項1記載の発明において、登録制御手段は、例えば請求項3に記載したように、特定レコードの所定階層の特定セグメントに対応するブロック化記憶領域を登録手段によって確保させるにあたり、同一セグメントに対応する個々のブロック化記憶領域を識別するための通番を確保対象のブロック化記憶領域に付与し、記憶手段の記憶領域のうち前記付与した通番を用いて一意に特定可能な単位領域に確保対象のブロック化記憶領域を確保させると共に、特定レコードの所定階層の特定セグメントに対応する制御情報領域に、制御情報として、特定レコードの特定セグメントに対応する個々のブロック化記憶領域に登録されているオカレンスを個々のブロック化記憶領域の通番と対応付ける情報を含む情報を登録するように構成することができる。
また、請求項3記載の発明において、登録制御手段は、例えば請求項4に記載したように、特定レコードの所定階層の特定セグメントに対応する制御情報領域に、制御情報として、特定レコードの特定セグメントに対応するブロック化記憶領域のうち最後に確保したブロック化記憶領域の通番を表す最終通番も制御情報領域に登録すると共に、特定レコードの特定セグメントに対応するブロック化記憶領域を新たに確保する毎に前記最終通番も更新し、特定レコードの特定セグメントのオカレンスの登録が指示された場合に、特定レコードの特定セグメントに対応する制御情報領域に登録されている最終通番に基づき、特定レコードの特定セグメントに対応するブロック化記憶領域のうち最後に確保したブロック化記憶領域の情報を読出手段によって読み出させ、読み出された情報に基づいて空き領域があるか否かを判定することで、記憶手段の記憶領域上に既に確保されておりかつ特定レコードの特定セグメントに対応するブロック化記憶領域に空き領域があるか否かを判定するように構成することが好ましい。
本発明によれば、同一レコードかつ同一セグメントに対応するブロック化記憶領域の数がオカレンスの増加に伴って増加することになるので、特定レコードの特定セグメントのオカレンスの登録にあたり、特定レコードの特定セグメントに対応するブロック化記憶領域が記憶手段の記憶領域上に複数存在している場合、これらのブロック化記憶領域に空き領域があるか否かを判定するために、複数のブロック化記憶領域にアクセスする必要が生ずる可能性がある。これに対して請求項4記載の発明では、ブロック化記憶領域の確保は、記憶手段の記憶領域上に既に確保されているブロック化記憶領域に空き領域がない場合に行われる(空き領域がある可能性があるのは最後に確保されたブロック化記憶領域のみである)ことに基づき、最後に確保したブロック化記憶領域の通番を表す最終通番を制御情報領域に登録しておき、この最終通番に対応するブロック化記憶領域に空き領域があるか否かを判定することで、記憶手段の記憶領域上に既に確保されておりかつ特定レコードの特定セグメントに対応するブロック化記憶領域に空き領域があるか否かを判定しているので、空き領域の有無の判定に際してのI/Oの回数を削減することができる。
また、請求項1乃至請求項4の何れかに記載の発明において、例えば請求項5に記載したように、記憶手段は第1記憶手段と第2記憶手段から成り、登録制御手段は、所定階層よりも上位階層のセグメントの情報を登録手段によって第1記憶手段に登録させると共に、ブロック化記憶領域及び制御情報領域を登録手段によって第2記憶手段の記憶領域上に確保させ、第2記憶手段の記憶領域上に確保させた各領域に登録手段によって情報を登録させるように構成することが好ましい。これにより、ベータベースが第1記憶手段と第2記憶手段に分割されて記憶されることになり、ベータベースに対するアクセスが第1記憶手段に対するアクセスと第2記憶手段に対するアクセスとに分散されることになるので、データベースへのアクセスを複数のプロセスが並列に実行する環境下でのデッドロックの発生をより効果的に抑制することができる。
また、請求項5記載の発明のように、ブロック化記憶領域及び制御情報領域を第2記憶手段の記憶領域上に確保させる場合、登録制御手段は、例えば請求項6に記載したように、制御情報領域が第2記憶手段の記憶領域上の特定領域内に確保され、ブロック化記憶領域が第2記憶手段の記憶領域上の特定領域外の領域に確保されるように登録手段を制御することが好ましい。本発明において、ブロック化記憶領域に登録されているオカレンスの読み出しは、前述のように制御情報領域→ブロック化記憶領域の順に行われるので、第2記憶手段の記憶領域上に制御情報領域とブロック化記憶領域が混在していると、データベースへのアクセスを複数のプロセスが並列に実行する環境下でデッドロックが発生する可能性があるが、請求項6記載の発明では、制御情報領域とブロック化記憶領域が第2記憶手段の記憶領域上の別々の領域に確保されるので、データベースへのアクセスを複数のプロセスが並列に実行する環境下でのデッドロックの発生を更に効果的に抑制することができる。
また本発明において、所定階層の特定セグメントのオカレンスをブロック化記憶領域に登録する処理は、データベースの全てのレコードに適用してもよいが、所定階層のセグメントのオカレンスの数が少ないレコードについては、オカレンスをブロック化記憶領域に登録した場合、このオカレンスへのアクセスの前に制御情報領域へのアクセスが必要となるために、当該レコードがアクセスされる際のI/Oの回数が削減されないこともある。これを考慮すると、所定階層の特定セグメントのオカレンスをブロック化記憶領域に登録する処理を適用するか否かを、個々のレコードを単位として切替え可能とすることが好ましい。
請求項5記載の発明において、上記の切替えは、例えば請求項7に記載したように、ブロック化記憶領域にオカレンスを登録すべき所定階層の特定セグメントを有する特定レコードには、特定セグメントよりも1階層上位でかつ特定セグメントと関連する関連セグメントの情報に所定情報を設定しておき、登録制御手段を、登録対象のオカレンスが、関連セグメントの情報に所定情報が設定されているレコードに属している場合には、登録対象のオカレンスを第2記憶手段の記憶領域上に確保された対応するブロック化記憶領域に登録させ、登録対象のオカレンスが、前記関連セグメントの情報に所定情報が設定されていないレコードに属している場合には、登録対象のオカレンスを第1記憶手段に登録させるように構成すると共に、読出制御手段を、読出対象のオカレンスが、前記関連セグメントの情報に所定情報が設定されているレコードに属している場合には、対応する制御情報領域に登録されている制御情報に基づいて読出対象のオカレンスを第2記憶手段から読み出させ、読出対象のオカレンスが、前記関連セグメントの情報に所定情報が設定されていないレコードに属している場合には、前記関連セグメントの情報に設定されているポインタ情報に基づいて読出対象のオカレンスを第1記憶手段から読み出させるように構成することで実現することができる。これにより、関連セグメントの情報に所定情報が設定されているレコードに対してのみ、所定階層の特定セグメントのオカレンスをブロック化記憶領域に登録する処理が適用されることになる。
また、請求項7記載の発明において、登録制御手段は、例えば請求項8に記載したように、第1記憶手段に登録されている所定階層の特定セグメントのオカレンスの数が所定数を超えるレコードが出現した場合に、前記特定セグメントの全てのオカレンスを登録可能な数のブロック化記憶領域を第2記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記全てのオカレンスを登録すると共に、特定レコードの特定セグメントに対応する制御情報領域を第2記憶手段の記憶領域上に確保し、かつ確保した制御情報領域に制御情報を新規登録し、更に、第1記憶手段に登録されている前記レコードの前記関連セグメントの情報に所定情報を設定させる処理を登録手段に行わせるように構成することが好ましい。
これにより、当初は所定階層の特定セグメントのオカレンスを第1記憶手段に登録していたレコードが、特定セグメントのオカレンスの追加登録が繰り返されることで特定セグメントのオカレンスの数が所定数を超えて肥大化し、アクセスに際して多数回のI/Oを必要とする状態となった場合に、当該レコードに対し、所定階層の特定セグメントのオカレンスが第2記憶手段の記憶領域上に確保されたブロック化記憶領域へ移動されると共に第2記憶手段の記憶領域上に確保された制御情報領域に制御情報が登録され、更に関連セグメントの情報に所定情報が設定されることで、以降の処理では、所定階層の特定セグメントのオカレンスをブロック化記憶領域に登録する処理が適用されることになる。従って、データベースを運用していく過程で肥大化したレコードが生じた場合にも、当該レコードがアクセスされる際のI/Oの回数を削減することができる。
請求項9記載の発明に係るデータベース管理プログラムは、記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための記憶手段を備え、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段、及び、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、個々のセグメントに付与されたキー情報又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段として機能するコンピュータを、更に、特定レコードの所定階層の特定セグメントのオカレンスの登録が指示された場合に、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が既に確保されており、かつ当該ブロック化記憶領域に前記登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に前記登録手段によって前記登録対象のオカレンスを登録させ、前記ブロック化記憶領域が確保されていないか又は既に確保されている前記ブロック化記憶領域に前記空き領域が無ければ、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を前記記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記登録対象のオカレンスを登録する処理を前記登録手段によって行わせると共に、前記特定レコードの前記特定セグメントのオカレンスの格納位置を識別するための制御情報登録用の制御情報領域が前記記憶手段の記憶領域上に既に確保されていれば、前記登録手段により当該制御情報領域に必要に応じて前記制御情報を追加登録させ、前記制御情報領域が確保されていなければ、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントに対応する制御情報領域を確保し、かつ確保した制御情報領域に前記制御情報を新規登録する処理を前記登録手段によって行わせる登録制御手段、及び、特定レコードの所定階層の特定セグメントのオカレンスの読み出しが指示された場合に、前記特定レコードの前記特定セグメントに対応する制御情報領域の制御情報を前記読出手段によって前記記憶手段から読み出させた後に、読み出された制御情報に基づいて前記読出対象のオカレンスの格納位置を認識し、前記読出対象のオカレンスを前記読出手段によって前記記憶手段から読み出させる読出制御手段として機能させる。
請求項9記載の発明に係るデータベース管理プログラムは、上記の記憶手段を備え、上記の登録手段及び読出手段として機能するコンピュータを、登録制御手段及び読出制御手段として機能させるためのプログラムであるので、上記のコンピュータが請求項9記載の発明に係るデータベース管理プログラムを実行することにより、コンピュータが請求項1に記載のデータベース管理装置として機能することになり、請求項1記載の発明と同様に、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制することができる。
以上説明したように本発明は、特定レコードの所定階層の特定セグメントのオカレンスの登録が指示された場合に、ブロック化記憶領域が既に確保されておりかつ当該ブロック化記憶領域に登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に登録対象のオカレンスを登録させ、ブロック化記憶領域が確保されていないか又は既に確保されているブロック化記憶領域に空き領域が無ければ、特定レコードの特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を確保し、かつ確保したブロック化記憶領域に登録対象のオカレンスを登録する処理を行わせると共に、特定レコードの特定セグメントのオカレンスの格納位置を識別するための制御情報登録用の制御情報領域が既に確保されていれば、当該制御情報領域に必要に応じて制御情報を追加登録させ、制御情報領域が確保されていなければ、特定レコードの特定セグメントに対応する制御情報領域を確保し、かつ確保した制御情報領域に制御情報を新規登録する処理を行わせ、特定レコードの所定階層の特定セグメントのオカレンスの読み出しが指示された場合に、対応する制御情報領域の制御情報を読み出させた後に、読み出された制御情報に基づいて読出対象のオカレンスの格納位置を認識し、読出対象のオカレンスを読み出させるようにしたので、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制できる、という優れた効果を有する。
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には本実施形態に係る、特定金融機関に設けられたコンピュータ・システム10が示されている。コンピュータ・システム10は、特定金融機関の情報センタ等に設置されたホスト・コンピュータ12と、特定金融機関内に構築されたコンピュータ・ネットワーク18を含んで構成されている。なお、ホスト・コンピュータ12は請求項9に記載のコンピュータに対応しており、後述する第1ストレージ14及び第2ストレージ16と共に本発明に係るデータベース管理装置に対応している。
ホスト・コンピュータ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)として扱われる。第1ストレージ14及び第2ストレージ16は本発明に係る記憶手段に対応しており、詳しくは、第1ストレージ14は請求項5に記載の第1記憶手段に、第2ストレージ16は請求項5に記載の第2記憶手段に対応している。
また、ホスト・コンピュータ12の記憶部12Cには、ホスト・コンピュータ12をDB制御部として機能させるためのDB制御プログラム、ホスト・コンピュータ12をアプリケーション制御部として機能させるためのアプリケーション制御プログラム、ホスト・コンピュータ12をDB操作アプリケーション部として機能させるためのDB操作アプリケーション・プログラムが各々記憶されている。なお、上記各プログラムのうち、アプリケーション制御プログラムは請求項9に記載のデータベース管理プログラムに対応している。
一方、コンピュータ・ネットワーク18は、特定金融機関の各支店に各々設置されたブランチ・サーバ20(PC、ワークステーション、大型コンピュータの何れでもよい)が通信回線20を介して互いに接続されて構成されており、個々のブランチ・サーバ20には、個々のブランチ・サーバ20と同一の支店に設置された複数台のATM(Automatic Teller Machine:現金自動預け払い機)22及び複数台の営業店端末(金融機関の従業員が操作するための端末)24が各々接続されている。ATM22には、特定金融機関に口座を開設している顧客が所持しているキャッシュカードを装填可能で、装填されたキャッシュカードに磁気的に記録された情報を読み取り可能なカードリーダが取り付けられており、営業店端末24には、特定金融機関に口座を開設している顧客が所持している通帳を装填可能で、装填された通帳に磁気的に記録された情報を読み取り可能で、且つ任意の情報を通帳に記録することも可能な記帳機が取り付けられている。
次に本実施形態の作用を説明する。本実施形態に係る口座情報DBは、顧客が特定金融機関に開設した口座に関する情報を登録・管理するためのデータベースであり、単一の顧客の情報が単一のレコードとして登録される。また口座情報DBは階層型のデータベースであり、個々のレコードは、図2(A)に示すように、予め定められた互いに異なるカテゴリの情報を設定するための複数のセグメントが、最上位階層のセグメント(ルートセグメント)を起点として階層的に関連付けられた論理構造を有している。上記の論理構造における各セグメントのうち、ルートセグメントは、口座情報DBに情報を登録する全ての顧客について生成・登録されるセグメントである。図2(B)に示すように、口座情報DBに登録される個々のセグメントの情報は、各種の制御情報やポインタ情報が設定されるヘッダ、個々のセグメントを識別するためのキー情報、及び、本体情報から構成されているが、ルートセグメントでは、上記の本体情報として顧客ID等の顧客の属性情報が設定される。
また、第2階層のセグメントは、個々の顧客が特定金融機関に開設した個々の口座に関する情報を登録するためのセグメントであり、個々のレコードには、第2階層セグメントとして、対応する顧客が特定金融機関に開設した口座の数と同数のセグメントが各々生成・登録される。個々の第2階層セグメントは、対応する顧客が特定金融機関に開設した各口座のうち互いに異なる口座に対応しており、個々の第2階層セグメントの本体情報には、対応する口座の口座番号や残高等の情報が設定される。個々の第2階層セグメントは、論理的にはルートセグメントと各々関連付けされている。
また、第3階層セグメントは、個々の顧客が特定金融機関に開設した特定口座を対象とした金融取引の明細を登録するためのセグメントであり、個々の第3階層セグメントは任意の数のオカレンスを作成・登録可能とされている。個々の第3階層セグメントは第2階層の各セグメントのうち同一の口座に対応する第2階層セグメントと論理的に関連付けされており、任意の顧客の任意の口座を対象とした金融取引が発生する毎に、前記任意の顧客に対応する特定レコードに、前記任意の口座に対応する特定の第2階層セグメントと関連付けられた第3階層セグメントの情報として、発生した金融取引の明細を表す取引明細情報が本体情報に設定されたオカレンスが作成・登録される。
口座情報DBに対する情報の登録、読み出し、更新等のアクセスはDB制御部によって行われる。図3(A)に示すように、口座情報DBを記憶するための第1ストレージ14及び第2ストレージ16の記憶領域は、入出力の論理的単位としての一定サイズの多数個の単位領域(CI)に区画されていると共に、記憶領域全体が基本域と従属あふれ域、独立あふれ域に分けられており、個々の単位領域には各々アドレスが付与されている。DB制御部は、口座情報DBへの情報の登録が指示され、登録対象の情報がルートセグメントの情報であった場合、該登録対象のルートセグメントの情報と共に通知されたルートセグメントのキー情報に基づき、キー情報のハッシュ値を計算する等のアルゴリズムにより、基本域内の各単位領域のうち登録対象のルートセグメントの情報を格納すべき単位領域のアドレス(キー情報から一意に定まるアドレス)を導出する。
但し、予め想定した顧客の最大数(に応じて定まるキー情報の桁数)にも依存するが、基本域内の単位領域の数を顧客の最大数だけ確保することは困難であるので、上記のアルゴリズムは、互いに異なる複数種のキー情報から同一のアドレスが導出されるように定められている。一方、図3(B)にも示すように、個々の単位領域は複数のセグメントの情報を格納可能なサイズ(例えば単一のセグメントの情報の最大サイズ1kバイトに対し、該情報を8個程度格納可能な8kバイト)とされているが、個々の単位領域に情報を格納可能なセグメントの数には限りがあり、また基本域内の単位領域に従属セグメントの情報も格納されることがあるので、導出したアドレスが付与された特定の単位領域に、登録対象のルートセグメントの情報を格納可能な空き領域が無い可能性もある。
このため、DB制御部は単位領域のアドレスを導出すると、当該単位領域に登録対象のルートセグメントの情報を格納可能な空き領域が有るか否かを確認する。そして、前記空き領域があれば、導出したアドレスが付与された特定の単位領域に登録対象のルートセグメントの情報を格納する。また、前記空き領域が無い場合には、従属あふれ域内の各単位領域のうち特定の単位領域と同一列の単位領域群(図3(A)の「情報格納対象CI列」も参照)の中から、登録対象のルートセグメントの情報を格納する単位領域を選択し、選択した単位領域に登録対象のルートセグメントの情報を格納すると共に、基本域内の特定の単位領域に設けられた制御情報格納領域に、登録対象のルートセグメントの情報の格納位置を指し示すポインタ情報(単位領域のアドレスとオフセットを表す情報)を、登録対象のルートセグメントのキー情報と対応付けて登録する。なお、制御情報格納領域にはキー情報とポインタ情報を複数組登録可能とされており、制御情報格納領域にキー情報とポインタ情報が複数組登録される際には、登録情報はキー情報の昇順(降順でもよい)にソートされる。
またDB制御部は、口座情報DBへの情報の登録が指示され、登録対象の情報が従属セグメントの情報であった場合、ルートセグメントの情報を登録する場合と同様にして、登録対象の従属セグメントの情報を格納可能な空き領域が有る単位領域を探索する(優先順位が最も高い単位領域は登録対象の情報の格納位置を指し示すポインタ情報が設定されるセグメントの情報が既に登録された単位領域であり、該単位領域に空き領域がない場合に一定のロジックに従って他の単位領域が探索される)。なお、従属セグメントの情報の登録(又は読み出し又は更新)が指示される際には、前述した論理構造においてルートセグメントから処理対象のセグメントに至る経路上の各セグメントの情報を順次登録又は読み出す指示が事前に入力されるので、これらの指示に応じた処理の履歴を記憶しておくことで、登録対象の従属セグメントと同一レコードのルートセグメントのキー情報は容易に認識できる。そして、探索によって抽出された単位領域に登録対象の従属セグメントの情報を格納すると共に、登録対象の従属セグメントの情報の格納位置を指し示すポインタ情報を、登録対象の従属セグメントと同一のレコードに属し、かつ口座情報DBに既に登録されているセグメントの情報のヘッダに設定する。
なお、ヘッダにポインタ情報を設定するセグメントの情報は以下のようにして選択される。すなわち、登録対象の従属セグメントは1階層上位の特定セグメントと論理的に関連付けられているが(この特定セグメントを親セグメントと称する)、登録対象の従属セグメントの情報と同一セグメントの他のオカレンス(関連オカレンス)が口座情報DBに登録されていない場合には、登録対象の従属セグメントの情報のポインタ情報を親セグメントの情報のヘッダに設定する。また、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスの情報が口座情報DBに1個のみ登録されている場合には、登録対象の従属セグメントの情報のポインタ情報を当該他のオカレンスの情報のヘッダに設定する。
また、登録対象の従属セグメントの情報と同一セグメントの他のオカレンスが口座情報DBに複数登録されている場合(該当するオカレンスが複数登録されているか否かは、親セグメントのヘッダに設定されたポインタ情報が指し示す他のオカレンスのヘッダに、同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かに基づいて判断できる)には、親セグメントのヘッダに設定されたポインタ情報が指し示す他のオカレンスの情報のヘッダに設定されている同セグメントの他のオカレンスを指し示すポインタ情報を参照し、当該ポインタ情報が指し示すオカレンスのヘッダに同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かを判定し、ポインタ情報が設定されている場合には、当該ポインタ情報が指し示す他のオカレンスのヘッダに同一セグメントの他のオカレンスを指し示すポインタ情報が設定されているか否かを判定することを繰り返すことで、同一セグメントの他のオカレンスを指し示すポインタ情報がヘッダに設定されていない他のオカレンス(同一セグメントのオカレンスの列のうちの最後に位置しているオカレンス)を探索し、この探索によって抽出されたオカレンスのヘッダに、登録対象の従属セグメントの情報(追加登録するオカレンス)を指し示すポインタ情報を設定する。これにより、登録対象の従属セグメントの情報が、ポインタ情報によってリンク付けされたオカレンスの既存の列の最後にリンク付けされる。
DB制御部が上記処理を行うことで、図2(B)にも示すように、口座情報DBに登録されている各レコードの情報は、口座情報DBに登録されている各セグメントの情報のうち、1階層下位でかつ関連するセグメントの情報が口座情報DBに登録されているセグメントの情報のヘッダに、1階層下位でかつ関連する各セグメントの情報の格納位置を指し示すポインタ情報が各セグメントについて1つずつ各々設定される(ルートセグメントを参照)と共に、同一セグメントの情報が口座情報DBに複数登録されている場合(複数のオカレンスが存在している場合)には、これらの複数のオカレンスのヘッダにポインタ情報が各々設定されることで、親セグメントの情報のヘッダに対応するポインタ情報が設定されているオカレンスを先頭として、同一セグメントのオカレンスの列が形成された物理構造となる。なお、DB制御部による上述した処理は本発明に係る登録手段(詳しくは請求項6に記載の登録手段)に対応している。
口座情報DBからの情報の読み出しについては、口座情報DBからのルートセグメントの情報の読み出しが指示された場合、DB制御部は、上記指示と共に通知された読出対象のルートセグメントのキー情報から一意に定まる単位領域のアドレスを導出し、導出したアドレスが付与された単位領域に対するアクセスをロックした後に当該単位領域の情報を読み出し、読み出した情報の中に読出対象のルートセグメントの情報が存在しているか否か判定する。読み出した情報の中に読出対象のルートセグメントの情報が存在していた場合には、この情報を出力すると共に前記単位領域に対するアクセスのロックを解除するが、読出対象のルートセグメントの情報が含まれていなかった場合には、読み出した情報から制御情報格納領域に設定されているポインタ情報(読出対象のルートセグメントのキー情報と対応付けられているポインタ情報)を抽出し、抽出したポインタ情報が指し示す単位領域に対するアクセスをロックした後に当該単位領域の情報を読み出し、読み出した情報に含まれる読出対象のルートセグメントの情報を出力すると共に、読み出し完了後に各単位領域に対するアクセスのロックを解除する。
また、従属セグメントの情報の読み出しが指示される際には、前述した論理構造においてルートセグメントから読出対象のセグメントに至る経路上の各セグメントの情報を順次読み出す指示が事前に入力される。このため、口座情報DBからの従属セグメントの情報の読み出しが指示された場合、DB制御部は、前回の読出指示によって読み出した情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、認識した単位領域が前回読み出しを行った単位領域と同一であれば、前回読み出した情報に含まれる前記ポインタ情報が指し示す特定情報を参照し、認識した単位領域が前回読み出しを行った単位領域と相違していれば、認識した単位領域に対するアクセスをロックした後に前記単位領域の情報を読み出し、読み出した情報に含まれる前記ポインタ情報が指し示す特定情報を参照する。そして、参照した特定情報に設定されているキー情報が読出指示と共に通知された読出対象の従属セグメントの情報のキー情報と一致しているか否か判定する。キー情報が一致していた場合は前記特定情報は読出対象の従属セグメントの情報であるので、当該特定情報を読出対象の従属セグメントの情報として出力すると共に、読み出し完了後に前記単位領域に対するアクセスのロックを解除する。
また、読出対象の従属セグメントの情報が、同一セグメントの情報として登録されて列を形成している複数のオカレンスの何れかである場合には、前回の読出指示によって読み出した情報のヘッダに設定されているポインタ情報は読出対象のオカレンスとは別のオカレンスの情報である可能性が高く、この場合、前述のキー情報は不一致となる。キー情報が不一致となった場合には、特定情報のヘッダに設定されているポインタ情報が指し示す単位領域を認識し、必要に応じて単位領域の情報の読み出しを行って上記ポインタ情報が指し示す次の特定情報を参照し、キー情報が一致しているか否かを判定することを、キー情報が一致している情報が出現する迄繰り返し(この処理により、同一セグメントのオカレンスの列が順に参照されることになる)、キー情報が一致した情報を読出対象のオカレンスとして出力する。なお、DB制御部による上述した処理は本発明に係る読出手段に対応している。
なお、口座情報DBに対する情報の更新については、口座情報DBからの更新対象の情報の読み出しが指示された後に、続いて前記情報の更新が指示されるので、DB制御部は、前回の読出指示により口座情報DBからの読み出しを行った情報を、通知された更新対象の情報で上書きすることで、口座情報DBに対する情報の更新を行う。
また、口座情報DBに対する情報の登録、読み出し、更新等のアクセスは、例えば新規顧客によって特定金融機関の口座開設が指示されたり、特定金融機関に既に口座を開設している顧客によって別口座の開設が指示されたり、顧客から入金・残高照会・預金の引き出し・振込・振替等の金融取引の実行が指示されたことを契機として、口座情報DBへのアクセスを要求する電文がATM22又は営業店端末24から送信され、この電文がコンピュータ・ネットワーク18やブランチ・サーバ20を経由してホスト・コンピュータ12で受信されることによって行われる。ホスト・コンピュータ12では、口座情報DBへのアクセスを要求する電文を受信する毎に、DB操作アプリケーション部により、受信した電文の要求に基づき、アプリケーション制御部を介してDB制御部へ口座情報DBへのアクセスを指示すると共に、アプリケーション制御部を介してDB制御部からアクセス結果を受け取り、口座情報DBに対する要求されたアクセスが完了すると、要求元のATM22又は営業店端末24へ応答(電文)を送信するDB操作処理を行う。
具体的には、例えば新規顧客によって特定金融機関の口座が開設が指示され、この指示に基づき営業店端末24から送信された電文により、口座情報DBへの情報登録が要求された場合、図4(A)に示すように、DB操作アプリケーション部は、まず新規顧客の属性情報をルートセグメントの情報として口座情報DBへ登録するようアプリケーション制御部へ指示する(図4(A)のステップ30も参照)。なお、DB操作アプリケーション部による口座情報DBへの情報の登録指示では、登録対象DB(この場合は口座情報DB)の論理DB名、登録対象の情報のセグメント名(セグメントの階層を識別するための名称)及び登録対象データ(キー情報や本体情報)がパラメータとしてアプリケーション制御部へ引き渡される。
アプリケーション制御部は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も参照)。
口座情報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も参照)。
口座情報DBへの第2階層セグメントの情報の登録が完了すると、DB制御部はアプリケーション制御部へ処理完了を通知し(図4(A)のステップ46も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(A)のステップ48も参照)。これにより、新規顧客によって特定金融機関の口座が開設が指示された場合の口座情報DBへの情報登録が完了するので、DB操作アプリケーション部は情報登録要求元の営業店端末24へ処理完了を通知し、DB操作処理を終了する。
また、例えば特定金融機関に口座を開設している顧客によってATM22が操作されることで、顧客が開設している特定口座の残高照会が指示され、この指示に基づきATM22から送信された電文により、口座情報DBからの情報読み出しが要求された場合、図4(B)に示すように、DB操作アプリケーション部は、まず前記顧客に対応するレコードのルートセグメントの情報を口座情報DBからの読み出すようアプリケーション制御部へ指示する(図4(B)のステップ50も参照)。なお、DB操作アプリケーション部による口座情報DBからの情報の読出指示では、読出対象DB(口座情報DB)の論理DB名、読出対象の情報のセグメント名、読出対象の情報に付与されたキー情報及び読出情報格納領域のアドレス(ポインタ)がパラメータとしてアプリケーション制御部へ引き渡される。
アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名へ変換した後に、入力された指示をDB制御部へ伝達する(図4(B)のステップ52も参照)。これにより、DB制御部によって口座情報DB(詳しくは第1ストレージ14に記憶されている口座情報第1DB)からのルートセグメントの情報の読み出しが行われる(図4(B)のステップ54も参照)。口座情報DBからのルートセグメントの情報の読み出しが完了すると、DB制御部は、読み出した情報を通知されたアドレスの格納領域に書き込んだ後にアプリケーション制御部へ処理完了を通知し(図4(B)のステップ56も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(B)のステップ58も参照)。
口座情報DBからのルートセグメントの情報の読み出しが完了すると、続いてDB操作アプリケーション部は、残高照会が要求されている口座に対応する第2階層の特定セグメントの情報を口座情報DBから読み出すようアプリケーション制御部へ指示する(図4(B)のステップ60も参照)。アプリケーション制御部はDB操作アプリケーション部から上記指示が入力されると、入力された論理DB名を物理DB名(この場合も口座情報第1DBの物理DB名)へ変換した後に、入力された指示をDB制御部へ伝達する(図4(B)のステップ62も参照)。これにより、DB制御部は、前回の処理(ステップ54)で口座情報DBから読み出したルートセグメントの情報のヘッダに設定されているヘッダが指し示す第2階層セグメントの情報を読み出し、読み出した情報に設定されているキー情報が通知されたキー情報と一致しているか否かを判断することで読み出した情報が読出対象の第2階層セグメントの情報か否か判定する。また、この判定が否定された場合には、読出対象の第2階層セグメントに複数のオカレンスが存在しているので(例えば同一の顧客が同一種の口座を複数開設している等の場合)、読み出した情報のヘッダに設定されているポインタ情報が指し示す同一セグメントの別のオカレンスを読み出し、読み出したオカレンスが読出対象の情報か否かを判定することを繰り返す。
そして、上記の処理を行うことで読出対象の第2階層セグメントの情報を口座情報DBから読み出すと、DB制御部は、読み出した情報を通知されたアドレスの格納領域に書き込んだ後にアプリケーション制御部へ処理完了を通知し(図4(B)のステップ66も参照)、アプリケーション制御部はDB操作アプリケーション部へ処理完了を通知する(図4(B)のステップ68も参照)。上記処理によって読み出された情報には、残高照会が要求された口座の残高を表す情報が含まれているので、DB操作アプリケーション部は、読み出された情報を編集した後に残高照会要求元のATM22へ送信し、DB操作処理を終了する。
ところで、ATM22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間は、要求されたアクセスが完了する迄に必要なI/Oの回数(登録や読み出し、更新を行う単位領域の個数)によって大きく左右され、I/O回数が増大するに従って、ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスが低下し、ATM22や営業店端末24の待ち時間も増大する。これに対し、口座情報DBに登録される各レコードの情報のうちの第3階層セグメントについては、対応する顧客からの指示により新たな金融取引が行われる毎に、対応する新たな取引明細がオカレンスとして追加登録されるので、オカレンスの数が非常に多くなり易いという性質を有している。口座情報DBに対しては取引明細を合算する等のバッチ処理が定期的に行われ、このバッチ処理の実行直後は第3階層セグメントのオカレンスの数は非常に少ない状態となっているが、顧客によっては、次にバッチ処理が行われる迄の間に第3階層セグメントのオカレンスが1000〜2000個も追加登録されることもある。
また、前述のように、同一の顧客の同一の口座の取引明細はオカレンスの列として直列にリンク付けされており、オカレンスの列の中の特定のオカレンス(特定の取引明細)へのアクセスが要求された場合には、オカレンスの列を順に辿っていくことでアクセス対象のオカレンスが探索される。本実施形態では、単一の単位領域に格納可能なオカレンスの数が8個程度であるので、多数個のオカレンスから成るオカレンスの列の中から特定のオカレンスへのアクセスが要求された場合、要求されたアクセスを完了させるために必要なI/Oの回数が非常に多くなる可能性が高い。例えば500個のオカレンスから成るオカレンスの列の最後のオカレンス(取引明細)へのアクセスが要求された場合、単一の単位領域に格納可能なオカレンスの数を8個とすると、500個のオカレンスは最小でも63個の単位領域に分けて格納されるので、ルートセグメントの情報及び500個のオカレンスが登録されている第3階層セグメントと関連する第2階層のセグメントの情報が単一の単位領域に格納されていたとしても、I/Oの回数は最小で1+63=64回となる。また、特定の口座に対応する取引明細の全数読み出しが要求された場合にも、上記と同様にI/Oの回数は非常に多くなる。このように、多数個のオカレンスから成るオカレンスの列がI/Oの回数の大幅な増大を招き、データベース・システムのレスポンスの低下、ATM22や営業店端末24の待ち時間の増大を引き起こしていた。
また、コンピュータ・ネットワーク18には多数台のATM22及び営業店端末24が接続されており、口座情報DBに対するアクセスは個々のATM22、営業店端末24から非同期に要求されることから、ホスト・コンピュータ12では、アクセス要求が集中した場合にも、個々のATM22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間が大幅に増大することを回避する(ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスを速くする)ために、個々のATM22や営業店端末24から口座情報DBに対するアクセスが要求される毎に、要求されたアクセスを行うプロセスを生成し、複数のプロセスを並列に処理することで、個々のATM22や営業店端末24からのアクセス要求を並列に処理している。
個々のプロセスによる口座情報DBへのアクセスは非同期に行われ、またアクセス対象の単位領域もランダムであるので、特定の単位領域に対して複数のプロセスが同時にアクセスすることで、特定の単位領域に格納されている情報に矛盾が生ずることを避けるために、DB制御部は、個々のプロセスにおいて、アクセス対象の単位領域をロックする(他のプロセスのDB制御部が処理対象の単位領域にアクセスすることを禁止する)排他制御を行っている。但し、この排他制御に伴ってデッドロックが発生する可能性がある。
例えば図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のロックが解除されるのを待機する状態になる(デッドロック)。
このデッドロックは、1回のアクセス要求に対するI/Oの回数が多くなる程発生し易いが、口座情報DBは、前述のように第3階層セグメントのオカレンスの数が非常に多くなり易く、多数個のオカレンスから成るオカレンスの列がI/Oの回数の大幅な増大を招くのでデッドロックが発生し易いという問題もある。
このため本実施形態では、口座情報DBに登録されている各レコード(各顧客の口座情報)のうち、大量のオカレンスが登録されている、又はその可能性がある第3階層の特定セグメント(本実施形態に係る口座情報DBでは、各レコードの第3階層の各セグメントのうちの一部が上記の特定セグメントに該当する)を有する一部のレコードに対し、前記特定セグメント(分割対象のセグメント)のオカレンスをブロック化して(複数個のオカレンスを単位として纏めて)口座情報第2DBに登録する(同一レコードかつ同一の分割対象セグメントのオカレンスを複数登録するための領域をブロック化エリアと称する:図8も参照)と共に、口座情報第2DBにブロック化して登録した複数のオカレンスのインデックスもブロック化して口座情報第2DBに登録する(複数のオカレンスのインデックスをブロック化して登録するための領域をコントロールブロックと称する:図8も参照)ことによって上記の問題を解決している。なお、上記のように特定セグメントの多数のオカレンスをブロック化し、コントロールブロックと共に異なるDBに登録する(異なるストレージに記憶させる)ことを、本明細書ではコントロール分割と称する。また、第3階層は請求項2に記載の所定階層に対応している。
以下、このコントロール分割を実現するために、アプリケーション制御部によって実行されるアプリケーション制御処理について、図6のフローチャートを参照して説明する。なお、このアプリケーション制御処理は、DB操作アプリケーション部から口座情報DBへのアクセス(情報の登録、読み出し、更新の何れか)が指示される毎に実行される。ステップ150では、指示されたアクセスが口座情報DBに対する情報の登録か読み出しか更新かを判定し、判定結果に応じて分岐する。指示された要求が口座情報DBへの情報の登録である場合はステップ152で情報登録処理を行う。なお、この情報登録処理は、後述する図6のステップ154と共に本発明に係る登録制御手段(詳しくは請求項3〜請求項8に記載の登録制御手段)に対応している。
図7に示すように、この情報登録処理では、まずステップ200において、登録対象の情報のセグメントがコントロール分割対象のセグメントか否か判定する。本実施形態では、コントロール分割対象のセグメントに対し、該コントロール分割対象セグメントよりも1階層上位でかつコントロール分割対象セグメントと関連するセグメント(例えばコントロール分割対象のセグメントが普通口座を対象とした金融取引の取引明細を登録するための第3階層のセグメントであれば、前記普通口座に関する情報を登録するための第2階層のセグメント:請求項7に記載の関連セグメントに相当)のヘッダに、コントロール分割の対象であることを表す分割定義情報が設定される(図8に示す「コントロール分割=オン」を参照)。この分割定義情報は、多数の取引明細(オカレンス)が登録されることが予想される特定顧客(例えば法人の顧客)のレコードに対しては事前に設定されるが、後述するように、特定顧客のレコードの特定セグメントのオカレンス数が所定値以上になったことを契機として自動的に設定される場合もある。
ステップ200では、上記の関連セグメントのヘッダに設定される分割定義情報を参照することで、登録対象の情報のセグメントがコントロール分割対象のセグメントか否かを判定しており、判定が否定された場合はステップ202へ移行し、登録対象情報と同一レコードかつ同一セグメントの情報(関連オカレンス)の数が口座情報DBに所定値以上登録されているか否か判定する。例えば登録対象情報がルートセグメントや第2階層セグメントの情報である場合、或いは登録対象情報が第3階層セグメントの情報であるものの口座情報DBに既登録の関連オカレンスの数が所定値未満の場合には上記判定が否定されてステップ204へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第1DBの物理DB名へ変換しキー情報やセグメント名と共にDB制御部へ引き渡すと共に、DB操作アプリケーション部から転送された登録対象情報をDB制御部へ転送することで、DB制御部に対し、登録対象情報を口座情報第1DBへ登録するよう指示する。そして、DB制御部から登録完了が通知されると情報登録処理を終了してステップ154(図6)へ移行し、登録対象情報の登録が完了したことをDB操作アプリケーション部へ通知し、アプリケーション制御処理を終了する。
このように、登録対象の情報がルートセグメントや第2階層セグメントの情報である場合、或いは登録対象情報が第3階層セグメントの情報であるものの、この第3階層セグメントはコントロール分割対象ではなく、かつ口座情報DBに既登録の関連オカレンスの数が所定値未満の場合には、登録対象情報は従来通り口座情報第1DBに登録される。なお、前述のステップ202の判定が肯定された場合はステップ206でレコード分割・登録処理が行われるが、この処理については後述する。
一方、特定金融機関に既に開設されている口座に対して新たな金融取引が行われた等を契機として、DB操作アプリケーション部により、ルートセグメント及び第2階層セグメントの情報の読み出しが順次指示された後に(図12のステップ70〜ステップ88も参照)、口座情報DBへの取引明細(第3階層のコントロール分割対象セグメントの情報)の登録が指示された場合(図12のステップ90)場合には、ステップ200の判定が肯定されてステップ210へ移行し、DB制御部に対し、登録対象情報のセグメント(コントロール分割対象のセグメント)に対応するコントロールブロックを口座情報第2DBから読み出すよう指示する(図12のステップ92も参照)。
本実施形態において、コントロール分割対象のセグメントのオカレンスは、前述のように口座情報第2DB(第2ストレージ16の記憶領域)に確保されたブロック化エリアに登録されるが、単一のブロック化エリアに登録可能なオカレンスの数には限りがある(例えば4個程度)ので、口座情報DBに登録される同一レコードかつ同一セグメントのオカレンス(取引明細)の数が増加するに従い、対応するブロック化エリアの数も増加される(詳細は後述)。このため、本実施形態では同一レコードかつ同一セグメントに対応する個々のブロック化エリアの各々を識別するために、個々のブロック化エリアに「0001」を初期値とする通番を個々のブロック化エリアの発生順(登録順)に付与しており、個々のブロック化エリアを、ルートセグメントのキー情報、第2階層セグメントのキー情報及び個々のブロック化エリアに付与した通番を羅列して成るキー情報によって識別している。なお、ブロック化エリアは本発明に係るブロック化記憶領域に対応している。一方、ブロック化エリアと区別するために、コントロールブロックには通番「0000」を付与しており、個々のコントロールブロックはルートセグメントのキー情報、第2階層セグメントのキー情報及びコントロールブロックに付与した通番「0000」を羅列して成るキー情報によって識別している。また、コントロールブロック及びブロック化エリアは、何れもルートセグメントとして口座情報第2DBに登録される。
このため、ステップ210におけるコントロールブロックの読み出し指示は、DB操作アプリケーション部から通知された論理DB名を口座情報第2DBの物理DB名へ変換すると共に、コントロール分割対象のセグメントに対応するルートセグメントのキー情報、第2階層セグメントのキー情報及び通番「0000」を羅列したキー情報を生成し、読出対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すことによって成される。これにより、DB制御部によって、登録対象情報のセグメント(コントロール分割対象のセグメント)に対応するコントロールブロックの口座情報第2DBからの読み出しが試行される(図12のステップ94も参照)。
DB制御部から何らかの応答(図12のステップ96も参照)を受信するとステップ212へ移行し、コントロールブロックの読み出しが正常に行われたか否か判定する。この判定は、登録対象情報のセグメントに対応するコントロールブロック(及びブロック化エリア)が口座情報第2DBに登録されていない場合に否定されるが、この場合、今回の登録対象情報は、対応するセグメント(コントロール分割対象のセグメント)の情報として口座情報DBへ初めて登録されるオカレンスであると判断できるので、ステップ218へ移行し、ステップ218以降で口座情報第2DBへのブロック化エリア及びコントロールブロックの新規登録を行う。
すなわち、ステップ218では口座情報第2DBに新規登録するコントロールブロックの情報を生成する。図8に示すように、コントロールブロックはヘッダ情報設定領域、キー情報設定領域及びインデックス設定領域から成り、ヘッダ情報設定領域には各種の制御情報が設定される。また、ヘッダ情報設定領域には対応するブロック化エリアの先頭及び末尾の通番を設定するための領域が設けられており(図10に示す「先頭通番」及び「最終通番」を参照)、口座情報第2DBに新規登録されるコントロールブロックには、先頭通番及び最終通番として各々「0001」が設定される。また、キー情報設定領域には登録対象情報のセグメントに対応するルートセグメントのキー情報、第2階層セグメントのキー情報及びコントロールブロック用の通番「0000」を羅列したキー情報が設定され、インデックス設定領域には登録対象情報のインデックスが設定される。このインデックスは、登録対象情報の日付(登録対象情報(取引明細)が表す金融取引の実行日付)と、登録対象情報が登録されるブロック化エリアの通番から成り、コントロールブロックの新規登録では登録対象情報が通番「0001」のブロック化エリアに登録されるので、インデックスの通番にも「0001」が設定される。なお、コントロールブロックは本発明に係る制御情報領域に、インデックスは本発明に係る制御情報(詳しくは請求項3に記載の制御情報)に対応している。
そしてステップ218では、登録対象DBの物理DB名として口座情報第2DBの物理DB名を設定すると共に、登録対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定し、登録対象情報のキー情報として先にコントロールブロックのキー情報設定領域に設定したキー情報を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、生成したコントロールブロックの情報をDB制御部へ転送することで、登録対象情報のセグメント(コントロール分割対象のセグメント)に対応するコントロールブロックを口座情報第2DBへルートセグメントの情報として新規登録するようDB制御部へ指示する。
これにより、DB制御部は、まずパラメータとして引き渡されたキー情報に基づき、第2ストレージ16の基本域内の各単位領域のうち、転送されたコントロールブロックの情報を登録すべき単位領域のアドレスを導出した後に、導出した単位領域にコントロールブロックの情報を登録するが、図9に示すように、本実施形態では第2ストレージ16の基本域がコントロールブロックを登録するための記憶領域とブロック化エリアを登録するための記憶領域に区画されており、上記の単位領域のアドレス導出のアルゴリズムは、アドレス導出に用いるキー情報に含まれる通番が「0000」の場合(すなわちコントロールブロックを登録する場合)には、コントロールブロック登録用領域内に存在している基本領域のアドレスが導出され、キー情報に含まれる通番が「0000」以外の場合(すなわちブロック化エリアを登録する場合)には、ブロック化エリア登録用領域内に存在している基本領域のアドレスが導出されるように定められている。このため、新規登録を指示したコントロールブロックは、DB制御部により、第2ストレージ16の基本域のうちコントロールブロック登録用領域内の特定の基本領域(DB制御部へ引き渡したキー情報より一意に特定されるアドレスの基本領域)に、ルートセグメントの情報として新規登録されることになる。
DB制御部によって口座情報第2DBへのコントロールブロックの新規登録が完了し、DB制御部からコントロールブロックの新規登録完了が通知されると、次のステップ220へ移行し、口座情報第2DBに新規登録するブロック化エリアの情報を生成する。図8に示すように、ブロック化エリアはヘッダ情報設定領域、キー情報設定領域及びオカレンス設定領域から成り、新規登録するブロック化エリアの情報生成は、ヘッダ情報設定領域に各種の制御情報を設定し、キー情報設定領域に、登録対象情報のセグメント(コントロール分割対象のセグメント)に対応するルートセグメントのキー情報、第2階層セグメントのキー情報及びブロック化エリアに付与する通番の初期値である「0001」を羅列したキー情報を設定し、オカレンス設定領域に登録対象情報を設定することによって成される。
そしてステップ222では、登録対象DBの物理DB名として口座情報第2DBの物理DB名を、登録対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を、登録対象情報のキー情報として先にブロック化エリアのキー情報設定領域に設定したキー情報を各々設定し、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、生成したブロック化エリアの情報をDB制御部へ転送することで、登録対象情報を含むブロック化エリアを口座情報第2DBへルートセグメントの情報として新規登録するようDB制御部へ指示する。これにより、DB制御部は、まず転送されたブロック化エリアの情報を登録すべき単位領域のアドレスとして、パラメータとして引き渡されたキー情報から一意に特定されるアドレスを導出し(このとき導出されるアドレスは、第2ストレージ16の基本域のうちブロック化エリア登録用領域内に存在している特定の基本領域のアドレスとなる)、導出した単位領域に、転送されたブロック化エリアの情報をルートセグメントの情報として新規登録する。
以上の処理により口座情報第2DBへのブロック化エリア及びコントロールブロックの新規登録が完了し、DB制御部から登録完了が通知されると情報登録処理を終了してステップ154(図6)へ移行し、登録対象情報の登録が完了したことをDB操作アプリケーション部へ通知し、アプリケーション制御処理を終了する。
また、前述したステップ210におけるコントロールブロックの読み出し指示に対し、DB制御部から該当するコントロールブロックの読出完了が通知されると共に、読出対象のコントロールブロックの情報が転送された場合には、今回の登録対象情報と同一のセグメント(コントロール分割対象のセグメント)の他のオカレンスが既に口座情報第2DBに登録されていると判断できるので、ステップ212の判定が肯定されてステップ226へ移行し、ステップ226以降で今回の登録対象情報を口座情報第2DBにオカレンスとして追加登録する処理を行う。
すなわち、まずステップ226では、DB制御部より転送されたコントロールブロックの情報から、ヘッダ情報設定領域に設定されているブロック化エリアの最終通番を抽出すると共に、DB制御部より転送されたコントロールブロックの情報をメモリ12Bに一時記憶させる。次のステップ228では、読出対象DBの物理DB名として口座情報第2DBの物理DB名を、読出対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を各々設定すると共に、読出対象情報のキー情報として、登録対象情報のセグメントに対応するルートセグメントのキー情報、第2階層セグメントのキー情報及び先のステップ226で抽出したブロック化エリアの最終通番を羅列したキー情報を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すことで、該当するブロック化エリア(登録対象情報のセグメントに対応するブロック化エリアのうち登録対象情報をオカレンスとして登録すべき最終通番のブロック化エリア)を口座情報第2DBから読み出すようDB制御部へ指示する(図12のステップ98も参照)。
DB制御部によって口座情報第2DBからのブロック化エリアの読み出しが行われ(図12のステップ100も参照)、DB制御部からブロック化エリアの読出完了が通知されると(図12のステップ102も参照)、ステップ230へ移行し、DB制御部によって口座情報第2DBから読み出されたブロック化エリアに、登録対象情報を登録可能な空き領域が有るか否か判定する。なお、上述したステップ228,230は請求項4に記載の登録制御手段に対応している。判定が肯定された場合はステップ232へ移行し、まずDB制御部によって読み出されたブロック化エリア(最終通番のブロック化エリア)のオカレンス設定領域に登録対象情報をオカレンスとして追加設定する(図12のステップ104も参照)。そして、登録対象DBの物理DB名として口座情報第2DBの物理DB名を、登録対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を、登録対象情報のキー情報として先のステップ228で設定したキー情報を各々設定し、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、登録対象情報を追加設定したブロック化エリアの情報をDB制御部へ転送することで、登録対象情報を含むブロック化エリアをDB制御部によって口座情報第2DBへルートセグメントの情報として上書き登録させ(図12のステップ106〜110も参照)、ステップ240へ移行する。
一方、ステップ230の判定が肯定された場合は、登録対象情報を登録するためのブロック化エリアを口座情報第2DBに追加登録する必要があるので、ステップ234へ移行し、口座情報第2DBへ追加登録するブロック化エリアの情報をメモリ12B上に生成する。なお、追加登録するブロック化エリアの情報生成に際し、該ブロック化エリアのオカレンス設定領域には登録対象情報がオカレンスとして設定される。そしてステップ236では、登録対象DBの物理DB名として口座情報第2DBの物理DB名を、登録対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定すると共に、登録対象情報のキー情報として、先のステップ228で設定したキー情報における通番を1だけインクリメントしたキー情報(1インクリメントした後の通番が追加登録するブロック化エリアの通番となる)を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、ステップ250で生成したブロック化エリアの情報をDB制御部へ転送することで、登録対象情報を含むブロック化エリアをDB制御部によって口座情報第2DBへルートセグメントの情報として追加登録させる。またステップ238では、ステップ226でメモリ12Bに一時記憶させたコントロールブロックのヘッダ情報設定領域に設定されている最終通番を1だけインクリメントし、ステップ240へ移行する。
ステップ240では、先のステップ210の読出指示に従いDB制御部から読み出されたコントロールブロックが、今回の登録対象情報のセグメント(コントロール分割対象のセグメント)に対応する最終のコントロールブロックか否か判定する。本実施形態ではコントロールブロックのサイズを一定としており、コントロールブロックのインデックス設定領域に設定可能なインデックスの数にも限りがあるので、特定レコードのコントロール分割対象の特定セグメントのオカレンスが口座情報第2DBに多数登録されると、これに伴ってインデックス設定領域に新たなインデックスを追加設定できない状態も生じ得る。このため、口座情報第2DBへの特定レコードの特定セグメントのオカレンスの登録に際し、図11(A)に示すように、口座情報第2DBに既登録のコントロールブロックのインデックス設定領域に登録対象情報のインデックスを追加設定するための空き領域が無かった場合には、図11(B)に示すように、特定レコードの特定セグメントに対応する既登録のコントロールブロックのインデックス設定領域が削除されると共に、特定レコードの特定セグメントに対応する新たなコントロールブロックとして、既登録のコントロールブロックのインデックス設定領域に設定されていたインデックス及び追加設定すべきインデックスがインデックス設定領域に設定されたコントロールブロックが口座情報第2DBに追加登録され、同一レコードかつ同一のセグメントに対応するこれらのコントロールブロックがヘッダ情報設定領域に設定されたポインタ情報によってリンク付けされることで、同一レコードかつ同一セグメントに対応するコントロールブロック群が階層化される(口座情報第2DBに最初に登録したコントロールブロックがルートブロック(第1階層のブロック)として扱われ、口座情報第2DBに追加登録した各コントロールブロックは第2階層のブロックとして扱われる)。
上記のコントロールブロックの追加登録は、コントロールブロックへのインデックスの追加設定に際し、インデックスを追加設定するための空き領域が無い状態が生じる毎に繰り返され、図11(B)に示す状態から更にインデックスの追加設定が繰り返されることで空き領域が無い状態が再度生じた場合には、図11(C)に示すようにコントロールブロックが更に追加登録される。また、コントロールブロックには、コントロールブロックの最後を示すストッパが設定される。このストッパは、特定レコードの特定セグメントに対応するコントロールブロックが最初に登録されたとき(特定レコードの特定セグメントに対応するコントロールブロックの数が1のとき)には、最初に登録されたコントロールブロックの末尾に設定され(図8参照)、特定レコードの特定セグメントに対応するコントロールブロックが追加登録される毎に、図11に示すように追加登録された最終のコントロールブロックへ移動される(図11ではストッパの領域にハッチングを付して示している)。このため、前述のステップ240の判定は、ステップ210の読出指示に従いDB制御部から読み出されたコントロールブロックの情報にストッパが設定されているか否かに基づいて行うことができる。
登録対象情報のセグメントに対応するコントロールブロックとして、口座情報第2DBに単一のコントロールブロックが登録されていた場合にはステップ240の判定が肯定されるが、登録対象情報のセグメントに対応するコントロールブロックが複数登録されていた場合(階層化されていた場合)には、ステップ240の判定が否定されてステップ242へ移行し、DB制御部に対し同一レコードかつ同一セグメントに対応する次のコントロールブロック(ステップ210の読出指示に従いDB制御部から読み出されたコントロールブロックのヘッダ情報設定領域に設定されているポインタ情報が指し示すコントロールブロック)の読み出しを指示してステップ240に戻る。このステップ242はステップ240の判定が肯定される迄繰り返されるので、同一レコードかつ同一セグメントに対応する複数のコントロールブロックが口座情報第2DBに登録されている(コントロールブロックが階層化されている)場合には、同一レコードかつ同一セグメントに対応する全てのコントロールブロックの情報が順に読み出されることになる。
DB制御部によって登録対象情報のセグメントに対応する最終のコントロールブロックの情報が読み出されると、ステップ240の判定が肯定されてステップ244へ移行し、最終のコントロールブロックのインデックス設定領域に最終インデックスとして設定されている日付(最終日付)を抽出し、登録対象情報の日付が抽出した最終日付に一致しているか否か判定する。コントロールブロックのインデックス設定領域に設定される単一のインデックスのサイズは12バイト程度であり、コントロールブロックのインデックス設定領域には対応する全てのオカレンスのインデックスを設定することも可能であるが、この場合、多数のオカレンスが登録されるレコードに対して多数のコントロールブロックが登録されることで、当該レコードにアクセスする際のI/Oの回数が増大する可能性があり、これを回避するために本実施形態では、対応する金融取引の実行日付が互いに相違するオカレンスについてのみコントロールブロックのインデックス設定領域にインデックスを設定し、同日に実行された異なる金融取引に対応する複数のオカレンスの登録が順次指示された場合には、最初に登録が指示されたオカレンスのインデックスのみをインデックス領域に設定するようにしている。
具体的には、例えば図10に示すように、日付が"3/10"のオカレンスが4個、日付が"3/11"のオカレンスが7個、日付が"3/12"のオカレンスが1個、日付が"3/13"のオカレンスが2個存在しており、日付が"3/10"のオカレンスが通番=1のブロック化エリアにのみ登録され、日付が"3/11"のオカレンスが通番=1〜3のブロック化エリアに分けて登録され、日付が"3/12"のオカレンス及び日付が"3/13"のオカレンスが通番=3のブロック化エリアにのみ登録されていた場合、日付が"3/10"のオカレンス群に対応するインデックスとして日付が"3/10"、通番が"1"のインデックスが設定され、日付が"3/11"のオカレンス群に対応するインデックスとして日付が"3/11"、通番が"1"のインデックスが設定され、日付が"3/12"のオカレンス群に対応するインデックスとして日付が"3/12"、通番が"3"のインデックスが設定され、日付が"3/13"のオカレンス群に対応するインデックスとして日付が"3/13"、通番が"3"のインデックスが設定されることになる。
このため、前述のステップ244の判定が肯定された場合、すなわち同日に実行された異なる金融取引を表す同一セグメントの他のオカレンスのインデックスがコントロールブロックに既に登録されている場合には、今回の登録対象情報に対応するインデックスをコントロールブロックに登録する必要は無いと判断できるので、何ら処理を行うことなくステップ258へ移行する。また、ステップ244の判定が否定された場合には、同日に実行された異なる金融取引を表す同一セグメントの他のオカレンスのインデックスがコントロールブロックに登録されていないので、今回の登録対象情報のインデックスをコントロールブロックのインデックス設定領域に設定する必要がある。このため、次のステップ246では、DB制御部によって読み出された登録対象情報のセグメントに対応する最終のコントロールブロックのインデックス設定領域を参照し、該インデックス設定領域に登録対象情報のインデックスを登録可能な空き領域が有るか否か判定する。
判定が肯定された場合は登録対象情報のセグメントに対応するコントロールブロックを追加登録する必要はないので、ステップ248へ移行し、前記最終のコントロールブロックのインデックス設定領域に、今回の登録対象情報に対応するインデックス(登録対象情報が表す取引明細に対応する金融取引の実行日付、前述のステップ232又はステップ234,236で今回の登録対象情報を設定したブロック化エリアの通番)を設定する(図12のステップ112も参照)。そして、登録対象DBの物理DB名として口座情報第2DBの物理DB名を、登録対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定すると共に、登録対象情報のキー情報としてコントロールブロックのキー情報を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、今回の登録対象情報のインデックスを追加設定した最終のコントロールブロックの情報をDB制御部へ転送することで、今回の登録対象情報のインデックスを追加設定した最終のコントロールブロックをDB制御部によって口座情報第2DBへルートセグメントの情報として上書き登録させ(図12のステップ114〜118も参照)、ステップ258へ移行する。
一方、ステップ246の判定が否定された場合はステップ250へ移行し、前述のステップ226でメモリ12Bに一時記憶させたコントロールブロック(口座情報第2DBから最初に読み出されたコントロールブロック)が階層化されたコントロールブロック群におけるルートブロックに相当するフォーマット(インデックス設定領域が削除されたフォーマット)か否かを判定することで、登録対象情報のセグメントに対応するコントロールブロックが口座情報第2DBに複数登録されているか否か判定する。なお、コントロールブロックが複数登録されているか否かを判定することは、ステップ226でメモリ12Bに一時記憶させたコントロールブロックにストッパが設定されているか否かを判定する、或いは前述のステップ240の判定が否定された回数が0回か否かを判定することで行うことも可能である。
上記判定が肯定された場合は何ら処理を行うことなくステップ254へ移行するが、ステップ250の判定が否定された場合はステップ252へ移行し、登録対象情報のセグメントに対応する新たなコントロールブロックを追加登録してコントロールブロックを階層化するために、前述のステップ226でメモリ12Bに一時記憶させたコントロールブロック(最初に読み出されたコントロールブロック)のインデックス設定領域に設定されている全てのインデックスをメモリ12B上の別領域に記憶させる(退避させる)と共に、前記コントロールブロックの情報からインデックス設定領域を除去し、同一レコード・同一セグメントに対応する第2階層のコントロールブロックを指し示すポインタ情報をヘッダ情報設定領域に設定することで、最初に読み出されたコントロールブロックをルートのブロック(第1階層のブロック)に相当するフォーマットへ変更し、ステップ254へ移行する。
ステップ254では、口座情報第2DBに追加登録するコントロールブロックの情報をメモリ12B上で生成する。なお、追加登録するコントロールブロックのインデックス設定領域には、少なくとも今回の登録対象情報のインデックスが設定されるが、ステップ252の処理が行われた場合、インデック設定領域には、ステップ252でメモリ12B上の別領域に退避させたインデックスを含む各インデックスが日付の昇順に設定される。そしてステップ256では、登録対象DBの物理DB名として口座情報第2DBの物理DB名を、登録対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定すると共に、登録対象情報のキー情報としてコントロールブロックのキー情報を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、ステップ254で生成した追加登録対象のコントロールブロック(新たに最終のコントロールブロックとなるコントロールブロック)の情報をDB制御部へ転送することで、少なくとも今回の登録対象情報のインデックスを設定したコントロールブロックを、DB制御部によって口座情報第2DBへルートセグメントの情報として追加登録させ、ステップ258へ移行する。
ステップ258では、ステップ226でメモリ12Bに一時記憶させたコントロールブロック(ルートのコントロールブロック)の情報が更新されたか否か判定する。この判定は、上記のコントロールブロックに対して最終通番の更新もインデックス設定領域へのインデックスの追加も行われていない場合には否定されると共に、上記のコントロールブロックに対してインデックス設定領域へのインデックスの追加等が行われたものの、今回の登録対象情報のセグメントに対応するコントロールブロックの数が1つであるために、既に先のステップ248で上記のコントロールブロックの上書き登録が行われていた場合にも否定されるが、ブロック化エリアが追加登録されたもののコントロールブロックへのインデックスの追加登録が行われなかった場合(ステップ244の判定が肯定された場合)や、ステップ252で上記のコントロールブロックが階層化されたコントロールブロック群におけるルートブロックに相当するフォーマットへ変更された場合には肯定される。
上記の判定が否定された場合は何ら処理を行うことなく情報登録処理を終了するが、ステップ258の判定が肯定された場合はステップ260へ移行し、登録対象DBの物理DB名として口座情報第2DBの物理DB名を、登録対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を、登録対象情報のキー情報としてコントロールブロックのキー情報を各々設定し、これらの情報をパラメータとしてDB制御部へ引き渡すと共に、メモリ12Bに一時記憶しているコントロールブロックの情報をDB制御部へ転送することで、DB制御部によって口座情報第2DBに登録されているルートのコントロールブロックの情報を上書き登録させた後に情報登録処理を終了する。そして、アプリケーション制御処理のステップ154(図6)へ移行し、登録対象情報の登録が完了したことをDB操作アプリケーション部へ通知し(図12のステップ120も参照)、アプリケーション制御処理を終了する。
続いて、図7のステップ206におけるレコード分割・登録処理について簡単に説明する。特定レコードの第3階層のコントロール分割対象でない特定セグメントのオカレンスの登録が指示されたものの、口座情報第1DBに既登録の特定セグメントに対応するオカレンスの数が所定値以上の場合(図7のステップ202の判定が肯定された場合)には、口座情報第1DBに登録されている特定レコードの規模がかなり大きくなっているので、特定レコードへのアクセス時に多数回のI/Oが必要となる可能性が高く、口座情報第1DBへのオカレンスの追加登録をこのまま継続すると、状況は更に悪化すると判断できる。このため、ステップ202の判定が肯定された場合はステップ206へ移行し、特定レコードの特定セグメントのオカレンスをブロック化して口座情報第2DBに記憶させるレコード分割・登録処理が行われる。
このレコード分割・登録処理では、まず通番「0001」のブロック化エリアの情報をメモリ12B上で生成した後に、口座情報第1DBに登録されている特定レコードの特定セグメントのオカレンスを順に読み出しながら、読み出したオカレンスをメモリ12B上のブロック化エリアのオカレンス設定領域に設定し、かつ対応するインデックスをメモリ12B上の所定領域に順次記憶させ、オカレンス設定領域に新たなオカレンスを登録可能な空き領域が無くなる毎に、メモリ12B上のブロック化エリアを口座情報第2DBに新規登録すると共に、次の通番のブロック化エリアの情報をメモリ12B上で生成することを、特定レコードの特定セグメントの全てのオカレンスの読み出しが完了する迄繰り返す。そして、最後のオカレンスが設定されたブロック化エリアも口座情報第2DBに新規登録させる。
次に、メモリ12B上の所定領域に記憶させたインデックスの数を計数し、インデックスの数に応じた数のコントロールブロックの情報をメモリ12B上で生成し、メモリ12B上の所定領域に記憶させたインデックスを、生成したコントロールブロックのうちルートブロック以外のコントロールブロックのインデックス設定領域に順に設定した後に、これらのコントロールブロックを口座情報第2DBに新規登録させる。そして、特定レコードのうち、特定セグメントよりも1階層上位でかつ特定セグメントと関連するセグメントの情報の口座情報第1DBからの読み出しを指示し、読み出された情報のヘッダに分割定義情報を設定し、口座情報第1DBへの上書き登録を指示する。これにより、以後の処理では特定レコードの特定セグメントがコントロール分割対象のセグメントとして扱われることになり、特定セグメントのオカレンスは口座情報第2DBに登録されることになる。なお、上述したステップ206の処理は請求項8に記載の登録制御手段に対応している。
続いて、アプリケーション制御処理のうち、口座情報DBからの情報の読み出しがDB操作アプリケーション部より指示された場合の処理を説明する。指示されたアクセスが情報の読み出しである場合には、ステップ150からステップ156へ移行し、前述したステップ200と同様に、読出対象情報のセグメントの1階層上位で前記セグメントと関連するセグメントのヘッダに設定される分割定義情報を参照することで、読出対象の情報のセグメントがコントロール分割対象のセグメントか否かを判定する。
読出対象情報がルートセグメント又は第2階層セグメントの情報である場合、或いは読出対象情報が第3階層セグメントの情報であるものの当該セグメントがコントロール分割対象でない場合には、上記判定が否定されてステップ158へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、口座情報第1DBから読出対象の情報を読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ170へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共にDB制御部によって口座情報DB(の口座情報第1DB)から読み出された情報をDB操作アプリケーション部へ転送し、処理を終了する。このように、読出対象情報がコントロール分割対象のセグメントの情報でない場合には、従来通り口座情報第1DBに対して情報の読み出しが行われる。
一方、口座情報DBからの取引明細(第3階層のコントロール分割対象セグメントのオカレンス)の読み出しが要求された等の場合には、図13のステップ130〜ステップ139に示すように、DB操作アプリケーション部により、ルートセグメント及び第2階層セグメントの情報の読み出しが順次指示された後に、口座情報DBからの取引明細(第3階層のコントロール分割対象セグメントのオカレンス)の読み出しが指示される(図13のステップ140)。この場合、前述のステップ156の判定が肯定されてステップ160へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第2DBの物理DB名へ変換すると共に、コントロール分割対象のセグメントに対応するルートセグメントのキー情報、第2階層セグメントのキー情報及び通番「0000」を羅列したキー情報を生成し、読出対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すことで、読出対象オカレンスのセグメントに対応するコントロールブロックの口座情報第2DBからの読み出しをDB制御部へ指示する(図13のステップ141も参照)。
これにより、DB制御部によって、読出対象オカレンスのセグメント(コントロール分割対象のセグメント)に対応するコントロールブロック(このコントロールブロックが階層化されている場合にはルートブロックに相当するコントロールブロック)が口座情報第2DBから読み出され、読み出された情報がDB制御部から転送されると共に、DB制御部から読出完了が通知される(図13のステップ142,143も参照)。
読出完了が通知されるとステップ162へ移行し、読み出されたコントロールブロックの情報に読出対象の取引明細(オカレンス)のインデックスが設定されているか否か判定する。取引明細の読み出しに際しては、読出対象の取引明細の日付又は日付の範囲が指定されるか、又は読出対象が全ての取引明細であることを表す情報が設定される。全ての取引明細が読出対象の場合は上記判定が無条件で肯定される(この場合、読出開始通番として先頭通番「0001」が、読出終了通番として最終通番が各々設定され、対応する全てのブロック化エリアが先頭通番のブロック化エリアから順に読み出される)が、読出対象の取引明細の日付が指定された場合、ステップ162の判定は、指定された日付のインデックスがインデックス設定領域に設定されたコントロールブロック、及び指定された日付の次の日付のインデックスがインデックス設定領域に設定されたコントロールブロックが読み出される迄否定され、読出対象の取引明細の日付範囲が指定された場合、ステップ162の判定は、指定された日付範囲の先頭の日付のインデックスがインデックス設定領域に設定されたコントロールブロック、及び指定された日付範囲の末尾に相当する日付の次の日付のインデックスがインデックス設定領域に設定されたコントロールブロックが各々読み出される迄否定される。
ステップ162の判定が否定された場合はステップ164へ移行し、DB制御部に対して同一レコードかつ同一セグメントに対応する次のコントロールブロック(ステップ160の読出指示に従いDB制御部から読み出されたコントロールブロックのヘッダ情報設定領域に設定されているポインタ情報が指し示すコントロールブロック)の読み出しを指示する。そして、DB制御部による該当するコントロールブロックの情報が読み出しが完了するとステップ162に戻り、ステップ162の判定が再度行われる。このように、ステップ164はステップ162の判定が肯定される迄繰り返されるので、読出対象の取引明細に対応するインデックスが設定されているコントロールブロックが探索される。
そして、読出対象の取引明細の日付が指定された場合には、ステップ162の判定が肯定されると、読出開始通番として指定された日付のインデックスに設定されている通番を、読出終了通番として指定された日付の次の日付のインデックスに設定されている通番を各々設定した後にステップ166へ移行し、読出対象の取引明細の日付範囲が指定された場合には、ステップ162の判定が肯定されると、読出開始通番として指定された日付範囲の先頭の日付のインデックスに設定されている通番を、読出終了通番として指定された日付範囲の末尾に相当する日付の次の日付のインデックスに設定されている通番を各々設定した後にステップ166へ移行する。
ステップ166では読出対象DBの物理DB名として口座情報第2DBの物理DB名を、読出対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定すると共に、読出対象情報のキー情報として、ルートセグメントのキー情報、第2階層セグメントのキー情報、及び先に設定した読出開始通番を羅列したキー情報を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すことで、該当する情報を口座情報第2DBから読み出すようDB制御部へ指示する(図13のステップ144も参照)。これにより、DB制御部によって該当するブロック化エリア(読出対象の取引明細が登録されたブロック化エリア)が読み出され、読み出されたブロック化エリアの情報がDB制御部から転送されると共に、読出完了がDB制御部から通知される(図13のステップ145、146も参照)。
読出完了が通知されるとステップ168へ移行し、ブロック化エリアの読み出しを先に設定した読出終了通番まで行ったか否か判定する。判定が否定された場合はステップ166読出対象の取引明細を全て読み出したか否か判定する。判定が否定された場合はステップ166に戻り、先にDB制御部へ引き渡した読出対象情報のキー情報に含まれる通番を1だけインクリメントし、次のブロック化エリアの口座情報第2DBからの読み出しをDB制御部へ指示する。このように、ステップ168の判定が肯定される迄の間、ステップ166の処理が繰り返されることで、読出対象の取引明細が口座情報第2DBから全て読み出されることになる。そして、ステップ168の判定が肯定されると、DB制御部によって読み出されたブロック化エリアのオカレンス設定領域から、読出対象の取引明細(オカレンス)を抽出した後にステップ170へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共に抽出した読出対象の取引明細をDB操作アプリケーション部へ転送し、処理を終了する(図13のステップ147も参照)。上述したステップ156〜ステップ170は本発明に係る読出制御手段(詳しくは請求項7に記載の読出制御手段)に対応している。
なお、口座情報DBに対する情報の更新が指示されるときには、その直前に更新対象情報の読み出しが指示され、この指示に従って更新対象情報の読み出しが行われているので、口座情報DBにおける更新対象情報の格納位置は既知の状態となっている。このため、指示されたアクセスが情報の更新であればステップ150からステップ172へ移行し、DB操作アプリケーション部から転送された更新情報をDB制御部へ転送すると共に、前回の情報読み出し時(更新対象情報の読み出し時)と同一のパラメータ(物理DB名、セグメント名、キー情報)を設定し、このパラメータに該当する情報(更新対象情報)を更新情報で上書きするようDB制御部へ指示する。これにより、DB制御部により口座情報DB(口座情報第1DB又は口座情報第2DB)に記憶されている更新対象情報が、DB操作アプリケーション部からアプリケーション制御部を経由して転送された更新情報で上書き更新されることになる。アプリケーション制御部では、DB制御部から更新完了が通知されるとステップ174へ移行し、DB操作アプリケーション部に対して更新完了を通知して処理を終了する。
このように、本実施形態では、コントロール分割対象のセグメントの取引明細(オカレンス)を読み出す際に、まずコントロールブロックに登録されているインデックスを読み出し、読出対象の取引明細が登録されているブロック化エリアの通番を認識した後に、読出対象の取引明細を読み出す必要がある。しかし、本実施形態に係るインデックスは日付と通番から成る12バイト程度の情報であるので、コントロールブロックには多数のインデックスを登録可能であり、コントロール分割対象のセグメントの情報として登録されている多数の取引明細の中から特定日付の取引明細を読み出す場合にも、インデックスの読み出しのために必要なI/Oの回数は1〜数回程度で済む。また、読み出したインデックスに基づいて読出対象の取引明細が登録されたブロック化エリアの通番を認識できるので、インデックスを読み出した後は必要最小限のI/O回数で読出対象の取引明細を読み出すことができ、取引明細自体の列(オカレンス自体の列)を順に参照して目的の取引明細を探索する場合と比較してI/O回数は大幅に削減される。
また、個々のブロック化エリアには同一レコードかつ同一セグメントのオカレンス(取引明細)のみが日付順に複数登録されると共に、同一レコードかつ同一セグメントに対応するブロック化エリアには「0001」を初期値とする通番が付与されるので、特定レコードの特定セグメントの取引明細を全数読み出すことも、対応するコントロールブロックの情報を読出して最終通番を認識した後に、対応するブロック化エリアを通番0001から認識した最終通番まで順に読み出すことで行うことができる。従って、処理が簡単になると共に、対応するブロック化エリアには読出対象の取引明細のみが格納されているので、I/O回数も必要最小限となる。更に、本実施形態では第2ストレージ16の記憶領域を、コントロールブロックを登録するための記憶領域とブロック化エリアを登録するための記憶領域に区画し、コントロールブロックとブロック化エリアを異なる記憶領域に登録しているので、上述したI/O回数削減との相乗効果によりデッドロックの発生を抑制できると共に、データベースへのアクセス要求に対するシステムのレスポンスの悪化を抑制することができる。
なお、上記では本発明に係るデータベースの一例として、各レコードの情報が3階層に分離された論理構造のデータベースを説明したが、これに限定されるものではなく、より多数の階層に分離された論理構造であってもよい。
また、上記では特定金融機関の各支店に設置されたATM22及び営業店端末24が、同一の支店に設置されたブランチ・サーバ20と接続されている構成のコンピュータ・システム10を例に説明したが、各支店にブランチ・サーバ20を設置することに代えて情報センタ等にサーバを集中配置し、各支店に設置されたATM22及び営業店端末24が集中配置したサーバに接続される構成を採用してもよい。
また、上記では本発明に係るデータベースの一例として、顧客が特定金融機関に開設した口座に関する情報を登録・管理するための口座情報DBを説明したが、本発明は階層型のデータベースであれば適用可能であり、データベースに登録される情報は上記に限定されるものではない。
本実施形態に係るコンピュータ・システムの概略構成を示すブロック図である。 (A)は口座情報の論理構造、(B)は従来の物理フォーマットの一例を各々示す概念図である。 (A)はストレージの口座情報DB記憶領域、(B)は単位領域(CI)内のフォーマットを各々示す概念図である。 (A)は新規顧客が口座を開設した場合、(B)は既開設口座に対する残高照会が指示された場合の処理の流れを示すシーケンス図である。 デッドロック発生の原理を説明するための概念図である。 アプリケーション制御処理の内容を示すフローチャートである。 情報登録処理の内容を示すフローチャートである。 コントロール分割が適用されたレコード(口座情報)の物理フォーマットを示す概念図である。 第2ストレージの基本域内におけるコントロールブロック及びブロック化エリアの記憶領域の割り当てを示すイメージ図である。 コントロールブロック及びブロック化エリアの詳細を示す概念図である。 コントロールブロックの階層化を説明するための概念図である。 既開設口座に対する新たな取引が発生した場合の処理の流れを示すシーケンス図である。 取引明細を読み出す場合の処理の流れを示すシーケンス図である。
符号の説明
10 コンピュータ・システム
12 ホスト・コンピュータ
14 第1ストレージ
16 第2ストレージ
18 コンピュータ・ネットワーク
18 ネットワーク
20 ブランチ・サーバ
20 通信回線
24 営業店端末

Claims (9)

  1. 記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための記憶手段と、
    任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段と、
    前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、個々のセグメントに付与されたキー情報又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段と、
    を備えたデータベース管理装置であって、
    特定レコードの所定階層の特定セグメントのオカレンスの登録が指示された場合に、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が既に確保されており、かつ当該ブロック化記憶領域に前記登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に前記登録手段によって前記登録対象のオカレンスを登録させ、前記ブロック化記憶領域が確保されていないか又は既に確保されている前記ブロック化記憶領域に前記空き領域が無ければ、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を前記記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記登録対象のオカレンスを登録する処理を前記登録手段によって行わせると共に、前記特定レコードの前記特定セグメントのオカレンスの格納位置を識別するための制御情報登録用の制御情報領域が前記記憶手段の記憶領域上に既に確保されていれば、前記登録手段により当該制御情報領域に必要に応じて前記制御情報を追加登録させ、前記制御情報領域が確保されていなければ、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントに対応する制御情報領域を確保し、かつ確保した制御情報領域に前記制御情報を新規登録する処理を前記登録手段によって行わせる登録制御手段と、
    特定レコードの所定階層の特定セグメントのオカレンスの読み出しが指示された場合に、前記特定レコードの前記特定セグメントに対応する制御情報領域の制御情報を前記読出手段によって前記記憶手段から読み出させた後に、読み出された制御情報に基づいて前記読出対象のオカレンスの格納位置を認識し、前記読出対象のオカレンスを前記読出手段によって前記記憶手段から読み出させる読出制御手段と、
    を備えたことを特徴とするデータベース管理装置。
  2. 前記所定階層は、単一のセグメントの情報として他の階層よりも多数のオカレンスが前記データベースに登録される階層であることを特徴とする請求項1記載のデータベース管理装置。
  3. 前記登録制御手段は、特定レコードの所定階層の特定セグメントに対応するブロック化記憶領域を前記登録手段によって確保させるにあたり、同一セグメントに対応する個々のブロック化記憶領域を識別するための通番を確保対象のブロック化記憶領域に付与し、前記記憶手段の記憶領域のうち前記付与した通番を用いて一意に特定可能な単位領域に前記確保対象のブロック化記憶領域を確保させると共に、前記特定レコードの所定階層の特定セグメントに対応する制御情報領域に、前記制御情報として、前記特定レコードの前記特定セグメントに対応する個々のブロック化記憶領域に登録されているオカレンスを前記個々のブロック化記憶領域の通番と対応付ける情報を含む情報を登録することを特徴とする請求項1記載のデータベース管理装置。
  4. 前記登録制御手段は、前記特定レコードの所定階層の特定セグメントに対応する制御情報領域に、前記制御情報として、前記特定レコードの前記特定セグメントに対応するブロック化記憶領域のうち最後に確保したブロック化記憶領域の通番を表す最終通番も前記制御情報領域に登録すると共に、前記特定レコードの前記特定セグメントに対応するブロック化記憶領域を新たに確保する毎に前記最終通番も更新し、前記特定レコードの前記特定セグメントのオカレンスの登録が指示された場合に、前記特定レコードの前記特定セグメントに対応する制御情報領域に登録されている最終通番に基づき、前記特定レコードの前記特定セグメントに対応するブロック化記憶領域のうち最後に確保したブロック化記憶領域の情報を前記読出手段によって読み出させ、読み出された情報に基づいて前記空き領域があるか否かを判定することで、前記記憶手段の記憶領域上に既に確保されておりかつ前記特定レコードの前記特定セグメントに対応するブロック化記憶領域に前記空き領域があるか否かを判定することを特徴とする請求項3記載のデータベース管理装置。
  5. 前記記憶手段は第1記憶手段と第2記憶手段から成り、
    前記登録制御手段は、前記所定階層よりも上位階層のセグメントの情報を前記登録手段によって前記第1記憶手段に登録させると共に、前記ブロック化記憶領域及び前記制御情報領域を前記登録手段によって前記第2記憶手段の記憶領域上に確保させ、前記第2記憶手段の記憶領域上に確保させた各領域に前記登録手段によって情報を登録させることを特徴とする請求項1乃至請求項4の何れか1項記載のデータベース管理装置。
  6. 前記登録制御手段は、前記制御情報領域が前記第2記憶手段の記憶領域上の特定領域内に確保され、前記ブロック化記憶領域が前記第2記憶手段の記憶領域上の特定領域外の領域に確保されるように前記登録手段を制御することを特徴とする請求項5記載のデータベース管理装置。
  7. 前記ブロック化記憶領域にオカレンスを登録すべき所定階層の特定セグメントを有する特定レコードには、前記特定セグメントよりも1階層上位でかつ前記特定セグメントと関連する関連セグメントの情報に所定情報が設定されており、
    前記登録制御手段は、前記登録対象のオカレンスが、前記関連セグメントの情報に前記所定情報が設定されているレコードに属している場合には、前記登録対象のオカレンスを前記第2記憶手段の記憶領域上に確保された対応するブロック化記憶領域に登録させ、前記登録対象のオカレンスが、前記関連セグメントの情報に前記所定情報が設定されていないレコードに属している場合には、前記登録対象のオカレンスを前記第1記憶手段に登録させ、
    前記読出制御手段は、前記読出対象のオカレンスが、前記関連セグメントの情報に前記所定情報が設定されているレコードに属している場合には、対応する制御情報領域に登録されている制御情報に基づいて前記読出対象のオカレンスを前記第2記憶手段から読み出させ、前記読出対象のオカレンスが、前記関連セグメントの情報に前記所定情報が設定されていないレコードに属している場合には、前記関連セグメントの情報に設定されている前記ポインタ情報に基づいて前記読出対象のオカレンスを前記第1記憶手段から読み出させることを特徴とする請求項5記載のデータベース管理装置。
  8. 前記登録制御手段は、前記第1記憶手段に登録されている所定階層の特定セグメントのオカレンスの数が所定数を超えるレコードが出現した場合に、前記特定セグメントの全てのオカレンスを登録可能な数のブロック化記憶領域を前記第2記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記全てのオカレンスを登録すると共に、前記特定レコードの前記特定セグメントに対応する制御情報領域を前記第2記憶手段の記憶領域上に確保し、かつ確保した制御情報領域に前記制御情報を新規登録し、更に、前記第1記憶手段に登録されている前記レコードの前記関連セグメントの情報に前記所定情報を設定させる処理を前記登録手段に行わせることを特徴とする請求項7記載のデータベース管理装置。
  9. 記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための記憶手段を備え、
    任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、所定の選択基準に従い登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段、
    及び、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、個々のセグメントに付与されたキー情報又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段
    として機能するコンピュータを、更に、
    特定レコードの所定階層の特定セグメントのオカレンスの登録が指示された場合に、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が既に確保されており、かつ当該ブロック化記憶領域に前記登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に前記登録手段によって前記登録対象のオカレンスを登録させ、前記ブロック化記憶領域が確保されていないか又は既に確保されている前記ブロック化記憶領域に前記空き領域が無ければ、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を前記記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記登録対象のオカレンスを登録する処理を前記登録手段によって行わせると共に、前記特定レコードの前記特定セグメントのオカレンスの格納位置を識別するための制御情報登録用の制御情報領域が前記記憶手段の記憶領域上に既に確保されていれば、前記登録手段により当該制御情報領域に必要に応じて前記制御情報を追加登録させ、前記制御情報領域が確保されていなければ、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントに対応する制御情報領域を確保し、かつ確保した制御情報領域に前記制御情報を新規登録する処理を前記登録手段によって行わせる登録制御手段、
    及び、特定レコードの所定階層の特定セグメントのオカレンスの読み出しが指示された場合に、前記特定レコードの前記特定セグメントに対応する制御情報領域の制御情報を前記読出手段によって前記記憶手段から読み出させた後に、読み出された制御情報に基づいて前記読出対象のオカレンスの格納位置を認識し、前記読出対象のオカレンスを前記読出手段によって前記記憶手段から読み出させる読出制御手段
    として機能させるためのデータベース管理プログラム。
JP2005103241A 2005-03-31 2005-03-31 データベース管理装置及びプログラム Expired - Fee Related JP4209859B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005103241A JP4209859B2 (ja) 2005-03-31 2005-03-31 データベース管理装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005103241A JP4209859B2 (ja) 2005-03-31 2005-03-31 データベース管理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2006285537A JP2006285537A (ja) 2006-10-19
JP4209859B2 true JP4209859B2 (ja) 2009-01-14

Family

ID=37407413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005103241A Expired - Fee Related JP4209859B2 (ja) 2005-03-31 2005-03-31 データベース管理装置及びプログラム

Country Status (1)

Country Link
JP (1) JP4209859B2 (ja)

Also Published As

Publication number Publication date
JP2006285537A (ja) 2006-10-19

Similar Documents

Publication Publication Date Title
US7779045B2 (en) Lazy updates to indexes in a database
CN114090542A (zh) 数据库系统中的日记表
US6449696B2 (en) Device and method for input/output control of a computer system for efficient prefetching of data based on lists of data read requests for different computers and time between access requests
US20160196295A1 (en) Rendezvous-based optimistic concurrency control
CN105183915B (zh) 减少索引维护开销的多版本管理方法
US20110295913A1 (en) Database apparatus
JP5439236B2 (ja) 計算機システムおよびアプリケーションプログラムの実行方法
CN102043859A (zh) 数据更新方法及装置
CN110399333B (zh) 删除快照的方法、设备和计算机程序产品
US20180107590A1 (en) Information processing apparatus
US20230342353A1 (en) Targeted sweep method for key-value data storage
US7653663B1 (en) Guaranteeing the authenticity of the data stored in the archive storage
US20110099347A1 (en) Managing allocation and deallocation of storage for data objects
JP4279346B2 (ja) データベース管理装置及びプログラム
US20170337197A1 (en) Rule management system and method
US8533398B2 (en) Combination based LRU caching
JP4209859B2 (ja) データベース管理装置及びプログラム
JP4396988B2 (ja) データベースシステム
JP4173147B2 (ja) データベース管理装置及びプログラム
JP4209858B2 (ja) データベース管理装置及びプログラム
CN114841806A (zh) 一种实时转账链路下的模式匹配系统
CN114168306B (zh) 调度方法及调度装置
US11625386B2 (en) Fast skip list purge
EP4244731B1 (en) Storing and searching for data in data stores
KR20080104863A (ko) 워크플로우 모델링 데이터 관리장치 및 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080926

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081021

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081023

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111031

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141031

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees