(57)【特許請求の範囲】
【請求項１】
２つ以上の局が通信回路を介して結合されているデータベースシステムにおいて、
各局は、
複数のレコードにより構成されるテーブルを複数備えるデータベースと、
前記レコード毎に設けられ、他局のデータベースにおいてデータ更新が行われた場合に当該レコードのデータに変更を行った他局の識別情報が記憶される記憶領域と、
トランザクションに基づいて、自局のデータベースにおけるデータの更新を実行する変更手段と、
この変更手段により変更が行われた場合に、他局のデータベースに対し、該当テーブルの該当レコードに設けられた記憶領域に自局の識別情報をセットする識別情報制御手段と、
前記変更手段で用いられたトランザクションが蓄積されるトランザクションキューと、
自局のデータベースに対して参照要求または変更要求があると、前記要求に係る範囲に対応するレコードにおける記憶領域を参照して他局の識別情報がセットされているか否かに基づき他局において変更がなされたか否かを検出する検出手段と、
前記検出手段が他局において変更がなされたことを検出すると、該当他局のトランザクションキューから該当トランザクションを伝播して該当他局のデータベースの更新を自局データベースへ反映させると共に、対応する記憶領域にセットされている他局の識別情報を消去するデータ一致化手段と、
自局のデータベースに対して参照要求があった場合に、前記検出手段により変更なしと判定されると直ちに自局のデータベースを参照し参照結果を参照要求元へ返送する、一方、前記検出手段により他局において変更がなされたことの検出がなされると前記データ一致化手段による反映処理の後に自局のデータベースを参照し参照結果を参照要求元へ返送するデータ返送手段と
を具備することを特徴とするデータベースシステム。
【請求項２】
自局のデータベースに対して変更要求があると、
前記検出手段は、前記要求に係る範囲に対応するレコードの記憶領域を参照して他局において変更がなされたか否かを検出し、
前記データ一致化手段は、前記検出手段が他局において変更がなされたことを検出すると、該当他局のトランザクションキューから該当トランザクションを伝播して該当他局のデータベースの更新を自局データベースへ反映させ、
前記変更手段は、前記検出手段により変更なしと判定されると直ちに自局のデータベースにおけるデータの更新を行う、一方、前記検出手段により他局において変更がなされたことの検出がなされると前記データ一致化手段による反映処理の後に自局のデータベースにおけるデータの更新を行うことを特徴とする請求項１に記載のデータベースシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、複数のデータベースの内容に係るデータを一致させて運用を行う、例えば、ライトバック方式等のデータベースシステムに関する。
【０００２】
【従来の技術】
従来、複数のデータベースが存在し、その間で同一のデータを保持する場合には、レプリケーション機能を用いて、テーブル間の同期をとるのが一般的である。図１２には、２つのデータベースＡ，Ｂが存在する場合に、テーブル間の同期をとる際の処理手順が示されている。即ち、データベースＡ，Ｂが、通信回線１００により接続されている。２つのデータベースＡ，Ｂは双方向からの更新が可能なレプリケーションとして定義されており、データベースＡにおける更新はデータベースＢへ伝播されて反映され、データベースＢにおける更新はデータベースＡへ播されて反映され、双方のテーブルの同期がとられる。
【０００３】
このとき、同期をとるための動作を説明する。まず、図１２の▲１▼に示される処理において、データベースＡのテーブル００３に対して更新がなされる。このときには、図５に示されるようなトランザクションが用いられる。
【０００４】
次に、図１２の▲２▼に示される処理において、データベースＡのテーブル００３に対する更新に使用したトランザクションを、データベースＡに設定されているトランザクションのキューに保存する。
【０００５】
一方、（１）に示す処理において、データベースＢのテーブル００２に対する更新が行われる。図６には、このときのトランザクションの例が示されている。更に、（２）に示す処理において、上記データベースＢのテーブル００２の更新に使用されたトランザクションは、データベースＢに設定されているトランザクションのキューに保存される。
【０００６】
以上の結果、それぞれのデータベースＡ，Ｂ上のテーブル００２、００３には、それぞれのデータベースで更新されたデータの差異が発生している。そこで、以下の様に伝播を行う必要がある。まず、▲３▼と（３）とにそれぞれ示されている処理において、トランザクションキューに保存されているトランザクションを、あるタイミングで相対するデータベースに対して実行し、テーブル間のデータの差異をなくする。
【０００７】
データベースＡ，Ｂのトランザクションキューに保存されているトランザクションは、一般的に、なるべく正確なデータを参照したい要求に応じたタイミングで実行されるか、一定時間毎のタイミングで実行される。
【０００８】
【発明が解決しようとする課題】
しかしながら、トランザクションキューに格納されているトランザクションの内容は、それが実行されない限り、どのテーブルのどのデータを更新しているかは不明である。つまり、データベースに対する参照の際に、参照しょうとしているデータが最新なのか、最新のデータと差分があるのか判らない。従って、最新のデータを参照しようとして伝播処理が完了するのを待っても、参照しようとするデータとは無関係なデータの伝播処理がなされる可能性があり、この伝播処理の完了を待ってアクセスするのは、効率的でない。
【０００９】
例えば、図１３に示されるように、▲１▼にて、データベースＡのテーブル００３に対して更新がなされ、▲２▼に示される処理において、データベースＡのテーブル００３に対する更新に使用したトランザクションを、データベースＡに設定されているトランザクションのキューに保存する。このとき、▲３▼に示される処理においてデータベースＢのテーブル００２に対し参照要求が生じた場合、データベースＡに設定されているトランザクションキューに格納されているトランザクションの伝播が▲４▼に示されるようになされた後に、▲５▼に示される参照を行っても、▲４▼で行う伝播処理はデータベースＢのテーブル００３に対する更新であり、参照するデータベースＢのテーブル００２に対する更新でないことから、無駄な処理待ちがなされたことになる。
【００１０】
また、一定時間毎にトランザクションの伝播が実行される場合においては、待ち時間を要せぬものの、現在参照しているデータが最新のデータでない可能性があり、いつの時点のデータに対してアクセスしたかが不明確であるという問題があった。また、データベースＡ，Ｂで同時に同一テーブルの同一データに対し、異なる値への書き換えを実行した場合、伝播処理の競合が発生し、どちらかのデータを切り捨てる必要があり、データベースＡ，Ｂで適切なデータの更新が行われない事態が発生する。
【００１１】
本発明は、このような問題点を解決せんとしてなされたもので、その目的は、常に最新のデータにアクセスできると共に、参照しようとするデータに差分が無い場合は伝播を実行せずにデータにアクセスできるデータベースシステムを提供することである。また、他の目的は、伝播処理の競合がを発生することなく、複数のデータベース間において適切にデータの同一性を確保することができるデータベースシステムを提供することである。
【００１２】
【課題を解決するための手段】
本発明に係るデータベースシステムは、２つ以上の局が通信回路を介して結合されているデータベースシステムにおいて、各局は、複数のレコードにより構成されるテーブルを複数備えるデータベースと、前記レコード毎に設けられ、他局のデータベースにおいてデータ更新が行われた場合に当該レコードのデータに変更を行った他局の識別情報が記憶される記憶領域と、トランザクションに基づいて、自局のデータベースにおけるデータの更新を実行する変更手段と、この変更手段により変更が行われた場合に、他局のデータベースに対し、該当テーブルの該当レコードに設けられた記憶領域に自局の識別情報をセットする識別情報制御手段と、前記変更手段で用いられたトランザクションが蓄積されるトランザクションキューと、自局のデータベースに対して参照要求または変更要求があると、前記要求に係る範囲に対応するレコードにおける記憶領域を参照して他局の識別情報がセットされているか否かに基づき他局において変更がなされたか否かを検出する検出手段と、前記検出手段が他局において変更がなされたことを検出すると、該当他局のトランザクションキューから該当トランザクションを伝播して該当他局のデータベースの更新を自局データベースへ反映させると共に、対応する記憶領域にセットされている他局の識別情報を消去するデータ一致化手段と、自局のデータベースに対して参照要求があった場合に、前記検出手段により変更なしと判定されると直ちに自局のデータベースを参照し参照結果を参照要求元へ返送する、一方、前記検出手段により他局において変更がなされたことの検出がなされると前記データ一致化手段による反映処理の後に自局のデータベースを参照し参照結果を参照要求元へ返送するデータ返送手段とを具備することを特徴とする。
【００１３】
また本発明に係るデータベースシステムは、検出手段は、自局のデータベースに対する変更要求を受けた場合にも、要求に係る範囲に対応するレコードにおける記憶領域を参照して他局において変更がなされたか否かを検出し、データ一致化手段は、上記検出手段により他局において変更がなされたことが検出された場合にも、該当他局のトランザクションキューから該当トランザクションを伝播して該当他局のデータベースの更新を自局データベースへ反映させ、変更手段は、自局のデータベースに対して変更要求があった場合に、前記検出手段により変更なしと判定されると直ちに自局のデータベースにおけるデータの更新を行う一方、前記検出手段により他局において変更がなされたことの検出がなされると上記データ一致化手段による反映処理の後に自局のデータベースにおけるデータの更新を行うことを特徴とする。
【００１５】
【発明の実施の形態】
以下添付図面を参照して本発明に係るデータベースシステムの実施の形態を説明する。各図において同一の構成要素には、同一の符号を付して重複する説明を省略する。図１には、本発明に係るデータベースシステムの実施の形態の説明図が示されている。このシステムは、通信回線１００を介して、図の上側に示される第１の局と図の下側に示される第２の局とが結合されている。
【００１６】
上記２つの局におけるシステムの構成を図２に示す。この図２に示されるように、各局はワークステーション、パーソナルコンピュータ、その他の計算機として構築される。すなわち、図２の計算機は、装置を統括制御するＣＰＵ５１を有し、このＣＰＵ５１には上記ＣＰＵ５１が用いるプログラム及びデータ等の情報が記憶される主記憶装置５２が接続されている。更に、ＣＰＵ５１にはシステムバス５３を介して入力装置制御部５４、通信インタフェース５５、記憶装置制御部５６が接続されている。キーボード制御部５４には各種情報をキー入力可能なキーボード入力装置やポインティングディバイスであるマウス、磁気カード或いはＩＣカードリーダ等の入力装置５７が接続され、通信インタフェース５５には通信回線１００を介して通信を行うための通信処理部５８が接続され、記憶装置制御部５６には補助記憶装置である磁気ディスク装置、フロッピーディスクドライブ、ＭＯ（光磁気ディスク）ドライブ等による記憶装置５９が接続されている。なお、表示装置及びその制御部等が必要に応じて設けられる。
【００１７】
上記記憶装置５９は、データベースＡ，Ｂとして機能する構成であり、「００１」、「００２」、「００３」にて示されるテーブルが設けられている。ここでは、３つのテーブルであるが、この数に限られないのは当然である。各テーブルは、いくつかのレコードに分けられており、各レコードは図３に示されるように構成される。先頭にデータベースにて管理する行番号であるＲＯＷＩＤがセットされ、次に他局のデータベースにおいてデータの変更が生じた場合に、そのデータベース名（識別情報）を書き込むためのDartyBitが用意されている。複数の他局のデータベースにてデータの変更が生じた場合に、DartyBitには、それらのデータベース名が書き込まれる。
【００１８】
上記DartyBitに次いで、ユーザに開放されたデータ領域で、主キー項目がセットされるＫＥＹの領域が設けられ、このＫＥＹの領域以降には、ユーザに開放されたデータ領域ＣＯＬＵＭＮ００１〜（図では、００３までを示すが、これに限られない。）が設けられている。上記において、データの変更は、既にあるデータの更新と、新規なデータの挿入（追加）を含む概念である。従って、データの更新の場合には、データ領域ＣＯＬＵＭＮ００１〜にはデータが既に格納されているが、新規なデータの挿入の場合に、データ領域ＣＯＬＵＭＮ００１〜には有意なデータが未だ格納されておらず、図４に示すように「ＮＵＬＬ」となっている。
【００１９】
図１に示すように、データベースＡ，Ｂの内容の一致化を図るために、他のデータベースのデータを変更するためのトランザクションを蓄積するキュー１０（１０−Ａ，１０−Ｂ）が、主記憶装置５２に設けられる。キュー１０−Ａは、データベースＡでテーブル００２、００３等に対して、更新トランザクション、挿入トランザクションが発生した場合に、当該トランザクションを相手データベースに伝播するために格納するキューであり、キュー１０−Ｂは、データベースＢでテーブル００２，００３等に対して、更新トランザクション、挿入トランザクションが発生した場合に、当該トランザクションを相手データベースに伝播するために格納するキューである。ここにセットされるトランザクションは、図５〜図７に示すようである。図５には、テーブル００３に対するデータ更新に用いられるトランザクションの例が示され、図６には、テーブル００２に対するデータ更新に用いられるトランザクションの例が示され、図７には、テーブル００３に対するデータ挿入に用いられるトランザクションの例が示されている。
【００２０】
データベースＡ，Ｂを有するそれぞれの局の主記憶装置５２には、図８に示されるフローチャートに対応するプログラムが備えられており、このプログラムを実行してデータベースＡ，Ｂにおけるテーブル００３のデータの一致化がなされるので、これを説明する。この例は、キュー１０−Ａに格納のトランザクションが伝播される以前のテーブル００３におけるデータに対し、検索が発生した場合を示すものである。
【００２１】
図１の▲１▼に示される処理において、データベースＡにおいてテーブル００３に対してデータの更新がなされる（図８のＳ１（変更手段））。次に、図１の▲２▼に示される処理において、データベースＢのテーブル００３に対して、上記更新されたレコードについてDartyBit領域に当該データベース名「Ａ」を書き込む（図８のＳ２（識別情報制御手段））。このとき対応のレコードには、図３に示されるように、DartyBitの領域に更新されたデータベース名である「Ａ」が設定される。次に図１の▲３▼に示される処理において、更新に使用したトランザクションはデータベースＡに設定されているトランザクションキュー１０−Ａに保存される（図８のＳ３（変更制御手段によるデータ一致化手段への要求セット））。
【００２２】
次に、図１の（○４）に示される処理において、データベースＢのテーブル００３に対して参照のトランザクションが発生したとする（図８のＳ４）。この場合、参照範囲のレコードのDartyBit領域を検索して、更新されたデータベース名が存在するか否かを検出する（図８のＳ５（検出手段））。ここで更新されたデータベース名が存在すれば、このデータを伝播により更新する必要があるので、図１の（○５）に示すように、データベースＡのトランザクションキュー１０−Ａの内容に係るトランザクションを伝播させる（図８のＳ６（データ一致化手段））。これにより、データベースＡにおけるデータの更新がデータベースＢに反映される。次に、上記の伝播に応じたデータの反映によりDartyBit領域の対応するデータベース名が消去され（図８のＳ７（識別情報制御手段））、図１の（○６）に示される処理において、上記で反映された最新のデータを参照結果として戻す（図８のＳ８（データ返送手段））。
【００２３】
図９には、キュー１０−Ａに格納のトランザクションが伝播される以前のデータに対して、更新が発生した場合に処理が示されている。この場合に対応して、データベースＡ，Ｂを有するそれぞれの局の主記憶装置５２には、図１０に示されるフローチャートに対応するプログラムが備えられており、このプログラムを実行してデータベースＡ，Ｂにおけるテーブル００３のデータの一致化がなされるので、これを説明する。
【００２４】
図９の▲１▼に示される処理において、データベースＡにおいてテーブル００３に対してデータの更新がなされる（図１０のＳ１１（変更手段））。次に、図９の▲２▼に示される処理において、データベースＢのテーブル００３に対して、上記更新されたレコードについてDartyBit領域に当該データベース名「Ａ」を書き込む（図１０のＳ１２（識別情報制御手段））。このとき対応のレコードには、図３に示されるように、DartyBitの領域に更新されたデータベース名である「Ａ」が設定される。次に図９の▲３▼に示される処理において、更新に使用したトランザクションはデータベースＡに設定されているトランザクションキュー１０−Ａに保存される（図１０のＳ１３（変更制御手段によるデータ一致化手段への要求セット））。
【００２５】
次に図９の（○４）に示される処理において、データベースＢのテーブル００３に対して更新のトランザクションが発生したとする（図１０のＳ１４）。この場合、更新範囲のレコードのDartyBit領域を検索して、更新されたデータベース名が存在するか否かを検出する（図１０のＳ１５（検出手段））。ここで更新されたデータベース名が存在すれば、このデータは伝播により更新する必要があるので、図９の（○５）に示すように、データベースＢのテーブル００３への更新のトランザクションが待機とされる（変更制御手段）。
【００２６】
この間に、図９の▲６▼に示すように、データベースＡのトランザクションキュー１０−Ａの内容に係るトランザクションを伝播させる（図１０のＳ１６（データ一致化手段））。これにより、データベースＡにおけるデータの更新がデータベースＢに反映される。次に、上記の伝播に応じたデータの反映によりDartyBit領域の対応するデータベース名が消去される（図１０のＳ１７（識別情報制御手段））。
【００２７】
このように伝播によりDartyBit領域の対応するデータベース名が消去され、図９の▲７▼に示される処理において、図９の▲５▼にて待機させられていたデータベースＢのテーブル００３への更新のトランザクションが実行される（図１０のＳ１８（変更手段、変更制御手段））。次に図９の▲８▼に示される処理において、データベースＢのテーブル００３に対して、更新されたレコードについてDartyBit領域に当該データベース名「Ｂ」を書き込む（図１０のＳ１９（識別情報制御手段））。次に図９の▲９▼に示される処理において、更新に使用したトランザクションはデータベースＢに設定されているトランザクションキュー１０−Ｂに保存される（図１０のＳ２０（変更制御手段））。
【００２８】
尚、データベースのデータ変更には、前述の通り更新以外に挿入（トランザクションがＩＮＳＥＲＴの場合）がある。図７にトランザクションがＩＮＳＥＲＴ文であるトランザクションを示す。このように、トランザクションがＩＮＳＥＲＴ文のときには、相手側のデータベースにDartyBitを設定すべきレコードが存在しない場合が考えられる。係る場合は、相手側のデータベースに、ＫＥＹの領域に主キーの値のみ設定したレコードを挿入して、DartyBit領域に当該トランザクションに係るデータベース名を設定する。斯して挿入されたレコードには、図３に示されるようにDartyBit領域にデータベース名「Ａ」が設定される。
【００２９】
以上の実施の形態に示した如く、データベースの参照範囲（レコード）のDartyBitに変更を行ったデータベース名が存在しなければ、参照するデータが最新であることが保証され、図８のステップＳ５や図１０のステップＳ１５にてＮＯへ分岐するので、参照に前置して不要な伝播処理は実行されずに、最新のデータのアクセスがなされる。これとは逆に、データベースの参照範囲（レコード）のDartyBitに変更を行ったデータベース名が存在するときには、参照に前置して伝播処理が実行されテーブルの同期が取られてから参照される為、常に最新のデータへのアクセスが確保される。更に、データベースの変更の場合に、変更範囲（レコード）のDartyBitに変更を行ったデータベース名が存在するときには、変更に前置して伝播処理が実行されテーブルの同期が取られてから参照される為、競合の場合に適切な順による処理が確保されると共に、常に最新のデータに対しての変更がなされる。
【００３０】
本発明は、３局以上のデータベースに対してレプリケーションが定義されている場合にも適用できる。図１１は、本発明による３局のデータベースＡ，Ｂ，Ｃのレプリケーション構成を示したものである。この例では、図１１の▲１▼に示される処理において、データベースＡのテーブル００３に対してデータ更新がなされる。次いで、同図の▲２▼に示される処理において、データベースＢのテーブル００３に対して、上記で更新されたレコードについてDartyBitにデータベース名「Ａ」を書き込む。このとき同時に図１１の▲３▼に示される処理において、データベースＣのテーブル００３に対しても、上記で更新されたレコードについてDartyBitにデータベース名「Ａ」を書き込む。
【００３１】
更に、図１１の▲４▼に示される処理において、更新に使用したトランザクションをデータベースＡに設定されているトランザクションキュー１０−Ａに保存される。上記で、DartyBitに設定される識別情報は、どのデータベースで更新が発生したか判別できるようにデータベース名（サイト名）が含まれる為、データベースＢ，Ｃにおいてテーブル００３のにアクセスすると、DartyBit領域に識別情報がセットされているレコードである場合に、該当のデータベース名（サイト名）対応のトランザクションが存在するデータベースのトランザクションキューからのみ伝播を実行させることが可能であり効率的である。
【００３２】
【発明の効果】
以上説明したように本発明に係るデータベースシステムによれば、自局のデータベースに対して参照要求があると、他局のデータベースに設けられている他局にて変更がなされたか否かを示す識別情報に基づき、他局にて変更がなされたか否かを検出し、他局にて変更がなされている場合には、データの一致化を待って、データベースの参照を行い、参照結果を参照要求元へ返送する処理を行うので、最新のデータの参照が確保される効果がある。
【００３３】
また本発明に係るデータベースシステムによれば、自局のデータベースの内容に係るデータの変更要求を受け取ると、識別情報に基づき、他局にて変更がなされたか否かを検出し、他局にて変更がなされている場合には、他局における変更を受けたデータの一致化を待って、データの変更を行うので、競合の場合に適切な順による処理が確保されると共に、常に最新のデータに対しての変更がなされる効果がある。
【図面の簡単な説明】
【図１】本発明に係るデータベースシステムによるデータ参照の際におけるレプリケーション動作を示す図。
【図２】本発明に係るデータベースシステムにおける１局の具体的構成例を示すブロック図。
【図３】本発明に係るデータベースシステムにおけるデータベースのレコード構成を示す図。
【図４】本発明に係るデータベースシステムにおける挿入トランザクションの場合に対応したデータベースのレコード内容を示す図。
【図５】本発明に係るデータベースシステムにおけるテーブル００３の更新トランザクション例を示す図。
【図６】本発明に係るデータベースシステムにおけるテーブル００２の更新トランザクション例を示す図。
【図７】本発明に係るデータベースシステムにおけるテーブル００３の挿入トランザクション例を示す図。
【図８】本発明に係るデータベースシステムにおける参照トランザクションの場合の処理を説明するためのフローチャート。
【図９】本発明に係るデータベースシステムによるデータ更新の際におけるレプリケーション動作を示す図。
【図１０】本発明に係るデータベースシステムにおける更新トランザクションの場合の処理を説明するためのフローチャート。
【図１１】本発明に係る３つのデータベースにより構成したベースシステムにおけるレプリケーション動作を示す図。
【図１２】従来例に係るデータベースシステムによるレプリケーション動作を示す図。
【図１３】従来例に係るデータベースシステムによるレプリケーション動作における処理の無駄を示す図。
【符号の説明】
Ａ，Ｂ，Ｃ  データベース
１０−Ａ，１０−Ｂ，１０−Ｃ  トランザクションキュー
５１  ＣＰＵ
５２  主記憶装置
５４  入力装置制御部
５５  通信インタフェース
５６  記憶装置制御部
５７  入力装置
５８  通信処理部
５９  記憶装置
１００  通信回線
【図１】
0003845535.tif 000002
【図２】
0003845535.tif 000003
【図３】
0003845535.tif 000004
【図４】
0003845535.tif 000005
【図５】
0003845535.tif 000006
【図６】
0003845535.tif 000007
【図７】
0003845535.tif 000008
【図８】
0003845535.tif 000009
【図９】
0003845535.tif 000010
【図１０】
0003845535.tif 000011
【図１１】
0003845535.tif 000012
【図１２】
0003845535.tif 000013
【図１３】
0003845535.tif 000014