JP5543901B2 - データベース並行編集方式 - Google Patents

データベース並行編集方式 Download PDF

Info

Publication number
JP5543901B2
JP5543901B2 JP2010260143A JP2010260143A JP5543901B2 JP 5543901 B2 JP5543901 B2 JP 5543901B2 JP 2010260143 A JP2010260143 A JP 2010260143A JP 2010260143 A JP2010260143 A JP 2010260143A JP 5543901 B2 JP5543901 B2 JP 5543901B2
Authority
JP
Japan
Prior art keywords
editing
content
server
self
order
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.)
Active
Application number
JP2010260143A
Other languages
English (en)
Other versions
JP2011040107A5 (ja
JP2011040107A (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
Priority claimed from PCT/JP2008/001424 external-priority patent/WO2008149552A1/ja
Priority claimed from PCT/JP2008/001506 external-priority patent/WO2009147701A1/ja
Application filed by 株式会社アテナテレコムラボ filed Critical 株式会社アテナテレコムラボ
Priority to JP2010260143A priority Critical patent/JP5543901B2/ja
Publication of JP2011040107A publication Critical patent/JP2011040107A/ja
Publication of JP2011040107A5 publication Critical patent/JP2011040107A5/ja
Application granted granted Critical
Publication of JP5543901B2 publication Critical patent/JP5543901B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明はデータベース(以下「DB」)に対する並行編集(以下「並行DB編集」)を実現するものである。
DBの代表的な運用形態として以下が挙げられる。
「単独DBアクセス」
ひとつの計算機のみでDBを操作する運用。DBに対する編集が行えるのはこの計算機のみであるので、アクセスの競合防止は容易であるが、複数の計算機がDBにアクセスする運用には適さない。
「サーバーDBアクセス」
サーバー計算機(以下「サーバー」)がDBを管理し、端末計算機(以下「PC」)はサーバーにアクセスしサーバーの処理を通じてDBにアクセスする運用。DBに直接アクセスするのはひとつのPCのみであるので、アクセスの競合防止は容易で、ベシミステックロックカーソル(非特許文献1)やトランザクションのロック(非特許文献2)が用いられている。
筆者が指揮し開発したシステム「パワーアップ新聞販売」では閲覧のみに対して並行アクセスを許可している。しかし、編集前には「編集権」を取得する事とし、同時にはひとつのPCしか編集出来ない様にしている。これもロックである。
しかし、サーバーとの通信が不可能な状況ではデータへのアクセスは出来ないし、ロックの取得や返却も出来ない。移動体では通信不可能なケースが頻発するので、DB操作には大きな制限となる。災害時の救援、医療、金融などいわゆるミッションクリティカルな業務では通信不可能な状況下でも業務遂行が求められるが、これに応える事は出来ない。例え通信が確保出来ても、劣悪な通信環境では再送などによりサーバーの応答が極端に長くなり、実用とならない場合もある。
作業用の複製を作成して処理を行うキャシュの技術で、処理や通信の効率化を図る試みも行われている。マイクロソフトのADO.NETは、PCに当面の作業に必要なデータをサーバーからコピーし、サーバーとの接続を切断してから編集作業を行う。編集後に改めてサーバーと接続し編集内容をサーバーに送る。もし編集対象の情報が既に他の端末計算機から変更されていれば、後からの(この)編集を無効にする。「ロックが結果として失敗した場合にはその編集を無効とする」と考えれば、編集ロックの一種とも言える。これは「オプティミスティック同時実行制御」(非特許文献3および非特許文献4)と呼ばれている。しかし、時として以下に示す不都合が生じる事がある。
(1)編集毎にコピーを作成するので、そのコピー処理と通信がオーバーヘッドとなる。(非特許文献1のp19)これを少なくするには、コピーの範囲を制限する必要があるが、これにはアプリケーションが対象とする情報の構造を熟知する必要がある。
(2)キャシュの情報がいつまで有効かの推定が困難である。コピー能率優先でキャシュ量を少なくするほど、次の編集では使えない可能性が高い。「オプティミスティック同時実行制御」では、一カ所でも変更されていれば無効となるので、キャシュ量を大きくするのも問題である。
(3)あるPCが過去に操作(入力、修正、削除)した情報が他のPCの操作により変更(削除、再修正、再入力)された事を検出するのは困難である。この問題は「サーバーDBアクセス」にも「キャシュ」にも共通する問題である。このPCによる編集の有効無効の判定結果は、アップ時に判明するが、それ以前に入力され一度は有効と判定された情報が変更されたのを迅速に把握するのは困難である。
その他の調査結果を以下に示す。非特許文献5は、ファイルのキャシュに関する発明で、編集の衝突(本願での競合)を検出した場合は単純に編集を拒否(非特許文献5の7頁の右下から10行目)し記録を作成する。特許文献1は、サーバーがDB編集の衝突を検出すると、正しく更新されたサーバーのDBを送り込む(「解決手段」および36段)。特許文献2では更新時刻が後の更新を有効とし、特許文献1では更新時刻が先の更新を有効としている。いずれも、上記の問題を解決するものでは無い。
特許文献3はデータベースの同期を起動する条件に関する発明であり、同期の方法については「更新情報を互いに通知し合って同期」と言う一般的な同期の概念を示しているにすぎない。
特許文献4は、編集の競合が起きた際に「全ての更新データを保持する」ことを目的とした発明である。競合が無いときにのみ原本を更新するのであり、本発明とは目的も内容も異なる。特許文献5、特許文献6、特許文献7、特特許文献8、特許文献9についても調査したが、いずれも本発明とは異なる。
特開平9−91184号広報 特開2004−13867号広報 特開2004−86800号広報 特開2006−284998号広報 特開平11−161535号公報 特表2005−503606号公報 特表2005−508050号公報 特開平8−16447号公報 特表2000−501532号公報
William R. Vaughn, 株トップスタジオ訳、伊藤由紀子監修、Windows (登録商標)データベースプログラミング ADO.NET専修講座 VB.NET 編、2003年8月4日初版発行、翔泳社 超図解SQLハンドブック、C&R研究所、2005年8月12日初版発行 「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) 「世界規模分散ファイルシステムSKINNY 」、情報処理学会研究報告, 95-OS-70, (学術刊行物 情処研報 Vol. 95, No.79 ISSN 0919-6072
本格的な並行DBアクセスを明らかにし、キャシュを前提とした従来の並行DB編集の問題を解決する。
本発明を以下の例を用いて説明する。
(1) 準備
複数のPCに、原本DB(以下「グローバル原本DB」)の初期状態の複製DB(以下「ローカル原本DB」)を置く。このローカル原本DBには初期のバージョン、つまり更新の順番を識別する順序数、を設定する事が出来る。バージョンを用いて編集の有効性を判定が可能である。
(2)ローカル編集
各PCはそのローカル原本DBに対するローカルな編集を行う。この編集の前にローカル原本DBの作業用の複製を作成し、編集はこの複製に対して行う。また、編集時にはその編集内容を記録した「編集記録」を作成する。この編集記録には少なくとも「編集内容」が記録されるが、これに加え「編集バージョン」などを記録しても良い。
「編集内容」はどの情報をどの様に変更したか、どの情報を追加したか、どの情報を削除したか、などの一般的な編集内容である。「編集バージョン」は編集対象のローカル原本DBのバージョン、厳密に言えば、編集対象の作業DBの複製元となったローカル原本DBのバージョン、である。
(3)サーバーへの編集記録の送信
各PCは「編集記録」をサーバーに送信する。「編集記録」と「編集バージョン」を分けて記録している場合には、「編集記録」との対応を明示して「編集バージョン」も送信する。なお、「編集記録」の中に「編集バージョン」を記録する運用が、簡単で現実的と思われる。
(4)サーバーによる編集記録の受信
サーバーは、PCから到着した編集記録を、その到着の順番と共に記録しておく。
(5)サーバーからの編集記録の受信
PCはサーバーに対して、未受信の編集記録の送信を要求し、これらの編集記録、その(サーバーへの到着の)順番を受信する。編集記録に編集バージョンが指定されていれば、これも受信する。
(6)ローカル原本DBの更新
PCは指定された順番で編集記録を取り出し、その有効性を判定し、その内容に基づき、「ローカル原本DB」の更新を試みる。バージョンが設定されている場合はローカル原本DBのバージョンを更新する。
全てのPCの初期のローカル原本DBが同じで、各PCにおけるローカルな編集の編集記録を、サーバーへの到着順で取り出し、ローカル原本DBを更新する。同じ内容の編集情報を、同じ順番で、同じロジックで処理して、ローカル原本DBを更新するので、結果として得られる各PCのローカル原本DBも同じになる。サーバーでグローバル原本DBを更新しなくても各PCのローカル原本DBが同期するのはこの仕掛けによる。
ここで、各PCで作成した編集記録にユニークな順番を付けるのがポイントである。ここではサーバーにアップした順番を用いているが、この順番を変更する事も、他の方法で順番を付けても良い。サーバーにアップされた順番を独自の判断基準(例えば操作者の優先権など)で変更してもかまわない。全ての関係するPCで取り出しローカル原本DBを更新する順番が同じであれば良い。
編集記録の順番を付ける他の方法として、例えば、サーバーや特定のPCが編集記録の順番(または時間)を決定し(編集記録を作成または保持するPCに)通知し、編集記録を作成又は保持するPCはこの順番を編集記録に記入し、編集記録を互いに通知し合う方法でも良い。全ての関係するPCで取り出しローカル原本DBを更新する順番が同じであれば良い。
各PCはそれぞれの都合の良い時に複製DBの更新を行うので、実時間で見ると、各PCのローカル原本DBとの更新の進みは様々であるが、特定の編集記録で更新された後のローカル原本DBの状態は同じである。つまり、編集記録の順番を共通の時間軸とし各PCのローカル原本DBが同期する。
なお、「有効性の判定基準」と「ローカル原本DBの更新処理方法」は、関係する全てのPCで同一である必要がある。しかし、同じであればその処理に制限は無い。同じ基準で、編集記録毎にその全部又は一部が有効または無効と判定されて、同じにローカル原本DBを更新していれば、編集記録の順番を共通の時間軸とし各PCのローカル原本DBが同期する。
あるPCに注目した一連の動作例を説明する。このPCがサーバーから最新の編集記録を受信し、ローカル原本DBを更新したとする。そしてこのPCがこのローカル原本DBに対して編集を行い、その編集記録をアップする。なお、この編集の間に、別の計算機から編集記録がサーバーにアップされた可能性がある。
先の編集記録のアップの後で、それまでの(未受信の)編集記録をサーバーから受信し、編集記録を指定された順番で取り出し、ローカル原本DBの更新を試みる。この過程でいくつかの編集は有効と判定されローカル原本DBが更新される。
最後に先程アップした編集記録を取り出し、その不変確認範囲を調査し有効性の判定を行う。もし無効と判定されたなら、このPCの操作者は、無効となった事実とその理由を確認し、必要が有れば(最新の情報に対して)再度の編集を試みる。無効になった元の入力の記録があれば、その内容を再び入力するのは容易である。
PCの操作者にとって、「自分の入力した情報が有効となったか否か」「どの様な状況で無効となったか」を正確に知るこが必要である。並行DBアクセスにおいてオフライン編集した場合は、編集が有効であるか否かは即時ではなく、次の同期の時に判明するので、これらの情報は極めて重要である。情報が無効となった場合でも、全ての編集記録がPCに有り、その有効性の判定やローカル原本DBの更新の様子も全てこのPC内部で見ることが出来るので、再度入力する事も、入力を放棄するも、その状況から判断する事が出来る。
本発明の基本となる要点を箇条書きすると以下である。
(更新1)各PCは未受信の編集記録を順番に受信する。
(更新2)受信した編集記録を指定の順番で用いて、ローカル原本DBの更新を行う。
(編集1)各PCはローカル原本DBに対する更新を行い、この編集記録をサーバーにアップする。
(前提1)各PCの初期のローカル原本DBの内容は同じ。
(前提2)各PCでローカル原本DBの更新に用いる編集記録の内容が同じ。
(前提3)各PCでローカル原本DBの更新に用いる編集記録の順番が同じ。
(前提4)各PCでローカル原本DBの更新に用いるロジックが同じ。
以上の説明ではグローバル原本DBの更新については説明していない。実はグローバル原本DBはローカル原本DBの初期値としてのみ存在するとしても問題は無い。PCのプログラムで初期値のDBが作成出来るなら、サーバーが初期値を持つ必要も無い。各PCのローカル原本DBは互いに同期するので、仮想の(実在しない)グローバル原本DBと同期していると言うことが出来る。もちろん、以上の手順に加えて、実際にグローバル原本DBが有り、編集情報で更新しても良い。万が一、あるPCのローカル原本DBが破損した場合には、グローバル原本DBをコピーしても良いし、他のPCのローカル原本DBをコピーしても良い。初期のグローバル原本DBとそれまでの全ての編集記録から最新のローカル原本DBを再作成する事も可能である。
(ほぼオンライン運用)
本発明では、編集記録の有効性の判定基準やローカル原本DBの更新手順を特に規定するものではないが、一般に、古い情報に基づく編集を無効と判定するのは常識的と考えられる。従って、編集を行うPCが、その編集が無効と判定される可能性を出来るだけ少なくするには、編集の直前に最新の編集記録まで受信してローカル原本DBを更新し、この最新のローカル原本DBに対して編集を行い、編集後は速やかに編集記録をアップすると良い。頻繁に更新を行えば、ローカル原本DBは常に最新の状態に保たれるので、「ほぼオンライン運用」と言う事が出来る。
(ほぼオフライン運用)
しかし、編集の競合が稀な情報を扱う場合には、(更新1)および(更新2)によるローカル原本DBの更新から、(編集1)による編集のアップまでの時間を長くしても、編集が無効となる可能性は少ない。例えば、会社の組織ごとに支払伝票を入力するケースでは、レコードを修正するのは入力ミスや処理ミスを発見した場合であり、修正するとしてもレコードを入力した計算機で行う事が多い。この様なケースでは、更新から編集アップまでの期間を極端に長くした「ほぼオフライン運用」で問題は無い。たとえインターネット接続が出来ない状況でも支払伝票をゆっくり入力し、決算や検査近くなってからまとめてアップすれば良い。
(改良−1)編集記録の内容の拡大
「編集内容」には、先に説明した一般的な編集内容や「編集バージョン」に加え、あとで詳しく説明する「バージョン設定範囲」や「不変確認範囲」を編集内容に含めることが出来る。DBの部分(複数可)にバージョンを設定する場合には、どの部分のバージョンを扱っているかを示す必要が有り、これを示すのが「バージョン設定範囲」である。
編集内容に、一般的な編集内容に加え、編集バージョン、バージョン設定範囲、不変確認範囲、を記録するとこれらの情報の扱いが単純になるが、必ずしも編集内容に記録する必要は無い。分けて記録してもこれらの対応が他の計算機で把握できれば良い。
(改良−2)不変確認範囲の導入
「不変確認範囲」は、この編集に影響を与える範囲であり、この範囲の情報の値が変更されることは、この編集が無意味になる事を示している。「不変確認範囲」はDBが扱う情報、特にその編集する対象の情報の特性に応じて様々な指定が可能であるが、編集対象の情報を「不変確認範囲」に入れるのは自然である。リレーショナルDB(以下「RDB」)の場合には、編集対象のテーブル、編集対象と論理的に関連しているテーブル群、そのなかの一部のレコード、またはDB全体などが想定される。
(改良−3)編集記録とその順番の操作
サーバーに記録する編集記録とその順番は、必ずしもPCがアップしたままの内容と順番である必要は無い。編集記録とその順番が全てのPCで同じであれば、これらの編集記録を適用したローカル原本DBは編集記録の順番を共通の時間軸として同期する。
サーバー又は、管理業務を担当するPCが編集記録の内容を分析し、エラーとなって無効とされる部分や、冗長な(結局は何もしないのと同じ)部分を削除しても良い。エラーの編集記録や冗長な編集記録を削除し、結果としてその編集記録が削除されても問題は無い。編集記録の順番を変更しても、全てのPCでの(ローカル原本DBの更新)処理に用いる順番が同じなら、編集記録の順番を共通の時間軸として各PCのローカル原本DBが同期する。
(改良−4)バージョン設定範囲の導入
バージョンを付与し編集を管理する単位は実際のDBである必要は無い。情報修正の影響が密接に関係している部分を特定して「バージョン設定範囲」とし、これ毎にバージョンを設定すれば、その範囲に関する編集とバージョンの推移を管理するのが容易になる。
バージョン設定範囲の設定はDBが扱う情報の構造や内容に依存するので、これらの知識無くして決定する事は出来ないが、RDBの場合にはレコード、テーブル、テーブルと論理的に関連しているテーブル群、そのなかの特定のレコード群、DB全体などが想定される。
DBをバージョン設定範囲と読み替える事により、本明細書で説明した手順をそのまま適用する事が出来る。なお、複数のバージョン設定範囲に対する編集の記録が、ひとつの編集記録の中に一緒に記載されていても問題は無い。バージョン設定範囲毎に「編集内容」「編集バージョン」「不変確認範囲」などが記載されていれば良い。
医療の個人情報を例に説明する。医療情報のDBで、個人の医療記録の固まりをバージョン設定範囲の設定として設定する。テーブルの1行又は数行が個人の情報なら、これに対してバージョンを設定する。DBには、多数の個人情報があり、それぞれにバージョンを設定する。編集記録には、個人に対応する「編集内容」「編集バージョン」「不変確認範囲」のセットが単数または複数存在する。「不変確認範囲」はこの個人記録全体でも、修正した情報(RDBならレコード)に限定しても、修正内容に応じて適切に設定すれば良い。個人情報毎にテーブルを構成していれば、テーブル毎にバージョンが設定される。
医療情報だけでなく、社会保証や銀行口座やローンなどの情報を個人毎に管理する事にも利用出来る。複数の部署で編集すると思われる犯罪者情報の管理にも使える。さらには、住民みずから一部のデータの編集が可能な「発展した形態の住民基本台帳の管理」など、個人対応の情報を扱う場合にも便利である。「(改良−8)ローカル原本DBの守備範囲の限定」で説明する様に、PC毎にその権限で読み込める範囲の個人情報についてのローカル原本DBを作成する事として、権限の範囲内の情報のみがこのPCに送られるなら、権限外の情報がハッキングされる恐れも無い。
なお、特定のPC(の操作者)にとってはサーバーに集められた編集記録の多くは必要無い場合は、ローカル原本DBがグローバル原本DBの一部のみと同期していれば十分である。これに対応するには、PCで全ての編集記録を受信した後で、不要な編集記録をスキップするのがひとつの方法である。サーバー側でPC毎に必要な編集記録を抜いて送ると通信量が少なくなる。不必要な編集記録が混ざっていてもPC側の処理で除外すれば問題は無い。編集情報に記録されたバージョン設定範囲を元にして、サーバーの管理する編集記録を分類しておくとPCに送るべき編集記録を迅速に判定する事が出来る。
(改良−5)バージョン付与のタイミング
DB原本(グローバル原本DB又はローカル原本DB)の全体又はやバージョン設定範囲に対してバージョンが付与されるが、その付与方法は、扱う情報の特性や運用の都合に応じて選択する事が出来る。
実際にローカル原本DBの内容が更新された場合にバージョンを更新しても良いし、有効な更新の有無に関係なく、変更記録で原本DBの変更を試みる毎にバージョンを更新しても良い。
(改良−6)編集のサーバー受け付け時刻をバージョンとする発展
サーバーが編集を受け付けた時刻をバージョンとして利用しても良い。本明細書で説明したバージョンはこの受け付け時刻と読み替える事になる。先に、バージョンは一連の順番を識別するための順序数と説明したが、時刻も順序を表すので何ら問題は無い。
(改良−7)サーバーへの同期アクセス時刻をバージョンとする発展
PCが、サーバーにアクセスし、未受信の編集記録の有無を確認した時刻を(サーバーなどから)取得し、その時刻をバージョンとする方法も可能である。この確認毎に、未受信の編集記録が無くてもローカル原本DBの新たなこの時刻をバージョンとして設定する。未受信の編集記録が有れば、これらを受信しこれらを用いてローカル原本DBを更新し、そしてこの時刻をローカル原本DBのバージョンとして設定する。同期アクセスがより新しいローカル原本DBに対する編集が優先されるので、一つのDBを競争で操作する関係者にとって理解しやすくまた納得出来るルールである。
(改良−8)ローカル原本DBの守備範囲の限定
ローカル原本DBが、(仮想の又は実在する)グローバル原本DBの全体と同期すると仮定すると、説明は簡単である。しかし、ローカル原本DBが扱う範囲はグローバル原本DB一部分とした方が、実用的である。医療情報に限らず、一般にDB全体は巨大であるが、前記「(改良−4)バージョン設定範囲の導入」で説明した様に、個々の個人情報毎の集合体である。患者自身の計算機のローカル原本DBはこの患者の情報のみが有れば良いし、医師の計算機のローカル原本DBは受け持ちの患者の情報のみがあれば良い。つまり、ローカル原本DBは、グローバル原本DB全体と同期している必要は無く、その必要な一部分と同期していれば十分である。これにより、ローカル原本DBのサイズは小さくなり、その同期(内容を最新に保つ)操作は軽快になる。
(改良−9)編集記録の順番付与のバリエーション
順番を管理するサーバー(又はPC)を置く。編集記録を作成したPCはこのサーバーに順番を問い合わせ、指定された順番を編集記録に書き込む。編集記録自体はPCの間で直接送信したとしても、ここに書かれている順番はユニーク(一意)である。順番の替わりに時間を編集記録に記入して、順番として用いても良い。なお、PC毎の時間のずれが生じる事を考え、特定のPCが時間を管理するなどの工夫が必要である。
(改良−10)編集の一時的な禁止
DBのデータ構造自体を変更するなど、他の計算機と並行して編集を行う事が出来ない場合には、他の編集を一時的に禁止すると都合が良い。以下では説明のため、ある編集(X)について、この編集との並行編集を禁止する状況を想定する。つまりXの編集開始からXの編集が完了してサーバーにアップされるまでの期間を、他のPCの「編集禁止期間」とする。Xのサーバーへのアップの後で、この編集記録(X)記録を取り込んだ後のローカル原本DBに対する並行DB編集から禁止が解除される。
ひとつの方法は、サーバーがこの禁止区間にアップされた編集を無効とする方法である。Xの編集を生かし、かつ矛盾を起こさない確実な方法である。しかし、この無効とされた編集を作成した側の労力は無駄になる。
禁止区間であることを伝えるのが、もうひとつの方法である。編集Xを行うPCから他のPCに直接伝えても良いし、編集Xを行うPCから、サーバーに伝えて、サーバーから各PCに伝えても良い。
編集Xを行うPCは、編集Xを行う前に最新の編集記録をサーバーに要求する時点で、他のPCの編集禁止をサーバーに伝えておく。最新の編集記録をサーバーに要求したPCに対し、サーバーから編集禁止を通知しても、未受信の編集記録の問い合わせなどに対する応答と一緒に通知しても良い。
「サーバーから編集禁止が通知された場合」には、このPCはローカル原本DBの更新を行っても、編集は行わない。そして、改めて、最新の編集記録をサーバーに要求し、それに対して編集記録Xまでが送られ、これと同時に編集禁止解除が通知される。このPCは編集記録Xでローカル原本DBを更新した後、これに対する編集を開始する。
PCT/JP2009/002491出願時の請求項との対応>
本明細書の並行編集とは、(実在の又は仮想の)グローバル原本DB(直感的にはDB原本)の情報の全部または一部の複製を、PCの内部にローカル原本DB(直感的には「複製DB」)として保持し、これに対して編集を行う事である。各PCが保持する複製DBに対する編集情報を、PCが相互に交換してそれぞれの複製DBを更新する。なぜ各PCの複製DBが同期するかと言うと、各PCが同じ編集情報を同じ順番で用いてそれぞれの複製DBを更新するからである。これを表現したのがPCT/JP2009/002491出願時の請求項1である。PCT/JP2009/002491出願時の請求項2はPCT/JP2009/002491出願時の請求項1を装置で表現したものである。
PCT/JP2009/002491出願時の請求項1は「データベースの編集方法であって、(A)データベースの全部または一部分の複製を保持し、(B)該複製に対して行った編集の編集記録を他の装置に送信する工程と、(C)該複製に対する編集記録を他の装置から受信する工程と、(D)編集記録に指定されている順番、又は外部から指定された順番で、編集記録を取り出し、該編集記録を用いてデータベースの該複製を更新する、一連の手順を実行する工程、を有する事を特徴とする方法」であり、PCT/JP2009/002491出願時の請求項2は「データベースの編集装置であって、(A)データベースの全部または一部分の複製を保持する手段と、(B)該複製に対して行った編集の編集記録を他の装置に送信する手段と、(C)該複製に対する編集記録を他の装置から受信する手段と、(D)編集記録に指定されている順番、又は外部から指定された順番で、編集記録を取り出し、該編集記録を用いてデータベースの該複製を更新する、一連の手順を実行する手段、を有する事を特徴とする方法」である。
PCT/JP2009/002491出願時の請求項1の工程Dに編集記録の有効性を確認する手順を加えたのがPCT/JP2009/002491出願時の請求項3である。PCT/JP2009/002491出願時の請求項4は編集に影響を与える「不変確認範囲」の概念をPCT/JP2009/002491出願時の請求項3追加し、これを用いて、編集記録の有効性確認を行う事を示したものである。PCT/JP2009/002491出願時の請求項5は複製DBのバージョンの概念をPCT/JP2009/002491出願時の請求項3追加し、これを用いて、編集記録の有効性確認を行う事を示したものである。PCT/JP2009/002491出願時の請求項6はバージョンが複製DBの一部の情報又は情報の組み合わせに指定されている場合のものである。
PCT/JP2009/002491出願時の請求項3は「データベースの編集方法であって、データベースの編集方法であって、(A)データベースの全部または一部分の複製を保持し、(B)該複製に対して行った編集の編集記録を他の装置に送信する工程と、(C)該複製に対する編集記録を他の装置から受信する工程と、(D1)編集記録に指定されている順番、又は外部から指定された順番で、 編集記録を取り出し、該編集記録の有効性の判定を行い、有効と判定された該編集記録を用いてデータベースの該複製を更新する、一連の手順を実行する工程、を有する事を特徴とする方法」である。
PCT/JP2009/002491出願時の請求項4は「データベースの編集方法であって、(B1)該複製に対して行った編集の編集記録に、この編集に影響を与える情報の範囲を示した「不変確認範囲」を対応させ、該編集記録を他の装置に送信する工程と、(C1)該複製に対する編集記録と、該編集記録に対応する不変確認範囲を、他の装置から受信する工程と、(D2)編集記録に指定されている順番、又は外部から指定された順番で、 編集記録を取り出し、該編集記録に対応した「不変確認範囲」を用いて該編集記録の有効性の判定を行い、有効と判定された該編集記録を用いてデータベースの該複製を更新する、一連の手順を実行する工程、を有する事を特徴とする方法」である。
PCT/JP2009/002491出願時の請求項5は「データベースの編集方法であって、(A)データベースの全部または一部分の複製を保持し、(B2)該複製に対して行った編集の編集記録に、該複製に指定されたバージョンを対応させ、該編集記録を他の装置に送信する工程と、(C2)該複製に対する編集記録と、該記録に対応するバージョンを、他の装置から受信する工程と、(D3)編集記録に指定されている順番、又は外部から指定された順番で、編集記録を取り出し、該編集記録に対応したバージョンを用いて該編集記録の有効性の判定を行い、有効と判定された該編集記録を用いてデータベースの該複製を更新しバージョンを更新する、一連の手順を実行する工程、を有する事を特徴とする方法」である。
PCT/JP2009/002491出願時の請求項6は「データベースの編集方法であって、(A)データベースの全部または一部分の複製を保持し、(B3)該複製に対して行った編集の編集記録に、該複製の一部の情報又は情報の組み合わせに指定されているバージョンを対応させ、該編集記録を他の装置に送信する工程と、(C2)該複製に対する編集記録と、該記録に対応するバージョンを、他の装置から受信する工程と、(D3)編集記録に指定されている順番、又は外部から指定された順番で、 編集記録を取り出し、該編集記録に対応したバージョンを用いて該編集記録の有効性の判定を行い、有効と判定された該編集記録を用いてデータベースの該複製を更新しバージョンを更新する、一連の手順を実行する工程、を有する事を特徴とする方法」である。
PCT/JP2009/002491出願時の請求項7はPCT/JP2009/002491出願時の請求項5をベースに、有効性が否定されても複製DBのバージョンの更新を行う事を追加したものである。PCT/JP2009/002491出願時の請求項8はPCT/JP2009/002491出願時の請求項5をベースに、アップされた編集記録にサーバーがアップ日時を記入するし、PCはこれを複製DBのバージョンとする方法である。PCT/JP2009/002491出願時の請求項9はPCT/JP2009/002491出願時の請求項5をベースに、PCがサーバーにアクセスした時間を(サーバーから貰い)複製DBのバージョンとする方法である。
PCT/JP2009/002491出願時の請求項7は「データベースの編集方法であって、(A)データベースの全部または一部分の複製を保持し、(B2)該複製に対して行った編集の編集記録に、該複製に指定されたバージョンを対応させ、該編集記録を他の装置に送信する工程と、(C2)該複製に対する編集記録と、該記録に対応するバージョンを、他の装置から受信する工程と、(D4)編集記録に指定されている順番、又は外部から指定された順番で、 編集記録を取り出し、該編集記録に対応したバージョンを用いて該編集記録の有効性の判定を行い、 データベースの該複製のバージョンを更新し、有効と判定された該編集記録を用いてデータベースの該複製を更新する、一連の手順を実行する工程、を有する事を特徴とする方法」である。
PCT/JP2009/002491出願時の請求項8は「データベースの編集方法であって、(A)データベースの全部または一部分の複製を保持し、(B2)該複製に対して行った編集の編集記録に、該複製に指定されたバージョンを対応させ、該編集記録を他の装置に送信する工程と、
(C3)該複製に対する編集記録と、該記録に対応する日時を、他の装置から受信する工程と、(D5)編集記録に指定されている順番、又は外部から指定された順番で、編集記録を取り出し、該編集記録に対応したバージョンを用いて該編集記録の有効性の判定を行い、有効と判定された該編集記録を用いてデータベースの該複製を更新新し、該編集記録に指定された日時を該複製のバージョンとして設定する、一連の手順を実行する工程、を有する事を特徴とする方法」である。
PCT/JP2009/002491出願時の請求項9は「データベースの編集方法であって、(A)データベースの全部または一部分の複製を保持し、(B2)該複製に対して行った編集の編集記録に、該複製に指定されたバージョンを対応させ、該編集記録を他の装置に送信する工程と、(C4)該複製に対する編集記録と、該記録に対応するバージョンを、他の装置から受信し、さらに日時を受信する、一連の工程と、(D3)編集記録に指定されている順番、又は外部から指定された順番で、 編集記録を取り出し、該編集記録に対応したバージョンを用いて該編集記録の有効性の判定を行い、有効と判定された該編集記録を用いてデータベースの該複製を更新し、工程C4で受信した該日時を該複製のバージョンとして設定する、一連の手順を実行する工程、を有する事を特徴とする方法」である。
サーバーDBアクセスでは、サーバーとの通信が不可能な状況ではデータへのアクセスは出来ない問題があった。移動体では通信不可能なケースが頻発しDB操作に大きな制限となる。災害時の救援、医療、金融などいわゆるミッションクリティカルな業務では通信不可能な状況下でも業務遂行が求められるが、これに応える事は出来ない。
この問題を解決するのが並行DB編集であるが、キャシュの技術をベースにした方法にはいくつかの問題が指摘されていた。
本願では、仮想の又は実在のグローバル原本DB、と同期したローカル原本DBを作成し、永続的なキャシュとして用いる。そして、ローカル原本DBに対する編集を行う直前など、必要な時にローカル原本DBをグローバル原本DBと同期する。これにより、編集毎にコピーを作成する従来の方法のオーバーヘッドやキャシュ有効性の判定などの問題が解決される。
また、あるPCが過去に操作した情報が他のPCの操作により変更された事を検出するのは、従来の方法では困難であったが、この本格的な「並行DBアクセス編集」で容易に検出する事が可能になった。情報の編集状況を操作者が精査した上で、適切な対応を取ることが出来る。無効になったデータを再入力する事も、一部修正して再入力することも、最新のデータを修正する事も、無効とされたことを受け入れることも可能である。
さらに、ローカル原本DBが保持し同期する対象はグローバル原本DBの全体である必要は無く、その計算機に必要な一部の情報のみで良い。例えば、医療情報なら患者の計算機のローカル原本DBはこの患者個人の医療情報のみを保持し、医者の計算機のローカル原本DBには担当患者の医療情報のみを保持する。これにより、従来の方法で問題であったキャシュの適正量の問題も解決される。
「編集記録の有効性の判定」と「ローカル原本DBの更新」などの処理をサーバーで無くPCで行う事の長所として、以下が挙げられる。
(1)必要な編集記録とその順番を取り込んでしまえば、サーバーとの通信が不要なので、その後の利用者の操作に対応するレスポンスが早くなる。
(2)ローカル原本DBを更新する処理がこのPCで行われるので、特定の編集から影響を受ける情報(レコード)の範囲をきめ細かく調査する事ができる。また、操作者の要求に応じてより詳しい情報を表示する事が出来る。
(3)一般に、個々の計算機の計算能力は余っている事が多く、処理負荷が集中するサーバーに処理を置くよりも処理が高速になる。上記(1)との相乗効果で利用者の操作に対応するレスポンスが早くなる。
また、ローカル原本DBの更新の間隔を調整する事により、「ほぼオンライン運用」から「ほぼオンライン運用」まで、自由に選択出来る。編集アクセスの多い情報を扱う場合は頻繁にローカル原本DBの更新を行う「ほぼオンライン運用」を行えば良いし、支払伝票の入力の様に、修正が無いか修正があってもデータを入力した計算機で行う事が多い場合には、ローカル原本DBの更新の間隔を極端に延ばした「ほぼオフライン運用」で問題は無い。決算や検査が近くなってから編集をアップしても問題は無い。
複数のPCがそれぞれの事情に応じて「ほぼオンライン運用」か「ほぼオンライン運用」が選択でき、両者が混在して運用出来るのも都合が良い。
一般的な計算機の構成 PCとサーバーの関係 ローカル原本DBに対して行った編集の記録をサーバーにアップする工程 編集記録をサーバーから受信する工程 編集記録でローカル原本DBを更新する工程 単純化した実施例
本発明の方法は計算機のプログラムとして実現出来る。
図1に典型的な計算機0101の構成を示す。演算装置0103、主記憶装置0104、二次記憶装置0106、入出力装置0107、表示装置0108がバス0109で接続されている。他の計算機とデータを交換する場合は通信装置0102を介して通信網0101に接続する。各請求項で言及している「データベース」が、二次記憶装置0106内のDB0111又は主記憶操作0104の内部のDB0105である。
プログラムは二次記憶装置0106に記録され、起動されると主記憶操作0104に展開され、プログラムに指定された手順で演算装置0103が動作する。この結果として計算機は、プログラム開発者が意図した動作を実現する手段の集合体に再構成される。
プログラムによるDBの操作は、DBの全体または一部を主記憶操作0104に展開してから行うのが一般的である。二次記憶装置0106内のDB0111の全部又は一部を主記憶操作0104に展開したDB0105を操作し、その編集結果を二次記憶装置0106内のDB0111に書き込む。しかし通常は、DBは二次記憶装置0106内に有るとし、主記憶操作0104に展開したDB0105と区別せず議論するので、図2では単に、記憶装置0204, 0205の中のDBとして表示する。
サーバー0203に編集記録0218, 0219を置き、PC0201がこの編集記録を受信し、PCのローカル原本DB0206を更新するケースを図2で説明する。PC0201がインターネットなどの通信網0202を介して、サーバー0203と接続している。一般にPCは複数存在するが、図2では1台のみを示している。
PC0201には記憶装置0204が有り、ローカル原本DB0206が記録されている。ローカル原本DB0206の初期値は、サーバー0203の記憶装置0205のグローバル初期原本DB0207をコピーしたものである。操作者の指示を受けて編集手段0213が編集を行うが、この時にはローカル原本DB0206を直接編集する事はせず、編集結果を作業DB0209とする。同時に編集記録0208を作成する。この編集記録には、編集バージョンつまり、ローカル原本DBに設定されているバージョンが記録される。
編集記録0208は送信手段0215により通信網0202を介してサーバー0203に送られる。サーバー0203は受信手段0221により受信し、編集記録10218, 編集記録m0219の列に加えられる。編集記録には編集バージョンなどが記録されている。もし、編集記録とは別に編集バージョンがサーバーに送られてきた場合には、サーバーは両者の対応を記録する。
PC0201がローカル原本DB0206の更新試みる場合は、まずサーバーに未受信の編集記録の送信を要求する。PC0201がそれまでに受信した編集記録の最後のバージョンを通知すると、送受信管理手段がそれ以降の編集記録を選別し、送信手段0220によりサーバーから送る。PCの送信の受信の協調作業は送受信管理手段0217により行われ、サーバーの送信の受信の協調作業は送受信管理手段0222により行われる。
PC0201が受信手段0216により受信した編集記録n0210, 編集記録n+12011, 編集記録m0212は記憶装置0204に記録される。更新手段0214がこれらを順番に取り出して、有効性を判定してローカル原本DB0206を更新し、そのバージョンを更新する。
図3に、PCが保持するローカル原本DBに対して行った編集の記録(つまり「編集記録」)をサーバーにアップする工程を示す。まず「編集記録(のメモリエリア)を確保」0301する。「ローカル原本DB内の編集対象情報を特定」0302し、「この情報が属するバージョン設定範囲を特定し編集記録に記入する」0303。さらに、「このバージョン設定範囲のバージョンを取得し編集記録に記入」0304し、「編集対象の情報に対応する不変確認範囲を特定し編集記録に記入」0305し、「編集対象の情報を特定する情報、編集の中身を編集記録に記入する」0306。そして「ローカル原本DBに、上記編集を適用した作業DBを作成」0307し、「サーバーに編集記録を送る」0308。
図4に、ローカル原本DBに対する編集記録と、これらに指定された順序を、サーバーから受信する工程を示す。まず「サーバーに前回の最終編集記録を通知」0401し、「サーバーから前回より後の編集記録のリストを受信」0402する。このリストに従って、「編集記録を受信」0403し、「受信した編集記録を未処理編集記録リストにいれる」0404。最後に「編集禁止中を問い合わせる」0405。編集禁止中でも、図5のサーバーから受信した編集記録でローカル原本DBを更新する手段0214は起動するが、編集手段0213(および図3の手順)によるローカル原本DB0206に対する編集とサーバーへの編集記録の送信は行わない。
図5に、サーバーから受信した編集記録でローカル原本DBを更新する更新手段0214の処理工程を示す。「未処理の編集記録リスト(編集記録n0210, 編集記録n+12011, 編集記録m0212のリスト)から編集記録を取り出し」0501、「この編集記録の不変確認範囲と編集バージョンにより、現在のローカル原本DBに対して有効かを判定」0502し、有効ならば「ローカル原本DBを更新」0503し、「ローカル原本DBのバージョンを更新」0504する。これを未処理の編集記録リストの全ての編集記録に対して行う。
編集記録に、サーバーがこの編集記録を受け付けた時間がその編集バージョンとして記録されていれば、これを更新されたローカル原本DBのバージョンとする。サーバーに未受信の編集記録の有無を問い合わせた日時をバージョンとする場合は、図4の工程でサーバーから時間を取得し、図5の工程の最後(終了の直前)でその時間をローカル原本DBのバージョンとして設定する。
ある実施例におけるバージョンの変化を図6で説明する。図6のDBはRDBで、バージョン設定範囲をDB全体、バージョンは整数、不変確認範囲は編集したレコードのみとしている。また、レコード毎にこのレコードを編集した時点の編集バージョンを「レコードバージョン」として記録し、これを用いて編集の有効性を確認している。
PC−A0602とPC−B0603はそれぞれグローバル初期原本DB0604を取得0610, 0611し、それぞれのローカル原本DB0605, 0606としている。サーバーのグローバル初期原本DB0604をコピーしているので、どちらもベースバージョンは0である。その後、サーバー0601に編集1から編集6がアップされているが、これはPC−A0602、PC−B0603以外のPC−がアップした編集である。図2では、PC−A0602はもう一度サーバーにアクセスしその時の最新の編集しその順番を取得している0612。このとき、編集1を取り込むので、ローカル原本DB0605のバージョンは1になる。
さて、PC−A0602の操作者が、ローカル原本DB0605内のレコードZの複製0608を編集したとする0613。この時、ローカル原本DB0605のベースバージョンが1なので、編集された「レコードZの複製0608」のレコードバージョンが1にセットされる。この編集結果がサーバーにアップされ0614、編集7として記録される。この直後に、PC−A0602は、(既に取得してある)編集1より後にアップされた、編集2から編集6を取得し、さらにPC−A0602先のアップ0614が編集7となった事を確認する。あらかじめ指定された「編集の有効性の判定」に基づき編集7までを順番に調査し、ローカル原本DB0605を更新する。ここでは、編集7が有効と判定されたとし、ローカル原本DB0605のベースバージョンが7になる。
一方、PC−B0603はサーバー0601から、編集1から(この同期0617時点での最新の)編集6を取得し0617、ローカル原本DB0606を更新してベースバージョンを6とする。その後PC−B0603の操作者が、「レコードZの複製0609」を編集した0618とする。この時、「レコードZの複製0609」のレコードバージョンが6になり、編集としてサーバーにアップされ0619、編集8として記録される。
その後別のPCから編集9がアップされた後、PC−A0602がサーバー0601にアクセスし、(既に取得してある)編集7より後にアップされた編集8と編集9を取得する0622。そしてローカル原本DB0605に編集8と編集9を順番に適用し、「編集の有効性の判定」を行い、ローカル原本DB0605を更新する。ここでローカル原本DB0608に編集9が反映されるので、製DB0608のベースバージョンが9になる。この時点で、先にPC−B0603が編集したレコードZの複製0609の内容がPC−A0602のローカル原本DB0605で有効になり、先にPC−A0602が編集したレコードZの複製0608内容が無効になった事が(PC−A0602で)判明する。
サーバーにデータベースが置かれ、複数の計算機がアクセスする運用が一般的に行われているが、サーバーにアクセス出来ないと編集が出来ないなどの問題もある。本発明は計算機が永続的に複製DBを保持する、いわば本格的な「並行DB編集」を提案しており、サーバーとの接続が不可能なケースが頻発する移動体や、災害時の救援、医療、金融などいわゆるミッションクリティカルな業務に用いる事が出来る。
0100 計算機
0102 通信装置
0103 演算装置
0104 主記憶装置
0105 主記憶装置内のDB(データベース)
0106 二次記憶装置
0107 入出力装置
0108 表示装置
0109 バス
0110 通信網
0111 二次記憶装置内のDB(データベース)
0201 PC
0202 インターネットなどの通信網
0203 サーバー
0204 (PCの)記憶装置
0205 (サーバーの)記憶装置
0206 ローカル原本DB
0207 グローバル初期原本DB
0208 編集記録
0209 作業DB
0210 編集記録n
0210 編集記録n+1
0211 編集記録m
0213 編集手段
0214 更新手段
0215 送信手段
0216 受信手段
0217 送受信管理手段
0218 編集記録1
0219 編集記録m
0220 送信手段
0221 受信手段
0222 送受信管理手段
0301 編集記録(のメモリエリア)を確保
0302 ローカル原本DB内の編集対象情報を特定
0303 この情報が属するバージョン設定範囲を特定し編集記録に記入
0304 このバージョン設定範囲のバージョンを取得し編集記録に記入
0305 編集対象の情報に対応する不変確認範囲を特定し編集記録に記入
0306 編集対象の情報を特定する情報、編集の中身を編集記録に記入
0307 ローカル原本DBに上記編集を適用した作業DBを作成
0308 サーバーに編集記録を送る
0401 サーバーに前回の最終編集記録を通知
0402 サーバーから前回より後の編集記録のリストを受信
0403 編集記録を受信
0404 受信した編集記録を未処理編集記録リストにいれる
0405 編集禁止中を問い合わせる
0501 未処理の編集記録リストから編集記録を取り出し
0502 この編集記録の不変確認範囲と編集バージョンにより、現在のローカル原本DBに対して有効かを判定
0503 ローカル原本DBを更新
0504 ローカル原本DBのバージョンを更新
0602 PC−A
0603 PC−B
0604 初期DB
0605 (PC−Aの)ローカル原本DB更新
0606 (PC−Bの)ローカル原本DB更新
0608 (PC−Aの)レコードZの複製
0609 (PC−Bの)レコードZの複製
0610 (PC−Aによる)グローバル初期原本DBの取得
0611 (PC−Bによる)グローバル初期原本DBの取得
0612 (PC−Aによる)同期
0613 (PC−Aの操作者による)編集
0614 (PC−Aによる)編集の送信。つまり編集のアップ。
0616 (PC−Aへの)確認(通知)と(PC−Aによる)同期。なお、同期とは新たな編集とその順番の取得であり、他の記号の説明においても同じである。
0617 (PC−Bによる)同期
0618 (PC−Bの操作者による)編集
0619 (PC−Bによる)編集の送信。つまり編集のアップ。
0621 (PC−Bへの)確認(通知)と(PC−Bによる)同期。
0622 (PC−Bによる)同期
0623 (PC−Bの編集に基づくPC−AのレコードZの複製の)修正

Claims (12)

  1. 「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「自複製」)を保持する装置(以下「自装置」)に、該自複製を更新する手順を実行させるプログラムであって、少なくとも、
    該自複製に対する編集計画の内容(以下「自編集内容」)を作成する処理、
    該自編集内容と、該自装置とは異なる装置(以下「他装置」)が保持する「該データベースの全体またはその一部の複製」に対し該他装置が作成する編集計画の内容(以下「他編集内容」)とが集められ、かつ該自編集内容と該他編集内容の順番を定める装置を、「サーバー」と呼ぶとき、該自編集内容を該サーバーへ送信する処理、
    該サーバーに送信を要求し、該サーバーから該他編集内容を受信する処理、
    該サーバーから、該順番の情報を取得する処理、
    該自編集内容と該他編集内容を該順番で用いて、該自複製を更新する処理、
    を実行させるプログラム。
  2. 「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「自複製」)を保持する装置(以下「自装置」)に、該自複製を更新する手順を実行させるプログラムであって、少なくとも、
    該自複製に対する編集計画の内容(以下「自編集内容」)を作成する処理、
    順序数を提供する装置をサーバーと呼ぶとき、該サーバーから順序数(以下「自順序数」)を受信し、該自順序数を該自編集内容に設定する処理、
    該自装置とは異なる装置(以下「他装置」)に該自編集内容を送信する処理、
    該他装置が保持する「該データベースの全体またはその一部の複製」に対して該他装置が作成し、かつ該サーバーから受信した順序数(以下「他順序数」)が設定された、編集計画の内容(以下「他編集内容」)を、受信する処理、
    該自編集内容と該他編集内容を、該自順序数と該他順序数の順番で用いて、該自複製を更新する処理、
    を実行させるプログラム。
  3. 「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「自複製」)を保持する装置(以下「自装置」)が、該自複製を更新する方法であって、少なくとも、
    該自複製に対する編集計画の内容(以下「自編集内容」)を作成する処理、
    該自編集内容と、該自装置とは異なる装置(以下「他装置」)が保持する「該データベースの全体またはその一部の複製」に対し該他装置が作成する編集計画の内容(以下「他編集内容」)とが集められ、かつ該自編集内容と該他編集内容の順番を定める装置を、「サーバー」と呼ぶとき、該自編集内容を該サーバーへ送信する処理、
    該サーバーに送信を要求し、該サーバーから該他編集内容を受信する処理、
    該サーバーから、該順番の情報を取得する処理、
    該自編集内容と該他編集内容を該順番で用いて、該自複製を更新する処理、
    を実行する方法。
  4. 「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「自複製」)を保持する装置(以下「自装置」)が、該自複製を更新する方法であって、少なくとも、
    該自複製に対する編集計画の内容(以下「自編集内容」)を作成する処理、
    順序数を提供する装置を「サーバー」と呼ぶとき、該サーバーから順序数(以下「自順序数」)を受信し、該自順序数を該自編集内容に設定する処理、
    該自装置とは異なる装置(以下「他装置」)に該自編集内容を送信する処理、
    該他装置が保持する「該データベースの全体またはその一部の複製」に対して該他装置が作成し、かつ該サーバーから受信した順序数(以下「他順序数」)が設定された、編集計画の内容(以下「他編集内容」)を、受信する処理、
    該自編集内容と該他編集内容を、該自順序数と該他順序数の順番で用いて、該自複製を更新する処理、
    を実行する方法。
  5. 少なくとも、
    「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「複製X」)を保持し、該複製Xに対する編集計画の内容(以下「編集内容X」)を作成する装置(以下「装置X」)、と
    該データベースの全体またはその一部の複製(以下「複製Y」)を保持し、該複製Yに対する編集計画の内容(以下「編集内容Y」)を作成する装置(以下「装置Y」)、
    で構成されるシステムであって、
    該編集内容Xと該編集内容Yの順番を定める装置を「サーバー」と呼ぶとき、該装置Xは該編集内容Xを該サーバーに送り、該装置Yは該編集内容Yを該サーバーに送り、さらに
    該装置Xは該サーバーに送信を要求し、該サーバーから該編集内容Yと該順番の情報を受信し、該編集内容Xと該編集内容Yを該順番で用いて、該複製Xを更新し、
    該装置Yは該サーバーに送信を要求し、該サーバーから該編集内容Xと該順番の情報を受信し、該編集内容Xと該編集内容Yを該順番で用いて、該複製Yを更新する、
    ことを特徴とするシステム。
  6. 少なくとも、
    「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「複製X」)を保持し、該複製Xに対する編集計画の内容(以下「編集内容X」)を作成し、順序数を提供する装置(以下「サーバー」)から順序数(以下「順序数X」)を受信し、該順序数Xを該編集内容Xに設定する装置(以下「装置X」)と、
    該データベースの全体またはその一部の複製(以下「複製Y」)を保持し、該複製Yに対する編集計画の内容(以下「編集内容Y」)を作成し、該サーバーから順序数(以下「順序数Y」)を受信し、該順序数Yを該編集内容Yに設定する装置(以下「装置Y」)、
    で構成されるシステムであって、
    該装置Xは該編集内容Yを受信し、該編集内容Xと該編集内容Yを該順序数Xと該順序数Yの順番で用いて、該複製Xを更新し、
    該装置Yは該編集内容Xを受信し、該編集内容Xと該編集内容Yを該順序数Xと該順序数Yの順番で用いて、該複製Yを更新する、
    ことを特徴とするシステム。
  7. 少なくとも、
    「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「複製X」)を保持し、該複製Xに対する編集計画の内容(以下「編集内容X」)を作成する装置(以下「装置X」)、と
    該データベースの全体またはその一部の複製(以下「複製Y」)を保持し、該複製Yに対する編集計画の内容(以下「編集内容Y」)を作成する装置(以下「装置Y」)、と
    該編集内容Xと該編集内容Yの順番を定める装置(以下「サーバー」)、
    で構成されるシステムであって、
    該装置Xは該編集内容Xを該サーバーに送り、該装置Yは該編集内容Yを該サーバーに送り、
    さらに
    該装置Xは該サーバーに送信を要求し、該サーバーから該編集内容Yと該順番の情報を受信し、該編集内容Xと該編集内容Yを該順番で用いて、該複製Xを更新し、
    該装置Yは該サーバーに送信を要求し、該サーバーから該編集内容Xと該順番の情報を受信し、該編集内容Xと該編集内容Yを該順番で用いて、該複製Yを更新する、
    ことを特徴とするシステム。
  8. 少なくとも、
    順序数を提供する装置(以下「サーバー」)、と
    「実在するまたは仮想のデータベース」の全体またはその一部の複製(以下「複製X」)を保持し、該複製Xに対する編集計画の内容(以下「編集内容X」)を作成し、該サーバーから順序数(以下「順序数X」)を受信し、該順序数Xを該編集内容Xに設定する装置(以下「装置X」)と、
    該データベースの全体またはその一部の複製(以下「複製Y」)を保持し、該複製Yに対する編集計画の内容(以下「編集内容Y」)を作成し、該サーバーから順序数(以下「順序数Y」)を受信し、該順序数Yを該編集内容Yに設定する装置(以下「装置Y」)、
    で構成されるシステムであって、
    該装置Xは該装置Yから該編集内容Yを受信し、該編集内容Xと該編集内容Yを該順序数Xと該順序数Yの順番で用いて、該複製Xを更新し、
    該装置Yは該装置Xから該編集内容Xを受信し、該編集内容Xと該編集内容Yを該順序数Xと該順序数Yの順番で用いて、該複製Yを更新する、
    ことを特徴とするシステム。
  9. 請求項1に記載のプログラムであって、該順番が、該自編集内容と該他編集内容がサーバーに到着した順番であること、を特徴とするプログラム。
  10. 請求項1に記載のプログラムであって、該順番が、該自編集内容と該他編集内容に対して該サーバーの処理により定められた順番であること、を特徴とするプログラム。
  11. 請求項1に記載のプログラムであって、該順番を示す該情報の少なくとも一部が、該サーバーから該「他編集内容」を受信した順番であること、を特徴とするプログラム。
  12. 請求項2に記載のプログラムであって、該「自順序数」と該「他順序数」が、該サーバーから提供される時刻であること、を特徴とするプログラム。
JP2010260143A 2008-06-04 2010-11-22 データベース並行編集方式 Active JP5543901B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010260143A JP5543901B2 (ja) 2008-06-04 2010-11-22 データベース並行編集方式

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
PCT/JP2008/001424 WO2008149552A1 (ja) 2007-06-06 2008-06-04 データベース矛盾解消方式
JPPCT/JP2008/001424 2008-06-04
JPPCT/JP2008/001506 2008-06-12
PCT/JP2008/001506 WO2009147701A1 (ja) 2008-01-08 2008-06-12 データベースへの平行アクセスプログラム
JP2010260143A JP5543901B2 (ja) 2008-06-04 2010-11-22 データベース並行編集方式

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010515775A Division JP4855537B2 (ja) 2008-06-04 2009-06-03 データベース並行編集方式

Publications (3)

Publication Number Publication Date
JP2011040107A JP2011040107A (ja) 2011-02-24
JP2011040107A5 JP2011040107A5 (ja) 2012-07-12
JP5543901B2 true JP5543901B2 (ja) 2014-07-09

Family

ID=43767716

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010260143A Active JP5543901B2 (ja) 2008-06-04 2010-11-22 データベース並行編集方式

Country Status (1)

Country Link
JP (1) JP5543901B2 (ja)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06348628A (ja) * 1993-06-07 1994-12-22 Nec Corp インテリジェントネットワークシステム
JPH0785020A (ja) * 1993-09-20 1995-03-31 Hitachi Ltd 文書管理方法
JPH10187520A (ja) * 1996-11-07 1998-07-21 Fujitsu Ltd ファイル更新処理方法
JP3534596B2 (ja) * 1997-12-05 2004-06-07 富士通株式会社 インテリジェントネットワーク内のデータベースの同期方法と装置
JP2000089994A (ja) * 1998-09-16 2000-03-31 Daikin Ind Ltd データベース管理方法およびその装置
JP3811615B2 (ja) * 1998-11-30 2006-08-23 株式会社日立製作所 情報配信システム、装置及び方法並びに記録媒体
JP2000222268A (ja) * 1999-01-29 2000-08-11 Hitachi Ltd 複数のコンピュータ間におけるファイルの同期方法
JP2000339211A (ja) * 1999-05-25 2000-12-08 Casio Comput Co Ltd ファイル処理装置、ファイル処理システム、及び記憶媒体
US6938070B2 (en) * 2001-12-17 2005-08-30 Dassault Systemes Conflict resolution for collaborative work system
JP4747733B2 (ja) * 2005-08-22 2011-08-17 ブラザー工業株式会社 ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
JP2007179105A (ja) * 2005-12-26 2007-07-12 World Planning:Kk 共有データベースの制御システム及び共有データベースの制御方法並びにコンピュータプログラム

Also Published As

Publication number Publication date
JP2011040107A (ja) 2011-02-24

Similar Documents

Publication Publication Date Title
KR102579190B1 (ko) 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원
US11003689B2 (en) Distributed database transaction protocol
CN108932282B (zh) 一种数据库迁移方法、装置和存储介质
US20110082833A1 (en) Database parallel editing method
CN109906448B (zh) 用于促进可插拔数据库上的操作的方法、设备和介质
CN1746893B (zh) 事务文件系统
US8392386B2 (en) Tracking file contents
CN108021338B (zh) 用于实现两层提交协议的系统和方法
US8805924B2 (en) Optimistic concurrency utilizing distributed constraint enforcement
WO2011108695A1 (ja) 並列データ処理システム、並列データ処理方法及びプログラム
US10296542B2 (en) Integration database framework
WO2009147847A1 (ja) データベース並行編集方式
JP2011150458A (ja) 情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法
US20060004877A1 (en) Method and system for data processing with data replication for the same
US10387384B1 (en) Method and system for semantic metadata compression in a two-tier storage system using copy-on-write
JP4855537B2 (ja) データベース並行編集方式
JP4923140B2 (ja) データベース並行編集方式
US20200089789A1 (en) Systems and methods of operation lock management and system catalog overrides in database systems
JP5543899B2 (ja) データベースのデータ項目の平行編集方式
JP5543918B2 (ja) データベース並行編集の競合解消方式
CN105989049A (zh) 一种数据中间层实现方法及系统
JP5543901B2 (ja) データベース並行編集方式
US20170177647A1 (en) Parallel database editing
AU2051901A (en) Method and apparatus for deploying data among data destinations for website development and maintenance
US10628391B1 (en) Method and system for reducing metadata overhead in a two-tier storage architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120519

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120521

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120519

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131224

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140509

R150 Certificate of patent or registration of utility model

Ref document number: 5543901

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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