JP2006236328A - ファイルシステムアイテムおよび関連エンティティのシリアライゼーション - Google Patents

ファイルシステムアイテムおよび関連エンティティのシリアライゼーション Download PDF

Info

Publication number
JP2006236328A
JP2006236328A JP2006015458A JP2006015458A JP2006236328A JP 2006236328 A JP2006236328 A JP 2006236328A JP 2006015458 A JP2006015458 A JP 2006015458A JP 2006015458 A JP2006015458 A JP 2006015458A JP 2006236328 A JP2006236328 A JP 2006236328A
Authority
JP
Japan
Prior art keywords
item
serialization
file
header
entity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006015458A
Other languages
English (en)
Other versions
JP2006236328A5 (ja
Inventor
Hanumantha Rao Kodavalla
ラオ コダヴァラ ハヌマンタ
Martin J Sleeman
ジェイ.スリーマン マーティン
Robin Dhananjay Dhamankar
ダナンジャイ ダマンカール ロビン
Vishal Kathuria
カスリア ヴィシャル
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006236328A publication Critical patent/JP2006236328A/ja
Publication of JP2006236328A5 publication Critical patent/JP2006236328A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • 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/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

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

Abstract

【課題】ファイルシステムアイテムおよび関連エンティティのシリアライゼーション・デシリアライゼーションのためのシステムおよび方法を提供する。
【解決手段】ファイルシステム「アイテム」はコアクラスを含み、コアクラスはプロパティを含み得る。アイテムは、単純アイテムでも複合アイテム(例えばその中に埋め込まれた他のアイテムを含む)でもよい。アイテムには、フラグメント、他のアイテムへのリンク、エクステンション等のエンティティが関連づけられる。シリアライゼーションシステムは、アイテムに関連するエンティティを識別する識別コンポーネントと、アイテムおよび関連エンティティをシリアライズするシリアライゼーションコンポーネントとを含む。シリアライゼーションコンポーネントは、アイテムおよび関連エンティティに関連する情報を含むヘッダをシリアライズすることもできる。
【選択図】図1

Description

本発明は、一般にオブジェクトストレージシステムに関し、より詳細には、ファイルシステムアイテムおよび関連エンティティのシリアライゼーションおよび/またはデシリアライゼーションに関する。
従来、コンピュータファイルシステムにおいて、ファイルはデータストレージ(データ記憶)の基本単位である。一般に、ファイルシステムにおけるファイルは以下の特性を有する。ファイルは単一のバイト列である。ファイルの長さは有限であり、通常、不揮発性記憶媒体に保存される。ファイルはディレクトリ内に作成され、ファイル操作において参照可能な名前を有し、場合によってはそのファイルのパスとともに用いられる。また、ファイルシステムが、パーミションビット等のファイル属性や、ファイルの作成、最終更新、および最終アクセス等のタイムスタンプのような他の情報をファイルに関連づけることもある。また、特定のアプリケーションが、ファイルのバイトストリーム内に領域固有のプロパティを保存することもできる。例えば、ワードプロセッサアプリケーションによって使用され、したがって「文書」とみなされるファイルは、その文書のタイトルや作成者のようなプロパティを記録しておくことが可能だ。これらのプロパティは、そのファイルを作成するアプリケーション固有のフォーマットでファイルのバイトストリーム内に保存される。それらのプロパティは、オブジェクトとして体系化されておらず、標準化された名前も有していない。バイトストリームは、体系化されていない値である。
また、従来のコンピュータファイルシステムが提供しているファイル編成技法は、ユーザにとっての利用可能性が限られている。例えば、既存のアプリケーションは、ファイルの種々のタイプを編成し表示するために、ツリー構造のフォルダフォーマットを広く採用している。フォルダ、サブフォルダ、およびファイルの間の関係の一部を見ることはできるが、このような関係は適用範囲が限られ、主として、明示的なユーザ入力に依存する。例えば、ファイルは、ユーザによって示された共通のフォルダまたはサブフォルダに従って関係づけることができる。
以下に、本発明の諸態様の基本的理解を可能にするために、本発明の簡単な概要を提示する。この概要は、本発明の広範な概観ではない。この概要は、本発明の主要な要素を特定することや、本発明の範囲を画定することを意図していない。その唯一の目的は、後述するさらに詳細な説明への前触として、簡単な形で本発明のいくつかの概念を提示することである。
本発明は、ファイルシステムアイテムおよび関連エンティティのシリアライゼーションおよび/またはデシリアライゼーションを提供する。ファイルシステム「アイテム」はコアクラス(例えば連絡先)を含み、コアクラスはプロパティを含み得る。アイテムは、単純アイテムでも複合アイテム(例えばその中に埋め込まれた他のアイテムを含む)でもよい。アイテムには、フラグメント、他のアイテムへのリンクおよび/またはエクステンションのようなエンティティを関連づけることができる。シリアライゼーションにより、アイテムおよび関連エンティティ(もしあれば)の整合性のあるコピーを取得する(例えば、アイテムをトランスポートし、宛先システム上でそのアイテムを再構成するために)ことができる。
本発明の一態様によれば、シリアライゼーションシステムが提供される。シリアライゼーションシステムは、アイテムに関連するエンティティを識別する識別コンポーネントと、アイテムおよび関連エンティティをシリアライズするシリアライゼーションコンポーネントとを含む。シリアライゼーションコンポーネントはさらに、アイテムおよび関連エンティティに関連する情報を含むヘッダをシリアライズすることもできる。ヘッダは、アイテムおよび関連エンティティへのランダムアクセスを容易にする(例えば、読み手が関心のある部分のみを解釈/解析することを可能にする)。任意選択で、シリアライゼーションシステムは、アイテムおよびその関連エンティティをある場所から別の場所(例えば異なるコンピュータシステムおよび/またはリムーバブル媒体)へコピー、移動および/または転送することを容易にするアプリケーションプログラムインタフェース(API)を公開することができる。
本発明のもう1つの態様は、アイテムおよびその関連エンティティをデシリアライズするために使用可能なアイテムデシリアライゼーションシステムを提供する。デシリアライゼーションシステムは、ヘッダを用いることにより、アイテムおよび関連エンティティにランダムアクセスすることができる(例えば、関心のある部分のみを解釈/解析できる)。デシリアライゼーションシステムは、ファイルシステムストアにアイテムストラクチャー(アイテム構造)を再作成することができる。
上記の目的および関連する目的を達成するため、本明細書において、以下の説明および添付図面を用いて本発明のいくつかの例示的態様を説明する。しかし、これらの態様は、本発明の原理を用いることができる種々の方法のほんの一部を示すに過ぎず、本発明は、すべてのこのような態様およびその均等物を含むことを意図している。本発明のその他の利点および新規な特徴は、以下の本発明の詳細な説明を図面とともに考慮することで明らかとなるであろう。
以下、図面を参照して本発明について説明する。図中、同一参照番号は一貫して同一要素を指すために使用される。以下の説明では、説明の目的上、本発明の十分な理解を可能にするために数多くの具体的詳細が記載される。しかし、これらの具体的詳細なしで本発明を実施し得ることは明らかであろう。他の場合には、本発明の説明を容易にするために、周知の構造および装置(デバイス)はブロック図形式で示される。
本明細書で使用される場合、「コンポーネント」、「ハンドラ」、「モデル」、「システム」等の用語はコンピュータ関連のエンティティ(実体)を指すことを意図しており、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、あるいは実行中のソフトウェアのいずれかを問わない。例えば、コンポーネントは、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、これらに限定されない。実例として、サーバ上で動作するアプリケーションおよびそのサーバの両方がコンポーネントであり得る。1つまたは複数のコンポーネントがプロセスおよび/または実行スレッド内に存在してもよいし、コンポーネントが1つのコンピュータに局在すること、および/または2つ以上のコンピュータに分散されることが可能である。また、これらのコンポーネントは、種々のデータストラクチャー(データ構造)が保存された種々のコンピュータ可読媒体から実行され得る。コンポーネントは、1つまたは複数のデータパケットを有する信号による等、ローカルおよび/またはリモートのプロセスを通じて通信され得る(例えば、あるコンポーネントが、ローカルシステム、分散システム内の別のコンポーネントと、および/またはインターネット等のネットワーク越しに他のシステムと、信号によりデータをやりとりする)。コンピュータコンポーネントは、例えばコンピュータ可読媒体上に保存できる。コンピュータ可読媒体としては、以下のものに限定されないが、本発明によれば、ASIC(特定用途向け集積回路)、CD(コンパクトディスク)、DVD(ディジタルビデオディスク)、ROM(読み出し専用メモリ)、フロッピー(登録商標)ディスク、ハードディスク、EEPROM(電気的消去可能プログラム可能読み出し専用メモリ)およびメモリスティックがある。
本発明は、ファイルシステムアイテムおよび関連エンティティのシリアライゼーションおよび/またはデシリアライゼーションを提供する。本明細書で使用される場合、ファイルシステム「アイテム」はコアクラス(例えば連絡先)を含み、コアクラスはプロパティ(例えば名前、住所、電話番号)を含み得る。アイテム(項目)は、単純アイテムでも複合アイテム(例えばその中に埋め込まれた他のアイテムを含む)でもよい。アイテムには、フラグメント、他のアイテムへのリンク(例えばリレーションシップ)および/またはエクステンション(例えば追加プロパティ)のようなエンティティを関連づけることができる。
図1に、本発明の一態様によるシリアライゼーションシステム100を例示する。システム100は、アイテム(例えばコアアイテム)およびそのアイテムに関連するエンティティをシリアライズするために使用可能である。また、システム100は、アイテムおよび関連エンティティに関連する情報を含むヘッダを生成しシリアライズすることもできる。
シリアライゼーションシステム100は、アイテムに関連するエンティティを識別する識別コンポーネント110を含む。識別コンポーネント110は、ファイルシステムストア120からアイテムに関する情報を取得できる。後述するように、その情報としては、例えば、アイテムフラグメント、エクステンション、出リンク、入リンクおよび/または埋込みアイテムが挙げられる。
また、シリアライゼーションシステム100は、アイテムおよび関連エンティティをシリアライズするシリアライゼーションコンポーネント130も含む。シリアライゼーションコンポーネント130は、さらに、アイテムおよび関連エンティティに関連する情報を含むヘッダを生成しシリアライズすることもできる。ヘッダは、アイテムおよび関連エンティティへのランダムアクセスを容易にする(例えば、読み手が関心のある部分のみを解釈/解析することを可能にする)。
簡単に図2を参照する。図2は、本発明の一態様による例示的なアイテムストラクチャーダイヤグラム200を示している。本具体例では、コアアイテム210はプロパティを含み得る。例えば、コアアイテム210は、「名前」および「自宅電話番号」のプロパティを有する「連絡先」とすることができる。
コアアイテム210は、追加プロパティでコアアイテム210を拡張するために、特定のアプリケーションによって追加されるエクステンションを有し得る。「連絡先」コアアイテム210の例を続けると、電子メールアプリケーションが、エクステンションプロパティとして「電子メールアドレス」および「勤務先電話番号」を追加することによって、コアアイテム210のプロパティを拡張することができる。
次に、コアアイテム210は、0個、1個またはそれ以上の他のアイテム230にリンクされ得る。リンクは、出リンク240および/または入リンク250のいずれでもよい。出リンク240とは、コアアイテム210をソースとするコアアイテム210と他のアイテム230との間の結合を意味する。入リンク250とは、他のアイテム230をソースとするコアアイテム210とアイテム230との間の結合を意味する。出リンク240および/または入リンク250は型付けされていてもよい。したがって、リンク240、250は、アイテムの結合に対する関係機能(relational power)を提供する。例えば、リンク240、250は、「フレンド関係の日付(date of friendship)」および「格付け(rating)」という関連プロパティを有する「フレンド」型のものでもよい。さらに、リンク240、250は、アイテム間の結合を一意的に識別することが(例えばグローバル一意識別子を用いて)できる。
また、コアアイテム210は、埋込みアイテム260も含み得る。埋込みアイテム260は、本明細書ではまとめて複合アイテム(compound item)とも称する。例えば、「連絡先(contact)」型のコアアイテム210は、画像(例えば写真)からなる埋込みアイテム260を含み得る。本発明の一態様によれば、複合アイテムは、アイテムレベルの操作(例えばバックアップ、リストア、コピーおよび/またはエクスポート)による整合性のひとまとまりの単位とみなし得る。
コアアイテム210はフラグメント270を有し得る。フラグメント270は、アイテム型およびアイテムエクステンションに関して大きなコレクションの宣言を可能にするエンティティ型である。コレクションの要素は、キーを有するエンティティである。これは、アプリケーションが、所有側アイテムとは独立にコレクション内の要素にアクセスしそれを変更することを可能にする。コレクションを変更するために、所有側アイテム(owning item)を取得する必要はない。さらに、システムは、ネスト(入れ子)化された範囲の各要素の変更を追跡することができる。
コアアイテム210は、ファイルによってバックアップされることができ、あるいはFileStreamプロパティを有し得る。ファイルバックト(file backed)アイテムは、アイテムの一部がバッキングファイル280から昇格したアイテムである。
エクステンション220、出リンク240、入リンク250に関連する情報(例えばリンク識別子)、埋込みアイテム260、フラグメント270および/またはバッキングファイル280はまとめて、コアアイテム210の「関連エンティティ」と呼ぶことができる。コアアイテム210をシリアライズすることを求める要求が受け取られると、コアアイテム210および関連エンティティ(もしあれば)は、コアアイテム210の構造的完全性を保持するためにコピーされる。関連エンティティを含めることにより、シリアライゼーションストリームを受け取ったシステム(図示せず)は、コアアイテム210および関連エンティティをそれらの適切なコンテキストにおいて再構成することができる。
ダイヤグラム200は、シリアライゼーションシステム100で使用可能な例示的アイテムストラクチャーの要素を示している。当業者には認識されるように、本発明は、図2に示すアイテムストラクチャーに限定されない。本発明を実施するための任意の好適なアイテムストラクチャーが使用可能であり、すべてのそのようなアイテムストラクチャーは、添付の特許請求の範囲の記載の技術的範囲内に入るものとする。
図1および図2を参照すると、システム100は、(例えば別のコンピュータシステムへトランスポートするために)コアアイテム210と、コアアイテム210の関連エンティティ(例えばエクステンション220、出リンク240、入リンク250に関連する情報(例えばリンク識別子)、埋込みアイテム260および/またはフラグメント270)をシリアライズするために使用可能である。識別コンポーネント110は、ファイルシステムストア120内のコアアイテム210を識別し、識別情報をシリアライゼーションコンポーネント130に提供する。また、識別コンポーネント110は、コアアイテム210に関連するエンティティを識別し、関連エンティティに関係する識別情報をシリアライゼーションコンポーネント130に提供する。
シリアライゼーションコンポーネント130は、シリアライゼーション中に埋められるヘッダのための空間を(例えば一時的に)割り当てることができる。本具体例では、シリアライゼーションコンポーネント130は以下を実行する:
1.ヘッダのための空間を割り当てる。
2.コアアイテム210をシリアライズする。
3.アイテムフラグメント270があれば、それをシリアライズする。
4.出リンク240があれば、それをシリアライズする。
5.入リンク識別子があれば、それをヘッダに入れる。
6.エクステンション220があれば、それをシリアライズする。
7.各埋込みアイテム260について、個々の埋込みアイテムをコアアイテム210として、アクト1〜8を再帰的に繰り返す。
8.バッキングファイルがあれば、それをシリアライズする。
9.シリアライゼーション長、ヘッダオフセットおよびヘッダ自体。
次に、図3に、本発明の一態様による例示的シリアライゼーションストラクチャー300を示す。ストラクチャー(構造)300は、例えばシリアライゼーションコンポーネント130によって、例えば次のように生成できる:
[テーブル1]
public class UdtSerialization
{
BinaryUdtSerialization bin;
}
ストラクチャー300は、例えば次のように、シリアライゼーション長320およびヘッダオフセット330を含む。
[テーブル2]
public class BinaryUdtSerialization

{

// ストリーム内のシリアライゼーションのオフセット
long serializationOffset;

// シリアライゼーションの長さ
long serializationLength;
}
テーブル2に示したクラスは、ユーザ定義型(UDT)のバイナリシリアライゼーションを解釈するために使用されるメタデータをサポートするために用いられる。
次に、ストラクチャー300はコアアイテムセクション340を含む:
[テーブル3]
public class CoreItem : UdtSerialization
{
// ルートアイテムのアイテムID
SqlGuid itemId;

// コンテナのアイテムID
SqlGuid containerId;

// アイテムの名前空間名
SqlString naraespaceName;

// これはファイルバックトアイテムか?
bool isFileBacked;

// バッキングファイルがインライン化されている場合、そのバッキングファイルのオフセット
long backingFileOffset;

// バッキングファイルの長さ
long backingFileLength;

// ファイルバックトアイテムの属性を保存する
System.IO.FileAttributes fatFileAttributes;

// バッキングファイルの作成時
DateTime fileCreationTime;

// バッキングファイルの最終書き込み時
DateTime fileLastWriteTime;

// バッキングファイルの最終アクセス時
DateTime fileLastAccessTime;

// シリアライゼーション内のセキュリティディスクリプタのオフセット
long sdOffset;

// シリアライゼーション内のセキュリティディスクリプタの長さ
long sdLength;

// アイテムフラグメントのシリアライゼーションの先頭のオフセット
long itemFragmentOffset;

// シリアライゼーションに含まれるアイテムフラグメントの個数
long itemFragmentCount;
}
また、ストラクチャー300は、例えば次のように、アイテムフラグメントセクション350を含む:
[テーブル4]
public class ItemFragmentHeader : UdtSerialization
{
// アイテムフラグメントのフラグメントID
private SqlGuid fragId;

// フラグメントのセットID
private SqlGuid setId;
}
次に、ストラクチャー300は、例えば次のように、出リンクセクション360を含み得る:
[テーブル5]
public class LinkHeader : UdtSerialization
{
SqlGuid sourceItemId;
SqlGuid targetItemId;
SqlGuid linkId;

private bool excludesSchemaMetadata;
}
リンクオブジェクトは一般にソースアイテム識別子およびターゲットアイテム識別子のような情報を有するが、その情報は、ターゲットにおいてリンク型のスキーマがなくリンクをデシリアライズできない場合に備えて、LinkHeader内に複製される。
また、ストラクチャー300は、アイテムエクステンションセクション370を含み得る:
[テーブル6]
public class ItemExtensionHeader : UdtSerialization
{
}
ストラクチャー300は、埋込みアイテムセクション380を含み得る:
[テーブル7]
public class EmbeddedItem
{

// 埋込みアイテムのヘッダ
ItemHeader itemHeader;

}
ここで、
[テーブル8]
public class ItemHeader
{

// コアアイテムヘッダ
CoreItem coreItem;

// このアイテムに対するすべての出リンクを含むリンクヘッダのリスト
ArrayList outLinks;

// このアイテムのエクステンションに対するエクステンションヘッダのリスト
ArrayList extensions;

// 埋込みアイテムヘッダのリスト
ArrayList embeddedItems;

// このアイテムの入リンクのIDのリスト
ArrayList inLinkIds;

// バッキングファイルに関する情報
private BackingFileHeader backingFileHeader;

// シリアライゼーションがスキーマメタデータを除外するか否か
bool excludesSchemaMetadata;

// シリアライゼーション内のセキュリティディスクリプタのオフセット
long sdOffset;

// シリアライゼーション内のセキュリティディスクリプタの長さ
long sdLength;

}
次に、ストラクチャー300は、バッキングファイルセクション390を含み得る:
[テーブル9]
public class BackingFileHeader
{

// バッキングファイルがインライン化されている場合、そのバッキングファイルのオフセット
private long backingFileOffset;

// バッキングファイルの長さ
private long backingFileLength;

// ファイルバックトアイテムの属性を保存する
private System.IO.FileAttributes fatFileAttributes;

// バッキングファイルの作成時
private DateTime fileCreationTime;

// バッキングファイルの最終書き込み時
private DateTime fileLastWriteTime;

// バッキングファイルの最終アクセス時
private DateTime fileLastAccessTime;

}
最後に、ストラクチャー300はヘッダセクション394を含み得る。ヘッダセクション394は、コアアイテムおよび関連エンティティに関連する情報を含み得る。ヘッダセクション394は、コアアイテムおよび関連エンティティへのランダムアクセスを容易にする(例えば、読み手が関心のある部分のみを解釈/解析することを可能にする)。
次に、図4に、本発明の一態様によるシリアライゼーションシステム400を例示する。シリアライゼーションシステム400は、上記の通り、識別コンポーネント110およびシリアライゼーションコンポーネント130を含む。また、システム400は、アプリケーションプログラムインタフェース(API)410も含む。API410は、システム400とアプリケーション420の間の通信を容易にする。例えば、API410は、アイテムおよびその関連エンティティをある場所から別の場所(例えば異なるコンピュータシステムおよび/またはリムーバブル媒体)へコピー、移動および/または転送することを容易にする。したがって、API410は、エクスポート、バックアップ、リストア、コピー等のアイテムレベルの操作に使用可能である。一具体例として、アプリケーション420は、API410にシリアライゼーション情報(例えばフラグ)を提供することによって、アイテムの全部または一部を選択的に含むことができる。API410は、ファイルシステムレベルで、および/またはストアドプロシジャレベルで公開できる。例示的なAPI410について以下で説明する。
シリアライズアイテムAPI
シリアライズアイテム(serialize item)APIは、以下のコンポーネントが存在する場合に、それを含むアイテムシリアライゼーションを生成する:
・コアアイテム
・出リンク(シリアライズされるアイテムがソースアイテムであるリンク)、および入リンク(シリアライズされるアイテムがターゲットアイテムであるリンク)のリンク識別子
・複合アイテム内のアイテム
・エクステンション
・アイテムフラグメント
・エンティティに対するローカル作成時および変更時
例えば、シリアライズアイテムAPIへのコールは次の形式とすることができる:
[System.Storage.Serialization].SerializeItem (
@itemid uniqueidentifier,
@dataoptions int)
returns varbinary (max)
ここで、itemidは、シリアライズされるべきアイテムの識別子であり、dataoptionsは、シリアライゼーションの内容をカスタマイズするために用いられるSerialize Data Optionsオプション(後述)を指し、APIはアイテムのシリアライゼーションをバイト配列として返す。
アイテムをファイルにシリアライズする(Serialize Item To File)
アイテムが非常に大きい場合、アイテムをメモリ内でシリアライズしてシリアライゼーションをクライアントアプリケーションに返すと非効率なことがある。このような場合、アプリケーションによって指定されたファイルに直接シリアライゼーションを書き込むSerializeItemToFile APIを用いることができる。これにより、クライアントアプリケーションおよびサーバ側の両方で、シリアライゼーションによって消費されるメモリを限定できる。また、このAPIによれば、サーバからクライアントアプリケーションへ送ることが必要なバイト数がはるかに少なくなるので、パフォーマンスを向上させることができる。例えば、SerializeItemToFileへのコールは次の形式とすることができる:
[System.Storage.Serialization].SerializeItemToFile (
@itemid uniqueidentifier,
@dataoptions int,
@filename nvarchar (1024)
)
returns bigint
ここで、itemidは、シリアライズされるべきアイテムの識別子であり、dataoptionsは、シリアライゼーションの内容をカスタマイズするために用いられるSerialize Data Optionsオプション(後述)を指し、filenameはオブジェクトをシリアライズする先のファイルの名前であり、APIはファイルに書き込むバイト数を返す。
シリアライゼーションデータオプション(Serialization Data Options)
オプションの値は、シリアライズ機能がさまざまな場合のカスタマの要求を満たすことを可能にする。これらのオプションは、アイテムに関係する、シリアライゼーションの一部として含まれるべきデータ/メタデータ要素を選択するために使用可能である。これらのオプションはシリアライゼーションの内容に影響し得る。
本具体例では、options(オプション)の値は、次のもののOR結合として指定できる:
・0個または1個の共通使用例
・個別オプションからの0個、1個またはそれ以上のオプション
個別オプション
以下のオプションは、個別の場合に対するアイテム境界を定義する。例:
・INCLUDE_EXTENSIONS 0x2
エクステンションをこのシリアライゼーションに含めるべきかどうかを指定する。

・INCLUDE_OUTGOING_LINKS 0x4
出リンクをこのシリアライゼーションに含めるべきかどうかを指定する。

・INCLUDE_EMBEDDED 0x8
複合アイテム内のすべてのアイテムをこのシリアライゼーションに含めるべきかどうかを指定する。

・INCLUDE_SECURITY_DESCRIPTOR 0x10
アイテムに対する明示的なアクセス制御リスト(ACL)を含めるべきかどうかを指定する。

・INCLUDE_SYNC_METADATA 0x80
無権限リストアに必要な同期メタデータを含める。

・INCLUDE_SCHEMA_METADATA 0x100
このアイテムをデシリアライズするために必要なスキーマメタデータをこのシリアライゼーションに含めるべきかどうかを指定する。多数のアイテムをシリアライズする場合、アプリケーションは、個別のアイテムシリアライゼーションとは別個にそれをバックアップすることを選択できる。

・INLINE_BACKING_FILE 0x200
バッキングファイルをシリアライゼーション内にインライン化するか、それともファイルのUNCパスのみをシリアライゼーションの一部とするかを指定する。これは、バッキングファイルの属性(不可視、読み取り専用等)およびタイムスタンプも含む。
これらの例示的なオプションを用いた有効(妥当)なシリアライズデータオプションの例を以下に挙げる:
SERIALIZE_FOR_COPY | INCLUDE_IDs
このオプションは、コピー用にカスタマイズされるとともに、IDも含む、アイテムのシリアライゼーションを生成する。

SERIALIZE_FOR_BACKUP | INCLUDE_IDs
これは有効なオプションであるが、SERIALIZE_FOR_BACKUP.INCLUDE_IDsというオプションを指定することにより自動的にオンになるので、別個にそれを指定するのは冗長である。

INCLUDE_IDs | INCLUDE_OUTGOING_LINKS
これは、シリアライゼーション内にコアアイテムとそのアイテムを保持するエクステンションとのシリアライゼーションを生成する。本具体例では、共通使用例を指定しなくても有効である。
これらの例示的なオプションを用いた無効なシリアライズデータオプションの例を以下に挙げる:
SERIALIZE_FOR_COPY | SERIALIZE_FOR_BACKUP
本具体例において、複数のデフォルトを指定すると無効である。

SERIALIZE_FOR_COPY & !INCLUDE_EXTENSIONS
本具体例において、「AND」結合は許されない。上記を実現するためには、オプションは、次のように、明示または個別オプションの組合せを用いて指定しなければならない:
INCLUDE_OUTGOING_LINKS | INCLUDE_EMBEDDED |
INLINE_FILESTREAM_ATTRIBUTES |
INCLUDE_SCHEMA_METADATA
共通使用例
以下のオプションは、共通使用例の場合のアイテム境界を定義する。例:
・SERIALIZE_FOR_COPY 0x10000000
このオプションを選択すると以下のオプションがオンになる。
○ INCLUDE_EXTENSIONS
○ INCLUDE_OUTGOING_LINKS
○ INCLUDE_EMBEDDED
○ INCLUDE_SECURITY_DESCRIPTOR
○ INLINE_FILESTREAM_ATTRIBUTES
○ INCLUDE_SCHEMA_METADATA
・SERIALIZE_FOR_BACKUP 0x20000000
このオプションを選択すると以下のオプションがオンになる。
○ INCLUDE_EXTENSIONS
○ INCLUDE_OUTGOING_LINKS
○ INCLUDE_EMBEDDED
○ INLINE_FILESTREAM_ATTRIBUTES
○ INCLUDE_SECURITY_DESCRIPTOR
○ INCLUDE_SCHEMA_METADATA
○ INCLUDE_IDs
○ INCLUDE_SYNC_METADATA
次に、図5に、本発明の一態様によるシリアライゼーション環境500を例示する。アプリケーション420が、シリアライズすべきアイテムに関連する情報、例えばアイテムIDを、シリアライゼーションシステム400に提供する。その後、シリアライゼーションシステム400は、ファイル記憶システムメタデータ510から、アイテムIDに関する型情報を取得する。シリアライゼーションコンポーネント400は、アイテムIDおよび型情報を用いて、前述のように、シリアライズすべきアイテム(例えばアイテムおよび関連エンティティ)に関連する情報を、ファイルシステムビュー530に対して(例えば再帰的に)問い合わせる。
一具体例では、シリアライゼーションコンポーネント130は、アイテムフラグメントに対するランダムアクセスをサポートしない。この具体例では、アイテムフラグメントは、ヘッダからの開始オフセットおよび各フラグメントに先行する長さフィールドを用いてシーケンシャルに(例えば連結リストのように)アクセスすることができる。
複合アイテム内のアイテム
INCLUDE_EMBEDDEDオプションが選択されると、システム400は、複合アイテム内のアイテムを再帰的にたどってそれらをシリアライズする。例えば、システム400は、再帰的ストラクチャーをたどって複数の問合せを実行し、各アイテムをシリアライズすることができる。結果として得られるシリアライゼーションは、埋込みアイテムシリアライゼーションがそれらの親のシリアライゼーションに含まれるような再帰的構造を有する。
一具体例として、複合アイテム内の各アイテムが相異なるセキュリティディスクリプタを有し得る。このため、シリアライズAPIの呼出側は、複合アイテム内のすべてのアイテムにアクセスできない可能性がある。この具体例では、ユーザがすべてのアイテムにアクセスできない場合、呼出側がアクセスできないアイテムはシリアライズされない。
バッキングファイル
本具体例において、バッキングファイルは、シリアライゼーション内にインライン化されても、呼出側によって(例えばシリアライズオプションに基づいて)別個にコピーされても、いずれでもよい。
インラインのバッキングファイル
アプリケーションが、ファイルバックアイテムをシリアライゼーション内に含めるよう要求した場合、バッキングファイルは、ファイル記憶システム120から読み出されることができる。ファイルに加えて、属性や、作成、最終アクセスおよび/または変更時刻もシリアライゼーションヘッダに含めることができる。例えば、この情報は、アイテムがバックアップのためにシリアライズされている場合に使用可能である(例えば、デシリアライゼーション後にタイムスタンプを元の値に戻すために必要とされる場合)。
インラインでないバッキングファイル
この場合、アプリケーションは、例えばシリアライズAPIをコールする際にINLINE_BACKING_FILEオプションをセットしないことによって、ファイルバックアイテムをシリアライゼーション内に含めないよう要求している。本具体例では、シリアライズAPIは、シリアライゼーション内にファイルの内容を含める代わりに、ヘッダにファイル名を埋め込むことができる。それに応じて、アプリケーションは、このファイル名を読み出し、ファイル記憶システムAPIを直接使用してバッキングファイルの内容を処理できる。しかし、この場合でも、ファイル属性や作成、最終アクセスおよび変更のタイムスタンプをシリアライゼーションヘッダに取り込める。例えば、この情報は、アイテムがバックアップのためにシリアライズされている場合に使用可能である(例えば、デシリアライゼーション後にタイムスタンプを元の値に戻すために必要とされる場合)。
スキーマメタデータ
本具体例では、スキーマメタデータは、ファイルシステムストア120に固有であり得るタイプIDを含むので、各エンティティのシリアライゼーションとともに取り込まれる。タイプIDからアセンブリ名およびバージョンへのマッピングは、ユーザ定義型シリアライゼーションをデシリアライズするために必要なスキーマメタデータである。例えば、各エンティティ(例えばアイテム、リンク、エクステンションおよび/またはフラグメント)に関連するスキーマメタデータがあり得る。これは、それぞれのエンティティシリアライゼーションとともに含められることが可能である。
この情報を取得するため、シリアライゼーションシステム400は、システムメタデータ520に問合せをすることにより完全限定型名を取得できる。例えば、GetNameFromTypeIdは、与えられたTypeId(タイプID)に対して、SchemaNameおよびTypeNameをそれぞれ含む2列からなるちょうど1行のテーブルとして、完全限定型名を返す。ファイルシステムストア120のそれぞれのアイテム/リンク/エクステンション/フラグメントのテーブルからのTypeIdを関数への入力として用いることにより、スキーマ名および型名を取得できる。さらに、これをsys.assembliesテーブルと結合(join)することで完全限定型名が得られる。一般に、TypeIdはファイルシステムストア120(例えばデータベース)全体で一意ではないが、完全限定型名は一意である。ストア内コピー(例えば、タイプIDがソースとターゲットで同じである場合)、スキーマメタデータを除くことができる。
セキュリティ
前述のように、各アイテムには、そのアイテムにアクセスできるユーザおよび/またはそれにアクセスできないユーザを識別するセキュリティディスクリプタ(セキュリティー記述子)を関連づけることができる。図5に関して説明した例を続けると、例示的な信頼境界540が識別される。本具体例では、環境500は、ファイルシステムの権限付与に基づいて、ユーザがファイルシステムストア120に接続するパーミッション(同意)を有するようにすることができる。特定のシリアライズAPIまたはデシリアライズAPIの呼出側は一般に、そのAPIをコールする前にファイルシステムストア120との接続を確立している。
次に、図6に、本発明の一態様によるデシリアライゼーションシステム600を例示する。システム600は、例えばシステム100および/またはシステム400によって生成された、アイテムおよびその関連エンティティをデシリアライズするために使用可能である。システム600は、ヘッダを用いることにより、アイテムおよび関連エンティティにランダムアクセスすることができる(例えば、関心のある部分のみを解釈/解析できる)。
システム600は、アイテムおよびその関連エンティティのデシリアライゼーションを容易にするアプリケーションプログラムインタフェース(API)610を公開することができる。API610は、例えばアプリケーション630から受け取った、シリアライズされたアイテムを、デシリアライゼーションコンポーネント620に提供できる。デシリアライゼーションコンポーネント620は、アイテムストラクチャーを再作成し、それをファイルシステムストア640に保存することができる。
アプリケーション630からアイテムをデシリアライズすることを求める要求を受け取った後、API610は、シリアライズされたアイテムをデシリアライゼーションコンポーネント620に提供し、デシリアライゼーションコンポーネント620は上記のようなヘッダオフセットを用いてヘッダを(例えばメモリ内に)読み出し、デシリアライズプロセスを通じてそのヘッダを使用することができる。その場合、一具体例として、デシリアライゼーションコンポーネント620は以下のことを実行できる:
1.コアアイテムをデシリアライズする。
2.アイテムフラグメントをデシリアライズする。
3.出リンクをデシリアライズする。
4.エクステンションをデシリアライズする。
5.例えば再帰的にツリーをトップダウンでたどることにより、複合アイテムコンテナに埋め込まれたアイテムをデシリアライズする。
6.バッキングファイルをデシリアライズする。
デシリアライズされたアイテムおよび関連エンティティはファイルシステムストア640に保存される。
リンク修復
一具体例において、デシリアライゼーション中に、システム600は、シリアライゼーション内に存在したアイテムのすべてのリレーションシップ(関係)が、アイテムがデシリアライズされた後も存続するようにする。さらに、入リンク情報がシリアライズされているので、シリアライゼーションは、デシリアライズされたアイテムへの入リンクの修復も行う。これは、シリアライズされたものが、デシリアライズされた後に、(例えば厳密に)同一であることを保証するためである。
例えば、修復作業の適用範囲(スコープ)は、与えられたコピー操作におけるすべてのアイテムであってもよい。後述するように、シリアライゼーションAPIのユーザは、BeginDeserializationBatchおよびEndDeserializationBatchという2つのヘルパーAPIを呼び出すことによって、バッチスコープを作成できる。このスコープ内でデシリアライズされるいずれのアイテムも、このスコープ内の他のアイテムへのリンクが修復されることになる。例えば、一時テーブルを用いることにより、デシリアライズされるアイテムのリレーションシップについてIDを追跡することができる。その場合、この一時テーブルが旧IDを新IDにマッピングして、シリアライゼーションがリンクのターゲットIDとソースIDを修復する。本具体例では、(バッチ内の)リンクおよび包含リレーションシップを修復することができる。
これは、例えば、DeserializeItemに対する追加フラグとして実装できる。ただし、一具体例では、シリアライゼーションAPIのコンシューマは、バッチの開始および終了を明示的に記述する必要がある。
API
API610は、システム600とアプリケーション630の間の通信を容易にする。例えば、API610は、シリアライズされたアイテムのデシリアライゼーションを容易にする。API610は、ファイルシステムレベルで、および/またはストアドプロシジャレベルで公開できる。例示的なAPI610について以下で説明する。
デシリアライズアイテムAPI
デシリアライズアイテム(DeserializeItem)APIは、アイテムをデシリアライズし、それを、コンテナIDとして指定されるIDを有するコンテナに入れる。名前空間名およびコンテナIDが両方ともヌルとして渡される場合、それらの値はシリアライゼーションから取られる。ストアドプロシジャは、アイテムがシリアライズされた時に入っていたのと同じコンテナ内のアイテムをデシリアライズする。例えば、これは、アイテムIDを保持したままソースから宛先へのツリー全体(例えばフォルダおよびサブフォルダ)をコピーするような場合に必要となり得る。本具体例では、シリアライゼーションがアイテムIDを含まない(含むとエラーになる)場合には、コンテナIDをヌルとして渡すことはできない。例:
[System.Storage.Serialization].DeserializeItem (
@serialization varbinary (max),
@containerId uniqueidentifier,
@namespacename nvarchar(255),
@options int,
@itemid uniqueidentifier output)
@fileinfolist FileInfoList output
ここで、serializationは、(例えば以前のシリアライゼーションの結果として生成された)シリアライズされたアイテムを指し、containerIdは、新規アイテムを含むことになるコンテナのアイテムIDを指し、namespacenameは、デシリアライズされるアイテムの名前空間名を指し、optionsは、デシリアライズプロセスの挙動を支配するオプション(後述)を指し、itemidは、新規アイテムのアイテムIDを指し、fileinfolistは、このアイテムに含まれるファイルのファイル名、アイテムIDおよびサイズのリストである。例:
Class FilelnfoList: ArrayList;
// これは次のインスタンスを含む:

Class FileInfo {
SqlGuid itemId;
SqlString relativePath;
SqlBigint size;
}
既存アイテムを上書きしてデシリアライズする
このAPI610は、与えられたシリアライゼーションの内容を用いてデシリアライズを行い、ストア内の既存アイテムを上書きする。本具体例では、ファイルバックトアイテムを上書きする時、バッキングファイルは切り捨てられる。シリアライゼーションがファイルをインラインで有していない場合、この操作により、長さゼロのバッキングファイルが生じる。
さらに、本具体例において、このAPI610は、同一アイテムを過去のある状態にリストアする際にのみ使用可能である。例:
[System.Storage.Serialization].DeserializeItemReplace (
@serialization varbinary (max),
@targetitemid uniqueidentifier,
@options int)
ここで、serializationは、(例えば以前のシリアライゼーションの結果として生成された)シリアライズされたアイテムを指し、targetitemidは、置換されるアイテムのアイテムIDを指し、optionsは、デシリアライズプロセスの挙動を支配するオプション(後述)を指す。
アイテムをファイルからデシリアライズする(De-serialize Item From File)
このAPI610は、大きいアイテムを(例えばシステム100および/またはシステム400によって生成された)ファイルからデシリアライズすることができるように提供される。例えば、ファイルは、上記のSerializeItemToFile APIによって生成されたものでも、上記のSerializeItem APIを呼び出してからアイテムシリアライゼーションをファイルに書き込むことによって生成されたものでもよい。本具体例では、名前空間名およびコンテナIDが両方ともヌルとして渡される場合、それらの値はシリアライゼーションから取られる。例:
[System.Storage.Serialization].DeserializeItemFromFile (
@filename nvarchar (1024),
@containerId uniqueidentifier,
@namespacename nvarchar(255),
@options int,
@itemid uniqueidentifier output,
@fileinfolist FileInfoList output
ここで、filenameは、デシリアライズすべきアイテムのシリアライゼーションを有するファイルの名前を指し、containerIdは、新規アイテムを含むことになるコンテナのアイテムIDを指し、namespacenameは、デシリアライズされるアイテムの名前空間名を指し、optionsは、デシリアライズプロセスの挙動を支配するオプション(後述)を指し、itemidは、新規アイテムのアイテムIDを指し、fileinfolistは、このアイテムに含まれるファイルのファイル名、アイテムIDおよびサイズのリストである。例:
Class FilelnfoList: ArrayList;
// これは次のインスタンスを含む:

Class Filelnfo {
SqlGuid itemid;
SqlString relativePath;
SqlBigint size;
}
既存アイテムを上書きしてファイルからデシリアライズする
「既存アイテムを上書きしてファイルからデシリアライズする」API610は、指定されたファイル(例えば、上記のSerializeItemToFile APIによって作成されたファイル、および/またはSerializeItem APIを呼び出してからアイテムシリアライゼーションをファイルに書き込んで作成されたファイル)に含まれる与えられたアイテムシリアライゼーションの内容を用いて、ファイルシステムストア640内の既存アイテムを上書きする。本具体例では、ファイルバックトアイテムを上書きする時、バッキングファイルは切り捨てられる。シリアライゼーションがファイルをインラインで有していない場合、この操作により、長さゼロのバッキングファイルが生じる。
本具体例において、DeserializeItemReplaceFromFileは、同一アイテムを過去のある状態にリストアする際にのみ使用可能である。例:
[System.Storage.Serialization].DeserializeItemReplaceFromFile (
@filename nvarchar (1024),
@fileoffset bigint,
@targetitemid uniqueidentifier,
@options int,
@bytesread bigint output
ここで、filenameは、デシリアライズすべきアイテムのシリアライゼーションを有するファイルの名前であり、targetitemidは、置換されるアイテムのアイテムIDであり、optionsは、デシリアライズプロセスの挙動を支配するオプション(後述)を指し、bytesreadは、(例えば次のオフセットへのジャンプを容易にするため)読み出されたバイト数を返す。
BeginDeserializationBatchおよびEndDeserializationBatch
これらのヘルパー関数(helper functions)は、互いに一緒に、そしてLink_Fix_Up(リンク修復)デシリアライゼーションオプション(後述)とともに、使用可能である。BeginDeserializationBatchをコールすることで、デシリアライゼーションバッチスコープが開始される。本具体例では、このスコープ内でシリアライズされるすべてのアイテムが機能し続けるように、すべてのリンクが補正される。すべてのアイテムがデシリアライズされた後、EndDeserializationBatchをコールすることにより、スコープを終了し、この操作によって使用された一時テーブルをクリーンアップする。
例えば、ItemAがItemBにリンクされ、ItemBがItemCにリンクされているとする。さらに、これらのアイテムが新規ストアにデシリアライズされているとする。本具体例において、クライアントアプリケーションは以下のコールを行う:
BeginDeserializationBatch() (すべてのリンクを追跡するための一時テーブルを作成)
リンク修復フラグを指定してすべてのアイテムをデシリアライズする
EndDeserializationBatch()
アイテムは、この新規ストアに再作成され新規のアイテムIDを有しているとしても、修復フラグのため、互いに正しくリンクされることが可能である。
デシリアライズオプション
デシリアライゼーションオプションの例を以下に挙げる:

・RETAIN_ITEM_ID 0x1
シリアライズされるアイテムと同じアイテムIDを保持する。これは、アイテムIDがヌルにされない場合にのみ適用可能である。

・RESTORE_SECURITY_DESCRIPTOR 0x2
シリアライズされるアイテムと同じ明示的アクセス制御リスト(ACL)を保持する。

・RESTORE_TIME_STAMP 0x4
ローカル作成時刻および変更時刻をリストアする(例えばコピーおよび/またはリストアに適用可能)。

・RESTORE_SYNC_METADATA 0x8
アイテムに対する_ChangeInformation、SyncMetadataをリストアする。Replica/Mapping/Conflictアイテムの場合には、このオプションが指定されている場合に限りリストアされる。

・LINK_FIX_UP 0x10
Link_Fix_Upオプションは、BeginSerializationBatchおよびEndSerializationBatchという2つのヘルパーAPIとともに使用すれば、すべてのアイテムリンクが保持されるようにすることができる。一具体例として、Link_Fix_Upがバッチスコープの外側で用いられる場合、そのコールは失敗する。
デシリアライゼーションにおけるユーザ定義型の使用
デシリアライゼーションコンポーネント620によるユーザ定義型(UDT)の再構成により、以下のことが実行できる:(1)シリアライゼーションが有効(妥当)なシリアライゼーションであるかどうかを確認すること、および、(2)アイテムをデシリアライズするために必要な型がシステムに存在するかどうかを確認すること、および/または、(3)妥当性制約をトリガすること。本具体例において、シリアライゼーションからUDTを再構成することは、コアアイテムのデシリアライゼーションの前に実行される。
次に、図7に、本発明の一態様によるデシリアライゼーション環境700を例示する。環境700は、基本更新API720を通じてファイルシステムストア640とやりとりするデシリアライゼーションシステム600を含む。また、例示的な信頼境界730が識別される。前述のように、特定のデシリアライズAPIの呼出側は一般に、そのAPIをコールする前にファイルシステムストア640との接続を確立している。
例えば、アプリケーション630は、デシリアライゼーションシステム600にアイテムシリアライゼーションを提供できる。デシリアライゼーションシステム600は、前述のように、システムメタデータ710からユーザ定義型に関する情報を取得できる。デシリアライゼーションシステム600は、基本更新API720を通じて、デシリアライズされたコアアイテムおよび関連エンティティを保存しようと試みることができる。基本更新API720として、例えば以下のものが挙げられる:
CreateItem
デシリアライゼーションシステム600は、この基本更新API720を用いることにより、デシリアライズされたアイテムをファイルシステムストア640内に作成できる。例えば、この基本更新API720は、上書きせずにアイテムを作成する際に使用可能である。
SetItemSecurity
この基本更新API720を使用すると、デシリアライズされたアイテムのセキュリティディスクリプタを設定できる。例えば、セキュリティディスクリプタを設定する際に、以下のポリシが使用可能である:
・デシリアライゼーションシステム600がリストアセマンティクスを指定しない場合、SetItemSecurityを用いてアクセス制御リストのみを設定する。
・リストアセマンティクスが指定されている場合、SetItemSecurityを用いてアクセス制御リストとグループおよびオーナとを両方とも設定できる。
ReplaceItem
デシリアライゼーションシステム600は、この基本更新API720をコールすることにより、ファイルシステムストア640内で既存アイテムをデシリアライズされたアイテムで上書きできる。例えば、この基本更新API720は、上書きでアイテムを作成する際に使用可能である。
MoveItem
この基本更新API720を用いると、アイテムがシリアライズされた時と同じコンテナおよび同じ名前空間名を有するように、置換すべきアイテムを移動することができる。
CreateLink
デシリアライゼーションシステム600は、この基本更新API720を用いることにより、ファイルシステムストア640内のアイテムの出リンクをデシリアライズできる。
CreateExtension
この基本更新API720を用いると、ファイルシステムストア640内のアイテムのエクステンションをデシリアライズできる。
CreateItemFragment
デシリアライゼーションシステム600は、この基本更新API720を用いることにより、ファイルシステムストア640内のアイテムのフラグメントをデシリアライズできる。
UpdateLink
この基本更新API720は、デシリアライゼーションシステム600によって使用されることにより、後述するように、作成されたアイテムに対する入リンクであるリンクのターゲットアイテムIDを更新できる。
移動したアイテムの置換
デシリアライズ中にアイテムをその過去のコピーで置換することが、リストア中によく起こり得る。重要なことであるが、リストアされたアイテムは、シリアライズ(例えばバックアップ)された時とデシリアライズ(例えばリストア)された時との間で移動している可能性がある。移動は、次のいずれかを意味する一般的操作である:
a)親コンテナを変更する、
b)名前空間名を変更する、および/または
c)名前空間名および親コンテナの両方を変更する。
本具体例において、アイテムがリストアされる時、置換操作は名前空間名あるいはコンテナIDを変更できない。したがって、アイテムをその元の位置にリストアするためには、MoveItemを用いて、同じコンテナおよび同じ名前空間名(もしそれらのいずれかが変更されていれば)にしてから置換を実行する。
複合アイテムの置換
本具体例において、DeserializeItemReplaceが複合アイテムに対してコールされる(例えば、複合アイテムをその過去のコピーで置換する)と、以下のことが起こる:
1)ルートアイテムが元の位置に移動され、その名前空間名が元の値にリストアされ、シリアライゼーション内のアイテムで置換される。
2)シリアライズ(例えばバックアップ)された後に複合アイテムツリーに追加されたアイテムが削除される。
3)シリアライズされた後に複合アイテムから削除されたアイテムが、CreateItemを用いてデシリアライズプロセスの一部として作成される。
4)最後のシリアライズ以降に削除されなかったアイテムが、ReplaceItemを用いて置換される。
デシリアライズされているアイテムに対する入リンクの処理
一具体例において、リストア操作中に(例えば、アイテムIDが環境700に保持されている時)、以下を使用することにより、アイテムへの入リンクに対するターゲットアイテムIDを修復できる。
各入リンクIDについて:
a.そのリンクIDを有するリンクがストア内に存在するかどうかをチェックする。存在する場合は次のステップに進み、存在しない場合は次のステップをスキップする。
b.UpdateLink API720を用いることにより、それらのリンクのターゲットアイテムIDを、デシリアライズされたアイテムのIDに更新する。
c.すべての入リンクIDについて上記2つのステップを繰り返す。
ファイルバックトアイテムのデシリアライズ
シリアライゼーション内にインライン化されたファイル
ファイルがシリアライゼーション内にインライン化されている場合、一具体例では、ヘッダが次の情報を伝えることができる:ファイルバックトアイテムのアイテムID(これから、ファイルの書き込み先のパスを導き出すことができる)およびバッキングファイルを含むシリアライゼーションの部分。これを用いることにより、基本更新API720を用いて指定位置にファイル(複数可)を書き込むことができる。
シリアライゼーション内にインライン化されていないファイル
本具体例では、ファイルがシリアライゼーション内にインライン化されていない場合、基本更新API720を用いてバッキングファイルをターゲット位置にコピーするのは呼出側の責任である。
認識されるように、システム100、ファイルシステムストア120、システム400、API410、アプリケーション420、システム500、ファイル記憶システムメタデータ510、システムメタデータ520、ファイルシステムビュー530、環境600、API610、デシリアライゼーションコンポーネント620、アプリケーション630、ファイルシステムストア640、環境700、システムメタデータ710および/または基本更新API720は、当該用語が本明細書で定義されているようなコンピュータコンポーネントとすることができる。
簡単に図8〜図11を参照する。図8〜図11は、本発明により実施可能な方法を例示している。説明を簡単にする目的上、本方法は一連のブロックとして図示され説明されるが、理解され認識されるように、本発明はそれらのブロックの順序に限定されない。本発明によれば、一部のブロックは、図示され本明細書に記載されるものとは異なる順序で、および/または他のブロックと並行して生起し得る。さらに、本発明による方法を実施するために、例示されたすべてのブロックが必須とは限らない。
本発明は、1つまたは複数のコンポーネントによって実行されるプログラムモジュール等のコンピュータ実行可能命令との一般的関連で説明できる。一般的に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、データストラクチャー等を含む。一般に、プログラムモジュールの機能は、種々の実施形態において必要に応じて組み合わされ、あるいは分散され得る。
図8および図9に、本発明の一態様によるアイテムのシリアライゼーションを容易にする方法800を例示する。804で、アイテムをシリアライズすることを求める要求を(例えばアプリケーションから)受け取る。808で、ヘッダのためにメモリを割り当てる。812で、コアアイテムをシリアライズする。
816で、アイテムフラグメントがあれば、それをシリアライズする。次に、820で、出リンクがあれば、それをシリアライズする。824で、入リンク識別子があれば、それをヘッダに入れる。828で、エクステンションがあれば、それをシリアライズする。832で、埋込みアイテムがあれば、それをシリアライズする。836で、バッキングファイルがあれば、それをシリアライズする。840で、シリアライゼーション長、ヘッダオフセットおよびヘッダをシリアライゼーションに書き込む。844で、シリアライゼーションに関する情報を要求側(例えば要求側アプリケーション)に提供する。例えば、シリアライゼーション自体を要求側アプリケーションに提供できる。別法として、シリアライゼーションへのポインタおよび/またはシリアライゼーションのファイル名を要求側アプリケーションに提供できる。
次に、図10および図11に、本発明の一態様によるアイテムのデシリアライゼーションを容易にする方法1000を例示する。1004で、アイテムをデシリアライズすることを求める要求を受け取る。1008で、ヘッダオフセットを用いてヘッダをメモリに読み込む。1012で、コアアイテムをデシリアライズする。1016で、アイテムフラグメントがあれば、それをデシリアライズする。1020で、出リンクがあれば、それをデシリアライズする。
1024で、エクステンションがあれば、それをデシリアライズする。1032で、埋込みアイテムがあれば、それをデシリアライズする。1036で、バッキングファイルがあれば、それをデシリアライズする。デシリアライズされたアイテムおよび関連エンティティはファイル記憶システムに保存することができる。
本発明の諸態様についてさらに前後関係を説明するため、図12および以下の説明は、本発明の諸態様が実施され得る好適なオペレーティング環境1210の簡単な概説を行うことを意図している。本発明は、1つまたは複数のコンピュータまたはその他の装置によって実行されるプログラムモジュール等のコンピュータ実行可能命令との一般的関連で説明されるが、当業者には認識されるように、本発明は、他のプログラムモジュールと組み合わせて、および/またはハードウェアとソフトウェアの組合せとしても実施可能である。ただし、一般的に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データストラクチャー等を含む。オペレーティング環境1210は好適なオペレーティング環境の単なる一例であり、本発明の用途および機能の範囲に関するいかなる限定を示唆することも意図していない。本発明とともに使用するのに好適となり得る他の周知のコンピュータシステム、環境、および/または構成としては、以下のものに限定されないが、パーソナルコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサ方式のシステム、プログラム可能な消費者電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置を含む分散コンピューティング環境等がある。
図12を参照すると、本発明の諸態様を実施する例示的環境1210はコンピュータ1212を含む。コンピュータ1212は、処理ユニット1214、システムメモリ1216、およびシステムバス1218を含む。システムバス1218は、システムメモリ1216を含む(ただしこれに限定されない)システムコンポーネントを処理ユニット1214に結合する。処理ユニット1214は種々の入手可能なプロセッサのいずれでもよい。デュアルマイクロプロセッサおよびその他のマルチプロセッサアーキテクチャもまた、処理ユニット1214として使用可能である。
システムバス1218は、メモリバスまたはメモリコントローラ、ペリフェラルバスまたは外部バス、および/または利用可能なさまざまなバスアーキテクチャのいずれかを用いたローカルバス等の数種のバス構成のいずれでもよい。そのようなバスアーキテクチャとしては、以下のものに限定されないが、8ビットバス、Industry Standard Architecture(ISA)、Micro-Channel Architecture(MCA)、Enhanced ISA(EISA)、Intelligent Drive Electronics(IDE)、VESA Local Bus(VLB)、Peripheral Component Interconnect(PCI)、Universal Serial Bus(USB)、Advanced Graphics Port(AGP)、Personal Computer Memory Card International Associationバス(PCMCIA)、およびSmall Computer Systems Interface(SCSI)がある。
システムメモリ1216は、揮発性メモリ1220および不揮発性メモリ1222を含む。起動中等にコンピュータ1212内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム(BIOS)が不揮発性メモリ1222に格納される。実例として、限定ではないが、不揮発性メモリ1222としては、読み出し専用メモリ(ROM)、プログラム可能ROM(PROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能ROM(EEPROM)、あるいはフラッシュメモリが挙げられる。揮発性メモリ1220としては、ランダムアクセスメモリ(RAM)があり、これは外部キャッシュメモリとして作用する。実例として、限定ではないが、RAMは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、およびダイレクトRambus RAM(DRRAM)のような多くの形態で入手可能である。
また、コンピュータ1212はリムーバブル(取り外し可能)/非リムーバブル(取り外し不能)、揮発性/不揮発性のコンピュータ記憶媒体も含む。図12は、例としてディスクストレージ1224を示している。ディスクストレージ1224としては、以下のものに限定されないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、あるいはメモリスティックのようなデバイスがある。さらに、ディスクストレージ1224は、以下のものに限定されないが、コンパクトディスクROMデバイス(CD−ROM)、CDレコーダブルドライブ(CD−Rドライブ)、CDリライタブルドライブ(CD−RWドライブ)あるいはディジタル多用途ディスクROMドライブ(DVD−ROM)のような光ディスクドライブを含む記憶媒体を、単独で、または他の記憶媒体と組み合わせて含んでもよい。ディスクストレージデバイス1224をシステムバス1218に接続することを容易にするため、通常、インタフェース1226のような、リムーバブルまたは非リムーバブルインタフェースが用いられる。
認識されるように、図12は、ユーザと、好適なオペレーティング環境1210に記載された基本的なコンピュータリソースとの間の媒介手段として作用するソフトウェアを示している。このようなソフトウェアとしてオペレーティングシステム1228がある。オペレーティングシステム1228は、ディスクストレージ1224に格納されることが可能であり、コンピュータシステム1212のリソースを制御し割り当てるように作用する。システムアプリケーション1230は、システムメモリ1216またはディスクストレージ1224のいずれかに格納されたプログラムモジュール1232およびプログラムデータ1234を通じて、オペレーティングシステム1228によるリソースの管理を利用する。認識されるように、本発明は、種々のオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施可能である。
ユーザは、入力デバイス1236を通じてコンピュータ1212にコマンドまたは情報を入力する。入力デバイス1236としては、以下のものに限定されないが、ポインティングデバイス、例えばマウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、TVチューナカード、ディジタルカメラ、ディジタルビデオカメラ、ウェブカメラ等がある。これらおよびその他の入力デバイスは、インタフェースポート1238経由でシステムバス1218を通じて処理ユニット1214に接続される。インタフェースポート1238としては、例えば、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス(USB)がある。出力デバイス1240は、入力デバイス1236と同種のポートの一部を使用する。したがって、例えば、USBポートは、コンピュータ1212に入力を提供するとともに、コンピュータ1212から出力デバイス1240に情報を出力するために使用可能である。出力デバイス1240のうちにはとりわけ、特殊なアダプタを必要とするモニタ、スピーカ、およびプリンタのようないくつかの出力デバイス1240があることを例示するために、出力アダプタ1242が設けられている。出力アダプタ1242としては、例示であり限定ではないが、出力デバイス1240とシステムバス1218の間の接続手段を提供するビデオカードおよびサウンドカードがある。なお、リモートコンピュータ1244のように、他のデバイスおよび/またはデバイスのシステムでは、入出力両機能を提供することもある。
コンピュータ1212は、リモートコンピュータ1244のような1つまたは複数のリモートコンピュータへの論理コネクションを用いたネットワーク環境で動作し得る。リモートコンピュータ1244は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ方式の電子機器、ピアデバイスあるいはその他の一般的なネットワークノード等であってよく、一般に、コンピュータ1212に関連して説明した要素の多くまたはすべてを含む。簡単のため、メモリ記憶装置1246のみをリモートコンピュータ1244とともに示してある。リモートコンピュータ1244は、ネットワークインタフェース1248を通じてコンピュータ1212に論理的に接続され、通信コネクション1250を通じて物理的に接続される。ネットワークインタフェース1248は、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)のような通信ネットワークを包含する。LAN技術としては、Fiber Distributed Data Interface(FDDI)、Copper Distributed Data Interface(CDDI)、イーサネット(登録商標)/IEEE802.3、トークンリング/IEEE802.5等がある。WAN技術としては、以下のものに限定されないが、ポイントツーポイントリンク、サービス総合ディジタル網(ISDN)およびその変種のような回線交換ネットワーク、パケット交換ネットワーク、およびディジタル加入者回線(DSL)がある。
通信コネクション1250とは、ネットワークインタフェース1248をバス1218に接続するために用いられるハードウェア/ソフトウェアを意味する。通信コネクション1250は説明を明確にするためにコンピュータ1212の内部に示されているが、コンピュータ1212の外部にあってもよい。ネットワークインタフェース1248への接続に必要なハードウェア/ソフトウェアとしては、単なる例示であるが、通常の電話級モデム、ケーブルモデムおよびDSLモデム等のモデム、ISDNアダプタ、およびイーサネット(登録商標)カードのような内蔵および外付けの技術がある。
以上、本発明の実施例について説明した。もちろん、本発明を説明する目的で、コンポーネントまたは方法の想定し得るあらゆる組合せを記載することはできないが、当業者には認識されるように、本発明のさらに多くの組合せおよび置換が可能である。したがって、本発明は、添付の特許請求項の精神および範囲内に入るすべてのそのような変更、修正および変形を包含することを意図している。さらに、「includes」(含む)という用語が詳細な説明または特許請求の範囲で用いられる限り、この用語は、「comprising」(「包含する」、「より成る」あるいは「備えた」)という用語が請求項における移行語として用いられる場合に解釈されるのと同様に、包括的であることを意図している。
本発明の一態様によるシリアライゼーションシステムのブロック図である。 本発明の一態様による例示的アイテムストラクチャーの図である。 本発明の一態様による例示的シリアライゼーションストラクチャーの図である。 本発明の一態様によるシリアライゼーションシステムのブロック図である。 本発明の一態様によるシリアライゼーション環境のブロック図である。 本発明の一態様によるデシリアライゼーションシステムのブロック図である。 本発明の一態様によるデシリアライゼーション環境のブロック図である。 本発明の一態様によるアイテムのシリアライゼーションを容易にする方法のフローチャートである。 図8の方法をさらに示すフローチャートである。 本発明の一態様によるアイテムのデシリアライゼーションを容易にする方法のフローチャートである。 図10の方法をさらに示すフローチャートである。 本発明が機能し得る例示的オペレーティング環境を示す。
符号の説明
100 シリアライゼーションシステム
110 識別コンポーネント
120 ファイルシステムストア
130 シリアライゼーションコンポーネント
200 アイテムストラクチャー
210 コアアイテム
220 エクステンション(拡張部)
230 アイテム
240 出リンク
250 入リンク
260 埋込みアイテム
270 フラグメント
280 バッキングファイル
300 シリアライゼーションストラクチャー
320 シリアライゼーション長
330 ヘッダオフセット
340 コアアイテム
350 アイテムフラグメント
360 出リンク
370 アイテムエクステンション
380 埋込みアイテム
390 バッキングファイル
394 ヘッダ
400 シリアライゼーションシステム
410 アプリケーションプログラムインタフェース
420 アプリケーション
500 シリアライゼーション環境
510 ファイル記憶システムメタデータ
520 システムメタデータ
530 ファイルシステムビュー
600 デシリアライゼーションシステム
610 アプリケーションプログラムインタフェース
620 デシリアライゼーションコンポーネント
630 アプリケーション
640 ファイルシステムストア
700 デシリアライゼーション環境
710 システムメタデータ
720 基本更新API
1210 オペレーティング環境
1214 処理ユニット
1216 システムメモリ
1218 バス
1220 揮発性
1222 不揮発性
1224 ディスクストレージ
1226 インタフェース
1228 オペレーティングシステム
1230 アプリケーション
1232 モジュール
1234 データ
1236 入力デバイス
1238 インタフェースポート
1240 出力デバイス
1242 出力アダプタ
1244 リモートコンピュータ
1246 メモリストレージ
1248 ネットワークインタフェース
1250 通信コネクション

Claims (20)

  1. シリアライゼーションシステムにおいて、
    アイテムに関連するエンティティを識別する識別コンポーネントと、
    前記アイテムと、前記関連エンティティと、前記アイテムおよび関連エンティティに関連する情報を提供するヘッダとをシリアライズするシリアライゼーションコンポーネントと
    を備えたことを特徴とするシリアライゼーションシステム。
  2. 前記関連エンティティが、出リンク、入リンク、埋込みアイテム、エクステンション、アイテムフラグメントおよびバッキングファイルの少なくとも1つを含むことを特徴とする請求項1に記載のシステム。
  3. 前記アイテムおよび関連エンティティのシリアライゼーションの開始が要求に基づくことを特徴とする請求項1に記載のシステム。
  4. 前記関連エンティティの識別が、前記要求に関連するコンテクストに関連するセキュリティ情報に少なくとも部分的に基づくことを特徴とする請求項3に記載のシステム。
  5. 前記関連エンティティの識別が、前記関連エンティティに関連するアクセス制御リストにさらに基づくことを特徴とする請求項4に記載のシステム。
  6. 前記ヘッダが、前記アイテムおよび前記関連エンティティへのランダムアクセスを容易にすることを特徴とする請求項1に記載のシステム。
  7. 前記システムと、前記アイテムのシリアライゼーションに関連するアプリケーションとの間の通信を容易にするアプリケーションプログラムインタフェースをさらに備えたことを特徴とする請求項1に記載のシステム。
  8. 前記アプリケーションプログラムインタフェースが、前記アイテムおよび前記関連エンティティのエクスポート、バックアップ、リストアおよびコピーの少なくとも1つを容易にすることを特徴とする請求項7に記載のシステム。
  9. 前記アプリケーションプログラムインタフェースがシリアライゼーションオプションに関連する情報を受け取り、該シリアライゼーションオプションは、複数の関連エンティティのうちのいずれを前記アイテムとともにシリアライズすべきかを選択するために使用されることを特徴とする請求項7に記載のシステム。
  10. 前記アプリケーションプログラムインタフェースがファイルシステムレベルで公開されることを特徴とする請求項7に記載のシステム。
  11. 前記アプリケーションプログラムインタフェースがストアドプロシジャレベルで公開されることを特徴とする請求項7に記載のシステム。
  12. 前記アプリケーションプログラムインタフェースが前記シリアライゼーションをバイト配列として返すことを特徴とする請求項7に記載のシステム。
  13. 前記アプリケーションプログラムインタフェースが前記シリアライゼーションに関連するポインタまたはファイル名を返すことを特徴とする請求項7に記載のシステム。
  14. 前記関連エンティティが埋込みアイテムを含み、前記システムがさらに、該埋込みアイテムを再帰的にシリアライズすることを特徴とする請求項1に記載のシステム。
  15. 請求項1に記載のシステムによって生成された前記シリアライゼーションを受け取ることを特徴とするデシリアライゼーションシステム。
  16. アイテムのシリアライゼーションを容易にする方法において、
    前記アイテムをシリアライズし、
    前記アイテムに関連する少なくとも1つのエンティティを識別し、
    前記関連エンティティをシリアライズする
    ことを特徴とする、アイテムのシリアライゼーションを容易にする方法。
  17. 前記アイテムをシリアライズすることを求める要求を受け取ること、
    前記アイテムおよび関連エンティティに関連する情報を含むヘッダをシリアライズすること、
    シリアライゼーション長およびヘッダオフセットをシリアライズすること
    の少なくとも1つをさらに含むことを特徴とする請求項16に記載の方法。
  18. 前記関連エンティティが、出リンク、入リンク、埋込みアイテム、エクステンション、アイテムフラグメント、セキュリティ情報およびバッキングファイルの少なくとも1つを含むことを特徴とする請求項16に記載の方法。
  19. 請求項16に記載の方法を実行するためのコンピュータ実行可能命令を格納したことを特徴とするコンピュータ可読媒体。
  20. 2つ以上のコンピュータコンポーネント間で伝送される、アイテムのシリアライズされた転送を容易にするデータパケットにおいて、
    シリアライゼーション長フィールドと、
    ヘッダオフセットフィールドと、
    コアアイテムフィールドと、
    少なくとも1つの関連エンティティを含むフィールドと、
    前記アイテムおよび関連エンティティに関連する情報を提供するヘッダフィールドと
    を備えたことを特徴とするデータパケット。
JP2006015458A 2005-02-24 2006-01-24 ファイルシステムアイテムおよび関連エンティティのシリアライゼーション Pending JP2006236328A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65611805P 2005-02-24 2005-02-24
US11/121,284 US7676481B2 (en) 2005-02-24 2005-05-03 Serialization of file system item(s) and associated entity(ies)

Publications (2)

Publication Number Publication Date
JP2006236328A true JP2006236328A (ja) 2006-09-07
JP2006236328A5 JP2006236328A5 (ja) 2009-03-12

Family

ID=36599106

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006015458A Pending JP2006236328A (ja) 2005-02-24 2006-01-24 ファイルシステムアイテムおよび関連エンティティのシリアライゼーション

Country Status (7)

Country Link
US (1) US7676481B2 (ja)
EP (1) EP1696344A3 (ja)
JP (1) JP2006236328A (ja)
KR (1) KR20060094458A (ja)
AU (1) AU2006200054A1 (ja)
BR (1) BRPI0600133A (ja)
CA (1) CA2533770A1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7970803B2 (en) * 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US7873683B2 (en) 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US8959125B2 (en) 2005-07-01 2015-02-17 226008 Ontario Inc. File system having inverted hierarchical structure
US7809777B2 (en) * 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
US8930812B2 (en) * 2006-02-17 2015-01-06 Vmware, Inc. System and method for embedding, editing, saving, and restoring objects within a browser window
US8566503B2 (en) * 2006-08-25 2013-10-22 Qnx Software Systems Limited Multimedia filesystem having unified representation of content on diverse multimedia devices
US7908276B2 (en) 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US8015483B2 (en) * 2006-10-20 2011-09-06 Microsoft Corporation Processing an XML feed with extensible or non-typed elements
US8156507B2 (en) * 2006-12-08 2012-04-10 Microsoft Corporation User mode file system serialization and reliability
US8117601B2 (en) * 2007-11-14 2012-02-14 Microsoft Corporation Internal test and manipulation of an application
US9350595B1 (en) * 2007-12-27 2016-05-24 Emc Corporation System and method for serializing and deserializing data objects into a single binary stream
US8805776B2 (en) * 2008-06-26 2014-08-12 Microsoft Corporation Relationship serialization and reconstruction for entities
US8341154B2 (en) * 2009-10-28 2012-12-25 Microsoft Corporation Extending types hosted in database to other platforms
US8671085B2 (en) 2011-12-09 2014-03-11 Microsoft Corporation Consistent database recovery across constituent segments
US8527462B1 (en) 2012-02-09 2013-09-03 Microsoft Corporation Database point-in-time restore and as-of query
US9465856B2 (en) 2013-03-14 2016-10-11 Appsense Limited Cloud-based document suggestion service
US9367646B2 (en) * 2013-03-14 2016-06-14 Appsense Limited Document and user metadata storage
WO2015116194A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. File system storage
US20160239499A1 (en) * 2015-02-12 2016-08-18 Red Hat, Inc. Object Creation Based on Copying Objects Corresponding to Similar Entities
CN104615507A (zh) * 2015-02-13 2015-05-13 广东欧珀移动通信有限公司 备份数据的批量还原方法和装置
US10021184B2 (en) 2015-12-31 2018-07-10 Dropbox, Inc. Randomized peer-to-peer synchronization of shared content items
US9479578B1 (en) * 2015-12-31 2016-10-25 Dropbox, Inc. Randomized peer-to-peer synchronization of shared content items
EP4293528A3 (en) * 2017-08-29 2024-01-24 Cohesity, Inc. Snapshot archive management
US10635632B2 (en) 2017-08-29 2020-04-28 Cohesity, Inc. Snapshot archive management
US10719484B2 (en) 2017-09-07 2020-07-21 Cohesity, Inc. Remotely mounted file system with stubs
US11321192B2 (en) 2017-09-07 2022-05-03 Cohesity, Inc. Restoration of specified content from an archive
US11874805B2 (en) 2017-09-07 2024-01-16 Cohesity, Inc. Remotely mounted file system with stubs
US11288079B2 (en) * 2018-01-25 2022-03-29 Red Hat, Inc. Reducing classloading of hierarchically configured applications via provisioning
US11487701B2 (en) 2020-09-24 2022-11-01 Cohesity, Inc. Incremental access requests for portions of files from a cloud archival storage tier

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05225012A (ja) * 1992-02-12 1993-09-03 Fuji Xerox Co Ltd データ列変換復元方法
JPH06161849A (ja) * 1992-07-06 1994-06-10 Microsoft Corp オブジェクトを記憶し需要時にロードする方法及びシステム
JPH11184860A (ja) * 1997-12-18 1999-07-09 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
JP2003177915A (ja) * 2001-06-29 2003-06-27 Microsoft Corp 構造化データの汎用オブジェクト指向記述(gdl)のための方法
JP2004199517A (ja) * 2002-12-19 2004-07-15 Toshiba Corp 電子ドキュメントファイリング装置、電子ドキュメントファイリングシステム、電子ドキュメントファイリング方法及びプログラム
JP2004334436A (ja) * 2003-05-06 2004-11-25 Ns Solutions Corp 大規模データ取扱装置
JP2005011362A (ja) * 2003-06-19 2005-01-13 Microsoft Corp モジュラオブジェクトシリアライゼーションアーキテクチャ
JP2005051308A (ja) * 2003-07-29 2005-02-24 Ricoh Co Ltd 文書管理装置、文書管理方法及び文書管理システム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873103A (en) 1994-02-25 1999-02-16 Kodak Limited Data storage management for network interconnected processors using transferrable placeholders
US6961712B1 (en) * 1996-10-25 2005-11-01 Ipf, Inc. Consumer product information request (CPIR) enabling servlets and web-based consumer product information catalogs employing the same
US5832274A (en) 1996-10-09 1998-11-03 Novell, Inc. Method and system for migrating files from a first environment to a second environment
US6532476B1 (en) * 1999-11-13 2003-03-11 Precision Solutions, Inc. Software based methodology for the storage and retrieval of diverse information
US7120863B1 (en) * 1999-11-15 2006-10-10 International Business Machines Corporation Method, system, and program for interfacing with elements in a document
US6877006B1 (en) * 2000-07-19 2005-04-05 Vasudevan Software, Inc. Multimedia inspection database system (MIDaS) for dynamic run-time data evaluation
US6912543B2 (en) 2000-11-14 2005-06-28 International Business Machines Corporation Object-oriented method and system for transferring a file system
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7200627B2 (en) * 2001-03-21 2007-04-03 Nokia Corporation Method and apparatus for generating a directory structure
US7136865B1 (en) * 2001-03-28 2006-11-14 Siebel Systems, Inc. Method and apparatus to build and manage a logical structure using templates
US7120639B1 (en) * 2001-06-27 2006-10-10 Microsoft Corporation Pluggable formatters
US6898604B1 (en) * 2001-06-29 2005-05-24 Microsoft Corporation XML serialization and deserialization
US7020666B2 (en) * 2003-03-07 2006-03-28 Microsoft Corporation System and method for unknown type serialization
US7464082B2 (en) * 2004-11-29 2008-12-09 International Business Machines Corporation Methods for de-serializing data objects on demand

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05225012A (ja) * 1992-02-12 1993-09-03 Fuji Xerox Co Ltd データ列変換復元方法
JPH06161849A (ja) * 1992-07-06 1994-06-10 Microsoft Corp オブジェクトを記憶し需要時にロードする方法及びシステム
JPH11184860A (ja) * 1997-12-18 1999-07-09 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
JP2003177915A (ja) * 2001-06-29 2003-06-27 Microsoft Corp 構造化データの汎用オブジェクト指向記述(gdl)のための方法
JP2004199517A (ja) * 2002-12-19 2004-07-15 Toshiba Corp 電子ドキュメントファイリング装置、電子ドキュメントファイリングシステム、電子ドキュメントファイリング方法及びプログラム
JP2004334436A (ja) * 2003-05-06 2004-11-25 Ns Solutions Corp 大規模データ取扱装置
JP2005011362A (ja) * 2003-06-19 2005-01-13 Microsoft Corp モジュラオブジェクトシリアライゼーションアーキテクチャ
JP2005051308A (ja) * 2003-07-29 2005-02-24 Ricoh Co Ltd 文書管理装置、文書管理方法及び文書管理システム

Also Published As

Publication number Publication date
AU2006200054A1 (en) 2006-09-07
US7676481B2 (en) 2010-03-09
BRPI0600133A (pt) 2006-10-24
EP1696344A2 (en) 2006-08-30
EP1696344A3 (en) 2007-02-07
US20060190469A1 (en) 2006-08-24
CA2533770A1 (en) 2006-08-24
KR20060094458A (ko) 2006-08-29

Similar Documents

Publication Publication Date Title
JP2006236328A (ja) ファイルシステムアイテムおよび関連エンティティのシリアライゼーション
USRE48243E1 (en) Log based data replication from a source database to a target database
US6606618B2 (en) Method for optimizing the performance of a database
KR100868410B1 (ko) 관리화된 파일 시스템 필터 모델 및 아키텍쳐
KR101224680B1 (ko) 데이터베이스 내부에 표현된 파일 시스템
CA2137492C (en) System for and method of providing delta-versioning of the contents of pcte file objects
US8255430B2 (en) Shared namespace for storage clusters
US8433863B1 (en) Hybrid method for incremental backup of structured and unstructured files
US20060059204A1 (en) System and method for selectively indexing file system content
US7966603B2 (en) Systems and methods for context-based content management
KR20170129959A (ko) 인 플레이스 스냅샷들
US20050240636A1 (en) Storage system storing worm file
US20170286442A1 (en) File system support for file-level ghosting
SG192868A1 (en) Variants of files in a file system
CN115098588A (zh) 跨集群的元数据同步方法、设备及介质
US7953879B1 (en) System and method for assigning symbolic names to data streams
US7478116B2 (en) Mechanism to exchange primary data stream of a file
US8990265B1 (en) Context-aware durability of file variants
CN116909490B (zh) 数据处理方法、装置、存储系统及计算机可读存储介质
CN113760829B (zh) 基于fuse文件接口的安全存储系统及操作系统
US11755425B1 (en) Methods and systems for synchronous distributed data backup and metadata aggregation
WO2022088711A1 (zh) 程序执行方法、程序处理方法以及相关设备
JP2001229062A (ja) 分散ファイル管理方法
MXPA06000913A (en) Serialization of file system item(s) and associated entity(ies)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090123

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120228