JP4396988B2 - データベースシステム - Google Patents

データベースシステム Download PDF

Info

Publication number
JP4396988B2
JP4396988B2 JP2006058314A JP2006058314A JP4396988B2 JP 4396988 B2 JP4396988 B2 JP 4396988B2 JP 2006058314 A JP2006058314 A JP 2006058314A JP 2006058314 A JP2006058314 A JP 2006058314A JP 4396988 B2 JP4396988 B2 JP 4396988B2
Authority
JP
Japan
Prior art keywords
record
time
update
processing
records
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
JP2006058314A
Other languages
English (en)
Other versions
JP2007233969A (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.)
Mitsubishi Electric Information Systems Corp
Original Assignee
Mitsubishi Electric Information Systems Corp
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 Mitsubishi Electric Information Systems Corp filed Critical Mitsubishi Electric Information Systems Corp
Priority to JP2006058314A priority Critical patent/JP4396988B2/ja
Publication of JP2007233969A publication Critical patent/JP2007233969A/ja
Application granted granted Critical
Publication of JP4396988B2 publication Critical patent/JP4396988B2/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

本発明は、データベースシステムに関し、とくに時制データベースを扱うデータベースシステムに関する。
コンピュータが扱うデータベースでは、同一のデータに対し、複数のプログラムから同時に更新処理が行われる場合がある。このような同時更新によってその対象となるデータの整合性が失われる事態を防ぐために、更新の際には対象データに対して排他制御がなされる。すなわち、対象データにロックがかけられ、一つの処理が完了するまで他の処理は開始されないように制御される。
このようなロックにより、複数のユーザが同時に同一データを更新しても逐次的に処理され、整合性が保たれる。また、いわゆるデッドロックが発生した場合には、一方または両方のプログラムを強制終了させ、データ全体の矛盾の発生を防止する。
ここで、データを更新する処理は様々な種類のものがあり、更新処理に要する時間も様々である。たとえば、単一のデータを、更新要求が発生した時点でリアルタイムに更新する、いわゆるオンライン処理が要する時間は比較的短く、たとえば1秒以内に終了する。一方、大量のデータに対して同一の更新処理を行う、いわゆるバッチ処理が要する時間は比較的長く、たとえば数日以上かかる場合がある。
このため、バッチ処理がロックを伴って実行されると、長時間に渡ってオンライン処理が実行できなくなり、業務に支障を来す可能性がある。これを回避するために、実際のシステム運用では、バッチ処理はオンライン入力時間帯を避けて、たとえば夜間バッチ処理や休日・連休中のバッチ処理として実行されることが多い。
このような、バッチ処理の実行時間帯に関する制約を解消するために、ロックを伴わずにバッチ処理とオンライン処理とを同時に実行する技術が知られており、たとえば特許文献1に開示される。これは、オンライン処理が実行される際に、未済のバッチ処理があるかどうかを確認し、あればオンライン処理の直前または直後にそのバッチ処理を実行するというものである。
また、コンピュータが扱うデータベースにおいて、更新処理に要する時間によって更新時刻が前後する場合があるため、厳密な時刻でデータを入れ替えるような更新処理、たとえばある年の4月1日00:00:00の瞬間にデータが更新されるものの実現は困難である。このような更新処理を実現するためには、一般的に、データと関連して、そのデータが有効となる時間に関する情報を記録するデータベース、すなわち時制データベース(トランザクション時間データベース)が使用される。このような時制データベースは、非特許文献1に説明される。
特許第3508154号公報 天笠俊之、有次正義、金森吉成、「時間的に変化するデータに対する索引技術」、情報処理、社団法人情報処理学会、2001年10月、第42巻、第10号、p.972〜p.979
しかしながら、従来の技術では、時制データベースにおいて、バッチ処理とオンライン処理を同時に実行することはできなかった。
特許文献1の技術は、時制データベースのように厳密な時刻でデータを更新するものには適用できない。特許文献1の技術では、バッチ処理の完了時刻がオンライン処理の発生時刻に依存するため、現在まだ有効となっていない将来のバッチ処理済データが、オンライン処理が発生した時点で有効となってしまい、データ内容に不整合が発生する可能性があるからである。
この発明は、このような問題点を解決するためになされたものであり、時制データベースにおいて、バッチ処理とオンライン処理とを同時に実行する機能を有する、データベースシステムを提供することを目的とする。
上述の問題点を解決するため、この発明に係るデータベースシステムは、データベースに関する処理を行うデータベースシステムであって、データベースは、複数のレコードを含み、データベースは、レコードが、時間の経過につれて無効から有効となるデータと、そのデータが有効である有効時区間を表す情報と、検索に用いられるキーとを有する、時制データベースであり、処理の少なくとも一部は第一種の処理であり、第一種の処理は、第一種の処理の対象となるレコードに関連して、第一種の処理のそれぞれに関連付けられた時刻において、有効なデータを変更するものであり、データベースシステムは、第一種の処理に関連して、第一種の処理の対象となるレコードのキーと同一のキーを有する追加レコードを作成して時制データベースに追加する、第一更新部と、キーを含む検索条件を受け取るとともに、この検索条件に適合するレコードを時制データベースから抽出する、検索部とを備え、第一更新部は、追加レコードの有効時区間の開始時刻を、第一種の処理に関連付けられた時刻に基づいて指定し、それによって、追加レコードの有効時区間を、第一種の処理の対象となるレコードの有効時区間と少なくとも一部が重複するものとし、検索部は、検索条件に適合するレコードが複数存在する場合、所定の基準に基づいて一つのレコードを選択するものである。
データの少なくとも一部は、さらに、時間の経過につれて有効から無効となるものであり、第一種の処理に関連するレコードの有効時区間の終了時刻が、第一種の処理に関連付けられた時刻に基づいて指定されてもよい。
第一種の処理はバッチ処理であり、第一更新部は、対象となるレコードに対する排他制御を行わないものであってもよい。
所定の基準は有効時区間に関連してもよい。
所定の基準は、有効時区間について最も新しい開始時刻を有するレコードを選択する、第一の選択を行うという基準を含んでもよい。
所定の基準は、有効時区間について、最も新しい時間帯に属する開始時刻を有するレコードを選択する、第一の選択を行うという基準を含み、時間帯は、順に実行される2つの第一種の処理について、それぞれに関連付けられた時刻によって区画されてもよい。
処理の少なくとも一部は、第一種の処理とは異なる第二種の処理であり、データベースシステムは、さらに、第二種の処理に関連するレコードの、有効時区間の開始時刻を指定する、第二更新部を備えてもよい。
第二更新部は、さらに、第二種の処理に関連するレコードの、有効時区間の終了時刻を指定してもよい。
レコードは、さらに、有効時区間の開始時刻および終了時刻が、それぞれ、第一更新部および第二更新部のいずれによって指定されたものであるかを示す、開始区分および終了区分を表す情報を含み、所定の基準は、開始区分および終了区分に関連してもよい。
第二種の処理は、その処理の対象となるレコードに基づいて追加レコードを作成する処理を含むものであり、第二種の処理が、第一種の処理に関連付けられた時刻より前に実行される場合は、その第二種の処理において作成される追加レコードに対し、その第一種の処理を実行してもよい。
第二種の処理はオンライン処理であり、第二更新部は、対象となるレコードに対する排他制御を行ってもよい。
所定の基準は、さらに、第一の選択によって複数のレコードが選択された場合は、開始区分が第二更新部を示すレコードを優先して選択する、第二の選択を行ってもよい。
検索条件は、検索が実行される検索実行時刻を含み、所定の基準は、さらに、第二の選択によって複数のレコードが選択された場合は、終了時刻と、検索実行時刻とを比較し、終了時刻が検索実行時刻より新しい場合には、終了区分が第二更新部を示すか、または終了区分が第一更新部および第二更新部のいずれも示さないレコードを優先して選択する、第三の選択を行い、終了時刻が検索実行時刻より古い場合には、終了区分が第二更新部を示すレコード、終了区分が第一更新部を示すレコード、および、終了区分が第一更新部および第二更新部のいずれも示さないレコードの順に優先して選択する、第四の選択を行うという基準を含んでもよい。
複数のレコードのうち少なくとも一部のレコードは削除レコードであって、複数のレコードのうち、削除レコードと同一のキーを有するレコードはすべて無効であってもよい。
データベースシステムは、さらに、所定の基準に基づく選択において選択される可能性のないレコードの少なくとも1つを、時制データベースから削除する、削除部を備えてもよい。
この発明によれば、データベースシステムは、バッチ処理の際には、ロックをかけずに、重複する有効時区間を有するレコードを追加し、また、検索の際には、それらの間の優先順位に基づいてレコードを抽出する。このため、データベースシステムは、時制データベースにおいて、バッチ処理とオンライン処理とを同時に実行することができる。
以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態1.
図1は、本発明に係るデータベースシステムである、データベースサーバ1の構成を示す。データベースサーバ1は周知の構成を有するコンピュータであり、情報を格納する記憶手段20と、演算を行う演算手段40とを備える。記憶手段20はメモリおよびHDD(ハードディスクドライブ)を含み、演算手段40はCPU(中央処理装置)を含む。
データベースサーバ1は、さらに、入力装置であるキーボードおよびマウス、出力装置であるディスプレイおよびプリンタ、通信ネットワークに対する入力装置と出力装置とを兼ねるネットワークインタフェースを備える。
記憶手段20は、時制データベースに関連するデータを含むデータテーブル28を格納するデータ格納部26と、データテーブル28に対して実行されるバッチ処理に関するデータを格納するバッチ更新情報部22と、データテーブル28に対して実行されるオンライン処理に関するデータを格納するオンライン更新情報部24とを含む。
ここで、オンライン処理とは、データの更新を行う際にロック(排他制御)を伴う処理であり、バッチ処理とは、データの更新を行う際にロックを伴わない処理である。すなわち、あるオンライン処理によってあるデータに対する更新処理が開始された後、その更新処理が完了する前は、他のオンライン処理およびバッチ処理はそのデータの更新を行うことができないように、排他制御が実施される。一方、あるバッチ処理によってあるデータに対する更新処理が開始された後、その更新処理が完了する前であっても、オンライン処理および他のバッチ処理はそのデータの更新を行うことができる。
演算手段40は、記憶手段20に格納されるプログラム(図示せず)を実行することによって、複数の機能を実現する。すなわち、バッチ処理の実行を制御するバッチ処理部52としての機能、バッチ処理部52からの指示に応じてデータの更新を行うバッチ更新部42としての機能、オンライン処理の実行を制御するオンライン処理部54としての機能、オンライン処理部54からの指示に応じてデータの更新を行うオンライン更新部44としての機能、データテーブル28に対する検索を実行する検索部46としての機能、オペレータ等外部に対する入出力を実行する入出力部48としての機能である。
ここで、バッチ処理を第一種の処理、オンライン処理を第二種の処理とし、バッチ更新部を第一更新部、オンライン更新部を第二更新部とする。
図2は、図1のデータテーブル28の構成の例を示す。データテーブル28は複数のレコードR1およびR2を含み、各レコードR1およびR2は、それぞれ複数のフィールドを含む。この例では、データテーブル28は「住民情報」という名称を有するものであり、各住民の住所データに関する情報を含む。
キーのフィールドには、検索の際に用いられる、そのレコードの対象となる単一の概念を表す値、この例では住民を表す個人番号が格納される。なお、キーとレコードとは必ずしも一対一に対応するものではなく、後述するように、同一のキーを有する複数のレコードが存在する場合がある。
このキーが、オンライン処理によるロックの単位となる。すなわち、あるオンライン処理がキー001を有するレコードの更新中であるときは、キー001を有するレコードがすべてロックされ、後述のように、他のオンライン処理およびバッチがそのようなレコードのいずれかの更新を試みた場合には、ロックのため更新を行うことができないという旨のエラー情報が返される。
有効時区間のフィールドには、そのレコードの属性情報が実際に正当なものである期間について、その期間の開始時刻および終了時刻が格納される。現在から将来に向けて有効であるレコード、すなわち新たな変更が発生しない限り有効であるレコードについては、終了時刻は指定されない(あるいは、いわゆるnull値が指定されてもよい)。図2において「−」のみを表記することによってこれを示す。終了時刻が指定されていない場合には、終了時刻は∞、すなわちそのコンピュータが扱える最も未来の時刻であるものとして扱われる。
なお、後述するように、同一のキーを有する複数のレコードについて、有効時区間が互いに重複する場合がある。すなわち、同一のキーを有するレコードのうち、ある一時点で有効なものが複数存在する場合がある。
また、有効時区間の単位は、たとえばそのコンピュータが扱える時間の最小単位が用いられる。ただし、本明細書においては、説明の便宜上、この最小単位が1分であるものとする。
更新プログラム区分のフィールドには、そのレコードの開始時刻を指定したプログラムの種別を表す開始区分と、そのレコードの終了時刻を指定したプログラムの種別を表す終了区分とが格納される。プログラムの種別は、更新処理においてロックを伴うかどうかを表すものであり、この例ではロックを伴う場合には「オンライン」、伴わない場合には「バッチ」が指定される。
このように、レコードには、有効時区間の開始時刻および終了時刻が、それぞれ、バッチ更新部42およびオンライン更新部44のいずれによって指定されたものであるかを示す、開始区分および終了区分を表す情報を含む。
属性情報のフィールドには、そのレコードに関連してオペレータ等の業務に使用される情報が格納される。この例では、住所、学区、氏名、および、そのレコードが追加された際の理由を表す異動事由が格納される。このレコードは、時間の経過につれて有効あるいは無効となるものであり、有効時区間の開始時刻より前では無効、開始時刻以降、終了時刻以前では有効、終了時刻より後では無効である。なお、詳細は後述するが、バッチ更新部42、オンライン更新部44、バッチ処理部52、及びオンライン処理部54において作成する抽出済レコード、処理済レコード、追加レコード、満了レコード、及び再追加レコードも同様の構成である。
図3は、図1のバッチ更新情報部22に格納されるデータの構成を示す。バッチ更新情報部22には、バッチ処理部52およびバッチ更新部42によって実行される、複数のバッチ処理のそれぞれに関する情報が格納される。
バッチ番号、バッチ処理論理名、およびバッチ名称は、そのバッチ処理を識別するための値である。
更新テーブルは、図1のデータテーブル28のうち、そのバッチ処理が更新を行う対象がどれであるかを表す。
抽出時刻は、バッチ処理用に抽出されるデータが有効である時刻を表す。バッチ処理の対象となるレコードを抽出する際には、ある一時点において有効であるレコード、すなわち有効時区間にその一時点を含むレコードが特定のアルゴリズムに従って抽出される(このアルゴリズムは、検索部46の処理に関して後述する)。抽出時刻は、その一時点を表す。このため、抽出時刻より前のオンライン処理による更新は、抽出されたレコードに反映されているが、抽出時刻より後のオンライン処理による更新は、たとえそのオンライン処理が実際にバッチ処理による更新が開始される前のものであっても、抽出されたレコードには反映されていない。
更新反映時刻は、そのバッチ処理によって更新された後のデータが実際に有効となる時刻を表す。すなわち、更新前のデータに対応するレコードの有効時区間は、更新反映時刻の直前に終了し、更新後のデータに対応するレコードの有効時区間は、更新反映時刻において開始される。
以上より、あるバッチ処理の抽出時刻および更新反映時刻と、ある時刻T1との間に、抽出時刻≦T1<更新反映時刻となる関係が成り立つとき、そのバッチ処理は時刻T1において仕掛かり中であると言える。なお、実際のバッチ処理は、抽出時刻より後に開始されるが、更新反映時刻より前に処理が完了して、新規に追加するためのレコードが作成されているものとする。
図4は、図1のオンライン更新情報部24に格納されるデータの構成を示す。オンライン更新情報部24には、オンライン処理部54およびオンライン更新部44によって実行されるオンライン処理に伴うロックの情報が格納される。
テーブル名は、図1のデータテーブル28のうち、そのオンライン処理が更新を行う対象がどれであるかを表す。
ロックキー情報は、該当のデータテーブル28において、そのオンライン処理が更新を行う対象となるキーの値、すなわち図2の例では個人番号を表す。
以上のように構成されるデータベースサーバ1における処理の流れを、図5〜図9のフローチャートを用いて説明する。図5はバッチ処理部52、図6はバッチ更新部42、図7はオンライン処理部、図8はオンライン更新部44、図9は検索部46の処理の流れをそれぞれ示すものである。なお、入出力部48についてはその処理の流れを特に説明しないが、入力装置からオペレータの入力を受け取り、またオペレータに対する出力を出力装置に送る機能を有する。
図5を用いて、バッチ処理部52の処理の流れを説明する。
まず、バッチ処理部52は、実行するバッチ処理に対応するバッチ処理論理名、バッチ番号、および更新テーブルを、図3に示す構成を有する図1のバッチ更新情報部22から読み込む(ステップS11)。
次に、バッチ処理部52は、更新テーブルと、バッチ処理論理名に対応して記憶手段20にあらかじめ定義されている検索条件とを、検索部46に渡すとともに検索を指示する(ステップS12)。ここで、検索条件は、データテーブル28から特定のレコードを抽出するための条件の表現であり、たとえばSQL(structured query language)を用いて表現されるものである。また、検索条件は、検索対象とするデータテーブル28を表す条件と、どの時点において有効なレコードを検索対象とするかという検索対象時刻を表す条件とを含む。
次に、バッチ処理部52は、検索条件に従って検索部46が抽出したレコード(以下、「抽出済レコード」と称する)を、検索部46から受け取る(ステップS13)。上記のステップS12およびS13によって、当該バッチ処理の対象となるレコードがバッチ処理部52に入力されることになる。なお、ここで、データテーブル28において抽出の対象となったレコードを、以下、「抽出元レコード」と称する。
次に、バッチ処理部52は、抽出済レコードに対し、バッチ処理論理名に対応して記憶手段20にあらかじめ定義されているバッチ処理を実行する(ステップS14)。たとえば、「住所」フィールドに含まれる特定の文字列を異なる文字列で置き換える処理等が実行される。ここで、バッチ処理部52が更新し得るフィールドは、図2に示すもののうち、キーおよび属性情報のみである。有効時区間および更新プログラム区分は、バッチ処理部52によっては変更されない。
最後に、バッチ処理部52は、処理が実行されたレコード(以下、「処理済レコード」と称する)を、バッチ更新部に渡す(ステップS15)。
図6を用いて、バッチ更新部42の処理の流れを説明する。
まず、バッチ更新部42は、バッチ処理部52から処理済レコードを受け取る(ステップS21)。
次に、バッチ更新部42は、受け取った処理済レコードに基づき、データテーブル28に追加されるべきレコード(以下、「追加レコード」と称する)を作成する(ステップS22)。
この追加レコードは、次のような内容を有する。
図2に示される各フィールドのうち、キーおよび属性情報は、バッチ更新部42によっては更新されない(上述の図5のステップS14において、バッチ処理部52によって更新されている場合はある)。
有効時区間のうち開始時刻は、図3に示されるバッチ更新情報部22において当該バッチ番号に対応する更新反映時刻が指定される。また、終了時刻は指定されない。これは、このレコードが追加レコードすなわち新たに作成されたレコードであり、有効でなくなる時点がとくに指定されていないことを意味する。
更新プログラム区分のうち開始区分は、「バッチ」が指定される。これは、その追加レコードが、更新の際にロックを伴わない処理、すなわちバッチ処理によって作成されたものであることを意味する。また、終了区分は指定されない。これは、上述のように終了時刻が指定されていないため、終了時刻を指定するプログラムが存在しないことを意味する。
次に、バッチ更新部42は、データテーブル28内の抽出元レコードに基づき、抽出元レコードを置き換えるべきレコード(以下、「満了レコード」と称する)を作成する(ステップS23)。
この満了レコードは、図2に示される構成を有する抽出元レコードの、各フィールドのうち終了時刻および終了区分を、次のように変更することによって作成される。
終了時刻は、図3に示されるバッチ更新情報部22において当該バッチ番号に対応する更新反映時刻が指定される。また、終了区分は、「バッチ」が指定される。これは、その追加レコードが、更新の際にロックを伴わない処理、すなわちバッチ処理によって終了時刻を指定されたものであることを意味する。
最後に、バッチ更新部42は、作成された追加レコードおよび満了レコードを、更新対象のデータテーブル28に追加する(ステップS24)。
なお、ここで、抽出元レコードと追加レコード、または、抽出元レコードと満了レコードは、互いに重複する有効時区間を有する場合があるが、一方を不適当なものとして削除する等の処理は、ここでは行われない。これは、当該バッチ処理がロックを伴わない処理であり、また、ステップS24の実行時点では更新反映時刻に至っていないため、同一のレコードに対して同時に異なる内容の更新がかかり不整合が発生するという事態を避けるために、すべての可能性に対応するデータを残しておくことに相当する。
次に、図7を用いて、オンライン処理部54の処理の流れを説明する。
まず、オンライン処理部54は、入出力部48から検索条件を受け取る(ステップS31)。これは、たとえば、ディスプレイに表示される操作画面に対し、オペレータが検索条件の入力操作を行うことに対応する。
次に、オンライン処理部54は、受け取った検索条件を検索部46に渡し、検索を指示する(ステップS32)。
次に、オンライン処理部54は、検索部46から抽出済レコードを受け取る(ステップS33)。上記のステップS32およびS33によって、当該オンライン処理の対象となるレコードがオンライン処理部54に入力されることになる。
次に、オンライン処理部54は、入出力部48から変更内容を受け取る(ステップS34)。これは、たとえば、ディスプレイに表示される操作画面において、オペレータが抽出済レコードの内容に変更を加えることに対応する。
次に、オンライン処理部54は、受け取った変更内容に応じて抽出済レコードに変更を加え、処理済レコードを作成する(ステップS35)。ここで、オンライン処理部54が更新し得るフィールドは、図2に示すもののうち、キーおよび属性情報のみである。有効時区間および更新プログラム区分は、オンライン処理部54によっては変更されない。
次に、オンライン処理部54は、処理済レコードをオンライン更新部44に渡す(ステップS36)。
次に、オンライン処理部54は、オンライン更新部44から処理結果の通知を受け取る(ステップS37)。
最後に、オンライン処理部54は、受け取った処理結果の通知を入出力部48に渡す(ステップS38)。これは、たとえば処理が正常終了した旨が画面に表示されることに対応する。
次に、図8を用いて、オンライン更新部44の処理の流れを説明する。
まず、オンライン更新部44は、オンライン処理部54から処理済レコードを受け取る(ステップS41)。
次に、オンライン更新部44は、後続処理のために、検索実行時刻として、現在時刻を保存する(ステップS42)。ここではある変数Tに現在時刻を代入することによって保存を行う。
次に、オンライン更新部44は、データテーブル28のレコードのうち、処理済レコードに対応する抽出元レコードが有するキーをロックする(ステップS43)。このロックは、図4に示す構成を有するオンライン更新情報部24に、処理対象のデータテーブル28の名称と、そのデータテーブル28においてロックされるキーとを組み合わせて格納することによって行われる。
ここで、該当するデータテーブル28および該当するキーの組合せがオンライン更新情報部24に格納されていない場合、すなわち該当レコードがロックされていない場合には、ロックは正常終了となる。逆に、該当する組合せがすでにオンライン更新情報部24に格納されている場合、すなわち該当レコードがすでにロックされている場合には、ロックは異常終了となる。または、異なる実施形態として、異常終了せずに、すでにかかっているロックが解除されるまで待ち、その後ロックを行って正常終了とするものであってもよい。
次に、オンライン更新部44は、ステップS43におけるロックが正常終了したかどうかを判定する(ステップS44)。正常終了でない場合、すなわち該当レコードが他のオンライン処理によってすでにロックされている場合には、オンライン更新部44はオンライン処理部54に異常終了の結果を通知し(ステップS45)、処理を終了する。
ロックが正常終了した場合には、オンライン更新部44は、抽出元レコードに基づき、データテーブル28の抽出元レコードを置き換えるべき満了レコードを作成する(ステップS46)。
この満了レコードは、図2に示される構成を有する抽出元レコードの、各フィールドのうち終了時刻および終了区分を、次のように変更することによって作成される。
終了時刻は、ステップS42における変数T、すなわち保存された検索実行時刻が指定される。これは、処理済レコードが、変数Tの時刻まで有効であるが、このオンライン処理によって更新された結果、その時刻より後では有効ではなくなることを意味する。また、終了区分には「オンライン」が指定される。これは、その満了レコードが、更新の際にロックを伴う処理、すなわちオンライン処理によって満了することとなったものであることを意味する。
次に、オンライン更新部44は、上述のように作成された満了レコードで、データテーブル28内の抽出元レコードを置き換えることにより更新する(ステップS47)。
ステップS47の後、オンライン更新部44は、以下のステップS48〜S55からなるレコード追加処理を行う。
レコード追加処理において、まず、オンライン更新部44は、処理済レコードに基づき、追加レコードを作成する(ステップS48)。
この追加レコードは、次のような内容を有する。
図2に示される各フィールドのうち、キーおよび属性情報は、オンライン更新部44によっては更新されない(上述の図7のステップS35において、オンライン処理部54によって更新されている場合はある)。
有効時区間のうち開始時刻は、ステップS42における変数T、すなわち保存された検索実行時刻が指定される。また、終了時刻は指定されない。これは、このレコードが追加レコードすなわち新たに作成されたレコードであり、有効でなくなる時点がとくに指定されていないことを意味する。
更新プログラム区分のうち開始区分は、「オンライン」が指定される。これは、その追加レコードが、更新の際にロックを伴う処理、すなわちオンライン処理によって作成されたものであることを意味する。また、終了区分は指定されない。これは、上述のように終了時刻が指定されていないため、終了時刻を指定するプログラムが存在しないことを意味する。
次に、オンライン更新部44は、バッチ更新情報部22を検索し、処理対象のデータテーブル28について仕掛かり中のバッチ処理に対応するレコードを抽出する(ステップS49)。これは、図3に示す構成を有するバッチ更新情報部22のレコードのうち、更新テーブルの値が処理対象のテーブルの名称と一致し、かつ、抽出時刻≦変数T<更新反映時刻となるレコードを抽出することによって行われる。
次に、オンライン更新部44は、ステップS49の結果として抽出されたレコードがあるかどうかを判定する(ステップS50)。抽出されたレコードがない場合、すなわちオンライン処理の対象となるデータテーブル28についての仕掛かりバッチ処理がない場合には、オンライン更新部44は、追加レコードを更新対象のデータテーブル28に追加し(ステップS51)、後述のステップS56へと処理を進める。
抽出されたレコードがある場合、すなわちオンライン処理の対象となるデータテーブル28についての仕掛かりバッチ処理がある場合には、オンライン更新部44は、追加レコードに対して該当仕掛かりバッチ処理を実施する(ステップS52)。このバッチ処理は、図5におけるステップS14と同様に、追加レコードに対し、バッチ処理論理名に対応してあらかじめ定義されているバッチ処理と同等の機能を持つサブルーチンを実行するものである。なお、この処理の内容はバッチ処理であるが、ステップS43において該当レコードがロックされた後での処理であり、後述のように更新プログラム区分上はオンライン処理として扱われる。
また、このステップS52は、オンライン更新部44がバッチ処理部52をサブルーチンとして呼び出した後、バッチ処理部52によって実行されるものであってもよい。
次に、オンライン更新部44は、追加レコードの終了時刻および終了区分を、次のように変更する(ステップS53)。
終了時刻は、図3に示されるバッチ更新情報部22において当該バッチ番号に対応する更新反映時刻が指定される。また、終了区分は、「オンライン」が指定される。これは、その追加レコードが、更新の際にロックを伴う処理、すなわちオンライン処理によって終了時刻を指定されたものであることを意味する。
次に、オンライン更新部44は、バッチ処理が実施された処理済追加レコードに基づき、データテーブル28にさらに追加されるべきレコード(以下、追加レコードとの区別のため「再追加レコード」と称する)を作成する(ステップS54)。
この再追加レコードは、次のような内容を有する。
図2に示される各フィールドのうち、キーおよび属性情報は、バッチ処理の内容に応じて、オンライン更新部44によって更新される。
有効時区間のうち開始時刻は、図3に示されるバッチ更新情報部22において当該バッチ番号に対応する更新反映時刻が指定される。また、終了時刻は指定されない。これは、このレコードが追加レコードすなわち新たに作成されたレコードであり、有効でなくなる時点がとくに指定されていないことを意味する。
更新プログラム区分のうち開始区分は、「オンライン」が指定される。これは、その追加レコードが、更新の際にロックを伴う処理、すなわちオンライン処理によって作成されたものであることを意味する。また、終了区分は指定されない。これは、上述のように終了時刻が指定されていないため、終了時刻を指定するプログラムが存在しないことを意味する。
次に、オンライン更新部44は、作成された追加レコードおよび再追加レコードを、更新対象のデータテーブル28に追加する(ステップS55)。
ステップS51またはステップS55の実行が終了することによって、ステップS48〜ステップS55からなるレコード追加処理が終了する。
この後、オンライン更新部44は、ステップS43において実施された抽出元レコードのキーのロックを解除する(ステップS56)。この解除は、図4に示す構成を有するオンライン更新情報部24から、処理対象のデータテーブル28の名称と、そのデータテーブル28においてロックされるキーとの組合せを削除することによって行われる。
最後に、オンライン更新部44は、オンライン処理部54に正常終了の結果を通知し(ステップS57)、処理を終了する。
次に、図9を用いて、検索部46の処理の流れを説明する。
まず、検索部46は検索条件を受け取る(ステップS71)。ここで、検索の指示および検索条件は、図5のステップS12においてバッチ処理部52から渡される場合もあり、また、図7のステップS32においてオンライン処理部54から渡される場合もある。また、図5のステップS12に関連して上述したように、検索条件は、検索対象とするデータテーブル28を表す条件と、検索対象時刻を表す条件とを含む。
次に、検索部46は、受け取った検索条件によって検索対象となるデータテーブル28のレコードのうち、検索対象時刻において有効なものを抽出する(ステップS72)。ここで、有効なレコードとは、そのレコードの有効時区間の開始時刻および終了時刻と、検索対象時刻との間に、開始時刻≦検索対象時刻<終了時刻という関係が成り立つものである。
次に、検索部46は、有効なレコードのうち、その他の検索条件に適合するものを抽出する(ステップS73)。これは、たとえばSQLによって表現される、キーおよび属性情報に関する条件と、各レコードのキーおよび属性情報とを比較することによって行われる。
次に、検索部46は、抽出されたレコードのうち、同一のキーを有するレコードが複数あるかどうかを判定する(ステップS74)。
同一のキーを有するレコードがただ一つしかない場合、検索部46は処理を後述のステップS78に進める。なお、図9のフローチャートには検索条件に適合するレコードが存在しなかった場合の処理はとくに明示されないが、この場合でも「同一のキーを有するレコードが複数ある」という条件は満たさないものとして、図9のフローチャートに従って処理を行ってもよい。この場合、抽出済レコードは実際には空データであってもよい。
同一のキーを有するレコードが複数ある場合、検索部46は、それらのレコードのうち、有効時区間の開始時刻が最新であるもの、すなわち時刻の値が最大であるものを選択する(ステップS75)。これを第一の選択とする。ここで、開始時刻が最新であるレコードが複数存在する場合には、該当の最新レコードをすべて選択する。例は図15を用いて後述するが、バッチ処理の対象となるレコードと、対応する満了レコードとが存在する場合が、このようなケースに該当する。
次に、検索部46は、選択されたレコードのうち、同一のキーを有するレコードが複数あるかどうかを判定する(ステップS76)。同一のキーを有するレコードがただ一つしかない場合、検索部46は処理を後述のステップS78に進める。
同一のキーを有するレコードが複数ある場合、検索部46は、それらのレコードの更新プログラム区分の開始区分および終了区分に応じてレコード間の優先順位を決定し、最も優先順位の高いレコードをただ一つ選択する(ステップS77)。
図10は、このステップS77における選択の際の、優先順位の決定方法を示す。決定方法は、現在仕掛かり中のバッチ処理があるかどうかによって異なる。仕掛かり中のバッチ処理がある場合、すなわち図3に示すバッチ更新情報部のレコードに、抽出時刻≦検索実行時刻<更新反映時刻となるものが存在する場合は、優先順位は図10の表(a)に従って決定される。そうでない場合は、優先順位は図10の表(b)表に従って決定される。
なお、ここで、複数のバッチ処理が同時に仕掛かり中となることはないものとする。
表(a)において、開始区分がオンラインであるレコードは、常に、開始区分がバッチであるレコードよりも優先される。これを第二の選択とする。また、開始区分が同一である場合、終了区分がオンラインまたは指定なしのレコードは、終了区分がバッチであるレコードよりも優先される。これを第三の選択とする。これは、バッチ処理が仕掛かり中であるため、バッチによって終了時刻を指定されたレコードの優先順位が低くなることを意味する。
なお、同一の開始区分を有するレコードのうち、終了区分がオンラインであるレコードと、終了区分が指定されていないレコードとで優先順位が等しくなっているが(優先順位1および3の行)、これらのレコードが同時に存在することはない。
また、表(b)において、表(a)と同様に第二の選択として、開始区分がオンラインであるレコードは、常に、開始区分がバッチであるレコードよりも優先される。また、表(a)と異なり、開始区分が同一である場合、終了区分がオンラインであるレコードが最優先であり、次に終了区分がバッチであるレコードが優先され、指定なしのレコードは優先順位が最低となる。これを第四の選択とする。これは、ロックによって整合性が保証されるオンライン処理の結果が最優先となり、処理が完了しているバッチ処理の結果がその次に優先されることを意味する。
このように、第二の選択の結果は、表(a)(b)いずれによっても同一である。第二の選択によってもなお複数のレコードが選択される場合は、更新反映時刻すなわちバッチ処理の終了時刻と、検索実行時刻とが比較され、これによって表(a)を基準とするか表(b)を基準とするかが決定される。
終了時刻が検索実行時刻より新しい場合には、第三の選択によって、表(a)に従って、終了区分がオンラインであるか、または終了区分が指定されていないレコードが優先して選択される。
終了時刻が検索実行時刻より古い場合には、第四の選択によって、表(b)に従って、終了区分がオンラインであるレコード、終了区分がバッチであるレコード、および、終了区分が指定されていないレコードの順に優先して選択される。
このようにして、ステップS74、S76、あるいはS77における処理の結果、ただ一つのレコードが選択される。検索部46は、この選択されたレコードを抽出済レコードとして、検索の指示元であるバッチ処理部52またはオンライン処理部54に渡す(ステップS78)。
以上に説明されるデータベースサーバ1の構成および動作をまとめると、次のようになる。
データベースサーバ1が管理する時制データベースのデータテーブル28には、同一のキーを有する複数のレコードのうち、互いに重複する有効時区間を有するものが含まれる。
そして、データベースサーバ1は、データテーブル28のレコード毎に、データを更新するプログラムの種別を、開始区分および終了区分として関連付ける。レコードの検索を行う際に、同一のキーを有する有効なレコードが複数存在する場合には、仕掛かり中のバッチ処理が存在するかどうかと、有効時区間の開始時刻と、開始区分および終了区分とに基づいてレコード間の優先順位を決定し、最も優先順位の高いレコードを選択する。
また、データベースサーバ1は、バッチ処理を行う際には、ロックを実施して更新前のデータを更新後のデータで置き換えるという処理ではなく、ロックを実施せずに、更新前のデータを含む抽出元レコードはそのまま残しておき、更新後のデータを含む追加レコードをデータテーブル28に単純に追加するという処理を行う。
また、データベースサーバ1は、オンライン処理を行う際、抽出元レコードをロックするとともに、仕掛かり中のバッチ処理があるかどうかを参照する。仕掛かり中のバッチ処理がない場合には、従来の時制データベースと同様の処理を行う。すなわち、更新前のデータを含む満了レコードと、更新後のデータを含む追加レコードとを作成し、これらをデータテーブル28に追加してロックを解除する。
仕掛かり中のバッチ処理がある場合には、更新前のデータを含む満了レコードと、オンライン更新後バッチ更新前のデータを含む追加レコードと、バッチ更新後のデータを含む再追加レコードとを作成し、これらをデータテーブル28に追加してロックを解除する。
次に、データベースサーバ1において、オンライン処理およびバッチ処理がレコードを更新する際の具体例を以下に説明する。
例となるデータテーブル28は、図2に示されるものとする。これは住民票に対応するものであってもよい。このデータテーブル28に対して、バッチ処理として住居表示による更新が加えられる場合を想定する。
図12および図14は、処理の各段階におけるデータテーブル28の内容を示す。
ここで、住居表示とは、建物すべてに住居番号を付番する処理のことである。一般的に、住所は、町名と土地の地番(不動産地番)で表されるが、新しい市街地の形成や道路の新設等によって、建物の所在が容易に確認しにくくなる場合がある。これに対応して、住所をわかりやすく表すために、「住居表示に関する法律」に基づいて行われ、対象となる地区(住居表示区域)にある建物すべてに住居番号を付番し、この住居番号をもって住所を表すのが住居表示である。
この住居表示を実施するために大量の住民票の住所が変更になり、この処理はバッチ処理として行なわれるものとする。また、すべてのレコードを処理するには長時間が必要となるため、図3に示すように、抽出時刻を2005年3月27日の23:00とし、更新反映時刻を2005年4月1日0:00とする。バッチ処理の仕掛かり中においても、住民の異動(転入、転居、転出等)によってオンライン処理による更新は発生する。
図11、図13、および図15は、説明の便宜のため、図2、図12、および図14にそれぞれ示すデータテーブル28の各レコードの、開始時刻および終了時刻、開始区分および終了区分を模式的に示すものである。各レコードの有効時区間を、時間に沿って伸びるバーとして示す。有効時区間の始端および終端における「O」および「B」の表記は、開始区分および終了区分がそれぞれオンラインおよびバッチであることを表す。また、それぞれのレコードについて、右側にキー(個人番号)および氏名が示されている。
まず、2005年3月27日23:00の直後に、バッチ処理部52が図5のフローチャートに従い、住居表示のためのバッチ処理に関するデータを読み込み、検索部46に検索を指示する。ここではすべてのレコードを対象とするものとする。
検索部46は、図9に示すように、ステップS71でこの指示を受け取る。ステップS72で、図2のレコードR1およびR2はいずれも有効であり、またステップS73で、レコードR1およびR2はいずれも検索条件に適合すると判定される。同一キーのレコードが複数存在するものはないので、処理はステップS74からステップS78へと進み、レコードR1およびR2がバッチ処理部52に渡される。バッチ処理部52は、図5のステップS13でレコードR1およびR2を受け取る。
ここで、データが大量であるためバッチ処理部52の処理に時間がかかり、3月28日になってもステップS14が実行されていないとする。
3月28日の13:30に、オンライン処理により、三菱太郎氏(キー:001)の転居に伴う住所および学区の変更が入力されるとする。
図12および図13は、このオンライン処理が完了した時点、すなわち3月28日の13:00直後におけるデータテーブル28の状態を示す。
この処理において、まずオンライン処理部54が、図7のステップS31でキーが001であるという検索条件を受け取り、ステップS32でこれを検索部46に渡す。検索部46は上記と同様にして、この条件に従って検索を行い、レコードR1を抽出し、これをオンライン処理部54に渡す。オンライン処理部54はこれから処理済レコードを作成し、これをオンライン更新部44に渡す。
オンライン更新部44は、抽出元レコードR1から満了レコードR1’を作成し、図8のステップS47で抽出元レコードR1を満了レコードR1’で置き換える。さらに、処理済レコードから追加レコードR3を作成する。ここで、バッチ更新情報部22(図3)が参照され、住居表示のバッチ処理が仕掛かり中であると判定されるため、追加レコードR3の終了時刻および終了区分が指定され、さらに処理済レコードから再追加レコードR4が作成される。ステップS55で追加レコードR3および再追加レコードR4がデータテーブル28に追加される。
ここで、満了レコードR1’は転居前の住所を含み、追加レコードR3は転居後かつ住居表示前の住所を含み、再追加レコードR4は住居表示後の住所を含む。
以上、図12および図13に示されるように、オンライン処理による更新の後では、その処理で更新または追加されたレコード(この場合はレコードR1’、R3、およびR4)の有効時区間は互いに重複しない。
その後、住居表示用のバッチ処理が進行して図5のステップS14が実行され、上記で抽出されたレコードR1およびR2に対して住居表示処理がなされる。
図14および図15は、このバッチ処理が完了した時点におけるデータテーブル28の状態を示す。
バッチ処理部52は、図5のステップS14でレコードR1およびR2に対してバッチ処理を行った後、すなわち住居表示のために住所を変更した後、これらをステップS15でバッチ更新部42に渡す。
バッチ更新部42は、ステップS21で処理済レコードを受け取る。ステップS22で、レコードR1に対応する処理済レコードから追加レコードR6が、またレコードR2に対応する処理済レコードから追加レコードR8が、それぞれ作成される。
さらに、ステップS23で、抽出元レコードであるレコードR1から満了レコードR5が、また同様にレコードR2から満了レコードR7が作成される。
このように作成されたレコードR5〜R8は、ステップS24でデータテーブル28に追加される。
ここで、満了レコードR5は転居前の住所を含み、追加レコードR6は転居前の住所に対して住居表示処理が行われたものを含む。すなわち、少なくとも三菱太郎氏の転居以降、レコードR5およびR6は正しくない内容を含むことになる。
また、満了レコードR7は住居表示前の住所を含み、追加レコードR8は住居表示後の住所を含む。
以上、図14および図15に示されるように、バッチ処理による更新の後では、その処理で追加されたレコード(この場合は、レコードR1に対してレコードR5およびR6、レコードR2に対してレコードR7およびR8)の有効時区間は互いに重複する。
ここで、3月29日の10:00に、オンライン処理によって、三菱太郎氏(キー:001)および鎌倉次郎氏のレコード(キー:002)が検索されたとする。以下、オンライン処理部54およびオンライン更新部44の処理は説明を省略し、検索部46の処理のみ説明する。
まず、三菱太郎氏(キー:001)に対する処理を説明する。検索部46は、上述の3月28日13:30のオンライン処理と同様にして、図9のステップS71でキーが001であるという検索条件を受け取る。
ステップS72で、当該時刻において有効なレコードとして、図15に示すように、キー001を有するレコードR3およびR5と、キー002を有するレコードR2およびR7とが抽出される。ステップS73で、これらのレコードのうちから、検索条件に適合するキー001を有するレコードR3およびR5のみが抽出される。
ステップS74で同一のキー001を有するレコードが複数あるので、処理はステップS75に進み、開始時刻が最新であるレコードR3が優先されて選択される。ここにおいて選択されるレコードはレコードR3のみとなるので、処理はステップS76からS78へと進み、レコードR3が抽出済レコードとなる。このようにして、転居前の正しくない内容を含むレコードR5の抽出は避けられる。
次に、鎌倉次郎氏(キー:002)に対する処理を説明する。検索部46は、上記と同様に、ステップS71でキーが002であるという検索条件を受け取る。
ステップS72で、上記と同様にレコードR2、R3、R5、およびR7が抽出される。ステップS73で、これらのレコードのうちから、検索条件に適合するキー002を有するレコードR2およびR7のみが抽出される。
ステップS74で同一のキー002を有するレコードが複数あるので、処理はステップS75に進む。レコードR2およびR7の開始時刻は等しいので、開始時刻が最新のレコードとしてこれらの両方が選択され、処理はステップS77へと進む。ステップS77では、住居表示のバッチ処理が仕掛かり中なので、図10の表(a)によって優先順位が決定され、レコードR2の優先順位は1となり、レコードR7の優先順位は2となる。この結果、レコードR2が選択され、これが抽出済レコードとなる。このようにして、更新反映時刻前の内容を含むレコードR7の抽出は避けられる。
なお、この例はバッチ処理の仕掛かり中に検索を行った場合のものである。バッチ処理の仕掛かり中でない場合の例として、たとえば4月2日以降に、過去データとしての3月29日10:00時点のレコードの検索を行った場合は、図10の表(b)が使用されるので、レコードR2の優先順位は3となり、レコードR7の優先順位は2となる。この結果、仕掛かり中の場合とは異なり、レコードR7、すなわちすでに完了したバッチ処理による終了区分が指定されたものが選択されることになる。
また、図示しないが、たとえば4月2日以降に、その時点で有効なデータの検索を行った場合、キー001に対しては開始区分がオンラインであるレコードR4が選択され、転居前の正しくない情報を含むレコードR6の抽出は避けられる。また、キー002に対しては開始時刻が最新であるレコードR8が選択され、住居表示が行われていないレコードR2の抽出は避けられる。
以上説明されるように、本発明に係るデータベースサーバ1は、バッチ処理の際には、ロックをかけて既存のレコードを更新する代わりに、ロックをかけずに既存のレコードと同一のキーおよび重複する有効時区間を有するレコードを追加する。ここで、バッチ処理はロックを伴わないので、これが仕掛かり中であっても、ロックを伴うオンライン処理を並列して実行することができる。
そして、検索の際に、同一のキーを有する有効なレコードが複数存在する場合は、それらのレコードの間の優先順位に基づいて抽出するレコードを選択することで、その時点で不適切なデータを含むレコードが抽出されることを防ぎ、データの整合性を保持する。
このようにして、データベースサーバ1は、時制データベースにおいて、バッチ処理とオンライン処理とを同時に実行することができる。
上述の実施の形態1において、データベースサーバ1は、データベースシステムの全体を含む。すなわち、バッチ更新情報部22、オンライン更新情報部24、データ格納部26、バッチ更新部42、オンライン更新部44、検索部46、入出力部48、バッチ処理部52、および、オンライン処理部54は、すべて単一のコンピュータに含まれる。
これとは異なる実施形態として、これらが複数のコンピュータに分散して設けられてもよい。たとえば、バッチ処理部52とオンライン処理部54とがそれぞれ独立したコンピュータに設けられてもよい。
また、上述の実施の形態1において、データテーブル28は、各レコードについて、有効時区間の終了時刻を含まないものであってもよい。すなわち、キーおよび属性情報、開始時刻、開始区分、および終了区分のみを含むものであってもよい。この場合、終了時刻は、すべてのレコードについて同一であるとして扱われてもよい。こうすることにより、扱うべきフィールド数およびデータ量を削減することができる。
なお、優先順位の決定には終了時刻は用いられていないため、この場合であっても実施の形態1と同様の処理を適用することができる。
また、上述の実施の形態1において、転出等によって個人情報が削除される場合には、たとえば対応するレコードの氏名および住所を空白とすることによって示される。これとは異なる実施形態として、特定のキーに対応するデータの削除を示す削除レコードが、追加レコードあるいは再追加レコードの代わりに追加されるものであってもよい。こうすることにより、削除されたデータをより容易かつ明確に区別することができる。
また、上述の実施の形態1においては、既存レコードの更新および新規レコードの追加は行われるが、不要となった既存レコードの削除は行われない。これとは異なる実施形態として、データベースサーバ1は、一定の条件を満たすレコードを、不要と判断してデータテーブル28から削除する、削除部としての機能を有してもよい。この削除部は、たとえばオンライン更新部44に含まれるものであってもよく、その他の構成要素に含まれるものであってもよく、また独立した構成要素であってもよい。データを不要と判断する条件としては、検索の際に選択される可能性のないレコード、すなわち常に優先順位が2番目以降となるレコードが該当するような条件が用いられる。この削除は定期的に行われてもよく、外部からの指示に応じて行われてもよい。なお、この削除は、レコードを無効とする処理とは異なり、そのレコード自体を実際にデータテーブル28から抹消するものである。
このようにすることにより、不要なレコードが削除されるので、データ格納部26の記憶容量が節約できる。また、有効なレコードの数が少なくなるので、レコード間の優先順位を決定するために要求される検索部46の処理能力を小さくすることができる。
実施の形態2.
実施の形態2は、上述の実施の形態1において、図8のステップS50における分岐条件を変更し、かつ、図9のステップS75における選択に用いられる基準を変更するものである。
実施の形態1では、図8のステップS50において、仕掛かりバッチ処理の有無のみが判定されるが、実施の形態2では、仕掛かりバッチ処理の有無に加え、追加レコードがその仕掛かりバッチ処理の対象となるかどうかが判定される。仕掛かりバッチ処理が存在し、かつ追加レコードがその対象となる場合のみ処理はステップS52に進み、そうでない場合はステップS51に進む。
また、実施の形態1では、図9のステップS75において、レコードの開始時刻が基準として用いられるが、実施の形態2では、開始時刻そのものではなく、開始時刻が属する時間帯が基準として用いられる。この時間帯は、各バッチ処理の更新反映時刻によって区画される。すなわち、(あるバッチ処理の更新反映時刻)<(レコードXの開始時刻)≦(次のバッチ処理の更新反映時刻)となる条件に適合するレコードXは、ステップS75での選択においてはすべて等価なものとして扱われることになる。これが実施の形態2における第一の選択となる。
その他の部分については、実施の形態1と同様であるので、説明を省略する。
図16および図17は、実施の形態2における処理の流れを説明する図である。なお、ここでは、実施の形態1の図11、図13、および図15と同様に、各レコードの開始時刻、終了時刻、開始区分、終了区分のみを示す。
図16に示すように、あるバッチ処理Aの更新反映時刻TAより後に、レコードX1に対してバッチ処理Bが実行され、満了レコードX2および追加レコードX3が追加されている。
図17は、バッチ処理Bの更新反映時刻TBより前の時刻TCに、レコードX1に対するオンライン処理Cが発生した場合の処理結果を示す。図8のステップS48で、レコードX1に対応する満了レコードX1’および追加レコードX4が作成される。ここで、オンライン処理Cによって変更された結果として、追加レコードX4がバッチ処理Bの処理対象から外れる場合を考える。ステップS50で、仕掛かりバッチ処理としてバッチ処理Bが存在するが、追加レコードX4はその対象ではないので、処理はステップS51に進み、再追加レコードは作成されない。
なお、このような状況が発生する具体例としては、住居表示用バッチ処理の対象であった個人が、レコード抽出時刻の後、更新反映時刻の前に、住居表示対象外の区域に転居した場合等が考えられる。このような場合、時刻TC以降の正しいデータを含むレコードは、レコードX3ではなくレコードX4となる。
ここで、時刻TBより後に検索が実行されるとする。有効なレコードはレコードX3およびX4であるが、(バッチ処理Aの更新反映時刻TA)<(そのレコードの開始時刻)≦(バッチ処理Bの更新反映時刻TB)という不等式は、レコードX3およびX4の両方について成立するため、ステップS75の選択では、レコードX3およびX4は等価であると判定され、両方が選択される。その後、ステップS77で、図10の表(b)に基づき、正しいデータを含むレコードX4が優先されて選択される。
このように、実施の形態2では、レコード間の優先順位を決定する際の基準として、レコードの開始時刻ではなく、開始時刻が属する時間帯を基準とする。このため、バッチ処理が仕掛かり中となっているレコードが、オンライン処理によって当該バッチ処理の対象外となる場合が発生し得るようなデータテーブル28に対しても、データの整合性を保持することができる。
なお、本明細書において、「オンライン処理」および「バッチ処理」という用語は、必ずしも一般的な意味を有するものではなく、それぞれ、ロックを伴う処理、およびロックを伴わない処理として解釈される。すなわち、なんらかの定義において「オンライン処理」と呼び得る処理であっても、ロックを伴わずに実行される処理は、本明細書におけるバッチ処理として解釈される。また逆も同様である。
本発明の実施の形態1に係るデータベースサーバ1を含む構成を示す図である。 図1のデータテーブル28の構成を示す図である。 図1のバッチ更新情報部22に格納されるデータの構成を示す図である。 図1のオンライン更新情報部24に格納されるデータの構成を示す図である。 図1のバッチ処理部52の処理の流れを示すフローチャートである。 図1のバッチ更新部42の処理の流れを示すフローチャートである。 図1のオンライン処理部54の処理の流れを示すフローチャートである。 図1のオンライン更新部44の処理の流れを示すフローチャートである。 図1の検索部46の処理の流れを示すフローチャートである。 図9のステップS77における選択の際の、優先順位の決定方法を示す図である。 図2の各レコードを模式的に示す図である。 図1のデータテーブル28の、処理の一段階における内容を示す。 図12の各レコードを模式的に示す図である。 図1のデータテーブル28の、処理の一段階における内容を示す。 図14の各レコードを模式的に示す図である。 本発明の実施の形態2に係るデータベースサーバの処理の流れを説明する図である。 本発明の実施の形態2に係るデータベースサーバの処理の流れを説明する図である。
符号の説明
1 データベースサーバ(データベースシステム)、28 データテーブル(データベース)、42 バッチ更新部(第一更新部)、44 オンライン更新部(第二更新部)、46 検索部、R1〜R8、R1’ レコード(R3、R6、R8 追加レコード)、X1〜X4、X1’ レコード(X3、X4 追加レコード)。

