JP4573277B2 - データベース矛盾解消方式 - Google Patents

データベース矛盾解消方式 Download PDF

Info

Publication number
JP4573277B2
JP4573277B2 JP2009517725A JP2009517725A JP4573277B2 JP 4573277 B2 JP4573277 B2 JP 4573277B2 JP 2009517725 A JP2009517725 A JP 2009517725A JP 2009517725 A JP2009517725 A JP 2009517725A JP 4573277 B2 JP4573277 B2 JP 4573277B2
Authority
JP
Japan
Prior art keywords
record
reference destination
information
computer
editing
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
JP2009517725A
Other languages
English (en)
Other versions
JPWO2008149552A1 (ja
Inventor
邦夫 上村
Original Assignee
株式会社アテナテレコムラボ
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 株式会社アテナテレコムラボ filed Critical 株式会社アテナテレコムラボ
Publication of JPWO2008149552A1 publication Critical patent/JPWO2008149552A1/ja
Application granted granted Critical
Publication of JP4573277B2 publication Critical patent/JP4573277B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明はデータベースに記録された情報の構造的矛盾を解消するものである。
<一般的な背景技術>
データベース(以下DB)は情報(以下レコード)の集合で、レコードには他のレコードへの参照が記録される事が多い。リレーショナルデータベース(以下RDB)では、参照に関する整合性を「参照整合性」(非特許文献1参照)と呼ぶが、オブジェクト指向DBなどの各種のDBにも「参照される側の情報」と「参照する側の情報」があり、参照はレコード間の関連を表現する、各種DBに共通する一般的な概念である。
DBには、参照整合性保持機能として、レコードの変更や削除に関連して他のレコードを変更する「連鎖更新機能」、削除する「連鎖削除機能」や、参照されているレコードの削除をブロックする機能、などが実装されている事が多い。
しかし、参照整合性保持機能により、意図した様にはDBが変更できない事や、逆に予期せぬ情報まで削除される事もある。DBが実装した参照整合性保持機能を無効にし、DBを利用する側のプログラムで、参照整合性保持機能に相当する処理を独自のタイミングで行う事も可能であるが、レコードを編集する毎に関連する可能性のある全レコードを調査するなど、その処理負荷は大きい。
<DBの運用形態>
本明細書では説明のため、DBの運用形態を以下の3つに分類する。
単独DBアクセス:ひとつの計算機のみでDBを操作する運用。
サーバーDBアクセス:サーバー(計算機)がDBを管理し、他の(端末)計算機はまずサーバーにアクセスしサーバーの処理を通じてDBのレコードにアクセスする運用。DBに直接アクセスするのはひとつの計算機のみである点で、単独DBアクセスと同じである。
平行DBアクセス:原本DBを複数の計算機に複製し、複数の計算機で平行して複製DBを編集し、その結果を原本DBに反映する運用。原本DBはサーバーや管理業務を行う特定の計算機などに置くのが一般的である。実質的に複数の計算機で平行してDBにアクセスする点で、「単独DBアクセス」や「サーバーDBアクセス」と大きく異なる。なお、複製を作成する範囲はDB全体の場合や、当面の作業に必要な部分のみの場合がある。DB全体を複製する場合でも、あらかじめ原本DBを細分化しておけば、複製DBの更新作業、つまり複製DBの内容を最新の原本DBの内容に一致させる作業、の処理が軽減できる。
<DBの構造的矛盾>
処理の高速化のために参照整合性の検査を省略すると、「レコードが参照する先のレコードが存在しない」、「誤った参照が設定されている」などの構造的矛盾が発生する。このまま放置すると、プログラム処理がこの矛盾に遭遇した時点で処理の継続が不可能になる。この状況は、上記のDBの運用形態の全てにおいて発生する可能性がある。
平行DBアクセスの場合では、ひとつの複製DBの内容を変更する時に、他の計算機の複製DBに対して加えられた編集内容まで調査する事は出来ないので、構造的な矛盾の発生は宿命とも言える。例えば、他の計算機のレコードが参照しているレコードを削除や変更してしまう可能性がある。これらの各計算機での編集内容を原本DBに反映し、この原本DBを各計算機で新たに複製する事により、これらの矛盾は複数の計算機の複製DBに伝搬してゆく。
平行DBアクセスでは、さらに、同じレコードを複数の計算機で平行して編集する場合がある。これらの編集内容を原本DBに反映する過程で矛盾が顕在化する。これも「データベースに記録された情報の構造的な矛盾」である。
<平行DBアクセスの現状>
筆者が指揮し開発したシステム「パワーアップ新聞販売」では閲覧のみに対して平行アクセスを許可している。編集前には「編集権」を取得する事とし、同時にはひとつの計算機しか編集出来ない様にしている。これを本明細書では「編集ロック」と呼ぶ。
平行DBアクセスに関する調査結果を以下に説明する。MVCC(非特許文献1)と呼ばれるオンラインDBでは閲覧用の(DBの一部の)複製を作成するが、編集の競合に関しては編集ロックがあるのみである(非特許文献2、非特許文献3)。OODB製品のCache(非特許文献4)とObjectStore(非特許文献5)、も平行書き込みを防止する編集ロックが用意されているだけである。RDBのPostgreSQLでは「同時に起こりうる更新を避けるためには、 SELECT FOR UPDATE文や、適切なLOCK TABLE 文を使用する」(非特許文献6)とあり、これも編集ロックである。特許文献1も編集ロックである。
特許文献2、特許文献3、特許文献4、特許文献5、特許文献6についても調査したが、いずれもDBの平行編集による矛盾の解決には適用出来ない。
マイクロソフトのADO.NETの技術は、サーバーDBアクセスの運用から平行DBアクセスに一歩踏み出し、端末計算機に当面の作業に必要なデータをサーバーからコピーし、サーバー計算機との接続を切断してから編集作業を行う。編集後に改めてサーバー計算機と接続し編集内容をサーバー計算機に送る。もし編集対象が既に他の端末計算機から変更されていれば、後からの(この)編集を無効にする。これは「オプティミスティック同時実行制御」(非特許文献7および非特許文献8)と呼ばれている。
オプティミスティック同時実行制御は平行DBアクセスの一種であるが、問題点として以下の二点があげられる。ひとつは、レコードの参照整合性の矛盾が発生する可能性を無視している事である。例えば、ある時点でサーバーからレコード(R)を端末計算機にコピーしそれを削除して10秒後にサーバーに通知したとする。この10秒間に他の端末計算機からRの修正情報が送られていなかったならば、オプティミスティック同時実行制御の仕掛けからこのRの削除は有効になる。しかし、他のレコードからRへの参照が残っていれば、または上記10秒の間に新たに参照が設定されていれば、構造的な矛盾が発生する。
もう一つの問題点は、最新情報を基にした判断が無効となるケースの存在である。最新情報を基にした判断はその時点での最善の可能性が高いので、これが無効になると実際の運用においては問題となる。
例えば、計算機Aの操作者は朝9時に「この顧客は冷やかしなので、親切な対応は不要」と書き込みその後しばらく放置したとします。一方計算機Bの操作者は、お昼の12時に「この顧客から高額な取引の提案有り」との情報を得て、「契約に向け、最大限の接待を行う」と書き込み、サーバーにアップしたとします。しかし、その1分前に計算機Aからの編集がアップされると、計算機Bの編集のアップは後からとなり無効になります。これは、計算機Bの操作者の気まぐれな操作に、計算機Aが対抗出来ない状況です。
特許文献7では、複製データベースでの編集時刻を基に、競合する編集のバージョンを、「時刻の早い順から値が増えるようにコンテンツのバージョンをふり直す(ステップS604)」(特許文献7の段落0065、段落0079)、そして「日時が最も古いコンテンツ情報を最新のバージョンに更新する」(段落0097)としている。つまり、先に編集した方を優先としている。
編集の実行時間が早い方を優先しても問題が生じる場合がある。例えば、ある時点(例えば1年前)の編集結果がある計算機の中にのみ存在しており、ある日突然サーバーにアップされて有効になると、他の計算機によって過去1年間に編集されアップされていた編集内容が全て無効になってしまう。この様な運用は通常は許されないと思われる。
<従来技術の限界>
編集ロックはレコードに対する編集の競合を防ぐものであり、平行DBアクセスにおいて発生する「レコードが参照する先のレコードが存在しない」、「誤った参照が設定されている」などの構造的矛盾は防止できない。編集時間やサーバーへのアップ時間で有効な編集を決定する方法でもこの構造的矛盾は防止できないし、以上に説明した様に、操作者の期待に反する編集が有効にされるなどの問題が発生する。
<参照整合性に関する従来技術>
参照整合性について従来技術を調査した。特許文献8では、情報を一括入力する時に一時的に参照整合性の制約を外し、その後で参照整合性を検査する。特許文献9では「計算機が編集を行っている途中で発生する一時的な参照整合性が壊れた状態を別の計算機が読込むことを防止する」ための工夫である。いずれも、本発明の課題には適用出来ない。
特許文献10では、主テーブルの変更する場合には、その変更に関係するレコードを持つ計算機に即時に通知する。しかしこの通知の複雑な処理よりもサーバーDBアクセスの運用の方が単純明快であるので、平行DBアクセスと組み合わせ、あえて用いる価値は無いと思われる。
特開平11−272534号公報 特開平11−161535号公報 特表2005−503606号公報 特表2005−508050号公報 特開平8−16447号公報 特表2000−501532号公報 特開2005−216167号公報 特開2006−79260号広報 特許3185718号明細書 特許3612449号明細書 「主な機能とメリット」、[online]、2007年4月22日検索、インターネット(URL:http://www.sonicsoftware.co.jp/products/object_store/function.html) 「MVCC(多版型同時実行制御)9.1. はじめに」、[online]、2007年4月22日検索、インターネット(URL:http://www.postgresql.jp/document/pg721doc/user/ mvcc.html #MVC C-INTRO) 「9.5. アプリケーションレベルでのデータの一貫性チェック」、[online]、2007年4月22日検索、インターネット(http://www.postgresql.jp/document/pg721doc/user/applevel-consistency.html) 「Cache Technology Guide」、[online]、2007年4月22日検索、インターネット(URL: http://www.intersystems.co.jp/cache/technologyguide/technologyguide.html) 「主な機能とメリット」、[online]、2007年4月22日検索、インターネット(URL:http://www.sonicsoftware.co.jp/products/object_store/function.html) 「9.5. アプリケーションレベルでのデータの一貫性チェック」、[online]、2007年4月22日検索、インターネット(http://www.postgresql.jp/document/pg721doc/user/applevel-consistency.html) 「ADO.NET におけるデータ同時実行制御の概要」、2007年1月、MSDNサブスクリプションライブラリー(msdn subscriptions Library)、ディスクファイル(URL:ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_raddata/html/d5293098-4a88-4110-abd2-34d9e6661664.htm) 「チュートリアル : 同時実行例外の処理」、2007年1月、MSDNサブスクリプションライブラリー(msdn subscriptions Library)、ディスクファイル(URL: ms-help://MS.MSDNQTR.v80.ja/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_raddata/html/73ee9759-0a90-48a9-bf7b-9d6fc17bff93.htm) 「参照整合性とは」、[online]、2007年1月、[2007年6月6日検索]、インターネット(URL:http://www.leasekin.com/rodan/makepos/02ac2kintro/table_kihon/p01_0130_sansyouseigousei.htm)
処理速度向上のために、レコード間の参照関係を十分に調査すること無くDBを編集すると「データベースに記録された情報の構造的な矛盾」が生じる。これは、単独DBアクセス、サーバーDBアクセス、平行DBアクセスに共通した問題である。
平行DBアクセスにおける情報の編集では、参照整合性の矛盾や、レコードに対する編集の衝突など、DBの構造的な矛盾の発生は必然と言える。複数の計算機で平行してテーブルに情報を追加すれば、これらの情報に付与される主キーの値が重なる可能性もある。これも構造的な矛盾である。
それでも、平行DBアクセスを実現したいのには理由がある。単独DBアクセスでは他の計算機とのデータ共有に問題があるし、サーバーDBアクセスでは「サーバーとの通信が不可能な状況ではデータにアクセスする事は出来ない」という致命的な欠陥がある。移動体では通信不可能なケースが頻発するし、いわゆるミッションクリティカルな業務では通信不可能な状況下でも業務遂行が求められる。サーバーと通信によるレスポンスの遅さも問題である。
閲覧のみでなく編集まで含めた平行DBアクセスが理想とされながらも、いままで実用的なシステムが現れなかったのは、DB編集の結果生じる「データベースの構造的な矛盾」を解決する合理的な方法が示されていなかったためである。本発明では「データベースに記録された情報の構造的矛盾」の一時的な発生を許容し、必要なときに合理的に解決する方法を開示する。
<参照先変更情報の導入>
DBの操作者は、レコード間の参照関係をどの様に変更するかについて明確な意図を持ち、その意図に従ってDBを編集する。その意図どおりに、関係する全ての参照を変更すれば矛盾は生じない。この作業を、従来の様にDBの編集する度に行うと処理負荷が膨大となるので、変更対象のレコードに「参照先変更情報」を指定(記載)しておく。このレコードへの参照を検出したときに、(プログラムが)この「参照先変更情報」の指示に従い参照先を変更する。具体的な説明を以下に示す。
参照先変更情報の設定とは、このレコードを参照していた(他の)レコードが新たに参照すべきレコードの指定である。この時、参照先変更情報を設定したレコードには「削除マーク」を付ける。削除マークのついたレコードを表示しなければ、操作者にとっては削除されたのと同じであり、新規に参照される事も無い。
たとえば、「東京」というレコードに削除マークを付け、その「参照先変更情報」として、「東京」の上位概念である「日本」というレコードを指定する。なお、参照先変更情報をどの様に指定するかは、操作者の判断事項(またはプログラム設計者の判断事項)である。「無指定」というレコードを新たに定義して、これを参照先として「参照先変更情報」に指定しても良い。
いままで「東京」を参照していたレコードを(プログラムで)処理する時に、「参照先変更情報」に従い参照先を「日本」(又は「無指定」)に変更すれば、処理が必要なレコード毎に徐々に矛盾が解消されてゆく。
RDBでは参照されるレコードの集合を主テーブルと呼ぶが、参照先変更情報として同じ主テーブルの別のレコードを指定しても良いし、別の主テーブルのレコードを指定しても良い。参照先変更の無限ループを避けるためには、新たな主テーブルを作成しそのレコードに参照先を変更するのも一案である。
参照先変更情報の発展形として「復活」を指定することが出来る。あるレコードに削除マークが付いており、その「参照先変更情報」として「復活」が指定されていたとする。このレコードを参照するレコードを検出した時には、削除マークを消去することによりレコードを復活させる。
以上でのレコードの削除は、削除マークを付けるだけの論理的な削除であり実際には削除されていないので復活が可能となる。レコードの本当の削除作業を行うのは、長期間の運用により削除マークが付いたレコードが多量になりメモリを圧迫する状況になってからで良い。
実際のレコード削除までに参照先の変更が完了していれば問題ないが、もしも未変更のレコードが残ったとしても、参照先が実際に削除された事を検出したプログラムが表示するメッセージに対応して、操作者が参照先を改めて指定しても(数が少なければ)大きな問題とはならない。本当の削除の実行は処理負荷の少ない時に行う事とし、この削除に際し関連する情報を完全に調査して必要な参照先変更をもれなく実行すれば問題は起きない。
レコードを修正しても他のレコードから参照を修正する必要が無いなら、特に「参照先変更情報」を指定する必要はない。例えば全国の都市名を表示するレコードにおいて、「東京」を「東京都」に変更してもこれを参照するレコードを変更する必要は無い。
以上では、参照整合性の矛盾が一時的に発生する事を許容し、必要なときに徐々に解決していく例を説明した。
<編集の衝突の解決>
平行DBアクセスではさらに、同じレコードに関する編集が衝突する可能性がある。参照先変更情報の適用との関係も含めて対応を明らかにする必要があるが、まずは単純な衝突の解決方法を示す。
「オプティミスティック同時実行制御」や特許文献7では、サーバーへのアップ時間や編集時間の前後で採用する編集を決定していたが、本発明では「より最新の情報に対する編集を優先」する仕掛けを提示する。
具体的には、(a)原本DBが更新される毎にそのDBのバージョンを更新し、(b)計算機に原本DBを複製する際には、そのバージョンを編集の対象となる複製DBのベースバージョンとして記録する。(c)複製DBを編集した計算機がその編集結果を、原本DBを管理する計算機(例えばサーバー)にアップする(送る)際には、そのベースバージョンも通知する。(d)アップした編集内容が別の端末計算機からのアップ内容と衝突した場合には、より新しいベースバージョン(の複製DBへ)の編集を採用する。(e)同じベースバージョンに対する編集ならは先にアップされた方を採用する。上記(d)(e)の処理は、原本DBを管理する計算機(例えばサーバー)で行うのが素直な実装であるが、同じ結果が得られるならば、別の計算機で行っても良いし、複数の計算機で分担して行っても良い。
編集を行う計算機は「(Step 1)原本DBをコピーして複製DBを作成、又は複製DBを最新の原本DBと同期し、(Step 2)複製DBを編集し、(Step 3)複製DBに対する編集内容を複製DBのバージョンと共に原本DBを管理する計算機にアップ」の、一連の処理を行う。(Step 3)の後、原本DBを管理する計算機で前記の(d)(e)の基準で編集の採否が決定される。なお、(Step 2)の間は原本DBを管理する計算機との接続を確保しておく必要は無い。
計算機Aによる(Step 1)と(Step 3)の処理の間に、もしも別の計算機Bからの編集のアップが行われた場合は、とりあえずBの編集内容が採用され原本DBのバージョンが上がる。その後、計算機Aの編集内容がアップされると、Bの編集とどちらを優先するかの判定が行われる。Bの編集のベースバージョンとAの編集のベースバージョンを比較して、より新しい方が採用される。もし編集Aが採用されれば、その時点で編集Bは無効となる。両方のベースバージョンが同じなら、逆に先にアップされた編集Bが採用され、編集Aは無効となる。
編集内容のアップ時点の原本DBのバージョンが、編集のベースバージョンよりも新しくなっている場合は、より新しいベースバージョンの(つまりより新しいDBの複製に対する)編集が、後からアップされ、それが有効になる可能性を示している。
逆に、編集のアップ時点の原本DBのバージョンが、編集のベースバージョンと同じなら、より新しいベースバージョンの編集が、後からアップされる事は無い。またこのアップは同じベースバージョンの編集の中での最初のアップである。従って、このアップが採用され、原本DBが更新され、その結果バージョンがひとつだけ更新される。
編集を行う計算機で、(Step 1)から(Step 3)までの処理を短時間で行うほど、別の編集結果が割り込んでアップされる可能性は極めて小さくなる。(Step 3)の後で、複製DBを原本DBと同期し、原本DBのバージョンを取得して複製DBのベースバージョンとする。この時に、ベースバージョンが一つだけ更新されていれば、先の編集結果が有効になった事が(この計算機から)確認できる。逆に二つ以上後ならば、アップが無効となっているか、又はこれから無効になる可能性がある。
(Step 1)から(Step 3)までの処理を短時間で行うと、オンライン運用(サーバーDBアクセス相当)に極めて近い運用となり、編集の競合が予想されるレコードの編集に有効である。
逆に、編集が競合する可能性が極めて少ないレコードを扱う場合は、(Step 2)の期間を極端に長くし、入力や編集に十分な時間をかけ、そのあとで(Step 3)を実行しても良い。もちろん(Step 2)の間は原本DBを管理する計算機(例えばサーバーなど)と接続しておく必要は無い。
例えば、会社の組織ごとに支払伝票を入力するケースでは、レコードを修正するのは入力ミスや処理ミスを発見した場合であり、修正するとしてもレコードを入力した計算機で行う事が多い。この様なケースでは、(Step 2)の期間を極端に長くしたオフライン運用で問題は無い。たとえインターネット接続が出来ない状況でも支払伝票をゆっくり入力し、決算や検査の近くなってからまとめてアップ(Step 3)すれば良い。
万が一、平行編集によるDBの構造的矛盾が発生したとしても、本発明の方法を(これ以降に説明される方法も含めて)適用する事により、必要な時に矛盾が解消されてゆく。
以上に述べた様に、オンラインに近い運用か、オフラインに近い運用かの選択が(Step 1)(Step 2)(Step 3)の実行周期だけで選択できて、かつ両方の運用が混在できるのが、本発明の「より最新の情報に対する編集を優先」による「編集の衝突の解決」のひとつの長所である。つまり、端末計算機が(Step 1)(Step 2)(Step 3)の実行周期を変更するだけで、ある時はほぼオンライン運用を、またある時はほぼオフライン運用を行う事が出来る。また、ある端末計算機はほぼオンライン運用、別の端末計算機はほぼオフライン運用と言う混在も可能である。
「オプティミスティック同時実行制御」や特許文献7の方法では、先に説明した様に、「ほぼオフライン運用」の計算機からアップされた情報が、「ほぼオンライン運用」の計算機からの情報のアップを妨害する事があった。しかし、本発明の「より最新の情報に対する編集を優先」による「編集の衝突の解決」なら、同じレコードに対する編集は「ほぼオンライン運用」の編集結果が優先される。編集結果を有効にしたければ「ほぼオンライン運用」を行えば良いし、編集の競合が少ないレコードを扱い、かつ通信の手間を省略したい場合には「ほぼオフライン運用」を行えば良い。
「編集結果を有効にしたい場合は、(Step 1)から(Step 3)までの処理を短時間で行えば良い」との指針は人間にとって理解し易いのは、「より最新の情報を基にした判断(編集)が優先される」事は人間の感覚に近くいからである。これは多くの人間がかかわる実際のDB運用に適した特性であり、本発明の「より最新の情報に対する編集を優先」による「編集の衝突の解決」のもうひとつの長所である。
以上に述べた仕組みで、単純な衝突、つまり参照される事がないレコードに対する編集の競合は解決される。なお、以上では、原本DBに対してバージョンを付与していたが、原本DBのテーブルやレコードに対してバージョンを付与して管理しても良い。これは原本DBを細分化したのと同じである。
<参照先変更情報の衝突の解決>
参照される可能性のあるレコードに対する編集が衝突するケースについてはさらに考察が必要である。説明のため、編集Xと編集Yが衝突、つまり両者が同じレコードに対し異なる「参照先変更情報」を設定し、「より最新の情報に対する編集を優先する」仕掛けにより、編集Xが採用されたと仮定する。
問題は、編集Yが無効と判定される前に、編集Yによって設定された「参照先変更情報」により、一部のレコードの参照先が変更されてしまう事である。例えば、編集Yを行った計算機の中で、その「参照先変更情報」に従って一部のレコードの参照先の変更を行い、その後、編集Yをアップしたところ、(編集Xが有効と判定されて)編集Yが無効になった場合である。編集Yによる参照先変更の後に編集Xによる参照先変更を行った結果が、編集Xのみによる参照先変更結果と同じになる保証は無い。
この問題を解決する手順を以下に示す。参照される可能性のあるレコードを計算機で編集したら、この計算機内部で参照先変更情報に基づく参照の変更処理を行う前に、編集情報をアップし、最新の原本DBに複製DBを同期させ、複製DBのベースバージョンを更新する。ベースバージョンが一つだけ更新されていれる事を確認した後で、つまりこの編集が採用された事を確認した後で、参照先変更情報に基づく参照の変更を行う。
先の例ならば、編集Xを送った計算機は編集Xが採用された事を確認して、これに基づいて参照の変更処理を行う。編集Yを送った計算機は編集Yが無効になり、編集Xが採用されている事が確認できるので、必要ならば改めて編集を行う。編集Xに基づく参照先変更を行っても良い。
また、あるレコードに対する参照先変更情報が複数回変更されている場合に、途中の参照先変更情報を飛ばして最後の参照先変更情報のみで参照先を変更すると、矛盾が生じる。そこで、参照を設定した時点、又は参照を確認した時点の(複製DBの)ベースバージョンを記録しておく。
ひとつのレコードが複数の参照を持つ場合、個々の参照毎にベースバージョンを記録する事も可能だが、レコードに記録する情報量が多く管理も煩雑になる欠点がある。そこでレコード毎に、レコードバージョン(レコードに記録するバーション)として記録する。
レコードが新規に作成されたとき、又はレコードの内容が一部でも変更された時に、その時点の(複製DBの)ベースバージョンをレコードバージョンに記録・更新する。参照先の設定・変更も内容の変更であるので、レコードバージョンを更新する。また(少なくとも一つの)参照先を変更した時、またはそれ以外の変更を行った時は、そのレコードの全ての参照をチェックし、参照先に参照先変更情報が設定されていれば、それに従って参照先を変更する。この結果、このレコードのすべての参照は、レコードバーションに記録されたベースバージョンの複製DBで更新または確認されたものとなる。
レコードの追加に際して、そのレコードに与える主キー(ID)も以上の仕組みを応用して設定する事も出来る。具体的には次の主キーを記録しておくレコード(K)をDB内に設定する。新規に作成するレコード(Z)の主キーにこのKの値を用い、その後Kの値を更新する。Kの更新が「より最新の情報を対象にした編集を優先する」ルールに照らして有効とされればレコードの追加は完了だが、無効と判断された場合はKの値の更新が無効になり、レコード(Z)の追加も無効として処理する。
しかし、レコードの追加を確定するには「(Step 1)から(Step 3)を速やかに行う」必要があり、「ほぼオフライン運用」の適用範囲を狭める事になる。従って「ほぼオフライン運用」を重視する場合は、各計算機がレコードに付与する主キー(ID)の範囲が重ならない様に、あらかじめ指定しておく方法が望ましい。
本発明の、参照先変更情報を用いた方法により、一時的に発生する参照整合性の矛盾は必要な時に徐々に解消されていく。これにより、DB編集毎に行う参照整合性の検査が不要となり、編集処理が高速になる。
また、「より最新の情報を対象にした編集を優先」する方法により、平行DBアクセスでの編集の衝突を合理的に解消する事が出来る。この方法では扱う情報の性質に応じて、オンラインに近い運用か、オフラインに近い運用かの切り替えが自由に行える。異なる運用(オンラインに近い運用、又はオフラインに近い運用)の計算機がサーバーを介して一緒に運用出来るのも大きな特徴であり、複数の計算機がDBを共有するケースに大きな自由度を与える。
「参照先変更情報を用いた方法」と「より最新の情報を対象にした編集を優先」する方法を組み合わせる事により、平行DBアクセスでの編集により発生する矛盾を合理的に解消する事が出来る。特に「参照される可能性のあるレコードを編集」する場合に効力を発揮する。
平行DBアクセスには「DBを介して他の計算機と情報交換が可能」、しかも「外部との通信が不可能な場合でもDBの操作を行う事が出来る」、「サーバーと通信によるレスポンスの遅れも無い」などの長所があるが、必然的に発生するデータベースの構造的矛盾を解消する方法が無いため、編集を平行して行う事は困難であった。しかし、本発明によりこれらの問題が解決され、実用的な平行DBアクセスのシステムが可能になった。移動体によるDBアクセスやミッションクリティカルな業務への適用が期待される。また、常に通信網との接続する手間や費用を省きたいケースにも有効である。
一般的な計算機の構成 プログラムにより実現された機能を提供する手段の集合としての計算機の構成 参照先を変更する手順 参照先変更情報を設定する手順 「より最新の情報に対する編集を優先」するための端末計算側の処理 「より最新の情報に対する編集を優先」するためのサーバー計算側の処理 他のレコードから参照される可能性のあるレコードを編集する端末計算側の処理 参照先変更の実施例1、2、3 参照先変更の実施例4 参照先変更の実施例5 DBのバージョン管理の実施例
符号の説明
0100 計算機
0102 通信装置
0103 演算装置
0104 主記憶装置
0105 主記憶装置内のDB(データベース)
0106 二次記憶装置
0107 入出力装置
0108 表示装置
0109 バス
0110 通信網
0111 二次記憶装置内のDB(データベース)
0201 送信手段
0202 受信手段
0203 参照先変更手段
0204 参照先変更情報指定手段
0205 DB(データベース)
0206 編集の有効性判定手段
0301 レコードを取り出す処理
0302 このレコードに記録されている参照先レコードを特定する処理
0303 この該参照先レコードに記録されている参照先変更情報を特定する処理
0304 この参照先変更情報に対応する参照先変更処理を起動する処理
0305 得られた新しい参照先を先に取り出した(0301)レコードの新たな参照先とする処理
0401 レコードを取り出す処理
0402 参照先変更情報を指定する処理
0501 複製DBを原本DBに同期させる処理
0502 原本DBのバージョンを複製DBのベースバージョンとして記録する処理
0503 複製DBの編集
0504 判定
0505 編集内容と編集対象DBのベースバージョンをサーバーに送る処理
0601 編集されアップされたレコードを順番に取り出す処理
0602 このレコードのレコードバージョン(NRV)を特定する処理
0603 このレコードに対応する原本レコードのレコードバージョン(ORV)を特定する処理。
0604 レコードバージョンの比較
0605 新たにアップされたレコードを原本DBで有効とする処理
0606 原本DBのバージョンをひとつ更新する処理
0701 参照される可能性のあるレコードを編集する処理
0702 編集内容とベースバージョン(BV1)をサーバーに送る処理
0703 複製DBを原本DBに同期させる処理
0704 新たなベースバージョン(BV2)を取得し記録する処理
0705 BV2とBV1の比較
0801 従テーブル
0802 主テーブルA
0803 主テーブルB
0804 項目n
0901 参照先レコードのラベルを取り出す処理
0902 あらかじめ指定された「本社」の文字列が含まれるかをチェックする処理
0903 判定
0904 参照先を変更する処理
1001 ノードP
1002 ノードR
1003 ノードQ
1004 ノードを特定する処理
1005 テーブルとレコードが指定されているかを確認する処理
1006 参照元レコードの参照先を変更する処理
1007 上位レコードを特定する処理
1101 サーバー
1102 計算機A
1103 計算機B
1104 原本DB
1105 複製DB(Aの内部)
1106 複製DB(Bの内部)
1107 レコードXの原本
1108 レコードXの複製(Aの内部)
1109 レコードXの複製(Bの内部)
1110 同期(Aの複製DBを新規作成)
1111 同期(Bの複製DBを新規作成)
1112 同期(Aの複製DBの更新その1)
1113 (AによるXの複製に対する)編集
1114 (Aからサーバーへの)編集の送信
1115 Xの原本の更新(計算機Aの修正の反映)
1116 (Aの修正が有効との)確認と同期
1117 同期(Bの複製DBを更新)
1118 (BのXの複製に対する)編集
1119 (Bからサーバーへの)編集の送信
1120 Xの原本の更新(計算機Bの修正の反映)
1121 (Bの修正が有効との)確認と同期
1122 同期(Aの複製DBの更新その2)
1123 Xの原本の修正(原本に反映された計算機Bの修正の反映)
本発明の請求項に記載された方法は計算機のプログラムとして実現されるのが一般的である。図1に典型的な計算機0101の構成を示す。演算装置0103、主記憶装置0104、二次記憶装置0106、入出力装置0107、表示装置0108がバス0109で接続されている。他の計算機とデータを交換する場合は通信装置0102を介して通信網0101に接続する。各請求項で言及している「データベース」が、二次記憶装置0106内のDB0111又は主記憶操作0104の内部のDB0105である。
プログラムは二次記憶装置0106に記録され、起動されると主記憶操作0104に展開され、プログラムに指定された手順で演算装置0103が動作する。この結果として計算機は、プログラム開発者が意図した動作を実現する手段の集合体に再構成される。請求項に記載された方法を実現する機能構成を図2に示す。
プログラムによるDBの操作は、DBの全体または一部を主記憶操作0104に展開してから行うのが一般的である。二次記憶装置0106内のDB0111の全部又は一部を主記憶操作0104に展開したDB0105を操作し、その編集結果を二次記憶装置0106内のDB0111に書き込む。しかし通常は、DBは二次記憶装置0106内に有るとし、主記憶操作0104に展開したDB0105と区別せず議論するので、図2では両者を統合した概念としてのDB0205を示している。
「参照先変更手段0203」は請求項1の「レコードに対して記録された情報に基づき該レコードへの参照を別のレコードへの参照に変更する工程」または請求項2「削除マークの付いたレコードに対する参照を検出したら、削除マークを消去する工程」を実現する。
「参照先変更情報指定手段0204」は請求項3の「レコードへの参照を別のレコードへの参照に付け替える情報を、該レコードに対して記録する工程」を実現する。
「編集の有効性判定手段0206」は請求項4の『複数の「複製に対する編集内容と、この複製が作成された時の原本データベースのバージョンの組み合わせ」の中で、より新しいバージョンに対する編集内容を有効とし、原本データベースに反映する工程』、を実現する。これは編集の有効性を判定する処理を実装する計算機(例えばサーバーなど管理機能を実装する計算機)に存在する必要がある。送信手段0201と受信手段0202は、計算機間の通信に用いられる。
図3から図7は請求項1から請求項5の手順を説明したものである。請求項1に相当する処理手順が図3である。レコードを取り出し0301、このレコードに記録されている参照先レコードを特定0302し、該参照先レコードに記録されている参照先変更情報を特定し0303、この参照先変更情報に対応する「参照先変更処理」を起動する0304、得られた新しい参照先を先に取り出した(0301)レコードの新たな参照先とする0305。この「参照先変更処理」の内容は、ここまでの説明では単に指定されている参照先を取得するだけであるが、これ以外の例については実施例で説明する。
図3は請求項2の処理にも対応する。レコードを取り出し0301、このレコードに記録されている参照先レコードを特定し0302、該参照先レコードに記録されている参照先変更情報を特定し0303、この参照先変更情報に対応する「参照先変更処理」を起動する0304。「復活」を検出すれば、該参照先レコードの削除マークを消去する。このケースでは、参照先に変更は無いので「得られた新しい参照先を先に取り出した(0301)レコードの新たな参照先とする」0305で行う事は無い。
請求項3に相当する処理手順が図4である。まずレコードを取り出す0401。該レコードへの参照を別のレコードへの参照に付け加える情報を該レコードに指定する処理が「参照先変更情報を指定する」処理0402である。
本発明の「より最新の情報に対する編集を優先」する方法を実現するために、編集を行う計算機では図5に示す処理を行う。まず複製DBを原本DBに同期させる0501。実際には状況に応じて、新規に複製DBを作成する場合や差分情報を取得して複製DBを更新する場合がある。同時に原本DBのバージョンを複製DBのベースバージョンとして記録する0502。その後、複製DBの編集0503を必要なだけ0504繰り返し、その後アップする0505。ここでアップとは、サーバーなど原本DBを管理する機能を実装する計算機へ編集内容と編集対象DBのベースバージョンを送る事である。
請求項4はアップされた編集の有効・無効を判定する処理である。「より新しいバージョンの編集を特定する」ひとつの実施方法として、レコード毎にレコードバージョンを記録する。レコードが作成された時、その時点の(複製DBの)ベースバージョンをレコードバージョンとして記録する。また、レコードの内容が一部でも修正された時には、その時点の(複製DBの)ベースバージョンをレコードバージョンとして記録する。
このレコードバージョンを用いて請求項4の処理を詳細に説明したのが図6である。編集され新たにアップされたレコードを順番に取り出す0601。このレコードのレコードバージョン(NRV)を特定し0602、このレコードに対応する原本レコードのレコードバージョン(ORV)を特定し0603、これらのレコードバージョンを比較する0604。NRV > ORV ならば、新たにアップされたレコードを原本DBで有効とし0605、NRV = ORV 又は NRV < ORVならば新たにアップされたレコードを無効とし次のレコードの処理に移る。編集され新たにアップされたすべてのレコードについて以上の処理が完了したら、原本DBのバージョンをひとつだけ更新する0606。なお、バージョン管理については実施例6で詳細に説明する。
請求項5は、他のレコードから参照される可能性のあるレコードを編集する場合の手順であり、その流れを図7に示す。まずは、図5の手順と同様に、計算機の複製DBを原本DBに同期する0501。同時に原本DBのバージョンを複製DBのベースバージョンとして記録する0502。
その後、参照される可能性のあるレコードの編集0701を行い、編集内容とベースバージョン(BV1)をサーバーに送る0702。その後速やかに、複製DBを原本DBに同期させ0703、原本DBの新たにバージョンを、新たなベースバージョン(BV2)として取得し、記録する0704。BV2がBV1の次の値ならば0705、参照される可能性のあるレコードの編集は完了したので、次の処理に移る事が出来る。この次の処理で扱うレコードの参照先に「参照先変更情報」があれば、これに従い参照先を変更する。BV2がBV1の次の値で無い場合は0705、参照される可能性のあるレコードの編集0701を再度試みる事ができる。
<参照先が変更されない例>
図8を用いて、参照先変更情報の設定と変更処理の具体例を示す。図8の従テーブル0801に複数のレコードが記録されており、「項目n」0804に主テーブルA0802のレコードへの参照が記録されている。
従テーブル0801のID=aのレコードは主テーブルA0802のID=1のレコードを参照している。このレコードの「参照先変更情報」は「無指定」なので前記の従テーブルのレコードからの参照が変更される事は無い。
<復活の例>
図8の例では「表示=Fasle」の指定が「削除フラグ」に相当する。つまり
レコードが操作者画面に表示されなければ、利用者にとって削除されているのと同じである。主テーブルA0802ではID=2,3,4のレコードが削除状態(表示=Fasle)にある。従テーブル0801のID=bのレコードを処理する時に、主テーブルAのID=2のレコードの「参照先変更情報」を参照し、「復活」が指定されているので「表示=True」とする。以上により復活の作業を完了したので「復活」指定を「無指定」に変更する。
<参照が変更される例>
参照先変更情報が「変更先レコードID=X」(Xは説明のための仮のID:主キー)の場合、対応する参照先変更処理は、このレコードへの参照を指定されたレコードへの参照に変更する。つまり、従テーブルからこのレコードへの参照が有ればこの参照をレコード=Xへの参照に変更する。
図8の従テーブル0801のID=cのレコードは当初、主テーブルA0802のID=3のレコードを参照している。このレコードの「参照先変更情報」には「変更先レコード=5」が指定されている。そこで、従テーブルのID=cのレコードの参照先をID=5に変更する事とし、従テーブルのID=cのレコードの「項目n」の(主テーブルAのID)3を5に書き換える。
<参照変更の循環防止>
主テーブルを大幅に変更すると参照の変換に循環が起きる可能性がある。この場合は従来の主テーブルと新しい主テーブルの両方を用意しておいて、従来の主テーブルへの参照を新しい主テーブルへの参照に切り換えることにより循環参照が防止出来る
参照先変更情報が、「テーブル指定=S」(Sは説明のための仮のテーブル名)+「変更先レコード=Y」(Yは説明のための仮のID:主キー)の場合、対応する参照先変更処理は、このレコードへの参照を、指定されたテーブルSの指定されたレコードYへの参照に変更する。
図8の従テーブル0801のID=dのレコードは当初、主テーブルA0802の4(ID=4のレコード)を参照している。このレコードの「参照先変更情報」には「主テーブルB」「変更先レコード=1」が指定されている。そこで参照先を主テーブルB0803のID=1のレコードとし、従テーブルのID=dのレコードの「項目n」0804を書き換える。
なお、図8では説明のために「同じテーブルへの参照先変更」と「別のテーブルへの参照先変更」混在させているが、現状のRDBでは、従テーブルのある項目が参照する主テーブルは一つと制限されている事が多い。従って、本発明を用いる際には、RDBが認識するテーブルは変換後の主テーブルのみとし、元の主テーブルは本発明に基づくプログラムだけがアクセスするのが現実的である。
<変換先指定ロジック>
「参照先変更情報」として「同じテーブルの別のレコード」+「変更先指定ロジック=Z」(Zは説明のための仮のロジック指定ラベル)が指定されている場合、または、「参照先変更情報」として「別テーブルのレコード」+「変更先指定ロジック=Z」が指定されている場合の参照先変更処理は以下である。従テーブルから主テーブルのこのレコードを参照した場合は、Zで特定される変更ロジックを起動し、その結果に従って、参照元レコードの参照先を変更する。
図9の従テーブルのID=eのレコードは当初、主テーブルAのID=11のレコードを参照している。このレコードの「参照先変更情報」には「同じテーブルの別のレコード」「変更先指定ロジック=Z」が指定されている。そこでロジックZを起動する。
図9はロジックZを以下の様に実装した例を示している。まず当初の参照先レコードのラベルを取り出す0901、この例では「本社屋」である。次に、あらかじめ指定された文字列、例えば「本社」、が含まれるかをチェック0902し、含まれる事を確認0903したら、従テーブルのID=eのレコードの参照先を主テーブルAのID=13のレコードへの参照に変更する0904。従テーブルのID=fのレコードも当初は主テーブルAのID=12のレコードを参照しているが、同様に主テーブルAのID=13のレコードへの参照に変更される。この様にして、「本社屋」「本社管理部」「本社」と、同じ概念が異なるレコードで表現され、それぞれ別個に参照されていたが、「本社」レコードへの参照に統一される。
<変更ツリーによる参照先変更>
「参照先変更情報」として、「変更ツリーのノード=V」(Vは説明のための仮のノードラベル)が指定されている場合、ノードVに対して指定されているレコードに変更する。ノードVに対して(参照変換先の)レコードが指定されていなければ、ノードVの上位ノードを順にたどり最初に見つけたレコードに参照先を変更する。
図10の従テーブルのID=hのレコードは当初、主テーブルAのID=21のレコードを参照している。このレコードの「参照先変更情報」には「変更ツリーのノード=P」が指定されている。そこでノードP1001を特定し1004、テーブルとレコードが指定されているかを確認し1005、「主テーブルBのID=32」が指定されているので、これを参照元レコードの参照先として書き換える1006。従テーブルのID=iのレコードは当初、主テーブルAのID=22のレコードを参照している。このレコードの「参照先変更情報」には「変更ツリーのノード=Q」が指定されている。そこでノードQ1003を特定し1004、これにテーブルとレコードが指定されているかを確認1005する。ノードQには指定が無いので、上位のノードつまりノードR1002を特定し1007、再度これにテーブルとレコードが指定されているかを確認し1005、「主テーブルBのID=31」が記入されているので、これを参照元レコードの参照先とし1006、参照元レコードに書き込む。
「参照先変更情報」が指定されたレコードが新たに参照される事を防止するためには、表示しないのが良い。図10では主テーブルAは表示されず、新しい主テーブルである主テーブルBのみが表示される。従って、操作者が主テーブルAのレコードを参照先として選択する事はできない。図9の例では、ID=11, 12 のレコードは表示されず(表示=Flase) ID=13のレコードのみが表示される。つまり新たな参照先として設定出来るのは、「本社」のみである。
「参照先変更情報」が指定され、表示=Flaseとなっているレコードや、古い主テーブルも参照先変更情報を指定・変更する操作者には(当然)表示する。
参照先変更処理は従テーブルからの参照を行う(つまりプログラムで参照先の情報にアクセスする)ときに実行しても良いし、優先度の高い処理が実行されていない時にまとめて変更しておいても良い。
<DBのバージョン管理>
本発明の「より最新の情報に対する編集を優先」する方法を実施するには、原本DBのバージョンと複製DBのベースバージョンを管理する必要がある。この仕組みを図11で説明する。
原本DB1104はサーバー1101に置かれ、計算機A1102がその複製DB1105を、計算機B1103も複製DB1106を持っている。原本DB1104の最初のバージョンは0で、その複製DBのベースバージョンもそれぞれ0である。なお請求項4に関し先に説明した様に、原本DBおよび複製DB内部のレコードに毎にレコードバージョンを記録する。レコードバージョンはそのレコードが新規に作成された時、または一部でも修正された時のベースバージョンの記録である。図10のレコードXの原本および複製のレコードバージョンの初期値0である。
計算機Aは最初の同期1110で複製DBを作成し、計算機Bも最初の同期1111で複製DBを作成している。どちらもベースバージョンは0である。その後、原本DBのバージョンは0から6まで更新されているが、これは計算機A、B以外の計算機から編集情報がサーバーにアップされた結果である。図11では、計算機A1102はもう一度同期1112を行い複製DBのバージョンが1になっている。
さて、計算機Aは複製DB1105内のレコードXの複製1108を編集1113したとする。この時、複製DBのベースバージョンが1なので、レコードXの複製1108のレコードバージョンを1にする。この編集結果のレコードと複製DB1105のベースバージョンがサーバーにアップされ1114、サーバーで有効と判定されると原本DB1104が更新され、原本DBのバージョンが7に変わる。レコードXの原本も計算機Aが編集した内容に更新1115される。サーバーからの「編集が有効になったとの確認」1116を計算機Aが受けた後に同期1116を行い、計算機Aの複製DBのベースバージョンも7になる。
プログラムがレコードを処理する時にその参照先の参照先変更情報も確認し、参照先変更情報があれば参照先を変更する。この参照先の変更でもレコードの内容の一部が修正されるのでレコードバージョンはそのときのベースバージョンに設定される。つまり(レコードに記録された)レコードバージョンより前のバージョンで指定された参照先変更情報の確認は、このレコードでは完了している。新たに参照先変更情報による参照の変更を行う場合、記録されていたレコードバージョンより後に設定された参照先変更情報を古い方から順番に適用する。これにより参照先の変更が矛盾なく行われる。
一方、計算機Bは原本DB1104のバージョン6の時点で同期1117を行い、複製DB1106のバージョンが6になる。この後でレコードX(の複製)1109を編集1118する。この時、レコードバージョンが6になり、サーバーにアップされる1119。そして、サーバーの検査で、計算機Bが編集の直前に行った同期1117の後に、計算機Aによる(レコードXに対する)修正がアップされているので、レコードXに対する編集の衝突が検出される。
計算機Aの修正アップのベースバージョンは1(レコードXの原本のレコードバージョンが1)で、計算機Bの修正アップのベースバージョンは6(計算機Bで修正されたレコードXの複製のレコードバージョンが6)であるので、計算機Bの修正が採用され、レコードXの原本は計算機Bが修正した内容に更新1119される。この時、原本DBのバージョンが8に変わる。サーバーからの「修正が有効になったとの確認」1121を計算機Bが受けて同期を行い、計算機Bの複製DBのベースバージョンも8になる。
その後、計算機Aが原本DBと同期をとったとする1120。この時点で、先に計算機Bが編集して有効になったレコードXの内容が端末Aの複製DBに伝わる。つまり、先に計算機Aが行った修正が、計算機A の複製DBで(この時点で)無効になる。なお、以前の編集が無効になった事を操作者に伝えるには、別途そのための仕掛けが必要である。
DBの編集処理が高速になるだけではなく、DBの平行編集、つまり原本DBを複数の計算機で複製(コピー)し、複数の計算機で平行して複製DBを編集し、その結果を原本DBに反映する運用が可能となった。これは、サーバーとの接続が不可能な状況でも処理の継続が可能である事を意味し、移動体によるDBアクセスやミッションクリティカルな業務へ適用出来る。また常に通信網との接続する手間や費用を省きたい要求にも答えられる。また、オンライン運用に近い運用かオフライン運用に近い運用かを、計算機毎にそれぞれの処理内容に応じて選択できて、さらには、オンラインに近い運用の計算機や、オフラインに近い運用の計算機がサーバーを介して一緒に運用できるので、DB運用に大きな自由度を与える。

Claims (5)

  1. コンピュータに、記録媒体に記録されたデータベースを操作する手順を、実行させるためのプログラムであって、
    「(A−1)参照元レコードにアクセスし、該参照元レコードに記録された参照先情報にアクセスし、
    (A−2)該参照先情報の「該参照元レコードが参照する参照先レコード」の指定に基づき該参照先レコードにアクセスし、
    (A−3)該参照先レコードに記録された「該参照先情報を、別のレコードを示す別の参照先情報に、変更する指示を記録した参照先変更情報」にアクセスし、(A−4)該参照先変更情報に基づき、該「別のレコード」を示す様に該参照先情報を変更する」、
    一連の手順により参照先情報を変更する工程を、実行させるためのプログラム。
  2. 記憶装置に記憶されたデータベースを操作する装置であって、
    「(a−1)参照元レコードに、参照先レコードが指定された参照先情報が記録され、
    (a−3)「参照先レコードに、参照元レコードの参照先情報を、別のレコードを示す別の参照先情報に、変更する指示を記録した参照先変更情報」が記録された」
    データベースを記憶する記憶装置と、
    「(A−1)参照元レコードにアクセスし、該参照元レコードに記録された参照先情報にアクセスし、
    (A−2)該参照先情報の「該参照元レコードが参照する参照先レコード」の指定に基づき該参照先レコードにアクセスし、
    (A−3)該参照先レコードに記録された「該参照先情報を、別のレコードを示す別の参照先情報に、変更する指示を記録した参照先変更情報」にアクセスし、(A−4)該参照先変更情報に基づき、該「別のレコード」を示す様に該参照先情報を変更する」、
    一連の手順を実行する参照先変更手段を、具備する装置。
  3. コンピュータに、記録媒体に記録されたデータベースを操作する手順を、実行させるための、請求項1に記載のプログラムであって、
    請求項1の(A−4)に記載された手順の直前に、または直後に、または平行して、
    「該「別のレコード」に、「プログラムはこのレコードを削除されたレコードとして扱う」フラグが、記録されていた場合、該フラグを、「プログラムはこのレコードを削除されていないレコードとして扱う」フラグに変更する」、
    手順を、実行させるためのプログラム。
  4. コンピュータに、記録媒体に記録されたデータベースを操作する手順を、実行させるための、請求項1に記載のプログラムであって、
    請求項1に記載された手順(A−4)の直前に、該「参照先変更情報」の有効性を「あらかじめ与えられた基準」で判定し、
    有効と判定された該「参照先変更情報」に基づいて、請求項1に記載の(A−4)を行う手順を、実行させるためのプログラム。
  5. コンピュータに、記録媒体に記録されたデータベースを操作する手順を、実行させるための、請求項1に記載のプログラムであって、
    請求項1に記載の一連の手順を実行する工程とは独立して起動される、
    「参照元レコードに記録された参照先情報を、別のレコードを示す別の参照先情報に、変更する指示を記録した参照先変更情報」を参照先レコードに記録する工程を実行させるプログラム。
JP2009517725A 2007-06-06 2008-06-04 データベース矛盾解消方式 Expired - Fee Related JP4573277B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007150665 2007-06-06
JP2007150665 2007-06-06
PCT/JP2008/001424 WO2008149552A1 (ja) 2007-06-06 2008-06-04 データベース矛盾解消方式

Publications (2)

Publication Number Publication Date
JPWO2008149552A1 JPWO2008149552A1 (ja) 2010-08-19
JP4573277B2 true JP4573277B2 (ja) 2010-11-04

Family

ID=40093384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009517725A Expired - Fee Related JP4573277B2 (ja) 2007-06-06 2008-06-04 データベース矛盾解消方式

Country Status (4)

Country Link
US (4) US20100198789A1 (ja)
JP (1) JP4573277B2 (ja)
CN (2) CN101765831B (ja)
WO (1) WO2008149552A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678996B2 (en) 2007-06-06 2017-06-13 Kunio Kamimura Conflict resolution system for database parallel editing

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171003B2 (en) 2007-06-06 2012-05-01 Kunio Kamimura Method and apparatus for changing reference of database
US8782003B1 (en) * 2011-05-13 2014-07-15 Emc Corporation Synchronization of storage using log files and snapshots
US8745003B1 (en) 2011-05-13 2014-06-03 Emc Corporation Synchronization of storage using comparisons of fingerprints of blocks
US8788454B2 (en) * 2011-08-29 2014-07-22 Red Hat, Inc. Work optimization
US8868874B2 (en) * 2012-02-01 2014-10-21 International Business Machines Corporation Managing remote data replication
US8990168B1 (en) * 2012-06-21 2015-03-24 Emc Corporation Efficient conflict resolution among stateless processes
US8635373B1 (en) 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
CN103778136A (zh) * 2012-10-19 2014-05-07 阿里巴巴集团控股有限公司 一种跨机房数据库同步方法及系统
US9767023B2 (en) 2013-06-12 2017-09-19 Nec Corporation Method of controlling data writing to persistent storage device
US20150178294A1 (en) * 2013-12-19 2015-06-25 International Business Machines Corporation Resolving content editing conflicts arising from concurrent drafts
KR20150101232A (ko) * 2014-02-26 2015-09-03 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치의 동작 방법
US10175976B1 (en) * 2015-07-16 2019-01-08 VCE IP Holding Company LLC Systems and methods for avoiding version conflict in a shared cloud management tool
CN107656937B (zh) * 2016-07-26 2021-05-25 北京京东尚科信息技术有限公司 用于实现读写数据一致性的方法和装置
CN111506583A (zh) * 2019-01-31 2020-08-07 北京嘀嘀无限科技发展有限公司 更新方法、更新装置、服务器、计算机设备和存储介质
US10979300B2 (en) * 2019-06-20 2021-04-13 Kaloom Inc. Computing device and methods for synchronizing networking information with a topology server
CN111061747B (zh) * 2019-12-11 2023-08-29 金蝶软件(中国)有限公司 业务单据数据的更新方法及相关设备
CN112434051A (zh) * 2020-11-03 2021-03-02 北京思特奇信息技术股份有限公司 一种音乐版权数据高效入库的方法及系统
CN113468197A (zh) * 2021-07-21 2021-10-01 上海星融汽车科技有限公司 数据更新方法、电子设备及计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6257070A (ja) * 1985-09-06 1987-03-12 Hitachi Ltd デ−タ処理方式
JPH05189284A (ja) * 1992-01-10 1993-07-30 Toshiba Corp 関係型データベース管理システム

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3422478A1 (de) 1984-06-16 1985-12-19 Carl Kurt Walther Gmbh & Co Kg, 5600 Wuppertal Fliehkraft-gleitschleifmaschine
JPS61134853A (ja) * 1984-12-05 1986-06-21 Oki Electric Ind Co Ltd 並列実行制御装置
JP3020539B2 (ja) 1990-03-07 2000-03-15 株式会社日立製作所 並列動作型データベース管理方式
US5325496A (en) * 1991-12-24 1994-06-28 Intel Corporation Selectable pointer validation in a computer system
JPH05204727A (ja) * 1992-01-27 1993-08-13 Hitachi Ltd デ−タベ−ス管理方法およびそのシステム
JPH05233405A (ja) 1992-02-18 1993-09-10 Hitachi Ltd データベース変更監視方式
JPH0991184A (ja) 1995-09-25 1997-04-04 Fujitsu Ltd 図面システム
US5890176A (en) * 1996-04-24 1999-03-30 International Business Machines Corp. Object-oriented document version tracking method and apparatus
US5781910A (en) 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US5870765A (en) * 1996-10-09 1999-02-09 Oracle Corporation Database synchronizer
US5884325A (en) * 1996-10-09 1999-03-16 Oracle Corporation System for synchronizing shared data between computers
US5926816A (en) * 1996-10-09 1999-07-20 Oracle Corporation Database Synchronizer
US7302446B1 (en) 1996-11-13 2007-11-27 Intellisync Corporation Synchronizing databases
JP3196925B2 (ja) * 1997-01-13 2001-08-06 日本電気株式会社 関係データベース遅延制約チェック方式
JPH113368A (ja) 1997-06-11 1999-01-06 Nippon Telegr & Teleph Corp <Ntt> 分散環境におけるスケジュールデータ管理方法及びシステム及びスケジュールデータ管理プログラムを格納した記憶媒体
JP3563591B2 (ja) 1997-09-29 2004-09-08 株式会社リコー 分散型データベースシステムの一貫性管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP3534596B2 (ja) 1997-12-05 2004-06-07 富士通株式会社 インテリジェントネットワーク内のデータベースの同期方法と装置
US6151606A (en) * 1998-01-16 2000-11-21 Visto Corporation System and method for using a workspace data manager to access, manipulate and synchronize network data
JP4187302B2 (ja) 1998-03-25 2008-11-26 富士通株式会社 リレーショナルデータベース同期方法およびそのプログラムを記録した記録媒体
JP2000020370A (ja) 1998-06-29 2000-01-21 Sharp Corp データ同期処理装置
JP4689137B2 (ja) 2001-08-08 2011-05-25 株式会社日立製作所 リモートコピー制御方法、及びストレージシステム
JP2000132603A (ja) 1998-10-27 2000-05-12 Nippon Telegr & Teleph Corp <Ntt> 分散環境におけるスケジュールデータ管理方法および装置とスケジュールデータ管理プログラムを記録した記録媒体
US6343299B1 (en) * 1998-11-16 2002-01-29 International Business Machines Corporation Method and apparatus for random update synchronization among multiple computing devices
JP2000194592A (ja) 1998-12-25 2000-07-14 Nippon Telegr & Teleph Corp <Ntt> デ―タベ―スシステム、デ―タベ―スアクセスシステム、およびデ―タベ―スアクセスプログラムを記録した記録媒体
JP2000222268A (ja) 1999-01-29 2000-08-11 Hitachi Ltd 複数のコンピュータ間におけるファイルの同期方法
JP2000284998A (ja) * 1999-03-31 2000-10-13 Ricoh Co Ltd データ更新制御システム、データ更新制御方法、その方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000339211A (ja) 1999-05-25 2000-12-08 Casio Comput Co Ltd ファイル処理装置、ファイル処理システム、及び記憶媒体
US6952741B1 (en) * 1999-06-30 2005-10-04 Computer Sciences Corporation System and method for synchronizing copies of data in a computer system
US6701345B1 (en) * 2000-04-13 2004-03-02 Accenture Llp Providing a notification when a plurality of users are altering similar data in a health care solution environment
US6598059B1 (en) * 2000-04-22 2003-07-22 Oracle Corp. System and method of identifying and resolving conflicts among versions of a database table
JP2002032248A (ja) * 2000-07-19 2002-01-31 Ricoh Co Ltd データベース問合せ処理におけるトランザクションの版の提供システム及び該システムにより提供された版を用いたデータベース問合せ処理システム
US6529917B1 (en) * 2000-08-14 2003-03-04 Divine Technology Ventures System and method of synchronizing replicated data
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US6892210B1 (en) * 2000-12-29 2005-05-10 Worldsync, Inc. Database management and synchronization across a peer-to-peer network
JP4137391B2 (ja) 2001-02-19 2008-08-20 株式会社リコー データ管理装置、方法、プログラム、及び記録媒体
US7177866B2 (en) * 2001-03-16 2007-02-13 Gravic, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
US7062503B1 (en) * 2001-08-28 2006-06-13 Emc Corporation Shuttle-based mechanism for numbering concurrent chains of independent data transfers
US6874001B2 (en) * 2001-10-05 2005-03-29 International Business Machines Corporation Method of maintaining data consistency in a loose transaction model
US7149761B2 (en) * 2001-11-13 2006-12-12 Tadpole Technology Plc System and method for managing the synchronization of replicated version-managed databases
JP4279499B2 (ja) 2002-03-01 2009-06-17 シャープ株式会社 情報処理装置
US7058664B1 (en) * 2002-04-29 2006-06-06 Sprint Communications Company L.P. Method and system for data recovery
JP2004013367A (ja) 2002-06-05 2004-01-15 Hitachi Ltd データ記憶サブシステム
JP2004013867A (ja) 2002-06-12 2004-01-15 Nec Corp 複製データベースシステム、データベース装置及びそれに用いるデータベース更新方法並びにそのプログラム
US9052944B2 (en) 2002-07-16 2015-06-09 Oracle America, Inc. Obstruction-free data structures and mechanisms with separable and/or substitutable contention management mechanisms
JP2004086800A (ja) 2002-08-29 2004-03-18 Mitsubishi Electric Corp データ同期システムおよびデータ同期方法
US7315862B1 (en) 2002-12-20 2008-01-01 Nortel Networks Limited Concurrent lock-free access to a record by write and read processes
US7213037B2 (en) * 2003-01-13 2007-05-01 I2 Technologies Us, Inc. Master data management system for centrally managing cached data representing core enterprise reference data maintained as locked in true state read only access until completion of manipulation process
US7415467B2 (en) * 2003-03-06 2008-08-19 Ixion, Inc. Database replication system
US7308448B1 (en) * 2003-03-21 2007-12-11 Sun Microsystems, Inc Method and apparatus for implementing a lock-free skip list that supports concurrent accesses
US20040215601A1 (en) * 2003-04-23 2004-10-28 Win-Harn Liu Method of file management using a computer
US7966301B2 (en) * 2003-05-09 2011-06-21 Planeteye Company Ulc System and method for employing a grid index for location and precision encoding
US7640506B2 (en) * 2003-06-27 2009-12-29 Microsoft Corporation Method and apparatus for viewing and managing collaboration data from within the context of a shared document
JP2005056281A (ja) * 2003-08-06 2005-03-03 Konica Minolta Medical & Graphic Inc 作業管理システム
JP4247975B2 (ja) * 2003-08-20 2009-04-02 日本電信電話株式会社 データ管理方法、データ管理システム、およびそのためのプログラムならびに記録媒体
JP4189332B2 (ja) 2004-01-30 2008-12-03 株式会社東芝 データベース管理システム、データベース管理方法、データベース登録要求プログラムおよびデータベース管理プログラム
US7403945B2 (en) * 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
FR2879056B1 (fr) * 2004-12-07 2007-04-20 Thales Sa Procede de duplication d'une base de donnees dans un reseau de machines et systeme de machines a base de donnees dupliquee
CN100367712C (zh) * 2005-06-01 2008-02-06 合肥工业大学 一种基于协同模板的协同设计方法
WO2007041416A2 (en) 2005-09-30 2007-04-12 Medcom Solutions, Inc. System and method for reviewing and implementing requested updates to a primary database
GB0523703D0 (en) * 2005-11-22 2005-12-28 Ibm Collaborative editing of a document
JP2007179105A (ja) 2005-12-26 2007-07-12 World Planning:Kk 共有データベースの制御システム及び共有データベースの制御方法並びにコンピュータプログラム
US7792792B2 (en) * 2006-05-22 2010-09-07 Microsoft Corporation Synchronizing structured web site contents
US7769727B2 (en) * 2006-05-31 2010-08-03 Microsoft Corporation Resolving update-delete conflicts
CN100549949C (zh) * 2006-07-21 2009-10-14 石自力 一种计算机应用系统的设计系统
US20080059469A1 (en) * 2006-08-31 2008-03-06 International Business Machines Corporation Replication Token Based Synchronization
US8570919B2 (en) * 2007-05-14 2013-10-29 Nec Corporation Half-duplex communication system, half-duplex communication device, communication content confirmation method, and its program
CN101765831B (zh) 2007-06-06 2012-10-17 雅典娜电信实验有限公司 数据库不一致的处理方法
US7664779B1 (en) 2007-06-29 2010-02-16 Emc Corporation Processing of a generalized directed object graph for storage in a relational database
JP5543918B2 (ja) 2008-06-04 2014-07-09 株式会社アテナテレコムラボ データベース並行編集の競合解消方式
JP4855538B2 (ja) 2008-06-04 2012-01-18 株式会社アテナテレコムラボ データベースのデータ項目の平行編集方式
JP4923140B2 (ja) 2008-06-04 2012-04-25 株式会社アテナテレコムラボ データベース並行編集方式
JP4855537B2 (ja) 2008-06-04 2012-01-18 株式会社アテナテレコムラボ データベース並行編集方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6257070A (ja) * 1985-09-06 1987-03-12 Hitachi Ltd デ−タ処理方式
JPH05189284A (ja) * 1992-01-10 1993-07-30 Toshiba Corp 関係型データベース管理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678996B2 (en) 2007-06-06 2017-06-13 Kunio Kamimura Conflict resolution system for database parallel editing

Also Published As

Publication number Publication date
US20110082833A1 (en) 2011-04-07
CN101765831A (zh) 2010-06-30
US9678996B2 (en) 2017-06-13
US20110161292A1 (en) 2011-06-30
CN102216910B (zh) 2014-05-14
WO2008149552A1 (ja) 2008-12-11
US20100198789A1 (en) 2010-08-05
CN101765831B (zh) 2012-10-17
US20130226886A1 (en) 2013-08-29
CN102216910A (zh) 2011-10-12
JPWO2008149552A1 (ja) 2010-08-19

Similar Documents

Publication Publication Date Title
JP4573277B2 (ja) データベース矛盾解消方式
CN108932282B (zh) 一种数据库迁移方法、装置和存储介质
AU2017258896B2 (en) Data separation and write redirection in multi-tenancy database systems
US10380083B2 (en) Enabling collaborative development of a database application across multiple database management systems
US8756196B2 (en) Propagating tables while preserving cyclic foreign key relationships
CN106991113A (zh) 数据库环境中的表格复制
EP2800013B1 (en) Integration database framework
WO2009147846A1 (ja) データベース並行編集の競合解消方式
JP4951137B2 (ja) データベースの管理方法
CN114741453A (zh) 数据同步的方法、系统及计算机可读存储介质
JP5543899B2 (ja) データベースのデータ項目の平行編集方式
WO2013132628A1 (ja) データベースの管理方法
JP5543918B2 (ja) データベース並行編集の競合解消方式
US20170177647A1 (en) Parallel database editing
JP4855537B2 (ja) データベース並行編集方式
US20070067664A1 (en) Failure transparency for update applications under single-master configuration
JP4855538B2 (ja) データベースのデータ項目の平行編集方式
Zhu Towards Automated Online Schema Evolution
JP4903391B2 (ja) データベースレプリケーション方法及びその装置並びにその制御プログラム
JP4923140B2 (ja) データベース並行編集方式
US8171003B2 (en) Method and apparatus for changing reference of database
JP5543901B2 (ja) データベース並行編集方式
US20130110777A1 (en) Synchronization of data edited in parallel

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A5211

Effective date: 20091125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100216

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20100216

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20100401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100708

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4573277

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130827

Year of fee payment: 3

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