JP3779263B2 - 共同作業システムのためのコンフリクトの解決 - Google Patents
共同作業システムのためのコンフリクトの解決 Download PDFInfo
- Publication number
- JP3779263B2 JP3779263B2 JP2002365935A JP2002365935A JP3779263B2 JP 3779263 B2 JP3779263 B2 JP 3779263B2 JP 2002365935 A JP2002365935 A JP 2002365935A JP 2002365935 A JP2002365935 A JP 2002365935A JP 3779263 B2 JP3779263 B2 JP 3779263B2
- Authority
- JP
- Japan
- Prior art keywords
- computer
- parameter
- data
- execution
- computers
- 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 - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Description
【発明の属する技術分野】
本発明は、共同作業システム(collaborative work system)のためのコンフリクトの解決の方法およびシステムに関する。
【0002】
【従来の技術】
発明の背景
共同アプリケーションは、しばしばグループウェアアプリケーションと呼ばれるが、異なるコンピュータを各々が使用する2以上の者が、仮想的な作業空間の共通する画面を共有し、そのような作業空間において共有されたデータオブジェクトの処理を取り扱うことができる。通常は、共同アプリケーションのコピーが各ユーザのコンピュータにおいて実行され、作業空間をシミュレートし、共同して処理され表示されているデータのローカルコピーを取り扱う。例えば、共同しての描画アプリケーションは、1つのグループのコンピュータの各々において同一の描画を表示させることができ、それらのコンピュータの各々のユーザは、他のユーザが変更した画像をもとにその描画を変更することができる。これを行う一つの方法は、各ユーザのコンピュータに共有されたデータオブジェクトのローカルコピーを提供することである。共有されたデータオブジェクトは、共同アプリケーションユーザのローカルコピーによって処理される。共有されたデータオブジェクトのローカルコピーは、他のコンピュータにおいて保持されている共有されたデータオブジェクトのコピーと同期を取るため、コンピュータ間で同期化メッセージを交換する。例えば、共有されたワープロ(word processing)のアプリケーションにおいて、第1のコンピュータのユーザが、ドキュメントのあるパラグラフを削除すると、他のコンピュータにメッセージが送られて、共同アプリケーションのコピーに対して命令され、共有されたデータオブジェクトから同一のパラグラフを削除することができる。
【0003】
グループウェア設計者が直面する一つの問題は、共有されたデータオブジェクトが一致した状態で保持されることを保証することである。適切な制御がなされない場合、同時発生のコンフリクトおよび一時的なエラーのため、共有されたデータオブジェクトの異なる処理が発生するかもしれない。これらのエラーは、オーダリングまたはシーケンシングエラーとも呼ばれるが、同期化メッセージが異なるコンピュータにおいて異なる順番で受信および/または処理される場合に発生することがある。
【0004】
一時的なエラーは、同期化メッセージが、異なるコンピュータに異なる順番で到達する場合に発生する。これは、例えばコンピュータ間での異なるネットワーク遅延のため発生しうる。結果として、異なるコンピュータにおいて、同期化オペレーションについての別のシーケンスが実行されるかもしれない。異なるコンピュータにおいて、一致した結果となるように、オペレーションが行われることを保証することにより、並行(concurrency)制御で一時的なエラーに対処(address)することができる。大まかに言うと、このような一致制御は、「楽観的」か「悲観的」(すなわち、非楽観的)のいずれかとして、性格付けることができる。悲観的なシステム、例えばレコードロッキング(record locking)またはセマフォア(semaphore)は、適正な順序でオペレーションの受信と実行の双方が行われることを保証することができる。しかし、悲観的システムは、共有されたデータオブジェクトにアクセスする場合に高遅延を有する可能性があり、この遅延のため、リアルタイムな共同システムにおいて、悲観的な制御を使用することができないかもしれない。
【0005】
【発明が解決しようとする課題】
楽観的システムは、順番に関係なくオペレーションを受信し、および/または実行することを許容する。楽観的システムは、悲観的システムに比べ相対的に低遅延であり、したがって、リアルタイムユーザの体感(experience)を改善する可能性がある。しかし、楽観的システムは、複雑なエラー検出を使用して、順番が変わったオペレーションを修復するように対処する必要がある。一つの修復手法は、到着するのが早すぎるオペレーションをキューに登録するか、さもなくば、実行され順番が変わってしまったのオペレーションを元に戻して(undo)、再度、順に実行することである。別の手法は、受信した順番が異なるオペレーションを新しいセットのオペレーションに修正する変換を行うことである。この変換による手法においては、オペレーションに変換処理を適用すると、異なる実行シーケンスでも同一の結果を生み出すことができる。図1は、2つのメッセージ処理シーケンス(それぞれ図1の右側と左側に示される)を示している。左側のシーケンスは、コンピュータ101でオペレーションαが実行され、次に(オペレーションβを変換した)β’が実行されることを示している。このシーケンスは、コンピュータ102においてβが実行され次に(オペレーションαを変換した)α’が実行される、図1の右側に示されるシーケンスと同一の効果を有する。図1に示されるオペレーション変換手法では変換行列が要求されるが、多くのアプリケーションにとってこれを定めることは、困難であるかまたは不可能である。
【0006】
【課題を解決するための手段】
データ一致の問題を取り扱うためにいくつかの解決方法が存在するが、ソフトウェア開発者の個々の設計のニーズに対処する(address)ため、並行処理のシステムを追加することによりソフトウェア開発を改善することができる。
【0007】
発明の要約
一般的に、ある形態では、本発明は、複数のコンピュータでコピーされるデータオブジェクトの一致を保持する方法に特徴がある。各データオブジェクトは、ネットワークにおいてピアツーピア型で交換される同期化メッセージの処理に基づいて、異なるコンピュータによって保持される。同期化メッセージは、現在(current)オペレーションパラメータと従前(previous)オペレーションパラメータとを含み、これらパラメータを情報処理して、コピーされたデータオブジェクトをどのように何時、取り扱うべきかを決定する。現在オペレーションパラメータは、1つのオペレーション、すなわち、同期化メッセージを受信するコンピュータにおいてデータオブジェクトを更新するために実行(すなわち、実施)されるオペレーションを識別する。現在オペレーションパラメータは、送信側コンピュータと同期を取ることができるように、受信側コンピュータにその現在オペレーションを実行可能にさせるデータをも含む。そのオペレーションの正しい実行タイミングを特定するため、実行段階パラメータも送信される。従前のオペレーションパラメータにより、送信側コンピュータにより実行された従前のオペレーションと、送信側コンピュータで従前のオペレーションが実行された実行段階と、従前のオペレーションを開始した最初のコンピュータとを識別する(例えば、示された従前のオペレーションを送信側コンピュータに実行するよう、その前、命令していた第3のコンピュータの識別)。現在および従前のオペレーションパラメータに含まれるデータは、コンフリクトの別のタイプの内容(scenarios)を検出するために用いられる。同期化メッセージに含まれるデータは、また、他のコンピュータに対する送信側コンピュータの一意の優先順位も示す。
【0008】
【発明の実施の形態】
実施例は、1つまたは2つ以上の以下の利点を含む。このコンフリクトの解決方法は、複合のデータ構造で動作し、アプリケーション性能と遅延応答に最小限の影響しか与えず、ワークステーション間のメッセージ通信量が増加することはない。本発明の1つまたは2つ以上の実施形態の詳細が、図面および以下の説明に示される。本発明の他の態様、目的、利点は、以下の説明と図面および特許請求の範囲から明らかであろう。
【0009】
本発明の詳細な説明
図2は、ピアツーピア型でネットワークに接続された一群のコンピュータ201〜203を示している。コンピュータ201〜203は、共同して修正するデータ(共有されたデータオブジェクト)をユーザに許容するグループウェアアプリケーションを実行する。図3は、グループウェアアプリケーションの構造を示す。アプリケーション301は、コンピュータ201〜203の各々でコピーされた共有されたデータオブジェクト305に関して動作するための機能(functionality)304を含む。機能304は、例えば計算機支援設計の機能とすることができ、共有されたデータオブジェクト305は、3次元オブジェクトのモデルを表現することができる。アプリケーション301は、また、各ピア(peer)201〜203にメッセージを配信(すなわち、送信)し、ネットワーク308経由でメッセージを受信するメッセージ配信コンポーネント302を含む。コンポーネント302によって配信されるメッセージは、データ305を処理するアプリケーション301により実行されるオペレーションを詳述することができる。例えば、メッセージは、コンピュータ201によってコンピュータ202〜203に送られ、指定されたアプリケーションの機能(function)を実行するようコンピュータ202〜203に命令することができる。そうすることで、コンピュータ201からのメッセージは、並行で共有のデータオブジェクト305のローカルコピーについての同期をコンピュータ202〜203にとらせることが可能となる。また、中央の同期サーバを必要とすることがない。
【0010】
図4は、配信コンポーネント302によって交換される同期化メッセージのために使用するメッセージフォーマット401を示している。メッセージ401は、アプリケーション301によって実行するために機能304を指定し、このような機能を実行するための関連するデータを含むオペレーションセクション402を含む。例えば、計算機支援設計アプリケーションのためのオペレーションセクション402は、3次元モデルデータ305を修正するためのアプリケーション機能304をトリガするデータを含む。メッセージ401は、またコンフリクトの解決およびピア201〜203の間の共有されたデータオブジェクト305の一致を保証するために使用されるデータを含むタイムスタンプセクション403をも含む。
【0011】
配信コンポーネント302において、別のコンピュータからメッセージを受信した場合、配信コンポーネント302は、一致コンポーネント303にそのメッセージを送る。一致コンポーネント303は、メッセージオペレーション402がアプリケーション機能304によって直ちに処理されるべきか、または待ちリスト307に置かれるべきか否かを決定する。ある場合は、一致コンポーネント303は、1つまたは2つ以上前に実行されたオペレーションを、より最近受信したオペレーション402を実行する前に(例えば、「アンドゥ」関数を使って)取消して元に戻さなければならないことを決定する。
【0012】
オペレーション巻戻し(roll−back)は、一連の従前の実行されたオペレーションおよび共有のデータオブジェクト305に対するデータ変更とを詳述するジャーナル306(すなわち、巻戻しキュー)を格納することによってサポートされる。あるケースでは、回数制限のないアンドゥオペレーションがサポートされ、他のケースでは、特定の実施形態でサポートされるアンドゥオペレーションの回数は、経験的に決定される(すなわち、データ同期アルゴリズムの機能を有効にするのに必要なサイズとして「最良の推定」が存在するかもしれない)。したがって、ジャーナル306のサイズは調整可能である。信頼性のある同期オペレーションを保持するためにアプリケーション301がサポートする必要のある巻戻しオペレーションの回数は、ネットワーク遅延、オペレーションを入力し処理することが可能なスピードおよびそのアプリケーションにとって許容できるエラートレランスレベルに依存するであろう。巻戻しを使用して、順不同の実行(別称、オーダリングエラー、シーケンシングエラーまたは一時的なエラー)を修正する。シーケンシングエラーを修正するため、一致コンポーネント303は、1つまたは2つ以上の巻戻しオペレーションを実行するための機能304をトリガする。オペレーションが巻戻されると、それらは待ちキュー305上で戻される。単一のオペレーションは、別のメッセージが他のコンピュータから到着する順番に依存する巻戻しと再実行の双方に関係するかもしれないため、これが必要となる。
【0013】
一致コンポーネント303は、また同時的コンフリクトを管理する。同時的コンフリクトは、2つの異なるコンピュータにおけるオペレーションが同時に(すなわち、同一のシーケンスの位置で)実行されると考えられるとき発生する。ある実施例では、待ちリスト307は、アンドゥ機能と共に順番のコンフリクトを解決するために使用され、優先順位のスキームは、同時的コンフリクトを管理するために使用される。優先順位のスキームは、一群の同時的なオペレーションのいずれが実行されるべきかを決定するため、異なる優先順位を割り当てる処理を含むことができる。本発明で用いられるように、オペレーションは、同一の絶対的または論理的時間に、またはオペレーションのシーケンスにおける同一の位置で発生するため、「同時的」と考えることができる。
【0014】
同時的オペレーションの例は、以下の状況において発生する。(i)コンピュータ201〜203の全てが10個のオペレーションを実行していて、(ii)コンピュータ201および202のユーザが各々独立して、もう一つのオペレーションを入力し、(iii)コンピュータ201は、その新しいオペレーションメッセージをコンピュータ202から新しいオペレーションのメッセージを受信する前に、コンピュータ202〜203に伝送し、および(iv)コンピュータ202はその新しいオペレーションメッセージをコンピュータ201から新しいオペレーションメッセージを受信する前に、コンピュータ201、203に伝送する。この場合、コンピュータ201および203の各々は、同一のカウンタ406の値(すなわち値11)でメッセージをコンピュータ203に送信した。カウンタ値が同一であるため、これらのメッセージの各々によって定められたオペレーションはコンピュータ203では同時的(すなわち、コンピュータ201〜202においてメッセージが生成される(普通の時計によって計測されるような)絶対的な時間にかかわらず、一連のオペレーションの中で同一のシーケンス番号を持つ)と考えられる。
【0015】
一致のコンポーネント303は、一群の同時的なオペレーションのいずれが実行されるか、およびいずれが拒絶されるかを決定するための優先順位のスキームを用いて同時的エラーを解決する。優先順位のスキームは、多くの異なる攻め方(strategies)を用いて優先順位を割り当てることができる。その攻め方には、メッセージ401を生成するコンピュータの一意的な名称またはネットワークアドレスに基づくアルファベット順、特定のオペレーション402に基づいて優先順位の転換、ネットワーク条件に基づいて決定される優先順位(例えば、より高い帯域幅で接続されたクライアント201は、より低い帯域幅で接続されたクライアント202の上の優先順位を有する。その逆もまた同じ)などが含まれる。
【0016】
ワークステーション201〜203によるメッセージの伝送および処理は、図2〜6を参照して説明されるであろう。簡潔にするため、図5では、コンピュータ201〜203は、それぞれ「A」、「B」および「C」と表し、コンピュータ「A」からのメッセージの優先順位は、「B」および「C」からのものより高く、「B」からのメッセージの優先順位は、「C」からのものより高くする。最初に、各コンピュータ「A」、「B」、「C」(201〜203)における一致コンポーネント303は、ローカルカウンタの値が0(LCA=LCB=LCC=0)、ジャーナル306が空(すなわち、ヌル(null))および待ちリスト307が空である。さらに、コンポーネント303は、共同のグループの内にある全てのコンピュータ(「A」、「B」、「C」)のリストおよび共有されたデータオブジェクト305の同一のコピーを有する。
【0017】
時刻t1において、コンピュータ「A」のユーザは、「A」において実行される共有のデータオブジェクト305のローカルコピー上で、アプリケーション指定のオペレーション(A1)を実行する(ステップ601〜602)。「A」はそのローカルカウンタの値LCAをインクリメント(すなわち、LCA=LCA+1=1)させる(ステップ603)。オペレーションA1は、メッセージ501および502の中にフォーマットされ(ステップ604)、「B」および「C」に(フォーマット401のメッセージを用いて)送られる(ステップ605)。メッセージ501、502の各々を生成するため、パラメータ402〜409は、もとのコンピュータ「A」によって設定(filled−in)される。一般に、パラメータ402〜409はメッセージ501と502の各々で同一となるであろう(しかし、他のパラメータ、例えばアドレシング情報が、メッセージ401に追加され、結果としてメッセージ501と502とで相違が生じることがあり得る)。オペレーションパラメータ402は、アプリケーション指定のパラメータであり、特定の共同アプリケーションのファンクションおよびそれらのファンクションのために必要なデータに依存するであろう。例えば、CADアプリケーションでは、パラメータ402は、個々のオペレーション(例えば、エクストルード(extrude)、カット(cut)、フィレット(fillet)、サイズ(size))を指定する。この個々のオペレーションを「A」のユーザがモデル上またはモデルのコンポーネントおよびデータ上で要求(例えば、extrude 10mm、fillet part ID#ABCなど)する。
【0018】
タイムスタンプパラメータ403は、「A」における一致コンポーネント303により保持されるデータを用いて設定される。タイムスタンプ403は、2つのサブグループを含む:(i)現在オペレーションのタイムスタンプ(COT)パラメータ404〜406、および(ii)従前のオペレーションのタイムスタンプ(POT)パラメータ407〜409。COTパラメータは、現在オペレーション402に関連するタイミングおよびシーケンシングの情報を伝達するのに対し、POTパラメータは履歴データを伝達し、同一のシーケンス値406を有するオペレーションを、2つのコンピュータから送信することにより生じるコンフリクトを識別するために使用する。
【0019】
オペレーション識別子パラメータ404は、メッセージ401によって要求されたオペレーションを識別する。パラメータ404は、パラメータ402のデータと冗長性を有することもあり、したがって、実施例によっては、選択によりパラメータ404を削除してもよい。トランスミッタ名パラメータ405は、送信側コンピュータ「A」と共同する他のコンピュータ「B」および「C」とを区別するための一意的な名前を用いて設定される。トランスミッタ名は、「A」に割り当てられるネットワーク名、ユーザ名、ネットワークポート番号(例えば、イーサネット(登録商標)アドレス)、ランダムな番号またはその他の一意的な名前の一意の組み合わせとすることができる。したがって、異なる一意的な名前は、同期が取られるデータ305の各一意のコピーに関連する。
【0020】
ローカルカウンタ値406は逐次インクリメントする値であり、特定のオペレーションおよびメッセージ(例えば501)が、実行されたオペレーション/受信されたメッセージ501〜506のシーケンスの中のどこにあるかを示している(すなわち、オペレーションが行われた場合、それはコンピュータのオペレーション上の段階を示している)。したがって、この例では、「段階」または「時刻」のパラメータは、シーケンスにおける位置である。このような絶対的な時間を表す、他のパラメータもまた、使用することができる。各コンピュータ「A」、「B」、「C」は、そのローカルカウンタ値(LC)を、予め定められた初期値(この例では、初期値ゼロである)で開始し、および実行された各オペレーションについて固定された量(この例では、1)だけインクリメントし、各「アンドゥ」オペレーションについて固定された量(同様に、1)を減じることにより保持する。最初の同期化メッセージ501〜502に関して、(ステップ603で計算される)「A」のローカルカウンタ値(LCA)は、メッセージパラメータ406の中に設定される;したがって、501〜502の各々におけるパラメータ406は値1を有するであろう。
【0021】
POTパラメータ407〜409は、「A」によって実行された従前のオペレーションに関するタイムスタンプパラメータを含む。POTパラメータは、「A」におけるジャーナル306に格納された従前に実行されたオペレーションのうち最新のものに関連するCOTパラメータを用いて設定される。最初のメッセージ501〜502を送信する際、そのジャーナルは空であり、したがって、従前のオペレーションのタイムスタンプパラメータ407〜409は、ヌル値に設定される。
【0022】
メッセージ501〜502を送信する際、コンピュータ「A」は、パラメータ406の現時点のローカルカウンタ値LCA(すなわち1)で、メッセージ501〜502の各々をフォーマットする。結果として、メッセージは「B」および「C」に(メッセージ501〜502として)伝送され(ステップ605)、オペレーションA1は、「A」において記録(すなわち、データベース306に設定)される(ステップ606)。実施例によっては、他のコンピュータから受信したオペレーションおよびメッセージ(すなわち、「A」において、「B」と「C」から受信したメッセージ)のために用いられるのと同一の形式で、ローカルに生成されたオペレーション(すなわちコンピュータ「A」におけるA1)を記録することができる。したがって、オペレーションA1を、送信メッセージ501または502の全てのパラメータと共に、「A」において記録することができる。明らかなように、ステップ601〜603は異なる順番で実行することができる。例えば、ステップ606はステップ605の前または後に実行することができる。
【0023】
時刻t2において、「B」のユーザは、オペレーションB1を入力して「B」におけるローカルの共有されたデータオブジェクトを修正し、「B」は、手順601〜603を用いて、コンピュータ「A」および「C」に同期化メッセージ503〜504を伝送する。メッセージ501が時刻t2の前に「B」において受信されなかったため、「B」もまた、ローカルカウンタ値406がLCB=1のメッセージ503〜504を伝送する。同様に、時刻t3において「A」のユーザは、「B」および「C」へのメッセージ504〜504によって伝送されたオペレーションA2を入力する。このケースでは、メッセージ504〜505のパラメータ406は、LCA=2に設定され、POTパラメータ407〜409は、最新の記録されたオペレーションに関連するCOTパラメータ404〜406に等しく設定される(すなわち、パラメータ407〜409によって、オペレーションA1が示される)。
【0024】
メッセージ501〜506を受信するためのプロセスを、図6Bを参照して説明する。図6Bは、受信のメッセージ(MRと示す)を処理する際のコンフリクトの解決のためのプロセスを示している。メッセージ(「MR」)をあるコンピュータで受信すると(ステップ610)、その受信のコンピュータは、(i)メッセージが正規の順番であり、実行準備されているか否か、(ii)メッセージが早すぎ、待ちリスト307に設定されるべきか否か、または(iii)同時的コンフリクトまたはオーダリングコンフリクトが存在するか否かを決定する。受信のメッセージMRをテストして、(「MR,count」と示される)タイムスタンプパラメータ406が、受信側コンピュータにおいて増加されたローカルカウンタ値(すなわち、LC+1)に等しいか、および(「MR,POT」と示される)POTパラメータ407〜409が受信側コンピュータのジャーナル306に関する最後のメッセージ/オペレーションを示すか否かを決定する(ステップ611)。もしそうであれば、メッセージMRは、正規のシーケンスにあると考えられ、受信側コンピュータはメッセージMRによって定められるオペレーション402を実行し、ジャーナル306にMRを追加し、およびそのローカルカウンタをインクリメントする(LC=LC+1)(ステップ612)。受信側コンピュータは、それから、その待ちリスト307が,受信側コンピュータのローカルカウンタの再増加値(すなわち、(ステップ612による(LC+1))+1)に等しいカウンタ406、および最後の記録されたメッセージのCOTパラメータに等しいPOTパラメータを持つ追加のメッセージを有するか否かを決定する(ステップ623)。もしそうであれば、その待ちのメッセージは待ちリストから取り除かれ、ステップ611において開始しているメッセージMRとして処理されるが、そうでない場合、コンピュータは、他のタスクの処理およびユーザ命令、またはメッセージの待ちに復帰する。
【0025】
ステップ611の判定が、メッセージMRがステップ612を経由して処理する準備ができていないとなった場合は、メッセージMRが早すぎるか、および/または同時的コンフリクトが存在する。この場合、受信メッセージのタイムスタンプパラメータ(MR,count)が、ローカルカウンタ値LC+1と比較される(ステップ613)。メッセージのタイムスタンプの値(406、MR,count)が、ローカルカウンタ値LC+1以上のときは、メッセージMRは、早いメッセージであり(MR,count>LC+1)、および/または(もし、MR,count=LC+1ならば)同時的コンフリクトが存在するであろう。この場合、待ちリストが探索され、カウンタ402および従前のオペレーションのタイムスタンプ値407〜409はメッセージMRと同一であるが、優先順位はメッセージMRよりも低い待ちのメッセージが存在するか否かを決定する(ステップ614)。もしそうであれば、その待ちのメッセージは削除される(ステップ615)。いかなる場合も、メッセージMRは待ちリストに追加される(ステップ616)(同時的コンフリクトを解決するために、図6Bのアルゴリズムの部分的手順が必要となるであろう)。ステップ623および624を通して処理が続けられる。
【0026】
もし、ステップ613で、カウンタ値406が(LC+1)よりも小さいと判定された場合、順番のコンフリクトが存在する。すなわち、カウンタ406と同じ値を持つ別のオペレーションが従前に処理されている。この場合、ジャーナルが探索され、従前に処理された(「MJ」と示す)メッセージを発見する(ステップ619)。メッセージMRがメッセージMJより高い優先順位、および同一のPOTパラメータ(407〜409)を有する(すなわち、MR,POT=MJ,POT)場合、メッセージMJおよびその全ての部分シーケンスのメッセージは、アンドゥされる(ステップ621)。メッセージMRは実行され、ジャーナルに追加され、およびローカルカウンタはパラメータ406の値にセットされる(ステップ622)。そうでない場合、メッセージMRは待ちリストに追加される(ステップ618)。メッセージがアンドゥされると(ステップ621)、それらは、部分シーケンスの再実行を可能にするため、待ちキュー305に置かれる。例えば、もしもアンドゥされたメッセージが正規に実行される次のメッセージMRである場合、またはもしも別のコンピュータからの同期化メッセージが、最新の「アンドゥ」プロセス621を生じさせて、そのプロセスで、アンドゥされたメッセージのいくつかを実行すべきであると決定された場合に、再実行処理が生じる。
【0027】
図5に戻って参照すると、時刻t4において、メッセージ504は「C」で受信される。メッセージ504は、「通常」のメッセージとして処理される(すなわち、コンフリクトがあることは示さない)。すなわち、メッセージ504はステップ610→611→612→623→624のプロセスを実行することにより処理される。
【0028】
時刻t5において、メッセージ501は「B」で、メッセージ503は「A」で、およびメッセージ506は「C」で受信される。この場合、「A」、「B」、および「C」における処理は、以下のとおりである:
「A」において:時刻t5において、メッセージ503のパラメータ406は値1を有し、LCAは値2を有する。結果として、処理はステップ610→611→613→619の経路に沿って生じる。ステップ619において、「A」のジャーナル306は、503のそれと同一のカウントを持つメッセージを探索する。したがって、メッセージ501が発見される。メッセージ501および503の優先順位およびPOT値が比較される(ステップ620)。この例では、「A」(すなわち、501)からのメッセージは、「B」からのそれより高い優先順位を有し、その結果として、受信したメッセージ503は廃棄される(ステップ618)。それから、ステップ623→624に沿って処理が続く。
【0029】
「B」において:時刻t5において、メッセージ501のパラメータ406は値1を有し、LCBは値1を有する。「A」における処理と同様、「B」における処理も、ステップ610→611→613→619の経路に沿って生じる。ジャーナル306の探索により、時刻t2において「B」から開始されたオペレーションB1が設置される。メッセージ501および503(すなわち、オペレーションB1)の優先順位が、それらのPOT値同様、比較される(ステップ620)。その結果、ステップ621における処理に続くことになる。ステップ621は、オペレーションB1をアンドゥするため、「アンドゥ」機能を行使して、Bのジャーナルから取り去る。メッセージ501は、それから、実行され、ジャーナルに追加され、およびLCBが、メッセージ501のカウントパラメータ406の値に設定される。
【0030】
「C」において:時刻t5において、メッセージ506のパラメータ406は、「C」におけるローカルカウンタ+1(LCC+1)に等しくなるが、POTパラメータ407〜409は、「C」における最後の記録されるオペレーションを特定することはできない。結果として、メッセージ処理は、ステップ610→611→613→614の経路に沿って移行する。ステップ614では、「C」における待ちメッセージキュー307を探索し、メッセージ506に同一のカウント値406およびPOT値407〜409を持つ待ちのメッセージが存在するか否かを決定する。この場合、このようなメッセージは存在しておらず、メッセージMRが待ちリスト307に追加される。ステップ623→624に沿って処理が続く。
【0031】
時刻t6において、メッセージ505はBで受信され、メッセージ502は「C」で受信される。「B」におけるメッセージ505の処理は、一直線になされ、ステップ610→611→612→623→624の経路に沿って生じる。「C」におけるメッセージ502の処理は、ステップ610→611→613→(ジャーナルでメッセージ504を識別する)619→(メッセージ502が504を超える優先順位を有することを決定する)620→(メッセージ504に「アンドゥ」機能を実施する)621→(メッセージ506において特定された(「MR,OP」で示す)オペレーションを実行する)622→623の経路に沿って発生する。ステップ623において、メッセージ506がキュー307に有り、処理の準備がまさにできていることが検出される。メッセージ506は、メッセージMRとして、ステップ611→612→623→624の処理経路に沿って処理される。時刻t6に続き、「A」、「B」および「C」の各々は、オペレーションA1およびA2を実行およびジャーナルに記録し、オペレーションB1およびB2を廃棄する。
【0032】
ほとんどの実施例においては、アプリケーション301のただ一つのインスタンスのみが、コンピュータ201で実行される。しかし、実施例によっては、アプリケーション301の複数のインスタンスが各コンピュータ上で実行されることも考えられる。例えば、あるコンピュータの複数のユーザ各々が、アプリケーション301のそれら自身のインスタンスを実行させる場合である。このような場合、各「インスタンス」は、論理的に分離した別のコンピュータ上で実行しているとみることができ、そのように扱われる。例えば、別のメッセージ401が、各コンピュータ上のアプリケーションの各インスタンスに送信され、各インスタンスは一意名405を有するであろう。
【0033】
上述のメッセージ伝送、受信、および処理アルゴリズムの一実施例は、擬似コードで以下のように実装される:
(共有データオブジェクトを最初に変更するコンピュータ「A」からのメッセージを配信するためのアルゴリズム)
【0034】
【表1】
【0035】
【表2】
【0036】
【表3】
【0037】
【表4】
【0038】
あるケースでは、アプリケーションは巻戻すことができないオペレーションを実行するかもしれない。もし特定のオペレーションが(例えば、一方向データ変換であるため)実行後に巻戻しができない場合、悲観的ロッキング方法が、このような不可逆オペレーションに先立って用いられ、これにより不可逆のオペレーションを実行する前に各コンピュータ201〜203が、共有のデータオブジェクト305と一致するコピーを有することを保証することができる。悲観的ロッキング方法が要求されるときは、悲観的ロッキング方法を要求するコンピュータ、例えば、201は、その最も最近実行されたオペレーションに関連するタイムスタンプ403のコピーを提供することができる。この最も最近実行されたオペレーションのタイムスタンプは、他のコンピュータ202〜203の各々におけるジャーナル306のタイムスタンプ情報と比較され、各コンピュータ202〜203がデータ305と一致するビューを有することを保証する。もしデータ305と一致しない場合、そのロッキング方法は否認される。否認するコンピュータは、その最も最近に実行されたオペレーションに関するタイムスタンプ情報を返却して、ロッキング方法を要求するコンピュータに現在の状態を通知することができる。ロッキング方法を要求するコンピュータは、悲観的ロッキング方法を再要求する前に、適切に同期が取られる(正規の状態が得られる)まで待機することができる。したがって、悲観的ロッキング方法は、要求されれば、一致コンポーネント303によってトランスペアレントに用いることができる。その待ちキュー305が大量のメッセージを有するか、またはそのメッセージがキューの中で大量の時間を消費する場合、このような悲観的ロッキング方法を、コンピュータによって開始することもできる。あるケースでは、キュー305は、実行することができないメッセージを有するかもしれない(これは、同期化メッセージの交換シナリオにおいて発生することもある)。時折悲観的ロッキング方法および同期化を働かせることによって、コンピュータ201〜203は、悲観的同期化の後に存在する、キューされたメッセージを廃棄することを決定することができる。
【0039】
あるケースでは、パラメータ402によって示されたオペレーションは、複合的なオペレーション、すなわち、単一の原子的なトランザクションとして実行される複数の部分オペレーション(すなわち、成功か失敗かのどちらかになる全てのオペレーション)からなる複合的なオペレーションかもしれない。CADシステムのユーザインタフェースは、ユーザに一群のオペレーションをバッチ処理させることも許容する選択機能を含ませることができる。例えば、ユーザは、複合的なトランザクションの入力を開始するときは「バッチ開始」の印をクリックし、トランザクションが入力され、別のコンピュータに送信されるべきときは「完了(completed)」の印をクリックすることができる。複合的なオペレーションは、また、例えば、マクロ機能によって自動的に生成されるかもしれない。したがって、パラメータ402は、可変サイズとすることができ、特定のオペレーションの要求にしたがって、複数のサブコンポーネントを含むことができる。パラメータ404および407は、複数のサブパーツを識別するために同様に適応させることができる。
【0040】
本発明は、デジタル電子回路内で、データ記憶媒体に記憶されたコンピュータコードとしてコンピュータハードウェア、ファームウェア、ソフトウェアで、またはこれらの組み合わせで実施することができる。コンピュータは、固定(ワイヤード)ネットワーク、無線、移動体無線、およびその他のネットワークタイプを含む多様なネットワークを介して相互接続することができる。本発明の装置は、プログラム可能なプロセッサによって実行するために機械読み取り可能な記憶装置に、実体的に実施されたコンピュータプログラム製品において実施することができる;本発明の方法のステップは、プログラム可能なプロセッサによって実施することができ、入力データにオペレーションを行い出力を生成することによって、本発明の機能を実施するためのプログラムの命令を実行することができる。本発明は、データおよび命令をデータ記憶システムと送受信する、結合された少なくとも1つのプログラム可能なプロセッサ、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む、プログラム可能なシステム上で実行可能な1つまたは2つ以上のコンピュータプログラムで有効に実施することができる。各コンピュータプログラムは、高レベルの手続きないしオブジェクト指向プログラミング言語、または必要ならばアセンブリ言語ないし機械語で実施することができる;いずれの場合でも、その言語はコンパイルまたはインタプリットされる言語とすることができる。適切なプロセッサには、例えば、汎用および専用の双方のマイクロプロセッサを含む。一般に、プロセッサは、読取専用メモリおよび/またはランダムアクセスメモリから命令とデータを受信する。コンピュータプログラム命令およびデータを実体的に実施するのに適した記憶装置には、全ての形式の不揮発性メモリが含まれ、例えば、これには、EPROM、EEPROMおよびフラッシュメモリ装置などの半導体メモリ装置;内蔵ハードディスクおよび取外し可能なディスクなどの磁気ディスク;磁気光ディスク;およびCD−ROMディスクが含まれる。上述のいかなるものも、特別に設計されたASIC(特定用途向けIC)により補い、あるいはそれに一体化することができる。
【0041】
本発明の多くの実施例を説明してきた。それにもかかわらず、本発明の精神と範囲から離れることなく多様な変更が可能であることが理解されるであろう。したがって、他の実施例も特許請求の範囲に含まれる。
【図面の簡単な説明】
【図1】メッセージフローを示す図である。
【図2】ピアツーピア型のネットワークを示す図である。
【図3】ソフトウェアアプリケーションの構造を示す図である。
【図4】メッセージフォーマットを示す図である。
【図5】メッセージフローを示す図である。
【図6A】プロセスのフローを示す図である。
【図6B】プロセスのフローを示す図である。
【符号の説明】
101、102、201〜203 コンピュータ
301 アプリケーション
302 メッセージ配信コンポーネント
303 一致コンポーネント
304 アプリケーション機能
305 データオブジェクト
306 ジャーナル
307 待ちリスト
308 ネットワーク
401 メッセージ
402 オペレーションセクション
403 タイムスタンプセクション
404〜409 パラメータ
501〜506 メッセージ
Claims (18)
- 複数のデータオブジェクトの一致を保持する方法であって、動作可能なようにネットワークによって相互に接続された複数のコンピュータのうちの異なる一つのコンピュータによって、各データオブジェクトが保持される方法において、前記複数のコンピュータのうちの第1のコンピュータにおいて受信したユーザ入力に応答して、
前記第1のコンピュータによって保持されている前記データオブジェクトのうち第1のデータオブジェクトを修正する現在オペレーションを前記第1のコンピュータが実行するステップと、
同期化メッセージを前記第1のコンピュータがフォーマット化するステップと、
前記第1のコンピュータから他の前記複数のコンピュータに前記同期化メッセージを伝送するステップと
を備え、前記同期化メッセージは、
前記現在オペレーションを示すデータと、第1のコンピュータと他の複数のコンピュータとの同期を可能とするように前記他の複数のコンピュータに前記現在オペレーションを実行可能にするデータと、前記現在オペレーションを実行するためのオペレーションの段階を識別する実行段階のデータとを含む現在オペレーションパラメータと、
前記第1のコンピュータによって実行される従前オペレーションを示すデータと、前記従前オペレーションが前記第1のコンピュータによって実行されたオペレーションの段階を示す実行段階データとを含む従前オペレーションパラメータと、
前記第1のコンピュータの一意的な優先順位を、前記他の複数のコンピュータに関連して示すパラメータと
を有することを特徴とする方法。 - 前記従前オペレーションパラメータは、前記複数のコンピュータのうち、直前のオペレーションを開始する一つのコンピュータを示すパラメータをさらに含み、該一つのコンピュータは、前記第1のコンピュータ以外であることを特徴とする請求項1に記載の方法。
- 前記第1のコンピュータから前記他の複数のコンピュータに伝送するステップは、ピアツーピアネットワーク伝送を用いて伝送するステップを含むことを特徴とする請求項1に記載の方法。
- 前記第1のコンピュータによる前記他のコンピュータへの伝送を可能にするため、前記第1のコンピュータにおいて前記他の複数のコンピュータ各々のネットワーク識別情報を記憶するステップをさらに備えたことを特徴とする請求項3に記載の方法。
- 前記優先順位を示すパラメータは、前記第1のコンピュータのネットワーク識別情報を含むことを特徴とする請求項3に記載の方法。
- 請求項1に記載の方法を実施するコンピュータプロセッサによって実行するための命令を記憶したことを特徴とするデータ記録媒体。
- 複数のデータオブジェクトの一致を保持するコンピュータ実装方法であって、動作可能なようにネットワークによって相互に接続された複数のコンピュータうちの異なる各コンピュータによって各データオブジェクトは保持され、前記方法は、前記データオブジェクトのうちの第1のデータオブジェクトを保持するため、前記複数のコンピュータのうち第1のコンピュータにおいて実行される方法において、
前記複数のコンピュータのうちの第2のコンピュータから同期化メッセージを前記第1のコンピュータが受信するステップと、
前記第1のコンピュータが正しい実行段階にある場合、前記第1のコンピュータにおける現在オペレーションパラメータの示すオペレーションを実行することによって前記複数のデータオブジェクトのうちの第1のデータオブジェクトを前記第1のコンピュータが更新するステップと
を備え、前記同期化メッセージは、現在オペレーションパラメータと、従前オペレーションパラメータと、他の複数のコンピュータに関連した第2のコンピュータの優先順位を示すパラメータとを有し、
前記現在オペレーションパラメータは、
前記第2のコンピュータによって実行された第1のオペレーションを示すデータと、第1のコンピュータと第2のコンピュータとの同期の効果をなすように前記第1のデータオブジェクトを操作するために第1のコンピュータにおける第1のオペレーションを実行するため要求されるデータと、前記第1のオペレーションが前記第2のコンピュータによって実行されたオペレーション段階を示す第1の実行段階パラメータと、第2のコンピュータを示す値とを含み、
前記従前オペレーションパラメータは、
第1のオペレーションを実行する前に第2のコンピュータで実行された第2のオペレーションを示すパラメータと、前記第2のオペレーションが前記第2のコンピュータによって実行されたオペレーションの段階を示す第2の実行段階パラメータと、前記第2のオペレーションを開始するコンピュータの識別情報(identity)とを含むことを特徴とする方法。 - 前記第2のオペレーションを開始するコンピュータの識別情報は、前記開始するコンピュータのネットワーク識別情報を含むことを特徴とする請求項7に記載の方法。
- 前記第1のコンピュータが正しい実行段階にある場合、更新するステップは、前記現在オペレーションパラメータと、前記第1のコンピュータで記憶されるローカル状態データに対する従来オペレーションパラメータとを比較するステップであって、そこでは、前記ローカル状態データは現在実行段階および最後に実行のオペレーションを示すステップと、
第1のコンピュータにおける現在オペレーションの段階が第1の実行段階パラメータによって示された前記実行段階に対応し、前記従前オペレーションパラメータが前記第1のコンピュータにおいて実行される実行オペレーションを前記ローカルの状態データが示している場合、前記第1のオペレーションを実行するステップと
をさらに有することを特徴とする請求項7に記載の方法。 - 前記第1のコンピュータにおける現在実行段階が、前記第1の実行段階パラメータによって示される前記オペレーション実行段階よりも早い場合、待ちリストに前記同期化メッセージを記憶するステップをさらに備えたことを特徴とする請求項9に記載の方法。
- 前記同期化メッセージを記憶するステップは、
前記待ちリストから同期化メッセージを削除するステップをさらに有し、
前記同期化メッセージは、より低い実行優先順位と、前記同期化メッセージと同一の第1の実行段階パラメータ値と、前記同期化メッセージと同一の第2の実行段階パラメータ値とを有することを特徴とする請求項10に記載の方法。 - 前記第1の実行段階パラメータによって示された実行段階に引き続く実行段階に前記第1のコンピュータがあることを前記ローカルの状態データが示す場合、
前記第1のコンピュータによって実行されたオペレーションの記録(journal)を探索して、前記第1のオペレーション段階パラメータによって示されたのと同一の実行段階において実行され記録されたオペレーションの位置を探索するステップと、
前記記録されたオペレーションが前記第1の同期化メッセージに関する前記実行の優先順位よりも低い実行の優先順位を有する場合、前記記録されたオペレーションと引き続くオペレーションをアンドゥし、前記第1の同期化メッセージによって示されるオペレーションを実行するステップと
をさらに備えたことを特徴とする請求項9に記載の方法。 - 前記記録されたオペレーションと、引き続くオペレーションとをアンドゥするステップは、前記従前オペレーションパラメータが、前記記録されたオペレーションの実行前に実行されたのと同一のオペレーションを示す場合にのみアンドゥを行うステップを有することを特徴とする請求項12に記載の方法。
- 前記記録されたオペレーションと引き続くオペレーションをアンドゥするステップは、アンドゥされたオペレーションを引き続きの再実行可能とするため、待ちキューに前記アンドゥされたオペレーションの各々を記憶するステップを有することを特徴とする請求項12に記載の方法。
- 前記記録されたオペレーションが、前記第1の同期化メッセージに関する前記実行の優先順位よりも高い実行の優先順位を有する場合、待ちリストに前記第1の同期化メッセージを記憶するステップを備えたことを特徴とする請求項12に記載の方法。
- 請求項7に記載の方法をコンピュータプロセッサにより実行する命令を記憶したことを特徴とするデータ記録媒体。
- コンピュータシステムにおいて、
プロセッサと、
該プロセッサに結合され、複数の他のコンピュータシステムと前記コンピュータシステムとを動作可能なように結合するネットワークインタフェースと、
前記プロセッサに結合され、他の前記複数のコンピュータにおいてコピーされたローカルデータのコピーである第1のデータオブジェクトを記憶するメモリと、
該第1のデータオブジェクトの同期化の効果をなすオペレーションを記録するメモリを有し、前記第1のデータオブジェクトの処理の効果をなすデータを前記プロセッサが記録するように構成されたローカル状態モジュールと、
前記プロセッサおよび前記メモリに結合され、前記複数の他のコンピュータシステムにおいて記憶されているデータオブジェクトのコピーでもって前記第1のデータオブジェクトの一致を前記プロセッサが保持するよう操作する一致モジュールとを備え、
前記モジュールは、メモリに格納されたプログラムであり、前記プロセッサにより実行され、
前記保持は、受信した同期化メッセージの処理に基づいて実行され、
当該受信した同期化メッセージは、
他のコンピュータで実行された第1のオペレーションを示すデータと、前記他のコンピュータにおいて記憶されたデータオブジェクトと前記第1のデータオブジェクトとの同期の効果をなすように前記第1のデータオブジェクトを処理するために前記第1のオペレーションを実行するために要求されるデータと、前記第1のオペレーションが前記他のコンピュータによって実行されるオペレーションの段階を示す第1の実行段階パラメータと、前記他のコンピュータを示す値とを含む現在オペレーションパラメータと、
前記第1のオペレーションの実行前に前記他のコンピュータによって実行された第2のオペレーションを示すパラメータと、前記第2のオペレーションが前記複数の他のコンピュータにおいて実行されたオペレーションの段階を示す第2の実行段階パラメータと、前記第2のオペレーションを開始するコンピュータの識別情報とを含む従前オペレーションパラメータと
前記第1のオペレーションの一意的な優先順位を、前記他のコンピュータに関連して示すパラメータと
を有することを特徴とするシステム。 - 前記ローカル状態モジュールは、
前記現時点でのオペレーションパラメータおよび前記従前オペレーションパラメータと、前記第1のデータオブジェクトの処理に関する前記システムの現時点での段階および前記第1のデータオブジェクトの効果をなす最後のオペレーションを示す前記ローカル状態モジュールによって保持されるデータとを比較する処理と、
前記システムが正しい実行段階にある場合、現在オペレーションパラメータによって示されるオペレーションを実行することによって前記第1のデータオブジェクトを更新するよう、前記一致モジュールに命令する処理と、
前記システムが、前記第1の実行段階パラメータによって示されるより早い実行段階にある場合、待ちリストに前記同期化メッセージを記憶する処理と、
より低い実行優先順位と、前記同期化メッセージと同一の第1の実行段階パラメータ値と、前記同期化メッセージと同一の第2の実行段階パラメータ値とを有する前記同期化メッセージを、前記待ちリストから削除する処理とを
前記プロセッサに実行させるための、記憶された命令を有することを特徴とする請求項17に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/021,916 | 2001-12-17 | ||
US10/021,916 US6938070B2 (en) | 2001-12-17 | 2001-12-17 | Conflict resolution for collaborative work system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003303179A JP2003303179A (ja) | 2003-10-24 |
JP3779263B2 true JP3779263B2 (ja) | 2006-05-24 |
Family
ID=21806824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002365935A Expired - Lifetime JP3779263B2 (ja) | 2001-12-17 | 2002-12-17 | 共同作業システムのためのコンフリクトの解決 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6938070B2 (ja) |
EP (1) | EP1326184B1 (ja) |
JP (1) | JP3779263B2 (ja) |
AT (1) | ATE515744T1 (ja) |
CA (1) | CA2413615C (ja) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040005892A1 (en) * | 2002-04-18 | 2004-01-08 | Arnaldo Mayer | System and method for managing parameter exchange between telecommunications operators |
US7337193B1 (en) * | 2002-05-02 | 2008-02-26 | Palmsource, Inc. | Determining priority between data items |
JP2003345764A (ja) * | 2002-05-27 | 2003-12-05 | Hitachi Ltd | 備忘録端末及び備忘録管理方法 |
US20080091761A1 (en) * | 2002-08-06 | 2008-04-17 | Stt Webos, Inc. | Method and apparatus for information exchange over a web based environment |
US20110119353A1 (en) | 2002-08-06 | 2011-05-19 | Tsao Sheng Tai Ted | Method and Apparatus for information exchange over a web based environment |
US8577839B2 (en) | 2002-08-06 | 2013-11-05 | Sheng Tai (Ted) Tsao | Method and apparatus of dynamic updating web portals |
CA2508336A1 (en) * | 2002-12-03 | 2004-06-17 | David Boxenhorn | Networked computing using objects by permitting interactivity between at least two objects over a network |
US7426539B2 (en) * | 2003-01-09 | 2008-09-16 | Sony Computer Entertainment America Inc. | Dynamic bandwidth control |
US7617278B1 (en) | 2003-01-29 | 2009-11-10 | Adobe Systems Incorporated | Client controllable server-side playlists |
US7246356B1 (en) | 2003-01-29 | 2007-07-17 | Adobe Systems Incorporated | Method and system for facilitating comunications between an interactive multimedia client and an interactive multimedia communication server |
US7272658B1 (en) | 2003-02-13 | 2007-09-18 | Adobe Systems Incorporated | Real-time priority-based media communication |
WO2004077298A1 (en) * | 2003-02-28 | 2004-09-10 | Canon Kabushiki Kaisha | Information processing method and apparatus |
US7287256B1 (en) | 2003-03-28 | 2007-10-23 | Adobe Systems Incorporated | Shared persistent objects |
US20060095483A1 (en) * | 2004-04-23 | 2006-05-04 | Waratek Pty Limited | Modified computer architecture with finalization of objects |
US7603357B1 (en) * | 2004-06-01 | 2009-10-13 | Adobe Systems Incorporated | Collaborative asset management |
US7478112B2 (en) * | 2004-12-16 | 2009-01-13 | International Business Machines Corporation | Method and apparatus for initializing data propagation execution for large database replication |
US7792788B2 (en) * | 2005-03-04 | 2010-09-07 | Microsoft Corporation | Method and system for resolving conflicts operations in a collaborative editing environment |
US20060212517A1 (en) * | 2005-03-15 | 2006-09-21 | International Business Machines Corporation | Method, system, and program product for maintaining synchronization among replicated applications using externality forwarding |
US7693958B2 (en) * | 2005-06-20 | 2010-04-06 | Microsoft Corporation | Instant messaging with data sharing |
US7945615B1 (en) * | 2005-10-31 | 2011-05-17 | Adobe Systems Incorporated | Distributed shared persistent objects |
US8161159B1 (en) | 2005-10-31 | 2012-04-17 | Adobe Systems Incorporated | Network configuration with smart edge servers |
US7552148B2 (en) * | 2006-02-28 | 2009-06-23 | Microsoft Corporation | Shutdown recovery |
EP1868149B1 (en) * | 2006-06-14 | 2019-08-07 | Dassault Systèmes | Improved computerized collaborative work |
US8150798B2 (en) | 2006-10-10 | 2012-04-03 | Wells Fargo Bank, N.A. | Method and system for automated coordination and organization of electronic communications in enterprises |
WO2009147704A1 (ja) * | 2008-06-04 | 2009-12-10 | 株式会社 アテナテレコムラボ | テーブルとテーブル項目の平行編集プログラム |
US7849399B2 (en) * | 2007-06-29 | 2010-12-07 | Walter Hoffmann | Method and system for tracking authorship of content in data |
JP5543901B2 (ja) * | 2008-06-04 | 2014-07-09 | 株式会社アテナテレコムラボ | データベース並行編集方式 |
JP5543899B2 (ja) * | 2008-06-04 | 2014-07-09 | 株式会社アテナテレコムラボ | データベースのデータ項目の平行編集方式 |
US8010487B2 (en) * | 2008-06-27 | 2011-08-30 | Microsoft Corporation | Synchronization and collaboration within peer-to-peer and client/server environments |
US8543773B2 (en) | 2008-08-25 | 2013-09-24 | International Business Machines Corporation | Distributed shared memory |
US8051287B2 (en) * | 2008-10-15 | 2011-11-01 | Adobe Systems Incorporated | Imparting real-time priority-based network communications in an encrypted communication session |
US8166191B1 (en) | 2009-08-17 | 2012-04-24 | Adobe Systems Incorporated | Hint based media content streaming |
US8412841B1 (en) | 2009-08-17 | 2013-04-02 | Adobe Systems Incorporated | Media content streaming using stream message fragments |
US8201094B2 (en) * | 2009-09-25 | 2012-06-12 | Nokia Corporation | Method and apparatus for collaborative graphical creation |
DE202011110880U1 (de) | 2010-04-12 | 2017-01-20 | Google Inc. | Kollaborative Cursors in einem gehosteten Textverarbeitungsprogramm |
WO2011130307A1 (en) | 2010-04-12 | 2011-10-20 | Google Inc. | Real-time collaboration in a hosted word processor |
US8700986B1 (en) | 2011-03-18 | 2014-04-15 | Google Inc. | System and method for displaying a document containing footnotes |
US8566708B1 (en) | 2011-01-13 | 2013-10-22 | Google Inc. | Merging electronic document redraws |
US8510266B1 (en) | 2011-03-03 | 2013-08-13 | Google Inc. | System and method for providing online data management services |
US8484561B1 (en) * | 2011-09-02 | 2013-07-09 | Google Inc. | System and method for updating an object instance based on instructions received from multiple devices |
US9336137B2 (en) | 2011-09-02 | 2016-05-10 | Google Inc. | System and method for performing data management in a collaborative development environment |
US8935328B2 (en) * | 2011-09-15 | 2015-01-13 | Ramakrishna J Tumuluri | System and method for collaborative 3D visualization and real-time interaction on a computer network |
US8738706B1 (en) | 2011-11-16 | 2014-05-27 | Google Inc. | Systems and methods for collaborative document editing |
CN102682178A (zh) * | 2012-05-22 | 2012-09-19 | 武汉大学 | 一种异构cad在线集成中的一致性维护方法 |
US9286276B2 (en) * | 2012-06-11 | 2016-03-15 | Google Inc. | System and method of document embedding in collaborative editors |
US9462037B2 (en) | 2013-01-07 | 2016-10-04 | Google Inc. | Dynamically sizing chunks in a partially loaded spreadsheet model |
US10956667B2 (en) | 2013-01-07 | 2021-03-23 | Google Llc | Operational transformations proxy for thin clients |
WO2015066378A1 (en) * | 2013-10-30 | 2015-05-07 | Brigham Young University | Cax model synchronization |
CN104834292A (zh) * | 2015-04-27 | 2015-08-12 | 北京华泰诺安科技有限公司 | 一种同步核生化监控数据的方法 |
US11995047B2 (en) * | 2020-04-10 | 2024-05-28 | International Business Machines Corporation | Dynamic schema based multitenancy |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1271412B (de) * | 1964-02-24 | 1968-06-27 | Kernforschung Gmbh Ges Fuer | Einrichtung zum gleichzeitigen Messen der Filtergeschwindigkeit und der Richtung von Grundwasserstroemen von einem Bohrloch aus mit Radionukliden |
EP0490980B1 (en) * | 1989-09-08 | 1999-05-06 | Auspex Systems, Inc. | Multiple facility operating system architecture |
US5337407A (en) * | 1991-12-31 | 1994-08-09 | International Business Machines Corporation | Method and system for identifying users in a collaborative computer-based system |
US5491640A (en) * | 1992-05-01 | 1996-02-13 | Vlsi Technology, Inc. | Method and apparatus for synthesizing datapaths for integrated circuit design and fabrication |
US5937343A (en) * | 1994-09-13 | 1999-08-10 | At&T Corp. | Method and system for updating replicated databases in a telecommunication network system |
US6192365B1 (en) * | 1995-07-20 | 2001-02-20 | Novell, Inc. | Transaction log management in a disconnectable computer and network |
US5960173A (en) * | 1995-12-22 | 1999-09-28 | Sun Microsystems, Inc. | System and method enabling awareness of others working on similar tasks in a computer work environment |
JP3103793B2 (ja) * | 1997-03-11 | 2000-10-30 | 株式会社モノリス | オブジェクトの構造グラフ生成装置、それを利用することの可能なデータ変換装置およびシステム |
DE19737850A1 (de) * | 1997-08-29 | 1999-04-08 | Siemens Ag | Verfahren und Kommunikationssystem zur Synchronisation zweier Vorrichtungen auf ein vorgebbares Datenübertragungsverfahren |
US5973678A (en) * | 1997-08-29 | 1999-10-26 | Ford Global Technologies, Inc. | Method and system for manipulating a three-dimensional object utilizing a force feedback interface |
US7176942B2 (en) * | 2001-03-23 | 2007-02-13 | Dassault Systemes | Collaborative design |
-
2001
- 2001-12-17 US US10/021,916 patent/US6938070B2/en not_active Expired - Lifetime
-
2002
- 2002-11-27 CA CA002413615A patent/CA2413615C/en not_active Expired - Lifetime
- 2002-12-17 JP JP2002365935A patent/JP3779263B2/ja not_active Expired - Lifetime
- 2002-12-17 EP EP02293120A patent/EP1326184B1/en not_active Expired - Lifetime
- 2002-12-17 AT AT02293120T patent/ATE515744T1/de not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US6938070B2 (en) | 2005-08-30 |
US20030115268A1 (en) | 2003-06-19 |
CA2413615C (en) | 2008-05-27 |
EP1326184B1 (en) | 2011-07-06 |
EP1326184A3 (en) | 2004-03-17 |
JP2003303179A (ja) | 2003-10-24 |
ATE515744T1 (de) | 2011-07-15 |
CA2413615A1 (en) | 2003-06-17 |
EP1326184A2 (en) | 2003-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3779263B2 (ja) | 共同作業システムのためのコンフリクトの解決 | |
US11003689B2 (en) | Distributed database transaction protocol | |
CA3121919C (en) | System and method for augmenting database applications with blockchain technology | |
US20230100223A1 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
CN111159252B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
JP4291060B2 (ja) | トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム | |
CN111597015B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
JP7220807B2 (ja) | データ読み取り方法、装置、コンピュータ装置及びコンピュータプログラム | |
EP1241592A2 (en) | Collision avoidance in Bidirectional database replication | |
US8756196B2 (en) | Propagating tables while preserving cyclic foreign key relationships | |
US10489378B2 (en) | Detection and resolution of conflicts in data synchronization | |
CN109643310B (zh) | 用于数据库中数据重分布的系统和方法 | |
US11893041B2 (en) | Data synchronization between a source database system and target database system | |
EP4189914B1 (en) | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems | |
US11288263B2 (en) | Change service for shared database object | |
CN113656384B (zh) | 数据处理方法、分布式数据库系统、电子设备及存储介质 | |
WO2023103340A1 (zh) | 一种区块数据提交的方法及装置 | |
US20170123933A1 (en) | System and method for distributing file system changes to remotely located file replicas | |
US10409651B2 (en) | Incremental workflow execution | |
US20190213270A1 (en) | Mitigating race conditions across two live datastores | |
CN107295043B (zh) | 一种对用户进行迁移的方法和设备 | |
CN115905402A (zh) | 处理事务日志的方法及装置 | |
CN115237884A (zh) | 数据处理方法、系统、电子设备及计算机存储介质 | |
CN114020424A (zh) | 一种任务处理方法、装置及相关设备 | |
JPH0869441A (ja) | 複合データ入出力管理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051007 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060110 |
|
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: 20060210 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060301 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3779263 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100310 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100310 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120310 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120310 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140310 Year of fee payment: 8 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |