JP2006146907A - 電子ファイルシステムにおけるリストおよびその他の項目の管理 - Google Patents
電子ファイルシステムにおけるリストおよびその他の項目の管理 Download PDFInfo
- Publication number
- JP2006146907A JP2006146907A JP2005324932A JP2005324932A JP2006146907A JP 2006146907 A JP2006146907 A JP 2006146907A JP 2005324932 A JP2005324932 A JP 2005324932A JP 2005324932 A JP2005324932 A JP 2005324932A JP 2006146907 A JP2006146907 A JP 2006146907A
- Authority
- JP
- Japan
- Prior art keywords
- list
- item
- store
- items
- computer
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
【課題】電子ファイルシステムにおけるリストおよびその他の項目の管理を実現すること。
【解決手段】項目が非巡回有向グラフ(DAG)に従って編成されることを可能にする電子ファイルシステム編成構造が提供される。項目は木構造の場合と同様に階層的に編成され得るが、項目は複数の直接の親も持つことができる。電子ファイルシステムは、さらに、複数の異なるストアにアクセスすることができる。項目が操作され、複数のストアにまたがって再編成される際にそれらを管理する、本発明による技法のいくつかは、ユーザの意図によりぴったりと一致し、かつ/またはユーザの観点からの予測可能な結果を持ち得る。その際、1つの編成に対して実行されるアクションは、予期しない、または意図しないやり方で他の組織に影響を及ぼすことはない。
【選択図】図18
【解決手段】項目が非巡回有向グラフ(DAG)に従って編成されることを可能にする電子ファイルシステム編成構造が提供される。項目は木構造の場合と同様に階層的に編成され得るが、項目は複数の直接の親も持つことができる。電子ファイルシステムは、さらに、複数の異なるストアにアクセスすることができる。項目が操作され、複数のストアにまたがって再編成される際にそれらを管理する、本発明による技法のいくつかは、ユーザの意図によりぴったりと一致し、かつ/またはユーザの観点からの予測可能な結果を持ち得る。その際、1つの編成に対して実行されるアクションは、予期しない、または意図しないやり方で他の組織に影響を及ぼすことはない。
【選択図】図18
Description
本発明の諸態様は、一般に、項目の1つまたは複数のストアにアクセスできる非巡回有向グラフアーキテクチャを課す電子ファイルシステムなどの電子ファイルシステムにおいて項目を管理することを対象とする。
現代の電子ファイルシステムは、通常、階層木構造としてファイルを格納する。木(tree)の各ノードは、1つまたは複数のファイルを含むフォルダとみなされる。通常、そのような電子ファイルシステムでは、ある項目の場所は、そのファイルシステムで定義される編成によって制限される。例えば、多くのファイルシステムにおいて、各ファイルは、1つ(ただ1つ)のフォルダに位置する。言い換えると、各ファイルはただ1つの直接の親を持つ。数年前はこれで問題がなかったが、この木構造は非常に制限されたものになりつつある。従来の階層木構造は柔軟性がない。木においては、ファイル存続期間およびファイル編成が融合される。すなわち、ファイルは、それが他のファイルまたはフォルダとの関連で編成された場所を持つ間だけ存在し得る。また、ファイルは複数の編成内に配置され得ない。これは、例えば、ユーザが複数のフォルダで1つのファイルを見たい場合、そのユーザはそのファイルの複数のコピーを作成しなければならないことを意味する。これは、ユーザにとって退屈なもので、誤りをおかしやすいと同時に、記憶スペースを無駄にするものである。
ユーザがファイルへのアクセスを共用すると共に、そのアクセスを制御することをより容易にできるようにする新しい電子ファイルシステム編成構造を開発することが求められている。この編成構造と共に、その編成構造において項目を管理する際の新しい課題も生じる。
本発明の態様は、項目が非巡回有向グラフ(DAG)に従って編成されることを可能にする電子ファイルシステム編成構造を提供することを対象とする。これは、項目が木構造の場合と同様に階層的に編成され得ると同時に、複数の直接の親も持ち得ることを意味する。DAG編成構造は、複数の親を許容するが、子項目が、その項目の直接または間接の親である項目の親となることは許容しない。言い換えると、DAGは、項目内に、および項目から複数の分岐を提供するが、巡回分岐は提供しない。この編成構造は、複数ユーザのファイル共用およびアクセス制御を適正に処理するのに必要とされる柔軟性を提供する。
本発明の別の態様は、電子ファイルシステムに複数の異なるストアへのアクセスを提供することを対象とする。ストアは内的に一貫性のあるデータ表現である。ストアは、複数の物理記憶装置(ハードドライブなど)にまたがることができるが、ファイルシステムによって概念的に1つの記憶ユニットであるとみなされる。ストアは、ストア内の項目およびストア内の保持リンクに関して一定の保証を行い得るが、別のストアの項目および保持リンクに関しては保証し得ない。さらに、項目の存続期間およびリンクの一貫性の規則は同じストア内では適用し得るが、必ずしも異なるストアにまたがって適用し得るとは限らない。いくつかの実施形態では、項目は、その項目自体と同じストアにある1つまたは複数の親だけを持ち得る。言い換えると、親と子の間の保持リンクは複数のストアにまたがらない。
本発明のさらに別の態様は、項目が異なるストアにまたがって操作され、再編成される際にどのように管理されるかを扱う。これらの態様は、例えば、すべてが、同じ第1のストアにある複数の直接の親を持つ項目に、その項目が第2の異なるストアに移動され、またはコピーされた場合に何が起こり得るかを扱う。そのような操作を管理する複数のやり方があると考えられるが、いくつかのやり方は、ユーザの意図によりぴったり一致し、かつ/またはよりユーザの観点から予測可能な結果を持ち得る。
本発明の上記その他の態様は、以下の例示的実施形態の詳細な説明を考察すれば明らかになるであろう。
前述の本発明の要約、ならびに以下の例示的実施形態の詳細な説明は、特許請求される本発明に関する限定としてではなく例として含まれる添付の図面と併せて読めば、よりよく理解される。
・例示的コンピューティング環境
本発明の諸態様は、図1に例として示すコンピュータ100などのコンピューティングデバイスに関連して使用され得る。コンピュータ100の構成要素には、それだけに限らないが、処理装置120、システムメモリ130、およびシステムメモリ130を含む様々なシステム構成要素を処理装置120に結合するシステムバス121が含まれ得る。システムバス121は、様々なバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バス、および/またはローカルバスを含む数種類のバス構造のいずれを含むこともできる。
本発明の諸態様は、図1に例として示すコンピュータ100などのコンピューティングデバイスに関連して使用され得る。コンピュータ100の構成要素には、それだけに限らないが、処理装置120、システムメモリ130、およびシステムメモリ130を含む様々なシステム構成要素を処理装置120に結合するシステムバス121が含まれ得る。システムバス121は、様々なバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バス、および/またはローカルバスを含む数種類のバス構造のいずれを含むこともできる。
システムメモリ130は、読出し専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132などの揮発性および/または不揮発性メモリの形態でコンピュータ記憶媒体を含む。基本入出力システム(BIOS)133は、始動時などに、コンピュータ100内の諸要素間での情報転送を支援する基本ルーチンを含み、通常、ROM131に格納される。RAM132は、通常、処理装置120から直ちにアクセス可能であり、かつ/または処理装置120によって現在操作されているデータおよび/またはプログラムモジュールを含む。コンピュータ100は、オペレーティングシステム134、1つまたは複数のアプリケーションプログラム135、その他のプログラムモジュール136、および/またはプログラムデータ137も格納し、かつ/または実行することができる。コンピュータ100は、さらに、他の取り外し可能/取り外し不能の、揮発性/不揮発性コンピュータ記憶媒体も含み得る。例にすぎないが、図1に、取り外し不能の、不揮発性磁気媒体との間で読取りおよび/または書込みを行うハードディスクドライブ141、取り外し可能の、不揮発性磁気ディスク152との間で読取りおよび/または書込みを行う磁気ディスクドライブ151、およびCD−ROMや他の光媒体などの取り外し可能の、不揮発性光ディスク156との間で読取りおよび/または書込みを行う光ディスクドライブ155を示す。使用され得る他の取り外し可能/取り外し不能の、揮発性/不揮発性のコンピュータ記憶媒体としては、例えば、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが挙げられる。ハードディスクドライブ141は、通常、インターフェース140などの取り外し不能メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などの取り外し可能メモリインターフェースによってシステムバス121に接続される。図示の例では、例えばハードディスクドライブ141が1つのストアとみなされ、光ディスクドライブ155で使用されるCD−ROMは別の異なるストアとみなされ得る。また、ハードディスクドライブ141内の区画(partition)は、それぞれ、異なるストアとみなされ得る。別の例として、複数の内蔵ハードドライブは、要求に応じて、単一の大容量ストアとしても、複数のより小さい独立ストアとしても構成され得る。
様々なコンピュータ記憶媒体のいずれかに格納されるデータは、様々な形式で格納され得る。例えば、データは、ファイルや他の項目など別個の部分として格納され得る。電子ファイルシステムは、オペレーティングシステム134の一部とし、かつ/またはそれと別個のものとすることができ、コンピュータ記憶媒体上の項目およびその他のデータの格納、検索、および/またはサーチを管理する役割を果たすことができる。電子ファイルシステムは、ソフトウェア、ハードウェア、および/またはファームウェアとして実施され得る。
ユーザは、キーボード162および/または、一般にマウス、トラックボール、タッチパッドと呼ばれるポインティングデバイス161などの入力装置を介してコンピュータ100にコマンドおよび情報を入力することができる。他の入力装置(図示せず)には、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、しばしば、システムバス121に結合されたユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)といった他のインターフェースおよびバス構造を介しても接続され得る。モニタ191または他の種類の表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。コンピュータ100は、さらに、スピーカ197やプリンタ196など他の周辺出力装置を含むこともでき、それらは、出力周辺装置インターフェース195を介してシステムバス121に接続され得る。
いくつかの態様では、手描き入力をディジタルで取り込むために、ペンディジタイザ165および付随するペンまたはスタイラス166が提供される。ペンディジタイザ165とユーザ入力インターフェース160の間の直接接続が示されているが、実際には、ペンディジタイザ165は、有線または無線で、パラレルポートまたは別のインターフェースを介して、あるいは任意の技術によりシステムバス121を介して、処理装置120に直接結合され得る。ペン166は、さらに、例えば加速度計や磁力計を含む電子インクのストロークを判定する他の感知システムも備え得る。
コンピュータ100は、リモートコンピュータ180など、1つまたは複数のリモートコンピュータへの論理接続を使用したネットワークで接続された環境で動作し得る。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他一般のネットワークノードとすることができ、図1には例としてメモリ記憶装置181だけを示してあるが、通常は、コンピュータ100に関連して前述した要素の多くまたはすべてを含む。図1に示すコンピュータ100外部の例示的論理接続には、ローカルエリアネットワーク(LAN)171および/または広域ネットワーク(WAN)173が含まれ得るが、他のネットワークも含まれ得る。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットではよくあるものである。コンピュータ100は、さらに、有線および/または無線機能も含み得る。例えば、ネットワークインターフェース170は、ブルートゥース、SWLan、および/またはIEEE802.11互換とすることができる。これらのプロトコルと共に、またはこれらのプロトコルの代わりに、他の無線通信プロトコルも使用され得る。
LANネットワーク環境で使用されるとき、コンピュータ100はネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用されるとき、コンピュータ100は、モデム172、またはインターネットなどのWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続され得る。
リモートコンピュータ180、および/またはコンピュータ100の外部の他の任意の装置の記憶媒体も、コンピュータ100の外部の論理接続を介して電子ファイルシステムによってアクセス可能な追加のストアとみなされ得る。例えば、リモートコンピュータ180のハードディスクドライブを、コンピュータ100上で実行される電子ファイルシステムからアクセス可能とすることができ、そのハードディスクドライブ(および/または、別のハードディスクドライブなど、そのハードディスクドライブと一緒にグループ化される他の記憶装置)自体もストアとみなされ得る。あるいは、コンピュータ100の外部の1つまたは複数のサーバを、インターネットを介して電子ファイルシステムからアクセス可能とすることもでき、それらのサーバまたはサーバグループのそれぞれがストアとみなされ得る。
・電子ファイルシステムによって課される例示的編成構造
コンピュータ100上で実行される電子ファイルシステムは、項目の非巡回有向グラフ(DAG)編成を課すことができる。項目は、ほとんどあらゆる種類の個別データ構造、例えば、ファイル(例えば、ワードプロセッシングファイル、写真、MP3楽曲など)、連絡先、カレンダ項目、電子メール項目とすることができ、あるいは他の項目のリストとすることさえできる。リスト型項目は、順序付きリストであっても、そうでなくてもよく、従来のフォルダに類似したものとみなされ得る。リストがある項目をリストしているとき、そのリストは親とみなされ、その項目は子とみなされる。子項目は、本明細書では、その項目がその親リストによってリストされている場合、親リストの下に直接編成されているという。これは、親リストと子項目の間の保持関係とも呼ばれる。子項目は、本明細書では、以下で図7に関して説明するように、その項目が親リストの下に直接または間接に編成されている場合、親リストの下に編成されているという。完全なDAGアーキテクチャのさらなる柔軟性を提供するために、複数の異なるリストがすべて同じ項目をリストし、またはそれらの下に同じ項目を持つことができる。言い換えると、項目は、複数の親を持つことができる。
コンピュータ100上で実行される電子ファイルシステムは、項目の非巡回有向グラフ(DAG)編成を課すことができる。項目は、ほとんどあらゆる種類の個別データ構造、例えば、ファイル(例えば、ワードプロセッシングファイル、写真、MP3楽曲など)、連絡先、カレンダ項目、電子メール項目とすることができ、あるいは他の項目のリストとすることさえできる。リスト型項目は、順序付きリストであっても、そうでなくてもよく、従来のフォルダに類似したものとみなされ得る。リストがある項目をリストしているとき、そのリストは親とみなされ、その項目は子とみなされる。子項目は、本明細書では、その項目がその親リストによってリストされている場合、親リストの下に直接編成されているという。これは、親リストと子項目の間の保持関係とも呼ばれる。子項目は、本明細書では、以下で図7に関して説明するように、その項目が親リストの下に直接または間接に編成されている場合、親リストの下に編成されているという。完全なDAGアーキテクチャのさらなる柔軟性を提供するために、複数の異なるリストがすべて同じ項目をリストし、またはそれらの下に同じ項目を持つことができる。言い換えると、項目は、複数の親を持つことができる。
例えば、図7の上部分は、電子ファイルシステムによって課され、管理され得る例示的編成構造を機能的に示すものである。この例では、リストL2は、リストL1、リストL4、およびリストL6のそれぞれの下に直接編成されている。ゆえに、リストL2は3つの直接の親を持つ。リストL3は、リストL2の下に直接編成されているが、これは、間接的にではあるが、リストL1、L6、およびL4の下にも編成されている。非リスト項目I1(例えば、ファイル、または純粋にファイルストリームなしで組織的に配置されているファイルの裏付けがない項目(non−file−backed item)など)は、リストL3の下に直接編成され、間接的にリストL1、L2、L4およびL6の下に編成されている。非リスト項目I2は、L2の下に直接編成され、間接的にリストL1、L4、およびL6の下に編成されている。
また、電子ファイルシステムは、1つまたは複数の項目が配置され得る1つまたは複数の作業領域も提供し得る。作業領域中の項目は、その作業領域中の別の項目に関連する編成を持つことも持たないこともある。例えば、項目L1、L2、L3、L4、L6、I1およびI2は、機能的に、これらの項目を囲むボックスであると考えられる同じ作業領域に含まれ得る。これらの項目のそれぞれは、その他の項目に関連する編成を持つ。しかしながら、リストL5(図7)は、やはり同じ作業領域にあるが、その他の項目に関連する編成を持たない場合がある。この例では、リストL5は、リストL1およびL4と同様に、「変動」項目とみなされる。ある項目が変動項目であるのは、その項目が他のどんな項目によっても保持されず、またはその下に編成されていない場合である。項目が作業領域に配置されている場合、その項目は、それがその作業領域から除去されるまでその作業領域に留まる。ゆえに、作業領域内で、項目は、それらの項目がその作業領域内にあるかどうかに影響を及ぼさずに要求どおりに編成されることも(されないことも)ある。
上述の編成構造が課された後、項目を管理する際に考慮される必要のあるいくつかの問題がある。例えば、項目は、複数の親リストの下に直接または間接に編成され得るため、その項目を移動し、またはコピーすることを求める要求を処理する多くのやり方がある。おそらく、ユーザは、その項目を、必ずしもその他の親リストからではなく、親リストの1つから移動しようとする。実際、ユーザが、その他の親リストが存在すること、またはそれらが移動されようとする項目を保持していることを知らないことさえも考えられる。以下で、これらの状況、および例示的解決法の例を説明する。
・非リスト項目操作
以下は、項目に対して実行され得る操作の例である。操作は、同じストア内、または複数のストアにまたがって(「ストア横断(cross store)」)行われ得る。例えば、項目は、同じストア内の1つの場所から別の場所に移動され得る。あるいは、項目は、第1のストアから第2のストアにストア横断で移動され得る。以下で両方の例について説明する。
以下は、項目に対して実行され得る操作の例である。操作は、同じストア内、または複数のストアにまたがって(「ストア横断(cross store)」)行われ得る。例えば、項目は、同じストア内の1つの場所から別の場所に移動され得る。あるいは、項目は、第1のストアから第2のストアにストア横断で移動され得る。以下で両方の例について説明する。
・項目を移動する−ストア横断
この説明のために、保持リンクは異なるストアにまたがることができないと想定する。したがって、1項目が、同時に、第1のストアの2つの異なる編成に(例えば2つの異なるリストに)あり、ユーザが、これらの編成の1つを第2のストアに移動しようとする場合、これが処理され得るいくつかの可能なやり方がある。図2を参照すると、例えば、項目I1は、同時に、ストア1のリストL1とリストL2の両方によって保持されている。ストア2はリストL3を持つ。ユーザが項目I1をリストL2からリストL3に移動することを要求していると仮定する。第1の可能性は、項目I1がリストL3に含まれるように項目I1をストア2に移動することである。しかしながら、これは、項目I1がリストL1およびL2にもあるという編成を切断することになる。これは、特に、ユーザがリストL1とやりとりしておらず、実際には、リストL1に気が付いてさえいない可能性があることを考えると、ユーザの意図でない可能性が高い。第2の可能性は、項目I1がリストL3にコピーされるものである。しかしながら、これもやはり、今度は、項目I1の2つのコピーが存在する点で全体編成を変更することになる。ユーザは、おそらくストア1の記憶スペースを空けるために、(項目I1をコピーするのでなく)項目I1を移動しようとしたのであるから、これは、予期しない結果である可能性が高いはずである。第3の可能性は、移動操作に失敗することであるが、大部分のユーザはこの結果に苛立つはずである。第4の可能性は、項目I1を代用項目(proxy item)に変換することである。代用項目とは、指し示される項目(すなわち項目I1)のメタデータを持つショートカット、またはポインタである。この第4の可能性は、この編成を可能な限り移動前の編成に似せることを可能にする。
この説明のために、保持リンクは異なるストアにまたがることができないと想定する。したがって、1項目が、同時に、第1のストアの2つの異なる編成に(例えば2つの異なるリストに)あり、ユーザが、これらの編成の1つを第2のストアに移動しようとする場合、これが処理され得るいくつかの可能なやり方がある。図2を参照すると、例えば、項目I1は、同時に、ストア1のリストL1とリストL2の両方によって保持されている。ストア2はリストL3を持つ。ユーザが項目I1をリストL2からリストL3に移動することを要求していると仮定する。第1の可能性は、項目I1がリストL3に含まれるように項目I1をストア2に移動することである。しかしながら、これは、項目I1がリストL1およびL2にもあるという編成を切断することになる。これは、特に、ユーザがリストL1とやりとりしておらず、実際には、リストL1に気が付いてさえいない可能性があることを考えると、ユーザの意図でない可能性が高い。第2の可能性は、項目I1がリストL3にコピーされるものである。しかしながら、これもやはり、今度は、項目I1の2つのコピーが存在する点で全体編成を変更することになる。ユーザは、おそらくストア1の記憶スペースを空けるために、(項目I1をコピーするのでなく)項目I1を移動しようとしたのであるから、これは、予期しない結果である可能性が高いはずである。第3の可能性は、移動操作に失敗することであるが、大部分のユーザはこの結果に苛立つはずである。第4の可能性は、項目I1を代用項目(proxy item)に変換することである。代用項目とは、指し示される項目(すなわち項目I1)のメタデータを持つショートカット、またはポインタである。この第4の可能性は、この編成を可能な限り移動前の編成に似せることを可能にする。
この第4の可能性を示す図2を参照すると、ステップは丸数字を使って示されており(必ずしも時系列順とは限らない)、項目は四角で示されている。この例に示すように、ステップ1およびステップ2で、項目I1はストア1のリストL2からストア2のリストL3に移動される。具体的には、ステップ1で項目I1が、項目I1の複製を表すブロブ(blob)B1としてシリアル化される。次いで、ステップ2で、ブロブB1が項目I1(2)に逆シリアル化され、それがリストL3によって保持されることになる。この新しい項目を、本明細書では、項目I1(2)と呼ぶが、項目I1(2)は元の項目I1の複製である。この命名方式は、説明のためのものにすぎず、単に、項目I1(2)が技術的に元の項目I1ではないことを区別するためにだけに使用される。言い換えると、項目I1(2)は、他の点では項目I1の複製であるにもかかわらず、元の項目I1が利用したものとは異なるストレージ(例えば、異なるハードドライブ上の異なるセクタなど)を利用することができる。複製は、項目(項目I1など)をブロブとしてシリアル化し、次いで、そのブロブを別の項目(項目I1(2)など)に逆シリアル化することにより行われ得る。
さらに図2を参照すると、ステップ3で、項目I1は、項目I1(2)へのショートカット(または代用項目)に変換される。代用項目は、ターゲット項目を指し示し、またはそこにリンクするが、そのターゲット項目の実体的データ全部を含むとは限らない項目である。この理由は、ユーザは、項目I1をリストL2から移動しようとしたにすぎず、必ずしも、やはり項目I1に対する保持リンクを持つリストL1からも移動しようとしたとは限らないことにある。ゆえに、項目I1(2)への代用項目を作成することにより、リストL1の下を見るユーザには、依然として、項目I1が、あたかも移動操作によって何の影響も受けなかったかのように見えることになる。これは、リストL1に関係なく、項目I1がリストL2から移動されるよう要求したにすぎないユーザの意図である可能性が高い。また、項目I1を代用項目に置き換え、または変換することにより、ストア1中の記憶スペースも解放され、このことは、項目I1をストア1からストア2に移動するユーザの意図と一致する。元の項目I1が、それがリストL1によっても保持されるためにストア1に維持された場合、この移動操作は、ストア1の記憶スペースを解放しなかったはずである。そのような結果はおそらくユーザの意図に反する可能性が高い。最後に、ステップ4で、おそらくユーザによって意図されたとおり、項目I1がリストL2によってリストされなくなるように、リストL2と項目I1の関係が切断される。ゆえに、その結果、項目I1は、リストL1(代用項目としてではあるが)およびリストL3によってリストされるが、リストL2によってはリストされなくなる。
・項目を戻す−ストア横断
前述したように、ユーザの期待および要望に一致する可能性の最も高い予測可能なやり方で項目を操作することが望ましいと考えられる。これは可逆性を含む。言い換えると、1つまたは複数の項目の編成を変更する第1のアクションを開始し、次いで、その逆のアクションを実行することにより、編成が、第1のアクションの前に存在した元の編成に戻ることが望ましいと考えられる。可逆性は必須ではないが、本明細書で説明する操作の一部または全部について望ましいと考えられる。例えば、ユーザが、図2に関して前述したように、最初に項目I1をリストL3に移動し、次いで、ユーザが、直ちに、項目I1(2)をリストL2に移動する移動操作を実行した場合、結果として生じる編成は、好ましくは、最初の移動操作の前の元の編成と同一になるはずである。これを図3に例示する。まず、ステップ1で、項目I1(2)が、項目I1(2)の複製を表すブロブB1にシリアル化される。ステップ2で、移動される項目をターゲットとする代用項目が存在するかどうか判定される。この例では、そのような代用項目が存在する。すなわち、代用項目I1は、移動される項目である項目I1(2)をターゲットとしている。そのような代用項目が存在する場合、その代用項目が除去され、項目I1(2)の複製で置き換えられ、それがこの例では項目I1と呼ばれることになる。そのような代用項目が存在しない場合、代用項目は、除去される必要も置き換えられる必要もない。いずれにしても、項目I1(2)は項目I1として複製され、これは、ブロブB1を項目I1に逆シリアル化することによって達成される。ステップ3で、項目I1(2)は単一のリスト、リストL3によってのみリストされているため、項目I1への代用項目がリストL3の下に作成される必要はない。ゆえに、項目I1(2)はリストL3から除去され(ストア2から抹消され)る。ゆえに、項目I1(2)をリストL2に戻した結果は、図2に示す元の編成と同一の編成になる。
前述したように、ユーザの期待および要望に一致する可能性の最も高い予測可能なやり方で項目を操作することが望ましいと考えられる。これは可逆性を含む。言い換えると、1つまたは複数の項目の編成を変更する第1のアクションを開始し、次いで、その逆のアクションを実行することにより、編成が、第1のアクションの前に存在した元の編成に戻ることが望ましいと考えられる。可逆性は必須ではないが、本明細書で説明する操作の一部または全部について望ましいと考えられる。例えば、ユーザが、図2に関して前述したように、最初に項目I1をリストL3に移動し、次いで、ユーザが、直ちに、項目I1(2)をリストL2に移動する移動操作を実行した場合、結果として生じる編成は、好ましくは、最初の移動操作の前の元の編成と同一になるはずである。これを図3に例示する。まず、ステップ1で、項目I1(2)が、項目I1(2)の複製を表すブロブB1にシリアル化される。ステップ2で、移動される項目をターゲットとする代用項目が存在するかどうか判定される。この例では、そのような代用項目が存在する。すなわち、代用項目I1は、移動される項目である項目I1(2)をターゲットとしている。そのような代用項目が存在する場合、その代用項目が除去され、項目I1(2)の複製で置き換えられ、それがこの例では項目I1と呼ばれることになる。そのような代用項目が存在しない場合、代用項目は、除去される必要も置き換えられる必要もない。いずれにしても、項目I1(2)は項目I1として複製され、これは、ブロブB1を項目I1に逆シリアル化することによって達成される。ステップ3で、項目I1(2)は単一のリスト、リストL3によってのみリストされているため、項目I1への代用項目がリストL3の下に作成される必要はない。ゆえに、項目I1(2)はリストL3から除去され(ストア2から抹消され)る。ゆえに、項目I1(2)をリストL2に戻した結果は、図2に示す元の編成と同一の編成になる。
・項目を付加する
図4に、項目I1がリストL1に付加される例示的実施形態を示す。この例では、項目I1とリストL1の間で、リストL1が項目I1を保持するような保持関係が作成される単一のステップが実行され得る。当然ながら、複数のリストが同じ項目を保持することができるので、項目I1は、他のリストにも付加され得る。また、項目I1は、それがどのリストにも保持されないようにも付加され得る。そのような項目を本明細書では変動項目と呼ぶ。
図4に、項目I1がリストL1に付加される例示的実施形態を示す。この例では、項目I1とリストL1の間で、リストL1が項目I1を保持するような保持関係が作成される単一のステップが実行され得る。当然ながら、複数のリストが同じ項目を保持することができるので、項目I1は、他のリストにも付加され得る。また、項目I1は、それがどのリストにも保持されないようにも付加され得る。そのような項目を本明細書では変動項目と呼ぶ。
・項目を除去する
図5に、項目I1がリストL1から除去される(が再利用も抹消もされない)例示的実施形態を示す。この場合、項目I1はリストL1によってのみ保持され、そのため、リストL1から除去された後、項目I1は、どのリストによっても保持されない変動項目になる。項目I1が別のリスト、例えば、リストL2などによっても保持されていた場合、項目I1をリストL1から除去した結果は、項目I1がリストL2によってのみ保持されることになったはずである。
図5に、項目I1がリストL1から除去される(が再利用も抹消もされない)例示的実施形態を示す。この場合、項目I1はリストL1によってのみ保持され、そのため、リストL1から除去された後、項目I1は、どのリストによっても保持されない変動項目になる。項目I1が別のリスト、例えば、リストL2などによっても保持されていた場合、項目I1をリストL1から除去した結果は、項目I1がリストL2によってのみ保持されることになったはずである。
・項目をコピーする−同じストア内
図6に示す例示的実施形態を参照すると、ユーザは、項目I1が同じストア内でコピーされるよう要求することができる。1つの可能性は、変動項目であるコピー(項目I1(2))が作成されることである。別の可能性は、項目I1(2)が元の項目I1と同じように編成されることである。後者の場合、ステップ1で、項目I1が、項目I1の複製を表すブロブB1にシリアル化される。次いで、ステップ2で、ブロブB1が項目I1(2)として逆シリアル化され、リストL1と項目I1(2)の間の保持関係が、元の項目I1とリストL1の間の保持関係と一致するように確立される。項目I1がリストL1と別のリストL2の両方によって保持されていた場合でも、項目I1(2)は、依然として、リストL1によってのみ保持されるようにコピーされたはずである。これは、この例では、元の項目I1がリストL1のコンテキストでコピーされ、L1のコンテキストでのアクションは、リストL2など他の独立のリストには影響しないはずだからである。
図6に示す例示的実施形態を参照すると、ユーザは、項目I1が同じストア内でコピーされるよう要求することができる。1つの可能性は、変動項目であるコピー(項目I1(2))が作成されることである。別の可能性は、項目I1(2)が元の項目I1と同じように編成されることである。後者の場合、ステップ1で、項目I1が、項目I1の複製を表すブロブB1にシリアル化される。次いで、ステップ2で、ブロブB1が項目I1(2)として逆シリアル化され、リストL1と項目I1(2)の間の保持関係が、元の項目I1とリストL1の間の保持関係と一致するように確立される。項目I1がリストL1と別のリストL2の両方によって保持されていた場合でも、項目I1(2)は、依然として、リストL1によってのみ保持されるようにコピーされたはずである。これは、この例では、元の項目I1がリストL1のコンテキストでコピーされ、L1のコンテキストでのアクションは、リストL2など他の独立のリストには影響しないはずだからである。
・リスト操作
前述の例は、非リスト項目に対する操作を扱っている。再利用や抹消など、非リスト項目に対する他の操作も実行され得る。また、操作は、リストに対しても実行され得る。これらをリスト操作と呼ぶ。例えば、リストは、コピーされ、移動され、付加され、削除され、再利用され、または抹消され得る。次に、リスト操作の例について説明する。リスト操作がどのように実行されるかに応じて、リスト操作は、選択された(1つまたは複数の)リストを取り巻く編成のより少ない部分に影響することも、より多くの部分に影響することもある。
前述の例は、非リスト項目に対する操作を扱っている。再利用や抹消など、非リスト項目に対する他の操作も実行され得る。また、操作は、リストに対しても実行され得る。これらをリスト操作と呼ぶ。例えば、リストは、コピーされ、移動され、付加され、削除され、再利用され、または抹消され得る。次に、リスト操作の例について説明する。リスト操作がどのように実行されるかに応じて、リスト操作は、選択された(1つまたは複数の)リストを取り巻く編成のより少ない部分に影響することも、より多くの部分に影響することもある。
・リストを移動する−同じストア内
例えば、リストは、同じストア内で移動され得る。これは、図7に示すように、かなり単純な操作とすることができる。ここで、ユーザは、リストL2をリストL1からリストL5に移動することを要求している。ゆえに、リストL2へのリストL1からの保持リンクが切断され、リストL5からリストL2への新しい保持リンクが設けられる。この移動は同じストア内で行われるため、リストL3、L4、L6や、項目I1、I2など、残りの編成に影響を及ぼすには及ばない。
例えば、リストは、同じストア内で移動され得る。これは、図7に示すように、かなり単純な操作とすることができる。ここで、ユーザは、リストL2をリストL1からリストL5に移動することを要求している。ゆえに、リストL2へのリストL1からの保持リンクが切断され、リストL5からリストL2への新しい保持リンクが設けられる。この移動は同じストア内で行われるため、リストL3、L4、L6や、項目I1、I2など、残りの編成に影響を及ぼすには及ばない。
・リストを浅く移動する−ストア横断
本明細書では、3つのバージョンのストア間リスト移動操作を説明する。第1のバージョンでは、図8に示すような「浅い」移動が実行され得る。浅い移動は、リストを浅く移動する操作ともいい、選択されたリストだけを移動する。ゆえに、例えば、ユーザが、リストL2を、ストア1のリストL1からストア2のリストL5に浅く移動することを要求する場合、以下のステップが実行され得る。ステップ1で、リストL2がシリアル化され、リストL2の複製を表すブロブB1が作成される。ステップ2で、ブロブB1が、リストL2のコピーであるリストL2(2)に逆シリアル化される。ステップ3で、選択されたリストL2だけがストア2に移動するはずなので、リストL3への代用項目が作成され、その代用項目への保持リンクがリストL2(2)から作成される。同様に、ステップ4で、項目I2への代用項目が作成され、その代用項目への保持リンクがリストL2(2)から作成される。ゆえに、結果として生じる編成は、選択されたリストL2自体だけが移動されたものである。ステップ5で、元の項目L2は、別のリスト(すなわちリストL6)によって保持されているため、項目L2は断じて抹消してはならない。そうでないと、これは、明示的に変更するよう要求されたのではない編成を乱すことになる。前述のように、ユーザは、リストL2をリストL1から移動することを意図しただけで、他のどんなリストから移動することも意図していない。ゆえに、項目L2は、それが依然としてリストL6によって(同じストア内で)参照され得るように、L2(2)への代用項目と置き換えられ、またはそれに変換される。ステップ6およびステップ7で、元のリストL2は、もはや、ストア1には存在せず、代わりにストア2のリストL2(2)になっているため、リストL2とリストL3の間、およびリストL2と項目I2の間の保持リンクの必要がなくなる。ゆえに、これらの保持リンクが除去される。項目I2は他のどのリストによっても保持されていないため、項目I2は変動項目になる。これらの操作の結果、ストア2は、ストア1のリストL3および項目I2を指し示す代用項目を保持するリストL2(2)を持つ。
本明細書では、3つのバージョンのストア間リスト移動操作を説明する。第1のバージョンでは、図8に示すような「浅い」移動が実行され得る。浅い移動は、リストを浅く移動する操作ともいい、選択されたリストだけを移動する。ゆえに、例えば、ユーザが、リストL2を、ストア1のリストL1からストア2のリストL5に浅く移動することを要求する場合、以下のステップが実行され得る。ステップ1で、リストL2がシリアル化され、リストL2の複製を表すブロブB1が作成される。ステップ2で、ブロブB1が、リストL2のコピーであるリストL2(2)に逆シリアル化される。ステップ3で、選択されたリストL2だけがストア2に移動するはずなので、リストL3への代用項目が作成され、その代用項目への保持リンクがリストL2(2)から作成される。同様に、ステップ4で、項目I2への代用項目が作成され、その代用項目への保持リンクがリストL2(2)から作成される。ゆえに、結果として生じる編成は、選択されたリストL2自体だけが移動されたものである。ステップ5で、元の項目L2は、別のリスト(すなわちリストL6)によって保持されているため、項目L2は断じて抹消してはならない。そうでないと、これは、明示的に変更するよう要求されたのではない編成を乱すことになる。前述のように、ユーザは、リストL2をリストL1から移動することを意図しただけで、他のどんなリストから移動することも意図していない。ゆえに、項目L2は、それが依然としてリストL6によって(同じストア内で)参照され得るように、L2(2)への代用項目と置き換えられ、またはそれに変換される。ステップ6およびステップ7で、元のリストL2は、もはや、ストア1には存在せず、代わりにストア2のリストL2(2)になっているため、リストL2とリストL3の間、およびリストL2と項目I2の間の保持リンクの必要がなくなる。ゆえに、これらの保持リンクが除去される。項目I2は他のどのリストによっても保持されていないため、項目I2は変動項目になる。これらの操作の結果、ストア2は、ストア1のリストL3および項目I2を指し示す代用項目を保持するリストL2(2)を持つ。
・リストを浅く戻す−ストア横断
前述のように、ある操作を実行するとき、その逆の操作の結果として元の編成が生じることが望ましいと考えられる。次に、そのような、ユーザがストア2のリストL5からストア1のリストL1にリストL2(2)を移動することを要求する状況を、図9に示す。ステップ1で、リストL2(2)がシリアル化されて、リストL2(2)の複製を表すブロブB1が作成される。ステップ2で、ストア1にリストI2(2)の代用項目が存在するかどうか判定される。この場合、そのような代用項目が存在し、そのため、その代用項目がブロブB1で置き換えられ、それが逆シリアル化されてリストL2になる。言い換えると、リストL2のリモート代用項目がローカルストア1に対して参照解除される。また、ユーザによって要求されたようにリストL2がリストL1に付加される。そのような代用項目が存在しなかった場合、ブロブB1は単に逆シリアル化され、リストL2としてリストL1に付加される。ステップ3で、(ストア2の)L3への代用項目の編成に一致するように、リストL3がリストL2に付加される。ステップ4で、(やはりストア2の)項目I2への代用項目の編成に一致するように、項目I2がリストL2に付加される。これは、項目I2の代用項目にローカルストア1を参照解除させることによって行われる。ステップ5〜7で、リストL3、項目I2およびリストL2(2)への代用項目が抹消される。図9に示すように、結果として生じる編成は、図8に示す元の編成と同一である。
前述のように、ある操作を実行するとき、その逆の操作の結果として元の編成が生じることが望ましいと考えられる。次に、そのような、ユーザがストア2のリストL5からストア1のリストL1にリストL2(2)を移動することを要求する状況を、図9に示す。ステップ1で、リストL2(2)がシリアル化されて、リストL2(2)の複製を表すブロブB1が作成される。ステップ2で、ストア1にリストI2(2)の代用項目が存在するかどうか判定される。この場合、そのような代用項目が存在し、そのため、その代用項目がブロブB1で置き換えられ、それが逆シリアル化されてリストL2になる。言い換えると、リストL2のリモート代用項目がローカルストア1に対して参照解除される。また、ユーザによって要求されたようにリストL2がリストL1に付加される。そのような代用項目が存在しなかった場合、ブロブB1は単に逆シリアル化され、リストL2としてリストL1に付加される。ステップ3で、(ストア2の)L3への代用項目の編成に一致するように、リストL3がリストL2に付加される。ステップ4で、(やはりストア2の)項目I2への代用項目の編成に一致するように、項目I2がリストL2に付加される。これは、項目I2の代用項目にローカルストア1を参照解除させることによって行われる。ステップ5〜7で、リストL3、項目I2およびリストL2(2)への代用項目が抹消される。図9に示すように、結果として生じる編成は、図8に示す元の編成と同一である。
・リスト構造を移動する−ストア横断
本明細書で論じるリスト移動操作の第2のバージョンを、図10と関連して説明する。この例では、ユーザは、リストL2およびリストL2の下の対応する構造が、ストア1のリストL1からストア2のリストL5に移動されるよう要求している。ユーザは、その下でその構造が大容量の記憶スペースを必要とする1組の項目をサポートしている構造を(その構造中の非リスト項目すべてではないが)コピーすることを要求する場合がある。例えば、再生リストは、各演奏家ごとに1つずつ、各リストの下に多くの音楽ファイルを持つ複数のリストを含み得る。そのような再生リスト中のファイルは、合計で何ギガバイトもの音楽および/またはビデオデータに達すると考えられる。そのような場合、ユーザは、これらの大きなファイルを第1のストアから第2のストアに複製することによって記憶スペース(およびおそらくネットワーク帯域幅)を無駄にすることを望まず、代わりに、単に、第2のストアのコピーされた構造を使って元のストアのファイルを参照することができる。ステップ1で、リストL2が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、リストL2のコピーであり、次にリストL5によって保持されるリストL2(2)に逆シリアル化される。これは、構造移動コマンドであるため、リストL3の下の構造、または編成も移動される。これに対して、図8に関して前述した浅い移動のコマンドでは、リストL2だけが移動された。したがって、ステップ3で、リストL3が、リストL3の複製を表すブロブB2としてシリアル化され、ステップ4で、ブロブB2は、リストL3のコピーであり、次に、リストL2(2)によって保持されるリストL3(2)として逆シリアル化される。元のリストL2によって直接または間接的に保持されるいくつかの非リスト項目(I1およびI2)もあるが、これらの項目は構造的ではないため、ストア2に移動されない。代わりに、ステップ5および6で、ストア2に、ストア1に留まっている項目I1およびI2を指し示す代用項目が作成される。また、元のリストL2およびL3はもはやストア1には存在していない(次に論じるように、これらの代用項目だけが存在する)ため、ステップ7で、リストL3と項目I1の間の保持関係が除去され、ステップ9で、リストL2とリストL3の間の保持関係が除去され、ステップ10で、リストL2と項目I2の間の保持関係が除去される。項目I1およびI2は他のどのリストによっても保持されないため、項目I1およびI2は変動項目になる。また、リストL2およびL3は元々他のリスト(それぞれ、リストL1およびL4)によっても保持されていたため、これらは、リストL1およびL4によってリストされることができるという利点のために、絶対に、ストア1においてこれらへの何らかの参照を維持することなく除去されてはならない。ゆえに、ステップ8および11で、リストL2およびL3は、それぞれ、ストア1において、それぞれストア2のリストL2(2)およびL3(3)を指し示す代用項目で置き換えられる。
本明細書で論じるリスト移動操作の第2のバージョンを、図10と関連して説明する。この例では、ユーザは、リストL2およびリストL2の下の対応する構造が、ストア1のリストL1からストア2のリストL5に移動されるよう要求している。ユーザは、その下でその構造が大容量の記憶スペースを必要とする1組の項目をサポートしている構造を(その構造中の非リスト項目すべてではないが)コピーすることを要求する場合がある。例えば、再生リストは、各演奏家ごとに1つずつ、各リストの下に多くの音楽ファイルを持つ複数のリストを含み得る。そのような再生リスト中のファイルは、合計で何ギガバイトもの音楽および/またはビデオデータに達すると考えられる。そのような場合、ユーザは、これらの大きなファイルを第1のストアから第2のストアに複製することによって記憶スペース(およびおそらくネットワーク帯域幅)を無駄にすることを望まず、代わりに、単に、第2のストアのコピーされた構造を使って元のストアのファイルを参照することができる。ステップ1で、リストL2が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、リストL2のコピーであり、次にリストL5によって保持されるリストL2(2)に逆シリアル化される。これは、構造移動コマンドであるため、リストL3の下の構造、または編成も移動される。これに対して、図8に関して前述した浅い移動のコマンドでは、リストL2だけが移動された。したがって、ステップ3で、リストL3が、リストL3の複製を表すブロブB2としてシリアル化され、ステップ4で、ブロブB2は、リストL3のコピーであり、次に、リストL2(2)によって保持されるリストL3(2)として逆シリアル化される。元のリストL2によって直接または間接的に保持されるいくつかの非リスト項目(I1およびI2)もあるが、これらの項目は構造的ではないため、ストア2に移動されない。代わりに、ステップ5および6で、ストア2に、ストア1に留まっている項目I1およびI2を指し示す代用項目が作成される。また、元のリストL2およびL3はもはやストア1には存在していない(次に論じるように、これらの代用項目だけが存在する)ため、ステップ7で、リストL3と項目I1の間の保持関係が除去され、ステップ9で、リストL2とリストL3の間の保持関係が除去され、ステップ10で、リストL2と項目I2の間の保持関係が除去される。項目I1およびI2は他のどのリストによっても保持されないため、項目I1およびI2は変動項目になる。また、リストL2およびL3は元々他のリスト(それぞれ、リストL1およびL4)によっても保持されていたため、これらは、リストL1およびL4によってリストされることができるという利点のために、絶対に、ストア1においてこれらへの何らかの参照を維持することなく除去されてはならない。ゆえに、ステップ8および11で、リストL2およびL3は、それぞれ、ストア1において、それぞれストア2のリストL2(2)およびL3(3)を指し示す代用項目で置き換えられる。
・リスト構造を戻す−ストア横断
図11を参照すると、ユーザは、今度は、図10で実行されたのと反対の機能を実行することを要求している。言い換えると、ユーザは、今度は、ストア1のリストL1の下に、リストL2(2)を構造的に戻すことを要求している。ステップ1で、リストL2(2)が、リストL2(2)の複製を表すブロブB1としてシリアル化され、ステップ2で、ブロブB1はリストL2として逆シリアル化され、ストア1に、リストL2を指し示す代用項目が存在するかどうか判定される。この場合には代用項目が存在し、そのため、その代用項目がリストL2で置き換えられる。同様に、ステップ3で、リストL3(2)が、L3(2)の複製を表すブロブB2としてシリアル化され、ステップ4で、ブロブB2はリストL3として逆シリアル化され、ストア1の代用項目L3を置き換える。ステップ5および6で、リストL2と項目I2の間、およびリストL3と項目I1の間に保持リンクが確立される。システムはこれらのリンクを、リストL2(2)と項目I2の間、およびリストL3(2)と項目I1の間の既存の構造を反映するように確立する。ステップ7および9で、項目I1およびI2への代用項目が抹消される。ステップ8および10で、リストL2(2)およびL3(2)が抹消される。これらの操作の結果として、ストア2はリストL5だけを含み、残りのリストはストア1に存在することになる。図からわかるように、結果として生じる構造は、図10に示す操作の前に存在していた構造と同一である。
図11を参照すると、ユーザは、今度は、図10で実行されたのと反対の機能を実行することを要求している。言い換えると、ユーザは、今度は、ストア1のリストL1の下に、リストL2(2)を構造的に戻すことを要求している。ステップ1で、リストL2(2)が、リストL2(2)の複製を表すブロブB1としてシリアル化され、ステップ2で、ブロブB1はリストL2として逆シリアル化され、ストア1に、リストL2を指し示す代用項目が存在するかどうか判定される。この場合には代用項目が存在し、そのため、その代用項目がリストL2で置き換えられる。同様に、ステップ3で、リストL3(2)が、L3(2)の複製を表すブロブB2としてシリアル化され、ステップ4で、ブロブB2はリストL3として逆シリアル化され、ストア1の代用項目L3を置き換える。ステップ5および6で、リストL2と項目I2の間、およびリストL3と項目I1の間に保持リンクが確立される。システムはこれらのリンクを、リストL2(2)と項目I2の間、およびリストL3(2)と項目I1の間の既存の構造を反映するように確立する。ステップ7および9で、項目I1およびI2への代用項目が抹消される。ステップ8および10で、リストL2(2)およびL3(2)が抹消される。これらの操作の結果として、ストア2はリストL5だけを含み、残りのリストはストア1に存在することになる。図からわかるように、結果として生じる構造は、図10に示す操作の前に存在していた構造と同一である。
・リストを深く移動する−ストア横断
本明細書で論じるリスト移動操作の第3のバージョンを、図12と関連して説明する。この例では、ユーザは、リストL2およびリストL2の下にあるすべての対応する構造および項目が、ストア1のリストL1からストア2のリストL5に移動されるよう要求している。ステップ1で、リストL2が、リストL2の複製を表すブロブB1としてシリアル化され、ステップ2で、ブロブB1は、ストア2において、リストL2のコピーであるリストL2(2)として逆シリアル化される。また、リストL5とリストL2(2)の間に保持リンクも確立される。リストL2の下にある構造および項目のすべてがストア2に移動されることになるため、そのような残りの構造および項目に関して類似の操作が続く。ゆえに、ステップ3で、リストL3が、リスト3の複製を表すブロブB2としてシリアル化され、ステップ4でB2は、リストL3(2)として逆シリアル化される。ストア1に存在する構造を反映するように、リストL2(2)とリストL3(2)の間に保持リンクが確立される。ステップ5で、項目I2が、項目I2の複製を表すブロブB3としてシリアル化され、ステップ6でブロブB3は項目I2(2)として逆シリアル化される。ストア1に存在する構造を反映するように、リストL2(2)と項目I2(2)の間に保持リンクが確立される。ステップ7で、項目I1が、項目I1の複製を表すブロブB4としてシリアル化され、ステップ8でブロブB4は項目I1(2)として逆シリアル化される。ストア1に存在する構造を反映するように、リストL3(2)と項目I1(2)の間に保持リンクが確立される。ステップ9および10で、項目I1およびI2がストア1から抹消される。リストL2およびL3は複数のリストによって保持されているため、これらは、絶対に、ストア1から完全に除去されてはならない。言い換えると、例えば、リストL2の痕跡を完全に除去すると、リストL2がリストL6によってリストされなくなるはずであり、これは、ユーザの意図であるとは考えられない。したがって、ステップ11および12で、リストL2およびL3は、ストア1において、ストア2におけるそれぞれのターゲットリストL2(2)およびL3(2)を指し示す代用項目で置き換えられる。また、リストL2とL3の間の保持リンクが除去され、同様にリストL1とL2の間の保持リンクも除去される。これらの操作の結果、リストL2、およびリストL2によって直接または間接的に保持されている構造および項目のすべて(すなわちリストL3および項目I1およびI2)がストア1からストア2に移動されたことになる。
本明細書で論じるリスト移動操作の第3のバージョンを、図12と関連して説明する。この例では、ユーザは、リストL2およびリストL2の下にあるすべての対応する構造および項目が、ストア1のリストL1からストア2のリストL5に移動されるよう要求している。ステップ1で、リストL2が、リストL2の複製を表すブロブB1としてシリアル化され、ステップ2で、ブロブB1は、ストア2において、リストL2のコピーであるリストL2(2)として逆シリアル化される。また、リストL5とリストL2(2)の間に保持リンクも確立される。リストL2の下にある構造および項目のすべてがストア2に移動されることになるため、そのような残りの構造および項目に関して類似の操作が続く。ゆえに、ステップ3で、リストL3が、リスト3の複製を表すブロブB2としてシリアル化され、ステップ4でB2は、リストL3(2)として逆シリアル化される。ストア1に存在する構造を反映するように、リストL2(2)とリストL3(2)の間に保持リンクが確立される。ステップ5で、項目I2が、項目I2の複製を表すブロブB3としてシリアル化され、ステップ6でブロブB3は項目I2(2)として逆シリアル化される。ストア1に存在する構造を反映するように、リストL2(2)と項目I2(2)の間に保持リンクが確立される。ステップ7で、項目I1が、項目I1の複製を表すブロブB4としてシリアル化され、ステップ8でブロブB4は項目I1(2)として逆シリアル化される。ストア1に存在する構造を反映するように、リストL3(2)と項目I1(2)の間に保持リンクが確立される。ステップ9および10で、項目I1およびI2がストア1から抹消される。リストL2およびL3は複数のリストによって保持されているため、これらは、絶対に、ストア1から完全に除去されてはならない。言い換えると、例えば、リストL2の痕跡を完全に除去すると、リストL2がリストL6によってリストされなくなるはずであり、これは、ユーザの意図であるとは考えられない。したがって、ステップ11および12で、リストL2およびL3は、ストア1において、ストア2におけるそれぞれのターゲットリストL2(2)およびL3(2)を指し示す代用項目で置き換えられる。また、リストL2とL3の間の保持リンクが除去され、同様にリストL1とL2の間の保持リンクも除去される。これらの操作の結果、リストL2、およびリストL2によって直接または間接的に保持されている構造および項目のすべて(すなわちリストL3および項目I1およびI2)がストア1からストア2に移動されたことになる。
・リストを深く戻す−ストア横断
図13を参照すると、ユーザは、今度は、図12で実行されたのと反対の機能を実行することを要求している。言い換えると、ユーザは、今度は、ストア1へリストL1の下にリストL2(2)を深く戻すことを要求している。ステップ1で、リストL2(2)が、リストL2(2)の複製を表すブロブB1にシリアル化される。ステップ2で、リストL2を指し示す代用項目が、ブロブB1の逆シリアル化から生じるリストL2で置き換えられる。同様に、ステップ3で、リストL3(2)が、リストL3(2)の複製を表すブロブB2としてシリアル化され、ステップ4で、リストL3を指し示す代用項目が、ブロブB2の逆シリアル化から生じたリストL3で置き換えられる。この手順は、非リスト項目についても繰り返される。ステップ5で、項目I2(2)が、I2(2)の複製を表すブロブB3としてシリアル化され、ステップ6で、ブロブB3は、項目I2として逆シリアル化される。また、リストI2(2)と項目I2(2)の間の以前の保持関係と一致するように、リストL2と項目I2の間の保持関係も確立される。ステップ7で、項目I1(2)が、I1(2)の複製を表すブロブB4としてシリアル化され、ステップ8で、ブロブB4は、項目I1として逆シリアル化される。また、リストL3(2)と項目I1(2)の間の以前の保持関係と一致するように、リストL3と項目I1の間の保持関係も確立される。次いで、ステップ9〜12で、移動し、他のどの項目によっても保持されていないため、項目I1(2)、I2(2)、L3(2)、およびL2(2)が抹消される。これらの項目が別の項目によって保持されていた場合、それらは、抹消されるのではなく、代用項目で置き換えられたはずである。結果は、図12に従って元のリストを深く移動するコマンドが実行される前に存在した構造と同じである。
図13を参照すると、ユーザは、今度は、図12で実行されたのと反対の機能を実行することを要求している。言い換えると、ユーザは、今度は、ストア1へリストL1の下にリストL2(2)を深く戻すことを要求している。ステップ1で、リストL2(2)が、リストL2(2)の複製を表すブロブB1にシリアル化される。ステップ2で、リストL2を指し示す代用項目が、ブロブB1の逆シリアル化から生じるリストL2で置き換えられる。同様に、ステップ3で、リストL3(2)が、リストL3(2)の複製を表すブロブB2としてシリアル化され、ステップ4で、リストL3を指し示す代用項目が、ブロブB2の逆シリアル化から生じたリストL3で置き換えられる。この手順は、非リスト項目についても繰り返される。ステップ5で、項目I2(2)が、I2(2)の複製を表すブロブB3としてシリアル化され、ステップ6で、ブロブB3は、項目I2として逆シリアル化される。また、リストI2(2)と項目I2(2)の間の以前の保持関係と一致するように、リストL2と項目I2の間の保持関係も確立される。ステップ7で、項目I1(2)が、I1(2)の複製を表すブロブB4としてシリアル化され、ステップ8で、ブロブB4は、項目I1として逆シリアル化される。また、リストL3(2)と項目I1(2)の間の以前の保持関係と一致するように、リストL3と項目I1の間の保持関係も確立される。次いで、ステップ9〜12で、移動し、他のどの項目によっても保持されていないため、項目I1(2)、I2(2)、L3(2)、およびL2(2)が抹消される。これらの項目が別の項目によって保持されていた場合、それらは、抹消されるのではなく、代用項目で置き換えられたはずである。結果は、図12に従って元のリストを深く移動するコマンドが実行される前に存在した構造と同じである。
・リストを浅くコピーする−ストア横断
図14を参照すると、ユーザは、今度は、ストア1からストア2にリストL2のコピーを作成し、リストL5の下に新しくコピーされたリストを編成することを要求している。しかしながら、ユーザは、リストL2の下にあるすべてではなく、リストL2によって直接保持されている項目(リスト項目と非リスト項目の両方)だけをコピーすることを要求している。これを、リストの浅いコピーと呼ぶ。このコマンドを実行するには、ステップ1で、リストL2(コピーされるリスト)が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、それがストア1ではなくストア2に位置することを除いてはリストL2の全く同一のコピーである新しいリストL2(2)に逆シリアル化される。また、ユーザの要求に応じて、既存のリストL5とリストL2(2)の間に保持関係が作成される。ユーザが、リストL2を、ストア2の別のリストに入れずにコピーしようとした場合には、リストL2(2)はストア2において変動項目になるはずである。ステップ3で、リストL3を指し示す代用項目が作成され、リストL2(2)の下に保持される。これは、元のリストL2と元のリストL3の間の保持関係と一致するように行われる。同様に、ステップ4で、項目I2を指し示す代用項目が作成され、リストL2(2)の下に保持される。これは、元の項目I2と元のリストL2の間の保持関係と一致するように行われる。その結果、リストL2がコピーされ、リストL2の下の元の項目を指し示す代用項目が、リストL2のコピー(すなわちリストL2(2))の下に配置されることになる。このように、システムは、ユーザによってコピーするため具体的に選択された項目(すなわちリストL2)のコピーだけを行い、よって、ユーザの意図に一致する可能性の最も高いやり方で働く。
図14を参照すると、ユーザは、今度は、ストア1からストア2にリストL2のコピーを作成し、リストL5の下に新しくコピーされたリストを編成することを要求している。しかしながら、ユーザは、リストL2の下にあるすべてではなく、リストL2によって直接保持されている項目(リスト項目と非リスト項目の両方)だけをコピーすることを要求している。これを、リストの浅いコピーと呼ぶ。このコマンドを実行するには、ステップ1で、リストL2(コピーされるリスト)が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、それがストア1ではなくストア2に位置することを除いてはリストL2の全く同一のコピーである新しいリストL2(2)に逆シリアル化される。また、ユーザの要求に応じて、既存のリストL5とリストL2(2)の間に保持関係が作成される。ユーザが、リストL2を、ストア2の別のリストに入れずにコピーしようとした場合には、リストL2(2)はストア2において変動項目になるはずである。ステップ3で、リストL3を指し示す代用項目が作成され、リストL2(2)の下に保持される。これは、元のリストL2と元のリストL3の間の保持関係と一致するように行われる。同様に、ステップ4で、項目I2を指し示す代用項目が作成され、リストL2(2)の下に保持される。これは、元の項目I2と元のリストL2の間の保持関係と一致するように行われる。その結果、リストL2がコピーされ、リストL2の下の元の項目を指し示す代用項目が、リストL2のコピー(すなわちリストL2(2))の下に配置されることになる。このように、システムは、ユーザによってコピーするため具体的に選択された項目(すなわちリストL2)のコピーだけを行い、よって、ユーザの意図に一致する可能性の最も高いやり方で働く。
・リスト構造をコピーする−ストア横断
リストコピー操作の第2のバージョンを、図15と関連して説明する。この例では、ユーザは、リストL2、およびリストL2の下にある対応する構造が、そのコピーがストア2のリストL5の下に保持されるようにコピーされるよう要求している。したがって、ステップ1では、リストL2が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、リストL2(2)として逆シリアル化され、リストL5とリストL2(2)の間に保持関係が確立される。ステップ3で、リストL3が、リストL3の複製を表すブロブB2にシリアル化される。ステップ4で、ブロブB2はリストL3(2)として逆シリアル化され、リストL2とリストL3の間の保持関係と一致するように、リストL2(2)とリストL3(2)の間に保持関係が確立される。ステップ5および6で、項目I1およびI2をターゲットとする代用項目が作成され、それぞれ、項目I1およびI2と一致する保持関係に置かれる。
リストコピー操作の第2のバージョンを、図15と関連して説明する。この例では、ユーザは、リストL2、およびリストL2の下にある対応する構造が、そのコピーがストア2のリストL5の下に保持されるようにコピーされるよう要求している。したがって、ステップ1では、リストL2が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、リストL2(2)として逆シリアル化され、リストL5とリストL2(2)の間に保持関係が確立される。ステップ3で、リストL3が、リストL3の複製を表すブロブB2にシリアル化される。ステップ4で、ブロブB2はリストL3(2)として逆シリアル化され、リストL2とリストL3の間の保持関係と一致するように、リストL2(2)とリストL3(2)の間に保持関係が確立される。ステップ5および6で、項目I1およびI2をターゲットとする代用項目が作成され、それぞれ、項目I1およびI2と一致する保持関係に置かれる。
ゆえに、この操作の結果、リストL2、リストL2によって直列保持されている非リスト項目、およびリストL2の下に保持されている構造がストア2にコピーされ、リストL2の下に保持されているがリストL2の下に直接保持されていない項目については、ストア2に、ストア1の元の項目をターゲットとする代用項目が作成されることになる。
・リストを深くコピーする−ストア横断
リストコピー操作の第3のバージョンを、図16と関連して説明する。この例では、ユーザは、リストL2、およびリストL2の下にあるすべての項目を、そのコピーがストア2のリストL5の下に保持されるように深くコピーするよう要求している。この操作は、それらがリストであるか、それともリスト以外であるかに関わらず、すべての項目がコピーされることを除いて、構造的コピー操作に似ている。したがって、ステップ1で、リストL2が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、リストL2(2)として逆シリアル化され、リストL5とリストL2(2)の間に保持関係が確立される。ステップ3で、リストL3が、リストL3の複製を表すブロブB2にシリアル化される。ステップ4で、ブロブB2は、リストL3(2)として逆シリアル化され、リストL2とリストL3の間の保持関係と一致するように、リストL2(2)とリストL3(2)の間に保持関係が確立される。ステップ5および6では、代用項目を作成するのではなく、項目I1およびI2がストア2にコピーされる。ゆえに、ステップ5で、項目I2が、項目I2の複製を表すブロブB3にシリアル化される。ステップ6で、ブロブB3は、リストL2と項目I2の間の保持関係と一致するように、リストL2(2)の下に保持される項目I2(2)に逆シリアル化される。同様に、ステップ7で、項目I1が、項目I1の複製を表すブロブB4にシリアル化される。ステップ8で、ブロブB4が、リストL3と項目I1の間の保持関係と一致するようにリストL3(2)の下に保持される項目I1(2)に逆シリアル化される。ゆえに、この操作の結果、リストL2、およびリストL2の下の項目すべてがストア2にコピーされることになる。
リストコピー操作の第3のバージョンを、図16と関連して説明する。この例では、ユーザは、リストL2、およびリストL2の下にあるすべての項目を、そのコピーがストア2のリストL5の下に保持されるように深くコピーするよう要求している。この操作は、それらがリストであるか、それともリスト以外であるかに関わらず、すべての項目がコピーされることを除いて、構造的コピー操作に似ている。したがって、ステップ1で、リストL2が、リストL2の複製を表すブロブB1にシリアル化される。ステップ2で、ブロブB1は、リストL2(2)として逆シリアル化され、リストL5とリストL2(2)の間に保持関係が確立される。ステップ3で、リストL3が、リストL3の複製を表すブロブB2にシリアル化される。ステップ4で、ブロブB2は、リストL3(2)として逆シリアル化され、リストL2とリストL3の間の保持関係と一致するように、リストL2(2)とリストL3(2)の間に保持関係が確立される。ステップ5および6では、代用項目を作成するのではなく、項目I1およびI2がストア2にコピーされる。ゆえに、ステップ5で、項目I2が、項目I2の複製を表すブロブB3にシリアル化される。ステップ6で、ブロブB3は、リストL2と項目I2の間の保持関係と一致するように、リストL2(2)の下に保持される項目I2(2)に逆シリアル化される。同様に、ステップ7で、項目I1が、項目I1の複製を表すブロブB4にシリアル化される。ステップ8で、ブロブB4が、リストL3と項目I1の間の保持関係と一致するようにリストL3(2)の下に保持される項目I1(2)に逆シリアル化される。ゆえに、この操作の結果、リストL2、およびリストL2の下の項目すべてがストア2にコピーされることになる。
・抹消する
図17に、項目の抹消および項目への複数ユーザアクセスに関する考察に関連して使用される項目構造の一例を示す。複数のユーザが同じ項目にアクセスできるようにすることと、個々のユーザが、その他のユーザの同意なしにそれらの項目を抹消し、あるいは他のやり方で除去できるようにすることの間には対立的緊張関係(tension)がある。
図17に、項目の抹消および項目への複数ユーザアクセスに関する考察に関連して使用される項目構造の一例を示す。複数のユーザが同じ項目にアクセスできるようにすることと、個々のユーザが、その他のユーザの同意なしにそれらの項目を抹消し、あるいは他のやり方で除去できるようにすることの間には対立的緊張関係(tension)がある。
この図17の例示的構造では、ルート作業領域「\」は、それぞれ、ユーザ1およびユーザ2に許可されている作業領域を表す作業領域U1およびU2を直接保持している。作業領域U1は、作業領域「UDR1」および「共用(shared)」を直接保持している。作業領域U2は、作業領域「UDR2」を直接保持している。作業領域UDR1および共用は、両方とも、リストL1を直接保持している。作業領域UDR2はリストL2を直接保持している。リストL1およびL2は、両方とも、項目I1を直接保持している。
この例で、ユーザ1は、リストL1および項目I1を作成しており、L1と共用の間に保持リンクを確立することによって(すなわち、リストL1を共用作業領域に入れることによって)ユーザ2とこれら2つの項目を共用していると仮定する。さらに、ユーザ2が、その後、項目1をリストL2に付加したものとする。ゆえに、ユーザ2は、リストL1および項目I1に対する完全な権限を持つ。しかしながら、ユーザ1はリストL2に対して何の権限も持たないものとする。この場合には、ユーザ1にとって利用可能な様々な編成および存続時間操作がある。例えば、ユーザ1は、リストL1から項目I1を除去することができる。項目I1は、リストL2、ならびに作業領域UDR1および共用の両方に留まるはずである。代替として、ユーザ1は、リストL1をすべてのリストから除去することもできる。この場合には、項目I1は、なお、リストL2に留まるはずである。代替として、ユーザ1は、リストL1を、作業領域UDRまたは共用作業領域のどちらからも除去することができる。この場合には、リストL1および項目I1は、リストL1がそこから除去される作業領域では利用できなくなるはずである。しかしながら、これは、他の作業領域には影響を及ぼさないはずである。
別のオプションは、ユーザ1が、すべての作業領域からリストL1を除去できるものである。この場合には、リストL1は、そのストアから完全に抹消されるはずである。ユーザ1は項目I1での権利を放棄し、項目I1は、リストL2においてユーザ2にとってのみ利用可能になる。さらに別のオプションは、ユーザ1が、おそらくユーザ1がそれ以上項目I1を必要とせず、項目I1に何が起こるかに関心がないために、項目I1での権利を放棄するものである。したがって、今度は、項目I1は、リストL2においてユーザ2にとってのみ利用可能になる。さらに別のオプションは、ユーザ1が、項目I1を抹消できるものである。この場合には、リストL1から項目I1への保持リンクが削除される。しかしながら、リストL2から項目I1へのリンクはダングリングする(すなわち、存在するがどの項目も指し示さない)。このダングリングリンクは、そのまま留まることもでき、次回リストL2が開かれるとき、または他の任意のときに、自動的に消去することもできる。
・再利用する
項目の再利用について、5つのラベル付けした部分に分割されている図18を参照して論じる。図18の部分1に示すように、ルート作業領域「\」は、それぞれ、ユーザ1およびユーザ2に許可されている作業領域を表す作業領域U1およびU2を保持している。作業領域U1はリストL1を直接保持し、同様に、リストL1は項目I1を直接保持している。作業領域U2はリストL2を直接保持し、同様に、リストL2も項目I1を直接保持している。ゆえに、項目I1はリストL1とL2によって共用されている。
項目の再利用について、5つのラベル付けした部分に分割されている図18を参照して論じる。図18の部分1に示すように、ルート作業領域「\」は、それぞれ、ユーザ1およびユーザ2に許可されている作業領域を表す作業領域U1およびU2を保持している。作業領域U1はリストL1を直接保持し、同様に、リストL1は項目I1を直接保持している。作業領域U2はリストL2を直接保持し、同様に、リストL2も項目I1を直接保持している。ゆえに、項目I1はリストL1とL2によって共用されている。
図18の部分2に関しては、ユーザ1が項目I1を再利用しようとしていると仮定する。この場合、項目I1は、(作業領域U1から出ている破線によって示すように)ユーザ1の観点から再利用されるはずである。しかしながら、ユーザ2の観点からすると、項目I1は、依然として、リストL2に留まっているはずである。図18の部分3に関して、ユーザ1がゴミ箱を空にした場合、ユーザ1は項目I1でのすべての権利を放棄したことになる。しかしながら、やはり、ユーザ2は項目I1に対するどんな操作も要求しなかったため、項目I1はユーザ2のリストL2に留まっている。
次に、図18の部分4に関して、ユーザ2が、ユーザ1がゴミ箱を空にした後、項目I1を再利用することを要求していると仮定する。この場合、項目I1は、(作業領域U2から出ている破線によって示すように)ユーザ2の観点からすると、項目I1は、ゴミ箱の中にあるように見えるはずである。図18の部分5に関して、ユーザ2がゴミ箱を空にすると、他のどのリストも項目I1を保持していないため、項目I1は、完全に削除されたことになる。別のリストが項目I1を保持していた場合、項目I1は、依然として、その他のリストの下に保持されたままであったはずである。
・結論
このように、新規の電子ファイルシステムおよびそのようなシステムにおいて項目を管理する方法について説明した。本明細書で説明した、本発明の様々な態様による例示的実施形態が例として示されているが、本発明はこれらの実施形態だけに限定されないことは理解されよう。
このように、新規の電子ファイルシステムおよびそのようなシステムにおいて項目を管理する方法について説明した。本明細書で説明した、本発明の様々な態様による例示的実施形態が例として示されているが、本発明はこれらの実施形態だけに限定されないことは理解されよう。
120 処理装置
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 取り外し不能不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取り外し可能不揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
165 ディジタイザ
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 広域ネットワーク
180 リモートコンピュータ
190 ビデオインターフェース
191 モニタ
195 出力周辺装置インターフェース
196 プリンタ
197 スピーカ
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 取り外し不能不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取り外し可能不揮発性メモリインターフェース
160 ユーザ入力インターフェース
161 マウス
162 キーボード
165 ディジタイザ
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 広域ネットワーク
180 リモートコンピュータ
190 ビデオインターフェース
191 モニタ
195 出力周辺装置インターフェース
196 プリンタ
197 スピーカ
Claims (24)
- 第1および第2のストアにアクセスできる電子ファイルシステムを備えるコンピュータにおける方法であって、
前記第1のストアから、前記第1のストアの第1のリストの下に編成されている第1の項目を選択するステップと、
第1の項目が選択されたことに応答して、前記第1の項目が前記第1のストアの第2のリストの下にも編成されているかどうか判定するステップと、
前記第1の項目に基づいて前記第2のストアに第2の項目を格納するステップと、
前記第1の項目が前記第2のリストの下に編成されていると判定したことに応答して、前記第1のストアに、前記第2のストアの前記第2の項目をターゲットとする第1の代用項目を作成するステップであって、前記第1の代用項目が、前記第1のリストではなく前記第2のリストの下に編成されるステップと
を備えることを特徴とする方法。 - 前記第1の項目を前記第1のストアから除去するステップをさらに備えることを特徴とする請求項1に記載の方法。
- 前記第2の項目を前記第1の項目の複製として生成するステップをさらに備えることを特徴とする請求項2に記載の方法。
- 前記第2の項目を生成する前記ステップは、前記第1の項目に基づいてブロブを生成するステップ、前記ブロブを前記第2のストアに送るステップ、および前記ブロブを前記第2の項目に変換するステップを含むことを特徴とする請求項3に記載の方法。
- 前記第2のストアの前記第2の項目を選択するステップと、
前記第2の項目が選択されたことに応答して、前記第1の代用項目が前記第1のストアに存在するかどうか判定するステップと、
前記第1の代用項目が存在すると判定したことに応答して、前記第1の代用項目を前記第1のストアから除去するステップと、
前記第2の項目に基づいて前記第1のストアに第3の項目を格納するステップと
をさらに備えることを特徴とする請求項1に記載の方法。 - 前記第3の項目を前記第2の項目の複製として生成するステップをさらに備えることを特徴とする請求項5に記載の方法。
- 前記第1および第2の項目のそれぞれはファイルであることを特徴とする請求項1に記載の方法。
- 前記第1および第2の項目のそれぞれはリストであることを特徴とする請求項1に記載の方法。
- 前記第1の項目は、前記第1と第2両方のリストの下に編成されることを特徴とする請求項1に記載の方法。
- 実行されると、前記コンピュータに請求項1に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
- 実行されると、前記コンピュータに請求項5に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
- 第1および第2のストアにアクセスできる電子ファイルシステムを備えるコンピュータにおける方法であって、
前記第1のストアから第1のリストを選択するステップと、
前記第1のリストに基づいて前記第2のストアに第2のリストを格納するステップと、
前記第1のリストの下に項目が編成されているかどうか判定するステップと、
前記第1のリストの下に前記項目が編成されていると判定したことに応答して、前記第2のストアに、前記第1のストアの前記項目をターゲットとする、前記第2のリストの下に編成される代用項目を作成するステップと
を備えることを特徴とする方法。 - 前記項目はファイルであることを特徴とする請求項12に記載の方法。
- 前記第2のリストは前記第1のリストの複製であることを特徴とする請求項12に記載の方法。
- 前記代用項目を作成する前記ステップの後に前記第1のリストを前記第1のストアに維持するステップをさらに備えることを特徴とする請求項12に記載の方法。
- 前記判定するステップは、前記項目が前記第1のリストの下に直接編成されているかどうか判定するステップを含み、前記作成するステップは、前記項目が前記第1のリストの下に直接編成されているという判定に応答するものであることを特徴とする請求項12に記載の方法。
- 前記判定するステップは、前記項目が非リスト項目であるかどうか判定するステップを含み、前記作成するステップは、さらに、前記項目が非リスト項目であるという判定に応答するものであることを特徴とする請求項12に記載の方法。
- 前記第1のリストの下に第3のリストが編成されているかどうか判定するステップと、
前記第1のリストの下に前記第3のリストが編成されていると判定したことに応答して、前記第2のストアに、前記第2のリストの下に編成される第4のリストを、前記第3のリストに基づいて作成するステップと
をさらに備えることを特徴とする請求項17に記載の方法。 - 前記第4のリストは前記第3のリストの複製であることを特徴とする請求項18に記載の方法。
- 実行されると、前記コンピュータに請求項12に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
- 第1および第2のストアにアクセスできる電子ファイルシステムを備えるコンピュータにおける方法であって、
前記第1のストアから、第1のリストの下に編成された1つまたは複数のリストを有する第1のリストを選択するステップと、
前記第1のリストの下に編成された前記1つまたは複数のリストのそれぞれについて、その個別のリストが、前記第1のリストと異なるリストの下にも直接編成されているかどうか判定するステップと、
前記第1のリストの下に編成された前記1つまたは複数のリストのそれぞれについて、前記個別のリストが、前記第1のリストと異なるリストの下に直接編成されていないと判定したことに応答して、その個別のリストを前記第2のストアに移動するステップと、
前記第1のリストの下に編成された前記1つまたは複数のリストのそれぞれについて、前記個別のリストが、前記第1のリストと異なるリストの下に直接編成されていると判定したことに応答して、その個別のリストを前記第2のストアに移動し、前記第1のストアに、現在前記第2のストアにあるその個別のリストをターゲットとする代用項目を作成するステップであって、前記代用項目が、前記第1のリストと異なる前記リストの下に直接編成されるステップと
を備えることを特徴とする方法。 - 前記第1のリストは、前記第1のリストの下に編成された1つまたは複数の非リスト項目を持ち、前記方法は、
前記第1のリストの下に編成された前記1つまたは複数の非リスト項目のそれぞれについて、その個別の非リスト項目を前記第2のストアに移動するステップ
をさらに備えることを特徴とする請求項21に記載の方法。 - 前記1つまたは複数の非リスト項目のそれぞれはファイルであることを特徴とする請求項22に記載の方法。
- 実行されると、前記コンピュータに請求項21に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/986,961 US7801854B2 (en) | 2004-11-15 | 2004-11-15 | Managing lists and other items in an electronic file system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006146907A true JP2006146907A (ja) | 2006-06-08 |
Family
ID=35929840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005324932A Pending JP2006146907A (ja) | 2004-11-15 | 2005-11-09 | 電子ファイルシステムにおけるリストおよびその他の項目の管理 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7801854B2 (ja) |
EP (1) | EP1657653A3 (ja) |
JP (1) | JP2006146907A (ja) |
KR (1) | KR20060054099A (ja) |
CN (1) | CN100498777C (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7962566B2 (en) * | 2006-03-27 | 2011-06-14 | Sap Ag | Optimized session management for fast session failover and load balancing |
US7640249B2 (en) * | 2006-03-29 | 2009-12-29 | Sap (Ag) | System and method for transactional session management |
CN107153525B (zh) * | 2017-03-23 | 2020-06-05 | 北京空间飞行器总体设计部 | 基于柔性带权有向图模型的卫星指令序列生成方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5159692A (en) * | 1985-07-01 | 1992-10-27 | Canon Kabushiki Kaisha | Image file system with multiple control image transfer between first and second filing system storage |
JP2973800B2 (ja) * | 1993-11-05 | 1999-11-08 | 株式会社日立製作所 | 電子ファイル装置 |
US6356946B1 (en) * | 1998-09-02 | 2002-03-12 | Sybase Inc. | System and method for serializing Java objects in a tubular data stream |
US6271846B1 (en) * | 1998-09-30 | 2001-08-07 | International Business Machines Corporation | Method for reanchoring branches within a directory tree |
US6922708B1 (en) * | 1999-02-18 | 2005-07-26 | Oracle International Corporation | File system that supports transactions |
US6639615B1 (en) * | 1999-05-28 | 2003-10-28 | Unisys Corporation | Generic method for programmatically locating any document in a computer network system |
JP2003022206A (ja) * | 2001-07-06 | 2003-01-24 | Fujitsu Ltd | ファイル管理プログラムおよびファイル管理装置 |
EP1300757A1 (en) * | 2001-10-02 | 2003-04-09 | Sun Microsystems, Inc. | Shareable installation hierarchies |
US6829617B2 (en) * | 2002-02-15 | 2004-12-07 | International Business Machines Corporation | Providing a snapshot of a subset of a file system |
US7516420B2 (en) * | 2002-07-11 | 2009-04-07 | International Business Machines Corporation | Method and system for extending the file system API |
US6947950B2 (en) * | 2002-11-06 | 2005-09-20 | Oracle International Corporation | Techniques for managing multiple hierarchies of data from a single interface |
US7272258B2 (en) * | 2003-01-29 | 2007-09-18 | Ricoh Co., Ltd. | Reformatting documents using document analysis information |
US7743022B2 (en) * | 2003-02-28 | 2010-06-22 | Microsoft Corporation | Method and system for synchronizing data shared among peer computing devices |
US7281014B2 (en) * | 2003-04-14 | 2007-10-09 | Novell, Inc. | Method and apparatus for moving data between storage devices |
US7467168B2 (en) * | 2003-06-18 | 2008-12-16 | International Business Machines Corporation | Method for mirroring data at storage locations |
US7428546B2 (en) * | 2003-08-21 | 2008-09-23 | Microsoft Corporation | Systems and methods for data modeling in an item-based storage platform |
US7216127B2 (en) * | 2003-12-13 | 2007-05-08 | International Business Machines Corporation | Byte stream organization with improved random and keyed access to information structures |
-
2004
- 2004-11-15 US US10/986,961 patent/US7801854B2/en not_active Expired - Fee Related
-
2005
- 2005-09-29 EP EP05021301A patent/EP1657653A3/en not_active Ceased
- 2005-10-19 KR KR1020050098396A patent/KR20060054099A/ko not_active Application Discontinuation
- 2005-11-09 JP JP2005324932A patent/JP2006146907A/ja active Pending
- 2005-11-15 CN CNB2005101271730A patent/CN100498777C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1657653A3 (en) | 2006-08-23 |
CN1776682A (zh) | 2006-05-24 |
US7801854B2 (en) | 2010-09-21 |
EP1657653A2 (en) | 2006-05-17 |
US20060106886A1 (en) | 2006-05-18 |
KR20060054099A (ko) | 2006-05-22 |
CN100498777C (zh) | 2009-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10936547B2 (en) | Filesystem replication using a minimal filesystem metadata changelog | |
JP4847709B2 (ja) | タイムラインベースのコンピューティング環境を使用してデータを回復するための方法、媒体、およびシステム | |
US6484186B1 (en) | Method for backing up consistent versions of open files | |
US8983911B2 (en) | Storage media abstraction for uniform data storage | |
KR101376937B1 (ko) | 플래시 컴포넌트 질의 시스템, 플래시 컴포넌트 질의 방법 및 컴퓨터 판독가능 저장 매체 | |
CN100414547C (zh) | 用于访问文件系统快照的方法和文件系统 | |
CN103597440A (zh) | 用于创建克隆文件的方法以及采用该方法的文件系统 | |
US20070061540A1 (en) | Data storage system using segmentable virtual volumes | |
JP2008547074A5 (ja) | ||
JP2006139780A (ja) | コンピュータのファイルシステム | |
JP2016505964A (ja) | オンラインストレージシステムでのデータ同期化に関するアプリケーションプログラミングインタフェース | |
JP5426576B2 (ja) | 仮想化技術を利用したデータ入出力方法及び装置 | |
JP5241298B2 (ja) | 履歴上のファイル名およびロケーションをインデックス付きにすることによりファイル・サーチおよびファイル操作を支援するためのシステムおよび方法 | |
US7725507B1 (en) | Dynamic directories | |
JP2016099723A (ja) | 情報管理システム、情報管理方法およびプログラム | |
KR20150128714A (ko) | 최적화된 파일 조작을 위한 파일 그룹화 기법 | |
JP2006146907A (ja) | 電子ファイルシステムにおけるリストおよびその他の項目の管理 | |
CN112000971A (zh) | 一种文件权限记录方法、系统及相关装置 | |
JP2006277563A (ja) | ファイルを指定日時のバージョンに復帰させるためのバックアップ・システム、バックアップ方法および該方法をコンピュータに実行させるためのプログラム | |
US20230006814A1 (en) | Method and apparatus for implementing changes to a file system that is emulated with an object storage system | |
JP5488587B2 (ja) | 情報処理システムと方法 | |
RU2351981C2 (ru) | Расширяемое создание и редактирование объединенных наборов | |
CN109918355A (zh) | 实现基于对象存储服务的nas的虚拟元数据映射系统和方法 | |
JP2002222105A (ja) | ファイルシステムと、そのファイルシステムの実現に用いられるプログラムと、そのプログラムを記録したプログラム記録媒体 | |
Both et al. | Easy File Management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081104 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110426 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111007 |