Claims (15)

  1. データベースに関する処理を行うデータベースシステムであって、
    前記データベースは、複数のレコードを含み、
    前記データベースは、前記レコードが、時間の経過につれて無効から有効となるデータと、そのデータが有効である有効時区間を表す情報と、検索に用いられるキーとを有する、時制データベースであり、
    前記処理の少なくとも一部は第一種の処理であり、
    前記第一種の処理は、前記第一種の処理の対象となるレコードに関連して、前記第一種の処理のそれぞれに関連付けられた時刻において、有効な前記データを変更するものであり、
    前記データベースシステムは、
    前記第一種の処理に関連して、前記第一種の処理の対象となるレコードの前記キーと同一のキーを有する追加レコードを作成して前記時制データベースに追加する、第一更新部と、
    前記キーを含む検索条件を受け取るとともに、この検索条件に適合するレコードを前記時制データベースから抽出する、検索部と
    を備え、
    前記第一更新部は、前記追加レコードの有効時区間の開始時刻を、前記第一種の処理に関連付けられた前記時刻に基づいて指定し、それによって、前記追加レコードの有効時区間を、前記第一種の処理の対象となるレコードの有効時区間と少なくとも一部が重複するものとし、
    前記検索部は、前記検索条件に適合するレコードが複数存在する場合、所定の基準に基づいて一つのレコードを選択する
    データベースシステム。
  2. 前記データの少なくとも一部は、さらに、時間の経過につれて有効から無効となるものであり、
    前記第一種の処理に関連するレコードの有効時区間の終了時刻が、前記第一種の処理に関連付けられた前記時刻に基づいて指定される
    請求項1に記載のデータベースシステム。
  3. 前記第一種の処理はバッチ処理であり、
    前記第一更新部は、前記対象となるレコードに対する排他制御を行わない
    請求項1または2に記載のデータベースシステム。
  4. 前記所定の基準は前記有効時区間に関連する、請求項1〜3のいずれか一項に記載のデータベースシステム。
  5. 前記所定の基準は、前記有効時区間について最も新しい開始時刻を有するレコードを選択する、第一の選択を行うという基準を含む、請求項4に記載のデータベースシステム。
  6. 前記所定の基準は、前記有効時区間について、最も新しい時間帯に属する開始時刻を有するレコードを選択する、第一の選択を行うという基準を含み、
    前記時間帯は、順に実行される2つの前記第一種の処理について、それぞれに関連付けられた前記時刻によって区画されるものである
    請求項4に記載のデータベースシステム。
  7. 前記処理の少なくとも一部は、前記第一種の処理とは異なる第二種の処理であり、
    前記データベースシステムは、さらに、前記第二種の処理に関連するレコードの、前記有効時区間の開始時刻を指定する、第二更新部を備える
    請求項1〜6のいずれか一項に記載のデータベースシステム。
  8. 前記第二更新部は、さらに、前記第二種の処理に関連するレコードの、前記有効時区間の終了時刻を指定する、請求項2に記載のデータベースシステムであって、請求項7に記載のデータベースシステム。
  9. 前記レコードは、さらに、前記有効時区間の開始時刻および終了時刻が、それぞれ、前記第一更新部および前記第二更新部のいずれによって指定されたものであるかを示す、開始区分および終了区分を表す情報を含み、
    前記所定の基準は、前記開始区分および前記終了区分に関連する
    請求項8に記載のデータベースシステム。
  10. 前記第二種の処理は、その処理の対象となるレコードに基づいて追加レコードを作成する処理を含むものであり、
    前記第二種の処理が、前記第一種の処理に関連付けられた時刻より前に実行される場合は、その第二種の処理において作成される前記追加レコードに対し、その第一種の処理を実行する
    請求項7〜9のいずれか一項に記載のデータベースシステム。
  11. 前記第二種の処理はオンライン処理であり、
    前記第二更新部は、前記対象となるレコードに対する排他制御を行う
    請求項7〜10のいずれか一項に記載のデータベースシステム。
  12. 前記所定の基準は、さらに、
    第一の選択によって複数のレコードが選択された場合は、前記開始区分が前記第二更新部を示すレコードを優先して選択する、第二の選択を行う
    という基準を含む、請求項5または6に記載のデータベースシステムであって、かつ請求項9に記載のデータベースシステム。
  13. 前記検索条件は、前記検索が実行される検索実行時刻を含み、
    前記所定の基準は、さらに、
    前記第二の選択によって複数のレコードが選択された場合は、前記終了時刻と、前記検索実行時刻とを比較し、
    前記終了時刻が前記検索実行時刻より新しい場合には、前記終了区分が前記第二更新部を示すか、または前記終了区分が前記第一更新部および前記第二更新部のいずれも示さないレコードを優先して選択する、第三の選択を行い、
    前記終了時刻が前記検索実行時刻より古い場合には、前記終了区分が前記第二更新部を示すレコード、前記終了区分が前記第一更新部を示すレコード、および、前記終了区分が前記第一更新部および前記第二更新部のいずれも示さないレコードの順に優先して選択する、第四の選択を行う
    という基準を含む、請求項12に記載のデータベースシステム。
  14. 前記複数のレコードのうち少なくとも一部のレコードは削除レコードであって、
    前記複数のレコードのうち、前記削除レコードと同一のキーを有するレコードはすべて無効である
    請求項1〜13のいずれか一項に記載のデータベースシステム。
  15. 前記データベースシステムは、さらに、前記所定の基準に基づく選択において選択される可能性のないレコードの少なくとも1つを、前記時制データベースから削除する、削除部を備える、請求項1〜14のいずれか一項に記載のデータベースシステム。
JP2006058314A 2006-03-03 2006-03-03 データベースシステム Expired - Fee Related JP4396988B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006058314A JP4396988B2 (ja) 2006-03-03 2006-03-03 データベースシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006058314A JP4396988B2 (ja) 2006-03-03 2006-03-03 データベースシステム

Publications (2)

Publication Number Publication Date
JP2007233969A JP2007233969A (ja) 2007-09-13
JP4396988B2 true JP4396988B2 (ja) 2010-01-13

Family

ID=38554459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006058314A Expired - Fee Related JP4396988B2 (ja) 2006-03-03 2006-03-03 データベースシステム

Country Status (1)

Country Link
JP (1) JP4396988B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5675666B2 (ja) * 2012-02-09 2015-02-25 株式会社野村総合研究所 時限データの履歴管理システム
JP5841704B2 (ja) * 2014-12-22 2016-01-13 株式会社野村総合研究所 時限データの履歴管理システム
CN109542922B (zh) * 2018-11-29 2023-04-07 泰康保险集团股份有限公司 针对实时服务数据的处理方法及相关系统
CN115048207B (zh) * 2022-08-17 2022-12-16 恒丰银行股份有限公司 一种基于固定时间间隔的任务执行方法、设备及介质

Also Published As

Publication number Publication date
JP2007233969A (ja) 2007-09-13

Similar Documents

Publication Publication Date Title
JP4255373B2 (ja) ネットワークファイルシステムのための管理および同期化アプリケーション
JP4308587B2 (ja) 文書群管理装置
JP4522485B1 (ja) データ変換方法、その装置およびそのプログラム
JP2000040104A (ja) ワークフロー管理方法
JP4396988B2 (ja) データベースシステム
EP3792779A1 (en) Managing dataset edits
US6453324B1 (en) Method for maintaining a version history of objects in a repository
CN101013426B (zh) 信息管理装置以及信息管理方法
JP5106062B2 (ja) ファイル検索方法、ファイル検索装置、検索システム、及び、ファイル検索プログラム
JP4971717B2 (ja) ディレクトリ分散型記憶装置及びデータ処理要求移譲プログラム
JP3942877B2 (ja) Cadデータを管理するためのプログラムを記録したコンピュータ読み取り可能な記録媒体およびcadデータを管理するためのプログラム
CN110263060B (zh) 一种erp电子附件管理方法及计算机设备
JP3887571B2 (ja) ソフトウェア設計要件抽出支援方法、ソフトウェア設計要件決定支援方法、ソフトウェア設計支援方法、およびプログラム
WO2018179065A1 (ja) データ分析装置およびデータ分析方法
JP2010160577A (ja) 検索装置及びその制御方法、並びにコンピュータプログラム
JPH05307478A (ja) データベース管理システムの構成法
JP4279346B2 (ja) データベース管理装置及びプログラム
JPH11272526A (ja) データ処理装置及び記憶媒体
JPH0687225B2 (ja) フアイル・サービス要求の処理方法及び装置
JP2003036190A (ja) アンドゥ処理システム及びアンドゥ処理方法
JP2011138223A (ja) 検索装置、検索方法、及びプログラム
JP4209859B2 (ja) データベース管理装置及びプログラム
JP5048396B2 (ja) データ管理プログラム
JPH10320256A (ja) 分散データベースシステムのデータ更新制御方法および 装置
JP4173147B2 (ja) データベース管理装置及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090707

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

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

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

Free format text: PAYMENT UNTIL: 20121030

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4396988

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131030

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees