JPH08115246A - セッションの一貫性を保証する方法 - Google Patents

セッションの一貫性を保証する方法

Info

Publication number
JPH08115246A
JPH08115246A JP7244973A JP24497395A JPH08115246A JP H08115246 A JPH08115246 A JP H08115246A JP 7244973 A JP7244973 A JP 7244973A JP 24497395 A JP24497395 A JP 24497395A JP H08115246 A JPH08115246 A JP H08115246A
Authority
JP
Japan
Prior art keywords
session
server
client
write
guarantee
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.)
Pending
Application number
JP7244973A
Other languages
English (en)
Inventor
Douglas B Terry
ダグラス・ビー・テリー
Alan J Demers
アラン・ジェイ・ディマース
Karin Petersen
カリン・ピーターセン
Michael J Spreitzer
マイケル・ジェイ・スプライツァー
Marvin M Theimer
マービン・エム・サイマー
Brent B Welch
ブレント・ビー・ウェルチ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xerox Corp
Original Assignee
Xerox Corp
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 Xerox Corp filed Critical Xerox Corp
Publication of JPH08115246A publication Critical patent/JPH08115246A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • 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/2365Ensuring data consistency and integrity
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Landscapes

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

Abstract

(57)【要約】 【課題】 弱一貫性の複製データベースのクライアント
に対して、「セッション」ごとに、クライアントの選択
した一貫性保証を提供する。 【解決手段】 少なくとも一台のクライアントのデータ
ベースアクセスおよび更新要求から各々が構成されてい
るような複数のセッションを定義し、前記少なくとも一
台のクライアントによって、任意の保証の適切さが決定
された場合に、所定の保証の集合から、各セッションの
関連一貫性保証の関連部分集合を選択し、少なくとも一
台のクライアントがセッション中に異なるサーバにアク
セスするときにおいても、前記セッションの最中に前記
少なくとも一台のクライアントの選択保証を実施する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、分散形データベー
スのクライアントにデータの一貫性(consistency)を保
証するための方法に関するものであり、更に詳しくいう
と、セッションの間中、クライアントに一貫性を保証す
るための方法に関するものである。
【0002】
【従来の技術】多数のユーザの間のデータへの共有アク
セスを提供するシステムにおいて、一般的に何らかの形
でデータの「複製」が行われる。例えば、システムによ
っては、各々がシステムデータベースの完全な複製を有
する多数のデータ「サーバ」に分割されるものもある。
これらサーバは、多数の「クライアント」からの要求を
処理する。一般に、かかる要求は、システムのベースの
「読出し」と「書込み」という形で入ってくる。
【0003】データの複製は、移動性のあるクライアン
トに対して柔軟性と可用性を与えるものである。移動性
のあるクライアントは、さっき接続していたものと違う
サーバに後で接続するためだけに、断続的にシステムを
切断する。全部のサーバでデータが完全に(そして完璧
に)複製されていれば、移動性のあるクライアントは、
少なくとも一つのサーバに接続できさえすれば、常にそ
こで全部のシステムデータにアクセスするであろう。
【0004】
【発明が解決しようとする課題】しかしながら、特に多
数のクライアントとサーバを有するシステムでは、「完
璧な」複製は一般に非実際的すなわち極端に費用を要す
る。クライアントによってもたらされる(書込みによ
る)変更は、完璧な複製を保証するために、必ず全部の
システムサーバに速やかに伝播される必要がある。そう
でなければ、クライアントの中に、まだ更新されていな
い、すなわち複製の完璧性に反するサーバーのデータ項
目にアクセスするものが出る可能性がある。従って、こ
の条件を緩和するための別の計画が現れた。
【0005】「強一貫性」の分散形データベースは、変
更事項がシステム中くまなく更新されること、または、
不一致が生じた場合にある種のサーバ起動コールバック
を行うこと、が要求される。強一貫性のシステムは高度
なデータ一貫性を提供するが、しばしば代償となる犠牲
は可用性である。例えば、このようなデータベースのク
ライアントは、更新されたばかりで全部のサーバ中にデ
ータの更新が行われるまでブロックされているデータに
アクセスする場合があるかも知れない。
【0006】一方、「弱」一貫性のデータベースでは、
サーバは、全部のシステム更新内容を含んでいないかも
知れないデータにアクセスを許される。かかるシステム
は、一般に、サーバ間の更新内容の「遅延」伝播(すな
わち、更新内容が時間をかけてサーバ間に伝播する)を
特徴とする。従ってクライアントは、別の複製のデータ
を読んだときに不一致の価値を見出す。それにも関わら
ず、弱一貫性のシステムは、その高い可用性、優れたス
ケーラビリティ、およびデザインの単純さにより、人気
がある。これらの利益は、複製間の同期化がほとんど或
は全くない状態で、読出しと書込みが実施されるように
する能力により生じたものである。
【0007】残念なことに、弱一貫性のシステムの読み
書き動作の配列に関する保証がないため、ユーザならび
にアプリケーション業務を混乱させる可能性がある。ユ
ーザは、あるデータ項目のいずれかの内容を読み、後か
ら、古いほうの内容を読むことがあるかも知れない。同
様に、あるユーザが、いずれか別のデータの読出しに基
づいてデータ項目を更新しても、別の人は、その基礎と
なったデータを見ずに、更新された項目だけを読む場合
がある。弱一貫性のシステムの重大問題は、たった一人
のユーザまたはアプリケーション業務がデータ変更を行
っているときにおいても、不一致の生じる可能性がある
ことである。例えば、分散形データベースシステム中の
移動性のあるクライアントは、あるサーバで書込みを行
ない、後から別のサーバで読出しを行うことがある。二
作業間のあいだに二つのサーバが互いに同期化されなけ
れば、クライアントは不一致な結果を見ることになる。
【0008】データの利用可能性ならびにデータの一貫
性は、相互排他的な目標であることがあるので、システ
ムデザイナー達は、歩み寄りの道をとろうと努力してき
た。しかしながら、システムは一般に、各自が別々のセ
キュリティと利用可能性のニーズを有する莫大数のクラ
イアントをサポートしているため、このトレードオフに
対するシステム基模で課せられる解決は、クライアント
の将来展望という点では最適状態に及ばない。クライア
ントの中には、利用可能性を損なっても更なるデータ一
貫性を欲するものもいるが、しばしば不一致バージョン
を入手することを意味するとしても、複数のデータコピ
ーにアクセスすることを好むものもいる。
【0009】従って、複製データベースのクライアント
が、適切な、個別決定された、自分自身のためのデータ
一貫性とデータ利用可能性のバランスを確立できるよう
にする機構を提供する必要がある。
【0010】
【課題を解決するための手段】本発明は、弱一貫性の(w
eakly consistent)複製データベースのクライアントに
対して、「セッション」ごとに、クライアントの選択し
た一貫性保証を、提供するものである。「セッション」
とは、論理的に関連付けられる、データベースに対する
読出しと書込みの順序と広義に定義される。セッション
は、同時に存在する他のセッションとは実質的に独立に
開始および終了される。しかしながらクライアントは、
クローンセッションおよび/またはマージセッションが
許可される。
【0011】
【発明の実施の形態】図1は、クライアント/サーバ環
境の図である。図2は、クライアントとサーバとセッシ
ョンマネージャの構成の一例である。図3は、クライア
ントの申し込みによって引き起こされた単純なセッショ
ンの一例を示す。図4と5は、各々、「自分の書込み読
出し」保証が不在の場合と存在する場合のクライアント
トランザクションの一例を示す。図6と7は、各々、
「単調読出し」保証が課せられない場合と課せられる場
合のクライアントトランザクションを示す。図8と9
は、各々、「読出し後書込み」保証が課せられない場合
と課せられる場合のクライアントトランザクションを示
す。図10と11は、各々、「単調書込み」保証が課せ
られない場合と課せられる場合のクライアントトランザ
クションを示す。図12と13は、セッションマネージ
ャによって実施される発見ならびに実施プロセスのフロ
ーチャートである。図14は、セッションマネージャの
ブロック図である。図15は、サーバば十分に最新情報
に接しているかを判定するバージョンベクトルの使用法
を示す。
【0012】ここで図1を参照すると、普通の「クライ
アント/サーバ」モデル10において、サーバ12は種
々クライアント14によって作成された、または、他の
サーバからコピーされたデータの陳列所(すなわちデー
タベース)である。文中、「データベース」という用語
は、特定のデータモデルまたは組織を意味するものでは
ない。データベースは、単にデータ項目の集合であり、
データ項目というのは、従来のファイルから関連データ
ベース中の集合までのいずれかである。
【0013】サーバ12は、他のサーバ12および/ま
たは一人または複数のクライアント14と通信中である
ように図示されている。これらの通信回線は、連続して
いる場合もあるし、時々とぎれる場合もある。クライア
ントとサーバ間の最も一般的なやりとりは、種々のサー
バ12に保存されているデータに対する「読出し」また
は「書込み」要求の形で発生する。「読出し」または
「書込み」要求は、データベースに保存されている特定
データ項目に対して指定的なものである場合もあるし、
あるいは、データベース照会の形を取る場合もある。例
えば、「読出し」は、「特定ファイルの中身をリターン
せよ」というような単純な検索回収作業の場合もある
し、「100,000ドル以上になった全従業員の氏名
をリターンせよ」というような複雑な照会の場合もあ
る。書込み操作はデータベースを更新する。一方、「書
込み」は、データ項目の作成、変更、削除に関わる場合
もある。実際のところ、書込みは、サーバのデータベー
スの複数の項目を最小限更新するトランザクションを表
す場合さえある。
【0014】時間依存成分を有するので、サーバのデー
タベースを見ることは、しばしば役に立つ。従って、
「DB(S,t)」は、時間t以前にサーバSに受信さ
れた、順序付けられた「書込み」配列であると定義され
る。tが現在の時間である場合には、それは、DB
(S)として書き込まれ、サーバのデータベースの現在
の内容を表す。概念的にサーバSは、空のデータベース
で初めて所定順序でDB(S)の各書込みを適用するこ
とによって、自身のデータベースのコピーを作成する。
実際的には、サーバは、結果として得られたデータベー
スのエントリの順序が変更されないでいる限り、別の順
序で書込みを処理できる。従って、例えば、DB(S)
の書込みの順序は、必ずしもサーバSが最初に書込みを
受信した順序とは一致しない。
【0015】アップデートは時間をかけて(極めて小さ
くでもなく、瞬時にでもなく)徐々に普及するので、モ
デル10のデータべースは「弱一貫性」である。弱一貫
性であるため、サーバが異なるとデータベースのコピー
が変化する。すなわち、二台のサーバS1とS2につい
て、DB(S1,t)とDB(S2,t)は必ずしも等
しくない。しかしながら、アップデートが無い状態では
サーバは全く同じデータベースへ収束するので「究極的
一貫性」が存在する。言い換えると、各々の書込みWに
ついて、どのサーバSのDB(S,t)にもWが存在す
る時間tが存在する。偶発的一貫性は、「全伝播」(す
なわち、更新された全データが最後に各サーバに受信さ
れる場合)と「一貫した順序付け」(すなわち、「順序
依存性」を有する書込みが、全部のサーバで同様に順序
付けられた場合)という二特性によって決まる。
【0016】究極的一貫性を得るために、モデル10
は、種々サーバをわたるデータの複製について二つの仮
定を立てる。まず、モデル10は、複製が「遅延」伝播
によって行われると仮定する。遅延伝播は、各々の書込
みが時間をかけて他のサーバに伝播されるものである。
第二に、モデル10は、全部のサーバは全部の「非可
変」書込み(すなわち、データベースへの適用の「順
序」により、異なる二つのデータベースになる書込み)
を同じ順序でデータベースに適用する、と仮定する。そ
のため、「書込み順序(W1,W2)」は、書込みW2
の前に書込みW1が順序付けられているか否かを示す論
理術語として定義される。このように、書込み順序(W
1,W2)が真であれば、W1は、W1とW2の両方を
受信したいずれかサーバのDB(S)で、W2の前に順
序付けられるはずである。
【0017】究極的一貫システムでは、サーバは、書込
みの順序に同意する(従って、論理書込み順序(W1,
W2)が満足されているか検査もする)ための種々技術
のいずれかを利用できる。かかる技術の一つでは、書込
みは、提示される書込み要求の順序に基づいてサーバが
与える「発信タイムスタンプ」によって順序付けられ
る。しかしながら、書込みが実施された実際の時間によ
って書込みを順序付けるという要求がないので、書込み
順序を決定するためにタイムスタンプを利用することは
サーバがクロックに同期していたことを意味するもので
はない。
【0018】結論として、弱一貫性のシステムは矛盾の
ある書込みを生じさせる。すなわち、二台のクライアン
トが同じデータ項目に対して同時的な両立し得ない更新
を行うことがある。既存のシステムは、いろいろな方法
で矛盾のある書込みを解決する。システムの中には、書
込み順序によって、どの書込みが最初に命ぜられたかを
判断するものもあるし、検出された矛盾の解決を人間に
頼るものもある。
【0019】図2で、矢印の付いた線は、クライアン
ト、サーバ、セッションマネージャとして識別される実
体の、説明に役立つ通信経路を表す。これらの実体は、
同じもしくは異なるホストに常駐する。その場合、最適
なのは別々の通信手段にすることである。例えば、ホス
トの同じアドレス空間に二つの実体が常駐する場合は、
単純な手続き呼び出しが適切な通信手段であるのに対
し、二つの実体が異なるホストに常駐する場合は遠隔手
順呼び出し(RPC)が最適である。
【0020】クライアント14は、セッション操作の一
部として、セッションマネージャ22とやりとりする。
同一セッションに複数のクライアントが属する場合もあ
るし、各々のクライアントが複数のセッションに参加す
る場合もある。いずれか任意のセッションは、一つのセ
ッションマネージャによって操作されるが、一つのセッ
ションマネージャが複数のセッションを操作する場合も
ある。セッションマネージャ22は、クライアント14
に代わってサーバとやりとりする。サーバは自分たち同
士でやりとりを行って、更新を伝播する。
【0021】各セッションは、セッション識別子が付随
する。セッション識別子は、セッションマネージャによ
って異なるセッションを区別するために使用される。同
一セッション識別子を使用することにより、複数クライ
アントが一つのセッションに参加することができる。従
って、クライアントは、共有したいセッションのセッシ
ョン識別子を交換できなくてはならない。
【0022】セッションマネージャ22は、セッション
の初期設定、セッション毎のデータ保証集合の選択、セ
ッション毎のこれら保証の実施、を処理する。サーバ1
2からのデータベースサービスは、一般的にはクライア
ント14から要求される。クライアントはセッションの
一部として要求を行う。セッションの一貫性保証を実施
するために、クライアントは、そのセッションに対して
応答可能なセッションマネージャ22にSの要求を行
う。セッションマネージャは適当なサーバとやりとりし
て、クライアントのデータベース要求を実施する。
【0023】クライアントとセッションマネージャが、
セッションならびにそれらの保証を実施するので、サー
バは一般に、どのセッションが活動中であるかを知らな
い。サーバ12は、要求を満足するデータを、そのデー
タベース30から検索回収した後、それを要求元にリタ
ーンすることによって、読出し要求を処理する。書込み
要求は一般に、そのデータベースの内容を変更すること
によって処理される。
【0024】この特定実施例を実施するには、各々のサ
ーバは、自分の現在の状態を記憶する必要がある。大ま
かに言うと、サーバの「状態」は、サーバが「知ってい
る」全書込みの集合のことである。この書込み情報の細
分性は、データの大きさによって異なる。しかしなが
ら、書込み情報の細分化が細かいほど、保証実施の諸経
費が大きくなる。
【0025】この状態情報の目的は、サーバのデータベ
ースが十分に「最新な」ものであるか否かを判断し、一
貫性保証の実施を容易にすることである。到達可能ない
ずれのサーバのデータベースも十分に「最新な」もので
なかった場合には、セッションマネージャはクライアン
トに通知を行う。大まかな意味で、「セッション」と
は、一台または複数台のクライアントによって出された
一連の読出しおよび書込み要求である。このように、ク
ライアントは、セッションの開始とその持続時間の制御
に多大な自由裁量を与えられる。更に、下記の基本命令
により、更なる機能性も提供される。
【0026】
【表1】
【表2】
【表3】
【0027】表1〜3のセッションマネージャの一実施
例の概略に示されているように、セッションの基本命令
により、クライアントはセッションを開始、終了、格下
げ、コピー作成、併合することができる。セッションを
「開始」するには、クライアントはセッションマネージ
ャにStart Sessionを呼び出す。セッショ
ンマネージャは、それに応答して、「セッションID」
(”SID”)により固有に識別される「セッション状
態」を、割り当てる。セッション状態は、”Read
Set”、”Write Set”、”Guarant
ee Set”といった状態変数を含む。
【0028】”Guarantee Set”は、クラ
イアントからセッションマネージャに渡されるパラメー
タである。従って、このパラメータは、セッションの最
中に実施されるべく指定された所定保証事項のリストで
ある。任意のセッションの”Read Set”は、セ
ッション中に発生する読出しに「関連した」書込み集合
である。この書込み集合は、そのサーバで実施される読
出し結果によって指定の保証集合が満たされることを保
証することがサーバに知られなくてはならない書込み集
合となるように定義される。Read Setは、セッ
ション中に発生したあらゆる読出しの関連書込み集合の
和集合である。Read Setに含まれる書込みは、
クライアントの書込みから、または、別のサーバから生
じる。”Write Set”は、クライアントまたは
任意セッションのクライアント関係者から発生する。
【0029】セッションを「終わらせる」には、クライ
アントはセッションマネージャでEnd Sessio
nを呼び出して、終了させるセッションを固有に識別す
るSIDを渡す。セッションを終わらせるとき、セッシ
ョンマネージャは、終了されたセッションの状態に対し
て予め割り当てられていたメモリを単に割り当て解除
し、SIDの参照を外す。
【0030】図14は、いくつかのコードルーチン19
0(例えば、Start Sessionコード192
が供給される)とセッション状態210の記憶領域から
成るセッションマネージャのブロック図である。図3
は、アプリケーション業務24による具体例としてのセ
ッションを図示したものであり、そのコード32が示さ
れている。セッションマネージャ22は、ライブラリと
してリンクされることによるアプリケーション業務24
の一部である場合もあるし、アプリケーション業務とは
関係無く、ネームサービスにより捜し出され、RPSイ
ンフラストラクチャによりアクセスされる別個のプロセ
スの場合もある。
【0031】アプリケーション業務24は、セッション
中に実施したい所定保証事項のリストを渡す。次に、セ
ッションマネージャ22は、セッションを識別するため
にセッションID(”G1”)をリターンする。”G
1”は、GS(すなわち、保証集合)214、RS(す
なわち、Read Set)216、WS(すなわち、
Write Set)218というフィールドを含むセ
ッション状態210に対するポインタ212として実施
される。これらのフィールドは、動的にリンクされるリ
スト、従って、セッションの最中にフィールドを成長さ
せるリストとして実施される。セッションマネージャの
記憶領域は、一度に一つ以上の活動中セッション(例え
ば、セッションG2 220)を含む。
【0032】セッションの一部である、後続のあらゆる
読出しおよび書込みは、存在セッションID,G1を含
んでいる。読出しおよび書込みコマンドは、各々、セッ
ションマネージャ190にある読出しおよび書込み手順
に対する呼び出しとして実施される。読出しの場合、セ
ッションマネージャはセッションID G1を積極的に
取り去り、どのサーバが十分に最新であるか確認し、こ
のようなサーバの少なくとも一つに待ち行列を発行し、
その結果をアプリケーション業務に戻し、必要に応じて
セッション状態のRSを更新する。書込みの場合、セッ
ションマネージャ190はセッションID G1を取り
去り、そのサーバが適切であるか確認し、少なくとも一
つの適切なサーバにアップデートを発行し、必要に応じ
てセッション状態のWSを更新する。
【0033】セッションを終了する場合、アプリケーシ
ョン業務24はEnd Sessionコールを出す。
次いで、セッションマネージャは、セッションG1に使
用されていた記憶領域を回復し、当該特定セッションの
セッションIDの参照を外す。
【0034】前述の実施例の場合、サーバの協同につい
て、三つの仮定が立てられている。 (1) 各クライアントが始めた書込みの場合、サーバ
はその書込みに固有に割り当てられた、そのシステムで
唯一の書込みID(WID)をリターンする。 (2) 各読出しの場合、サーバは、待つ行列の結果
と、当該「読出し」に「関係する」WIDの集合をリタ
ーンする。 (3) クライアントは、サーバの状態(すなわち、サ
ーバに「知られている」全部の書込みの集合)を獲得で
きる。
【0035】クライアントの読出しに応じてWIDがサ
ーバからセッションマネージャに戻されると、読出しに
関連するWIDがRead Setに添えられる。同様
に、クライアントの書込みに応じて返されるWIDは、
Write Setに添えられる。
【0036】各クライアントは、自分自身の一貫性 対
利用可能性のトレードオフを、システム基模のデザイ
ン選択として享受するのではなく、自由に決定できる。
クライアントにとってのの「優れた」戦略は、このよう
な保証を最少数選択してクライアントの目的に合わせる
ことであるが、これは、そうすることにより、任意のセ
ッションの最中に出される特定の読出し/書込み要求
が、いずれかの適切なサーバによって満足される機会が
最大限になるからである。
【0037】一旦、セッションが始まると(そして、最
初に保証の部分集合が選択されると)、クライアントは
セッションマネージャに対してDowngrade
uaranteeを呼び出すことによって保証を格下げ
することもある。いずれか与えられた時間に実施される
全ての保証はセッション開始からの実施であるので、保
証の格下げは「統合された」セッションという概念を失
なわない。
【0038】ユーザならびにアプリケーション業務は、
データベースを更新し、その後すぐに、まだ更新されて
いない別のサーバで読んだために、その更新が消えてし
まったように見えることを確認するだけのためにデータ
ベースから読出しを行なうと混乱をきたす危険があるの
で、「自分の書込み読出し(RYW)」保証が望まし
い。この保証は、あるセッション内で行われたいずれか
書込みの効果を、そのセッション内の読出しで見られる
ことを保証するものである。具体的にいうと、次の通り
である。
【0039】RYW−保証: セッション中に、読出し
Rが書込みWの次にある場合、Rは時間tにサーバSに
て実施され、その後、WはDB(S,t)に収められ
る。
【0040】アプリケーション業務は、同データ項目の
書込みに続く読出しが直前に書き込まれた情報をリター
ンするということを保証されない。これは、読出しはセ
ッション外で実施された(おそらく他のクライアントに
よる)別の書込みを見る場合もあるからである。
【0041】図4と5は、RYW保証の重要性と効果を
説明するものである。図4は、RYWを実施しないで、
望ましくない結果が生じる筋書を示す。
【0042】ステップ41: クライアント14a(”
C1”)は、$100から$150への新残高を反映す
べく自分の新預金口座をサーバ12a(S1)にて更新
する。 ステップ42: S1は、その変更をサーバ12c(S
n)に「遅延」伝播する。 ステップ43と44: 続いて、C1はサーバ12b
(S2)にて自分の口座残高を「読出し」、「古い」預
金残高$100を受け取る。 ステップ45: それからしばらくして、S1はS2へ
更新を遅延伝播する。
【0043】図5は、図4と同じ筋書であるが、RYW
保証が選択および実施されている点が異なる。図4で
は、クライアントC1が次のプログラムを実行すると仮
定する。 G=Start Session(RYW); Write(G,X,150); Value=Read(G,X); End Session(G);
【0044】ステップ51: C1はセッションGを
「開始」し、新残高$150をS1に書き込む。 ステップ52: S1はその書込みに対してWIDを割
り当てて、C1にリターンする。 ステップ53: C1は、新WIDをそのWrite
Setに添る。 ステップ54: S1は、現在のデータならびに元の更
新要求に関わるWIDを、Snに遅延更新する。 ステップ55: C1は、S1またはSnから、セッシ
ョンGで読み出さなくてはならないことを「発見」す
る。 ステップ56: C1はセッションGにてSnから読出
しを行う。 ステップ57: S2は新残高$150をリターンす
る。 ステップ58: S1は後でS2を更新する。
【0045】ステップ55の「発見」は、C1のセッシ
ョンマネージャによって実施されるプロセスであって、
実施保証に対するクライアントの要求を満足するデータ
を有する適当なサーバ集合を見つけることである。大ま
かにいうと、これは、クライアントの現要求に応じて、
任意のクライアントが「到達可能な」全部のサーバを捜
し出し、そのようなサーバ全部に対して、それらの書込
み情報(すなわち、サーバの書込み集合またはDB
(S))の照会を行い、サーバの書込み集合とクライア
ントのWrite Setおよび/またはRead
etを比較して、これらサーバのWrite Setが
クライアントのWrite Setおよび/またはRe
ad Setを含んでいるか検査することによって、達
成される。いずれのサーバのWrite Setもこの
検査を満足しない場合には、データは「保証」されな
い。それにも関わらず、クライアントはセッションを終
了し、保証に関わり無く、とにかくデータを検索回収す
ることを選択できる。
【0046】自分の書込み読出し保証の実施は、二つの
基本ステップを必要とする。サーバにより書込みが受け
付けられた場合には必ず、セッションの書込み集合にそ
の割り当てWIDが加えられる。サーバSの時間tの各
読出しの前に、セッションマネージャは、その書込み集
合がDB(S,t)の部分集合であることを確認しなく
てはならない。この確認は、クライアントの書込み集合
をサーバに渡すことによってサーバで行うことも、サー
バのWIDリストを検索回収することによってクライア
ントで行うことも出来る。セッションマネージャは、チ
ェックが成功したものを発見するまで、利用可能サーバ
を試し続けることが出来る。適切なサーバが見つからな
い場合、保証が提供されないことをクライアントに対し
て報告する。
【0047】2.2.2 「単調読出し」保証(MR) 単調読出し保証では、ユーザは、時間をかけてどんどん
最新化するデータベースを観察することができる。単調
読出し保証は、セッション内の以前の読出しで書込み効
果がも目撃された全部の書込みが入っているデータベー
スコピーに対してのみ、読出し操作が行われることを保
証するものである。
【0048】二つの付加定義(「完全」と「関連書込
み」)が必要である。直感的にいうと、書込み集合がデ
ータベースの書込みの「十分」を含んでいれば、書込み
集合は読出しの結果を「完全」に判断するので、書込み
集合に対する読出し実行の結果は、全データベースに対
する読出し実行と同じものである。具体的にいうと、W
SがDB(S,t)の部分集合である場合、あるいは、
部分集合であるだけでも、書込み集合WSは、読出しR
とDB(S,t)について完全であり、ならびに、WS
を含み且つDB(S,t)の部分集合でもあるいずれか
集合WS2について、WS2に適用される結果Rは、D
B(S,t)に適用される結果Rと同じである。
【0049】「関連書込み(S,t、R)」とは、読出
しRとDB(S,t)にとって完全な最小書込み集合を
リターンする機能のことである。DB(S,t)は、い
ずれか読出しについて完全であるから、完全集合は確か
に存在する。最小完全集合が固有のものでない場合、結
合は、自由裁量であるが決定論的に破壊される。これら
の定義から、単調読出し保証は次のように正確に定義で
きる。
【0050】MR−保証: セッションでR2の前に読
出しR1が発生し、R1は時間t1にサーバS1にアク
セスし、R2は時間t2にサーバS2にアクセスするな
らば、関連書込み(S1,t1,R1)は、DB(S
2,t2)のサーブ集合である。
【0051】図6と7は、一例としてのクライアントの
要求でアプリケーションに応じて、MR保証を図で示し
たものである。図6は、MR保証がない場合の結果を示
す。 ステップ61: C1はサーバS1にて、$100から
$150への新残高を反映するように、自分の預金口座
を更新する。 ステップ62: S1は、その変更をサーバSnに「遅
延」伝播する。 ステップ63とステップ64: 次いでC2は、Snに
てC1の口座残高の「読出し」を行って、「新しい」口
座残高$150を受け取る。 ステップ65とステップ66: 再びC2は、C1の口
座残高を、今度はS2から読出し、「古い」残高$10
0を受け取る。 ステップ67: それからしばらくして、S1はS2へ
更新を遅延伝播する。
【0052】このように、C2は、後続読出しが少なく
とも先程の読出しと同じくらいに最新ものであることを
保証することなく、先程読出したデータを読み出すこと
を許可される。
【0053】図7は、図6と同じ筋書であるが、MR保
証が実施されている点が異なる。図7では、クライアン
トC2が次のプログラムを実行すると仮定する。 G=Start Session(MR); Write(G,X); Value=Read(G,X); End Session(G);
【0054】ステップ71と72: C1はセッション
Gを「開始」し、$150という新残高をS1に書き込
む。S1はその書込みに対する固有のWIDをリターン
する。 ステップ73: S1は、WIDと一緒に、更新をSn
に遅延伝播する。 ステップ74と75: C2はSnから残高を読み出
す。Snは要求に応じて、その結果に関連するWIDと
一緒に、残高をリターンする。 ステップ76: C2は、そのセッション状態で格納さ
れているそのRead Setに、WIDを収める。 ステップ77: その後、C2は残高の別のコピーを欲
し、S1とSnだけが「十分に」最新なものであること
を「発見」する。 ステップ78と79: C2は残高について、S1の読
出し要求を行う。S1は、WIDと一緒に残高をリター
ンする。 ステップ80: S1は後で、WIDと一緒にS2を更
新する。
【0055】ステップ77で、S1とSnが「十分に」
最新な唯一のサーバであるというC2の発見は、RYW
保証について前述されたのと同様な発見プロセスを伴う
ものである。唯一異なるのは、MR保証は、クライアン
トの(Write Setではなく)Read Set
に対してサーバのWIDを比較することである。
【0056】読出し後書込み保証は、全部のサーバに
て、伝統的な読出し/書込み依存が、書込み順に保存さ
れることを保証するものである。従って、データベース
のあらゆるコピーにおいて、セッション中になされた書
込みは、そのセッション中の以前の読出しで効果が目撃
された書込みの後に順序付けられる。
【0057】WFR−保証: セッション内で読出しR
1が書込みW2に先んじ、R1が時間t1にサーバS1
で実施されるならば、いずれかサーバS2について、W
2がDB(S2)にある場合、関連書込み(S1,t
1,R1)のいずれかW1もDB(S2)と書込み順序
(W1,W2)にある。
【0058】前述の二つの保証と違って、この保証は、
セッション外のクライアントに影響を及ぼす。以前に目
撃されている書込みの後にクライアントの実施する書込
みが発生することをセッションが観察するだけでなく、
他のすべてのクライアントも、セッション保証を要求し
ているか否かに関わり無く、同一な書込み順序付けを見
る。
【0059】WFR保証は、定義されている通り、書込
み操作に関する二つの制約に関連がある。「書込み順
序」に関する制約は、結局、全部のデータベースの複製
が反映する全体的な順序で、書込みが以前の関連書込み
に続くことを保証する。「伝播」に関する制約は、全部
のサーバ(従って、全部のクライアントも)は、関わり
のある以前の書込み全部を目撃した後に、ある書込みを
見るだけであることを保証する。アプリケーション業務
の中には、下記の読出し後書込み緩和変更がサポートさ
れるように、これらの制約の一方のみを要求するものも
ある。
【0060】WFRO−保証(「順序」制約): セッ
ション内で読出しR1が書込みW2に先んじ、R1が時
間t1にサーバS1で実施されるならば、関連書込み
(S1,t1,R1)のいずれかW1について、書込み
順序(W1,W2)である。 WFRO−保証(「伝播」制約): セッション内で読
出しR1が書込みW2に先んじ、R1が時間t1にサー
バS1で実施されるならば、いずれかのサーバS2もつ
いて、W2がDB(S2)にあれば、関連書込み(S
1,t1,R1)のいずれかW1もDB(S2)にあ
る。
【0061】図8と9は、一例としてのクライアントの
要求に関連したWFR保証を図で示すものである。図8
は、WFR保証が実施されない場合の結果を示す。 ステップ81: C1はサーバS1にて、$100から
$150への新残高を反映するように、自分の預金口座
を更新する。 ステップ82: S1は、その変更をサーバSnに「遅
延」伝播する。 ステップ83とステップ84: 次いでC2は、Snに
てC1の$150となる口座残高の「読出し」を行う。 ステップ85: C2は新残高$200をS2に書き込
む。 ステップ86: S2は$200という値をSnに伝播
する。しかしながら、Snは、残高は$150のまま、
C1からの更新をC2からの更新の後ろに順序付ける。 ステップ87: S1は$150という値をS2に伝播
する。このとき、S2は残高について、C1からの$1
50とC2からの$200という二種類の更新を受け取
っている。S2は、値は$150のまま、C1からの更
新を、C2からの更新の後に順序付ける。 ステップ88: S2は、$200という値をS1に伝
播する。今度は、S1は残高について、C1からの$1
50とC2からの$200という二種類の更新を受け取
っている。S1は、所定のアルゴリズムを利用して、値
は$150のまま、C1からの更新を、C2からの更新
の後に順序付けるが、である。
【0062】ステップ87の後、S2の残高の現バージ
ョンは、実際には正しい現残高に先行するバージョンで
ある。
【0063】図9は、図8と同じ筋書であるが、WFR
保証が実施されている点が異なる。図9では、クライア
ントC2が次のプログラムを実行すると仮定する。 G=Start Session(WFR); Value=Read(G,X); Write(G,X,Value+50); End Session(G);
【0064】ステップ91と92: C1はセッション
Gを「開始」し、$150という新残高をS1に書き込
む。S1はその書込みに対する固有のWIDをリターン
する。 ステップ93: S1は、WIDと一緒に、更新をSn
に遅延伝播する。 ステップ94と95: C2はSnから残高を読み出
す。Snは要求に応じて、その結果に関連するWIDと
一緒に、残高をリターンする。 ステップ96: C2は、そのセッション状態にて格納
されているそのRead SetにWIDを収める。 ステップ97: その後、C2は残高を更新することを
欲し、S1とSnだけが「十分に」最新なものであるこ
とを「発見」する。 ステップ98と99: C2は残高について、Snの書
込み要求を行う。Snは固有WIDをリターンする。 ステップ100: Snは後で、WIDと一緒に、S1
とSnで行われた書き込みを、その書込み順序で渡すこ
とによって、S2を更新する。 ステップ101: S1は、WIDと一緒に、その更新
されたデータを渡すが、S2は、既にこのWIDを見た
と知らせるので、この更新を再処理することはない。 ステップ102: その後、Snはその更新データと固
有WIDを利用して、S1を更新する。
【0065】自分の書込み読出し保証ならびに単調読出
し保証と違って、読出し後書込み保証を実施するには、
サーバの挙動に二つの追加制約を課す必要がある。
【0066】制約1: サーバが時間tにクライアント
から新しい書込みW2を受け付けるとき、既にDB
(S,t)に入っているいずれかW1について、書込み
順序(W1,W2)が真であることを保証する。 制約2: W2が、時間tにサーバS1からサーバS2
へ伝播されるならば、いずれか先に順序付けられたDB
(S1,t)内のW1もS2に伝播される。
【0067】これら二つの制約は、いずれかDB(S,
t)内の書込みに対してではなく、セッションの読出し
集合または書込み集合のいずれか書込みW1に対して守
られなくてはならない。
【0068】単調書込み保証は、セッション内の或る書
込みは、必ず以前の書込みの後に続くということを意味
するものである。具体的に述べると次の通りである。
【0069】MW−保証: セッション内で書込みW1
が書込みW2に先んじるならば、いずれかサーバS2に
ついて、W2がDB(S2)内にあれば、S1もDB
(S2)と書込み順序(W1,W2)にある。
【0070】この保証は、セッションのユーザならびに
セッション外のユーザの両方に関連のある保証を提供す
る。書込み後読出し保証でそうであったように、アプリ
ケーション業務が書込み順序と書込み伝播を別々に制御
できるよう、変更態様を定義することも出来る。
【0071】図10と11は、各々、MW保証が実施さ
れていないクライアントトランザクションと実施されて
いるクライアントトランザクションを示すものである。
図10では、次の通りである。 ステップ111: C1はS1にて、$100から$1
50への残高を反映するように、自分の預金口座を更新
する。 ステップ112: C1はS2にて、残高$200を反
映するように、同じ預金口座を更新する。 ステップ113: S2は$200という更新値をSn
に「遅延」伝播する。 ステップ114と115: S1は、$150という値
をSnに伝播する。従って、Snはは残高について、S
1からの$150とW2からの$200という二種類の
更新を持っている。Snは順序付けアルゴリズムを適用
して、値は$150のまま、S1からの更新をS2から
の更新の後に順序付ける。従って、S1は$150とい
う値をS2に伝播し、結果として、S2の最終残高は$
150である。 ステップ116: S2は、$200という値をS1に
伝播する。このとき、S1は残高について、C1からの
$150とS2からの$200という二種類の更新を受
け取っている。S1は、値は$150のまま、C1から
の更新を、S2からの更新の後に順序付ける。
【0072】ステップ114と115で、システムは、
古いデータ値が伝播されサーバのデータベースに組込ま
れる、すなわち、新しい方の更新を上書きすることを
「許容した」ため、データベースに非一貫性が入り込
む。
【0073】図11は、図10と同じ筋書であるが、M
R保証が実施されている点が異なる。図11では、クラ
イアントC2が次のプログラムを実行すると仮定する。 G=Start Session(MR); Write(G,X,150); Write(G,X,200); End Session(G);
【0074】ステップ121、122、123: C1
は$150という新残高をS1に書き込む。S1はその
書込みに対する固有のWIDをリターンする。C1は、
そのWrite SetにWIDを収める。 ステップ124: C1は、再び残高を更新しようと
し、他のサーバが更新されていないので、S1に書込ま
なくてはならない、ということを発見する。 ステップ125、126、127: C2は新残高$2
00を書き込む。S1は、その書込みに対する固有WI
Dをリターンする。C1はセッションのそのWrite
SetにWIDを収める。 ステップ128: S1は、二種類の更新を、それらの
WIDと一緒に、Snに伝播する。 ステップ129: S1は、二種類の更新を、それらの
WIDと一緒に、S2に伝播する。
【0075】単調書込み保証は、読出し後書込み保証の
ものと同じサーバ挙動に関する制約を要する。これらの
制約が適所にあれば、単調読出しの実施は更に二つのス
テップを含む。サーバSが時間tに書込みを受け付ける
には、サーバのデータベースDB(S,t)は、セッシ
ョンの書込み集合を含んでいなくてはならない。また、
サーバによって書込みが受け付けられる場合には、必
ず、それに割り当てられたWIDが、その書込み集合に
加えられなくてはならない。
【0076】バージョンベクトルは、四種類の保証の更
に効果的な実施を考慮するものである。バージョンベク
トルは、<サーバ,クロック>という順序の対であり、
各サーバに一組が割り当てられる。サーバの識別は、単
に、複製データベースの特定コピーに対する固有識別子
である。クロックは、人のサーバの単調に増加する論理
クロックの値である。この論理「クロック」に関する唯
一の制約は、サーバに受け付けられた各書込みの間に増
加しなくてはならない、ということである。<サーバ,
クロック>対はWIDとしてうまく役立つ。このセクシ
ョンでは、かかるWIDは最初に書込みを受け付けたサ
ーバによって割り当てられる、と仮定する。
【0077】各サーバは、次の不変事項により、それ自
身のバージョンベクトルを維持する。サーバのバージョ
ンベクトルが<S,c>であれば、サーバは、サーバS
のクロックの論理時間c以前にサーバSによってWID
が割り当てられた全部の書込みを受け取っている。この
不変事項を維持するために、サーバは遅延伝播のあい
だ、割当てWID順に書込みを転送しなくてはならな
い。サーバのバージョンベクトルは遅延伝播プロセスの
一部として更新されるので、バージョンベクトルはその
データベース内の書込み集合を正確に指定する。
【0078】次のように、WID集合がバージョンベク
トルと交換される、幾分かもっと実際的な保証を実施す
ることが可能である。
【0079】1) WID集合のコンパクトに表すバー
ジョンベクトルVを求めるには、V[S]=(Wでサー
バSによって割り当てられた最新WIDの時間(Sから
書込みがない場合は0))、と置く。 2) 二つのWIDの集合、Ws1とWs2の和集合を
表すバージョンベクトルVを求めるには、まず、上記の
ように、Ws1からV1、Ws2からV2を求める。次
に、全部のSについて、V[S]=MAX(V1
[S],V2[S])と置く。 3) WIDの一方の集合Ws1が、他方のWs2の部
分集合か否かを確認するには、まず、上記のように、W
s1からV1、Ws2からV2を求める。次に、V2が
V1を優越しているかチェックして確認するが、この場
合、優越とは、各対応構成要素において、一方のベクト
ルが他方のベクトル以上であること、と定義される。
【0080】図15は、十分に「最新な」サーバ選集で
のバージョンベクトルの利用を示す。図示の通り、セッ
ションG1 212について維持されている状態は、二
つのバージョンベクトルから成っている。一方は、セッ
ションの書込みを記録するためのもの(WV 22
4’)であり、他方は、セッションの書込みを記録する
ためのもの(RV 222’)である(すなわち、セッ
ションの書込みに「関連のある」書込み)。受け付け可
能なサーバを見つけるには、セッションマネージャは、
これらのセッションベクトルの一方または両方がサーバ
のバージョンベクトルによって優越されていることを、
チェックしなくてはならない。どちらのセッションベク
トルをチェックするかは、セッション内で実施される操
作と提供される保証によって異なる。図15の場合、S
1(12a)のバージョンベクトルのみが、セッション
G1のRV 222’を優越している。他のサーバから
S1が「見た」書込みは、少なくとも、セッションG1
が見た書込みと同じくらい最新なものである。Sk(1
2b)のバージョンベクトルは、S1の書込みを、セッ
ションG1と同じくらい多く見てはいないので、優越し
てはいない。
【0081】サーバは読出しの結果に基づいてバージョ
ンベクトルをリターンして、関連書込みを示す。実際的
には、サーバは一般に削除されたデータベースエントリ
を記憶していない。サーバは、バージョンベクトルに基
づいてデータベースのコピーを記憶しているだけであ
る。従って、サーバは、その現バージョンベクトルを関
連書込みの総評価として戻せるのである。これは、単調
読出し保証や書込み後読出し保証を損なうものではな
い。受け付け可能なサーバを選択したときにセッション
マメージャを過度に保守的にさせるだけである。
【0082】セッションマネージャにおける保証の実施
は、図12と13に示されている。いずれか任意のセッ
ションの最中に出される各々の読出しおよび書込み要求
は、は、この手順に基づいてされる。基本的には、この
手順は、利用可能な(すなわち、到達可能な)サーバの
全体集合で開始して(ステップ150)、どの保証が選
択されたかにより、セッションRead Set(また
はWrite Set)が、任意のサーバSで発生した
書込み(すなわち、DB(S))と比較される(ステッ
プ160と166)。セッションRead Set(ま
たはWrite Set)がDB(S)に無いならば、S
は、クライアントの要求を処理するのに適したサーバで
はない(すなわち、その保証はそのサーバに合わない)
(ステップ162)。適切なサーバがあったなら(ステ
ップ168)、そのサーバで読出し(または書込み)要
求が処理される(各々、ステップ170以降または17
6以降)。
【0083】バージョンベクトル実施を達成するには、
この実施手順に対して、僅かながら変更が必要である。 ステップ160: サーバのバージョンベクトルがセッ
ションの読出しベクトルを「優越している」か、チェッ
クする。 ステップ166: サーバのバージョンベクトルがセッ
ションの書込みベクトルを「優越している」か、チェッ
クする。 ステップ172: セッションの読出しベクトル:=M
ax(読出しベクトル,関連書込みベクトル) ステップ178: セッションの書込みベクトル
[S]:=WID.クロック
【0084】以前にコンタクトされたサーバは、次の読
出しまたは書込み操作を実施するサーバの許容選択選肢
である。従って、セッションマネージャが任意のサーバ
から「離れない」場合には、チェックを飛ばすことが出
来る。セッションマネーがが別のサーバに切り換える場
合にのみ、サーバの現バージョンベクトルをセッション
のベクトルに比較しなくてはならない。十分に細心なサ
ーバを発見するのを簡単にするために、セッションマネ
ージャは種々サーバのバージョンベクトルを貯蔵でき
る。サーバのデータベースは、サーバが受け取って組込
んだ多数の書込みに基づいて時間をかけて成長できるの
みであるので、貯蔵されたバージョンベクトルは、サー
バの知識の下限を表すものである。
【図面の簡単な説明】
【図1】 クライアント/サーバ環境の図である。
【図2】 クライアントとサーバとセッションマネージ
ャの構成の一例を示す図である。
【図3】 クライアントの申し込みによって引き起こさ
れた単純なセッションの一例を示す図である。
【図4】 「自分の書込み読出し」保証が不在の場合の
クライアントトランザクションの一例を示す図である。
【図5】 「自分の書込み読出し」保証が存在する場合
のクライアントトランザクションの一例を示す図であ
る。
【図6】 「単調読出し」保証が課せられない場合のク
ライアントトランザクションを示す図である。
【図7】 「単調読出し」保証が課せられる場合のクラ
イアントトランザクションを示す図である。
【図8】 「読出し後書込み」保証が課せられない場合
のクライアントトランザクションを示す図である。
【図9】 「読出し後書込み」保証が課せられる場合の
クライアントトランザクションを示す図である。
【図10】 「単調書込み」保証が課せられない場合の
クライアントトランザクションを示す図である。
【図11】 「単調書込み」保証が課せられる場合のク
ライアントトランザクションを示す図である。
【図12】 セッションマネージャによって実行される
発見ならびに実施プロセスのフローチャートである。
【図13】 セッションマネージャによって実行される
発見ならびに実施プロセスのフローチャートである。
【図14】 セッションマネージャのブロック図であ
る。
【図15】 サーバが十分に最新情報に接しているかを
判定するバージョンベクトルの使用法を示す図である。
【符号の説明】
10 モデル、12 サーバ、14 クライアント、2
2 セッションマネージャ、24 アプリケーション業
務、30 データベース、32 コード、190コード
ルーチン、192 Start Sessionコー
ド、210 セッション状態、212 ポインタ、21
4 保証集合、216 Read Set、218 W
rite Set
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アラン・ジェイ・ディマース アメリカ合衆国 カリフォルニア州 95006 ブールダークリーク ホプキンス ガルチ 720 (72)発明者 カリン・ピーターセン アメリカ合衆国 カリフォルニア州 94025 メンロパーク シャロンパークド ライブ #エヌ307 350 (72)発明者 マイケル・ジェイ・スプライツァー アメリカ合衆国 カリフォルニア州 95376 トレイシー ブリストルコーンド ライブ 1941 (72)発明者 マービン・エム・サイマー アメリカ合衆国 カリフォルニア州 94043 マウンテンビュー アルビンスト リート 2447 (72)発明者 ブレント・ビー・ウェルチ アメリカ合衆国 カリフォルニア州 94043 マウンテンビュー デルアベニュ ー 2540

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 複数のサーバと複数のクライアントを有
    し、前記クライアントのうちの少なくともいくつかが、
    前記サーバが不一致なデータ値を包含する時間を含む種
    々の時間に種々のサーバにアクセスすることがあり、前
    記サーバは弱一貫性の複製データを保存し、前記データ
    は前記クライアントによりアクセス可能で且つ更新可能
    であり、前記データは、更新されると、前記更新データ
    を有するサーバによって前記更新データを有しないサー
    バに伝播されるデータベースシステムで、各々のセッシ
    ョンに属するアクセスまたは更新要求に対して、毎セッ
    ションベースで、いずれかセッションに参加しているあ
    らゆるクライアントに対して、前記データの関連一貫性
    保証を提供するための方法であって、 A) 少なくとも一台のクライアントのデータベースア
    クセスおよび更新要求から各々が構成されているような
    複数のセッションを定義するステップと、 B) 前記少なくとも一台のクライアントによって、任
    意の保証の適切さが決定された場合に、所定の保証の集
    合から、各セッションの関連一貫性保証の関連部分集合
    を選択するステップと、 C) 少なくとも一台のクライアントがセッション中に
    異なるサーバにアクセスするときにおいても、前記セッ
    ションの最中に前記少なくとも一台のクライアントの選
    択保証を実施するステップ、とから成る、前記方法。
JP7244973A 1994-09-28 1995-09-22 セッションの一貫性を保証する方法 Pending JPH08115246A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US314971 1994-09-28
US08/314,971 US5581753A (en) 1994-09-28 1994-09-28 Method for providing session consistency guarantees

Publications (1)

Publication Number Publication Date
JPH08115246A true JPH08115246A (ja) 1996-05-07

Family

ID=23222284

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7244973A Pending JPH08115246A (ja) 1994-09-28 1995-09-22 セッションの一貫性を保証する方法

Country Status (2)

Country Link
US (1) US5581753A (ja)
JP (1) JPH08115246A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1031639A (ja) * 1996-07-16 1998-02-03 Nippon Telegr & Teleph Corp <Ntt> クライアント状態管理方法およびその装置
JP2000132443A (ja) * 1998-10-22 2000-05-12 Internatl Business Mach Corp <Ibm> コンピュータ、情報共有システム、及びレプリカ同一性保持方法
JP2002507021A (ja) * 1998-03-12 2002-03-05 クロスワールズ ソフトウエア インコーポレイテッド 情報システムの独立性レベル及びトランザクション補償
WO2004059495A1 (ja) * 2002-12-25 2004-07-15 Matsushita Electric Industrial Co., Ltd. 端末装置およびセッション管理装置
JP2011154631A (ja) * 2010-01-28 2011-08-11 Fujitsu Ltd 確定クロック判定プログラム及び方法、並びにノード装置

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289390B1 (en) 1993-08-18 2001-09-11 Microsoft Corporation System and method for performing remote requests with an on-line service network
US5671407A (en) * 1994-12-07 1997-09-23 Xerox Corporation Application-specific conflict detection for weakly consistent replicated databases
US5684990A (en) * 1995-01-11 1997-11-04 Puma Technology, Inc. Synchronization of disparate databases
US6901433B2 (en) * 1995-06-07 2005-05-31 Microsoft Corporation System for providing users with a filtered view of interactive network directory obtains from remote properties cache that provided by an on-line service
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5956489A (en) * 1995-06-07 1999-09-21 Microsoft Corporation Transaction replication system and method for supporting replicated transaction-based services
US7272639B1 (en) 1995-06-07 2007-09-18 Soverain Software Llc Internet server access control and monitoring systems
US5751958A (en) * 1995-06-30 1998-05-12 Peoplesoft, Inc. Allowing inconsistency in a distributed client-server application
US5933599A (en) * 1995-07-17 1999-08-03 Microsoft Corporation Apparatus for presenting the content of an interactive on-line network
US5941947A (en) * 1995-08-18 1999-08-24 Microsoft Corporation System and method for controlling access to data entities in a computer network
US5956509A (en) * 1995-08-18 1999-09-21 Microsoft Corporation System and method for performing remote requests with an on-line service network
US6098078A (en) * 1995-12-29 2000-08-01 Lucent Technologies Inc. Maintaining consistency of database replicas
US6006239A (en) * 1996-03-15 1999-12-21 Microsoft Corporation Method and system for allowing multiple users to simultaneously edit a spreadsheet
US5828847A (en) * 1996-04-19 1998-10-27 Storage Technology Corporation Dynamic server switching for maximum server availability and load balancing
US5812964A (en) * 1996-04-29 1998-09-22 Informix Software, Inc. Multi-valued localized strings
US5806065A (en) * 1996-05-06 1998-09-08 Microsoft Corporation Data system with distributed tree indexes and method for maintaining the indexes
US5857201A (en) * 1996-06-18 1999-01-05 Wright Strategies, Inc. Enterprise connectivity to handheld devices
US5812773A (en) * 1996-07-12 1998-09-22 Microsoft Corporation System and method for the distribution of hierarchically structured data
JPH1097571A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd 相談先端末接続方法
US5926816A (en) * 1996-10-09 1999-07-20 Oracle Corporation Database Synchronizer
US5884325A (en) * 1996-10-09 1999-03-16 Oracle Corporation System for synchronizing shared data between computers
US5943676A (en) 1996-11-13 1999-08-24 Puma Technology, Inc. Synchronization of recurring records in incompatible databases
US7302446B1 (en) 1996-11-13 2007-11-27 Intellisync Corporation Synchronizing databases
US6212529B1 (en) * 1996-11-13 2001-04-03 Puma Technology, Inc. Synchronization of databases using filters
US6405218B1 (en) 1996-11-13 2002-06-11 Pumatech, Inc. Synchronizing databases
US7013315B1 (en) 1996-11-13 2006-03-14 Intellisync Corporation Synchronization of databases with record sanitizing and intelligent comparison
US5907678A (en) 1997-05-07 1999-05-25 International Business Machines Corporation Client/server system in which protocol caches for multiple sessions are selectively copied into a common checkpoint cache upon receiving a checkpoint request
US6061714A (en) * 1997-05-07 2000-05-09 International Business Machines Corporation Persistent cache synchronization and start up system
US6189043B1 (en) * 1997-06-09 2001-02-13 At&T Corp Dynamic cache replication in a internet environment through routers and servers utilizing a reverse tree generation
US6182129B1 (en) * 1997-09-11 2001-01-30 International Business Machines Corporation Apparatus, methods and computer program products for managing sessions with host-based application using session vectors
JP2957551B2 (ja) * 1997-12-12 1999-10-04 株式会社リコー 分散型データベースシステムの一貫性管理方法およびコンピュータ読み取り可能な記録媒体
US9900305B2 (en) 1998-01-12 2018-02-20 Soverain Ip, Llc Internet server access control and monitoring systems
US6925477B1 (en) 1998-03-31 2005-08-02 Intellisync Corporation Transferring records between two databases
US6272502B1 (en) * 1998-05-11 2001-08-07 Lucent Technologies Inc. Refreshing materialized views of a database to maintain consistency with underlying data
US6138120A (en) * 1998-06-19 2000-10-24 Oracle Corporation System for sharing server sessions across multiple clients
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US7305451B2 (en) * 1998-08-24 2007-12-04 Microsoft Corporation System for providing users an integrated directory service containing content nodes located in different groups of application servers in computer network
US6301643B1 (en) 1998-09-03 2001-10-09 International Business Machines Corporation Multi-environment data consistency
US6247141B1 (en) 1998-09-24 2001-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Protocol for providing replicated servers in a client-server system
US6279041B1 (en) 1998-11-13 2001-08-21 International Business Machines Corporation Methods, systems and computer program products for differencing data communications using a message queue
US7007003B1 (en) 1998-12-04 2006-02-28 Intellisync Corporation Notification protocol for establishing synchronization mode for use in synchronizing databases
US6574665B1 (en) * 1999-02-26 2003-06-03 Lucent Technologies Inc. Hierarchical vector clock
US6965896B1 (en) 1999-04-20 2005-11-15 International Business Machines Corporation Active log read I/O balancing for log duplexing
US6611915B1 (en) 1999-05-27 2003-08-26 International Business Machines Corporation Selective loading of client operating system in a computer network
GB2351165B (en) 1999-06-18 2003-11-05 Univ London Method and apparatus for monitoring and maintaining the consistency of distributed documents
US6374263B1 (en) * 1999-07-19 2002-04-16 International Business Machines Corp. System for maintaining precomputed views
US6922729B1 (en) * 1999-07-30 2005-07-26 International Business Machines Corporation Multi-connection control system
US6499037B1 (en) * 1999-09-09 2002-12-24 Lucent Technologies Inc. System and method for serializing updates to ancestor sites in a distributed database
US6421686B1 (en) 1999-11-15 2002-07-16 International Business Machines Corporation Method of replicating data records
EP1109106A1 (en) * 1999-12-14 2001-06-20 Sun Microsystems, Inc. Reference data base
US6523032B1 (en) * 2000-05-12 2003-02-18 Oracle Corporation Servicing database requests using read-only database servers coupled to a master database server
US20020059371A1 (en) * 2000-11-16 2002-05-16 Jamail John M. Caching proxy streaming appliance systems and methods
US7177917B2 (en) * 2000-12-27 2007-02-13 Softwired Ag Scaleable message system
US6892210B1 (en) * 2000-12-29 2005-05-10 Worldsync, Inc. Database management and synchronization across a peer-to-peer network
US7359920B1 (en) 2001-04-18 2008-04-15 Intellisync Corporation Communication protocol for synchronization of personal information management databases
KR20030097847A (ko) * 2001-05-02 2003-12-31 시큐젠 코포레이션 컴퓨터 네트워크상에서 사용자를 생체인증하는 방법
US8112529B2 (en) * 2001-08-20 2012-02-07 Masterobjects, Inc. System and method for asynchronous client server session communication
US7752326B2 (en) * 2001-08-20 2010-07-06 Masterobjects, Inc. System and method for utilizing asynchronous client server communication objects
US7096236B2 (en) * 2001-11-06 2006-08-22 Sun Microsystems, Inc. Change sequence number generator
US7020684B2 (en) * 2002-01-18 2006-03-28 Bea Systems, Inc. System and method for optimistic caching
US6898587B2 (en) * 2002-01-18 2005-05-24 Bea Systems, Inc. System and method for performing commutative operations in data access systems
US7525940B2 (en) * 2002-04-26 2009-04-28 Nokia Siemens Networks Oy Relocation of content sources during IP-level handoffs
EP1581860A4 (en) * 2002-12-23 2008-05-21 Dexterra Inc MOBILE DATA AND SOFTWARE UPGRADING SYSTEM AND METHOD
US7366460B2 (en) * 2003-01-23 2008-04-29 Dexterra, Inc. System and method for mobile data update
US20040224674A1 (en) * 2003-04-07 2004-11-11 O'farrell Robert System and method for context sensitive mobile data and software update
US20050188095A1 (en) * 2004-02-19 2005-08-25 Jeffrey Gardiner System for managing server user operation sessions
US8140684B2 (en) * 2004-02-19 2012-03-20 Siemens Medical Solutions Usa, Inc. Voice activated system for dynamically re-connecting user computer operation sessions
FR2870022B1 (fr) * 2004-05-07 2007-02-02 Canon Kk Procede et dispositif de distribution de donnees numeriques notamment pour reseau pair-a-pair
US7962544B2 (en) * 2004-05-25 2011-06-14 Siemens Medical Solutions Usa, Inc. Patient and device location dependent healthcare information processing system
US7809764B2 (en) * 2004-11-01 2010-10-05 Microsoft Corporation Method and apparatus for preserving dependancies during data transfer and replication
US8601283B2 (en) * 2004-12-21 2013-12-03 Sandisk Technologies Inc. Method for versatile content control with partitioning
US8504849B2 (en) 2004-12-21 2013-08-06 Sandisk Technologies Inc. Method for versatile content control
US7707292B2 (en) * 2005-03-18 2010-04-27 Yahoo! Inc. Method for signing into a mobile device over a network
US7543000B2 (en) * 2006-01-23 2009-06-02 International Business Machines Corporation Method and system combining state replication and operational-replay synchronization
US8639939B2 (en) 2006-07-07 2014-01-28 Sandisk Technologies Inc. Control method using identity objects
US8613103B2 (en) 2006-07-07 2013-12-17 Sandisk Technologies Inc. Content control method using versatile control structure
US7734580B2 (en) * 2007-01-29 2010-06-08 Oracle International Corporation Readable physical storage replica and standby database system
US20080222111A1 (en) * 2007-03-07 2008-09-11 Oracle International Corporation Database system with dynamic database caching
US8660988B2 (en) * 2008-01-07 2014-02-25 28Msec Inc. Fine-grained and concurrent access to a virtualized disk in a distributed system
US7991775B2 (en) * 2008-08-08 2011-08-02 Oracle International Corporation Global checkpoint SCN
US9104618B2 (en) 2008-12-18 2015-08-11 Sandisk Technologies Inc. Managing access to an address range in a storage device
US8321391B2 (en) * 2009-03-05 2012-11-27 Matrixx Software, Inc. Conditional commit for data in a database
US8504538B2 (en) * 2009-03-05 2013-08-06 Matrixx Software, Inc. Dependent commit queue for a database
US20100228707A1 (en) * 2009-03-05 2010-09-09 Buddha Software Inc. System for rating a service
US9286369B2 (en) * 2009-12-30 2016-03-15 Symantec Corporation Data replication across enterprise boundaries
US8484661B2 (en) * 2010-03-19 2013-07-09 At&T Mobility Ii Llc Agnostic execution cluster for an agnostic execution environment
US9107140B2 (en) 2010-08-13 2015-08-11 At&T Mobility Ii Llc Carrier-driven bearer path selection
US8589361B2 (en) * 2010-08-30 2013-11-19 Oracle International Corporation Reduced disk space standby
US8838919B2 (en) 2010-08-30 2014-09-16 Oracle International Corporation Controlling data lag in a replicated computer system
US9436502B2 (en) * 2010-12-10 2016-09-06 Microsoft Technology Licensing, Llc Eventually consistent storage and transactions in cloud based environment
US9009726B2 (en) 2010-12-10 2015-04-14 Microsoft Technology Licensing, Llc Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies
US8868492B2 (en) 2011-06-15 2014-10-21 Oracle International Corporation Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
US9189511B2 (en) * 2011-09-07 2015-11-17 Unisys Corporation Free resources parameter for improving performance of database alterations
US8775682B1 (en) 2012-05-08 2014-07-08 Google Inc. Data synchronization with eventual consistency
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US10311154B2 (en) 2013-09-21 2019-06-04 Oracle International Corporation Combined row and columnar storage for in-memory databases for OLTP and analytics workloads
JP2015082313A (ja) * 2013-10-24 2015-04-27 富士通株式会社 Raid構成管理装置、raid構成管理プログラムおよびraid構成管理方法
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US10114580B1 (en) * 2014-05-05 2018-10-30 EMC IP Holding Company LLC Data backup management on distributed storage systems
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10379961B2 (en) 2017-04-11 2019-08-13 International Business Machines Corporation Ensuring metadata and index consistency using write intents
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
CN107562842A (zh) * 2017-08-25 2018-01-09 北京市天元网络技术股份有限公司 资源数据的保护方法及设备
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US11675761B2 (en) 2017-09-30 2023-06-13 Oracle International Corporation Performing in-memory columnar analytic queries on externally resident data
US20190342380A1 (en) 2018-05-07 2019-11-07 Microsoft Technology Licensing, Llc Adaptive resource-governed services for performance-compliant distributed workloads
US11170002B2 (en) 2018-10-19 2021-11-09 Oracle International Corporation Integrating Kafka data-in-motion with data-at-rest tables

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1031639A (ja) * 1996-07-16 1998-02-03 Nippon Telegr & Teleph Corp <Ntt> クライアント状態管理方法およびその装置
JP2002507021A (ja) * 1998-03-12 2002-03-05 クロスワールズ ソフトウエア インコーポレイテッド 情報システムの独立性レベル及びトランザクション補償
JP2000132443A (ja) * 1998-10-22 2000-05-12 Internatl Business Mach Corp <Ibm> コンピュータ、情報共有システム、及びレプリカ同一性保持方法
WO2004059495A1 (ja) * 2002-12-25 2004-07-15 Matsushita Electric Industrial Co., Ltd. 端末装置およびセッション管理装置
CN100367251C (zh) * 2002-12-25 2008-02-06 松下电器产业株式会社 终端装置和会话管理装置
JP2011154631A (ja) * 2010-01-28 2011-08-11 Fujitsu Ltd 確定クロック判定プログラム及び方法、並びにノード装置

Also Published As

Publication number Publication date
US5581753A (en) 1996-12-03

Similar Documents

Publication Publication Date Title
JPH08115246A (ja) セッションの一貫性を保証する方法
JP2731374B2 (ja) 書き込み衝突解決方法
JP2731373B2 (ja) 書き込み衝突検出方法
JP2731375B2 (ja) データ識別方法
CN104793988B (zh) 跨数据库分布式事务的实现方法和装置
US7716181B2 (en) Methods, apparatus and computer programs for data replication comprising a batch of descriptions of data changes
US5751958A (en) Allowing inconsistency in a distributed client-server application
US6275831B1 (en) Data processing environment with methods providing contemporaneous synchronization of two or more clients
JP3851272B2 (ja) ステートフル・プログラム・エンティティの作業負荷管理
JP4237354B2 (ja) トランザクション処理方法及びトランザクション処理システム
JPH08241234A (ja) データベース管理方法
CN101111840B (zh) 用于在数据库管理系统中为文件操作提供锁定的技术
US8756196B2 (en) Propagating tables while preserving cyclic foreign key relationships
US7039669B1 (en) Techniques for adding a master in a distributed database without suspending database operations at extant master sites
JPH07219830A (ja) レプリケーション・ファシリティ
JP2004529442A (ja) コンピュータシステムにおける特定用途向けロールバック
CN101268439A (zh) 数据库片段克隆和管理
JP2003522344A (ja) データベース同期化/組織化システムおよび方法
WO2009017534A1 (en) Persistent query system for automatic on-demand data subscriptions from mobile devices
JP4497691B2 (ja) データベース管理方法及び管理システム
US7246344B1 (en) Drag and drop stateless data class specification and programming
CN108089926A (zh) 一种获取分布式锁的方法、装置、设备及可读存储介质
CN110457385A (zh) 多租户环境中的可实体化的数据库对象
US7072912B1 (en) Identifying a common point in time across multiple logs
JPH1063557A (ja) 分散ファイルの同期方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070119

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070216