(57)【要約】【課題】データのストリームを利用して、データを大量にコピーすることなくユーザ定義型（ＵＤＴ）フラグメントの整合性チェックを行うシステムおよび方法を提供すること。【解決手段】ストリーミング整合性チェックにより、ＵＤＴフラグメント全体の読取り、格納、分析などをする必要がないよう、できるだけ早く無効のフラグメントを発見することが容易になる。さらに、ＵＤＴフラグメントを完全に具体化することなく評価することができる。このように、本発明を利用するシステムおよび／または方法は、要求されるリソースを減らし、無効な構造のより速い検出を可能にすることによって、従来技術に比べ向上した性能を実現することができる。【選択図】図１
2006277742.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ定義型（ＵＤＴ）フラグメントをエラーに関して評価することを容易にするコンピュータ実装システムであって、
ＵＤＴフラグメントを含むデータブロックのストリームを受信し、前記各ＵＤＴフラグメントに対してフラグメント型を識別し、前記データブロックを処理中に廃棄するデータブロック処理コンポーネントと、
前記対応する識別されたフラグメント型に部分的に基づいて、前記ＵＤＴフラグメントを検査し、エラーの通知を生成するチェックオブジェクトと
を備えたことを特徴とするシステム。
【請求項２】
前記チェックオブジェクトは、前記ＵＤＴフラグメントを完全に具体化することなく検査することを特徴とする請求項１に記載のシステム。
【請求項３】
少なくとも１つのＵＤＴフラグメントは異なるデータブロック間で分割されることを特徴とする請求項１に記載のシステム。
【請求項４】
新たに提示されたフラグメント型に対応する第２のチェックオブジェクトを生成するコンポーネントをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項５】
前記チェックオブジェクトは、前記ＵＤＴフラグメントのうちの１つのセクションの構造に関連付けられたメタデータをさらに格納し、前記メタデータを利用して、前記ＵＤＴフラグメントのうちの１つの残りの検査を継続することを特徴とする請求項１に記載のシステム。
【請求項６】
前記チェックオブジェクトは、前記ＵＤＴフラグメントを検査する範囲を判定し、および前記検査を完了するために必要なデータを格納することを特徴とする請求項１に記載のシステム。
【請求項７】
前記各ＵＤＴフラグメントの始めにあるタイプワードを分析することによって、前記各ＵＤＴフラグメントに関するフラグメント型を識別するフラグメント型検出器をさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項８】
前記各データブロックに関する整合性チェックの進行を追跡する位置追跡コンポーネントをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項９】
前記位置追跡コンポーネントは、特定のデータブロックを使い切ったか否かをさらに判定することを特徴とする請求項８に記載のシステム。
【請求項１０】
特定のチェックオブジェクトを開始して、特定のフラグメント型を分析するチェックオブジェクトアクティベータをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項１１】
前記データブロック処理コンポーネントは、前記データブロックのストリームを順次受信し、および処理することを特徴とする請求項１に記載のシステム。
【請求項１２】
ＵＤＴフラグメントを含むデータブロックを受信するステップと、
前記ＵＤＴフラグメントの型を識別するステップと、
各チェックオブジェクトを採用して、前記ＵＤＴフラグメントのいずれがエラーを含むかを判定するステップと、
前記データブロックを処理中に廃棄するステップと
を備えたことを特徴とするユーザ定義型（ＵＤＴ）の整合性チェックを容易にするコンピュータ実装方法。
【請求項１３】
フラグメントのチェックの進行を追跡するステップと、前記フラグメントのチェックを完了するために必要なデータを格納するステップとをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１４】
ＵＤＴのメタデータに関連付けられた値の一部分を格納するステップと、次のデータブロックから前記値の残りを抽出するステップとをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１５】
共通のＵＤＴに対応する前記ＵＤＴフラグメントの機能として、関連付けられた前記データブロックのサブセットをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１６】
特定のチェックオブジェクトを指定して、特定のフラグメント型をチェックするステップをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１７】
前記ＵＤＴフラグメントに関連付けられた共通で、かつ一意な構造上の態様を識別するステップをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１８】
前記データブロックに格納されたデータを順次処理するステップをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１９】
データ構造を含むデータブロックのストリームを受信する手段と、
データ構造の異なる型を識別する手段と、
各チェックオブジェクトを利用して、前記データ構造内に含まれるエラーを識別する手段と、
前記データブロックを処理中に前記ストリームから廃棄する手段と
を備えたことを特徴とするデータ構造をエラーについて分析するコンピュータ実装システム。
【請求項２０】
前記データ構造の一部を格納することなくエラーの存在を発見すると、前記識別されたエラーに関する通知を提供する手段をさらに備えたことを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に整合性チェックに関し、特に、データを大量にコピーすることなくデータのストリーミングチェックを介し、ユーザ定義型（ＵＤＴ）フラグメントの整合性の分析および立証を容易にするシステムおよび方法に関する。
【背景技術】
【０００２】
データベースとは、データベース管理システム（ＤＢＭＳ）によって予め定義されたフォーマットで作成および管理される関係ファイルまたは関連データの集合である。例えば、行および列を含むテーブルにＤＢＭＳを用意することができる。データベースのテーブルのコンテンツにアクセスするために、クエリ言語（例えば、構造化クエリ言語（ＳＱＬ））によってクエリを構築することができる。同様に、外部ソースを介し、テーブルにデータを入力（例えばインポート）することができる。従来、ＤＢＭＳは、テキスト、画像、サウンド、およびビデオを含むどのようなフォームのデータであっても管理することができる。それにより、ソフトウェアアプリケーションによってデータベース構造およびファイル構造を判定する。
【０００３】
ＤＢＭＳは、予め定義された単純データ型を利用でき、単純データ型は、ＤＢＭＳに格納されているデータの種類によって判定される変数のカテゴリを参照することができる。例えば、一般的な単純データ型には、整数、浮動小数点、文字列、日付、バイナリ、ブール、文字、ショート、およびロングがある。近年、ＤＢＭＳのストレージの柔軟性を高め、管理を強化するためにユーザ定義型（ＵＤＴ）を利用することへの取り組みが進められている。特に、ＵＤＴの機能性によって、開発者およびユーザに、（例えば、宣言型言語を介し）特定のデータベースアプリケーションと互換性のあるＵＤＴを作成する柔軟性が与えられる。
【０００４】
ＵＤＴによって、ストレージ環境（例えば、ＤＢＭＳ）内の複合型のモデル化および操作が可能になる。ＵＤＴは、継承や、閉じ込め、および多値埋め込みなどの概念をさらに提供する。１つのＵＤＴが、異なる型（例えば、整数、浮動小数点、文字列、日付、バイナリ、ブール、文字、ショート、ロング、…）の一連のフラグメントを備えることができる。例えば、あるＵＤＴフラグメントが、関連付けられたメタデータ（例えば、ある人物に関するＵＤＴに対して、１つのフラグメントがその人物の名前を保持できる、別のフラグメントはその人物の住所に関することができる、…）を有するＵＤＴの一部であることが可能である。ＵＤＴフラグメントのサイズは、その型および／または関連付けられたペイロードに依存して変化し得る。ＵＤＴをデータページに格納し、および／またはデータパケットの一部として転送することができる。その変化するサイズにより、格納するときに異なるデータページ間（または、転送中にデータパケット間）で、ＵＤＴおよび／またはＵＤＴフラグメントを分割することができる。例えば、あるデータページ内にＵＤＴおよび／またはＵＤＴフラグメントを格納するために十分な空き容量がないならば、そのＵＤＴおよび／またはＵＤＴフラグメントを分割することができる。例えば、８１９２バイトの１データページに１０，０００バイトのＵＤＴを格納することはできない。したがって、そのようなＵＤＴをデータページ間で分割する。さらに、ＵＤＴを分割する場所によっては、ＵＤＴフラグメントの一部を異なるデータページ間で分けてもよい。ＵＤＴフラグメントを分割することによって、単純データ型が分割される可能性がある。すなわち、例として、第１のデータページに第１のバイトを格納し、１または複数の他のデータページに残りの３バイトを格納するように４バイトの整数を格納することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来、フラグメントについて整合性チェックを行うことが可能になる前には、フラグメント全体がメモリに具体化されなくてはならなかった。このため、１つのフラグメントが、２つの異なるデータページまたはデータパケット間で分割されている場合、さらに処理するために、フラグメントの両方のセクションがメモリの別の領域にコピーされなければならなかった。そのため、現在利用されている技法は、メモリおよび処理リソースの観点では費用がかかる。さらに、フラグメントのサイズが（および、それゆえ関連付けられたデータページまたはデータパケットの数が）増えるのにつれ、この費用が増える。
【課題を解決するための手段】
【０００６】
本発明のいくつかの態様の基本的な理解を提供するために、本発明の簡単な概要を下記に表す。本概要は、本発明を幅広く概観するものではない。また、本発明の主要要素または決定的な要素の識別を意図したものではなく、本発明の範囲の線引きを意図したものでもない。本概要の唯一の目的は、後に表すさらに詳細な記述の前置きとして本発明のいくつかの概念を簡略化した形で表すことである。
【０００７】
本発明は、データを大量にコピーすることなく、データのストリームを利用し、ユーザ定義型（ＵＤＴ）フラグメントの整合性チェックを行うシステムおよび方法に関する。ストリーミング整合性チェックにより、ＵＤＴフラグメント全体の読取り、格納、分析などをする必要がないように、できるだけ早く無効のフラグメントを発見することが容易になる。さらに、ＵＤＴフラグメントを完全に具体化することなく評価することができる。このように、本発明を利用するシステムおよび／または方法は、要求されるリソースを減らし、無効な構造のより速い検出を可能にすることによって、従来技術に比べ向上した性能をもたらすことができる。
【０００８】
本発明の態様によれば、ユーザ定義型（ＵＤＴ）フラグメントをエラーについて評価することを容易にするシステムを提供する。本システムは、ＵＤＴフラグメントを備えるデータブロックのストリームを受信するデータブロック処理コンポーネントを含み、（例えば、新しいフラグメントの開始部に遭遇したときに）各ＵＤＴフラグメントに対してフラグメント型を識別し、データブロックを処理中に廃棄する。さらに、本システムは、対応する識別されたフラグメント型に部分的に基づいてＵＤＴフラグメントを検査し、適宜エラー指示を生成するチェックオブジェクトを含む。チェックオブジェクトは、例えば、データブロック間で分割された基本データ型を具体化することを容易にすることができる。
【０００９】
本発明の別の態様に準じて、ＵＤＴの整合性チェックを容易にする方法を提供する。本方法は、ＵＤＴフラグメントを含むデータブロックを受信すること、ＵＤＴフラグメントの型を識別すること、各チェックオブジェクトを採用して、ＵＤＴフラグメントのいずれかがエラーを含むか否かを判定すること、およびデータブロックを処理中に廃棄することを含むことができる。
【００１０】
本発明の別の態様によれば、データ構造をエラーについて分析するシステムを提供することができる。このシステムは、データ構造を含むデータブロックのストリームを受信する手段、データ構造の異なる型を識別する手段、各チェックオブジェクトを利用して、データ構造内に備わるエラーを識別する手段、およびそのデータブロックを処理中にストリームから廃棄する手段を含むことができる。
【発明を実施するための最良の形態】
【００１１】
下記の記述および添付図面は、本発明のある図示的態様を詳細に説明する。しかしこれらの態様は、本発明の原理を採用してもよい各種方法のうちの一部を示したものに過ぎず、本発明は、これらの態様およびその等価物のすべてを含むよう意図するものである。本発明の他の利点、および新規の特徴は、図面と共に考慮すると、下記の詳細な説明から明らかとなろう。
【００１２】
本発明は、データを大量にコピーすることなく、データのストリームを利用し、ユーザ定義型（ＵＤＴ）フラグメントの整合性チェックを行うシステムおよび方法に関する。ストリーミング整合性チェックにより、ＵＤＴフラグメント全体の読取り、格納、分析などをする必要がないように、できるだけ早く無効のフラグメントを発見することが容易になる。さらに、ＵＤＴフラグメントを完全に具体化することなく評価することができる。このように、本発明を利用するシステムおよび／または方法は、要求されるリソースを減らし、無効な構造のより速い検出を可能にすることによって、従来技術に比べ向上した性能をもたらすことができる。
【００１３】
本出願での利用においては、用語「コンポーネント」、「システム」、「オブジェクト」、「検出器」、「チェッカ」、「アクティベータ」、「ジェネレータ」などは、ハードウェア、ソフトウェア（例えば、実行中の）、および／またはファームウェアのいずれかであるコンピュータ関係のエンティティを指すよう意図されている。例えば、コンポーネントとは、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行可能プログラム、および／またはコンピュータであってよい。実例として、サーバ上で実行するアプリケーションとそのサーバの両方をコンポーネントとすることができる。１または複数のコンポーネントが、１つのプロセス内に存在することができ、１つのコンピュータに１つのコンポーネントをローカライズすること、および／または２つ以上のコンピュータ間で１つのコンポーネントを分散することができる。
【００１４】
本発明は、図面を参照して記述され、同様の参照番号を使用して、全体にわたって同様の要素を参照する。下記の記述では、説明の目的で、本発明が完全に理解されるように多数の具体的な詳細が示されている。しかし、この具体的な詳細がなくても本発明を実施できることは、明らかであろう。他の例では、本発明の記述を容易にするために、公知の構造および装置をブロック図の形で示す。
【００１５】
図１は、発明の態様によって、データ構造を分析し、エラーの存在を判定することを容易にするシステム１００を図示している。システム１００は、データのストリーム（例えば、データブロック１  １１０、データブロック２  １１５…データブロックＮ  １２０、ここでＮは、任意の正の整数であり、以後、データブロック１１０−１２０と呼ぶ）を受信するデータ構造ストリーミングチェッカ１０５を備え、データ構造の整合性チェック結果を提供する。データ構造ストリーミングチェッカ１０５は、データブロック１１０−１２０内に含まれた大量のデータストレージがなくても、入ってくるデータブロック１１０−１２０のストリーム内に備えられたデータ構造（たとえば、ユーザ定義型（ＵＤＴ）フラグメント）を評価する。データ構造ストリーミングチェッカ１０５によって生成されるデータ構造の整合性チェック結果は、エラー通知、エラーがないことを意味する指示などであることができる。システム１００（例えば、データブロック１１０−１２０のストリームを停止するため、データ構造ストリーミングチェッカ１０５による処理を中止するため、…に採用できるフィードバックとして）、異なるソフトウェアアプリケーション（不図示）および／またはハードウェア装置（不図示）は、データ構造の整合性チェック結果を利用することができる。さらにまたはこれに替えて、（例えば、アラーム、ビジュアルディスプレイ、ログファイルを介して、…）データ構造の整合性チェック結果をユーザに提示することができる。
【００１６】
データ構造ストリーミングチェッカ１０５は、データブロック処理コンポーネント１２５およびチェックオブジェクト１３０を含む。データブロック処理コンポーネント１２５は、データブロック１１０−１２０を受信し、処理する。実例として、データブロック処理コンポーネント１２５は、データブロック１  １１０を使い切ってしまうまで受信し、処理し、次いでデータブロック１  １１０を廃棄することができる。その後、データブロック処理コンポーネント１２５は、同様のデータブロックがすべて評価されるまで、追加のデータブロック１１５−１２０を同様に受信し、処理し、廃棄することができる。データブロック１  １１０（および同様に他のデータブロック１１５−１２０）を処理している間に、データブロック処理コンポーネント１２５は、データブロック１  １１０内での現在位置を追跡し、データブロック１  １１０内の特定の場所にあるデータ構造に関連付けられた関連チェックオブジェクト１３０をアクティブ化することができる。
【００１７】
チェックオブジェクト１３０は、それがアクティブ化した目的であるデータ構造について整合性チェックを行う。例えば、チェックオブジェクト１３０を利用して、データ構造内のエラーの存在を判定することができる。チェックオブジェクト１３０は、データ構造全体を具体化する必要なくデータ構造をストリーミング方式で評価することができる。これとは対照的に、従来技術では、一般に、データ構造全体をメモリにコピーし、その後、格納したデータ構造を評価する必要がある。また、チェックオブジェクト１３０は、異なるデータブロック１１０−１２０間で分割されたデータ構造に関連付けられた基本データ型の具体化を容易にすることができる。
【００１８】
データブロック１１０−１２０は、任意の数のデータ構造（例えば、ＵＤＴフラグメント）をも備えることができる。各データブロック１１０−１２０はデータページとすることができ、このデータページは、ディスク上のフォーマットに従って格納され、データ構造を格納するために利用される。さらにまたはこれに替えて、各データブロック１１０−１２０は、ネットワーク環境内の装置間などで転送できる（例えば、オンザワイヤフォーマット、…で）データパケットとすることができる。
【００１９】
データブロック１１０−１２０は、長さが既知であり、および／またはそれを判定できるのであれば、任意の長さ（例えば、１バイト、無限大、…）とすることができる。例えば、データブロック１１０−１２０のサイズは、データブロック処理コンポーネント１２５には既知であるあらかじめ設定された長さとすることができる。またはこれに替えて、データブロック処理コンポーネント１２５は、データブロック１１０−１２０の長さを識別することができる。データブロック１１０−１２０のサイズは、データブロック処理コンポーネント１２５および／またはチェックオブジェクト１３０によって採用されて、処理中にデータブロック１１０−１２０の終了部を検出する。一例によれば、データページ（および／またはデータパケット）は、サイズが８キロバイトとなり得る。しかし、本発明は、このように限定されるものではない。
【００２０】
データブロック１１０−１２０（例えば、データページ、データパケット、…）内に格納されたデータ構造のサイズは、データ型および／または関連付けられたペイロードに依存して変化することができる。またはこれに替えて、データ構造のいくつかが、設定された長さおよび／または設定された構造を有することができる。データ構造は、単一のデータブロック（例えば、データブロック１  １１０）内に完全に格納される必要はない。データ構造は、任意の数のデータブロック１１０−１２０、および／またはデータブロック１１０−１２０の一部に関連付けることができる。一例によれば、１つのデータ構造のうち半分が第１のデータブロック（例えば、データブロック１  １１０）の終了部にあり、フラグメントの別の半分は、次のデータブロック（例えば、データブロック２  １１５）内に存在することができる。データ構造を分割する場所は、あるデータブロック（例えば、データブロック１  １１０）に関連付けられ利用が可能なスペース量の関数とすることができ、それにより必要に応じて、データ構造の残部が後続のデータブロック（例えば、データブロック２  １１５…データブロックＮ  １２０）内に存在する。
【００２１】
図２を参照すると、本発明の態様によりストリーミングチェックを利用することを介して、ＵＤＴフラグメントの分析および／または立証を容易にするシステム２００が図示されている。システム２００は、入ってくるデータブロック（例えば、データブロック１  ２１０、データブロック２  ２１５…データブロックＮ  ２２０）のストリームを分析し、ＵＤＴの整合性チェック結果を生成するフラグメントストリーミングチェッカ２０５（例えば、データ構造ストリーミングチェッカ１０５）を含む。フラグメントストリーミングチェッカ２０５は、例えば、データブロック２１０−２２０内に備えられたＵＤＴフラグメントが１または複数のエラーを含むこと、またはＵＤＴフラグメントにエラーがないことを判定することができる。生成されうるエラーの例としては、ＵＤＴフラグメントが未知の型であること、ＵＤＴフラグメントがその型の最短の長さより短いこと、および／または予約されたビットに対し不適切な値を有することがあげられる。しかし、本発明は、このように限定されるものではない。
【００２２】
フラグメントストリーミングチェッカ２０５は、データブロック２１０−２２０の入ってくるストリームおよびチェックオブジェクト２３０を受信するデータブロック処理コンポーネント２２５を備える。データブロック処理コンポーネント２２５は、フラグメント型ディテクタ２３５をさらに備える。フラグメント型ディテクタ２３５は、データブロック処理コンポーネント２２５を介して受信したデータブロック２１０−２２０に関連付けられたデータを評価する。特に、フラグメント型ディテクタ２３５は、データブロック２１０−２２０内の特定のＵＤＴフラグメントにある一意の構造属性を識別し、そのフラグメントのデータ型を判定する。例えば、フラグメント型ディテクタ２３５は、ＵＤＴフラグメントの始めに、フラグメント型を示すことが可能なタイプワードを分析することができる。しかし、本発明は、このように限定されるものではない。
【００２３】
一例として、データブロック処理コンポーネント２２５は、データブロック１  ２１０を受信でき、それをフラグメント型ディテクタ２３５に提供することができる。フラグメント型ディテクタ２３５は、データブロック２１０内の特定の位置にＵＤＴフラグメントがあることを判定することができる。さらに、フラグメント型ディテクタ２３５は、各ＵＤＴフラグメント（例えば、整数、浮動小数点、文字列、日付、バイナリ、ブール、文字、ショート、ロング、…）に関連付けられたデータ型を識別すること、および／またはそのＵＤＴフラグメントが集合の開始部にあるのか、集合の終了部にあるのか、ヌル値なのか、ＵＤＴの開始部なのかを識別することができる。しかし、本発明は、このように限定されるものではない。次いで、フラグメント型ディテクタ２３５は、チェックオブジェクト２３０に識別した型情報を提供することができ、チェックオブジェクト２３０は、この型に基づいてＵＤＴフラグメントを適切にチェックすることができる。代わりにまたはさらに、フラグメント型ディテクタ２３５は、識別した型に関する特定のチェックオブジェクト２３０を開始することができる。その後、チェックオブジェクト２３０は、この特定のＵＤＴフラグメントについて整合性チェックを行い、ＵＤＴの整合性チェック結果をもたらすことができる。
【００２４】
フラグメントストリーミングチェッカ２０５は、データブロック２１０−２２０内に存在するＵＤＴフラグメントを分析することができる。ＵＤＴとは、データベース拡張性機構であり、この機構によって、ストレージ環境内で複合型をモデル化し、および操作することが可能になる。１つのＵＤＴが、異なる型（例えば、整数、浮動小数点、文字列、日付、バイナリ、ブール、文字、ショート、ロング、…）の一連のフラグメントを備えることができる。ＵＤＴフラグメントは、フラグメント型を示すメタデータを備えることができる。このメタデータをフラグメント型ディテクタ２３５が採用して、フラグメント型を判定することができる。例えば、判定したフラグメント型に基づいて、各チェックオブジェクト２３０を利用することができる。さらにまたは代わりに、チェックオブジェクト２３０は、判定したフラグメント型に照らしてＵＤＴフラグメントを評価して、エラーの存在を識別することができる。フラグメントのサイズは、データ型および／または関連付けられたペイロードに依存して変化することができる。代わりに、フラグメントのいくつかが、設定された長さおよび／または設定された構造を有することができる。
【００２５】
限定ではなく実例として、ＵＤＴを用いて、ある人物に関連付けられた情報を表すことができる。よってＵＤＴは、名、姓、年齢、性別、電話番号リスト、住所リスト、関連付けられた人（例えば、親戚、同僚、…）のリストなどに関連付けられた異なるフラグメントを有することができる。この例に準じて、姓名に関連付けられたフラグメントに文字データ型を採用すること、年齢を表すために整数データ型を利用すること、また性別（例えば、男性または女性）にはブールデータ型を使用することができる。さらに、電話番号は、リストとして格納でき、各電話番号は、文字データ型を利用する。その上、各住所には、番地、通り、アパートの番号、町／市、州、郵便番号、国などを含むことが可能なので、各住所を各種の型の組合せとすることができる。また、ＵＤＴは、データブロック２１０−２２０内に、そのＵＤＴの始めを示す開始フラグメントを有することができ、リストおよび／またはヌル要素の始めと終わりをそれぞれ示す集合開始部および集合終了部を有することができる。開始フラグメント、集合開始部、集合終了部、および／またはヌル要素は、設定された長さおよび／または設定された構造を有することができる。集合の一例には、電話番号のリストがあり、集合開始部および集合終了部は、その集合のメンバである何らかのＵＤＴフラグメントを集合開始部と集合終了部との間で指定することができる。
【００２６】
ＵＤＴフラグメントを１データページ内に完全に格納する必要はない。例えば、１つのフラグメントのうち半分が１データページの終了部にあり、このフラグメントの別の半分を次のデータページに格納することができる。本発明では、ＵＤＴフラグメントが１データページの任意の部分および／または任意の数のデータページに及ぶことができると考えられる。ＵＤＴフラグメントを分割する場所は、任意とすることができ、利用可能な空間の範囲内で１つのＵＤＴフラグメントを第１のデータページに格納し、残りは別のデータページに格納する。実例によれば、あるＵＤＴフラグメントが６０００バイトであるが、データページが２０００バイトの利用可能な空間しか有していない（例えば、データブロック１  ２１０が２０００バイトのみ利用可能である）場合、残りの４０００バイトは、別のデータページに格納される（例えば、データブロック２  ２１５が残りを格納できる）。この例に準じて、フラグメントストリーミングチェッカ２０５は、データブロック２１０−２２０のストリーミング中に、データ構造の整合性チェック結果を提供することができる。ＵＤＴフラグメントが異なるデータブロック２１０−２２０間で分割されると、チェックオブジェクト２３０は、第１のデータブロック（例えば、データブロック１  ２１０）を使い切った時点で、どの程度ＵＤＴフラグメントを通してチェックが進んでいたかを追跡でき、そのＵＤＴフラグメントに関連付けられた最小量のメタデータのみを格納して、次のデータブロック（例えば、データブロック２  ２１５）で始まるこのＵＤＴフラグメントの残りのチェックを容易にすることができる。格納されたメタデータによって、チェックオブジェクト２３０は、第１のデータブロック（例えば、データブロック１  ２１０）に関連付けられた既に分析済みの部分を再評価せずに、ＵＤＴフラグメントの残りのチェックを継続することが可能となる。さらに、メタデータは、ＵＤＴフラグメントのカラム値を格納することとは対照的に、ＵＤＴフラグメントの構造を記述することができる。代わりに、上述の例に関する従来技術では、２０００バイトのセクションと４０００バイトのセクションの両方をメモリにコピーし、その後データを処理する。
【００２７】
伝送に利用されるデータパケット内でＵＤＴフラグメントを同様にフォーマットすることができる。データパケットの整合性チェックに現在採用されている技法では、余計なコストが生じる。これは、格納されたデータページに関して発生するのではなく、ネットワークからフラグメント全体を受信するまでフラグメントの有効性を判定できないことに関係する。このコストは、本発明との関連で利用されるフラグメントストリーミングチェッカ２０５によってさらに軽減される。
【００２８】
次に図３を見ると、本発明の態様により、各ＵＤＴフラグメント型に対して各チェックオブジェクトを採用することを介して、ストリーミングチェックを行い、無効な構造を検出するシステム３００が図示されている。システム３００は、データブロック３１０、３１５、３２０を受信し、処理してＵＤＴの整合性チェック結果を判定するフラグメントストリーミングチェッカ３０５を備える。フラグメントストリーミングチェッカ３０５は、データブロック３１０−３２０のセットから特定時に１つのデータブロックを受信することができる。このように、本例によれば、フラグメントストリーミングチェッカ３０５は、第１のデータブロック（例えば、データブロック１  ３１０）を受信でき、このデータブロックを使い切るまで処理し、その後廃棄することができる。その時点で、第２のデータブロック（例えば、データブロック２  ３１５）をフラグメントストリーミングチェッカ３０５が順次獲得し、同様に全体として評価し、取り除くなどを行う。
【００２９】
フラグメントストリーミングチェッカ３０５は、データブロック３１０−３２０を受信し、処理するデータブロック処理コンポーネント３２５を含む。データブロック処理コンポーネント３２５は、フラグメント型ディテクタ３３０、位置追跡コンポーネント３３５、チェックオブジェクトアクティベータ３４０を備えることができる。フラグメントストリーミングチェッカ３０５は、チェックオブジェクトのセット（例えば、チェックオブジェクト１  ３４５…チェックオブジェクトＭ  ３５０、ここでＭは任意の正の整数であり、以後、チェックオブジェクト３４５−３５０と呼ぶ）をさらに含み、それは具体的なフラグメント型を評価する。
【００３０】
データブロック処理コンポーネント３２５は、例えば、データブロック３１０−３２０のセットから一度に１つのデータブロック（例えば、データブロック１  ３１０）を受信することができる。位置追跡コンポーネント３３５は、受信したデータブロック１  ３１０内で評価されている現在の位置を追跡する。現在評価された場所で、フラグメント型ディテクタ３３０は、ＵＤＴフラグメントの型（例えば、整数、浮動小数点、文字列、日付、バイナリ、ブール、文字、ショート、ロング、集合開始部、集合終了部、ヌル値、ＵＤＴ開始部、…）を識別する。ＵＤＴフラグメントの型は、チェックオブジェクトアクティベータ３４０によって採用され、アクティベータ３４０は、チェックオブジェクト３４５−３５０のセットから関連チェックオブジェクト（例えば、チェックオブジェクト１  ３４５）をアクティブ化し、呼び出すことができる。呼び出されたチェックオブジェクト（例えば、チェックオブジェクト１  ３４５）は、データブロック１  ３１０内のＵＤＴフラグメントに何かエラーがあるか評価し、ＵＤＴの整合性チェック結果を生成する。チェックオブジェクト（例えば、チェックオブジェクト１  ３４５）は、データブロック処理コンポーネント３２５に、ＵＤＴフラグメントの評価が完了したことを示す通知を提供することができる。さらにまたは代わりに、位置追跡コンポーネント３３５は、現在評価されている場所がデータブロック１  ３１０の終了部であるのか、チェックオブジェクト（例えば、チェックオブジェクト１  ３４５）が呼び出されたＵＤＴフラグメントの外であるのかを判定することができる。さらに、位置追跡コンポーネント３３５は、アクティブなチェックオブジェクト（例えば、チェックオブジェクト１  ３４５）が異なるデータブロックからのＵＤＴフラグメントの別の一部を待っていることを判定することができる。ＵＤＴフラグメントのこの付加的な部分をデータブロック処理コンポーネント３２５が受信しないならば、ＵＤＴフラグメントが不完全であることを示す信号を作成することができる。
【００３１】
関連チェックオブジェクト（チェックオブジェクト３４５−３５０のうちの１つ）によるＵＤＴフラグメントの評価が完了すると、位置追跡コンポーネント３３５は、別のＵＤＴフラグメント（例えば、フラグメント全体、フラグメントの一部、…）がデータブロック１  ３１０の次の場所にあるか否かを判定するか、またはデータブロック１  ３１０を使い切ったか否かを判定する。例えば、データブロック１  ３１０がＵＤＴフラグメントの少なくとももう１つの部分を含むならば、フラグメント型ディテクタ３３０およびチェックオブジェクトアクティベータ３４０を再度利用して、チェックオブジェクト３４５−３５０のセットから適切なチェックオブジェクトを１つ判定し、それを採用してＵＤＴフラグメントを評価する。代わりに、データブロック１  ３１０を使い切っていることを位置追跡コンポーネント３３５が示すならば、データブロック１  ３１０は、データブロック処理コンポーネント３２５によって廃棄され、もう１つのデータブロック２  ３１５がストリームの一部であるならば、この後続データブロック２  ３１５を受信し、処理する。また、ある例に準じて、フラグメントストリーミングチェッカ３０５は、データブロック３１０−３２０のストリームの終了部を示す信号を受信すること、および／またはこのストリームの終了部を識別することができる。このストリームの終了部を示す信号を受信すると、例えば、フラグメントストリーミングチェッカ３０５は、（例えば、最後のＵＤＴフラグメントが完了していないならば）エラーを生成すること、および／または実行を停止することができる。
【００３２】
図４は、本発明の態様によって、最小量のデータを格納できるストリーミング検査を利用し、ＵＤＴフラグメントの有効性を評価するシステム４００を図示する。システム４００は、フラグメントストリーミングチェッカ４０５を含み、それはデータブロック４１０、４１５、４２０（例えば、データページ、データパケット、…）のストリームを受信および分析し、ＵＤＴフラグメントの整合性チェック結果を生成する。データブロック４１０−４２０は、多くのＵＤＴフラグメントを含むことができ、それらは様々なサイズを有することができる。さらに、ＵＤＴフラグメントは、データブロックの一部（例えば、データブロック１  ４１０の一部）内に含まれることができ、第１のデータブロック（例えば、データブロック１  ４１０）の一部分であるセクションおよび第２のデータブロック（例えば、データブロック２  ４１５）の一部分であるセクションを有することができる。あるいは、ＵＤＴフラグメントは、任意の数のデータブロック４１０−４２０の一部分として含まれることができる。
【００３３】
フラグメントストリーミングチェッカ４０５は、データブロック処理コンポーネント４２５、任意の数のチェックオブジェクト４３０、およびデータストア４３５をさらに備える。データブロック処理コンポーネント４２５は、データブロック４１０−４２０の入ってくるストリームを受信し、処理する。データブロック処理コンポーネント４２５は、データブロック（例えば、データブロック１  ４１０）内での現在の位置を追跡し、その位置でＵＤＴフラグメントの型を判定することができる。さらに、このフラグメント型の情報を用いて、このＵＤＴフラグメント型に固有である適切なチェックオブジェクト４３０を開始することができる。データブロック処理コンポーネント４２５は、何かエラーが見つかるか、データブロック（例えば、データブロック１  ４１０）を使い切るまで、関連チェックオブジェクト４３０を追跡し、フラグメント型を判定し、アクティブ化することを繰り返すことができる。当然のことながら、データブロック処理コンポーネント４２５は、フラグメント型ディテクタ３３０（図３）、位置追跡コンポーネント３３５（図３）、および／またはチェックオブジェクトアクティベータ３４０（図３）を備えることができる。
【００３４】
チェックオブジェクト４３０を利用して、データブロック処理コンポーネント４２５を介した指示に応じて特定のＵＤＴフラグメントをチェックする。一例によれば、チェックオブジェクト４３０は、データブロック処理コンポーネント４２５によってデータブロック４１０−４２０のストリームが受信され、処理されている間に、無効なＵＤＴフラグメントの構造を識別することができる。（例えば、データブロック４１０−４２０全体を具体化することなく）エラーを検出すると、チェックオブジェクト４３０は、そのＵＤＴフラグメントがエラーを含むことを示す信号を提供することができる。例えば、チェックオブジェクト４３０がこのように判定すると、データブロック処理コンポーネント４２５は、特定のデータブロック４１０−４２０および／またはエラーを含むＵＤＴフラグメントの処理を中止することができる。
【００３５】
チェックオブジェクト４３０は、ＵＤＴフラグメントチェックの進行をさらに追跡することができる。そのため、２バイトのデータを持つ固定フォーマットを有するデータ型に、特定のチェックオブジェクト４３０を関連付けることができる。この２バイトのデータは、例えば、１バイトの値２つを表しており、その両方とも検証しなくてはならない。本例に準じて、チェックオブジェクト４３０は、例えば、チェックが１バイトで進行し、未だ何のエラーも見つかっていないことを識別することができる。（例えば、別の検証するバイト値が残っている）識別した進行をデータストア４３５に格納でき、（例えば、後続データブロック４１０−４２０がＵＤＴフラグメントの残りを含むはずであることを示すために）データブロック処理コンポーネント４２５などに提供することができる。これまでに処理したバイト値を格納する必要はないことに留意されたい。
【００３６】
別の例として、データ型は、整数値を含む固定フォーマットを有することができる。この整数値は、文字列の長さを表現しており、文字列の最後の文字は、何らかの値（例えば、「＊」）を含むべきである。この整数値が処理されてしまうと、文字列の終了部にある文字を検査すべきであることが、チェックオブジェクト４３０にわかる。スキップするデータ量は、文字列の長さで格納される。チェックオブジェクト４３０は、データブロック（例えば、データブロック１  ４１０）の終了部まで読取り、最後の文字に到達する前に、さらにどれほどのバイト数の文字列を読取るべきかを追跡する。このように、それまでに処理した文字列全体を格納することとは対照的に、文字列の長さおよび未読のバイト数をデータストア４３５に格納することができる。次のデータブロック（例えば、データブロック２  ４１５）がチェックオブジェクト４３０に受信され、それに渡されると、チェックオブジェクト４３０は、文字列の最後の文字に到達し、検証するまで読取りを継続する。このように、全フラグメントを全体として具体化することが不要であるので、従来技術に比べ、ストレージ量が減る。
【００３７】
また、チェックオブジェクト４３０は、あるＵＤＴフラグメントの残りをチェックするために必要な、いかなるデータをもデータストア４３５に格納することができる。一例によれば、データブロック処理コンポーネント４２５が、データブロック（例えば、データブロック１  ４１０）が４バイトの整数であるＵＤＴフラグメントを備えていることを（例えば、フラグメント型ディテクタ３３０（図３）を介して）判定することができる。データブロック処理コンポーネント４２５は、（例えば、チェックオブジェクトアクティベータ３４０（図３）を介して）整数型フラグメントを特にチェックする関連チェックオブジェクト４３０をアクティブ化することができる。アクティブ化されたチェックオブジェクト４３０は、何かエラーが存在するかＵＤＴフラグメントを評価し、同時に評価の進行を追跡することができる。データブロック（例えば、データブロック１  ４１０）の終了部に到達し、整数を備えている総計４バイトのうち１バイトだけしか読取っていないならば、アクティブ化されたチェックオブジェクト４３０は、この進行（例えば、これまでに１バイトが読取られたこと）をデータストア４３５に格納することができる。さらに、読取られた１バイトに関連付けられたメタデータをデータストア４３５に格納することができる（例えば、１バイトが読取られ、整数値がインスタンス化され、検証が可能となる前にあと３バイトを読取らなければならない）。次のデータブロック（例えば、データブロック２  ４１５）を処理すると、格納したメタデータをデータストア４３５から得て、残りの３バイトを読取っているときにこのメタデータを利用することができる。この３バイトを読取ると、整数を備えている４バイトすべてが利用可能となり、この整数をインスタンス化し、検証することができる。別の例によれば、チェックオブジェクト４３０がＵＤＴフラグメントを分析するのと同時に、構造の一部分を記述するメタデータをデータストア４３５に格納することができる。
【００３８】
データストア４３５は、例えば、揮発性メモリまたは不揮発性メモリのどちらかであるか、あるいは揮発性メモリと不揮発性メモリの両方を含むことができる。制限ではなく実例として、不揮発性メモリには、読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリには、ランダムアクセスメモリ（ＲＡＭ）を含むことができ、これは外部キャッシュメモリとして働く。制限ではなく実例として、同期ＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ（ＳＬＤＲＡＭ）およびダイレクトランバスＲＡＭ（ＤＲＲＡＭ）など多くの形でＲＡＭを利用することが可能である。本システムおよび本方法のデータストア４３５は、これに限定されないが、このようなメモリおよび任意の他の適合する型のメモリを備えるよう意図されている。本発明では、データストア４３５を、図示のようにフラグメントストリーミングチェッカ４０５の一部分であるか、チェックオブジェクト４３５の一部分、別のコンポーネントか、またはその組合せとすることができると考えられる。さらに、例えば、データストア４３５は、ハードディスクに格納され、実行時にメモリへロードされるファイルおよび／またはデータベースを備えることができる。
【００３９】
図５を参照すると、本発明の態様により、対応するＵＤＴフラグメント型を評価するために採用できるチェックオブジェクトを生成するシステム５００が図示されている。システム５００は、多くのチェックオブジェクト５１０をさらに備えるフラグメントストリーミングチェッカ５０５を含む。上述したように、各チェックオブジェクト５１０を採用して、対応するＵＤＴフラグメント型を評価する。本発明では、任意の数のチェックオブジェクト５１０の使用が考えられる。
【００４０】
システム５００は、新しいフラグメント型が導入されたときに、フラグメントストリーミングチェッカ５０５の拡張性を全体として可能にするチェックオブジェクトジェネレータ５１５をさらに含む。チェックオブジェクトジェネレータ５１５は、新しいチェックオブジェクトをもたらすことができ、この新しいチェックオブジェクトを既存のチェックオブジェクト５１０のセットに加えることができ、それは新しいＵＤＴフラグメント型（例えば、チェックオブジェクト５１０のセット内に、対応するチェックオブジェクトがそれまでは存在しなかったＵＤＴフラグメント型）に対応する。そのため、フラグメントストリーミングチェッカ５０５が、新しい型のＵＤＴフラグメントを評価するときには、チェックオブジェクトジェネレータ５１５を介して作成された新しいチェックオブジェクトを利用して、フラグメントを評価する。チェックオブジェクトジェネレータ５１５は、新しいフラグメント型が導入されたときに、新しいチェックオブジェクトを自動的に生成することができる。代わりに、ユーザが情報を提供して、新しいチェックオブジェクトを生成することができる。
【００４１】
図６−８は、本発明による方法を図示している。説明を簡単にするために、方法は、一連の動作として図示および説明されている。当然のことながら、本発明は、図示した動作および／または動作の順序によって限定されるものではなく、例えば、動作が、さまざまな順序で、および／または同時に、また、本明細書で提示および記述していない他の動作とともに発生することができる。さらに、本発明による方法を実装するのに、図示した動作すべてが要求されるわけではない。加えて、当業者には当然のことながら、状態図またはイベントを介して、一連の相関する状態として本方法を代替的に表すことも可能であろう。
【００４２】
図６は、本発明の態様により、ストリーミングチェックを利用して、ユーザ定義型（ＵＤＴ）フラグメントをエラーに関して評価することを容易にする方法６００を図示する。ステップ６１０では、ＵＤＴフラグメントを含むデータブロックを受信する。データブロックは、例えば、情報を格納するために利用されるデータページおよび／または情報を伝送するために採用されるデータパケットとすることができる。例えば、一度に１つのデータブロックを受信する、つまり第１のデータブロックを全体として受信し、処理し、続いて第２のデータブロックを受信し、処理する、などである。ネットワーク接続（例えば、無線接続、有線接続、無線および有線の組合せ、…）を介してデータブロックを受信することができる。代わりにまたは加えて、ストレージ（例えば、データベース、…）からデータブロックを受信することができ、ステップ６２０でＵＤＴフラグメント型を識別する。実例として、あるＵＤＴフラグメントの始めにタイプワードを評価することを介してＵＤＴフラグメント型を判定することが可能であるが、本発明はこれに限定されるものではない。ステップ６３０では、各チェックオブジェクトを採用してＵＤＴフラグメント内のエラーを識別する。各ＵＤＴフラグメント型は、特定の型のストリーミングデータをチェックすることを容易にする関連付けられたチェックオブジェクトを有することができる。さらに、データブロックはステップ６４０で一度処理されると廃棄される。ここが、ＵＤＴフラグメント全体をメモリに一般的に具体化し、その後格納したデータをエラーについて分析する従来技術とは異なる。
【００４３】
次に図７を見ると、本発明の態様によるチェックの進行を評価することを通して、ＵＤＴフラグメントについてストリーミング整合性チェックを行うことを容易にする方法７００が図示されている。ステップ７１０では、ＵＤＴフラグメントを含むデータブロックを受信する。ステップ７２０では、ＵＤＴフラグメント型を識別する。例えば、データブロックを処理中に、各ＵＤＴフラグメントの型を判定することができる。さらに、データブロックを通して進行を追跡することができる。ステップ７３０では、チェックオブジェクトのセットから１つのチェックオブジェクトを利用して、ＵＤＴフラグメントが何らかのエラーを含むか否かを識別する。チェックオブジェクトのセットにある各チェックオブジェクトを特定のＵＤＴフラグメント型に対して指定することができる。ステップ７４０で、ＵＤＴフラグメントチェックの進行が追跡される。ステップ７５０では、メタデータが格納されて、ＵＤＴフラグメントについての整合性チェックを完了するために利用できる。一例によると、ＵＤＴフラグメントが一部、第１のデータブロック内にあり、そのＵＤＴフラグメントの残りは第２のデータブロックの一部分であるならば、第１のデータブロックに関連して行われる評価に関連付けられたメタデータを格納することができる。そのため、実際のカラム値を格納すること（これは、従来技術によって一般的に行われている）とは対照的に、ＵＤＴフラグメントの構造の一部分を記述するメタデータを格納することができる。ステップ７６０では、データブロックは一度処理されると、廃棄される。
【００４４】
図８は、本発明の態様により、ＵＤＴフラグメントをエラーに関して分析し、エラーを識別した際に、ストリーミングチェックを停止することを容易にする方法８００を図示する。ステップ８１０では、ＵＤＴフラグメントを含むデータブロックを受信する。ステップ８２０では、受信したデータブロック内のＵＤＴフラグメントを検査し、フラグメント型を判定する。ステップ８３０では、識別したＵＤＴフラグメント型に関する各チェックオブジェクトを採用する。ステップ８４０では、ＵＤＴフラグメントがエラーを含むか否かを判定する。この判定は、例えば、ＵＤＴフラグメント全体を具体化することなく行うことができる。ＵＤＴフラグメントにエラーが識別されるならば、ステップ８５０でストリーミングチェックを中止し、エラーが識別されたことを示すエラーフラグを発行することができる。代わりに、エラーが識別されないならば、ステップ８６０で、データブロックを使い切ったか否かを判定する。データブロックを使い切っていないならば、本方法は、ステップ８２０に戻り、次のＵＤＴフラグメントの型を判定する。一方、ステップ８６０で、データブロックを使い切っていると判定するならば、データブロックは、ステップ８７０で廃棄される。
【００４５】
本発明の各種態様を実装するためのさらなるコンテキストを提供するために、図９、１０および下記の議論は、本発明の各種態様を実装してもよい適切なコンピューティング環境について簡潔で一般的な記述を提供することを意図している。ローカルコンピュータおよび／またはリモートコンピュータ上で実行するコンピュータプログラムのコンピュータ実行可能命令という一般的なコンテキストで本発明を説明したが、他のプログラムモジュールとの組合せで本発明を実装してもよいことは当業者によって認められよう。一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造などを含み、これらは特定のタスクを行い、および／または特定の抽象データ型を実装する。
【００４６】
またさらに、当業者にとって当然のことながら、本発明の方法を他のコンピュータシステム構成とともに実施してもよく、他のコンピュータシステム構成は、シングルプロセッサもしくはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、さらに、パーソナルコンピュータ、ハンドへルドコンピューティング装置、マイクロプロセッサベースおよび／またはプログラム可能な家庭用電化製品などを含み、このような構成の各々は、１または複数の関連付けられた装置と通信動作可能であってもよい。また、本発明の図示した態様は、通信ネットワークを通してリンクされたリモート処理装置により何かしらのタスクが行われる分散コンピューティング環境において実施してもよい。一方、本発明の態様のすべてではないにしてもそのいくつかをスタンドアローンのコンピュータで実施してもよい。分散コンピューティング環境において、プログラムモジュールは、ローカルおよび／またはリモートメモリストレージ装置に位置してもよい。
【００４７】
図９は、本発明が相互作用することのできるサンプルコンピューティング環境９００の概略ブロック図である。システム９００は、１または複数のクライアント９１０を含む。クライアント９１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）とすることができる。また、システム９００は、１または複数のサーバ９２０を含む。サーバ９２０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティング装置）とすることができる。例えば、サーバ９２０は、本発明を採用することによって、スレッドを収容して、変換を行うことができる。
【００４８】
クライアント９１０とサーバ９２０間で可能な通信の１つは、２つ以上のコンピュータプロセス間で伝送されるのに適したデータパケットの形とすることができる。システム９００は、クライアント９１０およびサーバ９２０間の通信を容易にするために採用できる通信フレームワーク９４０を含む。クライアント９１０は、クライアント９１０にとってローカルな情報を格納するために採用できる１または複数のクライアントデータストア９５０に動作可能に接続されている。同様に、サーバ９２０は、サーバ９４０にとってローカルな情報を格納するために採用できる１または複数のサーバデータストア９３０に動作可能に接続されている。
【００４９】
図１０を参照すると、本発明の各種態様を実装する例示的環境１０００は、コンピュータ１０１２を含む。コンピュータ１０１２は、処理装置１０１４、システムメモリ１０１６、およびシステムバス１０１８を含む。システムバス１０１８は、これに限定されないが、システムメモリ１０１６を含むシステムコンポーネントを処理装置１０１４に結合している。処理装置１０１４は、利用可能な各種プロセッサのいずれとすることもできる。また、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを処理装置１０１４として採用することもできる。
【００５０】
システムバス１０１８は、メモリバスもしくはメモリコントローラ、周辺バスもしくは外部バス、および／または任意の利用可能である様々なバスアーキテクチャを使用するローカルバスを含む数種のバス構造のいずれとすることもでき、利用可能である様々なバスアーキテクチャは、これに限定されないが、業界標準アーキテクチャ（ＩＳＡ）、マイクロチャネルアーキテクチャ（ＭＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）、ＶＥＳＡローカルバス（ＶＬＢ）、周辺装置相互接続（ＰＣＩ）、カードバス、ユニバーサルシリアルバス（ＵＳＢ）、Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、パーソナルコンピュータメモリカード国際協会バス（ＰＣＭＣＩＡ）、Ｆｉｒｅｗｉｒｅ（ＩＥＥＥ１３９４）、およびＳｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）を含む。
【００５１】
システムメモリ１０１６は、揮発性メモリ１０２０および不揮発性メモリ１０２２を含む。起動時などに、コンピュータ１０１２内の要素間で情報を転送する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ１０２２に格納される。限定ではなく実例として、不揮発性メモリ１０２２には、読取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリ１０２０にはランダムアクセスメモリ（ＲＡＭ）が含まれ、ＲＡＭは外部キャッシュメモリとして働く。限定ではなく実例として、同期ＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ（ＳＬＤＲＡＭ）およびダイレクトランバスＲＡＭ（ＤＲＲＡＭ）など多くの形でＲＡＭを利用することが可能である。
【００５２】
コンピュータ１０１２は、取り外し可能／固定の、揮発性／不揮発性コンピュータストレージ媒体をも含む。例えば、図１０では、ディスクストレージ１０２４を図示する。ディクスストレージ１０２４は、これに限定されないが、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックなどの装置を含む。さらに、ディスクストレージ１０２４は、これに限定されないが、コンパクトディスクＲＯＭ装置（ＣＤ−ＲＯＭ）、書き込み可能ＣＤドライブ（ＣＤ−Ｒドライブ）、書き換え可能ＣＤのドライブ（ＣＤ−ＲＷドライブ）、またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光ディスクドライブを含む他のストレージ媒体とは別々に、またはその組合せのストレージ媒体を含むことができる。ディスクストレージ装置１０２４のシステムバス１０１８への接続を容易にするために、インターフェース１０２６などの取り外し可能、あるいは固定のインターフェースを一般的に使用する。
【００５３】
当然のことながら、図１０は、ユーザと、適したオペレーティング環境１０００で記述した基本的なコンピュータリソースとの間で媒介として働くソフトウェアを記述する。このようなソフトウェアは、オペレーティングシステム１０２８を含む。ディスクストレージ１０２４に格納できるオペレーティングシステム１０２８は、コンピュータシステム１０１２のリソースを制御し、それを割り当てるように働く。システムアプリケーション１０３０は、システムメモリ１０１６またはディスクストレージ１０２４のいずれかに格納されたプログラムモジュール１０３２およびプログラムデータ１０３４を通してオペレーティングシステム１０２８によるリソースの管理を活用する。当然のことながら、各種オペレーティングシステムまたはオペレーティングシステムの組合せによって、本発明を実装することができる。
【００５４】
ユーザが入力装置１０３６を通してコンピュータ１０１２にコマンドまたは情報を入力する。入力装置１０３６は、これに限定されないが、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、およびウェブカメラなどのポインティングデバイスを含む。これらおよび他の入力装置は、インターフェースポート１０３８を介し、システムバス１０１８を通して処理装置１０１４に接続している。インターフェースポート１０３８は、例えば、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス（ＵＳＢ）を含む。出力装置１０４０は、入力装置１０３６と同種のポートのいくつかを使用する。このため、例えば、ＵＳＢポートを使用して、コンピュータ１０１２に入力を提供し、コンピュータ１０１２から出力装置１０４０に情報を出力してもよい。他の出力装置１０４０の中には、モニタ、スピーカ、およびプリンタのような特殊なアダプタを要求する出力装置１０４０がいくつかあることを示すために出力アダプタ１０４２が提供されている。出力アダプタ１０４２は、制限ではなく実例として、出力装置１０４０とシステムバス１０１８との間の接続手段を提供するビデオおよびサウンドカードを含む。他の装置および／または装置のシステムが、リモートコンピュータ１０４４などの入力能力と出力能力の両方を提供することに留意されたい。
【００５５】
コンピュータ１０１２は、リモートコンピュータ１０４４などの１または複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ１０４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベース機器、ピア装置もしくは他の共通ネットワークノードなどとすることができ、コンピュータ１０１２に関連して記述した要素の多くまたはすべてを一般的に含む。簡潔にするために、メモリストレージ装置１０４６のみがリモートコンピュータ１０４４とともに図示されている。リモートコンピュータ１０４４は、ネットワークインターフェース１０４８を通してコンピュータ１０１２に論理接続され、次に通信接続１０５０を介して物理接続される。ネットワークインターフェース１０４８は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）などの有線および／または無線通信ネットワークを包含する。ＬＡＮ技術は、光ファイバー分散データインターフェース（ＦＤＤＩ）、銅線分散データインターフェース（ＣＤＤＩ）、イーサネット（登録商標）や、トークンリングなどを含む。ＷＡＮ技術は、これに限定されないが、ポイントツーポイントリンクや、総合サービスデジタル通信網（ＩＳＤＮ）およびその変形などの回路交換網、パケット交換網、ならびにデジタル加入者線（ＤＳＬ）を含む。
【００５６】
通信接続１０５０は、ネットワークインターフェース１０４８をバス１０１８に接続するために採用されるハードウェア／ソフトウェアのことをいう。明確に図示するために、通信接続１０５０は、コンピュータ１０１２の内部に示されているが、コンピュータ１０１２の外部とすることもできる。ネットワークインターフェース１０４８への接続に必要なハードウェア／ソフトウェアは、例示目的のみで、標準電話グレードモデム、ケーブルモデム、およびＤＳＬモデム、ＩＳＤＮアダプタ、ならびにイーサネット（登録商標）カードなどの内部および外部技術を含む。
【００５７】
上述したことは、本発明の例を含む。本発明を記述するためにコンポーネントまたは方法の考えられる組合せを余すところなく記述することは当然不可能であるが、当業者には当然のことながら、本発明のさらなる組合せおよび置換の多くが可能である。このように、本発明は、添付請求項の精神および範囲内にあるこのような変更、修正、および変形のすべてを含むように意図されている。
【００５８】
具体的に、および上述したコンポーネント、装置、回路、およびシステムなどによって行われる各種機能に関し、このようなコンポーネントを記述するために使用する（「手段」への参照を含む）用語は、特に指示しない限り、記述したコンポーネント（例えば、機能的に等価である物）の指定の機能を行い、開示した構造に構造的には等価物ではなくても、ここに図示した本発明の例示的態様の機能を行ういずれのコンポーネントにも対応するよう意図されている。この点で、本発明は、本発明の各種方法の動作および／またはイベントを行うコンピュータ実行可能命令を有するシステムに加え、コンピュータ可読媒体を含むと認識されるであろう。
【００５９】
加えて、いくつかの実装のうちの１つのみに関して、本発明の特定の特徴を開示したが、所与の、または特定の適用のいずれにも所望され、かつ有利であるように、他の実装の１または複数の他の特徴とこのような特徴を組み合わせてもよい。さらに、用語「含む」、「含んでいる」およびその変形は、詳細な説明または請求項のいずれかにおいて使用される範囲で、用語「備える」と同様に包括的であるよう意図されている。
【図面の簡単な説明】
【００６０】
【図１】本発明の態様により、データ構造を分析してエラーの存在を判定することを容易にするシステムのブロック図である。
【図２】本発明の態様により、ストリーミングチェックを利用することを介して、ＵＤＴフラグメントの分析および／または立証を容易にするシステムのブロック図である。
【図３】本発明の態様により、各ＵＤＴフラグメント型に対して各チェックオブジェクトを採用することを介して、ストリーミングチェックを行い無効な構造を検出するシステムのブロック図である。
【図４】本発明の態様により、最小量のデータを格納できるストリーミング検査を利用してＵＤＴフラグメントの有効性を評価するシステムのブロック図である。
【図５】本発明の態様により、対応するＵＤＴフラグメント型を評価するために採用できるチェックオブジェクトを生成するシステムのブロック図である。
【図６】本発明の態様により、ストリーミングチェックを利用して、エラーについてＵＤＴフラグメントを評価することを容易にする例示的方法のフローチャートである。
【図７】本発明の態様により、ストリーミング整合性チェックの進行を評価することによって、ＵＤＴフラグメントについてストリーミング整合性チェックを行うことを容易にする例示的方法のフローチャートである。
【図８】本発明の態様により、エラーについてＵＤＴフラグメントを分析すること、およびエラーを識別した際に、ストリーミングチェックを停止することを容易にする例示的方法のフローチャートである。
【図９】本発明の新規の態様を採用できることを特徴とする、例示的ネットワーキング環境を示す図である。
【図１０】本発明の新規な態様を採用できる動作環境例を示す図である。
【図１】
2006277742.tif 000003
【図２】
2006277742.tif 000004
【図３】
2006277742.tif 000005
【図４】
2006277742.tif 000006
【図５】
2006277742.tif 000007
【図６】
2006277742.tif 000008
【図７】
2006277742.tif 000009
【図８】
2006277742.tif 000010
【図９】
2006277742.tif 000011
【図１０】
2006277742.tif 000012