JPH09190369A - 更新データストリーム作成方法 - Google Patents

更新データストリーム作成方法

Info

Publication number
JPH09190369A
JPH09190369A JP8299919A JP29991996A JPH09190369A JP H09190369 A JPH09190369 A JP H09190369A JP 8299919 A JP8299919 A JP 8299919A JP 29991996 A JP29991996 A JP 29991996A JP H09190369 A JPH09190369 A JP H09190369A
Authority
JP
Japan
Prior art keywords
delta
stream
frame
data
transaction
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.)
Granted
Application number
JP8299919A
Other languages
English (en)
Other versions
JP4165912B2 (ja
Inventor
Mark Squibb
マーク・スクイブ
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH09190369A publication Critical patent/JPH09190369A/ja
Application granted granted Critical
Publication of JP4165912B2 publication Critical patent/JP4165912B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • 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
    • Y10S707/99953Recoverability
    • 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
    • Y10S707/99954Version management

Landscapes

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

Abstract

(57)【要約】 【課題】オリジナル・データストリームに対する変更を
表すデルタ・ストリームまたは先行デルタ・ストリーム
に対する変更を表すデルタ・ストリームからなる複数の
順次デルタ・ストリームをマージして、更新データスト
リームを作成するコンピュータ装置および方法を提供す
る。 【解決手段】複数の順次デルタ・ストリームに対応する
トランザクション・エレメントの連鎖を構築し、更新デ
ータストリームに伝送すべきデータ・バイトをトランザ
クション連鎖から探し求める検索要求に応答して、オリ
ジナルのデータストリームに対する最新リビジョン修正
版を表す末尾トランザクション・エレメントから先ずデ
ータが返される。トランザクション連鎖が検索要求に応
じることができない場合オリジナル・データストリーム
からデータ・バイトが応答される。検索要求に対してな
にも応答されなくなると、更新データストリーム構築動
作が終了する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オリジナル・デー
タストリームに対する変更を表すデルタ・ストリームま
たは先行デルタ・ストリームに対する変更を表すデルタ
・ストリームを含む複数の順次デルタ・ストリームをマ
ージするコンピュータ装置および方法に関するものであ
り、具体的には、1)オリジナル・データストリームに
対する複数の順次デルタ・ストリームをマージして更新
データストリームを作成する、2)複数の順次デルタ・
ストリームをマージしてコンパイルされたデルタ・スト
リームを作成する、あるいは、3)1つまたは複数のデ
ルタ・ストリームがオリジナル・データストリームとマ
ージされる時または相互にマージされる時1つまたは複
数の負のデルタ・ストリームを作成する、装置および方
法に関するものである。本発明の方法および装置は、コ
ンピュータ・バックアップ・プロセス、バージョン管理
プログラム等と連係して使用される場合がある。
【0002】
【従来の技術】1993年3月30日出願の米国特許出
願第08/039,702号は、オリジナルおよび更新されたコン
ピュータ・ファイルに関する変更リストを作成する方法
および装置を開示している。この方法および装置は、C
PU上のハッシュ生成機構を利用してオリジナル・ファ
イルに関するトークン・セットを作成する。その後、C
PU上の比較機構が、そのトークン・セットおよウィン
ドウ操作技術を使用して、オリジナルおよび更新された
ファイル内の共通ページの位置を特定する。次に、比較
機構が、共通ページ情報および更新されたファイル(あ
るいはオリジナル・ファイルの)残りの非共通部分を使
用して、オリジナル・ファイルと更新されたファイルの
間の差分を表すデルタを作成する。デルタは、別のコン
ピュータに伝送されオリジナル・ファイルのバックアッ
プ・コピーと結合され、更新されたファイルのバックア
ップ・コピーが作成される。オリジナル・ファイルおよ
び一連のデルタを使用することによって、履歴ファイル
情報がコスト効率よく保持される。
【0003】上記引用の特許出願に記載のデルタのマー
ジを必要とするバックアップ操作は、変更増分のマージ
を必要とする場合に比較して大幅に能率化されている。
例えば、種々のタイプが混合した1ギガバイトのファイ
ルがその情報の0.5%毎日変更されると仮定する場
合、同一の変更がそのファイルの15%に及ぶことがあ
る。上記引用の特許出願の方法を使用して作成される毎
日のデルタ・ファイルは0.5%変更を表すために約5
メガバイトのサイズでよいが、一方、毎日の増分変更フ
ァイルはファイルの15%に当たる変化部分を表さなけ
ればならず、150メガバイト以上のサイズを必要とす
る。毎週の全面バックアップおよび毎日の増分バックア
ップを仮定すれば、1年に78ギガバイトの情報が書き
込まれ、各増分変更バックアップに約3時間を要する。
毎日デルタ・バックアップを使用するとすれば、年間わ
ずか2ギガバイトが書き込まれるだけで、各バックアッ
プ・セッションの所要時間は約5分である。
【0004】このような時間および記憶空間の節約は、
1ギガバイトのデータベースにおける0.5%の変更の
場合に一層明確となる。データベースにおいては、0.
5%の変更が、データベースの100%に及ぶことがあ
り、上記引用特許出願に記載のデルタ・ファイルを使用
するバックアップ操作は時間、記憶空間およびコストの
一層顕著な節約を生む。
【0005】
【発明が解決しようとする課題】上記引用の特許出願に
記載の装置および方法が独特の利点を有するとはいえ、
デルタ・ファイルをバックアップ・ファイルのコピーと
順次マージする方法は、特に毎日数千のファイルとデル
タをマージするためバックアップ・レポジトリが必要と
される場合、バックアップ・レポジトリ処理に長いCP
U時間を必要とするという欠点がある。従って、バック
アップ・レポジトリによって実行される動作の数を減少
させる方法を提供することが本発明の主目的である。
【0006】デルタ・ファイルがバックアップ・レポジ
トリによって保存されることを上記引用特許出願が開示
しているが、各デルタに対して負のデルタを作成し、バ
ックアップ・レポジトリに負のデルタを保存することに
は利点がある。負のデルタを保存することによって、バ
ックアップ・レポジトリが、その現在のバックアップ・
コピーと1つまたは複数の負のデルタをマージさせるこ
とが可能となり、それによって前のバージョンのファイ
ルを再構築することができる。従って、本発明の更に別
の目的は、負のデルタの作成を可能にし、それにより先
行バージョンのファイルの取り出しを可能にする方法お
よび装置を提供することである。
【0007】非常に多数のデルタ・ファイルを管理する
のは厄介であるので、あまりに多数になった時デルタ・
ファイル(特に古いデルタ・ファイル)の数を周期的に減
らすことが望ましい。しかし、単にN番目毎のデルタを
削除しても、複数デルタ間の必要な順序関係が破壊され
る。従って、いくつかのデルタをマージしてコンパイル
されたデルタを作成し、バックアップ・レポジトリの管
理の必要性を減少させる装置および方法を提供すること
が本発明の更に別の目的である。上記引用の特許出願に
開示されているデルタ・ファイルは、1)(例えばコン
ピュータ・ファイルのような)オリジナル・データスト
リームと(例えばコンピュータ・ファイルの改訂版コピ
ーのような)更新されたデータストリームの間、あるい
は、2)2つの連続する更新データストリームの間にお
ける合致および変更セグメントを示す情報を含む。スト
リームは、データが順次の関係を持つという事実に依存
する。すべてのデルタ・ファイル(変更ファイル)が順次
的関係を持つわけではない。
【0008】アクセスの容易さのため、また、順次記憶
媒体が非順次(シーク型)媒体より大幅に廉価であるた
め、順次ファイルを順次媒体に記憶することは望まし
い。順次媒体の例は磁気テープであり、シーク型媒体の
例には、フロッピーディスク、ハードディスクおよびC
D−ROMが含まれる。現在までのところ、上述の諸目
的を達成する方法および装置は開発されていない。
【0009】デルタ・ファイルをマージする既存の方法
の1つは、反復的作成方法である。反復的作成システム
は、基本ファイルを1つまたは複数のデルタ・ファイル
と連続的にマージする。複数のデルタ・ファイルは、基
本ファイルと同時並行的にマージされない。反復的作成
方法は、マージを実行するCPUの入出力(I/O)動作
を減少させない。基本ファイルは、マージすべきデルタ
・ファイルの各々について一度読み書きされなければな
らない。このように、N個のデルタ・ファイルを基本フ
ァイルとマージするためのI/O動作の数は、((N*
2)+1)*(基本ファイルのバイト数)に等しい。反復的
作成システムは、シーク型媒体についてのみ機能し、従
って順次媒体上に記憶されたデルタ・ストリームをマー
ジするために使用されたことはない。反復的作成システ
ムを使用して順次媒体上に記憶されたデルタ・ストリー
ムをマージしなければならない場合は、先ずデルタ・ス
トリームをシーク型媒体にコピーしなければならず、そ
のため、CPUのI/O動作数が増加する。反復的作成
システムを使用して負のデルタ・ファイルを作成するシ
ステムは知られていない。
【0010】反復的作成方法の1つのバリエーションは
反復的作成パイプライン方法である。基本ファイルが、
1つのデルタ・ファイルに関連する更新プロセスに供給
される。更新プロセスの出力が別の更新プロセスに供給
され、次々とパイプ上に連結して最後に最終的更新ファ
イルが作成される。反復的作成パイプライン方式は、マ
ルチタスキング・システムの出現によって可能にされた
もので、マルチタスキング・システム上でのみ機能す
る。このシステムの利点はI/Oが減少することであ
る。このシステムにおいてN個の変更ファイルを基本フ
ァイルとマージするためのI/O動作の数は、2*(基
本ファイルのバイト数)に等しい。しかしながら、次の
ようないくつかの欠点がある。第1に、パイプライン方
式は、パイプ・バッファがいっぱいになる度毎に文脈的
プログラム切り替えが必要となる。多数の(たぶん大規
模な)デルタ・ファイルとマージされる大規模基本ファ
イルの場合、多くの文脈的切り替えが起き、システムの
処理性能が低下する。第2に、反復作成パイプライン・
システムはマルチタスキング・システム環境においての
み機能する。第3に、この方法は負のデルタ・ファイル
の作成をサポートしない。最後に、この方法はもう一度
デルタ・ファイルがシーク型媒体に記憶されることを要
求する。
【0011】デルタ・ファイルをマージする最終的方法
が、Foster氏らに付与の米国特許第45,278,979号に開示
されている。この特許は、ポインタを使用するバージョ
ン管理システムを開示している。このシステムにおいて
も、ポインタを機能させるため、ファイルはシーク型
(非順次)媒体にコピーされなければならない。この特許
は、バージョンの後方向比較によって前のバージョンを
取り出す能力を開示している。これは、(1回パスです
べて実行する)前方向マージの間に逆向き経路を作成す
ることとは全く相違する。上記Foster氏らの特許の方法
は、1)大規模な基本およびデルタ・ファイルに関する
貧弱な処理性能(この方法は各々が典型的には1メガバ
イト以下のデータを伴う複数のバージョンのプログラム
・ソース・データを記憶することを目的とする)、およ
び2)「行」に対する変更を処理する文脈上の制限(デー
タは文脈上の規則に従わなければならず、行を越える連
続ストリームとして取り扱われない)という欠点を含
む。従って、デルタ・マージ、バックアップおよびバー
ジョン管理システムの上述のような欠点を克服すること
が、本発明の更にまた別の目的である。
【0012】
【課題を解決するための手段】上記諸目的を達成するた
め、本発明は、順次配列された複数のデルタ・ストリー
ムをマージするコンピュータ装置および方法を提供す
る。本発明の装置および方法を使用して、1)オリジナ
ル・データストリームに対する複数の順次デルタ・スト
リームをマージして更新データストリームを作成し、
2)複数の順次デルタ・ストリームをマージしてコンパ
イルされたデルタ・ストリームを作成し、あるいは、
3)1つまたは複数のデルタ・ストリームがオリジナル
・データストリームとマージされる時または相互にマー
ジされる時1つまたは複数の負のデルタ・ストリームを
作成する装置および方法を提供する。本発明の方法およ
び装置は、コンピュータ・バックアップ・プロセス、バ
ージョン管理プログラム等と連係して使用されることが
できる。
【0013】要約すれば、本発明の装置および方法を使
用するコンピュータは、先ず、順次配列された複数のデ
ルタ・ストリームをオリジナルのデータストリームとマ
ージするため、複数の順次デルタ・ストリームに対応す
るトランザクション・エレメントの連鎖を構築する。こ
の連鎖において、最小の番号をつけられたトランザクシ
ョン・エレメントが、オリジナルのデータストリームに
対する最初のリビジョン(すなわち修正版)を表すデルタ
・ストリームに対応し、その後に順次ふられた番号のト
ランザクション・エレメントが、オリジナルのデータス
トリームに対する後続のそれぞれのリビジョンに対応す
る。使用者プロセスが更新データストリームに伝送すべ
きデータ・バイトをトランザクション連鎖の範囲内で探
し求める検索要求を起動する。検索要求は、先ず(オリ
ジナルのデータストリームに対する最新リビジョンを表
す)末尾トランザクション・エレメントに対して起動さ
れる。検索要求に対して、1)データ・バイトを供給で
きるトランザクション連鎖の中の最大番号のデルタ・ス
トリームによって提供されるデータ・バイトが応答され
るか、または、2)トランザクション連鎖が検索要求に
応じることができない場合オリジナル・データストリー
ムによって提供されるデータ・バイトが応答される。検
索要求に対してなにも応答されなくなると、更新データ
ストリーム構築動作が終了する(更新データストリーム
が完成する)。
【0014】オプションとして、各デルタ・ストリーム
毎に先行ストリーム位置が監視される。これによって、
コンピュータ装置が、特定のデルタ・ストリームのソー
ス合致位置が特定のデルタ・ストリームの先行ストリー
ム位置より大きい時、特定のデルタ・ストリームの1つ
または複数の先行するストリームから該特定のデルタ・
ストリームに関連する負のデルタ・ストリームへデータ
・フレームを転送することを可能にする。ソース合致位
置は、デルタ・ストリームのあらゆる合致フレームに関
するもので、特定の合致フレームがロードされる時まで
に、先行ストリームがどれほど消費されたかを示す。先
行ストリーム部分の消費が不十分な場合、それは連続す
るデルタ・ストリームの間に発生したファイル削除が原
因であるので、削除された情報が負のデルタ・ストリー
ムに記録される。データ・フレームが負のデルタ・スト
リームに転送された後、反転合致フレームが負のデルタ
・ストリーム中に作成される。
【0015】本発明の方法のバリエーションの1つは、
更新データ・ファイルを複数の順次配列された負のデル
タ・ストリームとマージし、所望の先行データストリー
ム(おそらくオリジナル・データストリーム)を作成する
ことを含む。本発明の方法の別のバリエーションは、い
くつかのデルタ・ストリームをマージしてコンパイルさ
れたデルタ・ストリームを作成することを含む。
【0016】本発明の方法および装置の利点は、(デル
タ・ストリームによって表現される)デルタ・ファイル
を、順次記憶媒体に記憶されている(オリジナルのデー
タストリームである)ファイルとマージすることができ
る能力である。その他の利点には、1)ファイルの以前
のバージョンを再構築することができるように負のデル
タ・ストリームを作成することができる能力、2)CP
Uによって実行されるI/O動作数が2*(基本ファイ
ルのバイト数)に限定されるように単一パスで多数のデ
ルタ・ストリームをマージして負のデルタ・ストリーム
を作成することができる能力、3)複数のデルタ・スト
リームをマージしてコンパイルされたデルタ・ストリー
ムを作成し、それによってCPUに課せられた管理負荷
を減少させる能力、4)マルチタスクをサポートしない
コンピュータ・システム環境においても効果的に動作で
きる能力、および5)大規模なデータストリームとデル
タ・ストリームのマージを管理する能力が含まれる。
【0017】本明細書に記述の本発明の方法および装置
が順次記憶媒体の使用に関する特定の利点を提供してい
るが、本発明の方法および装置はシーク型記憶媒体使用
の場合もまた有効である。
【0018】デルタ・ストリームがファイル全体に比較
して小さい(ファイル全体のサイズの約0.5%)ので、
複数デルタ・ストリームの記憶に際しては、中央のレポ
ジトリにおける記憶に加えて、ローカルのPCハードデ
ィスクに記憶することができる点は理解されるであろ
う。上述の装置をファイル・システムまたはアプリケー
ション・プログラムへ適応させることによって、ファイ
ルを上書きすることに代わる形態としてデルタ・ストリ
ームを生成することができる。このように、ユーザは、
大規模なディスク記憶空間を使用せずに、ドキュメント
のいくつかのバージョンをローカルに保持することが可
能である。
【0019】発明の課題を解決する手段として、本発明
は、プログラム可能なコンピュータにおいて、複数の順
次デルタ・ストリームをオリジナルのデータストリーム
とマージして更新データストリームを作成するため、上
記更新データストリームに伝送すべきデータ・バイトを
上記複数の順次デルタ・ストリームの範囲内から取り出
す検索要求を起動するステップ、上記データ・バイトを
供給できる複数の順次デルタ・ストリームの最後のデル
タ・ストリームによって提供されるデータ・バイトで上
記要求を充足させるステップ、上記複数の順次デルタ・
ストリームが上記検索要求を充足させることができない
場合、上記オリジナル・データストリームによって提供
されるデータ・バイトで上記検索要求を充足させるステ
ップ、および検索要求に対する充足ができなくなるま
で、上記検索要求の起動と充足のステップを繰り返すこ
とによって上記更新データストリームを完成させるステ
ップからなる方法を含む。
【0020】
【発明の実施の形態】図1には、複数の順次デルタ・ス
トリーム30、32、34をオリジナルのデータストリ
ーム36とマージする一般的コンピュータ装置20のブ
ロック図が示されている。この装置には、トランザクシ
ョン・エレメント24、26、28の各々が複数の順次
デルタ・ストリーム30、32、34に対応するデルタ
・ストリーム入力42、44、46を持つ複数の順次ト
ランザクション・エレメント24、26、28を含むト
ランザクション連鎖38、およびトランザクション連鎖
38の末尾エレメント24に接続する使用者プロセス2
2が含まれ、また、使用者プロセスに対するオリジナル
のデータストリーム36の入力48および更新データス
トリーム52の出力50が含まれる。複数の順次デルタ
・ストリーム30、32、34をオリジナル・データス
トリーム36とマージする方法は、図2ないし図8の流
れ図に一般的に示されているように、更新データストリ
ーム52へ転送すべきデータ・バイトに関して複数の順
次デルタ・ストリーム30、32、34の範囲内での検
索要求102を始動するステップ(ステップ102)、
データ・バイトを供給することができる複数の順次デル
タ・ストリーム30、32、34内の最後のデルタ・ス
トリームによって提供されるデータ・バイトを上記検索
要求に回答するステップ(ステップ110)、複数の順
次デルタ・ストリーム30、32、34が上記検索要求
に対しデータ・バイトを回答することができない場合、
オリジナル・データストリーム36によって提供される
データ・バイトを上記検索要求に回答するステップ(ス
テップ112)、および、検索要求に対してデータ・バ
イトが回答されなくなるまで上記ステップ110および
112を繰り返すことによって、最終的に更新データス
トリームを完成させるステップ(ステップ106)を含
む。
【0021】複数の順次デルタ・ストリーム30、3
2、34をオリジナルのデータストリーム36とマージ
する装置20および方法を一般的に上述したが、以下に
更にその詳細を記述する。本発明の1つの好ましい実施
形態において、装置20のトランザクション・エレメン
ト24、26、28の各々は、更に、デルタ・ストリー
ム読み取り機構、先行トランザクション・エレメント・
インデックス、先行ストリーム位置モニタ、現在時フレ
ーム・バッファおよび検索要求実行I/Oインターフェ
ース66、68、70を含む。使用者プロセス22は、
データ・ストリーム更新のためトランザクション・エレ
メントにおけるトランザクション連鎖38からデータを
取り出す(ステップ102)責任がある。使用者プロセス
22の検索要求102をトランザクション連鎖38を通
して伝播する際にトランザクション・エレメント24、
26、28の先行トランザクション・エレメント・イン
デックスが使用される。検索要求102の各々は、トラ
ンザクション連鎖38の末尾エレメント24(TE2)ま
たはオリジナル・データストリーム36の最後のリビジ
ョン30に対応するエレメントに対して実行される。ト
ランザクション・エレメント24、26、28の先行ト
ランザクション・エレメント・インデックスに応じて、
オリジナル・データストリーム34の最初のリビジョン
に対応するトランザクション・エレメント28(0−エ
レメントすなわちTE0)に到達するまで、オリジナル
・データストリーム36の初期リビジョン40へ順次検
索要求102が伝播される。対応するデルタ・ストリー
ム30、32、34からトランザクション・エレメント
の現在時フレーム・バッファ170へデルタ・フレーム
(すなわち合致フレームやデータ・フレーム)を順次ロー
ドするように、トランザクション・エレメント24、2
6、28のデルタ・ストリーム入力42、44、46は
制御される(ステップ160)。特定のトランザクション
・エレメント24、26、28のデルタ・ストリーム入
力42、44、46を制御するステップの詳細は、図4
を参照して後述する。
【0022】合致フレームがトランザクション・エレメ
ント24、26、28の現在時フレーム・バッファへロ
ードされる(ステップ170)時、当該フレームに関する
ソース合致位置が、トランザクション・エレメント2
4、26、28によって監視される先行ストリーム位置
と比較される。トランザクション・エレメント24、2
6、28の先行ストリーム位置モニタは、トランザクシ
ョン・エレメント24、26、28の先行ストリーム3
2、34、36の消費されたバイト数を示す。トランザ
クション・エレメント24、26、28の先行ストリー
ム32、34、36は、トランザクション・エレメント
24、26、28の先行トランザクション・エレメント
・インデックスによって識別される。ソース合致位置
は、特定の合致フレームがそのトランザクション・エレ
メント24、26、28にロードされる時までに消費さ
れていなければならない先行ストリーム40のバイト数
を示す(合致フレーム内に含まれる)数値である。先行ス
トリーム位置172よりソース合致位置が大きい場合、
ソース合致位置と先行ストリームの間の差(先行ストリ
ーム遅れカウント)に等しい位置(ステップ172)に先
行ストリーム32、34、36のストリーム位置を進め
て第2の検索要求が発せられる(ステップ196)。この
ルーチンの流れの概要は図5に示されている。
【0023】デルタ・ストリーム読み取り機構は、デル
タ・ストリーム30、32、34の(合致フレームおよ
び/またはデータ・フレームを含む)デルタ・フレーム
が、トランザクション・エレメント24、26、28の
現在時フレーム・バッファへロードされ次第(ステップ
120)、それらを読み取る責任がある。そのデータ・
フレームによって、使用者プロセス22によって(検索
実行I/Oインターフェース66、68、70を経由し
て)始動された検索要求102を満たすたことができる
可能性がある。合致フレームによって、検索要求102
が先行トランザクション・エレメント26、28へ渡さ
れることが可能となる(ステップ146)か、または、合
致フレームがトランザクション連鎖38の最後のトラン
ザクション・エレメント28の現在時フレーム・バッフ
ァ中にある時、合致フレームによってオリジナル・デー
タストリーム36からのデータで使用者プロセス22の
要求102に応答することできる場合もある。検索要求
102が先行トランザクション・エレメント26、28
へ渡される時、トランザクション・エレメント24、2
6、28の先行トランザクション・エレメント26、2
8のインデックスを使用して、トランザクション・エレ
メント26、28のどちらに検索要求102を渡すかが
決定される(ステップ146)。デルタ・フレーム読み取
りルーチンによって実行されるステップの概要が図3に
示されている。
【0024】トランザクション・エレメント24、2
6、28の各々の中に負のデルタ・ストリーム書き込み
機能60、62、64を含むことは、コンピュータ装置
20の好ましい実施形態に対する重要な追加である。負
のデルタ・ストリーム書き込み機構60、62、64な
しでは、先行ストリームを進めている間にスキップされ
る先行ストリーム32、34、36のデータ・バイト1
72が失われる。負のストリーム書き込み機構60、6
2、64が、先行ストリームの前進によって呼び出さ
れ、スキップされたデータ・バイト172が特定のデル
タ・ストリーム30、32、34に関連する負のデルタ
・ストリーム54、56、58に(データ・フレームの
形式で)書き込まれる(ステップ204)。負のデルタ・
ストリーム54、56、58へデータ・フレームを書き
込んだ後、新しくロードされた合致フレームの反転合致
フレームが同じ負のデルタ・ストリーム54、56、5
8へ書き込まれる(ステップ178)。このようにして、
負のデルタ・ストリーム54、56、58は、(オリジ
ナル・データストリーム36であろうがあるいはオリジ
ナル・データストリームの中間リビジョンであろうが)
所望の先行データストリーム284を取り出すため複数
の負の順次デルタ・ストリーム54、56、58を更新
されたデルタ・ストリーム52とマージするためトラン
ザクション連鎖38を構築する情報を提供する。データ
・フレームおよび反転合致フレームを負のデルタ・スト
リーム54、56、58に転送するルーチン(ステップ
204、178)の流れ図がそれぞれ図6および図7に
示されている。
【0025】図1の装置20はプログラム可能なコンピ
ュータとして実施することができるであろうが、装置2
0はそのような実施形態に限定されない。装置20は、
フロッピーディスク、CD−ROM、テープ等のような
物理的記憶媒体で実施することもできるであろう。上述
の好ましい実施形態の処理ステップおよびルーチンを以
下に詳細に記述する。
【0026】使用者プロセス 使用者プロセス22が更新データストリーム52を構築
する。図2に示されるように、使用者プロセス22は、
トランザクション連鎖38(トランザクション・エレメ
ントの連鎖)からのデータを繰り返し要求する(ステップ
102)。要求102のすべては、トランザクション連
鎖38の末尾エレメント24(0−エレメント)に対して
発せられる(ステップ100)。末尾エレメント24を用
いて、オリジナルのデータストリーム36、ファイル、
データベース等に対する最新のリビジョンを表すデルタ
・ストリーム30が読み取られる。
【0027】トランザクション・エレメント24、2
6、28は、使用者プロセス22の要求102に対して
2つの方法の1つで応答することができる(ステップ1
44、136)。現在時データ・フレーム(CURFRA
MEBUF)からデータを戻す(ステップ134)か、さ
もなければ、オリジナル・データストリーム36から更
新されたデータストリーム52へ転送される(ステップ
112)べきデータ・バイトの数を表す数値を返す(ステ
ップ144)ことによって、トランザクション・エレメ
ント24、26、28は要求102に回答する。使用者
プロセス22によって(トランザクション連鎖38を介
して)受け取られる(ステップ108)いずれのデータも
更新データストリーム52に転送される(ステップ11
0、112)。トランザクション連鎖38が要求102
に応じることができなくなるまで(ステップ104)、使
用者プロセス22はデータに対する要求102を出し続
け、最後にデータストリームの更新が完了する(ステッ
プ106)。
【0028】使用者プロセスの好ましい処理の流れが図
2に示されている。トランザクション文脈インデックス
(略してTCI)を使用して、要求102を出す相手先の
トランザクション・エレメント24が識別される(ステ
ップ100)。使用者プロセス22に関する限り、要求
102は常に末尾エレメント24に対しなされる。従っ
て、使用者プロセス22は、トランザクション文脈イン
デックスをトランザクション・カウント(すなわちトラ
ンザクションCNT)より1少ない値、または、トラン
ザクション・エレメント24、26、28におけるトラ
ンザクション連鎖38の総数に設定する。オリジナル・
データストリーム36に対する最初のリビジョンを表す
デルタ・ストリーム30に情報を与えるトランザクショ
ン・エレメント24が0−エレメントと表記されている
点に注意する必要がある。
【0029】GOTCNTは、単一の使用者プロセス2
2の要求102に応答して、更新データストリーム52
へ転送する(ステップ110、112)ことができるデー
タ・バイトの最大数を表す。データがトランザクション
・エレメント24、26、28によって返される場合
(ステップ134)、GOTCNTは返される(ステップ
136)データ・バイトの全数を表す。データ・バイト
は、リターン・バッファ(RETURNBUF)を通して
返される(ステップ134)。トランザクション連鎖38
がその現在時フレームからデータを供給することができ
ないが、データがまだオリジナル・データストリーム3
6内に残っている場合、GOTCNTは、オリジナル・
データストリーム36から更新データストリーム52へ
転送されるべき(ステップ112)データ・バイトの数を
表す。使用者プロセス22が検索要求102を起動する
時、GOTCNTは0xFFFFFFFFに設定される。このよう
に、使用者プロセス22は、可能な限り多数のバイトを
返すようにトランザクション連鎖38に要求する(ステ
ップ136、144)。
【0030】デルタ・フレームの読み取り フレーム読み取りルーチンは、すべてのトランザクショ
ン・エレメント24、26、28によって種々の文脈で
呼び出される。例えば、使用者プロセス22の検索要求
102に応答して、あるいは、その先行ストリーム位置
を進めようとしている別のトランザクション・エレメン
ト24、26、28の検索要求196に応答して、トラ
ンザクション・エレメント24、26、28の現在時フ
レームからバイトを読み取ることができる。フレーム読
み取りルーチンに関する好ましい処理の流れが図3に示
されている。
【0031】トランザクション連鎖38が供給すること
ができる最大数のデータ・バイトに対する要求102を
使用者プロセス22が起動すると、その要求102は、
トランザクション連鎖38の末尾エレメント24へ先ず
渡される(ステップ114)。末尾エレメント24は、デ
ルタ・フレーム(データおよび合致フレーム)の読み取り
ルーチンを起動する。図3に示されるように、トランザ
クション・エレメント24、26、28の現在時フレー
ムによって表されたバイト116のすべてが使用された
なら(ステップ118)、新しいフレームが、トランザク
ション・エレメント24、26、28の現在時フレーム
・バッファ(CURFRAMEBUF)にロードされる
(ステップ120)。フレーム・ロード・ルーチンがファ
イル終了(EOF)条件を戻すなら(ステップ122)、0
のGOTCNTが使用者プロセス22へ返され(ステッ
プ124)、特定の更新データストリームの構築が完了
する(ステップ106)。さもなければ、新しいフレーム
のロードによって、現在時フレームの未使用バイトの数
(UNU)が新しくロードされたフレームの長さ(CFL)
にリセットされる(ステップ126)。
【0032】現在時フレームがロードされ、あるフレー
ムのバイトが消費しつくされなかったと確認される(ス
テップ118)と、(GOTCNT要求変数を更新するた
めに使用されるフレーム読み取りルーチンの局所変数で
ある)GETCNTが、検索において要求された(ステッ
プ102)バイトの数の最小数または、現在時フレーム
において使用可能なバイト数(ステップ116、126)
に設定される(ステップ128)。現在時フレームがデー
タ・フレームであれば(ステップ130)、データ・バイ
トのGETCNT数が、RETUNBUFにコピーされ
(ステップ134)、使用者プロセス22へ戻される(ス
テップ136)。現在時フレームがデータ・フレームで
なければ(ステップ130)、使用者プロセス22の要求
102が先行トランザクション・エレメント26へ次々
と渡され(ステップ146)、(1)使用者プロセス22へ
返されるデータがトランザクション・エレメント24、
26、28の現在時フレーム内に見つけられるか、また
は、(2)トランザクション・エレメント24、26、2
8のどれもデータを供給することができないと判断され
オリジナル・データストリーム36から更新データスト
リーム52へデータが転送されねばならないことを示す
正のGETCNTが使用者プロセスへ戻されるか、いず
れかの場合となるまでこの動作が継続される。使用者プ
ロセス22の要求102が先行トランザクション・エレ
メント26、28へ転送されると、そのエレメント2
6、28は、末尾エレメントによって実行されたものと
同じデルタ・フレーム読み取りルーチンを実行する(ス
テップ148)。しかしながら、フレーム読み取りルー
チンがトランザクション・エレメント24、26、28
によって始動される度毎に、そのルーチンに関連する局
所変数のユニークなコピーが、特定のトランザクション
・エレメント24、26、28のトランザクション文脈
内に記憶される。トランザクション文脈の変数には、T
CI、CFL、UNU、CFUおよびPSPが含まれ
る。
【0033】TCIは、上述のようにトランザクション
文脈インデックスとして定義される。CFUは、現在時
フレームにおける使用されたバイト(文字)の数を表す。
検索要求が渡されるあらゆるトランザクション・エレメ
ントのCFUは、返される(ステップ136、158)G
ETCNTまたはGOT数によって増分される(ステッ
プ132、154)。
【0034】PSPは、トランザクション・エレメント
24、26、28に関連する先行ストリーム位置を表
し、(詳細は後述する)先行ストリームの位置を進める際
の重要な変数である。しかし、検索要求が渡されるあら
ゆるトランザクション・エレメントのうち、検索要求1
02に応答するトランザクション・エレメント24、2
6、28のPSPは、 使用者プロセス22またはその
他の要求元エンティティ24、26、28へ返されるバ
イト数(GETCNTまたはGOT)によって進められる
(ステップ156)点に注意する必要がある。
【0035】フレーム読み取りルーチンにおいて参照さ
れるその他の変数は、F2_BEG、F2_ENDおよびCF.F2_BEG
である。F2_BEGおよびF2_ENDは、現在時合致フレームに
よって参照される更新データストリームの開始および終
了アドレスを表し、CF.F2_BEGは、更新データストリー
ム52において次に書き込まれるべきアドレスを表す。
負のデルタ・ストリーム54、56、58へ書き込む
(ステップ178)ため反転合致フレームを作成する際
に、あるいは、コンパイルされたデルタ・ストリーム2
94に書き込むため合致フレームを構築する際に、これ
らの変数は重要な機能を果たす。
【0036】デルタ・フレームのロード トランザクション・エレメント24、26、28の現在
時デルタ・フレームにおいて未使用のバイト(すなわち
UNU)の数がゼロであると判断される時(ステップ11
8)、トランザクション・エレメント24、26、28
の現在時フレームとして新しいフレームがロードされな
ければならない(ステップ120)。新しいデルタ・フレ
ームをロードするルーチンは図4の流れ図に示されてい
る。
【0037】デルタ・ストリーム30、32、34のデ
ルタ・フレーム・シーケンスにおけるデルタ・フレーム
の各々はフレーム・ヘッダの後に続くように配置される
(代替的には、ヘッダ情報はフレーム内に含まれる)。合
致フレーム、データ・フレームまたはEOFフレームに
出会ったか否かを判断するためフレーム・ヘッダが読み
取られる(ステップ160)。更新データトリーム52が
完了したことを使用者プロセス22へ知らせるためのE
OFフレームがロードされる場合(ステップ162)、デ
ルタ完了ルーチン(ステップ164)によって、トランザ
クション・エレメント24、26、28のそれぞれすべ
てがEOFフレームに出会うまでそのデルタ・ストリー
ム30、32、34を読み続けることが保証される。こ
のようにして、負のデルタ・ストリーム54、56、5
8が未完成の状態で残されることはない。
【0038】新しくロードされたフレームがデータ・フ
レームである場合(ステップ168)、トランザクション
・エレメント24、26、28の現在時フレーム・バッ
ファ(CURFRAMEBUF)にそのフレームのデータ
・バイトがロードされる。合致フレームがロードされた
場合(ステップ168)、合致フレームに関連するソース
合致位置(すなわちSMP)が、ロードしているトランザ
クション・エレメント24、26、28のPSPと比較
される(ステップ172)。ソース合致位置は、特定のS
MPに関連するフレームがロードされる時までに、直前
の先行トランザクション・エレメント26、28に関連
するストリーム32、34、36のバイトが既に使用さ
れた数を示す。従って、合致フレームのSMPがそのト
ランザクション・エレメントのPSPを上回れば、使用
者プロセス22の現行検索要求102の処理を進める前
に、その差(PSLCすなわち先行ストリーム遅れカウ
ント)に相当するバイト数が先行ストリーム32、3
4、36から消費されなければならない(ステップ17
4)。先行ストリームが進められ、(オリジナル・データ
ストリームの連続的なリビジョンの間に削除されたデー
タである)PSLCに相当するデータ・バイトが、特定
の負のデルタ・ストリーム54、56、58へ転送され
た(ステップ204、194、202)後、新しくロード
された合致フレームを反転させ、該反転合致フレームを
特定のトランザクション・エレメント24、26、28
の負のデルタ・ストリーム54、56、58に書き込む
(ステップ178)機能を有するルーチンが呼び出される
(ステップ176)。合致フレーム反転は逆の合致条件
(すなわち、更新データストリーム52のデータ・バイ
トのどれが先行データストリーム284のバイトに合致
するか)を示すフレームである。
【0039】トランザクション・エレメント24、2
6、28の新たな現在時フレームとしてデータ・フレー
ムまたは合致フレームがロードされた(ステップ120)
か否かに関係なく、現在時フレームの使用済みバイト数
(すなわちCFU)がゼロへリセットされ(ステップ18
0)、現在時フレームの長さ(CFL)が新しいフレーム
によって参照されるバイトの数を表すように設定される
(ステップ182)。
【0040】先行ストリームによって消費されるバイト
数を進めるルーチン 合致フレームのロードによって正のPSLCが作成され
る(ステップ172)時は必ず、先行トランザクション・
エレメント26、28のデルタ・ストリーム32、34
から消費されるバイトの数がPSLCの数だけ進められ
なければならない。
【0041】図5に示されている流れ図は、トランザク
ション・エレメント26、28の先行ストリーム32、
34を進める際のルーチンを示し、オリジナル・データ
ストリーム36によって消費されるバイト数を進める場
合の手順は図6に示されている。正のPSLCが残り
(ステップ186)、先行トランザクション・エレメント
26、28が存在する(ステップ192)場合、使用者プ
ロセス22の検索要求102が保留されている間に第2
の検索要求196が起動される。第2の検索要求におい
て要求されている(ステップ196)データ・バイト数
は、初期的にPSLCと等しく設定されるSKIPCN
T変数によって定義される。第2の検索要求196は、
図3のフレーム読み取りルーチンのインスタンスの追加
実行を必要とする。データ・バイトのSKIPCNT数
を求める要求に応ずる(ステップ136、144)処理を
実行する際に、第2の検索要求196の一部として、フ
レーム読み取りルーチンがそれ自体を呼び出すことがあ
る点に注意する必要がある。データは、RETURNB
UFを介して当該ルーチンに返される(ステップ20
0)。データが返されると(ステップ200)、データは
特定の負のデルタ・ストリーム54、56、58にデー
タ・フレームの形式で書き込まれる(ステップ204)。
正のGOTCNTが返されたがRETURNBUFが空
であれば、オリジナル・データ転送ルーチンが使用され
(ステップ202)、オリジナル・データストリーム36
から特定の負のデルタ・ストリーム54、56、58に
データが転送される(ステップ212)。第2の検索要求
がデータ・バイトのGOTCNT数によって部分的に充
足される(ステップ204)場合、SKIPCNTがGO
TCNT数だけ減じられ(ステップ206)、先行ストリ
ーム前進ルーチンが繰り返される。第2の検索要求を起
動するトランザクション・エレメント24、26、28
の数以下であるがその検索要求を充足するトランザクシ
ョン・エレメント24、26、28の数を上回るトラン
ザクション連鎖38における位置数を持つあらゆるトラ
ンザクション・エレメント24、26、28の先行スト
リーム位置が、特定の負のデルタ・ストリーム54、5
6、58へ転送される(ステップ204、194、20
2)バイト数だけ増分される(ステップ188、20
8)。
【0042】オリジナル・データストリーム転送ルーチ
ンは先行ストリーム前進ルーチンに密接に関係する。前
述のように、特定のエレメント24、26、28に対し
て先行するトランザクション連鎖38のエレメント2
4、26、28がPSLC(SKIPCNT)数のデータ
・バイトを求める要求(ステップ174)を満たすこと
ができない時、オリジナル・データストリーム転送ルー
チンが呼び出される。オリジナル・データストリーム転
送ルーチンは、複数の順次デルタ・ストリーム30、3
2、34をオリジナル・データストリーム36とマージ
する場合に余分のように見えるかもしれないが、コンパ
イルされたデルタ・ストリーム294を作成するため複
数の順次デルタ・ストリーム30、32、34をマージ
する時、オリジナル・データストリーム36が使用でき
ないこともある。従って、負のデルタ・ストリーム28
8、290、292に、消失したオリジナル・データス
トリーム36を参照するトークン210、212を含む
ことが必要である。オリジナル・データストリーム36
が存在すれば、オリジナル・データストリーム36から
のデータ・バイトを使用して、基本(すなわちオリジナ
ルの)ストリーム参照トークンが作成される。PASS
CNTはオリジナル・データストリーム転送ルーチンの
局所変数であって、その呼び出し元ルーチンのPSLC
またはSKIPCNTのいずれかに等しい。
【0043】反転合致フレームの作成 図7は、反転合致フレームまたは合致フレーム反転を作
成するルーチンの流れを示す。このルーチンは単純な反
転アルゴリズム(ステップ218)を含み、オリジナル・
データストリーム36に対する先行リビジョンを表す先
行デルタ・ストリーム34、36におけるセグメントに
合致するデルタ・ストリーム30、32、34のセグメ
ントを示すフレームが「反転」され、負のデルタ・スト
リーム54、56、58において記録された(ステップ
178)反転合致フレームが、更新データストリーム5
2に対する先行リビジョンを表す負のデルタ・ストリー
ム54、56、58におけるセグメントに合致する負の
デルタ・ストリーム54、56、58におけるセグメン
トを示す。
【0044】すべてのフレームを読み取ったことの確認 トランザクション・エレメント24、26、28がファ
イル終了(EOF)フレームに達する時までに、更新デー
タストリーム52は完成する(ステップ106)。しか
し、1つまたは複数のデルタ・ストリーム30、32、
34の最終フレームが読み取られていないことがある。
すべての負のデルタ・ストリーム54、56、58が完
了したことを確認するため、図8のデルタ完了ルーチン
が起動される。EOFフレームは、先行トランザクショ
ン・エレメント56、58のデルタ・ストリーム32、
34における最後のバイトを参照するSMPを含む。先
行ストリーム遅れカウント(PSLC)が、EOFフレー
ムのSMPとEOFフレームをロードするトランザクシ
ョン・エレメント24、26、28のPSPの間の差と
して計算される(ステップ222)。先行ストリーム40
は、デルタ・ストリーム32、34、36において読み
出すべきものとして残されているバイト数であるPSL
Cを使用して図5の先行ストリーム前進ルーチンを呼び
出すことによって進められる(ステップ224)。先行ス
トリーム40におけるEOFフレームに出会うと、デル
タ完了ルーチンのインスタンスが追加実行され、それに
よって、すべてのデルタ・ストリームのすべてのフレー
ムが読み取られたことを保証する(ステップ232)波及
効果が起きる。
【0045】実例 図9に示される例によって、複数の順次デルタ・ストリ
ーム24、26、28をオリジナル・データストリーム
36とマージする本発明の方法および装置20が一層理
解されるであろう。図9は、"THIS_IS_A_TEST_PAGE."と
いう単純なテキスト・ファイル238に対する3つのリ
ビジョン240、242、244を示している。3つの
リビジョン240、242、244に対応し、米国特許
出願第08/039,702号に記載されている方法を適用するこ
とによって3つのデルタ・ストリームが作成される。
データ・フレームは、追加されたデータ(すなわち調整
項)を含む。合致フレームは、ソース合致位置(以前のフ
ァイル・インデックス)、および先行ファイルのセグメ
ントと合致する更新ファイルのセグメントの開始(更新
ファイルオフセット)ならびに終了バイトを含む。
【0046】3つのデルタ・ストリーム、オリジナルの
テキスト・ファイル238、およびそれらをマージする
上記装置20および方法を使用して、図9の最終更新フ
ァイル244を構築することができる。マージのプロセ
スは、トランザクション連鎖38が構築され、すべての
大域変数およびトランザクション文脈変数が初期化され
ることから始まる。デルタ・ストリーム0、1および2
として表されている図9の3つのリビジョン240、2
42、244は、図1のトランザクション・エレメント
0、1および2に対応する。
【0047】使用者プロセス22は、トランザクション
連鎖38が供給することができる限りの数のデータ・バ
イトを要求し(ステップ102)、末尾トランザクション
・エレメント24(TE2)におけるその検索102を始
動する。TE2の現在時フレームが未定義であるので、
対応するデルタ・ストリーム30の最初のフレーム25
8がTE2の現在時フレームとしてロードされる(ステ
ップ120)。フレーム258をロードする際に、反転
合致フレームが、TE2の負のデルタ・ストリーム54
に記録される(ステップ178)。ロードされた合致フレ
ーム258のソース合致位置(SMP)がゼロであるの
で、先行ストリーム前進は起きない。合致フレーム25
8が10バイトを含むので、10バイトをTE1へ転送
すべき検索要求102が出される。TE1がその最初の
フレーム252をロードし(ステップ120)、その反転
合致フレームをその対応する負のデルタ・ストリーム5
6に記録する(ステップ178)。ここでも、新しいフレ
ームのSMPはゼロであり、先行ストリーム前進は起き
ない。TE1の新たにロードされたフレーム252は5
バイトの合致フレームであるので、検索要求102は、
TE0へ渡される前に、(5データ・バイトに)再び修正
される(ステップ128)。最後に、TE0が、10バイ
トの合致フレームである最初のデルタ・フレーム246
をロードする(ステップ120)。反転合致フレームがT
E0の負のデルタ・ストリーム58に記録されるが(ス
テップ178)、先行ストリーム前進は起きない。TE
0の現在時フレーム長(10バイト)が要求されたデータ
・バイト数より大きいので、TE0は、検索要求102
を修正しない。しかし、TE0は供給すべきデータを持
たないので、5という数をトランザクション連鎖38を
通して戻すことによって、5データ・バイトを求める修
正検索要求102を使用者プロセス22へ返す(ステッ
プ144)。5という数が各トランザクション・エレメ
ント26、24へ返される時(ステップ144、15
8)、各トランザクション・エレメント26、24の先
行ストリーム位置(PSP)が5だけ増分される(ステッ
プ156)。その未充足検索要求102を受け取ると、
使用者プロセス22は、オリジナルのテキスト・ファイ
ル238の最初の5データ・バイト(すなわちTHIS_)を
更新テキスト・ファイル52へ転送する(ステップ11
2)。
【0048】ここで別の検索要求102が使用者プロセ
ス22によって起動される。TE2の現在時フレームが
5個の未使用バイトを持つ合致フレーム258であるの
で、検索要求102は修正され(ステップ102)一緒に
渡される(ステップ146)。その現在時合致フレーム2
52の5バイトを費消したTE1は、そのデルタ・スト
リーム32の第2のデルタ・フレーム254をロードさ
せる(ステップ120)。第2のフレーム254はデータ
・フレームであり、検索要求102には5データ・バイ
ト(すなわちCOULD)が与えられる(ステップ134、13
6)。データがトランザクション連鎖38を通して返さ
れると、TE2のPSPが5から10へ増加される。
【0049】使用者プロセス22の第3の要求102の
間、TE2は新しいデルタ・フレームをロードしなけれ
ばならない。新しいフレーム260がデータ・フレーム
であるので、その内容全体(すなわち_B)が使用者プロセ
ス22へ返される(ステップ134)。ここで、更新テキ
スト・ファイル52は"THIS_COULD_B"となる。
【0050】使用者プロセス22の次の要求102によ
って、TE2はそのデルタ・ストリーム30の第3のフ
レーム262をロードする。フレーム262が合致フレ
ームであるので、フレーム262のSMPが、TE2の
PSPと比較され、TE2に先行するストリーム32が
5バイト(すなわち15−10=5)進められる必要が
あると判断される(ステップ172)。5バイトを求める
第2の検索要求196がTE2に先行するストリーム4
0において始められる。TE1の現在時データ・フレー
ム254が第2の検索196で要求された5バイト全体
を供給することができ、TE2のPSPの必要な前進を
満たすことができるので、第2の検索要求196は終了
する(ステップ190)。TE1によって返された5バイ
ト(すなわちN'T_B)がTE2の負のデルタ・ストリーム
54に書き込まれる(ステップ204)。そのPSPを1
5へ進めた後、TE2はその新しくロードされた合致フ
レーム262の反転フレームをその負のデルタ・ストリ
ーム54に記録し(ステップ178)、使用者プロセスの
要求バイト数を(その現在時合致フレーム長である)15
へ減少させ、検索要求102をTE1へ渡す(ステップ
146)。TE1は、その現在時データ・フレーム25
4から4データ・バイト(すなわちE_A_)を供給すること
ができる。データが使用者プロセス22へ返されると
(ステップ136)、TE2のPSPが19へ増加される
(ステップ156)。
【0051】次の使用者プロセス22の要求102がT
E2を通して渡され(ステップ146)、11へ減少され
る(ステップ128)。今やTE1は新しいデルタ・フレ
ームをロードしなければならない(120)。その次の使
用可能フレームが合致フレーム256であるので、新し
いフレーム256のSMPがそのPSPより大きい(1
0−5=5)と判断され、先行ストリームは5バイトだ
け進められなければならない(ステップ174)。TE0
がその合致フレーム246の5バイトを残しているの
で、オリジナルのテキスト・ファイルの次の5バイト
(すなわちIS_A_)が、TE1の負のデルタ・ストリーム
56へ転送されなければならない(ステップ194)。ト
ランザクション連鎖38を通してデータを戻す際に、T
E0のPSPは10に増加され、TE1のPSPもまた
10へ増加される(ステップ156)。TE1の新しい合
致フレームの反転フレーム256がその負のデルタ・ス
トリーム56に記録される(ステップ178)。TE1の
新しくロードされた合致フレーム256が11バイトよ
り長いので、使用者プロセス22の検索要求102は未
修正のままTE0へ渡される(ステップ146)。そのデ
ルタ・ストリーム34の次のフレーム248をロードす
る(ステップ120)ようにTE0は要求される。フレー
ム248は8バイト・データ・フレームであるので、検
索要求102は修正され(ステップ128)、8データ・
バイト(すなわちRADICAL_)がトランザクション連鎖38
を通して返される(ステップ136)。TE1のPSPが
18に増加され(ステップ156)、TE2のPSPが2
7に増加される(ステップ156)。使用者プロセス22
によって作成されつつある更新テキスト・ファイル52
は、今や、"THIS_COULD_BE_A_RADICAL_"である。
【0052】TE2に渡される時、使用者プロセスの要
求102は3データ・バイトを要求するように減少され
る(ステップ128)。3データ・バイトを求める要求1
02は無修正でTE1を通過する(ステップ146)。T
E0へ到達すると、TE0がそのデルタ・ストリーム3
4の最後のフレームをロードする(ステップ120)の
で、検索要求102は保留される。ロードされた合致フ
レーム250のSMPがTE0のPSPに等しい(10
=10)ので、先行ストリーム前進は起きない。しか
し、反転合致フレームがTE0の負のデルタ・ストリー
ム58に記録される(ステップ178)。3データ・バイ
トを求める要求102が充足されないまま使用者プロセ
ス22へ戻される(ステップ144)。戻され次第、TE
1のPSPは21へ、TE2のPSPは30へ増加され
る。オリジナルのテキスト・ファイル238の次の3バ
イト(すなわちTES)が、更新テキスト・ファイル52へ
転送される(ステップ112)。
【0053】使用者プロセス22の次の要求102は、
TE2の新しくロードされたデータ・フレーム264の
2バイト(すなわちT.)によって充足される(ステップ1
34、136)。使用者プロセス22の最終的要求10
2は充足されないまま戻され、TE2がそのデルタ・ス
トリーム30のEOFに達したことを認識した時(ステ
ップ122)その要求はゼロにされる。このようにし
て、使用者プロセスは、"THIS_COULD_BE_A_RADICAL_TES
T."という更新テキスト・ファイル244の構築を完了
する。
【0054】TE2がそのデルタ・ストリーム30のE
OFに達した(ステップ122)ことを認識する時、他の
トランザクション・エレメント26、28がそれら自身
のデルタ・ストリーム32、34の読み取りを完了し
(ステップ224)、それらの負のデルタ・ストリーム5
6、58の構築を完了する(ステップ232)という波及
効果が起きる。このプロセスにおいて、オリジナルのテ
キスト・ファイル238の最後の7文字(すなわちT_PAG
E.)がTE2の負のデルタ・ストリーム54にデータ・
フレームとして書き込まれる。
【0055】上記の例が3つのデルタ・ストリーム3
0、32、34をオリジナルのデータストリーム36と
マージさせる要求を起動させたが、上記方法および装置
が単一ないし複数のデルタ・ストリームを1つのオリジ
ナル・データストリームと容易にマージすることができ
る点は理解されるべきであろう。マージされるストリー
ムの数は、所与のCPUの能力によってのみ制限され
る。上記のマージ・プロセスを逆進させ、更新テキスト
・ファイル244および負のデルタ・ストリーム54、
56、58のみを使用して図9のオリジナル・テキスト
・ファイル238を再構築する必要がある場合、本発明
のコンピュータ装置20は、図10のトランザクション
連鎖38を構築することができる。負のデルタ・ストリ
ーム54、56、58はトランザクション・エレメント
24、26、28に逆順に連結されること、および負の
デルタ・ストリーム54、56、58の反転ストリーム
は作成されない(実際には負のデルタ・ストリーム書き
込みルーチンが無効な装置に連結される)ことに注意す
る必要がある。図2ないし図8の手順を用いて、オリジ
ナルのテキスト・ファイル238を再構築することがで
きる。同様に、負のデルタ・ストリーム2および1だけ
を含むトランザクション連鎖を使用して、オリジナルの
テキスト・ファイル238に対する第1のリビジョン2
40(所望の先行データストリーム284)を再構築する
こともできる。
【0056】また、上述の方法および装置20は、若干
の小幅な修正を行えば、複数の順次デルタ・ストリーム
30、32、34をマージしてコンパイルされたデルタ
・ストリーム294を作成するため使用することができ
る。データ・バイトを更新データストリーム52へ転送
するのではなく、(データまたは合致の)デルタ・フレー
ムがコンパイルされたデルタ・ストリーム294へ転送
される(ステップ306、308)。図1の装置20に対
してなされるべき変更には、使用者プロセス22および
更新データストリーム52の接続をコンパイラ使用者プ
ロセス286およびコンパイルされたデルタ・ストリー
ム294の接続に置き換えることが含まれる。これらの
変更は、図11の装置334に示されている。その上、
オリジナルのデータストリーム48の接続が削除されて
いる。方法に関する唯一の変更は、以下に概述するよう
に、コンパイラ使用者プロセス286内の動作の流れの
変更である。
【0057】コンパイラ使用者プロセス コンパイラ使用者プロセス286(図12)は、コンパイ
ルされたデルタ・ストリーム294を構築する責任があ
り、更新データストリーム52を構築する使用者プロセ
ス22とほとんどの点で類似している。コンパイラ使用
者プロセスも、また、トランザクション・エレメント連
鎖38からのデータを繰り返して要求し(ステップ29
8)、すべての要求298は、連鎖38の末尾エレメン
ト24に対して発せられる(ステップ296)。トランザ
クション・エレメント24、26、28は、使用者プロ
セス22からの要求22に応答する場合と同様の形態で
コンパイラ使用者プロセス286に応答する。しかし、
いくつかのわずかな差が存在する。データがトランザク
ション・エレメント24、26、28によって返される
(ステップ304)場合、それはデータ・フレームとして
コンパイルされたデルタ・ストリーム294にコピーさ
れる(ステップ306)。データ・フレームのデータ・バ
イトは取り出されない。これは、コンパイルされるのは
「データストリーム」52ではなく「デルタ・ストリー
ム」294であるという事実によるためである。トラン
ザクション連鎖38が正のGOTCNT数を返せば、そ
のストリームへの連結が存在しないので、データはオリ
ジナルのデータストリーム36から転送されない。オリ
ジナルのデータストリーム36からのデータ転送の代わ
りに、オリジナルのデータストリーム36を参照する合
致フレームが、コンパイルされたデルタ・ストリーム2
94に書き込まれる(ステップ308)。コンパイラ使用
者プロセス286は、トランザクション・エレメント2
4、26、28がそれらのデルタ・ストリーム30、3
2、34の終端に達し、要求298を充足することがで
きない(ステップ302)あるいは正のGOTCNT数を
返すことができない(ステップ308)状態になるまで、
要求298を起動し続ける。
【0058】図11のコンパイラ使用者プロセスに関す
る好ましい動作の流れが図12に示されている。図12
の流れ図における変数は図2の使用者プロセスのものと
同一である。コンパイラ使用者286によって呼び出さ
れるフレーム読み取りルーチンは、前述のフレーム読み
取りルーチンと同一である。しかし、前述の場合は使用
されなかった合致フレーム構築ルーチンの結果312
が、今回は、コンパイルされたデルタ・ストリーム29
4へ合致フレームを書き込む(ステップ308)時使用さ
れる。コンパイルされたデルタ・ストリーム294にお
いては、オリジナルのデータストリーム36からコンパ
イルされたデルタ・ストリーム294へデータを転送す
る代わりに、合致フレームが構築される(ステップ14
0)。コンパイルされたデルタ・ストリーム294にお
いて合致フレームを構築する(ステップ310)ルーチン
を以下に記述する。
【0059】合致フレームの構築 コンパイラ使用者プロセス286の要求298がトラン
ザクション連鎖38に渡されるが、トランザクション・
エレメント24、26、28のいずれもコンパイラ使用
者プロセスへデータを返すことができない場合、コンパ
イルされたデルタ・ストリーム294が使用者プロセス
22にオリジナルのデータストリーム36からデータを
取り出すべき時点を指示することができるように合致フ
レームが構築されなければならない(ステップ310)。
【0060】合致フレーム構築ルーチンに関する動作の
流れが図13に示されている。図3のフレーム読み取り
ルーチンによって示されているように、合致フレーム構
築ルーチンは、トランザクション連鎖38の終わりにあ
るトランザクション・エレメント28であるTE0によ
って常に呼び出される。合致フレーム構築ルーチンは、
それを呼び出すトランザクション・エレメント28のト
ランザクション文脈変数と末尾エレメント24(図11
のTE2)のトランザクション文脈変数の組み合わせを
活用する。図13に特有の変数定義は次の通りである。
SERVCNT: 構築された合致フレームによって表現される
文字の数。CF.F2_BEG: (図11のTE2である)末尾ト
ランザクション・エレメント28に関する現在時デルタ
・フレームの開始アドレス。
【0061】実例 複数の順次デルタ・ストリーム30、32、34をマー
ジしてコンパイルされたデルタ・ストリーム294を作
成する方法および装置334に対する一層の理解が、図
14の例から得られるであろう。例は、図9の単純なテ
キスト・ファイル238に対する3つのリビジョン24
0、242、244に基づいている。米国特許出願第08
/039,702号に記載の方法の適用によって作成された3つ
のデルタ・ストリーム30、32、34が図14に再掲
されている。3つのデルタ・ストリーム30、32、3
4およびそれらをマージする上述の装置334および方
法を使用して、図14のコンパイルされたデルタ・スト
リーム294を構築することができる。このマージ・プ
ロセスもまた、トランザクション連鎖38の構築および
すべての大域および文脈変数の初期設定から始まる。デ
ルタ・ストリーム0、1、2は、図11のトランザクシ
ョン・エレメント0、1、2に対応する。
【0062】コンパイラ使用者プロセス286は、トラ
ンザクション連鎖38が供給することができる限りの数
のデータ・バイトを要求し(ステップ298)、末尾トラ
ンザクション・エレメントTE2における検索298を
起動させる(ステップ296)。デルタ・ストリーム3
0、32、34をオリジナル・データストリーム36と
マージさせる場合と同様に、コンパイラ使用者プロセス
286の最初の要求298によって、連鎖38における
各トランザクション・エレメント24、26、28がそ
の最初のデルタ・フレーム246、252、258をロ
ードし、反転合致フレーム266、270、276をそ
の対応する負のデルタ・ストリーム288、290、2
92に書き込む(ステップ178)。(5データ・バイト
を求める要求298に修正された(ステップ128))検
索要求298がTE0に到着し充足されない場合、オリ
ジナル・データストリーム36を参照する合致フレーム
318が構築され(ステップ140)、5データ・バイト
を求めるように修正された検索要求298が、トランザ
クション連鎖38を経由してコンパイラ使用者プロセス
286へ戻される。数5が各トランザクション・エレメ
ント24、26、28へ戻されると、各トランザクショ
ン・エレメント24、26、28の先行ストリーム位置
(PSP)が5だけ増加させられる(ステップ156)。そ
の未充足検索要求298を受け取り次第、コンパイラ使
用者プロセス286は構築された合致フレームをコンパ
イルされたデルタ・ストリーム294に記録する(ステ
ップ308)。
【0063】別の検索要求298がコンパイラ使用者プ
ロセス286によって起動される。TE2の現在時フレ
ームが5未使用バイトを持つ合致フレーム258である
ので、検索要求298は修正され(ステップ128)、一
緒に渡される(ステップ146)。その現在時合致フレー
ムの5バイトを費消したTE1は、そのデルタ・ストリ
ーム32の第2のデルタ・フレーム254をロードす
る。第2のフレーム254はデータ・フレームであり、
検索要求298は、5バイトのデータ(COULD)320で
充足される(ステップ134、136)。データ・バイト
の数がトランザクション連鎖38を通して戻されると、
TE2のPSPは5から10へ増やされる(ステップ1
56)。
【0064】コンパイラ使用者プロセス286の第3の
要求298の間に、TE2は新しいデルタ・フレームを
ロードしなければならない。新しいフレーム260がデ
ータ・フレームであるので、その内容全体(すなわちB_)
がコンパイラ使用者プロセス286へ返され(ステップ
134)、コンパイルされたデルタ・ストリーム294
へデータ・フレーム322として書き込まれる(ステッ
プ306)。
【0065】コンパイラ使用者プロセス298の次の要
求298によって、TE2が、そのデルタ・ストリーム
30の第3のフレーム262をロードする。フレーム2
62が合致フレームであるので、フレームのSMPがT
E2のPSPと比較され、TE2に先行するストリーム
32が5バイト(15−10=5)だけ進められる必要
があると判断される(ステップ172)。5バイトを求め
る第2の検索要求196がTE2に先行するストリーム
32、34に出される。TE1の現在時データ・フレー
ム254が第2の検索196において要求された5バイ
ト全体を供給し、TE2のPSPの必要な前進を充足す
ることができるので、第2の検索要求296は終了され
る。TE1によって返された5バイト(すなわちN'T_B)
が、データ・フレーム278の形式で負のTE2ののデ
ルタ・ストリーム288に書き込まれる(ステップ20
4)。そのPSPを15へ進めた後、TE2は、その負
のデルタ・ストリーム288にその新しくロードされた
合致フレームの反転フレーム262を記録し(ステップ
178)、コンパイラ使用者プロセスが要求したバイト
数を(その現在時合致フレーム262の長さである)15
へ減少させ(ステップ128)、その要求298をTE1
へ渡す(ステップ146)。TE1は、その現在時データ
・フレーム254から4バイトのデータ(すなわちE_A_)
を供給することができる。データ324がコンパイラ使
用者プロセス286へ返される時、TE2のPSPが1
9へ増加させられる(ステップ156)。
【0066】コンパイラ使用者プロセス286の次の要
求298は、TE2を経由して渡され、11に減じられ
る(ステップ128)。ここで、TE1は新しいデルタ・
フレームをロードしなければならない(ステップ12
0)。次に使用可能なフレームは合致フレーム256で
あるので、新しいフレーム256のSMPがそのPSP
より大きい(10−5=5)と判断され(ステップ17
2)、先行ストリーム34が5バイトだけ進められなけ
ればならない。TE0が、その合致フレーム246に5
バイト残し、データを供給することができないので、オ
リジナルのデータストリーム36の参照トークンが、T
E1の負のデルタ・ストリーム290に記録されなけれ
ばならない(ステップ212)。オリジナル・データスト
リーム36をコンパイルされたデルタ・ストリーム29
4とマージすると、TE1の負のデルタ・ストリーム2
90に記録された参照トークンに、オリジナル・データ
ストリーム36からの適切なデータが記入される(ステ
ップ214)。トランザクション連鎖38を通して参照
トークンのバイト数を返す際に、TE0のPSPが10
へ、TE1のPSPが10へ増加させられる(ステップ
156)。新しい反転合致フレーム256がその負のデ
ルタ・ストリーム290に記録される(ステップ17
8)。TE1の新しくロードされた合致フレーム256
が11バイトより長いので、コンパイラ使用者プロセス
286の検索要求298は、無修正でTE0へ渡される
(ステップ146)。TE0は、そのデルタ・ストリーム
34の次のフレーム248をロード(ステップ120)さ
せなければならない。フレーム248は、8バイトのデ
ータ・フレームである。検索要求298は修正され(ス
テップ128)、8データ・バイト(すなわちRADICAL_)
がトランザクション連鎖38を経由して返される。TE
1のPSPが18へ増加させられ、TE2のPSPが2
7へ増加させられる(ステップ156)。返された8デー
タ・バイトが、コンパイルされたデルタ・ストリーム2
94にデータ・フレーム326として記録される(ステ
ップ306)。
【0067】更に3バイトを求めるように減少された要
求298がTE2を経由して渡される(ステップ14
6)。3データ・バイトを求める要求298がTE1を
通して無修正で渡される(ステップ146)。TE0に到
達すると、TE0がそのデルタ・ストリーム34の最後
のフレーム250をロードする間、検索要求298は保
留される。ロードされた合致フレーム250のSMPが
TE0のPSPに等しい(10=10)ので、先行ストリ
ーム前進は起きない。ロードされた合致フレーム反転2
50が、負のデルタ・ストリーム292に記録される
(ステップ178)。TE0は、オリジナル・データスト
リーム36を参照する合致フレームを構築する(ステッ
プ140)。3データ・バイトを求める要求298は、
未充足のままコンパイラ使用者プロセス286へ戻され
る。それが戻されると、TE1のPSPが21へ、TE
2のPSPが30へ増加される(ステップ156)。構築
された合致フレーム328が、コンパイルされたデルタ
・ストリーム294に記録される(ステップ308)。
【0068】コンパイラ使用者プロセス286の次の要
求298は、TE2の新しくロードされたデータ・フレ
ーム264の2バイト(すなわちT.)を表しているデータ
・フレーム330で充足される。コンパイラ使用者プロ
セス286の最終要求が未充足のまま返され、TE2が
そのデルタ・ストリーム30の終端に到達したことを認
識した(ステップ122)時要求はゼロにされる。このよ
うにして、コンパイラ使用者プロセス286はそのコン
パイルされたデルタ・ストリーム294の構築を完了す
る(ステップ302)。
【0069】デルタ・ストリーム30、32、34をオ
リジナル・データストリーム36とマージさせる場合と
同様に、TE2がそのデルタ・ストリーム30の終端に
到達したことを認識する(ステップ122)時、波及効果
として、他のトランザクション・エレメント26、28
がそれら自身のデルタ・ストリーム32、34の読み取
りを終了して(ステップ224)、それらの負のデルタ・
ストリーム290、292の構築を完了する。このプロ
セスの間、オリジナル・データストリーム36の最後の
7バイトを参照するもう1つの参照トークン316が、
TE2の負のデルタ・ストリーム288に記録される
(ステップ204)。
【0070】上述のデルタ・ストリーム30、32、3
4が合致または追加のデータ・バイトを参照するデルタ
・フレームを含んでいたが、合致または追加のデータ行
を参照するデルタ・ストリームに関連した本発明の方法
および装置20、332、334を当業者が容易に使用
することができるであろう。従って、この場合合致フレ
ームの特性をバイト・アドレスでなく行アドレスに対応
するものと言い換えることができるであろう。
【0071】以上、複数の順次デルタ・ストリーム3
0、32、34をマージする方法および装置20、33
2、334を記述した。デルタ・ストリーム30、3
2、34が一連のオーバーラップしない合致フレームお
よびデータ・フレームから構成されているので、すべて
のストリーム30、32、34が順次型記憶媒体に記憶
される場合本システムは特有の成果を生む。順次記憶媒
体だけを含む環境で動作するデルタ・マージ・システム
は知られていない。
【0072】本発明の方法および装置20、332、3
34の好ましい実施形態を以上詳細に記述したが、本発
明の概念が上記実施形態に限定されることなく種々の形
態で実施することが可能である点は理解されるべきであ
る。
【0073】本発明には、例として次のような実施様態
が含まれる。 (1)プログラム可能なコンピュータにおいて、複数の
順次デルタ・ストリームをオリジナルのデータストリー
ムとマージして更新データストリームを作成する方法で
あって、上記更新データストリームに伝送すべきデータ
・バイトを上記複数の順次デルタ・ストリームの範囲内
から取り出す検索要求を起動するステップと、上記デー
タ・バイトを供給できる複数の順次デルタ・ストリーム
の最後のデルタ・ストリームによって提供されるデータ
・バイトで上記要求を充足させるステップと、上記複数
の順次デルタ・ストリームが上記検索要求を充足させる
ことができない場合、上記オリジナル・データストリー
ムによって提供されるデータ・バイトで上記検索要求を
充足させるステップと、検索要求に対する充足ができな
くなるまで、上記検索要求の起動と充足のステップを繰
り返すことによって上記更新データストリームを完成さ
せるステップと、を含む更新データストリーム作成方
法。 (2)プログラム可能なコンピュータにおいて、複数の
順次デルタ・ストリームをオリジナルのデータストリー
ムとマージして更新データストリームを作成する方法で
あって、各々が上記複数の順次デルタ・ストリームに対
応し、上記オリジナル・データストリームに対する最新
リビジョンが最大の番号を持ち、上記オリジナル・デー
タストリームに対する最初のリビジョンが最小の番号を
持ち、その間の順次リビジョンに対応して順次番号が付
せられた複数のトランザクション・エレメントからなる
連鎖を構築するステップと、上記更新データストリーム
に伝送すべきデータ・バイトを上記トランザクション連
鎖の範囲内から取り出す検索要求を起動するステップ
と、上記データ・バイトを供給できる上記トランザクシ
ョン連鎖内の最大番号を持つトランザクション・エレメ
ントによって提供されるデータ・バイトで上記要求を充
足するステップと、上記トランザクション連鎖内のトラ
ンザクション・エレメントが上記検索要求を充足させる
ことができない場合、上記オリジナル・データストリー
ムによって提供されるデータ・バイトで上記検索要求を
充足させるステップと、検索要求に対する充足ができな
くなるまで、上記検索要求の起動と充足のステップを繰
り返すことによって上記更新データストリームを完成さ
せるステップと、を含む更新データストリーム作成方
法。 (3)オリジナル・データストリームを順次記憶媒体か
ら直接読み取るステップを更に含む上記(2)に記載の
更新データストリーム作成方法。
【0074】(4)プログラム可能なコンピュータにお
いて、複数の順次デルタ・ストリームをオリジナルのデ
ータストリームとマージする際に負のデルタ・ストリー
ムを構築する方法であって、合致デルタ・フレームおよ
び/またはデータ・デルタ・フレームを含むデルタ・ス
トリームの範囲内から、更新データストリームに伝送す
べきデータ・バイトを取り出す検索要求を起動するステ
ップと、上記デルタ・ストリームの現在時デルタ・フレ
ームが空であれば、上記デルタ・ストリームの次のデル
タ・フレームを現在時デルタ・フレームとしてロードす
るステップと、上記デルタ・ストリームに関連するオリ
ジナル・データストリーム位置をモニタするステップ
と、合致フレームである次のデルタ・フレームをロード
した後、合致フレームのソース合致位置とデルタ・スト
リームのオリジナル・データストリーム位置の間の差と
して先行ストリーム遅れカウントを計算し、該先行スト
リーム遅れカウントに等しいバイト数を上記オリジナル
・データストリームから上記負のデルタ・ストリームへ
データ・フレームの形式で転送し、上記合致フレームの
反転を作成し、該反転合致フレームを上記負のデルタ・
ストリームに記録し、上記オリジナル・データストリー
ム位置を上記先行ストリーム遅れカウントに等しい数だ
け増分させるステップと、上記デルタ・ストリームがデ
ータ・フレームである現在時フレームから上記データ・
バイトを供給できる場合、上記現在時フレームから提供
されるデータ・バイトで上記検索要求を充足させるステ
ップと、上記デルタ・ストリームが上記検索要求を充足
させることができない場合、上記オリジナル・データス
トリームによって提供されるデータ・バイトで上記検索
要求を充足させるステップと、上記オリジナル・データ
ストリームによって上記更新データストリームに提供さ
れたデータ・バイトの数だけ上記オリジナル・データス
トリーム位置を増分させるステップと、検索要求に対す
る充足ができなくなるまで、上記検索要求の起動と充足
のステップを繰り返すことによって上記更新データスト
リームを完成させるステップと、を含む負のデルタ・ス
トリーム構築方法。
【0075】(5)プログラム可能なコンピュータにお
いて、複数の順次デルタ・ストリームをマージしてコン
パイルされたデルタ・ストリームを作成する方法であっ
て、上記コンパイルされたデータストリームに伝送すべ
きデータ・フレームを上記複数の順次デルタ・ストリー
ムの範囲内から取り出す検索要求を起動するステップ
と、データ・フレームを供給できる複数の順次デルタ・
ストリームの最後のデルタ・ストリームによって提供さ
れるデータ・フレームで上記要求を充足させるステップ
と、上記複数の順次デルタ・ストリームが上記検索要求
を充足させることができない場合、合致フレームを構築
して上記コンパイルされたデルタ・ストリームに転送す
るステップと、検索要求に対する充足ができなくなるま
で、上記検索要求の起動と充足、および合致フレーム構
築と転送の諸ステップを繰り返すことによって上記コン
パイルされたデルタ・ストリームを完成させるステップ
と、を含むコンパイルされたデルタ・ストリーム作成方
法。 (6)プログラム可能なコンピュータにおいて、複数の
順次デルタ・ストリームをマージしてコンパイルされた
デルタ・ストリームを作成する方法であって、各々が上
記複数の順次デルタ・ストリームに対応し、上記オリジ
ナル・データストリームに対する最新リビジョンが最大
の番号を持ち、上記オリジナル・データストリームに対
する最初のリビジョンが最小の番号を持ち、その間の順
次リビジョンに対応して順次番号が付せられた複数のト
ランザクション・エレメントからなる連鎖を構築するス
テップと、上記コンパイルされたデルタ・ストリームに
伝送すべきデータ・フレームを上記トランザクション連
鎖の範囲内から取り出す検索要求を起動するステップ
と、データ・フレームを供給できる上記トランザクショ
ン連鎖内の最大番号を持つトランザクション・エレメン
トによって提供されるデータ・フレームで上記要求を充
足させるステップと、上記トランザクション連鎖内のト
ランザクション・エレメントが上記検索要求を充足させ
ることができない場合、合致フレームを構築して上記コ
ンパイルされたデルタ・ストリームに転送するステップ
と、検索要求に対する充足ができなくなるまで、上記検
索要求の起動と充足、および合致フレーム構築と転送の
諸ステップを繰り返すことによって上記コンパイルされ
たデルタ・ストリームを完成させるステップと、を含む
コンパイルされたデルタ・ストリーム作成方法。
【0076】(7)複数の順次デルタ・ストリームをオ
リジナルのデータストリームと1回のパスでマージして
更新データストリームを作成するようにプログラムされ
たコンピュータであって、上記複数の順次デルタ・スト
リームの1つに対応するデルタ・ストリーム入力を各々
が持つ複数の順次トランザクション・エレメントからな
るトランザクション連鎖と、上記トランザクション連鎖
の末尾エレメントに接続し、上記オリジナル・データス
トリームを受け取る入力部および上記更新データストリ
ームへの出力を行う出力部を有する使用者プロセスと、
を備えたコンピュータ。 (8)複数の順次デルタ・ストリームをオリジナルのデ
ータストリームと1回のパスでマージしてコンパイルさ
れたデルタ・ストリームを作成するようにプログラムさ
れたコンピュータであって、上記複数の順次デルタ・ス
トリームの1つに対応するデルタ・ストリーム入力を各
々が持つ複数の順次トランザクション・エレメントから
なるトランザクション連鎖と、上記トランザクション連
鎖の末尾エレメントに接続し、上記コンパイルされたデ
ルタ・ストリームへの出力を行う出力部を有するコンパ
イラ使用者プロセスと、を備えたコンピュータ。
【0077】(9)複数の順次デルタ・ストリームをオ
リジナルのデータストリームと1回のパスでマージして
更新データストリームを作成するコンピュータを制御す
るようにプログラムされた物理的記憶媒体であって、上
記複数の順次デルタ・ストリームの1つに対応するデル
タ・ストリーム入力を各々が持つ複数の順次トランザク
ション・エレメントからなるトランザクション連鎖を作
成する手段と、上記オリジナル・データストリームを受
け取る入力部および上記更新データストリームへの出力
を行う出力部を有する使用者プロセスと、上記使用者プ
ロセスを上記トランザクション連鎖の末尾エレメントへ
接続させる手段と、を備えた物理的記憶媒体。 (10)複数の順次デルタ・ストリームをオリジナルの
データストリームと1回のパスでマージしてコンパイル
されたデルタ・ストリームを作成するコンピュータを制
御するようにプログラムされた物理的記憶媒体であっ
て、上記複数の順次デルタ・ストリームの1つに対応す
るデルタ・ストリーム入力を各々が持つ複数の順次トラ
ンザクション・エレメントからなるトランザクション連
鎖を作成する手段と、上記コンパイルされたデルタ・ス
トリームへの出力を行う出力部を有するコンパイラ使用
者プロセスと、上記コンパイラ使用者プロセスを上記ト
ランザクション連鎖の末尾エレメントへ接続させる手段
と、を備えた物理的記憶媒体。
【0078】
【発明の効果】本発明の方法および装置によって、(デ
ルタ・ストリームによって表現される)デルタ・ファイ
ルを、順次記憶媒体に記憶されている(オリジナルのデ
ータストリームである)ファイルとマージすることが可
能にされ、更に、1)ファイルの以前のバージョンが再
構築されるように負のデルタ・ストリームを作成するこ
とができ、2)CPUによって実行されるI/O動作数
が2*(基本ファイルのバイト数)に限定されるように単
一パスで多数のデルタ・ストリームをマージして負のデ
ルタ・ストリームを作成することができ、3)複数のデ
ルタ・ストリームをマージしてコンパイルされたデルタ
・ストリームを作成し、それによってCPUに課せられ
た管理負荷を減少させることができ、4)マルチタスク
をサポートしないコンピュータ・システム環境において
も効果的に作動させることができ、5)大規模なデータ
ストリームとデルタ・ストリームのマージを管理するこ
とが可能となる。従って、本発明の方法および装置によ
って、ユーザは、大規模なディスク記憶空間を使用する
ことなく、ドキュメントのいくつかのバージョンをロー
カルの順次記憶媒体に保持することが可能となる。
【図面の簡単な説明】
【図1】複数の順次デルタ・ストリームをオリジナルの
データストリームとマージしてデータストリーム・リビ
ジョンを作成する装置のブロック図である。
【図2】図1の装置を使用するプロセスの動作の流れ図
である。
【図3】図1のトランザクション・エレメントが対応す
るデルタ・ストリームを読み取る際の動作の流れ図であ
る。
【図4】図1のトランザクション・エレメントが対応す
るデルタ・ストリームのデルタ・フレームをロードする
際の動作の流れ図である。
【図5】図1のトランザクション・エレメントが先行デ
ルタ・ストリームのストリーム位置を前進させる際の動
作の流れ図である。
【図6】図1のトランザクション・エレメントがオリジ
ナル・データストリームから負のデルタ・ストリームへ
データを転送する際の動作の流れ図である。
【図7】図1のトランザクション・エレメントが負のデ
ルタ・ストリームに関して反転合致フレームを作成する
際の動作の流れ図である。
【図8】図1のトランザクション・エレメントがその対
応するデルタ・ストリームの最終フレームをロードする
際の動作の流れ図である。
【図9】図1の装置によって生成することができるもの
の例として、1つの単純な文に対する3つのリビジョ
ン、上記リビジョンを表す3つのデルタ・ストリームお
よび3つの負のデルタ・ストリームを示す図である。
【図10】複数の負の順次デルタ・ストリームを更新さ
れたデータストリームとマージして所望の先行データス
トリームを再構築する装置のブロック図である。
【図11】複数の順次デルタ・ストリームをマージして
コンパイルされたデルタ・ストリームを作成する装置の
ブロック図である。
【図12】図11の装置がコンパイルされたデルタ・ス
トリームを作成するプロセスの動作の流れ図である。
【図13】コンパイルされたデルタ・ストリームに合致
フレームを作成する際の図11のトランザクション・エ
レメントの動作の流れ図である。
【図14】図9の3つのデルタ・ストリームのマージの
間に図11の装置によって作成されるコンパイルされた
デルタ・ストリームおよび3つの負のデルタ・ストリー
ムを示す図である。
【符号の説明】 20、332、334 コンピュータ装置 22 使用者プロセス 24、26、28 トランザクション・エレメント 30、32、34 デルタ・ストリーム 36 オリジナル・データストリーム 38 トランザクション連鎖 40、284 先行リビジョン 42、44、46 デルタストリーム読み取り機構 48 入力 50 出力 52 更新データストリーム 54、56、58、288、290、292 負のデ
ルタ・ストリーム 60、62、64 負のデルタ・ストリーム出力機構 66、68、70 検索要求実行I/Oインターフェ
ース 246、252、258 合致フレーム 248、254、260 データ・フレーム 286 コンパイラ使用者プロセス 294 コンパイルされたデルタ・ストリーム

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】プログラム可能なコンピュータにおいて、
    複数の順次デルタ・ストリームをオリジナルのデータス
    トリームとマージして更新データストリームを作成する
    方法であって、 上記更新データストリームに伝送すべきデータ・バイト
    を上記複数の順次デルタ・ストリームの範囲内から取り
    出す検索要求を起動するステップと、 上記データ・バイトを供給できる複数の順次デルタ・ス
    トリームの最後のデルタ・ストリームによって提供され
    るデータ・バイトで上記要求を充足させるステップと、 上記複数の順次デルタ・ストリームが上記検索要求を充
    足させることができない場合、上記オリジナル・データ
    ストリームによって提供されるデータ・バイトで上記検
    索要求を充足させるステップと、 検索要求に対する充足ができなくなるまで、上記検索要
    求の起動と充足のステップを繰り返すことによって上記
    更新データストリームを完成させるステップと、 を含む更新データストリーム作成方法。
JP29991996A 1995-11-14 1996-11-12 更新データストリーム作成方法 Expired - Fee Related JP4165912B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US557,586 1995-11-14
US08/557,586 US5745906A (en) 1995-11-14 1995-11-14 Method and apparatus for merging delta streams to reconstruct a computer file

Publications (2)

Publication Number Publication Date
JPH09190369A true JPH09190369A (ja) 1997-07-22
JP4165912B2 JP4165912B2 (ja) 2008-10-15

Family

ID=24226054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29991996A Expired - Fee Related JP4165912B2 (ja) 1995-11-14 1996-11-12 更新データストリーム作成方法

Country Status (4)

Country Link
US (1) US5745906A (ja)
EP (1) EP0774720B1 (ja)
JP (1) JP4165912B2 (ja)
DE (1) DE69623237T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006332402A (ja) * 2005-05-27 2006-12-07 Hitachi High-Tech Instruments Co Ltd 電子部品装着装置
JP2007018066A (ja) * 2005-07-05 2007-01-25 Hitachi Ltd ファイル提供方法、ストレージ装置及びファイル提供プログラム
JP2012133768A (ja) * 2010-12-17 2012-07-12 Internatl Business Mach Corp <Ibm> 順次バックアップ・デバイス内に格納されたバックアップ・オブジェクトからファイルの復元セットを復元するためのコンピュータ・プログラム、システム、および方法

Families Citing this family (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
WO1998035306A1 (en) * 1997-02-11 1998-08-13 Connected Corporation File comparison for data backup and file synchronization
US5983242A (en) * 1997-07-01 1999-11-09 Microsoft Corporation Method and system for preserving document integrity
CA2295479C (en) * 1997-07-15 2003-12-30 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6272521B1 (en) * 1997-12-08 2001-08-07 Object Technology Licensing Corporation Apparatus and method for allowing object-oriented programs created with different framework versions to communicate
US6393437B1 (en) * 1998-01-27 2002-05-21 Microsoft Corporation Web developer isolation techniques
US7185332B1 (en) 1998-03-25 2007-02-27 Symantec Corporation Multi-tiered incremental software updating
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6263348B1 (en) * 1998-07-01 2001-07-17 Serena Software International, Inc. Method and apparatus for identifying the existence of differences between two files
US6604236B1 (en) 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
GB2343768A (en) * 1998-08-17 2000-05-17 Connected Place Limited Merging a sequence of delta files
US6411966B1 (en) * 1998-09-21 2002-06-25 Microsoft Corporation Method and computer readable medium for DNS dynamic update to minimize client-server and incremental zone transfer traffic
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
US6349311B1 (en) * 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6219676B1 (en) * 1999-03-29 2001-04-17 Novell, Inc. Methodology for cache coherency of web server data
JP3016230B1 (ja) * 1999-04-01 2000-03-06 株式会社ビーコンインフォメーションテクノロジー デ―タ管理方法及び装置、記録媒体
US6370541B1 (en) 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US7113939B2 (en) * 1999-09-21 2006-09-26 International Business Machines Corporation Architecture to enable search gateways as part of federated search
US6792416B2 (en) 1999-09-21 2004-09-14 International Business Machines Corporation Managing results of federated searches across heterogeneous datastores with a federated result set cursor object
US6466933B1 (en) 1999-09-21 2002-10-15 International Business Machines Corporation Delayed delivery of query results or other data from a federated server to a federated client until such information is needed
US7197491B1 (en) 1999-09-21 2007-03-27 International Business Machines Corporation Architecture and implementation of a dynamic RMI server configuration hierarchy to support federated search and update across heterogeneous datastores
US7917628B2 (en) * 1999-12-02 2011-03-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US9191443B2 (en) * 1999-12-02 2015-11-17 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7120692B2 (en) 1999-12-02 2006-10-10 Senvid, Inc. Access and control system for network-enabled devices
US7587467B2 (en) * 1999-12-02 2009-09-08 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
AU2056401A (en) 1999-12-02 2001-06-12 Senvid, Inc. Method, system and service model for remote recording of television programs
US7934251B2 (en) 1999-12-02 2011-04-26 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US8688797B2 (en) * 1999-12-02 2014-04-01 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US8793374B2 (en) * 1999-12-02 2014-07-29 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7035878B1 (en) 2000-01-25 2006-04-25 Fusionone, Inc. Base rolling engine for data transfer and synchronization system
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US8156074B1 (en) 2000-01-26 2012-04-10 Synchronoss Technologies, Inc. Data transfer and synchronization system
US6694336B1 (en) 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US7505762B2 (en) 2004-02-27 2009-03-17 Fusionone, Inc. Wireless telephone data backup system
US8620286B2 (en) 2004-02-27 2013-12-31 Synchronoss Technologies, Inc. Method and system for promoting and transferring licensed content and applications
US7028251B2 (en) * 2000-03-02 2006-04-11 Iora, Ltd. System and method for reducing the size of data difference representations
AU2001250053A1 (en) * 2000-03-22 2001-10-03 Interwoven, Inc. Method and apparatus for automatically deploying data in a computer network
US6944651B2 (en) * 2000-05-19 2005-09-13 Fusionone, Inc. Single click synchronization of data from a public information store to a private information store
US6981252B1 (en) 2000-07-14 2005-12-27 Symantec Corporation Method and apparatus for automatically uninstalling software on a network
US8073954B1 (en) 2000-07-19 2011-12-06 Synchronoss Technologies, Inc. Method and apparatus for a secure remote access system
US7895334B1 (en) 2000-07-19 2011-02-22 Fusionone, Inc. Remote access communication architecture apparatus and method
US6925476B1 (en) 2000-08-17 2005-08-02 Fusionone, Inc. Updating application data including adding first change log to aggreagate change log comprising summary of changes
US7587446B1 (en) 2000-11-10 2009-09-08 Fusionone, Inc. Acquisition and synchronization of digital media to a personal information space
US7818435B1 (en) 2000-12-14 2010-10-19 Fusionone, Inc. Reverse proxy mechanism for retrieving electronic content associated with a local network
AU2002240526A1 (en) 2001-02-26 2002-09-12 Eprivacy Group, Inc. System and method for controlling distribution of network communications
US7647411B1 (en) 2001-02-26 2010-01-12 Symantec Corporation System and method for controlling distribution of network communications
US8615566B1 (en) 2001-03-23 2013-12-24 Synchronoss Technologies, Inc. Apparatus and method for operational support of remote network systems
US6928458B2 (en) * 2001-06-27 2005-08-09 Microsoft Corporation System and method for translating synchronization information between two networks based on different synchronization protocols
US20030033303A1 (en) * 2001-08-07 2003-02-13 Brian Collins System and method for restricting access to secured data
US20040205587A1 (en) * 2001-08-07 2004-10-14 Draper Stephen P.W. System and method for enumerating arbitrary hyperlinked structures in which links may be dynamically calculable
US20040073581A1 (en) * 2002-06-27 2004-04-15 Mcvoy Lawrence W. Version controlled associative array
US7925753B2 (en) 2002-08-30 2011-04-12 Panasonic Corporation Stream data processing apparatus
US20040073649A1 (en) * 2002-08-30 2004-04-15 Satoshi Inami Stream data processing apparatus
US20040177343A1 (en) * 2002-11-04 2004-09-09 Mcvoy Lawrence W. Method and apparatus for understanding and resolving conflicts in a merge
US7373519B1 (en) 2003-04-09 2008-05-13 Symantec Corporation Distinguishing legitimate modifications from malicious modifications during executable computer file modification analysis
US7143115B2 (en) * 2003-04-15 2006-11-28 Pocket Soft, Inc. Method and apparatus for finding differences between two computer files efficiently in linear time and for using these differences to update computer files
US8645471B2 (en) 2003-07-21 2014-02-04 Synchronoss Technologies, Inc. Device message management system
US7725760B2 (en) 2003-09-23 2010-05-25 Symantec Operating Corporation Data storage system
US7296008B2 (en) * 2004-08-24 2007-11-13 Symantec Operating Corporation Generation and use of a time map for accessing a prior image of a storage device
US7991748B2 (en) * 2003-09-23 2011-08-02 Symantec Corporation Virtual data store creation and use
US7730222B2 (en) * 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7904428B2 (en) 2003-09-23 2011-03-08 Symantec Corporation Methods and apparatus for recording write requests directed to a data store
US7409587B2 (en) * 2004-08-24 2008-08-05 Symantec Operating Corporation Recovering from storage transaction failures using checkpoints
US7239581B2 (en) * 2004-08-24 2007-07-03 Symantec Operating Corporation Systems and methods for synchronizing the internal clocks of a plurality of processor modules
US7631120B2 (en) * 2004-08-24 2009-12-08 Symantec Operating Corporation Methods and apparatus for optimally selecting a storage buffer for the storage of data
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7577807B2 (en) 2003-09-23 2009-08-18 Symantec Operating Corporation Methods and devices for restoring a portion of a data store
US7577806B2 (en) 2003-09-23 2009-08-18 Symantec Operating Corporation Systems and methods for time dependent data storage and recovery
US7287133B2 (en) * 2004-08-24 2007-10-23 Symantec Operating Corporation Systems and methods for providing a modification history for a location within a data store
US7472254B2 (en) * 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
US7634509B2 (en) 2003-11-07 2009-12-15 Fusionone, Inc. Personal information space management system and method
EP1751745B1 (en) * 2003-11-14 2019-07-10 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7574458B2 (en) * 2003-12-12 2009-08-11 Lenovo (Singapore) Pte Ltd. Computer backups using un-used disk space
US7499913B2 (en) * 2004-01-26 2009-03-03 International Business Machines Corporation Method for handling anchor text
US7293005B2 (en) * 2004-01-26 2007-11-06 International Business Machines Corporation Pipelined architecture for global analysis and index building
US7424467B2 (en) 2004-01-26 2008-09-09 International Business Machines Corporation Architecture for an indexer with fixed width sort and variable width sort
US8296304B2 (en) * 2004-01-26 2012-10-23 International Business Machines Corporation Method, system, and program for handling redirects in a search engine
US7467378B1 (en) 2004-02-09 2008-12-16 Symantec Corporation System state rollback after modification failure
US7079051B2 (en) * 2004-03-18 2006-07-18 James Andrew Storer In-place differential compression
US9542076B1 (en) 2004-05-12 2017-01-10 Synchronoss Technologies, Inc. System for and method of updating a personal profile
JP2008500750A (ja) 2004-05-12 2008-01-10 フュージョンワン インコーポレイテッド 高度な連絡先識別システム
US20060026567A1 (en) * 2004-07-27 2006-02-02 Mcvoy Lawrence W Distribution of data/metadata in a version control system
US7461064B2 (en) 2004-09-24 2008-12-02 International Buiness Machines Corporation Method for searching documents for ranges of numeric values
US7814367B1 (en) 2004-11-12 2010-10-12 Double-Take Software Canada, Inc. Method and system for time addressable storage
US20060106889A1 (en) * 2004-11-12 2006-05-18 Mannby Claes-Fredrik U Method, system, and program for managing revisions to a file
US20070056043A1 (en) * 2005-05-19 2007-03-08 Richard Onyon Remote cell phone auto destruct
US8417693B2 (en) * 2005-07-14 2013-04-09 International Business Machines Corporation Enforcing native access control to indexed documents
US7536583B2 (en) * 2005-10-14 2009-05-19 Symantec Operating Corporation Technique for timeline compression in a data store
US7761766B2 (en) * 2005-11-15 2010-07-20 I365 Inc. Methods and apparatus for modifying a backup data stream including logical partitions of data blocks to be provided to a fixed position delta reduction backup application
US20070168975A1 (en) * 2005-12-13 2007-07-19 Thomas Kessler Debugger and test tool
US7689593B2 (en) * 2005-12-30 2010-03-30 Sap Ag Systems and methods for accessing a shared space in a provider-tenant environment
US7917607B2 (en) * 2005-12-30 2011-03-29 Sap Ag Software management systems and methods, including use of such systems and methods in a provider-tenant environment
US7676509B2 (en) * 2006-02-01 2010-03-09 I365 Inc. Methods and apparatus for modifying a backup data stream including a set of validation bytes for each data block to be provided to a fixed position delta reduction backup application
US7818740B2 (en) * 2006-05-05 2010-10-19 Microsoft Corporation Techniques to perform gradual upgrades
US8055096B2 (en) 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files
ATE477535T1 (de) * 2006-06-26 2010-08-15 Research In Motion Ltd Verfahren und system zur erzeugung einer umgekehrten binärkorrektur
US7779401B2 (en) * 2006-06-26 2010-08-17 Research In Motion Limited Method and system for generating a reverse binary patch for undoing a software update
US8069321B2 (en) * 2006-11-13 2011-11-29 I365 Inc. Secondary pools
US7933869B2 (en) * 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
US20080162587A1 (en) * 2006-12-29 2008-07-03 Ulrich Auer Server synchronization for maintenance activities
US8069184B2 (en) * 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US20080275923A1 (en) * 2007-05-02 2008-11-06 International Business Machines Corporation Method for the expungement of backup versions of files on server targets that are configured to be updated sequentially
US8181111B1 (en) 2007-12-31 2012-05-15 Synchronoss Technologies, Inc. System and method for providing social context to digital activity
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US8255006B1 (en) 2009-11-10 2012-08-28 Fusionone, Inc. Event dependent notification system and method
US8868848B2 (en) * 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US8473700B2 (en) 2010-03-29 2013-06-25 International Business Machines Corporation Providing versioning in a storage device
US8943428B2 (en) 2010-11-01 2015-01-27 Synchronoss Technologies, Inc. System for and method of field mapping
US9965520B2 (en) 2011-06-17 2018-05-08 Microsoft Corporation Efficient logical merging over physically divergent streams
US8589363B2 (en) 2011-07-19 2013-11-19 Exagrid Systems, Inc. Systems and methods for managing delta version chains
US10498356B2 (en) * 2011-09-13 2019-12-03 Exagrid Systems, Inc. Systems and methods for version chain clustering
US11336295B2 (en) 2011-09-13 2022-05-17 Exagrid Systems, Inc. Systems and methods for version chain clustering
US10114831B2 (en) 2012-08-16 2018-10-30 Exagrid Systems, Inc. Delta version clustering and re-anchoring
US9195727B2 (en) 2013-01-30 2015-11-24 Hewlett-Packard Development Company, L.P. Delta partitions for backup and restore
US10263783B2 (en) * 2013-08-23 2019-04-16 Nec Corporation Method and system for authenticating a data stream
WO2015062624A1 (en) * 2013-10-28 2015-05-07 Longsand Limited Instant streaming of the latest version of a file
US10387374B2 (en) 2015-02-27 2019-08-20 Exagrid Systems, Inc. Scalable grid deduplication
US10073855B2 (en) 2015-05-21 2018-09-11 Exagrid Systems, Inc. Dynamic and optimized management of grid system resources
US10303656B2 (en) 2015-08-13 2019-05-28 Exagrid Systems, Inc. Parallelizing and deduplicating backup data
US11150997B2 (en) 2015-08-19 2021-10-19 Exagrid Systems, Inc. Adaptive bandwidth management of a replication process
GB201807877D0 (en) * 2018-05-15 2018-06-27 Palantir Technologies Inc Data storage system and method

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3380281D1 (en) * 1982-12-03 1989-08-31 Ibm Updating data processing files
US4641274A (en) * 1982-12-03 1987-02-03 International Business Machines Corporation Method for communicating changes made to text form a text processor to a remote host
US4807182A (en) * 1986-03-12 1989-02-21 Advanced Software, Inc. Apparatus and method for comparing data groups
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US4912637A (en) * 1988-04-26 1990-03-27 Tandem Computers Incorporated Version management tool
US5218605A (en) * 1990-01-31 1993-06-08 Hewlett-Packard Company Software modules for testing computer hardware and software
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
US5131012A (en) * 1990-09-18 1992-07-14 At&T Bell Laboratories Synchronization for cylic redundancy check based, broadband communications network
US5317729A (en) * 1990-10-24 1994-05-31 International Business Machines Corporation Method for the storage of multi-versioned data with retrieval based on searched query
JPH04181423A (ja) * 1990-11-16 1992-06-29 Fujitsu Ltd バージョン管理方式
US5278979A (en) * 1990-12-20 1994-01-11 International Business Machines Corp. Version management system using pointers shared by a plurality of versions for indicating active lines of a version
US5317731A (en) * 1991-02-25 1994-05-31 International Business Machines Corporation Intelligent page store for concurrent and consistent access to a database by a transaction processor and a query processor
US5347653A (en) * 1991-06-28 1994-09-13 Digital Equipment Corporation System for reconstructing prior versions of indexes using records indicating changes between successive versions of the indexes
EP0541281B1 (en) * 1991-11-04 1998-04-29 Commvault Systems, Inc. Incremental-computer-file backup using signatures
JPH05197734A (ja) * 1992-01-17 1993-08-06 Mitsui Eng & Shipbuild Co Ltd データ処理システム
US5446884A (en) * 1992-02-13 1995-08-29 International Business Machines Corporation Database recovery apparatus and method
US5592661A (en) * 1992-07-16 1997-01-07 International Business Machines Corporation Detection of independent changes via change identifiers in a versioned database management system
US5581755A (en) * 1995-01-31 1996-12-03 Unisys Corporation Method for maintaining a history of system data and processes for an enterprise

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006332402A (ja) * 2005-05-27 2006-12-07 Hitachi High-Tech Instruments Co Ltd 電子部品装着装置
JP4722559B2 (ja) * 2005-05-27 2011-07-13 株式会社日立ハイテクインスツルメンツ 電子部品装着装置
JP2007018066A (ja) * 2005-07-05 2007-01-25 Hitachi Ltd ファイル提供方法、ストレージ装置及びファイル提供プログラム
JP2012133768A (ja) * 2010-12-17 2012-07-12 Internatl Business Mach Corp <Ibm> 順次バックアップ・デバイス内に格納されたバックアップ・オブジェクトからファイルの復元セットを復元するためのコンピュータ・プログラム、システム、および方法

Also Published As

Publication number Publication date
US5745906A (en) 1998-04-28
DE69623237T2 (de) 2002-12-19
EP0774720A3 (en) 1998-03-04
JP4165912B2 (ja) 2008-10-15
EP0774720B1 (en) 2002-08-28
EP0774720A2 (en) 1997-05-21
DE69623237D1 (de) 2002-10-02

Similar Documents

Publication Publication Date Title
JP4165912B2 (ja) 更新データストリーム作成方法
US5680621A (en) System and method for domained incremental changes storage and retrieval
US5729743A (en) Computer apparatus and method for merging system deltas
US6807605B2 (en) Managing a data storage array, a data storage system, and a raid controller
JP3138171B2 (ja) システム機能をダウンロードする方法
JP3005645B2 (ja) 消去不可能な記憶媒体上にファイルを読出しかつ書込む方法
US5768582A (en) Computer program product for domained incremental changes storage and retrieval
US6779045B2 (en) System and apparatus for increasing the number of operations per transmission for a media management system
JP2001510598A (ja) コンピュータ・ファイルにアクセスするためのデバイス駆動装置
EP0237637B1 (en) A method for the relocation of linked control blocks
JP2010182331A (ja) マルチプロセッサ・メモリ整合性の効率のよいエミュレーションのための方法
CN103870536A (zh) 用于内存数据库处理的系统和方法
US10445185B1 (en) Version mapped incremental backups
JPH0721034A (ja) 文字列複写処理方法
CN102326151B (zh) 存储系统
US9767216B2 (en) Method and system for capturing and applying changes to a data structure
JPS5837743A (ja) プログラム参照方法
US5978810A (en) Data management system and method for storing a long record in a set of shorter keyed records
Miller et al. File structures with Ada
Byrne File Handling
Fong LTSS compendium: an introduction to the CDC 7600 and the Livermore Timesharing System
Böszörményi et al. Persistent data structures
Yehudai et al. On tuning recursive procedures
Vitter Computational complexity of an optical disk interface
JPS62297948A (ja) デ−タベ−スの障害回復方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070828

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080201

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080602

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080729

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110808

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110808

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120808

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130808

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees