| 【発明の名称】 |
データベース排他制御システム |
| 【発明者】 |
【氏名】宮下 誠
|
| 【要約】 |
【課題】シノニム機能の無いデータベースで参照と更新の排他制御を短時間で行う。
【解決手段】マスタテーブル21はマスタデータをその世代開始番号および世代終了番号と共に格納し、世代管理テーブル22はマスタデータごとの有効世代番号を格納する。ビュー23には世代管理テーブル内の有効世代番号がマスタテーブル内の世代開始番号と世代終了番号との間に入るマスタデータが抽出される。データ挿入処理手段13は全件配信されてくるマスタデータ40のマスタレコードを1つずつ読み込み、世代管理テーブルを参照して得た有効世代情報を1つ増数した番号を世代開始番号、最大値を世代終了番号として、マスタテーブルに挿入する。排他制御処理手段11はマスタレコードの挿入終了後に排他フラグ24をセットし、最後にリセットする。世代更新処理手段12は排他フラグのセットが正常終了すれば世代管理テーブルの有効世代番号を1つ増数する。参照側アプリケーション30はビューを介してマスタテーブルを参照する。 |
【特許請求の範囲】
【請求項1】 マスタレコードにその世代開始番号および世代終了番号を付加してマスタテーブルに格納すると共に、現在参照可能なマスタレコードの有効世代番号を設け、前記世代開始番号および世代終了番号並びに前記世代開始番号を操作することによって、前記マスタレコードに対する更新と参照の排他制御を行うことを特徴とするデータベース排他制御システム。 【請求項2】 マスタレコードをその世代開始番号および世代終了番号を付加してマスタテーブルに格納すると共に、現在参照可能なマスタレコードの有効世代番号を世代管理テーブルに格納しておき、新たにマスタレコードを前記マスタテーブルに組み込む場合には、当該マスタレコードの前記世代開始番号を前記有効世代番号より大きくして組み込み、その後に前記マスタテーブルへの参照を排除して、正常終了すれば当該マスタレコードの前記有効世代番号を前記世代開始番号以上の番号に更新し、前記排除を解除することを特徴とするデータベース排他制御システム。 【請求項3】 マスタデータをその世代開始番号および世代終了番号と共に格納するマスタテーブルと、マスタデータごとの有効世代番号を格納する世代管理テーブルと、前記世代管理テーブル内の有効世代番号が前記マスタテーブル内の世代開始番号と世代終了番号との間に入るマスタデータが抽出されるビューと、前記マスタテーブルに対する更新と参照の排他制御を行うための排他フラグとを含むデータベースと、全件配信されてくるマスタデータのマスタレコードを1つずつ読み込み、前記世代管理テーブルを参照して得た有効世代情報を1つ増数した番号を前記世代開始番号、最大値を前記世代終了番号として、前記マスタテーブルに挿入するデータ挿入処理手段と、前記マスタレコードの挿入終了後に前記排他フラグをセットし、最後にリセットする排他制御処理手段と、前記排他フラグのセットが正常終了すれば前記世代管理テーブルの有効世代番号を1つ増数する世代更新処理手段とを含むマスタ組込処理アプリケーションと、前記ビューを介して前記マスタテーブルを参照する参照側アプリケーションとを備えたことを特徴とするデータベース排他制御システム。 【請求項4】 マスタレコードをその世代開始番号および世代終了番号と共に格納するマスタテーブルと、マスタレコードごとの有効世代番号を格納する世代管理テーブルと、前記世代管理テーブル内の有効世代番号が前記マスタテーブル内の世代開始番号と世代終了番号との間に入るマスタレコードが抽出されるビューと、前記マスタテーブルに対する更新と参照の排他制御を行うための排他フラグとを含むデータベースと、前回配信のマスタデータとの差分のみが配信されてくるマスタデータのマスタレコードを1つずつ読み込み、前記マスタテーブルに対して追加/更新/削除するデータ処理手段と、前記マスタレコードの追加/更新/削除終了後に前記排他フラグをセットし、最後にリセットする排他制御処理手段と、前記排他フラグのセットが正常終了すれば前記世代管理テーブルの有効世代番号を1つ増数する世代更新処理手段とを含むマスタ組込処理アプリケーションと、前記ビューを介して前記マスタテーブルを参照する参照側アプリケーションとを備えたことを特徴とするデータベース排他制御システム。 【請求項5】 前記マスタレコードの追加時には、前記世代管理テーブルを参照して得た有効世代情報を1つ増数した番号を前記世代開始番号、最大値を前記世代終了番号とし、また前記マスタレコードの更新時には、現在有効なマスタレコードの前記世代終了番号を前記有効世代番号とし、かつ有効世代情報を1つ増数した番号を前記読み込まれたマスタレコードの世代開始番号、最大値を世代終了番号とし、また前記マスタレコードの削除時には、現在有効なマスタレコードの前記世代終了番号を前記有効世代番号とすることを特徴とする請求項4に記載のデータベース排他制御システム。 【請求項6】 マスタデータをその世代開始番号および世代終了番号と共に格納するマスタテーブルと、マスタデータごとの有効世代番号を格納する世代管理テーブルと、前記世代管理テーブル内の有効世代番号が前記マスタテーブル内の世代開始番号と世代終了番号との間に入るマスタデータが抽出されるビューと、前記マスタテーブルに対する更新と参照の排他制御を行うための排他フラグとを含むデータベースに対するデータベース排他制御方法であって、全件配信されてくるマスタデータのマスタレコードを1つずつ読み込む手順と、前記世代管理テーブルを参照して得た有効世代情報を1つ増数した番号を前記世代開始番号、最大値を前記世代終了番号として、前記読み込んだマスタレコードに付加して前記マスタテーブルに挿入する手順と、前記マスタレコードの挿入終了後に前記排他フラグをセットする手順と、最後にリセットする排他制御処理手段と、前記排他フラグのセットが正常終了すれば前記世代管理テーブルの有効世代番号を1つ増数する手順と、前記排他フラグをリセットする手順とを有することを特徴とするデータベース排他制御方法。 【請求項7】 マスタレコードをその世代開始番号および世代終了番号と共に格納するマスタテーブルと、マスタレコードごとの有効世代番号を格納する世代管理テーブルと、前記世代管理テーブル内の有効世代番号が前記マスタテーブル内の世代開始番号と世代終了番号との間に入るマスタレコードが抽出されるビューと、前記マスタテーブルに対する更新と参照の排他制御を行うための排他フラグとを含むデータベースに対するデータベース排他制御方法であって、前回配信のマスタデータとの差分のみが配信されてくるマスタデータのマスタレコードを1つずつ読み込む手順と、前記マスタテーブルに対して追加/更新/削除する手順と、前記マスタレコードの追加/更新/削除終了後に前記排他フラグをセットする手順と、前記排他フラグのセットが正常終了すれば前記世代管理テーブルの有効世代番号を1つ増数する手順と、前記排他フラグをリセットする手順とを有し、前記マスタレコードの追加時には、前記世代管理テーブルを参照して得た有効世代情報を1つ増数した番号を前記世代開始番号、最大値を前記世代終了番号とし、また前記マスタレコードの更新時には、現在有効なマスタレコードの前記世代終了番号を前記有効世代番号とし、かつ有効世代情報を1つ増数した番号を前記読み込まれたマスタレコードの世代開始番号、最大値を世代終了番号とし、また前記マスタレコードの削除時には、現在有効なマスタレコードの前記世代終了番号を前記有効世代番号とすることを特徴とするデータベース排他制御方法。 【請求項8】 マスタデータをその世代開始番号および世代終了番号と共に格納するマスタテーブルと、マスタデータごとの有効世代番号を格納する世代管理テーブルと、前記世代管理テーブル内の有効世代番号が前記マスタテーブル内の世代開始番号と世代終了番号との間に入るマスタデータが抽出されるビューと、前記マスタテーブルに対する更新と参照の排他制御を行うための排他フラグとを含むデータベースに対するデータベース排他制御方法であって、全件配信されてくるマスタデータのマスタレコードを1つずつ読み込む手順と、前記世代管理テーブルを参照して得た有効世代情報を1つ増数した番号を前記世代開始番号、最大値を前記世代終了番号として、前記読み込んだマスタレコードに付加して前記マスタテーブルに挿入する手順と、前記マスタレコードの挿入終了後に前記排他フラグをセットする手順と、最後にリセットする排他制御処理手段と、前記排他フラグのセットが正常終了すれば前記世代管理テーブルの有効世代番号を1つ増数する手順と、前記排他フラグをリセットする手順とをコンピュータに実行させるためのプログラムを記録したコンピュータ読込み可能な記録媒体。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は、データベース排他制御システム、特にリレーショナル・データベースに対する更新と参照の排他制御を行うデータベース排他制御システムに関する。 【0002】 【従来の技術】データベースが参照されている最中は、そのデータベースが更新されるようなことがあってはならず、データベースが更新されている最中は、そのデータベースが参照されるようなことがあってはない。このように、データベースには更新と参照の排他制御が必要とされる。しかし、排他制御にあまり時間がかかってしまうのでは、ユーザのニーズに応えられないことになる。 【0003】そこで、従来、例えばオラクル(ORACLE)データベースでは、シノニム(Synonym)機能を利用してデータベースのテーブルを2重化することにより、テーブルを参照する側と更新する側との間で排他時間を少なくすることを可能としている。すなわち、一方のテーブルは参照専用、他方のテーブルは更新専用とし、両テーブルのデータの整合をとる時間のみ排他時間とするのである。 【0004】 【発明が解決しようとする課題】しかしながら、上述の従来技術のようにシノニム機能を有するデータベースであればともかく、そうでないデータベース、例えばSQLサーバを利用するデータベースでは、テーブルは1つであるため、その更新と参照の排他制御に多くの時間を費やすことになるという第1の問題点がある。 【0005】また、上述した従来技術では、データベースのアクセス中に異常終了すると、特別な措置をしなければ復旧できないという第2の問題点もある。 【0006】したがって、本発明の第1の目的は、シノニム機能を持たないデータベースであっても更新と参照の排他に要する時間を軽減したデータベース排他制御システムを提供することにある。 【0007】本発明の第2の目的は、データベースのアクセス中に異常終了した場合であっても異常終了後に正しいデータさえ受信できれば、特別な処置は必要なく復旧できるデータベース排他制御システムを提供することにある。 【0008】 【課題を解決するための手段】第1の本発明のデータベース排他制御システムは、マスタレコードにその世代開始番号および世代終了番号を付加してマスタテーブル(図1の21)に格納すると共に、現在参照可能なマスタレコードの有効世代番号を設け、世代開始番号および世代終了番号並びに世代開始番号を操作することによって、マスタレコードに対する更新と参照の排他制御を行うことを特徴とする。 【0009】第2の本発明のデータベース排他制御システムは、マスタレコードをその世代開始番号および世代終了番号を付加してマスタテーブル(図1の21)に格納すると共に、現在参照可能なマスタレコードの有効世代番号を世代管理テーブル(図1の22)に格納しておき、新たにマスタレコードをマスタテーブルに組み込む場合には、当該マスタレコードの世代開始番号を有効世代番号より大きくして組み込み、その後にマスタテーブルへの参照を排除して、正常終了すれば当該マスタレコードの有効世代番号を前記世代開始番号以上の番号に更新し、排除を解除することを特徴とする。 【0010】第3の本発明のデータベース排他制御システムは、マスタデータをその世代開始番号および世代終了番号と共に格納するマスタテーブル(図1の21)と、マスタデータごとの有効世代番号を格納する世代管理テーブル(図1の22)と、世代管理テーブル内の有効世代番号がマスタテーブル内の世代開始番号と世代終了番号との間に入るマスタデータが抽出されるビュー(図1の23)と、マスタテーブルに対する更新と参照の排他制御を行うための排他フラグ(図1の24)とを含むデータベース(図1の20)と、全件配信されてくるマスタデータのマスタレコードを1つずつ読み込み、世代管理テーブルを参照して得た有効世代情報を1つ増数した番号を世代開始番号、最大値を前記世代終了番号として、マスタテーブルに挿入するデータ挿入処理手段(図1の13)と、マスタレコードの挿入終了後に排他フラグをセットし、最後にリセットする排他制御処理手段(図1の11)と、排他フラグのセットが正常終了すれば世代管理テーブルの有効世代番号を1つ増数する世代更新処理手段(図1の12)とを含むマスタ組込処理アプリケーション(図1の10)と、ビューを介してマスタテーブルを参照する参照側アプリケーション(図1の30)とを備えたことを特徴とする。 【0011】第4の本発明のデータベース排他制御システムは、マスタレコードをその世代開始番号および世代終了番号と共に格納するマスタテーブル(図4の21)と、マスタレコードごとの有効世代番号を格納する世代管理テーブル(図4の22)と、世代管理テーブル内の有効世代番号がマスタテーブル内の世代開始番号と世代終了番号との間に入るマスタレコードが抽出されるビュー(図4の23)と、マスタテーブルに対する更新と参照の排他制御を行うための排他フラグ(図4の24)とを含むデータベース(図4の20)と、配信のマスタデータとの差分のみが配信されてくるマスタデータのマスタレコードを1つずつ読み込み、マスタテーブルに対して追加/更新/削除するデータ処理手段(図4の13−1)と、マスタレコードの追加/更新/削除終了後に排他フラグをセットし、最後にリセットする排他制御処理手段(図4の11)と、排他フラグのセットが正常終了すれば世代管理テーブルの有効世代番号を1つ増数する世代更新処理手段(図4の12)とを含むマスタ組込処理アプリケーション(図4の10−1)と、ビューを介してマスタテーブルを参照する参照側アプリケーション(図4の30)とを備えたことを特徴とする。 【0012】本発明では、、ホストコンピュータから店舗端末にマスタデータが送信される。配信されたマスタデータは、マスタ組込処理によりデータベース内の各マスタテーブルに組み込まれる。組込処理で各マスタレコードに世代情報を付加する。この世代情報を操作することにより、組込処理と参照側アプリケーションとの排他を極力少なくし、また異常終了時には、異常終了後の実行も柔軟に対応できるマスタ組込処理とデータ参照側アプリケーションにも更新状態を意識させない参照を可能としている。 【0013】 【発明の実施の形態】本発明のデータベース制御システムは、マスタレコードにその世代開始番号および世代終了番号を付加してマスタテーブルに格納すると共に、現在参照可能なマスタレコードの有効世代番号を設け、世代開始番号および世代終了番号並びに世代開始番号を操作することによって、マスタレコードに対する更新と参照の排他制御を行うものである。 【0014】より具体的には、マスタレコードをその世代開始番号および世代終了番号を付加してマスタテーブルに格納すると共に、現在参照可能なマスタレコードの有効世代番号を世代管理テーブルに格納しておき、新たにマスタレコードをマスタテーブルに組み込む場合には、当該マスタレコードの世代開始番号を有効世代番号より大きくして組み込み、その後にマスタテーブルへの参照を排除して、正常終了すれば当該マスタレコードの有効世代番号を世代開始番号以上の番号に更新し、排除を解除する。 【0015】 【実施例】次に、本発明の実施例について図面を参照しながら説明する。 【0016】本発明の一実施例を示す図1を参照すると、このデータベース排他制御システムは、本部のホストコンピュータ100と、大手コンビニエンスストア等広範囲にチェーン展開する店舗に備えられた店舗端末200で構成される。店舗端末200は店舗ごとに備えられるが、図面の煩雑化を回避するために、また発明の説明のためにはそれで充分なために、図1では1つのみを示している。ホストコンピュータ100からは、各店舗に共通する商品情報マスタ,価格情報マスタ等や店舗固有マスタを衛星回線または地上回線を介して各店舗端末200に配信する。これらの各マスタのマスタデータ40はテキストファイル形式であり、更新のたびにマスタデータの全てのマスタレコードが配信されてくるものとする。これは、気象条件の悪化等により送信中のマスタレコードに文字化け等が発生しても、次回の配信によってそれを修復できるようにするためである。店舗に配信されたきた各マスタデータは、後述のようにデータ挿入処理手段13によって、現在有効な各マスタデータと置換されるのである。 【0017】店舗端末200は、ホストコンピュータ100から送られてくるマスタデータ40を格納するためのデータベース20と、データベース20にマスタデータを組み込むデータベースエンジンとしてのマスタ組込処理アプリケーション10と、データベース20を参照する参照アプリケーション30とから成る。各マスタデータがデータベース20に格納される際には、マスタレコードごとに世代が付与され世代管理がなされる。 【0018】データベース20は、マスタレコードをその世代開始番号および世代終了番号と共に格納するマスタテーブル21と、マスタデータごとの有効世代番号を格納する世代管理テーブル22と、世代管理テーブル22内の有効世代番号がマスタテーブル21内の世代開始番号と世代終了番号との間に入るマスタレコードが抽出されるビュー23と、排他制御を行うための排他フラグ24とを含む。有効世代とはマスタテーブル21中の複数世代のマスタデータ中で現在有効なマスタデータの世代をいう。 【0019】ビュー23はユーザにより参照側アプリケーション30によって定義され、参照側アプリケーション30はビュー23を介してマスタテーブル21をアクセスする。ビュー23を定義することにより、世代を意識させることも、複雑な抽出条件も付けることもなく、最新の整合性の取れたデータを参照することが可能となり、参照側アプリケーション30はデータ組込の状態や世代を意識することなく容易にデータを参照できるようになる。 【0020】排他フラグ24は、マスタテーブル更新時にセットされ、セット中は参照アプリケーション30がマスタテーブル21を参照できないようにするためのものである。 【0021】図2は、マスタテーブル21と世代管理テーブル22とビュー23との関係を例示する図である。図2において、マスタテーブル21は、それぞれ世代開始番号が00000000、世代終了番号が99999999である4つのマスタレコードAAAAAAAAAA,BBBBBBBBBB,CCCCCCCCCCおよびDDDDDDDDDDから成るマスタデータと、それぞれ世代開始番号が00000000、世代終了番号が00000009である2つのマスタレコードEEEEEEEEEEおよびFFFFFFFFFFから成るマスタデータを格納していることが示されている。また、世代管理テーブル22はXXXマスタおよびYYYマスタの有効世代番号が00000010であることを明示している。 【0022】世代管理テーブル22内の有効世代00000010は、マスタテーブル21内の4つのマスタレコードAAAAAAAAAA,BBBBBBBBBB,CCCCCCCCCCおよびDDDDDDDDDDの世代開始番号00000000と世代終了番号99999999の間に入るため、マスタレコードAAAAAAAAAA,BBBBBBBBBB,CCCCCCCCCCおよびDDDDDDDDDDがビュー23に抽出され反映される。これらのマスタレコードが現在有効なマスタレコードとして参照側アプリケーション30から参照される。しかし、マスタテーブル21内のマスタレコードEEEEEEEEEEおよびFFFFFFFFFFについては、世代管理テーブル22内の有効世代00000010は、その世代開始番号00000000と世代終了番号00000009の間に入らないため、マスタレコードEEEEEEEEEEおよびFFFFFFFFFFはビュー23に抽出されていない。 【0023】マスタ組込処理アプリケーション10は、排他処理手段11と世代更新処理手段12とデータ挿入処理手段13とデータ削除手段14とを含む。これらの各手段はそれぞれ概略つぎのように動作する。 【0024】データ挿入処理手段13は、ホストコンピュータ100より配信されるマスタデータ40のマスタレコードを1つずつ読み込み、テキストファイル形式からテーブルのレコード形式に編集する。また、世代管理テーブル22を参照して得た世代情報を付加して、各マスタテーブルにマスタレコードを挿入する。これにより、前回の組込処理で既に組み込まれているマスタレコードを無効にし、今回挿入したマスタレコードを有効にし、全件置換したように振舞う。 【0025】ただし、データ挿入処理手段13は、配信されてきたマスタデータを現在参照されているマスタデータと置換するに当り、既に組み込まれたマスタレコードを削除して、その後に新しいマスタレコードを挿入するのではない。前回のマスタ組込処理で組み込んだマスタデータの世代情報を更新し、今回組み込むマスタデータを新しい世代として世代情報を付加して組込みを実施するのである。今回組込んだ世代が有効世代として切り替わるのは、後述の世代更新処理後のことになる。これは、今回組み込んだマスタデータに異常が検出された場合には、そのマスタデータは使用せず、組込み前のマスタデータが使用できるようにするための措置である。 【0026】データ削除処理手段14は、マスタデータをマスタテーブル21に組み込むに当り、前回のマスタデータ組込み時に異常終了したマスタレコードをマスタテーブル21から削除する。異常の検出は、データ削除処理手段14がマスタテーブル21内の世代開始番号と世代管理テーブル22内の有効世代番号とを比較することによって行う。 【0027】排他処理手段11は、マスタデータを更新するマスタ挿入処理手段13とマスタデータを参照する参照側アプリケーション30との間で、更新途中のマスタデータを参照させないために排他を行う。それも排他のために使用する時間を極力少なくする。そのために、排他を実施している間は、排他制御フラグ24をセットし、参照側アプリケーション30からはマスタデータの参照を不可とする。一方、参照側アプリケーション30が起動している、つまりマスタデータを参照している可能性がある場合には、排他処理手段11が参照側アプリケーション30の終了を待ち合わせる。 【0028】世代更新処理手段12は、排他処理手段11による参照側アプリケーション30との間に排他のための条件が成立すると起動され、世代管理テーブル22内の有効世代番号を更新する。排他のための条件とは、不等式で示せば、世代開始番号≦有効世代番号≦世代終了番号ということである。ここで留意すべきは、上記の排他が実際に行われているのは世代の更新処理の間だけであるであるということである。すなわち、マスタテーブル21にマスタデータが組み込まれている最中は、そのマスタデータの世代はまだ有効世代とされないため、参照側アプリケーション30によるマスタデータの自由な参照は許されるように排他処理手段11によって制御される。また、参照側アプリケーション30による参照がされていても、まだ有効世代が付与されていないためマスタデータのマスタテーブル21への挿入は許されるように排他処理手段11によって制御される。 【0029】このように、排他を世代管理テーブル22内の有効世代更新中のみとすることによって排他時間を短縮できる。また、世代更新後に今回組み込んだマスタデータが有効となり、現在迄有効であったマスタレコードが旧世代のマスタデータとなる。マスタデータ挿入中に処理が異常終了する、つまり、世代更新処理手段12が世代を更新する以前に、なんらかの理由により処理が異常終了した場合には前回組込済のマスタデータがそのまま、有効な世代として参照される。 【0030】次に、図3のフローチャートを参照して本実施例のマスタ組込処理について説明する。 【0031】ホストコンピュータ100から店舗端末200にマスタデータ40が到着すると、マスタ組込処理アプリケーション10が起動される。このマスタ組込処理アプリケーション10はマスタ参照側アプリケーション30が起動されマスタテーブル21を参照していたとしても、排他をかけることなく以下のような組込処理を開始する。 【0032】先ず、データ削除処理手段14は前回異常終了した場合の不要なマスタレコードを物理的に削除する(ステップS1)。具体的には、マスタテーブル21内の世代開始番号が世代管理テーブル22内の有効世代よりも大きいマスタレコードを削除する。これは、本マスタ組込処理が正常に終了した場合には、後述のように世代管理テーブル22内の有効世代はマスタテーブル21内の世代開始番号と等しくなるということを根拠にするものである。 【0033】世代更新処理手段12は、前回正常にマスタテーブル21への組込みが完了しているマスタデータの世代終了番号を世代管理テーブル内の有効世代番号に更新する(ステップS2)。これによって、このマスタデータへの参照を担保すると共に、次に組み込まれてくるマスタデータとの世代の重複を回避する。具体例で示せば、有効世代00000010を有する世代開始番号00000010,世代終了番号99999999の正常組込み完了マスタデータに対して、その世代終了番号を00000010とするのである。これによっても、前述の不等式は成立するので参照側アプリケーション30からの参照はできる。 【0034】次に、データ挿入処理手段13はマスタレコードを1つずつ読み込み、テーブル形式に編集してマスタテーブル21に挿入する(ステップS3)。このとき挿入されるマスタレコードには、世代情報が追加される。具体的には、世代開始番号として現在の有効世代番号(世代管理テーブル22が保持)に1を加えたもの、上述の例では00000011をセットし、世代終了番号として99999999がセットされる。このときには、有効世代番号00000010が世代開始番号00000011より小さく前述の不等式は成立しないため、挿入されたマスタレコードを参照することができない状態である。ただし、前回組み込まれたマスタレコードは参照できる。 【0035】このマスタレコードの挿入が完了したら、排他処理手段11は参照側アプリケーション30との間に排他を実施するため、排他フラグ24をセットする(ステップS4)。これによって、参照側アプリケーション30はマスタテーブル21を参照できなくなる。 【0036】この排他が成立したら(ステップS5)、世代更新処理手段12は世代管理テーブル22の内の有効世代番号に1を加えて更新する(ステップS6)。上述の例では有効世代番号が00000011となる。この結果、新しく組み込まれたマスタレコード(世代開始番号00000011,世代終了番号99999999)について前述の不等式が成立することになる。 【0037】最後に、排他処理手段11は排他フラグ24をリセットしてを排他を解除する(ステップS7)。排他解除後から今回組み込んだ新しい世代のマスタデータが有効となり、前回組み込まれて有効になっていたマスタデータが旧世代のデータとなる。参照側アプリケーション30は、この有効世代のマスタデータに付加されている世代情報を抽出条件として定義されたビュー23を参照できるようになる。 【0038】ところで、世代更新処理手段12が世代を更新する(ステップS6)以前になんらかの理由により異常終了が発生すると(ステップS5)、ステップS5で世代更新処理手段12は世代管理テーブル22の内の有効世代を更新せず、排他フラグ24をリセットして(ステップS7)終了する。その結果、上述の例では有効世代は00000010のままとなり、一方、世代開始番号は00000011である。このようなマスタレコードは、前述の不等式を満たさないためビュー23に反映されない。この不要なマスタレコードは、次回のマスタ組込処理時にデータ削除処理手段14によって削除される(ステップS1)。 【0039】このように、異常終了が発生した場合であっても、有効世代を切り替えなければ、前回の組込み成功時の状態は保持され、前回組込済のデータがそのまま、有効な世代として参照される。また異常終了直後のマスタ組込処理でも、不要なマスタレコードを削除することにより何の考慮も処置も必要なく、次のマスタレコードを組込むことが可能となるのである。 【0040】次に、本発明の第2の実施例について図面を参照して説明する。 【0041】本発明の第2の実施例を示す図4を参照すると、このデータベース排他制御システムは、ホストコンピュータ100と店舗端末200−1で構成される。店舗端末200−1は、マスタ組込処理アプリケーション10−1と、データベース20と、マスタレコードを参照する参照側アプリケーション30から成る。データベース20および参照側アプリケーション30は、図1における同名称のものと同じものである。 【0042】ホストコンピュータ100から届くマスタデータ40−1はテキストファイルで構成され、毎回マスタデータの差分、つまり変更情報のみが配信されてくる点が、図1に示した第1の実施例と異なる。したがって、店舗端末200−1に配信されたきたマスタデータを追加し、または配信されたきたマスタデータによって現在参照対象のマスタデータを更新し、または現在参照対象のマスタデータを削除する。このため、マスタ組込処理アプリケーション10−1には、図1におけるマスタ組込処理アプリケーション10におけるデータ挿入処理手段13に代わってデータ処理手段13−1が設けられている。排他処理手段11,世代更新処理手段12およびデータ削除処理手段14は、図1における同名称のものと同じものである。 【0043】次に、図5のフローチャートを参照して本実施例のマスタ組込処理について説明する。 【0044】先ず、データ削除処理手段14は前回異常終了した場合の不要なマスタレコードを物理的に削除する(図5のステップT1)。具体的には、マスタテーブル21内の世代開始番号が世代管理テーブル22内の有効世代よりも大きいマスタレコードを削除する。これは、本マスタ組込処理が正常に終了した場合には、後述のように世代管理テーブル22内の有効世代はマスタテーブル21内の世代開始番号と等しくなるということを根拠にするものである。 【0045】次に、データ処理手段13−1は、ホストコンピュータ1から配信されるマスタデータ40−1のマスタレコードを1つずつ読み込み(ステップT2)、マスタテーブル21の追加/更新のマスタレコードであれば(ステップT3)、テキストファイル形式からテーブルのレコード形式に編集して、世代情報を付加して各マスタテーブル21にマスタレコードを挿入する(ステップT4)。 【0046】この挿入が失敗した場合には(ステップT5)、データ処理手段13−1は、更新とみなして、現在有効になっているマスタレコードを無効にし(ステップT6)、今回読み込んだマスタレコードを追加する(ステップT7)。マスタレコードを無効にするには、後に排他制御の下に有効世代番号を更新すると、無効となるように世代終了番号を更新する。つまり世代終了番号を現在有効な世代番号に更新する。これらの更新が反映されるのはマスタテーブル更新後の世代更新処理の後となる。 【0047】マスタレコードを挿入する場合(ステップT4)または更新時に追加する場合(ステップT7)には、後に排他制御の下に有効世代番号を更新すると、そのマスタレコードが有効になるような世代開始番号と世代終了番号を付加する(ステップT8)。具体的には、世代開始番号には、現在有効な世代よりも大きな番号を、世代終了番号には最大値をセットする。つまり、第1の実施例におけるのと同様である。 【0048】一方、ステップT3において追加/更新のマスタレコードでなく、したがって削除のマスタレコードであれば、データ処理手段13−1は、該当するマスタレコードを検索し、存在すればそのマスタレコードを無効にする(ステップT9)。マスタレコードを無効にするには、後に排他制御の下に有効世代番号を更新すると、無効となるように世代終了番号を更新する。つまり世代終了日を現在有効な世代番号に更新する。これらの更新が反映されるのはマスタテーブル更新後の世代更新処理の後となる。 【0049】以上のマスタレコードの挿入/更新/削除が完了したら、排他処理手段11による排他制御および世代更新処理手段12による世代更新処理が行われるが、これらは第1の実施例における処理の内容と同様であるため説明を省略する。また、以上終了した場合の措置の内容も第1の実施例と同様である。 【0050】なお、ステップT1におけるマスタレコードの物理的な削除はここでは行わず、削除は組込み時ではなく負荷の低い時間で実施することとれば、組込み処理の負荷を分散することができる。世代を制御することにより、各マスタのデータは物理的に削除しなくても参照側アプリケーション30から参照可能であるためであり、第2の実施例ではマスタレコード単位に世代管理されるため削除対象のデータ量が少ないからである。 【0051】なお、以上に説明したマスタ組込処理アプリケーションを半導体メモリ,フロッピー(登録商標)ディスク,CD−ROM等のコンピュータ読込み可能な記録媒体に記録してコンピュータに読み込み、実行させるようにしてもよい。 【0052】 【発明の効果】本発明の第1の効果は、シノニム機能を持たないデータベースであっても参照側アプリケーションとの排他時間を極少にできるということである。その理由は、マスタデータに世代を付加して管理すると共に、マスタデータの切替えは世代を管理している世代管理テーブルの1項目を更新するだけの時間で済むようにしたからである。 【0053】第2の効果は、組込処理が異常終了した場合の特殊な対応が不要になるということである。その理由は、異常終了時も前回組込み成功時の状態を保証するので、異常発生直後の対応の必要がないためと、次回の組込み処理を行うにあたり組込み途中のデータの削除などを行う必要が無く、異常終了した原因が取り除かれれば、いつデータが到着しても問題が無く最終的に組込みが正常終了すれば整合性の取れた正しいデータとなるからである。 【0054】第3の効果は、参照側アプリケーションに整合性の保たれたデータを提供し、データの不整合により参照側アプリケーションの誤動作を招くことがないということである。その理由は、新たに組み込んだデータが参照側に参照可能となるのは、必ずマスタの全てのデータが組み込まれた後にデータが切り替わってからになるからである。 【0055】第4の効果は、データ更新処理も容易で処理も単純になるということである。その理由は、各マスタのテーブルを2重化することなく、1つのテーブルで実現しているからである。
|
| 【出願人】 |
【識別番号】000232092 【氏名又は名称】エヌイーシーソフト株式会社
|
| 【出願日】 |
平成12年10月24日(2000.10.24) |
| 【代理人】 |
【識別番号】100111729 【弁理士】 【氏名又は名称】佐藤 勝春
|
| 【公開番号】 |
特開2002−132565(P2002−132565A) |
| 【公開日】 |
平成14年5月10日(2002.5.10) |
| 【出願番号】 |
特願2000−324649(P2000−324649) |
|