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

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

Info

Publication number
JP4173147B2
JP4173147B2 JP2005103242A JP2005103242A JP4173147B2 JP 4173147 B2 JP4173147 B2 JP 4173147B2 JP 2005103242 A JP2005103242 A JP 2005103242A JP 2005103242 A JP2005103242 A JP 2005103242A JP 4173147 B2 JP4173147 B2 JP 4173147B2
Authority
JP
Japan
Prior art keywords
information
block
area
segment
read
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
JP2005103242A
Other languages
English (en)
Other versions
JP2006285538A (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 JP2005103242A priority Critical patent/JP4173147B2/ja
Publication of JP2006285538A publication Critical patent/JP2006285538A/ja
Application granted granted Critical
Publication of JP4173147B2 publication Critical patent/JP4173147B2/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つの物理ファイルとしてアクセスすることを可能とし、分割した複数の物理ファイルに対してアクセス要求があり、一部の物理ファイルが退避されている場合には、当該物理ファイルを退避先の記憶装置から復元させることでアクセス要求を実行する技術が開示されている。
特開平5−35790号公報 特開平8−328929号公報
ところで、階層型データベースでは、情報の読み出し及び書き込みがセグメントを単位として行われるが、情報の読み出しにおける起点は常にルートセグメントであり、例えば読出対象情報のセグメントが従属階層(第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階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための記憶手段と、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段と、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、個々のセグメントに付与されたキー情報又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段と、を備えたデータベース管理装置であって、登録対象の情報が、日付情報及び通番情報を含む不定長の情報である特定レコードの特定セグメントのオカレンスであった場合に、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が前記記憶手段の記憶領域上に既に確保されており、かつ当該ブロック化記憶領域に前記登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に前記登録手段によって前記登録対象のオカレンスを登録させ、前記ブロック化記憶領域が確保されていないか又は既に確保されている前記ブロック化記憶領域に前記空き領域が無ければ、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を前記記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記登録対象のオカレンスを登録する処理を前記登録手段によって行わせると共に、前記特定レコードの前記特定セグメントのオカレンスのインデックス情報として、前記日付情報が表す日付毎に、前記通番情報が表す通番が最小のオカレンスが登録された前記ブロック化記憶領域に付与されているブロック通番を前記日付情報が表す日付と対応付ける情報を登録するためのインデックス領域が前記記憶手段の記憶領域上に既に確保されていれば、前記登録手段により当該インデックス領域に必要に応じて前記インデックス情報を追加登録させ、前記インデックス領域が確保されていなければ、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントに対応するインデックス領域を確保し、かつ確保したインデックス領域に前記インデックス情報を新規登録する処理を前記登録手段によって行わせる登録制御手段と、読出対象の日付及び通番が指定されて前記特定レコードの前記特定セグメントのオカレンスのうち該当するオカレンスの読み出しが指示された場合に、前記特定レコードの前記特定セグメントに対応するインデックス領域に登録されているインデックス情報を前記読出手段によって前記記憶手段から読み出させることで、前記日付情報が表す日付が指定された日付に一致しかつ前記通番情報が表す通番が最小のオカレンスが登録されたブロック化記憶領域のブロック通番を認識し、認識したブロック通番又は認識したブロック通番に基づいて設定したブロック通番のブロック化記憶領域を前記読出手段によって前記記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定し、前記オカレンスに設定されている通番が指定された通番よりも小さい間は、ブロック通番順で2個以上後のブロック化記憶領域に対して次の読み出しが行われるようにブロック通番を変更した後に、変更後のブロック通番のブロック化記憶領域を前記読出手段によって前記記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定することを繰り返し、前記オカレンスに設定されている通番が指定された通番を超えた場合は、前回読み出したブロック化記憶領域のブロック通番に1を加算したブロック通番のブロック化記憶領域を前記読出手段によって前記記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番に一致しているか否かを判定することを、指定された通番が設定されているオカレンスが出現する迄繰り返すことで、前記読出対象のオカレンスを前記読出手段によって前記記憶手段から読み出させる読出制御手段と、を備えたことを特徴としている。
請求項1記載の発明に係るデータベース管理装置は、記憶領域が入出力の論理的単位としての多数個の単位領域(CI)に区画された記憶手段を備えており、この記憶手段には、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースが記憶される。
また、請求項1記載の発明に係るデータベース管理装置は、任意のレコードの任意のセグメントの情報のデータベースへの登録が指示される毎に、登録手段により、登録対象の情報を登録可能な空き領域が生じている単位領域が選択され、選択された単位領域に登録対象の情報が登録されると共に、登録対象の情報と同一レコードに属しデータベースに既に登録されている特定の情報にポインタ情報が設定される。なお、登録対象の情報がルートセグメントの情報である場合、登録手段は、例えば該ルートセグメントに付与されたキー情報から一意に特定される第1の単位領域に登録対象のルートセグメントの情報を登録可能な空き領域が有るか否かを判断し、空き領域があれば登録対象のルートセグメントの情報を第1の単位領域に登録し、空き領域が無い場合には、登録対象のルートセグメントの情報を登録可能な空き領域が生じている第2の単位領域を選択し、選択した第2の単位領域に登録対象のルートセグメントの情報を登録すると共に、登録対象のルートセグメントの情報の登録位置が第2の単位領域であることを表すルート登録先情報を第1の単位領域に設定するように構成することができる。これにより、データベースに登録されているルートセグメントの情報については、当該ルートセグメントに付与されたキー情報(及び第1の単位領域に登録されたルート登録先情報)に基づいて、当該情報が登録されている単位領域を特定することができる。
そして、請求項1記載の発明に係るデータベース管理装置では、データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、読出手段により、個々のセグメントに付与されたキー情報又はポインタ情報に基づいて読出対象の情報が登録されている単位領域が判断され、判断された単位領域の情報がデータベースから読み出され、読み出された情報に含まれる読出対象の情報が出力される。
ここで、上記構成では、従属セグメントの情報が登録されている単位領域を特定するために、前述したように、個々の情報に設定されているポインタ情報に基づいて、ルートセグメントを起点にして順に辿っていく(情報を順に読み出していく)必要があるので、アクセス対象のレコードが特定の従属セグメントに多数のオカレンスが存在しているレコードであった場合にはI/O回数が大幅に増大する可能性が高く、データベースへのアクセスを複数のプロセスが並列に実行する環境下で、データベースに登録されているレコードの多数(或いは殆ど)が上記のようなレコードであったとすると、デッドロックが発生する恐れもある。
これに対して請求項1記載の発明に係る登録制御手段は、登録対象の情報が、日付情報及び通番情報を含む不定長の情報である特定レコードの特定セグメントのオカレンスであった場合に、特定レコードの特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が記憶手段の記憶領域上に既に確保されており、かつ当該ブロック化記憶領域に登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に登録手段によって登録対象のオカレンスを登録させ、ブロック化記憶領域が確保されていないか又は既に確保されているブロック化記憶領域に空き領域が無ければ、特定レコードの特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記登録対象のオカレンスを登録する処理を登録手段によって行わせると共に、特定レコードの特定セグメントのオカレンスのインデックス情報として、日付情報が表す日付毎に、通番情報が表す通番が最小のオカレンスが登録されたブロック化記憶領域に付与されているブロック通番を前記日付情報が表す日付と対応付ける情報を登録するためのインデックス領域が記憶手段の記憶領域上に既に確保されていれば、登録手段により当該インデックス領域に必要に応じてインデックス情報を追加登録させ、インデックス領域が確保されていなければ、記憶手段の記憶領域上に特定レコードの特定セグメントに対応するインデックス領域を確保し、かつ確保したインデックス領域にインデックス情報を新規登録する処理を登録手段によって行わせる。
なお、特定のレコードの特定のセグメントとしては、例えば多数のオカレンスが前記データベースに登録される可能性が高いセグメントを適用することができる。請求項1記載の発明では、読出対象のオカレンスが特定レコードの特定セグメントのオカレンスであり、ブロック化記憶領域に登録されている場合、まず対応するインデックス領域に記憶されているインデックス情報を読み出すことで、読出対象のオカレンスと日付情報が表す同一でかつ通番情報が表す通番が最小のオカレンスが登録されたブロック化記憶領域のブロック通番を認識した後に、認識したブロック通番を基に読出対象のオカレンスを記憶手段から読み出す必要がある。しかし、請求項1記載の発明に係るインデックス情報は、日付情報が表す日付とブロック通番を対応付ける情報であるのでオカレンス自体よりもサイズが小さく、かつ記憶手段の記憶領域上に確保されたインデックス領域に登録されるので、特定レコードの特定セグメントのオカレンスが読出対象のオカレンスを含めて多数存在していたとしても、読出対象のオカレンスと日付情報が表す同一でかつ通番情報が表す通番が最小のオカレンスが登録されたブロック化記憶領域のブロック通番を認識するために必要なI/Oの回数は、オカレンス自体を辿っていく場合と比較して大幅に削減される。
また、請求項1記載の発明に係るブロック化記憶領域は、特定レコードの特定セグメントのオカレンスを複数登録するための領域であり、個々のブロック化記憶領域には同一レコードかつ同一セグメントのオカレンスのみが登録されるので、請求項1記載の発明では、個々のレコードの所定階層の各セグメントのオカレンスが、同一レコードかつ同一セグメントのオカレンス毎に記憶手段の記憶領域に詰めて(個々のブロック化記憶領域を単位として連続的に)格納されることになる。このため、特定レコードの特定セグメントの特定のオカレンスを読み出す場合のみならず、特定レコードの特定セグメントのオカレンスを全て読み出す等の場合にも、従来よりも少ないI/O回数で読み出しを完了させることができる。
また、請求項1記載の発明に係るインデックス情報は、日付情報が表す日付毎にインデックス領域に登録されるので、同一日付のオカレンスが多数存在しており、このうちの特定のオカレンスを読み出す場合、インデックス情報を参照しても読出対象のオカレンスと日付が同一でかつ通番が最小のオカレンスが登録されたブロック化記憶領域のブロック通番しか認識できないので、上記のブロック通番を認識した後は、ブロック化記憶領域に記憶されている同一日付のオカレンスを順に参照していく必要があり、読出対象のオカレンスの読み出しが完了する迄に多数回のI/Oを必要とする可能性がある。
これに対して請求項1記載の発明に係る読出制御手段は、読出対象の日付及び通番が指定されて特定レコードの特定セグメントのオカレンスのうち該当するオカレンスの読み出しが指示された場合に、特定レコードの特定セグメントに対応するインデックス領域に登録されているインデックス情報を読出手段によって記憶手段から読み出させることで、日付情報が表す日付が指定された日付に一致しかつ通番情報が表す通番が最小のオカレンスが登録されたブロック化記憶領域のブロック通番を認識し、認識したブロック通番又は認識したブロック通番に基づいて設定したブロック通番のブロック化記憶領域を読出手段によって記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定し、前記オカレンスに設定されている通番が指定された通番よりも小さい間は、ブロック通番順で2個以上後のブロック化記憶領域に対して次の読み出しが行われるようにブロック通番を変更した後に、変更後のブロック通番のブロック化記憶領域を読出手段によって記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定することを繰り返す。そして読出制御手段は、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番を超えた場合は、前回読み出したブロック化記憶領域のブロック通番に1を加算したブロック通番のブロック化記憶領域を読出手段によって記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番に一致しているか否かを判定することを、指定された通番が設定されているオカレンスが出現する迄繰り返すことで、読出対象のオカレンスを読出手段によって記憶手段から読み出させる。
このように、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番よりも小さい間は、ブロック通番順で2個以上後のブロック化記憶領域に対して次の読み出しが行われるようにブロック通番が変更されることで、ブロック化記憶領域の飛ばし読みが行われ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番を超えた後は、ブロック通番に1ずつ加算しながら該当するブロック化記憶領域の読み出しを行わせるので、同一日付のオカレンスを順に参照していく場合と比較して、読出対象のオカレンスの読み出しが完了する迄のI/Oの回数を削減することができる。従って、請求項1記載の発明によれば、データベースへのアクセスにおけるI/O回数を削減することができ、データベースへのアクセス要求に対するシステムのレスポンスの悪化を抑制できると共に、これに伴ってデッドロックの発生も抑制することができる。
なお、請求項1記載の発明において、読出制御手段がブロック通番順で2個以上後のブロック化記憶領域に対して次の読み出しが行われるようにブロック通番を変更する際のブロック通番の変更量は予め固定的に定めてもよいが、例えば請求項2に記載したように、最初に読み出されたブロック化記憶領域内のオカレンスに設定されている通番と指定された通番との偏差の大きさに応じて変化させるようにしてもよいし、最後に読み出されたブロック化記憶領域内のオカレンスに設定されている通番と指定された通番との偏差の大きさに応じて変化させるようにしてもよい。これにより、読出対象のオカレンスの読み出しが完了する迄のI/Oの回数を更に削減することが可能となる。
また、請求項1記載の発明において、例えば請求項3に記載したように、記憶手段は第1記憶手段と第2記憶手段から成り、登録制御手段は、特定セグメント以外のセグメントの情報を登録手段によって第1記憶手段に登録させると共に、ブロック化記憶領域及びインデックス領域を登録手段によって第2記憶手段の記憶領域上に確保させ、かつ第2記憶手段の記憶領域上に確保させた各領域に登録手段によって対応する情報を各々登録させることが好ましい。これにより、ベータベースが第1記憶手段と第2記憶手段に分割されて記憶されることになり、ベータベースに対するアクセスが第1記憶手段に対するアクセスと第2記憶手段に対するアクセスとに分散されることになるので、データベースへのアクセスを複数のプロセスが並列に実行する環境下でのデッドロックの発生をより抑制することができる。
また、請求項3記載の発明のように、ブロック化記憶領域及び制御情報領域を第2記憶手段の記憶領域上に確保させる場合、登録制御手段は、例えば請求項4に記載したように、インデックス領域が第2記憶手段の記憶領域上の特定領域内に確保され、ブロック化記憶領域が第2記憶手段の記憶領域上の特定領域外の領域に確保されるように登録手段を制御することが好ましい。本発明において、ブロック化記憶領域に登録されているオカレンスの読み出しは、前述のようにインデックス領域→ブロック化記憶領域の順に行われるので、第2記憶手段の記憶領域上にインデックス領域とブロック化記憶領域が混在していると、データベースへのアクセスを複数のプロセスが並列に実行する環境下でデッドロックが発生する可能性があるが、請求項4記載の発明では、インデックス領域とブロック化記憶領域が第2記憶手段の記憶領域上の別々の領域に確保されるので、データベースへのアクセスを複数のプロセスが並列に実行する環境下でのデッドロックの発生を更に効果的に抑制することができる。
請求項5記載の発明に係るデータベース管理プログラムは、記憶領域が入出力の論理的単位としての多数個の単位領域に区画され、互いに異なるカテゴリの情報を設定するための複数セグメントが、ルートセグメントを起点として階層的に関連付けられた論理構造に従い、個々のレコードの情報が、何れかのセグメントに対応する情報を単位として分離されると共に、単一のセグメントに対応する情報として必要に応じて複数のオカレンスが生成され、1階層下位に関連するセグメントが存在するセグメントの情報に、前記1階層下位でかつ関連する単一の特定セグメントの情報又は該単一の特定セグメントの単一の特定オカレンスの格納位置を指し示すポインタ情報が設定され、前記特定セグメントに複数のオカレンスが存在している場合には、該複数のオカレンスに、前記特定オカレンスを先頭として、何れかのオカレンスの格納位置を指し示すポインタ情報が順に設定されるデータベースを記憶するための記憶手段を備え、任意のレコードの任意のセグメントの情報の前記データベースへの登録が指示される毎に、登録対象の情報を登録可能な空き領域が生じている単位領域を選択し、選択した単位領域に前記登録対象の情報を登録すると共に、前記登録対象の情報と同一レコードに属し前記データベースに既に登録されている特定の情報に前記ポインタ情報を設定する登録手段、及び、前記データベースからの任意のレコードの任意のセグメントの情報の読み出しが指示される毎に、個々のセグメントに付与されたキー情報又は前記ポインタ情報に基づいて読出対象の情報が登録されている単位領域を判断し、判断した単位領域の情報を前記データベースから読み出し、読み出した情報に含まれる読出対象の情報を出力する読出手段として機能するコンピュータを、更に、登録対象の情報が、日付情報及び通番情報を含む不定長の情報である特定レコードの特定セグメントのオカレンスであった場合に、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が前記記憶手段の記憶領域上に既に確保されており、かつ当該ブロック化記憶領域に前記登録対象のオカレンスを登録可能な空き領域があれば、当該ブロック化記憶領域に前記登録手段によって前記登録対象のオカレンスを登録させ、前記ブロック化記憶領域が確保されていないか又は既に確保されている前記ブロック化記憶領域に前記空き領域が無ければ、前記特定レコードの前記特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を前記記憶手段の記憶領域上に確保し、かつ確保したブロック化記憶領域に前記登録対象のオカレンスを登録する処理を前記登録手段によって行わせると共に、前記特定レコードの前記特定セグメントのオカレンスのインデックス情報として、前記日付情報が表す日付毎に、前記通番情報が表す通番が最小のオカレンスが登録された前記ブロック化記憶領域に付与されているブロック通番を前記日付情報が表す日付と対応付ける情報を登録するためのインデックス領域が前記記憶手段の記憶領域上に既に確保されていれば、前記登録手段により当該インデックス領域に必要に応じて前記インデックス情報を追加登録させ、前記インデックス領域が確保されていなければ、前記記憶手段の記憶領域上に前記特定レコードの前記特定セグメントに対応するインデックス領域を確保し、かつ確保したインデックス領域に前記インデックス情報を新規登録する処理を前記登録手段によって行わせる登録制御手段、及び、読出対象の日付及び通番が指定されて前記特定レコードの前記特定セグメントのオカレンスのうち該当するオカレンスの読み出しが指示された場合に、前記特定レコードの前記特定セグメントに対応するインデックス領域に登録されているインデックス情報を前記読出手段によって前記記憶手段から読み出させることで、前記日付情報が表す日付が指定された日付に一致しかつ前記通番情報が表す通番が最小のオカレンスが登録されたブロック化記憶領域のブロック通番を認識し、認識したブロック通番又は認識したブロック通番に基づいて設定したブロック通番のブロック化記憶領域を前記読出手段によって前記記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定し、前記オカレンスに設定されている通番が指定された通番よりも小さい間は、ブロック通番順で2個以上後のブロック化記憶領域に対して次の読み出しが行われるようにブロック通番を変更した後に、変更後のブロック通番のブロック化記憶領域を前記読出手段によって前記記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定することを繰り返し、前記オカレンスに設定されている通番が指定された通番を超えた場合は、前回読み出したブロック化記憶領域のブロック通番に1を加算したブロック通番のブロック化記憶領域を前記読出手段によって前記記憶手段から読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番に一致しているか否かを判定することを、指定された通番が設定されているオカレンスが出現する迄繰り返すことで、前記読出対象のオカレンスを前記読出手段によって前記記憶手段から読み出させる読出制御手段として機能させる。
請求項5記載の発明に係るデータベース管理プログラムは、上記の記憶手段を備え、上記の登録手段及び読出手段として機能するコンピュータを、上記の登録制御手段及び読出制御手段として機能させるためのプログラムであるので、上記のコンピュータが請求項5記載の発明に係るデータベース管理プログラムを実行することにより、コンピュータが請求項1に記載のデータベース管理装置として機能することになり、請求項1記載の発明と同様に、データベースへのアクセス要求に対するシステムのレスポンスの悪化を抑制することができる。
以上説明したように本発明は、登録対象の情報が特定レコードの特定セグメントのオカレンスであった場合に、特定レコードの特定セグメントのオカレンスを複数登録するためのブロック化記憶領域が既に確保されており、かつ当該ブロック化記憶領域に空き領域があれば、当該ブロック化記憶領域に登録対象のオカレンスを登録させ、ブロック化記憶領域が確保されていないか又は既に確保されているブロック化記憶領域に空き領域が無ければ、特定レコードの特定セグメントのオカレンスを複数登録するためのブロック化記憶領域を確保し、かつ確保したブロック化記憶領域に登録対象のオカレンスを登録させると共に、特定レコードの特定セグメントのオカレンスのインデックス情報を登録するためのインデックス領域が既に確保されていれば、当該インデックス領域に必要に応じてインデックス情報を追加登録させ、インデックス領域が確保されていなければ、特定レコードの特定セグメントに対応するインデックス領域を確保し、かつ確保したインデックス領域にインデックス情報を新規登録させ、読出対象の日付及び通番が指定されて特定レコードの特定セグメントのオカレンスのうち該当するオカレンスの読み出しが指示された場合に、特定レコードの特定セグメントに対応するインデックス領域に登録されているインデックス情報を読み出させることで、日付が指定された日付に一致しかつ通番が最小のオカレンスが登録されたブロック化記憶領域のブロック通番を認識し、認識したブロック通番又は認識したブロック通番に基づいて設定したブロック通番のブロック化記憶領域を読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定し、設定されている通番が指定された通番よりも小さい間は、ブロック通番順で2個以上後のブロック化記憶領域に対して次の読み出しが行われるようにブロック通番を変更した後に、変更後のブロック通番のブロック化記憶領域を読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番以上か否かを判定することを繰り返し、設定されている通番が指定された通番を超えた場合は、前回のブロック通番に1を加算したブロック通番のブロック化記憶領域を読み出させ、読み出されたブロック化記憶領域内のオカレンスに設定されている通番が指定された通番に一致しているか否かを判定することを、指定された通番が設定されているオカレンスが出現する迄繰り返すことで、読出対象のオカレンスを読み出させるようにしたので、データベースへのアクセス要求に対するシステムのレスポンスの悪化及びデッドロックの発生を抑制できる、という優れた効果を有する。
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には本実施形態に係る、特定金融機関に設けられたコンピュータ・システム10が示されている。コンピュータ・システム10は、特定金融機関の情報センタ等に設置されたホスト・コンピュータ12と、特定金融機関内に構築されたコンピュータ・ネットワーク18を含んで構成されている。なお、ホスト・コンピュータ12は請求項5に記載のコンピュータに対応しており、後述する第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は請求項3に記載の第1記憶手段に、第2ストレージ16は請求項3に記載の第2記憶手段に対応している。
また、ホスト・コンピュータ12の記憶部12Cには、ホスト・コンピュータ12をDB制御部として機能させるためのDB制御プログラム、ホスト・コンピュータ12をアプリケーション制御部として機能させるためのアプリケーション制御プログラム、ホスト・コンピュータ12をDB操作アプリケーション部として機能させるためのDB操作アプリケーション・プログラムが各々記憶されている。なお、上記各プログラムのうち、アプリケーション制御プログラムは請求項5に記載のデータベース管理プログラムに対応している。
一方、コンピュータ・ネットワーク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操作処理を終了する。
ところで、AMT22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間は、要求されたアクセスが完了する迄に必要なI/Oの回数(登録や読み出し、更新を行う単位領域の個数)によって大きく左右され、I/O回数が増大するに従って、ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスが低下し、AMT22や営業店端末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の回数の大幅な増大を招き、データベース・システムのレスポンスの低下、AMT22や営業店端末24の待ち時間の増大を引き起こしていた。
また、コンピュータ・ネットワーク18には多数台のATM22及び営業店端末24が接続されており、口座情報DBに対するアクセスは個々のAMT22、営業店端末24から非同期に要求されることから、ホスト・コンピュータ12では、アクセス要求が集中した場合にも、個々のAMT22や営業店端末24が口座情報DBへのアクセスを要求してから処理完了が通知されるまでの待ち時間が大幅に増大することを回避する(ホスト・コンピュータ12、第1ストレージ14及び第2ストレージ16から成るデータベース・システムのレスポンスを速くする)ために、個々のAMT22や営業店端末24から口座情報DBに対するアクセスが要求される毎に、要求されたアクセスを行うプロセスを生成し、複数のプロセスを並列に処理することで、個々のAMT22や営業店端末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に登録する(異なるストレージに記憶させる)ことを、本明細書ではコントロール分割と称する。
以下、このコントロール分割を実現するために、アプリケーション制御部によって実行されるアプリケーション制御処理について、図6のフローチャートを参照して説明する。なお、このアプリケーション制御処理は、DB操作アプリケーション部から口座情報DBへのアクセス(情報の登録、読み出し、更新の何れか)が指示される毎に実行される。ステップ150では、指示されたアクセスが口座情報DBに対する情報の登録か読み出しか更新かを判定し、判定結果に応じて分岐する。指示された要求が口座情報DBへの情報の登録である場合はステップ152で情報登録処理を行う。なお、この情報登録処理は、後述する図6のステップ154と共に本発明に係る登録制御手段に対応している。
図7に示すように、この情報登録処理では、まずステップ200において、登録対象の情報のセグメントがコントロール分割対象のセグメントか否か判定する。本実施形態では、コントロール分割対象のセグメントに対し、該コントロール分割対象セグメントよりも1階層上位でかつコントロール分割対象セグメントと関連するセグメント(例えばコントロール分割対象のセグメントが普通口座を対象とした金融取引の取引明細を登録するための第3階層のセグメントであれば、前記普通口座に関する情報を登録するための第2階層のセグメント)のヘッダに、コントロール分割の対象であることを表す分割定義情報が設定される(図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の記憶領域)に確保されたブロック化エリアに登録されるが、単一のブロック化エリアに登録可能なオカレンスの数には限りがある(例えば3〜6個、平均して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」が設定される。なお、コントロールブロックは本発明に係るインデックス領域に、コントロールブロックに登録されるインデックス情報は本発明に係るインデックス情報に対応している。
そしてステップ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から読み出されたブロック化エリアに、登録対象情報を登録可能な空き領域が有るか否か判定する。判定が肯定された場合はステップ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に登録されることになる。
続いて、アプリケーション制御処理のうち、口座情報DBからの情報の読み出しがDB操作アプリケーション部より指示された場合の処理を説明する。指示されたアクセスが情報の読み出しである場合には、ステップ150からステップ156へ移行し、前述したステップ200と同様に、読出対象情報のセグメントの1階層上位で前記セグメントと関連するセグメントのヘッダに設定される分割定義情報を参照することで、読出対象の情報のセグメントがコントロール分割対象のセグメントか否かを判定する。
読出対象情報がルートセグメント又は第2階層セグメントの情報である場合、或いは読出対象情報が第3階層セグメントの情報であるものの当該セグメントがコントロール分割対象でない場合には、上記判定が否定されてステップ158へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第1DBの物理DB名へ変換してDB制御部へ引き渡すことで、DB制御部に対し、口座情報第1DBから読出対象の情報を読み出すよう指示する。そして、DB制御部から読出完了が通知されるとステップ190へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共にDB制御部によって口座情報DB(の口座情報第1DB)から読み出された情報をDB操作アプリケーション部へ転送し、処理を終了する。このように、読出対象情報がコントロール分割対象のセグメントの情報でない場合には、従来通り口座情報第1DBに対して情報の読み出しが行われる。
一方、口座情報DBからの取引明細(第3階層のコントロール分割対象セグメントのオカレンス)の読み出しが要求された等の場合には、図13のステップ130〜ステップ139に示すように、DB操作アプリケーション部により、ルートセグメント及び第2階層セグメントの情報の読み出しが順次指示された後に、口座情報DBからの取引明細(第3階層のコントロール分割対象セグメントのオカレンス)の読み出しが指示される(図13のステップ140)。なお、口座情報DBに登録される個々の取引明細の本体情報には、個々の顧客の個々の口座を対象とする金融取引を単位として、日付毎に通番が設定されており(ブロック通番と区別するため、この通番を明細通番と称する)、口座情報DBからの取引明細の読み出しでは、読出対象の取引明細の日付、明細通番(読出対象の取引明細が複数である場合は読出対象の複数の取引明細のうちの最小の明細通番)及び読出対象の取引明細の数が指定される。
例えば営業店端末24を介して特定の顧客の特定口座の取引明細を全て閲覧するために、口座情報DBからの該当する取引明細の読み出しが要求される場合であっても、営業店端末24のディスプレイに一度に表示可能な取引明細の数は20件程度であるため、1回の読出要求で指定される読出対象の取引明細の数は最大でも20件程度であり、特定の顧客の特定口座の取引明細の全数閲覧等は、最大で20件程度の取引明細の読み出しが、明細通番(や日付)をインクリメントしながら営業店端末24から繰り返し要求され、読み出しが要求される毎に、以下で説明する処理により、指定された日付、明細通番及び取引明細の数によって特定される読出対象の最大20件程度の取引明細が口座情報DBから読み出され、読み出された取引明細が読み出し要求元の営業店端末24等へ送信されることによって成される。
コントロール分割対象セグメントのオカレンス(ブロック化エリアに登録されて口座情報第2DBに記憶されている取引明細)の読み出しが要求された場合、前述のステップ156の判定が肯定されてステップ160へ移行し、DB操作アプリケーション部から通知された論理DB名を口座情報第2DBの物理DB名へ変換すると共に、コントロール分割対象のセグメントに対応するルートセグメントのキー情報、第2階層セグメントのキー情報及びブロック通番「0000」を羅列したキー情報を生成し、読出対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すことで、読出対象オカレンスのセグメントに対応するコントロールブロックの口座情報第2DBからの読み出しをDB制御部へ指示する(図13のステップ141も参照)。
これにより、DB制御部によって、読出対象オカレンスのセグメント(コントロール分割対象のセグメント)に対応するコントロールブロック(このコントロールブロックが階層化されている場合にはルートブロックに相当するコントロールブロック)が口座情報第2DBから読み出され、読み出された情報がDB制御部から転送されると共に、DB制御部から読出完了が通知される(図13のステップ142,143も参照)。
読出完了が通知されるとステップ162へ移行し、読み出されたコントロールブロックのインデックス領域に設定されているインデックス情報を順に参照することで、指定された日付と同一の日付が設定されているインデックス情報、すなわち読出対象の取引明細(オカレンス)のインデックス情報が存在しているか否か判定する。判定が否定された場合はステップ164へ移行し、DB制御部に対して同一レコードかつ同一セグメントに対応する次のコントロールブロック(ステップ160の読出指示に従いDB制御部から読み出されたコントロールブロックのヘッダ情報設定領域に設定されているポインタ情報が指し示すコントロールブロック)の読み出しを指示する。そして、DB制御部による該当するコントロールブロックの情報が読み出しが完了するとステップ162に戻り、ステップ162の判定が再度行われる。このように、ステップ164はステップ162の判定が肯定される迄繰り返されるので、読出対象の取引明細に対応するインデックス情報(指定された日付と同一の日付が設定されているインデックス情報)がインデックス領域に登録されたコントロールブロックが探索される。
読出対象の取引明細に対応するインデックス情報が登録されたコントロールブロックが発見されると、ステップ162の判定が肯定されてステップ166へ移行し、フラグ(メモリ12B上に設けたフラグ用のエリア)を0に初期設定し、次のステップ168において、読出対象のブロック通番として、読出対象の取引明細に対応するインデックス情報に設定されているブロック通番を設定する。そしてステップ170では、読出対象DBの物理DB名として口座情報第2DBの物理DB名を、読出対象情報のセグメント名として口座情報第2DBにおけるルートセグメントのセグメント名を設定すると共に、読出対象情報のキー情報として、ルートセグメントのキー情報、第2階層セグメントのキー情報、及び読出対象のブロック通番を羅列したキー情報を設定し、これらの情報をパラメータとしてDB制御部へ引き渡すことで、該当するブロック化エリアを口座情報第2DBから読み出すようDB制御部へ指示する(図13のステップ144も参照)。これにより、DB制御部によって該当するブロック化エリア(指定された日付でかつ明細通番が1の取引明細が登録されたブロック化エリア)が読み出され、読み出されたブロック化エリアの情報がDB制御部から転送されると共に、読出完了がDB制御部から通知される(図13のステップ145、146も参照)。
ステップ172では、DB制御部によって読み出されたブロック化エリアのオカレンス設定領域に登録されている複数のオカレンス(取引明細)の本体情報を順に参照し、当該本体情報に設定されている明細通番が指定された明細通番に一致しているか否かを判定することで、読み出されたブロック化エリアに登録されている複数の取引明細の中に読出対象の取引明細が存在しているか否か判定する。判定が肯定された場合はステップ186へ移行し、読み出されたブロック化エリアから読出対象の取引明細を抽出し(読出対象の取引明細が複数の場合は、明細通番が指定された明細通番に一致した取引明細を先頭として、指定された読出対象の取引明細の数を最大とする数の取引明細を順に抽出し)、抽出した取引明細をメモリ12B上の所定エリアに記憶させる。
次のステップ188では、読出対象の取引明細を全数読み出したか否か判定する。判定が肯定された場合は取引明細の読み出しを終了して前述のステップ190へ移行するが、メモリ12B上の所定エリアに記憶させた取引明細の数が指定された読出対象の取引明細の数に満たない場合は判定が否定されてステップ180へ移行し、読出対象のブロック通番を1だけインクリメントしてステップ170へ戻る。これにより、読出対象の取引明細が全数読み出される迄の間、読出対象のブロック通番が1ずつインクリメントされ、ブロック化エリアがブロック通番順に順次読み出されることになる。
ところで、口座情報DBに情報が登録される顧客の中には、特定口座を対象とする頻繁に金融取引が行われることで、同一セグメントのオカレンス(取引明細)が1日当たり数百件以上登録される顧客も存在している。この種の顧客の特定口座の取引明細を全数閲覧する場合にも、口座情報DBから1回に読み出す取引明細の最大数は20件程度であるので、読み出し要求が繰り返されると共に、各回の読み出し要求で指定される読出対象の取引明細の明細通番が徐々にインクリメントされていくことになる。これに対し、コントロールブロックに登録されているインデックス情報は日付単位であり、このインデックス情報には同一日付の取引明細のうち明細通番が最小の取引明細が登録されているブロック化エリアのブロック通番しか設定されていないので、読出対象の取引明細の明細通番が指定されても読出対象の取引明細が登録されているブロック化エリアのブロック通番を判断することは困難である。
このため、明細通番が指定されて取引明細の読み出しが要求された際に、インデックス情報に設定されているブロック通番のブロック化エリアを先頭として、ブロック通番を1ずつインクリメントしながら各ブロック化エリアを順に参照することを、指定された明細通番に一致する明細通番が設定された取引明細が出現する迄繰り返すようにした場合、特に同一日付の取引明細が多数存在しており、かつ読出対象の取引明細が同一日付の多数の取引明細のうちの後の方の取引明細であった場合(指定された明細通番の値が大きかった場合)に、読出対象の取引明細の読み出しを完了する迄に多数回のI/Oが必要となることで、データベース・システムのレスポンスが低下する可能性が高い。
これに対して本実施形態に係るアプリケーション制御処理では、ブロック化エリアの飛ばし読みを行うことでI/O回数を削減している。すなわち、ステップ170で読み出されたブロック化エリアのオカレンス設定領域に読出対象の取引明細が登録されていなかった場合、ステップ172の判定が否定されてステップ174へ移行し、読み出されたブロック化エリアのオカレンス設定領域に登録されている取引明細の明細通番が、指定された明細通番よりも小さいか否か判定する。当初はこの判定が肯定されてステップ176へ移行し、フラグが0か否か判定する。当初はこの判定も肯定されてステップ178へ移行し、読出対象のブロック通番に所定値α(但しα≧2)を加算した値を読出対象の新たなブロック通番として設定し、ステップ170に戻る。これにより、読み出したブロック化エリアの中に読出対象の取引明細が存在していることでステップ172の判定が肯定されるか、又は読み出したブロック化エリアに登録されている取引明細の明細通番が指定された明細通番よりも大きくなることでステップ174の判定が否定される迄の間、ブロック化エリアがブロック通番順で(α−1)個おきに順に読み出されることになる。
例えば図14に示すように、読出対象の取引明細の日付として「3/10」、明細通番として「320」が指定され、日付が「3/10」の取引明細のうち明細通番が最小の取引明細が、ブロック通番「12」のブロック化エリアに登録されていることを表すインデックス情報がコントロールブロックに登録されていた場合、当該インデックス情報を参照することで、明細通番が最小の取引明細が登録されているブロック化エリアのブロック通番「12」を認識し(図14の(1)参照)、認識したブロック通番「12」のブロック化エリアを読み出し(図14の(2)参照)た以降、α=50であればブロック通番に「50」が順次加算され、ブロック通番「62」「112」「162」のブロック化エリアを順に読み出す飛ばし読みが行われる(図14の(3)〜(5)参照)。この飛ばし読みにより、指定された明細通番と同一又は近似した明細通番の取引明細が登録されているブロック化エリアに到達する迄に必要なI/Oの回数が削減される。
なお、請求項2に記載の「ブロック通番の変更量」に相当するαの値としては、必ずしも一定値を用いる必要はなく、最初に読み出したブロック化エリア(インデックス情報に設定されていたブロック通番に基づいて読み出したブロック化エリア)に登録されている取引明細の明細通番と指定された明細通番との偏差の大きさに応じてαの値を変化させるようにしてもよいし、ブロック化エリアを読み出す毎に、該ブロック化エリアに登録されている取引明細の明細通番と指定された明細通番との偏差の大きさに応じてαの値を毎回変化させるようにしてもよい。これらの態様は請求項2記載の発明に対応している。
また、上記の飛ばし読みを行うことで、いずれ読み出したブロック化エリアに登録されている取引明細の明細通番が指定された明細通番を超えることになり(図14の(5)の状態)、ステップ182の判定が否定されてステップ182へ移行する。ステップ182では、前回の読出対象のブロック通番に1を加算した値を読出対象の新たなブロック通番として設定する。また、次のステップ184ではフラグに1を設定してステップ170に戻る。これにより、ブロック化エリアの飛ばし読みにおいて、読み出したブロック化エリアに登録されている取引明細の明細通番が指定された明細通番よりも小さいと判定されたブロック化エリアのうちブロック通番が最大のブロック化エリアに対し、ブロック通番順で次のブロック化エリアが読み出される(図14の(6)参照)。また、上記のようにブロック通番を戻したことに伴ってステップ174の判定が再度肯定された場合には、フラグが1に設定されているので、次のステップ176の判定が否定されてステップ180へ移行し、読出対象のブロック通番が1だけインクリメントされる。従って、以降の処理ではブロック化エリアがブロック通番順に順次読み出されることになる。
ブロック化エリアの飛ばし読みを含む上述した処理により、読出対象として指定された明細通番が比較的大きい値である場合(指定された日付の取引明細のうち明細通番順で後の方に存在している取引明細が読出対象の場合)にも、指定された明細通番の取引明細が登録されているブロック化エリアに到達する迄に必要なI/Oの回数を削減することができる。また、上述した処理うちブロック化エリアをブロック通番順に順次読み出す処理は既存のプログラム(のアルゴリズム)を流用することができるので、上述した処理は、既存のプログラムを若干変更するのみで実現することができ、上述した処理を実現するためのプログラムに対する信頼性を容易に確保できるという効果も有する。
指定された明細通番の取引明細が登録されているブロック化エリアに到達した後は、前述したステップ186の処理が行われた後、必要に応じてステップ188,180,170,172,186が繰り返されることで、読出対象の取引明細が全数読み出されることになる。そして、読出対象の取引明細の読み出しが完了すると、ステップ188の判定が肯定されてステップ190へ移行し、DB操作アプリケーション部に対して読み出し完了を通知すると共に、ブロック化エリアから抽出してメモリ12Bの所定エリアに記憶していた読出対象の取引明細をDB操作アプリケーション部へ転送し、処理を終了する(図13のステップ147も参照)。上述したステップ156〜ステップ190は本発明に係る読出制御手段に対応している。
なお、口座情報DBに対する情報の更新が指示されるときには、その直前に更新対象情報の読み出しが指示され、この指示に従って更新対象情報の読み出しが行われているので、口座情報DBにおける更新対象情報の格納位置は既知の状態となっている。このため、指示されたアクセスが情報の更新であればステップ150からステップ192へ移行し、DB操作アプリケーション部から転送された更新情報をDB制御部へ転送すると共に、前回の情報読み出し時(更新対象情報の読み出し時)と同一のパラメータ(物理DB名、セグメント名、キー情報)を設定し、このパラメータに該当する情報(更新対象情報)を更新情報で上書きするようDB制御部へ指示する。これにより、DB制御部により口座情報DB(口座情報第1DB又は口座情報第2DB)に記憶されている更新対象情報が、DB操作アプリケーション部からアプリケーション制御部を経由して転送された更新情報で上書き更新されることになる。アプリケーション制御部では、DB制御部から更新完了が通知されるとステップ194へ移行し、DB操作アプリケーション部に対して更新完了を通知して処理を終了する。
このように、本実施形態では、コントロール分割対象のセグメントの取引明細(オカレンス)を読み出す際に、まずコントロールブロックに登録されているインデックス情報を読み出し、読出対象の取引明細が登録されているブロック化エリアのブロック通番を認識した後に、読出対象の取引明細を読み出す必要がある。しかし、本実施形態に係るインデックス情報は日付とブロック通番から成る12バイト程度の情報であるので、コントロールブロックには多数のインデックス情報を登録可能であり、コントロール分割対象のセグメントの情報として登録されている多数の取引明細の中から特定日付の取引明細を読み出す場合にも、インデックス情報の読み出しのために必要なI/Oの回数は1〜数回程度で済む。また、読み出したインデックス情報に基づいて読出対象の取引明細が登録されたブロック化エリアのブロック通番を認識できるので、インデックス情報を読み出した後は必要最小限のI/O回数で読出対象の取引明細を読み出すことができ、取引明細自体の列(オカレンス自体の列)を順に参照して目的の取引明細を探索する場合と比較してI/O回数は大幅に削減される。
また、個々のブロック化エリアには同一レコードかつ同一セグメントのオカレンス(取引明細)のみが日付順に複数登録されると共に、同一レコードかつ同一セグメントに対応するブロック化エリアには「0001」を初期値とするブロック通番が付与されるので、特定レコードの特定セグメントの取引明細を全数読み出すことも、対応するコントロールブロックの情報を読出して最終のブロック通番を認識した後に、対応するブロック化エリアを通番0001から認識した最終のブロック通番まで順に読み出すことで行うことができる。従って、処理が簡単になると共に、対応するブロック化エリアには読出対象の取引明細のみが格納されているので、I/O回数も必要最小限となる。更に、本実施形態では第2ストレージ16の記憶領域を、コントロールブロックを登録するための記憶領域とブロック化エリアを登録するための記憶領域に区画し、コントロールブロックとブロック化エリアを異なる記憶領域に登録しているので、上述したI/O回数削減との相乗効果によりデッドロックの発生を抑制できると共に、データベースへのアクセス要求に対するシステムのレスポンスの悪化を抑制することができる。
更に、本実施形態では口座情報第2DBに記憶されたブロック化エリアに登録されている取引明細の読み出しが要求され、インデックス情報に設定されているブロック通番のブロック化エリアに、読出対象の取引明細よりも明細通番が小さい取引明細が登録されていた場合に、ブロック化エリアの読み出しをブロック通番順でとびとびに行う飛ばし読みを行い、読み出したブロック化エリアに登録されている取引明細の明細通番が指定された明細通番を超えると、読出対象のブロック通番を前回の読み出し時のブロック通番に1を加算したブロック通番に戻し、以降の処理ではブロック通番を1ずつインクリメントしながら読出対象の取引明細(が登録されたブロック化エリア)を探索するので、指定された日付の取引明細のうち明細通番順で後の方に存在している取引明細が読出対象として指定された場合にも、読出対象の取引明細の読み出しを完了する迄に必要なI/Oの回数を削減することができ、データベースへのアクセス要求に対するシステムのレスポンスの悪化を抑制することができる。
なお、上記では読出対象のブロック通番の初期値としてインデックス情報に設定されているブロック通番を用いた例を説明したが、これに限定されるものではなく、指定されたブロック通番に基づき、読出対象の取引明細がインデックス情報に設定されているブロック通番のブロック化エリアに登録されていないことが明らかである場合には、読出対象のブロック通番の初期値として、インデックス情報に設定されているブロック通番に所定値を加算したブロック通番(このブロック通番は請求項1等に記載の「認識したブロック通番に基づいて設定したブロック通番」に対応している)を用いてもよい。
また、上記では特定金融機関の各支店に設置されたATM22及び営業店端末24が、同一の支店に設置されたブランチ・サーバ20と接続されている構成のコンピュータ・システム10を例に説明したが、各支店にブランチ・サーバ20を設置することに代えて情報センタ等にサーバを集中配置し、各支店に設置されたATM22及び営業店端末24が集中配置したサーバに接続される構成を採用してもよい。
また、上記では本発明に係るデータベースの一例として、各レコードの情報が3階層に分離された論理構造のデータベースを説明したが、これに限定されるものではなく、より多数の階層に分離された論理構造であってもよい。
更に、上記では本発明に係るデータベースの一例として、顧客が特定金融機関に開設した口座に関する情報を登録・管理するための口座情報DBを説明したが、本発明は階層型のデータベースであれば適用可能であり、データベースに登録される情報は上記に限定されるものではない。
本実施形態に係るコンピュータ・システムの概略構成を示すブロック図である。 (A)は口座情報の論理構造、(B)は従来の物理フォーマットの一例を各々示す概念図である。 (A)はストレージの口座情報DB記憶領域、(B)は単位領域(CI)内のフォーマットを各々示す概念図である。 (A)は新規顧客が口座を開設した場合、(B)は既開設口座に対する残高照会が指示された場合の処理の流れを示すシーケンス図である。 デッドロック発生の原理を説明するための概念図である。 アプリケーション制御処理の内容を示すフローチャートである。 情報登録処理の内容を示すフローチャートである。 コントロール分割が適用されたレコード(口座情報)の物理フォーマットを示す概念図である。 第2ストレージの基本域内におけるコントロールブロック及びブロック化エリアの記憶領域の割り当てを示すイメージ図である。 コントロールブロック及びブロック化エリアの詳細を示す概念図である。 コントロールブロックの階層化を説明するための概念図である。 既開設口座に対する新たな取引が発生した場合の処理の流れを示すシーケンス図である。 取引明細を読み出す場合の処理の流れを示すシーケンス図である。 取引明細の飛ばし読みを説明するためのイメージ図である。
符号の説明
10 コンピュータ・システム
12 ホスト・コンピュータ
14 第1ストレージ
16 第2ストレージ
18 コンピュータ・ネットワーク
18 ネットワーク
20 ブランチ・サーバ
20 通信回線
24 営業店端末

Claims (5)

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

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2006285538A JP2006285538A (ja) 2006-10-19
JP4173147B2 true JP4173147B2 (ja) 2008-10-29

Family

ID=37407414

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP4173147B2 (ja)

Also Published As

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

Similar Documents

Publication Publication Date Title
EP1342173B1 (en) Database management system and method for databases having large objects
US7111001B2 (en) Event driven transaction state management with single cache for persistent framework
US9244953B2 (en) Systems and methods for asynchronous schema changes
US7779045B2 (en) Lazy updates to indexes in a database
CN101183322B (zh) 延迟日志生成的方法及其设备
US8135688B2 (en) Partition/table allocation on demand
CN105074724A (zh) 使用列式数据库中的直方图进行有效查询处理
CN110399333B (zh) 删除快照的方法、设备和计算机程序产品
US7653663B1 (en) Guaranteeing the authenticity of the data stored in the archive storage
CN112364021B (zh) 业务数据处理方法、装置及存储介质
US20110099347A1 (en) Managing allocation and deallocation of storage for data objects
JP4279346B2 (ja) データベース管理装置及びプログラム
US8533398B2 (en) Combination based LRU caching
WO2012081165A1 (ja) データベース管理装置及びデータベース管理方法
JP4173147B2 (ja) データベース管理装置及びプログラム
JP4396988B2 (ja) データベースシステム
CN115878625A (zh) 数据处理方法和装置及电子设备
CN114841806A (zh) 一种实时转账链路下的模式匹配系统
JP4209859B2 (ja) データベース管理装置及びプログラム
JP4209858B2 (ja) データベース管理装置及びプログラム
CN113052515A (zh) 一种基于数据并发处理的教学考评方法及系统
JP4152107B2 (ja) データベース更新情報の反映システムおよびそのためのプログラム
CN114168306B (zh) 调度方法及调度装置
CN111444179B (zh) 数据处理方法、装置、存储介质及服务器
EP4244731B1 (en) Storing and searching for data in data stores

Legal Events

Date Code Title Description
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: 20080805

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: 20080812

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: 20110822

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110822

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140822

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees